Matkönyv, technikai információk
Különbségek a nyomtatott és a PS/PDF megejelenéshez képest
Mivel a HTML oldalakat nem kötik azok a méretbeli és elrendezésbeli megkötések, mint a nyomtatott köteteket, a HTML formátumú megjelenítő készítésekor néhány dologban nem követtem a matkönyvek beosztását.
- A segítő lökések a feladatok és a megoldások között jelennek meg.
- A tanári kézikönyvek ugyanúgy témakörökre lebontva csoportosítva jelennek meg, mint a feladatgyűjtemények. Mivel az egyes évfolyampárok tanári kézikönyveinek bevezetői nem tartoznak témakörhöz, ezek külön jelennek meg.
- A 120-nál több feladatot tartalmazó fejezetek automatikusan legfeljebb 120 feladatot tartalmazó oldalakon jelennek meg, hogy a konvertálás során ne történjen időtúllépés (mert a PHP szkript nem futhat 30 másodpercnél tovább).
- Alapértelmezés szerint a tanári kézikönyvekben is megjelennek a feladatok, a segítő lökések és a megoldások.
- Alapértelmezés szerint (az M, S betűk helyett) linkek mutatnak a feladatgyűjteményben, ill. a tanári kézikönyvben a feladathoz kapcsolódó többi szövegrészre. Ha "A keret és a linkek eltűntetése" linkre kattintunk, amellett, hogy eltűnik a navigációs keret, ezek helyett a linkek helyett a feladasorszámok melletti betűk utalnak a feladathoz tartozó szövegrészekre: S a segítő lökésre, M a megoldásra, valamint a tanári kézikönyvekben T a tanároknak szóló megoldásra, J a megjegyzésre és D a didaktikai javaslatra. Ez a mód való kisebb részek nyomtatására, bár nyomtatásra alapvetően a PDF fájlok ajánlottak.
- Az összes matkönyvnek egy, közös irodalomjegyzéke van.
- A megjelenítő feltételezi, hogy a t-vel kezdődő azonosítójú kötetek a tanári kézikönyvek, és az x-szel kezdődő azonosítójúak a rendszert bemutató példák, amiket nem kell megjeleníteni.
A weblapként való megjelenítés korlátai
A LaTeX kód HTML-lé konvertálásának vannak korlátai. Egyrészt HTML egyszerűen nem alkalmas (és még a MathML sem) minden LaTeXben elkészíthető szöveg (, ábra stb.) megjelenítésére, másrészt a LaTeX jó minőségű konvertálását megvalósító program készítése nagyon sok munka. Ráadásul a matkönyvek sok speciális, csak a matkönyv projekthez kifejlesztett LaTeX parancsot használnak, amivel egy egyszerű konverter nem tud boldogulni. Ezért a PHP program a LaTeX fájlok speciális parancsait maga konvertálja, kigyűjti azokat a szövegrészeket, amik már csak szabványos (La)TeX parancsokat tartalmaznak, és ezeket átadja a TTM konverternek.
A HTML formátumú megjelenítő által támogatott (La)TeX parancsok, és ezek esetleges korlátozásai:
- A TTM által támogatott (La)TeX parancsok (a dokumentáció a TTM-mel együtt letölthető a http://hutchinson.belmont.ma.us/ttm oldalról) közül azok, amelyek nem hivatkoznak az egyszerre konvertált részen (pl. egy feladathoz tartozó egy adott környezet) kívülre, vagy más fájlra (mint pl. a \tableofcontents).
- A matkonyv.sty-ban definiált néhány egyszerű parancsmegfeleltetés (a definíciók átadása a TTM-nek):
\newcommand{\idezet}[2]{{{\em #1} \newline #2}}
\newcommand{\ov}{{\overline}}
\newcommand{\di}{{\displaystyle}}
\newcommand{\un}{{\underline}}
\newcommand{\kov}{{\Rightarrow}}
\def\oszt{{\mid}}
\def\noszt{{\nmid}}
\def\binom#1#2{{{#1}\choose{#2}}}
\def\qedsymbol{{\textsquare}}
\def\mathqed{{\quad\hbox{\qedsymbol}}}
A plusz { - } pár a TTM egy ritkán előforduló hibája miatt kell. - \H (dupla vessző ékezet).
- Matematikai módban: nem okoz gondot a \Bbb és a \mathbb (általánosan használt halmazok neveihez), de egyszerű nagybetűként jelenik meg.
- Matematikai módban: \not (negálás), MathML <mpadded> és <mphantom> elemekkel megoldva.
- Matematikai módban: \pmod támogatott (modulus megadása).
- \heading, \subheading parancsok.
- \footnote parancs, a lábjegyzet inline jelenik meg. (A TTM beépített lábjegyzetkezelésével közvetlenül a feladat alá kerülne egy vízszíntes vonal és egy ronda, nagy és fölösleges "Footnotes:" felirat, ha pedig az egész oldal aljára tenném a lábjegyzetet, nagyon sokat kéne görgetni.)
- \evenboxes, \evenboxesqq, \evenboxesqqd parancsok, de állandó helykihagyással, a cellák több sorba is törhetnek.
- \tabbing környezet, de csak a \= és a \> parancsok támogatottak. A matkönyvekben jelenleg csak ezeket használják.
- A stuki csomag struktogramjai, táblázatokkal. Máshogy jelenik meg, mint latex-hel fordítva, de áttekinthető.
- \figure2 környezet másodosztályú ábrái. Feliratozás caption paraméterrel, számozás.
- Az \equation környezet egyenleteinek megfelelő számozása.
- Irodalomjegyzék a matbook.bib alapján, irodalmi hivatkozások \cite paranccsal és a feladatok cite paraméterével, linkekkel.
- Címkézés \label paranccsal, a fejezetek, a feladatok és a hozzájuk tartozó egyéb környezetek, és a figure2 környezetek label paraméterével.
- A címkékre való utalás \ref, \aref, \Aref parancsokkal, linkekkel. A névelős parancsok csak akkor működnek megfelelően, ha az utalás céljának eleje szám, vagy betűkód. Az egyetlen lehetséges hiba az f, l, m, n, r, s betűk valamelyikével kezdődő kötetazonosító, ahol az azonosító nem betűkód, hanem szó.
- A címkékre való utalás \pageref, \apageref, \Apageref parancsokkal, linkekkel. Jobb híján ilyenkor a relatív hivatkozás jelenik meg, névelő nélkül.
Olyan kód írása a tex fájlokban, ami csak latex fordítás esetén/csak a HTML formátumú megjelenítéskor látszik
A ttm által biztosított megoldások: Olyan kód beszúrása a tex fájlokba, amit csak a ttm kap meg (legegyszerűbb): %%ttm: kezdetű speciális megjegyzés a sor végéig. Ha nem akarunk utána szóközt, akkor a sor végére még egy % jelet kell tenni, hogy az újsort a ttm is megjegyzésként értelmezze.
Olyan kód beszúrása, amit csak a TeX kap meg:
1. megoldás: A használat helye elé (pl. a preamble-be) írjuk be a következő speciális parancsdefiníciót: \newcommand{\ttmdump}[1]{#1} Ezután a \ttmdump{Ezt csak a \TeX kapja meg.} parancsban a TeX egyszerűen beilleszti a kapcsos zárójelek közti szöveget, de a ttm felismeri, és átugorja.
2. megoldás (mindkét dologra): A használat helye elé (pl. a preamble-be) írjuk be a következő speciális feltételdefiníciót: \newif\ifttm Ez latexben alapból hamis, de a ttm felismeri, mint speciális feltételt, és mindig igaz. Így használható:
\ifttm Csak a ttm kapja meg.\fi
\ifttm\else Csak a \TeX kapja meg.\fi
\ifttm ttm\else\TeX\fi
tth-ban a hivtalos leírás szerint ugyanezek tth-val vannak, de kölcsönösen felismerik egymás speciális jelöléseit, ezért egy esetleges áttéréskor nem kell módosítni.
A ttm-ben/tth-ban a html környezetben (\begin{html} és \end{html} között) írt dolgok változatlanul kerülnek a html (illetve XHTML vagy MathML) kódba. Viszont hogy ezt (a LaTeX-ben nem létező környezetet) a LaTeX fordító ne kapja meg, olyan környezetbe kell írni, amit a LaTeX nem lát, pl.:
LaTeX kód %%ttm:\begin{html}<b>HTML kód</b>\end{html}
A html környezetet a ttm nem csak %%ttm: után értelmezi, ezért ha ilyet írnánk:
\LaTeX kód %%ttm:\begin{html}<b>HTML kód</b>
Még egy kis \LaTeX kód %%ttm:<b>még egy kis HTML kód</b>\end{html}
, akkor a HTML oldalra a Még egy kis \LaTeX kód, sőt a második %%ttm: is változtatás nélkül kerülne ki. A helyes megoldás:
\LaTeX kód %%ttm:\begin{html}<b>HTML kód</b>\end{html}
Még egy kis \LaTeX kód %%ttm:\begin{html}<b>még egy kis HTMLkód</b>\end{html}