TeXnicke problemy
Stepan Kasal
KASAL at ksvi.mff.cuni.cz
Tue Feb 28 13:01:56 CET 1995
Dobry den,
> \long\def\void#1\endvoid{}
> se mi nehodilo, protoze jsem potreboval pouzit neco jako
> \def\Reseni#1{
> \def\zad##1{\if##1#1\let\endzad\endres\res##1%
> \else\let\endzad\endvoid\expandafter\fi}
> \input \ZadFile}
Ja bych to proste napsal asi takhle:
\def\Reseni#1{
\def\zad##1{\if##1#1\let\endzad\endres\res#1%
\else\expandafter\voidzad\fi}
\input \ZadFile}
\def\voidzad#1\endzad{}
Anebo rovnou asi takhle:
\def\Reseni#1{
\def\hopla##1\zad#1{\let\endzad\endinput\res#1}
\def\zad{\hopla\zad}
\input \ZadFile\endres}
(Neni mi zcela jasny \endinput, ale snad to bude takhle chodit.)
Pro kratky \ZadFile by snad fungovalo i tohle:
\def\void#1\endvoid{}
\def\Reseni#1{
\def\hopla##1\zad#1{\let\endzad\void\res#1}
\expandafter \hopla \input \ZadFile\endvoid\endres}
> \def\Endvoid{}
> \def\endvoid{\Endvoid}
> \def\void{\futurelet\next\Void}
> \def\Void{\ifx\next\endvoid\else\expandafter\VOid\fi}
> \def\VOid#1{\void}
> fungovalo to jenom pokud pred \endvoid nebyla mezera nebo nebylo na zacatku
> radku, protoze \futurelet sice odchytilo mezeru, ale \VOid uz si jako
> parametr vzalo to \endzad. [...]
>
> Otazka zni: neslo by to napsat, aniz bych musel menit catcode mezery
Co takhle
\def\VOid{\afterassignment\void\let\next = }
(Ty mezery okolo rovnitka jsou podstatne, souvisi se syntaxi \let
(viz TeXbook): <\let> [ <space> ] [ <=> [ <space> ] ] <token> )
Dale:
> Bohuzel, nepodarilo se mi prijit na to, jak zaridit, aby se soubor
> nacital jen jednou.
> \long\def\aaa{\input \ZadFile}
Lze to obejit treba takhle:
{ \def\zad#1{\expandafter\gdef\csname zad#1\endcsname{%
\let\endzad}}
\input \ZadFile
}
\def\Reseni#1{\zad #1
\csname zad#1\endcsname \endzad
}
> \qqqtoks=\expandafter{\input ahoj }
> \def\aaa{\the\qqqtoks}
> ! File ended while scanning text of \qqqtoks.
Kdyz mu vadi konec souboru, tak bych zkusil:
\expandafter\qqqtoks\expandafter{\input ahoj }
cili
\expandafter\qqqtoks\expandafter=\expandafter{\input ahoj }
Vsechno pisu ad hoc, nic z toho jsem neladil, ale doufam, ze vetsina
z naznacenych cest vede k cili.
Uff,
--Stepan
More information about the csTeX
mailing list