Starý WORD ten ťa už unavil nakoniec #2

14.02 | 15:56 | Richard | Richard

…predtým parafrázovaním Apollinaira k náhrade textového procesora. Ako inak, pomocou GNU Emacs. Teraz aktualizácia prvého článku; bez Apollinaira.

1. Obsah prvej časti

V prvej časti (no prvej, ono ani nebola plánovaná druhá,…) sme si ukázali, ako pomocou všemocného GNU Emacs a org módu vytvoriť vcelku pekný a formátovaný dokument, a tento pomocou bash alebo (e)lisp skriptu previesť na PDF.

V dnešnej časti pôjde o to isté, len použijeme pandoc a Libre(Open)Office, a jeho šablóny.

2. Načo to vôbec?

Časť záveru minulej časti znela:
"GNU Emacs poskytuje úžasné možnosti a už aj samotná editácia textu, aj bez kdejakých pridaných barličiek, je potešením. Keď potom človek zablúdi do nejakého *officu, cíti sa, ako keby mal jednu ruku priviazanú za chrbtom.
A toto je spôsob, ako si užívať jeho prednosti, aj keď sa vyžaduje formátovaný text."

3. Potrebné nástroje

Takže opäť žiadny Latex.

Už z toho je jasné, že princíp je nasledovný:

Samozrejme, nie sústavou príkazov, ale len pomocou jedného Makefile.

4. Org mód pre GNU Emacs

4.1. Hlavička

Hlavička nášho súboru je sústava parametrov a makier zabalená medzi :HEADER SETTINGS: a :END:. Takto definovaný drawer sa neexportuje, a dá sa vizuálne zbaliť, aby nám nezavadzal a nerozptyľoval nás.

#+OPTIONS: title:t toc:nil num:t date:nil
#+OPTIONS: author:nil email:nil creator:nil timestamp:nil 
#+OPTIONS: |:t H:6 f:t
#+AUTHOR: Richard
#+EMAIL: 
#+TITLE: Názov dokumentu

Len v skratke uvediem, že +OPTIONS: toc definuje, či sa bude exportovať aj obsah vytvorený zo štruktúrovaných úrovní, title hovorí o exporte názvu, num o exporte číslovania nadpisov, …, a konečne H:6 max. 6-tu úroveň nadpisu.

4.2. Zadávanie textu, obrázkov, tabuliek

Aby som sa neopakoval, len odkážem na prvú časť, kde bolo opísané, ako sa tieto veci zadávajú v značkovacom jazyku.
Len spomeniem, že zásadné výhody editovanie čistého textu sú najmä:

Len na osvieženie pamäte a pre príjemnejšie čítanie si dáme pár obrázkov:

Obr. 1: Zadávanie textuObr. 2: Vytváranie tabuľky i vkladanie zdrojového kódu
Obr. 3: Vkladanie obrázkuObr. 4: A jeho zobrazenie priamo v Emacse

5. Export

Samotný org dokáže natívne exportovať do html, odt či čistého textu. Ale my použijeme pandoc, pretože má viac možností. Hoci - otvorenosť slobodného softvéru nám umožňuje si všetko doprogramovať ☺.
 

Spravíme si na to Makefile a štýly.

5.1. Makefile

Makefile je skript pre automatizáciu procesu kompilácie a vytvárania programov v kdejakých jazykoch. Obsahuje pravidlá, ktoré špecifikujú, ako preložiť zdrojové súbory a súbory objektov do spustiteľného súboru. Využíva sa najmä pri väčších projektoch, keď je potrebné spravovať veľké množstvo súborov.
Využijeme jeho vlastnosť, že sa dá spúšťať príkazom make. Priamo z prostredia Emacsu, ku ktorému máme i klávesovú skratku.

dokument = test_text.org
template = /home/richard/.openoffice/4/user/org-pandoc/simple.ott

all:
        pandoc -f org -t odt --reference-doc=$(template) -o out.odt $(dokument) --verbose
        soffice --headless --convert-to pdf out.odt --outdir ./
        mupdf out.pdf

Len upozorním, že Makefile musí mať príkazy odsadené tabulátorom.

Čo to vlastne robí?
Po spustení príkazu make, priamo zo shellu, eshellu, alebo iného terminálu (napr. i z gedit-u) sa spustí skript pomenovaný "Makefile" (s veľkým M).
V premenných dokument máme názov nášho textového súboru, v template je definovaný súbor .ott, čo je šablóna Libre(Open)Office.

No a v poradí sa spustia tieto príkazy:

pandoc -f org -t odt --reference-doc=$(template) -o out.odt $(dokument) --verbose
Program pandoc zoberie súbor v premennej dokument, povieme mu, aký je to typ vstupného súboru (-f org), výstupný súbor chceme odt (-t odt), a akú šablónu má použiť (--refrence-doc…). -o definuje názov výstupného súboru (teoreticky by mohol byť aj ten istý, ako vstupný, len s inou príponou). --verbose nám zobrazí pár dodatočných informácií pri konverzii.
 

soffice --headless --convert-to pdf out.odt --outdir ./
Tento príkaz použije LibreOffice a prekonvertuje odt súbor na pdf.

mupdf out.pdf
Ktorý si zobrazíme.

5.2. Štýly

Štýl (v LibreOffice) je preddefinovaný formát textu, odsekov, tabuliek, obrázkov a ďalších objektov v dokumentoch (ale i v prezentácii). Pomocou štýlov môžeme jednoducho a konzistentne upravovať celý dokument alebo jednotlivé časti dokumentu.

Existujú rôzne typy štýlov - písma, nadpisov, odrážok, tabuliek…Každý štýl má svoje nastavenie formátovania (veľkosť písma, farba, odsadenie, zalomenie…).

Šablóny so štýlmi si môžeme vytvoriť sami, alebo modifikovať existujúce, či si ich stiahnuť z webu. Je tiež dôležité povedať, že ak máme nejaký dokument, ktoré štýly sa nám páčia či hodia, tak si vieme tento uložiť ako šablónu.
Zaujímavé sú napríklad šablóny na LibreOffice Templates.

Páči sa mi i LibreLatex, ktorý napodobňuje formátovanie štyroch druhov dokumentov LaTeX (článok, kniha, list a správa).

Obr. 5: Štýly vo vyexportovanom odt dokumente pomocou pandocObr. 6: Nastavujeme si odsadenie a iné
Obr. 7: V "Nástroje" → "Číslovanie osnovy" si upravíme,… no to je jasnéObr. 8: Zalomenia pre nadpis 6. úrovne!

 

Všimnite si prosím, že v obrázku č. 7 - "Číslovanie osnovy" nadpis 6.-tej úrovne nemá číslovanie. A že v obrázku č. 8 máme zalomenie "Vložiť", to je tiež pre nadpis 6.-tej úrovne.
 

Nuž, nič nie je dokonalé, a ani pandoc.
 

Tento úskok bokom používam na vloženie pevného konca strany. Teda - normálne dobre definovaný štýl si kontroluje tzv. siroty a vdovy (to sú opustené riadky na začiatkoch a koncoch strán), a teda nestáva sa, že ostane na jednej strane nadpis, a súvisiaci text je na druhej strane. Alebo ostane prvý riadok textu odstavca na jednej strane, a zvyšok na druhej.
Ale občas je potrebné zadať, že tu sa strana končí a všetko ostatné musí byť na novej strane.

A toto zadám vložením prázdneho nadpisu 6. úrovne, v Emacse pomocu 6-tich hviezdičiek (******).

Hoci - malo by to ísť i vložením xml tagu do súboru content.xml pomocou lua skriptu volaného pandoc-om. Lebo samotný odt súbor je vlastne zip kontajner s viacerými súbormi.
No ale z nejakých dôvodov mi to nefungovalo a nechcelo sa mi hľadať chybu 😉.

6. Záver

Je príjemné písať texty v prostredí, ktoré je k tomu nielen predurčené, ale aj dostatočne dobre prispôsobené a prispôsobiteľné. A hoci tento článok je primárne o org v Emacse, nie je problém písať tieto dokumenty i v inom textovom editore. Alebo namiesto org zvoliť markdown, alebo iný formát, s ktorým si pandoc poradí.
Len námatkou: bibtex, docbook, html, mediawiki, roff man, vimwiki.
 

Na stiahnutie:

Prílohy