[cstex] Definice znaků

Petr Olsak petr at olsak.net
Mon Jan 25 08:10:30 CET 2021


Dobrý den,

jak již zmínil Z. Wagner, používáte encTeX, například tedy csplain s 
pdftexem.

Z Vašeho dotazu neplyne, co přesně používáte a proč chcete problém řešit 
takovým zastaralým způsobem. Dnes se na věc díváme jinak. Chcete použít 
ē? Tak ho v textu normálně použijte. Nevidíte ho ve výstupu? Tož nemáte 
zavedený font, jenž ten znak obsahuje. Ovšem znak ē obsahuje v podstatě 
každý Unikódový font, tj. zaveďte Unikódový font a nic s žádným 
starodávným \catcode, \active, \=e neřešte. Tomu je dobré se dnes 
vyhnout velkým obloukem.

Abyste mohl zavést Unikódový font, potřebujete použít LuaTeX nebo XeTeX. 
Například OpTeX používá LuaTeX, tj stačí zavést rodinu Unikódových fontů 
a psát, co potřebujete.

\fontfam[lmfonts]

Tady píšu, co potřebuji, například ē.

\bye

Pokud přesto máte nějaký důvod používat zastaralý 8bit TeX s encTeXem, 
pak na http://petr.olsak.net/csplain.html najdete návod, co udělat. Je 
to tam ukázáno na příkladu s Eurem. Pro Váš případ to vypadá takto:

\mubyte\emacron ^^c4^^93\endmubyte
\def\emacron{\=e}

test: ē

\bye

Jak jsem přišel na to, že emacron má kód ^^c4^^93? Nu, podíval jsem se 
na terminál a do logu, co encTeX hlásí za problém, když znak použiji a 
nedeklaruji. V takovém případě encTeX vyrobí chybovou hlášku a do 
výstupu na místo znaku vloží černý čtvereček.

Takové deklarace navíc nemusíte pro tak běžné znaky, jako je emacron, 
psát. Stačí použít soubor utf8lata z csplainu, tedy \input utf8lata.

Důvod chybové hlášky při použití Vašeho postupu je: encTeX neznámý kód 
pro emacron promění v chybovou hlášku, která je (v tomto případě) 
zajištěna makrem \warntwobytes. Vy jste použil

\catcode`\neznámý kód, což se promění v \catcode`\\warntwobytes, což se 
syntakticky TeXu nelíbí.

Poznámka: stává se často, že se lidé ptají, jak v TeXu zpracovat nějaký 
znak, do emailu jej dokáží napsat přímo a dále čekají, že v TeXu bude 
potřeba udělat nějaké obskurní řešení: topit se tisících různých 
kódování, aktivních znacích, encTeX konverzích, létajících akcentech, 
virtuálních fontech apod. Není to pravda, to patří do minulosti. My 
TeXisté dnes taky píšeme tyto znaky přímo (jako do toho emailu), protože 
dnes používáme LuaTeX (OpTeX) nebo XeTeX a Unicódové fonty.

Zdravím

Petr Olšák

On 1/24/21 9:00 PM, vclv at centrum.cz wrote:
> Omlouvám se, v tuto chvíli v tom tápu:
>
> chtěl bych v textu definovat některé znaky, třeba
> ē (e s pruhem)
>
> Postupoval jsem takto:
> \catcode`\ē=\active
> \defē{\= e}
>
> Ale zdá se, že to nejde:
>
> Improper alphabetic constant.
> <to be read again>
>                     \warntwobytes
> l.62 \catcode`\
>                 ─ô=\active
> A one-character control sequence belongs after a ` mark.
> So I'm essentially inserting \0 here.
>   
>
>   Nevím, zda tomu rozumím správně, ale když jsme to zkoumal, nenašel jsem ē v ascii tabulce. Je to ten důvod? A dá se ten znak odkazovat jinak?
>
> Děkuji za podněty či rady
>
> Václav Studený
>
> _______________________________________________
> csTeX mailing list
> csTeX at cs.felk.cvut.cz
> https://lists.felk.cvut.cz/mailman/listinfo/cstex


More information about the csTeX mailing list