Hlavní navigace

Outline editory (7)

11. 11. 2004
Doba čtení: 12 minut

Sdílet

Dnešní část seriálu bude věnována dvojici témat. Prvním z nich je popis souborových formátů vhodných pro přenos osnovy (hierarchického textu) mezi různými aplikacemi. Druhým tématem je stručné představení aplikace FreeMind - jde o významný program Open Source vyvíjený licencí GPL, který lze použít pro "myšlenkové mapování", tedy pro činnost, kterou nelze pomocí outline editorů plnohodnotně a efektivně provádět.

Obsah

1. Formáty souborů pro přenos osnovy mezi aplikacemi

    1.1 Formát textového editoru jEdit
    1.2 Formát nadstavby TVO
    1.3 Formát textového editoru Emacs
    1.4 Využití XML
    1.5 Datový formát OPML
    1.6 Historický formát ThinkTanku
2. FreeMind – o další krok blíže k lidskému myšlení
    2.1 Mind mapping
    2.2 Ovládání FreeMindu
    2.3 Další vlastnosti, přednosti a zápory
3. Slovo závěrem

1. Formáty souborů pro přenos osnovy mezi aplikacemi

Na proces tvorby osnovy se můžeme dívat z více hledisek. Buď se jedná o způsob, jakým si uživatel zapisuje svoje soukromé poznámky, nebo o způsob zápisu nějakého složitěji strukturovaného dokumentu, který může být v budoucnu zpracován nějakým jiným programem nebo prezentován dalším uživatelům v elektronické formě, například pomocí Internetu.

Zejména u druhého způsobu použití osnovy je nutné osnovu přenášet mezi různými typy aplikací. Pokud vynecháme primitivní přenos přes obyčejné textové soubory nebo přes schránku (clipboard), při kterém se ztrácí informace o vlastní osnově i o formátování textů, je zapotřebí zajistit, aby aplikace, které s osnovou pracují, používaly stejný formát souborů pro čtení a zápis osnovy.

Co vlastně od takového formátu vyžadujeme? Prvním a nejzákladnějším požadavkem je samozřejmě přenos textů se zachováním hierarchie, tj. samotné osnovy. Dále můžeme požadovat zachování formátování textů a odstavců (tabelační značky, zarovnání, font, barva atd.). V neposlední řadě je vhodné, aby se korektně přenesly i případné hypertextové odkazy, a to jak v rámci jednoho dokumentu, tak i odkazy směřující na externí dokumenty uložené na lokálním disku či Internetu.

V dalších odstavcích budou uvedeny některé často používané formáty pro uložení osnovy. U každého popisovaného formátu se budu snažit uvést jejich základní vlastnosti, přednosti i zápory.

1.1 Formát textového editoru jEdit

Mezi nejjednodušší formáty souborů pro zápis osnovy patří formát používaný textovým editorem jEdit. Jak jsem již napsal v předchozí části tohoto seriálu, může jEdit pracovat s hierarchií textů (osnovou) ve dvou režimech: implicitním (indent) a explicitním.

Při práci v implicitním (indent) režimu je osnova založena na počtu bílých znaků umístěných na začátku řádku. Podle počtu bílých znaků je určeno, na jaké úrovni osnovy se daný řádek nachází. Nejjednodušší je využívat znakyTAB, kde každý znak TAB posune text na řádku o jednu úroveň níže.

Explicitní režim je založen na vkládání speciálních značek do textu. Pro začátek textu v osnově je vyhrazena trojice znaků {{{ a pro konec trojice }}}.

Vzhledem k tomu, že jEdit je textový editor, ukládá se text (lépe řečeno buffer) do externích souborů přesně v té formě, jakou uživatel vidí na obrazovce. V souboru se tedy nachází buď znaky TAB, nebo přímo otevírací a uzavírací závorky {{{. Oba dva formáty jsou přenositelné minimálně do textového editoru vim, možnosti importu do dalších aplikací spočívají ve tvorbě filtru. Některé filtry jsou již dodány přímo s dříve popsanou nadstavbou TVO.

Ukázka souboru uloženého ve formátu jEditu:

Top Level
    Sub-heading
    Another sub-heading
        Sub-sub-heading

Mezi přednosti tohoto formátu patří bezesporu jeho jednoduchost, na druhou stranu není možné žádným způsobem zapisovat hypertextové odkazy a formát textů. Jedná se tedy o tzv. plaintext, se všemi jeho výhodami a nevýhodami.

1.2 Formát nadstavby TVO

Formát již dříve popsané nadstavby nad textovým editorem vim, která se jmenuje TVO (TheVim Outliner), je v mnohém podobný implicitnímu formátu jEditu. Hierarchie je opět určena počtem znaků TAB na začátku každého řádku textu.

Oproti jEditu však TVO přináší některá rozšíření, zejména možnost specifikace odstavcového textu (který tak lze zalamovat na více řádků bez nutnosti měnit úroveň těchto řádků) pomocí znaku roura a v neposlední řadě také podporu hypertextových odkazů v rámci jednoho souboru. Hypertextové odkazy jsou důležité v případě, kdy je zapotřebí propojit dva řádky v osnově, které spolu jinak (hierarchicky) nesouvisí. Tak se dá původní strom převést na obecný graf.

Ukázka souboru uloženého ve formátu nadstavby TVO:

Top Level
    Sub-heading
    | Text
    Another sub-heading
        Sub-sub-heading
        | More text

Předností formátu TVO je opět jeho jednoduchost, mezi nevýhody lze počítat nemožnost ukládat formát textů, což souvisí zejména s vlastnostmi editoru vim, nad kterým TVO pracuje.

1.3 Formát textového editoru Emacs

I textový editor Emacs umožňuje tvorbu osnov. Pro tento účel je však použit poněkud odlišný formát souborů. Jednotlivé úrovně v hierarchii jsou označeny hvězdičkami na začátku řádku. Pokud řádek nezačíná hvězdičkou, jedná se o součást odstavcového textu. Z tohoto formátu souborů i ze způsobu zobrazení textů v tomto formátu vyplývá, že osnova v Emacsu je určena převážně pro zápis delšího textu, který je rozdělen do kapitol a podkapitol. Naproti tomu je formát jEditu a TVOvhodný pro zápis jednořádkových poznámek s případným (trošku těžkopádným) vkládáním odstavcového textu.

Ukázka souboru uloženého ve formátu Emacsu:

* Top Level Heading

** Sub heading

** Sub heading 2
*** Sub subheading

Vzhledem k tomu, že je pro zápis osnovy opět použit jednoduchý textový formát, je konverze do jiné aplikace snadná. Opět však chybí možnost zvýraznit v textu důležité části pomocí nastavení barev a/nebo písma.

1.4 Využití XML

Již ze samé podstaty osnovy vyplývá, že vhodné souborové formáty by měly podporovat zejména přehledný zápis hierarchie textů, která je specifikována pomocí grafové struktury strom. Každého, kdo je obeznámen s technologií XML, správně napadne, že právě vhodně navržený formát založený na XML by mohl být pro zápis osnovy ideální (osobně mi tedy celý návrh XML připadá poněkud těžkopádný, preferuji LISPovský zápis, ale to by bylo na delší diskusi).

V XML je totiž možné vyjádřit stromovou strukturu pomocí do sebe vkládaných elementů. Atributy těchto elementů pak mohou představovat text zobrazený uživateli. Kromě toho je možné každému elementu přiřadit i další atributy (barva, font apod.) nebo názvem elementu rozlišit, o jaký typ textu se jedná (například adresa, telefon, pracovní poznámka, to-do apod.).

Mezi výhody XML patří jeho čitelnost i pro člověka a dostupnost značného množství čteček, které lze vhodnou šablonou přeměnit na prohlížeče outline dokumentů. V současné době se jako nejlepší formát založený na XML a určený pro uložení osnovy jeví formát OPML, který bude popsán v následujícím odstavci.

1.5 Datový formát OPML

The purpose of this format is to provide a way to exchange information between outliners and Internet services that can be browsed or controlled through an outliner.
OPML authors

Jedním z datových formátů pro popis osnovy je formát OPML (Outline Processor Markup Language), jehož domovská stránka je umístěna na adrese www.opml.org/spe­ca specifikaci lze nalézt na adrese www.opml.org/spec. Tento formát je zajímavý zejména svou jednoduchostí a přitom rozšiřitelností. Jednou z aplikací, která formát OPML nativně používá, je radio.userlan­d.com. Podpora ze strany dalších aplikací je malá či vůbec žádná (viz www.opml.org/di­rectory/19/to­ols), avšak vzhledem k relativní jednoduchosti formátu OPML můžeme v budoucnu očekávat jeho větší podporu, zejména ze strany Open Source aplikací.

Stejně jako v jiných formátech založených na XML se i zde jedná o zápis stromové struktury v textovém souboru, který je čitelný jak pro člověka, tak i pro aplikace. Celá osnova je uzavřena v elementu <opml>, který musí obsahovat jediný atribut version a dva vložené elementy <head> a <body>.

V elementu <head> jsou uloženy základní informace, jako je titulek (název) osnovy, jméno autora a datum vytvoření i modifikace osnovy. Kromě toho jsou v hlavičce pro každý řádek osnovy uvedeny informace, zda je daný řádek rozbalen, či ne – tuto informaci však mohou aplikace ignorovat a zobrazovat například celou osnovu zabalenou.

Mnohem zajímavější je element <body>, který obsahuje vlastní osnovu. V elementu body může být umístěn libovolný počet elementů <outline>, které samy mohou rekurzivně obsahovat další elementy <outline>. Text, který má být zobrazen uživateli v outline editoru, je umístěn v atributech elementu <outline>. Tento element může být uzavřen buď samostatným zápisem elementu se zpětným lomítkem před jménem, nebo, zejména v případě jednořádkového textu, uzavřením elementu lomítkem umístěným před uzavírací závorkou. Obě verze samozřejmě odpovídají specifikaci XML.

Krátká ukázka dokumentu zapsaného ve formátu OPML:

<opml version="1.0">
<head>
<title>presentation.xml</title>
  <dateCreated>Thu, 27 Jul 2000 01:35:52 GMT
  </dateCreated>

  <dateModified>Fri, 15 Sep 2000 09:05:37 GMT
  </dateModified>
  <ownerName>Dave Winer
  </ownerName>
  <ownerEmail>dave@userland.com</ownerEmail>
  <expansionState/>

  <vertScrollState>1</vertScrollState>
  <windowTop>317</windowTop>
  <windowLeft>252</windowLeft>
  <windowBottom>514</windowBottom>

  <windowRight>634</windowRight>
</head>
<body>
  <outline text="Welcome to Frontier 5!">
    <outline text="What is Frontier?"/>
    <outline text="It's a Content Management System"/>

  </outline>
  <outline text="Why Manage Content?">
    <outline text="Form separated from content"/>
    <outline text="Everyone works on what they do best"/>
  </outline>
  <outline text="Three groups">

  <outline text="Writers write"/>
  <outline text="Designers design"/>
  <outline text="Geeks keep everything working"/>
  <outline text="Frontier is for the geeks"/>
  </outline>
</body>

</opml>

Přednosti tohoto formátu už byly zmíněny výše – čitelnost, rozšiřitelnost, možnost úprav čteček XML pomocí šablon a nově také možnost publikování osnovy na Internetu. Pro vim již existuje skript (napsaný v programovacím jazyce Ruby), který umožňuje převod z formátu OPML do formátu čitelného pomocí TVO.

1.6 Historický formát ThinkTanku

O aplikaci ThinkTank jsem se zmínil už v první části tohoto seriálu. Jedná se o historickou aplikaci dostupnou na počítačích Apple II i PC pod DOSem. Formát, která tato aplikace používala, je opět textový a jeho poměrně jednoduchá struktura je patrná z následujícího příkladu:

.HEAD 0 +  ThinkTank
.HEAD 1 +  Early Outliner
.HEAD 2 -  Created by Dave Winer
Who also created the OPML format
.HEAD 2 -  http://www.outliners.com/thinkTank2Pc
.HEAD 1 +  Simple text format
.HEAD 2 -  Each heading line begins with .HEAD n s text
Where n is a number representing the level of the
heading s is either + or -, depending on whether the
heading has subheadings or not text is the text.
.HEAD 2 -  A normal text line is just that - normal text,
after a heading
.HEAD 2 -  A deleted line begins with '^Z'

K dispozici je skript v Perlu, který provádí převod z formátu ThinkTanku do formátu nadstavby TVO.

2. FreeMind – o další krok blíže k lidskému myšlení

V této kapitole bych se chtěl věnovat velmi zajímavé aplikaci pro „myšlenkové mapování“, která se jmenuje FreeMind. Jedná se o plně grafickou aplikaci psanou v Javě, pro její spuštění je zapotřebí mít korektně nainstalovanou JVM (Java Virtual Machine), konkrétně JRE 1.4 a vyšší.

Přínosem je velikost této aplikace, která dosahuje pouze cca 700 kB, aplikace je tedy přenositelná i na disketě, další výhodou je velmi intuitivní a rychlé ovládání pomocí myši a klávesových zkratek. Vytvořenou mapu lze prezentovat na Internetu buď ve formátu HTML, nebo přímo v appletu FreeMindu. Zajímavostí je, že několik autorů tohoto úspěšného produktu pochází z ČR.

V odstavci výše jsem se zmínil o tom, že FreeMind je určen pro „myšlenkové mapování“ – mind mapping. Co však tento termín značí?

2.1 Mind mapping

Jedná se, zjednodušeně řečeno, o metodu nelineárního znázornění informací, kterou navrhl Tony Buzan. Při této metodě se kombinují důležitá klíčová slova nebo celé texty s obrazy a vytváří se mezi nimi vizuální spoje a hierarchie. V určitém ohledu se jedná o rozšíření možností outline editorů o další dimenzi, protože outline editory jsou, vzhledem ke svému úzkému propojení s textovými editory, v podstatě lineární – text plyne shora dolů a zleva doprava, jediná změna nastává při skoku na vyšší či nižší kapitolu (úroveň) v hierarchii.

U mind mappingu je jedna dimenze přidána – informace se šíří a větví z jednoho uzlu do všech směrů. Výsledkem je opět strom, podobně jako u outline editorů, jeho větve a uzly však mohou být libovolně rozmístěny v ploše a k tomu ještě libovolně propojeny s dalšími uzly. Symboly, obrázky a spojnice mezi jednotlivými větvemi nakonec vyústí v barevné znázornění veškerého materiálu pohromadě, což šetří místo a současně si při tvorbě map uživatel utřídí myšlenky. Pro zjednodušení a zpřehlednění práce je také možné některé větve skrýt nebo naopak zobrazit. Ukázka jednoduché myšlenkové mapy je na prvním obrázku, který obsahuje odkaz na rozbalenou verzi této mapy.

Ukázka mind mapy
Obrázek 1: Ukázka mind mapy

Kromě textových uzlů je také možné přidávat hypertextové odkazy a obrázky, což dále zvyšuje použitelnost produktu, který se tak dostává do zcela jiné kategorie aplikací než běžné outline editory.

2.2 Ovládání FreeMindu

Základ ovládání aplikace FreeMind je velmi jednoduchý a intuitivní. Levé tlačítko myši stisknuté na pracovní ploše mimo uzly je možné použít pro posun celé mapy, totéž tlačítko použité na uzlu slouží k zobrazení či skrytí poduzlů, ke skoku na hypertextový odkaz nebo k přesunu uzlu. Ve výchozím nastavení není zapotřebí uzly vybírat, stačí na ně pouze najet kurzorem myši.

Pokud se při tažení (drag) z jednoho uzlu do uzlu jiného stiskne levé tlačítko myši společně s klávesami Ctrl a Shift, je vytvořena mezi uzly šipka, která představuje vizuální znázornění odkazů uvnitř jedné mapy.

Pravé tlačítko myši slouží k vyvolání kontextového menu, které se liší v závislosti na tom, kde bylo tlačítko myši stisknuto. Při vyvolání kontextového menu mimo uzly je možné vybrat z více otevřených map, při vyvolání menu nad uzlem je možné měnit parametry uzlu, editovat text v uzlu, přidávat k uzlu hypertextové odkazy apod.

Kromě myši lze použít i klávesnici. Důležité jsou zejména kurzorové klávesy (pohyb v mapě), mezerník Space (skrytí či rozbalení poduzlů), Enter (editace uzlu, vytvoření uzlu na stejné úrovni) a Insert (vytvoření poduzlu). Hypertextové odkazy se tvoří pomocí klávesové zkratky Ctrl+K. Kláves je samozřejmě mnohem více, jejich bližší popis je uveden u jednotlivých položek menu.

Toolbar na levé straně lze použít pro připojení ikony či ikon k aktivnímu uzlu, horní toolbar slouží k formátování textu v uzlu. Z dalších nastavení zmíním změnu stylu uzlů: Node-Style-Bubble (podle mého názoru přehlednější) nebo Node-Style-Fork, dále nastavení stylu hran Edge-Style a jejich šířky Edge-Width. Pro změnu barvy uzlu se hodí klávesová zkratka Alt+C.

2.3 Další vlastnosti, přednosti a zápory

FreeMindu je možné provést export do HTML nebo RTF, přičemž se vyexportuje osnova podobná osnově vytvořené v outline editorech. Souborový formát, který FreeMind interně používá, je založen na XML, a tak je dobře čitelný. Výjimkou je (jak jinak) čeština, kdy jsou české znaky vloženy pomocí jejich číselných kódů, takže ruční editace vytvořeného souboru s koncovkou .mm je složitá.

Mezi přednosti lze zařadit už výše zmíněnou intuitivnost v ovládání, stabilitu a celkovou propracovanost aplikace (nejedná se ostatně o první aplikaci pro tvorbu myšlenkových map, takže ovládání je již léty praxe odzkoušeno). Mezi zápory patří především praktická nemožnost tvorby jednoduchých tabulek v odstavcovém, tj. víceřádkovém textu. I po vložení tabulátorů pro zarovnání sloupců se totiž formát odstavce nezachová.

root_podpora

3. Slovo závěrem

V tomto seriálu, který nakonec dospěl až do své sedmé části, jsem se snažil uživatelům přiblížit poměrně neznámý typ aplikací, které se však mohou v mnoha případech hodit – ať už na průběžný zápis poznámek, tvorbu osnovy delšího textu, nebo pro rychlé vytvoření prezentace. Mně osobně outline editory (zejména TVO) v mnohém zjednodušily práci. Vytvářím si pomocí nich poznámky v zaměstnání, osnovy k článkům a např. také prvotní dokumentaci k vytvářeným aplikacím.

Doufám, že si i čtenáři těchto článků vybrali či vyberou „ten svůj“ outline editor a budou ho ke své spokojenosti používat.

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.