[cstex] ConTeXt a plainovska makra a aplikace II.

Petr Olsak petr at olsak.net
Tue Apr 24 14:48:09 CEST 2007


Omlouvam se za utrzeny email, ktery mi utekl do konference. Zpusobil to
ten proklaty znak ^^X. Tedy pokracuji :-).

On Tue, 24 Apr 2007, Vit Zyka wrote:

> Pekne odpoledne,
>
> mne se onech pet znaku 0x18 zobrazi pri verzi
>
> Presnou pricinu neznam, ConTeXt prevadi znaky ^^X na znak s hodnotou
> 0x18 pomoci \rawcharacter, takze i v logu je primo znak 0x18, viz
>    http://zyka.net/tmp/demo1.zip

Vyborne, jsme zase trochu blize k problemu.

Po zbeznem prohlednuti toho podrobneho logu jsem shledal, ze
ConTeXt skutexne meni cadtode znaku ^^X z trinactky znovu na 12, viz

{changing \catcode24=13}
{into \catcode24=12}

v ramci jakehosi makra \catcodetable, jehoz duvod samozrejme neznam.
Takze je jasne, ze moje pojistka nezabrala. Take je nad slunce jasne,
odkud se bere znak ^^X ve vystupu:

\inputgivenfile #1->\normalinput "#1"\relax
#1<-\readfilename
{\input}

\readfilename ->pdfr-ec
(c:/TeXLive2005/texmf-context-a/tex/context/base/pdfr-ec.tex
{the character ^X}

Tento soubor se cte s catcodem znaku ^X=12, ale zustava \endlinechar=^X.
To zpusobuje problemy.

Podivame-li se do souboru pdfr-ec.tex (coz jsem provedl za pomoci google,
neb ten soubor nemam v pocitaci), shledavam, ze tam jsou dva prazdne
radky, kazdy z nich produkuje na konci radku ^X do vystupu. Dalsi
zavlecene znaky ^X se dostanou do parametru makra
\startpdffontresource, coz muze mit katastrofalni nasledky na
funkci toho makra.

Nevim, proc chce ConTeXt z niceho nic cist nejaky soubor. Asi k tomu ma
duvody. Musime se pokusit jej nejakym trikem presvedcit, at ten soubor
precte spravne se spravne nastavenym \endlinechar. Vzhledem k tomu, ze to
cele probiha uvnitr skupiny, mohlo by mozna fungovat neco takoveho:

\let\nejnormalnejsiinput=\normalinput
\def\scanbase #1 {\begingroup \endlinechar=`\^^X
   ... atd, stejne jak bylo
   \def\normalinput {\endlinechar=13 \nejnormalnejsiinput}
   \expandafter \scanfirstline \nejnormalnejsiinput #1 \relax^^X\endhook
\endgroup}%

Mohl by s tim nejaky ConTeXtista experimentovat...

Dale to asi nebudeme resit pres skupinu. zainteresovani lide, necht si
vzajemne zamejluji...

Zdravim

Petr Olsak





More information about the csTeX mailing list