|
Vyhledávání podle slov v CS-FAQ
Prostredie dôkaz (proof)
Dlho sa považovalo za nemožné vytvoviť prostredie proof, ktoré by automaticky
vkladalo symbol konca dôkazu. Niektoré dôkazy končia vysádzaním matematiky, iné
nie. Ak vstupný súbor obsahuje ...\] \end{proof}, potom LaTeX ukončí
vysádzanú matematiku a je pripravený na nový riadok bez toho, aby prečítal
akúkoľvek informáciu o ukončení dôkazu. Kód je teda celkom zložitý. Symbol
môžete vložiť ručne, ale balík ntheorem tento problém rieši
za používateľov LaTeXu: skutočne poskytuje automatický spôsob značenia konca
dôkazu.
AMSLaTeXovský balík amsthm tiež poskytoju prostredie proof, ktoré
toto dokáže, hoci ak dôkaz končí rovnicou, musíte vložiť príkaz
\qedhere:
\begin{proof}
text...
\begin{equation*}
matematika... \tag*{\qedhere}
\end{equation*}
\end{proof}
Konštrukcia \tag*{\qedhere} môže byť použitá v ľubovolnom číslovacom prostredí
AMSLaTeXu.
amsthm.sty: distribuované ako súčasť sady AMSLaTeX.
CTAN: amslatex
ntheorem: CTAN: ntheorem
Matematické věty a definice sázené antikvou
Chceme-li využít výhod příkazu \newtheorem, a přitom nechceme
být omezeni na to, že obsah bude vysázen skloněným fontem
(např. k vytvoření poznámek,
příkladů, důkazů,...) pak použijeme styl theorem.sty
(CTAN: 2etools). Popřípadě můžeme definovat prostředí, např. remark,
jehož obsah bude sázen antikvou (roman):
\newtheorem{preremark}{Poznámka}
\newenvironment{remark}%
{\begin{preremark}\upshape}{\end{preremark}}
Balík ntheorem (CTAN: 2etools) poskytuje matematické věty
a definice sázené antikvou přímo.
Označení číselných množin a dvojitě psané písmo
Je dobré mít příkazy typu \R pro standardní množinu reálných či
jiných čísel. Tradičně byly tyto množiny sázeny tučně.
Matematici však obvykle nemají přístup k tlustým křídám, a proto
si vymysleli speciální symboly, které se nyní běžně používají pro označení
\R, \C,
atd. Tyto symboly jsou označovány jako „zdvojená latinka“
(blackboard bold). Dříve, než
začneme trvat na použití těchto symbolů, bylo by dobré se zamyslet, zda by
nebylo lépe se navrátit k původnímu označování číselných množin
prostým tučným písmem, což by činilo věc daleko jednodušší.
Sada velkých písmen zdvojené latinky je součástí AMS-fontů
„msam“ (např. „msam10“ pro velikost 10pt) a „msbm“.
Fonty obsahují veliké množství matematických symbolů, které podstatně
rozšiřují sadu symbolů dodávanou ve standardní distribuci TeXu v Type 1
formátu. K dispozici jsou podpůrné soubory pro běh pod Plain TeXem
a LaTeXem (balíky amssymb a amsfonts).
Součástí balíku jsou i dva soubory, z nichž jeden usnadňuje vkládání fontů do
dokumentu a ve druhém jsou definovány příkazy pro jednotlivé symboly.
Oba lze použít jak v TeXu tak v LaTeXu.
Otázky a doporučení tykající se těchto fontů směrujte na
tech-support@math.ams.org.
Jiná úplná sada fontů zdvojené latinky, rodina fontů bbold,
je dostupná ve zdrojových souborech pro METAFONT v adresáři CTAN: bbold.
Zajímavostí je, že tyto fonty obsahují kromě velkých i malá
písmena, které jsou
na skutečných tabulích vidět jen zřídka. Zdrojový adresář fontu obsahuje také
zdrojové soubory LaTeXovského balíku umožňujícího používaní fontu. Fonty
nejsou dostupny v Type 1 formátu.
Alternativním zdrojem Type 1 fontů se znaky zdvojené latinky můžou být pořád
se rozšiřující sady kompletních rodin (jak komerční, tak volně dostupné), které
byly připraveny pro použití s TeXem/LaTeXem ( Výběr zvětšovatelných obrysových fontů).
Z volně dostupných sad poskytujý repliky msam and msbm
rodiny txfonts a pxfonts, rodina mathpazo
obsahuje „matematicky důležitý“ výběr zdvojené latinky.
V případě, že font nemáme, lze vytvořit také jednoduchá makra pro tvorbu
zdvojených znaků:
\newcommand{\R}{{\sf R\hspace*{-0.9ex}%
\rule{0.15ex}{1.5ex}\hspace*{0.9ex}}}
\newcommand{\N}{{\sf N\hspace*{-1.0ex}%
\rule{0.15ex}{1.3ex}\hspace*{1.0ex}}}
\newcommand{\Q}{{\sf Q\hspace*{-1.1ex}%
\rule{0.15ex}{1.5ex}\hspace*{1.1ex}}}
\newcommand{\C}{{\sf C\hspace*{-0.9ex}%
\rule{0.15ex}{1.3ex}\hspace*{0.9ex}}}
\newcommand{\openone}{\leavevmode\hbox{\small1\kern-2.8pt\normalsize1}}
která lze s úspěchem použít v případě, že okolní text je sázen cmr10.
Avšak, jelikož se nejedná o řádné matematické fonty, nelze je
užít v matematických indexech. Krom toho velikost a poloha vertikální
linky je ovlivněna výběrem fontu okolního textu (makra obsahují
ex).
Jak vysázím značku stupně v TeXu
Pomocí makra \degree definovaného takto:
\newcommand{\degree}[1][]{\ensuremath{{#1}^\circ}}
Jak vysázím „středoevropské“ uvozovky
Uvozovky v češtině, slovenštině, jakož i jiných středoevropských
jazycích, mají jiný tvar než anglické “”, které TeX sází
implicitně.
Nejjednodušší způsob, jak vysázet text v „našich“ uvozovkách, je
pomocí makra \uv: v~\uv{našich} uvozovkách.
Makro \uv je součástí balíků czech.sty a slovak.sty.
Lepším a obecnějším řešením je makro Tomáše Hály \uviq, které
dovoluje uvozované texty vnořovat. Toto makro je součástí distribuce
CSTeX.
Chci desetinnou čárku místo tečky
TeX implicitně předpokládá, že v zápisu desetinných čísel
odděluje desetiny od jednotek desetinná tečka.
Čárku zapsanou v matematickém módu TeX považuje za oddělovač položek
v posloupnostech, množinách apod., a proto za ni sází malou mezeru.
Chceme-li jednorázově vysázet desetinné číslo s desetinnou čárkou,
stačí čárku uzavřít do skupiny: $3{,}14159$.
Takové řešení je však nevýhodné pro texty, kde je desetinných čísel
mnoho. V takovém případě lze nastavit globálně, že za čárkou
v matematickém módu se mezera sázet nemá:
\mathcode`,="002C
$3,14159$
Pokud při tomto globálním nastavení přesto někde mezeru udělat
potřebujeme, musíme ji napsat explicitně:
$(m,\,n)$ nebo $\{0,\:1,\:2\}$.
Jiným řešením je ponechat ve vstupním souboru desetinné tečky,
ale přemapovat na čárky (to se hodí třeba tehdy, když máme velké soubory
desetinných čísel z jiných výstupů).
\mathcode`.="002C
$3.14159$
Snad nejjednoduchším řešením je použití balíku icomma. Balík
zajistí, že za čárkou nebude mezera sázena, pokud ji za čárku nenapíšete (jako
například u f(x, y)), jinak se za čárku vysází obvyklá malá mezera.
icomma.sty: distribuováno jako součást CTAN: was
Zalamovanie textových boxov
TeXovské/LaTeXovské boxy nemôžu byť pri bežnom použití zalamované. Keď raz
niečo vysádzate do boxu, zostane to tam a box bude prečnievať niektorý z okrajov
stránky (v prípade, že sa nezmestí do oblasti, kam má byť vysádzaný).
Ak chcete mať podstatnú časť textu orámovanú (alebo zafarbenú), obmedzenia
začínajú predstavovať skutočné bremeno. Našťastie sa problém dá obísť.
Balík framed poskytuje prostredia framed a shaded. Obe vkladajú
svoj obsah do niečoho, čo vyzerá ako orámovaný (alebo farebný) box, ale podľa
potreby sa na konci stránky láme. Prostrediam chýbajú poznámky pod čiarou,
marginpar, head-line položky a nebudú fungovať s balíkom multicol
alebo inými makrami na vyvažovania stĺpcov. Trieda memoir zahŕňa
funkcionalitu balíku framed.
Balík boites poskytuje prostredie breakbox. Príklady použitia
nájdete v distribúcii, README súbor obsahuje hutnú dokumentáciu.
Prostredia môžu byť vnorované a môžu sa objaviť v prostrediach multicols.
Plávajúce prostredia, poznámky pod čiarou a marginpar sa však stratia.
Pre používateľov plain TeXu môžu byť užitočné prostriedky balíku
backgrnd. Tento balík prinúti výstupnú rutinu poskytnúť vertikálne
čiary na označenie textu, makrá sú jasne označené a ukazujú, kde môžu byť
zavedené farebné pozadia (toto vyžaduje balík shade, ktorý
je distribuovaný ako TeXovské makrá a pre tieňovanie METAFONT nezávislý
na zariadení). Autor backgrnd tvrdí, že balík pracuje v prostredí
LaTeX 2.09, ale existujú dôvody domnievať sa, že pri práci s aktuálnym LaTeXom
môže byť nestabilný.
backgrnd.tex: CTAN: backgrnd
boites.sty: CTAN: boites
framed.sty: CTAN: framed
memoir.cls: CTAN: memoir
shade.tex: CTAN: shade
Realistické úvodzovky pre doslovné výpisy programov
Font cmtt má „okrúhle“ úvodzovky
, ktoré lahodia oku, ale nesúhlasia s tým, čo môžeme vidieť na modernom
termináli xterm.
Vzhľad je kritický vo výpisoch programov, hlavne shellovských skriptoch Unixu.
Balík upquote modifikuje chovanie prostredia verbatim tak, aby bol
výstup jasnejšou reprezentáciou toho, čo musí používateľ napísať (napr.
do skriptu).
upquote.sty: CTAN: upquote
Predefinovanie \the-príkazov počítadiel
Kedykoľvek požadujete od LaTeXu nové počítadlo, LaTeX vytvorí mnoho
„zákulisných“ príkazov ako aj počítadlo samotné.
\newcounter{fred} okrem iného vytvorí príkaz \thefred,
ktorý sa pri sádzaní expanduje na hodnotu počítadla „fred“.
Definícia \thefred by mala vyjadrovať hodnotu počítadla.
Je takmer vždy chybou používať príkaz na vytvorenie niečoho iného. Hodnota môže
byť rozumne vyjadrená ako arabské, rímske, prípadne grécke číslo, ako abecedný
výraz alebo dokonca ako postupnosť (alebo vzor) symbolov. Ak sa potrebujete
rozhodnúť, či príkaz \thefred predefinovať, zvážte, čo by
sa mohlo stať, ak sa tak rozhodnet učiniť.
Takže ak napríklad chcete, aby čísla sekcií boli ukončené bodkou, môžete upraviť
\thesection tak, aby sa expandoval s ukončovacou bodkou. Takáto zmena
\thesection však má vplyv na definúciu \thesubsection: budete musieť
predefinovať kopu iných vecí. Radšej použite štandardné techniky
na prispôsobenie a prezentáciu čísel sekcií (viď
Otázku Úprava prezentácie čísel sekcií).
Teraz predpokladajme, že chcete, aby číslo stránky bolo na konci každej stránky
obklopené pomlčkami („–nnn–“). Chcete to dosiahnuť
predefinovaním \thepage (všetky čísla stránok v obsahu budú pravdepodobne
rovnakého tvaru) alebo predefinovaním \pageref referencií? V tomto
prípade je najlepšie spraviť modifikáciu predefinovaním štýlu strany, napríklad
balíkom fancyhdr.
Formát obsahov, ...
Formát položiek obsahu je ovládaný niekoľkými internými príkazmi (spomínané
v sekcii 2.4 The LaTeX Companion — viď
Otázku Knihy o TeXu a příbuzná literatura). Príkazy \@pnumwidth,
\@tocrmarg a \@dotsep ovládajú priestor pre čísla strán,
odsadenie od praváho okraju a separáciu bodiek v bodkovaných vodiacich linkách.
Séria príkazov \l@xxx, kde xxx je meno nadpisu
sekcie (ako kapitola alebo sekcia, ...@), ovláda
rozvrhnutie príslušného nadpisu vrátane miesta pre číso sekcie. Všetky tieto
interné príkazy môžu byť individuálne predefinované, aby mali požadovaný efekt.
Balík tocloft poskytuje sadu príkazov používatelskej úrovne, ktoré
môžete použiť na zmenu formátovania obsahu. Kedže pre zoznamy obrázkov
a zoznamy tabuliek sú použité presne rovnaké mechanizmy, rozvrhnutie týchto
sekcií môžete ovládať rovnakým spôsobom.
Triedy KOMA-Script poskytujú voliteľne variantu štruktúry obsahu a počítajú
priestor potrebný pre čísla automaticky. Trieda memoir obsahuje funkcionalitu
tocloft.
sada KOMA script: CTAN: koma-script
memoir.cls: CTAN: memoir
tocloft.sty: CTAN: tocloft
Pekne číslované zoznamy
Balík enumerate vám dovoľuje kontrolovať zobrazenie počítadla
zoznamu. Balík pridáva prostrediu enumerate voliteľný paramater, ktorý sa
používa na špecifikáciu rozvrhnutia návestí. Parameter obsahuje typ číslovania
(`1' pre arabské číslice, `a' alebo `A' pre abecedné
„číslovanie“ a `i' alebo `I' pre rímske číslice)
a dekorácie číslovania. Takže napríklad
\usepackage{enumerate}
...
\begin{enumerate}[(a)]
\item ... ...
\end{enumerate}
začne zoznam, ktorého návestia sú (a), (b), (c), ..., zatiaľ čo
\usepackage{enumerate}
...
\begin{enumerate}[I/]
\item ... ...
\end{enumerate}
začne zoznam, ktorého návestia sú I/, II/, III/, ...
Balík paralist, ktorého hlavným účelom je
kompaktnosť zoznamov (viď Otázku Ako zredukovať medzery v zoznamoch), poskytuje rovnaké
prostriedky pre svoje prostredia podobné enumerate.
Ak potrebujete netradičný dizajn balík, enumitem vám poskytne
flexibilitu na vytvorenie vlastného. Hlúpy „rímsky“ príklad dosiahneme
nasledovne:
\usepackage{enumitem}
...
\begin{enumerate}[label=\Roman{*}/]
\item ... ...
\end{enumerate}
Všimnite si, že „*“ v hodnote kľúča značí počítadlo zoznamu
tejto úrovne. Môžete tiež manipulovať s formátom odkazov na návestia položiek
zoznamu:
\usepackage{enumitem}
...
\begin{enumerate}[label=\Roman{*}/,
ref=(\roman{*})]
\item ... ...
\end{enumerate}
aby formát odkazov na položky zoznamu vyzeral ako (i), (ii),
(iii) a tak ďalej.
Trieda memoir obsahuje funkcie, ktoré zodpovedajú funkciám v balíku
enumerate a obsahuje podobnú funkcionalitu aj pre zoznamy itemize.
enumerate.sty: distribuované ako súčasť CTAN: 2etools
enumitem.sty: distribuované ako súčasť CTAN: bezos
memoir.cls: CTAN: memoir
paralist.sty: CTAN: paralist
Ako zredukovať medzery v zoznamoch
Lamportova kniha (viď Otázku Knihy o TeXu a příbuzná literatura) udáva rozličné parametre pre
rozvrhnutie zoznamu (ako napríklad \topsep, \itemsep
a \parsep),
ale nespomína už, že sú nastavované automaticky v zozname samotnom. Funguje to
tak, že každý zoznam vykoná príkaz \@list (hĺbka sa
objavuje vo forme malých rímskych číslic). \@listi je naviac zvyčajne
resetované pri zmene veľkosti fontu. Výsledok je, že pre užívateľa je dosť
zložité kontrolovať medzery v zoznamoch (medzery medzi položkami zoznamu).
Správnym riešením je samozrejme používanie dokumentovej triedy navrhnutej
s miernejšími medzerami v zoznamoch, ale všetci vieme, že k takýmto
veciam sa ťažko dostať. Trieda memoir nebola navrhnutá pre kompaktnejšie
zoznamy, ale poskytuje kontrolu nad medzerami v zoznamoch.
Existujú balíky poskytujúce určitú kontrolu nad medzerami v zoznamov, málokedy
však adresujú oddelenie od okolitého textu (definované príkazom
\topsep).
Balík expdlist, spomedzi všetkých svojich ovládacích prvkov vzhľadu
description zoznamov poskytuje parameter kompaktnosti (viď dokumentáciu);
balík mdwlist poskytuje príkaz \makecompactlist pre uživateľské
definície zoznamov a používa ho na definície kompaktných zoznamov itemize*,
enumerate* a description*. V skutočnosti môžete celkom jednoducho
definovať podobné zoznamy — napríklad:
\newenvironment{itemize*}%
{\begin{itemize}%
\setlength{\itemsep}{0pt}%
\setlength{\parskip}{0pt}}%
{\end{itemize}}
Balík paralist poskytuje veľa prístupov pre kompaktnejšie zoznamy:
- jeho prostredie
asparaenum formátuje každú položku, ako keby to bol
odstavec zavedený počítadlovým návestím (čo v prípade, že texty položiek sú
dlhé, šetrí miesto),
- jeho prostredie
compactenum je rovnakým druhom kompaktného zoznamu
ako v expdlist a mdwlist, a
- jeho prostredie
inparaenum vytvára zoznam „v odstavci“, t.j. bez
zlomov medzi položkami, čo veľmi dobre šetrí miesto, ak sú texty položiek
krátke.
Balík manipuluje s návestiami svojho prostredia enumerate ako balík
enumerate (viď Otázku Pekne číslované zoznamy).
Paralist taktiež poskytuje ekvivalenty itemize (asparaitem,
...) a description (asparadesc, ...).
Maximum v kompaktnosti (každého druhu) je poskytované balíkom
savetrees, zahrnutá je aj kompaktnosť zoznamov. Hlavnou úlohou
balíku je šetrenie miestom na každom kroku: ak máte nejaké dizajnové
obmedzenia, nepoužívajte ho!
Balíky expdlist, mdwlist a paralist poskytujú
iné prostriedky konfigurácie zoznamov. Ak potrebujete niektorý z balíkov pre
inú konfiguráciu zoznamu než kompaktnosť, pravdepodobne by ste nemali skúšať
nižšie uvedené postupy.
Balík enumitem pre maximálnu flexibilitu (vrátane manipulácie
s \topsep) povoľuje prispôsobenie parametrov zoznamu pomocou formátu
„kľúč{=}“. Môžete teda napísať
\usepackage{enumitem}
...
\begin{enumerate}[topsep=0pt, partopsep=0pt]
\item ... ...
\end{enumerate}
čím potlačíte všetky medzery pod a nad vaším zoznamom. Enumitem tiež
dovoľuje manipulovať s formátom návestia (základnejším spôsobom ako balík
enumerate — Otázka Pekne číslované zoznamy).
enumerate.sty: distribuované ako súčasť CTAN: 2etools
enumitem.sty: distribuované ako súčasť CTAN: bezos
expdlist.sty: CTAN: expdlist
memoir.cls: CTAN: memoir
mdwlist.sty: distribuované ako súčasť CTAN: mdwtools
paralist.sty: CTAN: paralist
savetrees.sty: CTAN: savetrees
Prerušenie číslovaných zoznamov
Často je vhodné mať vysvetľujúci text mimo zoznamu, medzi za sebou idúcimi
položkami. V prípade itemize zoznamov to nie je problém, keďže neexistuje
nič, čo by odlíšilo za sebou idúce položky. V prípade description zoznamov sú
návestia položiek pod kontrolou užívateľa, takže automatická kontinuita
neexistuje.
Pri enumerate zoznamoch sú návestia generované automaticky a sú citlivé
na kontext, takže kontext (v tomto prípade je to stav počítadla) musí zostať
zachovaný.
Jedným z prístupov je zapamätať si stav číslovania do vlastnej premennej
a neskôr (pri pokračovaní číslovania) ho obnoviť:
\newcounter{saveenum}
...
\begin{enumerate}
...
\setcounter{saveenum}{\value{enumi}}
\end{enumerate}
\begin{enumerate}
\setcounter{enumi}{\value{saveenum}}
...
\end{enumerate}
Toto je rozumné v malých dávkach. Problémom (okrem „ukecanosti“ riešenia) je
správne nastavenie úrovne (
„mám použiť čítač enumi,
enumii, ...“) a zapamätanie si, že nemáme vnorovať prerušenia
(t.j. nemať ďalší zoznam, ktorý je ťiež prerušený) do vysvetľujúceho textu.
Balík mdwlist definuje príkazy \suspend a \resume, ktoré
proces zjednodušujú:
\begin{enumerate}
...
\suspend{enumerate}
\resume{enumerate}
...
\end{enumerate}
Balík povoľuje zadať voliteľný názov (ako pri \suspend[id]{enumerate}), aby
ste mohli identifikovať konkrétne prerušenie, a tým poskytuje možnosť
manipulovania s vnorenými prerušeniami.
Ak prerušujete pekne číslované zoznamy (viď Otázku Pekne číslované zoznamy),
musíte pri pokračovaní v zozname znovu dodať voliteľné parametre
„item label layout“ (položka, návestie, rozvrhnutie) vyžadované balíkom
enumerate, nezávisle na tom, ktorý z uvedených postupov ste použili.
Úloha je v prípade balíku mdwlist trochu zdĺhavá, keďže voliteľný
parameter musí byť celý zapuzdrený vo vnútri voliteľného parametru pre
\resume, čo vyžaduje zátvorky naviac:
\begin{enumerate}[\textbf{Item} i]
...
\suspend{enumerate}
\resume{enumerate}[{[\textbf{Item} i]}]
...
\end{enumerate}
enumerate.sty: distribuované ako súčasť CTAN: 2etools
mdwlist.sty: distribuované ako súčasť CTAN: mdwtools
Dizajn tabuliek
V poslených rokov množstvo autorov argumentovalo, že príklady vytvorené
Lamportom v jeho LaTeX manuálu (viď Otázku Knihy o TeXu a příbuzná literatura) obmedzovali štýl autorov
a viedli k extrémne úbohému dizajnu tabuliek. V skutočnosti je ťažke čo i len
zistiť, čo mnohé z príkladov Lamportovej knihy znamenajú.
Kritika sa zameriava na prehnané použitie liniek (horizontálnych aj vertikálnych)
a na slabé vertikálne odstupy poskytované Lamportovymi makrami.
Problém vertikálnych odstupov je hocikým jednoducho viditeľný a je riešený
v mnohých balíkoch — viď
Otázku Rozostupy riadkov v tabuľkách.
Argument týkajúci sa liniek je prezentovaný v skvelej eseji, ktorá tvorí
predslov dokumentácie balíku booktabs od Simona Feara.
Lamportov LaTeX neflexibilne trval na tom, že popisky majú byť na spodku
tabuľky. Kedže sa tabuľka môže rozprestierať na viacerých stranách, tradičná
typografia umiestňuje popisky navrch plávajúceho prostredia tabuľky. Príkaz
\caption bude mať zlú pozíciu (o 10pt), ak napíšete:
\begin{table}
\caption{Ukážková tabuľka}
\begin{tabular}{...}
...
\end{tabular}
\end{table}
Balík topcapt tento problém rieši:
\usepackage{topcaption}
...
\begin{table}
\topcaption{Ukážková tabuľka}
\begin{tabular}{...}
...
\end{tabular}
\end{table}
Triedy KOMA-script poskytujú podobný príkaz \captionabove, obsahujú tiež
voľbu triedy, ktorá zaistí, že v prostredí tabuliek \caption
znamená \captionabove.
Manuálny postup je celkom jednoduchý: topcapt prepne hodnoty
parametrov systému LaTeXe{} \abovecaptionskip (štandardne 10pt)
a \belowcaptionskip (štandardne 0pt), takže:
\begin{table}
\setlength{\abovecaptionskip}{0pt}
\setlength{\belowcaptionskip}{10pt}
\caption{Ukážková tabuľka}
\begin{tabular}{...}
...
\end{tabular}
\end{table}
spraví to, čo chceme. (Balík je sám o sebe mierne komplikovanejší...)
booktabs.sty: CTAN: booktabs
sada KOMA script: CTAN: koma-script
topcapt.sty: CTAN: topcapt
Tabuľky pevnej šírky
Existujú dva základné spôsoby na tvorbu tabuliek pevnej šírky v LaTeXu:
môžete roztiahnuť úseky (medzery) medzi stĺpcami, alebo môžete roztiahnuť určité bunky
tabuľky.
Základný LaTeX môže roztiahnuť medzery. Prostredie tabular* si vezme jeden
parameter navyše (pred parametrom rozvrhnutia clpr), ktorý akceptuje popis
dĺžky (môžete vložiť veci ako „15cm“ alebo „\columnwidth“).
V parametri rozloženia clpr musíte mať v direktíve @{} príkaz
\extracolsep. Príklad:
\begin{tabular*}{\columnwidth}{@{\extracolsep{\fill}}lllr}
\extracolsep je tiež použitý na všetky medzistĺpcové medzery napravo. Ak
nechcete roztiahnuť všetky medzery, pridajte \extracolsep{0pt}, čím zrušíte
pôvodné.
Balík tabularx definuje extra špecifikáciu clpr stĺpca, X.
Stĺpce X sa správajú ako p stĺpce, ktoré sa rozširujú, aby zabrali dostupné
miesto. Ak je v tabuľke prítomný viac než jeden X stĺpec, voľné miesto je
medzi tieto stĺpce rozdelené .
Balík tabulary (od rovnakého autora) poskytuje spôsob
„vyvažovania“ miesta zabraného stĺpcami tabuľky. Balík definuje
špecifikácie stĺpcov zdieľajúcich priestor C, L, R a J so zarovnaniami
na stred, vľavo, vpravo a zarovnaním na obe strany. Balík skúma, aký by bol
každý zo stĺpcov prirodzene dlhý (t.j. na papiery nekonečnej šírky) a alokuje
príslušné miesto pre každý stĺpec. Prítomné sú aj kontroly, ktoré dohliadajú
na to, aby veľké položky nespôsobili kolaps zvyšných stĺpcov (pre každý stĺpec
existuje maximálna šírka) a aby sa drobné veci nezmenšili pod špecifikovanú
hodnotu minima. Táto práca samozrejme znamená, že balík musí vysádzať každý
riadok niekoľkokrát, takže veci s vedľajšími efektami (napríklad čítač
produkujúci číslo riadku) sú nespoľahlivé a nemali by radšej byť používané.
ltxtable kombinuje vlastnosti balíkov longtable
a tabularx. Radšej si prečítajte dokumentáciu, pretože použitie
balíku je značne odlišné.
ltxtable.sty: distribuované ako súčasť CTAN: carlisle
tabularx.sty: distribuované ako súčasť CTAN: 2etools
tabulary.sty: distribuované ako súčasť CTAN: carlisle
Rozostupy riadkov v tabuľkách
TeXovské/LaTeXovské mechanizmy správy medzier medzi riadkami (tzv.
„leading“) sa spoliehajú na TeXovský algoritmus výstavby odstavcov, ktorý
porovnáva tvary za sebou idúcich riadkov a upravuje medzeru medzi nimi.
Tieto mechanizmy nemôžu pri vytváraní tabuľky fungovať rovnakým spôsobom,
pretože tvorba odstavcov samotné riadky nevidí. Výsledkom je, že tabuľky sú
občas vysádzané s riadkami nepríjemne blízko pri sebe (alebo občas aj veľmi
ďaleko).
Tradičný typograf by upravil medzeru medzi riadkami tabuľky
pomocou podpery („strut“; jedná sa o kovový oddelovač). Používateľ TeXu
môže spraviť presne to isté: väčšina balíkov makier definuje príkaz
\strut,
ktorý udáva vhodnú medzeru vzhľadom na aktuálnu veľkosť textu. Umiestnenie
príkazu \strut na koniec problémového riadku tabuľky je najjednoduchšie
riešenie problému (ak funguje). Ďalšie uvedené riešenia sú špecifické pre
LaTeX, ale niektoré sa dajú jednoducho preložiť na príkazy Plain TeXu.
Ak sa vo vašej tabuľke ukazuje systematický problém (t.j. každý riadok je
posunutý o rovnaký úsek) použite príkaz \extrarowheight definovaný balíkom
array:
\usepackage{array}% v preambule
...
\setlength{\extrarowheight}{length}
\begin{tabular}{....}
Na napravenie jediného riadku, ktorého zlé nastavenie príkaz \strut
neopravuje, môžete postupovať vlastnou definíciou pomocou
\rule{0pt}{length} — čo sa podobá definícii príkazu \strut.
Balík bigstrut definuje podobný príkaz, ktorý môžete na tento účel
použiť: \bigstrut sa sám odkryje nad aj pod aktuálnym riadkom,
\bigstrut[t] iba nad riadkom a \bigstrut[b] iba pod riadkom.
Dostupné sú však aj obecné riešenia. Balík tabls na konci každého
riadku tabuľky automaticky generuje podperu správnej veľkosti. Nevýhodou je
pomalosť (kedže stojí v ceste všetkému vo vnútri tabuľky) a (nedostatočná)
kompatibilita s inými balíkmi.
Balík booktabs obsahuje provokatívnu úvahu o tom, ako by mali byť
navrhované tabuľky. Kedže problém rozostupov riadkov v tabuľkách sa
najčastejšie objavuje pri kolíziách s čiarami, autorova myšlienka, že
používatelia LaTeXu majú vo zvyku veľmi často linkovať svoje tabuľky, je
zaujímavá. Balík na podporu autorovej schémy poskytuje linkovacie príkazy, ale
stará sa aj o medziriadkové medzery. Najnovšie vydania booktabs sa
pýšia kompatibilitou s balíkmi ako longtable.
Dokumentáciu bigstrut aj tabls môžete nájsť v podobe
komentárov v samotných súboroch týchto balíkov.
array.sty: distribuované ako súčasť CTAN: 2etools
bigstrut.sty: distribuované ako súčasť CTAN: multirow
booktabs.sty: CTAN: booktabs
tabls.sty: CTAN: tabls
Tabuľky dlhšie než jedna strana
Tabuľky sú štandardne sádzané do svojich vlastných boxov, čo má za následok, že
sa na hranici stránky nerozdelia. Bohužiaľ náš svet produkuje tabuľky dlhšie
než jedna strana a my ich potrebujeme vysádzať.
Pre jednoduché tabuľky (ktorých tvar je veľmi pravidelný) môže byť
najjednoduchším riešením prostredie tabbing, ktorého nastavenie je trochu
zdĺhavé, ale nevyžaduje všetko na jednu stranu.
Balík longtable v prvom behu vybuduje celú tabuľku (po kúskoch),
a potom použije informáciu, ktorú zapísal do .aux súboru, aby dostal správne
umiestnenie (obvykle sa mu to podarí v dvoch priechodoch). Kedže balík má
v čase konečného umiestňovania prehľad o celej tabuľke, tabuľka je vysádzaná
jednotne po celej svojej dĺžke (stĺpce na jednotlivých stranách si navzájom
zodpovedajú). O longtable je známe, že nespolupracuje s inými balíkmi,
spolupracuje však s balíkom colortbl. Autor poskytol balík
ltxtable, ktorý obsahuje väčšinu prostriedkov balíku
tabularx (viď
Otázku Tabuľky pevnej šírky) aj pre dlhé tabuľky: majte sa
na pozore pred zvláštnymi obmedzeniami jeho použitia — každá dlhá tabuľka by
mala byť vo vlastnom súbore a mala by byť vložená
\LTXtable{width}{file}.
Kedže viacstranové tabuľky balíku longtable nemôžu existovať vo vnútri
plávajúcich prostredí, poskytuje balík možnosti nadpisov v samotnom prostredí
longtable.
Zdanlivou alternatívou k ltxtable je ltablex. Je však
zastaralý a nie je úplne funkčný. Jeho najväčší problém je prísne obmedzená
kapacita pamäte (longtable nie je tak obmedzený, za čo platí
komplikovaným kódom). ltablex spracuje iba relatívne malé tabuľky, ale
jeho používateľské rozhranie je oveľa jednoduchšie ako u ltxtable,
takže ak pre vás obmedzenia nie sú problémom, môžete to skúsiť.
Balík supertabular začne a ukončí prostredie tabular prekaždú stranu
tabuľky. Výsledkom je, že každá „strana tabuľky“ sa skompiluje nezávisle
a šírky navzájom si zodpovedajúcich stĺpcov sa môžu lišiť. Ak však príslušnosť
stĺpcov nehrá úlohu alebo vaše stĺpce majú pevnú šírku, supertabular
má vo vašom prípade veľkú výhodu v tom, že veci spracuje v jednom priechode.
Longtable aj supertabular dovoľujú pre tabuľku definovať
nadpisy a poznámky pod čiarou. longtable odlišuje nadpisy a poznámky
pri prvej a poslednej časti.
Balík xtab opravuje niektoré neblahosti supertabular
a taktiež poskytuje prostriedok pre „posledný nadpis“ (hoci toto zruší výhodu
supertabular — spracovanie v jednom behu).
Balík stabular poskytuje jednoducho použiteľné rozšírenie prostredia
tabular, ktoré umožňuje sadzbu tabuliek bežiacich cez koniec strany. Balík
obsahuje aj rôzne užitočné rozširenia, ale neobsauje prostriedky nadpisov
a poznámok pod čiarou ako väčšie balíky.
Dokumentáciu ltablex môžete nájsť v súbore balíku.
longtable.sty: distribuované ako súčasť CTAN: 2etools
ltablex.sty: CTAN: ltablex
ltxtable.sty: z CTAN: ltxtable
stabular.sty: distribuované ako súčasť CTAN: sttools
supertabular.sty: CTAN: supertabular
xtab.sty: CTAN: xtab
Ako zmeniť zarovnanie buniek tabuľky
Často je potrebné zmeniť zarovnanie p (odstavcovej; „paragraph“)
bunky tabuľky, obvykle však nastávajú na konci konci riadku tabuľky problémy.
S takouto p bunkou:
... & \centering blah ... \\
sa ľahko stretnete s chybami sťažujúcimi sa na „misplaced \noalign“
(zle umiestnený \noalign), „extra alignment tab“ (zarovnávací
tabulátor navyše), prípadne na niečo podobné.
Problém je, že príkaz \bs\bs znamená rozličné veci za rozličných
okolností: prostredie tabular prepína jeho význam na hodnotu použiteľnú
v tabuľke, \centering, \raggedright a \raggedleft ju menia
na niečo nekompatibilné. Všimnite si, že problém vzniká iba v poslednej bunke
riadku: kedže každá bunka je sádzaná do boxu, jej nastavenia sa strácajú u
& (alebo \bs\bs), ktorý ho ukončuje.
Jednoduchým (starým) riešením je zachovanie významu \bs\bs:
\newcommand\PBS[1]{\let\temp=\\%
#1%
\let\\=\temp
}
čo použijete napríklad nasledovne:
... & \PBS\centering blah ... \\
Technika používajúca \PBS bola vyvinutá v dobe LaTeX 2.09, pretože skutočná
hodnota \bs\bs, ktorú používalo prostredie tabular, bola dostupná iba
ako interný príkaz. V súčasnosti je hodnota príkaz verejný a v princípe ju
môžete použiť explicitne:
... & \centering blah ... \tabularnewline
Toto môže byť zakomponované do jednoduchého makra:
\newcommand{\RBS}{\let\\=\tabularnewline}
...
... & \centering\RBS blah ... \\
Použitie:
... & \centering\RBS blah ... \\
(zapamätajte si, že spätné lomítko zachovávate s \PBS pred príkazom,
ktorý ju mení a obnovujete s \RBS po príkaze; \RBS je
v skutočnosti mierne preferovaný, ale starý trik tu zostáva).
Fígle \PBS a \RBS nám dobre slúžia tiež v špecifikáciach formátu poľa
(„field format“) v preambule pri balíku array:
\begin{tabular}{...>{\centering\RBS}%
p{50mm}}
...
alebo
\begin{tabular}{...>{\PBS\centering}%
p{50mm}}
...
array.sty: distribuované ako súčast CTAN: 2etools
Ako zmeniť celý riadok tabuľky
Každá bunka tabuľky je sádzaná do boxu, takže zmena štýlu fontu (prípadne
niečoho iného) platí iba po koniec bunky. Ak máte tabuľku s mnohými bunkami
alebo dlhú tabuľku, v ktorej potrebujete zvýrazniť množstvo riadkov, pridávanie
štýlu fontu do každej bunky bude veľmi zdĺhavé.
S balíkom array môžete definovať modifikátory stĺpcov, ktoré zmenia
štýl písma pre celý stĺpec. S trochou jemnosti môžete zmeniť
modifikátory tak, aby upravovali riadky namiesto stĺpcov. Postupujeme
nasledovne:
\usepackage{array}
\newcolumntype{$}{>{%
\global\let\currentrowstyle\relax}%
}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{%
\gdef\currentrowstyle{#1}%
#1\ignorespaces
}
Teraz pred prvý špecifikátor stĺpcu vložíme $ a ^ pred
modifikátory nasledujúcich. Potom použijeme \rowstyle na začiatku každého
riadku, ktorý chceme modifikovať:
\begin{tabular}{|$l|^l|^l|} \hline
\rowstyle{\bfseries}
Nadpis & Veľký a & Tučný \\ \hline
Text & text & text \\
Text & text & text \\
\rowstyle{\itshape}
Text & text & v~kurzíve \\
Text & text & text \\ \hline
\end{tabular}
Balík array funguje s rôznymi inými prostrediami typu tabular
z iných balíkov (napríklad longtable), tento trik však bohužiaľ nefunguje
vždy.
array.sty: distribuované ako súčasť CTAN: 2etools
Spájanie buniek v stĺpci tabuľky
Nie je ťažké vymyslieť dizajn tabuľky, ktorý bude vyžadovať, aby sa určitá bunka
rozprestierala na viacerých riadkoch. Príkladom môže byť tabuľka, v ktorej
najľavejší stĺpec označuje zbytok tabuľky. Toto môžete spraviť (v jednoduchých
prípadoch) použitím diagonálneho rozdelenia v rohových bunkách. Spomenutá
technika vás však prísne obmedzuje v tom, čo môže byť použité ako obsah bunky.
Balík multirow vám umožňuje vytvárať viacriadkové bunky veľmi
jednoducho. Pre najjednoduchšie použitie môžete napísať:
\begin{tabular}{|c|c|}
\hline
\multirow{4}*{Bežný text g}
& Stĺpec g2a\\
& Stĺpec g2b \\
& Stĺpec g2c \\
& Stĺpec g2d \\
\hline
\end{tabular}
a multirow umiestni „Bežný text g“ na vertikálny stred priestoru
definovaného ostatnými riadkami. Všimnite si, že riadky neobsahujúce
špecifikáciu „multi-row“ musia mať prázne bunky, v ktorých sa viacriadková
bunka objaví.
„*“ môžete nahradiť špecifikáciou šírky stĺpcu. Parameter v tomto prípade
môže obsahovať nepodmienené zlomy riadku:
\begin{tabular}{|c|c|}
\hline
\multirow{4}{25mm}{Bežný\\text g}
& Stĺpec g2a\\
& Stĺpec g2b \\
& Stĺpec g2c \\
& Stĺpec g2d \\
\hline
\end{tabular}
Podobný efekt (s možnosťou trochu väčšej sofistikovanosti) môžeme dosiahnuť
vložením menšej tabuľky, ktorá zoradí text, do *-deklarovaného
\multirow.
Príkaz \multirow môže byť použitý aj na písanie vertikálneho textu oboma
smermi (s pomocou balíkov graphics alebo graphicx, ktoré
poskytujú príkaz \rotatebox):
\begin{tabular}{|l|l|}
\hline
\multirow{4}*{\rotatebox{90}{ahoj}}
& Stĺpec g2a\\
& Stĺpec g2b \\
& Stĺpec g2c \\
& Stĺpec g2d \\
\hline
\end{tabular}
Takto dostanete text bežiaci nahor; pre opačný smer použite uhol -90.
Multirow je nastavený tak, aby spolupracoval s balíkom
bigstrut (ktorý je spomenutý v odpovedi
na Otázku Rozostupy riadkov v tabuľkách). Na vyjadrenie počtu
riadkov vo viacriadkovom prostredí, ktoré boli otvorené pomocou
\bigstrut,
použijete voliteľný parameter príkazu \multirow.
Dokumentácia multirow a bigstrut sa dá nájsť v súboroch
balíkov v podobe komentárov.
bigstrut.sty: súčasť CTAN: multirow
multirow.sty: CTAN: multirow
Plávajúce prostredia v prostredí multicolumn
Ak použijete
\begin{figure}
...
\end{figure}
v prostredí multicols, obrázok (figure) sa neobjaví. Ak namiesto toho
použijete
\begin{figure*}
...
\end{figure*}
obrázok sa roztiahne na šírku stránky (ako prostredie figure* v štandardnej
možnosti LaTeXu, twocolumn).
Pomocou umiestnenia „[H]“ zavedeného balíkom float môžeme mať
jednostĺpcové obrázky a tabuľky s popiskami. Možno sa však bude treba pohrať
s umiestnením, pretože nebudú „plávať“ a budú javiť iné zvláštne znaky
chovania (ako nenápadné „pretekanie“ mimo koniec stĺpca na konci prostredia
multicols).
float.sty: CTAN: float
multicol.sty: distribuované ako súčasť CTAN: 2etools
Vertikálne rozloženie strán obsahujúcich floaty
LaTeX štandardne centruje floaty na plávajúcej strane (floatovej) vertikálne;
nie sme sami, komu sa to nepáči. Ovládanie umiestnenia je bohužiaľ
„zakopané“ v interných príkazoch LaTeXu, takže pri zmene rozloženia je
nutná opatrnosť.
Plávajúce strany používajú tri LaTeXovské dĺžky (t.j. TeXovské skipy)
na definíciu svojho rozloženia:
od začiatku strany k začiatku prvého floatu,
floatmi,
od konca posledného floatu na strane ku koncu strany.
(Výstupná rutina v skutočnosti umiestňuje \@fpsep nad každý float, takže
\@fptop obvykle obsahuje opravu.)
LaTeXovské štandardy sú:
\@fptop = (0pt + 1fil) ensuremath{-} \@fpsep
\@fpsep = 8pt + 2fil
\@fpbot = 0pt + 1fil
takže medzery sa rozširujú, aby vyplnili priestor, ktorý nie je zabraný
floatami, ale ak je na strane viac než jeden float, medzera medzi nimi sa
rozšíri na dvojnásobok horného a spodného priestoru.
Najčastejšia potreba, aby floaty začínali na začiatku strany, sa dá jednoducho
uspokojiť:
\makeatletter
\setlength{\@fptop}{-\@fpsep}
\makeatother
Pamätajte si, že toto je „globálne“ nastavenie (najlepšie vykonané v súbore
triedy alebo prinajhoršom v preambule dokumentu). Zmena pre jediný float bude
pravdepodobne (prinajlepšom) celkom komplikovaná.
Nečíslované oddíly v obsahu
Nejjednodušším způsobem, jak vytvořit v obsahu položku pro takové zvláštní
části textu jako jsou například předmluvy, je užití čítače
secnumdepth, který je popsán v dodatku C manuálu LaTeXu.
Například:
\setcounter{secnumdepth}{-1}
\chapter{Předmluva}
Samozřejmě, že před opětovným použitím číslovaného oddílu
je potřeba nastavit parametr secnumdepth
zpět na jeho obvyklou hodnotu (ve standardních stylech 2).
Podobná nastavení jsou provedena automaticky v knižní třídě LaTeXu příkazy
\frontmatter a \backmatter.
Následuje vysvětlení.
Použije-li se \chapter bez hvězdičky:
- vloží se něco do
.toc souboru;
- je-li čítač
secnumdepth větší nebo roven nule,
zvětší se čítač kapitoly o jedničku a vysází se jeho hodnota.
- vysází se název kapitoly.
Ostatní příkazy na rozdělování textu
(\section, \subsection,...) pracují obdobně, avšak
testují jinou hodnotu.
Hodnota čítače tocdepth ovlivňuje, který nadpis bude vytištěn v obsahu.
Běžně se má jeho hodnota nastavit v preambuli dokumentu, pak je pro
celý dokument konstantní. Balík tocvsec2 nabízí celkem vyhovující
rozhraní umožňující měnit hodnotu čítače secnumdepth a/nebo tocdepth
kdekoliv v těle dokumentu. To nabízí docela slušnou nezávislou kontrolu
nad číslováním položek v obsahu.
Balík abstract (viz Otázku Jednosloupcový výtah v dvousloupcovém dokumentu) zahrnuje
volbu pro přidání abstraktu do obsahu, zatímco balík tocbibind
má volbu pro vložení
samotného obsahu, bibliografie, rejstříku atd. do obsahu.
tocvsec2: CTAN: tocvsec2
tocbibind: CTAN: tocbibind
Obsahy a iné veci po kapitolách
Častý štýl „malého“ obsahu pre každú časť, kapitolu alebo dokonca sekciu
je podporovaný balíkom minitoc. Balík podporuje tiež mini-zoznamy
tabuliek a obrázkov; ale mini-bibliografie sú (čo si všíma aj dokumentácia)
iným problémom — viď Otázku Lze zpracovat bibliografii pro každou kapitolu zvlášť.
Základný princíp balíku spočíva v generovaní malého .aux súboru pre každú
kapitolu a jeho spracovaní v kapitole. Jednoduché použitie môže byť:
\usepackage{minitoc}
...
\begin{document}
...
\tableofcontents
\dominitoc \listoffigures \dominilof ...
\chapter{blah blah}
\minitoc \mtcskip \minilof ...
hoci je možných veľa možností rozvíjania (napríklad \minitoc pre každú
kapitolu nie je potrebné).
Babel minitoc nepozná, ale minitoc sa stará aj
o dokumenty v iných jazykoch než v angličtine — dostupný je široký výber.
Aktuálne verzie balíku hyperref však s \minitoc zaobchádzajú
ako so „skutočnými“ obsahmi.
Dokumentácia je dosť rozsiahla a celko dobre čitateľná: spracujte súbor
distribúcie minitoc.tex.
babel.sty: CTAN: babel
hyperref.sty: CTAN: hyperref
minitoc.sty: CTAN: minitoc
Viacnásobné indexy
Štandardné indexovacie schopnosti LaTeXu (tie, čo sú poskytované balíkom
makeidx) umožňujú mať vo vašom dokumente iba jeden index. Dokonca aj
neveľké dokumenty môžu byť vylepšené samostatnými indexami pre rozdielne témy.
Balík multind poskytuje jednoduché a priamočiare viacnásobné
indexovanie. Označkujete každý príkaz \makeindex, \index
a \printindex názvom súboru a indexovacie príkazy sú zapísané do (alebo
čítané z) príslušného mena súboru s pripojenou zodpovedajúcou príponou
(.idx alebo .ind). Príkaz \printindex je modifikovaný
oproti štandardnej verzii z LaTeXu tak, aby nevytváral vlastný názov kapitoly
alebo sekcie, vy rozhodujete, aké názvy (alebo dokonca úrovene sekcií) sa
použijú, \indexname je úplne ignorované (viď Otázku Změna slov používaných LaTeXem).
Na vytvorenie „obecného“ indexu a indexu „autorov“ môžete napísať:
\usepackage{multind}
\makeindex{general}
\makeindex{authors}
...
\index{authors}{Robin Fairbairns}
...
\index{general}{FAQs}
...
\printindex{general}{Obecný index}
\printindex{authors}{Index autorov}
Pre dokončenie úlohy spustite LaTeX na vašom súbore dostatočne mnohokrát, aby
návestia a iné veci boli stabilné, a potom spustite príkazy
makeindex general
makeindex authors
pred ďalším spustením LaTeXu. Všimnite si, že názvy indexových súborov,
ktoré sa spracúvajú, nemusia mať žiadny vzťah k názvu LaTeXovského súboru,
ktorý spracúvame. (K balíku sa nedodáva žiadna dokumentácia. Lepší popis, než
vidíte hore, nedostanete.)
Balík index poskytuje rozsiahlu sadu indexovacích prostriedkov,
vrátane príkazu \newindex, ktorý dovoľuje definíciu nových štýlov indexu.
\newindex si vezme „značku“ (pre použitie v indexovacích príkazoch),
náhrady za prípony súborov .idx a .ind a názov indexu.
Môže tiež zmeniť položku, voči ktorej sa indexuje (môžete mať napríklad index
umelcov referencovaných čislami obrázkov, na ktorých sú ukážky ich práce).
Pre použitie balíku index na vytvorenie indexu autorov spolu
s „normálnym“ indexom, začnite príkazmi v preambule:
\usepackage{index}
\makeindex
\newindex{aut}{adx}{and}{Index mien}
Príkazy nahrajú balík, definujú a „hlavný“ index (pôvodný štýl) a následne
definujú index autorov. V tele dokumentu môžeme nájsť príkazy ako:
\index[aut]{Robin Fairbairns}
...
\index{FAQs}
Príkazy uložia záznam do indexu autorov, potom záznam do hlavného indexu.
Na konci dokumentu máme dva príkazy:
\printindex
\printindex[aut]
Tieto vytlačia hlavný index, a potom index autorov. Za predpokladu, že sa
príkazy budú nachádzať v súbore myfile.tex, spustite po dostatočnom
množstve behov LaTeXu, aby boli návestia stabilné, nasledujúce príkazy
(tu sú ukázané shellovské príkazy z Unixu, ale princíp je rovnaký nezávisle
na použitom systéme):
makeindex myfile
makeindex myfile.adx -o myfile.and
Potom znovu spustite LaTeX. Príkazy makeindex spracujú
myfile.idx do myfile.ind (štandardná akcia), a potom
myfile.adx do myfile.and. Tie dva súbory sú potrebné ako vstup pre
dva príkazy \printindex v súbore myfile.tex.
Balík splitidx môže pracovať rovnakým spôsobom ako ostatné: nahrajte
balík s voľbou split a deklarujte každý index príkazom \newindex:
\newindex[]{}
a splitidx vygeneruje súbor \jobname. pre
položky indexu generované príkazmi ako \sindex[]{}.
Ako pri ostatných balíkoch, aj tu je táto metóda limitovaná celkovým počtom
výstupných súborov TeXu. splitindex je však dodávaný s malým
spustiteľným súborom splitindex (dostupný pre množstvo operačných
systémov). Ak tento doplnkový program použijete (a nepoužijete voľbu split),
nebudete limitovaní počtom indexov. Okrem tohto triku podporuje
splitidx rovnaké veci ako index. Príklad použitia nájdete
v dokumentácii.
Trieda memoir má vlastné funkcie pre viacnásobné indexy (ako aj voľby
rozvrhnutia indexu, ktoré ostatné balíky delegujú na indexové štýly používané
programom makeindex).
index.sty: CTAN: index
makeidx.sty: súčasť distribúcie LaTeXu
memoir.cls: CTAN: memoir
multind.sty: CTAN: multind
splitidx.sty a splitindex: CTAN: splitindex
Odkazovanie na veci podľa mena
LaTeXovský mechanizmus návestí je navrhnutý pre neosobný svet akademických
publikácií, v ktorých všetko má číslo. Ak si máme zaznamenať názvy vecí,
ktorým sme priradili návestie, je potrebné rozšírenie. Sú dostupné dva balíky
rozširujúce príkazy LaTeXu na tvorbu sekcií, aby poskytli možnosť odkazovania
názvom sekcie.
Balík titleref je jednoduchým rozšírením poskytujúcim príkaz
\titleref. Je to samostatný balík — nepoužívajte ho v dokumente, v ktorom
potrebujete aj hyperref.
Balík byname, hoci pracuje so svojím „priateľom“
smartref, funguje (do určitej miery) s balíkom hyperref, ale
odkazy, ktoré definuje, nie sú hyperlinky.
Trieda memoir zahŕňa funkcionalitu titleref, ale zrejme nefunguje
s byname (i keď hľadaním v Newsgroup{comp.text.tex}
na http://groups.google.com/ nájdete úpravu byname
na vyriešenie problému).
Sada hyperref obsahuje balík nameref, ktorý funguje
samostatne (t.j. bez hyperref: v tomto móde, samozrejme, nie sú jeho
odkazy hyperlinkované). Ak nahráte samotný hyperref,
nameref sa nahrá automaticky.
Memoir vyžaduje memhfixc pri behu s hyperref. Avšak
po uvedenej postupnosti príkazov môžu byť nameref príkazy použité
v memoir dokumente:
\documentclass[...]{memoir}
...
\usepackage[...]{hyperref}
\usepackage{memhfixc}
Všetky tri balíky pre odkazy podľa mena definujú odkazovacie príkazy rovnakého
názvu ako balík: \titleref, \byname a \nameref. Balík
nameref tiež definuje príkaz \byshortnameref, ktorý používa
voliteľný „krátky“ parameter nadpisu pre príkazy kapitol a sekcií.
byname.sty: distribuovaný s CTAN: smartref
hyperref.sty: CTAN: hyperref
memoir.cls: CTAN: memoir
nameref.sty: distribuovaný s CTAN: hyperref
smartref.sty: CTAN: smartref
titleref.sty: CTAN: titleref
Odkazovanie na návestia v iných dokumentoch
Pri tvorbe sady vzájomne súvisiacich dokumentov sa budete často chcieť odkazovať
na návestia v druhých dokumentoch sady, ale samostatný LaTeX toto nepovoľuje.
Z toho dôvodu bol napísaný balík xr: ak napíšete
\usepackage{xr}
\externaldocument{volume1}
do vášho súčasného dokumentu nahrajú sa všetky odkazy z volume1.
Čo však v prípade, že majú oba dokumenty sekciu s návestím „introduction“
(úvod; je to celkom pravdepodobné)? Balík poskytuje prostriedky
na transformáciu všetkých importovaných návestí, takže ich nemusíte meniť
v žiadnom dokumente. Napríklad:
\usepackage{xr}
\externaldocument[V1-]{volume1}
nahrá odkazy zo súboru volume1, ale pred každý vloží predponu
V1-. Takže na úvod v dokumente „volume 1“ by ste sa odkazovali:
\usepackage{xr}
\externaldocument[V1-]{volume1}
...
... úvod dokumentu volume1
(\ref{V1-introduction})...
Aby prostriedky xr fungovali s balíkom hyperref, potrebujete
balík xr-hyper. Pre jednoduché krížové hyperodkazy (t.j. na lokálny
PDF súbor, ktorý ste práve skompilovali) napíšte:
\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument[V1-]{volume1}
...
... the \nameref{V1-introduction})...
a pomenovaný odkaz sa objaví ako aktívny link na kapitolu „úvod“ súboru
volume1.pdf.
Pre link na PDF dokument na webe, pre ktorý máte .aux súbor, napíšte:
\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument[V1-]{volume1}%
[http://mybook.com/volume1.pdf]
...
... the \nameref{V1-introduction})...
xr.sty: distribuované ako súčasť CTAN: 2etools
xr-hyper.sty: distribuované s CTAN: hyperref
Automatická veľkosť minipage
Prostredie minipage vyžaduje, aby ste špecifikovali šírku „stránky“, ktorú
chcete vytvoriť. Toto je občas nepohodlné: chceli by ste (ak je to možné)
zabrať menej miesta, ale minipage vytvorí box presne podľa špecifikovanej
šírky.
Balík pbox definuje \pbox, ktorého šírka je presne šírkou
najdlhšieho obsiahnutého riadku (závislé od maximálnej širky, ktorú zadáte).
Takže kým \parbox{2cm}{Hello\\world!} vytvotí box šírky presne 2cm,
\pbox{2cm}{Hello\\world!} vytvorí box so šírkou 1.79cm (ak
používate štandardný font cmr). Balík poskytuje aj
\settominwidth[min]{length}{text} (čo vyzerá takmer ako štandardný príkaz
\settowidth) a \widthofpbox funkčne analogické príkazu
\widthof
pre použitie s balíkom calc.
Balík eqparbox myšlienku balíku pbox rozširuje tak, že vám
dovoľuje vysádzať sériu boxov s rovnakou (minimalizovanou) šírkou. (Príkaz
neprijíma parameter limitujúci maximálnu šírku.) Dokumentácia balíku ukazuje
nasledujúci príklad z humorného životopisu:
\noindent%
\eqparbox{place}%
{\textbf{Widgets, Inc.}}
\hfill
\eqparbox{title}%
{\textbf{Senior Widget Designer}}
\hfill
\eqparbox{dates}{\textbf{1/95--present}}
...
\noindent%
\eqparbox{place}%
{\textbf{Thingamabobs, Ltd.}}
\hfill
\eqparbox{title}%
{\textbf{Lead Engineer}}
\hfill
\eqparbox{dates}{\textbf{9/92--12/94}}
Kód zabezpečí, že všetky tri položky majú rovnakú šírku, takže riadky vyzerajú
pravidelne. Príkaz \eqboxwidth vám dovoľuje použiť zmeranú šírku skupiny:
dokumentácia ukazuje, ako môže byť príkaz použitý na vytvorenie rozumne
vyzerajúcich stĺpcov miešajúcich riadky c, r alebo
l, s ekvivalentnou položkou p{...} tým, že z riadkov s pevnou šírkou
spravíte skupinu eqparbox a nakoniec použijete \parbox so šírkou,
ktorá bola pre skupinu zmeraná.
Balík varwidth definuje prostredie varwidth, ktoré sádza obsah boxu
tak, aby zodpovedal „užšej prirodzenej šírke“, ak nejakú nájde.
(Poskytujete rovnaké parametre ako pri minipage.) Varwidth
poskytuje svoj vlastný príkaz \narrowragged, ktorého úlohou je zúžiť
riadky a dostať viac textu do posledného riadku odstavcu (teda vytvorenie
riadkov s väčšou mierou zhody dĺžky riadkov, než je to typicky pri
\raggedright).
Dokumentácia (v samotnom súbore balíku) vypisuje rozličné reštrikcie a veci,
ktoré je ešte treba spraviť, ale balík sa ukázal ako užitočný pre rozličné
úlohy.
eqparbox.sty: CTAN: eqparbox
pbox.sty: CTAN: pbox
varwidth.sty: CTAN: varwidth
Poznámky pod čarou v tabulkách
Standardní LaTeXový příkaz \footnote neumí pracovat v prostředí
tabulek. Toto prostředí totiž poznámkám neumožní „uniknout“ až na
konec stránky. Pokud je tabulka plovoucí, nejlepší řešení je
umístit tabulku do prostředí minipage a umístit pak poznámky na spodní
okraj stránky nebo použít balík threeparttable
od Donalda Arsenaua.
Balík ctable rozšiřuje model threeparttable a taktéž
používá
myšlenky balíku booktabs. Příkaz \ctable dělá všechnu práci:
sázení tabulky, umístnění popisků a definování poznámek. „Tabulka“ může
obsahovat diagramy a volitelný parametr \ctable udělá vytvořený float
obrázkem místo tabulky.
Pokud není tabulka plovoucí, pak můžete použít jednu z možností:
- Pomocí
\footnotemark můžete vhodně umístit do textu značku
poznámky před ukončením prostředí tabular vložte příkaz
\footnotetext. Tento
způsob je popsán v Lamportově knize, můžete však použít pouze jednu
poznámku.
- Vložte tabulku do prostředí
minipage. To vám umožňuje použít
všechny vlastnosti poznámek bez většího úsilí.
- Použijte
threeparttable.
Balík je sice vytvořen pro plovoucí tabulky, ale můžete ho použít i v tomto
případě.
- Použijte
tabularx nebo longtable.
Klasické poznámky sice zvládá
o poznání hůře než prostředí tabular, avšak povoluje poznámky pod čarou.
- Stáhněte balík footnote.
Pak vložte vaši
tabulku do prostředí
savenotes. Alternativně můžete do preambule
dokumentu napsat \makesavenoteenv{tabular} a tabulka zvládne poznámky
pod čarou korektně.
- Použijte mdwtab ze stejného adresáře. Ten umí nejen
správně zvládat poznámky pod čarou, ale navíc ještě umí vaši tabulku
zkrášlit. Ten však může být nekompatibilní s jinými balíky.
Dokumentace threeparttable je obsažena v souboru balíku samém,
dokumentace ctable je distribuována jako PDF soubor.
threeparttable: CTAN: threeparttable
longtable: CTAN: 2etools
footnote: CTAN: mdwtools
Štýly popiskov
Zmeny štýlov popiskov môžete spraviť opätovnou definíciou príkazov, ktoré
popisky vytvárajú. Takže napríklad \fnum@figure môže byť predefinovaný
vo vašom vlastnom balíku alebo medzi
viď Otázku \@ a @ ve jménech maker
:
\renewcommand{\fnum@figure}%
{\textbf{Fig.~\thefigure}}
čo spôsobí, že číslo bude vysádzané tučné. (Všimnite si, že v pôvodnej
definícii bolo použité
viď Otázku Změna slov používaných LaTeXem.) Prepracovanejších zmien môžeme dosiahnuť
úpravou príkazu \caption, kedže však na túto prácu neexistujú balíky, nie sú
takéto zmeny (ktoré môžu byť dosť náročné) odporúčané bežných používateľom.
Balík float poskytuje určitú konkrolu na vzhľadom popiskov, aj keď je
určený hlavne na vytváranie neštandardných floatov (plávajúcich tabuliek
a obrázkov). Balíky caption a ccaption (všimnite si násobné
'c') poskytujú rôzne formátovacie možnosti.
ccaption poskytuje „predĺžené“ popisky a popisky, ktoré môžete
umiestniť mimo prostredí float. Balík capt-of povoľuje taktiež popisky
mimo prostredia float. Pri zaobchádzaní s vecami predpokladajúcimi postupnosť
floatov (ako v predĺžených popiskoch), alebo prípadným miešaním neplávajúcich
popiskov s plávajúcimi, je potrebné dbať na opatrnosť.
Trieda memoir zahŕňa možnosti balíku ccaption. Triedy
KOMA-script tiež poskytujú široký rozsah príkazov na formátovanie popiskov.
Dokumentácia caption je dostupná po spracovaní súboru
manual.tex vytvoreného pri rozbalovaní caption.dtx.
V minulosti odporúčaný balík caption2 bol znovu prevzatý balíkom
caption. caption2 však zostáva dostupný pre staršie
dokumenty.
caption.sty: CTAN: caption
capt-of.sty: CTAN: capt-of
ccaption.sty: CTAN: ccaption
float.sty: CTAN: float
balík KOMA script: CTAN: koma-script
memoir.cls: CTAN: memoir
Štýly nadpisov dokumentov
Balík titling poskutuje mnoho prostriedkov umožňujúcich manipuláciu
so vzhľadom príkazu \maketitle (vrátane \thanks atď.). Balík definuje
prostredie titlingpage, ktoré je konfigurovateľné. Poskytuje niečo medzi
voľbou titlepage štandardných tried a prostredím titlepage.
titling.sty: CTAN: titling
Vzhled nadpisů
Předpokládejme, že editor našeho oblíbeného časopisu vyžaduje,
aby nadpisy oddílů byly centrované a vysázené kapitálkami a pododdíly
byly zarovnány vpravo a vysázeny kurzívou. Nechce se nám však zaplétat do
takového druhu programování jaký je popsán v The LaTeX Companion
(viz Knihy o TeXu a příbuzná literatura;
\@ a @ ve jménech maker samotné je diskutováno pod `@').
Následující trik pravděpodobně editory uspokojí.
Nově definované příkazy \ssection a \ssubsection:
\newcommand{\ssection}[1]{%
\section[#1]{\centering\textsc{#1}}}
\newcommand{\ssubsection}[1]{%
\subsection[#1]{\raggedright\textit{#1}}}
se pak použijí namísto obvyklých \section a \subsection.
Není to však nejhezčí řešení. Čísla v nadpisech oddílů
zůstávají vysázena tučně a hvězdičkovaná forma příkazů musí
být předefinována zvlášť.
Uvedené definice nebudou správně fungovat
v případě, že se použije
Makro NFSS (The New Font Selection Scheme) mimo LaTeX 2e (nový standard LaTeXu),
jelikož v takovém případě se příkazy měnící typ písma chovají odlišně.
Balík sectsty nabízí jednoduše
použitelnou sadu příkazů pro tuto práci, zatímco balík
titlesec umožňuje pokročilejší řešení
této problematiky. (Balík titletoc je používán pro úpravu
formátu celého obsahu.)
Záhlaví příkazů \chapter a \part jsou vytvářena jiným
mechanismem, balík sectsty umí zacházet s oběma, zatímco
titlesec
umí upravit pouze \chapter. Balík
CTAN: fncychap nabízí širokou
škálu předem definovaných designů nadpisů kapitol.
Balík fncychap poskytuje pěknou kolekci upravených nadpisů kapitol.
Balík anonchap poskytuje jednoduché nástroje pro sazbu nadpisů kapitol
„jako nadpisů kapitol“ (tedy bez části „Kapitola“). Balík
tocbibind poskytuje stejné příkazy, avšak za účelem dosažení jiného
cíle. fncychap bohužel není sladěný s přítomností front a backmatter
v dokumentech třídy book.
sectsty: CTAN: sectsty
titlesec: CTAN: titlesec
titletoc: CTAN: titlesec
Prílohy
LaTeX poskytuje výnimočne jednoduchý mechanizmus príloh: príkaz \appendix
prepína dokument zo stavu generovania sekcií (v triede article) alebo kapitol
(v triedach report a book) do stavu produkovania príloh. Číslovanie sekcie
alebo kapitoly je reštartované a reprezentácia počítadla sa prepne do abecedného
módu. Takže:
\section{Moja inšpirácia}
...
\section{Rozvíjanie inšpirácie}
...
\appendix
\section{Ako ma kopla múza}
...
sa vysádza (v dokumente triedy article) nasledovne:
textbf{1 Moja inšpirácia}
...
textbf{2 Rozvíjanie inšpirácie}
...
textbf{A Ako ma kopla múza}
...
čo je väčšinou dostačujúce. Všimnite si, že po tom, čo ste zapli sádzanie
príloh, LaTeX vám neumožňuje cestu späť — po prílohe nemôže nasledovať
normálna sekcia (\section) alebo kapitola (\chapter).
Balík appendix poskytuje viacero spôsobov ako túto jednoduchú situáciu
spracovať. Priame použitie balíku vám dovoľuje mať oddelené nadpisy v tele
dokumentu a obsahu. Dosiahnete to pomocou
\usepackage{appendix}
...
\appendix
\appendixpage
\addappheadtotoc
Príkaz \appendixpage pridáva nad prvú prílohu oddelený nadpis
„Appendices“ (prílohy) a príkaz \addappheadtotoc pridáva podobný nadpis
do obsahu. Tieto jednoduché modifikácie pokrývajú potreby mnohých ľudí týkajúce
sa príloh.
Balík tiež poskytuje prostredie appendices, ktoré poskytuje pestrejšie
využitie Prostredie sa najlepšie ovláda voľbami balíku. Hore vedený príklad
by sme dosiahli takto:
\usepackage[toc,page]{appendix}
...
\begin{appendices}
...
\end{appendices}
Skvelé je, že keď prostredie appendices skončí, môžete v sekciách a kapitolách
pokračovať ako predtým — číslovanie nie je ovplyvnené.
Balík poskytuje aj ďalšiu možnosť sádzania príloh — vo forme podriadených
úsekov v dokumente. Prostredie subappendices dovoľuje vkladať prílohy pre
konkrétnu sekciu oddelene (použíte \subsection pre sekcie, alebo
\section pre kapitoly). Môžete teda napísať:
\usepackage{appendix}
...
\section{Moja inšpirácia}
...
\begin{subappendices}
\subsection{Ako ma kopla múza}
...
\end{subappendices}
\section{Rozvíjanie inšpirácie}
...
Výsledkom bude niečo podobné:
textbf{1 Moja inšpirácia}
...
textbf{1.A Ako ma kopla múza}
...
textbf{2 Rozvíjanie inšpirácie}
...
S balíkom sa dá robiť ešte veľa zaujímavých vecí, pre detaili sú užívatelia
odkazovaný na dokumentáciu.
Trieda memoir obsahuje možnosti balíku appendix. Triedy
KOMA-script poskytujú príkaz \appendixprefix na manipuláciu so vzhľadom
príloh.
appendix.sty: CTAN: appendix
balík KOMA script: CTAN: koma-script
memoir.cls: CTAN: memoir
Široké obrázky v dvojstĺpcových dokumentoch
Plávajúce obrázky a tabuľky obyčajne vychádzajú v rovnakej šírke ako stránka,
ale v dvojstĺpcových dokumentoch sú obmedzené šírkou stĺpca. Toto ale občas
nie je dostačujúce, takže existujú alternatívne verzie prostredí float —
v dvojstĺpcových dokumentoch poskytuje figure* plávajúci obrázok šírky stránky
(a table* tabuľku šírky stránky), ktorý sa postará o všetko potrebné.
Hviezdičkové plávajúce (float) prostredia sa môžu objaviť iba na vrchu stránky
alebo na celej stránke — direktívy float rozloženia h alebo b sú
jednoducho ignorované.
Rovnice šírky celej strany môžu byť bohužiaľ prispôsobené iba vnútru float
prostredí. Mali by ste ich zahŕňať do prostredí figure, alebo používať balík
float, prípadne ccaption na definíciu nového typu floatu.
ccaption.sty: CTAN: ccaption
float.sty: CTAN: float
Odsazení odstavce po nadpisu
LaTeX používá stylů, jež neodsazují první odstavec za nadpisem.
Je mnoho důvodů proč tomu tak je, ale ne každému to vyhovuje
(např. to neodpovídá tradicím české typografie).
Užijeme-li styl
indentfirst.sty
(CTAN: 2etools),
pak se tento mechanismus potlačí, takže první odstavec bude odsazen.
Poznámky v LaTeXových nadpisech
Umístění příkazu \footnote v argumentu příkazu \section není
dostačující.
Jelikož jsou argumenty příkazu \section používány v obsahu a potenciálně
i v záhlaví stránky, není použití \protect\footnote také dobrý nápad.
Bohužel neexistuje rozumný způsob, jak zamezit zobrazování těchto
poznámek v záhlaví při povolení zobrazování v obsahu. K jejich potlačení musíte
udělat toto:
- Využijte toho, že povinné argumentu nejsou volány, pokud se zde
vyskytují volitelné:
\section[title]{title\footnote{title ftnt}}
- Použijte balík CTAN: footmisc
s volbou balíku
stable – ten upraví poznámky pod čarou tak, že lehce
a tiše zmizí, pokud jsou použité jako nepovinné argumenty.
Poznámky v popiskoch
Poznámky v popiskoch sú obzvlášť komplikované: predstavujú samostatný problém
(navyše k problémom
poznámok v nadpisoch a tabuľkách spomínaných v predchádzajúcich otázkach).
Takže okrem používania voliteľného parametru príkazu \caption (alebo
podobného), aby sme sa vyhli migrácii poznámky do Zoznamu ... (List of
...), a vloženia objektu, ktorého popisky obsahujú poznámku, do minipage,
musíme naviac čeliť tendencii príkazu \caption vytvárať text
poznámky dvakrát. Pre tento posledný problém neexistuje čisté riešenie, ktorého
by si bol autor vedomý. Ak týmto problémom trpíte, dobre vytvorený príkaz
\caption v prostredí minipage vo vnútri floatu ako:
\begin{figure}
\begin{minipage}{\textwidth}
...
\caption[Popisky pre LOF]%
{Skutočné popisky\footnote{blah}}
\end{minipage}
\end{figure}
môže vytvoriť dve kópie tela poznámky „blah“. (Efekt sa objavuje
pri popiskoch, ktoré sú dosť dlhé, aby na sadzbu vyžadovali dva riadky, a teda
pri takom krátkom popisku by sa neobjavil.) Dokumentácia balíku
ccaption popisuje skutočne strašný spôsob, ako problém obísť.
ccaption.sty: CTAN: ccaption
Poznámky s rovnakým textom
Ak sa rovnaká poznámka objaví na rozličných miestach v dokumente, je
často nevhodné opakovať celú poznámku znovu. Opakovaniu sa môžeme vyhnúť
poloautomatickou cestou alebo jednoduchým označovaním poznámok, o ktorých
vieme, že ich budeme opakovať, a následným odkazovaním na výsledok. Plne
autmatické riešenie (také, čo detekuje a potláča) neexistuje.
Ak viete, že budete mať iba jednu opakovanú poznámku, riešenie je jednoduché:
iba použite voliteľný parameter \footnotemark na zdôraznenie opakovania:
...\footnote{Opakujúca sa poznámka}
...
...\footnotemark[1]
...@ čo je veľmi jednoduché, kedže vieme, že bude existovať iba poznámka
čislo 1. Podobná technika môže byť použitá, keď už sú poznámky stabilné,
použijete číslo, ktoré LaTeX alokoval. Toto však môže byť únavné, kedže
ľubovolná zmena sadzby by mohla zmeniť vzťahy medzi poznámkou a opakovaním:
značkovanie je nevyhnuteľne lepšie.
Môžeme použiť jednoduché ručné značkovanie poznámok pomocou dedikovaného
počítadla:
\newcounter{fnnumber}
...
...\footnote{Opakovaný text}%
\setcounter{fnnumber}{\thefootnote}%
...
...\footnotemark[\thefnnumber]
Je to ale trochu zdĺhavé. Na pomoc si môžeme privolať značkovacie mechanizmy
LaTeXu, ale pred vyhodnotením \ref počas druhého priebehu LaTeXom
sa objavujú nepekné chybové hlásenia:
...\footnote{Opakovaný text\label{fn:repeat}}
...
...\footnotemark[\ref{fn:repeat}]
Alternatívne môžete použiť príkaz \footref, ktorého výhodou je schopnosť
fungovať, dokonca aj keď nie je značka poznámky vyjadrená ako číslo. Príkaz je
definovaný v balíku footmisc a v triede memoir (prinajmenšom).
\footref zredukuje predchádzajúci príklad na:
...\footnote{Opakovaný text\label{fn:repeat}}
...
...\footref{fn:repeat}
Toto je najčistejšie riešenie. Všimnite si, že príkaz \label musí
byť vo vnútri parametru \footnote.
Balík fixfoot nám to trochu uľahčuje: pomocou príkazu
\DeclareFixedFoot deklarujete poznámky (typicky v prambule dokumentu),
ktoré budete opakovať, a potom použijete deklarovaný príkaz v tele dokumentu:
\DeclareFixedFootnote{\rep}{Opakovaný text}
...
...\rep{}
...\rep{}
Balík zaručuje, že opakovaný text sa objavuje na strane najviac raz: obvykle
zrejme bude potrebný viac než jeden beh LaTeXu, aby ste sa opakovaní
zbavili.
fixfoot.sty: CTAN: fixfoot
footmisc.sty: CTAN: footmisc
memoir.cls: CTAN: memoir
Číslovanie poznámok „po stránkach“
Očividným riešením je resetovanie počítadla vždy, keď zmeníme stranu,
pomocou interných mechanizmov LaTeXu (viď Otázku „Master“ a „slave“ počítadlá).
Miesto zmeny stránky bohužial nie je predvídateľné (nie na konci tlačenej
stránky, takže takéto spojenie funguje iba so šťastím).
Výsledkom je, že resetovanie poznámok je nevyhnuteľne dvojprechodový proces
používajúci určitý druh návestí. Návestia sú tak či tak dôležité, kedže sa
bežne vyskutuje požiadavka na značkovanie poznámok symbolmi (s veľmi malými
množinami symbolov). Existujú tri balíky, ktoré toto dokážu.
Balík footnpag robí iba číslovanie poznámok po stránkach a nič iné.
Balík perpage poskytuje obecný mechanizmus resetovania počítadiel
po jednotlivých stránkach, takže zjavne môže byť na túto úlohu použitý.
Rozhranie je jednoduché: \MakePerPage{footnote} spraví, čo
potrebujeme. Ak chcete nastaviť počítadlo na inú hodnotu než 1 (napríklad aby
ste sa vyhli niečomu v LaTeXovskom zozname symbolov poznámok), použite:
\MakePerPage[2]{footnote}.
Balík footmisc poskytuje rozličné spôsoby kontroly vzhľadu poznámok,
medzi ktorými je aj voľba balíku perpage, ktorá upravuje číslovanie
po stránkach.
Dokumentácia footnpag je dodávaná ako .dvi súbor
footnpag-user distribúcie. Dokumentácia perpage je iba v súbore
balíku (neobsahuje ale viac, než bolo uvedené hore...).
footmisc.sty: CTAN: footmisc
footnpag.sty: CTAN: footnpag
perpage.sty: CTAN: perpage
Zmena okrajov v LaTeXu
Zmena veľkosti tela textu v LaTeXu je prekvapujúco ťažká úloha, najlepšia
rada pre začiatočníkov je, aby to neskúšali. Medzi fundamentálnymi obmedzeniami
TeXu, obmedzeniami spojenými s návrhom LaTeXu a dobrými dizajnovými
a sádzačskými zvykmi existuje určitá spojitosť. Každá zmena musí byť teda dobre
premyslená a musí byť zaistené, že funguje a zároveň je oku príjemná.
Lamportove varovanie v jeho sekcii „Customizing the Style“ nesmie byť brané
na ľahkú váhu. Jednopalcové okraje papieru formátu A4 sú prijateľné pre písacie
stroje, ale nie pre sadzbu desaťbodovým (prípadne väčším) písmom, pretože sa
takéto široké, husté riadky ťažko čítajú. Ideálne by na riadok nemalo byť viac
ako 75 znakov (pre dvojstĺpcový text sa obmedzenie mení).
Ovládacie prvky LaTeXu dovoľujú zmeniť vzdialenosť od okajov stránky k ľavému
a hornému okraju vášho textu, ako aj výšku a šírku textu.
Zmena výšky a šírky vyžaduje viac zručnosti, než by ste čakali. Výška by si mala
zachovať určitý vzťah k vzdialenostiam po sebe nasledujúcich účiarí
(\baselineskip), šírka by mala byť obmedzená podľa už spomenutého pravidla.
Ovládacie prvky sú vyjadrené množinou parametrov stránky. V istom zmysle sú
komplexné a pri predefinovávaní rozvrhnutia stránky si môžeme ľahko popliesť ich
vzájomné vzťahy. Balík layout definuje príkaz \layout kresliaci
diagram aktuálneho rozvrhnutia stránky s rozmermi (avšak bez ich závislostí).
Toto FAQ odporúča používať balík na vytvorenie konzistentného nastavenia
parametrov, o závislosti sa postarajú balíky.
Definitívnym nástrojom pre zmenu rozmerov a pozície tlačeného materiálu
na stránke je balík geometry. Relatívne priamočiaro môže byť
naprogramovaných množstvo nastavení rozvrhnutia.
Použítie balíku vmargin je trochu jednoduchšie. Balík obsahuje
množinu rozmerov papierov (nadmnožina toho, čo poskytuje LaTeX 2e), opatrenia
pre vlastné rozmery, nastavenia okrajov a opatrenia pre dvojstrannú tlač.
Ak to stále chcete spraviť sami, začnite sa zoznamovať s parametrami LaTeXu
pre rozloženie stránky. Pozrite si napríklad sekciu C.5.3 LaTeX manuálu
(str. 181–182) alebo príslušné sekcie v iných manuáloch LaTeXu
(viď Otázku Knihy o TeXu a příbuzná literatura).
Parametre \oddsidemargin a \evensidemargin vďačia za svoje názvy
skutočnosti, že obvyle sú nepárne stránky na pravej strane dvojstranného
rozloženia („recto“) a párne na ľavej strane („verso“). Oba parametre
odkazujú na ľavý okraj. Pravý okraj je potom vydedukovaný z veľkosti
\textwidth. Začiatok je v DVI koordinátoch jeden palec od horného
okraja a jeden palec od ľavého okraja. Kladné horizontálne hodnoty postupujú
smerom doprava, kladné vertikálne smerom nadol. Takže pre okraje bližšie než
jeden palec k ľavému a hornému kraju stránky môžete príslušné parametre
(\evensidemargin, \oddsidemargin, \topmargin) nastaviť na záporné
hodnoty.
Ďalším prekvapením je, že jednoduchou modifikáciou parametrov veľkosti textu
nemôžete zmeniť šírku a výšku textu v dokumente. Parametre by mali byť menené
iba v preambule dokumentu, teda pred výrazom \begin{document}. Pre zmenu
v dokumente definujeme prostredie:
\newenvironment{changemargin}[2]{%
\begin{list}{}{%
\setlength{\topsep}{0pt}%
\setlength{\leftmargin}{#1}%
\setlength{\rightmargin}{#2}%
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\parsep}{\parskip}%
}%
\item[]}{\end{list}}
Toto prostredie akceptuje dva parametre a odsadí ľavý a pravý okraj podľa
hodnôt príslušných parametrov. Záporné hodnoty spôsobia zúženie okrajov, takže
\begin{changemargin}{-1cm}{-1cm} zúži ľavý a pravý okraj o 1cm.
Balík chngpage poskytuje na vytvorenie predchádzajúceho stavu hotové
príkazy. Obsahuje opatrenia na zmenu posunov aplikovaných na váš text podľa
toho, či ste na nepárnej alebo párnej stránke dvojstránkového dokumentu.
Dokumentácia balíku (v súbore samotnom) navrhuje stratégiu zmeny rozmerov textu
medzi stranami — ako bolo spomenuté vyššie, zmena rozmerov textu v tele
stránky môže viesť k nepredvídateľným výsledkom.
chngpage.sty: CTAN: chngpage
geometry.sty: CTAN: geometry
layout.sty: distribuované ako súčasť CTAN: 2etools
vmargin.sty: CTAN: vmargin
Ako sa zbaviť čísel strán
Balík nopageno potlačí čísla strán v celom dokumente.
Pre potlačenie iba na jednej strane použite \thispagestyle{empty}
niekde v texte strany. \maketitle a \chapter používajú
\thispagestyle interne, takže to musíte zavolať po tom, čo ste zavolali
\maketitle alebo \chapter.
Pre potlačenie číslovania postupnosti strán môžete použiť
\pagestyle{empty} na začiatku postupnosti strán a obnovte pôvodný štýl
stránky na konci (postupnosti). Bohužiaľ, stále musíte použiť \thispagestyle
po každom príkaze \maketitle alebo \chapter.
Problémové príkazy triedy memoir (\maketitle, \chapter atď@)
vyvolajú vlastný štýl stránky (title, chapter atď.@), ktorý môžete
predefinovať použitím techník triede vlastných, aby boli ekvivaletné prostrediu
„empty“. Triedy KOMA-script majú príkazy štýl stránky, ktorý má byť
použitý, takže môžete napísať:
\renewcommand*{\titlepagestyle}{empty}
Alternatívou (vo všetkých triedach) je použitie celkom príjemného
\pagenumbering{gobble}. Má to za následok, že každý pokus o tlač čisla
strany nič nevyprodukuje, takže nie je problém zabrániť ľubovolnej časti
LaTeXu v tlači čísla strany. Príkaz \pagenumbering však má vedľajší
efekt — nastavuje (resetuje) číslo stránky na 1, čo nemusí byť príjemné.
Balík scrpage2 oddeľuje reprezentáciu od resetovania, takže môžete
napísať:
\renewcommand*{\pagemark}{}
aby ste dosiahli to isté ako pri triku s gobble, bez resetovania čísla
stránky.
nopageno: CTAN: nopageno
balík KOMA script: CTAN: koma-script
memoir.cls: CTAN: memoir
scrpage2.sty: distribuované ako súčasť CTAN: koma-script
Zjištění šířky písmene, slova nebo sousloví
Slovo se vloží do boxu a poté se zjistí šířka tohoto boxu.
Například:
\newdimen\stringwidth
\setbox0=\hbox{hi}
\stringwidth=\wd0
Je třeba však mít na paměti, že je-li v \hboxu sousloví,
hodnota, kterou určíme, bude pouze přibližnou šířkou, kterou bude
vysázené zaujímat ve skutečném textu, neboť mezislovní mezery se
při sazbě odstavce mohou změnit.
V LaTeXu lze problém řešit takto:
\newlength{\gnat}
\settowidth{\gnat}{\textbf{small}}
Hodnota \gnat se v tomto případě nastaví na hodnotu šířky
„small“ vysázeného tučně.
Aký je názov tohto súboru
Toto zistenie môžete potrebovať pre automatické generovanie záhlavia alebo päty
stránky zaznamenávajúceho práve spracúvaný súbor. Nie je to jednoduché...
TeX si pamätá iba to, čo považuje za názov práce (job),
v primitíve \jobname. Predstavuje názov súboru, ktorý bol prvý predaný
TeXu, orezaný o meno adresáru a ľubovolnú príponu (ako napríklad .tex).
Ak nebol predaný žiadny súbor (t.j. používate TeX interaktívne),
\jobname má hodnotu texput (v tomto prípade názov daný .log súboru).
Toto je v prípade malých dokumentov udržiavaných v jednom súbore. Väčšina
významných dokumentov bude však udržiavaná vo viacerých súboroch a TeX sa
nesnaží držať si prehľad vstupných súborov práce. Prehľad si teda musí
udržiavať užívateľ sám — jediným spôsobom je úprava vstupných príkazov, aby si
pamätali detaily názvov súborov. Toto je práve v prípade Plain TeXu
zložité, kedže syntax príkazu \input je „svojrázna“.
V prípade LaTeXu majú vstupné príkazy pekne pravidelnú syntax. Stačí na ne
teda použiť najjednoduchšie upravovacie techniky:
\def\ThisFile{\jobname}
\newcounter{FileStack}
\let\OrigInput\input
\renewcommand{\input}[1]{%
\stepcounter{FileStack}
\expandafter\let
\csname NameStack\theFileStack\endcsname
\ThisFile
\def\ThisFile{#1}%
\OrigInput{#1}%
\expandafter\let\expandafter
\ThisFile
\csname NameStack\theFileStack\endcsname
\addtocounter{FileStack}{-1}%
}
(Podobne aj pre \include.) Kód predpokladá, že budete vždy pre
\input
používať syntax LaTeXu, t.j. vždy použijete parameter uzavretý do zložených
zátvoriek.
Balík FiNK („File Name Keeper“) poskytuje v makre
\finkfile
bežný prostriedok na udržanie si prehľadu o názve aktuálneho súboru (spolu
s jeho príponou). Sada zahŕňa súbor fink.el poskytujúci podporu
pre emacs s AUC-TeXom.
fink.sty: CTAN: fink
Všetky súbory použité v tomto dokumente
Keď zdielate dokument s niekým iným (možno v rámci spoločného vývoja), je
vhodné, aby obaja korešpondenti mali rovnaký dokument, ako aj rovnakú sadu
pomocných súborov. Váš korešpondent zjavne potrebuje rovnakú sadu súborov
(ak napríklad používate balík url, druhá strana tiež musí mať
url). Predpokladajme, že vy máte bezchybnú verziu balíku
skvelybalik, ale na druhej strane majú stále nestabilnú verziu. Kým
obe strany zistia, čo sa deje, môže byť takáto situácia veľmi mätúca.
Najjednoduchším riešením je LaTeXovský príkaz \listfiles. Ten do súboru
logu umiestňuje zoznam použitých súborov a ich verzií. Ak tento zoznam
vypreparujete a pošlete ho so svojím súborom, môže byť použitý ako kontrolný
zoznam v prípade problémov.
Majte na pamäti, že \listfiles zaregistruje iba veci vložené
„štandardnými“ LaTeXovskými mechanizmami (\documentclass,
\usepackage, \input, \include, \includegraphics atď.). Ak
však použijete primitívnu syntax TeXu:
\input mymacros
mymacros.tex nebude príkazom \listfiles zahrnutý do zoznamu,
kedže ste obišli mechanizmus zaznamenávajúci jeho použitie.
Balík snapshot pomáha vlastníkovi LaTeXovského dokumentu získať
zoznam externých závislostí dokumentu (vo forme, ktorá môže byť začlenená
na začiatok dokumentu). Balík je určený na tvorbu archívnych kópií dokumentov,
ale má nasadenie aj pri situáciach výmeny dokumentov.
Systém bundledoc používa \listfiles na tvorbu archívu (napríklad
.tar.gz alebo .zip) súborov vyžadovaných vašim dokumentom. Je dodávaný
s konfiguračnými súbormi preteTeX a mikTeX. Je užitočný,
hlavne keď posielate prvú kópiu dokumentu.
bundledoc: CTAN: bundledoc
snapshot.sty: CTAN: snapshot
Označovanie zmien v dokumente
Často potrebujeme zreteľne vyznačiť, ako náš dokument zmenil. Najčastejší
postup, „pruhy zmien“ (change bars; tiež známe ako „pruhy revízií“ —
revision bars), však vyžaduje od programátora prekvapivo veľkú lstivosť (problém
je, že TeX poriadne neposkytuje programátorovi žiadne informácie o aktuálnej
pozícii, z ktorej by mohol byť vypočítaný domnelý začiatok alebo koniec pruhu;
PDFTeX informácie poskytuje, ale nie sme si zatiaľ vedomí o žiadnom
programátorovi, ktorý by to využil na napísanie changebar balíku založeného
na PDFTeXu).
Najjednoduchší balík poskytujúci pruhy zmien je backgrnd.tex od Petra
Schmitta. Bol napísaný ako aplikácia Plain TeX upravujúca výstupnú rutinu,
ale zrejme funguje aspoň na jednoduchých LaTeXovských dokumentoch. Múdri
používatelia LaTeXu budú po informácii o úprave ich výstupnej rutiny pomocou
backgrnd ostražití a veľmi pozorne budú sledovať jeho chovanie (úprava
LaTeXovskej rutiny nie je niečo, na čo sa dá ľahko podujať...).
Najstarším riešením je balík changebar, ktorý používa príkazy
\special poskytované ovládačom, ktorý používate. Z tohto dôvodu potrebujete
balíku povedať, pre ktorý ovládač má generovať príkazy \special (rovnakým
spôsobom ako pri balíku graphics); zoznam dostupných ovládačov je dosť
obmedzený, zahŕňa však dvips. Balík je dodávaný so shellovským
skriptom chbar.sh (pre použitie na Unixe), ktorý porovnáva dva
dokumenty a generuje tretí, označený makrami changebar pre zvýraznenie
zmien. Skvelý shareware editor WinEDT má makro generujúce makrá
changebar (alebo iné) na zviditeľnenie zmien voči predchádzajúcej
verzii vašeho súboru uloženého v RCS repozitári — viď
http://www.winedt.org/Macros/LaTeX/RCSdiff.php.
Balík vertbars používa techniky balíku lineno (musí byť
prítomný) a je teda najmenší z balíkov na značenie pruhov zmien, kedže všetko
zložitejšie necháva inému balíku. Balík framed je ďalším z balíkov
poskytujúcich pruhy, tentoraz ako vedľajší efekt poskytovanie iných funkcií:
jeho prostredie leftbar je iba „chudobnejší“ frame (pamätajte si však, že
prostredie vytvára pre svoj obsah vlastný odstavec, takže je najlepšie používať
ho pri konvencii označovania celého zmeneného odstavcu).
Trieda memoir dovoľuje okrajové redakčné poznámky, ktoré môžete použiť
na ohraničenie oblastí zmeny textu.
backgrnd.tex: CTAN: backgrnd
changebar.sty: CTAN: changebar
framed.sty: CTAN: framed
lineno.sty: CTAN: lineno
memoir.cls: CTAN: memoir
vertbars.sty: CTAN: vertbars
Podmienená kompilácia a komentáre
Aj keď LaTeX (alebo ľubovolný iný balík odvodený z TeXu) nie je
v skutočnosti kompilátor, ľudia často chcú, aby robil veci pre kompilátor
typické. Častou požiadavkou je podmienená „kompilácia“ a blokové komentáre.
Na tento účel je dostupných viacero LaTeXu špecifických prostriedkov.
Jednoduché príkazy \newcommand{\csgobble}[1]{} a
\iffalse ... \fi nie sú pre komentáre (ako obecné riešenie)
dostačujúce, kedže vynechané veci sú TeXom aj tak preskúmané. Skúmanie
zavádza obmedzenia na veci, ktoré môžete vynechať. Toto nemusí byť problémom
dnes, ale v budúcnosti sa to môže vypomstiť. \gobble je naviac pre
netriviálne parametre dosť neefektívny, kedže všetko, čo sa má vynechať, je pred
vynechaním skopírované do zásobníku parametrov.
Ak sa vaša požiadavka týka dokumentu, z ktorého chýbajú celé kapitoly, zvážte
LaTeXovský systém \include/\includeonly. Ak vložíte vaše súbory
pomocou \include (namiesto \input — viď
Otázku Co se děje při použití příkazu \include?), LaTeX zapisuje informácie o tom, čo sa deje
na konci každej kapitoly do .aux súboru.
Pomocou \includeonly môžete LaTeXu dodať vyčerpavajúci zoznam potrebných
súborov. Súbory, ktoré nie sú vložené pomocou \include, sú celé
preskočené, ale spracovanie dokumentu pokračuje, ako keby tam boli.
Strany, poznámky a iné čísla nie sú ovplyvnené. Pamatajte si, že sekcie, ktoré
chcete vložiť, si môžete vybrať interaktívne pomocou balíku askinclude.
Pomocou balíku excludeonly môžete dosiahnuť presný opak: dovoľuje vám
z dokumentu vynechať zoznam súborov vložených pomocou \include použitím
príkazu \excludeonly.
Ak si chcete vybrať konkrétne stránky dokumentu, použite balík pagesel
Heika Oberdieka alebo balík selectp. Niečo podobné môžete spraviť
s existujúcim PDF dokumentom (ktorý ste mohli skompilovať pomocou
pdflatexu) použitím balíku pdfpages. Spravíte to
s podobne vyzerajúcim dokumentom:
\documentclass{article}
\usepackage[final]{pdfpages}
\begin{document}
\includepdf[pages=30-40]{yoursource.pdf}
\end{document}
(Na vloženie celého dokumentu môžete napísať
\includepdf[pages=-]{yoursource.pdf}
vynechajúc začiatočnú a koncovú stranu dokumentu vo voliteľnom parametri.)
Ak chcete byť pri vkladaní alebo vynechávaní malých častí súboru, zvážte balíky
comment, version alebo optional.
comment dovoľuje deklarovať oblasti dokumentu, ktoré majú byť vložené
alebo vynechané; tieto deklarácie robíte v preambule súboru. Príkaz
\includeversion{version-name} deklaruje prostredie version-name, ktorého
obsah bude zahrnutý vo vašom dokumente, zatiaľ čo príkaz
\excludeversion{version-name} definuje prostredie, ktorého obsah bude vynechaný. Balík používa celkom
robustnú metódu vynechávania a dokáže si poradiť aj so zle formovaným textom
(napríklad s nespárovanými zloženými zátvorkami alebo príkazmi \if).
version poskytuje podobné prostriedky ako comment.sty
(t.j., príkazy \includeversion a \excludeversion); je oveľa
jednoduchší, ale aj menej robustný (a hlavne si nevie poradiť s veľmi
rozsiahlymi oblasťami vypúšťaného/vkladaného textu).
Dôležitým rozvojom version, je balík zavádzajúco pomenovaný
versions (t.j. iba plurál pôvodneho názvu).
Versions pridáva príkaz \markversion{version-name}, ktorý definuje
prostredie pre tlač vloženého textu so zreteľnou značkou okolo neho.
Balík optional definuje príkaz \opt; jeho prvý parameter je
„príznak vloženia“, druhým je vkladaný alebo vynechaný text. Vkladaný alebo
vynechávaný text musí byť dobre utvorený (žiadne syntaktické chyby) a nemal by
byť príliš veľký — ak je potrebný dlhý text, v parametri by mal byť
\input. Dokumentácia (samotnom súbore balíku) vám prezradí, ako deklarovať,
ktoré sekcie majú byť vložené: toto môžete spraviť v preambule dokumentu, ale
dokumentácia navrhuje tiež spôsoby, ktorými to môžete spraviť na príkazovom
riadku vyvolávajúcom LaTeX alebo interaktívne.
Konečne balík verbatim (ktorý by mal byť dostupný v každej
distribúcii) definuje prostredie comment, ktoré umožňuje dedikovanému
používateľovi editoru potlačiť časti LaTeXovského zdrojového súboru. Trieda
memoir poskytuje rovnaké prostredie.
askinclude.sty: CTAN: askinclude
comment.sty: CTAN: comment
excludeonly.sty: CTAN: excludeonly
memoir.cls: CTAN: memoir
optional.sty: CTAN: optional
pagesel.sty: distribuované spolu s CTAN: oberdiek
pdfpages.sty: CTAN: pdfpages
selectp.sty: CTAN: selectp
verbatim.sty: distribuované ako súčasť CTAN: 2etools
version.sty: CTAN: version
versions.sty: CTAN: versions
Časti dokumentu z rozličných adresárov
Bežným spôsobom zostavovania veľkých dokumentov je ich rozdelenie na sadu
menších súborov (napr. jeden na každú kapitolu) a uchovávanie všetkého, čo
súvisí s jedným z týchto súborov, v podadresári.
TeX bohužiaľ nemá možnosť zmeny aktuálneho adresáru, takže všetky súbory,
na ktoré sa odkazujete, musíte uviest relatívne voči adresáru hlavného súboru.
Väčšina ľudí toto pokladá za neintuitívne.
Vhodným riešením môže byť použitie techniky rozšírenia cesty
z Otázky „Dočasné“ inštalácie súborov TeXu alebo LaTeXu. Ak však v dokumente používate viacero súborov
rovnakého názvu (napr. chapter1/fig1.eps a chapter2/fig1.eps),
pri vyvolaní \input{sect1} v hlavnom súbore nedávate TeXu žiadnu
informáciu, na ktorý súbor sa odkazujete. Tento problém je jednoducho riešiteľný
pri súboroch vytváraných ľuďmi (používajte rozličné názvy). Názvy automaticky
vytvorených súborov sú často rovnaké a ich zmena je procedúra náchylná
k vytvoreniu chýb.
Balík import vám v tomto prípade prichádza na pomoc. Definuje príkaz
\import, ktorý akceptuje úplnú cestu a názov súboru v tomto adresári,
zabezpečí pritom, aby veci fungovali správne. Takže napríklad súbor
/home/friend/results.tex môže obsahovať
Graph: \includegraphics{picture}
\input{explanation}
\import{/home/friend/}{results} potom vloží oba súbory. Príkaz
\subimport robí to isté pre podadresár (relatívna cesta radšej než
absolútna), existujú zodpovedajúce príkazy \includefrom
a \subincludefrom.
import.sty: CTAN: import
Súbory Makefile pre LaTeXovské dokumenty
Použitie make s LaTeXom je komplikované. Potreba viacnásobného
spustenia LaTeXu (napr. pre ustálenie obsahu, návestí, pridanie
bibliografie, indexu atď.) sa ťažko vyjadruje obvyklým druhom grafu závilostí,
ktorý konštruujeme pre make.
Z tochto dôvodu bol jediným balíkom podobným make na CTANe
(dlhú dobu) latexmk, čo je skript pre Perl analyzujúci
závislosti vášho dokumentu, v prípade potreby spúšťajúci BibTeX alebo
makeindex (v prípade zmeny súborov, ktoré uvedené programy používajú
ako vstup) atď. Latexmk je dobrým riešením, nedávno bol
aktualizovaný a obsahuje množstvo skvelých vlastností dovoľujúcich mu pracovať
ako veľmi jednoduchý WYSIWYG systém.
Systém texinfo (viď Otázku Co je to Texinfo) je dodávaný
s utilitou nazvanou texi2dvi, ktorá umožňuje konvertovanie súborov
LaTeXu alebo texinfo do DVI (alebo pomocou PDFTeXu
do PDF).
Novším prírastkom je balík latexmake poskytujúci množinu pravidiel
pre make podľa potreby vyvolávajúcich texi2dvi.
latexmake: CTAN: latexmake
latexmk: CTAN: latexmk
texi2dvi: distribuované ako súčasť CTAN: texinfo
Koľko stránok je v mojom dokumente?
Jednoduché dokumenty (tie, čo začínajú stranou 1 a nemajú v číslovaní strán
nijaké zlomy až po poslednú stranu) nepredstavujú pri hľadaní odpovede na túto
otázku žiadny problém. Počet strán hlási balík lastpage v svojom
návestí LastPage.
Pre komplikovanejšie dokumenty (napríklad knihy s inak čislovanou úvodnou
časťou) tento jednoduchý prístup nestačí.
Balík count1to definuje návestie TotalPages. Toto je
hodnota jeho kópie \count1 (rezervovaný TeXovský počítací
register) na konci dokumentu.
Balík totpages definuje návestie TotPages, ale tiež
sprístupňuje svoj register na použitie ako LaTeXovské počítadlo
TotPages, na ktoré sa môžete odkazovať cez \theTotPages.
TotPages je samozrejme asynchrónny rovnakým spôsobom ako čísla strán, ale
„snapshoty“ môžu byť vo výstupnej rutine bezpečne uskutočnené.
Trieda memoir definuje dve počítadlá (lastpage
a lastsheet), ktoré sú nastavené (po prvom spracovaní dokumentu)
na ekvivalent návestí LastPage a TotalPages).
Balíky count1to a totpages potrebujú podporu balíku
everyshi.
count1to.sty a everyshi.sty: v CTAN: ms
lastpage.sty: CTAN: lastpage
memoir.cls: CTAN: memoir
totpages.sty: CTAN: totpages
Vloženie TeXovských súborov do LaTeXu
Napriek tomu, že je LaTeX pôvodne založený na Plain TeXu (viď
Otázku Aký je vzťah medzi LaTeXom a plain TeXom?), neobsahuje všetky príkazy Plain TeXu. Čo
je však horšie, niektoré príkazy Plain TeXu sa v LaTeXu objavujú
s odlišnou sémantikou. Dôsledkom toho je, že pre sadzbu dokumentov
Plain TeXu (alebo ich častí) LaTeXom musia byť vykonané špeciálne
opatrenia.
Skutočne spoľahlivé riešenia je preloženie príkazov Plain TeXu tak, aby
produkovali ekvivalent pôvodnej sémantiky. Toto však v mnohých prípadoch nie
je praktické a pre tieto prípady si často musíte pomôcť balíkom
plain. Balík definuje prostredie plain, v ktorom môže byť
spracovaný dokument Plain TeXu:
\begin{plain}
\input{plain-doc}
\end{plain}
Je známe, že balík zlyháva napríklad pri dokumentoch používajúcich AMSTeX,
určite by zlyhal aj pri požiadavke o načítanie Eplainu.
Všetky tieto problémy sa dajú prekonať (aj keď to niekedy nie je ľahké), ale
nám v mnohých prípadoch šetrí mnoho práce.
plain.sty: distribuované ako súčasť CTAN: carlisle
Moje slová sa nerozdeľujú
Predpokladajme, že ste si vybrali správny TeXovský „jazyk“ (viď
Otázku Ako funguje v TeXu rozdeľovanie slov?), pravdepodobne nedosiahnete požadovaný výsledok
sadzbou jedného jazyka a použitím rozdeľovacích pravidiel jazyka druhého.
(Ak ste používateľ LaTeXu, vyberte si správny jazyk pomocou babel.
Takto môžete odhaliť potrebu ďalšej sady rozdeľovacích vzorov, viď
Otázku Používání nových jazyků v babelu).
Čo iné sa ešte môže pokaziť?
Príkaz \hyphenation vám dovoľuje zadať explicitné inštrukcie.
Ak je slovo vôbec rozdelené (teda rozdeleniu nebráni nijaké z uvedených
obmedzení), príkaz anuluje hocičo, čo prikazujú rozdeľovacie vzory. Príkaz
akceptuje ako parametre jedno alebo viac rozdeľovaných slov —
\hyphenation{ana-lysis pot-able} (anglické príklady); všimnite si, že
(v tomto prípade pre slovo „analysis“) môžete anulovať TeXom navrhované
rozdelenie (ana-lysis je britské etimologické rozdelenie; niekomu sa zdá
americké rozdelenie „nešťastné“...).
hyphenat.sty: CTAN: hyphenat
Zastavenie všetkých rozdeľovaní
Táto akcia sa môže zdať nezvyčajnou (jednou z veľmi propagovaných vlastností
TeXu je kvalita rozdeľovania), ale niekedy je potrebná. Skutočným problémom
je, že kvalita TeXovského výstupu je štandardne do veľkej miery závislá
na prítomnosti rozdeľovania.
TeX (zmätočne) ponúka štyri mechanizmy na potlačenie rozdeľovania (pred
rozšíreniami TeXu verzie 3 to boli iba dve).
Prvou možnosťou je nastavenie pokút za rozdeľovanie \hyphenpenalty
a \exhyphenpenalty na „nekonečnú“ hodnotu (t.j. napríklad 10000).
Toto znamená, že každý riadok, ktorý by obsahoval rozdelenie, bude pokutovaný
dostatočne na to, aby k nemu nedošlo. Nevýhodou metódy je nutnosť
opätovného vyhodnocovania odstavcov, a teda pomalosť celej metódy.
Ďalším spôsobom je výber jazyka, pre ktorý neexistujú rozdeľovacie vzory.
Niektoré distribúcie vytvárajú jazyk nohyphenation a balík hyphenat
túto techniku používa pre svoj príkaz \nohyphens, ktorý svoj parameter
vysádza bez rozdelenia.
Tretia alternatíva je nastavenie \left- a/alebo \righthyphenmin
na dostatočne veľkú hodnotu, aby sa zabránilo akémukoľvek rozdeľovaniu,
kedže hodnota minima bude väčšia ako dĺžka najdlhšieho slova, ktoré je TeX
ochotný rozdeliť (vhodnou hodnotou je 62).
Poslednou možnosťou z nášho zoznamu je potlačenie rozdeľovania celého textu
použitím aktuálneho fontu príkazom
\hyphenchar\font=-1
Toto nie je práve praktický spôsob potlačenia rozdeľovania, kedže príkaz musí
byť použitý pre každý font v dokumente, ale práve týmto spôsobom zabraňuje
rozdeľovaniu LaTeX samotný v tt a iných fontoch pevnej šírky.
Výber konkrétnej techniky záleží na tom, čo chcete robiť. Ak text, ktorého
rozdelenie chcete potlačiť, nie je celý odstavec, vašou jedinou voľbou je
použitie nerozdeľovaného jazyka: hodnota jazyku je zachovaná s textom (rovnakým
spôsobom ako aktuálny font); na počítanie rozdeľovania sú použité hodnoty
rozdeľovacích limitov a pokút aktívne na konci odstavca.
Na druhú stranu, pri písaní viacjazyčného dokumentu použitím balíku
babel nerozdeľovaný jazyk alebo rozdeľovacie minimum na potlačenie
rozdeľovania použiť nemôžete. Všetky tieto hodnoty sa menia pri prepnutí
jazyka balíkom babel. V tomto prípade použite rozdeľovacie pokuty.
Ak jednoducho vypnete rozdeľovanie pre dlhší úsek textu, výstup bude mať
nerovný okraj (s mnohými pretekajúcimi riadkami) a každý beh TeXu vás bude
bombardovať hláškami o pretečení (overfull) a podtečení (underfull) riadkov.
Aby ste sa tomuto vyhli, máte dve možnosti. Môžete použiť \sloppy (alebo
jeho verziu v podobe prostredia sloppypar) a nechať TeX roztiahnuť riadky
s podtečením a zalomiť riadky s pretečením pred tým, než nastane (a samozrejme
roztiahnuť zbytok). Alternatívne môžete text vysádzať text zarovnaný vpravo
a aspoň sa tak zbaviť riadkov s pretečením.
hyphenat.sty: CTAN: hyphenat
Ako spraviť bold-tt alebo bold-sc
LaTeX štandardne neposkytuje žiadne prostriedky spracovania tučných
„teletype“ a „small-caps“ fontov. Existuje pre to praktický dôvod
(Knuth nikdy takéto fonty nenavrhol), ale existujú aj typografické dôvody
(polotučný font cmtt je v skutočnosti celkom tučný (v porovnaní s inými
fontami pevnej šírky) a tučné fonty „small-caps“ nie sú u mnohých
profesionálnych typografov populárne).
Na CTANe existuje „extra“ sada súborov METAFONTu, ktoré poskytujú tučné
verzie cmtt a cmcsc („small-caps“ font). V moderných distribúciach
TeXu môžete začať tieto fonty využívať po umiestnení na vhodné miesto
do texmf stromu (viď Otázku Co je to TDS?). Po opätovnom
vybudovaní potrebných indexov súborov TeX (a priatelia) automaticky vybudujú
všetky potrebné súbory fontov pri prvom odkaze na ne. Balík
bold-extra vybuduje potrebne dátové štruktúry fontov, aby ste fonty
mohli využívať z LaTeXu.
Ak potrebujete použiť Type 1 fonty, nemôžete postupovať s fontami Knuthovho
štýlu, kedže neexistujú Type 1 verzie mf-extra sady. Komerčné fonty
pevnej šírky (vrátane štandardného balíku Courier) takmer vždy
obsahujú tučnú verziu, takže tu problém nie je. PSNFSS (viď
Otázku Použití PostScriptových fontů v TeXu) typicky poskytuje „nepravé“ „small-caps“
fonty a nemá výčitky svedomia ani z ich poskytovania v tučnej forme.
bold-extra.sty: CTAN: bold-extra
bold tt a small caps fonty: CTAN: bold
Sazba tučných řeckých písmen
Jednoduchým řešením tohoto problému je příkaz \mathbf, který však
nefunguje ve všech případech, protože malá řecká písmena chovají jinak
než velká (z důvodu Knuthova esoterického kódování fontů). Nicméně
za normálních okolností můžeme \mathbf použít pro řecké verzálky, ale
AMSLaTeXový balík amsmath.sty nepovoluje toto přepínání fontů
a pak tedy musíte použít jednu z níže popsaných technik. V některých
případech funguje plainTeXové řešení {\boldmath$\theta$}, ale
\boldmath nemůže být použit v matematickém módu, pak to musíte
vyřešit následovně:
$...\mbox{\boldmath$\theta$}...$,
to působí problémy v superskriptech a podobně. Tyto problémy mohou být
přičítány použití balíku \boldmath.
- balík
bm definuje příkaz \bm,
který lze použít kdekoliv v matematickém režimu.
- balík
amsbsy, který je součástí AMSLaTeXu, definuje
příkaz
\boldsymbol, který pokrývá téměř všechny základní problémy. Všechna
tato řešení můžete použít na všechny matematické symboly, nejen na řecká
písmena.
bm: CTAN: 2etools
amsbsy: v distribuci CTAN: amslatex
Ako používať znak podčiarknutia
Znak podčiarknutia _ sa v TeXu obvykle používa na označenie dolných indexov
v matematickom móde. Ak napíšete znak _ uprostred bežného textu, TeX sa
bude sťažovať. Ak píšete dokument obsahujúci veľké množstvo týchto znakov,
predstava písania \_ (alebo ešte horšie \textunderscore) pre každý
z nich vystraší väčšinu bežných ľudí.
Stredne pokročilý programátor makier môže vygenerovať rýchly „hack“
na povolenie sadzby _ vo význame znaku podčiarknutia. Kód je však trochu
komplikovaný a hlavne existuje množstvo bodov, na ktorých sa dá ľahko pokaziť.
Existuje však balík underscore, ktorý poskytuje obecné riešenie
tejto požiadavky.
Existuje tu však jeden problém. Textové fonty OT1 obsahujú znak _
iba vo typewriter verzii kódovania (používanej fontami pevnej šírky ako
cmtt). Takže sa musíte uistiť, že sa znaky podčiarknutia objavujú iba
v texte sádzanom fontom písacieho stroja, alebo musíte používať bohatšie
kódovanie, ako napríklad T1, ktoré obsahuje daný znak pre každý font.
Ak je požiadavkou iba občasné použitie znaku _, je možné použiť nasledujúcu
konštrukciu:
\def\us{\char`\_}
...
\texttt{create\us process}
Táto konštrukcia nie je ani najmenej robustná (v bežnom hovorovom význame),
ale je robustná pri expanzii (t.j. v LaTeXovskom význame slova), takže ju
používajte opatrne (nemusíte sa však starať o nadpisy sekcii a podobné veci).
underscore.sty: CTAN: underscore
Ako vysádzať znak `@'?
Pre dlhým časom robili niektoré balíky znak `@' aktívnym, takže pre jeho sadzbu
boli potrebné špeciálne opatrenia. Aj keď sú tieto balíky ešte stále dostupné,
používa ich málo ľudí a tí, čo ich používajú, majú prístup k veľmi dobrej
dokumentácii.
Bežným ľuďom (ako sú napríklad autori originálneho anglického FAQ) stačí
jednoducho napísať znak `@'.
Porovnávanie „job name“
Token \jobname produkuje postupnosť znakov s kódom kategórie 12
(„iné“) bez ohľadu na to, čo danými znakmi v skutočnosti je. Keďže je
nevyhnutne potrebné porovnať makro s obsahom iného makra (použitím
\ifx), je potrebné vytvoriť makro, ktorého expanzia vyzerá rovnako ako
expanzia \jobname. Toto môžeme spraviť pomocou \meaning, ak
„odrežeme“ prefix príkazu \show.
Celý príkaz vyzerá nasledovne:
\def\StripPrefix#1>{}
\def\jobis#1{FF\fi
\def\predicate{#1}%
\edef\predicate{\expandafter\StripPrefix
\meaning\predicate}%
\edef\job{\jobname}%
\ifx\job\predicate
}
A je použitý nasledovne:
\if\jobis{mainfile}%
\message{YES}%
\else
\message{NO}%
\fi
Zapamätajte si, že príkaz \StripPrefix nemusí byť definovaný, ak používate
LaTeX — tu už interný príkaz (viď Otázku \@ a @ ve jménech maker)
\strip@prefix, ktorý môžete použiť, existuje.
Sadzba znaku Euro
Európska mena „Euro“ je reprezentovaná symbolom s mierne pochybným dizajnom,
ale je to dôležitá mena a používatelia TeXu/LaTeXu ju potrebujú sádzať.
Európska komisia najskôr požadovala, aby symbol Euro bol vždy vysádzaný
grotesk fontom, táto požiadavka však bola našťastie zrušená a teda je
možné najlepšie využiť sadzobné úsilie, aby symbol vyzeral aspoň trochu
solídne (typograficky).
Fonty v kódovaní TS1 poskytované ako súčasť distribúcie fontov EC
obsahujú glyfy pre Euro. Fonty sa nazývajú Text Companion (TC) fonty
a poskytujú rovnaký rozsah kresieb ako EC fonty samotné. Balík
textcomp poskytuje na prístup k symbolu príkaz \texteuro, ktorý
vyberie symbol zodpovedajúci okolitému textu. Dizajn symbolu v TC
fontoch nie je obecne v láske... Napriek tomu, ak produkujete dokument
pomocou Knuthovych Computer Modern fontov, používajte TC fontovú
verziu symbolu.
Vstupné kódovanie latin9 definované balíkom inputenc
má znak Euro definovaný (pozícia 164, v iných ISO Latin znakových sadách
obsadená „symbolom meny“). Kódovanie používa pre symbol príkaz
\texteuro. V súčasnosti je príkaz dostupný iba z balíku
textcomp. V kódovej stránke MicroSoftu je pozícia tiež, ale
štandardizácia takýchto vecí prebieha dosť odlišným spôsobom a projektu
LaTeX neboli poskytnuté detaily o zmene.
Obrysové fonty obsahujúce iba symboly Eura sú (zadarmo) dostupné
z ftp://ftp.adobe.com/pub/adobe/type/win/all/eurofont.exe
(súbor je zbalený ako samorozbalovací spustiteľný súbor pre
Windows, ale na iných operačných systémoch môže byť dekódovaný ako
archív formátu .zip). Sada euro obsahuje metriky,
dvips „map“ súbory a makrá (pre Plain TeX a LaTeX) pre
použitie týchto fontov v dokumentoch. Používatelia LaTeXu nájdu v sade dva
balíky: eurosans poskytuje iba grotesk verziu (pre dodržanie
zastaraného nariadenia o výhradne grotesk symboloch; balík poskytuje
príkaz \euro), zatiaľ čo europs prispôsobí Euro symbol okolitému
textu (poskytujúc príkaz \EUR). Pre použitie niektorého z balíkov
s latin9 kódovaním potrebujete definovať \texteuro ako alias
pre Euro príkaz, ktorý definuje balík.
Adobe fonty sú pre prostredie bez Computer Modern fontov najlepšia voľba.
Zjavne sú navhrnuté tak, aby sedeli s Adobe Times, Helvetica a Courier, ale
sú zrejme použiteľné s širším rozsahom moderných fontov.
Balík eurofont poskytuje kompaktnú analýzu problému symbolu pre Euro
vo svojej dokumentácii a poskytuje makrá na konfiguráciu použitého zdroja
glyfov. Balík je však príliš veľký na každodenné použitie.
Sada euro-ce je celkom potešujúcim METAFONTovským návrhom poskytujúcim
Euro symboly vo viacerých tvaroch. Súbor distribúcie euro-ce.tex
poskytuje rady, pomocou ktorých môže fonty využiť používateľ Plain TeXu.
Symboly Euro sa dajú nájsť na množstve iných miest, ktoré tu pre úplnosť
spomenieme.
Fonty marvosym obsahujú medzi množstvom dobrých vecí aj symbol Eura.
Font na CTANe nie je Adobe ATM kompatibilný. Font na
CTANe je dodávaný so sadou makier na sadzbu všetkých symbolov, ktoré
obsahuje.
Iné sady založené na METAFONTe obsahujúce Euro symboly môžete nájsť v balíku
china2e (ktorého primárnym cieľom sú čínske dátumy a podobné veci)
a fontoch eurosym.
china2e bundle: CTAN: china2e
EC fonts: CTAN: ec
euro fonts: CTAN: euro-fonts
euro-ce fonts: CTAN: euro-ce
eurofont.sty: CTAN: eurofont
eurosym fonts: CTAN: eurosym
marvosym fonts: CTAN: marvosym-fonts
textcomp.sty: súčasť distribúcie LaTeXu.
Ako získať znaky copyright, trademark, ...
Obsiahly zoznam symbolov (viď Otázku Kde nájdem symbol pre...) obsahuje príkazy
pre symboly \textcopyright, \textregistered a \texttrademark,
ktoré sú dostupné vo fontoch v TS1 kódovaní a ich použitie sa umožňuje
balíkom textcomp.
V skutočnosti sú v štandardnom LaTeXu povolené všetky tri príkazy, ale
glyfy, ktoré dostanete, nie sú veľmi pekné. Konkrétne
\textregistered
sa správa zvláštne pri vložení do tučného textu (napríklad nadpis sekcie),
pretože sa skladá z „small-caps“ písmena, ktoré sa typicky pri požiadavke
na vysádzanie v tučnom fonte degraduje na písmeno normálneho tvaru.
Z glyfu sa teda stane `r' v krúžku, ale správnym symbolom malo byť
`R' v krúžku.
Tomuto efektu sa použitím textcomp samozrejme vyhnete.
Ďalší problém nastáva, keď chcete \textregistered v pozícii horného
indexu (aby symbol vyzeral podobne ako \texttrademark). Použitím horného
indexu matematického módu za týmto účelom vyvolá množstvo nezmyselných chýb,
takže musíte použiť
\textsuperscript{\textregistered}
Definice nových označení matematických funkcí v LaTeXu
Použije se příkaz \mathop podobně jako v tomto příkladě:
\newcommand{\diag}{\mathop{\rm diag}}
Spodní a horní indexy funkce \diag
budou umístěny obdobně jako u \lim (limita).
K tomu, aby indexy byly vždy umístěny vpravo od označení funkce,
se použije tato definice:
\newcommand{\diag}{\mathop{\mathrm{diag}}\nolimits}
AMSLaTeX (ve svém balíku amsopn) poskytuje příkaz
\DeclareMathOperator, který udělá stejnou práci jako první definice nahoře.
Na vytvoření našeho původního příkazu \diag napíšeme:
\DeclareMathOperator{\diag}{diag}
\DeclareMathOperator* deklaruje operátor tak, aby byly spodní a horní indexy
umístněny v pozici \limits (viz
Otázku Pozície horných a dolných indexov operátorov).
Zátvorky a symboly premenlivej veľkosti
Jedným z mála do očí bijúcich nedostatkov v schopnostiach TeXu sádzať
matematiku je nemožnosť sadzby oddeľovačov vo vnútri matematických výrazov.
TeX poskytuje primitíva nazvané \left a \right, ktoré môžu byť
použité na modifikáciu zátvoriek (akéhokoľvek druhu) okolo matematických
výrazov, ako napríklad:
\left( <výraz> \right) — veľkosť zátvoriek sa prispôsobí vertikálnemu
rozmeru výrazu.
V mnohých prípadoch pri matematike budete potrebovať príkaz \middle
na použitie vo výrazoch ako:
\left\{ x\in \mathbb{N} \middle| x \mbox{ párne} \right\}
na špecifikáciu množiny párnych prirodzených čísel
Systém e-TeX (viď Projekt NTS) definuje presne takýto príkaz, ale
používatelia Knuthovho pôvodného systému potrebujú pomoc. Balík Donalda
Arseneaua braket poskytuje príkazy pre špecifikáciu množín (ako je
uvedené vyššie) a pre Diracovove zátvorky (a symboly „bra“ a „ket“).
Balík používa príkaz zabudovaný do e-TeXu (ak zistí, že beží pod e-TeXom).
braket.sty: CTAN: braket
Prispôsobenie veľkostí metematických fontov
V plain TeXu musíte pri zavádzaní novej veľkosti fontu deklarovať, aké
veľkosti fontov majú byť použité v matematike. Dá sa to spraviť deklaráciou
\textfont, \scriptfont a \scriptscriptfont pre matematické
rodiny fontov, ktoré používate. Všetky tieto veci sú popísané v kapitole 17
TeXbooku (Otázka Knihy o TeXu a příbuzná literatura) a iných knihách a tutoriáloch
(Otázka Tutoriály k TeXu nebo LaTeXu), ktoré sa plain TeXom zaoberajú dostatočne
detailne.
V LaTeXu je samozrejme všetko automatizované: pre každú veľkosť (textového)
fontu existuje schéma určujúca, aké veľkosti matematických fontov sa majú použiť.
„Schéma“ najskôr skontroluje sadu „známych“ veľkostí textu, z ktorých pre
každú sú dopredu deklarované veľkosti matematiky. Ak veľkosť textu nie je
„známa“, sú veľkosti script- a scriptscriptfont vypočítané ako fixné
násobky veľkostí textových fontov. (Použité koeficienty sú
\defaultscriptratioensuremath{=}0.7,
a \defaultscriptscriptratioensuremath{=}0.5.)
Vzorec pevného násobku môže produkovať nepríjemné výsledky (hlavne ak používate
fonty, o ktorých si LaTeX myslí, že sú dostupné iba vo fixnej sade veľkostí).
Môžete taktiež chcieť úplne zmeniť myšlienky LaTeXu, napríklad sadzbou
matematiky citeľne menšej alebo väčšej, než je okolný text. Za týmto
účelom môže byť použitý LaTeXovský príkaz:
\DeclareMathSizes{}{}{}{}
(tento príkaz používa aj
LaTeX na definíciu vlastnej sady veľkostí). Toto vytvorí (alebo
znovuvytvorí) veľkosti matematických fontov pre veľkosť textového fontu
(ako \textsize sa použije ,
ako \scriptsize a ako \scriptscriptsize bude použité
).
\DeclareMathSizes môže byť použitý iba v preambule dokumentu: dostupné je
iba jedno priradenie pre každú veľkosť textového fontu na celý dokument.
Tri bodky
Tri bodky sú bežne požadované a LaTeX ich natívne poskytuje v celkom
slušnom rozsahu (\dots, \cdots, \vdots a \ddots). Použitím
balíku graphics môžete zmeniť sklon príkazu \ddots:
$ ... \reflectbox{$\ddots$} ... $
Hoci postup funguje, nie je odpoúčaným spôsobom dosiahnutia žiadaného výsledku
(viď nižšie). LaTeXovský rozsah naviac nepostačuje požiadavkám každého.
Tri balíky poskytujú rozšírenie.
Sada AMSLaTeX poskytuje rozsah „sémanticky pomenovaných“ elíps na použitie
v rôznych situáciach: \dotsb pre použitie medzi dvojicami binárnych
operátorov, \dotsc medzi dvojicami čiarok a tak ďalej.
Balík yhmath definuje príkaz \adots, ktorý je podobný príkazu
\ddots (iba so sklonom nadol namiesto sklonu nahor). yhmath
obsahuje celkom zaujímavý font, ktorý rozširuje štandardný cmex,
detaily nájdete v dokumentácii. Nevýhodou tohto nastavenia je (hoci
\adots
je iba makro), že sa balík pokúša nahrať vlastný font a v prípade, že font
nemáte nainštalovaný, zapríčíňuje varovnú hlášku substitúcie „missing font“
(chýbajúci font).
Balík mathdots (okrem opravy chovania TeXovských/LaTeXovských
\ddots a \vdots pri zmene veľkosti fontu) poskytuje
„inverzne diagonálne“ elipsy \iddots (fungujú podobne ako
\adots
balíku yhmath, len lepšie).
Dokumentácia yhmath je v distribúcii spracovaná (nemusíte teda balík
inštalovať iba pre čítanie dokumentácie). Documentácia mathdots je
na konci samotného súboru balíku.
amslatex: CTAN: amslatex
graphics.sty: súčasť sady CTAN: graphics
mathdots.sty: CTAN: mathdots
fonty yhmath: CTAN: yhmath-fonts
makrá yhmath: CTAN: yhmath-macros
Pozície horných a dolných indexov operátorov
Najbežnejším ručne písaným štýlom pre výrazy je umiestnenie limitných výrazov
operátorov ako \sum a \int fyzicky nad a pod operátor.
V TeXu/LaTeXu píšeme tieto výrazy pomocou horných a dolných indexov
aplikovaných na operátor, ale nie vždy sa vo výstupe TeXu objavia ako
v „ručne písanej“ podobe.
Dôvod je ten, že keď sa výraz objaví v normálnom texte (je teda v štýle
\textstyle), umiestnenie hraníc operátoru by mohlo viesť k nerovnému
riadkovaniu (a teda k ťažko čitateľnému textu). Je preto obvyklé
(v \textstyle) umiestňovať tieto hranice ako horné a dolné indexy
premenných.
Toto však nie je obecne dostačujúce, takže je poskytované primitívum
\limits:
$\sum\limits_{n=1}^{m} ...$
ktoré umiestni hranice priamo nad a pod symbol.
Naopak, môžete chcieť zmeniť usporiadanie hraníc v \displaystyle.
Za týmto účelom existuje príslušný príkaz \nolimits:
\[\sum\nolimits_{n=1}^{m} ...\]
ktorý umiestni hranice ako v \textstyle.
(Zapamätajte si, že makro \int má obyvkle \nolimits zabudované
do definície. V TeXbooku existuje príklad, ktorý ukazuje, ako zvláštne
vyzerá \int\limits vysádzané.)
Text vo vnútri matematiky
Keď v TeXu/LaTeXu píšeme matematiku, majú písmená, z ktorých tvoríme bežný
text, špeciálny význam: všetky sa stanú jednopísmenovými názvami premenných.
Písmená sú sádzané kurzívou, ale nie rovnakou kurzívou ako v bežnom texte:
postupnosť písmen v matematike (napríklad „here“) vyzerá zvlášte
„zvlnená“ oproti tomu istému slovu v texte vysádzanom kurzívou. Rozdiel je,
že text v kurzíve je podrezaný (kerned), aby sa písmená k sebe dobre zmestili,
ziatiaľ čo matamtika je sádzaná, aby vyzerala, ako keď navzájom násobíte
h, e, r a písmeno e. Ďalšou zvláštnosťou
matematiky v TeXu je ingorovanie medzier: prinajlepšom môžeme v tomto
zvláštnom fonte písať slová.
Ak chceme mať dobre vyzerajúci text medzi matematikou, musíme zaviesť určité
opatrenia. Ak používate LaTeX, nasledujúca rada by vám mala pomôcť.
Najjednoduchšie je použiť \mbox alebo \textrm:
$e = mc^2 \mbox{here we go again}$
Problém je, že veľkosť textu zostane totožná s okolitým textom, takže
$z = a_{\mbox{other end}}$
vyzerá veľmi zle.
Ďalší jednoduchý postup využíva \textrm a vyzerá sľubnejšie:
$z = a_{\textrm{other end}}$
je určite v poriadku. Okolitý text však nemusí byť v našej antikve. Ak vám
záleží na rovnakom texte, musíte si vybrať medzi \textrm, \textsf
a tak ďalej.
(Matematická inštancia vašej antikvy (\mathrm) má správnu veľkosť, ale
keďže je určená na použitie v matematike, medzery sú ignorované — používajte
\mathrm iba pre názvy premenných v kolmej rímskej abecede.)
Tieto problémy môžete opraviť výbermi veľkosti písma v texte, napr.:
$z = a_{\mbox{\scriptsize other end}}$
Príklad bude fungovať, ak je okolitý text štandardnej dokumentovej veľkosti,
inak dostanete nesprávnu veľkosť.
Tieto skratky sú (takmer) v poriadku pre „občasného“ matematika, ale
skutoční matematici žiadajú postup, ktorý odbremeňuje sádzača od myšlienok
vyžadovaných pri predchádzajúcich postupoch. AMSLaTeX, ako obvykle,
poskytuje všetko potrebné — príkaz \text. Príkaz v skutočnosti balík
amstext, ale ten je nahratý „globálnym“ balíkom amsmath,
takže kdokoľvek správne používa AMSLaTeX, má príkaz poruke, takže aj vtipný
matematici môžu napísať:
\usepackage{amsmath}
...
$z = a_{\text{other end}}$
a text bude rovnakej veľkosti a v rovnakom fonte ako text okolitý.
AMSLaTeX tiež prostredníctvom príkazu \intertext poskytuje opatrenia
pre komentáre vložené do niektorej z jeho viacriadkových zobrazovacích
štruktúr. Napríklad:
\begin{align}
A_1&=N_0(\lambda;\Omega')-
\phi(\lambda;\Omega'),\\
A_2&=\phi(\lambda;\Omega')-
\phi(\lambda;\Omega),\\
\intertext{a konečne} A_3&=\mathcal{N}(\lambda;\omega).
\end{align}
umiestni text „a konečne“ na samostatný riadok pred posledný riadok
zobrazenia. Príkaz môže byť použitý iba bezprostredne po príkaze \\.
Vyčerpávajúcu dokumentáciu AMSLaTeXu nájdete v súbore amsldoc
(v distribúcii), ktorý je dostupný aj na webe:
ftp://ftp.ams.org/pub/tex/doc/amsmath/amsldoc.pdf
amsldoc.tex,
amsmath.sty a
amstext.sty sú distribuované ako súčasť AMSLaTeXu
\AMSLaTeX{}: CTAN: amslatex
Opätovné použitie rovnice
Pri opakovaní existujúcej rovnice nechcete iba rovnakú matematiku, chcete aj
opätovne použiť pôvodné návestie.
Balík amsmath nám prichádza na pomoc:
\usepackage{amsmath}
...
\begin{equation}
a=b
\label{eq1}
\end{equation}
...
Nezabudnite, že
\begin{equation}
a=b
\tag{\ref{eq1}}
\end{equation}
Druhá inštancia ensuremath{a=b} tu bude vysádzaná s kópiou návestia prvej
inštancie vytvorenou príkazom \tag.
Vyčerpávajúcu dokumentáciu AMSLaTeXu nájdete v súbore amsldoc
(v distribúcii), ktorý je dostupný aj na webe:
ftp://ftp.ams.org/pub/tex/doc/amsmath/amsldoc.pdf
amsldoc.tex a amsmath.sty: CTAN: amslatex
Obrázky v TeXovém dokumentu
Součástí TeXových dokumentů mohou být obrázky. Protože pro obrázky
existuje mnoho formátů, existuje i více způsobů, jak zařídit, aby se nám
na daném místě dokumentu obrázek objevil. Obrázek se však nevkládá
„přímo do zdrojového textu“. Do zdrojového textu se umístí volání
makra, které vytvoří místo pro obrázek. Skutečný import obrazových dat
provede posléze TeXový ovladač.
Obvykle používaný formát obrázků je eps (zapouzdřený PostScript).
Pro vložení takového obrázku lze použít balík epsfig.
Další informace o vkládání postscriptových obrázků a odkazy na starší
balíky viz Vkládání PostScriptových obrázků v LaTeXu.
Vkládání bitmapových obrázků ve formátu pcx podporují ovladače
v emTeXu (viz Příkazy typu \special).
epsfig: CTAN: epsfig
Obtékání obrázků
Někdy je třeba umístit obrázek dovnitř odstavce, na jednu stranu
textového zrcadla – takovým obrázkům říkáme obtékané.
Balík picinpar definuje prostředí window, kterým lze obrázek
umístit na levou nebo pravou stranu odstavce (nebo dokonce doprostřed).
picinpar: CTAN: picinpar
CTAN: wrapfig
CTAN: window
Sazba názvů programů používaných spolu s TeXem
Donald Knuth definoval logo TeXu jako konkrétní ukázku toho,
co TeX umí.
Žel, mnozí si však myslí, že tím přivodil záplavu různých log,
jako například AMSTeX, PiCTeX, BibTeX atd. vytvořených pomocí
velkého množství různých fontů, velikostí i základních linek — jistě
vám to znepříjemní čtení.
Lamport vymyslel logo LaTeX, což pak přirozeně vedlo ke vzniku
nynějšího loga LaTeX 2e.
Není však nutně třeba uvádět tato loga v jejich
komplikovaném tvaru všude tam, kde se příslušný název
vyskytne, avšak pro ty, kdo trvají na
jejich použití, existuje v souboru CTAN: texnames veliké množství
předdefinovaných log. Fonty loga METAFONTu
mohou být přidány k fontům, které LaTeX 2e již zná
(tak, že se pak může měnit jeho rozměr spolu s okolním textem) použitím
balíku CTAN: mflogo. Při použití Knuthova fontu pro METAPOST však můžou
nastat problémy (můžete dostat
něco jako „META O T“).
Nezoufejte, autor samotný používá jenom MP.
Pro ty, kdo nepotřebují mít v dokumentu vysázená ta „správná“ loga,
stačí použít
AMS-\TeX{} (AMS-TeX) namísto AMSTeX,
Pic\TeX{} (PicTeX) namísto PiCTeX, Bib\TeX{} (BibTeX)
namísto BibTeX atp.
Jednosloupcový výtah v dvousloupcovém dokumentu
Občas je třeba dvousloupcový článek opatřit jednosloupcovým výtahem.
Nejlepším způsobem je použít následující trik:
\documentclass[twocolumn]{article}
...
\begin{document}
... % \author, etc
\twocolumn[
\begin{@twocolumnfalse}
\maketitle
\begin{abstract}
...
\end{abstract}
\end{@twocolumnfalse}
]
Takto však nebude pracovat správně, použijete-li \thanks v seznamu
\author. Pokud potřebujete takto speciálně číslovaný seznam,
docílíte toho následovně:
\title{Demonstration}
\author{Me, You\thanks{}}
\twocolumn[
... to samé, co výše ...
]
{
\renewcommand{\thefootnote}%
{\fnsymbol{footnote}}
\footnotetext[1]{Thanks for nothing}
}
atd.
Alternativně můžete použít balík abstract,
který (kromě jiných
usnadnění práce s abstrakty) poskytuje k použití příkaz \saythanks
a prostředí
onecolabstract, které odstraní potřebu „švindlovat“ s \thanks
a poznámkami. Můžete to použít následovně:
\twocolumn[
\maketitle
\begin{onecolabstract}
... text
\end{onecolabstract}
]
\saythanks
abstract: CTAN: abstract
Změna slov používaných LaTeXem
LaTeX používá několik symbolických jmen, které vytvářejí automatický
text (nadpisy, tituly atd.). Např. část textu vysázená příkazem
\tableofcontents je vždy volána příkazem \contentsname.
Umožňuje však běžnému uživateli změnit jména používaná standardními
třídami, což je užitečné hlavně při tvorbě neanglických dokumentů.
Pokud třeba daný dokument píše český autor, chce, aby
byl obsah nazván opravdu „Obsah“ a ne „Table of Contents“, v tom
případě musí do preambule dokumentu vložit text
\renewcommand{\contentsname}{obsah}
Nicméně pro neanglického uživatele je přirozené používat
babel, protože nabízí mnoho výhod a zpříjemňuje vytváření
dokumentů v jejich přirozeném jazyce. Zvláště pokud v babelu
vyberete
jiný jazyk, tak vám zajistí, že LaTeXová symbolická jména budou vhodně
překládána do vybraného jazyka podle vašeho pořadavku.
Bohužel výběr jmen v babelu nevyhoví vždy požadavkům uživatele,
proto je
třeba mechanismus pro náhradu standardních jmen. Kdykoliv
babel
vybere jiný jazyk, pak jsou všechna standardní jména přeložena právě do
tohoto jazyka. Babel zvláště vybírá hlavní jazyk dokumentu,
když je
vykonán příkaz \begin{document}, který ihned zničí veškeré změny
standardních jmen, která byla provedena v preambuli dokumentu
používajícího babel. Proto babel definuje příkaz,
který uživateli
umožní změnit definice symbolických jmen na základní výrazy jeho
mateřštiny:
\addto\caption<language>, kde <language> značí jazyk,
který babel bude používat jako primární. Např.
\addto\captionczech{%
\renewcommand{\contentsname}{Obsah}%
}
Výpisy zdrojových kódů v LaTeXu
Někteří neuroticky estetičtí programátoři považují „krásné“ zdrojové
kódy za něco k nezaplacení. Správně strukturované zdrojové kódy však
mají své místo při psaní disertačních prací studenty informatických i
jiných věd, od kterých se očekává, že v budoucnosti budou
programovat. Běžně se používá doslovné citování kódů.
Doslovné vkládání kódů je však rozebíráno jinde (viz
Otázku Doslovné (verbatim) vložení souboru v LaTeXu). Problém sazby specifikací algoritmů
(otázka Sadzba pseudokódu v LaTeXu) je v tomto FAQ uveden také na jiném
místě.
„Krásné“ kódy jsou generovány pomocí pre-compileru, avšak balík listings
toto převádí na LaTeX.
Dobrým pre-compilerem je systém lgrind (CTAN: lgrind), který
obsahuje mnoho výhodných vylepšení, která se vám mohou hodit, a také má
velice široký výběr jazyků.
Systém tiny_c21 (CTAN: tiny_c21) je o něco novější, uživatelé
si zde mohou vygenerovat vlastní ovládací soubory pro daný jazyk, jehož
kódy zpracovávají.
Systém C++2LaTeX (CTAN: C++2LaTeX-1_1) přináší mnoho
doporučení pro používání s jazyky C a C++.
Systém highlight (CTAN: highlight) je obecný konvertor
produkující formáty HTML, RTF a také TeX/LaTeX. Tvrdí
o sobě, že je vysoce přispůsobitelný, distribuce obsahuje definice mnoha
jazyků. Dokumentace je poskytována jako README soubor v distribuci,
který se sám nazýva manuálem.
listings: CTAN: listings
Sadzba pseudokódu v LaTeXu
Konsenzus týkajúci sa správnosti sadzby pseudokódu neexistuje. Máme teda na výber
z množstva balíkov LaTeXu určených na tvorbu esteticky príjemných výpisov
pseudokódu.
Pseudokód sa od výpisu skutočného programu líši v tom, že nemá striktnú syntax
ani sémantiku. Pseudokód má predstavovať čistú interpretáciu algoritmu, takže
môže potrebovať použiť matematické zápisy, obrázky, tabuľky a iné vlastnosti
LaTeXu, ktoré sa v tradičných programovacích jazykoch neobjavujú.
Sadzba výpisov programov je opísaná na inom mieste (viď
Otázku Výpisy zdrojových kódů v LaTeXu).
Určite si môžete na sadzbu pseudokódu vytvoriť vlastné prostredie, napríklad
pomocou prostredia tabbing alebo list — nie je to ťažké, ale môže to byť
nudné. Oplatí sa teda vyskúšať nasledujúce balíky (všetky špecificky navrhnuté
pre sadzbu pseudokódu).
Sada algorithms (obsahujúca balíky algorithm
a algorithmic, oba potrebné pre bežné použitie) má jednoduché
rozhranie a produkuje celkom pekný výstup. Poskytuje primitíva pre príkazy,
ktoré môžu obsahovať ľubovolné príkazy LaTeXu, komentáre a sadu iteratívnych
a podmienených konštrukcií. Tieto primitíva môžu byť ľahko predefinované, aby
na výstupe produkovali odlišný text. Podpora pre pridávanie nových primitív
však neexistuje. Samotná sadzba pseudokódu sa koná v balíku
algorithmic. Balík algorithms používa prostriedky balíku
float na sekvenčné číslovanie algoritmov, umožnenie algoritmom
„plávať“ (float) ako obrázky alebo tabuľky a na podporu vloženia zoznamu
algoritmov na úvod dokumentu.
Balík alg, podobne ako algorithms, poskytuje plávajúce
prostredie algoritmov spolu so všetkými ďalšími drobnosťami. alg ale
môže svojim plávajúcim prostrediam vytvoriť nadpis v množstve (prirodzených)
jazykov. alg naviac (narozdiel od algorithms), umožňuje
jednoducho pridávať nové konštrukcie.
Balík newalg má tak trochu podobné rozhranie ako algorithms,
ale jeho výstup má pripomínať celkom príjemnú sadzbu použitú v knihe
„Introduction to Algorithms“ od Cormana, Leisersona, Rivesta a Steina.
newalg bohužiaľ nepodporuje plávajúce prostredie ani prispôsobenie
výstupu.
Poctivé použitie štýlu „Introduction to Algorithms“ dosiahneme Cormenovým
vlastným balíkom clrscode: tento balík bol použitý v druhom vydaní
knihy.
Balík algorithm2e existuje už veľmi dlho a je široko používaný
a odporúčaný. Používa balík float na poskytnutie možnosti plávajúcich
popisov algoritmov, stále však môžete použiť voľbu „H“ balíku
float, ak chcete, aby sa algoritmus obajvil tam, „kde ho napíšete“.
Použitie balíku program sa trochu líši od použitia iných balíkov.
Namiesto textového módu používa pri sadzbe programov matematický mód, zlomy
riadkov sú dôležité. program neobsahuje plávajúce prostredie, ale
čísluje algorithmy ako alg a algorithms. Prispôsobovanie
a rozširovanie nie je podporované.
Žiadny z uvedených balíkov nie je dokonalý. Faktory, ktoré by mali ovplyvniť
váš výber, sú preferovaný štýl výstupu, potreba rozšírenia alebo modifikácie
kľúčových slov a potreba umiestniť algoritmy do plávajúceho prostredia ako
obrázky a tabuľky .
Dostupnosť dokumentácie:
- sady
algorithms
je poskytovaná v súbore algorithms.ps
(tiež dostupný ako zdrojový súbor LaTeX{}u). Dokumentácia spomína balíky, ako
by boli v skutočnosti jeden nazvaný algorithms.
- balíku
program
(v stave, v akom je) sa nachádza v súbore
program.msg.
- balíku
clrscode
sa nachádza v súbore clrscode.pdf
v distribúcii.
- balíku
algorithm2e
môžete nájsť v distribúcii v súbore
algorithm2e.tex (pre spracovanie potrebuje balík samotný).
algorithm2e.sty: CTAN: algorithm2e
sada algorithms: CTAN: algorithms
alg.sty: CTAN: alg
clrscode.sty: CTAN: clrscode
float.sty: CTAN: float
newalg.sty: CTAN: newalg
program.sty: CTAN: program
Sazba symbolu hlavní hodnoty integrálu
Tento symbol („přeškrtnutý“ znak integrálu) není obsažen v žádném
fontu, který by byl bežně dostupný uživatelům TeXu nebo LaTeXu,
může však být vytvořen pomocí následujícího makra:
\def\Xint#1{\mathchoice
{\XXint\displaystyle\textstyle{#1}}%
{\XXint\textstyle\scriptstyle{#1}}%
{\XXint\scriptstyle\scriptscriptstyle{#1}}%
{\XXint\scriptscriptstyle\scriptscriptstyle{#1}}%
\!\int}
\def\XXint#1#2#3{{\setbox0=\hbox{$#1{#2#3}{\int}$}
\vcenter{\hbox{$#2#3$}}\kern-.5\wd0}}
\def\ddashint{\Xint=}
\def\dashint{\Xint-}
Pro sazbu jednou přeškrtnutého znaku integrálu se použije příkaz
\dashint, pro sazbu dvakrát přeškrtnutého znaku použijeme
\ddashint.
Používání nových jazyků v babelu
Babel umí pracovat se širokou řadou jazyků, avšak občas se
stane, že nový
uživatel chce používat jazyk, který jeho instalace TeXu neumí
používat.
Např. požadavek \usepackage[catalan]{babel} vyvolá chybové
hlášení
Package babel Warning: No hyphenation patterns
... were loaded fo the language `Catalan'.
... I will use the patterns loaded for
... \language=0 instead.
Problém je v tom, že TeX neví, jak dělit katalánská slova:
musíte mu to říct dříve, než babel začne
pracovat. V LaTeXové
instalaci musíte přidat do souboru language.dat, který je součástí
babelovké
instalace, řádek
catalan cahyphen.tex
který, pokud odstraníte komentovací znaménko (%), řekne LaTeXu, že
má
nahrát vzor pro katalánské dělení slov, pokud mu řeknete, aby vytvořil
nový formát. Bohužel, v mnoha babelovských distribucích právě tento
řádek není správný – musíte zkontrolovat jména souborů, obsahující
vzory, které se chystáte použít. Jak můžete vidět, v autorově systému
je očekáván soubor cahyphen.tex, ačkoliv jméno souboru, který je
v systému, je cahyph.tex. V lepších distribucích je většina
těchto souborů obsažena, chybějící soubory si můžete najít na CTANovském
archívu. Pokud si stáhnete nový soubor, zajistěte jeho korektní
instalaci (viz Otázku Instalace nových balíčků). Nakonec musíte obnovit
formáty,
které používáte (ve skutečnosti většina uživatelů používá
babel
v LaTeXových dokumentech, takže zde bude dost formátů, které bude
nutno upravit; nicméně uživatelé často opravují soubory, které s tímto
nemají nic společného).
- teTeX, fpTeX
:
pro obnovu všech formátu použijte toto:
fmtutil –all
Pokud si chcete být jisti, co děláte, (to není pro zbabělé), můžete si
vybrat posloupnost formátů, které chcete upravovat, a pro každý z nich
spustit
fmtutil –byfmt <formatname>, kde <formatname> je něco
jako LaTeX nebo
fmtutil –byhyphen <hyphenfile>, kde <hyphenfile> je
soubor specifikující dělení slov do formátu – obvykle language.dat.
- MikTeX
V MikTeXovské distribuci do verze 2.0 udělejte:
Start – Programs – Miktex – Maintenance –
Create all format files nebo otevřete DOSovské okno a napište
initexmf –dump.
V MikTeXovských distribucích verze 2.0 a vyšší může být celá procedura
provedena pomocí GUI. Nový jazyk vyberete takto:
Start – Programs – Miktex 2 – Miktex options
a vyberte Languages. Vyberte jazyk ze seznamu a stiskněte tlačítko
Apply a svou volbu potvrďte stiskem tlačítka OK. Pak vyberte
general a stiskněte tlačítko Update Now. Další možností je
vyeditování souboru language.dat jak bylo popsáno výš a spusťte
initexmf –dump
jako u verzí nižších než 2.0.
POZOR: Je možné, že váš TeX skončí s chybovou hláškou týkající se
nedostatku paměti při vytváření nových formátů. Většina TeXových
implementací má na uchování dat týkajících se tohoto problému vyhrazeno
pole fixní délky. Pokud shledáte, že vám přetekla paměť, může
to být zásluha prohledávání seznamu dostupných jazyků ve vašem souboru
language.dat, pak se tedy podívejte, který z jazyků může být odstraněn.
Jak vysázím hindský či sanskrtský text dévanágarským písmem?
Dévanágarské písmo obsahuje značné množství vícenásobných spřežek, z nichž
některé mají prohozené pořadí znaků. Takové spřežky nelze vytvářet
využitím TeXových ligačních tabulek. Navíc hindština nepoužívá všechny
sanskrtské spřežky a moderní hindština upouští od řady dalších spřežek,
přičemž volba použitých spřežek je do jisté míry dána osobním citem autora
textu. Potřebovali bychom tedy možnost změny ligačních tabulek
konzistentně ve všech řezech dévanágarského písma při běhu TeXu.
V balíčku Velthuis Devan\=agar\=\i je proto sazba řešena
dvoustupňově. Nejprve se vstupní text zapsaný v sedmibitovém kódování,
které navrhl Frans Velthuis, zpracuje preprocesorem, jehož výstupem je
TeXový či LaTeXový kód. Přesný postup je vysvětlen v manuálu.
Balíček devanagr.zip je součástí distribucí TeX Live a
MikTeX, lze jej získat na CTAN a vývojová verze je dostupná anonymním
CVS. Informace najdete na http://devnag.sarovar.org/.
Starší verze preprocesoru pro sazbu dévanágarským písmem byla
implementována též jako Omega Translation Process (Yannis Haralambous and
John Plaice: Low-level Devan=agar={i} support for Omega—Adapting
devnag. TUGboat Volume 23, Number 1 / 2002, p. 50).
|