Portál AbcLinuxu, 20. dubna 2024 00:08

Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)

14. 9. 2006 | Petr Zelenka
Články - Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)  

"Tak jsem podle tvých minulých rad vytvořil kostru své prezentace," chlubil se Matěj Bohoušovi, "a myslím, že to není vůbec špatné. Ještě bych ale potřeboval na několik snímků vložit obrázky." "No tak se na to podíváme."

Minule jsme si ukázali, jak vytvořit jednoduchou, leč pěknou prezentaci. Matěj mezitím zapracoval a stylem, kterým jsme prezentaci započali, ji i dokončil (matej04.tex, matej04.pdf). Použil vše, co bylo minule řečeno. Nyní je třeba do prezentace doplnit obrázky, případně ji dál vylepšovat.

Vkládáme obrázky

Obrázky jsou podstatnou součástí snad každé prezentace. Ilustrují a pomáhají pochopit problematiku, zhustí informaci daleko lépe než prostý text. Při nedostatku místa na jednom snímku (velikost písma je zdola limitovaná čitelností na větší vzdálenost) jsou to ideální vlastnosti.

Vkládání obrázku do prezentace tvořené v Beameru se neliší od vkládání obrázku například při psaní článku v LaTeXu. Možností je nepochybně více. V tomto článku se budu zabývat pouze jednou z nich, a to pomocí balíku graphicx. Při užití tohoto balíku vkládáme obrázek takto:

\begin{frame}
  \frametitle{Snímek s obrázkem}
  \includegraphics[width=10cm]{obrazek.obr}
\end{frame}

Povinným parametrem specifikujeme jméno souboru s obrázkem, nepovinně pak můžeme kromě šířky (width) určit i výšku (height) či natočení ve směru hodinových ručiček (angle). Je-li uvedena jen jedna z hodnot width nebo height, změní se ta druhá v poměru.

"Tak to vypadá docela snadně," odtušil Matěj, "Jaké formáty obrázků to zná?" "Copak o to, umí to vložit nejběžnější formáty, tedy *.jpg nebo *.png, ale je tam ještě jedno malé ale."

Trable s různými formáty obrázků

Při vkládání obrázků existuje ještě jeden (mírně nepříjemný) problém. Před samotnou přípravou obrázků je třeba se rozhodnout, zda budeme prezentaci sestavovat příkazem pdfcslatex (obecně pdflatex), nebo jestli použijeme řady příkazů cslatex (obecně latex), dvips a případně ps2pdf.

Toto je dobré mít na paměti a při vytváření obrázků s tím počítat. Pokud vkládáme již hotové obrázky, je potřeba, aby všechny patřily do jedné z uvedených skupin. Není-li tomu tak, netřeba zoufat. Každý slušný grafický editor (třeba Gimp) dokáže formáty mezi sebou převést.

Další možnosti

Pro práci s obrázky, jak bylo zmíněno výše, není určen jen balík graphicx. Další možností je balík pgf, který má podobné vlastnosti jako graphicx. Jednou z nich je například to, že oba vloží obrázek jen jednou, i když je v prezentaci použit vícekrát. Výhodou pgf je, že umí na rozdíl od graphicx pracovat s poloprůhlednými obrázky.

Obecně je tento způsob vkládání obrázků jednou cestou. Máme externí soubor vytvořený v nějakém programu mimo LaTeX a ten pak vložíme. Problém tohoto přístupu spočívá v tom, že ne vždy se podaří zajistit stejný font a jeho velikost na obrázku (je-li tam použit) jako v textu prezentace. Obdobně je to s tloušťkou použitých čar a podobně.

Proto existuje ještě druhá cesta. Obrázek si "napsat" přímo v LaTeXu. Odpadnou pak problémy s fonty, naopak se pro většinu případů (vyjma jednoduchých náčrtků či schémat) sníží komfort vytváření obrázku. Balík, který umožní vytváření obrázků přímo v LaTeXu, se jmenuje pstricks. Bohužel nefunguje s pdflatex (pdf a ps jsou natolik odlišné formáty, že není možné napsat podporu pstricks pro pdflatex).

"No, možná jsem to s tou jednoduchostí přehnal," hlesl Matěj. "Není to tak zlé," uklidňoval ho Bohouš, "jen je potřeba si na začátku vybrat jeden způsob a toho se držet."

Sloupce a dělení snímku

Často se stává, že chceme na jeden snímek umístit obrázek a k němu pár slov. Třeba tak, jako to chce udělat Matěj v případě struktury buňky flash paměti. V tom případě máme několik možností, jak k sobě text a obrázek poskládat. Matěj si na svém prvním snímku s obrázkem vybral ten jednodušší způsob, jiný doposud ani nezná. Pod jednu odrážku s textem umístil samotný obrázek (matej05.tex, matej05.pdf):

\begin{frame}
  \frametitle{Struktura paměťové buňky}
  \begin{itemize}
    \item Informace uložena na plovoucím hradle (Floating gate).
  \end{itemize}
  \begin{center}
    \includegraphics[width=7cm]{flash.png}
  \end{center}
\end{frame}

Při vkládání obrázku často využijeme i prostředí center, které svůj obsah na snímku vycentruje.

"Tak se ti dívám na ten obrázek a napadlo mě při tom, jestli by šlo dát třeba obrázek nalevo a text napravo. Tady se to sice hodí spíš takhle nad sebe, ale někdy by se to mohlo hodit."

Kromě rozmístění nad sebe je tu samozřejmě možnost rozmístění vedle sebe. Toho dosáhneme použitím prostředí columns, tedy sloupců. Vše se nejlépe vysvětlí na příkladu:

\begin{frame}
  \frametitle{Nadpis}
  \begin{columns}[t]
    \column{5cm}
      Jeden řádek.
    \column{5cm}
      Dva\\řádky.
  \end{columns}
\end{frame}

Toto způsobí, že na snímku budou dva sloupce. První s jednořádkovým textem, druhý s dvouřádkovým. Nepovinný parametr t pak zapříčiní, že všechny sloupce (neřekneme-li jinak), budou vertikálně zarovnány ke své první lince. Další možnosti jsou:

Sloupce lze zarovnávat i jednotlivě, parametr u samotného sloupce má přednost před parametrem prostředí. Stejného efektu jako v minulém případě dosáhneme tedy i takto (parametr u prostředí vynechán, neboť je nyní zbytečný):

\begin{frame}
  \frametitle{Nadpis}
  \begin{columns}
    \column[t]{5cm}
      Jeden řádek.
    \column[t]{5cm}
      Dva\\řádky.
  \end{columns}
\end{frame}

Jednotlivé sloupce lze sázet nejen příkazem \column, ale i samostatným prostředím. Oba dva způsoby jsou ekvivalentní:

\begin{frame}
  \frametitle{Nadpis}
  \begin{columns}
    \begin{column}[t]{5cm}
      Jeden řádek.
    \end{column}
    \begin{column}[t]{5cm}
      Dva\\řádky.
    \end{column}
  \end{columns}
\end{frame}

Takto lze tedy snímek (nebo jeho část) rozdělit na potřebný počet sloupců. Při vkládání obrázku tedy dělíme většinou celý snímek na dva sloupce, přičemž obrázek se radí umisťovat zpravidla vlevo a text vpravo. Důvodem je, že při čtení zleva doprava je pozornost upřena nejprve na obrázek. A to je většinou přesně co chceme. V pravé části je pak uveden doplňující text. Šablona pro snímek s obrázkem pak může vypadat takto:

\begin{frame}
  \frametitle{Snímek s obrázkem}
  \begin{columns}
    \column{5cm}
      \includegraphics[width=5cm]{obrazek.obr}
    \column{5cm}
      \begin{itemize}
        \item To je ale pěkný obrázek.
      \end{itemize}
  \end{columns}
\end{frame}
"Výborně, teď už znám asi vše, co pro moji prezentaci potřebuju. Už jen vložím obrázky a bude hotovo." "Pro tuhle prezentaci možná, ale ještě ti ukážu pár drobností, které by se ti mohly hodit někdy příště. Třeba takové tabulky..."

Tabulky

Pro ty, kteří si s LaTeXem tykají, nebude ve vytváření tabulek nic nového. Nejlépe bude opět uvést příklad toho, jak taková běžná tabulka vypadá:

\begin{frame}
  \frametitle{Tabulka}
  \begin{tabular}{|c|c|}
    \hline
	  & Rychlost \\
    \hline
    Modem & $56,6$ kb/s \\
    ADSL  & $4,0$ Mb/s \\
    \hline
  \end{tabular}
\end{frame}

Tabulku vytváříme pomocí prostředí tabular, jehož povinným parametrem je specifikace tabulky. Uvnitř specifikace se mohou objevit následující znaky:

V našem případě se jedná o tabulku se dvěma sloupci zarovnanými na střed a svislými čarami nalevo, uprostřed i napravo. Uvnitř tabulky pak & odděluje jednotlivé sloupce, \\ jednotlivé řádky a \hline vykreslí horizontální linku.

Obecně lze jistě vytvářet složitější tabulky, osobně jsem si ale vždy vystačil s podobně jednoduchou. Výhodou jednoduchých tabulek je přehlednost, posluchač se v záplavě dat neztratí. Tabulky je možno i obarvovat, slouží k tomu balík colortbl.

Postupné odkrývání položek

"Občas se taky hodí postupné zobrazování či skrývání některých položek na snímku. Nejčastěji ve chvíli, kdy potřebuješ upoutat pozornost na danou věc s tím, že na snímku ale dál potřebuješ mít i další informace, které s ní utvoří smysluplný celek. I to samozřejmě Beamer umí."

Postupného odkrývání položek jednu po druhé s tím, že odkryté položky zůstávají viditelné, lze snadno dosáhnout umístěním příkazu \pause. Co jeden příkaz \pause, to jeden úder do mezerníku. Vše před \pause se zobrazí už při prvním načtení snímku, vše za \pause až do případného dalšího výskytu \pause po klepnutí. Příklad:

\begin{frame}
  \frametitle{Postupné odkrývání}
  \begin{itemize}
    \item První odrážka je vidět hned.
      \pause
    \item Druhá až po prvním klepnutí.
    \item Stejně jako třetí.
      \pause
    \item Pro zobrazení čtvrté musíme znovu klepnout.
  \end{itemize}
\end{frame}

Obecnější specifikace viditelnosti položek

Někdy nám ovšem postupné odkrývání nevyhovuje. Chtěli bychom například odkrýt první a poslední položku hned na začátku, kdežto druhou a třetí postupně. Nakonec by zůstala vidět jen poslední. Toho lze docílit takto:

\begin{frame}
  \frametitle{Složitější překrývání}
  \begin{itemize}
    \item<1-3> První položka je viditelná na všech snímcích vyjma
               posledního.
    \item<2-3> Druhá je vidět od druhého snímku dále, vyjma posledního.
    \item<3>   Třetí je vidět jen po druhém odklepnutí, pak zase zmizí.
    \item<1-4> Čtvrtá je vidět stále.
  \end{itemize}
\end{frame}

Čísla v ostrých závorkách udávají vždy rozsah snímků, na kterém bude daný bod viditelný. Tedy <1-3> znamená "zobraz tento bod na prvním až třetím snímku včetně". Specifikace můžeme spojovat za sebe čárkou, takže například <-3,5-> znamená "zobraz na všech vyjma čtvrtého".

Takovéto specifikace lze uvádět nejen za příkaz \item, ač to bude asi nejčastější. Funguje ale například i pro příkaz vložení obrázku, \includegraphics, a lze tak pomocí něho vytvořit překreslující se obrázek takovýmto způsobem:

\begin{frame}
  \frametitle{Překreslující se obrázek}
  \begin{center}
    \includegraphics<1>[width=10cm]{faze_1.obr}
    \includegraphics<2>[width=10cm]{faze_2.obr}
    \includegraphics<3>[width=10cm]{faze_3.obr}
  \end{center}
\end{frame}

Zobecnění této vlastnosti "skrývání" je příkaz \uncover, který ji aplikuje na celý svůj argument. Skrývání jsem napsal v uvozovkách proto, že text je i po skrytí lehce patrný - je zobrazen světle šedou barvou. Pokud chceme objekt ze snímku úplně odstranit (tak, že na něm už ani nezabírá místo), můžeme využít příkazu \only.

S překrýváním lze vůbec dělat ledasjaká kouzla a všem zájemcům bych vřele doporučil dokumentaci přiloženou k Beameru, kde je tomuto tématu věnována celá jedna kapitola.

"A to je tak pro dnešek vše," zakončil své povídání Bohouš, "myslím, že je to ve zkratce všechno, co bys mohl při přípravě jednodušších prezentací potřebovat." "Jo, taky si myslím. Děkuju za zasvěcení. A až narazím na něco, s čím si nebudu vědět rady, tak se ozvu."

Pokračování?

Tímto prozatím končí miniseriálek o Beameru. Doufám, že byl alespoň pro někoho přínosem. Pokud vás zajímá něco dalšího k používání tohoto nástroje, ozvěte se zde v diskuzi či emailem přes můj profil. Najdu-li čas a budu-li vědět, sepíši další díl podle vašich námětů. A třeba se najde i někdo jiný.

Související články

Beamer: LaTeX na prezentace
Tisk v Linuxu pomocí balíku PSUtils
Oboustranný tisk v Linuxu
GNU Lilypond - The music Typesetter - I
GNU Lilypond - II
GNU Lilypond - III
GNU Lilypond - IV
Vektorový elegán Ipe
Scribo, scribere, Scribus
Scribo, scribere, Scribus - II
Scribo, scribere, Scribus - III
Příručka OpenOffice.org - VI
Příručka OpenOffice.org - VII

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

Diskuse k tomuto článku

14.9.2006 00:17 Honza Balák | skóre: 23 | blog: Jaxův linuxový zápisník | Předklášteří
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
Beamer se mi zacina libit. Jen tak dal se serialem, uz se tesim na dalsi zajimave pokracovani
<null>
14.9.2006 08:18 Petr Zelenka | skóre: 24 | Semice/Stuttgart (Sindelfingen)
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
Beamer se mi zacina libit. Jen tak dal se serialem, uz se tesim na dalsi zajimave pokracovani

Díky, ale:

Doufám, že byl alespoň pro někoho přínosem. Pokud vás zajímá něco dalšího k používání tohoto nástroje, ozvěte se zde v diskuzi či emailem přes můj profil. Najdu-li čas a budu-li vědět, sepíši další díl podle vašich námětů. A třeba se najde i někdo jiný.

Takže jak to bude či nebude s pokračováním se uvidí, momentálně jsem docela zaměstnaný.

A teď si uvědomte, jaký je vztah mezi krychlí a motýlem.
14.9.2006 20:34 deda.jabko | skóre: 23 | blog: blog co se jmenuje "každý den jinak" | za new york city dvakrát doleva a pak už se doptáte
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
pekny clanek, pekny program... skoda (dikybohu), ze nepotrebuju delat prezentace...

ale zajimalo by me, jestli jde nejakym jednoduchym zpusobem menit styl slidu, treba aby vice odpovidal corporate identity.
Asi před rokem se dostali hackeři na servry Debianu a ukradli jim zdrojové kódy.
14.9.2006 11:35 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
…jsem vytvořil kostru mé prezentace…
Osobně bych dal přednost české variantě téhož, tedy „vytvořil jsem kostru své aplikace“ ;-)
Užívej dne – možná je tvůj poslední.
14.9.2006 11:39 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
Já bych tam žádné zájmeno nedával...
Hello world ! Segmentation fault (core dumped)
14.9.2006 15:37 zub
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
Prevadet mezi PDF, PS a EPS Gimpem? 8-O No to si snad delate srandu. :) Bud jsem za ty roky vyvoje Gimpu o neco prisel, nebo tady radite ctenarum, aby z vektorove grafiky udelali rastr... Prevod PS <-> PDF je jasny: ps2pdf, pdf2ps. A co jsem pouzil na prevod do/z EPS uz si nepamatuju. Ale pokud z toho udelate rastr, tak vysledek za moc stat nebude (pokud je original opravdu vektor, ne bitmapa v EPSku :).
14.9.2006 16:37 Petr Zelenka | skóre: 24 | Semice/Stuttgart (Sindelfingen)
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
Prevod PS <-> PDF je jasny: ps2pdf, pdf2ps. A co jsem pouzil na prevod do/z EPS uz si nepamatuju. Ale pokud z toho udelate rastr, tak vysledek za moc stat nebude (pokud je original opravdu vektor, ne bitmapa v EPSku :).

Myslel jsem spíš třeba převod *.jpg na *.eps. Tedy pro případ, kdy požíváme latex a ne pdflatex. Omlovám se jestli jsem vás Gimpem nějak pobouřil :).

A teď si uvědomte, jaký je vztah mezi krychlí a motýlem.
14.9.2006 18:37 LS_999
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
CHA CHA a kdyz se ta prezentace promita na obrazovce, tak to mate vektory? Vsechno je to rastr... i tiskarna tiskne do rastru... Takze kdyz se eps vyrendruje do bitmapy, ucastnik prezentace pravdepodobne vubec nic nepozna... AKorat se musi zvolit vhodne rozliseni.

Jinak nemoznost kombinovat .jpg a .eps mi v Latexu velmi vadi... bitmapy v eps neuveritelne zdrzuji....a naopak to taky neni idealni (ale v pripade prezentace je to uplne jedno...)
21.11.2006 09:06 Toman | skóre: 29 | blog: Tomanův blog | Kostelec nad Orlicí
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
Mel bych dotaz, mozna predbiham clanek, zkousel jsem Beamer, je super, intuitivni, rychle naucitelny, jen kdyz tisknu vysledek na tiskarnu, tak jsou slajdy strasne malinkate, vyuziji tak 1/3 stranky A4. Da se nejaky zpusobem explicitne rict Beameru, jake ma byt rozliseni? Diky za odpoved.
Have you tried turning it off and on again? | tomaskavalek.cz | Google
28.1.2007 16:27 Hanz
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
Pěkný článek, měl bych dotaz, snad se tu i po nějaké době od poslední reakce najde někdo k pomoci.

Beamera kompiluji trojicí cslatex, dvips a ps2pdf. Vše proběhne ok akorát mi nefungují klikací odkazy (lišta vpravo dole a nahoře odkazy na sections a subsections). Je to normální nebo je chyba ve mně? (Při kompilaci pdflatex sice neprojdou obrázky EPS ale odkazy fungují).
29.1.2007 10:57 Hanz
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
Tak už jsem si našel odpověď, tak kdyžtak pro ostatní: Stačí přidat parametr [dvips], třeba takto:

\documentclass[dvips]{beamer}

a pak už všechno projde ok ;-)
10.4.2007 09:32
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
skrytý komentář Náš administrátor shledal tento komentář závadným.

Nesmyslné vulgarismy.

Zobrazit komentář
15.10.2010 17:41 DrJ87
Rozbalit Rozbalit vše Re: Beamer: LaTeX na prezentace - 2 (obrázky, tabulky, skrývání)
Nevím, jestli mi tu někdo odpoví, téma je dost staré, ale přesto to zkusím. Nefunguje mi postupné odkrývání odrážek. Přesněji řečeno,při postupu uvedeném v článku, se mi nezobrazí vůbec ("normální" odrážky, bez postupného odkrývání, fungují bez problémů). Nepotřebuju k tomu mít nainstalovaný nějaký balík? Nebo, nemůže být třeba problém v použitém \colortheme?

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.