ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: Aditya Mahajan via ntg-context <ntg-context@ntg.nl>
To: mailing list for ConTeXt users <ntg-context@ntg.nl>
Cc: Aditya Mahajan <adityam@umich.edu>
Subject: [NTG-context] tikz + lmtx
Date: Fri, 28 Apr 2023 00:08:55 -0400 (EDT)	[thread overview]
Message-ID: <nso51079-7p60-sns0-38nn-r5q9n612nnn1@hzvpu.rqh> (raw)

[-- Attachment #1: Type: text/plain, Size: 709 bytes --]

Hi all,

For a few months now, all features of tikz have not been working with LMTX. After help from Hans and a bit of trial and error, I think that figured out what was going wrong with the catcodes in m-tikz: Since the texcatcodes are different from what tikz expects, the catcodes have to be set inside \starttikzpicture (in addition to before the loading of tikz files, which was already being done). 

I am attaching the working m-tikz.mkxl file. 

I have tested this on my course notes, which make extensive use of simple tikz block diagrams and pgfplots graphs. Perhaps others who were having issues with tikz could test if this fixes everything and, if so, we can add this to the distribution.

Aditya

[-- Attachment #2: Type: text/plain, Size: 5994 bytes --]

%D \module
%D   [       file=m-tikz,
%D        version=2021.07.12,
%D          title=\CONTEXT\ Extra Modules,
%D       subtitle=TIKZ support,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

%D A fixed variant of the t-tikz module distributed with tikz. For practical reasons
%D per 2021 we split the module for \MKIV\ and \LMTX. (Maybe some day I'll optimize
%D TIKZ a bit.)
%D
%D All these t-* modules in the tikz distribution make no sense as we can just load
%D them here which is way cleaner. There is also some mkii filename mapping going on
%D that is not needed on todays systems (windows has no 8.3 limitation and on unix
%D tds finally adopted a case insensitive approach.)

%D Just in case someone does a hard input ...

\ifdefined\pgfdefined    \endinput \fi
\ifdefined\pgfcoredefined\endinput \fi

%D ... but normally we end up here:

\startmodule[tikz]

\ifdefined\pdflastxpos \else
    \unprotect
        \frozen\overloaded\protected\def\pdflastxpos{\numexpr\clf_lastxpos\relax}
        \frozen\overloaded\protected\def\pdflastypos{\numexpr\clf_lastypos\relax}
    \protect
\fi

\newcatcodetable \tikzcatcodes

\startcatcodetable \tikzcatcodes
    \catcode\tabasciicode             \spacecatcode
    \catcode\endoflineasciicode       \endoflinecatcode
    \catcode\formfeedasciicode        \endoflinecatcode
    \catcode\spaceasciicode           \spacecatcode
    \catcode\endoffileasciicode       \ignorecatcode
    \catcode\circumflexasciicode      \superscriptcatcode
    \catcode\underscoreasciicode      \subscriptcatcode
    \catcode\ampersandasciicode       \alignmentcatcode
    \catcode\backslashasciicode       \escapecatcode
    \catcode\leftbraceasciicode       \begingroupcatcode
    \catcode\rightbraceasciicode      \endgroupcatcode
    \catcode\dollarasciicode          \mathshiftcatcode
    \catcode\hashasciicode            \parametercatcode
    \catcode\commentasciicode         \commentcatcode
    \catcode\atsignasciicode          \lettercatcode
    \catcode\exclamationmarkasciicode \othercatcode
    \catcode\questionmarkasciicode    \lettercatcode
    \catcode\tildeasciicode           \activecatcode
    \catcode\barasciicode             \othercatcode
\stopcatcodetable

\permanent\protected\def\starttikzinput
  {\pushoverloadmode
   \pushcatcodetable
   \setcatcodetable\tikzcatcodes
   \pushmacro\meaning
   \let\meaning\meaningless
   \autoparagraphmode\zerocount}

\permanent\protected\def\stoptikzinput
  {\autoparagraphmode\plusone
   \popcatcodetable
   \popmacro\meaning
   \popoverloadmode}

\permanent\protected\def\tikzinputfile#1%
  {\starttikzinput
   \input{#1}\relax
   \stoptikzinput}

\permanent\protected\def\tikzerrormessage#1#2#3%
  {\writestatus{#1}{#2}}

% For now we need this but we need to educate the user to wrap settings in the
% wrappers. So some day the next line will go. I need to check what commands are
% possible outside a picture.

\overloadmode\zerocount

\newtoks\everytikzpicture

% \appendtoks
%     \resetcharacterspacing
% \to \everytikzpicture

\permanent\protected\def\starttikzsettings
  {\pushoverloadmode
   \pushmacro\meaning
   \let\meaning\meaningless
   \autoparagraphmode\zerocount}

\permanent\protected\def\stoptikzsettings
  {\autoparagraphmode\plusone
   \popmacro\meaning
   \popoverloadmode}

\permanent\protected\def\starttikzpicture
  {\dontleavehmode
   \hcontainer\bgroup
   \setcatcodetable\tikzcatcodes
   \the\everytikzpicture
   \autoparagraphmode\zerocount
   \pushmacro\meaning
   \let\meaning\meaningless
 % \pushoverloadmode
   \ifdefined\PackageError\else \let\PackageError\tikzerrormessage \fi
   \tikzpicture}

\permanent\protected\def\stoptikzpicture
  {\endtikzpicture
 % \popoverloadmode
   \popmacro\meaning
   \egroup}

\let\pgfdefined    \relax
\let\pgfcoredefined\relax

\tikzinputfile{pgfutil-common.tex}
\tikzinputfile{pgfutil-context.def}
\tikzinputfile{pgfrcs.code.tex}
\tikzinputfile{pgfsys.code.tex}
\tikzinputfile{pgfkeys.code.tex}
\tikzinputfile{pgfsyssoftpath.code.tex}
\tikzinputfile{pgfsysprotocol.code.tex}
\tikzinputfile{pgfcore.code.tex}
\tikzinputfile{pgffor.code.tex}
\tikzinputfile{pgfmoduleplot.code.tex}
\tikzinputfile{tikz.code.tex}

\let\startpgfpicture             \pgfpicture              \let\stoppgfpicture            \endpgfpicture
\let\startpgfscope               \pgfscope                \let\stoppgfscope              \endpgfscope
\let\startpgflowlevelscope       \pgflowlevelscope        \let\stoppgflowlevelscope      \endpgflowlevelscope
\let\startpgfinterruptpath       \pgfinterruptpath        \let\stoppgfinterruptpath      \endpgfinterruptpath
\let\startpgfinterruptpicture    \pgfinterruptpicture     \let\stoppgfinterruptpicture   \endpgfinterruptpicture
\let\startpgfinterruptboundingbox\pgfinterruptboundinbox  \let\stoppgfinterruptboudingbox\endpgfinterruptboundingbox

\let\normalusepgfmodule  \usepgfmodule
\let\normalusepgflibrary \usepgflibrary
\let\normalusetikzlibrary\usetikzlibrary

\tolerant\protected\def\usepgfmodule[#1]#;#2% somehow both variants are used
  {\starttikzinput
   \normalusepgfmodule[#1#2]%
   \stoptikzinput}

\tolerant\protected\def\usepgflibrary[#1]#;#2% somehow both variants are used
  {\starttikzinput
   \normalusepgflibrary[#1#2]%
   \stoptikzinput}

\tolerant\protected\def\usetikzlibrary[#1]#;#2% somehow both variants are used
  {\starttikzinput
   \normalusetikzlibrary[#1#2]%
   \stoptikzinput}

\usepgfmodule[shapes]
\usepgfmodule[plot]
\usepgfmodule[matrix]
\usepgfmodule[decorations]

\definefilesynonym [pgfplots]      [tikz-pgfplots]
\definefilesynonym [pgfplotstable] [tikz-pgfplotstable]

\stopmodule

[-- Attachment #3: Type: text/plain, Size: 496 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : https://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : https://contextgarden.net
___________________________________________________________________________________

             reply	other threads:[~2023-04-28  4:09 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-28  4:08 Aditya Mahajan via ntg-context [this message]
2023-04-28  5:01 ` Aditya Mahajan via ntg-context
2023-04-28 13:22   ` Ulrike Fischer via ntg-context
2023-04-28 14:08     ` Gavin via ntg-context
2023-04-28 14:25       ` Aditya Mahajan via ntg-context
2023-04-28 16:42         ` Floris van Manen via ntg-context
2023-04-28 21:38           ` Aditya Mahajan via ntg-context
2023-04-28 14:26     ` Aditya Mahajan via ntg-context
2023-05-02  5:49       ` Aditya Mahajan via ntg-context
2023-05-04 14:45 ` Hans Hagen via ntg-context
2023-05-04 21:12   ` Aditya Mahajan via ntg-context
2023-05-04 21:22     ` Hans Hagen via ntg-context

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=nso51079-7p60-sns0-38nn-r5q9n612nnn1@hzvpu.rqh \
    --to=ntg-context@ntg.nl \
    --cc=adityam@umich.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).