[cstex] parametry makra zakončené \par
Petr Olsak
petr at olsak.net
Fri Jan 26 22:51:48 CET 2024
Dobrý den,
OpTeX odděluje interní jmenný prostor, který používá sekvence \_slovo,
od uživatelského jmenného prostoru \slovo, ve kterém si uživatel může
definovat cokoli bez nebezpečí, že by omylem zničil interní chování TeXu
a OpTeXu. Takže může definovat \def\fi{finito} nebo \def\par{paragraf} a
pak používat \fi což expanduje na slovo finito a \par což expanduje na
slovo paragraf. Vnitřní makra OpTeXu se kvůli takovým makrům (na rozdíl
od LaTeXu nebo ConTeXtu) nerozsypou. Aby to bylo možné, je třeba interní
řídicí sekvence udržovat ve tvaru \_fi a \_par. Prázdný řádek tedy
negeneruje \par (jako klasický TeX), ale \_par. Makro, které končí čtení
parametru, jakmile narazí na prázdný řádek, tedy v OpTeXu je definováno
jako \def\x#1\_par{...}.
To je důvod, proč jsem zařadil (naprogramoval pro všechny TeX enginy) a
prosadil možnost generování libovolné řídicí sekvence na prázdném řádku,
nejen pevně stanovené \par, jako v klasickém TeXu. To se zařídí pomocí
primitivního příkazu \partokenname. A OpTeX deklaruje
\partokenname\_par
takže prázdné řádky v OpTeXu generují \_par, nikoli \par.
Viz též dokumentaci k OpTeXu, sekci 2.38 (Other macros), odstavec
začínající textem LuaTeX version 1.14 and newer. a následující odstavec
začínající We set \partokenname to \_par ...
Zdravím
Petr Olšák
On 1/26/24 22:25, vclv at centrum.cz wrote:
> Teď jsem zjistil, že po přechodu na opTeX mi přestala fungovat makra, jejichž některé parametry byly zakončeny \par
>
> \def\x#1\par{#1}
>
> \x abc
>
> xxx
> \end
>
> produkuje chybu Paragraph ended before \x was complete.
>
> Mohu, prosím, nějak zařídit zpátky, aby prázdný řádek byl interpretován stejně jako \par? Podle TeXbooku jsme zkuisil
>
> \catcode`\^^L=\active \outer\def^^L{\par}
>
> bez úspěchu.
>
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> https://lists.felk.cvut.cz/mailman/listinfo/cstex
More information about the csTeX
mailing list