[NTG-context] LMTX and addplot table

Jean-Philippe Rey jean-philippe.rey at centralesupelec.fr
Sat Dec 12 15:35:23 CET 2020

> Le 12 déc. 2020 à 13:20, Hans Hagen <j.hagen at xs4all.nl> a écrit :
> On 12/12/2020 12:19 PM, Jean-Philippe Rey wrote:
>>> Le 12 déc. 2020 à 11:58, Hans Hagen <j.hagen at xs4all.nl <mailto:j.hagen at xs4all.nl>> a écrit :
>>> On 12/12/2020 10:36 AM, Jean-Philippe Rey wrote:
>>>> Dear list,
>>>> I am unable to draw a plot using an external file with LMTX. Here is a minimal example
>>>> =====================
>>>> \usemodule[pgfplots]
>>>> \starttext
>>>> \starttikzpicture
>>>> \startaxis
>>>> \addplot table [x=t, y=E] {mfe-addplot.dat};
>>>> \stopaxis
>>>> \stoptikzpicture
>>>> \stoptext
>>>> =====================
>>>> The ConTeXt run fails with an "Undefined control sequence" error (see attached log file). I don't know if this is an LMTX or PGF issue. The example works fine with MkIV. I tried with the tikz version available on ConTeXt garden (pgf 3.0.1, pgfplots 1.16) and the last one from CTAN (pgf 3.1.7a, pgfplots 1.17) with the same result.
> wipe t-tikz.* on your machine in order to use m-tikz.mkiv in the distribution because it looks like it does a bad catcode table change ... that went unnoticed because a chardef'd constant gets typeset (and when that happens before \starttext you won't see it but it actually does introduce some funny char); in lmtx we don't use chardef for that so that can give an error then when loading
> anyway, you're not suffering from that i think but better use the right module loader anyway

I wiped t-tikz.  The only noticeable difference is that now I need to explicitly \usemodule[tikz] in order to use pgfplots. I checked and found the line


in t-pgfplots.tex.  I guess that explains it.

> then you can define the \PackageError macro (I did it with some trial and error but the next seems to work:
> \let\PackageError\writestatus
> so I'll add something like that to m-tikz.mkiv

As Wolfgang pointed out, \PackageError takes three parameters, the third is meant to be displayed when the user types H to an error prompt. I defined it as

\def/PackageError#1#2#3{\writestatus{#1}{#2 (#3)}}

that effectively displays the error message in the console and the log file.

> which still looks bad but at least you don't crash .. i'll look into that later today (as i'm splitting mkiv/lmtx code i use a slightly different file reader so maybe that's it)

I guess that you've pinpointed the problem.

By default, pgfplotstable breaks lines at white space (tab or space according to the pgfplotstable manual). I used tabs as column separators in my demo file. With MKiV, the columns are correctly split but with LMTX, pgfplotstable sees a single column.

I explicitly stated that the columns are separated with tabs:

\addplot table [x=t, y=E, col sep=tab] {mfe-addplot.dat};

and it works. I tried to change the columns separator to a space, instead of a tab and it also works.

I don't know what pgfplotstable uses to split columns, but the conclusion is that with MkIV 'col sep=space' means space or tab, whereas with LMTX it means strictly a space character.

Thank you very much for your help.

Jean-Philippe Rey
jean-philippe.rey at centralesupelec.fr <mailto:jean-philippe.rey at centralesupelec.fr>
91192 Gif-sur-Yvette Cedex - France
Empreinte PGP : 807A 5B2C 69E4 D4B5 783A 428A 1B5E E83E 261B BF51

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ntg.nl/pipermail/ntg-context/attachments/20201212/67aa01fd/attachment.htm>

More information about the ntg-context mailing list