Portál AbcLinuxu, 3. května 2025 05:29
Obracím se na plainTeXisty s žádostí o pomoc.
PDF Abíčko sice už dělám nějaké to úterý, ale bohužel jsou tam věci, které se mi nelíbí. Kupodivu si za ty roky nikdo nestěžoval, ale mi to vadí. Některé věci samozřejmě nejsou vidět a čtenář (i když TeXista) o nich nemůže nic vědět.
Jedná se hlavně o to, že znaky, jako jsou $#_& a podobné, jsou v makrech jako např. \code{} aktivní. \code{} vypíše zdrojový kód, např. jméno proměnné, jedná se o mou rutinu, takže její definici nikde nehledejte. V podstatě jenom změní pozadí a písmo. Je bohužel nutné je "escapovat" pomocí backslashe, což je zhovadilost. Nějak jsem ovšem nepřišel na řešení, jak jim nastavit kategorii 11 nebo jinou, tj. aby se jenom vypsaly. Teď to všechno nemám v hlavě, takže píšu spíše obecně - hledám univerzální řešení, jak přepnout kategorie těchto znaků. Není to nic těžkého, ale prostě mi to nešlo.
Když jsem použil \dospecials, aplikovalo se to na celý dokument, i když jsem to uzavřel do \bgroup a \egroup. Nevím prostě, jak to čapnout. Matouš sice už před časem něco nadhodil, ale nedokončil. Poradíte?
Mám pak v záloze ještě jeden problémek... Díky za tipy.
Samozřejmě uvítám kritiku nebo pochvaly, připadá mi, že pdfko nikdo nečte - žádné reakce na zpracování nejsou.
Tiskni
Sdílej:
\verbatim
(ten plainový, ne ten LaTeXový)?
verbatim
. Ale to ti možná nevyhovuje. Změna kategorie znaku je velmi jednoduchá:
\catcode`\$=12
A pak už můžes symbol $ používat jako běžný znak. Samozřejmě nesmíš zapomenout vrátit kategorii zase zpět (kat. 3), pokud budeš například chtít použít sazbu matematiky. Pěkně je to popsáno v Olšákově TeXBook naruby nebo v Knuthově The TeXBook.
cite{}
zadat lokální změnu kategorií inkriminovaných znaků. Bude to změněno pouze v tom prostředí a vše by mělo být podle vašich představ.
\newenvironment{moje}{\catcode`\$=12}{\catcode`\$=3} \begin{moje} $$$$$$$$$$$$$$ % zde se jedna o bezny znak \end{moje} $$$ % zde je to znak specialniToto jsem osobně zkoušel a funguje to.
verbatim.tex
a upravit si, co je potřeba.
Ale teď koukám, že verbatim.tex
, který mám nainstalovaný z distribuce je nějaký omezený. Myslel jsem tenhle Ulrychův.
\def\code#1{\begingroup \catcode`\#=12 \catcode`\_=12 \catcode`\$=12 \catcode`\&=12 #1\endgroup} Volba \code{CONFIG_SECURITY_CAPABILITIES} musí být nastavena jako modul. Poté stačí provést \code{$ make} a~jako root pak \code{make install} a~\code{depmod}. vytvořil se modul s~názvem realtime. Nyní můžete vytvořit skupinu, která bude mít práva pro operace v~reálném čase. V~některých distribucích je už vytvořena skupina audio. Do paměti se zavede modul s~parametrem gid, který určuje identifikátor skupiny, například: \code{modprobe realtime gid=29}. \bye
! Missing $ inserted. <inserted text> $ <to be read again> _ <argument> CONFIG_ SECURITY_CAPABILITIES \code ...`\_=12 \catcode `\$=12 \catcode `\&=12 #1 \endgroup l.15 Volba \code{CONFIG_SECURITY_CAPABILITIES} musí; být nastavena jako modul. ? x No pages of output. Transcript written on priklad.log.Asi bude lepší použít ten verbatim, kdybych ale já nebyl tak tvrdohlavý. Třeba mě zajímá, jak se to chová, když v prvním řádku předefinuji #, který pak ale volám jako hodnotu argumentu. Měl by se vypsat jenom #, ale viditelně se vypisuje hodnota. Takže než začnu používat ten verbatim, může mi to někdo objasnit?
\code
nemůže fungovat, protože přecatcodování speciálních znaků se neaplikuje na znaky, které už byly jednou načteny. Proto to obvykle implementace \verbatim
a spol. řeší tak, že nadefinují makro bez parametru, které přepne TeX do "verbatim-modu" a zadefinuje ukončovací značku (buď zvolený znak nebo \endverbatim
), která ho přepne zpět. Pro podrobnější (a přesnější) výklad bych asi doporučil Olšáka (TeXbook naruby).
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.