1.7.2023

Kirjoittamisen työkalut

LaTex

LaTex-ohjauskoodia raakatekstin seassa ja PDF-konversio.

Johdanto

Kerron tässä blogi-artikkelissa, mitä työkaluja käytän kirjoittamiseen.

Koska olen ohjelmistotekniikan DI, niin työkaluni ovat luultavasti hieman erilaisia kuin jollakulla perinteisemmällä kirjailijalla. Kerron tässä blogi-artikkelissa omista työkaluistani ja perustelen hieman niiden käyttöä.

Raakateksti ja versionhallinta

Ohjelmointitekniikan ammattilaisena haluan tietysti kirjoittaa tekstini ns. raakatekstinä siten, että se on helppo tallentaa ns. versionhallintajärjestelmään. Tämä on minulle erittäin tärkeää. En halua käyttää jotain Wordin kaltaista raskasta wysiwyg -editoria, joka tallentaa tekstin sekaan monimutkaista muotoilutietoa ja editori yrittää näyttää tekstin siinä muodossa kuin se näyttää printattuna.

Ymmärrän kyllä, miksi monet käyttävät tällaisia wysiwyg-editoreita: käyttäjän on helppo erilaisista valikoista valita tekstin tyylit ja nähdä kirjoitettaessa esimerkiksi otsikot isommalla koolla, kursivoinnit jne. Käytän itsekin paljon Wordia työssäni kun kirjoitan esimerkiksi tarjousdokumentteja. Tarjousdokumenttien tekemiseen Word onkin näppärä editori. Mutta sellaiseen tekstiin, jossa on tarkoitus versionhallinnassa nähdä tekstissä olevat muutokset, Word sopii varsin huonosti, koska Word tallentaa tekstin sekaan tolkuttomasti erilaista tyyli-direktiiviä. Jos yrität terminaalissa catenoida Word-tiedoston, niin näet vain kaikenlaista siansaksaa.

Ohjelmistoinsinööri kirjoittaa tietokonekoodia. Tietokonekoodi on aina ns. raakamuodossa, eli noudattaa jotain varsin yksinkertaista tekstiformaattia, kuten esimerkiksi ascii tai utf-8. Tällaista tekstiä on helppo tallentaa versionhallintajärjestelmään ja nähdä versionhallintajärjestelmässä tiedostoon ajan kuluessa tulleet muutokset ja niiden tekijät. Tästä syystä haluan kirjoittaa myös kirjani raakatekstinä.

Käytän versionhallintajärjestelmänä Git-ohjelmistoa - samaa ohjelmistoa, jota käytän ohjelmakoodin versionhallintaan. Samalla kun näen lokaalisti koko kirjani muutoshistorian, niin kirjan backup tulee säilytettyä helposti oman kodin ulkopuolella - monet firmat tarjoavat ilmaista tallennustilaa säilyttää ns. git-repositoreja, joihin tallennat lokaalin git-reposi (esim. Github ja Gitlab).

Alla näet kuvan yhdestä Git-ohjelmasta, jolla voi tarkastella Git-versionhallinnassa olevia muutoksia. Kuvassa punaiset rivit ovat poistoja ja vihreät lisäyksiä. Painotan tässä varmuuden vuoksi, että alla oleva Git-ohjelma ei ole editori - se on vain yksi monista ohjelmista, joilla voit tarkistella versionhallinnassa olevia muutoksia.

Git-ohjelma

Git-ohjelma.

Versionhallintaohjelman käyttö muuten lisää samalla omaa oikeusturvaasi: ei tule pienintäkään epäilystä, kuka kirjan on kirjoittanut, kun sinulla on näyttää täydellinen versionhallintahistoria kirjan synnystä.

Emacs ja Org-mode

Käytän editorina yleiskäyttöistä Emacs-editoria ja sen ns. Org-modea. Emacs on vanha editori, mutta aivan erinomainen yleiseditori koodin ja muunkin tekstin kirjoittamiseen. Olen kirjoittanut varmasti tuhansia rivejä eri ohjelmointikielten ohjelmakoodia Emacsilla. Ja nyt kirjoitan sillä kirjojani. Syy Emacsin käyttöön on se, että tunnen editorin ja sen pikanäppäimet hyvin ja editoria on helppo itse kustomoida. Emacsia onkin kutsuttu “ohjelmoitavaksi editoriksi” (editori on tehty eräällä Lispin murteella ja voit kyseisellä e-lisp -ohjelmointikielellä muokata editoria niin paljon kuin haluat).

Ja perimmäinen syy Emacsin käyttöön on tietysti tämä: se tallentaa tekstisi raakatekstinä.

LaTex

Kerroin jo teknisemmässä blogissani Using LaTex - First Impressions, että käytän LaTexia kirjojeni kirjoittamiseen. Eli sen sijaan, että käyttäisin jotain wysiwyg-editoria, kirjoitan kirjani raakateksti-editorilla (Emacs), ja laitan tekstin sisään LaTex-komentoja tyylin esittämiseen. Kun raakatekstistä tekee PDF-konversion, niin konversio-ohjelma lukee tekstissä olevat komennot ja tekee raakatekstistä lopullisen PDF-dokumentin, jossa on tietty tyyli otsikoille yms. Tämä saattaa kuulostaa monimutkaiselta, mutta ei ole. Raakatekstin ja LaTexin avulla saat parhaat puolet molemmista maailmoista: voit tallentaa raakatekstin versionhallintajärjestelmään, ja voit kuitenkin tehdä dokumentistasi tyylikkään PDF-tuotteen. Tämän blogin alussa olevassa kuvassa on esimerkki LaTex-komennoista ja vastaavasta PDF-konversiosta.

Koska LaTexissa tyyli-direktiivit ovat samaa raakatekstiä kuin varsinainen leipätekstikin, niin versionhallinnassa näkee yhtä lailla tyyleihin kuin varsinaiseen leipätekstiinkin tehdyn muutoshistorian.

Linux

Käytän tietokoneenani halpaa Lenovo-kannettavaa ja siinä Linux-käyttöjärjestelmää. Linux on erinomainen ohjelmoijan käyttöjärjestelmä ja tunnen sen varsin hyvin. Siksi käytän Linuxia myös vapaa-ajallani kun kirjoitan kirjoja. Pidän Linuxista myös sen takia, että sitä on helppo kustomoida sellaiseksi kuin haluat. Esimerkiksi olen kustomoinut näppäimistöä niin, että CapsLock ei toimi kuten CapsLock yleensä toimii vaan sen kanssa voi käyttää i,j,k,l -näppäimiä nuolinäppäiminä (ks. lisää: Dygma Raise Keyboard Reflections Part 1 - artikkeli käsittelee työkoneeni Dygma-näppäimistöä, mutta artikkelissa on myös yleistä juttua Linuxin Keymap-konfiguroinnista, jonka olen tehnyt kaikille Linux-koneilleni).

Työkalujen hinta

Kaikki käyttämäni työkalut ovat ilmaisia (lukuunottamatta fyysistä kannettavaa, jonka ostin käytettynä varsin edullisesti).