Takaisin DigPubin kotisivulle LIITE 5. Yliopiston julkaisumallin käyttöohje

Seuraava Edellinen Alkuun
Seuraava Edellinen Alkuun


  • LIITE 5. Yliopiston julkaisumallin käyttöohje


    LIITE 5. Yliopiston julkaisumallin käyttöohje

    1 Johdanto

    Tässä tutkielmassa esitelty yliopiston julkaisumalli sisältää vaiheet julkaistavan, SGML-muotoisen tekstin tuottamisesta sen tulostamiseen paperiversiona tai julkaisemiseen WWW:n välityksellä. Käsittelymallin muodostamiseen perustettu tutkimusprojekti rajattiin käsittämään ensisijaisesti UNIX-laiteympäristöön tarjolla olevat julkisohjelmat, joten tässä käsittelymallissa tekstin muokkaaminen keskittyy pääasiallisesti UNIX-laitteella toimiviin ohjelmistoihin. Varsinaisesti tekstin tuottamistavalla ei ole merkitystä, koska mallin soveltamisessa lähtökohtana on, että julkaistava teksti on tallennettu ASCII-muotoon. Tällöin tekstin muodostaminen voidaan toteuttaa joko PC- tai UNIX-laitteella millä tekstinkäsittelyohjelmalla tahansa.

    Julkaisumallin sisältämät ohjelmistot on asennettu Jyväskylän yliopiston tietojenkäsittelytieteiden UNIX-laitteelle nimeltään jytko. Tätä mallia varten muodostetut ohjelmakoodit on myös tallennettu yleiseen hakemistoon, josta ne ovat kaikkien käytettävissä. Koska mallin soveltamiseen tarvittavat ohjelmat ovat valmiina, mallin käyttämiseen tarvitaan vain ASCII-muotoinen teksti, jota käytetään mallin eri vaiheissa.

    Julkaisumallissa muodostettava SGML-muotoinen tekstiversio tehdään docbook.dtd -dokumenttityyppimäärittelyn avulla. Liitteessä 1 on esitelty ne tekstielementit, joita tästä DTD:stä on käytetty kehittämässämme julkaisumallissa. Julkaisumallia käytettäessä on tärkeää huomioida, että muunnosohjelmaa varten muodostetut määrittelytiedostot (ks. Liite 4), joiden avulla SGML-teksti muunnetaan LaTeX- ja HTML-muotoon, sisältävät vain nämä liitteen 1 mukaiset tekstielementit. Muiden tekstielementtien käyttöönottaminen vaatii niiden käsittelyrutiinien lisäyksen määrittelytiedostoihin, jotta ne huomioitaisiin myös tekstiä muunnettaessa.

    Julkaisumallin sisältämät SGML-tekstin muunnokset LaTeX- ja HTML-muotoon on toteutettu muunnosohjelman avulla, koska muotoillun tekstitulostuksen tarjoavia SGML-tekstinkäsittelyohjelmia ei ollut tarjolla julkisohjelmina. Toisaalta myös WWW:ssä voidaan hyödyntää tällä hetkellä vain HTML-muotoista tekstiä. Tilanne muuttunee WWW:n välityksellä tapahtuvan julkaisemisen suhteen viimeistään sitten, kun SGML-selaajat yleistyvät WWW:ssä.

    Luvussa kaksi on kerrottu julkaisumallissa tarvittavien ohjelmien asennuksesta ja käyttöönotosta. Tekstin luomiseen ja muuntamiseen SGML-muotoon tarvittavat ohjeet ovat luvussa kolme, jossa myös kerrotaan erikoismerkkien, kuvien ja ulkoisten tiedostojen lisäämisestä tekstiin sekä tekstin SGML-merkkauksen tarkistuksesta eli jäsentämisestä. Luvussa neljä käsitellään tekstin muuntamista LaTeX- ja HTML-muotoon sgmlspl-muunnosohjelmalla. Samalla kerrotaan myös ohjeita muunnokseen tarvittavien määrittelytiedostojen luomisesta ja valmiin määrittelytiedoston käyttämisestä. Lopuksi luvussa viisi on ohjeet LaTeX-muotoisen tekstin muuntamisesta HTML-muotoon LaTeX2HTML-ohjelmalla, ja muunnoksen ohjaamisesta erilaisten parametrien avulla.

    2 Ohjelmistojen asennus - käyttäjän näkökulma

    Yliopiston julkaisujen digitaalista julkaisemista varten kehitettyyn käsittelymalliin on otettu mukaan seuraavat ohjelmistot, jotka on oltava asennettuina ennenkuin mallia voidaan käyttää:

    Yleensä nämä julkaisumallissa käytetyt ohjelmistot sisältävät erilliset asennusohjeet. Koska ohjeet voivat olla varsin epämääräisiä, asennus kannattaa antaa UNIX-asiantuntijan tehtäväksi. Asennusohjeet ovat lisäksi UNIX-laitteiston merkki- ja mallikohtaisia.

    Ohjelmien käyttäjän tehtäväksi jää määritellä omaan path-muuttujaansa polut, joiden avulla käyttöjärjestelmä löytää tarvittavat tiedostot. Path-muuttuja määritellään joko .cshrc- tai .login-tiedostossa. Jyväskylän yliopiston tietojenkäsittelytieteiden laitoksen jytko-koneessa suurin osa käytettävistä ohjelmista sijaitsee hakemistossa /usr/local/bin, joten se kannattaa määritellä polun alkupäähän. Muista tarvittavista polkumäärityksistä kannattaa kysellä ohjelmien asentajalta.

    Path-muuttujan lisäksi SGML-jäsentäjä SGMLS käyttää SGML_PATH-muuttujaa, joka määritellään samaan paikkaan kuin path-muuttuja. Koska SGML_PATH on nk. ympäristömuuttuja, sen määrittelemisessä käytetään komentoa setenv SGML_PATH. SGML_PATH-muuttujassa ilmaistaan, mistä dokumenteissa käytetyt dokumenttityyppimäärittelyt eli DTD:t löytyvät. Seuraavassa esimerkissä SGML_PATH-muuttuja on asetettu etsimään DTD-määrittelyjä ensisijaisesti /u1/users/gelpo/dtd-hakemistosta, josta etsitään sekä pelkkiä entiteettikokoelmia (%S, eli tiedostot, joissa ei ole mitään erillistä lopputunnistetta, kuten .dtd) että .dtd-loppuisia dokumenttityyppimäärittelytiedostoja (%N.%X). SGML_PATH-muuttujan määrittelyn helpottamiseksi kannattaakin sijoittaa kaikki tarvitsemansa DTD:t yhteen hakemistoon. Esimerkissä dokumenttityyppimäärittelyjä etsitään lisäksi hakemistoista, joita qwertz-ohjelmisto käyttää.

         set path=( ~/bins ~/bin /bin /usr/local/bin /usr/bin /usr/contrib/bin\
          /etc/ /usr/etc /usr/bin/X11 /u1/tmp/sgml2latex-1.3/bin /u1/users/gelpo\
          /perl /u1/users/gelpo/latex/sgml2latex/ae /u1/users/gelpo/latex\
          /sgml2latex/dtd  /u1/tmp/qwert /u1/tmp/qwert/ae /u1/tmp/qwert/dtd\
          /u1/tmp/qwert/bin /u1/tmp/Sgml/bin /u1/tmp/sgml2latex-format.1.3\
          /usr/local/bin/sgmls /usr/local/bin/sgmlsasp /u1/tmp/gf-0.44 \
          /u1/tmp/gf-0.44/doc /u1/tmp/gf-0.44/latex209 /u1/tmp/gf-0.44/latex2e\
          /u1/tmp/gf-0.44/sdata /u1/tmp/gf-0.44/sgml /u1/tmp/gf-0.44/src \
          /u1/tmp/cost /u1/tmp/cost/lib /u1/users/gelpo/dtd /usr/local/lib/tex\
          /bin800 /u1/users/gelpo/stl . )
         setenv SGML_PATH /u1/users/gelpo/dtd/%S:%N.%X:/u1/tmp/qwert/ae/%S:%N.%X:\
          /u1/tmp/qwert/ae/%N:/u1/tmp/qwert/dtd/%N.%X:/u1/tmp/QWERT/dtd/%N:\
          /u1/users/gelpo/latex/gf/%S:%N.%X
    
    
    

    Kun SGML-polkumääritykset on tehty, voidaan julkaisumallin eri vaiheissa tarvittavia ohjelmistoja käyttää omasta työhakemistosta. Seuraavissa luvuissa on kerrottu tarkemmin, miten julkaisumallissa käytettävän tekstin luominen ja sen muuntaminen julkaistavaan muotoon tapahtuu.

    3 Dokumentin luominen ja muuntaminen SGML-muotoiseksi eli rakenteisen tekstin tunnisteiden merkkaus

    Tässä esitelty julkaisumalli perustuu rakenteisen SGML-tekstin käsittelyyn. Rakenteisen tekstin tuottamisen päävaiheet ovat tekstin kirjoittaminen ja merkkaaminen SGML-tekstitunnisteilla sekä tekstin jäsentäminen eli merkatun tekstin rakenteen oikeellisuuden tarkistaminen. Tässä luvussa on kerrottu tarkemmin näistä eri vaiheista.

    3.1 Dokumentin luominen

    Kehittämämme julkaisumallin mukaan dokumentin kirjoittaminen voi tapahtua millä tekstinkäsittelyohjelmalla tahansa. Oleellista on, että tekstiin ei tehdä tekstin ulkomuotoon vaikuttavia muotoiluja, vaan teksti tallennetaan ASCII-tekstinä (PC-ympäristössä yleensä .txt-loppuisena). Mahdolliset dokumenttiin tulevat kuvat tallennetaan erillisiin tiedostoihin joko gif- tai ps-muodossa.

    Jos dokumentti on kirjoitettu muulla kuin UNIX-laitteella, se on siirrettävä FTP-ohjelmaa käyttäen UNIX-laitteeseen. Samalla siirretään myös kuvat ja muut tarvittavat ulkoiset tiedostot. UNIXissa varsinainen tekstitiedosto kannattaa nimetä .sgml-loppuiseksi (esimerkiksi komennolla mv teksti.txt teksti.sgml), koska silloin PSGML-ohjelma tunnistaa sen ja tarjoaa oikeat valikot käytettäviksi.

    3.2 Muunnoksen alkuvalmistelut

    Kun dokumenttiin tuleva teksti on .sgml-loppuisessa tiedostossa, se voidaan ottaa GNU Emacsiin käsiteltäväksi. GNU Emacs käynnistetään komennolla emacs teksti.sgml, jolloin GNU Emacs käynnistyy suoraan SGML-tilaan. GNU Emacsia kannattaa käyttää X window -järjestelmän kanssa, koska hiirtä voidaan tällöin käyttää tekstin muokkaamisen apuna.

    Kehittämässämme julkaisumallissa dokumenttityyppimäärittelynä on käytetty docbook.2.2.1.dtd:n artikkeleja määrittävää osaa. Tällöin dokumentin ensimmäiselle riville on kirjoitettava:

     <!DOCTYPE article SYSTEM "docbook.2.2.1.dtd">

    Tästä määrityksestä SGML-jäsentäjä tietää, mitkä tunnisteet ovat sallittuja kyseisen dokumentin tunnisteina.

    Jos DTD:ssä on käytetty pidempiä kuin kahdeksan merkkiä pitkiä tunnisteiden nimiä (kuten esimerkiksi docbook.2.2.1.dtd:ssä), dokumentin alkuun on (ennen DOCTYPE-määrittelyä) lisättävä määrittelytiedosto, jossa määritellään uudelleen tunnisteiden nimien enimmäispituus. Määrittelytiedosto löytyy hakemistosta /u1/users/gelpo/opis/maarittely.dec. Tiedosto ei näy dokumenttia tulostettaessa, vaan se vain ohjaa jäsentäjää.

    3.3 Tekstin tunnisteiden lisäys

    Dokumentin merkkauksen aloittamiseen tarvittavien alkuvalmistelujen jälkeen aloitetaan SGML-tunnisteiden lisääminen tekstiin. DTD:n sisältämät tekstitunnisteet saa näkyviin erilliseen ikkunaan valitsemalla SGML-valikosta kohdan list-valid-tags, jolloin käyttäjän nähtävillä ovat ne tunnisteet, jotka voidaan lisätä kohdistimen osoittamaan kohtaan tekstissä. Tekstirakenteen alkutunniste lisätään tekstiin valitsemalla Markup-valikosta insert-start-tag, tai lopputunnistetta lisättäessä insert-end-tag. Tunnisteelle voidaan määritellä attribuutti saman valikon insert-attribute-toiminnolla. Attribuuteilla määritellään tekstitunnisteille tarkenteita, joita käytetään myöhemmin muunnosvaiheessa tekstin muotoilussa. Insert-attribute -valinta avaa uuden valikon, josta lisättävä attribuutti valitaan. Attribuutin arvo syötetään valitsemalla tässä valikossa kohta insert-attribute-value. Tällöin näytön alariville kirjoitetaan haluttu arvo. Seuraavassa on esimerkkinä tekstitunnisteella ja attribuuteilla merkattu julkaistavan tekstin osa, jossa on merkattu lähdeviittaus link-tekstitunnisteella.

    <link xreflabel="lahteet" linkend="Har92">Harnad, 1992</link>

    Link-tunnisteelle on määritelty attribuuteiksi xreflabel ja linkend, joita on käytetty myöhemmin muunnettaessa tekstiä HTML-muotoon. Tällöin xreflabel sisältää lähdeluettelon tiedostonimen (tässä tapauksessa lahteet) ja linkend yksittäisen lähteen tunnisteen (Har92). Näiden attribuuttiarvojen avulla voidaan HTLM-merkkauskielellä muodostaa linkki tekstin lähdeviittauksesta lähdeluetteloon.

    Tunnisteet ja niiden attribuutit voidaan lisätä tekstin joukkoon myös käsin kirjoittamalla. Tällöin merkintöjen oikeellisuuden tarkistusta ei kuitenkaan tehdä välittömästi tunnisteen lisäämisen jälkeen, vaan ilmoituksen mahdollisesta virheestä saa vasta myöhemmin.

    3.4 Ulkoisten tiedostojen, erikoismerkkien ja kuvien lisääminen

    Tekstin sisältämien erilaisten rakenteiden merkkaus on tapauskohtaista käytettävän DTD:n mukaan. SGML-merkkauksessa on tyypillistä, että tavanomaisten tekstikokonaisuuksien (luku, otsikko, kappale) lisäksi tekstiin on erikseen merkattava myös käytetyt erikoismerkit ja sellaiset tiedostot, jotka otetaan tekstiin mukaan ulkoisina tiedostoina. Erikoismerkkeinä käsitellään yleensä sellaiset merkit, jotka aiheuttaisivat ongelmia tekstiä siirrettäessä tai muunnettaessa toiseen ympäristöön. Tässä julkaisumallissa erikoismerkkeinä on huomioitu skandinaaviset kirjaimet ja ne yksittäiset merkit, jotka käsitellään SGML-tekstistä tehtävissä muunnosmuodoissa (LaTeX ja HTML) erikoismerkkeinä.

    Tiedostot, jotka halutaan tulostuvan sellaisenaan, lisätään tekstin joukkoon ulkoisina tiedostoina. Tekstin alkuun DOCTYPE-määrittelyn jälkeen lisätään entiteettimäärittelyt, joissa erikoismerkkien määrittelyn lisäksi esitellään tarvittavat ulkoiset tiedostot. Entiteettimäärittelyt voivat näyttää esimerkiksi seuraavilta:

    <!DOCTYPE article SYSTEM "docbook.2.2.1.dtd" [
     <!ENTITY TeX SDATA "[TeX]">
     <!ENTITY LATEX SDATA "[LaTeX]">
     <!ENTITY lowbar SDATA "\_">
     <!ENTITY percnt SDATA "\%">
     <!ENTITY etago SDATA "\&">
     <!ENTITY tilde SDATA "\~">
     <!ENTITY smallerthan SDATA "\<">
     <!ENTITY greaterthan SDATA "\>">
     <!ENTITY ae SDATA '\"{a}'>
     <!ENTITY Ae SDATA '\"{A}'>
     <!ENTITY oe SDATA '\"{o}'>
     <!ENTITY Oe SDATA '\"{O}'>
     <!ENTITY gradu-spec.program SYSTEM "gradu1-spec.pl" CDATA linespecific>
     <!ENTITY gradu2-spec.program SYSTEM "gradu2-spec.pl" CDATA linespecific>
     <!ENTITY docbook.dtd SYSTEM "docbook.txt" CDATA linespecific>
     <!ENTITY qwertz.dtd SYSTEM "qwertz.dtd" CDATA linespecific>
     <!ENTITY sgml-teksti SYSTEM "liitex.sgml" CDATA linespecific>
    ]>

    Määrittelyjen aluksi on esitelty ne merkkijonot tai yksittäiset merkit, jotka halutaan muuntaa tekstissä joksikin muuksi. Tässä tapauksessa sanat TeX ja LATEX korvataan jäsentäjän tuottamassa ESIS-muotoisessa tekstissä merkkijonoilla [TeX] ja [LaTeX], jotta ne voidaan tulostaa niiden oikeassa kirjoitusasussa paperille tulostettaessa. Erikoismerkit, kuten _, %, ~, &, < ja > merkitään erikseen, koska LaTeX ja HTML käsittelevät niitä erikoismerkkeinä. Skandinaaviset merkit on merkittävä, jotta tekstin siirrettävyys ja laiteriippumattomuus säilyisi. Ulkoiset tiedostot on kuvattu antamalla niille oma yksikäsitteinen sisäinen nimi, jolla niitä kutsutaan tekstissä. Määre linespecific aiheuttaa sen, että SGML-jäsentäjä ei tarkasta tiedoston sisältöä, vaan siirtää sen sellaisenaan ESIS-muotoiseen tiedostoon.

    Kirjoittajan, joka on muokkaamassa tekstiään SGML-muotoon, on itse muutettava erikoismerkit entiteettimäärittelyissä kuvatuiksi merkkijonoiksi. Esimerkiksi, kun tekstissä pitäisi olla ~-merkki, sen paikalle kirjoitetaan &tilde; -merkkijono. Merkit on helpointa muuttaa käyttämällä GNU Emacsin etsi-korvaa -toimintoa (Esc-%, jolloin saadaan kaikki esiintymät korvattua yhdellä kertaa antamalla korvaavan merkkijonon jälkeen !-merkki). Samoin ulkoisia tiedostoja käytettäessä tiedostoon viitataan sen sisäisellä nimellä kirjoittamalla sisäinen nimi &- ja ;-merkkien väliin (esimerkiksi &sgml-teksti;). Ulkoisia tiedostoja voidaan kutsua myös suoraan tiedostonimen avulla. Tällöin tiedostonimen muuttuessa se on päivitettävä mahdollisesti useaan paikkaan tekstissä.

    SGML-muotoisen tekstin joukkoon liitettävät kuvat merkataan erikseen ja otetaan tekstiin mukaan ulkoisina tiedostoina. Tässä julkaisumallissa kuvat on tallennettu ensin ps-muotoon, jolloin ne ovat valmiiksi paperille tulostettavassa muodossa. Docbook.dtd:n mukaisesti määriteltynä kuvan liittäminen tekstiin tapahtuu seuraavasti:

       <figure>
           <title>Julkaisujen k&ae;sittelymalli</title>
           <graphic lang="15" fileref="jmalli1.ps"></graphic>
       </figure>

    Kuvamääritykset tehdään figure-tunnisteella, joka sisältää title- ja graphic-tunnisteen. Title-tunnisteeseen kirjoitetaan kuvateksti, joka tulostetaan muunnosohjelmassa kuvan alapuolelle. Graphic-tunnisteen attribuuteiksi on määritelty lang, johon määritellään kuvan korkeus senttimetreinä paperijulkaisua varten, ja fileref, joka sisältää kuvatiedoston nimen. Kuvien lopullinen ulkoasu ja sijoituspaikka tekstissä määräytyy tehtävän muunnoksen ja sen kohdemuodon mukaan. Esimerkiksi LaTeX pyrkii sijoittamaan kuvat käyttäjän antamien asetuksien mukaan, mutta käytännössä tämä osoittautui paljonkin teoriaa hankalammaksi. Tässä julkaisumallissa ps-muotoiset kuvat muunnetaan HTML-muunnoksen yhteydessä gif-muotoon, ja HTML-muunnoksessa kuvat asettuvat juuri sille kohdalle, mihin ne on määriteltykin, koska sivunvaihdot eivät ole ongelmana verkkojulkaisuissa.

    5.3.5 Dokumentin merkkauksen tarkistus eli jäsentäminen

    Merkattujen tunnisteiden oikeellisuus tarkistetaan SGML-jäsentäjän avulla. GNU Emacsin kanssa on helpointa käyttää SGMLS-jäsennintä, joka käynnistyy Ctrl-C Ctrl-V -näppäinyhdistelmällä. Tekstinkäsittelyikkunan alalaitaan tulee ensin kysymys: Validate command: sgmls -s teksti.sgml. Kysymyksen tarkoitus on varmistaa SGMLS-jäsentäjälle annettujen parametrien oikeellisuus (parametri s tarkoittaa vain virheilmoitusten tulostamista, ESIS-muotoa ei tulosteta). Vastaukseksi riittää Enter-näppäimen painallus. Seuraava kysymys koskee käsiteltävän tiedoston tallentamista ennen jäsentämistä, ja siihen vastataan yleensä y-näppäimellä (yes).

    SGMLS-jäsentäjä avaa uuden ikkunan, johon jäsennyksen tulos tulostuu. Jos tulostuksen lopussa on teksti: SGML validation finished, teksti on merkattu oikein. Muussa tapauksessa tulostuu virheilmoituksia, joissa kerrotaan virheen sijainti ja selitys. Virheelliseen kohtaan siirrytään suoraan valitsemalla Move-valikosta kohdan move-next-trouble-spot tai siirtymällä suoraan ilmoitetulle riville painamalla ensin näppäimiä ESC-X ja kirjoittamalla sitten goto-line. Tämän jälkeen painetaan Enter-näppäintä ja kirjoitetaan haluttu rivin numero. Kun virheilmoituksia ei enää ilmaannu, tekstin muokkaus voidaan lopettaa ja sulkea GNU Emacs.

    Seuraavassa luvussa on kerrottu SGML-muotoisen tekstin muuntamisesta LaTeX- ja HTML-muotoon. Nämä muunnokset tehdään ohjelmalla, joka käsittelee SGMLS-jäsentäjän tuottamaa ESIS-muotoista tekstiä. Periaatteessa tämä tarkoittaa sitä, että muodostetun SGML-tekstin jäsentäminen ei ole välttämätöntä tekstin kirjoitusvaiheessa, jos teksti muunnetaan myöhemmin muunnosohjelmia apuna käyttäen LaTeX- tai HTML-muotoon. Käytännössä on kuitenkin järkevintä tarkistaa tekstin oikeellisuus jo kirjoitusvaiheessa, jotta muunnosta tehtäessä ei enää tarvitse puuttua mahdollisiin tekstin rakennevirheisiin.

    4 Dokumentin muuntaminen LaTeX- ja HTML-muotoon sgmlspl-ohjelmalla

    Sgmlspl on ohjelma, jonka avulla voidaan muuntaa SGML-muotoinen dokumentti esim. LaTeX- tai HTML-muotoon. Sgmlspl-muunnosohjelma sisältää SGMLS.pm-luokkakirjaston SGMLS- ja NSGMLS-jäsentäjien tuottaman ESIS-muodon käsittelyyn ja sen avulla dokumentti voidaan muuntaa käyttäjän määrittelemän määrittelytiedoston mukaiseen muotoon.

    Sglmspl-ohjelmapaketti sisältää erilliset ohjeet sekä SGMLS.pm-luokkakirjastosta että sitä käyttävästä sgmlspl-sovelluksesta. Ne löytyvät myös WWW:stä osoitteista

    http://www.uottawa.ca/~dmeggins/sgmlspl/sgmlspl.html ja
    http://www.uottawa.ca/~dmeggins/SGMLSpm/sgmlspm.html.

    Ne ovat hyvänä apuna ohjelmaan tutustuttaessa ja sisältävät myös havainnollisia esimerkkejä.

    4.1 Määrittelytiedoston muodostaminen

    Määrittelytiedoston rakenne määräytyy SGML-dokumentissa käytettyjen tekstitunnisteiden mukaan. Pääperiaatteena on, että muunnokseen tarvittava määrittelytiedosto sisältää tekstitunnistekohtaiset määrittelyt toimenpiteistä, jotka suoritetaan SGMLS-jäsentäjän palauttaessa kyseisen tekstikokonaisuuden. Suoritettavat toimenpiteet määritellään sen mukaan, mihin muotoon dokumentti on tarkoitus muuntaa.

    Sgmlspl-ohjelmaa varten tehtävä määrittelytiedosto toteutetaan tekstinkäsittelyohjelman (tässä yhteydessä GNU Emacs) avulla Perl-ohjelmointikielellä. Tällä hetkellä Perl-ohjelmointikielestä on käytössä versio 5 (Perl5). Sgmlspl ei sisällä ohjeita Perl-ohjelmointikieleen liittyen, mutta Wallin ja Schwartzin teos "Programming Perl" tutustuttaa lukijansa Perl-kieleen aivan alkeista lähtien. Toisaalta sgmlspl-ohjelma sisältää aika kattavat esimerkkiohjelmat sekä LaTeX- (tiedosto tolatex.pl) että HTML-muunnoksesta (tiedosto tohtml.pl), joten niiden avulla on mahdollista tutustua myös Perl-kielen perusrakenteisiin. Perl-käsikirja on kuitenkin hyvä olla saatavilla, jos muunnoksen tekemiseen tarvitaan monimutkaisempia merkkijono- tai tiedostokäsittelyitä.

    Sgmlspl-ohjelma sisältää kohtalaiset käyttöohjeet määrittelytiedoston tekemistä varten. Ohjelmatoimitus sisältää myös käyttökelpoisen apuohjelman skel.pl, jonka avulla voidaan helposti muodostaa runko määrittelytiedostolle. Komennolla

    sgmls teksti.sgml | sgmlspl skel.pl > teksti-muunnos.pl

    muodostetaan SGML-muotoisesta teksti.sgml -tiedostosta muunnosta varten tarvittava määrittelytiedostorunko teksti-muunnos.pl, joka sisältää muunnosfunktiokutsut jokaiselle tekstin sisältämälle tunnisteille. Tiedoston alussa ovat määrittelyt

    use SGMLS;
    use Output;

    joiden avulla otetaan käyttöön sekä SGMLS.pm- että Output.pm-luokkakirjastot. Sgmlspl käyttää Output.pm-luokkakirjaston funktioita tekstin tulostamiseen. Näitä ovat output(string...), push_output(type,[data]) ja pop_output. Output vastaa lähinnä Perl5:n print-funktiota. Push_output ja pop_output ovat käyttökelpoisia silloin, kun tekstiä halutaan tulostaa muualle kuin oletuksena olevaan STDOUTiin. Edellä mainittujen lisäksi määrittelytiedoston lopussa on kommenttiriveinä virhekäsittelyrutiinit niille tekstitunnisteille, joille käsittelyrutiineja ei ole määritelty (esim. jos tekstiin on lisätty uusia tunnisteita). Nämä virhekäsittelyt kannattaa ottaa käyttöön heti määrittelytiedoston tekemisen alkuvaiheessa. Määrittelytiedosto nimetään .pl-loppuiseksi, mikä on yleinen käytäntö Perl-ohjelmointikielisille tiedostoille.

    Määrittelytiedoston sisältö muodostuu pääasiassa sgmlspl-ohjelman sgml-funktion kutsuista, joiden avulla muokataan tekstitunnisteilla merkattuja tekstikokonaisuuksia. Sgml-funktion parametreina ovat tekstitunniste (esim. <TITLE>) ja käsittelyrutiini, joka toteutetaan kyseiselle tekstitunnisteille (esim. HTML-muunnoksen ollessa kyseessä, <H1>). Tämän lisäksi SGML-dokumentin sisältämille erikoismerkeille (esim. CDATA-elementeille) on myös tarpeen määritellä käsittelyrutiinit. Skel.pl -ohjelman avulla muodostettu määrittelytiedostorunko sisältää nämä funktiokutsut jokaista SGML-muotoisen tekstin sisältämää tekstitunnistetta varten siten, että toinen parametri (käsittelyrutiini) jää käyttäjän määriteltäväksi.

    Tekstielementeille suoritettavat käsittelyrutiinit määritellään Perl-ohjelmointikielellä. Määrittelytiedostossa voidaan käyttää Perl-ohjelmointikielen sallimia aliohjelma-, tulostus-, muuttuja- ja tiedostokäsittelyitä sekä monipuolisia merkkijonojen käsittelyyn tarkoitettuja funktioita. Perl on komentotulkin avulla suoritettava ohjelmointikieli, joten sen avulla muodostettu ohjelmakoodi testataan suorittamalla ohjelma. Määrittelytiedoston toimivuutta on mahdollista testata myös siten, että kaikkien tekstitunnisteiden käsittelyrutiinit eivät ole vielä määriteltynä, vaan sgml-funktion toinen parametri on määritelty tyhjäksi (esim. sgml('<TITLE>',"");). Tällöin sgmlspl-ohjelma jättää nämä elementit käsittelemättä.

    4.2 LaTeX-muunnoksen tekeminen

    Edellä kerrottiin yleisesti määrittelytiedoston tekemisestä. Keskeisenä toiminta-ajatuksena sgmlspl-ohjelmassa on sgml-funktio, jolla määritellään tekstitunnistekohtaiset muunnokset. Jos teksti halutaan muuntaa LaTeX-muotoon, sgml-funktioon määritellään käsittely-parametriksi ne LaTeX-muotoilukomennot, jotka kyseiselle tekstitunnisteelle tehdään. Kun LaTeX-muunnosta varten tarvittava määrittelytiedosto on valmis, dokumentin muunnos voidaan toteuttaa komennolla

    sgmls teksti.sgml | sgmlspl teksti-muunnos.pl > teksti.tex

    Tällöin teksti-muunnos.pl on määrittelytiedosto ja teksti.tex muunnoksen tuloksena muodostunut LaTeX-muotoinen dokumentti. Jotta teksti saadaan tulostettavaan muotoon, se ajetaan ensin LaTeXilla komennolla

    latex teksti.tex

    Tämän ajon aikana tarkistetaan LaTeX-muotoisen tekstin oikeellisuus ja lopputuloksena muodostuu .dvi-tiedosto, joka sisältää muotoillun tekstin ns. laiteriippumattomassa muodossa. Dvi-tiedostoa voidaan esikatsella esim. xdvi-ohjelman avulla (komennolla xdvi teksti.dvi). Dvi-tiedosto ei sisällä kuvia, joten ne eivät tulostu esikatseltaessa dokumenttia xdvi-ohjelmalla. Kun dokumentti halutaan tulostaa paperille, dvi-tiedostosta muodostetaan ps-tiedosto dvips-ohjelmalla komennolla

    dvips teksti.dvi

    Dvips-ohjelman avulla tekstistä muodostetaan tiedosto teksti.ps, joka voidaan tulostaa paperille tai esikatsella gs- tai ghostview-ohjelmalla. Tässä vaiheessa teksti sisältää myös siihen liitetyt ps-muotoiset kuvat ja näkyvät myös tekstiä esikatseltaessa.

    4.3 Gradu-latex.pl -määrittelytiedoston käyttäminen

    Tämän tutkielmatekstin muunnosta varten muodostettu gradu-latex.pl -määrittelytiedosto muokkaa SGML-dokumentin pro gradu -työlle annettujen ulkoasuvaatimusten mukaiseksi. Määrittelytiedosto sisältää käsittelyrutiinit kaikille liitteessä 1 esitellyille docbook.dtd:n elementeille ja määrittelytiedosto on esitelty liitteessä 4. Jos julkaistavasta tekstistä halutaan muodostaa paperiversio gradu-latex.pl -määrittelytiedoston avulla, muunnos käynnistetään komennolla

    sgmls teksti.sgml | sgmlspl teksti-latex.pl > teksti.tex

    , jolloin LaTeX-muotoinen teksti ohjataan teksti.tex-nimiseen tiedostoon. Muodostunut LaTeX-tiedosto käyttää tyylitiedostonaan Artikkeli.sty-tiedostoa, joka on suomennettu versio Article.sty-tiedostosta. Määrittelytiedostoon on mahdollista tehdä muutoksia tai lisätä käsittelytoimintoja uusille tekstitunnisteille. LaTeX-muotoisen tekstin käsittelemistä jatketaan tämän jälkeen kohdan 4.2 ohjeiden mukaisesti.

    4.4 HTML-muunnoksen tekeminen

    Julkaistavasta tekstistä tehtävää HTML-muunnosta varten tarvittava määrittelytiedosto tehdään edellä kerrottujen ohjeiden mukaisesti. Tällöin määrittelytiedoston sisältämien sgml-funktioiden käsittelyihin määritellään HTML-muotoilukielen komentoja. Kun HTML-muunnosta varten tarvittava määrittelytiedosto on valmis, HTML-muunnos tehdään periaatteessa samoin kuin edellä kerrottu LaTeX-muunnos komennolla

    sgmls teksti.sgml | sgmlspl teksti-muunnos.pl > teksti.html

    Tällöin teksti ohjataan teksti.html-tiedostoon, joka on valmis selattavaksi HTML-selaajalla. Pitkien dokumenttien yhteydessä voi kuitenkin olla tarpeen muodostaa yhdestä alkuperäisestä SGML-dokumentista useita HTML-dokumenttitiedostoja, jotka on linkitetty toisiinsa. Nämä erilliset HTML-dokumentit ja tekstin muokkaaminen sekä ohjaaminen HTML-tiedostoihin tehdään muunnokseen tarvittavan määrittelytiedoston avulla. Samalla on myös ylläpidettävä ja muodostettava erillisten dokumenttien väliset linkit, joilla ne yhdistetään toisiinsa.

    4.5 Gradu-html.pl -määrittelytiedoston käyttäminen

    Jos julkaistavasta tekstistä halutaan tehdä tämän tutkielmatekstin HTML-version mukainen muunnos, se toteutetaan liitteessä 4 esitetyn gradu-html.pl -määrittelytiedoston avulla. Muunnos käynnistetään komennolla

    sgmls teksti.sgml | sgmlspl gradu-html.pl

    , jolloin tekstiä ei ohjata mihinkään tiedostoon, vaan gradu-html.pl -määrittelytiedoston avulla tehtävä muunnos jakaa muunnettavan SGML-dokumentin erillisiin HTML-tiedostoihin alkuperäisen tekstin rakenteen mukaan. Jokaisesta tekstiluvusta muodostetaan oma tiedosto, jotka linkitetään toisiinsa. Ensimmäinen HTML-tiedosto muodostetaan etusivusta, tiivistelmäsivusta ja sisällysluettelosta, josta voi siirtyä tutkielman tekstiin. Jokaisen HTML-tiedoston alussa on lukukohtainen sisällysluettelo, josta voi siirtyä tiettyyn tekstin alalukuun. HTML-tiedostojen nimeäminen tapahtuu SGML-dokumentin SECT-elementtien ID-arvon mukaan. Ellei elementeillä ole ID-arvoa, tiedostot nimetään oletuksena node-nimisiksi juoksevalla numeroinnilla. Tekstin sisältämien linkkien muodostaminen on toteutettu refs.pl-tiedoston avulla, johon tallennetaan kaikkien tekstilinkkien yhteystiedot. Muunnos täytyykin ajaa läpi pari kertaa, koska ensimmäinen ajo muodostaa linkkitiedoston, jota seuraavassa ajossa sitten käytetään.

    Tästä tutkielmatekstistä gradu-html.pl -määrittelytiedoston avulla tehty muunnos on nähtävissä URL-osoitteesta http://www.cs.jyu.fi/~gelpo/index.html. Määrittelytiedostoon on muistettava tehdä lisäyksiä ainakin silloin, jos käyttöön otetaan sellaisia docbook.dtd:n tekstitunnisteita, joita ei tässä muunnoksessa ole huomioitu.

    5 LaTeX-muotoisen dokumentin muuntaminen HTML-muotoon LaTeX2HTML-ohjelmalla

    LaTeX2HTML on ohjelma, joka muuntaa LaTeX-muodossa olevan tekstin HTML-muotoon, jolloin teksti on luettavissa WWW:ssä. Ohjelman saa ilmaiseksi URL-osoitteesta http://cbl.leeds.ac.uk/nikos/tex2html/latex2html.tar tai ftp:llä osoitteesta ftp://ftp.tex.ac.uk/pub/archive/support/latex2html. Jos ohjelma on pakattu eli tar-loppuinen, se puretaan komennolla tar xvf latex2html.tar, jolloin hakemistossa pitäisi olla README ja Changes -tiedostot, latex2html ja texexpand -Perl-ohjelmat sekä latex2html.config-konfiguraatiotiedosto. Lisäksi ohjelman mukana tulee install-test installoinnin testausohjelma, dot.latex2html-init (initialization) määrittelytiedosto, html.sty tyylitiedosto, pstogif kuvien muokkaustiedosto sekä kaksi pstoppm.ps tiedostoa. Alihakemistot ovat docs, joka sisältää käyttö- ja installointiohjeet, erilaisia ikoneita sisältävä icons-hakemisto ja styles, jossa on tyylitiedostoja käsittelevä Perl-ohjelma. Toimiakseen UNIX-koneilla LaTeX2HTML vaatii LaTeX-dvips (versio 5.16 tai uudempi) tai dvipsk, gs (versio 2.6.1 tai uudempi) ja pbmplus- tai netpbm -ohjelmat sekä Perl-ohjelmointikielen.

    Yksinkertaisin tapa ajaa LaTeX2HTML-ohjelma on antaa komento latex2html tiedosto.tex. Tämä luo uuden tiedosto-nimisen alihakemiston ja sijoittaa kaikki ajon aikana muodostuneet HTML-tiedostot, kuvat ja loki-tiedostot sinne. Ajossa muodostuu tiedosto.html sekä node.html -tiedostot. Tiedosto.html on dokumentin ensimmäinen sivu ja node.html-tiedostot tekstin osioita, joiden määrä riippuu siitä, mikä arvo annetaan split ja link -optioille LaTeX2HTML-ajossa. Nämä tiedostot numeroidaan juoksevasti (node1.html, node2.html, jne.). Kuvat ohjelma konvertoi automaattisesti ps-muodosta gif-muotoon ja nimeää kuvatiedostot img.gif-nimisiksi ja numeroi juoksevasti. Muunnoksen tuloksen voi tarkistaa HTML-selaajalla avaamalla tiedosto-alihakemistossa olevan tiedosto.html-tekstin, joka sisältää linkit tekstin muihin osiin. Muunnoksessa syntyvän tekstin ulkoasuun voi vaikuttaa käyttämällä komentorivillä eri parametreja, jotka on esitelty taulukossa 4.

    Tästä tutkielmatekstistä LaTeX2HTML-ohjelmalla tehty muunnos on nähtävissä URL-osoitteesta http://www.cs.jyu.fi/~gelpo/index.html. Tämä muunnos ajettiin komennolla latex2html gradu.tex, jolloin tekstistä muodostui gradu-hakemistoon tiedostot gradu.html, node1.html - node106.html ja footnote.html sekä img1.gif - img18.gif. Lisäksi syntyi muutama aputiedosto, jota ohjelma käyttää muunnoksen aikana. Syntynyt HTML-teksti jakaa jokaisen otsikoidun kappaleen omalle sivulleen. Kappaleiden alussa olevien johdantojen jälkeen tulee sisällysluettelo, jossa näkyy siihen kappaleeseen kuuluvat alaotsikot. Jokaisen sivun yläreunassa on painikepalkit, joilla pääsee liikkumaan yhden sivun eteen tai taakse, tekstin alkuun tai sisällysluetteloon. Kuvat ovat tekstin sisäisiä eli ne näkyvät suoraan tekstissä. Alaviitteet tulevat tekstin ulkopuolelle ja ne saa näkyviin klikkaamalla hiirellä alaviitettä osoittavaa kuvaa.

    Taulukko 4:

    LaTeX2HTML-ohjelman parametrit

    ParametriParametrin vaikutus
    -split num Syntyvän tekstin HTML-tiedostojen lukumäärää voi vaihdella. Arvo 0 tekee dokumentista yhden HTML-tiedoston. Oletusarvo on 8.
    -link numLinkkien yhteydet alasolmuihin voidaan määritellä. Solmujen tasot ovat osa/luku/kappale/1.tason kappale/2.tason kappale jne. Arvo 0 ei näytä linkkejä alasolmuihin, arvo 1 näyttää vain seuraavaan alasolmuun jne. Oletusarvo on 4.
    -nolatexJättää huomioimatta komennot, joita LaTeX ei ymmärrä. Tämä nopeuttaa muunnosta, mutta jättää tekstistä pois monimutkaiset kuvat, yhtälöt ja taulukot. (Tämän option voi korvata -no_images optiolla)
    -external_imagesKaikki kuvat jätetään dokumentin ulkopuolelle ja niihin tehdään linkit varsinaisesta tekstistä.
    -ascii_modeKäyttää vain ASCII-merkkejä eikä ota lopulliseen tekstiin mukaan kuvia. Tätä muunnosta käytetään, jos tekstin selaaminen on mahdollista vain merkkipohjaisilla selaajilla, jotka eivät tue kuvia.
    -t top-page-titleNimeää dokumentin käyttäen tässä annettua nimeä.
    -dir output-directoryOhjaa muunnoksessa syntyvät tiedostot tässä annettuun hakemistoon.
    -no_subdirSijoittaa muunnoksessa syntyvät tiedostot työhakemistoon. Oletuksena on tiedostojen siirto johonkin muuhun hakemistoon.
    -ps_imagesKäyttää linkkejä ulkoisiin postscript-kuviin.
    -address author-addressJokaiselle sivulle sijoitetaan annettu osoite.
    -no_navigationEi tee ohjauslinkkejä joka sivulle.
    -top_navigationLaittaa ohjauslinkit jokaisen sivun yläreunaan.
    -bottom_navigationLaittaa ohjauslinkit jokaiselle sivulle sekä ylä- että alareunaan.
    -auto_navigationLaittaa ohjauslinkit jokaisen sivun yläreunaan. Mikäli sivulla on enemmän sanoja kuin $WORDS_IN_PAGE-parametrilla on määritelty (oletus 450), laittaa ohjauslinkit myös sivun alareunaan.
    -index_in_navigationLaittaa ohjauspaneeliin linkin hakemistoon, jos sellainen on olemassa.
    -contents_in_navigationLaittaa ohjauspaneeliin linkin sisällysluetteloon, jos sellainen on olemassa.
    -next_page_in_navigationLaittaa ohjauspaneeliin linkin seuraavalle loogiselle sivulle.
    -previous_page_in_navigationLaittaa ohjauspaneeliin linkin edelliselle loogiselle sivulle.
    -info stringTekee uuden kappaleen dokumentin loppuun tulevasta About this document... osiosta, jossa on oletuksena alkuperäisen tekstin nimi, muunnospäivämäärä, käyttäjä ja muunnosohjelman nimi. Jos string-parametrin jättää tyhjäksi tai arvoksi laitetaan 0, ei ohjelma tee tätä osiota lainkaan. Muutoin About this document... osion sisällöksi laitetaan string-parametrin sisältö.
    -dont_include file(s)Ei ota mukaan tässä määriteltyjä tiedostoja. Tällä voi ohittaa tiedostot, joita LaTeX tai muunnosohjelma ei osaa käsitellä.
    -reuseKäyttää edellisessä muunnosajossa generoituja kuvia uudelleen. Kuvat, jotka riippuvat asiayhteydestä (esim. numeroidut taulukot) otetaan aina mukaan muunnokseen.
    -no_reuse Ei generoi edellisessä muunnosajossa generoituja kuvia uudelleen. Tämä kysyy käyttäjältä tuhotaanko jo olemassa olevan alihakemiston tiedot, käytetäänkö hakemistoa uudelleen vai lopetetaanko muunnosajo.
    -init_file fileSuorittaa annetun Perl-koodia sisältävän tiedoston, jossa voi olla oletusasetuksia muuttavia komentoja. Tämä tiedosto suoritetaan .latex2html-init tiedoston ajon jälkeen.
    -no_imagesEi tee tekstin sisälle kuvia. Kuvat voidaan generoida dokumentin ulkopuolisiksi kuviksi suorittamalla latex2html-muunnosajo uudelleen käyttäen -images_only -parametria.
    -images_onlyKonvertoi edellisessä ajossa käsittelemättä jätetyt kuvat.
    -show_section_numbersNäyttää kappaleiden numerot. Useammalla kappaleella ei saa olla samaa nimeä eikä nimet saa sisältää grafiikkaa. Oletuksena muunnosajo ei näytä kappalenumeroita.
    -hTulostaa listan käytettävässä olevista optioista.



    SeuraavaEdellinenYlös
    Seuraava Edellinen Alkuun