[cstex] powerdot a cstex
Petr Sojka
sojka at fi.muni.cz
Fri Oct 16 09:49:17 CEST 2015
On Fri, Oct 16, 2015 at 09:06:33AM +0200, Petr Olsak wrote:
Dobrý den.
> >%Tesaříkova patch \cline pro babel s czech a slovak
> >\makeatletter
> >\begingroup
> > \catcode`\-=\active
> > \def\x{\endgroup
> > \let\cs at cline\@cline
> > \expandafter\def\expandafter\@cline
> > \expandafter##\expandafter1\expandafter
> > -\expandafter##\expandafter2\expandafter\@nil\expandafter
> >{\expandafter\cs at cline\expandafter##\expandafter1\minus##2\@nil}
> >}\x
> >\makeatother
>
> Není zcela zřejmé, proč je to makro tak hrůzostrašné. Ale při
> pohledu do maker většiny LaTeXových balíčků i LaTeXu samotného se to
> asi jeví bohužel jako standard.
Pokusím se trochu "hrůzostrašnost" vysvětlit: je to kvůli portabilitě.
Níže užitý primitiv \detokenize totiž není
v Knuthově originálním TeXu, ale až v e-TeXu. e-TeX
je sice dnes již poměrně rozšířen, ale LaTeX používá tolik lidi,
že jako _obecné_ řešení nelze řešení zkracující délku
makra využitím \detokenize místo mnohých \expandafter akceptovat.
Řešení je samozřejmě korektní pro ty jednotlivce, kteří ví
o nevyřčeném předpokladu rozšířeného TeXu (e-TeXu),
--ps
P.S. Mnohé příklady TBN z kap. 2 by určitě také šly
"asi lépe řešit" pomocí \detokenize, a na první pohled
vypadají pro čtenáře "hrůzostrašně".
> Nicméně, problém by se dal asi lépe řešit pomocí:
>
> \let\clineori=\cline
> \def\cline#1{\expandafter\clineori\expandafter{\detokenize{#1}}}
>
> Toto navíc funguje bez ohledu na to, zda je nebo není
> \usepackage[czech]{babel} použito.
>
> Zdravím
>
> Petr Olšák
More information about the csTeX
mailing list