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
a \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ý.