Makra pro jednotlivé typy dokumentů CSTUG

Vydavatelé časopisů mají širokou škálu požadavků na vzhled článků a zatímco mnoho vydavatelů přijímá elektronické předlohy v (La)TeXu, často nepředkládají makra doporučená pro uchování ve veřejných archívech. Přesto však je v CTANu dostupný značný počet maker. Hledáním podle vašeho jména časopisu v CTANovském katalogu (http://www.tex.ac.uk/tex-archive/help/Catalogue/catalogue.html) můžete objevit přesně to, co sháníte.

Nestane-li se tak, můžete kontaktovat případného vydavatele vašeho článku; mnoho vydavatelů má makra vystavena na svých webových stránkách nebo jinak zpřístupněná. Zkontrolujte, zda vydavatel nabízí makra vhodná pro prostředí, které chcete používat: někteří z nich nemají žádná makra pro současnou verzi LaTeXu, např. trvají na tom, že nejlepší je LaTeX 2.09. Někteří vydavatelé vás vyzvou, že jim to můžete poslat v jakékoliv podobě, že vůbec nezáleží na tom, jaká makra používáte, jiní vám pouze doporučí, že máte používat co nejméně rozšíření standardních balíků, aby bylo snadné převést váš článek do jejich podoby.


Výťah z viacerých článkov

Občas sa stane, že je treba vydať zborník konferencie, do ktorej boli zaslané príspevky v LaTeXu.

Najbližšie vždy použiteľnému riešeniu majú triedy Petera Wilsona combine a Federica Garciu subfiles.

Combine definuje prostriedky pre „\import“ celých dokumentov a umožňuje špecifikovať významné vlastnosti rozmiestnenia dokumentu, ako aj globálny obsah a iné. Prídavný balík combinet dovoľuje použitie \title\author (atď.@) \importovaných dokumentov v globálnom obsahu.

Subfiles (trieda) sa používa v zložkových súboroch viacsúborového projektu, príslušný balík subfiles sa používa v hlavnom súbore. Pomocou opatrení môžu byž zložkové súbory vysádzané s iným formátom stránky, ....

„Surovší“ toolkit je poskytovaný balíkmi includexmoredefs od Matta Swifta (oba sú súčasťou balíku frankenstein) ponúka možnú cestu vpred.

Includex umožňuje použiť \includedoc na celé články — použijete \include na súbory kapitol (chapter) v obyčajnom výťahu. Nespraví to však všetku prácu za vás. Musíte analyzovať požívanie balíkov jednotlivými článkami a zaistiť, že zhodná množina bude uvedená v preambule hlavného projektu. Úplne iným prístupom je použitie balíku pdfpages a vloženie článkov poskytnutých v PDF formáte do PDF dokumentu vytvoreného PDFLaTeXom. Balík definuje príkaz \includepdf, ktorý akceptuje parametre podobné parametrom príkazu \includegraphics. Uvedením kľúčových slov ako voliteľných parametrov príkazu môžete špecifikovať, ktoré stránky uvedeného súboru chcete vložiť, ako aj rôzne detaily týkajúce sa rozvrhnutia vložených strán.
combine.cls: CTANcombine
combinet.sty: CTANcombine
frankenstein: CTANfrankenstein
pdfpages.sty: CTANpdfpages
subfiles.cls atď.: CTANsubfiles


Životopis (Curriculum Vitae, R'esum'e)

Trieda pre životopisy vytvorená Andrejom Brodnikom je dostupná z CTANvita. Pri tejto triede môže byť zvolený predmet (sú ponúkané voľby pre počítačových vedcov aj spevákov) i jazyk (môžete písať v češtine, slovenčine aj angličtine). Rôzne rozšírenia môžu byť vytvorené pomocou súborov pre voľbu triedy alebo makra definovaného na triedach pre vytvorenie nového typu položky.

Trieda Didiera Vernu curve je založená na modeli, v ktorom je CV (životopis) tvorené množinou rubrík (každá sa zaoberá dôležitou položkou, o ktorej chcete pojednávať, ako „vzdelanie“, „pracovné skúsenosti“ atď.). Dokumentácia je podporená niekoľkými vzorovými súbormi, je poskytnutý aj mód pre emacs.

Alternatívou používania oddelenej triedy je zavedenie balíku na jednu zo štandardných tried. Napríklad balík currvita od Axela Reicherta bol odporučený tímu FAQ. Jeho výstup isto vyzerá dobre.

Existuje aj LaTeX 2.09 balík resume, ktorý toho okrem rady, aby sme ho nepoužívali, veľa neobsahuje.
currvita.sty: CTANcurrvita
curve.cls: CTANcurve
resume.sty: CTANresume


Listy a podobné dokumenty

LaTeX samotný poskytuje triedu letter, ktorá je všeobecne nenávidená. Súčasný autor už dávno vzdal všetky snahy. Ak ju napriek tomu chcete vyskúšať, ale vadí vám spôsob vertikálneho posunutia jednostranového listu, skúste nasledujúci hack:

\makeatletter
\let\@texttop\relax
\makeatother
umiestnite do preambuly svojho súboru.

„Urob si sám“ je obvyklou stratégiou. Knuth (pre použítie s jeho plain TeXom v knihe TeXbook) a Kopka s Dalym (v ich dokumente Guide to LaTeX) poskytujú spracované príklady.

Existujú však aj alternatívy — v skutočnosti je ich nechutne veľa. Nasledujúci zoznam poskytuje iba malý výber.

Najväčšiou a najobsiahlejšiou triedou je newlfm. Časť mena („lfm“) naznačuje, že trieda vie vytvárať listy (letters), faxy a memorandá. Dokumentácia je veľmi objemná a balík vyzerá byť flexibilný.

Trieda akletter od Axela Kielhorna je jedinou ďalšou triedou odporúčanou na zahrnutie v tomto FAQ, ktorej dokumentácia je dostupná v angličtine.

Trieda dinbrief, je taktiež odporúčaná, no jej dokumentácia je dostupná iba v nemčine.

Listové triedy sú zahrnuté aj v skvelých balíkoch KOMA-script (scrlttr2: dokumentácia v angličtine) a ntgclass (brief: dokumentácia iba v holandčine). Aj keď tieto balíky môžu byť kvalitné (kvalitu vzbudzujú už samotné balíky, v ktorých sa vyskytujú), neboli používateľmi odporúčané.
akletter.cls: CTANakletter
brief.cls: distribuované ako súčasť CTANntgclass
dinbrief.cls: CTANdinbrief
newlfm.cls: CTANnewlfm
scrlttr2.cls: distribuované ako súčasť CTANkoma-script


Vyvažovanie stĺpcov na konci dokumentu

Voľba štandardných tried twocolumn donúti LaTeX vysádzať text dokumentu do dvoch stĺpcov. Na poslednej stránke však majú stĺpce obvykle rôznu dĺžku — hovoríme, že takéto stĺpce sú nevyvážené. Mnohým ľuďom (väčšine) sa nevyvážené stĺpce nepáčia.

Najjednoduchším riešením je používanie balíku multicol namiesto voľby twocolumn (multicol štandardne stĺpce na poslednej strane vyvažuje). Používanie balíku multicol má svoju cenu: jeho špeciálna výstupná rutina znemožňuje používanie floatov vo vnútri stĺpcov, aj keď povoľuje floaty plnej šírky (napríklad prostredie figure*).

Výsledkom je stála potreba vyvažovanie stĺpcov na konci twocolumn dokumentu. Prácu môžeme samozrejme spraviť manuálne: \pagebreak vložený na správne miesto poslednej strany často vytvorí požadovaný efekt, nie je to však lákavé, a ak je posledná strana tvorená automaticky generovaným textom (napr. bibliografia alebo index), vloženie príkazu bude zložité.

Balík flushend poskytuje riešenie. Je to tak trochu nebezpečný kus makrokódu, ktorý upravuje jednu z najkomplikovanejších častí jadra LaTeXu bez nasadenia ochrán. Balík iba mení vlastnosti na konci dokumentu (jeho príkaz \flushend je štandardne povolený) a ďalší príkaz dovoľuje nastavenie finálneho vyváženia. Iné balíky zo sady poskytujú prostriedky na vkladanie materiálu plnej šírky do dvojstĺpcových dokumentov.

Balík balance upravuje aj výstupnú rutinu (trochu opatrnejšie ako flushend).

Používatelia by si mali byť vedomí, že balíky sú nachýlné nechať sa zmiasť v prítomnosti floatov: ak sa tento problém vyskytne, je pravdepodobné, že bude potrebné ručné nastavenie dokumentu. Práve tento problém viedol autora balíku multicol k potlačeniu jednostĺpcových (v zmysle šírky) floatov.
balance.sty: distribuovaný ako súčasť CTANpreprint
flushend.sty: distribuovaný ako súčasť CTANsttools
multicol.sty: distribuovaný ako súčasť CTAN2etools


Nadpis mojej sekcie je pre hlavičku stránky príliš dlhý

Príkazy LaTeXu na vytváranie sekcií štandardne sprístupňujú kapitoly a sekcie pre použitie v hlavičkách stránok (a pre podobné prípady). Hlavičky stránok majú začne obmedzený priestor a často sa stane, že nadpis je príliš veľký. Príkazy LaTeXu na vytváranie sekcií preto akceptujú voliteľný parameter:

\section[krátky nadpis]{úplný nadpis}

Ak je prítomný , je použítý pre obsah aj nadpis stránky.

Používanie rovnakého textu v obsahu a záhlaví nemusí byť dostačujúce. Ak sú nadpisy vašich kapitol veľmi dlhé (ako viktoriánske romány), rozumný postup je mať skrátenú položku pre obsah a skutočne strohú položku v záhlaví.

Jedným z problémov je zvyklosť sádzať hlavičky vo verzálkach. Prečo ich teda nesádzať ako pre obyčajné čítanie? Bez modifikácie LaTeXu to je nemožné, ale balík fancyhdr poskytuje pre použitie v riadkoch hlavičky (a pätky) príkaz \nouppercase na potlačenie tendence LaTeX sádzať verzálky. Triedy v sade KOMA-script v prvom prípade nerobia verzálky.

Príkazy na vytváranie sekcií v skutočnosti požívajú príkazy „mark“ na predávanie informácií hlavičkám, napríklad \chapter používa \chaptermark, \section používa \sectionmark atď. S touto znalosťou môžeme dosiahnuť trojvrstvovú štruktúru kapitol:

\chapter[stredná verzia]{rozsiahla verzia}
\chaptermark{stručná verzia}

Uvedené by malo uspokojiť každú potrebu.

Kapitoly to majú jednoduché, máloktorá kniha má hlavičku na začiatočnej stránke kapitoly. V prípade sekcií musíme vziať do úvahy vlastnosti \*mark príkazov: do hlavičky je umiestnená prvá značka (mark) na strane (pri zlyhaní tohoto postupu je to posledná značka z predchádzajúcej strany). Výsledkom je, že postup pre sekcie je únavnejší:

\section[[stredná verzia]{rozsiahla verzia%
              \sectionmark{stručná verzia}}
\sectionmark{stručná verzia}

Prvý príkaz \sectionmark sa postará o hlavičku stránky, do ktorej spadá príkaz \section, druhý sa stará o nasledujúce stránky. Všimnite si potrebu voliteľného parametru \section, aj keď „stredná verzia“ je v skutočnosti rovnaký text ako „rozsiahla verzia“.

Podobné opatrenie je potrebné aj pre kapitoly, ak trieda, ktorú používate, vkladá hlavičku stránky na začiatočnú stranu kapitoly.

Balík titlesec spravuje záhlavia úplne iným spôsobom. Používatelia tohto balíku by sa mali obrátiť na jeho dokumentáciu.

Trieda memoir sa vyhýba hlúpostiam poskytnutím ďalšieho nepovinného parametru pre príkazy kapitol a sekcií, napríklad:

\section[stredná verzia][stručná verzia]%
        {rozsiahla verzia}

Používatelia memoir si teda vždy môžu text hlavičky ušiť na mieru bez väčších problémov.
fancyhdr.sty: CTANfancyhdr
balík KOMA script: CTANkoma-script
memoir.cls: CTANmemoir
titlesec.sty: CTANtitlesec


Číslovanie stránok $n$ z $m$

Zistenie čísla poslednej stránky dokumentu z vnútra dokumentu je trochu záludné. Balík lastpage nám má v tomto smere uľahčiť život. Definuje návestie LastPage, ktoré predstavuje správne číslo (po dostatočne veľa spracovaniach LaTeXom). Trieda memoir tiež definuje návestie poslednej strany.

Dokumentácia balíku fancyhdr presne popisuje, ako môžete túto informáciu využiť na vytvorenie číslovania uvedeného v znení otázky.
dokumentácia fancyhdr: CTANfancyhdr
lastpage.sty: CTANlastpage


Číslovanie strán podľa kapitol

V minulosti bolo pre voľne viazané technické manuály obvyklé číslovať strany podľa kapitol (v určitých situáciach je to dobré, napr. pri korekciách kapitoly, pri ktorých pridáte pár strán, stačí distribuovať iba zmenenú kapitolu).

Problém vyzerá na prvý pohľad rovnaký ako v odpovedi na Otázku Číslovanie rovníc, obrázkov a tabuliek, základná technika je tiež dosť podobná.

Upratanie voľných koncov, zaistenie nastavenia čísla strany na správnu hodnotu na začiatku každej kapitoly atď. však predstavuje väčšiu výzvu. Toto je dôvod, pre ktorý bol napísaný balík chappg. Okrem zjavných vecí toho však robí viac.

Používatelia sa často pýtajú na čísla strán v sekcii, to ale nedáva zmysel. Číslovať strany môžete v objektoch dokumentu, ktoré vždy začínajú na nových stranách.

Dokumentácia chappg sa nachádza v súbore balíku.
chappg.sty: CTANchappg


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