\csname a parametr

Hans Ginzel hans at kolej.mff.cuni.cz
Sat Nov 18 18:54:28 CET 2000


On Thu, Nov 16, 2000 at 08:04:59PM +0100, Karel Mokry wrote:
>   mam problem jak nadefinovat nekolik maker s velmi podobnymi nazvy a obsahem.
>   potrebuji toto:
>   \jedna#1{\ifx\@jedna\undefined \relax
> 	   \else \gdef\@@jedna{\@jedna}\fi
> 	   \jinemakro{#1}}

\def\create#1{\expandafter \edef \csname #1\endcsname ##1{%
        \noexpand\ifx \csname @#1\endcsname \noexpand\undefined \relax
        \noexpand\else \gdef \csname @@#1\endcsname{\csname @#1\endcsname}\noexpand\fi
        \noexpand\jinemakro{##1}}}

\create{jedna}
\show\jedna

Viz \edef v TeXbooku naruby od doktora Olšáka. Před makry (\jinemakro,
\undefined) a primitivy podléhající expanzi (\ifx, \else, \fi) se musí
napsat \noexpand. Primitiv \edef expanduje tělo definece před vlastním
uložením naučeného. Stačí tedy vhodně (\noexcpand, \csname...\endcsname)
zařídit, aby se tělo po expanzi shodovalo s požadovanou definicí.


	Zdraví

-- 
					Hans Ginzel

<>< Faculty of Mathematics and Physics, Charles University, Prague ><>




More information about the csTeX mailing list