Sazba nejen obrázků, tabulek, . . . v LATEXu Programování F1400 + F1400a doc. RNDr. Petr Mikulík, Ph.D. podzimní semestr 2020 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -10 -5 0 5 10 sin(x) cos(x) sin(x)/x Programování F1400 + F1400a Sazba nejen obrázků, tabulek, . . . v LATEXu Formáty pro tisk dokumentů a pro obrázky PostScript – ps: programovací jazyk pro vektorový popis tištěné stránky; textový soubor je čitelný (lze prohlížet a opravovat v textovém editoru); implementován v „lepších“ tiskárnách; pro zobrazení na displeji a jednoduchých tiskárnách se používá program Ghostscript Encapsulated PostScript – eps: postscriptový obrázek, tedy pouze jedna stránka a bez bez řídících sekvencí pro tiskárny Portable Document Format – pdf: podmnožina postscriptu, není to programovací jazyk; binární soubor s volitelnou kompresí (zkuste \pdfcompresslevel=0 v pdfLATEXu); navíc více či méně non-portable záležitosti: šifrování, formuláře (javascript, . . . ), anotace, 3D, . . . Graphics Interchange Format – gif: bezeztrátový obrázek, 256 barev, patent na LZW algoritmus vypršel roku 2004, animovaný obrázek; ne LATEX Portable Network Graphics – png: bitmapový obrázek, bezeztrátový JPEG kompresní formát – jpg: ztrátová komprese, pouze pro fotky, nepoužívat pro grafy, čarová schémata nebo popisky (rušivé artefakty, rozplizlé čáry, rozpatlaná písmena) Programování F1400 + F1400a Sazba nejen obrázků, tabulek, . . . v LATEXu PostScript – ukázka PostScript: jednotky souřadnic jsou v bodech (1/72 palce), ukázka kódu (poznámka: je to programovací jazyk s postfixovou notací) %!PS-Adobe-2.0 %%Title: a.ps %%BoundingBox: 99 144 401 301 %%Orientation: Portrait %%Pages: 1 %%EndComments %%Page: 1 1 % Seda horizontalni cara: 0.3 setgray 12 setlinewidth % nastav barvu a sirku cary 100 150 moveto 300 0 rlineto % souradnice koncovych bodu cary stroke % vytiskni caru % Fialovy vybarveny ctverecek: 1 0 0 setrgbcolor % barva nasledujiciho utvaru newpath % zacne cesta kolem noveho utvaru 100 200 moveto 300 0 rlineto -150 100 rlineto % souradnice tri vrcholu closepath fill stroke % uzavri cestu, vybarvi a vytiskni utvar showpage % vytiskni stranku Poznámka/domácí úloha: srovnejte kód se značkovacím jazykem svg. Programování F1400 + F1400a Sazba nejen obrázků, tabulek, . . . v LATEXu Ořez obrázků – bounding box Správný ořez (crop) obrázků – před vložením obrázku je třeba správně ořezat okraje, jinak bude obrázek vytištěn podivně malý a odražený od popisku: bitmapa: ořezejte okraje obrázku v bitmapovém (pixelovém) editoru pdf: použijte příkaz pdfcrop obrazek.pdf (encapsulated) postscript: ručně upravte parametry %%Bounding box nebo použijte příkaz ps2eps obrazek.eps nebo příkaz fixbb obrazek.eps nebo pomocí programu gsview Obr. 1.1. Špatný ořez. Obr. 1.1. Správný ořez. Programování F1400 + F1400a Sazba nejen obrázků, tabulek, . . . v LATEXu Dokumenty s obrázky – zajímavosti z příkazové řádky Extrahování bitmapových obrázků z pdf souboru v původní kvalitě: pdfimages -j fajl.pdf xx Konverze souborů mezi různými formáty z příkazové řádky: convert obr.png obr.gif convert -density 150 obr.eps obr.png Konverze mezi postscriptem a pdf – různé možnosti: pdftops hello.pdf hello.ps . . . PostScript Level 2 pdf2ps hello.pdf hello.ps . . . PS Level 1 bez komprese obrázků ps2pdf hello.ps hello.pdf convert hello.pdf hello.ps nebo convert hello.pdf hello.ps2 nebo pomocí programu gsview Poznámka – Rozklad animovaného gifu na soubory: gifsicle Programování F1400 + F1400a Sazba nejen obrázků, tabulek, . . . v LATEXu LATEX – Vkládání obrázků Do záhlaví dokumentu přidejte \usepackage{graphicx} Vložení jednoho obrázku: \includegraphics[height=5cm,angle=90]{figs/graf.pdf} Vložení jednoho obrázku s vycentrováním na řádku: \centerline{\includegraphics[width=10cm]{figures/schema1.pdf}} Vložení dvou obrázků vedle sebe s vycentrováním na řádku: \centerline{\includegraphics[width=0.48\textwidth]{a.eps}}% \hskip0.03\textwidth% \includegraphics[width=0.48\textwidth]{b.eps}} Parametry příkazu \includegraphics: Absolutní velikost: width=12.5cm nebo height=6cm Relativní velikost: width=0.99\textwidth nebo scale=0.5 Otočení obrázku o určitý úhel ve stupních: angle=90 Do pdfLATEXu lze vkládat soubory s příponou pdf, png a jpg. Do LATEXu lze vkládat soubory s příponou eps a ps. Uvedeme s příponou (např. mereni.eps) – jednoznačné Uvedeme-li bez přípony, pak si (pdf)LATEX vybere eps, pdf nebo png/jpg Více obrázků – dejte je do adresáře, pak např. figures/mereni.eps nebo nastavte \graphicspath{{figures/}{graphs/}} Programování F1400 + F1400a Sazba nejen obrázků, tabulek, . . . v LATEXu LATEX – Plovoucí prostředí pro obrázky a tabulky Pevné nebo volné umístění tabulky či obrázku v textu, s popiskem či bez Prostředí table a figure: \begin{table}[htbp] \begin{figure}[htbp] \caption{Tabulka naměřených dat.} ... obrázek ... \label{tabMereni} \caption{Graf simulace.} ... tabulka ... \label{obrSimul} \end{table} \end{figure} Umístění plovoucího prostředí na stránce: t=top, b=bottom, h=here (pokud to jde), p=page (samostatná stránka) Odstránkování pomocí \newpage pro novou stránku a \clearpage pro novou stránku a vynucené vykreslení všech zbývajících obrázků Seznam tabulek a obrázků: \listoftables a \listoffigures Zvětšení povoleného počtu obrázků na stránku a místa jimi zabíraného: \setcounter{topnumber}{3} % max. pocet floatu nahore (specifikace t) \setcounter{bottomnumber}{3} % max. pocet floatu dole (specifikace b) \setcounter{totalnumber}{6} % max. pocet floatu na strance celkem \renewcommand\topfraction{0.9} % max podil stranky pro floaty nahore \renewcommand\bottomfraction{0.9} % max podil stranky pro floaty dole \renewcommand\textfraction{0.1} % min podil stranky, ktery musi obsahovat text \intextsep=8mm \textfloatsep=8mm \floatsep=8mm % vzdalenosti mezi floaty Programování F1400 + F1400a Sazba nejen obrázků, tabulek, . . . v LATEXu LATEX – Tabulky Vytváření tabulek – prostředí tabular: \begin{tabular}{|c||crl|} \hline $n$ & $d$ (mm) & $p_{\rm res}~~$ & výsledek \\ \hline 1. & 10,30 & 100~\% & dobře \\ 2. & 14,70 & 100~\% & dobře \\ 3. & 19,20 & 0~\% & špatně \\ 4. & 27,30 & 100~\% & dobře \\ 5. & \multicolumn{3}{|c|}{nezměřeno} \\ \hline \end{tabular} \end{center} n d (mm) pres výsledek 1. 10,30 100 % dobře 2. 14,70 100 % dobře 3. 19,20 0 % špatně 4. 27,30 100 % dobře 5. nezměřeno Pozn.: v balíčku amsmath se pro sazbu matic používají stejné oddělovače sloupců i řádků (& \\) Zarovnání sloupců: c center, l left, r right, p{10mm} pevná šířka sloupce Horizontální čára \hline Spojení více buněk pomocí \multicolumn Další LATEXovské balíčky pro tabulky – vícestránkové, barevné, aj. Programování F1400 + F1400a Sazba nejen obrázků, tabulek, . . . v LATEXu LATEX – Různé, typografie Parchanty: vdovy a sirotci – osamocené řádky odstavce vzniklé při zlomu stránky. Zamezíme jim velkou penaltou (malusem); do záhlaví dopište: \widowpenalty=10000 \clubpenalty=10000 \displaywidowpenalty=10000 Čárka jako oddělovač v seznamu čísel versus desetinná čárka v českém zápisu reálného čísla: 1, 2, 3, 4, 5 (mezera za ,) vs 3, 14159 (taktéž) vs 3,14159 (bez mezery) $1,2,3,4,5$ vs $3,14159$ vs $3{,}14159$ Mezeru za čárkou lze v českém textu vynutit globálně v celém dokumentu (použijte v záhlaví): % Desetinna carka - at za ni neni mala mezera. Vedlejsi dusledek: % carka prestane byt interpunkci vsude, napr. v A = (1, 2, 3). % Bez tehle obezlicky je treba psat 3{,}141592. \mathcode‘\,="013B Programování F1400 + F1400a Sazba nejen obrázků, tabulek, . . . v LATEXu LATEX – Různé, balíčky QR, EAN, ISBN, . . . kódy: 7654 3210 Happy LaTeX Book \usepackage{qrcode} \qrcode[height=15mm]{https://www.physics.muni.cz/~mikulik/vyuka/} \input{ean8} \EAN 7654-3210 Happy LaTeX Book LATEX – Další různé zajímavé balíčky: color: \textcolor{red}{červené ...} vysází červené slovo, {\color{blue} modrý ...} vysází modrý text se vzorcem √ a2 + b2 SIunits: pro sazbu vzorců s určitou syntaxí jednotek SI dcolumn, longtable, aj.: pro sazbu složitějších či barevných tabulek listing, verbatim, aj.: sázení textů přesně jak jsou formátované včetně mezer nebo pro zdrojový kód (program) se zvýrazněním syntaxe obtékané obrázky, . . . Programování F1400 + F1400a Sazba nejen obrázků, tabulek, . . . v LATEXu