JOT2012 Demo3-ohje

Sisällysluettelo

1 Ei Emacsia? Asennetaan…

Jos ei koneestasi löydy Emacsia, tai se on vain komentoriviversio, suosittelemme GUI-version asentamista.

Org-mode tulee jo Emacsin mukana, suosittelemme siksi Emacs-versiota 24. Org-moden uusin versio löytyy aina Org-moden omilta sivuilta (Veijo Google löytää). Org-mode dokumentaatio: http://orgmode.org/org.html

2 Emacs

Emacs on tekstimuokkain. Se on itsessään hyvin muokattava ja laajennettava editori, ja sisältää paljolti kaiken dokumentaation itsestään. Oikeastaan Emacs on oma, kokonainen ympäristönsä, jolla voi tehdä paljon siitä, mihin yleensä tulee käytettyä useaa eri ohjelmistoa. Erilaisia muokkauksia varten Emacsista löytyy moodeja, joita näin alkuun voidaan pitää eri työkaluina Emacsin sisällä, tai Emacsin laajennoksina. Esimerkkejä moodeista ovat eri ohjelmointikielten moodit, sähköpostimoodi ja WWW-selain moodi.

./emacs-gui.png

Emacs graafisella käyttöliittymällä.

Emacsia voi käyttää hiirellä kuin Notepadia konsanaan. Emacsin hyödyt tulevat tosin esille vasta komentoja näppäimistöltä annettaessa, hieman kuten Vimissä. Hankalinta onkin oppia näppäinkomentojen antaminen. Jos esimerkiksi näppäinkomento on C-x C-c, joka lopettaa Emacsin, se annetaan painamalla ensin Ctrl-näppäin alas, ja se alaspidettynä näpäytetään peräkkäin x ja c. Jos taas näppäinkomento on C-h t, joka avaa Emacsin käytön tutoriaalin, painetaan ensin Ctrl-näppäin alas ja sitten h, mutta ennen t-näppäimen painamista Ctrl vapautetaan. Eli aika lailla samoin, kuin vaikka Windowsin kopiointi-näppäinkomento toimii. Tosin jo ensimmäisestä esimerkistä huomataan, etteivät Windowsin näppäinkomennot välttämättä päde Emacsissa. Emacs on noin kahdeksan vuotta Windowsia vanhempi ohjelmisto.

Muita Emacsin näppäinkomennoissa käytettyjä näppäimiä ovat S-, eli vaihtonäppäin (shift), sekä M- eli meta-näppäin, jonka virkaa täyttää yleensä <Esc>, eli näppäimistön vasemman yläkulman Escape-näppäin. Meta löytyy myös Alt tai Cmd näppäimestä, tai jostain siltä suunnalta. Valitettavasti tuo vaihtelee paljon, mutta Escape toimii yleensä. Tärkein meta-näppäily lienee M-x, jonka jälkeen Emacs pyytää kehoitteella komentoa. Tällä tavalla voi korvata näppäilyjen käytön tai käyttää komentoja, joille ei ole (vielä) määritelty näppäinkomentoja. Esimerkiksi M-x save-buffer <Ret> vastaa näppäinkomentoa C-x C-s. <Ret> on tuossa Return tai Enter näppäin, siis rivinvaihto.

2.1 Käynnistys, lataus, tallennus, lopetus

Emacs käynnistyy komennolla emacs, jonka jälkeen voi antaa käynnistysoptioita tai tiedostopolkuja. Monesti tämä käynnistää vain tekstiversion, mutta esim. Linuxissa käynnistyy graafinen versio. Jos haluatte käynnistää vain tekstiversion, se tapahtuu komennolla emacs -nw. Graafisen version saa käyntiin kullekin käyttöliittymälle ominaisella tavalla, esim. Windowsissa Start-valikosta.

Käydäänpä läpi Emacsin näyttö, nyt tekstimoodissa. Ensin kuvaruudun tai ikkunan ylälaidasta löytyvät valikot, jotka aktivoituvat joko hiirellä tai F10 näppäimellä.

File Edit Options Buffers Tools Help                                            

Sitten tulee varsinainen työalue. Käynnistyessään Emacs näyttää oletuksena pienen opetustekstin Emacsin kä(ytöstä. Lue se.

Welcome to GNU Emacs, one component of the GNU/Linux operating system.

Get help           C-h  (Hold down CTRL and press h)
Emacs manual       C-h r        Browse manuals     C-h i
Emacs tutorial     C-h t        Undo changes       C-x u
Buy manuals        C-h C-m      Exit Emacs         C-x C-c
Activate menubar   M-`
(`C-' means use the CTRL key.  `M-' means use the Meta (or Alt) key.
If you have no Meta key, you may instead type ESC followed by the character.)
Useful tasks:
Visit New File                  Open Home Directory
Customize Startup               Open *scratch* buffer

GNU Emacs 23.1.1 (x86_64-redhat-linux-gnu, GTK+ Version 2.18.9)
 of 2012-02-27 on x86-007.build.bos.redhat.com
Copyright (C) 2009 Free Software Foundation, Inc.

GNU Emacs comes with ABSOLUTELY NO WARRANTY; type C-h C-w for full details.
Emacs is Free Software--Free as in Freedom--so you can redistribute copies
of Emacs and modify it; type C-h C-c to see the conditions.
Type C-h C-o for information on getting the latest version.

Viimeisenä tulevat tilarivi ja viestirivi. Tilariviltä näet, missä tilassa Emacs on, kellonajan, jne. Tätä riviä voit itse muokata. Huomaa, että ainakin graafisessa versiossa voit myös muuttaa tiloja hiirellä klikkailemalla.

-UUU:%%--F1  *GNU Emacs*    Top L1     (Fundamental)----9:39 0.10---------------
For information about GNU Emacs and the GNU system, type C-h C-a.

Viimeinen rivi on viestirivi, jossa näkyvät Emacsin *Messages* puskuriin tulostuvat viestit. Jos Emacs kysyy syötettä, se myös annetaan tällä rivillä. Jos käytät Puttyn läpi Emacsia, tai melkein mitä muuta tahansa, ovat värit lähinnä karmeat. Se on Puttyn ominaisuus, joskin Emacsistakin voit värejä vaihtaa.

Emacsiin voi ladata tiedostoja muokattavaksi näppäilyllä C-x C-f. Nyt on oltava tarkkana, ettei näppäile f ilman Ctrl-näppäintä, sillä se käynnistää toisen komennon. Onnistuneen komennon annon jälkeen Emacs kyselee tiedoston nimeä, jonka antaminen päätetään <Ret>, eli Return tai Enter näppäimen painamiseen, siis rivinvaihtoon.

Varsinaisesti Emacsissa ei koskaan muokata tiedostoa, vaan puskuria, jossa on tiedoston sisältö. Yleensä puskuriin liittyy jokin tiedosto, muttei välttämättä. Puskurin sisällön voi tallentaa siihen liittyvään tiedostoon näppäilyllä C-x C-s, tai johonkin toiseen tiedostoon näppäilyllä C-x C-w.

Emacs lopetetaan näppäilyllä C-x C-c. Jos puskureissa on tallentamattomia tietoja, Emacs käy nämä läpi ja varmistaa tallennetaanko tiedo vai ei.

2.2 Puskurissa ja puskureissa liikkuminen

Yleensä kursorinäppäimet toimivat liikkumisessa puskurin sisällä. Jos näin ei kuitenkaan ole, on käytössä seuraavat näppäinkomennot.

KomentoSiirtyminen
C-f, C-bYksi merkki eteen- tai taaksepäin.
C-n, C-pSeuraava tai edellinen rivi.
M-f, M-bSana eteen- tai taaksepäin.
Virke eteen- tai taaksepäin, jos virkkeen
päättävän pisteen jälkeen on kaksi välilyöntiä.
Kappale eteen- tai taaksepäin.
M-<, M->Puskurin alkuun tai loppuun.
Vieritä näyttöä ylös- tai alaspäin.
C-x bSiirry toiseen puskuriin (kysyy nimeä, TAB täydentää).
C-x oNäkymästä toiseen siirtyminen.

2.3 Vim-apuja

Emacsia voi halutessaan käyttää Vim-editorin tavoin, ts. siten, että Emacsia käytettäessä käytetäänkin Vim-komentoja. Tämä onnistuu asentamalla Emacsiin evil mode laajennos.

  • Siirry jalavan kotihakemistosi juuresta kansioon .emacs.d, ts. anna komento
    cd .emacs.d
    

    Jos sinulta ei löydy tällaista kansiota, luo se ensin kommennolla

    mkdir .emacs.d
    
  • Tämän jälkeen, ollessasi hakemistossa .emacs.d, asenna evil mode kloonaamalla Git-varasto kommennolla
    git clone git://gitorious.org/evil/evil.git
    

    Sinulle syntyy tällöin evil-niminen alihakemisto .emacs.d-kansioon.

  • Kerro vielä Emacsille, että haluat ottaa käyttöön evil-mode -laajennoksen. Tämä tapahtuu lisäämällä kotihakemistossasi sijaitsevaan .emacs-tiedostoon seuraavat rivit
    (add-to-list 'load-path "~/.emacs.d/evil")
    (require 'evil)  
    (evil-mode 1)
    

    Yllä asetus (evil-mode 1) tarkoittaa sitä, että aina kun aukaistaan Emacs, se toimmii oletuksena Vimin tavoin. Tämän rivin voi jättää toki halutessaan pois, ja käynnistää Vim-laajennoksen Emacsista aina tarvittaessa komennolla

    M-x evil-local-mode
    

    Tämän komennon voi sitoa kätevästi näppäimeen F6 lisäämällä .emacs-tiedostoon

    (global-set-key (kbd "<f6>") 'evil-local-mode)
    

    Emacsia ei tarvitse käynnistää uudelleen, vaan voit mennä tuon rivin loppuun ja näppäillä C-M-x, siis Control-Alt-x tai Control-Cmd-x, ja Emacs suorittaa rivin koodin. Nyt F6 käynnistää ja lopettaa Evil-moodin.

2.4 Git ja Emacs

Emacsille on useitakin Git-moodeja, joilla gitin peruskäyttö onnistuu Emacsin komennoilla. Mukana tuleva git-tuki on kovin vajavainen, joten kannattanee ladata jokin muu git-liitos, esimerkiksi http://philjackson.github.com/magit/index.html. Git-moodin käynnistää komento git-status, joka on hyvä sitoa johonkin näppäimeen, vaikka F12, luvun Vim-apuja lopun ohjein.

3 Editorikomennot

Seuraavassa joukko yleisimpiä toimintoja editoreissa, ja niiden näppäinkomennot Emacsissa ja Vimissä.

EmacsVimToiminto
C-x C-c:q <enter>Lopetus
C-x C-f /nimi/ <ret>:e /nimi/ <enter>Lataa tiedosto nimi
Jos tiedostoa ei ole, se luodaan.
C-x C-s:w <enter>Tallenna tiedosto
C-x C-w:w nimi <enter>Tallenna tiedostoon nimi
C-x b:n <enter>Seuraava avoin tiedosto (Emacsissa puskuri)
C-x kSulje nykyinen tiedosto (Emacsissa puskuri)
Vimin tekstieditointimoodin käynnistys
i- käynnistä kursorin kohdalle
A- käynnistä rivin loppuun
o- käynnistä lisäten rivi jälkeen
O- käynnistä lisäten rivi ennen
<esc>Paluu komentomoodiin.
C-gC-cHylkää komento
C-_uPeru komento
C-s/kohdeEtsi seuraava kohde
- Emacsissa inkrementaalinen
- Vimissä säännöllinen lause
M-x replace-string:% s/mitä/miksi/gKorvaa mitä tekstin miksi tekstiksi.
- Emacsissa säännölliset lauseet
M-x replace-regexp
- Vimissä käytössä säännölliset lauseet.
M-x<esc>:Anna kirjoitettu komento.
M-:Suorita Lisp-funktio.
C-h t:helpYleinen avustus ja opastus.
C-h k <näppäily>Näyttää avustuksen, mitä näppäily
tekee.
M-x customize-emacs:set <muuttuja>=<arvo>Editorin asetusten muuttaminen.

3.1 Kill, Yank & Paste – Leikkaa, kopioi ja liimaa Emacsilla

Tekstin kopiointi, leikkaus ja liimaus onnistuu seuraavaasti:

EmacsVimToiminto
C-<välilyönti>vAloita alueen merkkaus (Vim visual mode)
(Alueen loppumerkiksi riittää kursorin paikka)
C-<välilyönti>VAloita rivien merkkaus.
C-<välilyönti>C-vAloita nelikulmainen merkkaus.
C-wdLeikkaa alueen (alueen merkkauksen lopussa)
M-wyKopioi alueen
C-yPLiitä aluen ennen kursoria.
pLiitä alue kursorin jälkeen.
C-x r kdLeikkaa nelikulmainen alue.
C-x r ypLiitä nelikulmainen alue.
"Tutut" copy/paste-näppäilyt toimivat,
jos "CUA" moodi päällä. Ei suositella!
M-ddwPoista (leikkaa) sana.
C-kDPoista (leikkaa) rivin loppuun.

Tekstin erikoisempia muokkauskomentoja ovat mm. seuraavat:

EmacsVimToiminto
C-M-oi<enter><esc>Katkaise rivi kursorin kohdalta.
C-n M-^J
M-qgq}Tasaa kappale
M-zdfXPoista kirjaimeen X asti.
<f3> tai C-x (qXAloita makron nauhoitus (Vimissä
rekisteriin X).
<f4> tai C-x )qLopeta makron nauhoitus.
<f4> tai C-x e@XSuorita Emacs viimeisin,
Vim rekisterin X makro.

Ja lisää löytyy, paitsi editorien dokumentaatiosta, linkeistä http://karl-voit.at/vim-emacs-cheatsheet_of_freezing_hell.txt ja http://www.elmindreda.org/emacs.html.

4 Org-mode

Org-mode on Emacsin mukana tuleva laajennos1, joka on alunperin tehty tiedon ja toiminnan organisointiin, eli muistioiden kirjoittamiseen ja kalenterin hallintaan. Tässä se on omiaan, mutta tutustumme demoissa enemmän Org-moden toiseen puoleen, dokumenttien generointiin.

Org-modella on helppo tehdä rakenteisia dokumentteja yksinkertaisella syntaksilla, jonka saa Emacsissa muutettua sitten pelkäksi tekstiksi, HTML:ksi ja vaikka LaTeX-taiton avulla PDF:ksi. Muitakin vientimahdollisuuksia on, ja itse voit tehdä lisää.

Org-modea käytetään myös toistettavan tutkimuksen raporttien ja valistavan ohjelmoinnin parissa. Tästä löytyy hyvin kuvaava artikkeli osoitteesta http://www.jstatsoft.org/v46/i03, jota suosittelemme luettavaksi, mikäli haluat oppia käyttämään Org-modea monipuolisemmin.

Kaikki demojen materiaali on kirjoitettu Org-modella. Org-tiedostot löytyvät korvaamalla tiedostopääte päätteellä .org.

4.1 Org-dokumentin rakenne

CLOSED: 2012-09-27 Thu 13:32
Alla on esimerkki org-mode dokumentin rakenteesta.

#+TITLE: Otsikko

* Eka taso
** Toka taso
Lorem ipsum hipsum tipsum...
*** Kolmas taso
Kettu loikki yli
- järven,
- kiven tai
- kannon.

Org-mode käyttää puurakennetta, missä puun haarautuminen esitetään asteriskeilla *. Voidaan ajatella, että asteriskien määrä kertoo otsikon tason aivan kuten <Hn> tagi HTML:ssä. Tiedostoa voi muokata suoraan, mutta myös tasoittain.

Seuraava esimerkki esittelee hieman rikkaamman org-dokumentin.

 1:  #+TITLE: Otsikko
 2:  
 3:  * Eka taso <2012-08-15 Wed>
 4:    CLOCK: [2012-08-17 Fri 11:00]--[2012-08-17 Fri 11:15] =>  0:15
 5:  ** DONE [#A] Toka taso                                              :foo:bar:
 6:     CLOSED: [2012-08-17 Fri 11:02] DEADLINE: <2012-08-20 Mon>
 7:     Lorem ipsum hipsum tipsum
 8:  *** TODO Kolmas taso                                                    :foo:
 9:      SCHEDULED: <2012-11-17 Sat>
10:      :PROPERTIES:
11:      :Luokka:  Luontohavainto
12:      :Havaitsija: Meeri Metsänkävijä
13:      :END:
14:  Kettu loikki yli
15:  - [X] järven,
16:  - [ ] kiven tai
17:  - [ ] kannon.
18:   

Esimerkissä näkyy paljon päiväyksiä. Org-mode antaa työkalut näiden luomiseen ja muokkaamiseen. Päiväyksiä voi syöttää näppäinkomennolla C-c ., joka aukaisee kolmen kuukauden kalenterin sisältävän puskurin. Syöttöriville tulee kehoite päivämäärän syötöstä, ja oletuksena on nykyinen päivä. Päivän voi valita kalentereista, kirjoittaa uuden, tai sitten antaa muutoksen nykyisestä päiväyksestä. Esimerkiksi syöte +3d antaa päiväyksen kolme päivää tämänhetkisen päiväyksen jälkeen. Määräajan asetus muokattavalle otsikolle annetaan näppäinkomennolla C-c s. Määräajat ilmestyvät SCHEDULED-tarkenteella otsikon alle. Takarajat saa syötettyä näppäilemällä C-s d, ja ne ilmestyvät myös otsikon alle DEADLINE-tarkenteella. Näistä lisää kappaleessa Org-mode ja ajanhallinta.

Esimerkissä on myös käytetty TODO- ja DONE-tarkenteita riveillä 5 ja 8. Näillä voidaan seurata ja ohjata työnkulkua. Voit myös määritellä omia, vastaavia tarkenteita. Tarkenteiden tilaa voi vaihtaa näppäinkomennolla S-<oikea> ja S-<vasen>. Kohtia voi myös priorisoida, kuten rivin 5 merkintä [#A] näyttää. Näitä voi myös muokata, ja vaihto tapahtuu näppäilyillä S-<ylös> ja S-<alas>. Lisätietoa löytyy jälleen kappalleesta Org-mode ja ajanhallinta.

Otsikot voi myös merkata tageilla, jotka näkyvät rivin lopussa kaksoispisteellä eroteltuna. Näppäily C-c C-c otsikkorivillä käynnistää tagimuokkaimen. Tageja hienompia metatietoja voi antaa otsikon perässä tulevaan laatikkoon, joka on merkattu :PROPERTIES::END: merkinnöillä. Kullakin rivillä on yksi tieto, ensin nimi ympäröitynä kaksoispisteillä, sitten arvo, joka päättyy rivin loppuun.

Kaikkia näitä metatietoja voi käyttää esimerkiksi org-dokumentin näkymän rajoittamiseen, tiedon esittämiseen kalenterissa tai tapahtumalistauksena, tai Org-moden toiminnan säätelyyn. Niiden sisältämää tietoa voi myös käsitellä ohjelmallisesti tai laskennallisesti, vaikkapa työtunteja laskemalla. Esimerkkejä tulee myöhemmissä kappaleissa.

Kannattaa koko ajan muistaa, että org-dokumentit ovat ulkonäöstään huolimatta pelkkää tekstiä, ja siten luettavissa ja muokattavissa muillakin editoreilla.

4.1.1 Sarakemoodi

Helpomman muokkauksen saa päälle sarakemoodilla, joka aktivoituu näppäilemällä C-c C-x C-c. Tiedosta toiseen siirtyminen tapahtuu kursorinäppäimillä ja tiedon muuttaminen S-<vasen> ja S-<oikea>, C-c C-c vaihtaa valintalaatikon arvon, numerot 0..9 valitsevat mahdollisen arvon, e muokkaa arvoa, r ja g päivittävät muutokset ja q poistaa sarakemooditilasta.

4.2 Rakenteen muokkaus

Tärkeimmät näppäinkomennot lienevät <TAB> ja S-<TAB>. Pelkkä <TAB> vaihtaa alipuun näkyvyyttä, onko puu supistettuna pääotsikoihin, näkyvätkö alkiotsikot vai näkyykö kaikki. Näppäilyllä S-<TAB> taas vaikutetaan koko dokumentin näkyvyyteen vastaavasti. Org-tiedostossa voi liikkua nopeammin taulukon org-dokumentissa-liikkuminen esittämillä komennoilla.

Org-mode tiedostossa liikkuminen.
KomentoKuvaus
<C-c> <C-n> / <C-c> <C-p>Seuraava tai edellinen otsikko.
<C-c> <C-f> / <C-c> <C-b>Seuraava tai edellinen samantasoinen otsikko.
<C-c> <C-j>Hyppää kohteeseen …

Kappaleita voi editoida otsikkotasolla mm. taulukon kappaleen-liikutus kuvaamilla komennoilla. Taulukossa on myös kuvattu joukko muita editointikomentoja.

Org-mode tiedoston rakenteen editointi
KomentoKuvaus
M-<ylös> / M-<alas>Siirrä alipuuta ylös tai alas.
M-<vasen> / M-<oikea>Nostaa tai laskee elementin tasoa.
S-M-<vasen> / S-M-<oikea>Nostaa tai laskee alipuun tasoa.
M-<RET>Luo uusi, samantasoinen otsikko.
Rivin alussa muuttaa rivin otsikoksi. Rivin
keskellä jakaa rivin ja tekee lopusta
otsikon.
C-<RET>Sama kuin edellä, muttei yritä arvata
liikaa, vaan aloittaa vain uuden otsikon.
M-S-<RET>Sama kuin M-<RET> edellä, mutta lisää
otsikon eteen TODO-tarkenteen.
C-S-<RET>Kuten edellä, mutta toimii kuin C-<RET>.

Kaikista kuormitetuin näppäimistökomento lienee kuitenkin C-c C-c, joka tekee, tilanteesta riippuen, vaikka mitä. Otsikkorivillä se käynnistää tagien muokkauksen. Taulukossa se sovittaa taulukon ulkoasun tekstiin. Se päivittää hyperlinkkejä, alaviitteitä, tai vaihtaa valintalaatikoiden tilan. Paljon muutakin se tekee ja näitä on selitelty pitkin tekstiä. Yleensä kannattaa kokeilla sitä, jos ei tiedä, mitä muuta voisi kokeilla.

4.3 Tekstin korostus

Tekstin korostus tapahtuu org-modessa ympäröimällä korostettava teksti korostusmerkeillä, kuten taulukossa korostus on esitetty.

Tekstin korostaminen.
NotaatioTulostuu
*lihavoitu*lihavoitu
/kursivoitu/kursivoitu
_alleviivattu_alleviivattu
=koodiesimerkki=koodiesmerkki
~kirjaimellinen~kirjaimellinen

4.4 Linkitys

Linkit on merkitty org-dokumentissa hakasulkeilla:

[[kohde][tarkenne]]

missä kohde on kohteen tunniste ja tarkenne lyhyt, näkyvä kuvaus linkille. Linkkejä on helppo lisätä näppäilemällä C-c C-l. Linkin kohde voi olla org-dokumentin sisällä tai ulkopuolella. Esimerkiksi URI toimii hyvin kohteena, samoin vaikkapa sähköpostin tunniste. Org-dokumentin sisälle viitatessa voi kohteeksi antaa otsikon sisällön, jolloin linkki osoittaa kyseiseen otsikkoon. Muualle org-mode sisällä viitatessa tulee käyttää ankkureita. Ankkurit merkitään <<kohde>> ja niitä voi olla kaikkialla tekstissä. Erikoisempia ovat radiokohteet, jotka merkitään <<<radiokohde>>> Näissä sisällä oleva teksti aktivoituu linkiksi kaikkialla dokumentin sisällä, eli tuolla ylläolevalla määrittelyllä jokainen /radiokohde/ sana muuttuisi linkiksi tuohon ankkuriin. Nämä linkit voi päivittää näppäilemällä linkin päällä C-c C-c.

Linkkiä voi seurata hiirellä tai näppäilyllä C-c C-o. Jos linkki on dokumentin sisäinen, pääsee kohteesta takaisin näppäilyllä C-c & -- tätä voi myös hyödyntää muualla merkkaamalla paikan C-c % näppäilyllä, jolloin C-c & palaa siihen takaisin. Näppäilyt C-c C-x C-n ja C-c C-x C-p siirtävät kohdistimen seuraavaan tai edeltävään linkkiin.

4.5 Org-mode ja taulukot

Yksi hienoimmista ominaisuuksista Org-modessa on sen tapa käsitellä taulukoita. Taulukko kirjoitetaan seuraavasti:

| A | B |  C |
|---+---+----|
| 2 | 3 |  5 |
| 3 | 4 |  7 |
| 5 | 7 | 12 |
#+TBLFM: 

Taulukon luominen ja muokkaaminen on helpompaa kuin miltä näyttää. Tarvitsee vain kirjoittaa ensimmäinen rivi ja näppäillä C-c <RET>, niin Org-mode tekee taulukon lopun. Rivin viimeisessä sarakkeessa <TAB> luo uuden rivin ja siirtää kohdistimen sen ensimmäiseen sarakkeeseen, muuten <TAB> siirtää kohdistimen seuraavaan sarakkeeseen, S-<TAB> edelliseen. <RET> luo uuden rivin ja vaihtaa kohdistimen sille samaan sarakkeeseen, kuin missä näppäintä painettiin. Kursorinäppäimet meta-näppäin pohjassa muuttavat sarakkeiden ja rivien järjestystä. Uuden rivin tai sarakkeen saa näppäilyllä M-S-<alas> ja M-S-<oikea>, kun taas M-S-<vasen> ja M-S-<ylös> poistavat sarakkeen tai rivin. Olemassa olevasta taulukkomaisesta tekstistä saa Org-moden ymmärtämän taulukon valitsemalla sen ja näppäilemällä C-c |. Org-mode tukee myös Emacsin table.el-moodin taulukoita. Valitettavasti näitä voi käyttää vain tiedon taulukkomaiseen esittämiseen, kun taas Org-moden omat taulukot taipuvat hienoiseen taulukkolaskentaankin.

4.5.1 Org-table ja taulukkolaskenta

Org-moden taulukot voivat sisältää myös laskentakaavoja seuraavaan tapaan:

| A | B | Summa |
|---+---+-------|
| 2 | 3 |     5 |
| 3 | 4 |     5 |
|---+---+-------|
| 5 | 7 |    10 |
#+TBLFM: $3=$1+$2::@4=vsum(@2..@3)

Kaavat voidaan kirjoittaa suoraan soluihin, tai erilliselle riville, kuten yllä. Laskennan voi suorittaa uudelleen näppäilyllä C-c *. Solujen viitteet saa näkyville ja pois näppäilyllä C-c }. Kaavojen sisältö voi olla joko Emacsin calc-moodin ymmärtämässä muodossa tai sitten Emacs Lispillä kirjoitettuja. Näin voi esimerkiksi kutsua Emacs Lispillä tehtyä funktiota, joka annettujen solujen sisällön perusteella käy hakemassa tietoa halutusta tietokannasta, käsittelee tiedon toisella palvelimella ja palauttaa tiedon solun arvona. Vapise, Excel!

4.6 Org-mode ja ajanhallinta

Org-modessa voi otsikoille määritellä ajankohdan (C-c C-s) tai aikarajan (C-c C-d). Org-mode osaa näyttä tiedot näiden kenttien avulla aikajärjestyksessä tai kalenterissa. Komennolla M-x org-agenda voi generoida esimerkiksi kuluvan viikon tapahtumalistan tai editoidun puskurin aikajanan. Tarvittaessa aikoja voi myös kasvattaa (S-<ylös>) ja vähentää (S-<alas>), esimerkiksi aikaleimassa 2012-02-28 Tue päivän 28 kohdalla kasvattaminen muuttaa päiväykseksi 2012-02-29 Wed. Jos muokkaat aikaleimaa käsin, C-c C-c sen sisällä muuttaa sen validiksi. Pelkän aikaleiman saa lisättyä tekstiin näppäinkomennolla C-c ., joka käynnistää kalenteriselaimen ja kehotteen. Kehotteeseen voi ajan lisäksi syöttää vaikkapa +2d , jolloin aikaleimaksi tulee aika kahden päivän päästä aikaleiman tekohetkestä.

Org-modesta löytyvät myös kellot, joiden avulla voi mitata esim. tehtävään käytettyä aikaa. Kello käynnistetään komennolla C-c C-x C-i, ja sammutetaan komennolla C-x C-c C-o. Tällöin lähimpään otsikkoon lisätään CLOCK:-kenttä, siihen alku- ja loppuaika, sekä näiden erotus, eli tapahtuman kesto. Luonnollisesti edellä mainitut muokkauskomennot toimivat näillekin ajoille, ja kesto lasketaan aina uusiksi muutoksen jälkeen. Jos se sattuu jäämään päivittymättä, C-c C-c aikaleimassa korjaa taas tilanteen.

Komennolla C-c C-x C-d kunkin alipuun sisältämät aikaleimat lasketaan ja näytetään otsikoiden yhteydessä. Komennolla C-c C-x C-r generoituu dynaaminen lohko, joka sisältää koosteen halutun alueen aikaleimoista. Taulu päivittyy taas näppäilemällä C-c C-c lohkon aloitusrivillä. Tämän taulun tieto riittää vaikka projektin ajanseurantaan.

Alla esimerkki yksinkertaisesta tällaisesta lohkosta:

#+BEGIN: clocktable :maxlevel 3 :scope subtree
Clock summary at [2012-08-27 Mon 15:59]

| Headline                 | Time   |   |      |
|--------------------------+--------+---+------|
| *Total time*             | *1:00* |   |      |
|--------------------------+--------+---+------|
| Org-mode ja ajanhallinta |        |   | 1:00 |
#+END:

Ja tässä siitä generoitunut taulu:

Clock summary at 2012-08-27 Mon 16:02

HeadlineTime
Total time1:00
Org-mode ja ajanhallinta1:00

4.7 Org-dokumenttien julkaisu

Org-modella tehdyt dokumentit voi muuttaa tai julkaista myös useissa muissa formaateissa. Ajanhallinnan yhteydessä sivuttiin jo org-dokumentin muuttamista TaskJugglerin ymmärtämään muotoon. Seuraavassa on lueteltu esimerkkejä muista, yleisimmistä, muutostoiminnoista. Kaikki muokkaus- ja julkaisutoiminnot löytyvät näppäilyllä C-c C-e.

4.7.1 Teksti: ASCII, Latin-1 ja UTF-8

Vaikka org-dokumentit ovat varsin luettavia muotoilukomentoineen, tulee joskus tarve muuttaa org-dokumentti puhtaaseen teksti-muotoon. Tähän on tarjolla kolme vaihtoehtoa:

  • C-c C-e a muuttaa dokumentin ASCII:ksi. Tämä on yleensä huono idea, sillä ASCII-merkistö on kovin vajaa, eikä sisällä esim. meille tuttuja skandinaavisia å, ä ja ö kirjaimia.
  • C-c C-e n muuttaa dokumentin Latin-1 kirjaimistoon, jolloin skandinaavitsetkin kirjaimet löytyy. Jos on pakko, käytä tätä.
  • C-c C-e u muuttaa dokumentin UTF-8 kirjaimistoon. Tämä on suositeltava vaihtoehto, sillä se mahdollistaa käytännössä kaikkien maailman kirjainten käytön (poislukien klingon).

Jos korvaat viimeisen kirjaimen näppäinkomennossa isolla kirjaimella, saat tuloksen väliaikaispuskuriin. Muuten tiedosto tallentuu samaan hakemistoon org-dokumentin kanssa.

4.7.2 HTML

Org-dokumentin voi muuntaa myös HTML:ksi komennolla C-c C-e h, jonka variantti C-c C-e b myös avaa selaimen ja näyttää muunnetun dokumentin siinä. Tekstimuotoilut, linkit, kuvat, jne. muunnetaan automaattisesti HTML-muotoon. Org-dokumenttiin voi myös lisätä tarkenteita, jotka ohjaavat HTML-muunnosta. Org-dokumentin sekaan voi kirjoittaa suoraan muunnoksen läpi menevään HTML-tekstiä seuraavasti:

#+BEGIN_HTML
Välissä oleva teksti siirtyy <em>suoraan</em> HTML:nä.
#+END_HTML
Tämä esimerkki näkyy vain HTML-muotoon viedyssä dokumentissa. Välissä oleva teksti siirtyy suoraan HTML:nä.

Taulukoille ja kuville voi antaa kuvaavan tekstin seuraavan esimerkin mukaan. Esimerkki näyttää myös, miten sisälletyt kuvat lisätään org-dokumenttiin ja HTML-muunnoksiin.

#+CAPTION: Puussa istuva kissa.
#+ATTR_HTML: alt="kissa puussa" align="right"
[[file:kissa-puussa.png]]

Jos tiedostosi kieli on suomi, kannattaa org-tiedoston alkuun lisätä

#+LANGUAGE: fi

jolloin otsikoiden ja metatietojen tunnisteet tulevat suomeksi, esim. teksti sisällysluettelo eikä contents sisällysluettelon alussa.

4.7.3 PDF ja LaTeX

Jos tietokoneestasi löytyy LaTeX-taittojärjestelmä, saat org-dokumenteista helposti PDF-muotoisia komennolla C-c C-e l, ja komennolla C-c C-e d Org-mode sekä taittaa että näyttää PDF:n. LaTeX-muunnoksen ohjauksen tärkein muooto lienee LaTeX-tiedoston ohjauskomentojen lisäys, esim. tämänkin tiedoston alusta löytyvä

#+LaTeX_CLASS_OPTIONS: [a4paper,finnish]
#+LaTeX_HEADER: \usepackage{babel}[finnish]

joka asettaa taiton kohdepaperin mitat (A4) ja ottaa käyttöön suomenkieliset otsikoinnit ja tavutuksen.

Taulukoille ja kuville toimii sama CAPTION tarkenne, joka selitettiin HTML-muunnoksen yhteydessä.

5 Harjoitus

Hae demokansiosta tiedosto harkka.org, joka on org-pohja harjoitustyölle. Lisää se omaan harjoitustyövarastoosi. Siirrä nykyinen harjoitustyösi sisältö org-pohjaan ja muokkaa sitä org-modea käyttäen. Harjoitustyön eri vaiheet voivat toki olla eri tiedostoissa (esim. vaihe1.org, vaihe2.org, …)

Jos haluatte Emacsin automaattisesti rivittävän tekstin, laittakaa päälle auto-fill-mode, eli antakaa komento M-x auto-fill-mode, missä M-x tarkoittaa windowsissa Alt-x ja Macissä Cmd-x.

Tämän komennon voi käydä lisäämässä .emacs-tiedostoon, kuten Evilin asennusohjeissa yllä on kuvattu. Kirjoita silloin .emacs-tiedostoon rivi

(auto-fill-mode t)

Kappaleen voi rivittää automaattisesti komennolla M-q.

Alaviitteet:

1 Org-moden uusin versio ja paras opas löytyvät osoitteesta http://www.orgmode.org.

Päivämäärä: 2012-09-27T13:51+0300

Tekijä: Ville Isomöttönen, Jonne Itkonen

Org version 7.8.11 with Emacs version 24

Validate XHTML 1.0