Instrukcio


Enkonduko

La datumoj de la vortaro estas en la tiel-nomata baza dosiero. Ghi havas propre definitan strukturon (vidu sube), kaj ne similas al sgml au xml. (Mi ne povas tiom bone programi ke mi povas uzi sgml- au xml-kodigojn. Alia avantagho estas ke la strukturo de la baza dosiero aspektas tre simpla kaj ties enhavo facile shangheblas per simpla tekstoprilaborilo. :-)

La cgi-programo en Perl-lingvajho estas ilo inter la baza dosiero kaj la uzanto. Nuntempe la funkcioj de la cgi-programo estas limigita: oni povas aldoni nur novajn artikolojn kaj nur rimarkojn al jam ekzistanta artikolo. La eblaj elementoj en la strukturo de la baza dosiero pli vastas. Oni povas difini chapitrojn, ((sub-)sub-)paragrafojn, tekstblokojn figurojn, tabelojn kaj literaturreferojn. Tiuj chi chiuj ne eblas aldoni en la baza dosiero per la cgi-programo.

En la uzo de la cgi-programo oni devas atenti pri uzeblaj signoj. Plenumante la formularojn kiujn la cgi-programo prezentas al vi, vi nur povas uzi jenajn signojn:


Latex

La cgi-programo ankau povas elshuti latex-dosieron lau la enhavo de la baza dosiero. Prilaborado de la latex-dosiero per LaTex kaj makeindex rezultas en libreto (en la latex-stilo report) kun enhavtabeloj kaj indeksoj por la diversaj lingvoj.

La bezonatajn .sty-dosierojn kun kromaj latex-difinoj vi povas elshuti klakante chi tie (vv.sty) kaj chi tie (vv-multidx.sty). Krome praktikas bash-shelprogrameto faru-ps por procedi de la latex-dosiero al postskript-dosiero. Vidu ankau la indikojn che la fino de la reta titolpagho de la koncerna terminaro.


Strukturo de la baza dosiero

Jen la diversaj elementoj en la baza dosiero.

dokumentkomenco <statuso> <referkodo>
  titolo     <lingvo> <statuso> <indeksigebla_teksto>
  subtitolo  <lingvo> <statuso> <indeksigebla_teksto>
  autoro     <lingvo> <statuso> <teksto>
  kunautoro  <lingvo> <statuso> <teksto>
  dato       <lingvo> <statuso> <teksto>
  modifodato xx <statuso> <teksto>
  latexdokumentklaso x x \documentclass[a4paper]{article}
  latexmakrodosiero  x x ventolado.sty
  latexdifinoj       x x ....
  htmlstilo          x x komenteblo=0 sobre=0

enhavolisto <lingvo> <referkodo>
  titolo <lingvo> <statuso> <teksto>

indeksolisto <lingvo> <referkodo>
  titolo <lingvo> <statuso> <teksto>

chapitro <statuso> <referkodo>
  branchnumero <nivelo> <statuso> <numeroj>
  titolo <lingvo> <statuso> <indeksigebla_teksto>
  titolo <lingvo> <statuso> <indeksigebla_teksto>
  rimarko <lingvo> <statuso> <teksto>
  hist xx 1 <teksto>
  sekretoj xx 1 <teksto>

paragrafo <statuso> <referkodo>
  branchnumero <nivelo> <statuso> <numeroj>
  titolo <lingvo> <statuso> <indeksigebla_teksto>

subparagrafo <statuso> <referkodo>
  branchnumero <nivelo> <statuso> <numeroj>
  titolo <lingvo> <statuso> <indeksigebla_teksto>

subsubparagrafo <statuso> <referkodo>
  branchnumero <nivelo> <statuso> <numeroj>
  titolo <lingvo> <statuso> <indeksigebla_teksto>

branchtitolo <statuso> <referkodo>
  branchnumero <nivelo> <statuso> <numeroj>
  titolo <lingvo> <statuso> <indeksigebla_teksto>

tekstaro <statuso> <referkodo>
  branchnumero <nivelo> <statuso> <numeroj>
  teksto <lingvo> <statuso> <teksto>

tekstaro <statuso> <referkodo>
  numero <nivelo> <statuso> <numeroj>
  teksto <lingvo> <statuso> <teksto>
  teksto <lingvo> <statuso> <teksto>

artikolo <statuso> <referkodo>
  numero <nivelo> <statuso> <numeroj>
  esprimo <lingvo> <statuso> <indeksigebla_teksto>
  esprimo <lingvo> <statuso> <indeksigebla_teksto>

  ekspliko <lingvo> <statuso> <teksto>
  rimarko <lingvo> <statuso> <teksto>
  hist xx 1 <teksto>
  sekretoj xx 1 <teksto>

figuro <statuso> <referkodo>
  htmlbildo  <figura_parametroj> 1 <dosiera_nomo>
  latexbildo <figura_parametroj> 1 <dosiera_nomo>

  kapo <lingvo> <statuso> <teksto>
  kapo <lingvo> <statuso> <teksto>
  indekso <lingvo> <statuso> <indeksigebla_teksto2>
  indekso <lingvo> <statuso> <indeksigebla_teksto2>
  rimarko <lingvo> <statuso> <teksto>
  hist xx 1 <teksto>

tabelo <statuso> <referkodo>
  kapo <lingvo> <statuso> <teksto>
  kapo <lingvo> <statuso> <teksto>
  indekso <lingvo> <statuso> <indeksigebla_teksto2>
  indekso <lingvo> <statuso> <indeksigebla_teksto2>
  rimarko <lingvo> <statuso> <teksto>
  hist xx 1 <teksto>

  htmltabelo  x 1 <teksto>
  latextabelo x 1 <teksto>

branchkomenco <statuso> <referkodo>

branchfino <statuso> <referkodo>

literaturlisto 1 litlis

literaturo 1 <referkodo>
  littipo x 1 <literaturatipo>
  autoro <lingvo> <statuso> <teksto>
  titolo <lingvo> <statuso> <teksto>
  en     <lingvo> <statuso> <teksto>
  volumo <lingvo> <statuso> <teksto>
  eldono x x <teksto>
  pagho  x x <teksto>
  jaro   x x <teksto>
  tipoknumero <lingvo> <statuso> <teksto>
  eldonanto <lingvo> <statuso> <teksto>
  loko      <lingvo> <statuso> <teksto>
  isbn      x x <teksto>
  issn      x x <teksto>
  rimarko   <lingvo> <statuso> <teksto>

dokumentfino 1 lafino


Pri la elemento <indeksigebla_teksto>

La nure uzeblaj signoj en la elemento <indeksigebla_teksto> estas:

  abcdefghijklmnopqrstuvwxyz
  ABCDEFGHIJKLMNOPQRSTUVWXYZ
  0123456789
  . , ; : ! ? ' / ( )  -  (spaco)

  \  (por la super/subsignoj)
  [  (por malfermo de etikedo)
  =  (por eno de etikedo)
  ]  (por fermo de etikedo)
Kaj krome ekzistas tri specialaj signoj:
  +  _  {  }

Oni ankau rajtas uzi etikedojn por gramatikajhoj kaj tipografiajhoj (vidu en la Enkonduko) en la elemento <indeksigebla_teksto>.

Per + oni indikas ke la sekvonta vorto au vortparto devus aperi kiel kapo en la indekso. Per _ oni indikas ke ne.

Ekzemple, se la elemento <indeksigebla_teksto> konsistas el chelbetono, ghi aperos en la indekso (kiu nur aperas en la latex-dosiero) nur kiel chelbetono. Sed chel+betono rezultos en du kapoj en la indekso: chel-/ ---betono kaj betono/ chel---.

Ekzemplo por uzo de _ estas lingvoj _de _la mondo. Sen la _ ankau de kaj la aperus kiel kapoj en la indekso. La programo chiam indeksigas chiujn apartajn vorojn (kaj pro tio la +-signo ne nepre devas aperi jhus antau chiu vorto).

Per la paro { } oni indikas alternativan formon de la antaua vorto au vortparto. Ekzemple, cellen{cel}+beton aperos en la indekso, kiel cel/ cellenbeton kaj beton/ cellen---.

Specialajho estas {---}. Per ghi oni povas indiki ke temas pri prefiks(oid)o au sufiks(oid)o. Ekzempe konstru{---}+{---}ilo ighas en la indekso: konstru---/ ---ilo kaj ---ilo/ konstru---.

Alia ekzemplo estas konstru{konstruo}+{---}ilo. El ghi estighas: konstruo/ konstruilo kaj ---ilo/ konstru---.

Per +{abc} oni aldonas indeksindajhon. Ekzempe martelo +{konstruilo} ighas en la indekso: martelo kaj konstruilo/ martelo.

Per abc+def{+} oni ordonas ke def ricevu majusklon. En la indekso do aperos: abcdef kaj Def/ abc---.

Interpunkcio estas ignorata. Ekzemple abc, def _kaj ghi donos abc/ ---, def kaj ghi. Sed rondaj krampoj estas rigardataj kiel literoj, do tajpu _(abc) kiam ghi ne devas esti indeksata, kaj tajpu _(+abc_) kiam ghi jes devas esti indeksata.

Eblas ankau uzi literetikedojn: +[Cn=][Ce=][Ct=]. Chi-foje la + ne estu forgesata (temas pri portempa nereguleco en la programo).

Simboloj kiel [minus=] kaj unikodetikedoj estas ignorataj dum alfabetordigo de la indekso. Vico de ili unu post la alia estas simpligata per nur unu apero de abstrakta etikedo por ajna simbolo. Ankau tipografiaj etikedoj ([s]...[=s]) kaj etikedoj por formuloj estas ignorataj en alfabetordigo.


Aliaj difinoj...

Verki manlibro de iu komputila lingvajho, char tio fakte estas la strukturo de baza dosiero, estas teda afero. Supre mi menciis la plej gravajn aferojn. Difinoj kiuj aperas en la Perl-modulo unicodize.pm, ankau validas por la formato de la baza dosiero.


Sintakso

Por la sintaksaj reguloj mi uzas jenan notan sistemon. La signaj unuoj estas indikataj per hoketoj <...>. La signon | signifas au. La signo := signifas ighas. Inter " kaj " mi metas signo(j)n kiuj tiel devas aperi. Simpla logika grupigho estas indikita per ( kaj ). Ne limigata ripetigho de la jhus antaua unuo au grupo estas indikata per (...). Inter rektaj krampoj [ kaj ] metighas evt. unuoj kaj grupoj.

<speciala_signo> := "%"

     La <speciala_signo> ne rajtas aperi ekster latex-aj au
     html-aj medioj (= chirkauitaj de speficaj <bloko>-j).

     Ghi utilas por provizore malvidebligi (1) tekston dum
     sherchado kaj (2) kadritajn latex/html-ajhojn dum
     prilaborado de la cetera baza formato al html-a au latex-a
     formato. La malvidebligo realighas per %xx kun xx la
     16-uma cifero de la signo.

<spaco> := " "

<spacoj> := <spaco> (...)

<interpunkciilo> := "." | "," | ";" | ":" | "!" | "?" | "'" | "/" | "(" |
                          ")" | "-" | "--" | "---"

<streketo> := "-"

<punkto> := "."

<cifero> := "0" | "1" | "2" .... "9"

<minusklo> := "a" | "b" | "c"  .... "z"

<majusklo> := "A" | "B" | "C"  .... "Z"

<latinlitero> := <minusklo> | <majusklo>

<literetikedo> :=   ( "[" <alfabetnomo> <liternomo> "=]" )
                  | ( "[U" <dekumaunikodonumero> "=]" )
                  | ( "[Ux" <sesdekumaunikodonumero> "=]" )

   <alfabetnomo> := <majusklo>

               (Ne povas esti "U".)

   <liternomo> :=   ( <majusklo> ( <minusklo> | <cifero> ) (...) )
                  | ( <minusklo> | <cifero> ) (...)

               (Notu ke nur la unua signo de <liternomo>
               estas majuskla, se temas pri majusklo.)

   <dekumaunikodonumero> := <cifero> (...)

   <sesdekumaunikodonumero> := ( <cifero> | "A" | "B" |
                                 "C" | "D" | "E" | "F" | "a" | "b" |
                                 "c" | "d" | "e" | "f" ) (...)

   Ekzemploj: [U1234=]
              [Galfa=]   (greka alfa)
              [GAlfa=]   (greka Alfa, majuskla)
              [Csh=]     (cirila sh)
              [CSh=]     (cirila SH, majuskla)

<kromsigno> := ( "\" ( "a" | "g" | "e" | "U" | "t" | "l" | "p" |
                       "u" | "v" | "H" | "c" | "b" | "d" | "r" |
                       "x" | "s" | "?" )
               )

<disigsigno> := "\-"

<indekssigno> := "+" | "_" | "{" | "}" | "^"

<nomindekssigno> := "#" 

   (por indiki ke venonta vorto estas parto de la de la familia nomo
   en autorlisto) 

<persondisigosigno> := "+" 

   (por disigi personojn en autorlisto)

<sublinio> := "_"

<vortsigno> :=   ( [ <kromsigno> ] <latinlitero> )
               | ( [ <kromsigno> ] <literetikedo> )
               | <cifero>

<etikedosigno> := <latinlitero> | "?" | "!"

<etikedo> :=   ( "[" <etikedosigno> (...) "=]" )
             | ( "[" <etikedosigno> (...) "]" )
             | ( "[=" <etikedosigno> (...) "=]" )
             | ( "[=" <etikedosigno> (...) "]" )

<referkodo> := ( <latinlitero> | <cifero> | <sublinio> ) (...) 

<indeksigebla_teksto> := ( <etikedo> | <vortsigno> |
                           <indekssigno> | <spaco> |
                           <interpunkciilo> |
                           <disigsigno> ) (...)

<indeksigebla_teksto2> := <teksto> "!" ( <teksto> |
                          "[anstatau=]" | "[match]" | "[=match]" |
			  "[ekkrisigno=]" ) (...)

<teksto> := ( <etikedo> | <vortsigno> | <spaco> |
              <interpunkciilo> | <disigsigno> ) (...)

<statuso> := "1"

<lingvo> := <minusklo> <minusklo>

   (ISO-kodo por la uzata lingvo)

<nivelo> := <cifero> (...)

<numero> := <cifero> ( <cifero> | "." ) (...)

<numeroj> := ( <numero> <spaco> ) (...)

   (La unua numero estas la plej aktuala.)

<artikolo> := "artikolo" <spacoj> <statuso> <spacoj> <referkodo> <RET>
              "  esprimo" <spacoj> <lingvo> <spacoj> <statuso> <spacoj> <indeksigebla_teksto> <RET>
              "  esprimo" <spacoj> <lingvo> <spacoj> <statuso> <spacoj> <indeksigebla_teksto> <RET>

   kaj tiel plu (vidu super che "Strukturo de la baza
   dosiero") ...

   <RET> signafas riturno (ascii 13).


(c) junio 2002, Fabien van Mook