BME Híradástechnika Tanszék
Üzleti Adatbiztonság Labor
Tihanyi Sándor
V. Info

A LaTeX beépített magyar nyelv támogatásának vizsgálata

A LaTeX disztribúciók (pl. teTeX Linux alatt és emTeX DOS/Windows/OS2 alatt) ma már tartalmaznak angoltól különböző nyelvek támogatását.

Ez a támogatás vonatkozik:

Én a magyar nyelvű dokumentumkészítés lehetőségeit vizsgáltam meg. Az előbb említett beépített támogatás megvan és használható a magyar nyelv esetében is, azonban további kiegészítésre, bővítésre szorul.

A továbbiakban a teTeX-1.0 LaTeX csomag beállítását és használatát fogom bemutatni. Feltételezem, hogy a csomag a /usr/share/texmf/ könyvtárban foglal helyet.

A magyar elválasztás használatának beállítása

A teTeX disztribúció feltelepítésekor legtöbbször az angol, német és francia nyelv elválasztásának használata van belefordítva a LaTeX és a Babel csomag makrói közé.

A magyar elválasztás engedélyezéséhez a következő feladatokat kell végrehajtani:

  1. Az elválasztásokat tartalmazó fájlban (/usr/share/texmf/tex/generic/config/language.dat) távolítsuk el a kommentezést (% jel) a
    %magyar huhyph.tex
    
    sor elől. Ha nincs ilyen sor, akkor be kell írni, ilyenkor célszerű megnézni, hogy a
    /usr/share/texmf/tex/generic/hyphen/
    
    könyvtárban megvan-e egyáltalán a huhyph.tex állomány!
    (Ha más nyelvek elválasztását is szeretnénk használni, akkor hasonlóan kell eljárni.)

  2. Fordíttasuk újra a makrókat:
    cd /usr/share/texmf
    initex 'latex.ltx \dump'
    
    A keletkező fájlok:
    /usr/share/texmf/latex.fmt
    (az újrafordított (La)TeX progi -- az új elválasztás miatt kell)
    /usr/share/texmf/latex.log
    (a TeX fordítás naplófájlja, nem mindig keletkezik)
    /usr/share/texmf/texsys.aux
    (utolsó TeX fordítás ideje van benne)

  3. Az szükséges fájlok elhelyezése a szokott helyen:
    cd /usr/share/texmf/web2c
    mkdir old
    mv latex.fmt latex.log old/	# Biztonsági másolat a régiről
    cd /usr/share/texmf
    mv latex.fmt latex.log /usr/share/texmf/web2c/
    
  4. Érdemes lefuttatni a texhash programot. Ez újraépíti a tetex által használt ls-lR adatbázist az elérhető dolgokról. (pl. ha valamilyen fontot nem talál meg a LaTeX vagy az xdvi)

Generált szövegek magyarítása és egyéb kiegészítések

Ha a Babel csomagot használjuk, lehetőségünk van angoltól eltérő nyelvek sajátosságait kihasználni. (Lehet több nyelven írt dokumentumot is készíteni, de ezzel itt nem foglalkozom.) Minden támogatott nyelvhez található a csomagban elválasztási szabályokat tartalmazó, illetve az automatikusan generált szövegek adott nyelvű megfelelőjét tartalmazó fájl.

A magyar nyelv esetében is ez a helyzet. A megfelelő fájl a magyar.ldf.

Lássuk például a generált szövegek fordítását:

Angol Magyar HIBA! Megjegyzés
Preface Előszó    
References Hivatkozások   (article dokumentum-osztályban)
Abstract Kivonat    
Bibliography Irodalomjegyzék   (report és book dokumentum-osztályban)
Chapter Fejezet Fejezet 1  
Appendix Függelék    
Contents Tartalomjegyzék    
List of Figures Ábrák jegyzéke    
List of Tables Táblázatok jegyzéke    
Index Tárgymutató    
Figure ábra ábra 2.1  
Table Táblázat Táblázat 3.4  
Part Rész Rész 1 (article dokumetum-osztályban nincs)
encl Melléklet   (csak letter dokumentum-osztályban)
cc Körlevél-címzettek   (csak letter dokumentum-osztályban)
To Címzett   (csak letter dokumentum-osztályban)
Page oldal    
see Lásd (kisbetűvel kellene)  
see also Lásd még (kisbetűvel kellene)  
Proof Bizonyítás    

(A táblázatban látható kifejezéseken kívül a dátum magyarítását is tartalmazza a magyar.ldf.)

A harmadik oszlopban jelöltem azokat a helyeket, ahol téves a magyarítás.

A probléma az, hogy nem elég a szavakat lefordítani, az egész generált szerkezetet át kell ültetni az adott nyelvre. Így például a ,,Chapter 1''-nek nem ,,Fejezet 1'' a magyar megfelelője, hanem ,,1. fejezet''. (Tagok sorrendjének cseréje és pont elhelyezése a sorszám után.) Hasonló a helyzet az ,,ábra 1.1'' esetében: a helyes az ,,1.1. ábra'' lenne. (Itt az angol megfelelő a ,,Figure 1.1'' volt.) A probléma úgy oldható meg, hogy a Babel csomaghoz tartozó magyar.ldf-et átírjuk, illetve lecseréljük. Szerencsére Bérces József (jozsi@dosc4.mht.bme.hu) megírta a módosításokat, ezzel nem kell törődnünk. (A kibővített magyar.ldf letölthető többek között a http://www.math.bme.hu/latex/magyar/magyar.ldf címről.) Az újabb tetex disztibúciókban (0.9, 1.0) ezt a fájlt használat előtt módosítani kell, mert a LaTeX belső átalakítása miatt a

\declare@shorthand{magyar}{``}{\glqq}
sort nem értelmezi a rendszer (a LaTeX futása hibával leáll) -- tegyünk elé komment jelet (%).

A sor jelentése: az angol felső idézőjelet (két ,,6-os'' alakú felsővessző) feleltesse meg a magyar nyitó idézőjelnek (két ,,9-es'' alakú alsóvessző). Ez csak kényelmi funkció lenne, hiszen a magyar nyelvű LaTeX szövegben két vesszővel jelöljük a nyitó idézőjelet, két szimpla (,,9-es'' alakú) felsővesszővel a záró zárójelet. (A normál kettős felső idézőjel használata (ami a billentyűzeten is szerepel) tipográfiailag nem helyes a magyar nyelvben, helyette használjuk az előbbi módszert!)

A módosított magyar.ldf az eredetihez képest több mindent is tartalmaz. Az első része a kijavított automatikusan generált szövegek megadása, beleértve a dátum magyar formáját (változatlanul), a második blokk az említett sorrend-cserékkel és pont (.) beszúrásokkal foglalkozik. A harmadik rész olyan makrókat definiál, ami megkönnyíti a hivatkozások (főleg számok) névelővel való kiegészítését, ami a kétféle határozott névelő (,,a'' és ,,az'') miatt nem is olyan egyszerű. A makrók fejezet-hivatkozások, oldalhivatkozások, ábrahivatkozások, irodalom-hivatkozások névelős beillesztését teszi lehetővé. A negyedik rész olyan segédeszközt nyújt, amivel a hosszú kettős mássalhangzók helyes elválasztását segíthetjük elő. Ez is magyar sajátosság, és nem mindegy, hogy a ,,vissza'' elválasztva ,,viss-za'' vagy ,,visz-sza''! Ha megjelöljük az ilyen helyeket ,?6-os'' alakú felsővesszővel (angol billentyűzeten az 1-es mellet, magyar billentyűzeten AltGr-7, például ,,vi`ssza''), akkor a makró az elválasztást intéző résznek érthető formára hozza a forrásszöveg ilyen részeit. (Ebben a részben található meg az említett hibát okozó sor is.)

A Babel a nyelvnek megfelelő ldf-fájlt először az aktuális könyvtárban, majd a ,,hivatalos'' helyén keresi, így módunkban áll a mi általunk készített/beszerzett magyar.ldf-et használni, ha a LaTeX forrás könyvtárába helyezzük fordításkor.

Végeredmény: dokumentumkészítés magyar nyelven

Hogyan is néz ki tehát egy magyar dokumentum LaTeX forrása? (Tételezzük fel, hogy Latin-2 kódkészlettel írjuk a dokumentumot.)

Egy rövidke részlet (forráskód-váz) legyen a segítségünkre!

\documentclass[a4paper]{article}	% A4-es papír USLetter helyett (az a default)
\usepackage[magyar]{babel}		% a Babel csomagot a magyar nyelvvel használjuk
\usepackage[latin2]{inputenc}		% Latin-2-es kódolású ez a forrás
\usepackage{t1enc}			% a belső ábrázolás és a kimeneti font-kódolás
					% a T1 kódolás
\usepackage{indentfirst}		% az első bekezdés is behúzott legyen, ne csak a 2-tól
\frenchspacing				% a mondatköz ugyanakkora nagy, mint a szóköz
\setlength{\parskip}{\smallskipamount}	% bekezdések közötti távolság beállítása
					% (gumi-méret: 3pt plus 1pt minus 1 pt)
\title{Cím}				% mi kerüljön a cím részbe?
\date{Dátum}

\begin{document}			% itt kezdődik a dokumentumunk
\maketitle				% először a címrészt beillesztjük

Szöveg\ldots				% Lehet alkotni!

\end{document}				% vége a dokumentumnak és a fájlnak

Különböző formátumú dokumentációk készítése

Az elkészített forrást a latex <forras.tex> paranccsal fordíthatjuk le DVI formátumú kimenetté. Ez xdvi-vel nézhető X Window környezetben. DVI formátumú fájlból a dvips paranccsal tudunk Postscript illetve PDF fájlokat generálni. (Itt kapcsolókkal meg kell adni a papír méretét, kimeneti fájl nevét stb.) Mindkét formátumhoz szükség van a használt fontok PS és Adobe megfelelőjére. Sajnos T1 kódolású kimenet esetén nem áll rendelkezésünkre Adobe fontcsomag-készlet. Megoldás lehet, ha az alap fontok helyett a \usepackage{times} sorral a Times betűkre váltunk, ehhez vannak Adobe fontok is.

(Lehetőség van közvetlen lézernyomtató kimenetet is előállítani a dvilj paranccsal, ezt azonban még nem használtam. Van még számtalan segédprogram a DVI formátum másra átalakítására.)

Létezik segédprogram HTML és RTF formátumra való kódoláshoz, ezt azonban nem DVI kimenetből, hanem az eredeti LaTeX forrásból készítik. A csomagok neve latex2html, latex2rtf. Ezek a csomagok PERL nyelvű (szövegátalakító) modulokból állnak. Főleg az elterjedtebb nyelveket támogatják (angol, német, francia), ezért lehet, hogy magyar nyelvű dokumentumok konvertálásánál nem a várt eredményt kapjuk. A három nyelvet leíró PERL modul alapján el lehetne készíteni a magyar nyelvet támogató változatot is, főleg a kibővített magyar.ldf-beli makrókat kell megírnunk. (Mivel ezek a segédprogramok nem használják a LaTeX-et és a Babel kiegészítést, ezért a magyar.ldf-ben definiált megfeleltetéseket itt is meg kell írni, a nem standard makrókat hasonlóan.)

A latex2html (paraméterezéstől függően) bizonyos logikai egységenként új HTML lapot generál, és kiegészíti navigációs linkekkel, ikonokkal. Így elérhető, hogy pl. fejezetenként léptethető HTML dokumentum-csomagot generáltassunk a segítségével LaTeX forrású publikációnkból.

Felhasznált irodalom, dokumentációk, www-címek


Utolsó módosítás: 2000. április 30. Tihanyi Sándor

Tihanyi.Sandor@ebizlab.hit.bme.hu