Jak udělám X v TeXu nebo LaTeXu? CSTUG

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 csx{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 CTANamslatex
ntheorem: CTANntheorem


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 (CTAN2etools). 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 (CTAN2etools) 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 amssymbamsfonts).

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 CTANbbold. 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 txfontspxfonts, 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 CTANwas


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 framedshaded. 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: CTANbackgrnd
boites.sty: CTANboites
framed.sty: CTANframed
memoir.cls: CTANmemoir
shade.tex: CTANshade


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: CTANupquote


Predefinovanie csx{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é.

csx{newcounter{fred}} okrem iného vytvorí príkaz csx{the}fred, ktorý sa pri sádzaní expanduje na hodnotu počítadla „fred“.

Definícia csx{the}fred 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 csx{the}fred 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ť csx{thesection} tak, aby sa expandoval s ukončovacou bodkou. Takáto zmena csx{thesection} však má vplyv na definúciu csx{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 csx{thepage} (všetky čísla stránok v obsahu budú pravdepodobne rovnakého tvaru) alebo predefinovaním csx{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 csx{@pnumwidth}, csx{@tocrmarg} a csx{@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 csx{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: CTANkoma-script
memoir.cls: CTANmemoir
tocloft.sty: CTANtocloft


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ť CTAN2etools
enumitem.sty: distribuované ako súčasť CTANbezos
memoir.cls: CTANmemoir
paralist.sty: CTANparalist


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 csx{topsep}, csx{itemsep} a csx{parsep}), ale nespomína už, že sú nastavované automaticky v zozname samotnom. Funguje to tak, že každý zoznam vykoná príkaz csx{@list} (hĺbka sa objavuje vo forme malých rímskych číslic). csx{@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 csx{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 csx{makecompactlist} pre uživateľské definície zoznamov a používa ho na definície kompaktných zoznamov itemize*, enumerate*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 expdlistmdwlist, 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, mdwlistparalist 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 csx{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ť CTAN2etools
enumitem.sty: distribuované ako súčasť CTANbezos
expdlist.sty: CTANexpdlist
memoir.cls: CTANmemoir
mdwlist.sty: distribuované ako súčasť CTANmdwtools
paralist.sty: CTANparalist
savetrees.sty: CTANsavetrees


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 csx{suspend} a csx{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 csx{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ť CTAN2etools
mdwlist.sty: distribuované ako súčasť CTANmdwtools


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 csx{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 csx{captionabove}, obsahujú tiež voľbu triedy, ktorá zaistí, že v prostredí tabuliek csx{caption} znamená csx{captionabove}.

Manuálny postup je celkom jednoduchý: topcapt prepne hodnoty parametrov systému LaTeXe{} csx{abovecaptionskip} (štandardne 10pt) a csx{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: CTANbooktabs
sada KOMA script: CTANkoma-script
topcapt.sty: CTANtopcapt


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 „csx{columnwidth}“). V parametri rozloženia clpr musíte mať v direktíve @{} príkaz csx{extracolsep}. Príklad:

\begin{tabular*}{\columnwidth}{@{\extracolsep{\fill}}lllr}
csx{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, RJ 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 longtabletabularx. Radšej si prečítajte dokumentáciu, pretože použitie balíku je značne odlišné.
ltxtable.sty: distribuované ako súčasť CTANcarlisle
tabularx.sty: distribuované ako súčasť CTAN2etools
tabulary.sty: distribuované ako súčasť CTANcarlisle


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 csx{strut}, ktorý udáva vhodnú medzeru vzhľadom na aktuálnu veľkosť textu. Umiestnenie príkazu csx{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 csx{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 csx{strut} neopravuje, môžete postupovať vlastnou definíciou pomocou \rule{0pt}{length} — čo sa podobá definícii príkazu csx{strut}. Balík bigstrut definuje podobný príkaz, ktorý môžete na tento účel použiť: csx{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ť CTAN2etools
bigstrut.sty: distribuované ako súčasť CTANmultirow
booktabs.sty: CTANbooktabs
tabls.sty: CTANtabls


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á csx{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ť CTAN2etools
ltablex.sty: CTANltablex
ltxtable.sty: generované použitím CTANltxtable
stabular.sty: distribuované ako súčasť CTANsttools
supertabular.sty: CTANsupertabular
xtab.sty: CTANxtab


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 csx{noalign}“ (zle umiestnený csx{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, csx{centering}, csx{raggedright} a csx{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 csx{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 csx{PBS} pred príkazom, ktorý ju mení a obnovujete s csx{RBS} po príkaze; csx{RBS} je v skutočnosti mierne preferovaný, ale starý trik tu zostáva).

Fígle csx{PBS} a csx{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 CTAN2etools


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 csx{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ť CTAN2etools


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}

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 csx{multirow}.

Príkaz csx{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 csx{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 csx{bigstrut}, použijete voliteľný parameter príkazu csx{multirow}.

Dokumentácia multirowbigstrut sa dá nájsť v súboroch balíkov v podobe komentárov.
bigstrut.sty: distribuované ako súčasť CTANmultirow
multirow.sty: CTANmultirow


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: CTANfloat
multicol.sty: distribuované ako súčasť CTAN2etools


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 csx{@fpsep} nad každý float, takže csx{@fptop} obvykle obsahuje opravu.)

LaTeXovské štandardy sú:
csx{@fptop} = (0pt + 1fil) ensuremath{-} csx{@fpsep}
csx{@fpsep} = 8pt + 2fil
csx{@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 csx{frontmatter} a csx{backmatter}.

Následuje vysvětlení. Použije-li se \chapter bez hvězdičky:

  1. vloží se něco do .toc souboru;
  2. je-li čítač secnumdepth větší nebo roven nule, zvětší se čítač kapitoly o jedničku a vysází se jeho hodnota.
  3. 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 (CTANtocvsec2) 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 (CTANtocbibind) má volbu pro vložení samotného obsahu, bibliografie, rejstříku atd. do obsahu.


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 csx{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 csx{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: CTANbabel
hyperref.sty: CTANhyperref
minitoc.sty: CTANminitoc


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 csx{makeindex}, csx{index} a csx{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 csx{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ú, csx{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 vyčerpávajúcu sadu indexovacích prostriedkov, vrátane príkazu csx{newindex}, ktorý dovoľuje definíciu nových štýlov indexu. csx{newindex} si vezme „značku“ (pre použitie v indexovacích príkazoch), náhrady za prípony súborov .idx.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 csx{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 csx{newindex}:

\newindex[]{}

splitidx vygeneruje súbor csx{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: CTANindex
makeidx.sty: súčasť distribúcie LaTeXu
memoir.cls: CTANmemoir
multind.sty: CTANmultind
splitidx.sty a splitindex: CTANsplitindex


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 csx{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 URL{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: csx{titleref}, csx{byname} a csx{nameref}. Balík nameref tiež definuje príkaz csx{byshortnameref}, ktorý používa voliteľný „krátky“ parameter nadpisu pre príkazy kapitol a sekcií.
byname.sty: distribuovaný s CTANsmartref
hyperref.sty: CTANhyperref
memoir.cls: CTANmemoir
nameref.sty: distribuovaný s CTANhyperref
smartref.sty: CTANsmartref
titleref.sty: CTANtitleref


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ť CTAN2etools
xr-hyper.sty: distribuované s CTANhyperref


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 csx{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 csx{settowidth}) a csx{widthofpbox} funkčne analogické príkazu csx{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 csx{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 csx{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 csx{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 csx{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: CTANeqparbox
pbox.sty: CTANpbox
varwidth.sty: CTANvarwidth


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 CTANthreeparttable od Donalda Arsenaua.

Balík ctable rozšiřuje model threeparttable a taktéž používá myšlenky balíku booktabs. Příkaz csx{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 csx{ctable} udělá vytvořený float obrázkem místo tabulky.

Pokud není tabulka plovoucí, pak můžete použít jednu z možností:

  1. 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.
  2. Vložte tabulku do prostředí minipage. To vám umožňuje použít všechny vlastnosti poznámek bez většího úsilí.
  3. Použijte CTANthreeparttable. Balík je sice vytvořen pro plovoucí tabulky, ale můžete ho použít i v tomto případě.
  4. Použijte tabularx nebo longtable z LaTeXové distribuce (CTAN2etools). Klasické poznámky sice zvládá o poznání hůře než prostředí tabular, avšak povoluje poznámky pod čarou.
  5. Stáhněte balík footnote (skrýtá se v archivu na CTANmdwtools. 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ě.
  6. 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.


Š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 captionccaption (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: CTANcaption
capt-of.sty: CTANcapt-of
ccaption.sty: CTANccaption
float.sty: CTANfloat
balík KOMA script: CTANkoma-script
memoir.cls: CTANmemoir


Š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: CTANtitling


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\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 CTANsectsty nabízí jednoduše použitelnou sadu příkazů pro tuto práci, zatímco balík CTANtitlesec umožňuje pokročilejší řešení této problematiky (titlesec přichází s druhým balíkem – titletoc – který 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 CTANfncychap 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.


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 reportbook) 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: CTANappendix
balík KOMA script: CTANkoma-script
memoir.cls: CTANmemoir


Š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: CTANccaption
float.sty: CTANfloat


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 (CTAN2etools), 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 CTANfootmisc 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 csx{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 csx{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 csx{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: CTANccaption


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 csx{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 csx{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 csx{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). csx{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 csx{label} musí byť vo vnútri parametru csx{footnote}.

Balík fixfoot nám to trochu uľahčuje: pomocou príkazu csx{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: CTANfixfoot
footmisc.sty: CTANfootmisc
memoir.cls: CTANmemoir


Čí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: CTANfootmisc
footnpag.sty: CTANfootnpag
perpage.sty: CTANperpage


Zmena okrajov v LaTeXu

Zmena veľkosti tela textu LaTeXovského 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. Dokumentácia Otázku Dokumentované LaTeXovské zdroje (.dtx soubory) je kvalitná a obsiahla.

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\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: CTANchngpage
geometry.sty: CTANgeometry
layout.sty: distribuované ako súčasť CTAN2etools
vmargin.sty: CTANvmargin


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\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: CTANnopageno
balík KOMA script: CTANkoma-script
memoir.cls: CTANmemoir
scrpage2.sty: distribuované ako súčasť CTANkoma-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 csx{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), csx{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 csx{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 csx{include}.) Kód predpokladá, že budete vždy pre csx{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 csx{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: CTANfink


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 csx{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 csx{listfiles} zaregistruje iba veci vložené „štandardnými“ LaTeXovskými mechanizmami (csx{documentclass}, csx{usepackage}, csx{input}, csx{include}, csx{includegraphics} atď.). Ak však použijete primitívnu syntax TeXu:

  \input mymacros
mymacros.tex nebude príkazom csx{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 csx{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 preteTeXmikTeX. Je užitočný, hlavne keď posielate prvú kópiu dokumentu.
bundledoc: CTANbundledoc
snapshot.sty: CTANsnapshot


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 csx{special} poskytované ovládačom, ktorý používate. Z tohto dôvodu potrebujete balíku povedať, pre ktorý ovládač má generovať príkazy csx{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ď URL{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: CTANbackgrnd
changebar.sty: CTANchangebar
framed.sty: CTANframed
lineno.sty: CTANlineno
memoir.cls: CTANmemoir
vertbars.sty: CTANvertbars


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{\csx{gobble}}[1]{} a csx{iffalse} ... csx{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ť. csx{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 csx{include}/csx{includeonly}. Ak vložíte vaše súbory pomocou csx{include} (namiesto csx{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 csx{includeonly} môžete LaTeXu dodať vyčerpavajúci zoznam potrebných súborov. Súbory, ktoré nie sú vložené pomocou csx{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 csx{include} použitím príkazu csx{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 csx{if}).

version poskytuje podobné prostriedky ako comment.sty (t.j., príkazy csx{includeversion} a csx{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 csx{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ť csx{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: CTANaskinclude
comment.sty: CTANcomment
excludeonly.sty: CTANexcludeonly
memoir.cls: CTANmemoir
optional.sty: CTANoptional
pagesel.sty: distribuované s balíkmi Heika Oberdieka CTANoberdiek
pdfpages.sty: CTANpdfpages
selectp.sty: CTANselectp
verbatim.sty: distribuované ako súčasť CTAN2etools
version.sty: CTANversion
versions.sty: CTANversions


Č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.epschapter2/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 csx{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 csx{subimport} robí to isté pre podadresár (relatívna cesta radšej než absolútna), existujú zodpovedajúce príkazy csx{includefrom} a csx{subincludefrom}.
import.sty: CTANimport


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: CTANlatexmake
latexmk: CTANlatexmk
texi2dvi: distribuované ako súčasť CTANtexinfo


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 csx{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 csx{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á (lastpagelastsheet), ktoré sú nastavené (po prvom spracovaní dokumentu) na ekvivalent návestí LastPage a TotalPages).

Balíky count1tototpages potrebujú podporu balíku everyshi.
count1to.sty a everyshi.sty: distribuované v CTANms
lastpage.sty: CTANlastpage
memoir.cls: CTANmemoir
totpages.sty: CTANtotpages


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ť CTANcarlisle


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ť?

  • Od TeXu verzie 3.0 boli medze povolenej vzdialenosti rozdelenia od začiatku alebo konca slova programovateľné (viď Otázku Nezvykle rozdělená slova) a dotyčné hodnoty mohli byť z nejakého dôvodu v niektorých makrách, ktoré používate, nesprávne nastavené. TeX nebude rozdeľovať menej než csx{lefthyphenmin} znakov od začiatku slova, ani menej než csx{righthyphenmin} pred koncom slova, tým pádom nebude rozdeľovať slová kratšie než súčet týchto dvoch hodnôt. Napríklad pre angličtinu sú tieto hodnoty 2 a 3, takže TeX nebude rozdeľovať slová kratšie než 5 písmen, ak si o slove myslí, že je anglické.
  • {tolerance=200 emergencystretch=0pt TeX nebude rozdeľovať slová, ktoré už boli rozdelené. Napríklad anglické priezvisko Smyth-Postlethwaite nebude rozdelené, čo môže spôsobovať problémy. Toto je správny sadzobný štýl pre angličtinu (nemusí byť správny pre iné jazyky), ak však naozaj rozdelenie potrebujete, môžete nahradiť spojovník v priezvisku príkazom csx{hyph} definovaným
      \def\hyph{\penalty0\hskip0pt\relax}
    
    Tento spôsob ale obvykle neodporúčame. Balík hyphenat definuje sadu príkazov na vloženie rozdelenia na miesto rozličných interpunkčných znamienok.}
  • Slová môžu byť akcentované. Príčiny a riešenia sú uvedené v Otázke Akcentovaná slova se nedělí.
  • Rozdelenie mohlo byť prehliadnuté. TeXovský algoritmus je dobrý, ale nie je neomylný a v niektorých jazykoch prehliadne vhodné rozdelenia. V takomto prípade musíte dať TeXu explicitné inštrukcie pre rozdelenie.
Príkaz csx{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: CTANhyphenat


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 csx{hyphenpenalty} a csx{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 csx{nohyphens}, ktorý svoj parameter vysádza bez rozdelenia.

Tretia alternatíva je nastavenie csx{left-} a/alebo csx{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ásho zozname 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ť csx{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: CTANhyphenat


Ako spraviť bold-tt alebo bold-sc

LaTeX štandardne neposkytuje žiadne prostriedky spracovania tučných „teletype“ alebo „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 cmttcmcsc („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: CTANbold-extra
bold tt a small caps fonty: CTANbold


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, který je součástí distribuce LaTeXových nástrojů (CTAN2etools) definuje příkaz \bm, který lze použít kdekoliv v matematickém režimu.
  • balík amsbsy, který je součástí AMSLaTeXu (CTANamslatex) 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.


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 csx{_} (alebo ešte horšie csx{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: CTANunderscore


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 csx{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 csx{ifx}), je potrebné vytvoriť makro, ktorého expanzia vyzerá rovnako ako expanzia csx{jobname}. Toto môžeme spraviť pomocou csx{meaning}, ak „odrežeme“ prefix príkazu csx{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 csx{StripPrefix} nemusí byť definovaný, ak používate LaTeX — tu už interný príkaz (viď Otázku \@ a @ ve jménech maker) csx{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 csx{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 csx{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 csx{euro}), zatiaľ čo europs prispôsobí Euro symbol okolitému textu (poskytujúc príkaz csx{EUR}). Pre použitie niektorého z balíkov s latin9 kódovaním potrebujete definovať csx{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ý, ale kompatibilná verzia je zdarma k dispozícii na http://www.YandY.com/download/marvosym.zip. 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: CTANchina2e
EC fonts: CTANec
euro fonts: CTANeuro-fonts
euro-ce fonts: CTANeuro-ce
eurofont.sty: CTANeurofont
eurosym fonts: CTANeurosym
marvosym fonts: CTANmarvosym-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 csx{textcopyright}, csx{textregistered} a csx{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 csx{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 csx{textregistered} v pozícii horného indexu (aby symbol vyzeral podobne ako csx{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 csx{DeclareMathOperator}, který udělá stejnou práci jako první definice nahoře. Na vytvoření našeho původního příkazu csx{diag} napíšeme:

  \DeclareMathOperator{\diag}{diag}
csx{DeclareMathOperator*} deklaruje operátor tak, aby byly spodní a horní indexy umístněny v pozici csx{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é csx{left} a csx{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 csx{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: CTANbraket


Prispôsobenie veľkostí metematických fontov

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 csx{textfont}, csx{scriptfont} a csx{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ú csx{defaultscriptratio}ensuremath{=}0.7, a csx{defaultscriptscriptratio}ensuremath{=}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:
csx{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 csx{textsize} sa použije , ako csx{scriptsize} a ako csx{scriptscriptsize} bude použité ).

csx{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 (csx{dots}, csx{cdots}, csx{vdots} a csx{ddots}). Použitím balíku graphics môžete zmeniť sklon príkazu csx{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: csx{dotsb} pre použitie medzi dvojicami binárnych operátorov, csx{dotsc} medzi dvojicami čiarok a tak ďalej.

Balík yhmath definuje príkaz csx{adots}, ktorý je podobný príkazu csx{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 csx{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 csx{ddots} a csx{vdots} pri zmene veľkosti fontu) poskytuje „inverzne diagonálne“ elipsy csx{iddots} (fungujú podobne ako csx{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: CTANamslatex
graphics.sty: súčasť sady CTANgraphics
mathdots.sty: CTANmathdots
fonty yhmath: CTANyhmath-fonts
makrá yhmath: CTANyhmath-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 csx{sum} a csx{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 csx{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 csx{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 csx{limits}:

  $\sum\limits_{n=1}^{m} ...$
ktoré umiestni hranice priamo nad a pod symbol.

Naopak, môžete chcieť zmeniť usporiadanie hraníc v csx{displaystyle}. Za týmto účelom existuje príslušný príkaz csx{nolimits}:

  \[\sum\nolimits_{n=1}^{m} ...\]
ktorý umiestni hranice ako v csx{textstyle}.

(Zapamätajte si, že makro csx{int} má obyvkle csx{nolimits} zabudované do definície. V TeXbooku existuje príklad, ktorý ukazuje, ako zvláštne vyzerá csx{int}csx{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ť csx{mbox} alebo csx{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 csx{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 csx{textrm}, csx{textsf} a tak ďalej.

(Matematická inštancia vašej antikvy (csx{mathrm}) má správnu veľkosť, ale keďže je určená na použitie v matematike, medzery sú ignorované — používajte csx{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 csx{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 csx{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: URL{ftp://ftp.ams.org/pub/tex/doc/amsmath/amsldoc.pdf}
amsldoc.tex,
amsmath.sty a
amstext.sty sú distribuované ako súčasť AMSLaTeXu
\AMSLaTeX{}: CTANamslatex


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 csx{tag}.

Vyčerpávajúcu dokumentáciu AMSLaTeXu nájdete v súbore amsldoc (v distribúcii), ktorý je dostupný aj na webe: URL{ftp://ftp.ams.org/pub/tex/doc/amsmath/amsldoc.pdf}
amsldoc.tex a
amsmath.sty sú distribuované ako súčasť AMSLaTeXu (CTANamslatex)


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 CTANepsfig. 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).


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 CTANpicinpar definuje prostředí window, kterým lze obrázek umístit na levou nebo pravou stranu odstavce (nebo dokonce doprostřed).

Další podobné balíky můžete v případě zájmu najít na CTANu (CTANwrapfig nebo CTANwindow).


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 CTANtexnames 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 CTANmflogo. 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 „MetaPost“.

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 (dostupný z CTANabstract), 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              


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 (CTANlgrind), 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 (CTANtiny_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 (CTANC++2LaTeX-1_1) přináší mnoho doporučení pro používání s jazyky C a C++.

Systém highlight (CTANhighlight) 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: CTANlistings


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 algorithmalgorithmic, 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 algalgorithms. 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: CTANalgorithm2e
sada algorithms: CTANalgorithms
alg.sty: CTANalg
clrscode.sty: CTANclrscode
float.sty: CTANfloat
newalg.sty: CTANnewalg
program.sty: CTANprogram


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.


CSTUG
(c) 1997, 1998, 2003 Tomáš Hudec, Libor Škarvada
Poslední aktualizace: 13.11.2004 23:15