[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