% % FILE: hion.hun % %% This file contains Hungarian text in Hungarian LaTeX format, therefore the %% rest of the comment is in Hungarian as well. Sorry. % %% A %% jelek uta1n a1llo1 megjegyze1seket nem kell komolyan venni. Ezt sem. % % Ez a fa1jl a hion program dokumenta1cio1ja1t tartalmazza. A szo2veg % kinyomtata1sa a % hion -l hion (legala1bb 1.7 verzio1) % latex hion % latex hion % parancsokkal to2rte1nik. A keletkezett .dvi fa1jlt minden rendszeren % ma1ske1pp kell papi1rra1 alaki1tani, i1gy ebben nem tudok segi1tse1get % nyu1jtani. % % Persze a hion programot le kell fordi1tani ahhoz, hogy a 'hion -l hion' % parancsot ki lehessen adni, ehhez viszont el kell olvasni a szo2veget, % amihez viszont kell a hion program. (O2rdo2gi ko2r.) Ha ki akarsz jutni % ebbo3l az o2rdo2gi ko2rbo3l, e1s most e1ppen szeretne1d lefordi1tani a % programot, e1s nem a1ll rendelkeze1sedre ennek a dokumenta1cio1nak a % kinyomtatott va1ltozata, akkor keresd meg a % 'bikanyak' % karakter sorozatot (emacs editorban CTRL-S, vi-ban / jel a kerese1s, TC % editorral CTRL-Q F, ne-vel ALT-F a kerese1s, Multi Edit-tel pedig % a1ltala1ban F6 vagy amire e1ppen a1lli1tva van.). % Ott olvashatod a tova1bbi kommenteket, ami minden olyan sor, ami % jellel % kezdo3dik. %------------------------------------------------------------------------------ % Histo1ria: (a hion.hun to2rte1nete) % 1991. a1prilis 22. a dokumenta1cio1 elso3 va1ltozata1nak kiada1sa. Ezuta1n % a histo1ria1ban egy so2te1t u3r ko2vetkezik, ege1szen % addig, ami1g % 1991. ju1lius 30. a histo1ria komment bevezete1sre keru2lt a % dokumenta1cio1ban. % 1991. okto1ber 21. a megva1ltozott eMail ci1met a1ti1rtam, e1s % ezt bei1rtam a histo1ria1ba. % % 1991. november 1. u1j fejezet keru2lt a dokumenta1cio1ba: a % Jo2vo3 u1tja. % Egye1b apro1 va1ltoztata1sok. % 1992. ma1jus 3. Hosszabb kihagya1s uta1n isme1t karbantartom a doksinak % ezt a re1sze1t. % 1992. ju1lius 14. O2sszetett szavak kezele1se1nek doksija. % \documentstyle [12pt] {article} || % megleheto3sen rossz HiOn logo \def\HiOn/{{\rm \hbox{H\kern-.1em\lower-.8ex\hbox{I}\kern -0.2em\lower.7ex \hbox{O}\kern -0.5em\hbox{N}}}} \def\npeldany{50} \def\tpeldany{o2tven} \def\hionversion{2.0} @@ \title{\LARGE{\bf\HiOn/ V\hionversion\ Felhaszna1lo1i Lei1ra1s}} \author{\large{\bf Verha1s Pe1ter}} \date{1994. janua1r 8.} \begin{document} \maketitle \begin{abstract} A \HiOn/ magyar szo2vegek \TeX\ forma1tumra valo1 hoza1sa1t teszi leheto3ve1. A magyar szo2vegben a1talaki1tja az e1kezet jelo2le1st a \TeX\ sza1ma1ra megfelelo3en, e1s bejelo2li a lehetse1ges elva1laszta1si helyeket. A program kimenete a1ltala1ban a \TeX\ sza1ma1ra ke1szu2l. Egy hasonlo1 funkcio1kat ella1to1 kora1bbi program volt az ETEX, amelyet To1th Ga1bor i1rt PASCAL nyelven. A \HiOn/ program az ETEX professziona1lis va1ltozata. \end{abstract} %========================================================================== \typeout{||Hion dokumenta1cio1 fordi1ta1sa kezdo3do2tt...@@} \section{|Mire ke1pes a \HiOn/ ?}@ %%mindenre... %================================ \typeout{||Mire ke1pes a HION ?@@} % A \HiOn/ a1ti1rja a magyar e1kezetes maga1nhangzo1kat a Pro1sze1ki fe1le szabva1ny vagy a Babai fe1le jelo2le1sro3l \TeX\ forma1ra, valamint bejelo2li a \TeX\ sza1ma1ra a magyar nyelvtannak megfelelo3 elva1laszta1si helyeket. A \HiOn/ a bonyolult elva1laszta1si szaba1lyokat is ismeri, i1gy helyesen fogja elva1lasztani az o2sszes magyar szo1t. Ismeri, e1s helyesen va1lasztja el a ch, dz, dzs betu3ket, a hosszu1 o2sszetett ma1ssalhangzo1kat (pe1lda1ul ssz). Ismeri a leggyakoribb magyar igeko2to3ket, e1s helyesen va1lasztja el % A leggyakoribbakat e1s nem a leg\-gyakoribbakat. az igeko2to3s szavakat. A \HiOn/ helyesen va1lasztja el az olyan szavakat is, mint igazsa1g vagy nyolcszor. Ha me1gis rosszul va1lasztana el a \HiOn/ valamilyen szo1t, akkor a szabva1ny \TeX\ jelo2le1ssel meg lehet adni, hogy hol kell elva1lasztani az adott szo1t, vagy a szo1t fel lehet venni a \HiOn/ kive1tel szo1ta1ra1ba, az o2sszetett szavak ko2ze1. A \HiOn/ tiszteletben tartja a \TeX\ program saja1t parancsait, e1s va1ltozatlanul hagyja azokat a szavakat, amelyek backslash karaktert tartalmaznak. Opcio1val kapcsolhato1an felismeri a \LaTeX\ szekvencia1t, i1gy azokat sem kell megve1deni az elva1laszta1sto1l. Felismeri a \TeX\ nem backslash karakterrel kezdo3do3 kulcsszavait, e1s ezeket va1ltozatlanul hagyja. A \HiOn/ tiszteletben tartja a \TeX\ matematikai mo1dja1t e1s a {\tt \$} illetve {\tt \$\$} ko2zo2tt levo3 re1szeket va1ltozatlanul hagyja. Az elva1laszta1s bejelo2le1se, illetve az e1kezetek a1talaki1ta1sa kapcsolhato1 a szo2vegben a {\tt @} e1s a {\tt |||@@} karakterekkel. A \LaTeX\ opcio1 haszna1latakor a \HiOn/ felismeri a \verb+\( \)+ e1s \verb+\[ \]+ matematikai mo1dokat. A \HiOn/ felismeri az IBM--PC e1s a DEC kiterjesztett karakterke1szleteit is, amit aka1r keverve a szabva1ny vagy Babai fe1le jelo2le1ssel lehet haszna1lni. A \HiOn/ arra is hajlando1, hogy egy szo2vegbo3l kiirtsa az e1kezeteket, vagy hogy \TeX\ forma1ro1l szabva1ny forma1ra hozza az e1kezetek jelo2le1se1t. A \HiOn/ konfigura1lhato1, e1s a mu3ko2de1se opcio1kkal veze1relheto3. A \HiOn/ C nyelven lett megi1rva e1s lefordi1thato1 UNIX, VMS e1s MSDOS opera1cio1s rendszereken. Valo1szi1nu3leg egye1b rendszereken is lefordul, de csak ezeken lett eddig kipro1ba1lva. \section{|Mit NEM tud a \HiOn/?}@ %%Hu2lye ke1rde1s. A hion mindent tud. %=============================== \typeout{||Mit NEM tud a HION?@@} % A \HiOn/ nem ke1pes e1kezetek ne1lku2l i1rt barba1r szo2vegbe az e1kezeteket belerakni. I1gy aki e1kezetek ne1lku2l i1r magyarul, arra sze1gyen, gyala1zat e1s Kornai Andra1s minden a1tka. A \HiOn/ nem ke1pes 200 karakterne1l hosszabb sorokat kezelni. Ha valakinek erre lenne szu2kse1ge, akkor i1rja a1t a programban az {\tt SRL} makro1 e1rte1ke1t ki1va1nalmainak megfelelo3en. A \HiOn/ nem ke1pes 200 karakterne1l hosszabb fa1jl nevek kezele1se1re. Ha valakinek erre lenne szu2kse1ge, akkor i1rja a1t a programban a {\tt FNL} makro1 e1rte1ke1t ki1va1nalmainak megfelelo3en. A \HiOn/ 1.7-ne1l kora1bbi verzio1i nem ismerik fel az o2sszetett szavakat.%%De az 1.7 verzio1 ma1r MINDENT TUD!!! \section{|Fa1jlok}@ %%E1n fa1jlok, te fa1jlsz o3 fa1jlik \label{FILIST} %================== \typeout{||Fa1jlok@@} % A \HiOn/ programcsomag a ko2vetkezo3 fa1jlokbo1l a1ll: \begin{itemize} \item {\tt hion.c} a \HiOn/ program szo2vege. \item {\tt hion.hun} a \HiOn/ lei1ra1sa \item {\tt hion.hlp} a \HiOn/ ``help'' fa1jlja VMS opera1cio1s rendszer ala1. \item {\tt reg.hun} felhaszna1lo1i regisztra1cio1s lap {\tt .hun} foma1tumban leve1lben valo1 regisztra1la1shoz. (\ref{JOGOK} fejezet) \item {\tt reg.txt} felhaszna1lo1i regisztra1cio1s lap {\tt .txt} forma1tumban eMailen valo1 regisztra1la1shoz. (\ref{JOGOK} fejezet) \item {\tt kiad.hun} kiadva1ny regisztra1cio1s lap {\tt .hun} forma1tumban leve1lben valo1 regisztra1la1shoz. (\ref{JOGOK} fejezet) \item {\tt kiad.txt} kiadva1ny regisztra1cio1s lap {\tt .txt} forma1tumban eMailen valo1 regisztra1la1shoz. (\ref{JOGOK} fejezet) \item {\tt hion.dct} az o2sszetett szavak kive1telszo1ta1ra, amit a {\tt dicc} vagy a {\tt hion -5} paranccsal kell bina1ris forma1ra hozni. (\ref{COMPWORDS} fejezet) \end{itemize} Egyes csomagok tartalmazhatnak me1g ma1s fa1jlokat, de ezek mind automatikusan genera1lhato1ak a fenti fa1jlokbo1l: \begin{itemize} \item {\tt hion.exe} IBM-PC futtathato1 fa1jl, a {\tt hion.c} lefordi1tott va1ltozata. \item {\tt hion2.exe} IBM-PC futtathato1 fa1jl, a {\tt hion.c} lefordi1tott va1ltozata, 802(3,4\dots)86 processzoros ge1pekre. Ha valamelyik ilyen processzoros ge1pen ez a va1ltozat nem mu3ko2dne, a hion.exe aze1rt kell, hogy mu3ko2djo2n. \item {\tt hion.dcb} a {\tt hion.dct} fa1lj a1talaki1tva bina1ris forma1tumra a {\tt hion -5} paranccsal. \end{itemize} \section{|Hogyan kell fordi1tani?}@ %% kinyitod a sza1dat, e1s ahogy a % %% torkodon kife1r %================================ %% 'bikanyak' bikonyak % Ha az editorban u1gy jutotta1l ide, hogy a 'bikanyak' % karakter sorozatot kerested, e1s a programot akarod lefordi1tani, akkor % kezd el olvasni a szo2veget. Azokat a szavakat, amelyek \ jellel % kezdo3dnek, felejtsd el. Ezek a LaTeX-nek szo1lnak. Ugyancsak ne to2ro3dj % a {, }. |, @ jelekkel. A1ltala1nossa1gban ba1nj u1gy a szo2veggel, hogy % amit nem e1rtesz, nem magyarul van, azt tekintsd u1gy mintha ott sem % lenne. Olvasd a szo2veget ege1szen addig a sorig, aminek a tartalma: % % '% A programot most ma1r le kell tudnod fordi1tani.' % \typeout{||Hogyan kell fordi1tani?@@} % A \HiOn/-t u1gy kell lefordi1tani, mint ba1rmilyen ma1s C programot, i1gy ha ebben nagy gyakorlatod van, akkor ezt a fejezetet a1tugorhatod. Az 1.7 illetve ke1so3bbi verzio1k MSDOS alatt csak {\tt HUGE} modellben fordulnak le jo1l. \subsection{|UNIX alatt}@ %%Unix alatt? Nem lehet gond. %---------------------- A {\tt|| cc -o hion hion.c}@@ paranccsal lehet lefordi1tani a programot. Minden hibajelze1s ne1lku2l le kell hogy forduljon minden rendszeren. Ezek uta1n puha csatola1sokat lehet le1trehozni a ve1grehajthato1 fa1jlhoz a \begin{verbatim}|| ln -s hion huon ln -s hion huoff ln -s hion numoff \end{verbatim}@@ parancsokkal. A csatola1sokat nem felte1tlenu2l kell le1trehozni, a program mu3ko2de1se1t opcio1kkal is lehet szaba1lyozni. (La1sd a \ref{OPCIO1K}. fejezetet!) \subsection{|VMS alatt}@ %%van olyan o3ru2lt aki ezt haszna1lja? Ja igen. E1n. %--------------------- A {\tt|| CC~HION}@@ majd {\tt|| LINK~HION}@@ parancsokkal hozhatjuk le1tre az exe fa1jlt. Egyes rendszereken specia1lis, a C nyelvhez tartozo1 ko2nyvta1rakat is hozza1 kell fu3zni a programhoz. Ha a {\tt LINK} parancs hibajelze1st ad, akkor pro1ba1ljad meg a {\tt|| LINK~HION,SYS\$SHARE:VAXCRTL.OLB/LIB}@@ parancsot, e1s ha ez sem segi1t, akkor meg kell ke1rdezni a rendszergazda1t, hogy hogyan kell C programot ``linkelni''. Ezek uta1n, aze1rt, hogy a parancssorba argumentumokat lehessen megadni a program sza1ma1ra, ki kell adni a \begin{verbatim}|| HION :== "$ $DRIVE[DIRECTORY]HION.EXE" \end{verbatim}@@ parancsot. A parancsban a {\tt|| DRIVE}@@ e1s a {\tt|| DIRECTORY}@@ ne1v rendszerenke1nt ma1s e1s ma1s. A {\tt|| DRIVE}@@ e1rtelemszeru3en az a meghajto1, ahol a munkateru2leted van, a {\tt|| DIRECTORY}@@ pedig az a direktori ahol a \HiOn/ futtathato1 ko1dja1t el akarod helyezni.\footnote{Ha ve1gke1pp nem tudod, hogy mit kell bei1rni ennek a ke1t szo1nak a helye1re, akkor add ki a {\tt|| SHOW DEFAULT}@@ parancsot. Amit ez a parancs kii1r, azt kell a {\tt|| \$DRIVE[DIRECTORY]}@@ helye1re i1rni.} Mivel az i1gy definia1lt logikai ne1v csak addig e1rve1nyes, ami1g ki nem le1pu2nk a rendszerbo3l, eze1rt ezt a parancssort e1rdemes a {\tt|| LOGIN.COM}@@ fa1jlban elhelyezni. Ha abban a direktoriban helyezed el a futtathato1 ``image'' fa1jlt, amelyikbe a bejelentkeze1s uta1n keru2lsz, akkor a {\tt|| \$DRIVE[DIRECTORY]}@@ helyett haszna1lhatod a {\tt|| SYS\$LOGIN:}@@ logikai nevet is (e1s ne hagyd le a ve1ge1ro3l a ketto3spontot). Ha van a lemezen bo3ven helyed (ezt a {\tt|| SHOW~QUOTA}@@ paranccsal elleno3rizheted), akkor az exe fa1jlt a1tma1solhatod {\tt HUOFF.EXE}, {\tt HUON.EXE} e1s {\tt NUMOFF.EXE} fa1jlnevekre, e1s ezekhez is definia1lhatsz logikai nevet. Ez azonban nem szu2kse1ges, mert a program mu3ko2de1se opcio1kkal is veze1relheto3. (La1sd a \ref{OPCIO1K}. fejzetet!) Megteheto3 az is, hogy a \begin{verbatim}|| SET FILE /ENTER=HUOFF.EXE HION.EXE SET FILE /ENTER=NUMOFF.EXE HION.EXE SET FILE /ENTER=HUON.EXE HION.EXE \end{verbatim}@@ parancsokkal plusz neveket rendelu2nk a futatthato1 fa1jlhoz, e1s i1gy ku2lo2n helyfoglala1s ne1lku2l (kive1ve a direktori bejegyze1s helye1t) ele1rhetju2k azt mintha ezekre a nevekre ma1soltuk volna a1t a fa1jlokat. Ezekkel az extra bejegyze1sekkel azonban csi1nja1n kell ba1nni, mert a to2rle1su2k a {\tt| SET FILE /REMOVE}@ paranccsal to2rte1nik, e1s ha egy fa1jl o2sszes neve1t kito2ro2ltu2k ezzel a paranccsal, akkor a fa1jl maga ottmarad a lemezen, foglalja a helyet, e1s kito2ro2lhetetlen. Teha1t a to2rle1s sora1n az egyik ne1vvel a {\tt| DELETE}@ parancsot kell haszna1lni. Ha me1gis megto2rte1nt a baj, akkor meg kell ke1rni valakit aki SYSTEM privile1giumokkal rendelkezik, hogy tegye rendbe a lemezt az {\tt| ANALYZE /DISK}@ paranccsal. A DEC manua1l aja1nlata szerint a {\tt| SET FILE /ENTER}@ e1s a {\tt| SET FILE /REMOVE}@ parancsokat soha ne haszna1ljuk.\footnote{Akkor meg minek vannak?} \subsection{|MS--DOS alatt}@ %%Igaz, oprendszerekro3l volt szo1, de aze1rt... %-------------------------- Ha a csomagban benne van a {\tt hion.exe} e1s a {\tt hion2.exe} fa1jl, akkor nem kell lefordi1tani. Ha AT ge1pen dolgozol, akkor pro1ba1ld meg a {\tt hion2.exe} fa1jlt haszna1lni. Ba1rmelyik C fordi1to1val le kell, hogy forduljon a program. Mivel az 1.7 verzio1 felett egy nagy szo1ta1rat is kezel a program, eze1rt aja1nlatos valamilyen nagy memo1ria modellt, leheto3leg {\tt HUGE}, haszna1lni. E1n a Borland ce1g TURBO C++ fordi1to1ja1nak 1.0 verzio1ja1t haszna1ltam, valamint MSC 5.0-t, de az MSC-vel fordi1tott va1ltozat nem mu3ko2do2tt. Elvileg le kell, hogy forduljon kora1bbi TC verzio1kkal is. Ekkor, mivel a forra1s fa1jl hosszabb, mint 64KB, eze1rt vagy a TCC.EXE programot kell haszna1lni, vagy pedig egy kis egysoros \begin{verbatim}|| #include "hion.c" \end{verbatim}@@ programot kell lefordi1ttatni a {\tt TC.EXE} programmal.\footnote{E1n nem pro1ba1ltam, de a1lli1to1lag egy opcio1 haszna1lata1val ra1 lehet bi1rni a {\tt|| TC}@@-t arra, hogy haszna1lja a kiterjesztett memo1ria1t, e1s akkor elbi1rja a 64KB-na1l hosszabb fa1jlokat is.} (Ne felejtsd el, hogy ekkor a keletkezett fa1jl nem {\tt HION.EXE}, hanem pl. {\tt NONAME.EXE} lesz. Ezt ma1sold a1t a {\tt HION.EXE} ne1vre, e1s az eredetit to2ro2ld ki.) A programot szerkeszteni pe1lda1ul az {\tt NE.COM} programmal lehet. Ha minden warningot bekapcsolsz, akkor o2sszesen 172 darabot fog genera1lni a TC 2.0 (\HiOn/ 1.3 verzio1). Ha zavar, akkor a ko2vetkezo3 warningokat kapcsold ki: \begin{verbatim}|| Alt-o / Compiler / Errors / Less common errors / F , E Call to function with no prototype No declaration for function 'ident' Alt-o / Compiler / Errors / Common errors / A , B , G Function should return a value Unreachable code Possibly incorrect assignment \end{verbatim}@@ Ezek uta1n nem szabad, hogy ba1rmife1le hibajelze1st adjon a TC 2.0. Ha van ele1g helyed a lemezen, akkor a programot a1tma1solhatod a {\tt HUOFF.EXE}, {\tt HUON.EXE} e1s {\tt NUMOFF.EXE} fa1jlnevekre. Ez azonban nem szu2kse1ges, mert a program mu3ko2de1se opcio1kkal is veze1relheto3. (La1sd a \ref{OPCIO1K}. fejzetet!) MS--DOS alatt nincsen szabva1nyos leheto3se1g csatola1sok le1trehoza1sa1ra u1gy mint UNIX alatt, e1s me1g u1gy sem mint VMS alatt. % A programot most ma1r le kell tudnod fordi1tani. \section{|A program elindi1ta1sa}@ %%Kihu1zod a szivato1t, ... %=============================== %% a HiOn automata szivato1s :-) \typeout{||A program elindi1ta1sa@@} % Ha a programot lefordi1tottad e1s az opera1cio1s rendszernek megfelelo3en mo1dosi1tottad a {\tt LOGIN.COM} fa1jlt, illetve a1tma1soltad a programot, vagy le1trehoztad a puha csatola1sokat, akkor elindi1ta1sa a neve1nek ({\tt hion}) bei1ra1sa1val to2rte1nik. A program megne1zi a nulladik argumentumot (ami a fa1jl neve), e1s innen tudja, hogy mit kell tennie. Ha nem ke1szi1tettu2nk annyi ma1solatot az exe fa1jlbo1l, mint aha1ny funkcio1 van, akkor az {\tt|| 1, 2, 3, 4}@@ e1s {\tt 5} opcio1kkal ira1nyi1thatjuk a konverzio1t. Opcio1t \verb+-+ vagy \verb+/+ karakter elo3z meg. Opcio1k a parancssorban ba1rhol elhelyezkedhetnek. Opcio1kat o2ssze is i1rhatunk, teha1t nem kell felte1tlenu2l \verb+-2 -o+-t i1rni, hanem i1rhatunk egyszeru3en \verb+-2o+-t. Azokat az argumentumokat, amelyeket nem elo3z meg \verb'-' illetve \verb'/' a program fa1jl ne1vnek tekinti. Elso3 a bemeneti fa1jl neve. Ha nincs megadva kiterjeszte1s, \verb+.hun+, \verb+.txt+ vagy \verb+.tex+ kiterjeszte1st kap a fa1jl. Ma1sodik parame1ter a kimeneti fa1jl neve. Ezt nem kell megadni. Ha nem adjuk meg, akkor a program ugyanazt a nevet haszna1lja mint a bemeneti fa1jl neve, de a konverzio1 ira1nya1to1l fu2ggo3en \verb+.txt+ vagy \verb+.tex+ kiterjeszte1ssel. Ha a ma1sodikke1nt megadott fa1jlne1v elso3 karaktere pont, akkor ezt u1gy e1rtelmezi a program, hogy a kimeneti fa1jlne1vnek csak a kiterjeszte1se1t adjuk meg, e1s ekkor maga a ne1v ugyan az lesz, mint a bemeneti fa1jl neve, terme1szetesen a megadott kiterjeszte1ssel. Ha a kimeneti e1s a bemeneti fa1j neve megegyezik, akkor a program a VMS va1ltozatok kive1tele1vel, lea1ll. VMS alatt ekkor a kimeneti fa1jl neve ugyanaz lesz, mint a bemeneti fa1jlne1v, megegyeznek a kiterjeszte1sek is, e1s a fa1jl egy u1jabb verzio1ja jo2n letre. Ez nem okoz helyrehozhatatlan hiba1t. MSDOS e1s UNIX rendszer alatt azonban a kimeneti fa1jl megnyita1sa egyben to2ro2lne1 a bemeneti fa1jlt, e1s egyre1szt nem mu3ko2dne a program bemenet hi1ja1n, ma1sre1szt megsemmisu2l egy nehezen reproduka1lhato1 fa1jl. Egye1bke1nt ez a fajta haszna1lat VMS alatt is csak ritka1n indokolt, eze1rt VMS alatt is egy figyelmeztete1st ad a program. \section{|A program haszna1lata}@ %%Kinek-kinek tetsze1se e1s perverz % %%hajlamai szerint %================================ \typeout{||A program haszna1lata@@} % A program forra1sszo2vege1t tartsd biztonsa1gos helyen, pe1lda1ul egy IBM--PC lemezen a pa1nce1lszekre1nyben, 20 me1terre a fo2ld alatt. Ha ez nincs, akkor egy {\sl direktori} is megteszi. A lefordi1tott va1ltozatot tedd abba a direktoriba, ahol a magyar \TeX\ fa1jlok vannak, vagy oda, ahova az egye1b |utility@ programokat szoktad tenni. A magyar \TeX\ fa1jloknak add a {\tt .hun} kiterjeszte1st, e1s i1rd o3ket az 123 jelo2le1ssel, vagy az IBM PC e1kezetes karaktereivel, vagy ba1rmilyen ma1s e1kezetekkel, gusztusod, e1s leheto3se1geid szerint. Ezekben a fa1jlokban ve1gezz minden javi1ta1st e1s a genera1lt \TeX\ fa1jlokat csak mint ko2zbenso3 fa1jlokat haszna1ld. Ne tartsa1l angol nyelvu3, {\tt .tex} kiterjeszte1su3 fa1jlokat abban a direktoriban, ahol a {\tt .hun} fa1jlok vannak, mert menthetetlenu2l le fogod egyszer o3ket to2ro2lni egy {\tt|| rm *.tex}@@ vagy jobb esetben csak egy reverzibilisebb DOS {\tt|| DEL *.TEX}@@ paranccsal. Akkor majd gondolj arra, hogy e1n szo1ltam, e1s ne engem okolj\footnote{Mit gondolsz e1n ezt honnan tudom?}! \section{|Opcio1k}@ %%Lehet, hogy a fa1jl meg a ba1jt minta1ja1ra ezt is % %%nemsoka1ra opcijo1-nak kell i1rni. \label{OPCIO1K} %================== \typeout{||Opcio1k@@} A \HiOn/ mu3ko2de1se1t opcio1kkal lehet veze1relni. Az opcio1kat a parancssorba a program neve uta1n kell i1rni. Opcio1k e1s be- illetve kimeneti fa1jl nevek keveredhetnek, az opcio1knak nem felte1tlenu2l kell megelo3zniu2k a fa1jlneveket. Mivel egy kive1tele1vel nincsen olyan opcio1, amelyiknek egyne1l to2bb karakteres argumentuma lenne, eze1rt az opcio1k o2sszei1rhato1k. A legto2bb opcio1 be, vagy kikapcsol valamilyen funkcio1t. Ha egy ilyen opcio1 ke1tszer szerepel, akkor az olyan mintha egyszer sem szerepelne. Az elso3 elo3fordula1s ugyanis be kapcsolja a funkcio1t, a ma1sodik pedig kikapcsolja, vagy e1ppen fordi1tva, atto1l fu2ggo3en, hogy az adott funkcio1nak mi az alaphelyzete. Ennek az opcio1kezele1snek, ami az 1.6 verzio1ban lett bevezetve, az az e1rtelme, hogy ha a {\tt hion\_opt} ko2rnyezeti va1ltozo1ban pe1lda1ul bea1lli1tjuk az {\tt -l} opcio1t, akkor ha me1gsem \LaTeX\ hanem \TeX\ szo2veget akarunk feldolgozni, ne kelljen to2ro2lni a ko2rnyezeti va1ltozo1t, csupa1n alkalmazni kell a parancssorban is a {\tt -l} opcio1t. I1gy a ko2rnyezeti va1ltozo1 haszna1lata1val a1t lehet a1lli1tani a default e1rte1keket. \def\PM#1{$\pm$#1} Azok a parancssor argumentumok, amelyek nem opcio1k, e1s nem is egy opcio1 parame1terei fa1jl nevek. A sorban elso3 ilyen ne1v a bemeno3 fa1jl neve, a ma1sodik a kimeno3 fa1jl neve. A {\tt dicc} mu3ko2de1st kive1ve mindig meg kell adni a bemeneti fa1jl neve1t. Ebben a lei1ra1sban azokat az opcio1 karaktereket haszna1ljuk, amelyeket a program kibocsa1tott va1ltozata haszna1l, azonban ezeket ba1rki a sza1ja i1ze szerint ko2nnyen a1ti1rhat, mert minden opcio1 betu3 pontosan egy helyen szerepel csak a programban. Azok az opcio1k, amelyek ki-, be-kapcsolo1ke1nt mu3ko2dnek \PM\ jellel vannak megjelo2lve. \begin{itemize} \item[1] Az elve1gzendo3 konverzio1 HUON, azaz numerikus e1kezetekro3l \TeX\ forma1ra. Ez a konverzio1 nem jelo2li be az elva1laszta1si helyeket, {\bf csak} az e1kezeteket i1rja a1t \TeX, vagy egye1b forma1ra. Nem veszi figyelembe a matematikai mo1dokat, vagy a megjegyze1seket. Mindent a1talaki1t. % \item[2] Az elve1gzendo3 konverzio1 HUOFF, azaz \TeX\ forma1ro1l numerikus e1kezetekre. % \item[3] Az elve1gzendo3 funkcio1 NUMOFF, azaz a numerikus e1kezetek kiirta1sa, e1s a szo2veg barba1r forma1ra hoza1sa. Enne1l a konverzio1na1l nem veszu2nk ki minden sza1mjegyet a szo2vegbo3l, csak azokat, amelyek e1kezetke1nt szerepelnek. % \item[4] Az elve1gzendo3 funkcio1 \HiOn/, azaz az e1kezetes betu3k \TeX\ forma1ra hoza1sa, valamint az elva1laszta1sok bejelo2le1se. % \item[5] Az elve1gzendo3 funkcio1 DICC, azaz a {\tt hion.dct} text forma1tumu1 szo1ta1r fa1jlt a1talaki1ta1sa a {\tt hion.dcb} bina1ris forma1tumra. % \item[\PM \#] Ezt az opcio1t haszna1lva a \HiOn/ mielo3tt nekia1llna dolgozni megvizsga1lja, hogy a genera1lando1 fa1jl le1tezik-e ma1r, e1s ha igen, akkor nem u1jabb-e, mint a forra1sfa1jl. Ekkor ugyanis az esetek to2bbse1ge1ben nem kell u1jrafordi1tani a {\tt hun} fa1jlt {\tt tex} forma1tumra. Ez a funkcio1 a UNIX {\tt make} vagy a VMS {\tt mms}-hez hasonlo1 funkcio1t adhat a \HiOn/-nak. Ha to2bb forra1sfa1jlbo1l a1ll egy szo2veg, akkor mindegyiket le kell fordi1tani a \HiOn/-nal. Ehhez haszna1lhato1 egy DOS {\tt BAT}, VMS {\tt COM} vagy UNIX shell fa1jl. Ez viszont minden egyes fa1jlt u1jrafordi1t, akkor is ha egy fa1jl nem lett va1ltoztatva. Az opcio1 haszna1lata1val ez az u1jrafordi1ta1s elkeru2lheto3. % \item[\PM d] A DICC funkcio1 a keletkezo3 {\tt hion.dcb} fa1jlba a bina1ris fa1jl struktu1ra1ja1nak megfelelo3 olvashato1 informa1cio1t i1r. % \item[\PM r] Ezt az opcio1t haszna1lva a \HiOn/ nem pro1ba1lja meg beto2lteni a kive1tel szo1ta1r bina1ris va1ltozata1t, e1s az o2sszetett szavak egy re1sze1t rosszul va1lasztja el. % \item[\PM w] Figyelmezteto3 u2zenetek kikapcsola1sa. A program akkor ku2ld ilyen u2zenetet, ha pe1lda1ul egy a{}3 vagy i{}3 betu3vel tala1lkozik. Az 1.3 verzio1 elo3tt ez az opcio1 bekapcsolta a hiabu2zeneteket. Innen kezdve az alape1rtelmeze1s szerint a figyelmeztete1sek kii1ra1sra keru2lnek. Ez aze1rt va1ltozott meg, mert nem csak a hiba1s karakter jelo2le1sek jelentkeznek hibake1nt, hanem a fa1jl ve1ge1nek ele1re1se a \HiOn/ kikapcsolt a1llapota1ban, vagy matematikai mo1dban. % \item[\PM i] A bemenet a standard input. Fo3leg UNIX e1s MSDOS felhaszna1lo1k figyelme1be. % \item[\PM o] A kimenet a standard output. Fo3leg UNIX e1s MSDOS felhaszna1lo1k figyelme1be. % \item[\PM f] Szu3ro3 mu3ko2de1s, azaz mint az 'i' e1s 'o' opcio1 egyu2tt. % \item[v] Vesszo3 karakter megada1sa. Ez a karakter az opcio1 ne1lku2l '1'. Ezt lehet kicsere1lni valami ma1s karakterre. {\tt Ha teha't valaki jobban szereti ezt az i'ra'smo'dot, akkor a -v'} opcio1t kell haszna1lnia. A karaktert ko2zvetlenu2l az opcio1 uta1n kell megadni. (La1sd me1g az 'u' e1s 'k' opcio1kat.) % \item[u] Umlaut karakter megada1sa. Hasonlo1an a -v opcio1hoz a '2' karaktert lehet kicsere1lni egye1ni i1zle1snek megfelelo3en. % \item[k] Hosszu1 umlaut karakter megada1sa. Hasonlo1an a -v e1s -u opcio1khoz a '3' karaktert is ki lehet csere1lni i1zle1snek megfelelo3en. {\bf VIGYA1ZAT!} A -vuk (kis ro1ka) opcio1kna1l az a karakter, amit megadunk, leginka1bb \verb+' ~+ e1s \verb+"+. Ezeket a karaktereket pedig az opera1cio1s rendszerek e1rtelmezik. UNIX alatt pe1lda1ul, ha a Babai fe1le e1kezeteket akarjuk, akkor \verb+-v\'u~k\"+ opcio1 sort kell kiadni. Ne1zz uta1na, hogy a te rendszereden ez a dolog hogy van! % \item[a] Ez az opcio1 a \verb+-v\'u~k\"+ opcio1-ha1rmas ro2vidi1te1se, azaz az e1kezetek jelo2le1si mo1dja1t a1ta1lli1tja a Babai fe1le jelo2le1sre. % \item[\PM b] Ezzel az opcio1val lehet ke1rni, hogy a program ne ismerje fel a 127-ne1l nagyobb ASCII ko1du1 karaktereket. Egye1bke1nt azokat e1kezetes karakterke1nt e1rtelmezi. (La1sd me1g a \ref{IBMCODE}. fejezetet!) Korai verzio1kban az alape1rtelmeze1s fordi1tott volt. % \item[\PM 0] Ez az opcio1 kikapcsolja az ||{\tt 123}@@ e1kezetek figyelembe ve1tele1t. Ez akkor hasznos, ha valamilyen kiterjesztett ko1du1 karakter ke1szletet haszna1lunk, e1s a szo2vegben elo3fordulnak olyan szavak, ahol maga1nhangzo1t valamilyen sza1mjegy ko2vet. Norma1l mu3ko2de1s esete1n ezeket a karakterpa1rokat is a1ti1rna1 a \HiOn/ e1kezetes betu3re. % \item[\PM p] Ez az opcio1 kikapcsolja a \TeX\ kulcsszavak ve1delme1t. Ha ezt az opcio1t haszna1ljuk, akkor a szo2vegben {\tt |||@@} e1s {\tt @} karakterekkel kell gondoskodni az olyan szavak ve1delme1ro3l, mint {\tt scaled}. Ugyanakkor a \HiOn/ csak akkor ismeri fel ezeket a kulcsszavakat, ha azokra nem i1rjuk ra1 a ko2vetkezo3 szo1t. Ha ||{\tt scaled1200}@@-at i1runk, akkor a \HiOn/ el fogja va1lasztani a \TeX\ kulcsszo1t, mert a sza1mokkal egyu2tt egy szo1nak tekinti a ||{\tt scaled1200}@@ karakter sorozatot. Viszont i1rhatunk ||{\tt scaled\verb+\+magstep}@@-et, mert a \verb+\+ karakter leza1rja a szo1t. % \item[\PM g] Ez az opcio1 kikapcsolja a ligatu1ra1k figyele1se1t. (\ref{ELVA1LASZTA1S} fejezet) % \item[\PM q] Statisztika elnyoma1sa. Ene1lku2l az opcio1 ne1lku2l a \HiOn/ a munka1ja befejezte1vel egy ro2vid statisztika1t i1r ki a mu3ko2de1se1ro3l. % \item[c] Ezzel az opcio1val megadhatunk egy olyan fa1jlt, amelyik tartalmazza a kiterjesztett ko1du1 karaktereket. A1ltala1ban erre nincs szu2kse1g, mert a bee1pi1tett ta1bla1zat erre megfelel. La1sd me1g a \ref{IBMCODE}. fejezetet! Minden opcio1, amely azonos csoportban ezuta1n az opcio1 uta1n szerepel, elve1sz. Teha1t ``-co fa1jlne1v'' helyett ``-c fa1jlne1v -o''--t kell i1rni. % \item[e] Ennek az opcio1nak van egy egykarakteres argumentuma, amely ko2zvetlenu2l az opcio1 karakter uta1n kell, hogy a1lljon. Ez az argumentum lehet 0, 1, 2, 3 vagy 4. \begin{itemize} \item[0] a kimeneten szabva1ny \TeX\ szekvencia1k fognak megjelenni. Ez az alape1rtelmeze1s, ezt nem kell megadni, hacsak a {\tt hion\_opt} ko2rnyezeti va1ltozo1ban a1t nem lett a1lli1tva. \item[1] a kimeneten a nem a szabva1ny \TeX\ szekvencia1k fognak megjelenni, hanem a \HiOn/ azokat a ko1dokat fogja genera1lni, amelyek szabva1nyosnak lettek elfogadva 1990-ben a \TeX\ 3.0 szabva1nyban (e1s amelyeket a Ma\TeX\ is haszna1l). \item[2] a kimeneten a nem a szabva1ny \TeX\ szekvencia1k fognak megjelenni, hanem a \HiOn/ azokat a ko1dokat fogja genera1lni, amelyeket az IBM-PC haszna1l. \item[3] a kimeneten a nem a szabva1ny \TeX\ szekvencia1k fognak megjelenni, hanem a \HiOn/ azokat a ko1dokat fogja genera1lni, amelyeket a DEC International Character Set tartalmaz. \item[4] a kimeneten a nem a szabva1ny \TeX\ szekvencia1k fognak megjelenni, hanem az 123 jelo2le1su3 ``repu2lo3'' e1kezetek. \end{itemize} Ez az opcio1 a HUON funkcio1ra is hata1ssal van. % \item[\PM s] Bonyolult elva1laszta1s kikapcsola1sa. Ez az opcio1 csak '4' u2zemmo1dban haszna1lhato1. Ene1lku2l az opcio1 ne1lku2l az olyan szavakat mint 'asszony' a program bonyolult \TeX\ szekvencia1kra bontja, e1s helyesen va1lasztja el. Ez azt jelenti, hogy a nyomtatott szo2vegben sor ve1ge1n |asz-szony@, mi1g sor ko2zben |'asszony'@ fog megjelenni. % \item[y] Csak a \verb+\discretionary+ ti1pusu1 elva1laszta1s lesz bejelo2lve. Ezt akkor e1rdemes haszna1lni, ha az elva1laszta1s to2bbi re1sze1t a Ma\TeX\ programcsomagra akarjuk valamie1rt bi1zni. Ha az opcio1t egyne1l to2bbszo2r is megadjuk, akkor csak azokban a szavakban, amelyekben hosszu1 dupla ma1ssalhangzo1 van az o2sszes elva1laszta1s be lesz jelo2lve. % \item[\PM z] Za1ro1jelek haszna1lata a kimeneten. Ha ezt az opcio1t haszna1ljuk, akkor a genera1lt fa1jlban a dupla ma1ssalhangzo1k, valamint a veze1rlo3 karakterekkel i1rt e1kezetes betu3k \verb+{+ e1s \verb+}+ jelek ko2ze1 lesznek za1rva. Ennek akkor van jelento3se1ge, ha olyan makro1t akarunk i1rni, mint amilyen a \TeX\ ko2nyvben [1] szerepel a 11.5 feladatban, vagy ha a genera1lt fa1jlt elo3szo2r a BiB\TeX-nek kell feldolgoznia. % \item[\PM n] Az olyan szavak uta1n, amelyeket nem lehet elva1lasztani a \HiOn/ egy \verb+\-+ elva1laszta1si jelet tesz. Ez a szo1 elva1laszta1sa1t, illetve el nem va1laszta1sa1t nem zavarja, hiszen az egyetlen megengedett elva1laszta1si hely a szo1 uta1n szerepel, viszont megtiltja a \TeX-nek, hogy saja1t maga va1lassza el a szo1t. Ne1ha1ny esetben azonban ez gondot okoz, mert a \HiOn/ olyan helyre is tesz \verb+\-+ jelet ahova nem kellene. Emiatt ez az opcio1 alaphelyzetben nincs bekapcsolva, e1s bekapcsolni ezzel az opcio1val kell. La1sd me1g a \ref{HIONHYPH} alfejezetet. % \item[\PM t] A program nem va1laszt el akkor, ha az elva1laszta1ssal ke1t karakterne1l ro2videbb szo1tag keletkezne a szo1 eleje1n vagy a ve1ge1n. Ha a 't' opcio1t haszna1ljuk, akkor ezt a program nem veszi figyelembe, e1s minden lehetse1ges (e1s lehetetlen?) helyen elva1laszt.\footnote{A tipogra1fiai szaba1lyok tiltja1k, hogy egy karakteres szo1tagot ku2lo2n sorba i1rjunk.} % \item[\PM l] \LaTeX\ szekvencia1k felismere1se. Ez a mu3ko2de1s alaphelyzetben ki van kapcsolva, mert egy kicsit ido3ige1nyes. Ha haszna1ljuk az opcio1t, akkor az olyan \LaTeX\ kulcsszavakat, mint {\tt|| begin, end, label, cite, ref}@@ felismeri a program, e1s nem bontja sze1t az uta1nuk ko2vetkezo3 szo1t. I1gy pl. a \begin{verbatim}|| \begin{itemize} \end{verbatim}@@ megmarad, e1s nem lesz belo3le \begin{verbatim}|| \begin{ite\-mi\-ze} \end{verbatim}@@ amito3l a \LaTeX\ feldobja a papucsa1t. A felismert kulcsszavak lista1ja megtala1lhato1 a forra1sszo2vegben a {\tt slatex} to2mbben. % \item[\PM m] Az igeko2to3k figyele1se1nek kikapcsola1sa. Az 1.4 verzio1 elo3tt ez az opcio1 pont fordi1tva mu3ko2do2tt. Az 1.4 verzio1to1l kezdve az igeko2to3k figyele1se alape1rtelmeze1s szerint be van kapcsolva. % \item[\PM x] A sa1g se1g postfixek figyele1se1nek kikapcsola1sa. Ha ezt az opcio1t megadjuk, akkor az olyan szavakat, mint igazsa1g a \HiOn/ rosszul fogja elva1lasztani. % \item[\PM+] Ha ezt az opcio1t haszna1ljuk, akkor a genera1lt fa1jlba a \HiOn/-t veze1rlo3 {\tt |||@@} e1s {\tt @} karakterek is bekeru2lnek. Ezt akkor kell, haszna1lni, ha csak a karakter ke1szletet akarjuk kicsere1lni. % \item[\PM:] Ez az opcio1 ekvivalens az {\tt msyx} opcio1k egyu2ttese1vel. Ekkor semmilyen elva1laszta1st nem ve1gez a program, csak a karaktereket konverta1lja a1t. \end{itemize} \section{|Ko2rnyezeti va1ltozo1k}@%%Le1gszennyezettse1g, savaseso3, ... %================================= \typeout{||Ko2rnyezeti va1ltozo1k}@@ A \HiOn/ egyetlen ko2rnyezeti va1ltozo1t vizsga1l, amelyiknek a neve {\tt hion\_opt}. Ennek a va1ltozo1nak az e1rte1ke1t, ami egy karakter fu3ze1r a program ugyan u1gy dolgozza fel, hintha a parancssor argumentum lenne. Olyan opcio1kat e1rdemes ebbe a va1ltozo1ba berakni, amiket mindig haszna1lunk. Ha valaki csak \LaTeX\ fa1jokhoz haszna1lja a programot, akkor e1rdemes az {\tt -l} opcio1t belerakni. Csak egy csoport opcio1 lehet, azaz ha to2bb opcio1 is szerepel a va1ltozo1ban, akkor azokat egybe kell i1rni. A ko2rnyezeti va1ltozo1k bea1lli1ta1sa opera1cio1s rendszer fu2ggo3. \subsection{UNIX alatt} %---------------------- UNIX alatt egy ko2rnyezeti va1ltozo1 bea1lli1ta1sa1nak szintaktika1ja fu2gg a haszna1lt {\it shell\/}to3l. Egy lehetse1ges u1t a ko2vetkezo3: ||\begin{verbatim} setenv hion_opt=-l \end{verbatim}@@ Mivel ez a va1ltozo1 csak addig e1l, ami1g ki nem kapcsoljuk, vagy nem inicializa1ljuk a ge1pet, illetve ami1g ki nem jelentkezu2nk eze1rt ezt a parancsot e1rdemes minden bekapcsola1s, illetve inicializa1la1s uta1n kiadni. Ennek ke1nyelmes mo1dja, ha befu3zzu2k a {\tt|| .profile}@@ fa1jl parancsai ko2ze1. \subsection{MS--DOS alatt} %------------------------- MS--DOS alatt egy ko2rnyezeti va1ltozo1 bea1lli1ta1sa1nak szintaktika1ja a ko2vetkezo3: ||\begin{verbatim} set hion_opt=-l \end{verbatim}@@ Mivel ez a va1ltozo1 csak addig e1l, ami1g ki nem kapcsoljuk, vagy nem inicializa1ljuk a ge1pet, eze1rt ezt a parancsot e1rdemes minden bekapcsola1s, illetve inicializa1la1s uta1n kiadni. Ennek ke1nyelmes mo1dja, ha befu3zzu2k az {\tt|| AUTOEXEC.BAT}@@ fa1jl parancsai ko2ze1. A kikapcsola1s a ||\begin{verbatim} set hion_opt= \end{verbatim}@@ paranccsal to2rte1nik. \subsection{VMS alatt} %--------------------- VMS alatt egy ko2rnyezeti va1ltozo1 bea1lli1ta1sa1nak szintaktika1ja a ko2vetkezo3: ||\begin{verbatim} hion_opt="-l" \end{verbatim}@@ Mivel ez a va1ltozo1 csak addig e1l, ami1g a bejelentkeze1s tart, eze1rt ezt a parancsot e1rdemes minden bejelentkeze1skor kiadni. Ennek ke1nyelmes mo1dja, ha befu3zzu2k a {\tt|| LOGIN.COM}@@ fa1jl parancsai ko2ze1. A kikapcsola1s a ||\begin{verbatim} hion_opt="" \end{verbatim}@@ paranccsal to2rte1nik. \section{|Elva1laszta1s}@%Egyszer me1g elva1lik, hogy elva1lik vagy sem %======================== \label{ELVA1LASZTA1S} \typeout{||Elva1laszta1s@@} Ha a '{\tt 4}' opcio1t megadjuk, vagy a program neve {\tt hion} akkor a program a mu3ko2de1se sora1n szo1tagolja a szavakat a magyar helyesi1ra1snak megfelelo3en. Egy szo1t el lehet va1lasztani ke1t maga1nhangzo1 ko2zo2tt, vagy egy ma1ssalhangzo1 elo3tt, ha azt maga1nhangzo1 ko2veti, e1s a legutolso1 elva1laszta1s o1ta, illetve ha ilyen me1g nem volt, akkor a szo1 eleje o1ta szerepelt maga1nhangzo1. Ez az a1ltala1nos szaba1ly. (Lehet, hogy a magyar nyelvtan nem ege1szen ez, de a program ezt csina1lja.) Egy elva1laszta1ssal keletkezo3 szo1tag szo1 eleje1n vagy ve1ge1n nem a1llhat egy betu3bo3l, vagyis az 'akarat' szo1 helyes elva1laszta1sa: |aka-rat@. Ez nem nyelvtani szaba1ly, hanem nyomdai. Ha egy ilyen szo1tag u1j sorba keru2l, vagy a megelo3zo3 sor ve1ge1re, akkor azt a nyomda1szok fattyu1szo1tagnak nevezik (eebo3l is la1tszik, hogy mennyire ki1va1natos). Ne1ha, fo3leg, ha a szedett szo3veg nagyon ro2vid sorokba lesz to3rdelve szu2kse1g lehet ra1, hogy megengedju2k az ilyen egybetu3s szo1tagokat. Ha a '{\tt t}' opcio1t haszna1ljuk, akkor az elva1laszta1s |a-ka-rat@ lesz. Hacsak az '{\tt m}' opcio1val ki nem kapcsoljuk a funkcio1t, a program felismeri a leggyakoribb igeko2to3ket, e1s i1gy a |``felismeri''@ szo1 elva1laszta1sa |fel-is-me-ri@ nem pedig |fe-lis-me-ri@. Az ismert igeko2to3k: \begin{tabular}{llllll} meg & felu2l & fel & agyon & a1ltal & keresztu2l \\ ko2ru2l & sze1jjel & tova1bb & tu1l & el & a1t \\ sze1t & ve1gig & & & & \\ \end{tabular} Megjegyzem, hogy azon igeko2to3k, amelyek nem ma1ssalhangzo1ra ve1gzo3dnek, az elemi elva1laszta1si szaba1lyok szerint is helyesen lesznek elva1lasztva, e1s eze1rt nem kell o3ket ku2lo2n figyelni. \begin{footnotesize} Ne1ha1ny esetben, amikor egy ige ke1t ma1ssalhangzo1val kezdo3dik, mint {\sl sro1fol}, akkor az olyan igeko3to3k is ku2lo2n figyelmet ki1va1nnak, amelyek maga1nhangzo1ra ve1gzo3dnek. I1gy a be\-sro1fol ige1t az egyszeru3 elva1laszta1si szaba1ly bes-ro1fol--nak va1lasztana1 el. Ezeket az eseteket a kive1tel szo1ta1rral vesszu2k figyelembe u1gy, mint az o2sszetett szavakat. \end{footnotesize} A program nem csupa1n azt ne1zi meg, hogy a szo1 eleje1n valamelyik igeko2to3 a1ll-e, hanem a szo1 tova1bbi re1sze1t is figyelembe ve1ve megpro1ba1lja eldo2nteni, hogy a szo1 eleje1n a1llo1 betu3k igeko2to3ke1nt e1rtelmezheto3k-e. I1gy pe1lda1ul az elefa1nt szo1bo1l a program nem csina1l el-efa1ntot. Vannak olyan szavak, amelyek elva1laszta1sa nem egye1rtelmu3. Ilyen pe1lda1ul a felejt. Ha arro1l van szo1, hogy valamit elfelejtu2nk, akkor az elva1laszta1s |fe-lejt@. Ha viszont valamit felfele1 ejtu2nk, akkor az elva1laszta1s |fel-ejt@. Mivel felfele1 ritka1n szoktunk dolgokat ejteni, eze1rt a program ebben az esetben u1gy do2nt, hogy a {\sl fel} szo1cska itt nem igeko2to3. Ha me1gis, akkor be kell a szo2vegben jelo2lni az elva1laszta1st. Ezt a proble1ma1t csak mondat elemzo3 algoritmussal lehetne megoldani, ami nagyon lelassi1tana1 a mu3ko2de1st. Le1teznek szo1 elemze1sen alapulo1 elva1laszto1 programok is, e1s ezek is jo1val lasabbak, mint a \HiOn/. A program felte1telezi, hogy helyesen i1rt magyar szavak szerepelnek a szo2vegben, i1gy ha valamit elge1pelu2nk, akkor lehet, hogy az elva1laszta1s is rossz lesz. Igy pe1lda1ul, ha azt i1rjuk, hogy {\sl eladdo1}, akkor az elva1laszta1s |{\sl elad-do1}@ lesz. A program figyel olyan kva1zi igeko2to3ket is, mint meggy, vagy leggy, eze1rt a leggyakrabb, illetve a meggyu1rni szavakat is helyesen va1lasztja el. A program minden olyan cs illetve zs betu3t, amely uta1n a1g, vagy e1g betu3k ko2vetkeznek c e1s s illetve z e1s s betu3nek tekint, azaz nem tekinti dupla betu3nek o3ket, e1s i1gy az olyan szavakat, mint igazsa1g, vagy malacsa1g is helyesen va1laszt el. Szo1 nem tartalmazhat \verb+{+ e1s \verb+}+ karaktereket valamint szo1ko2zt. Egy szo1t leza1r egy veze1rlo3 karakter, vagy veze1rlo3 szo1 (teha1t valamilyen \verb+\+-sel kezdo3do3 karakter sorozat), ha az nem az elva1laszta1st jelo2li be, azaz nem \verb+\-+. A \verb+\-+ veze1rlo3 karakter re1sze lehet egy szo1nak. Magyar szo2vegben ele1g ritka1n fordul elo3, de ne1ha aze1rt elo3fordul, hogy {\sl f} e1s {\sl l} vagy ke1t {\sl f} vagy {\sl f} e1s {\sl i} betu3k ko2zo2tt kell elva1lasztani. Ha itt egyszeru3en \verb+\-+ jelet tenne1nk a ke1t karakter ko2ze1, akkor a \TeX\ nem ismerne1 fel a ligatu1ra1t, e1s pe1lda1ul ff helyett f{}f jelenne meg a nyomtatott szo2vegben. A \HiOn/ ezt az esetet figyelembe ve1ve olyan szekvencia1t genera1l, amelyik nem akada1lyozza meg a \TeX\ ligatu1ra felismere1se1t. Ha ezt valamie1rt ki kellene kapcsolni, akkor a 'g' opcio1t kell haszna1lni. \section{|O2sszetett szavak}@%%Apa1m szerint csu1nya dolog, hogy amit %============================%%egy ne1p e1vsza1zadok alatt o2sszerakott %%azt most e1n hipp-hopp sze1tva1lasztom \label{COMPWORDS} \typeout{||O2sszetett szavak}@@ A \HiOn/ 1.7-es verzio1ja1to1l kezdve ke1pes arra, hogy az o2sszetett szavakat is helyesen szo1tagolja. Mivel a \HiOn/ nem elemzi a szavakat, eze1rt ezt csak egy kive1tel szo1ta1rral lehet megoldani. A programcsomag kell, hogy tartalmazza a {\tt hion.dct} kive1tel szo1ta1rat, amelyik karakteres forma1ban tartalmazza az o2sszes olyan szo1t, amelyiket a \HiOn/ kora1bbi verzio1i rosszul va1lasztottak el. \begin{footnotesize} Ez a szo1ta1r u1gy ke1szu2lt, hogy a Magyar E1rtelmezo3 Ke1ziszo1ta1r ci1mszavainak a jegyze1ke1re ra1engedtu2k a \HiOn/-t, e1s az eredme1nyt egy programmal o2sszehasonli1tottuk egy ma1sik, szo1 elemze1sen alapulo1 szo1tagolo1 program hasonlo1 eredme1nye1vel. Ahol a ke1t elva1laszta1s azonos volt, ott felteheto3en jo1 az elva1laszta1s. Ahol ku2lo2nbo2zo2tt, ott vagy az egyik, vagy a ma1sik, vagy mindke1t elva1laszta1s rossz volt. Ezt a fa1jlt ne1ztu2k ve1gig e1s szo2vegszerkeszto3vel, ke1zzel a1lli1tottuk elo3 a {\tt hion.dct} fa1jlt. I1gy lehetnek benne hiba1k. Ezeknek a hiba1knak a kezele1se1re ugyan u1gy vonatkozik a \ref{KARB} fejezet, mint a programhiba1ke1ra. \end{footnotesize} A {\tt hion.dct} fa1jl karakteres forma1tum, amit a \HiOn/ csak lassan tudna haszna1lni, eze1rt ezt a1t kell alaki1tani bina1ris forma1tumra. Ezt a {\tt dicc} vagy a {\tt hion -5} paranccsal lehet megtenni. A keletkezo3 fa1jl {\tt hion.dcb}, amelyik egy ta1bla1zatban, gyorsan feldolgozhato1 forma1ban tartalmazza a kive1telszo1ta1rat. Ha nem haszna1ljuk a {\tt r} opcio1t akkor a \HiOn/ elindula1sa uta1n megpro1ba1lja az aktua1lis ko2nyvta1rbo1l beolvasni a {\tt hion.dcb} fa1jlt. Ha ez nem le1tezik, akkor megpro1ba1lja a {\tt hion.dcb} fa1jlt megnyitni abban a direktoriban, ahol a ve1grehajthato1 fa1jl van. Ha ez sem sikeru2l, akkor opera1cio1s rendszerto3l fu2ggo3n viselkedik a program. \noindent MS-DOS alatt nem pro1ba1lkozik tova1bb. \noindent UNIX alatt megpro1ba1lkozik a \verb+~/+, a \verb+/usr/dict+, a \verb+/usr/user/dict/+, majd ve1gu2l utolso1 ki1se1rletke1nt a \verb+/usr/bin/+ direktoriban megnyitni a fa1jlt. \noindent VMS alatt a {\tt|| HION\$DIRECTORY:}@@ direktorit ne1zi meg. Ha sehol sem sikeru2l megtala1lni a {\tt hion.dcb} fa1jlt, nincs ele1g memo1ria, se1ru2lt a fa1jl, vagy esetleg a \HiOn/ egy olyan ke1so3bbi verzio1ja1val ke1szu2lt, amelyik DCB forma1tuma1t az adott verzio1 nem tudja feldolgozni, akkor egy hibajelze1s uta1n (amit a {\tt w} opcio1val el lehet nyomni) a program ene1lku2l folytatja a mu3ko2de1se1t. A DCT-ro3l DCB forma1tumra valo1 a1talaki1ta1shoz to2bb memo1ria kell, mint a DCB fa1jl beolvasa1sa1hoz, e1s haszna1lata1hoz. I1gy ha nincs ele1g memo1ria a szo1ta1r a1talaki1ta1sa1hoz, akkor meg lehet pro1ba1lni az a1talaki1ta1st egy ma1sik ge1pen, aka1r ma1sik opera1cio1s rendszer alatt is. A ku2lo2nbo2zo3 opera1cio1s rendszerek alatt ke1szi1tett fa1jlok megegyeznek. U1gy is lehet haszna1lni a kive1telszo1ta1rat, hogy csak azokat a szavakat tartjuk a {\tt hion.dct} fa1jlban, amelyek az e1ppen fordi1tani ki1va1nt anyagban elo3fordulnak. Ekkor le1nyegesen kisebb lesz a {\tt hion.dcb} fa1jl, a szu2kse1ges memo1ria, e1s minima1lis sebesse1g no2vekede1s is ele1rheto3. \subsection{|A {\tt hion.dct} forma1tuma}@ %----------------------------------------- A {\tt hion.dct} fa1jl karakteres forma1ban tartalmazza a kive1telszo1ta1rat. A csomaghoz tartozo1 fa1jl az ala1bbi krite1riumoknak eleget tesz. Ha me1gsem, akkor az program hiba1nak tekintendo3. A {\tt hion.dct} fa1jl o2sszetett szavakat tartalmaz, amelybe azon elva1laszta1si helyek vannak megjelo2lve, amelyeket kive1telke1nt figyelembe kell venni. Ha enne1l to2bb elva1laszta1si hely is be van jelo2lve, az memo1ria e1s sebesse1g vesztese1get okoz, de a mu3ko2de1st egye1bke1nt nem szabad, hogy befolya1solja. Ke1t szo1t szo1ko2z, vagy u1jsor va1laszt el. Egy szo1ban maximum 15 elva1laszta1si hely lehet megjelo2lve. A fa1jl tartalmazhat u2res sorokat. Minden {\tt '}, vagy {\tt \%} jel uta1ni karakter sorozat a sor ve1ge1ig megjegyze1s, a program figyelmen ki1vu2l hagyja. Ha egy $\cal A$ szo1 prefixe egy ma1sik $\cal B$ szo1nak, azaz $\cal B$ eleje megegyezik $\cal A$ betu3ivel\footnote{pe1lda1ul {\sl alma1s} prefixe az {\sl alma1sre1tes} szo1nak.}, akkor $\cal A$-nak a szo1ta1rban elo3bb kellszerepelnie, mint $\cal B$. Ellenkezo3 esetben a szo1ta1r a1talaki1ta1sa sora1n a program egy figyelmeztete1st ad, e1s $\cal A$ nem keru2l bele a szo1ta1rba. Csak akkor van e1rtelme, hogy $\cal B$ is bekeru2ljo2n a szo1ta1rba, ha benne az $\cal A$ uta1ni re1szen is van kive1teles elva1laszta1s, vagy ha $\cal B$-t ege1szen ma1ske1pp kell elva1lasztani, mint $\cal A$-t. Ellenkezo3 esetben ugyanis $\cal B$-t a szo1ta1rbo1l valo1 elhagya1sa1val is helyesen fogja elva1lasztani a program. I1gy elegendo3 ha a szo1ta1rban szerepel a {\sl vas-u1t} bejegyze1s, nem kell, hogy szerepeljen a {\sl vas-u1ton} szo1, ugyanakkor a {\sl vas-u1t-a1lloma1s} bejegyze1snek ke1so3bb kell szerepelnie, mint a {\sl vas-u1t} bejegyze1s. Ilyen esetekben is figyelmeztet a program. Egy szo1t a program akkor ismer fel, ha szerepel a szo1ta1rban, vagy ha a szo1ta1rban szerepel valamelyik prefixe. A szo1ta1rban haszna1lhato1k az 123 e1kezetek, vagy a kiterjesztett karakter ke1szletu3 betu3k ugyan u1gy, mint a {\tt .hun} fa1jlokban. A csomagban levo3 {\tt hion.dct} fa1jl a hordozhato1sa1g miatt az 123 e1kezetekkel szerepel. Egy szo1 csak betu3ket, az e1kezeteket jelo2lo3 jeleket e1s elva1laszto1 jelet tartalmazhat. A fa1jl ve1ge1t a fa1jl fizikai ve1ge jelzi, vagy egy sor, amely a \verb+\eof+ jelet tartalmazza, azaz egy fordi1tott to2rtvonalat, e1s az {\tt e}, {\tt o} e1s {\tt f} kisbetu3ket. \subsection{|A {\tt hion.dcb} fa1jl forma1tuma}@ %----------------------------------------------- A {\tt hion.dcb} fa1jl forma1tuma bina1ris. Tartalmaz ba1jtos, szavas (2 ba1jt), e1s hosszu1szavas (3 ba1jt) bejegyze1seket. A szavas bejegyze1sekne1l mindig a kisebb helyie1rte1ku3 ba1jt szerepel elo3szo2r, e1s a nagyobb helyie1rte1ku3 a ko2vetkezo3 ba1jton. A hosszu1szavas bejegyze1sekne1l elo3szo2r mindig a legkisebb helyie1rte1ku3 ba1jt szerepel, uta1na a ko2ze1pso3, majd pedig a legnagyobb helyie1rte1ku3 ba1jt. Ez a sorrend megfelel az Intel ba1jt sorrendnek, e1s pont az ellenkezo3je, mint a MOTOROLA ba1jt sorrend. A fa1jl egy fejle1cbo3l, e1s egy ta1bla1zatbo1l a1ll. A fejle1c elso3 ha1rom ba1jtja rendre 68, 67, 66, ami a DCB karakter sorozatnak felel meg az ASCII ko1dta1bla1ban. A ko2vetkezo3 ke1t ba1jt tartalmazza hexadecima1lis ASCII forma1ban a \HiOn/ azon verzio1 sza1ma1t, amelyik a bina1ris fa1jlt genera1lta, majd pedig hasonlo1 mo1don a ko2vetkezo3 ke1t ba1jt azt a verzio1t, amelyik minima1lisan szu2kse1ges a fa1jl beolvasa1sa1hoz. A verzio1kna1l a magas e1rte1k szerepel elo3szo2r, e1s az alacsony ma1sodszor. Ezuta1n 3 ba1jton ugyancsak hexadecima1lis ASCII forma1ban a genera1lo1 \HiOn/ da1tuma nap, ho1nap, e1v sorrendben. Az e1v az e1vsza1zadok elhagya1sa1val, e1s 66-tal\footnote{1966 egy specia1lis e1v volt.} %%1966 ma1jus 29-e1n szu2lettem. cso2kkentve jelenik meg. A da1tum uta1ni ba1jt e1rte1ke 26. Ez IBM PC ge1peken text fa1jlokban EOF jel, e1s i1gy egy {\tt type} DOS parancs nem dobja ki a fa1jl igaza1n bina1ris re1sze1t a ke1pernyo3re. A fejle1c utolso1 nyolc ba1jtja a fa1jl marade1k re1sze1nek a hossza 4 ba1jton, valamint az elso3 rekordra mutato1 pointer szinte1n 4 ba1jton. A ba1jtok sorrendje itt is a legkisebb helyie1rte1kto3l a legnagyobb helyie1rte1kig halad. A fa1jlban szerepelnek mutato1k, amelyek rekordokra mutatnak. Ezek fizikailag hosszu1szavak. Ezek e1rte1ke ba1jt eltola1si e1rte1k a ta1bla1zat eleje1to3l sza1mi1tva, azaz, ha a fa1jlon belu2l akarjuk o3ket e1rtelmezni, akkor a fejle1c hossza1t az e1rte1khez hozza1 kell adni, hogy a {\tt seek} vagy {\tt lseek} fu2ggve1nynek megfelelo3 e1rte1ket kapjunk. A fa1jl tova1bbi re1sze rekordok sorozata. Az egyes rekordok me1rete nem a1llando1, hanem fu2gg a rekord tartalma1to1l. Minden egyes rekord tartalmazza a ve1ges automata egy a1llapota1t e1s az onnan kiindulo1 a1tmeneteket. \subsection{Egy rekord szerkezete} Egy rekord elso3 ba1jtja tartalmazza az a1llapotbo1l kiindulo1 a1tmenetek sza1ma1t {\tt (n)}. A ko2vetkezo3 ba1jt e1rte1ke, a lehetse1ges elva1laszta1sok sza1ma {\tt (h)}. Az ezuta1n ko2vetkezo3 {\tt h} darab ba1jt tartalmazza a az elva1laszta1sok lehetse1ges helyeit szigoru1an no2vekedo3 sorrendben. Ha {\tt h} e1rte1ke nulla, akkor ez a re1sz hia1nyzik, vagy ma1s\-szavakkal nulla darab ba1jt szerepel. Innen kezdve a rekord ve1ge1ig 4{\tt n} ba1jton szerepelnek az a1llapotbo1l kiindulo1 a1tmenetek. Ezek mindegyike 4 ba1jtot foglal el, amelynek elso3 ba1jtja az a1tmenet karaktere a marade1k ha1rom ba1jt pedig az u1j a1llapotnak megfelelo3 rekordra mutato1 pointer. \section{|IBM--PC, DEC International karakterek}@ %% %================================================ %% \label{IBMCODE} \typeout{||IBM--PC e1s DEC karakterek@@} A \HiOn/ program ke1pes arra, hogy IBM--PC-n, VAX ge1peken e1s SUN-okon felismerje e1s kezelje a 127-ne1l nagyobb ko1du1 karaktereket. A programban van egy bee1pi1tett ta1bla1zat. Mivel az IBM e1s a DEC e1kezetes karakter ta1bla1zat nem u2ti egyma1st, eze1rt a ta1bla1zat egyszerre tartalmazza mind a ketto3t. A 'c' opcio1val ennek a ta1bla1zatnak a tartalma a1ti1rhato1.\footnote{Vigya1zat! Ez a ta1bla1zat kioszta1s az 1.3 verzio1ban megva1ltozott.} \begin{figure}[htb] \hbox to \hsize{\hfill \begin{tabular}|{|c|c|c|} \hline IBM PC & DEC Int. & \\ Ko1d & Ko1d & Karakter \\ \hline \hline 129 & 252 & u2 \\ \hline 130 & 233 & e1 \\ \hline 140 & 236 & I1 \\ \hline 141 & & I1 \\ \hline 143 & 197 & A1 \\ \hline 144 & 201 & E1 \\ \hline 147 & 244 & o3 \\ \hline 148 & 246 & o2 \\ \hline 149 & 242 & O1 \\ \hline 150 & 251 & u3 \\ \hline 151 & 249 & U1 \\ \hline 152 & 253 & U3 \\ \hline 153 & 214 & O2 \\ \hline 154 & 220 & U2 \\ \hline 160 & 225 & a1 \\ \hline 161 & 237 & i1 \\ \hline 162 & 243 & o1 \\ \hline 163 & 250 & u1 \\ \hline 167 & 186 & O3 \\ \hline@ \end{tabular}\hfill} \vskip 2ex \centerline{IBM PC e1s DEC karakterek ta1bla1zata} \end{figure} A 'c' opcio1 uta1n, ko2vetkezo3 parame1terke1nt meg kell adni annak a fa1jlnak a neve1t, amelyik a mi ta1bla1zatunkat tartalmazza. Ennek a fa1jlnak minden egyes sora egy karaktert kell, hogy definia1ljon. Egy sor ha1rom sza1mbo1l a1ll. Az elso3 a karakter ko1dja, amit fel kell, hogy ismerjen a program. A ma1sodik e1s harmadik sza1m a betu3 ke1tkarakteres ko1dja1t kell, hogy adja. Az elso3 ko1d csak 127-ne1l nagyobb lehet, enne1l kisebb ko1du1 karakterekre ugyanis a program nem vizsga1lja a ta1bla1zatot. A ma1sodik ke1t sza1m csak 128-na1l kisebb sza1m lehet, mert a program egy konverta1lt e1rte1k alapja1n ma1r nem ne1zi a1t me1gegyszer a ta1bla1zatot, e1s a kimenetbe 127-ne1l nagyobb ko1du1 karakter fog keru2lni. A sza1mokat szo1ko2zo2k kell, hogy elva1lassza1k. A decima1lis sza1mok helyett megadhatunk karaktereket is, ezek a saja1t ASCII ko1djukat jelentik. Ha egy sza1mjegy karaktert, szo1ko2zt vagy backslasht akarunk megadni, akkor egy backslash kell, hogy megelo3zze a karaktert. \section{|U2zemmo1dok}@ %====================== \typeout{||U2zemmo1dok@@} % Mind a ke1t funkcio1t (elva1laszta1s, e1s e1kezetek a1talaki1ta1sa), ki e1s be lehet kapcsolni a szo2vegben elhelyezett {\tt |||@@} e1s {\tt @} karakterekkel. A {\tt |||@@} karakter kikapcsolja az elva1laszta1sok bejelo2le1se1t, e1s a{\tt @} jel kapcsolja be. Ha ko2zvetlenu2l egyma1s uta1n ke1t {\tt |||@@} jelet i1runk, akkor az kikapcsolja mind az elva1laszta1sok bejelo2le1se1t, mind pedig az e1kezetek \TeX\ forma1ra hoza1sa1t. A bekapcsola1st ekkor a {\tt @@} karakterek ve1gzik, azaz ke1t {\tt @} karakter ko2zvetlenu2l egyma1s uta1n. Mind az elva1laszta1st, mind pedig az e1kezetek a1talaki1ta1sa1t kikapcsolja a \TeX\ matematikai mo1dja, amelyet egy vagy ke1t {\tt \$} jel vezet be, e1s ugyanannyi {\tt \$} jel za1r le. Ilyen mo1don a \HiOn/ ne1gy u2zemmo1dban tud dolgozni. \begin{itemize} \item[1] Mind az elva1laszta1s, mind pedig az e1kezetek bejelo2le1se be van kapcsolva. Ez az az a1llapot, ahogy a \HiOn/ a fa1jl eleje1n indul. Ilyenkor a \HiOn/ a {\tt @} karaktereket ko2zo2nse1ges karakterke1nt kezeli. % \item[2] Az elva1laszta1s bejelo2le1se ki van kapcsolva, de az e1kezetek a1talaki1ta1sa \TeX\ forma1ra be van kapcsolva. Erre az u2zemmo1dra egy {\tt |||@@} karakterrel lehet a1tkapcsolni, amely uta1n nem a1ll egy ma1sik ugyanolyan karakter. Ebben az u2zemmo1dban a \HiOn/ a {\tt |||@@} karaktereket ko2zo2nse1ges karakterke1nt kezeli, de az elso3 {\tt @} karakterre visszakapcsol az 1 u2zemmo1dba. A bekapcsolo1, illetve kikapcsolo1 karakterek nem keru2lnek bele az a1tkonverta1lt fa1jlba. % \item[3] Mind az elva1laszta1sok bejelo2le1se, mind pedig az e1kezetek a1talaki1ta1sa ki van kapcsolva. Ezt az u2zemmo1dot a {\tt||||@@} jellel lehet bekapcsolni. A ke1t {\tt|||@@} jel ko2zo2tt nem lehet semmilyen ma1s karakter, me1g szo1ko2z sem. Ebben az u2zemmo1dban a \HiOn/ a {\tt|||@@} karaktert ko2zo2nse1ges karakterke1nt kezeli, e1s ko2zo2nse1ges karakterke1nt kezel egy {\tt @} karaktert is, ha nem a1ll ko2zvetlenu2l uta1na egy ma1sik {\tt @} karakter. Az u2zemmo1dot kikapcsolni ke1t {\tt @} karakterrel lehet, amelyeknek ko2zvetlenu2l egyma1s uta1n kell a1llniok. A bekapcsolo1, illetve kikapcsolo1 jelek nem keru2lnek bele az a1tkonverta1lt fa1jlba. Ez a leggyorsabb u2zemmo1d, i1gy ha egy fa1jl eleje1n sok makro1 defini1cio1 van--amelyet a \HiOn/ ugyan nem ba1ntana--, aze1rt e1rdemes bekapcsolni ezt az u2zemmo1dot a gyorsabb mu3ko2de1s kedve1e1rt. % \item[4] Matematikai mo1d, amelyet a \TeX\ {\tt \$} vagy {\tt \$\$} jele vezet be, e1s amelyet ugyancsak egy {\tt \$} vagy {\tt \$\$} jel za1r le. Ebben az u2zemmo1dban a \HiOn/ minden {\tt \$}-{}to1l ku2lo2nbo2zo3 karaktert ko2zo2nse1ges karakterke1nt kezel. A bekapcsolo1, illetve kikapcsolo1 jelek bekeru2lnek a konverta1lt fa1jlba is, hiszen azok a \TeX\ sza1ma1ra is e1rtelmezendo3ek. A \HiOn/ nem kapcsol a1t matematikai mo1dba, ha a {\tt \$} jelet egy backslash elo3zi meg. \end{itemize} Ha a szo2vegbe {\tt |||@@} jelet akarsz i1rni, akkor elo3szo2r ki kell kapcsolni az elva1laszta1st e1s az e1kezetek a1talaki1ta1sa1t ke1t {\tt |||@@} jellel, majd bege1pelni a {\tt |||@@} jelet, majd pedig visszakapcsolni az 1 u2zemmo1dra ke1t {\tt @} jellel. I1gy a ve1gso3 karaktersorozat {\tt|||||@@@@} lesz. (Feladat: hogyan kell lei1rni ezt a karaktersorozatot?) A 2 e1s 3 u2zemmo1dok ko2zo2tt nem lehet csak az 1 u2zemmo1don keresztu2l a1tkapcsolni. Matematikai mo1d elo3fordulhat a 2 e1s a 3 u2zemmo1don belu2l. Ilyenkor a matematikai mo1d, azaz a 4 u2zemmo1d leza1ra1sa uta1n a ko2ru2lvevo3 u2zemmo1dba keru2l vissza a \HiOn/. \section{|Statisztika}@ %% Nem a KSH csina1lja (Statesztike) %====================== \typeout{||Statisztika@@} A \HiOn/ a munka befejezte1vel egy statisztika1t i1r ki a ke1pernyo3re arro1l, hogy mit is csina1lt. A {\tt hion.hun} fa1jl fordi1ta1sakor pe1lda1ul a ko2vetkezo3t i1rta ki: ||\begin{verbatim} HiOn report 40577 TeX karaktert i1rtam ki. 7039 szo1 volt, ebbo3l 664 veze1rlo3 szo1. 47 bonyolult, discretionary elva1laszta1s volt. 665 alkalommal meru2lt fel ligatu1ra ve1delem, e1s ebbo3l 1 alkalommal kellet discretionary formula1t alkalmaznom. 5454 alkalommal vizsga1ltam igeko2to3 kezdetu3 szavakat e1s 304 alkalommal tala1ltam is. 122 alkalommal vizsga1ltam meg a szo1 to2bbi re1sze1t is, 66 alkalommal tala1ltam valo1di igeko2to3t. 6374 alkalommal kerestem sa1g se1g ke1pzo3t, e1s 8 alkalommal tala1ltam. Szi1vesen ma1skor is. \end{verbatim}@@ Ez azt jelenti, hogy ko2ru2lbelu2l $40577$ darab karakter keru2lt a \TeX\ fa1jlba. O2sszesen $7039$ szo1t dolgozott fel a \HiOn/ e1s ebbo3l $664$ alkalommal a szo1 veze1rlo3 szo1 volt. $47$ alkalommal tala1lt olyan szo1t a \HiOn/ amelyikben hosszu1 o2sszetett ma1ssalhangzo1 volt. $665$ olyan betu3pa1rost, vagy betu3ha1rmast tala1lt a program, amelyiket ligatu1rake1nt szed ki a \TeX, azonban csak $1$ alkalommal szerepeltek ezek a karakterek olyan helyen, hogy ko2zo2ttu2k a magyar nyelv elva1laszta1si szaba1lyai szerint elva1laszta1st kellett volna megengedni. A1ltala1ban magyar szo2vegben csak akkor fordulnak elo3 elva1lasztando1 ligatu1ra1t tartalmazo1 szavak ha az szakszo2veg, e1s olyan szavakat tartalmaz, mint effekti1v.\footnote{Egye1bke1nt a dokumenta1cio1ban ez az a szo1, amit a \HiOn/ megtala1lt.} $5454$ alkalommal vizsga1lta meg a \HiOn/ a szavak eleje1t, hogy nem igeko2to3-e a prefixu2k. Ebbo3l $304$ alkalommal tala1lta u1gy, hogy formailag a szo1 kezdete igeko2to3, e1s ebbo3l $182$ alkalommal olyan igeko2to3ro3l volt szo1, amely mindig igeko2to3ke1nt jelenik meg a szo1 eleje1n, e1s i1gy nem kellett megvizsga1lni a szo1 tova1bbi re1sze1t. $122$ olyan alkalom volt, amikor csupa1n a szo1 eleje1nek a vizsga1lata nem do2nto2tte el, hogy a kezdet igeko2to3, e1s meg kellett vizsga1lni a szo1 tova1bbi re1sze1t is. Ebbo3l $66$ alkalommal tala1lt a \HiOn/ igazi igeko2to3t. $6374$ alkalommal ne1zte meg a \HiOn/, hogy a szo1ban szerepel-e a csa1g, cse1g vagy a zsa1g illetve zse1g karakter sorozat. $8$ alkalommal volt. A 'q' opcio1val lehet megke1rni a \HiOn/-t arra, hogy ne i1rjon ki statisztika1t. \section{|Karbantarta1s}@ %% maximum 10000km-enke1nt szervi1z!!! %======================== \label{KARB} \typeout{||Karbantarta1s@@} Mint minden program, valo1szi1nu3leg a \HiOn/ sem hibamentes. Szinte biztos, hogy maradtak benne hiba1k. A \HiOn/ mu3ko2de1se1nek, illetve a sege1dfa1jlok tartalma1nak meg kell felelnie az ebben a lei1ra1sban szereplo3 a1lli1ta1soknak. Minden ma1sfajta mu3ko2de1s hiba1nak sza1mi1t. Egyes helyeken a program olyan felte1teleket is elleno3riz, amelyeknek nem szabad elo3fordulniok. Ha a felte1tel me1gis elo3fordul, akkor egy hibajelze1st genera1l, ami valahogy i1gy ne1z ki: \begin{verbatim}|| HION INTERNAL ERROR STATE=xxx PHASE=yyy MESAG=ssssss Please contact: h3309ver@ella.hu \end{verbatim}@@ Ha ezt produka1lja a program, akkor i1rd meg, a ke1t {\tt|| xxx}@@ e1s {\tt|| yyy}@@ sza1mot, a {\tt|| ssssss}@@ szo2veget, a \HiOn/ verzio1 sza1ma1t, a kibocsa1ta1si da1tuma1t (ez a verzio1 sza1m mellett jelenik meg az 1.6 verzio1 egyes pe1lda1nyaina1l e1s a felett) egy olyan bemeno3 szo2veget, amire ezt produka1lta a program, az opcio1kat, amit haszna1lta1l, az opera1cio1s rendszer e1s a C fordi1to1 ti1pusa1t e1s verzio1 sza1ma1t.\footnote{Ha lehet, akkor a leheto3 legro2videbb olyan szo2veget ku2ldd, ami ezt produka1lja.} Ha a program egyszeru3en meghal (ez PC-n fordulhat elo3) vagy {\tt Segmentation fault} hibajelze1st ad (ez inka1bb UNIX-ra jellemzo3), vagy egy hosszabb szo2veget i1r ki (pl. VMS rendszer alatt) akkor hasonlo1 dolgokat i1rja1l mint fent, e1s i1rd meg, hogy mit i1rt ki az opera1cio1s rendszer. Ha a program valamit rosszul va1laszt el, e1s i1gy ke1szi1t el egy efa1ntot, e1s biztos, hogy rosszul va1laszt el, akkor i1rd meg, hogy mit va1laszt el rosszul. Vigya1zz! Ha a kinyomtatott szo2vegben valami rosszul van elva1lasztva, akkor me1g mindig lehet, hogy a \TeX\ va1lsztott el rosszul egy olyan helyen, ahol a \HiOn/ nem jelo2lt be elva1laszta1st. Ne1zdd meg a genera1lt \TeX\ szo2veget, hogy be van-e jelo2lve az elva1laszta1s! Ha nem fogadja el a \TeX\ vagy a \LaTeX\ a genera1lt szo2veget, akkor valo1szi1nu3leg ma1r az eredeti .hun szo2veg sem volt jo1. Ilyesmi miatt csak akkor i1rja1l, ha {\def\n{nagyon }\n\n\n\n\n\n\n\n }biztos vagy benne, hogy a \HiOn/ tolja el a dolgot. Ha \LaTeX-et haszna1lsz, akkor elleno3rizd le, hogy nem felejtetted-e el a {\tt -l} opcio1t. Ha a genera1lt fa1jl nem egyezik meg azzal, mint amit te va1rna1l a \HiOn/\discretionary{-}{}{-}to1l, akkor gondold ve1gig, hogy nem te e1rtette1l-e fe1lre valamit a lei1ra1sbo1l. Ha u1gy gondolod, hogy nem, e1s a \HiOn/ hiba1zik, akkor i1rd meg nekem, e1s akkor me1g mindig lehet, hogy azt fogom va1laszolni, hogy amit tala1lta1l, az nem hiba, hanem i1gy kell, hogy legyen. Ha ba1rmi egye1b gondod van, akkor csak i1rja1l nyugodtan, ve1gu2l is ba1rki ke1rdezhet butasa1got, lehet, hogy legko2zelebb e1n teszek fel neked egy hu2lye ke1rde1st. Eddigi e1letemre e1s szoka1saimra visszatekintve azt mondhatom, hogy eMail-re a1ltala1ban me1g aznap szoktam va1laszolni\footnote{Ez nem igaz, mio1ta az ||{\tt ELLA}@@ rendszerhez van szerencse1m.}, leve1lre egy e1ven belu2l. Az eMail ci1mem megtala1lhato1 a programban. Ha nem tudsz eMailen keresztu2l ele1rni, akkor i1rja1l egy ko2zo2nse1ges levelet a ko2vetkezo3 ci1mre: \noindent Verha1s Pe1ter \\ Patyolat utca 4. \\ Budapest XV. keru2let \\ 1155 \\ Ugye nem kell mondani, hogy HUNGARY illetve EUROPE ha Magyarorsza1gon ki1vu2lro3l i1rna1d a levelet. {\bf Nagyon fontos}, hogy ha levelet i1rsz, e1s van, akkor i1rd meg az eMail ci1medet. Nem i1ge1rem, de valo1szi1nu3, hogyha ku2ldesz nekem egy megfelelo3en megci1mzett e1s felbe1lyegzett, egy IBM PC lemez befogada1sa1ra e1s posta1za1sa1ra alkalmas bori1te1kot, e1s melle1kelsz egy IBM PC DS DD, vagy DS HD lemezt (nagyot, pici meghajto1m nincs) akkor elku2ldo2m a \HiOn/ aktua1lis va1ltozata1t. Ha ebben a dokumenta1cio1ban, vagy ba1rmely ma1s fa1jlban helyesi1ra1si hiba1t tala1lsz, akkor arra ke1rlek, hogy azt rajtam ki1vu2l ne a1ruld el senkinek\footnote{A szo2vegben mindenhol a szabva1nyos i1ra1smo1dot haszna1ltam, azaz fa1jl e1s ba1jt nem pedig file vagy byte. Lehet szeretni, uta1lni, de ez a helyes.}. \section{|To2rte1nelem}@ %%amit mindig u1jrai1rnak, u1jrai1rnak... %======================= \typeout{||To2rte1nelem@@} \begin{itemize} % a szu2linapom \item {\tt 1.0} A \HiOn/ program elso3 va1ltozata 1991. ma1jus 29-e1n keru2lt a nagyko2zo2nse1g ele1. Etto3l kezdve a program ele1rheto3 az XMAIL rendszer SENDDOC parancsa1val. % \item {\tt 1.1} Az elso3 va1ltozatban volt egy ge1pele1si hiba, ami sajnos lefordult, de UNIX rendszer alatt {\tt Segmentation fault} hibajelze1st adott. Ez a va1ltozat ezt kijavi1totta, e1s az XMAIL rendszerbe is el lett ku2ldve a javi1tott va1ltozat 1991. ju1nius 5-e1n. % \item {\tt 1.2} Eddig a va1ltozatig a program lenyelte a bemenet utolso1 sora1t, ha annak az utolso1 karaktere valamilyen maga1nhangzo1 volt. Ekkor ugyanis a program va1rt egy lehetse1ges e1kezetre, e1s a fa1jl ve1ge karakterne1l nem za1rta le a sort, e1s i1gy az nem keru2lt kii1ra1sra. A hiba tipikusan jelentkezett egy \TeX\ fa1jl utolso1 \verb+\bye+ sora1na1l, ha azt nem za1rta le u1jsor karakter. Ebben a va1ltozatban ez a hiba ma1r nincs 1991. ju1lius 2-to1l. % \item {\tt 1.2} A program \LaTeX\ u2zemmo1dban felismeri a \verb+\( \)+ valamint \verb+\[ \]+ matematikai mo1dokat. Egy hiba miatt matematikai mo1d uta1n ne1ha egy szo1ko2z keru2lt a kimenetbe. Ez is ki lett javi1tva. Me1g mindig csak 1.2 verzio1. % \item {} Megjelent {\em Benko3~Tiborne1, Poppe~Andra1s, Benko3~Tibor: {\it Bevezete1s a BORLAND C++ programoza1sba{}\/}, |ComputerBooks@, Budapest, 1991.} ci1mu3 ko2nyv, amelynek a szede1se a \HiOn/ preprocesszorral e1s \LaTeX -hel ke1szu2lt. 1991. okto1ber 21. % \item {\tt 1.2} A megva1ltozott eMail ci1m kijavi1ta1sra keru2lt mind a programban, mind pedig a dokumenta1cio1s fa1jlokban. Ez nem akkora va1ltoza1s, hogy u1j verzio1 legyen. 1991. okto1ber 21. % \item {\tt 1.2} U1j opcio1, a \verb+'a'+, keru2lt bevezete1sre. Sajnos a \verb+'b'+ ma1r foglalt. 1991. okto1ber 22. % \item {\tt 1.3} Ke1t hiba ki lett javi1tva. Az egyik az volt, hogy ha egy |\verb+|+@ jellel kikapcsoltuk az elva1laszta1st, akkor a kikapcsolt re1szben a tova1bbi |\verb+|+@ jeleket a \HiOn/ megette. Ez tipikusan jelentkezett egy \LaTeX\ \verb+tabular+ ko2rnyezetben. A ma1sik hiba az volt, hogy a \verb+\+ karaktert a \HiOn/ szo1elemnek tekintette, e1s i1gy ha egy szo1ra valaki ko2zvetlenu2l ra1i1rt egy \TeX\ veze1rlo3 szekvencia1t, akkor a \HiOn/ nem dolgozta fel a szo1t. Ez a hiba most ki lett javi1tva. 1991. november 26. % \item {\tt 1.4} A \HiOn/ felismeri a ``meg'' igeko2to3t akkor is, ha az uta1na ko2vetkezo3 ige ``gy'' betu3vel kezdo3dik. Hasonlo1 mo1don lett kezelve a ``gy'' betu3vel kezdo3do3 melle1knevek felso3foka. U1j opcio1 a \verb+p+ lett bevezetve, e1s a \HiOn/ mostanto1l nem ba1ntja a nem \verb+\+ karakterrel kezdo3do3 \TeX\ kulcsszavakat sem. 1991. december 10. % \item {\tt 1.5} A \HiOn/ ne1ha1ny leguto1bbi verzio1ja nem is fordult le VMS alatt csak kisebb mo1dosi1ta1sal. Ez a hiba most deru2lt ki, e1s ki is lett javi1tva. Mostanto1l ismeri a DEC |International@ karakter kioszta1sa1t is a program. Figyelembe veszi a kontroll karaktereket is a program, e1s az ege1sz sort be1ke1nhagyja a \verb+\doc+\dots\verb+yle+, valamint az \verb+\addc+\dots\verb+line+ veze1rlo3 szavak uta1n. Olvassa a {\tt hion\_opt} ko2rnyezeti va1ltozo1t, e1s ke1t u1j opcio1 is szu2letett, a {\tt +} e1s a {\tt :}. 1992. ma1jus 18. % \item {\tt 1.6} Apro1bb javi1ta1sok to2mkelege. % \item {\tt 1.7} A \HiOn/ mostanto1l kezdve kezeli az o2sszetett szavakat is egy kive1telszo1ta1r segi1tse1ge1vel. 1992. ju1lius 25. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% 07-25-92 09:02pm07-25-92 09:02pm07-25-92 09:03pm07-25-92 09:03pm %% %% 1992. ju1lius 25. a barcelo1nai olimpia nyito1napja 07-25-92 09:02pm %% %% %% 07-25-92 09:02pm07-25-92 09:02pm07-25-92 09:02pm07-25-92 09:02pm %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \item {\tt 1.7+} Ne1ha1ny u1j fu2ggve1ny prototi1pussal lett definia1lva, e1s eze1rt K\&R fordti1to1k nem bi1rta1k lefordi1tani a \HiOn/-t. Ez ki lett javi1tva. Kocsis Tama1s javaslata1nak megfelelo3en ha a \HiOn/ az aktua1lis direktoriban nem tala1lja a {\tt dcb} fa1jlt, akkor DOS e1s VMS alatt megne1zi abban a direktoriban ahol a ve1grehajthato1 fa1jl van. Szinte1n Kocsis Tama1s hi1vta fel a figyelmemet arra a hiba1ra, hogy a \HiOn/ meghi1vta a {\tt usage()} fu2ggve1nyt abban az esetben is, ha a {\tt HION\_OPT} va1ltozo1ban volt definia1lva opcio1, de a parancssorban nem szerepelt ma1s, mint a {\tt hion} parancs. Megszu3nt a {\tt hion\_opt} ko2rnyezeti va1ltozo1, e1s minden opera1cio1s rendszer alatt {\tt HION\_OPT} haszna1lando1. \end{itemize} \section{|Gyakori ke1rde1sek}@ \label{FAQ} %============================= \typeout{||FAQ@@} A \HiOn/ soha sem fog to2ke1letesen mu3ko2dni. Ezt u1gy kell e1rteni, hogy a \HiOn/ ba1rmely verzio1ja1hoz lehetett, e1s lehet majd genera1lni olyan \verb+hun+ fa1jlt, amire a \HiOn/ nem azt a kimenetet produka1lja, amit a felhaszna1lo1 elva1rna. Ennek a legegyszeru3bb pe1lda1ja az, hogyha a \verb+\+ karakter ko1d oszta1lya1t a1ta1lli1tjuk, e1s valamely ma1s karaktert haszna1lunk ||escape@@ karakternek, a \HiOn/ akkor is a \verb+\+ karakterrel kezdo3do3 szavakat fogja be1ke1nhagyni. Ha minden leheto3se1get figyelembe akarna1nk venni, akkor egy olyan programot kellene i1rni, aminek a bonyolultsa1ga legala1bb akkora lenne, mint a \TeX\ rendszere1, akkor pedig ma1r egyszeru3bb egy magyar \TeX-et ke1szi1teni\footnote{Van is valami ilyen, a Ma\TeX.}. A \HiOn/ ce1lja az volt, hogy egy olyan preprocesszor legyen, amelyik egyszeru3, ro2vid, hordozhato1. Eze1rt van az is, hogy a \HiOn/ egyetlen egy C programfa1jlban keru2lt terjeszte1sre. I1gy mindenkinek le kell tudnia fordi1tani, nem vesznek el fa1jlok a ma1sola1s ko2zben, nem kell ||{\tt makefile}@@-okkal bi1belo3dni. A program fejlo3dik, u1jabb verzio1k la1tnak napvila1got, e1s a felhaszna1lo1k ke1re1seit is figyelembe ve1ve fejlo3dik a program. Ugyanakkor ido3ro3l ido3re vannak olyan ki1va1nsa1gok, amelyeknek a teljesi1te1se nem rea1lis, a megvalo1si1ta1s tu1l bonyolult lenne, ugyanakkor a haszna1lat ko2nyebbse1ge ezt nem ellensu1lyozna1. Egy ilyen ke1re1s volt az, hogy a \HiOn/ ismerje fel matematikai mo1don belu2l a nem matematikai mo1dban levo3 re1szeket. Ehhez a \HiOn/-nak elemeznie kellene a matematikai mo1dban i1rt szo2veget, e1s egy olyan funkcio1t valo1si1tana meg, amire csak ritka1n van szu2kse1g, e1s megfelelo3 haszna1lattal kikeru2lheto3. Persze mit jelent a megfelelo3 haszna1lat? Van amikor a va1lasz egyszeru3, e1s van amikor nem maga1to1l e1rteto3do3. Az ilyen ke1rde1sekre szeretne1k va1laszt adni ebben a fejezetben. \subsection{|Hogyan i1rjak egy {\tt |} jelet?@} %============================================== A dolog rendki1vu2l egyszeru3. Ki kell kapcsolni a \HiOn/ mu3ko2de1se1t ke1t ||{\tt |}@@ jellel, azaz be kell i1rni: ||{\tt ||}@@. Ezuta1n be kell I1rni a |||@@ jelet, e1s vissza kell kapcsolni ke1t @ jellel, azaz be kell i1rni: @@. I1gy a ve1gso3 karakter sorozat, ami a kimeneti \TeX\ fa1jlban meg fog jelenni: ||{\tt |||@@@@}. Most ma1r csak az a ke1rde1s, hogy ezt a karakter sorozatot hogyan kell kiszedni. \subsection{|Hogyan i1rjak egy @@| jelet?@} %======================================== A \HiOn/ bekapcsolt a1llapota1ban a @ jel ugyan olyan karakter, mint ba1rmely ma1s betu3. Egyszeru3en be kell ge1pelni\footnote{A1ltala1ban a SHIFT e1s a {\bf 2} gombok egyu2ttes lenyoma1sa1val e1rheto3 el.}. \subsection{|Bekapcsola1s matematikai mo1dban?@} %=============================================== Matematikai mo1dban is lehet olyan szo2veg, amely nem ke1plet. Ilyen lehet egy \verb+\hbox+ , vagy egy \verb+\footnote+ argumentuma. Azt szeretne1nk, hogy a \HiOn/ ezekre a szo2vegekre is mu3ko2djo2n, hogyan lehet bekapcsolni? Nem szabad engedni, hogy a \HiOn/ kikapcsoljon a matematikai mo1d kezdete1t jelzo3 {\tt \$} jelne1l, ezt pedig u1gy lehet ele1rni, ha ma1r kikapcsolt a1llapotban van. I1gy a {\tt \$} jel helyett ||{\tt ||}@@{\tt \$}-t kell i1rni, illetve {\tt \$\$} helyett ||{\tt ||@@\$\$} jelsorozatot e1s a matematikai mo1d ve1ge1t jelzo3 {\tt \$} vagy {\tt \$\$} helyett {\tt \$@@} e1s {\tt \$\$@@} jeleket. I1gy a \HiOn/ a matematikai mo1don belu2l ugyan u1gy kikapcsolt a1llapotban lesz, mintha a {\tt \$} vagy {\tt \$\$} jel kapcsolta volna ki, de a @@ jelekkel ba1rmikor bekapcsolhatjuk, e1s a ||{\tt ||}@@ jelekkel ba1rmikor isme1t kikapcsolhatjuk a mu3ko2de1se1t. Egy dologra kell odafigyelni: {\sl A matematikai mo1d ve1ge1n a \HiOn/ legyen kikapcsolt a1llapotban,} ellenkezo3 esetben a matematikai mo1dot kikapcsolo1 {\tt \$} vagy {\tt \$\$} jelet matematikai mo1d kezdete1nek fogja tekinteni, e1s felborul. \subsection{|A \HiOn/ to2nkreteszi a {\tt tabular} ko2rnyezetet}@ %=============================================================== Igen. Ezt u1gy lehet elkeru2lni, hogy a \verb+\begin{tabular}{}+ elo3tt ke1t {\tt |||@@} jellel kikapcsoljuk a \HiOn/-t, e1s uta1na visszkapcsoljuk ke1t {\tt @} jellel. Ez tipikusan egy olyan proble1ma, amelynek a figyelembe ve1tele a \HiOn/-to1l tu1l nagy ero3feszi1te1st ige1nyelne. \subsection{|Szt-ring e1s szt-racsatella\dots}@ %============================================= Az 1.5 verzio1 elo3tt volt a \HiOn/-ban egy algoritmus hiba e1s ezt a ke1t szo1 rosszul va1lasztotta el. Haszna1lj 1.5 vagy anna1l magasabb verzio1t. \subsection{|Malac-sa1g}@ %======================== A \HiOn/ a sa1g se1g ke1pzo3ket figyelembe veszi. Ezekkel a ke1pzo3kkel csak akkor kell foglalkozni, ha elo3ttu2k c vagy z betu3 a1ll, mert ilyenkor az algoritmus cs-nek vagy zs-nek tekinti a ke1pzo3 elo3tti utolso1 e1s a ke1pzo3 elso3 betu3je1t. I1gy a malacsa1g szo1t a program |ma-la-csa1g@-ke1nt va1lasztana1 el. Az 1.5 verzio1 a szavakban a csa1g, cse1g, zsa1g e1s zse1g karaktersorozatokban a a dupla betu3ket felbontja e1s i1gy azok helyesen va1laszto1dnak el. Ha valamie1rt akadna olyan szo1, amely ezen karaktrersorozatok ko2zu2l ba1rmelyiket tartalmazza, e1s me1gsem sa1g se1g ke1pzo3s, akkor a szo1t a {\tt |||@@} e1s {\tt @} jelek ko2ze1 kell za1rni e1s ke1zzel bei1rni az elva1laszta1st. E1n nem tudok ilyen szo1ro1l, i1gy csak egy rossz pe1ldake1nt, ha a malacsa1g szo1t rosszul akarjuk elva1lasztani, akkor {\tt |||ma\verb+\-+la\verb+\-+cs{\sf\'{\tt a}}g@@@} az i1ra1smo1d. \subsection{|Haszna1lhatom a \HiOn/-t csak karakter konverzio1ra?}@ %================================================================== Igen. Ehhez ki kell kapcsolni a ku2lo2nbo2zo3 elva1laszta1sokat, azaz alkalmazni kell a {\tt m, y} e1s {\tt s} opcio1kat. Ekkor csak az e1kezetek bejelo2le1se to2rte1nik, ami alape1rtelmeze1sben \TeX\, az {\tt e} opcio1 egyszeri haszna1lata1val Ma\TeX\ ko1d, ke1tszeri alkalmaza1sa1val IBM karakter ke1szlet, a ha1romszori alkalmaza1sa1val pedig a DEC karakter ke1szlet. A {\tt mysx} opcio1k egyu2ttes alkalmaza1sa1ra haszna1lhato1 a {\tt :} (ketto3spont) opcio1. A \HiOn/ ilyenkor sem konverta1lja a1t a {\tt \%} jel uta1n a1llo1 \TeX\ megjegyze1seket. Ha te1nyleg mindent a1t kell konverta1lni, akkor a {\tt huon} funkcio1t kell haszna1lni. \subsection{|Milyen gyors a \HiOn/}@ %=================================== A kora1bbi verzio1khoz ke1pest az 1.4 e1s me1ginka1bb az 1.5 verzio1k meg lettek gyorsi1tva, i1gy a \HiOn/ elegendo3en gyors. Egy 386AT 33MHz ge1pen a hion.hun fa1jl fordi1ta1sa alig to2bb mint 8 ma1sodperc. Ugyanakkor a program fele1pi1te1se olyan, hogy a bonyolult funkcio1k, mint az igeko2to3k figyele1se, vagy a ligatu1ra ve1delem kikapcsola1sa nem gyorsi1tja meg le1nyegesen a futa1st, eze1rt csak sebesse1gi okok miatt ezeket nem e1rdemes kikapcsolni. A kive1telszo1ta1r beolvasa1sa ele1g sok ido3t vesz ige1nybe, eze1rt ne1ha e1rdemes lehet ezt a {\tt -r} opcio1val az o2sszetett szavak figyele1se1t kikapcsolni. \subsection{|{\it H-ogy} e1s ta1rsai}@ %===================================== \label{HIONHYPH} A \TeX\ alaphelyzetben inka1bb tu1l hosszu1 sorokat csina1l, mint rosszul va1laszt el, vagy tu1l nagy szo1ko2zo2ket hagy. Ilyenkor egyes sorok tu1l lo1gnak a bal oldali margo1n. Ha ez gondot okoz, pl. nagyon ro2vid sorok esete1n, akkor haszna1lni lehet a \string\sloppy parancsot. Ekkor viszont, amellett, hogy nagyobbak lesznek a szo1ko2zo2k a \TeX\ laza1bban veszi az elva1laszta1st is, e1s elva1lszt olyan helyen is, ahol nem lett bejelo2lve. Ilyenkor keletkeznek az olyan elva1laszta1sok, mint \hbox{\it h-ogy}. Ezt u1gy lehet elkeru2lni, hogy az ilyen szavakat felsoroljuk egy \string\hyphenation parancsban, amely megmondja a \TeX-nek, hogy az adott szavakat hogyan kell elva1lasztani. Jelen esetben azt mondja meg, hogy sehogy sem kell ezeket a szavakat elva1lasztani. A \HiOn/ 1.7 verzio1ja1to1l kezdve ha az {\tt -n} opcio1t nem haszna1ljuk az ilyen, ke1t karakterne1l hosszabb szavak uta1n a \HiOn/ egy \verb+\-+ jelet tesz. Ez a \TeX\ sza1ma1ra azt jelenti, hogy a szo1t mi va1lasztjuk el, e1s azokat a szavakat, amelyekben aka1r \verb+\-+, aka1r {\tt |discretionary}@ elva1laszta1s szerepel nem va1lasztja el, csak a megadott helyeken. I1gy a \TeX\ nem fogja elva1lasztani ezeket a szavak sem. \subsection{|Nem jo1 a szo1ta1r?}@ %================================= Ha a szo1ta1r fordi1ta1sakor a {\tt hion -5} parancs kiada1sa uta1n egy csomo1 hibau2zenet jelenik meg a ke1pernyo3n, melyek szerint szavak feleslegesek, vagy lefagy a program, akkor valo1szi1nu3leg rossz memo1riamodellben lett lefordi1tva. Csak a {\tt HUGE} mo1dban lefordi1tott program mu3ko2de1se garanta1lt (az is csak annyira, mint a \ref{JOGOK} fejezetben i1rva vagyon). \section{|A jo2vo3 u1tja}@ \label{JO2VO3} %========================= \typeout{||A jo2vo3 u1tja@@} A \HiOn/-t folyamatosan karban tartom, e1s az esetleges felle1po3 hiba1kat kijavi1tom. Lehet, hogy nemsoka1ra tesztelni fogom a \HiOn/-t Macintosh ge1peken, e1s azok e1kezetes karaktereit is ismerni fogja a program. Mivel az 1.7 verzio1na1l az opcio1kkal kezdek kifogyni a az ABC betu3ibo3l, eze1rt valo1szi1nu3, hogy a ko2vetkezo3 verzio1kban radika1lisan meg fog va1ltozni az opcio1 kezele1s, e1s ezzel a parancssor forma1tum nem lesz kompatibilis a kora1bbi verzio1kkal. Mivel az o2sszetett szavak szo1ta1ra1nak beolvasa1sa ara1nylag sok ido3t vesz ido3be, eze1rt fontolom, hogy a \HiOn/ veze1relheto3 legyen egy programfa1jllal, e1s egy elindi1ta1ssal to2bb fa1jlt is a1tkonverta1ljon. Ekkor csak egyszer kell beolvasni a kive1telfa1jlt. \section{|Jogok e1s garancia1k}@ %%szo2rnyu3, mi? %=============================== \label{JOGOK} \typeout{||Jogok e1s garancia1k@@} Az ebben a fejezetben foglaltak kiza1ro1lag a program \hionversion\ verzio1ja1ra e1rve1nyesek. A kora1bbi, illetve ke1so3bbi va1ltozatokra a megfelelo3 {\sf Felhaszna1lo1i} lei1ra1s szo2vege vonatkozik. Jogok vannak, garancia1k nincsenek. Kezdju2k a garancia1kkal! \subsection{|Garancia1k}@ %------------------------ Nincs garancia arra, hogy a program azt csina1lja, amit ebben a szo2vegben lei1rtam. Arra sincs garancia, hogy nem teszi to2nkre a lemezt, a sza1mi1to1ge1pet stb. Ez nem jelenti azt, hogy to2nkreteszi, de ha me1gis, akkor engem eze1rt nem lehet felelo3sse1gre vonni. Ve1gu2l is adom a C forra1st e1s nem csak egy elleno3rizhetetlen, vi1rusokkal terhes {\tt com} vagy {\tt exe} fa1jlt. Nincs garancia arra, hogy ha valami nem jo1l mu3ko2dik, e1s i1rsz nekem, akkor va1laszolok, vagy kijavi1tom a hiba1t. Ez nem azt jelenti, hogy nem fogok va1laszolni, vagy nem fogom kijavi1tani a hiba1t. De ha nem e1rek ra1, nincs ge1pem, amin programozzak, vagy moziba kell mennem, akkor nem fogom kijavi1tani azonnal a hiba1t e1s esetleg va1laszolni sem fogok. Nincs garancia arra, hogy ba1rmit is betartok abbo1l, amit a \ref{JO2VO3} fejezetben i1rtam. Ez nem azt jelenti, hogy nem is akarom megtenni ezeket a dolgokat, de ha esetleg nem sikeru2l, akkor engem eze1rt nem lehet felelo3sse1gre vonni. Nincs garancia arra, hogy egy regisztra1lt felhaszna1lo1 e1rtesi1te1st kap egy u1jabb va1ltozat megjelene1se1ro3l. (Pillanatnyilag nem tudom, hogy hogyan tudna1m ezt megszervezni, de ha sikeru2l, akkor lesz ilyen szolga1ltata1s.) {\it Semmilyen felelo3sse1ggel nem tartozom azon nyomtatva1nyok tartalma1t illeto3en, amelyek a \HiOn/-nal ke1szu2ltek, me1g abban az esetben sem, ha az adott nyomtatva1ny elke1szi1te1se1hez a \HiOn/ haszna1lati joga1t megvette1k. A \HiOn/ haszna1lata1nak engede1lyeze1se, vagy haszna1lati joga1nak elada1sa egy adott, vagy to2bb, elo3re meg nem hata1rozott kiadva1nyhoz nem jelenti azt, hogy a kiadva1ny tartalma1val egyete1rtek, vagy azt ismerem. A kiadva1ny ba1rminemu3, kiado1i, szerzo3i vagy egye1b jogot se1rto3 tartalma1e1rt a kiadva1ny kiado1ja e1s szerzo3je az egyedu2li felelo3s. A \HiOn/-t csak ennek tudoma1sulve1tele1vel lehet haszna1lni.}\footnote{Reme1lem ez nem okoz gondot.} \subsection{|Jogok}@ %%e1s jo1gik %------------------- Ba1rkinek joga1ban a1ll a programot 30 napig kipro1ba1la1si ce1llal haszna1lni. Ha valakinek nem tetszik a program, akkor a 30 nap eltelte1vel leto2rli e1s elfelejti. Ha tetszik, akkor eldo2nti, hogy a program haszna1lata1val profithoz jut-e vagy sem. Ha az a ve1leme1nye, hogy a programot csak a diploma1ja1hoz, te1zise1hez, szerelmes leveleihez vagy valamilyen ma1s szeme1lyes szo2vege1hez haszna1lja, amibo3l nem sza1rmazik {\sl ko2zvetlen} anyagi haszna akkor egyetlen ko2telesse1ge regisztra1ltatnia maga1t, azaz ku2ldeni nekem egy eMailt (e1s % to2bbe1 ma1r nem kell meg\-gyo3zo3dni meggyo3zo3dni, hogy meg is e1rkezett) vagy ku2ldeni egy levelet. Fizetni nem kell. Ha a programot valamilyen olyan brossu1ra, fu2zet, ko2nyv ke1szi1te1se1hez haszna1lja amelyet azta1n sokszorosi1ta1s uta1n pe1nze1rt adnak el, de a befolyt o2sszeg csupa1n az {\sl o2nko2ltse1g}, teha1t a nyomda, ge1pi1ro1no3 stb fedeze1se1re szolga1l akkor me1g mindig ke1t eset lehetse1ges. Ha a kiadva1ny oktata1sra szolga1l, e1s oktata1si inte1zme1ny adja ki, akkor csak regisztra1ltatni kell a haszna1latot, azaz megi1rni nekem, hogy pontosan mihez is haszna1lta1k a programot, a kiadva1ny hivatkoza1sa1nak illetve az inte1zme1ny pontos megjelo2le1se1vel. Fizetni nem kell. Ha a fu2zet oktata1sra szolga1l, de nem oktata1si inte1zme1ny adja ki (pe1lda1ul tu3zve1delmi u1tmutato1 egy u2zemen belu2l), akkor szeme1lyes kapcsolat felve1tele uta1n eldo2ntju2k, hogy csak regisztra1ltatni kell a haszna1latot, vagy fizetni is kell e1rte. Nagy valo1szi1nu3se1ggel ele1g lesz regisztra1ltatni. Ha nem oktata1si inte1zme1ny e1s nem oktata1si ce1lra ad ki valamilyen nyomtatva1nyt, akkor szeme1lyes kapcsolat felve1tele uta1n eldo2ntju2k, hogy csak regisztra1ltatni kell a haszna1latot, vagy fizetni is kell e1rte. Ebben az esetben azonban az is elo3fordulhat, hogy nem engede1lyezem a \HiOn/ haszna1lata1t (pe1lda1ul biztos nem fogok hozza1ja1rulni, hogy fasiszta ro2piratok ke1szi1te1se1re haszna1lja1k). Ha a programot olyan kiadva1ny ke1szi1te1se1re haszna1lja1k, amelyik ko2zvetlen nyerese1get hoz, akkor mindenke1ppen fizetni kell e1rte egye1ni mega1llapoda1s e1s szerzo3de1s alapja1n. Ebben az esetben leheto3se1g van a program egyszeri haszna1lata1nak (egy kiadva1ny elke1szi1te1se1hez) a megve1tele1re, egy ido3intervallumra valo1 megve1tele1re, vagy a haszna1lati jogok ve1gleges megve1tele1re. Ha valaki azzal foglalkozik, hogy ke1ziratot \TeX\ forma1ra ge1pel, e1s ehhez haszna1lja a \HiOn/-t e1s a \HiOn/-nal te1nylegesen \TeX\ forma1ra hozott dokumentumot, vagy a nyomtatott szo2veget adja ki a keze1bo3l, e1s eze1rt pe1nzt kap, akkor szu2kse1ges a \HiOn/ haszna1lati joga1nak egy ido3intervallumra, vagy ve1gleges megve1tele. Ha a \HiOn/-t arra haszna1lja, hogy saja1t maga1nak munka ko2zbeni nyomtata1sokat ke1szi1tsen, de a \HiOn/-nal konverta1lt fa1jlt nem adja el, akkor csak regisztra1ltatni kell. Ebben az esetben azonban valo1szi1nu3, hogy aki megrendelte a \TeX\ forma1ra hoza1st, az rendelkezik a \HiOn/ haszna1lati jogaival, vagy egy a \HiOn/-nal kompatibilis programmal, ami ugyanazt elve1gzi, mint a \HiOn/. (Pillanatnyilag nem tudok ilyen programro1l, e1s nem hiszem, hogy e1rdemes lenne egy ma1sik programot i1rni.) A program ma1solhato1, tova1bbadhato1 ba1rmilyen ma1solhato1 me1dia1n a ko2vetkezo3 felte1telekkel: \begin{itemize} \item A program tova1bbada1sa1e1rt a ma1sola1si illetve postai ko2ltse1geken ki1vu2l nem ke1rhet pe1nzt senki, engem kive1ve. \item A programot csak va1ltozatlan forma1ja1ban lehet tova1bbadni. Ha valaki a program egy va1ltoztatott pe1lda1nya1t akarja tova1bbadni, akkor ko2teles az eredeti pe1lda1nyt is ma1solni. \item A programot csak forra1sszo2veg forma1ja1ban az o2sszes tova1bbi fa1jllal egyu2tt, amelyek lista1ja a \ref{FILIST}. fejezetben olvashato1, adhato1 tova1bb. \item A programot a fenti felte1telek betarta1sa mellet ba1rki, azaz nem csak regisztra1lt felhaszna1lo1, tova1bbadhatja. \end{itemize} Minden olyan kiadva1nynak, amely nem kevesebb mint \npeldany\ (\tpeldany) pe1lda1nyban keru2l kiada1sra, tartalmaznia kell valahol egy mondatot, amely utal arra, hogy a kiadva1ny a \HiOn/ program haszna1lata1val ke1szu2lt. Pe1lda1ul a {\sl Benko3 Tiborne1, Poppe Andra1s e1s Benko3 La1szlo1: {\it Bevezete1s a BORLAND C++ programoza1sba{},\/} Computer Books, Budapest 1991} ko2nyvben a ko2vetkezo3 szo2veg szerepel a ko2szo2netnyilva1ni1ta1s ma1sodik bekezde1se1ben: \begin{quotation} Ko2szo2net illeti Verha1s Pe1tert is, aki {\tt HION} nevu3 programja1t rendelkeze1su2nkre bocsa1totta. \end{quotation} Ezen kite1tel alo1l felmente1st lehet ke1rni a szerzo3to3l leve1lben, eMailen vagy szeme1lyesen. Kapni csak indokolt esetben. Minden olyan kiadva1nybo1l, amely nem kevesebb mint \npeldany\ (\tpeldany) pe1lda1nyban keru2l kiada1sra ke1rek egy tisztelet pe1lda1nyt. \section{|Regisztra1la1s}@ %%ju1lius 30-ig csak egy ember regisztra1lta % %%programot, o3 is a haverom, e1s aze1rt. %========================= \typeout{||Regisztra1la1s@@} Egy felhaszna1lo1 regisztra1la1sa leve1lben, vagy eMailen keresztu2l lehetse1ges. A regisztra1cio1 eMailen a {\tt reg.txt} fa1jlban levo3 ke1rdo3i1v kito2lte1se1vel e1s elku2lde1se1vel to2rte1nhet. eMailen egy regisztra1cio1 akkor to2rte1nt meg, ha visszajelze1s e1rkezett. Ha ke1t he1ten belu2l nem e1rkezik meg a va1lasz az eMailes regisztra1la1sra, akkor a regisztra1cio1t meg kell isme1telni leve1lben. Leve1lben a {\tt reg.hun} fa1jl \HiOn/ preprocesszorral valo1 konverta1la1sa1val, majd \LaTeX\ programmal valo1 fordi1ta1sa1val, kinyomtata1sa1val, az i1gy kapott ke1rdo3i1v kito2lte1se1vel e1s posta1n valo1 elku2lde1se1vel to2rte1nik. (Ne felejtsd el a -l opcio1t!) Egy kiadva1ny regisztra1la1sa hasonlo1 mo1don kell, hogy to2rte1njen a {\tt kiad.txt} e1s {\tt kiad.hun} fa1jlokkal. Egy kiadva1nyt akkor kell regisztra1lni, ha nem kevesebb mint \npeldany\ (\tpeldany) pe1lda1nyban keru2l kiada1sra. \section{|Ko2szo2netnyilva1ni1ta1sok}@ %%danke, tankju, szpaszi1ba %=================================== \typeout{||Ko2szo2netnyilva1ni1ta1sok@@} Mindenke1ppen meg kell, hogy emli1tsem {\bf To1th Ga1bort} hiszen o3 i1rta az ETEX programot. Amikor az ETEX megjelent, a \HiOn/ elso3 va1ltozata ma1r ke1sz volt, ez a va1ltozat azonban nem jelo2lte be az elva1laszta1sok helye1t. Mivel akkor az ETEX to2bbet tudott, mint a \HiOn/ 1.0 eze1rt a \HiOn/ nem keru2lt a nyilva1nossa1g ele1. Ke1so3bb aze1rt fejlesztettem tova1bb a \HiOn/-t, mert az ETEX-nek volt ne1ha1ny hia1nyossa1ga, amin nem tudtam magamat tu1ltenni. Egy magyar nyelvu3 \LaTeX\ szo2veg szerkeszte1se ko2zben a cimke1knek is magyar nevet adtam, e1s az ETEX az e1kezeteket kicsere1lte \TeX\ jelo2le1sre, amit ebben az esetben nem kellett volna, hogy tegyen. Az ETEX pedig az e1kezetek bei1ra1sa1t nem hajlando1 kikapcsolni, csak az elva1laszta1st. Ko2szo2net illeti {\bf Hollo1si Jo1zsefet}, aki az XMAIL rendszer le1trehozo1ja, e1s aki hajlando1 volt felvenni a \HiOn/-t a leke1rdezheto3 dokumentumok lista1ja1ban. Ko2szo2net illeti {\bf Kornai Andra1st}. eMailen keresztu2l ku2ldo2tt nekem egy magyar gyakorisa1gi [2] szo1ta1rbo1l egy kivonatot, amelynek alapja1n az igeko2to3k felismere1se1t ve1gzo3 programre1szt tudtam megi1rni. Ko2szo2nettel emli1tem {\bf Tihanyi La1szlo1} e1s {\bf Pro1sze1ki Ga1bor} neve1t, akik felhi1vta1k a figyelmemet az olyan szavak, mint {\sl kilencszer}, valamint {\sl igazsa1g} le1teze1se1re. O3k voltak azok, akik egy olyan szo1ta1rat bocsatottak a rendelkeze1semre, amelyben magyar szavak elva1lasztva szerepeltek, e1s amelynek a segi1tse1ge1vel elo3 tudtam a1lli1tani a {\tt hion.dct} fa1jlt. (La1sd me1g a \ref{COMPWORDS} fejezetet!) A \HiOn/ ke1t legakti1vabb felhaszna1lo1ja {\bf Poppe Andra1s} e1s {\bf Kocsis Tama1s}. Igen sok apro1 e1s keve1sbe1 apro1 hiba1t, hia1nyossa1got deri1tettek ki a \HiOn/ haszna1lata sora1n, e1s ezek most mind benne lenne1nek a programban ha nem veszik a fa1radsa1got, hogy figyelmeztessenek.\footnote{De vette1k, amikor pedig nem (ha volt ilyen), arro1l nem tudok.} \section*{|Irodalom}@ %=================== \noindent[1] {\it Donald E. Knuth}, The \TeX book, {\it Addison Wesley Publishing Company}, (1986) \noindent[2] {\it Andra1s Kornai}, Szo1ta1ri adatba1zis az akade1miai nagysza1mi1to1ge1pen, {\it Mu3helymunka1k a nyelve1szet e1s ta1rstudoma1nyai ko2re1bo3l}, 2. MTA Nyelvtudoma1nyi Inte1zet, Budapest, 65-79, (1986) \noindent[3] {\it Leslie Lamport}, \LaTeX\ A Document Preparation System, {\it Addison Wesley Publishing Company}, (1986) \vfill\eject \tableofcontents \typeout{|| Ne felejtsed el a HION programot regisztra1lni, ha haszna1lni akarod! @@} \end{document}