TeXovani ciziho zdroje?

David Necas (Yeti) yeti at physics.muni.cz
Sun Jul 6 00:05:02 CEST 2003


Doufam, ze problem jeste stale nekoho zajima... Pred chvili
jsem byl na prochazce a napadly mne na ni ctyzi zpusoby, jak
obejit muj wrapper, jeden primitivnejsi nez druhy ;-) Obavam
se, ze vetsina toho, co jsem napsal, byly naproste bludy...

Zacnu od zacatku. Pri TeXovani utocnikova zdroje existuji
dva podstatne odlisne pripady.

V prvnim pripade se po provedeni jeho kodu uz nebude dit nic
,zajimaveho`, idealne pouze \end (+ vystupni rutina, ktera
ale nebude potrebovat otevirat zadne soubory apod.). V tomto
pripade mohou byt vsechny nebezpecne kontrolni sekvence pred
zacatkem zpracovani utocnikova kodu nenavratne zapomenuty,
a i kdyz si treba predefinuje \end i tu vystupni rutinu,
niceho podstatneho tim nedosahne. Toto by podle mne mel byt
cil.

V druhem pripade chceme po skonceni zpracovani utocnikova
kodu jeste provadet nejake ,zajimave`, tj. utocnikovi
zapovezene operace (tak jsem problem puvodne pochopil). To
znamena, ze potrebujeme TeX v nejakem pricetnem stavu,
idealne ve stejnem, jako pred zacatkem zpracovani
podvratneho kodu. Pokud bude utocnik moci volne pouzivat
\let, definovat makra, prirazovat do registru, menit
catcode, ..., nemame sanci. Musime bud znepristupnit
prakticky uplne vsechno, nebo ho uzavrit do nejakeho
sandboxu.

Jedine, co v TeXu sandbox alespon vzdalene pripomina, je
skupina. Zevnitr skupiny lze pachat skodu radou zpusobu
(\global, \aftergroup), horsi ale je, ze nelze (neumim)
zabranit jejimu opusteni tim nejprostsim zpusobem:

  } ted jsme o uroven vys {

pripadne pomoci \egroup...\bgroup, resp. \endgroup...\begingroup.
A to ani nemluvim o metodach typu \let\foobar=  na konci
utocnikova textu (ktere sice zpusobi ukonceni ve skupine
urovne 1, ale komu to vadi), nebo tricich se zanorovanim
\if...\fi nezavisle na skupinach (ty se mi sice zatim
nepodarilo vyuzit zadnym konstruktivne destruktivnim
zpusobem, coz ale nemusi nutne znamenat, ze to neni mozne).

Shrnu-li to, pokouset se vyresit druhy pripad vede podle mne
do pekel.

A pokud opet pisu bludy, snad aspon nejakeho guru
vyprovokuji k reakci.

Yeti


--
DPM 5.7.2: Do not use tab characters. Their effect is not predictable.



More information about the csTeX mailing list