keskiviikkona 28. lokakuuta 2009

Grafiikkaa LaTeX dokumenttiin

Akateemisissa julkaisuissa yleisesti käytetty LaTeX on ylivertainen työkalu mitä tulee taittokelpoisen materiaalin tekemiseen. Työkalun oppiminen vie aikansa, mutta on sen väärti kun pääsee työssä liikenteeseen.

Nykyisin julkaisuissa tulee olla mukana myös grafiikkaa. Asioiden visualisointi yleensä helpottaa niiden ymmärtämistä. Ja esimerkiksi erilaisten graafien liittäminen julkaisuun vaatii kuvien liittämistä teokseen.

Kuten jo aikaisemmin mainittu, koitan tehdä kaikenlaisen kuvien kanssa työskentelyn lähtökohtaisesti vektorigrafiikkana SVG-formaatissa. LaTeX ei kuitenkaan osaa käsitellä SVG tiedostoja, joten SVG tulee konvertoida johonkin muuhun formaattiin. PNG on luoteva valinta ja joissain netistä löytyvistä artikkeleista löytyy esimerkkejä miten PNG:t saa liitettyä LaTeX dokumenttiin.

Ensimmäinen asia mitä siis tehdä on konvertoida SVG kuva PNG formaattiin:


ja kun tämä on tehty, liittää se osaksi LaTeX dokumenttia:

Jostakin syystä Inkscapen PNG konversio kuitenkin menee pieleen. -Tai ainakaan LaTeX ei lopputulosta hyväksy. Tehtäessä lopullista DVI-tiedostoa työkalu valittaa että PNG-kuvasta puuttuu bounding box joka määrittäisi kuvan alueen. Tämä siitäkin huolimatta että --export-area-canvas argumentti oli käytössä.




Virheilmoitus:

! LaTeX Error: Cannot determine size of graphic in foo.png (no BoundingBox).

kertoo tämän meille.

EPS:t tuntuivat menevän LaTeX:n hyvin, mutta Inkscapesta exportoitu EPS oli todella ruman näköinen lopullisessa DVI-tiedostossa. Mutta koska PNG näytti hyvältä, jotain muuta voisi keksiä. Lopulta ratkaisuksi löytyi ImageMagick ja sieltä convert työkalu. Tällä sai PNG:stä konvertoitua hyvän näköisen EPS:n joka näyttää hyvältä myös lopputulemana syntyvässä DVI-tiedostossa.



Muuta yllä olevasta LaTeX koodin kuvasta .png tiedoston pääte .eps:ksi ja homma toimii.

Inkscape ja clipart

Vektorigrafiikka voittaa rasterigrafiikan. Nykyisellään koitan pääasiallisesti välttää minkäänlaisten kaavioiden tai vastaavien tekemistä muulla kuin vektorigrafiikalla. Syynä siihen vektorigrafiikan tarkkuus ja muokattavuus erilaisiin julkaisuihin.

Hyvä ilmainen työkalu vektorigrafiikan kanssa työskentelyyn on Inkscape. Yleensä työstän tällä piirustukseni SVG formaatissa. Tämän jälkeen exporttaan kuvan bitmap muodossa (PNG) sopivalla resoluutiolla. Esimerkiksi käytettäväksi web-sivujen grafiikkaelementeissä, esityksissä, dokumenteissa jne.

Inkscapen nykyisen version 0.46 kanssa on ikävä ongelma oletusasetusten kanssa. Jos haluan käyttää kuvassa clipart:a tekee Inkscape viittauksen tiedostoon josta bitmap in importattu. Tämä viittaus kohdistuu yleensä paikalliseen levyjärjestelmään, joten jos SVG tiedosto siirretään jonnekin toisaalle puuttuu Inkscapen tiedostosta kaikki clipart.

Ratkaisu tähän ongelmaan on sulauttaa (embed) bitmapit SVG tiedostoon. -Järkevää, mutta Inkscape ei vaan tee tätä oletusarvoisesti. Homma ratkeaa kun valitaan ylävalikoista "Effects" -> "Images" -> "Embed all images". Tämän jälkeen Inkscapen kuvaan tuodut kuvat on sulautettu samaan tiedostoon.