Hlavní navigace

Emacs pro mírně pokročilé (8): Emacs a TeX

Jan Kohout

Elektronická sazba dokumentů často přináší podobný koloběh práce, jako kompilace programů. Úprava zdrojového textu, zpracování dokumentu a prohlížení výsledku. Emacs usnadňuje nejen tento monotónní rytmus, ale přináší i další výhody, o kterých bude řeč v dnešním pokračování.

Povíme si především o zpracovávání TeXovských dokumentů v prostředí editoru Emacs, ale také se okrajově zmíníme o dalších dvou silných pomocnících při tvorbě dokumentů: kontrole pravopisu (za použití ispellu) a tzv. zkratkách (abbrevs).

Zpracování dokumentu pro TeX (či LaTeX) se nabízejí dvě odlišné varianty. První z nich je použití módů obvykle distribuovaných přímo s balíkem Emacsu (tedy tex-mode a latex-mode). Druhou možností je použití rozsáhlejší knihovny AUC-TeX (určené pro zpracování zejména LaTeXovských dokumentů). První možnost přináší formou jednoduchého hlavního módu obvyklé usnadnění práce v podobě klávesových zkratek, párování závorek apod. V druhém případě se jedná o poměrně propracované a rozsáhlé prostředí, které nabízí kromě jiného zpracování chybového výstupu LaTeXu apod.

Pro jednodušší dokumenty si jistě vystačíme s první zmiňovanou variantou. Tyto módy umožňují spouštět TeX (LaTeX) na celý soubor (klávesy C-c C-b), ale také například na region ( C-c C-r), kdy se k regionu přidá preambule ze začátku souboru. Dále lze prohlížet výsledný dvi soubor ( C-c C-v), tisknout dvi soubor ( C-c C-p). Změnou příslušných proměnných lze docílit přizpůsobení módu. Lze tedy například měnit, jaký prohlížeč se má volat ( tex-dvi-view-command) apod. Poměrně snadno ( C-c C-o) lze také vkládat LaTeXovské bloky, tedy části uvozené klíčovými slovy \begin\end.

Pokud chceme zpracovávat rozsáhlejší dokumenty nebo pracujeme-li s LaTeXem velmi často, bývá druhá možnost, tedy použití prostředí AUC-TeX, daleko přijatelnější. AUC-TeX zejména nabízí možnost procházení chybového výstupu tím způsobem, že posouvá kursor přímo po řádcích s nalezenou chybou (funkce TeX-next-error, zde je souvislost se zpracováním kompilace, o kterém již byla řeč). Dále AUC-TeX umožňuje odsazování textu (nejen během vytváření dokumentu, ale lze takto zformátovat i již vytvořený dokument). Kromě zmíněných funkcí dále přináší celou řadu maker, která tvorbu LaTeXovských dokumentů značně usnadňuje. Podívejme se proto na tento balík podrobněji.

Doplňování příkazů podle typu dokumentu uvedeného v hlavičce ( documentclass) je další vymožeností tohoto prostředí. Stiskem M-<TAB> se spustí funkce TeX-complete-symbol a pokusí se doplnit rozepsaný příkaz. Užitečná jsou i klávesová makra, např. LaTeX-environment (klávesy C-c C-e) uvozuje prostředí vložením odpovídajících „závorek“ begin a end. Funkce LaTeX-section (klávesy C-c C-s) vkládá LaTeXovou sekci dokumentu (kapitolu, apod.). Prefixem kláves C-c C-f doplněným o kombinaci volící font, například C-i pro italiku (skloněné písmo), docílíme vložení příslušné konstrukce pro daný řez (v uvedeném příkladě je to \textit{ \/}). Samozřejmostí je i spouštění TeXu či LaTeXu na celý soubor (tentokrát pomocí C-c C-c) a region, který se spouští stejně, jako v již zmíněném prvním případě.

Mezi další vymoženosti prostředí AUC-TeX patří například určení tzv. master file při zpracování dokumentu rozděleného do více souborů. Takto označený soubor je ten, který obsahuje pomocí klíčových slov \input nebo \include vložené soubory a AUC-TeX tedy sám dokáže určit, který soubor se má po spuštění „kompilace“ zpracovávat. Dále nabízí možnost jakéhosi „předparsování“. Nastavením proměnné TeX-parse-self na hodnotu různou od nil tuto volbu zapneme. Pokud navíc zapneme proměnnou TeX-auto-save, bude se informace o parsování ukládat a při dalším otevření tohoto souboru bude využita. Celá řada dalších zajímavých vlastností je popsána v on-line dokumentaci, která je distribuována s balíkem AUC-TeX.

Abbrevs

Při tvorbě dokumentace se často opakují (opisují) stejná slova, někdy i celé fráze. Pomoc Emacsu v takovémto případě přichází v podobě tzv. zkratek neboli abbrevs. Jedná se o tzv. minor mód. Definováním zkratky se rozumí slovo, které se po napsání expanduje na nějaký jiný text. Definujeme-li například emacs jako zkratku pro větu „Emacs Manuals Always Couse Senility“, expanduje se slovo ‚ e m a c s <SPC>‘ po napsání do příslušné věty. Další možností je využít tzv. dynamické doplňování, kdy se na přímý příkaz pokusí Emacs doplnit slovo před kursorem podle slov obsažených v bufferu.

Definování globální zkratky, tedy takové, kterou bude možno použít ve všech bufferech pro jedno či více slov před kursorem, se provede pomocí C-x a g (funkce add-global-abbrev). Takto se jednoduše doplňují zkratky pro text, který přímo píšeme. Podobně lze definovat zkratky specifické pro aktuální hlavní mód. Naopak lze definovat i slova, která představují zkratky (tedy za něž se nahrazuje) pomocí C-x a i g (funkce inverse-add-global-abbrev). Zkratky se expandují přímo během vytváření textu poté, co vložíme mezeru, tečku či podobný ukončující znak. Při expanzi se zachovávají velká a malá písmena, napíšeme-li proto EMACS, bude expandovaná věta celá napsána velkými písmeny. Zkratky lze také editovat (funkce edit-abbrevs) nebo si nechat zobrazit jejich seznam ( list-abbrevs). Pokud chceme, aby definované zkratky byly dostupné i při příštím spuštění Emacsu, je třeba je uložit ( write-abbrev-file; Emacs se nás na to při ukončení zeptá) a při startu znovu nahrát ( read-abbrev-file).

Výše zmíněné zkratky se expandují automaticky tak, jak je text vkládán, a všechny zkratky musí být explicitně definovány. Na rozdíl od nich tzv. dynamická expanze zkratek určuje svoji expanzi na základě obsahu editovaného bufferu. Slouží k tomu zkratka M-/, které odpovídá funkce dabbrev-expand. Slovo před kursorem se expanduje na slovo, které obsahuje toto slovo. Pokud je takovýchto slov víc, vybere se poslední z nich. Zkratka C-M-/ (funkce dabbrev-completion) se pokusí o totéž. Existuje-li však v bufferu více takových slov, doplní pouze jim všem společnou část. Nemají-li žádnou takovou část, zobrazí všechna možná slova ve zvláštním bufferu. Podrobný popis lze nalézt v manuálu.

Ispell

Neméně důležitou pomůckou při psaní dokumentu je kontrola pravopisu. Emacs k tomu používá externí program ispell. Šíře jeho použití je veliká a kontrolovat lze pravopis jednoho slova (klávesy M-$), regionu (funkce ispell-region) nebo celého bufferu ( ispell-buffer). Lze ale také například zapnout průběžnou kontrolu pravopisu, tzv. flyspell-mode. Změnu slovníku (jazyka) provedeme funkcí  ispell-change-dictionary.

Tolik tedy ke zpracovávání dokumentů pomocí TeXu (LaTeXu) a nástrojům či službám souvisejícím. Samozřejmě škála podpůrných nástrojů není úplná. Existuje celá řada dalších více či méně rozšířených utilit. Příště si povíme něco málo o Elispu, tedy o jazyce, který je pro Emacs životně důležitý.

Našli jste v článku chybu?

31. 5. 2001 18:59

Simon Vostry (neregistrovaný)

Na nasleduji adrese: http://aspell.sourceforge.net je k dispozici Aspell, jez je dle jeho autoru nazyvan "A More Intelligent Ispell". Dle me zkusenosti nabizi slova mnohem intuitivneji nez jeho predchudce Ispell. Bohuzel, slovnikove soubory jsou cca 30x vetsi nez u Ispellu. Cestina ma asi 30MB, ale je k dispozici a funguje obstojne. Ke stazeni pro RedHat 7 v RPM je treba tady: http://rpmfind.net/linux/RPM/redhat/7.0/i386/aspell-cs-0.2-3.i386.html

31. 5. 2001 11:15

matous cervenka (neregistrovaný)

Pekny prispevek, jen bych doplnil, ze AucTeX umi take pismo nebo prostredi zmenit, coz je naprosto dokonale! Pokud jej pouzivate pod windows, musite v souboru tex.el nahradit slovo "xdvi" vasim prohlizecem (ja mam windvi). Ve spolupraci s fpTeXem funguje naprosto skvele!

Dale bych chtel upozornit na balik RefTeX, pomoci ktereho mate pod kontrolou krizove odkazy, obsah dokumentu apod. Muzete jej mit nainstalovan paralelne s AucTeXem.

Autor pozapomnel uvest URLs:
AucTeX -- http://sunsite.…




Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

DigiZone.cz: „Black Friday 2016“: závěrečné zhodnocení

„Black Friday 2016“: závěrečné zhodnocení

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Vitalia.cz: Co pomáhá dítěti při zácpě?

Co pomáhá dítěti při zácpě?

Vitalia.cz: Znáte „černý detox“? Ani to nezkoušejte

Znáte „černý detox“? Ani to nezkoušejte

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

Měšec.cz: mBank cenzuruje, zrušila mFórum

mBank cenzuruje, zrušila mFórum

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Podnikatel.cz: Chaos u EET pokračuje. Jsou tu další návrhy

Chaos u EET pokračuje. Jsou tu další návrhy

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

Lupa.cz: Co se dá měřit přes Internet věcí

Co se dá měřit přes Internet věcí

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá