DODODODODODOD
FAKULTA INFORMATIKY
MASARYKOVA UNIVERZITA
ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODO
□ ODODODODODOD ODODODODODODQ
Kterak sobě v T[=Xu dokument vyrobiti při zachování duševního zdraví
David Antoš
O čem to bude
► předpokládám uživatelskou znalost I^T^Xu
► pokusím se vysvětlit principy
co se v T^Xu děje
► proč se někdy „chová divně"
► best practices
► článek na konferenci
► matematika
► obrázky
► bibliografie
► ladění a kontrola překladu
2
Základní pojmy
► ... a většina toho má v názvu „TfX".. .
► Tj=Xje sázecí systém založený na nízkoúrovňových řídících sekvencích, které popisují, jak na stránku umístit text.
► např. \hskip, \if
► engine: implementace Tj=Xu
► např. TeX, PDFTeX, LuaTeX, XeTeX, ExTeX, . ..
► makrobalíky: sady maker rozšiřující funkcionalitu
► např. plainTEX, I5TeX, ConTEXt, ...
► často i specializované
► formát: obvykle dump paměti TfXu po načtení makrobalíku
► pouze optimalizace
► formáty výstupních souborů:
► DVI (DeVice Independent)
► PDF
► pdftex
tex - DVI - dvipdfm - PDF
► tex - DVI - dvips - PostScript - ps2pdf nebo pstopdf -PDF
3
Základy značkovaní v |ATj=Xu
\documentclass[volby] {styl} ... preambule ... \begin{document}-... text . . . \end{document}-
styl: article, report, book, letter, slides
nebo to, co dodali organizátoři konference (např. lines)
volby: např. a4paper
4
Preambule
obsahuje typicky
► natažení balíků
balíky rozšiřují funkcionalitu |ATp_Xu ► \usepackage[utf8]{inputenc}
\usepackage[english,czech]{babel}
► definice maker
5
Text dokumentu
► text může obsahovat speciální znaky, např.
nezlomitelná mezera
► — pro -,---pro —
*■ 10-15, interpunkce - jako zde - je oddělena mezerami,
doporučuji sázet ~— ► to mark an inserted sentence—like here—use---and
spačes
► použití maker
► \guillemotleft France\guillemotright vysadí «France»
► použití prostředí \begin{proof} Je zjevný. \end{proof} vysadí
Důkaz. Je zjevný.
Doporučení - preambule
► tahejte jen balíky, které opravdu potřebujete
► balíky mohou vytvořit konflikt
► v horším případě tiše předefinovat nějaké makro
► balík hyperref vždy jako poslední
► nevytvářejte nový článek smazáním textu předchozího článku, ale ze vzorového dokumentu (pokud možno)
omezuje to chyby jako
► zapomenutý původní nadpis
► loňské místo konání konference
v článcích používejte „rozumně standardní" balíky neboje přibalte
► editor obvykle pracuje na „přiměřeně nové distribuci T^Xu"
► pozor na balíky typu \usepackage{times} - v konferenčním stylu změní písmo
7
Odbočka: značkovací jazyky
► značkovací jazyk obsahuje vlastní text a instrukce pro jeho zpracování
► např. nadpis nebo \section{nadpis} vizuální a logické značky
► vizuální popisují, jak má objekt vypadat
► {\bf tohle bude tučně}
► logické popisují, co objekt znamená
\strong{tohle sice taky, ale...}
► ... ale můžeme to jednou definicí změnit
► tedy: používejte logické značkování v textu a nadefinujte si makro
Základy makroprogramování
► IATeX
► \newcommand{CMD}[NARGS] {DEFN}
► \renewcommand
► \newenvironment{ENV}[NARGS]{BEGDEF}{ENDDEF} \renewenvironment
► kontroluje, zda makro nebylo již definováno varianty s „re" předefinují význam makra
► příklad
\newcommand-C\oper}- [1] {\ensuremath{\mathbf {\hat{#l}-}-}-}-
► použití: \oper{A}
► vysadí: A
► \makeatletter a \makeatother
9
Doporučení - značkovaní textu
nadefinujte si makra pro věci, které potřebujete více než jed klidně až na úroveň základních symbolů:
\newcommand{\MathematicalEntity}[1]{{\it #1}} \newcommand{\RoutingM\MathematicalEntity{R}-}-\newcommand{\FirewallM\MathematicalEntity{F}-}-
Ize pak psát stylem
$$\RoutingARP_l=(\NextHopInt(\Routing_i), \NextHopMAC(\ARP_j))$$
a sázet tak
/?a = (NHInt(/?/),NHMac(^))
... srovnej s
$$\mathit{RA}_l=(\mathrm{NH_{Int}}(R_i), \mathrm{NH_{Mac}}(A_j))$$
Doporučení - značkovaní textu
► před definovaním vlastních maker je dobré se podívat, jestli vhodný balík neexistuje
► příklady u konferenčních stylů většinou obsahují příklady s větami a důkazy (značkujte je stejně)
► do konferenčních stylů nezasahujte např. zápornými mezerami nebo změnami velikosti čehokoli
► je vhodné pojmenovávat vlastní makra velkými písmeny
► aproximace jmenného prostoru
doporučuji definice dát do zvláštního souboru a ten načíst v preambuli pomocí \input{soubor}
11
Chci změnit vzhled dokumentu
► tohle nedělejte v článku, kterému dodali styl!
► na většinu věcí existuje v I^T^Xu balík
► jen ho najít. ..
► dodržujte typografické zvyklosti
► minimalistické změny jsou obvykle jediné rozumné
► lze předefinovat makra v dokumentu
► najdeme definici makra ve zdrojácích |ATf£Xu
► vytáhneme do preambule
► obalíme \makeatletter a \makeatother
► předefinujeme
12
Příprava zdrojového textu - česká specifika
► historicky se užíval formát cs(pdf)latex a \usepackage{czech}-
► dnes pro to není důvod
► rozumná sazba češtiny v |ATj=Xu dnes
► dokument v UTF-8
► \usepackage[czech]{babel} \usepackage[utf8]{inputenc}
► Babelu lze nastavit více jazyků a přepínat mezi nimi
► přepíná typografické zvyklosti a dělení slov
► překládáme (pdf)latex
► lze použít i jiné kódování (latin2, cpl250)
► do UTF-8 se dají přímo psát uvozovky
► do jiného kódování lze psát ,,uvozovky takto''
13
Česká specifika
► skrčky UTF-8
► některé editory do UTF-8 umístí na začátek tři bajty Byte-Order Mark
nelze míchat zdrojové soubory v různém kódování
► některé styly natvrdo nastavují kódování (fithesis, OASICS, ...)
► bezpečná cesta pro malé množství diakritiky
► p\v{r}\'{\i}li\v{s} \v{z}lut\'y k\accent23u\v{n} příliš žlutý kůň
► diakritika ve výstupních souborech Tj=Xu je obvykle kompozitní
► z PDF tedy většinou nejde udělat cuťn'paste
14
Anglická specifika
► nej lepší způsob sazby uvozovek je ''like this);
► hyphen -
► en-dash —
► em-dash---(jako interpunkce bez mezer, jakkoli to vypadá
divně)
15
Jak Tj=X zpracovává vstupní text
brutálně zjednodušeno, zanedbáváme matematiku, tabulky, ...
► čtení souborů, rozpoznánítokenů
► proto požírá obvykle mezery za makrem
► otevření souboru píše do logu za „("
► expanze maker až do úrovně primitivů
► vzniká seznam materiálu typu box-glue-penalty
► ten se láme na základě hodnoty „badness"
► zlom odstavce, vzniká seznam zalomených řádků
► bez dělení slov
► s dělením slov
► s povolením mezislovních mezer \emergencystretch
► zlom a kompletace stránky
► stránkový zlom na základě penalt
► hlavičky, patičky, čísla stran, .. . (output rutina)
16
Problémy při překladu
► chyba při překladu je obvykle v makroexpanzi
(./tex.vrb) [14] (./tex.vrb) [15] Runaway argument?
! Paragraph ended before \@xverbatim was complete.
\par
1.349 \end{frame}
► ? nápověda, r pokračuj, x konec
doběhnutí překladu neznamená, že je dokument v pořádku
► není to validace jako u XML
► nutno zkontrolovat log a výstup
17
Ladění
► když selže „kouknu a vidím"
► čtěte chybové hlášky
► ty ale dokáží být docela kryptické
► chyba (zejména Runaway argument) se často projeví o kus dále
► půlení intervalu pomocí \iffalse \fi
► umístíme na vhodná místa (tj. nikoli doprostřed makra) a zkusíme tím chybu lokalizovat
► vhodné i pro hledání zavlečené mezery
► vhodný model programování: step-wise refinement
► programování po kousku, časté překlady
18
Problémy ve zlomu, varování v logu
► přetečené a podtečené boxy
(./tex.vrb
Overfull \hbox (19.29063pt too wide) in paragraph at lines 12—14
[] []\0Tl/cmtt/m/n/10.95 \newcommand{\oper}[1] {\ensuremath{\mathbf{\hat{#l}}}}
je třeba vizuálně zkontrolovat (chyby pod 1 pt nebo badness pod 200 je většinou možno ignorovat)
► problémy s křížovými odkazy (je třeba překládat třikrát) There were undefined references
► chybějící odkazy do bibliografie
► s volbou draft se do dokumentu sází „slimáci"
19
Bibliografie
► osvědčilo se (mi)
► ke každému článku v archivu hned napsat bibliografický záznam
► z adresářové struktury vyrobit bib soubor pomocí find
► správný překlad s bibliografií: latex - bibtex - latex - latex
► vzniklé bbl lze vložit přímo do zdrojáku
► nicméně pro systematické úpravy je lepší editovat stylový soubor (bst)
20
Obrázky v IATeXu
► používejte pdfTj=X, umí načítat
► PDF, JPEG, PNG
► balík graphicx
► pro vektorové obrázky je vhodné preferovat vektorový formát
► pokud musíte použít Tp_X, umí načíst EPS
21
Zdroje dokumentace, literatura
► hledání vhodného balíku
► http://ctan.org/
► dokumentace balíku
► CTAN
► texdoc balik
► info latex2e
► knihy
► Goossens, Mittelbach, Samarin: The |ATf£X Companion - D. Knuth: The TeXbook
► kapitoly "fine points of mathematical typing"
► P. Olšák: Tf£Xbook naruby (reference pro pokročilé)
► V. Eijkhout: Tf£X by topic (reference pro velmi pokročilé)
► mírný off-topic: Knuth, Larrabee, Roberts: Mathematical Writing
22
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky.
INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ
Inovace doktorského studia na Fakultě informatiky MU (IDSnaFI) (CZ.1.07/2.2.00/15.0196)