Re: [NTGcontext] Latest betas break tikz matrix
Hi Aditya,
Could be due to the change in catcode of &. Try adding \donknuthmode.
It doesn't make any difference if I put the \donknuthmode just before \starttikzpicture. But If I put it before the \usemodule[tikz], then I get another error: Package pgfbasematrix: Error! Single ampersand used with wrong catcode. ! Missing number, treated as zero. system > tex > error on line 12 in file testcontext.tex: Missing number, treated as zero ... 2 \usemodule[tikz] 3 \usetikzlibrary{matrix} 4 5 \starttext 6 \tikzstyle{description}=[fill=white,inner sep=2pt] 7 \starttikzpicture 8 \matrix(m)[matrix of math nodes, 9 row sep=3em, column sep=3em, 10 text height=1.5ex, text depth=0.25ex] 11 {x&y\\ 12 >> z&u}; 13 \path[>] 14 (m11) edge node[description] {$*$} (m12) 15 edge node[description] {$*$} (m21) 16 (m12) edge[dashed] node[description] {$*$} (m22) 17 (m21) edge[dashed] node[description] {$*$} (m22); 18 \stoptikzpicture 19 \nonknuthmode 20 \stoptext 21 <to be read again> \pgf@matrix@column@sep@2 \pgf@matrix@endcell ...ixcurrentcolumn \endcsname \relax \advance \pgf@picmi... <template> \pgf@matrix@endcell }\endtemplate \pgf@matrix@no@eom@found >\cr \noalign {\vskip \pgf@y \ifpgf@matrix@fixed \... <to be read again> z l.12 z &u};
Hi all, just as a followup and for the mailing list archives, the solution is to use both Aditya's suggestion to turn on \donknuthmode, as well replacing the & signs with their interpretations, namely \pgfmatrixnextcell. Thank you Aditya for the suggestion. Regards, Mathieu On Wed, Feb 23, 2011 at 11:38 AM, Mathieu Boespflug <0xbadcode@gmail.com> wrote:
Hi Aditya,
Could be due to the change in catcode of &. Try adding \donknuthmode.
It doesn't make any difference if I put the \donknuthmode just before \starttikzpicture. But If I put it before the \usemodule[tikz], then I get another error:
Package pgfbasematrix: Error! Single ampersand used with wrong catcode. ! Missing number, treated as zero.
system > tex > error on line 12 in file testcontext.tex: Missing number, treated as zero ...
2 \usemodule[tikz] 3 \usetikzlibrary{matrix} 4 5 \starttext 6 \tikzstyle{description}=[fill=white,inner sep=2pt] 7 \starttikzpicture 8 \matrix(m)[matrix of math nodes, 9 row sep=3em, column sep=3em, 10 text height=1.5ex, text depth=0.25ex] 11 {x&y\\ 12 >> z&u}; 13 \path[>] 14 (m11) edge node[description] {$*$} (m12) 15 edge node[description] {$*$} (m21) 16 (m12) edge[dashed] node[description] {$*$} (m22) 17 (m21) edge[dashed] node[description] {$*$} (m22); 18 \stoptikzpicture 19 \nonknuthmode 20 \stoptext 21
<to be read again> \pgf@matrix@column@sep@2 \pgf@matrix@endcell ...ixcurrentcolumn \endcsname \relax \advance \pgf@picmi... <template> \pgf@matrix@endcell }\endtemplate \pgf@matrix@no@eom@found >\cr \noalign {\vskip \pgf@y \ifpgf@matrix@fixed \... <to be read again> z l.12 z &u};
On 2322011 5:38, Mathieu Boespflug wrote:
Hi Aditya,
Could be due to the change in catcode of&. Try adding \donknuthmode.
It doesn't make any difference if I put the \donknuthmode just before \starttikzpicture. But If I put it before the \usemodule[tikz], then I get another error:
Package pgfbasematrix: Error! Single ampersand used with wrong catcode. ! Missing number, treated as zero.
that's a strange error ... if pgf knows that the catcode is 'wrong' it could deal with it i guess Hans  Hans Hagen  PRAGMA ADE Ridderstraat 27  8061 GH Hasselt  The Netherlands tel: 038 477 53 69  voip: 087 875 68 74  www.pragmaade.com  www.pragmapod.nl 
2011/2/23 Mathieu Boespflug <0xbadcode@gmail.com>
Hi all,
just as a followup and for the mailing list archives, the solution is to use both Aditya's suggestion to turn on \donknuthmode, as well replacing the & signs with their interpretations, namely \pgfmatrixnextcell. Thank you Aditya for the suggestion.
Regards,
Mathieu
umm, i can’t seem to get it to work. i use the mkiv minimals… no combination of \donknuthmode, \nonknuthmode, \pgfmatrixnextcell and “replace ampersand=foo”, that i tried, seems to work. can anyone give me a minimal example of a working tikz matrix in a context document? (preferrably something that prevents me from littering everything with “\pgfmatrixnextcell”) thanks, philipp
On Sun, 11 Sep 2011, Philipp A. wrote:
2011/2/23 Mathieu Boespflug <0xbadcode@gmail.com>
Hi all,
just as a followup and for the mailing list archives, the solution is to use both Aditya's suggestion to turn on \donknuthmode, as well replacing the & signs with their interpretations, namely \pgfmatrixnextcell. Thank you Aditya for the suggestion.
Regards,
Mathieu
umm, i can’t seem to get it to work. i use the mkiv minimals…
no combination of \donknuthmode, \nonknuthmode, \pgfmatrixnextcell and “replace ampersand=foo”, that i tried, seems to work.
can anyone give me a minimal example of a working tikz matrix in a context document? (preferrably something that prevents me from littering everything with “\pgfmatrixnextcell”)
One way around this is to reread part of tikz module code under the right catcode regime (ideally this should be done by ttikz). I still cannot get & to work, but using \& is a reasonable shortcut. Here is a working example: \usemodule[ttikz] \usetikzlibrary{matrix} \unprotect \ReadFile{pgfmodulematrix.code.tex} \protect \starttext \tikzstyle{description}=[fill=white,inner sep=2pt] \starttikzpicture \matrix(m)[matrix of math nodes, row sep=3em, column sep=3em, ampersand replacement=\&,%% AM: Added this. text height=1.5ex, text depth=0.25ex] {x \& y\\ z \& u\\}; \path[>] (m11) edge node[description] {$*$} (m12) edge node[description] {$*$} (m21) (m12) edge[dashed] node[description] {$*$} (m22) (m21) edge[dashed] node[description] {$*$} (m22); \stoptikzpicture \stoptext Aditya
On Sun, 11 Sep 2011, Aditya Mahajan wrote:
On Sun, 11 Sep 2011, Philipp A. wrote:
2011/2/23 Mathieu Boespflug <0xbadcode@gmail.com>
Hi all,
just as a followup and for the mailing list archives, the solution is to use both Aditya's suggestion to turn on \donknuthmode, as well replacing the & signs with their interpretations, namely \pgfmatrixnextcell. Thank you Aditya for the suggestion.
Regards,
Mathieu
umm, i can’t seem to get it to work. i use the mkiv minimals…
no combination of \donknuthmode, \nonknuthmode, \pgfmatrixnextcell and “replace ampersand=foo”, that i tried, seems to work.
can anyone give me a minimal example of a working tikz matrix in a context document? (preferrably something that prevents me from littering everything with “\pgfmatrixnextcell”)
One way around this is to reread part of tikz module code under the right catcode regime (ideally this should be done by ttikz). I still cannot get & to work, but using \& is a reasonable shortcut.
Here is a working example:
\usemodule[ttikz] \usetikzlibrary{matrix}
\unprotect \ReadFile{pgfmodulematrix.code.tex} \protect
A slightly more robust solution is to load the attached module instead of ttikz. (It also patches \usetikzlibrary). However, I cannot figure out what is the expected catcode of & inside a tikz \matrix. So, you will still need to use amserand replacement=\&. Note that this sets the catcode of ! to other (as expected by tikz). In the past, circuittikz has some troubles with the catcode of !. Aditya
Thank you both! We should get the TikZ devs to accept patches already. does anyone know anyone who has CVS access? Apart from Aditya’s hack, I’d also like to see Joseph Wright’s hackhttp://tex.stackexchange.com/questions/27952/cmykcontextcolorsintikz/279...for ConTeXt’s CMYK colors in TikZ. Maybe we should create a module from usercreated TikZ hacks that make it work better with ConTeXt, and link to it on ConTeXtgarden? PS: Aditya, does your module provide everything you’d expect? like \tikzstyle, \usetikzlibrary[something], \tikz\node{};, …? I don’t exactly know the inner workings of plain TeX… philipp
participants (4)

Aditya Mahajan

Hans Hagen

Mathieu Boespflug

Philipp A.