[cstex] ConTeXt a plainovska makra a aplikace II.

Petr Olsak petr at olsak.net
Tue Apr 24 09:31:23 CEST 2007


On Mon, 23 Apr 2007, Jaroslav Hajtmar wrote:

> Dobry den.
> To, ze je pritomnost "chyby" zavisla na verzi ConTeXtu nebo PdfTeXu je
> pro mne dobra zprava...

Dobry den,

ja nevim, jestli je to uplne jiste. Mame pouze jistotu, ze jeden
ConTeXtista se pokusil chybu zrekonstruovat a nepodarilo se mu to.

Nemam ConTeXt, takze dale vyvozuji jen z toho, co mohu vykoukat z toho
PDF. Ty nuly jsou jen zleva stinovane. Po prevodu toho PDF do
PostScriptu a analyze te casti postscriptoveho kodu, ktera ty
nuly produkuje, jsem zjistil, ze:

- cely dokument je tisten jedinym fontem LMRoman12-Regular vcetne tech nul,
- nuly jsou vytisteny drive nez cokoli ostatniho na strance,
- nuly jsou tisteny kodem 030 osmickove, 0x18 hexa, 24 dekadicky, tj.
  jedna se o znak ^^X, coz v kodovani Cork je znak tvorici cast znaku
  procento nebo promile (viz napr. TST, str. 288).

Puvodne jsem si myslel, ze problem bude v tom, ze behem vystupni rutiny
ConTeXt nacita nejake sve pracovni soubory, a protoze ma zmenenu v danem
okamziku sadu kategorii, dopadne vystup jinak.

Ted se spis priklanim k tomu, ze za to muze separator ^^X, ktery jsem ve
svem makru scancsv pouzil. Tento znak (mimo rozsah viditelnych ASCII
znaku) jsem pouzil proto, aby nedoslo ke kolizi s beznym vstupnim textem
v CVS souboru, kde takovy znak neocekavam.

Na zacatku definuji ve svem makru scancsv (pouze pro jistotu):

\catcode`\^^X=13 \def^^X{}

a v okamziku cinnosti \scanbase lokalne nastavuji

\endlinechar=`\^^X

abych mohl nakrmit parametry maker jednotlive radky separovane ^^X.

V csplainu neni problem, nikde ve vystupu se (pri \tracingall)
neobjevi v logu vystup tvaru

{the character ^^X}

takze i kdyby makra nespravne zafungovala a uteklo nejake ^^X, pak diky
tomu, ze je  \catcode`\^^X=13 \def^^X{}, se do vystupu nic nedostane.

Domnivam se, ze ConTeXt asi meni kategorii znaku ^^X zpet na normalni
a pak se ten znak dostane nejakou cestou do vystupu. V kterem okamziku,
nevim, je to mozne zjistit nastavenim \tracingall a spustenim toho
ConTeXtu (coz ja nemohu).

Zjistil jsem jeste, ze i kdyz zakomentuji bezpecnostni pojistku
\catcode`\^^X=13 \def^^X{}, tak stejne mi zadne ^^X do vystupu v csplainu
neutece. Je to mozna nadbytecna bezpecnostni pojistka, ktera navic v
ConTeXtu nezafungovala.

Prosim ConTeXtisty, aby se na to podivali. Docela me to zajima, kde je
problem.

Zdravim

Petr Olsak





More information about the csTeX mailing list