[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