Jokainen meistä on varmasti törmännyt joskus hämmentävään ongelmaan:
pitää kirjoittaa lappu, muistio, tiedote, pöytäkirja, muistiinpanoja,
artikkeli, tai jotain muuta tietokoneella. Suurin osa ihmisistä
kummempia ajattelematta avaa tekstinkäsittelyohjelman (Millä muulla
niitä sitten voi kirjoittaa?
) tai jotkut PIM:n (personal information
manager, eli siis henkilökohtainen tiedonhallintaohjelma). Tämä on
ihan hyvä
lähestymistapa, mutta jokainen, joka on joskus yrittänyt
siirtää kaikki vanhat dokumenttinsa uuteen ympäristöön (uudelle
koneelle, uuteen käyttöjärjestelmään tai edes vain uudelle versiolle
tekstinkäsittelyohjelmaa), tietää, mikä tuska tästä voi seurata. Tässä
artikkelissa on tarkoitus kartoittaa vaihtoehtoja periaatteessa
yksinkertaisen ongelman ratkaisuun: millä ja mihin tiedostomuotoon
kirjoitan satunnaiset lappuseni?
WYSIWYG1 on yhteinen nimitys sille
paradigmalle, jossa esitetään dokumentti näytöllä samassa muodossa, kuin
miltä se oletettavasti näyttää lopputuloksessa
. Lopputuloksena
voidaan pitää paperitulostetta, www-sivua, tai sitä, mitä kaverin
koneessa pomppaa näytölle, kun hän avaa dokumentin.
1 What You See Is What You Get
WYSIWYG-ohjelmiksi kutsutaan ohjelmia, joissa dokumentteja työstetään
tällä tavoin. Joihinkin ongelmiin WYSIWYG-ohjelmat ovat lähes ainoa
järkevä ratkaisu: näitä ovat esimerkiksi lentolehtisten tai mainosten
suunnittelu, jossa on paljon graafista sisältöä ja visuaalisten
elementtien asettelu on tarkkaa. Mutta tähän WYSIWYG-ohjelmien hyvä
käyttö
suunnilleen jääkin.
WYSIWYG-dokumenttien on todettu vääristävän ihmisten ajattelua tavattoman monella tavalla:
luovastipoikkeavat perinteistä tekstin asettelun, muotoilun ja järjestelyn suhteen.
Näistä kaikista syistä pitäisi olla ilmeistä, ettei mitään satunnaisia tekstejä tai muistioita pidä koskaan kirjoittaa WYSIWYG-työkaluilla. Tämä on tärkeää sekä oman että lähimmäistenne mielenterveyden ja -selkeyden takia.
Yleensä ensimmäinen reaktio kaikkeen tähän on mennä suoraan raakatekstin
käyttöön tai keskitason semanttisiin merkintäkieliin2. Varsinkin laitoksella, missä on vahvat
emacs-perinteet, on paljon ihmisiä, jotka ymmärtävät raakatekstin
olemuksen ja kauneuden — mutta löytyy niitäkin, jotka käyttävät
mieluummin Windowsin Notepadia kuin Wordia.
2 Näistä puhutaan
seuraavassa osiossa enemmän.
Raakateksti
, niille, jotka eivät sitä tunne, on tiedostomuoto, jossa
jokainen dokumentti on jono merkkejä. Muotoiluja on sen verran, että
tietty merkki tarkoittaa rivinvaihtoa (siis uuden rivin aloitusta)
tekstissä ja lisäksi on toinen merkki, jolla voi merkitä sarkainvaihtoja
(tämä tab-merkki toimii yleensä kuten kirjoituskoneiden tab, eli
kohdentaa tekstin jatkumaan seuraavasta 8:lla jaollisesta
merkkisarakkeesta). Paljon muuta ei sitten olekaan. Ei lihavointeja,
ei kappalevaihtoja (muuta kuin kaksi peräkkäistä rivinvaihtoa), ei
kirjasimen vaihdoksia, ei alaviitteitä eikä mitään muutakaan.
Raakateksti on tiedostomuotona pysynyt jotakuinkin muuttumattomana
70-luvulta lähtien.
Raakateksti on itse asiassa erittäin hyvä muoto kaikenlaiselle
kirjoitukselle. Esimerkiksi sähköpostin pitkä perinne
raakatekstimuotoisena3 osoittaa, että mitä raakatekstillä ei voi
tehdä, sitä ei tarvita
. Vuosien aikana on kehittynyt tavaton määrä
käytäntöjä, miten erilaisia asioita voi ilmaista raakatekstissä:
korostus *tähdillä* sanan ympärillä, listat ranskalaisilla
viivoilla, ja niin edelleen.
3 ennen kuin HTML-muotoista sähköpostia alkoi
tunkea joka paikasta.
Joitain ongelmia raakatekstissä kuitenkin on. Mitä, jos haluan tulostaa dokumenttini, ja haluan sinne korostuksia? Mitä, jos muistiinpanoistani kasvaa artikkeli: eikö olisi kannattanut kirjoittaa se julkaisukelpoiseen muotoon alusta lähtien? Mitä, jos haluaisin raakatekstistäni www-sivun? Näihin ongelmiin yksi vastaus on seuraavassa osiossa.
Keskitason semanttisilla merkintäkielillä tarkoitetaan tiedostomuotoja,
johon on jollain standardilla tavalla merkitty eri tekstiosioiden
typografinen merkitys: esimerkiksi tässä on kappale, tuossa on lista,
tämä on otsikko, tuo on huomautus
. Yleensä nämä merkinnät
tekstiosioiden merkityksistä ovat tekstin joukossa, mistä tuleekin
nimitys merkintäkieli
(markup language). Esimerkkejä keskitason
semanttisista merkintäkielistä ovat HTML, XHTML, LaTeX, ms-makrot,
DocBook jne. Myös jotkin WYSIWYG-ohjelmat4 antavat mahdollisuuden keskitason semanttisiin
muotoiluihin; toinen asia on, älyävätkö käyttäjät käyttää näitä
mahdollisuuksia.
4 esimerkiksi MS Word ja
Openoffice.org
Esimerkiksi HTML on itse asiassa aika hyvä muoto kirjoittaa dokumenttinsa suoraan. HTML:n tuottoon ei saa käyttää WYSIWYG-työkaluja, koska silloin ei voi tietää, mitä varsinaiseen tiedostoon merkitään tai vastaako se ollenkaan tekstin todellista rakennetta. LaTeX on erinomainen merkintäkieli, jos aikoo tehdä vakavasti otettavia tieteellisiä julkaisuja. Molemmissa on itse asiassa aika matala oppimiskynnys (varsinkin, jos on tottunut käsittelemään raakatekstiä), ja molempia on melko miellyttävää lukea sellaisinaan (siis raakatekstinä).
Ongelmiakin on. Vaikka oppimiskynnys on matalahko, se on kuitenkin olemassa, eikä kaikilla ole aikaa vaivata päätään tällaisella. Lisäksi merkinnöissä voi tehdä virheitä, jolloin dokumentti saattaa näyttää väärältä prosessoidessa tai dokumentin prosessointijärjestelmä (esim. latex-komento) kieltäytyy kokonaan dokumentin käsittelemisestä ja jättää käyttäjän metsästämään paikkaa, jossa virhe piilee. HTML on myös sikäli ongelmallinen merkintäkieli, että sen laajentaminen omilla merkinnöillä (jos joskus sattuisi moisia tarvitsemaan) ei ole mahdollista, sillä HTML on laaja ja hitaasti kehittyvä standardi. Lisäksi näiden tiedostomuotojen muuntaminen toisikseen tai paperille tulostetuiksi dokumenteiksi (ylipäänsä mihinkään, mikä ei ole niiden primäärinen media) jättää joskus toivomisen varaa lopputuloksen tyylikkyydessä ja huolitelluudessa.
On ehkä myös syytä sanoa sananen korkean tason semanttisista
merkintäkielistä. Nämä ovat kieliä, joissa on merkitty, mitä
dokumentissa oleva teksti oikeasti tarkoittaa tai on. Esimerkiksi,
sen sijaan että merkinnöissä sanottaisiin, että tässä on lista ja
listassa on tällaiset kohdat, sanotaankin, että tässä on osanottajalista
ja listassa on tällaisia nimiä ja tällaisia yhteisöjä. Esimerkkejä
korkean tason semanttisista merkintäkielistä ovat erilaiset XML- ja
SGML-sovellukset, erilaiset verkkoprotokollat, jne. Myös tietokantojen
voi katsoa sisältävän korkean tason semanttista metatietoa
5, vaikkeivät ne merkintäkieliä olekaan.
5 tarkoittaa tietoa tiedosta: siis tietoa siitä, mitä jokin toinen
tieto on.
Nämä kielet ovat usein kohdealueen mukaan erikoistuneita, eli suunnilleen jokaiselle tilanteelle elämässä (tai maailmassa) pitää olla oma merkintäkielensä, jolla voidaan merkitä tietoja kyseisestä todellisuuden alueesta. Dokumentit sisältävät yleensä riittävästi tietoa vaikka mihin muunnoksiin ja niistä pystyy tuottamaan kaikenlaisia yhteenvetoja ja muuta, mutta tällainen prosessointi edellyttää ohjelmointityötä ja jo pelkkä merkintäkielen määrittely muistuttaa deklaratiivista ohjelmointia. Suurimpaan osaan normaalielämän tarpeista nämä kielet ovat aivan ylimitoitettuja, ja niiden käyttämisen oppimiskynnys on varsin korkea.
Strukturoitu teksti on yritys liittää raakatekstin pitkä perinne keskitason semanttisten merkintäkielten hyviin puoliin. Raakatekstin suurimpia rasitteitahan on huono muunnettavuus muihin muotoihin: tiedostomuotoihin tai vaikkapa tyylikkääksi tulosteeksi. Strukturoitu teksti, lyhyesti sanottuna, on raakatekstiä, jossa noudatetaan tiukasti tiettyjä käytäntöjä erilaisten keskitason semanttisten muotoilujen merkitsemisessä. Enimmäkseen nämä merkintätavat tulevat raakatekstin perinteistä; kuitenkin siellä, missä perinteiset muotoilut ovat monitulkintaisia, edellytetään selkeää merkintää siitä, tarkoitetaanko muotoilulla sitä vai tätä.
Esimerkkejä muotoiluista, jotka noudattavat täsmälleen sähköpostiperinteitä, ovat *tähdillä* tehdyt korostukset, kahdella rivinvaihdolla merkityt kappalevaihdot, listat ranskalaisilla viivoilla ja niin edelleen. Esimerkkejä rakenteista, joita on täytynyt yksiselitteistää, ovat:
alleviivaukseksiotsikolle. Strukturoidussa tekstissä otsikko merkitään aloittamalla rivi huutomerkillä.
Strukturoitu teksti ei olisi paljon mitään ilman toteutusta, jolla siitä voi tuottaa toisia tiedostomuotoja. Tällainen toteutus on sattumoisin olemassa, kirjoittaja on sattumoisin sen tekijä, ja koska kirjoittaja on myös yleisen kielitieteen ATK-ylläpitäjä, kyseinen ohjelma on sattumoisin asennettuna laitoksen venus-palvelimelle. Ohjelman nimi on stx2any ja siitä saa lisää tietoa komennolla man stx2any.
Nämä ovat tavoitteet, jotka mielessä stx2any on kirjoitettu:
Tällä hetkellä stx2any osaa muuntaa strukturoitua tekstiä HTML-, man- ja LaTeX-muotoon. Uusia tulosmuotoja saatetaan lisätä tulevaisuudessa, mutta saatetaan olla lisäämättäkin, sillä näistä kolmesta muodosta dokumentin voi edelleen muuntaa lähes miksi tahansa maan ja taivaan välillä.
Tämä artikkeli on kirjoitettu strukturoituna tekstinä.
Jokaiseen ympäristöön on olemassa joitain ohjelmia, jotka osaavat käsitellä puhdasta raakatekstiä, ja jokaisessa ympäristössä on ainakin jokin sellainen valmiina. Niitä kutsutaan editoreiksi. Joissain ympäristöissä on valmiiksi erittäin hyviä editoreita, joissain taas joutuu näkemään vaivaa hommatakseen kunnollisen. Kirjoittajan kokemus on ensisijaisesti Linux-ympäristöstä, joten tietämys muiden ympäristöjen editoreista on hatarahkoa.
mikroemacs). Useimmiten näistä on monia valmiiksi asennettuina.
Tämä artikkeli on kirjoitettu vim:lla Linux-ympäristössä.