Obsah
2. Nastavení volby (setq org-log-done t)
3. Odkazy na URL i na lokální soubory
7. Pohled na týdenní plán a log
8. Tvorba delších dokumentů a článků v org-mode
9. Editace dokumentů a zarovnání (zformátování) jednotlivých odstavců
10. Pohyb v dokumentech podle jejich logické struktury
11. Export dokumentů: krátké zopakování z minula
12. Export vytvořeného dokumentu do Markdownu
13. Export vytvořeného dokumentu do AsciiDocu
14. Značky určené primárně pro export dokumentů do dalších formátů
16. Speciální symboly a použití diagramů kreslených v Ditaa
18. Hodiny a čas strávený na úkolech
19. Seznam již popsaných příkazů režimu org-mode
1. Zpracování úkolů (task)
První užitečnou funkcí, s níž se v dnešním článku seznámíme, je práce se seznamem úkolů (task). Úkoly je možné zapisovat ve formě nadpisů s různými úrovněmi. S nadpisy již pracovat umíme, takže jen ve zkratce – úroveň nadpisu je určena počtem hvězdiček, které jsou zapsány na začátku řádku. Nadpisy jsou vizuálně rozlišeny od běžného textu, klávesou TAB můžeme řídit viditelnost nadpisů a textu různých úrovní a při exportu slouží informace o nadpisech pro vytvoření kapitol, podkapitol atd. Náš první dokument s úkoly bude zpočátku vypadat velmi jednoduše:
* Úkoly ** Přednáška Go vs Rust pro LinuxDays 2018 ** Přednáška o vim-lsp ** Test plán pro Gemini service ** Článek o org-mode - úvod ** Článek o org-mode - to právě čtete :-)
Obrázek 1: Základní struktura souboru s úkoly tak, jak byla vypsána v předchozím odstavci.
Vzhledem k tomu, že se každý úkol může v daný okamžik nacházet v různém stadiu rozpracovanosti, nabízí režim org-mode uživatelům klávesovou zkratku C-c C-t. Po stisku této zkratky se postupně mění stav rozpracovanosti/dokončenosti úkolu, na kterém se nachází textový kurzor, mezi stavy „TODO“, „výchozí“ a „DONE“. Výsledek může vypadat následovně:
Obrázek 2: Označení stavu úkolů s využitím klávesové zkratky C-c C-t.
Náš textový dokument s úkoly nepatrně rozšíříme o další položky:
* Úkoly ** DONE Přednáška Go vs Rust pro LinuxDays 2018 ** DONE Přednáška o vim-lsp ** TODO Test plán pro Gemini service ** DONE Článek o org-mode - úvod ** TODO Článek o org-mode - to právě čtete :-) ** Sprint #09 ** Sprint #10 ** Taky se nezapomenout nasnídat
Pokud se potřebujeme rychle podívat na seznam úkolů, na kterých je nutné pracovat (tedy úkolů ve stavu „TODO“), postačuje použít klávesovou zkratku C-c / t. Výsledek bude vypadat takto:
Obrázek 3: Zobrazení seznamu nedokončených úkolů.
V některých případech si pravděpodobně nevystačíte pouze se třemi stavy: TODO, (nic) a DONE. To však ani není zapotřebí, protože další stavy je možné relativně jednoduše přidat. Postačuje přímo do dokumentu vložit následující řádek, který přidává dva další stavy IN-PROGRESS a WAITING:
#+TODO: TODO IN-PROGRESS WAITING DONE
2. Nastavení volby (setq org-log-done t)
V případě, že do vašeho konfiguračního souboru .emacs vložíte řádek nastavující proměnnou org-log-done na pravdivostní hodnotu true, bude se při ukončení úkolu, tedy po jeho přechodu do stavu „DONE“, automaticky doplňovat i časová značka:
Obrázek 4: Automatické vložení časové značky ve chvíli, kdy byl úkol dokončen.
Relativně snadno tedy můžeme úkoly ukončit a navíc kdykoli později zjistit, kdy k tomu došlo:
* Úkoly ** DONE Přednáška Go vs Rust pro LinuxDays 2018 CLOSED: [2018-10-15 Po 21:29] ** DONE Přednáška o vim-lsp CLOSED: [2018-10-15 Po 21:29] ** TODO Test plán pro Gemini service ** DONE Článek o org-mode - úvod CLOSED: [2018-10-15 Po 21:29] ** TODO Článek o org-mode - to právě čtete :-)
Obrázek 5: Vzhledem k tomu, že je možné klávesou Tab ovlivňovat viditelnost, můžeme časové značky jednoduše skrýt.
Upravený konfigurační soubor .emacs může vypadat například následovně:
(require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t) (package-initialize) (require 'evil) (require 'evil-numbers) (evil-mode 1) (define-key evil-normal-state-map (kbd "C-a") 'evil-numbers/inc-at-pt) (define-key evil-normal-state-map (kbd "C-x") 'evil-numbers/dec-at-pt) (setq org-log-done t)
Obrázek 6: Další možnosti jsou samozřejmě popsány v nápovědě.
3. Odkazy na URL i na lokální soubory
Další užitečnou funkcí, kterou používají prakticky všichni uživatelé režimu org-mode, je možnosti vkládání odkazů (link) do dokumentu s poznámkami a úkoly. Odkaz může vést na prakticky jakýkoli dokument – ať již na lokální soubor (text, obrázek, …), tak na dokument určený obecnou URL (HTML stránka kdekoli na internetu atd.). Odkaz se vloží jednoduše poměrně snadno zapamatovatelnou klávesovou zkratkou C-c C-l. Po zadání této klávesové zkratky se Emacs nejdříve dotáže na adresu (link) na dokument:
Obrázek 7: Vkládání odkazu do diáře: specifikace adresy.
Po zadání adresy následuje další dotaz, tentokrát na popis odkazu, protože právě tento popis bude ve výchozím nastavení zobrazen v poznámkách a úkolech:
Obrázek 8: Vkládání odkazu do diáře: specifikace textového popisku odkazovaného dokumentu.
Ve výchozím nastavení jsou odkazy zobrazeny následujícím způsobem – odkaz je zvýrazněn (klasickým modrým podtrženým textem) a je u něj zobrazen jen textový popisek, nikoli celá adresa:
Obrázek 9: Takto jsou odkazy zobrazeny ve výchozím nastavení.
V případě potřeby je samozřejmě možné změnit způsob zobrazení tak, aby se zobrazila celá adresa, což je ukázáno na následujícím screenshotu:
Obrázek 10: Samozřejmě si však můžete prohlédnout i adresy odkazů.
Samotné odkazy se používají snadno – postačuje na ně umístit textový kurzor a použít klávesovou zkratku C-c C-o (pro vložení dokumentu to byla zkratka C-c C-l). Odkazovaný dokument se buď otevře přímo v Emacsu, nebo se použije nastavený webový prohlížeč, prohlížeč obrázků, přehrávač videa atd. Výchozí webový prohlížeč je samozřejmě možné nakonfigurovat:
Obrázek 11: Nastavení webových prohlížečů.
4. Odkazy na lokální soubory
Existuje ještě jedna užitečná klávesová zkratka C-c l, která slouží k zapamatování místa v libovolném souboru, kde se nachází textový kurzor. Je tedy možné si otevřít například zdrojový text a použít odkaz na něj. Celý postup si můžete prohlédnout na následující trojici screenshotů:
Obrázek 12: Při zadávání odkazů můžete postupně doplnit jméno libovolného lokálního souboru. Při zápisu jména souboru je samozřejmě podporováno doplnění cesty s využitím klávesy TAB.
Obrázek 13: Odkaz na lokální soubor se vizuálně nijak neliší od odkazu na soubor dostupný kdekoli na internetu.
Obrázek 14: Lokální soubor – pokud se jedná například o zdrojový kód a nikoli o video – se po použití klávesové zkratky C-c C-o otevře přímo v Emacsu v novém bufferu.
5. Agenda
V případě, že je nutné pracovat s větším množstvím úkolů, několika kalendáři a mnoha poznámkami, popř. pokud v org-mode připravujete články, může být užitečné si celou agendu rozdělit a pracovat s několika soubory. Například lze používat pro každý projekt zvláštní soubor s koncovkou .org. Dále je vhodné si nastavit seznam všech souborů obsahujících veškerou agendu, protože některé operace je možné v případě potřeby provádět globálně přes všechny zapamatované soubory. Soubory s agendou si nastavíte takto:
(custom-set-variables '(org-agenda-files (quote ("~/org/projekt1/agenda.org" "~/org/projekt2/agendaB.org" "~/org/projekt3/agendaC.org"))))
Toto nastavení můžete provést až po spuštění Emacsu nebo přímo v konfiguračním souboru .emacs. Aktuálně editovaný soubor můžete přidat klávesovou zkratkou C-c [.
Ve chvíli, kdy Emacs ví, které soubory .org tvoří celou agendu, můžete použít nové příkazy. Jedním z nich je příkaz určený pro zobrazení všech úkolů, které jsou ve stavu TODO:
Obrázek 15: Jeden z příkazů, který pracuje s celou takzvanou agendou, je příkaz určený pro zobrazení všech úkolů, na nichž je nutné začít pracovat.
Další příkaz zobrazí agendu pro aktuální pracovní týden:
Obrázek 16: Další užitečný příkaz slouží pro zobrazení kalendáře s úkoly, které je nutné dokončit (prozatím však nemáme zadány žádné takové úkoly, takže je kalendář prázdný). W42 znamená číslo týdne v rámci roku.
6. Úkoly a kalendář
U jednotlivých úkolů je možné specifikovat datum jejich dokončení. Pro tento účel můžete použít klávesovou zkratku C.c . popř. C-c <. Po stisku C-c . se v novém bufferu zobrazí kalendář a Emacs se zeptá na datum (ve výchozím stavu se jedná o aktuální datum):
Obrázek 17: Zobrazení kalendáře ve chvíli, kdy je zapotřebí zadat datum, kdy má být úkol (teoreticky) dokončen.
Po výběru data se do dokumentu k aktuálnímu úkolu přidá informace o tom, na kdy je úkol naplánován. Postupně tedy můžeme náš dokument s úkoly upravit následovně:
* Úkoly ** DONE Přednáška Go vs Rust pro LinuxDays 2018 CLOSED: [2018-10-15 Po 21:29] ** DONE Přednáška o vim-lsp CLOSED: [2018-10-15 Po 21:29] ** TODO Test plán pro Gemini service SCHEDULED: <2018-10-18 Čt> ** DONE Článek o org-mode - úvod CLOSED: [2018-10-15 Po 21:29] ** TODO Článek o org-mode - to právě čtete :-) SCHEDULED: <2018-10-17 St> ** Sprint #09 SCHEDULED: <2018-10-19 Pa> ** Sprint #10 SCHEDULED: <2018-11-12 Po> ** Taky se nezapomenout nasnídat SCHEDULED: <2018-10-15 Po> SCHEDULED: <2018-10-16 Ut> SCHEDULED: <2018-10-17 St>
Obrázek 18: Nabídka možností zobrazení shrnujících informací o úkolech a poznámkách.
Již zadaná data jsou samozřejmě editovatelná, ovšem vzhledem k tomu, že se org-mode snaží uživatelům pomoci, nabízí pro jejich změnu nové klávesové zkratky:
Klávesa | Význam |
---|---|
S-right | změna dne, kdy má být úkol dokončen |
S-left | změna dne, kdy má být úkol dokončen |
S-up | modifikace té jednotky, na které se nachází kurzor (rok, měsíc nebo den) |
S-down | modifikace té jednotky, na které se nachází kurzor (rok, měsíc nebo den) |
První dvě klávesové zkratky ovšem mohou kolidovat s dalšími operacemi ve chvíli, kdy se kurzor nenachází přímo na datu.
Obrázek 19: Úkoly, ve kterých je naplánováno jejich dokončení (samozřejmě je otázkou, jak tomu bude ve skutečnosti :-).
7. Pohled na týdenní plán a log
V okamžiku, kdy jsme naplánovali data dokončení úkolů, je možné se vrátit k tématu, o němž jsme se již okrajově zmínili v páté kapitole, protože právě v tomto okamžiku má smysl si nechat zobrazit agendu pro aktuální pracovní týden (ve výchozím nastavení se v době vydání článku jedná o čtyřicátý druhý týden). Pro tento účel slouží klávesová zkratka C-c a a. Výsledek je ukázaný na následujícím screenshotu:
Obrázek 20: Zobrazení agendy pro aktuální pracovní týden ve chvíli, kdy máme naplánovány (a nedokončeny) další úkoly.
Po stisku klávesy „l“ je možné si zobrazit i přehledný log, tj. informace o tom, kdy například byly dokončeny úkoly atd.:
Obrázek 21: Zobrazení logu, v němž můžeme přehledně vidět čas dokončení úkolů (popř. čas, kdy se dokončení zapsalo do dokumentu).
V případě potřeby je možné nastavit jiné výchozí datum pro zobrazení přehledu úkolů. Například se můžeme posunout o deset dní dopředu:
(setq org-agenda-start-day "+10d")
8. Tvorba delších dokumentů a článků v org-mode
„Org-Mode Is One of the Most Reasonable Markup Languages to Use for Text“
Režim org-mode je možné v případě potřeby použít i pro tvorbu delších dokumentů, které se následně mohou převést (exportovat) do jiných formátů, z nichž některé budou popsány v navazujících kapitolách (Markdown, AsciiDoc) a další jsme si již popsali v předchozím článku (především HTML, LaTeX, částečně i PDF). Pro vytvoření základní struktury dokumentu se používají nám již známé řádky začínající hvězdičkami. Počet hvězdiček na začátku řádků přitom určuje úroveň jednotlivých kapitol a podkapitol. Při exportu jsou kapitoly a podkapitoly prakticky vždy převedeny korektně. Podobně je tomu i u seznamů, které mohou být číslované či nečíslované (s odrážkami). Pro zvýraznění textu v rámci jednotlivých odstavců slouží značky pro určení tučného písma, kurzivy, podtrženého textu, zdrojového kódu a konečně neformátovaného textu:
1. *tučné písmo* 2. /kurzíva/ 3. _podtržený text_ 4. +přeskrtnutý text+ 5. =úryvek zdrojového kódu= 6. ~neformátovaný text~
Obrázek 22: Všechny nabízené možnosti formátování dokumentů ocení především uživatelé Emacsu spuštěného v grafickém režimu. V režimu textovém totiž nemusí být například zvýrazněno tučné písmo či kurzíva.
9. Editace dokumentů a zarovnání (zformátování) jednotlivých odstavců
Editace rozsáhlejších dokumentů v režimu org-mode je většinou naprosto bezproblémová, tj. málokdy se uživatelům „podaří“ nějakým omylem globálně změnit jejich strukturu. Samotné odstavce se vytváří zcela běžným způsobem. Pokud budete vyžadovat, aby se při psaní textu, popř. při jeho úpravách, používalo automatické formátování do odstavců, můžete si příslušný režim nastavit v menu Text. Jedná se o následující položky:
- Auto Fill
- Paragraph Indent
Tato nastavení je samozřejmě možné provést i zavoláním příslušného příkazu přes zkratku M-x. Například pro první příkaz stačí zadat:
M-x auto-fill-mode.
Odstavce je samozřejmě možné v případě potřeby zarovnat doleva, doprava, do bloku atd., ovšem při exportu se tyto informace mohou ztratit.
10. Pohyb v dokumentech podle jejich logické struktury
Ve chvíli, kdy se pracuje s delšími dokumenty (například rozsah tohoto článku přesáhne 50 kB, tj. přibližně 27 normostran, bakalářky či diplomky mohou být několikanásobně delší), je užitečné se naučit používat klávesové zkratky sloužící pro pohyb kurzoru na základě logické struktury dokumentu. V praxi to znamená, že se můžeme snadno přesouvat po jednotlivých kapitolách, sekcích, skočit na nadpis vyšší úrovně (začátek kapitoly) atd. – a to vše bez nutnosti měnit náhled na dokument pomocí klávesy TAB (což by bylo řešení, které by se zvolilo ve Vimu s využitím tzv.– foldingu – skládání). K dispozici jsou především následující klávesové zkratky:
Zkratka | Význam klávesové zkratky |
---|---|
C-c C-n | přesun kurzoru na další nadpis |
C-c C-p | přesun kurzoru na předchozí nadpis |
C-c C-u | přesun kurzoru na nadpis o úroveň výše, než je současný text |
C-c C-j | skok – skrytí běžného textu s následným přesunem kurzoru |
C-c C-f | přesun kurzoru na další nadpis stejné úrovně |
C-c C-b | přesun kurzoru na předchozí nadpis stejné úrovně |
11. Export dokumentů: krátké zopakování z minula
Další vlastnost režimu org-mode, o které jsme se již ve stručnosti zmínili minule, spočívá v možnosti exportu dokumentů do různých souborových formátů, například do HTML, PDF, TeXu atd. Někteří uživatelé, kteří například musí odevzdávat články v TeXu či LaTeXu dokonce tyto články píšou přímo v org-mode a výsledné vygenerované soubory popř. pouze nepatrně poupraví a přidají do příslušné šablony (samozřejmě záleží na tom, zda má článek obsahovat spíše běžný strukturovaný text s tabulkami nebo velké množství vzorců a grafů).
Obrázek 23: Interaktivní dialog pro export diáře do různých formátů (tento screenshot jsme si již ukázali minule).
Režim org-mode podporuje export do mnoha formátů, ovšem u některých nabízených možností je nutné si nainstalovat další podpůrné knihovny. Například soubory PDF jsou vytvářeny přes LaTeX atd. Mezi podporované formáty patří především:
Označení | Formát |
---|---|
ascii | klasický textový (ASCII) formát |
beamer | LaTeX Beamer (prezentace) |
html | běžné HTML |
icalendar | iCalendar |
latex | LaTeX (běžný dokument) |
md | Markdown (viz další kapitoly) |
odt | OpenDocument Text |
org | samotný org formát |
texinfo | Texinfo (pro .info soubory) |
man | manuálové stránky |
12. Export vytvořeného dokumentu do Markdownu
Formát Markdown pravděpodobně není nutné čtenářům Roota podrobněji představovat, protože se jedná o jednoduchý (někdy až moc jednoduchý) a populární formát, s nímž dokáže pracovat velké množství různých nástrojů (příkladem může být GitHub). Tento formát se v některých ohledech podobá formátu org-mode, takže by export měl být teoreticky bezproblémový. Ve skutečnosti však poměrně brzy narazíme na již zmíněnou jednoduchost Markdownu, například při práci s tabulkami atd.
Samotný export aktuálně editovaného dokumentu do Markdownu se provede příkazem:
M-x org-md-export-to-markdown
Zajímavé bude zjistit, jak se vlastně převede náš testovací dokument. Z výpisu níže je patrné, že Emacs nahradil ty části, které nemají v Markdownu ekvivalent, za HTML. To může být někdy nepříjemné, i když například první část s obsahem je možné snadno odstranit:
<div id="table-of-contents"> <h2>Table of Contents</h2> <div id="text-table-of-contents"> <ul> <li><a href="#sec-1">1. Tvorba delších dokumentů a článků v org-mode</a> <ul> <li><a href="#sec-1-1">1.1. Základní struktura dokumentů</a></li> <li><a href="#sec-1-2">1.2. Editace dokumentů</a></li> <li><a href="#sec-1-3">1.3. Zarovnání odstavců</a></li> <li><a href="#sec-1-4">1.4. Vyznačování v textu</a></li> </ul> </li> </ul> </div> </div> # Tvorba delších dokumentů a článků v org-mode<a id="sec-1" name="sec-1"></a> Režim org-mode je možné v případě potřeby použít i pro tvorbu delších dokumentů, které se následně mohou převést (exportovat) do jiných formátů. ## Základní struktura dokumentů<a id="sec-1-1" name="sec-1-1"></a> Pro vytvoření základní struktury dokumentu se používají nám již známé řádky začínající hvězdičkami. Počet hvězdiček na začátku řádků přitom určuje úroveň jednotlivých kapitol a podkapitol. ## Editace dokumentů<a id="sec-1-2" name="sec-1-2"></a> Samotné odstavce se vytváří zcela běžným způsobem. Pokud budete vyžadovat, aby se při psaní textu popř. při jeho úpravách používalo zarovnání, můžete si příslušný režim nastavit v menu Text. Jedná se o položky: - Auto Fill - Paragraph Indent Tato nastavení je samozřejmě možné provést i přes klávesovou zkratku M-x auto-fill-mode. ## Zarovnání odstavců<a id="sec-1-3" name="sec-1-3"></a> Samotné odstavce se vytváří zcela běžným způsobem. Pokud budete vyžadovat, aby se při psaní textu popř. při jeho úpravách používalo zarovnání, můžete si příslušný režim nastavit v menu Text. ## Vyznačování v textu<a id="sec-1-4" name="sec-1-4"></a> Taktéž je možné použít několik značek přímo v textu. S těmito značkami jsme se již setkali, takže jen krátce: **tučné písmo**, *kurzíva*, <span class="underline">podtržené písmo</span>, `zdrojový kód` a `neformátovaný text`. for i in range(1, 10): print(i)
13. Export vytvořeného dokumentu do AsciiDocu
Zajímavé je, že export dokumentů z formátu org-mode do formátu AsciiDoc není přímo podporován, ale je zapotřebí použít externí nástroj. Ten naleznete na adrese https://github.com/yashi/org-asciidoc. Na rozdíl od výše zmíněného Markdownu je export do AsciiDocu většinou bezproblémový: převedou se dokonce i tabulky, odkazy na obrázky atd.
14. Značky určené primárně pro export dokumentů do dalších formátů
Při exportu dokumentů do jiných formátů, například při posílání a publikování článků, se někdy setkáme s nutností explicitního určení, kde končí odstavce a popř. musíme do odstavců vkládat konce řádků. Konce odstavců jsou specifikovány jednoduše – prázdným řádkem mezi odstavci (podobně jako v TeXu a LaTeXu). Jakékoli znaky konce řádku v rámci odstavce jsou tedy ignorovány. Proto, pokud je zapotřebí na nějakém místě provést zalomení řádku, je nutné použít dvojici znaků \\ (line break).
Dále se někdy setkáme s nutností vložit do dokumentu předformátovaný text. Zde máme několik možností. Delší bloky předformátovaného textu se vkládají mezi řádky #+BEGIN_EXAMPLE a #+END_EXAMPLE:
#+BEGIN_EXAMPLE předformátovaný text předformátovaný text předformátovaný text #+END_EXAMPLE
Kratší bloky můžeme označit jako předformátovaný text pomocí dvojtečky na začátku řádku:
: předformátovaný text
Před dvojtečku se mohou zapsat mezery, aby byl například text zarovnaný s ostatními odstavci:
: předformátovaný text
V případě, že potřebujete zachovat konce řádků, odsazení a současně i všechny prázdné řádky, použijte jiný typ bloku:
#+BEGIN_VERSE text se zachováním odsazení a prázdnými řádky #+END_VERSE
15. Bloky se zdrojovým kódem
Režim org-mode podporuje i práci s textovými bloky, které obsahují zdrojový kód. Zápis takového bloku vyžaduje určení typu souboru, resp. přesněji řečeno normalizovaného jména programovacího jazyka. Podívejme se nyní na jednoduchý příklad převzatý z manuálu k režimu org-mode:
#+BEGIN_SRC emacs-lisp (defun org-xor (a b) "Exclusive or." (if a (not b) b)) #+END_SRC
Zdrojový kód naprogramovaný v céčku:
#+BEGIN_SRC C int main(int argc, char **argv) { return -1; } #+END_SRC
Seznam všech podporovaných programovacích jazyků lze nalézt na adrese https://orgmode.org/manual/Languages.html#Languages. V současnosti se jedná o tyto jazyky:
Jazyk | Označení |
---|---|
Asymptote | asymptote |
C | C |
Clojure | clojure |
D | d |
Graphviz | dot |
Emacs Lisp | emacs-lisp |
gnuplot | gnuplot |
Java | java |
LaTeX | latex |
Lisp | lisp |
Lua | lua |
Mscgen | mscgen |
Octave | octave |
Oz | oz |
Plantuml | plantuml |
Python | python |
Ruby | ruby |
Scheme | scheme |
Sed | sed |
SQL | sql |
Vala | vala |
Awk | awk |
C++ | C++ |
CSS | css |
ditaa | ditaa |
Emacs Calc | calc |
Fortran | fortran |
Haskell | haskell |
Javascript | js |
Ledger | ledger |
Lilypond | lilypond |
MATLAB | matlab |
Objective Caml | ocaml |
Org mode | org |
Perl | perl |
Processing.js | processing |
R | R |
Sass | sass |
GNU Screen | screen |
shell | sh |
SQLite | sqlite |
16. Speciální symboly a použití diagramů kreslených v Ditaa
Režim org-mode při exportu podporuje i použití indexů a speciálních symbolů. Začneme popisem indexů. Pokud se má do indexu zapsat pouze jediné slovo, můžeme použít ^text pro zápis horního indexu a _text pro zápis indexu dolního. Pokud je slov více, musí se celý text, který se má zobrazit v horním či spodním indexu, vložit do složených závorek, což opět připomíná LaTeX. Speciální symboly, například π nebo Γ, se vkládají pomocí \pi a \Gamma.
Užitečné může taktéž být použití nástroje Ditaa, který slouží k převodu diagramů vytvořených v ASCII artu do bitmapových obrázků, typicky do formátu PNG. Tento program navíc zachovává umístění jednotlivých uzlů v diagramu, nesnaží se tedy o přeuspořádání do jiné podoby. To mj. znamená, že Ditaa bude používána v jiných oblastech než nástroje dostupné v balíčku Graphviz.
Použití programu Ditaa je skutečně velmi jednoduché. Začněme s následujícím diagramem, který lze snadno vytvořit v jakémkoli textovém editoru (dokonce i v Notepadu, což ale od čtenářů tohoto článku neočekávám :-):
+-------+ +------+ +------+ Algol +--->| PL/I + | +---+---+ +------+ | | | | v v +-------+ +-------+ | Perl | | K&R C | +-------+ +---+---+ | | v +-------+ | ANSI C| +-------+
Ditta automaticky zjistí, které znaky odpovídají uzlům a které hranám. Následně vytvoří tento obrázek:
Obrázek 24: První diagram vytvořený aplikací Ditaa.
V případě, že výsledný diagram neodpovídá očekávání, lze použít přepínač –debug, který povolí výpis různých ladicích informací na standardní výstup a současně do výsledného obrázku nakreslí mřížku:
ditaa version 0.9, Copyright (C) 2004--2009 Efstathios (Stathis) Sideris Running with options: debug Reading file: ditta1.txt Using grid: 0123456789012345678901234567890123456789 0 ( ) 1 ( ) 2 ( +-------+ +------+ ) 3 ( +------+ Algol +--->| PL/I + ) 4 ( | +---+---+ +------+ ) 5 ( | | ) 6 ( | | ) 7 ( v v ) 8 ( +-------+ +-------+ ) 9 ( | Perl | | K&R C | ) 10 ( +-------+ +---+---+ ) 11 ( | ) 12 ( | ) 13 ( v ) 14 ( +-------+ ) 15 ( | ANSI C| ) 16 ( +-------+ ) 17 ( ) 18 ( ) Locale: en_US Dialog.bold Rendering to file: ditta1_3.png Done in 0sec
Obrázek 25: První diagram vytvořený aplikací Ditaa při použití parametru –debug.
Velmi snadným způsobem lze změnit styl spojnic (hran) mezi uzly. Stačí, aby jediný znak ve spojnici byl nahrazen znakem : (dvojtečka) nebo = (rovnost) a celá hrana bude vykreslena čárkovaně. Proč postačuje změnit jediný znak? Je tomu tak z toho důvodu, aby úpravy diagramu byly velmi rychlé, bez nutnosti „překreslovat“ celou hranu:
/-------\ +------+ Algol +-+ : \---+---/ | | | | +------+ | | +-->| PL/I + v v \------/ +-------+ +-------+ | Perl | | K∓R C | \-------/ +---+---+ | | v /-------\ | ANSI C| +-------+
Obrázek 26: Třetí diagram vytvořený aplikací Ditaa.
Poslední vlastností programu Ditaa je schopnost měnit tvar uzlů pomocí speciálních značek zapisovaných do složených závorek. Opět se podívejme na příklad:
/------------------\ +------+ cRED Algol {d} +--+ : \---+-----------+--/ | | | | | +------------+ | | | +-->| PL/I {s} | v v v \------------/ +-------+ +------------------+ | Perl | | cBLU K&R C {io} | \-------/ +---+-----------+--+ | | | | v v /------------------\ | cGRE ANSI C | +------------------+
Obrázek 27: Diagram vytvořený aplikací Ditaa.
Diagramy psané v Ditaa se do dokumentů vkládají až překvapivě snadno:
#+BEGIN_SRC ditaa :file images/diagram-1.png +-------+ +------+ +------+ Algol +--->| PL/I + | +---+---+ +------+ | | | | v v +-------+ +-------+ | Perl | | K&R C | +-------+ +---+---+ | | v +-------+ | ANSI C| +-------+ #+END_SRC
17. Využití stopek
Při práci na úkolech je možné použít takzvané stopky (či časovače). Nejedná se ve skutečnosti o nic složitého, vlastně jen o rozšíření možností časových razítek. Klávesovou zkratkou C-c C-x . se stopky vynulují, zapnou a začnou běžet na pozadí. Další klávesová zkratka C-c C-x - slouží k vložení aktuální hodnoty stopek do textu. Pomocí C-c C-x , lze stopky pozastavit. V praxi bude dokument při použití stopek vypadat zhruba následovně:
0:00:00 spuštění časovače/stopek - 0:00:21 :: začátek úkolu 1 - 0:20:33 :: konec úkolu 1 - 1:30:00 :: začátek úkolu 2 - 2:21:49 :: konec úkolu 2
18. Hodiny a čas strávený na úkolech
Poslední vlastnost org-mode, s níž se dnes seznámíme, opět souvisí s časem. Tentokrát se jedná o záznamy umožňující zjistit, kolik času zabral určitý úkol. K tomu se používají časové značky, které se do dokumentů vkládají následujícími klávesovými zkratkami:
Klávesová zkratka | Význam klávesové zkratky |
---|---|
C-c C-x C-i | zapnutí hodin pro vybraný úkol |
C-c C-x C-o | vypnutí hodin pro vybraný úkol |
C-c C-x C-r | vložení tabulky s přehledem času |
Podívejme se nyní, jak vypadá dokument, do něhož jsou tyto časové značky vloženy. Povšimněte si, že je zaznamenán začátek úkolu, jeho konec a celkový čas:
* Úkoly ** DONE Přednáška Go vs Rust pro LinuxDays 2018 CLOCK: [2018-10-06 Tue 16:14]--[2018-10-06 Tue 18:14] => 2:00 ** DONE Přednáška o vim-lsp ** TODO Test plán pro Gemini service ** DONE Článek o org-mode - úvod ** TODO Článek o org-mode - to právě čtete :-) ** Sprint #09 ** Sprint #10 CLOCK: [2018-10-16 Tue 15:12]--[2018-10-16 Tue 16:12] => 1:00 ** Taky se nezapomenout nasnídat CLOCK: [2018-10-16 Tue 16:12]--[2018-10-16 Tue 16:42] => 0:30
Klávesovou zkratkou C-c C-x C-r si dokonce můžeme nechat zobrazit tabulku s přehledem celkového času. Základní formát této tabulky vypadá následovně:
#+BEGIN: clocktable :maxlevel 2 :scope file #+CAPTION: Clock summary at [2018-10-16 Tue 16:14] | Headline | Time | | |----------------------------------------+--------+------| | *Total time* | *3:30* | | |----------------------------------------+--------+------| | Úkoly | 3:30 | | | \emsp DONE Přednáška Go vs Rust pro... | | 2:00 | | \emsp Sprint #10 | | 1:00 | | \emsp Taky se nezapomenout nasnídat | | 0:30 | #+END:
Úpravou prvního řádku #+BEGIN: clocktable a přegenerováním tabulky můžeme například určit začátek a konec časového období, pro které je tabulka vygenerována:
#+BEGIN: clocktable :tstart "<2018-08-08 Thu 10:00>" :tend "<2018-09-10 Fri 12:00>" #+END: clocktable
Popř. – což je velmi užitečné – můžeme čas určit relativně. Následující příklad, který je opět převzatý z dokumentace, určujem že se má tabulka vytvořit pro poslední týden (zápis „-1w“ značí „minus one week“)
#+BEGIN: clocktable :tstart "<-1w>" :tend "<now>" #+END: clocktable
19. Seznam již popsaných příkazů režimu org-mode
V této kapitole jsou pro úplnost vypsány všechny příkazy režimu org-mode, s nimiž jsme se seznámili dnes popř. v předchozím článku:
Objekt | Klávesová zkratka | Význam klávesové zkratky |
---|---|---|
strom/podstrom | TAB | změna viditelnosti konkrétního vybraného podstromu (postupně se rotuje mezi různými úrovněmi) |
strom/podstrom | S-TAB | změna viditelnosti obsahu celého bufferu (dokumentu) |
celý dokument | C-u C-u TAB | výchozí nastavení viditelnosti |
celý dokument | C-u C-u C-u TAB | zobrazení obsahu celého souboru, tj. celé jeho struktury |
seznam | M-RET | přidání dalšího prvku do (ne)číslovaného seznamu |
seznam | C-c – | postupná změna typu prvku (číslovaný seznam atd.) |
seznam | C-c ^ | seřazení seznamu |
seznam | C-c * | převedení aktivního prvku na nadpis |
seznam | C-c | | převod seznamu (i jiného bloku) na tabulku |
seznam | M-šipka nahoru | přesun prvku v rámci seznamu nahoru |
seznam | M-šipka dolů | přesun prvku v rámci seznamu dolů |
checkbox | C-c C-c | zaškrtnutí/zrušení zaškrtnutí políčka |
checkbox | C-c C-x C-b | zaškrtnutí/zrušení více políček |
checkboxy | C-c # | výpočet % nebo zlomku dokončených úkolů |
tabulka | C-c * | přepočet jednoho řádku |
tabulka | C-u C-c * | přepočet celé tabulky |
tabulka | C-c } | zobrazení indexů řádků i sloupců |
tabulka | M-šipka doleva | prohození dvou sloupců |
tabulka | M-šipka doprava | prohození dvou sloupců |
tabulka | M-šipka nahoru | prohození dvou řádků |
tabulka | M-šipka dolů | prohození dvou řádků |
dokument | C-c C-l | vložení odkazu (linku) do dokumentu |
dokument | C-c C-o | přechod na dokument, na nějž vede odkaz (link) |
dokument | C-c l | vložení linku na editovaný (otevřený) dokument |
dokument | C-c C-n | přesun kurzoru na další nadpis |
dokument | C-c C-p | přesun kurzoru na předchozí nadpis |
dokument | C-c C-u | přesun kurzoru na nadpis o úroveň výše, než je současný text |
dokument | C-c C-j | skok – skrytí běžného textu s následným přesunem kurzoru |
dokument | C-c C-f | přesun kurzoru na další nadpis stejné úrovně |
dokument | C-c C-b | přesun kurzoru na předchozí nadpis stejné úrovně |
položka (úkol) | C-c . | vložení |
položka (úkol) | C-c C-t | změna stavu úkolu (ve výchozím nastavení TODO→nic→DONE) |
položka (úkol) | C-c / t | zobrazení úkolů ve stavu „DONE“ |
položka (úkol) | C-c C-x C-i | zapnutí hodin pro vybraný úkol |
položka (úkol) | C-c C-x C-o | vypnutí hodin pro vybraný úkol |
dokument | C-c C-x C-r | vložení tabulky s přehledem času |
datum | S-right | změna dne, kdy má být úkol dokončen |
datum | S-left | změna dne, kdy má být úkol dokončen |
datum | S-up | modifikace té jednotky, na které se nachází kurzor (rok, měsíc nebo den) |
datum | S-down | modifikace té jednotky, na které se nachází kurzor (rok, měsíc nebo den) |
20. Odkazy na Internetu
- Org-Mode Reference Card
https://orgmode.org/orgcard.pdf - Org-mode Tutorial 1 – Introduction and basics
https://www.youtube.com/watch?v=vCyBu8Az254 - Getting Started With Org Mode
https://www.youtube.com/watch?v=SzA2YODtgK4 - Org as a spreadsheet system: a short introduction
https://orgmode.org/worg/org-tutorials/org-spreadsheet-intro.html - David O'Toole Org tutorial
https://orgmode.org/worg/org-tutorials/orgtutorial_dto.html - Org mode beginning at the basics
https://orgmode.org/worg/org-tutorials/org4beginners.html - A Guided Tour of Emacs
https://www.gnu.org/software/emacs/tour/ - Emacs (Wikipedia)
https://en.wikipedia.org/wiki/Emacs - Emacs timeline
http://www.jwz.org/doc/emacs-timeline.html - Emacs Text Editors Family
http://texteditors.org/cgi-bin/wiki.pl?EmacsFamily - Evil (Emacs Wiki)
https://www.emacswiki.org/emacs/Evil - Evil (na GitHubu)
https://github.com/emacs-evil/evil - Evil (na stránkách repositáře MELPA)
https://melpa.org/#/evil - Evil Mode: How I Switched From VIM to Emacs
https://blog.jakuba.net/2014/06/23/evil-mode-how-to-switch-from-vim-to-emacs.html - Emacs/Evil-mode – A basic reference to using evil mode in Emacs
http://www.aakarshnair.com/posts/emacs-evil-mode-cheatsheet - From Vim to Emacs+Evil chaotic migration guide
https://juanjoalvarez.net/es/detail/2014/sep/19/vim-emacsevil-chaotic-migration-guide/ - Introduction to evil-mode {video)
https://www.youtube.com/watch?v=PeVQwYUxYEg - GNU Emacs (home page)
https://www.gnu.org/software/emacs/ - GNU Emacs (texteditors.org)
http://texteditors.org/cgi-bin/wiki.pl?GnuEmacs - GNU Emacs Lisp Reference Manual: Point
https://www.gnu.org/software/emacs/manual/html_node/elisp/Point.html - GNU Emacs Lisp Reference Manual: Narrowing
https://www.gnu.org/software/emacs/manual/html_node/elisp/Narrowing.html - GNU Emacs Lisp Reference Manual: Functions that Create Markers
https://www.gnu.org/software/emacs/manual/html_node/elisp/Creating-Markers.html - GNU Emacs Lisp Reference Manual: Motion
https://www.gnu.org/software/emacs/manual/html_node/elisp/Motion.html#Motion - GNU Emacs Lisp Reference Manual: Basic Char Syntax
https://www.gnu.org/software/emacs/manual/html_node/elisp/Basic-Char-Syntax.html - Elisp: Sequence: List, Array
http://ergoemacs.org/emacs/elisp_list_vs_vector.html - Elisp: Property List
http://ergoemacs.org/emacs/elisp_property_list.html - Elisp: Hash Table
http://ergoemacs.org/emacs/elisp_hash_table.html - Elisp: Association List
http://ergoemacs.org/emacs/elisp_association_list.html - The mapcar Function (An Introduction to Programming in Emacs Lisp)
https://www.gnu.org/software/emacs/manual/html_node/eintr/mapcar.html - Anaphoric macro
https://en.wikipedia.org/wiki/Anaphoric_macro - Some Common Lisp Loop Macro Examples
https://www.youtube.com/watch?v=3yl8o6r_omw - The Roots of Lisp
http://www.paulgraham.com/rootsoflisp.html - An Introduction To Using GDB Under Emacs
http://tedlab.mit.edu/~dr/gdbintro.html - An Introduction to Programming in Emacs Lisp
https://www.gnu.org/software/emacs/manual/html_node/eintr/index.html - 27.6 Running Debuggers Under Emacs
https://www.gnu.org/software/emacs/manual/html_node/emacs/Debuggers.html - GdbMode
http://www.emacswiki.org/emacs/GdbMode - Vrapper aneb spojení možností Vimu a Eclipse
https://mojefedora.cz/vrapper-aneb-spojeni-moznosti-vimu-a-eclipse/ - Vrapper aneb spojení možností Vimu a Eclipse (část 2: vyhledávání a nahrazování textu)
https://mojefedora.cz/vrapper-aneb-spojeni-moznosti-vimu-a-eclipse-cast-2-vyhledavani-a-nahrazovani-textu/ - EINE (Emacs Wiki)
http://www.emacswiki.org/emacs/EINE - EINE (Texteditors.org)
http://texteditors.org/cgi-bin/wiki.pl?EINE - ZWEI (Emacs Wiki)
http://www.emacswiki.org/emacs/ZWEI - ZWEI (Texteditors.org)
http://texteditors.org/cgi-bin/wiki.pl?ZWEI - Zmacs (Wikipedia)
https://en.wikipedia.org/wiki/Zmacs - Zmacs (Texteditors.org)
http://texteditors.org/cgi-bin/wiki.pl?Zmacs - Command-line document conversion tools for writers
https://opensource.com/article/17/3/document-conversion-tools-writers - How I use Emacs and Org-mode to implement GTD
http://members.optusnet.com.au/~charles57/GTD/gtd_workflow.html - Outlining Your Notes with Org
http://sachachua.com/blog/2008/01/outlining-your-notes-with-org/ - Org-mode Teaser Demo
https://github.com/novoid/org-mode-workshop/blob/master/featureshow/org-mode-teaser.org - Taking notes with a timer
https://orgmode.org/manual/Timers.html - Markdown
https://daringfireball.net/projects/markdown/ - Exporting from org-mode to markdown
https://emacs.stackexchange.com/questions/4279/exporting-from-org-mode-to-markdown - org-asciidoc
https://github.com/yashi/org-asciidoc - Org-Mode Is One of the Most Reasonable Markup Languages to Use for Text
https://karl-voit.at/2017/09/23/orgmode-as-markup-only/ - Karl Voit on the Superiority of Org Mode Markup
http://irreal.org/blog/?p=6627 - Languages (pro org-mode)
https://orgmode.org/manual/Languages.html - Babel: Languages
https://orgmode.org/worg/org-contrib/babel/languages.html