From d90f1df0d01b56b897cfae2f14cc455bc6b37edc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torma=20Krist=C3=B3f?= Date: Wed, 4 Dec 2019 14:54:36 +0100 Subject: [PATCH] init --- .gitignore | 166 +- .project | 17 + .settings/org.eclipse.core.resources.prefs | 2 + .texlipse | 14 + .travis.yml | 20 + README.md | 1 + pdf/.gitignore | 2 + src/Makefile | 68 + src/bib/mybib.bib | 79 + src/content/abstract.tex | 31 + src/content/acknowledgement.tex | 5 + src/content/appendices.tex | 32 + src/content/introduction.tex | 7 + src/content/latex-tools.tex | 59 + src/content/template-usage.tex | 316 ++ src/content/thesis-format.tex | 24 + src/figures/TeXstudio.png | Bin 0 -> 172285 bytes src/figures/bme_logo.pdf | Bin 0 -> 20185 bytes src/figures/convert.cmd | 7 + src/huplain.bst | 1910 +++++++ src/include/declaration.tex | 32 + src/include/guideline.tex | 54 + src/include/packages.tex | 64 + src/include/preamble.tex | 122 + src/include/project.tex | 10 + src/include/tdk-variables.tex | 11 + src/include/thesis-en.tex | 57 + src/include/thesis-hu.tex | 46 + src/include/titlepage-otdk.tex | 58 + src/include/titlepage-tdk.tex | 32 + src/include/titlepage.tex | 33 + src/lua/language.dat.lua | 731 +++ src/magyar.ldf | 5801 ++++++++++++++++++++ src/manual_build.bat | 8 + src/thesis.tex | 105 + 35 files changed, 9768 insertions(+), 156 deletions(-) create mode 100644 .project create mode 100644 .settings/org.eclipse.core.resources.prefs create mode 100644 .texlipse create mode 100644 .travis.yml create mode 100644 pdf/.gitignore create mode 100755 src/Makefile create mode 100644 src/bib/mybib.bib create mode 100644 src/content/abstract.tex create mode 100644 src/content/acknowledgement.tex create mode 100644 src/content/appendices.tex create mode 100644 src/content/introduction.tex create mode 100644 src/content/latex-tools.tex create mode 100644 src/content/template-usage.tex create mode 100644 src/content/thesis-format.tex create mode 100644 src/figures/TeXstudio.png create mode 100644 src/figures/bme_logo.pdf create mode 100644 src/figures/convert.cmd create mode 100644 src/huplain.bst create mode 100644 src/include/declaration.tex create mode 100644 src/include/guideline.tex create mode 100644 src/include/packages.tex create mode 100644 src/include/preamble.tex create mode 100644 src/include/project.tex create mode 100644 src/include/tdk-variables.tex create mode 100644 src/include/thesis-en.tex create mode 100644 src/include/thesis-hu.tex create mode 100644 src/include/titlepage-otdk.tex create mode 100644 src/include/titlepage-tdk.tex create mode 100644 src/include/titlepage.tex create mode 100644 src/lua/language.dat.lua create mode 100644 src/magyar.ldf create mode 100644 src/manual_build.bat create mode 100644 src/thesis.tex diff --git a/.gitignore b/.gitignore index e6598ba..dfecfdd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,8 @@ +thesis.pdf +thesis-pdflatex*.pdf +thesis-xelatex*.pdf +thesis-lualatex*.pdf + ## Core latex/pdflatex auxiliary files: *.aux *.lof @@ -6,24 +11,14 @@ *.fls *.out *.toc -*.fmt -*.fot -*.cb -*.cb2 -.*.lb ## Intermediate documents: *.dvi -*.xdv -*-converted-to.* # these rules might exclude image files for figures etc. # *.ps # *.eps # *.pdf -## Generated if empty string is given at "Please type another file name for output:" -.pdf - ## Bibliography auxiliary files (bibtex/biblatex/biber): *.bbl *.bcf @@ -34,99 +29,34 @@ ## Build tool auxiliary files: *.fdb_latexmk -*.synctex -*.synctex(busy) *.synctex.gz *.synctex.gz(busy) *.pdfsync ## Auxiliary and intermediate files from other packages: + # algorithms *.alg *.loa -# achemso -acs-*.bib - # amsthm *.thm # beamer *.nav -*.pre *.snm *.vrb -# changes -*.soc - -# cprotect -*.cpt - -# elsarticle (documentclass of Elsevier journals) -*.spl - -# endnotes -*.ent - -# fixme -*.lox - -# feynmf/feynmp -*.mf -*.mp -*.t[1-9] -*.t[1-9][0-9] -*.tfm - -#(r)(e)ledmac/(r)(e)ledpar -*.end -*.?end -*.[1-9] -*.[1-9][0-9] -*.[1-9][0-9][0-9] -*.[1-9]R -*.[1-9][0-9]R -*.[1-9][0-9][0-9]R -*.eledsec[1-9] -*.eledsec[1-9]R -*.eledsec[1-9][0-9] -*.eledsec[1-9][0-9]R -*.eledsec[1-9][0-9][0-9] -*.eledsec[1-9][0-9][0-9]R - # glossaries *.acn *.acr *.glg *.glo *.gls -*.glsdefs - -# gnuplottex -*-gnuplottex-* - -# gregoriotex -*.gaux -*.gtex - -# htlatex -*.4ct -*.4tc -*.idv -*.lg -*.trc -*.xref # hyperref *.brf -# knitr -*-concordance.tex -# TODO Comment the next line if you want to keep your tikz graphics files -*.tikz -*-tikzDictionary - # listings *.lol @@ -138,105 +68,29 @@ acs-*.bib # minitoc *.maf -*.mlf -*.mlt -*.mtc[0-9]* -*.slf[0-9]* -*.slt[0-9]* -*.stc[0-9]* +*.mtc +*.mtc0 # minted -_minted* *.pyg -# morewrites -*.mw - # nomencl -*.nlg *.nlo -*.nls - -# pax -*.pax - -# pdfpcnotes -*.pdfpc # sagetex *.sagetex.sage *.sagetex.py *.sagetex.scmd -# scrwfile -*.wrt - # sympy *.sout *.sympy sympy-plots-for-*.tex/ -# pdfcomment -*.upa -*.upb - -# pythontex -*.pytxcode -pythontex-files-*/ - -# thmtools -*.loe - -# TikZ & PGF -*.dpth -*.md5 -*.auxlock - # todonotes *.tdo -# easy-todo -*.lod - -# xmpincl -*.xmpi - # xindy *.xdy - -# xypic precompiled matrices -*.xyc - -# endfloat -*.ttt -*.fff - -# Latexian -TSWLatexianTemp* - -## Editors: -# WinEdt -*.bak -*.sav - -# Texpad -.texpadtmp - -# Kile -*.backup - -# KBibTeX -*~[0-9]* - -# auto folder when using emacs and auctex -./auto/* -*.el - -# expex forward references with \gathertags -*-tags.tex - -# standalone packages -*.sta - -# generated if using elsarticle.cls -*.spl +/tmp +/out diff --git a/.project b/.project new file mode 100644 index 0000000..4a197ff --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + diploma + + + + + + net.sourceforge.texlipse.builder.TexlipseBuilder + + + + + + net.sourceforge.texlipse.builder.TexlipseNature + + diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..6d65655 --- /dev/null +++ b/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=utf-8 diff --git a/.texlipse b/.texlipse new file mode 100644 index 0000000..8542bd0 --- /dev/null +++ b/.texlipse @@ -0,0 +1,14 @@ +#TeXlipse project settings +#Thu Aug 14 18:19:20 CEST 2014 +markTmpDer=true +builderNum=2 +outputDir=pdf +makeIndSty= +bibrefDir= +outputFormat=pdf +tempDir=tmp +mainTexFile=diploma.tex +outputFile=diploma.pdf +langSpell=hu +markDer=true +srcDir=src diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..2f0448c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,20 @@ +dist: bionic +language: minimal +addons: + apt: + packages: + - texlive-fonts-recommended + - texlive-latex-extra + - texlive-fonts-extra + - dvipng + - texlive-latex-recommended +before_script: +- cd src +script: +- make +deploy: + provider: releases + api_key: $GITHUB_KEY + file: + - pdf/thesis.pdf + skip_cleanup: true diff --git a/README.md b/README.md index 7501932..dd27168 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ # knative-report-latex 2019 Szakdolgozat Latex + diff --git a/pdf/.gitignore b/pdf/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/pdf/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/src/Makefile b/src/Makefile new file mode 100755 index 0000000..28b5e34 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,68 @@ +DOCUMENT=thesis +#MODE=-interaction=batchmode + +all: clean xelatex + echo + +xelatex: compile_xelatex + mv $(DOCUMENT)-xelatex.pdf ../pdf/$(DOCUMENT).pdf + +compile_xelatex: + xelatex $(MODE) $(DOCUMENT) + bibtex $(DOCUMENT) + xelatex $(MODE) $(DOCUMENT) + xelatex $(MODE) $(DOCUMENT) + mv $(DOCUMENT).pdf $(DOCUMENT)-xelatex.pdf + +pdflatex: compile_pdflatex + mv $(DOCUMENT)-pdflatex.pdf ../pdf/$(DOCUMENT).pdf + +compile_pdflatex: + pdflatex $(MODE) $(DOCUMENT) + bibtex $(DOCUMENT) + pdflatex $(MODE) $(DOCUMENT) + pdflatex $(MODE) $(DOCUMENT) + mv $(DOCUMENT).pdf $(DOCUMENT)-pdflatex.pdf + +lualatex: compile_lualatex + mv $(DOCUMENT)-lualatex.pdf ../pdf/$(DOCUMENT).pdf + +compile_lualatex: + lualatex $(MODE) $(DOCUMENT) + bibtex $(DOCUMENT) + lualatex $(MODE) $(DOCUMENT) + lualatex $(MODE) $(DOCUMENT) + mv $(DOCUMENT).pdf $(DOCUMENT)-lualatex.pdf + +switch_to_hungarian: + sed -i "s|^\\\input{include/thesis-en}|%\\\input{include/thesis-en}|" $(DOCUMENT).tex + sed -i "s|^%\\\input{include/thesis-hu}|\\\input{include/thesis-hu}|" $(DOCUMENT).tex + +test_hu: + ${MAKE} clean compile_xelatex + ${MAKE} clean compile_pdflatex + ${MAKE} clean compile_lualatex + mv $(DOCUMENT)-xelatex.pdf ../pdf/$(DOCUMENT)-xelatex-hu.pdf + mv $(DOCUMENT)-pdflatex.pdf ../pdf/$(DOCUMENT)-pdflatex-hu.pdf + mv $(DOCUMENT)-lualatex.pdf ../pdf/$(DOCUMENT)-lualatex-hu.pdf + +switch_to_english: + sed -i "s|^\\\input{include/thesis-hu}|%\\\input{include/thesis-hu}|" $(DOCUMENT).tex + sed -i "s|^%\\\input{include/thesis-en}|\\\input{include/thesis-en}|" $(DOCUMENT).tex + +test_en: + ${MAKE} switch_to_english + ${MAKE} clean compile_xelatex + ${MAKE} clean compile_pdflatex + ${MAKE} clean compile_lualatex + mv $(DOCUMENT)-xelatex.pdf ../pdf/$(DOCUMENT)-xelatex-en.pdf + mv $(DOCUMENT)-pdflatex.pdf ../pdf/$(DOCUMENT)-pdflatex-en.pdf + mv $(DOCUMENT)-lualatex.pdf ../pdf/$(DOCUMENT)-lualatex-en.pdf + ${MAKE} switch_to_hungarian + +test: test_hu test_en + echo + +clean: + echo Cleaning temporary files... + rm -f *.aux *.dvi *.thm *.lof *.log *.lot *.fls *.out *.toc *.bbl *.blg diff --git a/src/bib/mybib.bib b/src/bib/mybib.bib new file mode 100644 index 0000000..b413396 --- /dev/null +++ b/src/bib/mybib.bib @@ -0,0 +1,79 @@ +@book{Wettl04, + author = {Ferenc Wettl and Gyula Mayer and Péter Szabó}, + publisher = {Panem Könyvkiadó}, + title = {\LaTeX~kézikönyv}, + year = {2004}, +} + +@article{Candy86, + author = {James C. Candy}, + journaltitle = {{IEEE} Trans.\ on Communications}, + month = {01}, + note = {\doi{10.1109/TCOM.1986.1096432}}, + number = {1}, + pages = {72--76}, + title = {Decimation for Sigma Delta Modulation}, + volume = {34}, + year = {1986}, +} + +@inproceedings{Lee87, + author = {Wai L. Lee and Charles G. Sodini}, + booktitle = {Proc.\ of the IEEE International Symposium on Circuits and Systems}, + location = {Philadelphia, PA, USA}, + month = {05~4--7}, + pages = {459--462}, + title = {A Topology for Higher Order Interpolative Coders}, + vol = {2}, + year = {1987}, +} + +@thesis{KissPhD, + author = {Peter Kiss}, + institution = {Technical University of Timi\c{s}oara, Romania}, + month = {04}, + title = {Adaptive Digital Compensation of Analog Circuit Imperfections for Cascaded Delta-Sigma Analog-to-Digital Converters}, + type = {phdthesis}, + year = {2000}, +} + +@manual{Schreier00, + author = {Richard Schreier}, + month = {01}, + note = {\url{http://www.mathworks.com/matlabcentral/fileexchange/}}, + organization = {Oregon State University}, + title = {The Delta-Sigma Toolbox v5.2}, + year = {2000}, +} + +@misc{DipPortal, + author = {{Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar}}, + howpublished = {\url{http://diplomaterv.vik.bme.hu/}}, + title = {Diplomaterv portál (2011. február 26.)}, +} + +@incollection{Mkrtychev:1997, + author = {Mkrtychev, Alexey}, + booktitle = {Logical Foundations of Computer Science}, + doi = {10.1007/3-540-63045-7_27}, + editor = {Adian, Sergei and Nerode, Anil}, + isbn = {978-3-540-63045-6}, + pages = {266-275}, + publisher = {Springer Berlin Heidelberg}, + series = {Lecture Notes in Computer Science}, + title = {Models for the logic of proofs}, + url = {http://dx.doi.org/10.1007/3-540-63045-7_27}, + volume = {1234}, + year = {1997}, +} + +@report{Jeney, + author = {Jeney, Gábor}, + institution = {Budapesti Műszaki és Gazdaságtudományi Egyetem, Híradástechnikai Tanszék}, + location = {Budapest}, + note = {\url{http://www.mcl.hu/~jeneyg/kinezet.pdf}}, + title = {Hogyan néz ki egy igényes dokumentum? {N}éhány szóban az alapvető tipográfiai szabályokról}, + type = {techreport}, + year = {2014}, +} + diff --git a/src/content/abstract.tex b/src/content/abstract.tex new file mode 100644 index 0000000..dc09e44 --- /dev/null +++ b/src/content/abstract.tex @@ -0,0 +1,31 @@ +\pagenumbering{roman} +\setcounter{page}{1} + +\selecthungarian + +%---------------------------------------------------------------------------- +% Abstract in Hungarian +%---------------------------------------------------------------------------- +\chapter*{Kivonat}\addcontentsline{toc}{chapter}{Kivonat} + +Jelen dokumentum egy diplomaterv sablon, amely formai keretet ad a BME Villamosmérnöki és Informatikai Karán végző hallgatók által elkészítendő szakdolgozatnak és diplomatervnek. A sablon használata opcionális. Ez a sablon \LaTeX~alapú, a \emph{TeXLive} \TeX-implementációval és a PDF-\LaTeX~fordítóval működőképes. + + +\vfill +\selectenglish + + +%---------------------------------------------------------------------------- +% Abstract in English +%---------------------------------------------------------------------------- +\chapter*{Abstract}\addcontentsline{toc}{chapter}{Abstract} + +This document is a \LaTeX-based skeleton for BSc/MSc~theses of students at the Electrical Engineering and Informatics Faculty, Budapest University of Technology and Economics. The usage of this skeleton is optional. It has been tested with the \emph{TeXLive} \TeX~implementation, and it requires the PDF-\LaTeX~compiler. + + +\vfill +\selectthesislanguage + +\newcounter{romanPage} +\setcounter{romanPage}{\value{page}} +\stepcounter{romanPage} diff --git a/src/content/acknowledgement.tex b/src/content/acknowledgement.tex new file mode 100644 index 0000000..90cdce8 --- /dev/null +++ b/src/content/acknowledgement.tex @@ -0,0 +1,5 @@ +%---------------------------------------------------------------------------- +\chapter*{\koszonetnyilvanitas}\addcontentsline{toc}{chapter}{\koszonetnyilvanitas} +%---------------------------------------------------------------------------- + +Ez nem kötelező, akár törölhető is. Ha a szerző szükségét érzi, itt lehet köszönetet nyilvánítani azoknak, akik hozzájárultak munkájukkal ahhoz, hogy a hallgató a szakdolgozatban vagy diplomamunkában leírt feladatokat sikeresen elvégezze. A konzulensnek való köszönetnyilvánítás sem kötelező, a konzulensnek hivatalosan is dolga, hogy a hallgatót konzultálja. \ No newline at end of file diff --git a/src/content/appendices.tex b/src/content/appendices.tex new file mode 100644 index 0000000..929bd9c --- /dev/null +++ b/src/content/appendices.tex @@ -0,0 +1,32 @@ +%---------------------------------------------------------------------------- +\appendix +%---------------------------------------------------------------------------- +\chapter*{\fuggelek}\addcontentsline{toc}{chapter}{\fuggelek} +\setcounter{chapter}{\appendixnumber} +%\setcounter{equation}{0} % a fofejezet-szamlalo az angol ABC 6. betuje (F) lesz +\numberwithin{equation}{section} +\numberwithin{figure}{section} +\numberwithin{lstlisting}{section} +%\numberwithin{tabular}{section} + +%---------------------------------------------------------------------------- +\section{A TeXstudio felülete} +%---------------------------------------------------------------------------- +\begin{figure}[!ht] +\centering +\includegraphics[width=150mm, keepaspectratio]{figures/TeXstudio.png} +\caption{A TeXstudio \LaTeX-szerkesztő.} +\end{figure} + +%---------------------------------------------------------------------------- +\clearpage\section{Válasz az ,,Élet, a világmindenség, meg minden'' kérdésére} +%---------------------------------------------------------------------------- +A Pitagorasz-tételből levezetve +\begin{align} +c^2=a^2+b^2=42. +\end{align} +A Faraday-indukciós törvényből levezetve +\begin{align} +\rot E=-\frac{dB}{dt}\hspace{1cm}\longrightarrow \hspace{1cm} +U_i=\oint\limits_\mathbf{L}{\mathbf{E}\mathbf{dl}}=-\frac{d}{dt}\int\limits_A{\mathbf{B}\mathbf{da}}=42. +\end{align} diff --git a/src/content/introduction.tex b/src/content/introduction.tex new file mode 100644 index 0000000..c7da9f2 --- /dev/null +++ b/src/content/introduction.tex @@ -0,0 +1,7 @@ +%---------------------------------------------------------------------------- +\chapter{\bevezetes} +%---------------------------------------------------------------------------- + +A bevezető tartalmazza a diplomaterv-kiírás elemzését, történelmi előzményeit, a feladat indokoltságát (a motiváció leírását), az eddigi megoldásokat, és ennek tükrében a hallgató megoldásának összefoglalását. + +A bevezető szokás szerint a diplomaterv felépítésével záródik, azaz annak rövid leírásával, hogy melyik fejezet mivel foglalkozik. diff --git a/src/content/latex-tools.tex b/src/content/latex-tools.tex new file mode 100644 index 0000000..1fd0ff2 --- /dev/null +++ b/src/content/latex-tools.tex @@ -0,0 +1,59 @@ +%---------------------------------------------------------------------------- +\chapter{\LaTeX-eszközök} +\label{sec:LatexTools} +%---------------------------------------------------------------------------- +\section{A szerkesztéshez használatos eszközök} +%---------------------------------------------------------------------------- +Ez a sablon TeXstudio 2.8.8 szerkesztővel készült. A TeXstudio egy platformfüggetlen, Windows, Linux és Mac OS alatt is elérhető \LaTeX-szerkesztőprogram számtalan hasznos szolgáltatással (\refstruc{fig:TeXstudio}). A szoftver ingyenesen letölthető\footnote{A TeXstudio hivatalos oldala: \url{http://texstudio.sourceforge.net/}}. + +\begin{figure}[!ht] +\centering +\includegraphics[width=150mm, keepaspectratio]{figures/TeXstudio.png} +\caption{A TeXstudio \LaTeX-szerkesztő.} +\label{fig:TeXstudio} +\end{figure} + +A TeXstudio telepítése után érdemes még letölteni a magyar nyelvű helyesírásellenőrző-szótárakat hozzá. A TeXstudio az OpenOffice-hoz használatos formátumot tudja kezelni. A TeXstudio beállításainál a \verb+General+ fülön a \verb+Dictionaries+ résznél tudjuk megadni, hogy melyik szótárat használja. + +Egy másik használható Windows alapú szerkesztőprogram a LEd\footnote{A LEd hivatalos oldala: \url{http://www.latexeditor.org/}} (LaTeX Editor), a TeXstudio azonban stabilabb, gyorsabb, és jobban használható. + +%---------------------------------------------------------------------------- +\section{A dokumentum lefordítása Windows alatt} +%---------------------------------------------------------------------------- +A TeXstudio és a LEd kizárólag szerkesztőprogram (bár az utóbbiban DVI-nézegető is van), így a dokumentum fordításához szükséges eszközöket nem tartalmazza. Windows alatt alapvetően két lehetőség közül érdemes választani: MiKTeX (\url{http://miktex.org/}) és TeX Live (\url{http://www.tug.org/texlive/}) programcsomag. Az utóbbi működik Mac OS X, GNU/Linux alatt és Unix-származékokon is. A MiKTeX egy alapcsomag telepítése után mindig letölti a használt funkciókhoz szükséges, de lokálisan hiányzó \TeX-csomagokat, míg a TeX Live DVD ISO verzóban férhető hozzá. Ez a dokumentum TeX Live 2008 programcsomag segítségével fordult, amelynek DVD ISO verziója a megadott oldalról letölthető. A sablon lefordításához a disztribúcióban szereplő \verb+magyar.ldf+ fájlt a \verb+http://www.math.bme.hu/latex/+ változatra kell cserélni, vagy az utóbbi változatot be kell másolni a projekt-könyvtárba (ahogy ezt meg is tettük a sablonban) különben anomáliák tapasztalhatók a dokumentumban (pl. az ábra- és táblázat-aláírások formátuma nem a beállított lesz, vagy bizonyos oldalakon megjelenik alapértelmezésben egy fejléc). A TeX Live 2008-at még nem kell külön telepíteni a gépre, elegendő DVD-ről (vagy az ISO fájlból közvetlenül, pl. DaemonTools-szal) használni. + +Ha a MiKTeX csomagot használjuk, akkor parancssorból a következő módon tudjuk újrafordítani a teljes dokumentumot: + +\begin{lstlisting}[language=bash,frame=single,float=!ht] +$ texify -p thesis.tex +\end{lstlisting} + +A \verb+texify+ parancs a MiKTex programcsomag \verb+miktex/bin+ alkönyvtárában található. A parancs gondoskodik arról, hogy a szükséges lépéseket (fordítás, hivatkozások generálása stb.) a megfelelő sorrendben elvégezze. A \verb+-p+ kapcsoló hatására PDF-et generál. A fordítást és az ideiglenes fájlok törlését elvégezhetjük a sablonhoz mellékelt \verb+manual_build.bat+ szkript segítségével is. + +A \TeX-eszközöket tartalmazó programcsomag binárisainak elérési útját gyakran be kell állítani a szerkesztőprogramban, például TeXstudio esetén legegyszerűbben az \verb+Options / Configure TeXstudio... / Commands+ menüponttal előhívott dialógusablakban tehetjük ezt meg. + +A PDF-\LaTeX~használata esetén a generált dokumentum közvetlenül PDF-formátumban áll rendelkezésre. Amennyiben a PDF-fájl egy PDF-nézőben (pl. Adobe Acrobat Reader vagy Foxit PDF Reader) meg van nyitva, akkor a fájlleírót a PDF-néző program tipikusan lefoglalja. Ilyen esetben a dokumentum újrafordítása hibaüzenettel kilép. Ha bezárjuk és újra megnyitjuk a PDF dokumentumot, akkor pedig a PDF-nézők többsége az első oldalon nyitja meg a dokumentumot, nem a legutóbb olvasott oldalon. Ezzel szemben például az egyszerű és ingyenes \textcolor{blue}{Sumatra PDF} nevű program képes arra, hogy a megnyitott dokumentum megváltozását detektálja, és frissítse a nézetet az aktuális oldal megtartásával. + +%---------------------------------------------------------------------------- +\section{Eszközök Linuxhoz} +%---------------------------------------------------------------------------- +Linux operációs rendszer alatt is rengeteg szerkesztőprogram van, pl. a KDE alapú Kile jól használható. Ez ingyenesen letölthető, vagy éppenséggel az adott Linux-disztribúció eleve tartalmazza, ahogyan a dokumentum fordításához szükséges csomagokat is. Az Ubuntu Linux disztribúciók alatt például legtöbbször a \verb+texlive-*+ csomagok telepítésével használhatók a \LaTeX-eszközök. A jelen sablon fordításához szükséges csomagok (kb. 0,5 GB) az alábbi paranccsal telepíthetők: + +\begin{lstlisting}[language=bash,morekeywords={sudo,apt\-get},alsoletter={-},breaklines=true] +$ sudo apt-get install texlive-latex-extra texlive-fonts-extra texlive-fonts-recommended texlive-lang-european texlive-xetex texlive-science +\end{lstlisting} + +Amennyiben egy újabb csomag hozzáadása után hiányzó fájlra utaló hibát kapunk a fordítótól, telepítenünk kell az azt tartalmazó TeX Live csomagot. Ha pl. a \verb+bibentry+ csomagot szeretnénk használni, futtassuk az alábbi parancsot: + +\begin{lstlisting}[language=bash,morekeywords={apt\-cache},alsoletter={-},breaklines=true] +$ apt-cache search bibentry +texlive-luatex - TeX Live: LuaTeX packages +\end{lstlisting} + +Majd telepítsük fel a megfelelő TeX Live csomagot, jelen esetben a `texlive-lualatex`-et. (Egy LaTeX csomag több TeX Live csomagban is szerepelhet.) + +Ha gyakran szerkesztünk más \LaTeX dokumentumokat is, kényelmes és biztos megoldás a teljes TeX Live disztribúció telepítése, ez azonban kb. 4 GB helyet igényel. + +\begin{lstlisting}[language=bash,morekeywords={sudo,apt\-get},alsoletter={-},breaklines=true] +sudo apt-get install texlive-full +\end{lstlisting} diff --git a/src/content/template-usage.tex b/src/content/template-usage.tex new file mode 100644 index 0000000..48f5c48 --- /dev/null +++ b/src/content/template-usage.tex @@ -0,0 +1,316 @@ +% !TeX spellcheck = hu_HU +% !TeX encoding = UTF-8 +% !TeX program = xelatex +%---------------------------------------------------------------------------- +\chapter{A \LaTeX-sablon használata} +%---------------------------------------------------------------------------- + +Ebben a fejezetben röviden, implicit módon bemutatjuk a sablon használatának módját, ami azt jelenti, hogy sablon használata ennek a dokumentumnak a forráskódját tanulmányozva válik teljesen világossá. Amennyiben a szoftver-keretrendszer telepítve van, a sablon alkalmazása és a dolgozat szerkesztése \LaTeX-ben a sablon segítségével tapasztalataink szerint jóval hatékonyabb, mint egy WYSWYG (\emph{What You See is What You Get}) típusú szövegszerkesztő esetén (pl. Microsoft Word, OpenOffice). + +%---------------------------------------------------------------------------- +\section{Címkék és hivatkozások} +%---------------------------------------------------------------------------- +A \LaTeX~dokumentumban címkéket (\verb+\label+) rendelhetünk ábrákhoz, táblázatokhoz, fejezetekhez, listákhoz, képletekhez stb. Ezekre a dokumentum bármely részében hivatkozhatunk, a hivatkozások automatikusan feloldásra kerülnek. + +A sablonban makrókat definiáltunk a hivatkozások megkönnyítéséhez. Ennek megfelelően minden ábra (\emph{figure}) címkéje \verb+fig:+ kulcsszóval kezdődik, míg minden táblázat (\emph{table}), képlet (\emph{equation}), fejezet (\emph{section}) és lista (\emph{listing}) rendre a \verb+tab:+, \verb+eq:+, \verb+sec:+ és \verb+lst:+ kulcsszóval kezdődik, és a kulcsszavak után tetszőlegesen választott címke használható. Ha ezt a konvenciót betartjuk, akkor az előbbi objektumok számára rendre a \verb+\figref+, \verb+\tabref+, \verb+\eqref+, \verb+\sectref+ és \verb+\listref+ makrókkal hivatkozhatunk. A makrók paramétere a címke, amelyre hivatkozunk (a kulcsszó nélkül). Az összes említett hivatkozástípus, beleértve az \verb+\url+ kulcsszóval bevezetett web-hivatkozásokat is a \verb+hyperref+\footnote{Segítségével a dokumentumban megjelenő hivatkozások nem csak dinamikussá válnak, de színezhetők is, bővebbet erről a csomag dokumentációjában találunk. Ez egyúttal egy példa lábjegyzet írására.} csomagnak köszönhetően aktívak a legtöbb PDF-nézegetőben, rájuk kattintva a dokumentum megfelelő oldalára ugrik a PDF-néző vagy a megfelelő linket megnyitja az alapértelmezett böngészővel. A \verb+hyperref+ csomag a kimeneti PDF-dokumentumba könyvjelzőket is készít a tartalomjegyzékből. Ez egy szintén aktív tartalomjegyzék, amelynek elemeire kattintva a nézegető behozza a kiválasztott fejezetet. + +%---------------------------------------------------------------------------- +\section{Ábrák és táblázatok} +%---------------------------------------------------------------------------- +Használjunk vektorgrafikus ábrákat, ha van rá módunk. PDFLaTeX használata esetén PDF formátumú ábrákat lehet beilleszteni könnyen, az EPS (PostScript) vektorgrafikus képformátum beillesztését a PDFLaTeX közvetlenül nem támogatja (de lehet konvertálni, lásd később). Ha vektorgrafikus formában nem áll rendelkezésünkre az ábra, akkor a veszteségmentes PNG, valamint a veszteséges JPEG formátumban érdemes elmenteni. Figyeljünk arra, hogy ilyenkor a képek felbontása elég nagy legyen ahhoz, hogy nyomtatásban is megfelelő minőséget nyújtson (legalább 300 dpi javasolt). A dokumentumban felhasznált képfájlokat a dokumentum forrása mellett érdemes tartani, archiválni, mivel ezek hiányában a dokumentum nem fordul újra. Ha lehet, a vektorgrafikus képeket vektorgrafikus formátumban is érdemes elmenteni az újrafelhasználhatóság (az átszerkeszthetőség) érdekében. + +Kapcsolási rajzok legtöbbször kimásolhatók egy vektorgrafikus programba (pl. CorelDraw) és onnan nagyobb felbontással raszterizálva kimenthatők PNG formátumban. Ugyanakkor kiváló ábrák készíthetők Microsoft Visio vagy hasonló program használatával is: Visio-ból az ábrák közvetlenül PDF-be is menthetők. + +Lehetőségeink Matlab ábrák esetén: +\begin{itemize} + \item Képernyőlopás (\emph{screenshot}) is elfogadható minőségű lehet a dokumentumban, de általában jobb felbontást is el lehet érni más módszerrel. + \item A Matlab ábrát a \verb+File/Save As+ opcióval lementhetjük PNG formátumban (ugyanaz itt is érvényes, mint korábban, ezért nem javasoljuk). + \item A Matlab ábrát az \verb+Edit/Copy figure+ opcióval kimásolhatjuk egy vektorgrafikus programba is és onnan nagyobb felbontással raszterizálva kimenthatjük PNG formátumban (nem javasolt). + \item Javasolt megoldás: az ábrát a \verb+File/Save As+ opcióval EPS \emph{vektorgrafikus} formátumban elmentjük, PDF-be konvertálva beillesztjük a dolgozatba. +\end{itemize} +Az EPS kép az \verb+epstopdf+ programmal\footnote{a korábban említett \LaTeX-disztribúciókban megtalálható} konvertálható PDF formátumba. Célszerű egy batch-fájlt készíteni az összes EPS ábra lefordítására az alábbi módon (ez Windows alatt működik). +\begin{lstlisting}[language=] +@echo off +for %%j in (*.eps) do ( + echo converting file "%%j" + epstopdf "%%j" +) +echo done . +\end{lstlisting} + +Egy ilyen parancsfájlt (\verb+convert.cmd+) elhelyeztük a sablon \verb+figures\eps+ könyvtárába, így a felhasználónak csak annyi a dolga, hogy a \verb+figures\eps+ könyvtárba kimenti az EPS formátumú vektorgrafikus képet, majd lefuttatja a \verb+convert.cmd+ parancsfájlt, ami PDF-be konvertálja az EPS fájlt. + +Ezek után a PDF-ábrát ugyanúgy lehet a dokumentumba beilleszteni, mint a PNG-t vagy a JPEG-et. A megoldás előnye, hogy a lefordított dokumentumban is vektorgrafikusan tárolódik az ábra, így a mérete jóval kisebb, mintha raszterizáltuk volna beillesztés előtt. Ez a módszer minden -- az EPS formátumot ismerő -- vektorgrafikus program (pl. CorelDraw) esetén is használható. + +A képek beillesztésére \az+\refstruc{sec:LatexTools}ben mutattunk be példát (\refstruc{fig:TeXstudio}). Az előző mondatban egyúttal az automatikusan feloldódó ábrahivatkozásra is láthatunk példát. Több képfájlt is beilleszthetünk egyetlen ábrába. Az egyes képek közötti horizontális és vertikális margót metrikusan szabályozhatjuk (\refstruc{fig:HVSpaces}). Az ábrák elhelyezését számtalan tipográfiai szabály egyidejű teljesítésével a fordító maga végzi, a dokumentum írója csak preferenciáit jelezheti a fordító felé (olykor ez bosszúságot is okozhat, ilyenkor pl. a kép méretével lehet játszani). + +\begin{figure}[!ht] + \centering + \includegraphics[width=67mm, keepaspectratio]{figures/TeXstudio.png}\hspace{1cm} + \includegraphics[width=67mm, keepaspectratio]{figures/TeXstudio.png}\\\vspace{5mm} + \includegraphics[width=67mm, keepaspectratio]{figures/TeXstudio.png}\hspace{1cm} + \includegraphics[width=67mm, keepaspectratio]{figures/TeXstudio.png} + \caption{Több képfájl beillesztése esetén térközöket is érdemes használni.} + \label{fig:HVSpaces} +\end{figure} + +A táblázatok használatára \aref{tab:TabularExample}~táblázat mutat példát. A táblázatok formázásához hasznos tanácsokat találunk a \verb+booktabs+ csomag dokumentációjában. + +\begin{table}[ht] + \footnotesize + \centering + \begin{tabular}{ l c c } + \toprule + Órajel & Frekvencia & Cél pin \\ + \midrule + CLKA & 100 MHz & FPGA CLK0\\ + CLKB & 48 MHz & FPGA CLK1\\ + CLKC & 20 MHz & Processzor\\ + CLKD & 25 MHz & Ethernet chip \\ + CLKE & 72 MHz & FPGA CLK2\\ + XBUF & 20 MHz & FPGA CLK3\\ + \bottomrule + \end{tabular} + \caption{Az órajel-generátor chip órajel-kimenetei.} + \label{tab:TabularExample} +\end{table} + + +%---------------------------------------------------------------------------- +\section{Felsorolások és listák} +%---------------------------------------------------------------------------- +Számozatlan felsorolásra mutat példát a jelenlegi bekezdés: +\begin{itemize} + \item \emph{első bajusz:} ide lehetne írni az első elem kifejését, + \item \emph{második bajusz:} ide lehetne írni a második elem kifejését, + \item \emph{ez meg egy szakáll:} ide lehetne írni a harmadik elem kifejését. +\end{itemize} + +Számozott felsorolást is készíthetünk az alábbi módon: +\begin{enumerate} + \item \emph{első bajusz:} ide lehetne írni az első elem kifejését, és ez a kifejtés így néz ki, ha több sorosra sikeredik, + \item \emph{második bajusz:} ide lehetne írni a második elem kifejését, + \item \emph{ez meg egy szakáll:} ide lehetne írni a harmadik elem kifejését. +\end{enumerate} +A felsorolásokban sorok végén vessző, az utolsó sor végén pedig pont a szokásos írásjel. Ez alól kivételt képezhet, ha az egyes elemek több teljes mondatot tartalmaznak. + +Listákban a dolgozat szövegétől elkülönítendő kódrészleteket, programsorokat, pszeudo-kódokat jeleníthetünk meg (\ref{lst:Example}.~kódrészlet). +\begin{lstlisting}[language=tex,caption=A fenti számozott felsorolás \LaTeX-forráskódja,label=lst:Example] +\begin{enumerate} + \item \emph{els(*@ő@*) bajusz:} ide lehetne írni az els(*@ő@*) elem kifejését, + és ez a kifejtés így néz ki, ha több sorosra sikeredik, + \item \emph{második bajusz:} ide lehetne írni a második elem kifejését, + \item \emph{ez meg egy szakáll:} ide lehetne írni a harmadik elem kifejését. +\end{enumerate} +\end{lstlisting} +A lista keretét, háttérszínét, egész stílusát megválaszthatjuk. Ráadásul különféle programnyelveket és a nyelveken belül kulcsszavakat is definiálhatunk, ha szükséges. Erről bővebbet a \verb+listings+ csomag hivatalos leírásában találhatunk. + +%---------------------------------------------------------------------------- +\section{Képletek} +%---------------------------------------------------------------------------- +Ha egy formula nem túlságosan hosszú, és nem akarjuk hivatkozni a szövegből, mint például a $e^{i\pi}+1=0$ képlet, \emph{szövegközi képletként} szokás leírni. Csak, hogy másik példát is lássunk, az $U_i=-d\Phi/dt$ Faraday-törvény a $\rot E=-\frac{dB}{dt}$ differenciális alakban adott Maxwell-egyenlet felületre vett integráljából vezethető le. Látható, hogy a \LaTeX-fordító a sorközöket betartja, így a szöveg szedése esztétikus marad szövegközi képletek használata esetén is. + +Képletek esetén az általános konvenció, hogy a kisbetűk skalárt, a kis félkövér betűk ($\mathbf{v}$) oszlopvektort -- és ennek megfelelően $\mathbf{v}^T$ sorvektort -- a kapitális félkövér betűk ($\mathbf{V}$) mátrixot jelölnek. Ha ettől el szeretnénk térni, akkor az alkalmazni kívánt jelölésmódot célszerű külön alfejezetben definiálni. Ennek megfelelően, amennyiben $\mathbf{y}$ jelöli a mérések vektorát, $\mathbf{\vartheta}$ a paraméterek vektorát és $\hat{\mathbf{y}}=\mathbf{X}\vartheta$ a paraméterekben lineáris modellt, akkor a \emph{Least-Squares} értelemben optimális paraméterbecslő $\hat{\mathbf{\vartheta}}_{LS}=(\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y}$ lesz. + +Emellett kiemelt, sorszámozott képleteket is megadhatunk, ennél az \verb+equation+ és a \verb+eqnarray+ környezetek helyett a korszerűbb \verb+align+ környezet alkalmazását javasoljuk (több okból, különféle problémák elkerülése végett, amelyekre most nem térünk ki). Tehát +\begin{align} +\dot{\mathbf{x}}&=\mathbf{A}\mathbf{x}+\mathbf{B}\mathbf{u},\\ +\mathbf{y}&=\mathbf{C}\mathbf{x}, +\end{align} +ahol $\mathbf{x}$ az állapotvektor, $\mathbf{y}$ a mérések vektora és $\mathbf{A}$, $\mathbf{B}$ és $\mathbf{C}$ a rendszert leíró paramétermátrixok. Figyeljük meg, hogy a két egyenletben az egyenlőségjelek egymáshoz igazítva jelennek meg, mivel a mindkettőt az \& karakter előzi meg a kódban. Lehetőség van számozatlan kiemelt képlet használatára is, például +\begin{align} +\dot{\mathbf{x}}&=\mathbf{A}\mathbf{x}+\mathbf{B}\mathbf{u},\nonumber\\ +\mathbf{y}&=\mathbf{C}\mathbf{x}\nonumber. +\end{align} +Mátrixok felírására az $\mathbf{A}\mathbf{x}=\mathbf{b}$ inhomogén lineáris egyenlet részletes kifejtésével mutatunk példát: +\begin{align} +\begin{bmatrix} +a_{11} & a_{12} & \dots & a_{1n}\\ +a_{21} & a_{22} & \dots & a_{2n}\\ +\vdots & \vdots & \ddots & \vdots\\ +a_{m1} & a_{m2} & \dots & a_{mn} +\end{bmatrix} +\begin{pmatrix}x_1\\x_2\\\vdots\\x_n\end{pmatrix}= +\begin{pmatrix}b_1\\b_2\\\vdots\\b_m\end{pmatrix}. +\end{align} +A \verb+\frac+ utasítás hatékonyságát egy általános másodfokú tag átviteli függvényén keresztül mutatjuk be, azaz +\begin{align} +W(s)=\frac{A}{1+2T\xi s+s^2T^2}. +\end{align} +A matematikai mód minden szimbólumának és képességének a bemutatására természetesen itt nincs lehetőség, de gyors referenciaként hatékonyan használhatók a következő linkek:\\ +\indent\url{http://www.artofproblemsolving.com/LaTeX/AoPS_L_GuideSym.php},\\ +\indent\url{http://www.ctan.org/tex-archive/info/symbols/comprehensive/symbols-a4.pdf},\\ +\indent\url{ftp://ftp.ams.org/pub/tex/doc/amsmath/short-math-guide.pdf}.\\ +Ez pedig itt egy magyarázat, hogy miért érdemes \verb+align+ környezetet használni:\\ +\indent\url{http://texblog.net/latex-archive/maths/eqnarray-align-environment/}. + +%---------------------------------------------------------------------------- +\section{Irodalmi hivatkozások} +\label{sec:HowtoReference} +%---------------------------------------------------------------------------- +Egy \LaTeX~dokumentumban az irodalmi hivatkozások definíciójának két módja van. Az egyik a \verb+\thebibliograhy+ környezet használata a dokumentum végén, az \verb+\end{document}+ lezárás előtt. +\begin{lstlisting}[language=tex] +\begin{thebibliography}{9} + +\bibitem{Lamport94} Leslie Lamport, \emph{\LaTeX: A Document Preparation System}. +Addison Wesley, Massachusetts, 2nd Edition, 1994. + +\end{thebibliography} +\end{lstlisting} + +Ezek után a dokumentumban a \verb+\cite{Lamport94}+ utasítással hivatkozhatunk a forrásra. A fenti megadás viszonylag kötetlen, a szerző maga formázza az irodalomjegyzéket (ami gyakran inkonzisztens eredményhez vezet). + +Egy sokkal professzionálisabb módszer a BiB\TeX{} használata, ezért ez a sablon is ezt támogatja. Ebben az esetben egy külön szöveges adatbázisban definiáljuk a forrásmunkákat, és egy külön stílusfájl határozza meg az irodalomjegyzék kinézetét. Ez, összhangban azzal, hogy külön formátumkonvenció határozza meg a folyóirat-, a könyv-, a konferenciacikk- stb. hivatkozások kinézetét az irodalomjegyzékben (a sablon használata esetén ezzel nem is kell foglalkoznia a hallgatónak, de az eredményt célszerű ellenőrizni). felhasznált hivatkozások adatbázisa egy \verb+.bib+ kiterjesztésű szöveges fájl, amelynek szerkezetét a \Aref{lst:Bibtex} kódrészlet demonstrálja. A forrásmunkák bevitelekor a sor végi vesszők külön figyelmet igényelnek, mert hiányuk a BiB\TeX-fordító hibaüzenetét eredményezi. A forrásmunkákat típus szerinti kulcsszó vezeti be (\verb+@book+ könyv, \verb+@inproceedings+ konferenciakiadványban megjelent cikk, \verb+@article+ folyóiratban megjelent cikk, \verb+@techreport+ valamelyik egyetem gondozásában megjelent műszaki tanulmány, \verb+@manual+ műszaki dokumentáció esetén stb.). Nemcsak a megjelenés stílusa, de a kötelezően megadandó mezők is típusról-típusra változnak. Egy jól használható referencia a \url{http://en.wikipedia.org/wiki/BibTeX} oldalon található. + +\begin{lstlisting}[caption=Példa szöveges irodalomjegyzék-adatbázisra Bib\TeX{} használata esetén.,label=lst:Bibtex] +@book{Wettl04, + author = {Ferenc Wettl and Gyula Mayer and Péter Szabó}, + publisher = {Panem Könyvkiadó}, + title = {\LaTeX~kézikönyv}, + year = {2004}, +} + +@article{Candy86, + author = {James C. Candy}, + journaltitle = {{IEEE} Trans.\ on Communications}, + month = {01}, + note = {\doi{10.1109/TCOM.1986.1096432}}, + number = {1}, + pages = {72--76}, + title = {Decimation for Sigma Delta Modulation}, + volume = {34}, + year = {1986}, +} + +@inproceedings{Lee87, + author = {Wai L. Lee and Charles G. Sodini}, + booktitle = {Proc.\ of the IEEE International Symposium on Circuits and Systems}, + location = {Philadelphia, PA, USA}, + month = {05~4--7}, + pages = {459--462}, + title = {A Topology for Higher Order Interpolative Coders}, + vol = {2}, + year = {1987}, +} + +@thesis{KissPhD, + author = {Peter Kiss}, + institution = {Technical University of Timi\c{s}oara, Romania}, + month = {04}, + title = {Adaptive Digital Compensation of Analog Circuit Imperfections for Cascaded Delta-Sigma Analog-to-Digital Converters}, + type = {phdthesis}, + year = {2000}, +} + +@manual{Schreier00, + author = {Richard Schreier}, + month = {01}, + note = {\url{http://www.mathworks.com/matlabcentral/fileexchange/}}, + organization = {Oregon State University}, + title = {The Delta-Sigma Toolbox v5.2}, + year = {2000}, +} + +@misc{DipPortal, + author = {{Budapesti Műszaki és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar}}, + howpublished = {\url{http://diplomaterv.vik.bme.hu/}}, + title = {Diplomaterv portál (2011. február 26.)}, +} + +@incollection{Mkrtychev:1997, + author = {Mkrtychev, Alexey}, + booktitle = {Logical Foundations of Computer Science}, + doi = {10.1007/3-540-63045-7_27}, + editor = {Adian, Sergei and Nerode, Anil}, + isbn = {978-3-540-63045-6}, + pages = {266-275}, + publisher = {Springer Berlin Heidelberg}, + series = {Lecture Notes in Computer Science}, + title = {Models for the logic of proofs}, + url = {http://dx.doi.org/10.1007/3-540-63045-7_27}, + volume = {1234}, + year = {1997}, +} +\end{lstlisting} + +A stílusfájl egy \verb+.sty+ kiterjesztésű fájl, de ezzel lényegében nem kell foglalkozni, mert vannak beépített stílusok, amelyek jól használhatók. Ez a sablon a BiB\TeX-et használja, a hozzá tartozó adatbázisfájl a \verb+mybib.bib+ fájl. Megfigyelhető, hogy az irodalomjegyzéket a dokumentum végére (a \verb+\end{document}+ utasítás elé) beillesztett \verb+\bibliography{mybib}+ utasítással hozhatjuk létre, a stílusát pedig ugyanitt a \verb+\bibliographystyle{plain}+ utasítással adhatjuk meg. Ebben az esetben a \verb+plain+ előre definiált stílust használjuk (a sablonban is ezt állítottuk be). A \verb+plain+ stíluson kívül természetesen számtalan más előre definiált stílus is létezik. Mivel a \verb+.bib+ adatbázisban ezeket megadtuk, a BiB\TeX-fordító is meg tudja különböztetni a szerzőt a címtől és a kiadótól, és ez alapján automatikusan generálódik az irodalomjegyzék a stílusfájl által meghatározott stílusban. + +Az egyes forrásmunkákra a szövegből továbbra is a \verb+\cite+ paranccsal tudunk hivatkozni, így \aref{lst:Bibtex}.~kódrészlet esetén a hivatkozások rendre \verb+\cite{Wettl04}+, \verb+\cite{Candy86}+, \verb+\cite{Lee87}+, \verb+\cite{KissPhD}+, \verb+\cite{Schreirer00}+, +\verb+\cite{Mkrtychev:1997}+ és \verb+\cite{DipPortal}+. Az egyes forrásmunkák sorszáma az irodalomjegyzék bővítésekor változhat. Amennyiben az aktuális számhoz illeszkedő névelőt szeretnénk használni, használjuk az \verb+\acite{}+ parancsot. + +Az irodalomjegyzékben alapértelmezésben csak azok a forrásmunkák jelennek meg, amelyekre található hivatkozás a szövegben, és ez így alapvetően helyes is, hiszen olyan forrásmunkákat nem illik az irodalomjegyzékbe írni, amelyekre nincs hivatkozás. + +Mivel a fordítási folyamat során több lépésben oldódnak fel a szimbólumok, ezért gyakran többször is le kell fordítani a dokumentumot. Ilyenkor ez első 1-2 fordítás esetleg szimbólum-feloldásra vonatkozó figyelmeztető üzenettel zárul. Ha hibaüzenettel zárul bármelyik fordítás, akkor nincs értelme megismételni, hanem a hibát kell megkeresni. A \verb+.bib+ fájl megváltoztatáskor sokszor nincs hatása a változtatásnak azonnal, mivel nem mindig fut újra a BibTeX fordító. Ezért célszerű a változtatás után azt manuálisan is lefuttatni (TeXstudio esetén \verb+Tools/Bibliography+). + +Hogy a szövegbe ágyazott hivatkozások kinézetét demonstráljuk, itt most sorban meghivatkozzuk a \cite{Wettl04}, \cite{Candy86}, \cite{Lee87}, \cite{KissPhD}, \cite{Schreier00} és \acite{Mkrtychev:1997}\footnote{Informatikai témában gyakran hivatkozunk cikkeket a Springer LNCS valamely kötetéből, ez a hivatkozás erre mutat egy helyes példát.} forrásmunkát, valamint \acite{DipPortal} weboldalt. + +Megjegyzendő, hogy az ékezetes magyar betűket is tartalmazó \verb+.bib+ fájl az \verb+inputenc+ csomaggal betöltött \verb+latin2+ betűkészlet miatt fordítható. Ugyanez a \verb+.bib+ fájl hibaüzenettel fordul egy olyan dokumentumban, ami nem tartalmazza a \verb+\usepackage[latin2]{inputenc}+ sort. Speciális igény esetén az irodalmi adatbázis általánosabb érvényűvé tehető, ha az ékezetes betűket speciális latex karakterekkel helyettesítjük a \verb+.bib+ fájlban, pl. á helyett \verb+\'{a}+-t vagy ő helyett \verb+\H{o}+-t írunk. + +Irodalomhivatkozásokat célszerű először olyan szolgáltatásokban keresni, ahol jó minőségű bejegyzések találhatók (pl. ACM Digital Library,\footnote{\url{https://dl.acm.org/}} DBLP,\footnote{\url{http://dblp.uni-trier.de/}} IEEE Xplore,\footnote{\url{http://ieeexplore.ieee.org/}} SpringerLink\footnote{\url{https://link.springer.com/}}) és csak ezek után használni kevésbé válogatott forrásokat (pl. Google Scholar\footnote{\url{http://scholar.google.com/}}). A jó minőségű bejegyzéseket is érdemes megfelelően tisztítani.\footnote{\url{https://github.com/FTSRG/cheat-sheets/wiki/BibTeX-Fixing-entries-from-common-sources}} A sablon angol nyelvű változatában használt \texttt{plainnat} beállítás egyik sajátossága, hogy a cikkhez generált hivatkozás a cikk DOI-ját és URL-jét is tartalmazza, ami gyakran duplikátumhoz vezet -- érdemes tehát a DOI-kat tartalmazó URL mezőket törölni. + +%---------------------------------------------------------------------------- +\section{A dolgozat szerkezete és a forrásfájlok} +%---------------------------------------------------------------------------- +A diplomatervsablonban a TeX fájlok két alkönyvtárban helyezkednek el. Az \verb+include+ könyvtárban azok szerepelnek, amiket tipikusan nem kell szerkesztenünk, ezek a sablon részei (pl. címoldal). A \verb+content+ alkönyvtárban pedig a saját munkánkat helyezhetjük el. Itt érdemes az egyes fejezeteket külön \TeX{} állományokba rakni. + +A diplomatervsablon (a kari irányelvek szerint) az alábbi fő fejezetekből áll: +\begin{enumerate} + \item 1 oldalas \emph{tájékoztató} a szakdolgozat/diplomaterv szerkezetéről (\verb+include/guideline.tex+), ami a végső dolgozatból törlendő, + \item \emph{feladatkiírás} (\verb+include/project.tex+), a dolgozat nyomtatott verzójában ennek a helyére kerül a tanszék által kiadott, a tanszékvezető által aláírt feladatkiírás, a dolgozat elektronikus verziójába pedig a feladatkiírás egyáltalán ne kerüljön bele, azt külön tölti fel a tanszék a diplomaterv-honlapra, + \item \emph{címoldal} (\verb+include/titlepage.tex+), + \item \emph{tartalomjegyzék} (\verb+thesis.tex+), + \item a diplomatervező \emph{nyilatkozat}a az önálló munkáról (\verb+include/declaration.tex+), + \item 1-2 oldalas tartalmi \emph{összefoglaló} magyarul és angolul, illetve elkészíthető még további nyelveken is (\verb+content/abstract.tex+), + \item \emph{bevezetés}: a feladat értelmezése, a tervezés célja, a feladat indokoltsága, a diplomaterv felépítésének rövid összefoglalása (\verb+content/introduction.tex+), + \item sorszámmal ellátott \emph{fejezetek}: a feladatkiírás pontosítása és részletes elemzése, előzmények (irodalomkutatás, hasonló alkotások), az ezekből levonható következtetések, a tervezés részletes leírása, a döntési lehetőségek értékelése és a választott megoldások indoklása, a megtervezett műszaki alkotás értékelése, kritikai elemzése, továbbfejlesztési lehetőségek, + \item esetleges \emph{köszönetnyilvánítás}ok (\verb+content/acknowledgement.tex+), + \item részletes és pontos \emph{irodalomjegyzék} (ez a sablon esetében automatikusan generálódik a \verb+thesis.tex+ fájlban elhelyezett \verb+\bibliography+ utasítás hatására, \az+\refstruc{sec:HowtoReference}ban leírtak szerint), + \item \emph{függelékek} (\verb+content/appendices.tex+). +\end{enumerate} + +A sablonban a fejezetek a \verb+thesis.tex+ fájlba vannak beillesztve \verb+\include+ utasítások segítségével. Lehetőség van arra, hogy csak az éppen szerkesztés alatt álló \verb+.tex+ fájlt fordítsuk le, ezzel lerövidítve a fordítási folyamatot. Ezt a lehetőséget az alábbi kódrészlet biztosítja a \verb+thesis.tex+ fájlban. +\begin{lstlisting} +\includeonly{ + guideline,% + project,% + titlepage,% + declaration,% + abstract,% + introduction,% + chapter1,% + chapter2,% + chapter3,% + acknowledgement,% + appendices,% +} +\end{lstlisting} + +Ha az alábbi kódrészletben az egyes sorokat a \verb+%+ szimbólummal kikommentezzük, akkor a megfelelő \verb+.tex+ fájl nem fordul le. Az oldalszámok és a tartalomjegyék természetesen csak akkor billennek helyre, ha a teljes dokumentumot lefordítjuk. + +%---------------------------------------------------------------------------- +\newpage +\section{Alapadatok megadása} +%---------------------------------------------------------------------------- +A diplomaterv alapadatait (cím, szerző, konzulens, konzulens titulusa) a \verb+thesis.tex+ fájlban lehet megadni. + +%---------------------------------------------------------------------------- +\section{Új fejezet írása} +%---------------------------------------------------------------------------- +A főfejezetek külön \verb+content+ könyvtárban foglalnak helyet. A sablonhoz 3 fejezet készült. További főfejezeteket úgy hozhatunk létre, ha új \TeX~fájlt készítünk a fejezet számára, és a \verb+thesis.tex+ fájlban, a \verb+\include+ és \verb+\includeonly+ utasítások argumentumába felvesszük az új \verb+.tex+ fájl nevét. + + +%---------------------------------------------------------------------------- +\section{Definíciók, tételek, példák} +%---------------------------------------------------------------------------- + +\begin{definition}[Fluxuskondenzátor térerőssége] +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +\end{definition} + +\begin{example} +Példa egy példára. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +\end{example} + +\begin{theorem}[Kovács tétele] +Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +\end{theorem} diff --git a/src/content/thesis-format.tex b/src/content/thesis-format.tex new file mode 100644 index 0000000..8e2debe --- /dev/null +++ b/src/content/thesis-format.tex @@ -0,0 +1,24 @@ +%---------------------------------------------------------------------------- +\chapter{A dolgozat formai kivitele} +%---------------------------------------------------------------------------- +Az itt található információk egy része a BME VIK Hallgatói Képviselet által készített ,,Utolsó félév a villanykaron'' c. munkából lett kis változtatásokkal átemelve. Az eredeti dokumentum az alábbi linken érhető el: \url{http://vik.hk/hirek/diplomafelev-howto-2015}. + +%---------------------------------------------------------------------------- +\section{A dolgozat kimérete} +%---------------------------------------------------------------------------- +Szakdolgozat esetében minimum 30, 45 körüli ajánlott oldalszám lehet az iránymutató. De mindenképp érdemes rákérdezni a konzulensnél is az elvárásokra, mert tanszékenként változóak lehetnek az elvárások. + +Mesterképzésen a Diplomatervezés 1 esetében a beszámoló még inkább az Önálló laboratóriumi beszámolókhoz hasonlít, tanszékenként eltérő formai követelményekkel, -- egy legalább 30 oldal körüli dolgozat az elvárt -- és az elmúlt fél éves munkáról szól. De egyben célszerű, ha ez a végleges diplomaterv alapja is. (A végleges 60-90 oldal körülbelül a hasznos részre nézve) + + +%---------------------------------------------------------------------------- +\section{A dolgozat nyelve} +%---------------------------------------------------------------------------- +Mivel Magyarországon a hivatalos nyelv a magyar, ezért alapértelmezésben magyarul kell megírni a dolgozatot. Aki külföldi posztgraduális képzésben akar részt venni, nemzetközi szintű tudományos kutatást szeretne végezni, vagy multinacionális cégnél akar elhelyezkedni, annak célszerű angolul megírnia diplomadolgozatát. Mielőtt a hallgató az angol nyelvű verzió mellett dönt, erősen ajánlott mérlegelni, hogy ez mennyi többletmunkát fog a hallgatónak jelenteni fogalmazás és nyelvhelyesség terén, valamint -- nem utolsó sorban -- hogy ez mennyi többletmunkát fog jelenteni a konzulens illetve bíráló számára. Egy nehezen olvasható, netalán érthetetlen szöveg teher minden játékos számára. + +%---------------------------------------------------------------------------- +\section{A dokumentum nyomdatechnikai kivitele} +%---------------------------------------------------------------------------- +A dolgozatot A4-es fehér lapra nyomtatva, 2,5 centiméteres margóval (+1~cm kötésbeni), 11--12 pontos betűmérettel, talpas betűtípussal és másfeles sorközzel célszerű elkészíteni. + +Annak érdekében, hogy a dolgozat külsőleg is igényes munka benyomását keltse, érdemes figyelni az alapvető tipográfiai szabályok betartására~\cite{Jeney}. diff --git a/src/figures/TeXstudio.png b/src/figures/TeXstudio.png new file mode 100644 index 0000000000000000000000000000000000000000..9977af8abffbe66f9e54f8d10bbacb29d3218492 GIT binary patch literal 172285 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�s_)aa|IXCJ3r_`u&=n5oLo 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�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 literal 0 HcmV?d00001 diff --git a/src/figures/bme_logo.pdf b/src/figures/bme_logo.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ca1c084c203828f813691efa69945d485936902b GIT binary patch literal 20185 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 HPB`m7fi@*d literal 0 HcmV?d00001 diff --git a/src/figures/convert.cmd b/src/figures/convert.cmd new file mode 100644 index 0000000..f351bcd --- /dev/null +++ b/src/figures/convert.cmd @@ -0,0 +1,7 @@ +@echo off +for %%j in (*.eps) do ( +echo converting file "%%j" +epstopdf "%%j" +) +echo done . + diff --git a/src/huplain.bst b/src/huplain.bst new file mode 100644 index 0000000..0c02e48 --- /dev/null +++ b/src/huplain.bst @@ -0,0 +1,1910 @@ +% +% huplain.bst -- plain.bst in Hungarian +% by pts@fazekas.hu at Thu Oct 30 10:10:04 CET 2003 +% tetex-url at Mon May 3 20:01:40 CEST 2004 +% derived from BibTeX standard bibliography style `plain' +% version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09. +% +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 2 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% !! title={Az foo} -> key={foo} +% !! auto add space into URLs longer than 70 characters +% !! don't remove double-accent in T1 encoding: \'{\`a}} +% !! sort year +% !! make sure about Hungarian typography of {proceedings} and {inproceedings} +% it is better now to have talked=1, (Elhangzott a ... cm konferencin) +% !! also remove space after \ae before calling purify$ +% !! crossrefs +% !! ` type ' +% !! hu ordering: author, year, title if author is present +% title, year if author is missing! +% !! use and document ``address'' +% !! MSZ 3401--81. A bibliogrfiai ttelek betrendbe sorolsnak szablyai. +% !! MSZ 3402--80. Knyvek bibliogrfiai adatkzlse s bels elrendezse. +% !! MSZ 3424/*-*. Bibliogrfiai lers. *. +% !! MSZ 3432-85. Szavak s szkapcsolatok rvidtse a bibliogrfiai lersban. +% !! MSZ 3440/*-*. A bibiliogrfiai lers besorolsi adatai. *. +% !! abbrv style for J.-P. Sartre +% !! test all entry types +% !! optional \uppercase or \textsc +% !! "5~ {\hbox{ja}}nu\'ar" #1 "({l,}{ff,})" format.name$ warning$ +% !! format.name$ keeps the first char of the name only, so specify {Gy}ula +% !! don't use width$ ??, because it's the cmr10 font in 1987. +% !! getting the first chars of names +% !! \include... +% !! bibgerman.sty, gerplain.bst, language = "german" | "USenglish" | "english" etc. +% \selectlanguage{...} \bibitem... +% !! doc: parametric volume: `ktet' (volumeisyearly={1}) instead of `vf.' +% OK: smaller space for \newblock +% OK: huname: name in hungarian order +% SUXX: cannot read current (overridden) MACRO values from .bst +% SUXX: #161 int.to.chr$ doesn't work (out of bounds), stupid BibTeX... +% Dat: @preamble { "..." # "..." } +% Dat: bibtex removes spaces from end of field contents +% Dat: `volume=' is `vfolyam' +% Dat: Doc: key={{ }.} +% Dat: Doc: write non-decaptilized titles: title = {Fejt {Ferenc} s a szocildemokrcia}, +% Dat: print debug messages with "foo" warning$ +% + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + + street + zip + city + phone + mobile + name + + numvolumes + numpages + tetex-url + ctan-url + url + isbn + issn + nocheck % ****pts**** + huname % ****pts**** + inputenc % ****pts**** + author2 % ****pts**** + talked % ****pts**** + volumeisyearly % ****pts**** + + % vvv for fmts + firstname.fmt % ****pts**** + lastname.fmt % ****pts**** + } + {} + { label adr.char } % !! what does this mean? + + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + + + +STRINGS { ss tt } + +%STRINGS { acc.latin2.160 acc.latin1.160 acc.160 } +%FUNCTION {init.accs} { +% " A L LS SSTZ-ZZ a l ls sstz zzRAAAALCCCEEEEIIDDNNOOOO*RUUUUYTsraaaalccceeeeiiddnnoooo/ruuuuytd" 'acc.latin2.160 := +% " ! | AAAAAAACEEEEIIIIDNOOOOO*OUUUUYTsaaaaaaaceeeeiiiidnooooo/ouuuuyty" 'acc.latin1.160 := +%} +%%** @param #1 string +%%** @return string +%FUNCTION {rmacc.latinx} { % ****pts**** +% 'tt := +% "" 'ss := +% { tt empty$ not } { +% #1 +% { duplicate$ tt swap$ #1 substring$ +% duplicate$ "" = { pop$ #0 } { chr.to.int$ #160 < } if$ +% } { #1 + } while$ +% duplicate$ tt swap$ #1 swap$ #1 - substring$ +% % duplicate$ ";" * warning$ +% ss swap$ * 'ss := +% duplicate$ tt swap$ #1 substring$ +% duplicate$ "" = { pop$ } { +% chr.to.int$ #159 - acc.160 swap$ #1 substring$ +% ss swap$ * 'ss := +% #1 + +% } if$ +% tt swap$ global.max$ substring$ 'tt := +% % tt warning$ +% } while$ +% ss +%} +% +%%** @param #1 a string +%%** @return a string +%FUNCTION {rmacc} { % **** pts **** +% inputenc empty$ 'skip$ { +% inputenc "latin1" = { acc.latin1.160 'acc.160 := rmacc.latinx } 'skip$ if$ +% inputenc "latin2" = { acc.latin2.160 'acc.160 := rmacc.latinx } 'skip$ if$ +% } if$ +%} + +STRINGS { acc4.latin2.160 acc4.latin1.160 acc4.160 } +FUNCTION {init.accs4} { + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%\S %\" quote$ "{}%%%%%%%%%%%%%%%%%%%%%%%%\={}%%%%%%%%%%%%%%%%\'{}%%%%\P %%%%%\c\ %%%%%%%%%%%%%%%%%%%%%%%%%%%%\`A%\'A%\^A%\~A%\" quote$ "A%\r A\AE%\c C\`E%\'E%\^E%\" quote$ "E%\`I%\'I%\^I%\" quote$ "I%\DH%\~N%\`O%\'O%\^O%\~O%\" quote$ "O%%%%%\O %\`U%\'U%\^U%\" quote$ "U%\'Y%\TH%\ss%\`a%\'a%\^a%\~a%\" quote$ "a%\r a\ae%\c c\`e%\'e%\^e%\" quote$ "e%\`\i\'\i\^\i\" quote$ "\i\dh%\~n%\`o%\'o%\^o%\~o%\" quote$ "o%%%%%\o %\`u%\'u%\^u%\" quote$ "u%\'y%\th%\" quote$ "y%" * * * * * * * * * * * * * * * * * * * * * * * * 'acc4.latin1.160 := + "%%%%\k A\u{}\L %%%%%\v L\'S%\S %\" quote$ "{}\v S\c S\v T\'Z%%%%%\v Z\.Z%%%%%\k a\k\ \l %\'{}\v l\'s%\v{}\c\ \v s\c s\v t\'z%\H{}\v z\.z%\'R%\'A%\^A%\u A\" quote$ "A%\'L%\'C%\c C\v C\'E%\k E\" quote$ "E%\v E\'I%\^I%\v D\DJ%\'N%\v N\'O%\^O%\H O\" quote$ "O%%%%%\v R\r U\'U%\H U\" quote$ "U%\'Y%\c T\ss%\'r%\'a%\^a%\u a\" quote$ "a%\'l%\'c%\c c\v c\'e%\k e\" quote$ "e%\v e\'\i\^\i\v d\dj%\'n%\v n\'o%\^o%\H o\" quote$ "o%%%%%\v r\r u\'u%\H u\" quote$ "u%\'y%\c t\.{}" * * * * * * * * * * * * * * * * * * 'acc4.latin2.160 := +} +%** @param #1 string +%** @return string +FUNCTION {rmacc4.latinx} { % ****pts**** + 'tt := + "" 'ss := + { tt "" = not } { % Dat: empty$ is true for space + #1 + { duplicate$ tt swap$ #1 substring$ + duplicate$ "" = { pop$ #0 } { chr.to.int$ #160 < } if$ + } { #1 + } while$ + duplicate$ tt swap$ #1 swap$ #1 - substring$ + % duplicate$ ";" * warning$ + ss swap$ * 'ss := + duplicate$ tt swap$ #1 substring$ + duplicate$ "" = { pop$ } { + % chr.to.int$ #159 - acc.160 swap$ #1 substring$ + duplicate$ chr.to.int$ + acc4.160 swap$ duplicate$ + duplicate$ + #639 - #4 substring$ + duplicate$ "%%%%" = { + pop$ + } { + swap$ pop$ + duplicate$ #4 #1 substring$ "%" = { #1 #3 substring$ } 'skip$ if$ + "{" swap$ * "}" * + } if$ + ss swap$ * 'ss := + #1 + + } if$ + tt swap$ global.max$ substring$ 'tt := + % tt warning$ + } while$ + ss +} + +%** Changes "" to "{\'a}" etc. +%** @param #1 a string +%** @return a string +FUNCTION {rmacc4} { % **** pts **** + inputenc empty$ 'skip$ { + inputenc "latin1" = { acc4.latin1.160 'acc4.160 := rmacc4.latinx } 'skip$ if$ + inputenc "latin2" = { acc4.latin2.160 'acc4.160 := rmacc4.latinx } 'skip$ if$ + } if$ +} + +INTEGERS { acc.fwd } +%** Changes "fo{\'o}h{\H u}s" to "fo\'oh\H us". Helps keeping ligatures. +%** Changes `{\ae}' to `\ae ' and `{\\XY}' to `\XY ' +%** Changes only known accents inside braces, followed by 1 or 2 accented +%** letters. +%** Dat: previous \oe must be inserted as {\\oe}, the same for {\DH} etc. +%** @param #1 string +%** @return string +FUNCTION {rmbrace.accs} { % ****pts**** + % Dat: LaTeX non-alphanumeric accents \`\'\^\~\"\=\. + % Dat: LaTeX accents for purify$: \c\u\v\H\d\b\t\r + % Dat: specially removed: {\?...} -> ... + 'tt := + "" 'ss := + { tt "" = not } { + #1 + { duplicate$ tt swap$ #2 substring$ + duplicate$ "" = { pop$ #0 } { "{\" = not } if$ + } { #1 + } while$ + duplicate$ tt swap$ #1 swap$ #1 - substring$ + % duplicate$ ";" * warning$ + ss swap$ * 'ss := + + duplicate$ tt swap$ #2 + #1 substring$ + "}" = { #3 } { + duplicate$ tt swap$ #3 + #1 substring$ + "}" = { % `{\i}' etc. + duplicate$ tt swap$ #2 + #1 substring$ + duplicate$ "o" = {#4} { + duplicate$ "O" = {#4} { + duplicate$ "l" = {#4} { + duplicate$ "L" = {#4} { + duplicate$ "i" = {#4} { + duplicate$ "j" = {#4} { + #3} % Dat: disallow other {\X} + if$} if$} if$} if$} if$} if$ + swap$ pop$ + } { + duplicate$ tt swap$ #4 + #1 substring$ + "}" = { #5 } { + duplicate$ tt swap$ #5 + #1 substring$ + "}" = { #6 } { #3 } if$ + } if$ + } if$ + } if$ + 'acc.fwd := + % Status: offset-of-"\{" + %%acc.fwd int.to.str$ warning$ + acc.fwd #3 = { + duplicate$ tt swap$ acc.fwd substring$ % copy 3 bytes + } { + duplicate$ #1 + tt swap$ acc.fwd #2 - substring$ % keep "\'o" or "\H u" only + %%duplicate$ warning$ + duplicate$ "\oe" = {#5} { + duplicate$ "\OE" = {#5} { + duplicate$ "\ae" = {#5} { + duplicate$ "\AE" = {#5} { + duplicate$ "\aa" = {#5} { + duplicate$ "\AA" = {#5} { + duplicate$ "\th" = {#5} { + duplicate$ "\TH" = {#5} { + duplicate$ "\dh" = {#5} { + duplicate$ "\DH" = {#5} { + duplicate$ "\dj" = {#5} { + duplicate$ "\DJ" = {#5} { + duplicate$ "\ng" = {#5} { + duplicate$ "\NG" = {#5} { + duplicate$ "\ss" = {#5} { + duplicate$ "\SS" = {#5} { + duplicate$ "\o" = {#5} { + duplicate$ "\O" = {#5} { + duplicate$ "\l" = {#5} { + duplicate$ "\L" = {#5} { + duplicate$ "\i" = {#5} { + duplicate$ "\j" = {#5} { + duplicate$ #2 #1 substring$ + duplicate$ "`" = {#1} { + duplicate$ "'" = {#1} { + duplicate$ "^" = {#1} { + duplicate$ "~" = {#1} { + duplicate$ quote$ = {#1} { + duplicate$ "=" = {#1} { + duplicate$ "." = {#1} { + duplicate$ "c" = {#2} { + duplicate$ "u" = {#2} { + duplicate$ "v" = {#2} { + duplicate$ "H" = {#2} { + duplicate$ "d" = {#2} { + duplicate$ "b" = {#2} { + duplicate$ "t" = {#2} { + duplicate$ "r" = {#2} { + duplicate$ "?" = {#3} { + duplicate$ "\" = {#4} { % added at Mon May 17 15:39:30 CEST 2004 + #0} if$} if$} if$} if$} if$} if$} if$} if$} if$} + if$} if$} if$} if$} if$} if$} if$} if$ + % Stack: "\'o" "'" 0|1|2 + swap$ pop$ + } if$} if$} if$} if$} if$} if$} if$} if$} if$} if$} if$} if$} if$} if$} + if$} if$} if$} if$} if$} if$} if$} if$ + + % Stack: "\'o" 0|1|2|3 + duplicate$ #5 = { + pop$ " " * % `{\oe}' becomes `\oe ' + } { duplicate$ #4 = { + pop$ #2 global.max$ substring$ % include single backlsash + " " * % add space so `{\\th}' becomes `\th ' + } { duplicate$ #3 = { + pop$ #3 global.max$ substring$ + } { duplicate$ #2 = { + pop$ + duplicate$ #3 #1 substring$ + " " = + } 'skip$ if$ + % Stack: "\'o" 0|1 + 'skip$ { "{" swap$ * "}" * } if$ + } if$ } if$ } if$ + } if$ + ss swap$ * 'ss := + acc.fwd + tt swap$ global.max$ substring$ 'tt := + } while$ + ss +} + +% --- + +INTEGERS { output.state before.all mid.sentence after.sentence after.block + cur.adr.char after.authors } +STRINGS { s t ls rs } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'after.authors := +} + + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\bibNewBlock " write$ + } + { output.state before.all = + 'write$ + { output.state after.authors = + { write$ newline$ "\bibNewBlock " write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ + nocheck empty$ { "empty " t * " in " * cite$ * warning$ } {} if$ + } + 'output.nonnull + if$ +} + +% @return a string +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + inputenc empty$ {} { " \bibInputEncoding{" inputenc "}" * * write$ } if$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ + inputenc empty$ 'skip$ { "\bibResetInputEncoding" write$ newline$ } if$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +% ****pts**** +FUNCTION {new.block.authors} { + duplicate$ empty$ 'skip$ { ":" * } if$ + output.state before.all = + 'skip$ + { after.authors 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.isbn} +{ isbn empty$ + { "" } + { new.block "ISBN " isbn * } + if$ +} + +FUNCTION {format.issn} +{ issn empty$ + { "" } + { new.block "ISSN " issn * } + if$ +} + +%** is.url.split.char <0-or-1> +%** Is the spefified char candidate to split the URL at? +FUNCTION {is.url.split.char} { + duplicate$ "/" = { pop$ #1 } { + duplicate$ "." = { pop$ #1 } { + duplicate$ "?" = { pop$ #1 } { + duplicate$ "&" = { pop$ #1 } { + duplicate$ "-" = { pop$ #1 } { + pop$ #0 } if$ } if$ } if$ } if$ } if$ +} + +%** string.length +%** Imp: a faster implementation +%** Dat: destroys 'ls +FUNCTION {string.length} { + 'ls := + #1 + { duplicate$ ls swap$ #1 substring$ "" = #1 swap$ - } + { #1 + } while$ + #1 - + "" 'ls := +} + + +INTEGERS { last.split.ofs } + +%** split.url +%** We have to add spaces (works with \usepackage{url}), because otherwise +%** bibtex adds a % at column 79. +%** After a maxinmum of 71 chars, a space gets inserted. +%** Clobbers 'ss, 'ls and 'rs. +FUNCTION {split.url} { + % We add spaces after the last is.url.split.char + 'ss := % save original string + #0 'last.split.ofs := % Dat: last offset to split _after_ + "" 'rs := + #1 % loop variable + { duplicate$ ss swap$ #1 substring$ "" = #1 swap$ - } % more chars in ss + { duplicate$ ss swap$ #1 substring$ is.url.split.char { + duplicate$ 'last.split.ofs := + } 'skip$ if$ + duplicate$ #70 > { + last.split.ofs #0 = { + duplicate$ 'last.split.ofs := % Dat: split at any char if cannot split at good position + } 'skip$ if$ + rs ss #1 last.split.ofs substring$ " " * * 'rs := + ss last.split.ofs #1 + ss string.length substring$ 'ss := + %% ss warning$ + last.split.ofs - #1 + % decrement loop variable + %% duplicate$ warning$ + #0 'last.split.ofs := + } { #1 + } if$ + } while$ + pop$ % Dat: pop loop variable + rs ss * + "" 'ss := + "" 'rs := +} + +FUNCTION {output.url} { + url empty$ + { "" } + { new.block "" output.nonnull + before.all 'output.state := + newline$ % Dat: bibtex breaks lines -- let it be longer + "\bibUrll{URL} >" url split.url * ">" * } + if$ output + ctan-url empty$ + { "" } + { new.block "" output.nonnull + before.all 'output.state := + newline$ % Dat: bibtex breaks lines -- let it be longer + "\bibUrll{CTAN} >" ctan-url split.url * ">" * } + if$ output + tetex-url empty$ + { "" } + { new.block "" output.nonnull + before.all 'output.state := + newline$ % Dat: bibtex breaks lines -- let it be longer + "\bibUrll{te\TeX} >" tetex-url * split.url ">" * } + if$ output +} + +% ****pts**** +STRINGS { nfmt0 nfmt1 nfmt2 nfmt3 } +STRINGS {firstname.fmt0 lastname.fmt0} +FUNCTION {init.nfmt0} { + "ff" 'firstname.fmt0 := + "ll" 'lastname.fmt0 := + % "f." 'firstname.fmt0 := % similar to abbrev.bst +} +FUNCTION {init.nfmts} { + "{" firstname.fmt0 "~}{vv~}{" lastname.fmt0 "}{, jj}" * * * * 'nfmt0 :=% 0: English order + "{jj~}{vv~}{" lastname.fmt0 "}{~" firstname.fmt0 "}" * * * * 'nfmt1 := % 1: Hungarian name in Hungarian bib + "{vv~}{" lastname.fmt0 "}{, " firstname.fmt0 "}{, jj}" * * * * 'nfmt2 := % 2: English name in Hungarian bib + "{jj~}{vv~}{ll}{~f.}" 'nfmt3 := % 3: Hungarian name in Hungarian bib, abbreviated name +} + +FUNCTION {format.names} +{ rmacc4 's := % ****pts**** + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } { + % ****pts**** + huname empty$ { s nameptr nfmt0 format.name$ 't := }{ % empty: English order + huname "0" = { s nameptr nfmt0 format.name$ 't := }{ % 0: English order + huname "1" = { s nameptr nfmt1 format.name$ 't := }{ % 1: Hungarian name in Hungarian bib + huname "2" = { s nameptr nfmt2 format.name$ 't := } % 2: English name in Hungarian bib + { s nameptr nfmt3 format.name$ 't := } % 3: Hungarian name in Hungarian bib, abbreviated name + if$ }if$ }if$ }if$ + % ^^^ Dat: important to have no space in {ll} for "others" + t rmbrace.accs 't := % ****pts**** + nameptr #1 > + { namesleft #1 > + { "\bibAnd 0" * t * } + { % numnames #2 > { "," * } 'skip$ if$ % ****pts**** + %% t ";;" * warning$ + t "others" = + { "\bibEtAl ." * } + { numnames #2 > { "\bibAnd 2" } { "\bibAnd 1"} if$ * t * } + if$ + } + if$ + } + 't + if$ + %% t warning$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > { "\bibEd 1" } { "\bibEd 0" } if$ * %****pts**** + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title rmacc4 "t" change.case$ rmbrace.accs } % Dat: ****pts**** get used to it in English... + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +% Dat: possible months formats in .bib: +% month = jun # "-" # aug, --> "j\'unius--\allowbreak augusztus" !! +% month = jun, --> "j\'unius" +% month = "8~" # feb, --> "februr 8." +% month = nov # ", " # dec, --> "november\nobreak\hskip--\allowbreak december" + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + 'year + { year ".\ " * + month #1 "{ll}{~ff.}" format.name$ % convert "december" -> "december"; "5~december" -> "december~5." + % ^^^ !! convert "janu\'ar--febru\'ar" and "janu\'ar, febru\'ar" to "j--f"... + % ^^^ !! convert . to \hbox{.} at end, to have frenchspacing... + * } % !! date + if$ + } + if$ +} + +FUNCTION {format.btitle} +{ title rmbrace.accs emphasize +} + +%** tie.or.space.connect "" +%** is ~ if is long (>=3 normal letters) +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {numpages.output} { % ****pts**** + numpages empty$ 'skip$ { + numpages "p." tie.or.space.connect output + } if$ +} + +FUNCTION {note.output} { % ****pts**** + note empty$ 'skip$ { note rmbrace.accs output.nonnull } if$ +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.series} { % ****pts**** + series empty$ { "" } { + series + type$ "inproceedings" = type$ "proceedings" = or + { " kon\-fe\-ren\-cia\-so\-ro\-zat" } { " sorozat" } if$ + * + } if$ +} + +% Dat: INCOLLECTION: number = 23, series = "Fast Computers", +FUNCTION {format.bvolume} { % ****pts**** + volume empty$ number empty$ and { + series empty$ 'skip$ { format.series output new.block } if$ + % ^^^ Dat: don't emphasize {Osiris kziknyvek sorozat}, because it's after the book title. + numvolumes empty$ { "" } + { "\bibNumVolumes {" numvolumes "}." * * } if$ % ****pts**** + } { + "numvolumes and volume/number" numvolumes either.or.check + series empty$ 'skip$ { format.series output } if$ % Dat: no new.block + number empty$ + { volume } + { "volume and number" volume either.or.check number } if$ + n.dashify + duplicate$ #-1 #1 substring$ "-" = 'skip$ 'add.period$ if$ + "\bibVolume {" swap$ * "}." * + } if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition rmacc4 "l" change.case$ } + { edition rmacc4 "t" change.case$ } + if$ + add.period$ + " kiad." * % Dat: " kiad.": Gyurgyk Jnos: Szerkesztk s szerzk kziknyve, 533. oldal, 2. sor. + } + if$ +} + +% Dat: `FUNCTION {multi.page.check}' not needed + +%** Used by type$ {inbook} and {incollection} +%** English typography has: +%** pages 23--45 (pages={23--45}) +%** pp. 23--45. (pages={23--45}) +%** p. 23. (pages=={23}: on page 23) +%** p. 234 (numpages=234: the book has 234 pages) +%** Hungarian typography has: +%** 234 p. (numpages=234) +%** 23--45. p (pages={23--45}) +%** 23. p. (pages=23) +FUNCTION {format.pages} { % ****pts**** + pages empty$ + { "" } + { pages add.period$ n.dashify "p." tie.or.space.connect } + if$ +} + +FUNCTION {volume.caption} { % ****pts**** + volumeisyearly empty$ { "1" } { volumeisyearly } if$ % default is "1" + "0" = { "k\" quote$ "otet" * * } { "\'evf." } if$ +} + +FUNCTION {format.vol.num.pages} { % ****pts**** + volume duplicate$ empty$ { pop$ "" } { + add.period$ + volume.caption % "\'evf." + tie.or.space.connect } if$ + year empty$ { + nocheck empty$ { "empty year in " cite$ * warning$ } 'skip$ if$ + } { + duplicate$ empty$ + { pop$ format.date add.period$ } + { " (" * format.date * ")" * } if$ + } if$ + number empty$ 'skip$ { + duplicate$ empty$ 'skip$ { " " * } if$ + volume empty$ nocheck empty$ and { "there's a number but no volume in " cite$ * warning$ } 'skip$ if$ + number add.period$ "sz." tie.or.space.connect * + } if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + { "" } % 'format.pages + { chapter + type empty$ { "fejezet" } { + type "subsection" = { "alszakasz" } { + type "subsubsection" = { "alalszakasz" } { + type "chapter" = { "fejezet" } { + type "section" = { "szakasz" } { + type "part" = { "r{\'e}sz" } { + type "appendix" = { "f{\" quote$ "u}ggel{\'e}k" * * } { + type rmacc4 "l" change.case$ } if$ } if$ } if$ } if$ } if$ } if$ } if$ + tie.or.space.connect + % Dat: no format.pages here % ****pts**** + } + if$ +} + +FUNCTION {format.in.edited} { % ****pts**** + editor "self" = % ****pts**** + { "\bibInSelf0" } + { "In " format.editors * ": " * } if$ + booktitle rmbrace.accs emphasize * +} + +FUNCTION {format.in.ed.booktitle} { + booktitle empty$ + { "" } + { editor empty$ + % vvv "In ": Gyurgyk Jnos: Szerkesztk s szerzk kziknyve, 130. oldal, 12. sor. + { "In " booktitle rmbrace.accs emphasize * } + 'format.in.edited if$ + } if$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + + +%* @param #1 a string beginning with a possibly accented letter +%* @return "" or "z", corresponding to the Hungarian definite article "a" and "az" +FUNCTION {article.az} { + rmacc4 % remove accents smartly + purify$ + "l" change.case$ + #1 #1 substring$ + duplicate$ " " = {"z"} { % hack + duplicate$ "a" = {"z"} { + duplicate$ "e" = {"z"} { + duplicate$ "i" = {"z"} { + duplicate$ "o" = {"z"} { + duplicate$ "u" = {"z"} { + ""} if$ }if$ }if$ }if$ }if$ }if$ + swap$ pop$ +} + +%** by pts@fazekas.hu at Thu Nov 9 17:03:00 CET 2006 +%** @example "foo}" split.last.brace "foo" "}" +%** @example "food" split.last.brace "food" "" +FUNCTION {split.last.brace} { + duplicate$ #-1 #1 substring$ "}" = + { duplicate$ string.length #1 - #1 swap$ substring$ "}" } + { "" } if$ +} + +%** by pts@fazekas.hu at Thu Nov 9 17:03:00 CET 2006 +%** Clobbers 'rs and 'ls +%** @example "foobar" "bar" replace.at.end "foo" 1 +%** @example "foobar!" "bar" replace.at.end "foobar!" 0 +FUNCTION {remove.at.end} { + 'rs := % save pattern string % Dat: string.length destroys 'ls + duplicate$ rs string.length #-1 swap$ + substring$ rs = + { duplicate$ string.length rs string.length - #1 swap$ substring$ #1 } + { #0 } if$ +} + +FUNCTION {format.in.talked.booktitle} { + booktitle empty$ + { "" } + { editor empty$ + { + booktitle duplicate$ 's := + "A " swap$ #2 swap$ chop.word + "Az " swap$ #3 swap$ chop.word + %% duplicate$ warning$ + s = { + "a" booktitle article.az * + booktitle rmbrace.accs emphasize + tie.or.space.connect + } { booktitle rmbrace.accs emphasize } if$ + % Dat: now: "a~{\em Foo Konferencia}" + split.last.brace + swap$ + % Dat: now "}" "a~{\em Foo Konferencia" + % vvv Imp: maybe we don't need \- here, because it + % prevents hyphenation in earlier parts of the word + "Conference" remove.at.end { "Con\-fe\-ren\-ce-en" * swap$ * } { + "conference" remove.at.end { "con\-fe\-ren\-ce-en" * swap$ * } { + "Konferencia" remove.at.end { "Kon\-fe\-ren\-ci\'an" * swap$ * } { + "konferencia" remove.at.end { "kon\-fe\-ren\-ci\'an" * swap$ * } { + swap$ * " c{\'i}m{\H u} konferenci{\'a}n" * + } if$ } if$ } if$ } if$ + %% duplicate$ warning$ + % Dat: now "a~{\em Foo Konferencin}" + % or "a~{\em Foo} cm konferencin" + %% "alma" string.length warning$ + "Elhangzott " swap$ * + } 'format.in.edited if$ + } if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +%** @param #1 default value for `type' +FUNCTION {format.thesis.type} { % ****pts**** + type empty$ 'skip$ { pop$ type } if$ + rmacc4 "t" change.case$ rmbrace.accs +} + +FUNCTION {format.tr.number} % ****pts**** +{ type empty$ + { "{\bibTechRep 0}" } % Dat: `{'..`}' to avoid "t" change.case$ + 'type + if$ + number empty$ + { rmacc4 "t" change.case$ } + { number add.period$ swap$ tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " \bibEtAl ." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " \bibEtAl ." * } + { " \'es " * editor #2 "{vv~}{ll}" format.name$ * } % !! + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} %*type* ****pts**** +{ output.bibitem + format.authors "author" output.check + new.block.authors + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + format.vol.num.pages output % format.date is inside this + } + { format.article.crossref output.nonnull + } if$ + format.pages output + format.issn output + output.url + new.block numpages.output note.output + fin.entry +} + +% copied from KOMA-Script +% by pts at Thu Oct 30 09:56:33 CET 2003 + +% !! how does it work and why? +FUNCTION {print.adrchr} +{ adr.char empty$ 'skip$ { % ****pts**** Dat: default + adr.char chr.to.int$ cur.adr.char > + { newline$ "\adrchar{" adr.char "}" * * write$ newline$ + adr.char chr.to.int$ 'cur.adr.char := + } + 'skip$ + if$ + } if$ % !! +} + +FUNCTION {get.names} +{ name empty$ + { organization empty$ + { "{}{}" } + { organization "{}" * } + if$ + } + { "{" name #1 "{ll}" format.name$ "}" * * + "{" name #1 "{ff}{ vv}" format.name$ "}" * * * + } + if$ +} + +%** Dat: deliberately with `sss', to avoid conflict +FUNCTION {addresss} { %*type* + % !! many improvements + output.bibitem pop$ + print.adrchr % !! + "\adrentry" write$ + get.names write$ newline$ + "{" + street empty$ + { "" } + { street " \\ " *} + if$ + * + zip empty$ + { "" } + { zip } + if$ + " " * * + city empty$ + { "" } + { city } + if$ + "}{" * * + phone empty$ + { + mobile empty$ + { "" } + { mobile } + if$ + }{ + mobile empty$ + { phone } + { phone "\\" mobile * * } + if$ + } + if$ + "}{}{}{}{" * * + key empty$ + { "" } + { key } + if$ + "}" * * write$ newline$ +} + + +% --- + +%** Used by type$ {book}, {inbook} and {incollection} +FUNCTION {books.tail} { % ****pts**** + crossref missing$ { + format.bvolume output % includes functionality of format.number.series + new.block % no comma in `1--4. kt., 7. kiad.' + } 'skip$ if$ + type$ "book" = { + chapter empty$ 'skip$ + { "can't use chapter for @book; try @inbook or @incollection" warning$ } if$ + } { + format.chapter.pages + pages empty$ { "chapter and pages" output.check } {output} if$ + new.block % new.sentence? -- for incollection + } if$ + author2 empty$ 'skip$ { author2 output.nonnull new.block } if$ + format.edition output new.block + crossref missing$ { + % format.bvolume output + % new.block + % format.number.series output % ****pts**** + % new.sentence + address output + format.date "year" output.check + publisher "publisher" output.check + } { + format.date "year" output.check + new.block + format.book.crossref output.nonnull + } if$ + format.pages output + format.isbn output + format.issn output % Dat: most books don't have this + output.url + new.block numpages.output note.output fin.entry +} + +FUNCTION {book} { %*type* + output.bibitem + author empty$ + { editor empty$ key missing$ { "" } { key } if$ "." = and + 'skip$ + { format.editors "author and editor" output.check } if$ + } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block.authors + format.btitle "title" output.check + new.block + books.tail +} + +FUNCTION {booklet} { %*type* ****pts**** + output.bibitem + format.authors output + new.block.authors + format.title "title" output.check + new.block + format.bvolume output new.block + author2 output.nonnull new.block + format.edition output new.block + % howpublished address new.block.checkb + howpublished output + address output + % Dat: no publisher= + format.date output + format.isbn output + format.issn output % Dat: most books don't have this + output.url + new.block numpages.output note.output fin.entry +} + +FUNCTION {inbook} %*type* +{ book % ****pts**** +} + +FUNCTION {incollection} %*type* +{ output.bibitem + format.authors "author" output.check + new.block.authors + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check new.block } + { format.incoll.inproc.crossref output.nonnull } if$ + books.tail +} + +%** @param #1 thesis type +FUNCTION {thesises.tail} { % ****pts**** + format.thesis.type output.nonnull + school empty$ { nocheck empty$ { "empty school in " * cite$ * warning$ } 'skip$ if$ } 'skip$ if$ + school empty$ address empty$ and 'skip$ { + write$ before.all 'output.state := " (" + % school output address ")" * output + school ")" * output + new.block + } if$ + author2 empty$ 'skip$ { author2 output new.block } if$ + new.block + address output + format.date "year" output.check + output.url + new.block numpages.output note.output fin.entry +} + +%** Emits a decapitalized title. +FUNCTION {mastersthesis} { %*type* + output.bibitem + format.authors "author" output.check + new.block.authors + format.title "title" output.check + new.block + "{Diplomaterv}" % "{Doktori} {{\'e}rtekez{\'e}s} " % "Master's thesis" + thesises.tail +} + +%** Emits an \emph-asized title. +FUNCTION {phdthesis} { %*type* + output.bibitem + format.authors "author" output.check + new.block.authors + format.btitle "title" output.check + new.block + "{PhD} {\'e}rtekez{\'e}s " % "PhD thesis" + thesises.tail +} + +FUNCTION {misc} %*type* % ****pts**** +{ output.bibitem + format.authors output + title empty$ howpublished empty$ and 'skip$ { + new.block.authors % Dat: emits ":" + % title howpublished new.block.checkb % Dat: emits "." + format.title output + howpublished new.block.checka + howpublished output + } if$ + format.date output + format.isbn output + format.issn output % Dat: most books don't have this + output.url + new.block numpages.output note.output fin.entry + empty.misc.check +} + +FUNCTION {manual} %*type* ****pts**** +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull } if$ + new.block + } + { format.authors output.nonnull new.block.authors } + if$ + format.btitle "title" output.check + author2 empty$ 'skip$ { author2 output new.block } if$ + format.edition output new.block + + publisher empty$ 'skip$ { "can't use publisher for @manual; try @book" warning$ } if$ + author empty$ + { address output } + { % organization address new.block.checkb + organization output + address output + } if$ + format.edition output + format.date output + publisher output + output.url + new.block numpages.output note.output fin.entry +} + + +FUNCTION {techreport} %*type* +{ output.bibitem + format.authors "author" output.check + new.block.authors + format.title "title" output.check + new.block + format.tr.number output.nonnull + author2 empty$ 'skip$ { author2 output new.block } if$ + address output + format.date "year" output.check + institution "institution" output.check + output.url + new.block numpages.output note.output fin.entry +} + +FUNCTION {unpublished} %*type* % ****pts**** +{ output.bibitem + format.authors "author" output.check + new.block.authors + format.title "title" output.check new.block + format.date output + output.url + new.block + note "note" output.check + fin.entry +} + +FUNCTION {inproceedings} %*type* +{ output.bibitem + format.authors "author" output.check + new.block.authors + format.title + talked empty$ 'skip$ 'emphasize if$ % at Thu Nov 9 16:19:53 CET 2006 + "title" output.check + new.block + crossref missing$ + { talked empty$ 'format.in.ed.booktitle 'format.in.talked.booktitle if$ + duplicate$ #1 #1 substring$ "I" = { % Dat: don't append to `Elhangzott' or empty booktitle + series empty$ { duplicate$ empty$ 'skip$ { " (kon\-fe\-ren\-cia\-anyag)" * } if$ } 'skip$ if$ + } 'skip$ if$ + "booktitle" output.check + format.bvolume output % includes functionality of format.number.series + author2 empty$ 'skip$ { author2 output.nonnull new.block } if$ + new.block + address output % ****pts**** + format.date "year" output.check + % new.sentence + organization output + publisher output + } + { format.incoll.inproc.crossref output.nonnull } + if$ + format.pages output + format.isbn output + format.issn output % Dat: most books don't have this + output.url + new.block numpages.output note.output fin.entry +} + +FUNCTION {proceedings} %*type* +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + format.btitle "title" output.check + series empty$ { " (konferenciaanyag)" * } 'skip$ if$ + format.bvolume output % includes functionality of format.number.series + author2 empty$ 'skip$ { author2 output.nonnull new.block } if$ + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + % new.sentence % ****pts**** + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + format.isbn output + format.issn output % Dat: most books don't have this + output.url + new.block numpages.output note.output fin.entry +} + +FUNCTION {conference} %*type* % ****pts**** +{ inproceedings } + +FUNCTION {default.type} { misc } + +FUNCTION {fmts} { %*type* % ****pts**** + % Emulation of \bibtem without typesetting anything. + newline$ + "\immediate\write\@auxout{\string\bibcite{" write$ + cite$ write$ + "}{0}}" write$ newline$ +} +FUNCTION {fmts2} { + firstname.fmt empty$ 'skip$ { firstname.fmt 'firstname.fmt0 := } if$ + lastname.fmt empty$ 'skip$ { lastname.fmt 'lastname.fmt0 := } if$ + init.nfmts +} + +%****pts**** +% Dat: {\-} is needed for format.name$ +MACRO {jan} {"ja{\-}nu{\-}\'ar"} +MACRO {feb} {"feb{\-}ru\'ar"} +MACRO {mar} {"m\'ar{\-}cius"} +MACRO {apr} {"\'ap{\-}ri{\-}lis"} +MACRO {may} {"m\'a{\-}jus"} +MACRO {jun} {"j\'u{\-}ni{\-}us"} +MACRO {jul} {"j\'u{\-}li{\-}us"} +MACRO {aug} {"au{\-}gusz{\-}tus"} +MACRO {sep} {"szep{\-}tem{\-}ber"} +MACRO {oct} {"ok{\-}t\'o{\-}ber"} +MACRO {nov} {"no{\-}vem{\-}ber"} +MACRO {dec} {"de{\-}cem{\-}ber"} + +% Dat: see also in mrabbrev.bib +MACRO {acmcs} {"ACM Computing Surveys"} +MACRO {acta} {"Acta Informatica"} +MACRO {cacm} {"Communications of the ACM"} +MACRO {ibmjrd} {"IBM Journal of Research and Development"} +MACRO {ibmsj} {"IBM Systems Journal"} +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} +MACRO {ieeetc} {"IEEE Transactions on Computers"} +MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} +MACRO {ipl} {"Information Processing Letters"} +MACRO {jacm} {"Journal of the ACM"} +MACRO {jcss} {"Journal of Computer and System Sciences"} +MACRO {scp} {"Science of Computer Programming"} +MACRO {sicomp} {"SIAM Journal on Computing"} +MACRO {tocs} {"ACM Transactions on Computer Systems"} +MACRO {tods} {"ACM Transactions on Database Systems"} +MACRO {tog} {"ACM Transactions on Graphics"} +MACRO {toms} {"ACM Transactions on Mathematical Software"} +MACRO {toois} {"ACM Transactions on Office Information Systems"} +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +%** @param #1 string +%FUNCTION {reverse} { % +% 't := "" 's := +% #1 +% { duplicate$ t swap$ #1 substring$ "" = not } { +% duplicate$ t swap$ #1 substring$ +% s * 's := +% #1 + +% } while$ +% pop$ s +%} + +%** by pts@fazekas.hu at Mon May 17 16:50:26 CEST 2004 +%** @param 1: TeX string +%** @return {\th}, {\TH} {\dh} {\DH} {\dj} {\DJ} {\ng} {\NG} {\SS} changed to +%** th TH dh DH dj DJ ng NG SS +FUNCTION {rmbrace.extrat1} { + % Dat: #4 #1 substring$ is substr($_,3,1) + 'ss := + "" 'tt := + #1 'len := + #5 + { duplicate$ ss swap$ #1 substring$ "" = not } { + % Stack: index-value (#5, #6 ...) + duplicate$ ss swap$ #1 substring$ "}" = { + duplicate$ ss swap$ #4 - #5 substring$ + %% duplicate$ warning$ + duplicate$ "{\th}" = {#1} { + duplicate$ "{\TH}" = {#1} { + duplicate$ "{\dh}" = {#1} { + duplicate$ "{\DH}" = {#1} { + duplicate$ "{\dj}" = {#1} { + duplicate$ "{\DJ}" = {#1} { + duplicate$ "{\ng}" = {#1} { + duplicate$ "{\NG}" = {#1} { + duplicate$ "{\SS}" = {#1} { + #0 }if$ }if$ }if$ }if$ }if$ }if$ }if$ }if$ }if$ + } {#42 #0} if$ + #1 = { + swap$ + % Stack: 5-char-substring index-value + duplicate$ tt swap$ ss swap$ len swap$ len - #4 - substring$ * 'tt := + swap$ tt swap$ #3 #2 substring$ * 'tt := + #1 + + duplicate$ 'len := + } { pop$ #1 + } if$ + } while$ + pop$ % index value + tt ss len global.max$ substring$ * +} + + +FUNCTION {sortify} +{ rmacc4 % remove accents smartly, so purify$ will remove the accent + % rmbrace.accs + duplicate$ % ****pts**** + rmbrace.extrat1 % ****pts**** + purify$ + % Dat: purify$ removes from "vrom", keeps `varom' in "v\'arom","v{\'a}rom" + % Dat: purify$ changes {\ss} to ss, but {\dj} to empty + "l" change.case$ + " " * + swap$ * +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify % Dat: calls rmacc4 and purify$ + %% duplicate$ warning$ + * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ rmacc4 't := + "A " #2 + "An " #3 + "The " #4 + "Egy " #4 + "Der " #4 + "Die " #4 + "Das " #4 + "Un " #3 + "Une " #4 + "Az " #3 t chop.word + chop.word chop.word chop.word chop.word chop.word % ***pts**** + chop.word + chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ name empty$ + { author empty$ + { key empty$ + { "to sort, need author/key/name in " cite$ * warning$ + title empty$ { "" } { title sort.format.title } if$ % ****pts**** + }{ key sortify } + if$ + }{ author sort.format.names } + if$ + }{ name sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key missing$ + { title empty$ nocheck empty$ or + { "to sort, need author, editor, or key in " cite$ * warning$ } 'skip$ if$ + title empty$ { "" } { title sort.format.title } if$ % ****pts**** + } + { key "." = % ****pts**** + { " " title sort.format.title * } % duplicate$ warning$ + % ^^^ Dat: " " is here to put them in front of other books + { key sortify } if$ + } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = type$ "inbook" = or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + { type$ "fmts" = + { fmts2 "" } % ****pts**** + 'author.sort + if$ + } + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +EXECUTE {init.accs4} +EXECUTE {init.nfmt0} +EXECUTE {init.nfmts} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {bibIE.a} { + "\makeatletter" write$ newline$ + "\global\def\bibIE@lowc{%" write$ newline$ + " \expandafter\ifx\csname inputencoding\endcsname\relax" write$ newline$ + " \def\NeedsTeXFormat##1]{}%" write$ newline$ + " \def\ProvidesPackage##1]{}%" write$ newline$ + " \def\DeclareOption##1##2{}%" write$ newline$ + " \def\ProcessOptions{\@ifstar\@gobble\@empty}%" write$ newline$ + " \input inputenc.sty" write$ newline$ + " \let\NeedsTeXFormat \@notprerr" write$ newline$ + " \let\ProvidesPackage\@notprerr" write$ newline$ + " \let\DeclareOption \@notprerr" write$ newline$ + " \let\ProcessOptions \@notprerr" write$ newline$ + " \fi" write$ newline$ + " \global\let\bibIE@lowc\relax}" write$ newline$ + "\def\bibIE@lowa#1#2{%" write$ newline$ + " \global\def\bibResetInputEncoding{\bibIE@lowb{ascii}}% anti-warning" write$ newline$ + " \ifx#1\relax\else" write$ newline$ + " \ifx#1\@inpenc@undefined@\@empty" write$ newline$ + " \global\def\bibResetInputEncoding{\bibIE@lowb{#2}}%" write$ newline$ + " \ifx\bibResetInputEncoding\reserved@a% keep old encoding" write$ newline$ + " \global\let\bibResetInputEncoding\@empty \let\reserved@a\@empty \fi" write$ newline$ + " \fi\fi}" write$ newline$ +} +FUNCTION {bibIE.b} { + "\let\bibIE@input\input" write$ newline$ + "\def\bibIE@ascii{ascii}" write$ newline$ + "\def\bibIE@lowb#1{%" write$ newline$ + " \def\reserved@a{#1}\ifx\reserved@a\bibIE@ascii" write$ newline$ + " \gdef\@inpenc@test{\global\let\@inpenc@test\relax}%" write$ newline$ + " \edef\@inpenc@undefined{\noexpand\@inpenc@undefined@{ascii}}%" write$ newline$ + " \@inpenc@loop\^^A\^^H\@inpenc@loop\^^K\^^K%" write$ newline$ + " \@inpenc@loop\^^N\^^_\@inpenc@loop\^^?\^^ff%" write$ newline$ + "\else\def\input{\global\let\@inpenc@test\relax \bibIE@input}% no {ascii} warn" write$ newline$ + " \inputencoding{#1}\fi}%" write$ newline$ + "\def\bibInputEncoding#1{%" write$ newline$ + " \bibIE@lowc" write$ newline$ + " \def\reserved@a{\bibIE@lowb{#1}}%" write$ newline$ + " % vvv \@inpenc@undefined -> `\@inpenc@undefined@{latin2}' or undefined" write$ newline$ + " \expandafter\expandafter\expandafter\bibIE@lowa\csname" write$ newline$ + " @inpenc@undefined\endcsname\relax" write$ newline$ + " \reserved@a}" write$ newline$ newline$ +} + +%** Usage: insert `\let\bibEarlyBegin\hfuzz \InputIfFileExists{\jobname.bbl}{}{}' +%** into the LaTeX document preamble to avoid running latex(1) twice after +%** bibtex(1) has been run. +FUNCTION {bibIE.c} { + "\makeatletter \ifx\bibEarlyBegin\hfuzz" write$ newline$ + " \def\bibEarlyBegin{\begingroup\everypar{}\sloppy\hbadness10000 " write$ newline$ + " \def\Hy@colorlink##1{\begingroup}" write$ newline$ % for hyperref.sty + " \def\Hy@endcolorlink{\endgroup}" write$ newline$ % for hyperref.sty + " \def\@inpenc@loop##1##2{}" write$ newline$ + " \def\thebibliography##1{}" write$ newline$ + " \def\endthebibliography{\skip@egroup\aftergroup\bibEarlyEnd}%" write$ newline$ + " \def\inputencoding##1{}\c@enumi\z@" write$ newline$ + " \def\bibitem{\skip@egroup \let\skip@egroup\egroup" write$ newline$ + " \advance\c@enumi\@ne\@ifnextchar[\@lbibitem\@bibitem}%" write$ newline$ + " \def\@lbibitem[##1]##2{\bibcite{##2}{##1}%" write$ newline$ + " \setbox0\vbox\bgroup}% avoid emitting boxes" write$ newline$ + " \def\@bibitem##1{\expandafter\skip@bibcite\expandafter" write$ newline$ + " {\the\c@enumi}{##1}\setbox0\vbox\bgroup}% avoid emitting boxes" write$ newline$ + " \def\skip@bibcite##1##2{\bibcite{##2}{##1}}%" write$ newline$ + " \catcode11=9 % ignored" write$ newline$ + " \@tempcnta 1 \loop\catcode\@tempcnta=9" write$ newline$ + " \ifnum\@tempcnta< 8 \advance\@tempcnta\@ne\repeat" write$ newline$ + " \@tempcnta 14 \loop\catcode\@tempcnta=9" write$ newline$ + " \ifnum\@tempcnta< 31 \advance\@tempcnta\@ne\repeat" write$ newline$ + " \@tempcnta127 \loop\catcode\@tempcnta=9" write$ newline$ + " \ifnum\@tempcnta<255 \advance\@tempcnta\@ne\repeat" write$ newline$ + " \let\skip@egroup\relax}" write$ newline$ + " \def\bibEarlyEnd{\endgroup \let\bibcite\@gobbletwo" write$ newline$ + " \global\let\bibEarlyRead\relax}" write$ newline$ + " \bibEarlyBegin" write$ newline$ + "\else \let\bibEarlyEnd\relax \fi" write$ newline$ + newline$ +} + +FUNCTION {begin.bib} +{ bibIE.c + % Dat: bibTeX breaks long lines (>78 chars), so we wouldn't emit such lines + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ + preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ + % ****pts**** Dat: put preamble$ after \begin{thebibliography} + "\frenchspacing" write$ newline$ % !! optional + bibIE.a + bibIE.b + "\def\leftflushbreak{\ifx\\\@centercr\penalty100 \else" write$ newline$ % Dat: \\ is \@centercr for \raggedright + " \unpenalty\unpenalty{\@tempdima\lastskip\unskip\nobreak" write$ newline$ + " \hskip\@tempdima plus1fil}\null\penalty100 \hskip0pt plus-1fil\relax\fi}" write$ newline$ + % "\def\leftflushbreak{\nobreak\hskip0pt plus1fil\null\penalty100 \hskip0pt plus-1fil\relax}" write$ newline$ + + % Ignoring newline + spaces in a \verb (usually called in \bibUrll). + % This doesn't apply for \usepackage{url} -- please use that to have + % line breaks in the URLs. + % Example .bbl excerpt (to be converted to \bibUrll{URL} >http://foobarbaz>.) + % \bibUrll{URL} >http:// + % foobar + % baz<, + "\begingroup\lccode\string`~=\string`\^^M" write$ newline$ + " \lowercase{\endgroup\def\verb@eol@error{\obeylines\def~{\bibVerbNoSp}}}" write$ newline$ + "\begingroup\lccode\string`~=\string`\ \relax" write$ newline$ + " \lowercase{\endgroup\def\bibVerbNoSp#1{\ifx#1~\expandafter\bibVerbNoSp" write$ newline$ + " \else\expandafter#1\fi}}" write$ newline$ + + "\expandafter\ifx\csname bibUrll\endcsname\relax" write$ newline$ + "\expandafter\ifx\csname url\endcsname\relax" write$ newline$ + " \def\bibUrll#1>{\leavevmode\leftflushbreak #1~\verb>}" write$ newline$ % Imp: line breaks etc., \PVerb + "\else\def\bibUrll#1>{\leavevmode\leftflushbreak#1~\begingroup" write$ newline$ + " \catcode\string`\%=12 \catcode\string`\#=12 \bibUrlll}" write$ newline$ + " \def\bibUrlll#1>{\url{#1}\endgroup}\fi" write$ newline$ + % ^^^ "\else\def\bibUrll#1>#2>{\leftflushbreak #1~\url{#2}}\fi" write$ newline$ + % ^^^ Imp: do these parens work? Includes field URL for Internet addresses (best used with with the url.sty package of Donald Arseneau) + "\fi" write$ newline$ + % vvv Dat: so user can specify `{\empty Maf}fia' and still have the `ffi' ligature -- undocumented. + % vvv Dat: doesn't work with hyperref.sty, and has marginal benefits -- commented out + % "\def\empty{\egroup\expandafter\@firstofone\expandafter{\iffalse}\fi}" write$ newline$ + "\def\bibHU@mix#1{\egroup#1}" write$ newline$ + %"\def\empty{\expandafter\bibHU@mix\expandafter{\iffalse}\fi}" write$ newline$ + %"\def\bibHU@mix#1{\egroup#1}" write$ newline$ + % vvv Dat: Hungarian typgrphy dictates 1/3 non-stretchable space, which + % might look ugly, because the space between f+l names stretches more. + "\def\bibAnd#1{\nobreak\,\nobreak\hbox{--}\,}" write$ newline$ + % "\def\bibAnd#1{\ifcase#1 , \or\space and \or, and \fi}" write$ newline$ + % "\def\bibAnd#1{\ifcase#1 , \else\space\'es \fi}" write$ newline$ + % "\def\bibEtAl#1{ et~al.}" write$ newline$ % Dat: or `et al.' (meaning: et alii) + "\def\bibEtAl#1{ \'es m\'asok}" write$ newline$ + % ^^^ Dat: botht \bibEtAl confirmed by Gyurgyk (p. 137) + "\def\bibEd#1{ (szerk.)}" write$ newline$ + % "\def\bibEd#1{ (szerk\ifcase#1 .\else eszt\H{o}k\fi)}" write$ newline$ % (szerk.) or (szerkesztk) + % "\let\bibNewBlock\newblock" write$ newline$ + "\def\bibNewBlock{\unskip\space}" write$ newline$ + % "\def\bibVolume#1{k\" quote$ "otet}" * * write$ newline$ + "\def\bibVolume#1#2{#1 k\" quote$ "ot.} \let\bibNumVolumes\bibVolume" * * write$ newline$ + % "\def\bibTechRep#1{Technical Report}" write$ newline$ + "\def\bibTechRep#1{Jelent\'{e}s}" write$ newline$ % Dat: `.' utn van => nagybet + "\def\bibInSelf#1{In u\H{o}: }" write$ newline$ + "\csname bibOverride\endcsname" write$ newline$ +} + + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} + +% #****pts**** !! +FUNCTION {what} { + % "dr. Kpeczi, Bla and Jules Verne and Kossuth, Lajos and grf Szchenyi, Istvn and John von Neumann and Donald E. Knuth and Strunk, Jr., William and Knzy, ifj., Jen and L. R. McColvin and Tindi Lantos, Sebestyn and Molnr-Sska, Balzs and Claude Lvi-Strauss and Kis, Pter Pl and Mary-Claire van Leunen and Paul Gerhard Hoel and G. Bernard Godfrey and II., Jnos-Pl and {Szerencsejtk Rt.} and {\empty Earl of} Traquair and Horace [pseud.] Hunt and Verne, {\empty Gy}ula" 's := + % init.nfmts s #1 nfmt0 format.name$ warning$ + % ss #385 #1 substring$ warning$ + % "fo{\'o}\oe{\H u}s{\HON}{\HANT}" rmbrace.accs warning$ % to "fo\'o\oe\H us{\HON}{\HANT}" + % "fr\'e ncia" purify$ warning$ + % "bar" #-1 #1 substring$ warning$ + % "5~janu\'ar" #1 "{ll~~}{ff{}}" format.name$ warning$ + % "janu\'ar" #1 "{ll}{~ff.}" format.name$ warning$ + % "{\null Gy}urgyk" #1 "{l}/" format.name$ warning$ + % "AzBrvztr~tkrfrgp" rmacc.latin2 warning$ + % "fogbar" #3 #1 substring$ warning$ + % "Az rvztr tkrfrgp" sortify warning$ + % "Marjai, Imre and Pataky, Dnes" rmacc.latin2 warning$ + % "{\empty\'\i}purify" purify$ warning$ + % "grof Szechenyi, Istvan" #1 "{ll}/{ff}/{jj}/{vv}" format.name$ warning$ + % "John von Neumann" #1 "{ll}/{ff}/{jj}/{vv}" format.name$ warning$ + % "Tindi Lantos, Sebestyn" #1 "{ll}/{ff}/{jj}/{vv}" format.name$ warning$ + % "II., Janos., Pal" #1 "{ll}/{ff}/{jj}/{vv}" format.name$ warning$ + % "lom" "u" change.case$ warning$ % "LOM" + % "{\'a}lom" "u" change.case$ warning$ % "{\'A}LOM" + %"alma{\ss}t" purify$ warning$ % alma{\ss}t + %"alma{\dj}t" purify$ warning$ % almat (!) + % "egykor{\th}Alma korte" rmbrace.extrat1 warning$ +} +EXECUTE {what} diff --git a/src/include/declaration.tex b/src/include/declaration.tex new file mode 100644 index 0000000..e6b8c5f --- /dev/null +++ b/src/include/declaration.tex @@ -0,0 +1,32 @@ +\selectlanguage{magyar} +\pagenumbering{gobble} +%-------------------------------------------------------------------------------------- +% Nyilatkozat +%-------------------------------------------------------------------------------------- +\begin{center} +\large +\textbf{HALLGATÓI NYILATKOZAT}\\ +\end{center} + +Alulírott \emph{\vikszerzoVezeteknev{} \vikszerzoKeresztnev}, szigorló hallgató kijelentem, hogy ezt a \vikmunkatipusat{} meg nem engedett segítség nélkül, saját magam készítettem, csak a megadott forrásokat (szakirodalom, eszközök stb.) használtam fel. Minden olyan részt, melyet szó szerint, vagy azonos értelemben, de átfogalmazva más forrásból átvettem, egyértelműen, a forrás megadásával megjelöltem. + +Hozzájárulok, hogy a jelen munkám alapadatait (szerző(k), cím, angol és magyar nyelvű tartalmi kivonat, készítés éve, konzulens(ek) neve) a BME VIK nyilvánosan hozzáférhető elektronikus formában, a munka teljes szövegét pedig az egyetem belső hálózatán keresztül (vagy autentikált felhasználók számára) közzétegye. Kijelentem, hogy a benyújtott munka és annak elektronikus verziója megegyezik. Dékáni engedéllyel titkosított diplomatervek esetén a dolgozat szövege csak 3 év eltelte után válik hozzáférhetővé. + +\begin{flushleft} +\vspace*{1cm} +Budapest, \today +\end{flushleft} + +\begin{flushright} + \vspace*{1cm} + \makebox[7cm]{\rule{6cm}{.4pt}}\\ + \makebox[7cm]{\emph{\vikszerzoVezeteknev{} \vikszerzoKeresztnev}}\\ + \makebox[7cm]{hallgató} +\end{flushright} +\thispagestyle{empty} + +\vfill +\clearpage +\thispagestyle{empty} % an empty page + +\selectthesislanguage diff --git a/src/include/guideline.tex b/src/include/guideline.tex new file mode 100644 index 0000000..4bbe4e2 --- /dev/null +++ b/src/include/guideline.tex @@ -0,0 +1,54 @@ +\selecthungarian +%-------------------------------------------------------------------------------------- +% Rovid formai es tartalmi tajekoztato +%-------------------------------------------------------------------------------------- + +\footnotesize +\begin{center} +\large +\textbf{\Large Általános információk, a diplomaterv szerkezete}\\ +\end{center} + +A diplomaterv szerkezete a BME Villamosmérnöki és Informatikai Karán: +\begin{enumerate} +\item Diplomaterv feladatkiírás +\item Címoldal +\item Tartalomjegyzék +\item A diplomatervező nyilatkozata az önálló munkáról és az elektronikus adatok kezeléséről +\item Tartalmi összefoglaló magyarul és angolul +\item Bevezetés: a feladat értelmezése, a tervezés célja, a feladat indokoltsága, a diplomaterv felépítésének rövid összefoglalása +\item A feladatkiírás pontosítása és részletes elemzése +\item Előzmények (irodalomkutatás, hasonló alkotások), az ezekből levonható következtetések +\item A tervezés részletes leírása, a döntési lehetőségek értékelése és a választott megoldások indoklása +\item A megtervezett műszaki alkotás értékelése, kritikai elemzése, továbbfejlesztési lehetőségek +\item Esetleges köszönetnyilvánítások +\item Részletes és pontos irodalomjegyzék +\item Függelék(ek) +\end{enumerate} + +Felhasználható a következő oldaltól kezdődő \LaTeX diplomatervsablon dokumentum tartalma. + +A diplomaterv szabványos méretű A4-es lapokra kerüljön. Az oldalak tükörmargóval készüljenek (mindenhol 2,5~cm, baloldalon 1~cm-es kötéssel). Az alapértelmezett betűkészlet a 12 pontos Times New Roman, másfeles sorközzel, de ettől kismértékben el lehet térni, ill. más betűtípus használata is megengedett. + +Minden oldalon -- az első négy szerkezeti elem kivételével -- szerepelnie kell az oldalszámnak. + +A fejezeteket decimális beosztással kell ellátni. Az ábrákat a megfelelő helyre be kell illeszteni, fejezetenként decimális számmal és kifejező címmel kell ellátni. A fejezeteket decimális aláosztással számozzuk, maximálisan 3 aláosztás mélységben (pl. 2.3.4.1.). Az ábrákat, táblázatokat és képleteket célszerű fejezetenként külön számozni (pl. 2.4. ábra, 4.2. táblázat vagy képletnél (3.2)). A fejezetcímeket igazítsuk balra, a normál szövegnél viszont használjunk sorkiegyenlítést. Az ábrákat, táblázatokat és a hozzájuk tartozó címet igazítsuk középre. A cím a jelölt rész alatt helyezkedjen el. + +A képeket lehetőleg rajzoló programmal készítsék el, az egyenleteket egyenlet-szerkesztő segítségével írják le (A \LaTeX~ehhez kézenfekvő megoldásokat nyújt). + +Az irodalomjegyzék szövegközi hivatkozása történhet sorszámozva (ez a preferált megoldás) vagy a Harvard-rendszerben (a szerző és az évszám megadásával). A teljes lista névsor szerinti sorrendben a szöveg végén szerepeljen (sorszámozott irodalmi hivatkozások esetén hivatkozási sorrendben). A szakirodalmi források címeit azonban mindig az eredeti nyelven kell megadni, esetleg zárójelben a fordítással. A listában szereplő valamennyi publikációra hivatkozni kell a szövegben (a \LaTeX-sablon a Bib\TeX~segítségével mindezt automatikusan kezeli). Minden publikáció a szerzők után a következő adatok szerepelnek: folyóirat cikkeknél a pontos cím, a folyóirat címe, évfolyam, szám, oldalszám tól-ig. A folyóiratok címét csak akkor rövidítsük, ha azok nagyon közismertek vagy nagyon hosszúak. Internetes hivatkozások megadásakor fontos, hogy az elérési út előtt megadjuk az oldal tulajdonosát és tartalmát (mivel a link egy idő után akár elérhetetlenné is válhat), valamint az elérés időpontját. + +\vspace{5mm} +Fontos: +\begin{itemize} + \item A szakdolgozatkészítő / diplomatervező nyilatkozata (a jelen sablonban szereplő szövegtartalommal) kötelező előírás, Karunkon ennek hiányában a szakdolgozat/diplomaterv nem bírálható és nem védhető! + \item Mind a dolgozat, mind a melléklet maximálisan 15~MB méretű lehet! +\end{itemize} + +\vspace{5mm} +\begin{center} +Jó munkát, sikeres szakdolgozatkészítést, ill. diplomatervezést kívánunk! +\end{center} + +\normalsize +\selectthesislanguage diff --git a/src/include/packages.tex b/src/include/packages.tex new file mode 100644 index 0000000..5b89a30 --- /dev/null +++ b/src/include/packages.tex @@ -0,0 +1,64 @@ +% thanks to http://tex.stackexchange.com/a/47579/71109 +\usepackage{ifxetex} +\usepackage{ifluatex} +\newif\ifxetexorluatex % a new conditional starts as false +\ifnum 0\ifxetex 1\fi\ifluatex 1\fi>0 + \xetexorluatextrue +\fi + +\ifxetexorluatex + \usepackage{fontspec} +\else + \usepackage[T1]{fontenc} + \usepackage[utf8]{inputenc} + \usepackage[lighttt]{lmodern} +\fi + +\usepackage[english,magyar]{babel} % Alapértelmezés szerint utoljára definiált nyelv lesz aktív, de később külön beállítjuk az aktív nyelvet. + +%\usepackage{cmap} +\usepackage{amsfonts,amsmath,amssymb} % Mathematical symbols. +%\usepackage[ruled,boxed,resetcount,linesnumbered]{algorithm2e} % For pseudocodes. % beware: this is not compatible with LuaLaTeX, see http://tex.stackexchange.com/questions/34814/lualatex-and-algorithm2e +\usepackage{booktabs} % For publication quality tables for LaTeX +\usepackage{graphicx} + +%\usepackage{fancyhdr} +%\usepackage{lastpage} + +\usepackage{anysize} +%\usepackage{sectsty} +\usepackage{setspace} % For setting line spacing + +\usepackage[unicode]{hyperref} % For hyperlinks in the generated document. +\usepackage{xcolor} +\usepackage{listings} % For source code snippets. + +\usepackage[amsmath,thmmarks]{ntheorem} % Theorem-like environments. + +\usepackage[hang]{caption} + +\singlespacing + +\newcommand{\selecthungarian}{ + \selectlanguage{magyar} + \setlength{\parindent}{2em} + \setlength{\parskip}{0em} + \frenchspacing +} + +\newcommand{\selectenglish}{ + \selectlanguage{english} + \setlength{\parindent}{0em} + \setlength{\parskip}{0.5em} + \nonfrenchspacing + \renewcommand{\figureautorefname}{Figure} + \renewcommand{\tableautorefname}{Table} + \renewcommand{\partautorefname}{Part} + \renewcommand{\chapterautorefname}{Chapter} + \renewcommand{\sectionautorefname}{Section} + \renewcommand{\subsectionautorefname}{Section} + \renewcommand{\subsubsectionautorefname}{Section} +} + +\usepackage[numbers]{natbib} +\usepackage{xspace} diff --git a/src/include/preamble.tex b/src/include/preamble.tex new file mode 100644 index 0000000..9fbb215 --- /dev/null +++ b/src/include/preamble.tex @@ -0,0 +1,122 @@ +%-------------------------------------------------------------------------------------- +% Page layout setup +%-------------------------------------------------------------------------------------- +% we need to redefine the pagestyle plain +% another possibility is to use the body of this command without \fancypagestyle +% and use \pagestyle{fancy} but in that case the special pages +% (like the ToC, the References, and the Chapter pages)remain in plane style + +\pagestyle{plain} +\marginsize{35mm}{25mm}{15mm}{15mm} + +\setcounter{tocdepth}{3} +%\sectionfont{\large\upshape\bfseries} +\setcounter{secnumdepth}{3} + +\sloppy % Margón túllógó sorok tiltása. +\widowpenalty=10000 \clubpenalty=10000 %A fattyú- és árvasorok elkerülése +\def\hyph{-\penalty0\hskip0pt\relax} % Kötőjeles szavak elválasztásának engedélyezése + + +%-------------------------------------------------------------------------------------- +% Setup hyperref package +%-------------------------------------------------------------------------------------- +\hypersetup{ + % bookmarks=true, % show bookmarks bar? + unicode=true, % non-Latin characters in Acrobat's bookmarks + pdftitle={\vikcim}, % title + pdfauthor={\szerzoMeta}, % author + pdfsubject={\vikdoktipus}, % subject of the document + pdfcreator={\szerzoMeta}, % creator of the document + pdfproducer={}, % producer of the document + pdfkeywords={}, % list of keywords (separate then by comma) + pdfnewwindow=true, % links in new window + colorlinks=true, % false: boxed links; true: colored links + linkcolor=black, % color of internal links + citecolor=black, % color of links to bibliography + filecolor=black, % color of file links + urlcolor=black % color of external links +} + + +%-------------------------------------------------------------------------------------- +% Set up listings +%-------------------------------------------------------------------------------------- +\definecolor{lightgray}{rgb}{0.95,0.95,0.95} +\lstset{ + basicstyle=\scriptsize\ttfamily, % print whole listing small + keywordstyle=\color{black}\bfseries, % bold black keywords + identifierstyle=, % nothing happens + % default behavior: comments in italic, to change use + % commentstyle=\color{green}, % for e.g. green comments + stringstyle=\scriptsize, + showstringspaces=false, % no special string spaces + aboveskip=3pt, + belowskip=3pt, + backgroundcolor=\color{lightgray}, + columns=flexible, + keepspaces=true, + escapeinside={(*@}{@*)}, + captionpos=b, + breaklines=true, + frame=single, + float=!ht, + tabsize=2, + literate=* + {á}{{\'a}}1 {é}{{\'e}}1 {í}{{\'i}}1 {ó}{{\'o}}1 {ö}{{\"o}}1 {ő}{{\H{o}}}1 {ú}{{\'u}}1 {ü}{{\"u}}1 {ű}{{\H{u}}}1 + {Á}{{\'A}}1 {É}{{\'E}}1 {Í}{{\'I}}1 {Ó}{{\'O}}1 {Ö}{{\"O}}1 {Ő}{{\H{O}}}1 {Ú}{{\'U}}1 {Ü}{{\"U}}1 {Ű}{{\H{U}}}1 +} + + +%-------------------------------------------------------------------------------------- +% Set up theorem-like environments +%-------------------------------------------------------------------------------------- +% Using ntheorem package -- see http://www.math.washington.edu/tex-archive/macros/latex/contrib/ntheorem/ntheorem.pdf + +\theoremstyle{plain} +\theoremseparator{.} +\newtheorem{example}{\pelda} + +\theoremseparator{.} +%\theoremprework{\bigskip\hrule\medskip} +%\theorempostwork{\hrule\bigskip} +\theorembodyfont{\upshape} +\theoremsymbol{{\large \ensuremath{\centerdot}}} +\newtheorem{definition}{\definicio} + +\theoremseparator{.} +%\theoremprework{\bigskip\hrule\medskip} +%\theorempostwork{\hrule\bigskip} +\newtheorem{theorem}{\tetel} + + +%-------------------------------------------------------------------------------------- +% Some new commands and declarations +%-------------------------------------------------------------------------------------- +\newcommand{\code}[1]{{\upshape\ttfamily\scriptsize\indent #1}} +\newcommand{\doi}[1]{DOI: \href{http://dx.doi.org/\detokenize{#1}}{\raggedright{\texttt{\detokenize{#1}}}}} % A hivatkozások közt így könnyebb DOI-t megadni. + +\DeclareMathOperator*{\argmax}{arg\,max} +%\DeclareMathOperator*[1]{\floor}{arg\,max} +\DeclareMathOperator{\sign}{sgn} +\DeclareMathOperator{\rot}{rot} + + +%-------------------------------------------------------------------------------------- +% Setup captions +%-------------------------------------------------------------------------------------- +\captionsetup[figure]{ + width=.75\textwidth, + aboveskip=10pt} + +\renewcommand{\captionlabelfont}{\bf} +%\renewcommand{\captionfont}{\footnotesize\it} + +%-------------------------------------------------------------------------------------- +% Hyphenation exceptions +%-------------------------------------------------------------------------------------- +\hyphenation{Shakes-peare Mar-seilles ár-víz-tű-rő tü-kör-fú-ró-gép} + + +\author{\vikszerzo} +\title{\viktitle} \ No newline at end of file diff --git a/src/include/project.tex b/src/include/project.tex new file mode 100644 index 0000000..251eda7 --- /dev/null +++ b/src/include/project.tex @@ -0,0 +1,10 @@ +%-------------------------------------------------------------------------------------- +% Feladatkiiras (a tanszeken atveheto, kinyomtatott valtozat) +%-------------------------------------------------------------------------------------- +\clearpage +\begin{center} +\large +\textbf{FELADATKIÍRÁS}\\ +\end{center} + +A feladatkiírást a tanszéki adminisztrációban lehet átvenni, és a leadott munkába eredeti, tanszéki pecséttel ellátott és a tanszékvezető által aláírt lapot kell belefűzni (ezen oldal \emph{helyett}, ez az oldal csak útmutatás). Az elektronikusan feltöltött dolgozatban már nem kell beleszerkeszteni ezt a feladatkiírást. diff --git a/src/include/tdk-variables.tex b/src/include/tdk-variables.tex new file mode 100644 index 0000000..3408e12 --- /dev/null +++ b/src/include/tdk-variables.tex @@ -0,0 +1,11 @@ +%-------------------------------------------------------------------------------------- +% TDK-specifikus változók +%-------------------------------------------------------------------------------------- +\newcommand{\tdkszerzoB}{Második Szerző} % Második szerző neve; hagyd üresen, ha egyedül írtad a TDK-t. +\newcommand{\tdkev}{2014} % A dolgozat írásának éve (pl. "2014") (Ez OTDK-nál eltérhet az aktuális évtől.) + +% További adatok az OTDK címlaphoz (BME-s TDK-hoz nem kell kitölteni) +\newcommand{\tdkevfolyamA}{IV} % Első szerző évfolyama, római számmal (pl. IV). +\newcommand{\tdkevfolyamB}{III} % Második szerző évfolyama, római számmal (pl. III). +\newcommand{\tdkkonzulensbeosztasA}{egyetemi tanár} % Első konzulens beosztása (pl. egyetemi docens) +\newcommand{\tdkkonzulensbeosztasB}{doktorandusz} % Második konzulens beosztása (pl. egyetemi docens) diff --git a/src/include/thesis-en.tex b/src/include/thesis-en.tex new file mode 100644 index 0000000..c2a9513 --- /dev/null +++ b/src/include/thesis-en.tex @@ -0,0 +1,57 @@ +%-------------------------------------------------------------------------------------- +% Elnevezések +%-------------------------------------------------------------------------------------- +\newcommand{\bme}{Budapest University of Technology and Economics} +\newcommand{\vik}{Faculty of Electrical Engineering and Informatics} + +\newcommand{\bmemit}{Department of Measurement and Information Systems} +\newcommand{\bmetmit}{Department of Telecommunications and Media Informatics} + +\newcommand{\keszitette}{Author} +\newcommand{\konzulens}{Advisor} + +\newcommand{\bsc}{Bachelor's Thesis} +\newcommand{\msc}{Master's Thesis} +\newcommand{\tdk}{Scientific Students' Association Report} +\newcommand{\bsconlab}{BSc Project Laboratory} +\newcommand{\msconlabi}{MSc Project Laboratory 1} +\newcommand{\msconlabii}{MSc Project Laboratory 2} + +\newcommand{\pelda}{Example} +\newcommand{\definicio}{Definition} +\newcommand{\tetel}{Theorem} + +\newcommand{\bevezetes}{Introduction} +\newcommand{\koszonetnyilvanitas}{Acknowledgements} +\newcommand{\fuggelek}{Appendix} + +% Optional custom titles +%\addto\captionsenglish{% +%\renewcommand*{\listfigurename}{Your list of figures title} +%\renewcommand*{\listtablename}{Your list of tables title} +%\renewcommand*{\bibname}{Your bibliography title} +%} + +\newcommand{\szerzo}{\vikszerzoKeresztnev{} \vikszerzoVezeteknev} +\newcommand{\vikkonzulensA}{\vikkonzulensAMegszolitas\vikkonzulensAKeresztnev{} \vikkonzulensAVezeteknev} +\newcommand{\vikkonzulensB}{\vikkonzulensBMegszolitas\vikkonzulensBKeresztnev{} \vikkonzulensBVezeteknev} +\newcommand{\vikkonzulensC}{\vikkonzulensCMegszolitas\vikkonzulensCKeresztnev{} \vikkonzulensCVezeteknev} + +\newcommand{\selectthesislanguage}{\selectenglish} + +\bibliographystyle{plainnat} + +\newcommand{\ie}{i.e.\@\xspace} +\newcommand{\Ie}{I.e.\@\xspace} +\newcommand{\eg}{e.g.\@\xspace} +\newcommand{\Eg}{E.g.\@\xspace} +\newcommand{\etal}{et al.\@\xspace} +\newcommand{\etc}{etc.\@\xspace} +\newcommand{\vs}{vs.\@\xspace} +\newcommand{\viz}{viz.\@\xspace} % videlicet +\newcommand{\cf}{cf.\@\xspace} % confer +\newcommand{\Cf}{Cf.\@\xspace} +\newcommand{\wrt}{w.r.t.\@\xspace} % with respect to +\newcommand{\approximately}{approx.\@\xspace} + +\newcommand{\appendixnumber}{1} % a fofejezet-szamlalo az angol ABC 1. betuje (A) lesz diff --git a/src/include/thesis-hu.tex b/src/include/thesis-hu.tex new file mode 100644 index 0000000..461db5c --- /dev/null +++ b/src/include/thesis-hu.tex @@ -0,0 +1,46 @@ +%-------------------------------------------------------------------------------------- +% Elnevezések +%-------------------------------------------------------------------------------------- +\newcommand{\bme}{Budapesti Műszaki és Gazdaságtudományi Egyetem} +\newcommand{\vik}{Villamosmérnöki és Informatikai Kar} + +\newcommand{\bmemit}{Méréstechnika és Információs Rendszerek Tanszék} +\newcommand{\bmetmit}{Távközlési és Médiainformatikai Tanszék} + +\newcommand{\keszitette}{Készítette} +\newcommand{\konzulens}{Konzulens} + +\newcommand{\bsc}{Szakdolgozat} +\newcommand{\msc}{Diplomaterv} +\newcommand{\tdk}{TDK dolgozat} +\newcommand{\bsconlab}{BSc Önálló laboratórium} +\newcommand{\msconlabi}{MSc Önálló laboratórium 1.} +\newcommand{\msconlabii}{MSc Önálló laboratórium 2.} + +\newcommand{\pelda}{Példa} +\newcommand{\definicio}{Definíció} +\newcommand{\tetel}{Tétel} + +\newcommand{\bevezetes}{Bevezetés} +\newcommand{\koszonetnyilvanitas}{Köszönetnyilvánítás} +\newcommand{\fuggelek}{Függelék} + +% Opcionálisan átnevezhető címek +%\addto\captionsmagyar{% +%\renewcommand{\listfigurename}{Saját ábrajegyzék cím} +%\renewcommand{\listtablename}{Saját táblázatjegyzék cím} +%\renewcommand{\bibname}{Saját irodalomjegyzék név} +%} + +\newcommand{\szerzo}{\vikszerzoVezeteknev{} \vikszerzoKeresztnev} +\newcommand{\vikkonzulensA}{\vikkonzulensAMegszolitas\vikkonzulensAVezeteknev{} \vikkonzulensAKeresztnev} +\newcommand{\vikkonzulensB}{\vikkonzulensBMegszolitas\vikkonzulensBVezeteknev{} \vikkonzulensBKeresztnev} +\newcommand{\vikkonzulensC}{\vikkonzulensCMegszolitas\vikkonzulensCVezeteknev{} \vikkonzulensCKeresztnev} + +\newcommand{\selectthesislanguage}{\selecthungarian} + +\bibliographystyle{huplain} + +\def\lstlistingname{lista} + +\newcommand{\appendixnumber}{6} % a fofejezet-szamlalo az angol ABC 6. betuje (F) lesz diff --git a/src/include/titlepage-otdk.tex b/src/include/titlepage-otdk.tex new file mode 100644 index 0000000..54ecb05 --- /dev/null +++ b/src/include/titlepage-otdk.tex @@ -0,0 +1,58 @@ +%% OTDK külső címlap +\begin{titlepage} + $\;$ + \vspace{5cm} + + \begin{center} + \Huge + \textbf{TDK-dolgozat}\let\thefootnote\relax\footnote{A dolgozat bemutatását a XXXXXXXXX ``Lorem ipsum dolor sit amet'' című program támogatta.} + \end{center} + + \vspace{13cm} + + \Large + \hspace{8cm} \szerzo + + \hspace{8cm} \tdkszerzoB + + \hspace{8cm} \tdkev. +\end{titlepage} + +\newpage +\thispagestyle{empty} + + +%% OTDK belső címlap +\begin{titlepage} + \begin{center} + \includegraphics[width=7cm]{./figures/bme_logo.pdf} + \vspace{0.3cm} + + \bme \\ + \vik \\ + \viktanszek \\ + \vspace{3.5cm} + + \huge {\vikcim} + \vspace{1.5cm} + + \large {\textbf{\vikdoktipus}} + \vfill + + {\Large + {\large \keszitette:} \\ \vspace{0.2cm} + \szerzo \\ \tdkevfolyamA. évfolyam \\ + \vspace{0.5cm} + \tdkszerzoB \\ \tdkevfolyamB. évfolyam \\ + \vspace{1.5cm} + {\large \konzulens:} \\ \vspace{0.2cm} + \vikkonzulensA,\\ \tdkkonzulensbeosztasA \\ + \vspace{0.5cm} + \vikkonzulensB,\\ \tdkkonzulensbeosztasB \\ + } + + \vspace{2cm} + \large {\tdkev.} + + \end{center} +\end{titlepage} \ No newline at end of file diff --git a/src/include/titlepage-tdk.tex b/src/include/titlepage-tdk.tex new file mode 100644 index 0000000..fdd3bb3 --- /dev/null +++ b/src/include/titlepage-tdk.tex @@ -0,0 +1,32 @@ +%% TDK címlap +\begin{titlepage} + \begin{center} + \includegraphics[width=7cm]{./figures/bme_logo.pdf} + \vspace{0.3cm} + + \bme \\ + \vik \\ + \viktanszek \\ + \vspace{5cm} + + \huge {\vikcim} + \vspace{1.5cm} + + \large {\textbf{\tdk}} + \vfill + + {\Large + \keszitette: \\ \vspace{0.3cm} + \szerzo \\ + \tdkszerzoB \\ + \vspace{1.5cm} + \konzulens: \\ \vspace{0.3cm} + \vikkonzulensA \\ + \vikkonzulensB \\ + } + + \vspace{2cm} + \large {\tdkev} + \end{center} +\end{titlepage} +%% Címlap vége diff --git a/src/include/titlepage.tex b/src/include/titlepage.tex new file mode 100644 index 0000000..0a996d3 --- /dev/null +++ b/src/include/titlepage.tex @@ -0,0 +1,33 @@ +\hypersetup{pageanchor=false} +%-------------------------------------------------------------------------------------- +% The title page +%-------------------------------------------------------------------------------------- +\begin{titlepage} +\begin{center} +\includegraphics[width=60mm,keepaspectratio]{figures/bme_logo.pdf}\\ +\vspace{0.3cm} +\textbf{\bme}\\ +\textmd{\vik}\\ +\textmd{\viktanszek}\\[5cm] + +\vspace{0.4cm} +{\huge \bfseries \vikcim}\\[0.8cm] +\vspace{0.5cm} +\textsc{\Large \vikdoktipus}\\[4cm] + +{ + \renewcommand{\arraystretch}{0.85} + \begin{tabular}{cc} + \makebox[7cm]{\emph{\keszitette}} & \makebox[7cm]{\emph{\konzulens}} \\ \noalign{\smallskip} + \makebox[7cm]{\szerzo} & \makebox[7cm]{\vikkonzulensA} \\ + & \makebox[7cm]{\vikkonzulensB} \\ + & \makebox[7cm]{\vikkonzulensC} \\ + \end{tabular} +} + +\vfill +{\large \today} +\end{center} +\end{titlepage} +\hypersetup{pageanchor=false} + diff --git a/src/lua/language.dat.lua b/src/lua/language.dat.lua new file mode 100644 index 0000000..cd0d9e4 --- /dev/null +++ b/src/lua/language.dat.lua @@ -0,0 +1,731 @@ +-- Generated by ./install-tl on Sun Feb 12 19:17:26 2017 +-- $Id: language.us.lua 18737 2010-06-04 17:09:02Z karl $ +--[[ +language.us.dat (and the start of language.dat.lua), used by: +- a special luatex version of hyphen.cfg (derived from the babel system); +- a special luatex version of etex.src (from the e-TeX distributon). + +See luatex-hyphen.pdf (currently part of the hyph-utf8 package) for details. + +DO NOT EDIT THIS FILE (language.dat.lua)! It is generated by tlmgr. +See language.dat (or language.us) for more information. + +Warning: formats using this file also use one of language.dat or +language.def. Update them accordingly. The interaction between these +files is documented in luatex-hyphen.pdf, but here is a summary: +- a language must be mentioned in language.dat or language.def to be +available; if, in addition, it is: + - not mentioned in language.dat.lua, then it is dumped in the format; + - mentioned in language.dat.lua with a key special="disabled:", + then it is not available at all; + - mentioned in language.dat.lua with a normal entry, then it will not + be dumped in the format, but loaded at runtime when activated. +]] + +return { + ["english"]={ + loader="hyphen.tex", + special="language0", -- should be dumped in the format + lefthyphenmin=2, + righthyphenmin=3, + synonyms={"usenglish","USenglish","american"}, + }, + -- dumylang and zerohyph are dumped in the format, + -- since they contain either very few or no patterns at all +-- END of language.us.lua (missing '}' appended after all entries) +-- from dehyph-exptl: + ['german-x-2014-05-21'] = { + loader = 'dehypht-x-2014-05-21.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { 'german-x-latest' }, + patterns = 'hyph-de-1901.pat.txt', + hyphenation = 'hyph-de-1901.hyp.txt', + }, + ['ngerman-x-2014-05-21'] = { + loader = 'dehyphn-x-2014-05-21.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { 'ngerman-x-latest' }, + patterns = 'hyph-de-1996.pat.txt', + hyphenation = 'hyph-de-1996.hyp.txt', + }, +-- from hyphen-afrikaans: + ['afrikaans'] = { + loader = 'loadhyph-af.tex', + lefthyphenmin = 1, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-af.pat.txt', + hyphenation = 'hyph-af.hyp.txt', + }, +-- from hyphen-ancientgreek: + ['ancientgreek'] = { + loader = 'loadhyph-grc.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-grc.pat.txt', + hyphenation = '', + }, + ['ibycus'] = { + loader = 'ibyhyph.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + special = 'disabled:8-bit only', + }, +-- from hyphen-arabic: + ['arabic'] = { + loader = 'zerohyph.tex', + lefthyphenmin = 2, + righthyphenmin = 3, + synonyms = { }, + patterns = '', + }, +-- from hyphen-armenian: + ['armenian'] = { + loader = 'loadhyph-hy.tex', + lefthyphenmin = 1, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-hy.pat.txt', + hyphenation = '', + }, +-- from hyphen-basque: + ['basque'] = { + loader = 'loadhyph-eu.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-eu.pat.txt', + hyphenation = '', + }, +-- from hyphen-bulgarian: + ['bulgarian'] = { + loader = 'loadhyph-bg.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-bg.pat.txt', + hyphenation = '', + }, +-- from hyphen-catalan: + ['catalan'] = { + loader = 'loadhyph-ca.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-ca.pat.txt', + hyphenation = 'hyph-ca.hyp.txt', + }, +-- from hyphen-chinese: + ['pinyin'] = { + loader = 'loadhyph-zh-latn-pinyin.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-zh-latn-pinyin.pat.txt', + hyphenation = '', + }, +-- from hyphen-churchslavonic: + ['churchslavonic'] = { + loader = 'loadhyph-cu.tex', + lefthyphenmin = 1, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-cu.pat.txt', + hyphenation = 'hyph-cu.hyp.txt', + }, +-- from hyphen-coptic: + ['coptic'] = { + loader = 'loadhyph-cop.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-cop.pat.txt', + hyphenation = '', + }, +-- from hyphen-croatian: + ['croatian'] = { + loader = 'loadhyph-hr.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-hr.pat.txt', + hyphenation = '', + }, +-- from hyphen-czech: + ['czech'] = { + loader = 'loadhyph-cs.tex', + lefthyphenmin = 2, + righthyphenmin = 3, + synonyms = { }, + patterns = 'hyph-cs.pat.txt', + hyphenation = 'hyph-cs.hyp.txt', + }, +-- from hyphen-danish: + ['danish'] = { + loader = 'loadhyph-da.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-da.pat.txt', + hyphenation = '', + }, +-- from hyphen-dutch: + ['dutch'] = { + loader = 'loadhyph-nl.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-nl.pat.txt', + hyphenation = 'hyph-nl.hyp.txt', + }, +-- from hyphen-english: + ['ukenglish'] = { + loader = 'loadhyph-en-gb.tex', + lefthyphenmin = 2, + righthyphenmin = 3, + synonyms = { 'british', 'UKenglish' }, + patterns = 'hyph-en-gb.pat.txt', + hyphenation = 'hyph-en-gb.hyp.txt', + }, + ['usenglishmax'] = { + loader = 'loadhyph-en-us.tex', + lefthyphenmin = 2, + righthyphenmin = 3, + synonyms = { }, + patterns = 'hyph-en-us.pat.txt', + hyphenation = 'hyph-en-us.hyp.txt', + }, +-- from hyphen-esperanto: + ['esperanto'] = { + loader = 'loadhyph-eo.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-eo.pat.txt', + hyphenation = '', + }, +-- from hyphen-estonian: + ['estonian'] = { + loader = 'loadhyph-et.tex', + lefthyphenmin = 2, + righthyphenmin = 3, + synonyms = { }, + patterns = 'hyph-et.pat.txt', + hyphenation = '', + }, +-- from hyphen-ethiopic: + ['ethiopic'] = { + loader = 'loadhyph-mul-ethi.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { 'amharic', 'geez' }, + patterns = 'hyph-mul-ethi.pat.txt', + hyphenation = '', + }, +-- from hyphen-farsi: + ['farsi'] = { + loader = 'zerohyph.tex', + lefthyphenmin = 2, + righthyphenmin = 3, + synonyms = { 'persian' }, + patterns = '', + }, +-- from hyphen-finnish: + ['finnish'] = { + loader = 'loadhyph-fi.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-fi.pat.txt', + hyphenation = '', + }, +-- from hyphen-french: + ['french'] = { + loader = 'loadhyph-fr.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { 'patois', 'francais' }, + patterns = 'hyph-fr.pat.txt', + hyphenation = '', + }, +-- from hyphen-friulan: + ['friulan'] = { + loader = 'loadhyph-fur.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-fur.pat.txt', + hyphenation = '', + }, +-- from hyphen-galician: + ['galician'] = { + loader = 'loadhyph-gl.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-gl.pat.txt', + hyphenation = '', + }, +-- from hyphen-georgian: + ['georgian'] = { + loader = 'loadhyph-ka.tex', + lefthyphenmin = 1, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-ka.pat.txt', + hyphenation = '', + }, +-- from hyphen-german: + ['german'] = { + loader = 'loadhyph-de-1901.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-de-1901.pat.txt', + hyphenation = '', + }, + ['ngerman'] = { + loader = 'loadhyph-de-1996.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-de-1996.pat.txt', + hyphenation = '', + }, + ['swissgerman'] = { + loader = 'loadhyph-de-ch-1901.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-de-ch-1901.pat.txt', + hyphenation = '', + }, +-- from hyphen-greek: + ['monogreek'] = { + loader = 'loadhyph-el-monoton.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-el-monoton.pat.txt', + hyphenation = '', + }, + ['greek'] = { + loader = 'loadhyph-el-polyton.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { 'polygreek' }, + patterns = 'hyph-el-polyton.pat.txt', + hyphenation = '', + }, +-- from hyphen-hungarian: + ['hungarian'] = { + loader = 'loadhyph-hu.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { 'hungarian', 'magyar' }, + patterns = 'hyph-hu.pat.txt', + hyphenation = '', + }, +-- from hyphen-icelandic: + ['icelandic'] = { + loader = 'loadhyph-is.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-is.pat.txt', + hyphenation = '', + }, +-- from hyphen-indic: + ['assamese'] = { + loader = 'loadhyph-as.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-as.pat.txt', + hyphenation = '', + }, + ['bengali'] = { + loader = 'loadhyph-bn.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-bn.pat.txt', + hyphenation = '', + }, + ['gujarati'] = { + loader = 'loadhyph-gu.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-gu.pat.txt', + hyphenation = '', + }, + ['hindi'] = { + loader = 'loadhyph-hi.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-hi.pat.txt', + hyphenation = '', + }, + ['kannada'] = { + loader = 'loadhyph-kn.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-kn.pat.txt', + hyphenation = '', + }, + ['malayalam'] = { + loader = 'loadhyph-ml.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-ml.pat.txt', + hyphenation = '', + }, + ['marathi'] = { + loader = 'loadhyph-mr.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-mr.pat.txt', + hyphenation = '', + }, + ['oriya'] = { + loader = 'loadhyph-or.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-or.pat.txt', + hyphenation = '', + }, + ['panjabi'] = { + loader = 'loadhyph-pa.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-pa.pat.txt', + hyphenation = '', + }, + ['tamil'] = { + loader = 'loadhyph-ta.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-ta.pat.txt', + hyphenation = '', + }, + ['telugu'] = { + loader = 'loadhyph-te.tex', + lefthyphenmin = 1, + righthyphenmin = 1, + synonyms = { }, + patterns = 'hyph-te.pat.txt', + hyphenation = '', + }, +-- from hyphen-indonesian: + ['indonesian'] = { + loader = 'loadhyph-id.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-id.pat.txt', + hyphenation = 'hyph-id.hyp.txt', + }, +-- from hyphen-interlingua: + ['interlingua'] = { + loader = 'loadhyph-ia.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-ia.pat.txt', + hyphenation = 'hyph-ia.hyp.txt', + }, +-- from hyphen-irish: + ['irish'] = { + loader = 'loadhyph-ga.tex', + lefthyphenmin = 2, + righthyphenmin = 3, + synonyms = { }, + patterns = 'hyph-ga.pat.txt', + hyphenation = 'hyph-ga.hyp.txt', + }, +-- from hyphen-italian: + ['italian'] = { + loader = 'loadhyph-it.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-it.pat.txt', + hyphenation = '', + }, +-- from hyphen-kurmanji: + ['kurmanji'] = { + loader = 'loadhyph-kmr.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-kmr.pat.txt', + hyphenation = '', + }, +-- from hyphen-latin: + ['latin'] = { + loader = 'loadhyph-la.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-la.pat.txt', + hyphenation = '', + }, + ['classiclatin'] = { + loader = 'loadhyph-la-x-classic.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-la-x-classic.pat.txt', + hyphenation = '', + }, + ['liturgicallatin'] = { + loader = 'loadhyph-la-x-liturgic.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-la-x-liturgic.pat.txt', + hyphenation = '', + }, +-- from hyphen-latvian: + ['latvian'] = { + loader = 'loadhyph-lv.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-lv.pat.txt', + hyphenation = '', + }, +-- from hyphen-lithuanian: + ['lithuanian'] = { + loader = 'loadhyph-lt.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-lt.pat.txt', + hyphenation = '', + }, +-- from hyphen-mongolian: + ['mongolian'] = { + loader = 'loadhyph-mn-cyrl.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-mn-cyrl.pat.txt', + hyphenation = '', + }, + ['mongolianlmc'] = { + loader = 'loadhyph-mn-cyrl-x-lmc.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + special = 'disabled:only for 8bit montex with lmc encoding', + }, +-- from hyphen-norwegian: + ['bokmal'] = { + loader = 'loadhyph-nb.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { 'norwegian', 'norsk' }, + patterns = 'hyph-nb.pat.txt', + hyphenation = 'hyph-nb.hyp.txt', + }, + ['nynorsk'] = { + loader = 'loadhyph-nn.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-nn.pat.txt', + hyphenation = 'hyph-nn.hyp.txt', + }, +-- from hyphen-occitan: + ['occitan'] = { + loader = 'loadhyph-oc.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-oc.pat.txt', + hyphenation = '', + }, +-- from hyphen-piedmontese: + ['piedmontese'] = { + loader = 'loadhyph-pms.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-pms.pat.txt', + hyphenation = '', + }, +-- from hyphen-polish: + ['polish'] = { + loader = 'loadhyph-pl.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-pl.pat.txt', + hyphenation = 'hyph-pl.hyp.txt', + }, +-- from hyphen-portuguese: + ['portuguese'] = { + loader = 'loadhyph-pt.tex', + lefthyphenmin = 2, + righthyphenmin = 3, + synonyms = { 'portuges' }, + patterns = 'hyph-pt.pat.txt', + hyphenation = 'hyph-pt.hyp.txt', + }, +-- from hyphen-romanian: + ['romanian'] = { + loader = 'loadhyph-ro.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-ro.pat.txt', + hyphenation = '', + }, +-- from hyphen-romansh: + ['romansh'] = { + loader = 'loadhyph-rm.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-rm.pat.txt', + hyphenation = '', + }, +-- from hyphen-russian: + ['russian'] = { + loader = 'loadhyph-ru.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-ru.pat.txt', + hyphenation = 'hyph-ru.hyp.txt', + }, +-- from hyphen-sanskrit: + ['sanskrit'] = { + loader = 'loadhyph-sa.tex', + lefthyphenmin = 1, + righthyphenmin = 3, + synonyms = { }, + patterns = 'hyph-sa.pat.txt', + hyphenation = '', + }, +-- from hyphen-serbian: + ['serbian'] = { + loader = 'loadhyph-sr-latn.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-sh-latn.pat.txt,hyph-sh-cyrl.pat.txt', + hyphenation = 'hyph-sh-latn.hyp.txt,hyph-sh-cyrl.hyp.txt', + }, + ['serbianc'] = { + loader = 'loadhyph-sr-cyrl.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-sh-latn.pat.txt,hyph-sh-cyrl.pat.txt', + hyphenation = 'hyph-sh-latn.hyp.txt,hyph-sh-cyrl.hyp.txt', + }, +-- from hyphen-slovak: + ['slovak'] = { + loader = 'loadhyph-sk.tex', + lefthyphenmin = 2, + righthyphenmin = 3, + synonyms = { }, + patterns = 'hyph-sk.pat.txt', + hyphenation = 'hyph-sk.hyp.txt', + }, +-- from hyphen-slovenian: + ['slovenian'] = { + loader = 'loadhyph-sl.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { 'slovene' }, + patterns = 'hyph-sl.pat.txt', + hyphenation = '', + }, +-- from hyphen-spanish: + ['spanish'] = { + loader = 'loadhyph-es.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { 'espanol' }, + patterns = 'hyph-es.pat.txt', + hyphenation = '', + }, +-- from hyphen-swedish: + ['swedish'] = { + loader = 'loadhyph-sv.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-sv.pat.txt', + hyphenation = '', + }, +-- from hyphen-thai: + ['thai'] = { + loader = 'loadhyph-th.tex', + lefthyphenmin = 2, + righthyphenmin = 3, + synonyms = { }, + patterns = 'hyph-th.pat.txt', + hyphenation = '', + }, +-- from hyphen-turkish: + ['turkish'] = { + loader = 'loadhyph-tr.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-tr.pat.txt', + hyphenation = '', + }, +-- from hyphen-turkmen: + ['turkmen'] = { + loader = 'loadhyph-tk.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-tk.pat.txt', + hyphenation = '', + }, +-- from hyphen-ukrainian: + ['ukrainian'] = { + loader = 'loadhyph-uk.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-uk.pat.txt', + hyphenation = '', + }, +-- from hyphen-uppersorbian: + ['uppersorbian'] = { + loader = 'loadhyph-hsb.tex', + lefthyphenmin = 2, + righthyphenmin = 2, + synonyms = { }, + patterns = 'hyph-hsb.pat.txt', + hyphenation = 'hyph-hsb.hyp.txt', + }, +-- from hyphen-welsh: + ['welsh'] = { + loader = 'loadhyph-cy.tex', + lefthyphenmin = 2, + righthyphenmin = 3, + synonyms = { }, + patterns = 'hyph-cy.pat.txt', + hyphenation = '', + }, +} diff --git a/src/magyar.ldf b/src/magyar.ldf new file mode 100644 index 0000000..06c3961 --- /dev/null +++ b/src/magyar.ldf @@ -0,0 +1,5801 @@ +% +% magyar.ldf -- LaTeX Language Definition for `magyar' (Hungarian), v1.5c +% written and copyright (C) by P\'eter SZAB\'O +% (version 1.5 -- Early October 2003 -- February 2004 --) +% +% The newest version of this magyar.ldf is part of MagyarLaTeX, available from +% http://www.math.bme.hu/latex/ . The web page is in Hungarian language, but +% it is easy to figure out how to download the newest magyar.ldf. Please +% bookmark this link as the definitive source of the newest version. +% +% This program is free software. There is NO WARRANTY. Use at your own risk! +% You can choose any of these licenses: GNU GPL, LaTeX's license, +% Babel's license. +% +% When will magyar.ldf 1.5 be part of mainstream LaTeX / Babel? I have no +% idea, ask the maintainer of Babel. magyar.ldf 1.5 has ptebeen converted to +% magyar.dtx on June 27, 2004. That version has been submitted to the +% maintainer of the Babel package. No reply from him since then. +% +% Should magyar.ldf 1.5 be part of tetex, or should it be available as a +% supplementary package in TeX distributions? Yes, but this is the task of the +% creators of those distributions. The Debian package ``magyarlatex'', +% which supplements the teTeX shipped with Debian Woody, Sarge and Sid, +% is available from http://www.math.bme.hu/latex/dl +% (file magyarlatex-latest.deb). +% +% The author of magyar.ldf 1.5 has uploaded it to CTAN +% (http://www.ctan.org), but he doesn't re-upload regularly, because he +% doesn't have time to maintain it and re-upload it after each bugfix. If +% you think that magyar.ldf 1.5 should be on CTAN, feel free to upload a +% snapshot, since it is free software. +% +% magyar.ldf 1.5 is based on magyar.ldf 1.4. However, it has been totally +% rewritten and extended (just compare the file sizes), and it doesn't share +% code from the earlier versions anymore. However, its default configuration +% tries to be compatible with older versions. +% +% Earlier versions of file `magyar.dtx' Babel package for LaTeX version 2e +% Copyright (C) 1989--2004 by Johannes Braams, TeXniek +% Copyright (C) 1989--2004 by +% \'Arp\'ad B\'IR\'O +% J\'ozsef B\'ERCES (version 1.4c -- 2001; contains a lot of work of him) +% +% To typeset text in Hungarian, please +% +% 1. Include `magyar huhyph.tex' in language.dat, re-run initex(1) (initex +% 'latex.ini \dump') or pdfinitex(1), verify that running latex(1) displays +% the word `magyar' in the line containing `hyphenation patterns' in its +% console output. +% +% 2. In the document preamble, use +% +% \def\magyarOptions{defaults=hu-min} +% \usepackage[magyar]{babel} +% \usepackage{t1enc}% for automatic hyphenation of accented chars +% \usepackage[latin2]{inputenc}% for typing chars +% +% This file is quite long, because it implements a lot of parametric features +% related to typesetting Hungarian text with \LaTeX. Sorry. +% +% Motto: ``There is a lot to do in the future'' -- by Gyngyi Bujdos and +% Ferenc Wettl in their conference proceedings article ``On the localization +% of TeX in Hungary'', presented at EuroBachoTeX 2002. +% +% Most of the code and comments in this file are written by P\'eter Szab\'o. +% The newest version is available from http://www.math.bme.hu/latex/ +% +% The version of this file is 1.5, even when new releases come out. Please see +% the \expandafter\ProvidesLanguage line for the release date. +% + +\expandafter\ifx\csname CurrentOption\endcsname\relax + \def\CurrentOption{magyar}% +\fi +%** So `\input magyar.ldf' will work as well. +\expandafter\ifx\csname ver@babel.sty\endcsname\relax + \csname fi\endcsname + \endinput \expandafter\RequirePackage\expandafter[\CurrentOption]{babel} +\fi + +%\ProvidesFile{magyar.ldf}[1996/12/23 v1.3h Magyar support from the babel system] +%\ProvidesLanguage{magyar}[2001/03/05 v1.4c Magyar support from the babel system] +% vvv for Babel v3.7 +\expandafter\ProvidesLanguage\expandafter{\CurrentOption}[2015/11/24 v1.5c Magyar support from the babel v3.7 system] + +% Possibly do \endinput if .ldf already loaded +\expandafter\LdfInit\expandafter{\CurrentOption}{captions\CurrentOption}% + +% Fix \catcodes{} possibly screwed up by other Babel languages. +% Dat: \string`\string! could have been written as \string`! +\edef\@@magyar@restcats{% + \catcode\string`\string`\the\catcode\string``\space\space + \catcode\string`\string!\the\catcode\string`!\space\space + \catcode\string`\string*\the\catcode\string`*\space\space + \catcode\string`\string+\the\catcode\string`+\space\space + \catcode\string`\string-\the\catcode\string`-\space\space + \catcode\string`\string=\the\catcode\string`=\space\space + \catcode\string`\string|\the\catcode\string`|\space\space + \catcode\string`\string;\the\catcode\string`;\space\space + \catcode\string`\string:\the\catcode\string`:\space\space + \catcode\string`\string'\the\catcode\string`'\space\space + \catcode\string`\string"\the\catcode\string`"\space\space + \catcode\string`\string?\the\catcode\string`?\space\space + \catcode\string`\string/\the\catcode\string`/\space\space + \let\noexpand\@@magyar@restcats\noexpand\@undefined +} +\catcode\string``12 \catcode`!12 \catcode`*12 \catcode`+12 \catcode`-12 +\catcode`=12 \catcode`|12 \catcode`;12 \catcode`:12 \catcode`'12 \catcode`"12 +\catcode`?12 \catcode`/12 + +%** Expand \CurrentOption early. +\edef\@@magyar@error#1{\noexpand\PackageError{\CurrentOption.ldf}{#1}\noexpand\@ehc} + +% --- Declare options. +% +% Dat: \languageattribute{magyar}{...} and \bbl@declare@ttribute{magyar}{foo}{...} +% isn't enough for us, because it is processed +% after \usepackage[magyar]{babel}, but we need the options information +% earlier. And also it cannot contain `='. +% + +%** `\dMf foo-bar {...}' is `\def\foo-bar{...}' where `-' is a letter +\def\dMf#1 {\expandafter\def\csname#1\endcsname} +\def\magyar@@unchanged{unchanged} +\def\magyar@enumarg#1#2{% + \expandafter\ifx\csname magyar@opt@#1@@#2\endcsname\relax + \@@magyar@error{Invalid arg for option: #1 = #2}% + \else + \csname magyar@opt@#1@@#2\endcsname + \fi +} +\def\@@magyar@argw@no {0}% +\def\@@magyar@argw@weak{1}% +\def\@@magyar@argw@yes {2}% +\def\magyar@yesweaknoarg#1#2{% + \expandafter\ifx\csname @@magyar@argw@#2\endcsname\relax + \@@magyar@error{Invalid arg for option: #1 = #2\MessageBreak Must be =no, =yes or =weak}% + \else + \expandafter\edef\csname magyar@opt@@#1\endcsname{\csname @@magyar@argw@#2\endcsname}% + \fi +} + +% Declare defaults. + +%** These defaults load most of the new functionality, but try not to +%** introduce visible typographical changes over magyar.ldf v1.4. These +%** are the ovarall defaults of magyar.ldf v1.5, in case of +%** \def\magyarOptions{} (or if is missing). +%** +%** These are the defaults: (over-1.4) +%** \def\magyarOptions{ +%** accents=defaulthigh, % or =high or =low +%** active=safe, % or =problematic or =none or =onlycs +%** activeprefix=babelopt2, % or =none or =babelopt3 or =grave or =acute or =quotedbl +%** activespace=none, % or =safe or =problematic +%** afterindent=unchanged, % or =force-no or =force-yes +%** amslevelfix=fix-ams, % or =unchanged or =fix-all +%** amsuppercasefix=fix-ams, % or =unchanged or =fix-all +%** amstocnumskip=\enskip, % TeX code or --empty-- +%** amstocnumlang=all, % or =hu +%** amspostsectiondot=no, % or =unchanged +%** appendixdot=yes, % or =no % !! dokumentlni +%** az=weak, % or =yes or =no +%** babelmarkfix=yes, % or =unchanged +%** captionfix=yes, % or =unchanged +%** captions=hu, % or =unchanged +%** chapterhead=yes, % or =unchanged(=no) +%** chapternumber=unchanged, % see partnumber= +%** cjhebrewfix=yes, % or =unchanged or =onlyouter +%** classmod=yes, % or =unchanged(=no) or TeX class name +%** %defaults=over-1.4, % or =compat-1.4 or =safest or =prettiest +%** dottedtocline=fix, % or =unchanged +%** emitdate=weak, % or =no or =yes +%** extras=yes, % or =no +%** fancyhdr=hu, % or =unchanged +%** figurecaptions=hu, % or =us or =unchanged +%** frenchspacing=unchanged, % or =no or =yes +%** hang=weak, % or =no or =yes +%** hunnewlabel=yes, % or =no or =only-hu +%** hunumbers=yes, % or =no +%** hutoday=yes, % or =no +%** hyphenmins=22, % or =unchanged or two chars: \lefthyphenmin\righthyphenmin +%** hyphenation=huhyph3, % or =none or =composite or =phonetic or =huhyphn +%** hynumberline=unchanged, % or =hu +%** labelenums=unchanged, % or =hu-a or =hu-A or =hu-d +%** labelitems=unchanged, % or =hu +%** longcaption=justified, % or =centered or =centernewline or =none (=unchanged) +%** mathbrk=define, % or =unchanged or =fix +%** mathhucomma=define, % or =unchanged or =fix +%** mathfactorial=define, % or =unchanged or =fix +%** mathmuskips=unchanged, % or =latex or =hu +%** mathreal=weak, % or =no or =yes +%** mond=weak, % or =no or =yes +%** ntheoremfix=yes, % or =unchanged +%** openqq=maybedown, % or =up or =down or =unchanged +%** partnumber=unchanged, % or =huordinal or =Huordinal +%** postdescription=unchanged, % see postpara= +%** postpara=unchanged, % or =bfdot or =dot or =quad or =diamond or =enskip or =quad or =em or =empty ... (\magyar@post@...) +%** postsubpara=unchanged, % see postpara= +%** refstruc=weak, % or =no or =yes +%** %safest=no, % or =yes (safest=no has no effect, safest=yes is equivalent to defaults=safest) +%** sectiondot=safe, % or =none or =problematic +%** shorthandcs=\shu, % or =none or a csname or a \cs, e.g shorthandcs=\shu +%** shortrefcmds=yes, % or =no +%** showfix=yes, % or =unchanged +%** suggestions=yes, % or =no +%** tablecaptions=hu, % or =us or =unchanged +%** textqq=weak, % or =no or =yes +%** theoremtitle=hu, % or =unchanged +%** footnote=yes, % or =unchanged or =huplain or =starplain +%** titles=\enskip, % TeX code: =unchanged, =\quad or other +%** toclang=good, % or =badfloat or =badall or =unchanged +%** told=weak, % or =no or =yes +%** varioref=hu, % or =unchanged +%** }\usepackage[magyar]{babel} +\dMf magyar@opt@defaults@@over-1.4 {% + \magyar@opt@accents@@defaulthigh + \magyar@opt@active@@safe + \magyar@opt@activeprefix{activeprefix}{babelopt2}% + \magyar@opt@activespace@@none + \magyar@opt@afterindent@@unchanged + \magyar@opt@amslevelfix{amslevelfix}{fix-ams}% + \magyar@opt@amsuppercasefix{amsuppercasefix}{fix-ams}% + \magyar@opt@amspostsectiondot@@no% change over 1.4 + \magyar@opt@amstocnumlang@@all + \magyar@opt@amstocnumskip{amstocnumskip}{\enskip}% change over 1.4 + \magyar@opt@appendixdot@@yes + \magyar@opt@babelmarkfix@@yes + \magyar@opt@az{az}{weak}% + \magyar@opt@captionfix@@yes + \magyar@opt@captions@@hu + \magyar@opt@chapternumber@@unchanged + \magyar@opt@classmod@@yes + \magyar@opt@dottedtocline@@fix + \magyar@opt@emitdate{emitdate}{weak}% + \magyar@opt@extras@@yes + \magyar@opt@chapterhead@@yes + \magyar@opt@fancyhdr@@hu% change over 1.4 + \magyar@opt@figurecaptions@@hu + \magyar@opt@footnote@@yes + \magyar@opt@frenchspacing@@unchanged + \magyar@opt@hang{hang}{weak}% + \magyar@opt@hunnewlabel@@yes + \magyar@opt@hunumbers@@yes + \magyar@opt@hutoday@@yes + \magyar@opt@hyphenation{hyphenation}{huhyph3-or-any}% + \magyar@opt@hyphenmins{hyphenmins}{22}% change over 1.4 Dat: Default LaTeX is {23} + \magyar@opt@labelenums@@unchanged + \magyar@opt@labelitems@@unchanged + \magyar@opt@longcaption@@justified + \magyar@opt@mathbrk@@define + \magyar@opt@mathfactorial@@define + \magyar@opt@mathhucomma@@define + \magyar@opt@mathmuskips@@unchanged + \magyar@opt@hynumberline@@unchanged + \magyar@opt@mathreal{mathreal}{weak}% + \magyar@opt@mond{mond}{weak}% + \magyar@opt@ntheoremfix@@yes + \magyar@opt@openqq@@maybedown + \magyar@opt@partnumber@@unchanged + \magyar@opt@postpara{}{unchanged}% + \magyar@opt@postsubpara{}{unchanged}% + \magyar@opt@refstruc{refstruc}{weak}% + \magyar@opt@sectiondot@@safe + \magyar@opt@shorthandcs{shorthandcs}{\shu}% + \magyar@opt@shortrefcmds@@yes + \magyar@opt@showfix@@yes + \magyar@opt@suggestions@@yes + \magyar@opt@tablecaptions@@hu + \magyar@opt@textqq{textqq}{weak}% + \magyar@opt@theoremtitle@@hu + \magyar@opt@titles{}{\enskip}% change over 1.4 + \magyar@opt@toclang@@good + \magyar@opt@told{told}{weak}% + \magyar@opt@varioref@@hu + \magyar@opt@cjhebrewfix@@yes +} + +%** These defaults try to be compatible with magyar.ldf v1.4 as much as +%** possible -- but avoids stupid, problematic, dangerous implementation +%** mistakes that would make magyar.ldf incompatible with many LaTeX +%** packages. The purpose of compat-1.4 is to make the document compilable: +%** if a fix would produce better results, but documents are compilable +%** without the fix, the fix will not be applied in compat-1.4. +%** Some very useful fixes are not applied here -- please use +%** defaults=over-1.4 to have them. Also some very nice features such +%** as \emitdate and \told are not available here. +\dMf magyar@opt@defaults@@compat-1.4 {% + \magyar@opt@accents@@defaulthigh% OK + \magyar@opt@active@@safe% we don't want =problematic + \magyar@opt@activeprefix@@grave% OK + \magyar@opt@activespace@@none% OK + \magyar@opt@afterindent@@unchanged% OK + \magyar@opt@amslevelfix@@unchanged% OK + \magyar@opt@amsuppercasefix@@unchanged% OK + \magyar@opt@amspostsectiondot@@unchanged% OK + \magyar@opt@amstocnumlang@@all% OK, irrelevant + \magyar@opt@amstocnumskip{amstocnumskip}{}% OK + \magyar@opt@appendixdot@@yes + \magyar@opt@babelmarkfix@@unchanged + \magyar@opt@az{az}{yes}% OK + \magyar@opt@captionfix@@unchanged + \magyar@opt@captions@@hu% OK + \magyar@opt@chapterhead@@yes% OK + \magyar@opt@chapternumber@@unchanged% OK + \magyar@opt@classmod@@yes% OK + \magyar@opt@dottedtocline@@unchanged% OK + \magyar@opt@emitdate{emitdate}{no}% OK + \magyar@opt@extras@@yes% OK + \magyar@opt@fancyhdr@@unchanged% OK + \magyar@opt@figurecaptions@@hu% OK + \magyar@opt@footnote@@unchanged% OK + \magyar@opt@frenchspacing@@unchanged% OK + \magyar@opt@hang{hang}{no}% OK + \magyar@opt@hunnewlabel@@yes% OK + \magyar@opt@hunumbers@@no% OK + \magyar@opt@hutoday@@yes% OK + \magyar@opt@hyphenation{hyphenation}{huhyph3-or-any}% OK + \magyar@opt@hyphenmins{hyphenmins}{unchanged}% + \magyar@opt@labelenums@@unchanged% OK + \magyar@opt@labelitems@@unchanged% OK + \magyar@opt@longcaption@@justified% OK + \magyar@opt@mathbrk@@unchanged% OK + \magyar@opt@mathhucomma@@unchanged% OK + \magyar@opt@mathfactorial@@unchanged% OK + \magyar@opt@mathmuskips@@unchanged% OK + \magyar@opt@hynumberline@@unchanged% OK + \magyar@opt@mathreal{mathreal}{no}% + \magyar@opt@mond{mond}{no}% OK + \magyar@opt@ntheoremfix@@yes% OK + \magyar@opt@openqq@@maybedown% OK + \magyar@opt@partnumber@@unchanged% OK + \magyar@opt@postpara{}{unchanged}% OK + \magyar@opt@postsubpara{}{unchanged}% OK + \magyar@opt@refstruc{refstruc}{no}% OK + \magyar@opt@sectiondot@@safe% we don't want =problematic + \magyar@opt@shorthandcs{shorthandcs}{none}% OK + \magyar@opt@shortrefcmds@@yes% OK + \magyar@opt@showfix@@yes% OK + \magyar@opt@suggestions@@no% OK -- user has explicity requested defaults=compat-1.4 + \magyar@opt@tablecaptions@@hu% OK + \magyar@opt@textqq{textqq}{no}% OK + \magyar@opt@theoremtitle@@hu% OK + \magyar@opt@titles{}{\quad}% OK -- ugly, but compatible + \magyar@opt@toclang@@good% we don't want weird errors and mischosen languages (would be =badall) + \magyar@opt@told{told}{no}% OK + \magyar@opt@varioref@@hu% was =unchanged, but varioref.sty (2000) is buggy + \magyar@opt@cjhebrewfix@@yes +} + +%** These defaults turn of most features -- the effect is similar to as if +%** magyar.ldf hasn't been loaded at all. Useful for debugging purposes. +\def\magyar@opt@defaults@@safest{% + \magyar@opt@accents@@defaulthigh + \magyar@opt@active@@none + \magyar@opt@activeprefix@@none + \magyar@opt@activespace@@none + \magyar@opt@afterindent@@unchanged + \magyar@opt@amslevelfix@@unchanged + \magyar@opt@amsuppercasefix{amsuppercasefix}{fix-ams}% + \magyar@opt@amspostsectiondot@@unchanged + \magyar@opt@amstocnumlang@@all% OK, irrelevant + \magyar@opt@amstocnumskip{amstocnumskip}{}% + \magyar@opt@appendixdot@@yes + \magyar@opt@az{az}{no}% + \magyar@opt@babelmarkfix@@yes + \magyar@opt@captionfix@@yes + \magyar@opt@captions@@unchanged + \magyar@opt@chapternumber@@unchanged + \magyar@opt@classmod@@unchanged + \magyar@opt@dottedtocline@@unchanged + \magyar@opt@emitdate{emitdate}{no}% + \magyar@opt@extras@@no + \magyar@opt@chapterhead@@no + \magyar@opt@fancyhdr@@unchanged + \magyar@opt@figurecaptions@@unchanged + \magyar@opt@footnote@@unchanged + \magyar@opt@frenchspacing@@unchanged + \magyar@opt@hang{hang}{no}% + \magyar@opt@hunnewlabel@@no + \magyar@opt@hunumbers@@no + \magyar@opt@hutoday@@no + \magyar@opt@hyphenation{hyphenation}{huhyph3-or-any}% + \magyar@opt@hyphenmins{hyphenmins}{unchanged}% + \magyar@opt@labelenums@@unchanged + \magyar@opt@labelitems@@unchanged + \magyar@opt@longcaption@@unchanged + \magyar@opt@mathbrk@@unchanged + \magyar@opt@mathhucomma@@unchanged + \magyar@opt@mathfactorial@@unchanged + \magyar@opt@mathmuskips@@unchanged + \magyar@opt@hynumberline@@unchanged + \magyar@opt@mathreal{mathreal}{no}% + \magyar@opt@mond{mond}{no}% + \magyar@opt@ntheoremfix@@unchanged + \magyar@opt@openqq@@unchanged + \magyar@opt@partnumber@@unchanged + \magyar@opt@postpara{}{unchanged}% + \magyar@opt@postsubpara{}{unchanged}% + \magyar@opt@refstruc{refstruc}{no}% + \magyar@opt@sectiondot@@none + \magyar@opt@shorthandcs{shorthandcs}{none}% + \magyar@opt@shortrefcmds@@no + \magyar@opt@showfix@@unchanged + \magyar@opt@suggestions@@yes + \magyar@opt@tablecaptions@@unchanged + \magyar@opt@textqq{textqq}{no}% + \magyar@opt@theoremtitle@@unchanged + \magyar@opt@titles{}{unchanged}% + \magyar@opt@toclang@@unchanged + \magyar@opt@told{told}{no}% + \magyar@opt@varioref@@unchanged + \magyar@opt@cjhebrewfix@@unchanged +} + +%** These defaults load almost all features, and try to do their best to make +%** the document comply to the Hungarian typography standards. Full compliance +%** is not achieved yet, and as new features are implemented, they will be +%** added to these defaults. +\def\magyar@opt@defaults@@prettiest{% + \magyar@opt@accents@@defaulthigh% {low} would have no effect with \usepackage{t1enc} + \magyar@opt@active@@safe + \magyar@opt@activeprefix{activeprefix}{babelopt2}% + \magyar@opt@activespace@@safe + \magyar@opt@afterindent@@unchanged% keep =force-no + \magyar@opt@amslevelfix{amslevelfix}{fix-ams}% + \magyar@opt@amsuppercasefix{amsuppercasefix}{fix-ams}% + \magyar@opt@amspostsectiondot@@no + \magyar@opt@amstocnumlang@@all + \magyar@opt@amstocnumskip{amstocnumskip}{\enskip}% + \magyar@opt@appendixdot@@no + \magyar@opt@az{az}{yes}% + \magyar@opt@babelmarkfix@@yes + \magyar@opt@captionfix@@yes + \magyar@opt@captions@@hu + \magyar@opt@chapternumber@@unchanged + \magyar@opt@classmod@@yes + \magyar@opt@dottedtocline@@fix + \magyar@opt@emitdate{emitdate}{yes}% + \magyar@opt@extras@@yes + \magyar@opt@chapterhead@@yes + \magyar@opt@fancyhdr@@hu + \magyar@opt@figurecaptions@@hu + \magyar@opt@footnote@@yes + \magyar@opt@frenchspacing@@yes + \magyar@opt@hang{hang}{yes}% + \magyar@opt@hunnewlabel@@yes + \magyar@opt@hunumbers@@yes + \magyar@opt@hutoday@@yes + \magyar@opt@hyphenation{hyphenation}{composite-or-any}% + \magyar@opt@hyphenmins{hyphenmins}{22}% Dat: Default LaTeX is {23} + \magyar@opt@labelenums{labelenums}{hu-a}% + \magyar@opt@labelitems@@hu + \magyar@opt@longcaption@@centered + \magyar@opt@mathbrk@@fix + \magyar@opt@mathhucomma@@fix + \magyar@opt@mathfactorial@@fix + \magyar@opt@mathmuskips@@hu + \magyar@opt@hynumberline@@hu + \magyar@opt@mathreal{mathreal}{yes}% + \magyar@opt@mond{mond}{yes}% + \magyar@opt@ntheoremfix@@yes + \magyar@opt@openqq@@maybedown + \magyar@opt@partnumber@@Huordinal + \magyar@opt@postdescription{}{dot}% + \magyar@opt@postpara{}{diamond}% + \magyar@opt@postsubpara{}{star}% + \magyar@opt@refstruc{refstruc}{yes}% + \magyar@opt@sectiondot@@safe + \magyar@opt@shorthandcs{shorthandcs}{\shu}% + \magyar@opt@shortrefcmds@@no + \magyar@opt@showfix@@yes + \magyar@opt@suggestions@@yes + \magyar@opt@tablecaptions@@hu + \magyar@opt@textqq{textqq}{yes}% + \magyar@opt@theoremtitle@@hu + \magyar@opt@titles{}{\enskip}% + \magyar@opt@toclang@@good + \magyar@opt@told{told}{yes}% + \magyar@opt@varioref@@hu + \magyar@opt@cjhebrewfix@@yes +} + +%** Expands to the \magyarOptions changes defaults=hu-min makes over +%** defaults=safest. +\def\magyar@@humin@options{% + active=safe, + activeprefix=babelopt2, + activespace=safe, + amslevelfix=fix-ams, + amspostsectiondot=no, + amstocnumlang=all, + amstocnumskip=\enskip, + appendixdot=no, + az=weak, + captions=hu, + chapterhead=yes, + cjhebrewfix=yes, + classmod=yes, + classmod=yes, + dottedtocline=fix, + emitdate=weak, + extras=yes, + fancyhdr=hu, + figurecaptions=hu, + footnote=huplain, + frenchspacing=yes, + hang=weak, + hunnewlabel=yes, + hunumbers=yes, + hutoday=yes, + hynumberline=hu, + hyphenmins=22, + labelenums=hu-d, + labelitems=hu, + longcaption=centered, + mathbrk=define, + mathbrk=fix, + mathfactorial=define, + mathhucomma=fix, + mathreal=weak, + mond=weak, + ntheoremfix=yes, + openqq=maybedown, + postdescription=dot, + postpara=diamond, + postsubpara=star, + refstruc=weak, + sectiondot=safe, + shorthandcs=\shu, + shortrefcmds=yes, + showfix=yes, + tablecaptions=hu, + textqq=weak, + theoremtitle=hu, + titles=\enskip, + toclang=good, + told=weak, + varioref=hu, +} + +%** Matches Hungarian typographic rules most closely -- and most +%** simplistically (minimally). +\dMf magyar@opt@defaults@@hu-min {% + %\csname magyar@opt@defaults@@over-1.4\endcsname + \csname magyar@opt@defaults@@safest\endcsname + % Dat: no openqq=unchanged (!) + \expandafter\magyar@doopt\magyar@@humin@options\hfuzz,% +} + +\def\magyarDumpHuMin{% + \begingroup + \typeout{} + \typeout{\expandafter\@gobble\string\% for defaults=hu-min}% + \typeout{\string\def\string\magyarOptions\expandafter\@gobble\string\{}% + \typeout{ \space defaults=safest,}% + \typeout{ \space\expandafter\@gobble\string\%}% + \def\magyar@applyopt##1##2{% + \def\reserved@a{##1=##2,}% + \typeout{ \space\expandafter\strip@prefix\meaning\reserved@a}% + }% + \expandafter\magyar@doopt\magyar@@humin@options\hfuzz,% + \typeout{\expandafter\@gobble\string\}}% + \typeout{\string\usepackage[magyar]{babel}}% + \typeout{}% + \endgroup +} + +\let\magyar@opt@defaults\magyar@enumarg +\def\magyar@opt@safest@@yes{\magyar@opt@defaults@@safest} +\def\magyar@opt@safest@@no{} +\let\magyar@opt@safest\magyar@enumarg + +% Declare normal options. + +\def\magyar@opt@titles#1#2{\def\magyar@opt@@titleskip{#2}} +\def\@@magyar@twodigitcheck#1#2#3\hfuzz#4#5{% + \csname if\ifnum0<0\string#1 \ifnum0<0\string#2 false\else true\fi\else true\fi\endcsname + \@@magyar@error{Option #4 needs [1-9][1-9], got #1#2}% + \fi +} +\def\magyar@opt@hyphenmins#1#2{% + \def\reserved@a{#2}% + \ifx\reserved@a\magyar@@unchanged + \let\magyar@opt@@hyphenmins\@empty + \else + \@@magyar@twodigitcheck#2..\hfuzz{#1}{#2}% + \def\magyar@opt@@hyphenmins{#2}% + \fi +} + +\def\magyar@opt@amstocnumskip#1#2{\def\magyar@opt@@amstocnumskip{#2}} +\def\magyar@opt@amstocnumlang@@all{\def\magyar@opt@@amstocnumlang{2}} +\def\magyar@opt@amstocnumlang@@hu {\def\magyar@opt@@amstocnumlang{1}} +\let\magyar@opt@amstocnumlang\magyar@enumarg +\def\magyar@opt@active@@none{\def\magyar@opt@@active{0}} +\def\magyar@opt@active@@onlycs{\def\magyar@opt@@active{1}} +\def\magyar@opt@active@@safe{\def\magyar@opt@@active{2}} +\def\magyar@opt@active@@problematic{\def\magyar@opt@@active{3}} +\let\magyar@opt@active\magyar@enumarg +\def\magyar@opt@activeprefix@@none {\let\magyar@opt@@activeprefix\relax} +\def\magyar@opt@activeprefix@@acute {\def\magyar@opt@@activeprefix{'}} +\def\magyar@opt@activeprefix@@grave {\def\magyar@opt@@activeprefix{`}} +\def\magyar@opt@activeprefix@@quotedbl{\def\magyar@opt@@activeprefix{"}} +\dMf magyar@opt@activeprefix@@babelopt2 {% + \@ifpackagewith{babel}{activeacute}% Dat: not expandable + {\def\magyar@opt@@activeprefix{'}}% + {\def\magyar@opt@@activeprefix{`}}% +} +\dMf magyar@opt@activeprefix@@babelopt3 {% + \@ifpackagewith{babel}{activeacute}% + {\def\magyar@opt@@activeprefix{'}}% + {\@ifpackagewith{babel}{activegrave}% + {\def\magyar@opt@@activeprefix{`}}% + {\def\magyar@opt@@activeprefix{"}}}% +} +\let\magyar@opt@activeprefix\magyar@enumarg +\def\magyar@opt@activespace@@none{\def\magyar@opt@@activespace{0}} +\def\magyar@opt@activespace@@safe{\def\magyar@opt@@activespace{2}} +\def\magyar@opt@activespace@@problematic{\def\magyar@opt@@activespace{3}} +\let\magyar@opt@activespace\magyar@enumarg +\def\magyar@opt@amspostsectiondot@@no {\def\magyar@opt@@amspostsectiondot{1}} +\def\magyar@opt@amspostsectiondot@@unchanged{\def\magyar@opt@@amspostsectiondot{0}} +\let\magyar@opt@amspostsectiondot\magyar@enumarg +\let\magyar@opt@hyphenation\magyar@enumarg +\def\magyar@opt@hyphenation@@huhyphf {\magyar@opt@hyphenation@@phonetic} +\def\magyar@opt@hyphenation@@huhyphc {\magyar@opt@hyphenation@@composite} +\expandafter\ifx\csname @OFWO\endcsname\relax +% Imp: fix --:hyphenation= reporting above +\def\magyar@opt@hyphenation@@none {\def\magyar@opt@@hyphenation{}} +\dMf magyar@opt@hyphenation@@huhyph3 {\def\magyar@opt@@hyphenation{3rN}} +\dMf magyar@opt@hyphenation@@huhyph3-or-any {\def\magyar@opt@@hyphenation{3CmhwN}} +\def\magyar@opt@hyphenation@@huhyphn {\def\magyar@opt@@hyphenation{nrN}} +\def\magyar@opt@hyphenation@@composite {\def\magyar@opt@@hyphenation{crN}} +\dMf magyar@opt@hyphenation@@composite-or-any {\def\magyar@opt@@hyphenation{cCmhwN}} +\def\magyar@opt@hyphenation@@any {\def\magyar@opt@@hyphenation{CmhwN}} +\def\magyar@opt@hyphenation@@phonetic {\def\magyar@opt@@hyphenation{frN}} +\else% report to lafmtgen.pl + \typeout{--:hyphenation-=\CurrentOption} + \def\magyar@opt@@hyphenation{}% + \def\magyar@opt@hyphenation@@none {\def\magyar@opt@@hypr{}} + \dMf magyar@opt@hyphenation@@huhyph3 {\def\magyar@opt@@hypr{\typeout{--:hyphenation=magyar3}\typeout{--:hyphenation=magyar}}} % install both for safety + \def\magyar@opt@hyphenation@@huhyphn {\def\magyar@opt@@hypr{\typeout{--:hyphenation=magyarn}\typeout{--:hyphenation=magyar}}} + \def\magyar@opt@hyphenation@@composite{\def\magyar@opt@@hypr{\typeout{--:hyphenation=magyarc}\typeout{--:hyphenation=magyar}}} + \def\magyar@opt@hyphenation@@phonetic {\def\magyar@opt@@hypr{\typeout{--:hyphenation=magyarf}}} +\fi +\def\magyar@opt@sectiondot@@none{\def\magyar@opt@@sectiondot{0}} +\def\magyar@opt@sectiondot@@safe{\def\magyar@opt@@sectiondot{1}} +\def\magyar@opt@sectiondot@@problematic{\def\magyar@opt@@sectiondot{2}} +\let\magyar@opt@sectiondot\magyar@enumarg +\def\magyar@opt@captions@@unchanged{\def\magyar@opt@@captions{0}} +\def\magyar@opt@captions@@hu{\def\magyar@opt@@captions{1}} +\let\magyar@opt@captions\magyar@enumarg +\def\magyar@opt@varioref@@unchanged{\def\magyar@opt@@varioref{0}} +\def\magyar@opt@varioref@@hu{\def\magyar@opt@@varioref{1}} +\let\magyar@opt@varioref\magyar@enumarg +\def\magyar@opt@cjhebrewfix@@unchanged{\def\magyar@opt@@cjhebrewfix{0}} +\def\magyar@opt@cjhebrewfix@@onlyouter{\def\magyar@opt@@cjhebrewfix{1}} +\def\magyar@opt@cjhebrewfix@@yes{\def\magyar@opt@@cjhebrewfix{2}} +\let\magyar@opt@cjhebrewfix\magyar@enumarg +\def\magyar@opt@fancyhdr@@unchanged{\def\magyar@opt@@fancyhdr{0}} +\def\magyar@opt@fancyhdr@@hu{\def\magyar@opt@@fancyhdr{1}} +\let\magyar@opt@fancyhdr\magyar@enumarg +\def\magyar@opt@ntheoremfix@@unchanged{\def\magyar@opt@@ntheoremfix{0}} +\def\magyar@opt@ntheoremfix@@yes{\def\magyar@opt@@ntheoremfix{1}} +\let\magyar@opt@ntheoremfix\magyar@enumarg +\def\magyar@opt@figurecaptions@@unchanged{\def\magyar@opt@@figurecaptions{0}} +\def\magyar@opt@figurecaptions@@hu{\def\magyar@opt@@figurecaptions{1}} +\def\magyar@opt@figurecaptions@@us{\def\magyar@opt@@figurecaptions{2}} +\let\magyar@opt@figurecaptions\magyar@enumarg +\def\magyar@opt@tablecaptions@@unchanged{\def\magyar@opt@@tablecaptions{0}} +\def\magyar@opt@tablecaptions@@hu{\def\magyar@opt@@tablecaptions{1}} +\def\magyar@opt@tablecaptions@@us{\def\magyar@opt@@tablecaptions{2}} +\let\magyar@opt@tablecaptions\magyar@enumarg +\def\magyar@opt@toclang@@unchanged{\def\magyar@opt@@toclang{0}}% same as =badall +\def\magyar@opt@toclang@@badall{\def\magyar@opt@@toclang{0}} +\def\magyar@opt@toclang@@badfloat{\def\magyar@opt@@toclang{1}} +\def\magyar@opt@toclang@@good{\def\magyar@opt@@toclang{2}} +\let\magyar@opt@toclang\magyar@enumarg +\def\magyar@opt@mathbrk@@unchanged{\def\magyar@opt@@mathbrk{0}} +\def\magyar@opt@mathbrk@@define{\def\magyar@opt@@mathbrk{1}} +\def\magyar@opt@mathbrk@@fix{\def\magyar@opt@@mathbrk{2}} +\let\magyar@opt@mathbrk\magyar@enumarg +\def\magyar@opt@mathfactorial@@unchanged{\def\magyar@opt@@mathfactorial{0}} +\def\magyar@opt@mathfactorial@@define{\def\magyar@opt@@mathfactorial{1}} +\def\magyar@opt@mathfactorial@@fix{\def\magyar@opt@@mathfactorial{2}} +\let\magyar@opt@mathfactorial\magyar@enumarg +\def\magyar@opt@mathhucomma@@unchanged{\def\magyar@opt@@mathhucomma{0}} +\def\magyar@opt@mathhucomma@@define{\def\magyar@opt@@mathhucomma{1}} +\def\magyar@opt@mathhucomma@@fix{\def\magyar@opt@@mathhucomma{2}} +\let\magyar@opt@mathhucomma\magyar@enumarg +\def\magyar@opt@mathmuskips@@unchanged{\def\magyar@opt@@mathmuskips{0}} +\def\magyar@opt@mathmuskips@@latex{\def\magyar@opt@@mathmuskips{1}} +\def\magyar@opt@mathmuskips@@hu{\def\magyar@opt@@mathmuskips{2}} +\let\magyar@opt@mathmuskips\magyar@enumarg +\def\magyar@opt@hynumberline@@unchanged{\def\magyar@opt@@hynumberline{0}} +\def\magyar@opt@hynumberline@@latex{\def\magyar@opt@@hynumberline{1}} +\def\magyar@opt@hynumberline@@hu{\def\magyar@opt@@hynumberline{2}} +\let\magyar@opt@hynumberline\magyar@enumarg +\def\magyar@opt@hunnewlabel@@no {\def\magyar@opt@@hunnewlabel{0}} +\dMf magyar@opt@hunnewlabel@@only-hu {\def\magyar@opt@@hunnewlabel{1}} +\def\magyar@opt@hunnewlabel@@yes{\def\magyar@opt@@hunnewlabel{2}} +\let\magyar@opt@hunnewlabel\magyar@enumarg +\def\magyar@opt@partnumber@@unchanged{\def\magyar@opt@@partnumber{0}} +\def\magyar@opt@partnumber@@huordinal{\def\magyar@opt@@partnumber{1}} +\def\magyar@opt@partnumber@@Huordinal{\def\magyar@opt@@partnumber{2}} +\let\magyar@opt@partnumber\magyar@enumarg +\def\magyar@opt@chapternumber@@unchanged{\def\magyar@opt@@chapternumber{0}} +\def\magyar@opt@chapternumber@@huordinal{\def\magyar@opt@@chapternumber{1}} +\def\magyar@opt@chapternumber@@Huordinal{\def\magyar@opt@@chapternumber{2}} +\let\magyar@opt@chapternumber\magyar@enumarg +\def\magyar@opt@accents@@high{\def\magyar@opt@@umlaut{\umlauthigh}} +\def\magyar@opt@accents@@low{\def\magyar@opt@@umlaut{\umlautlow\umlautelow}} +\def\magyar@opt@accents@@defaulthigh{\let\magyar@opt@@umlaut\@empty} +\let\magyar@opt@accents\magyar@enumarg +\def\magyar@opt@longcaption@@centered{\def\magyar@caption@centering{\centering}\def\magyar@caption@newline{\ }} +\def\magyar@opt@longcaption@@justified{\def\magyar@caption@centering{\relax}\def\magyar@caption@newline{\ }} +\def\magyar@opt@longcaption@@centernewline{\def\magyar@caption@centering{\centering}\def\magyar@caption@newline{\\\relax}} +\def\magyar@opt@longcaption@@none{\let\magyar@caption@centering\@empty} +\def\magyar@opt@longcaption@@unchanged{\let\magyar@caption@centering\@empty} +\let\magyar@opt@longcaption\magyar@enumarg +\def\magyar@opt@suggestions@@no {\def\magyar@opt@@suggestions{0}} +\def\magyar@opt@suggestions@@yes{\def\magyar@opt@@suggestions{1}} +\let\magyar@opt@suggestions\magyar@enumarg +\def\magyar@opt@appendixdot@@no {\def\@@magyar@appendixname{\appendixname}} +\def\magyar@opt@appendixdot@@yes{\def\@@magyar@appendixname{}} +\let\magyar@opt@appendixdot\magyar@enumarg +\def\magyar@opt@extras@@no {\def\magyar@opt@@extras{0}} +\def\magyar@opt@extras@@yes{\def\magyar@opt@@extras{1}} +\let\magyar@opt@extras\magyar@enumarg +\def\magyar@opt@chapterhead@@unchanged{\def\magyar@opt@@chapterhead{0}} +\def\magyar@opt@chapterhead@@no{\def\magyar@opt@@chapterhead{0}} +\def\magyar@opt@chapterhead@@yes{\def\magyar@opt@@chapterhead{1}} +\let\magyar@opt@chapterhead\magyar@enumarg +\def\magyar@opt@classmod@@no {\let\magyar@opt@@classmod\relax} +\def\magyar@opt@classmod@@unchanged{\let\magyar@opt@@classmod\relax} +\def\magyar@opt@classmod@@yes {\let\magyar@opt@@classmod\@empty} +\def\magyar@opt@classmod#1#2{% + \expandafter\ifx\csname magyar@opt@#1@@#2\endcsname\relax + \@namedef{magyar@opt@@#1}{#2}% + \else + \csname magyar@opt@#1@@#2\endcsname + \fi +} +\def\magyar@opt@shorthandcs#1#2{% + \def\reserved@a{#2}% + \def\reserved@b{none}% + \ifx\reserved@a\reserved@b + \def\magyar@opt@@shorthandcs{0}% overridable + \else + \def\magyar@opt@@shorthandcs{1}% + \ifcat\hfuzz\noexpand#2\relax% #2 is \shu \shu`tty is `tty + \def#2##1{\protect\@@magyar@shorthand}% Dat: ##1 is usually `_12 + \else + \@namedef{#2}{\protect\@@magyar@shorthand}% + \fi + \fi +} +\def\magyar@opt@hunumbers@@no{\def\magyar@opt@@hunumbers{0}} +\def\magyar@opt@hunumbers@@yes{\def\magyar@opt@@hunumbers{1}} +\let\magyar@opt@hunumbers\magyar@enumarg +\let\magyar@opt@az\magyar@yesweaknoarg +\let\magyar@opt@told\magyar@yesweaknoarg +\let\magyar@opt@textqq\magyar@yesweaknoarg +\let\magyar@opt@emitdate\magyar@yesweaknoarg +\let\magyar@opt@mathreal\magyar@yesweaknoarg +\let\magyar@opt@refstruc\magyar@yesweaknoarg +\let\magyar@opt@mond\magyar@yesweaknoarg +\let\magyar@opt@hang\magyar@yesweaknoarg +\def\magyar@opt@theoremtitle@@unchanged{\def\magyar@opt@@theoremtitle{0}} +\def\magyar@opt@theoremtitle@@hu{\def\magyar@opt@@theoremtitle{1}} +\let\magyar@opt@theoremtitle\magyar@enumarg +\def\magyar@opt@footnote@@unchanged{\def\magyar@opt@@footnote{0}} +\def\magyar@opt@footnote@@yes{\def\magyar@opt@@footnote{1}} +\def\magyar@opt@footnote@@huplain{\def\magyar@opt@@footnote{2}} +\def\magyar@opt@footnote@@starplain{\def\magyar@opt@@footnote{3}} +\let\magyar@opt@footnote\magyar@enumarg +\def\magyar@opt@hutoday@@no{\def\magyar@opt@@hutoday{0}} +\def\magyar@opt@hutoday@@yes{\def\magyar@opt@@hutoday{1}} +\let\magyar@opt@hutoday\magyar@enumarg +\def\magyar@opt@shortrefcmds@@no{\def\magyar@opt@@shortrefcmds{0}} +\def\magyar@opt@shortrefcmds@@yes{\def\magyar@opt@@shortrefcmds{1}} +\let\magyar@opt@shortrefcmds\magyar@enumarg +\def\magyar@opt@dottedtocline@@fix{\def\magyar@opt@@dottedtocline{1}} +\def\magyar@opt@dottedtocline@@unchanged{\def\magyar@opt@@dottedtocline{0}} +\let\magyar@opt@dottedtocline\magyar@enumarg +\let\magyar@opt@amslevelfix\magyar@enumarg +\def\magyar@opt@amslevelfix@@unchanged{\def\magyar@opt@@amslevelfix{0}} +\dMf magyar@opt@amslevelfix@@fix-ams {\def\magyar@opt@@amslevelfix{1}} +\dMf magyar@opt@amslevelfix@@fix-all {\def\magyar@opt@@amslevelfix{2}} +\let\magyar@opt@amsuppercasefix\magyar@enumarg +\def\magyar@opt@amsuppercasefix@@unchanged{\def\magyar@opt@@amsuppercasefix{0}} +\dMf magyar@opt@amsuppercasefix@@fix-ams {\def\magyar@opt@@amsuppercasefix{1}} +\dMf magyar@opt@amsuppercasefix@@fix-all {\def\magyar@opt@@amsuppercasefix{2}} +\let\magyar@opt@captionfix\magyar@enumarg +\def\magyar@opt@captionfix@@unchanged{\def\magyar@opt@@captionfix{0}} +\def\magyar@opt@captionfix@@yes {\def\magyar@opt@@captionfix{1}} +\let\magyar@opt@babelmarkfix\magyar@enumarg +\def\magyar@opt@babelmarkfix@@unchanged{\def\magyar@opt@@babelmarkfix{0}} +\def\magyar@opt@babelmarkfix@@yes {\def\magyar@opt@@babelmarkfix{1}} +\let\magyar@opt@showfix\magyar@enumarg +\def\magyar@opt@showfix@@unchanged{\def\magyar@opt@@showfix{0}} +\def\magyar@opt@showfix@@yes {\def\magyar@opt@@showfix{1}} +\def\magyar@opt@labelenums@@unchanged{\def\magyar@opt@@labelenums{0}} +\dMf magyar@opt@labelenums@@hu-a {\def\magyar@opt@@labelenums{1}} +\dMf magyar@opt@labelenums@@hu-A {\def\magyar@opt@@labelenums{2}} +\dMf magyar@opt@labelenums@@hu-d {\def\magyar@opt@@labelenums{3}} +\let\magyar@opt@labelenums\magyar@enumarg +\def\magyar@opt@labelitems@@unchanged{\def\magyar@opt@@labelitems{0}} +\def\magyar@opt@labelitems@@hu {\def\magyar@opt@@labelitems{1}} +\let\magyar@opt@labelitems\magyar@enumarg +\def\magyar@opt@openqq@@unchanged{\def\magyar@opt@@openqq{0}} +\def\magyar@opt@openqq@@up{\def\magyar@opt@@openqq{1}} +\def\magyar@opt@openqq@@down{\def\magyar@opt@@openqq{2}} +\def\magyar@opt@openqq@@maybedown{\def\magyar@opt@@openqq{3}} +\let\magyar@opt@openqq\magyar@enumarg +\def\magyar@opt@frenchspacing@@unchanged{\def\magyar@opt@@frenchspacing{0}}% same as =no +\def\magyar@opt@frenchspacing@@no {\def\magyar@opt@@frenchspacing{1}} +\def\magyar@opt@frenchspacing@@yes{\def\magyar@opt@@frenchspacing{2}} +\let\magyar@opt@frenchspacing\magyar@enumarg +\dMf magyar@opt@afterindent@@force-no {\def\magyar@opt@@afterindent{0}} +\dMf magyar@opt@afterindent@@force-yes {\def\magyar@opt@@afterindent{1}} +\dMf magyar@opt@afterindent@@unchanged {\def\magyar@opt@@afterindent{9}} +\let\magyar@opt@afterindent\magyar@enumarg +\def\magyar@opt@postpara#1#2{% + \def\reserved@a{#2}% + \ifx#2\magyar@@unchanged + \let\magyar@opt@@paragraphs\@undefined + \else + \expandafter\def\csname magyar@opt@@#1\endcsname{#2}% + \let\magyar@opt@@paragraphs\@empty + \fi +} +\let\magyar@opt@postsubpara\magyar@opt@postpara +\let\magyar@opt@postdescription\magyar@opt@postpara + +% --- Option processing code of \magyarOptions +% +% Example: \def\magyarOptions{titles=\quad,active=safe} \usepackage[magyar]{babel} +% Dat: Babel has \languageoptions, but it is quite weak and it's too late +% Dat: this is a complete rewrite based on examplep.sty + +%** @param #1 to gobble a space token +%** @usage \magyar@doopt foo=bar,foo2=bar2,\hfuzz,% +\def\magyar@doopt#1,{% + \if,\noexpand#1,% ignore multiple commas (#1 is empty) + \expandafter\magyar@doopt + \else + \csname fi\endcsname% don't count as `\fi' when being skipped + \magyar@doopt@low#1,=,% + \fi +} +\@gobble\iftrue% \def\magyar@doopt@low contains `\fi'. Make it skippable. +\def\magyar@applyopt#1#2{\csname magyar@opt@#1\endcsname{#1}{#2}}% +%** @param #1 is here for gobbling space tokens +\def\magyar@doopt@low#1#2=#3,#4\fi{% + % Dat: Normal case: #1#2 is key, #3 is value, #4 is `=,' + % Dat: MissingArg case: #1#2 is `key,', #3 is empty, #4 is empty + % Dat: Terminator case: #1#2 is `\hfuzz,', #3 is empty, #4 is empty + % Dat: OnlySpace case: #1 is `,', #2 is empty, #3 is empty, #4 is empty + \ifx\relax#4\relax% MissingArg or Terminator + \ifx#1\hfuzz% Terminator + \else + \if,\noexpand#1\else% OnlySpace case + \if=\noexpand#1\magyar@doopt@missingkey#2% #2 already contains comma at end + \else \magyar@doopt@missingval#1#2\fi + \fi + \expandafter\expandafter\expandafter\magyar@doopt + \fi + \else% Normal + \expandafter\ifx\csname magyar@opt@#1#2\endcsname\relax + \@@magyar@error{Unknown option: #1#2 (= #3)}% + \else + \magyar@applyopt{#1#2}{#3}% + \fi + \expandafter\magyar@doopt + \fi +} +\def\magyar@doopt@missingkey#1,{% + \@@magyar@error{Key missing for value: #1}% +} +\def\magyar@doopt@missingval#1,{% + \@@magyar@error{Value (=) missing for option: #1}% +} +%** Dat: Spaces and newlines at end of #1 are not ignored, so please prefix +%** them with a comma, e.g \magyar@doopts{foo=bar, } +%** @param #1 comma-separated optoinname=value pairs +%\def\magyar@doopts#1{\magyar@doopt #1,\hfuzz,}% + +\def\magyar@dooptions{% + \expandafter\ifx\csname opt@\CurrentOption.ldf.sty\endcsname\relax\else + % Usage: \PassOptionsToPackage{foo=bar}{magyar.ldf} + \expandafter\expandafter\expandafter + \magyar@doopt\csname opt@\CurrentOption.ldf.sty\endcsname,\hfuzz,% + \expandafter\let\csname opt@\CurrentOption.ldf.sty\endcsname\relax + \fi + \expandafter\ifx\csname \CurrentOption Options\endcsname\relax\else% \magyarOptions + \expandafter\expandafter\expandafter + \magyar@doopt\csname\CurrentOption Options\endcsname,\hfuzz,% + \expandafter\let\csname \CurrentOption Options\endcsname\relax + \fi +} +\def\magyar@do@option@low#1#2=#3=,\vfuzz{% + \ifx#1\hfuzz\else + %%\typeout{(#1#2)=(#3)}% + % vvv wastes some heap (\csname), but never mind + \fi +} + + +\magyar@opt@defaults{defaults}{over-1.4} % defaults=over-1.4 by default +\def\magyar@opt@@hdrtitleskip{\enskip}% !! option for that +\magyar@dooptions% in \magyarOptions +\ifnum\magyar@opt@@openqq=3 % =maybedown + \ifnum\magyar@opt@@active=0 + \def\magyar@opt@@openqq{0}% =unchanged + \else + \def\magyar@opt@@openqq{2}% =down + \fi +\fi +\ifnum\magyar@opt@@partnumber >0 \let\magyar@needopt@hunumbers\@empty \fi +\ifnum\magyar@opt@@chapternumber>0 \let\magyar@needopt@hunumbers\@empty \fi +\expandafter\ifx\csname magyar@needopt@hunumbers\endcsname\relax\else + \ifnum\magyar@opt@@hunumbers=0 + \@@magyar@error{(chapter|part)number=... needs hunumbers=yes}% + \magyar@opt@@hunumbers1 + \fi + \def\magyar@hunumbers@noclassmod{% + \@@magyar@error{unsupported \string\documentclass,\MessageBreak + hunumbers=yes,chapternumber=...,partnumber=... disabled}% + }% + % This may get redefined to \@empty later. + \def\magyar@hunumbers@errmsg{\magyar@hunumbers@noclassmod}% + \AtBeginDocument\magyar@hunumbers@errmsg +\fi +\if0\magyar@opt@@shorthandcs\else + \if\magyar@opt@@active0% + \@@magyar@error{active=none implies shorthandcs=none}% + \magyar@opt@@active2 % active=safe + \fi +\fi +% Imp: undef \magyar\@opt@* to save memory + +\@gobble\iftrue +%** Usage: `\if...\else\@@magyar@skiplong\fi ... \@gobble{^}', where {^} is in +%** its own line +\def\@@magyar@skiplong#1{% + \fi + %\typeout{--skipfrom:\the\inputlineno} + \bgroup% so ^} would close it + \catcode\string`^13 \lccode\string`~=\string`^ + \lowercase{\let~\fi}% \lowercase because catcode of ^ in \let^ would have been already assigned + %\lowercase{\def~{\typeout{--skipto:\inputlineno}\fi}}% + \catcode\string`\\14 % comment -- avoid using hash memory + \catcode\string`$14 % %$ + \iffalse +} +\@gobble\fi + +\@namedef{extras\CurrentOption}{}% + +% --- hyphenation= + +\csname magyar@opt@@hypr\endcsname +\let\magyar@sugg@pa\@gobble +%\show\magyar@opt@@hyphenation +\ifx\magyar@opt@@hyphenation\@empty + % Hungarian words won't be hyphenated automatically + \expandafter\chardef\csname l@\CurrentOption\endcsname255 + \@@magyar@skiplong\fi +% Define a warning, will be printed later. +\def\@@magyar@suggpa@req@def{% + \def\magyar@sugg@pa##1{% + \PackageWarningNoLine{##1.ldf}{% + Requested Hungarian hyphenation= patterns missing.\MessageBreak + To make LaTeX hyphenate Hungarian words, please\MessageBreak + modify language.dat and rerun initex or texconfig}}}% +% Define a warning, will be printed later. +\def\@@magyar@suggpa@all@def{% + \def\magyar@sugg@pa##1{% + \PackageWarningNoLine{##1.ldf}{% + All Hungarian hyphenation= patterns missing.\MessageBreak + To make LaTeX hyphenate Hungarian words, please\MessageBreak + modify language.dat and rerun initex or texconfig}}}% +\def\@@magyar@hyphenation@last#1\@@magyar@hyphenation@next#2\hfuzz{#1}% +\def\@@magyar@hyphenation@defcs#1#2{\ifx#1#2\else\chardef#1#2\fi}% Dat: \chardef\foo\foo doesn't work +\def\@@magyar@hyphenation@def#1{% + \expandafter\ifx\csname l@#1\endcsname\relax\else + \expandafter\expandafter\expandafter\@@magyar@hyphenation@defcs + \expandafter\expandafter\csname l@\CurrentOption\endcsname + \csname l@#1\endcsname + \@@magyar@hyphenation@last\fi}% +\def\@@magyar@hyphenation@next#1{% + \ifx#1\hfuzz + \else\if#1N% none + % Turn of hyphenation. + \expandafter\chardef\csname l@\CurrentOption\endcsname255 + \@@magyar@hyphenation@last + \else\if#1C% use l@\CurrentOption if defined + \expandafter\ifx\csname l@\CurrentOption\endcsname\relax\else + \@@magyar@hyphenation@last + \fi + \else\if#1w% print the all-missing-warning + \@@magyar@suggpa@all@def + \else\if#1r% print the req-missing-warning + \@@magyar@suggpa@req@def + \else\if#1h\@@magyar@hyphenation@def{hungarian}% + \else\if#1m\@@magyar@hyphenation@def{magyar}% + \else\if#13\@@magyar@hyphenation@def{magyar3}% + \else\if#1c\@@magyar@hyphenation@def{magyarc}% + \else\if#1f\@@magyar@hyphenation@def{magyarf}% + \else\if#1n\@@magyar@hyphenation@def{magyarn}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\@@magyar@hyphenation@next + % Dat: no \adddialect\l@magyar... - it's only a chardef +}% + +%\tracingmacros1 \show\magyar@opt@@hyphenation +\expandafter\@@magyar@hyphenation@next\magyar@opt@@hyphenation\hfuzz +%\show\l@magyar +%\tracingmacros0 +\expandafter\ifx\csname l@\CurrentOption\endcsname\relax + \expandafter\newcount\csname l@\CurrentOption\endcsname + % ^^^ BUGFIX at Tue Oct 12 14:13:54 CEST 2004 +\fi +\let\@@magyar@suggpa@all@def\@undefined +\let\@@magyar@suggpa@req@def\@undefined +\@gobble +{^} + +% --- accents= + +\ifx\magyar@opt@@umlaut\@empty\else% !! test this + % Dat: this only affects \" + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\"\umlautlow \magyar@opt@@umlaut} +\fi + +% --- theorem title number ordering and the dot; theoremtitle= +% +% Dat: \ref{mytheorem} never appends a dot +% +% If you want to define your own theorem style without using theorem.sty or +% ntheorem.sty, then do a +% \PassOptionsToPackage{theoremtitle=unchanged}{magyar.ldf} , and then +% define a custom \@begintheorem, \@opargbegintheorem and \@endtheorem. + +\if0\magyar@opt@@theoremtitle \@@magyar@skiplong\fi +% for theorem.sty and ntheorem.sty +% Define your \newtheorem commands in the preamble, before \theoremstyle +\def\magyar@th@magyar{% + \def\@begintheorem##1##2{% + \item[\hskip \labelsep{\theorem@headerfont ##2.\ ##1.}]}% + \def\@opargbegintheorem##1##2##3{% + \item[\hskip \labelsep{\theorem@headerfont ##2.\ ##1\ (##3).}]}% +} + +% vvv Dat: theorem.sty needs \th@magyar-plain when \theoremstyle{...} +% is called, so we have to define it early (even if theorem.sty is not +% loaded). +\expandafter\let\csname th@\CurrentOption-plain\endcsname\magyar@th@magyar% Dat: moved to earlier +% !! now \usepackage{theorem} +% \usepackage[magyar]{babel} +% \theoremstyle{magyar-plain}% % Dat: must be put before \new +% \newtheorem{Def}{Defin\'{i}ci\'o} + +%** @param #1 magyar +\def\@@magyar@setup@theoremstyle#1{% + \expandafter\ifx\csname theorem@headerfont\endcsname\relax + \let\magyar@th@magyar\@undefined + \else + %\expandafter\let\csname th@#1-plain\endcsname\magyar@th@magyar% Dat: moved to earlier + % vvv Dat: activate the Hungarian theorem style by default. + \def\theorem@headerfont{\bf}% + \edef\reserved@a{\the\theorem@style}% + \def\reserved@b{plain}% + \ifx\reserved@a\reserved@b + \expandafter\theorem@style\expandafter{#1-plain}% + \fi + \fi +} + +% Do this quite late in case theorem.sty or ntheorem.sty is loaded late. +\expandafter\AtBeginDocument\expandafter{\expandafter + \@@magyar@setup@theoremstyle\expandafter{\CurrentOption}} + +\expandafter\addto\csname extras\CurrentOption\endcsname{% + %%\show\theorem@headerfont + \expandafter\ifx\csname thm@swap\endcsname\relax + \expandafter\ifx\csname theorem@headerfont\endcsname\relax% no theorem.sty + \babel@save\@begintheorem + % Dat: amsart.cls: \def\@begintheorem#1#2[#3]{}% + \def\@begintheorem#1#2{\trivlist + \item[\hskip \labelsep{\bfseries #2.\ #1.}]\itshape}% old: \slshape + \babel@save\@opargbegintheorem + \def\@opargbegintheorem#1#2#3{\trivlist + \item[\hskip \labelsep{\bfseries #2.\ #1\ (#3).}]\itshape}% old: \slshape + \else% theorem.sty or ntheorem.sty + % Nothing -- style already set up in the preamble. + \fi + \else% amsthm.sty + \babel@save\thmhead + \babel@save\swappedhead + %** \swapnumbers. \newtheorem{...}{...} already inserts the trailing dot + % \def\thm@swap{S}% no effect :-( + %** overrides amsart.cls + \def\thmhead#1#2#3{% + \thmnumber{\@upn{#2}\@ifnotempty{#1}{.~}}% + \thmname{#1}% + \thmnote{ {\the\thm@notefont(#3)}}% + }% + \let\swappedhead\thmhead + \fi +}% +\@gobble +{^}% + +% --- Quotation marks with \textqq +% +% Symbols of Hungarian quoting: unquoted ,,outer >>middle 'inner'<<'' +% Equivalent: unquoted \quotedblbase outer \guillemotright middle +% \textquoteright inner\textquoteright\guillemotleft\textquotedblright +% With magyar.ldf: unquoted \textqq{outer \textqq{middle \textqq{inner}}} +% Typing this with magyar.ldf works for outer: \textqq{foo} +% Typing this works with T1 and OT1 for outer: \glqq foo'' +% Typing this works in T1, but not in OT1 for outer: ,,foo'' +% + +\if0\magyar@opt@@textqq \@@magyar@skiplong\fi +\def\magyar@textqq@level{0} +%** Provide a placeholder for language-unspecific \textqq +\def\@@magyar@textqq@nolang#1{% + \ifcase\magyar@textqq@level + \def\magyar@textqq@level{1}% + \textquotedblleft#1\textquotedblright + \def\magyar@textqq@level{0}% + \or + \textquoteleft#1\textquoteright + \fi +} +\def\@@magyar@textqq@hu#1{\ifmmode\expandafter\mbox\fi{% + % Imp: \textqq{\textqq{foo}} -> \textqq{\textqq{foo}\,} + % Dat: \showhyphens{\textqq{hello bello}} --> hel-lo bel-lo + % Dat: \guillemotleft is provided by babel.def even for the OT1 encoding + \ifcase\magyar@textqq@level + \def\magyar@textqq@level{1}% + % Dat: \hskip instead of \kern to allow hyphenation + % \nobreak\hskip-.06em adds a non-breakable skip and allows hyphenation + % of the following word. + \quotedblbase\nobreak\hskip-.06em\relax#1\kern\z@\textquotedblright% skip OK for the CM and EC fonts + \def\magyar@textqq@level{0}% + \or + \def\magyar@textqq@level{2}% + \guillemotright\nobreak\hskip-.07em\relax#1\kern-0.05em\guillemotleft% skip OK for CM and EC fonts + \def\magyar@textqq@level{1}% + \or + \def\magyar@textqq@level{3}% + \textquoteright\nobreak\hskip\z@\relax#1\kern\z@\textquoteright + \def\magyar@textqq@level{2}% + \else + \quotedblbase\nobreak\hskip-.06em\relax#1\kern\z@\textquotedblright% skip OK for the CM and EC fonts + \fi +}}% + +\catcode`\ =11\relax% make space a letter +\ifnum\magyar@opt@@textqq\expandafter\ifx\csname\@gobble.textqq\endcsname\relax1\fi>1\relax% 21, 2, 11, 1 +\def\textqq{\protect\textqq }% \MakeRobust +\def\@@magyar@textqq{\protect\textqq }% +\let\textqq \@@magyar@textqq@nolang% +\expandafter\addto\csname\@gobble.extras\CurrentOption\endcsname% +{\babel@save\textqq \let\textqq \@@magyar@textqq@hu}% +\else% +\def\@@magyar@textqq{\protect\@@magyar@textqq }% \MakeRobust +\let\@@magyar@textqq \@@magyar@textqq@nolang% +\expandafter\addto\csname\@gobble.extras\CurrentOption\endcsname% +{\babel@save\@@magyar@textqq \let\@@magyar@textqq \@@magyar@textqq@hu}% +\fi% +\catcode`\ =10\relax% back to space again +\@gobble +{^}% + +% --- Definite articles (\az, \pageref -> \apageref etc.) + +\if0\magyar@opt@@az \@@magyar@skiplong\fi + +\makeatletter + +%** modified by pts at Fri Oct 3 22:19:13 CEST 2003 +%** @param #1 tokens, will be \edef\vfuzz'ed +\def\@@magyar@az@vfuzzedef#1{% + \begingroup + \@safe@activestrue% allow active `:' inside labels; + \def\hyper@@link[##1]##2##3##4{##4}% Dat: \def\b@abook{\hyper@@link [cite]{}{cite.sokt}{2}}% with hyperref.sty + \let\romannumeral\number% by pts@fazekas.hu at Mon Oct 27 23:44:06 CET 2003 + % Dat: deliberately no \autoref for hyperref.sty !! (why??) + \let\ref\@@magyar@zeroref \let\pageref\@@magyar@zeropageref + \let\cite\@@magyar@zerocite \let\eqref\@@magyar@zeroeqref + % ^^^ fix so \az{\ref{...}} works + \let\refstruc\@@magyar@zerorefplus + \let\refstrucparen\@@magyar@zerorefplus + \def\setbox ##1{}% to get rid of accents and special letters + \def\hbox ##1{}% + \def\accent ##1 ##2{##2}% + \def\add@accent ##1##2{##2}% + \def\@text@composite@x ##1##2{##2}% + \def\i{i}\def\j{j}% + \def\ae{a}\def\AE{A}\def\oe{o}\def\OE{O}% + \def\ss{s}\def\L{L}% + \def\d{}\def\b{}\def\c{}\def\t{}% Dat: no need to redefine \H and \. + % Dat: no need to remove \textsf or \mdseries, because they are + % handled properly by \protect == \string here. + \let\@safe@activestrue\@empty% babel puts these inside \b@...: % Dat: \def\b@abook{\@safe@activesfalse 2}% (what is \@safe@actives??) + \let\@safe@activesfalse\@empty + \edef\vfuzz{\noexpand\def\noexpand\vfuzz{#1}}% + \expandafter\endgroup\vfuzz +} + +%** Makes \az etc. not emit the definite article. +%** Unused. +\def\@@magyar@noaz{% + \def\@@magyar@az@lowt{\@ifstar\@gobble\@firstofone}% + \def\az{\@@magyar@az@lowt}% + \let\Az\az + \def\aref{\@ifstar\@gobble\@@magyar@az@lowa}% + \let\Aref\aref + \def\apageref{\@ifstar\@gobble\firstoftwo}% + \let\Apageref\apageref + \def\acite{\@ifstar\@gobble\cite}% + \let\Acite\acite +} + +%** Usage: \az{alma} -> `az alma'; \Az*{alma} -> `az' +%** Usage: \az+\ref{foo} is equivalent to \az{\ref{foo}} +\def\@@magyar@az@lowt{\@ifstar{\@@magyar@az@lowy}{\@ifnextchar+\@@magyar@az@lowz\@@magyar@az@lowx}} +\def\@@magyar@az@lowz#1#2#3{\@@magyar@az@lowy{#2{#3}}~#2{#3}} +%** Used by new varioref.sty +\def\@@magyar@az@lowxu{\unskip\@@magyar@az@lowx}% +\def\@@magyar@az@lowx#1{\@@magyar@az@lowy{#1}~#1} +\def\@@magyar@az@lowy#1{{% + \begingroup + %\def\protect{\noexpand\protect\noexpand}% + \set@display@protect% screws up \r + \@@magyar@az@vfuzzedef{#1}% + %%\show\vfuzz + \expandafter\endgroup\expandafter + \set@display@protect\expandafter% fixes \r; why?? + \@@magyar@az@set\expandafter{\vfuzz}\hbox$% +}} + +\def\@@magyar@firstarg#1#2\hbox${#1}% + +%** \Aref({e:foo}) -> `az~(5)'; \aref*{e:foo}: `az' +\def\@@magyar@az@lowa{\@ifnextchar({\@@magyar@az@lowb}{\@@magyar@az@lowb\@empty}} +\def\@@magyar@az@lowb#1#2{\@@magyar@az@ref\@firstoftwo{#2}~#1\ref{#2}} +%** @param #1 \@firstoftwo (for \ref) or \@secondoftwo (for \pageref) +%** everything which is not \@secondoftwo is treated is \@firstoftwo +%** @param #2 for \csname r@#2\endcsname +\def\@@magyar@az@ref#1#2{% + \begingroup + % Dat: this works when turning on hyperref.sty for the 1st time (1st .aux file) -- but the original \ref doesn't work (\@fifthoffive) + % Dat: #2 might contain an active : ; ! ? in case + % \def\magyarOptions{activespace=safe} + \begingroup\lccode`~`: \lowercase{\endgroup\edef~{\string~}}% + \begingroup\lccode`~`; \lowercase{\endgroup\edef~{\string~}}% + \begingroup\lccode`~`! \lowercase{\endgroup\edef~{\string~}}% + \begingroup\lccode`~`? \lowercase{\endgroup\edef~{\string~}}% + \@ifundefined{@@magyar@r@#2}{% + \@ifundefined{r@#2}{\let\reserved@a\@empty}{\expandafter\let\expandafter\reserved@a\csname r@#2\endcsname}% + }{\expandafter\let\expandafter\reserved@a\csname @@magyar@r@#2\endcsname}% + \ifx\reserved@a\@empty\endgroup\else% a speed boost + \ifx#1\@secondoftwo\relax % Dat: remove the 1st {...} arg inside \reserved@a + \expandafter\expandafter\expandafter\def\expandafter\expandafter + \expandafter\reserved@a\expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter\@gobble\reserved@a{}}% + \fi + % vvv keep only the 1st arg (w/o braces) of \vbox, without expansion. + % This is to have hyperref.sty with `\newlabel{tab}{{1}{2}{\texorpdfstring {\textit {bg}}{asd}\relax }{section.1}{}}' + % right, and \texorpdfstring not expanded in the \edef below. + \expandafter\expandafter\expandafter\def\expandafter\expandafter + \expandafter\reserved@a\expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter\@@magyar@firstarg\reserved@a{}\hbox$}% + \expandafter\@@magyar@az@vfuzzedef\expandafter{\reserved@a}% + \expandafter\endgroup\expandafter\@@magyar@az@set\expandafter{\vfuzz}\hbox$% + \fi +} + +\def\@@magyar@az@lowd#1{\@@magyar@az@ref\@secondoftwo{#1}~\pageref{#1}} + +\def\@@magyar@acite@lowb{\@ifnextchar [{\@@magyar@acite@lowa}{\@@magyar@acite@lowa[]}} +\def\@@magyar@acite@lowa[#1]#2{% + \@@magyar@acite@lowd{#2}~% + \ifx\vfuzz#1\vfuzz\cite{#2}\else\cite[#1]{#2}\fi +} +\def\@@magyar@acite@lowd#1{\@@magyar@acite@lowc#1,\hbox$} +\def\@@magyar@acite@lowc#1,#2\hbox#3${% + \begingroup + \@ifundefined{@@magyar@b@#1}{% + \@ifundefined{b@#1}{\def\vfuzz{}}{% + \@@magyar@az@vfuzzedef{% + \expandafter\expandafter\expandafter\@@magyar@b@number + \expandafter\expandafter\expandafter{\csname b@#1\endcsname}}}% + } {\@@magyar@az@vfuzzedef{\csname @@magyar@b@#1\endcsname}}% + \expandafter\endgroup\expandafter + \@@magyar@az@set\expandafter{\vfuzz}\hbox$% +} + +% The original version of the \@az macros below were written by +% David Carlisle, but they have been completely rewritten by pts. + +%** Adds definite article for a word #1#2#3 if #1 is in [A..Z]. Spaces +%** between #1, #2 and #3 can be -- fortunately -- ignored. +%** This is used to distinguish single-letter labels from text labels. +%** Dat: by pts: `\Az{Sz} bet' emits `Az Sz bet'; `\az{szlam}' is also OK +%** @param #1#2#3 doesn't contain \hbox (but may contain space) +%** @param #1 #2 #3 never lower case +\def\@@magyar@azuc#1#2#3{% + \if\noexpand#1Az% + \else\if\noexpand#1Ez% + \else\if\noexpand#1F\ifnum11=\the\catcode\string`#2\else z\fi + \else\if\noexpand#1Iz% + \else\if\noexpand#1L\ifnum11=\the\catcode\if\noexpand#2Y\string`#3\else\string`#2\fi\else z\fi + \else\if\noexpand#1M\ifnum11=\the\catcode\string`#2\else z\fi + \else\if\noexpand#1N\ifnum11=\the\catcode\if\noexpand#2Y\string`#3\else\string`#2\fi\else z\fi + \else\if\noexpand#1Oz% + \else\if\noexpand#1S\ifnum11=\the\catcode\if\noexpand#2Z\string`#3\else\string`#2\fi\else z\fi + \else\if\noexpand#1R\ifnum11=\the\catcode\string`#2\else z\fi + \else\if\noexpand#1Uz% + \else\if\noexpand#1X\ifnum11=\the\catcode\string`#2\else z\fi + \else\if\noexpand#1Y\ifnum11=\the\catcode\string`#2\else z\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +} +\def\@@magyar@azuc@pre#1#2#3#4\hbox${% + \uppercase{\@@magyar@azuc#1#2#3}% Dat: we map a..z -> A..Z +} + +%** Also defined elsewhere. +%** @param #2 \else...\else...\fi...\fi etc. +\def\@@magyar@swaprelax#1#2\relax{#2#1} +\def\@@magyar@ignorehbox@pre#1\hbox${}% +%** Counts the number of digits until a nondigit is found, and insert `z' if +%** appropriate (divisible by 3). +%** We need this to properly handle \aref for eg. 1.3.12 (subsec number) +%** or 3-45 (pagenumber preceeded by chapter number). +\def\@@magyar@eatddd#1#2#3#4{% + % Wizardry: \@@magyar@eatddd throws away #1 (\@@magyar@ignorehbox@pre) + \ifnum9<1\string#2 \ifnum9<1\string#3 \ifnum9<1\string#4 % test for digits + \@@magyar@swaprelax\@@magyar@eatddd\fi\fi\else z\fi + \relax\@@magyar@ignorehbox@pre +} + +% vvv Wizardry: ignore everything (second number?) after first space +\def\@@magyar@eatddd@pre#1 #2\hbox${\@@magyar@eatddd.#1[][]\hbox$}% + +\@gobble\iftrue +\def\@@magyar@azrb@stop#1#2\fi{#1}% +%** Strips spaces and braces automatically +%** @expands to `z' or nothing (last char of definite article) +%** @example \message{R:\removebraces {{foo}{{}{b}{{{{a\fi}}}}r}}\hfuzz;} +\def\@@magyar@azrb#1{% + \ifx\hfuzz#1\@@magyar@azrb@stop\fi + \expandafter\@@magyar@azrb\expandafter{% + \ifcat{\noexpand#1\hfuzz\iffalse}\fi\expandafter + \@@magyar@azrb\else\hfuzz}\@@magyar@azrb@nob{#1}\fi} +\def\@@magyar@azrb@nob#1#2{#2% #2 is \fi + \ifx\hfuzz#1\hfuzz\expandafter\@firstoftwo + \expandafter\@@magyar@azrb\fi\@@magyar@azrb@nobone#1} +\def\@@magyar@azrb@nobone#1{\noexpand#1\@@magyar@azrb}% + +\def\@@magyar@aznospace#1{% + \if\hfuzz\noexpand#1\expandafter\@@magyar@aznospace\else % a \cs, ignored -- may be \relax + \expandafter\@@magyar@aznospace@short\expandafter#1% + \fi +} + +%** @param #1 might not be \cs -- and isn't empty +\def\@@magyar@aznospace@short#1{% + \if5\noexpand#1z% Dat: emit `az 5' + \@@magyar@swaprelax\@@magyar@ignorehbox@pre + \else\if1\noexpand#1% + % Dat: properly handle `az 1001 jszaka', `az 1234567 ves bolyg' + \@@magyar@swaprelax\@@magyar@eatddd@pre + \else\ifnum1<1\noexpand#1 % a different digit, emit `a ' + \@@magyar@swaprelax\@@magyar@ignorehbox@pre + \else\if-\noexpand#1% \az{-5} yields `a~-5' + \@@magyar@swaprelax\@@magyar@ignorehbox@pre + \else\ifcat\string*\noexpand#1% ignore non-digit (non-letter) `other' char + % Wizardary: (undocumented) + % This is a really smart way to ignore control sequence chars resulting + % from \string\textrm etc. Fortunately, most control sequences don't + % contain digits. + \@@magyar@swaprelax\@@magyar@aznospace + \else + \@@magyar@swaprelax{\@@magyar@azuc@pre#1}% safe to call, no \cs + \fi\fi\fi\fi\fi\relax +} + +%** Typesets `z' or nothing (last char of definite article). Is _not_ +%** expandable. +%** @param #1 may contain space(_10) tokens, but mustn't contain expandable +%** tokens. +\def\@@magyar@az@set#1#2\hbox${% by pts + % ^^^ Dat: we have `$' instead of `!' because of catcode changes (shouldn't affect) + \edef\reserved@a{\@@magyar@azrb#1\hfuzz}% + \expandafter\@@magyar@aznospace\reserved@a[b][][] \hbox$% + % ^^^ Wizardry: [b][][] is a smart sentinel for \@@magyar@azuc and `b' for + % \@@magyar@aznospace@short. First `[' is there for aesthetics. Space + % is there for \@@magyar@eatddd@pre. \hbox$ is something that will not + % occur in normal text. +} + +\ifnum\magyar@opt@@az \expandafter\ifx\csname az\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \DeclareRobustCommand\az{a\@@magyar@az@lowt}\fi +\ifnum\magyar@opt@@az \expandafter\ifx\csname Az\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \DeclareRobustCommand\Az{A\@@magyar@az@lowt}\fi +\ifnum\magyar@opt@@az \expandafter\ifx\csname aref\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \DeclareRobustCommand\aref{a\@ifstar{\@@magyar@az@ref\@firstoftwo}{\@@magyar@az@lowa}}\fi +\ifnum\magyar@opt@@az \expandafter\ifx\csname Aref\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \DeclareRobustCommand\Aref{A\@ifstar{\@@magyar@az@ref\@firstoftwo}{\@@magyar@az@lowa}}\fi +\ifnum\magyar@opt@@az \expandafter\ifx\csname apageref\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \DeclareRobustCommand\apageref{a\@ifstar{\@@magyar@az@ref\@secondoftwo}{\@@magyar@az@lowd}}\fi +\ifnum\magyar@opt@@az \expandafter\ifx\csname Apageref\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \DeclareRobustCommand\Apageref{A\@ifstar{\@@magyar@az@ref\@secondoftwo}{\@@magyar@az@lowd}}\fi +\ifnum\magyar@opt@@az \expandafter\ifx\csname acite\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \DeclareRobustCommand\acite{a\@ifstar{\@@magyar@acite@lowd}{\@@magyar@acite@lowb}}\fi +\ifnum\magyar@opt@@az \expandafter\ifx\csname Acite\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \DeclareRobustCommand\Acite{A\@ifstar{\@@magyar@acite@lowd}{\@@magyar@acite@lowb}}\fi + +\@gobble +{^} + +% --- hunnewlabel= + +\if0\magyar@opt@@hunnewlabel + \let\hunnewlabel\@gobbletwo + % ^^^ with this the user would be able to switch from hunnewlabel=yes + % to hunnewlabel=no without removing the .aux file. But now I have a + % better solution to that. (??) !! + \@@magyar@skiplong\fi + +% [pts] Done properly by pts@fazekas.hu at Mon Mar 2 21:53:30 CET 2009 +% +% \label will be redefined to write another line to .aux file: +% \hunnewlabel{...}{...}: similar to \newlabel{sectionStructNr}{pageNr}, +% where the roman numerals are replaced by their arabic representations, so +% \aref and \apageref will work (`a II. rsz'). The name \hunnewlabel is a +% legacy. +% +% We have to redefine \refstepcounter, which defines \@currentlabel, so we +% can define \magyar@@currentlabel@arabic, wich is the same as \@currentlabel, +% but it contains the number in arabic instead of roman. Without +% \magyar@@currentlabel@arabic, \label would have no clue that a roman number +% was involved. hyperref.sty also redefines \refstepcounter, but we are +% agnostic to that: it doesn't matter if we are first. + +\let\magyar@@orig@refstepcounter\refstepcounter +% \relax, or {currentlabel}{pagenumber} +\let\magyar@@currentlabel@intact\relax +% \relax, or {currentlabel-in-arabic}{pagenumber-in-arabic} +\let\magyar@@currentlabel@arabic\relax + +\def\@@magyar@setup@romantoarabic{% + \let\romannumeral\number + \let\@Roman\@roman % avoid uppercasing +} + +\def\refstepcounter#1{% + \magyar@@orig@refstepcounter{#1}% + \begingroup + % Imp: wait till \shipout before expanding \thepage, in case of + % \pagenumbering{roman}. + % \c@page might be wrong (it's correcy at \shipout only), se we fake it. + \c@page\@m + \edef\reserved@b{{\thepage}}% + \let\reserved@a\@currentlabel + % Wrap \reserved@a in {...}, and then append \reserved@b to \reserved@a. + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\reserved@a% + \expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter{% + \expandafter\reserved@a\expandafter}\reserved@b}% + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter\def\expandafter\magyar@@currentlabel@intact\expandafter{% + \reserved@a}}% + \expandafter\endgroup\reserved@b + \begingroup + \c@page\@m + \@@magyar@setup@romantoarabic + % This \protected@edef is from the \refstepcounter code. + \protected@edef\reserved@a{% + {\csname p@#1\endcsname\csname the#1\endcsname}{\thepage}}% + \let\reserved@b\@empty + \ifx\reserved@a\@currentlabel\else + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter\def\expandafter\magyar@@currentlabel@arabic\expandafter{% + \reserved@a}}% + \fi + \expandafter\endgroup\reserved@b +} + +%** Make its expansion short so \ifx would be fast down in noextras... +\def\@@magyar@labela{\@@magyar@labelb}% +\def\@@magyar@labelb#1{% + \@@magyar@orig@label{#1}% output \newlabel to \@auxout + \begingroup + \c@page\@m + \edef\reserved@b{{\thepage}}% + \let\reserved@a\@currentlabel + % Wrap \reserved@a in {...}, and then append \reserved@b to \reserved@a. + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\reserved@a% + \expandafter\expandafter\expandafter{% + \expandafter\expandafter\expandafter{% + \expandafter\reserved@a\expandafter}\reserved@b}% + \ifx\reserved@a\magyar@@currentlabel@intact + % \@currentlabel created by our overridden \refstepcounter. + \ifx\magyar@@currentlabel@arabic\magyar@@currentlabel@intact\else + \expandafter\@@magyar@labelc\magyar@@currentlabel@arabic{#1}% + \fi + \else + % \@currentlabel from unknown origin. + % Emit \hunnewlabel if \thepage is roman. + \@@magyar@setup@romantoarabic + \edef\reserved@c{{\thepage}}% + \ifx\reserved@b\reserved@c\else % \thepage is roman + \@@magyar@labelc\@currentlabel{}{#1}% + \fi + \fi + \endgroup +} +% @param #1 \@currentlabel (maybe expanded) as roman converted to arabic +% @param #2 any page number in any format; ignored +% @param #3 name of the label +\def\@@magyar@labelc#1#2#3{% + % We have \noexpand\number below to prevent the \edef in \protected@write + % from expanding the page number. It will be expanded at \shipout. + \protected@write\@auxout{}{% + \string\hunnewlabel{#3}{{#1}{\noexpand\number\c@page}}}% +} + +\expandafter\addto\csname extras\CurrentOption\endcsname{% + %%\message{--EXTRAS--}\show\label + \ifx\label\@@magyar@labela\else + \let\@@magyar@orig@label\label + \let\label\@@magyar@labela + \fi +} +\expandafter\addto\csname noextras\CurrentOption\endcsname{% + %%\message{--NO--}% + \ifx\label\@@magyar@labela + % The trick here is not to restore the ``original'' label command if + % somebody has changed it since the previous save in \extrasmagyar. This + % adds compatibility with hyperref.sty, because it loads nameref.sty which + % changes \label after babel.sty and magyar.ldf has been loaded. + % 1. \usepackage[magyar]{babel}% \AtBeginDocument{\select@language{magyar}} + % 2. \usepackage{hyperref}% \AtBeginDocument{\RequirePackage{nameref}} + % 3. \begin{document}: + % 4. \input \jobname.aux + % 5. \AtBeginDocument hooks: + % 6. \select@language{magyar} + % 7. \extrasmagyar + % 8. \let\@@magyar@orig@label\label + % 9. \RequirePackage{nameref}: + % 10. \def\label#1{...} + \if1\magyar@opt@@hunnewlabel % only hunnewlabel=only-hu + \let\label\@@magyar@orig@label + \fi + \fi + % \let\@@magyar@orig@label\relax % Dat: commenting out this makes it possible to load magyar.ldf twice +} +\def\hunnewlabel#1#2{% + \def\reserved@a{#2}% + \expandafter\ifx\csname r@#1\endcsname\reserved@a% hun and normal labels are the same + \relax% \message{No need for def: #1}% + \else + \global\expandafter\let\csname @@magyar@r@#1\endcsname\reserved@a% + \fi +} + +\@gobble +{^} + +% --- captions= + +\if0\magyar@opt@@captions\@@magyar@skiplong\fi +\@namedef{captions\CurrentOption}{% + % Dat: inputenc isn't known, so we just use the safe \'a for accented letters + \def\prefacename{El\H osz\'o}% + \def\refname{Hivatkoz\'asok}% + \def\abstractname{Kivonat}% + \def\bibname{Irodalomjegyz\'ek}% + \def\appendixname{f\"uggel\'ek}% BUGFIX at Sun Feb 29 22:02:51 CET 2004 + \def\contentsname{Tartalomjegyz\'ek}% + \def\listfigurename{\'Abr\'ak jegyz\'eke}% + \def\listtablename{T\'abl\'azatok jegyz\'eke}% + \def\indexname{T\'argymutat\'o}% + \def\enclname{Mell\'eklet}% + \def\ccname{K\"orlev\'el--c\'\i mzettek}% ?? + \def\headtoname{C\'\i mzett}% + \def\proofname{Bizony\'\i t\'as}% AMS-\LaTeX + \def\glossaryname{Sz\'ojegyz\'ek}% glosszrium, (magyarzatos) szjegyzk + % vvv All these are start with a small letter + \def\figurename{\'abra}% + \def\chaptername{fejezet}% + \def\tablename{t\'abl\'azat}% + \def\notesname{Jegyzetek}% endnotes.sty + \def\partname{r\'esz}% + \def\pagename{oldal}% + \def\seename{l\'asd}% + \def\alsoname{l\'asd m\'eg}% +} +\@gobble +{^} + +% --- Changing the order of the table numbers; tablecaptions= + +\if0\magyar@opt@@tablecaptions\@@magyar@skiplong\fi + % Wee need `1. tblzat' instead of `Table 1' + \if1\magyar@opt@@tablecaptions + \def\@@magyar@fnum@table{\thetable.~\tablename}% + \else \def\@@magyar@fnum@table{\tablename\nobreakspace\thetable}\fi + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\fnum@table\let\fnum@table\@@magyar@fnum@table} + \@gobble +{^} + +% --- Changing the order of the figure numbers; figurecaptions= + +\if0\magyar@opt@@figurecaptions\@@magyar@skiplong\fi + \if1\magyar@opt@@figurecaptions + \def\@@magyar@fnum@figure{\thefigure.~\figurename}% + \else \def\@@magyar@fnum@figure{\figurename\nobreakspace\thefigure}\fi + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\fnum@figure\let\fnum@figure\@@magyar@fnum@figure} + \@gobble +{^} + +% --- dottedtocline= + +\if0\magyar@opt@@dottedtocline\@@magyar@skiplong\fi + % Dat: It is quite safe to re-define \@dottedtocline, because it isn't + % redefined in standard packages of teTeX 1. + %** Overrides latex.ltx. Allows the page number extend beyond \@pnumwidth. + \def\@dottedtocline#1#2#3#4#5{% + \ifnum #1>\c@tocdepth \else + \vskip \z@ \@plus.2\p@ + {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip + \parindent #2\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip + {#4}\nobreak + \leaders\hbox{\(\m@th + \mkern \@dotsep mu\hbox{.}\mkern \@dotsep + mu\)}\hfill + \nobreak + \setbox\@tempboxa\hbox{\normalfont \normalcolor #5}% ****pts**** + \ifdim\wd\@tempboxa<\@pnumwidth\setbox\@tempboxa\hb@xt@\@pnumwidth{\hfil\unhbox\@tempboxa}\fi + \box\@tempboxa + \par}% + \fi} + \@gobble +{^}% + +% --- amslevelfix= + +% detect ams{ldoc,dtx,art,book,proc}.sty +\ifnum1<0% + \magyar@opt@@amslevelfix + \expandafter\ifx\csname setTrue\endcsname\relax\else 1\fi + \expandafter\ifx\csname allowttyhyphens\endcsname\relax\else 1\fi +\space\else\@@magyar@skiplong\fi + % Fix amsart.cls etc. so no Overfull \hbox occurs in the \listoffigures. + % Changes \@tocline{0}{3pt plus2pt}{0pt}{}{} to \@tocline{0}{3pt plus2pt}{0pt}{\parindent}{} + \def\magyar@amslevelfix#1#2#3#4#5#6#7\vfuzz{% + \def\reserved@a{#6}% + \ifx\@tocline#2\ifx\reserved@a\@empty% + \def#1{\@tocline{#3}{#4}{#5}{\parindent}{}}% + \fi\fi + } + \expandafter\magyar@amslevelfix\expandafter\l@table \l@table ,,,,,,,\vfuzz + \expandafter\magyar@amslevelfix\expandafter\l@figure\l@figure,,,,,,,\vfuzz + \@gobble +{^}% + +% --- amsuppercasefix= + +% Fix for small \'\i in capitalized title (no fix needed for \'i and ): +% \documentlcass{amsart} % amsart.cls +% \usepackage{t1enc} +% \usepackage[latin2]{inputenc} +% \author{author Anal{\'\i}{\'i}zis} +% \title {title Anal{\'\i}{\'i}zis} +% \begin{document} \maketitle a\newpage b\newpage c \end{document} +% This bug is a general amsart.cls bug, not specific to magyar.ldf. +\ifnum1<0% + \magyar@opt@@amsuppercasefix + \expandafter\ifx\csname altucnm\endcsname\relax\else 1\fi +\space\else\@@magyar@skiplong\fi + % textcase.sty is not available by default (Ubuntu 8.04 TeX Live), and + % newer amsart.cls doesn't have this bug (\'\i gets capitalized properly) + \AtEndOfPackage{\IfFileExists{textcase.sty}{\RequirePackage{textcase}}{}} + \@gobble +{^}% + +% --- babelmarkfix= + +% Fix the language name (\foreignlanguage{\languagename}}) appearing in +% \@evenhead. Reason: both amsart.cls and babel.def 3.8 redefine \markboth. +% (There is no problem in Babel 3.7.) +% This bug is a general Babel 3.8 + amsart.cls bug, not specific to +% magyar.ldf. +% +% Dat: amsart.cls redefines \markboth defined in latex.ltx +\ifnum0<0% + \magyar@opt@@babelmarkfix\relax +\space\else\@@magyar@skiplong\fi + \begingroup + %\def\foreignlanguage{\fffffff} % Dat: not called here + % Dat: usually called: \mark{\the\@temptokena} + %\def\mark#1{\showthe\@temptokena{\toks@{B#1}\global\edef\@@magyar@@marktest{\the\toks@}}} + %\def\mark#1{\global\def\@@magyar@@marktest{#1}} + \def\mark#1{\global\edef\@@magyar@@marktest{#1}} + \let\if@nobreak\iffalse \@gobble\fi\@gobble\fi % Dat: \@gobble: make skippable + \def\@@magyar@@marktest@noexp{{\noexpand\@empty BA}{\noexpand\@empty BB}} + \expandafter\org@markboth\@@magyar@@marktest@noexp + % ^^^ Dat: since we call \org@markboth, the result doesn't depend on the Babel + % version, i.e. how Babel redefines \markboth + % ^^^ Dat: call changes \@@magyar@@marktest + % amsart.cls -> {\noexpand \@empty BA}{\noexpand \@empty BB} + % article.cls -> {\@empty BA}{\@empty BB} + \ifx\@@magyar@@marktest\@@magyar@@marktest@noexp + % OK, now test for \markboth, as defined in Babel 3.8 + \def\org@markboth#1#2{\global\def\@@magyar@@marktest{#1..#2}}% + \markboth{CA}{CB}% + % ^^^ Dat: call changes \@@magyar@@marktest + % Babel 3.7 -> \foreignlanguage {magyar}{CA}..\foreignlanguage {magyar}{CB} + % Babel 3.8 -> \noexpand \foreignlanguage {\languagename }{\noexpand \bbl@restore@actives CA}..\noexpand \foreignlanguage {\languagename }{\noexpand \bbl@restore@actives CB} + \def\reserved@a#1#2\hfuzz${#1}% + \expandafter\expandafter\expandafter\ifx + \expandafter\expandafter\expandafter\noexpand + \expandafter\reserved@a\@@magyar@@marktest\relax\hfuzz$% + % Dat: we reach this if \@@magyar@@marktest starts by \noexpand + % Dat: So now we have amsart.cls + \markboth of Babel 3.8. + % The solution is to restore \markboth and \markright of Babel 3.7 + %\let\reserved@a\@empty \zzzzzz + \def\reserved@a{% + \let\markright\org@markright + \bbl@redefine\markright##1{% + \toks@{##1}% + \edef\bbl@tempa{% + \noexpand\org@markright{% + \noexpand\foreignlanguage{\languagename}{\the\toks@}}}% + \bbl@tempa + } + \let\markboth\org@markboth + \bbl@redefine\markboth##1##2{% + \toks@{##1}\toks8{##2}% + \edef\bbl@tempa{% + \noexpand\org@markboth{% + \noexpand\foreignlanguage{\languagename}{\the\toks@}}{% + \noexpand\foreignlanguage{\languagename}{\the\toks8}}}% + \bbl@tempa + }% + }% + \else \let\reserved@a\@empty + \fi + \else \let\reserved@a\empty + \fi + %\show\reserved@a \let\reserved@a\@empty + \global\let\@@magyar@@marktest\@undefined + \global\let\@@magyar@@marktest@noexp\@undefined + \expandafter\endgroup\reserved@a + \@gobble +{^}% + +% --- showfix= +% +% Fix stupid \def\show{...} in AtBeginDocument in ucsencs.def by restoring the original +% definition. + +\ifnum0<0% + \magyar@opt@@showfix\relax +\space\else\@@magyar@skiplong\fi + \def\magyar@stripcolon#1:#2\vfuzz{#2}% + \def\magyar@show@begin@fix{% + \edef\reserved@a{\expandafter\magyar@stripcolon\meaning\show:\vfuzz}% + \ifx\reserved@a\@empty\else % \show is a macro + \let\show\@@magyar@orig@show + \fi + } + \edef\reserved@a{\expandafter\magyar@stripcolon\meaning\show:\vfuzz}% + \ifx\reserved@a\@empty % \show is not a macro + \let\@@magyar@orig@show\show + \expandafter\gdef\expandafter\@preamblecmds\expandafter{% + \expandafter\magyar@show@begin@fix\@preamblecmds}% + %\show\@begindocumenthook + %\AtBeginDocument{\magyar@show@begin@fix}% + \fi + \@gobble +{^}% + +% --- captionfix= +% +% Fix ``1. bra'' order in \caption defined by caption.sty 2004/07/16 v3.0c. +% +% The manual fix would be: +% +% \DeclareCaptionLabelFormat{simpleMagyar}{#2.\bothIfSecond{\nobreakspace}{#1}} +% \let\caption@lfmt\caption@lfmt@simpleMagyar +% + +\if0\magyar@opt@@captionfix\@@magyar@skiplong\fi + \def\@@magyar@captionfix{\@ifundefined{caption@lfmt}{}{% + % Dat: only in preamble: \DeclareCaptionLabelFormat{simpleMagyar}{#2.\bothIfSecond{\nobreakspace}{#1}} + \def\caption@lfmt@simpleMagyar##1##2{##2.\bothIfSecond{\nobreakspace}{##1}}% + }} + \AtBeginDocument{\@@magyar@captionfix} + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \ifx\caption@lfmt\caption@lfmt@default % Imp: not if both undefined + \ifx\caption@lfmt@simpleMagyar\@undefined\else + \babel@save\caption@lfmt + \let\caption@lfmt\caption@lfmt@simpleMagyar + \fi + \fi} + \@gobble +{^}% + + +% --- shortrefcmds= + +\if0\magyar@opt@@shortrefcmds\@@magyar@skiplong\fi + \def\azr{\aref}% better than \let, because it won't keep old value + \def\Azr{\Aref} + \def\azp{\apageref} + \def\Azp{\Apageref} + \def\azc{\acite} + \def\Azc{\Acite} + \@gobble +{^}% + +% --- longcaption= + +\ifx\magyar@caption@centering\@empty\@@magyar@skiplong\fi + \def\magyar@caption@hsizecheck{\hsize} + % We don't emit the two dots of `1. tblzat.' here, because + % has already been emitted by \fnum@table etc. + % We apply some formatting depending on the longcaption= option. + % Dat: Gyurgyk, p95. says: `11. bra. Hajtsi vltozatok.' + \let\@@magyar@do@makecaption\relax% before .toc + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \@@magyar@do@makecaption} + \def\@@magyar@do@makecaption@captiontwo@yes{% + % Dat: caption2.sty or caption3.sty is loaded; do nothing. + } + \def\@@magyar@do@makecaption@captiontwo@no{% + %** @param #1 \fnum@table or \fnum@figure + \def\@makecaption##1##2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{##1.\ ##2}% Dat: `: ' changed to `. ' to match Hungarian typography + \ifdim \wd\@tempboxa>\magyar@caption@hsizecheck\relax + {\magyar@caption@centering ##1.\magyar@caption@newline ##2\csname par\endcsname}% + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip}} + \AtBeginDocument{% + \expandafter\ifx\csname captionlabeldelim\endcsname\relax + \expandafter\ifx\csname caption@lsep@period\endcsname\relax + \let\@@magyar@do@makecaption\@@magyar@do@makecaption@captiontwo@no + \else + % Dat: caption3.sty is loaded, and it has caption@lsep defined + % Dat: \show\caption@lsep@colon % \long\def\caption@lsep@colon{: } + % Dat: \show\caption@lsep %\def\caption@lsep{\caption@lsep@colon} + \ifx\caption@lsep\caption@lsep@default + % There was no \captionsetup{labelsep=...} yet, so we set the + % default to period (dot). + % + % This sets \caption@lsep@default and \caption@lsep. + \caption@setdefaultlabelsep{period}% + \fi + \let\@@magyar@do@makecaption\@@magyar@do@makecaption@captiontwo@yes + \fi + \else + % Dat: caption2.sty is loaded (and has \def\captionlabeldelim{.} -- but it might have {:}) + % Dat: we now redefine {:} to {.} + % Dat: the user can force {:} by \def\captionlabeldelim{:\empty} + % Dat: this works now: \usepackage[german,french,magyar]{babel} \usepackage{caption2} \begin{document} \renewcommand*\captionfont{\itshape} \renewcommand*\captionlabelfont{\scshape} + \def\reserved@a{:}% + \ifx\reserved@a\captionlabeldelim \def\captionlabeldelim{.}\fi + \let\@@magyar@do@makecaption\@@magyar@do@makecaption@captiontwo@yes + \fi} + \@gobble +{^}% + +% --- labelenums= + +\if0\magyar@opt@@labelenums \@@magyar@skiplong\fi + \providecommand\@greekalph[1]{% + % We use the robust \ensuremath here, similarly to \def\@fnsymbol in + % latex.ltx. + \ensuremath{\ifcase#1\or\alpha\or\beta\or\gamma\or\delta% + \or\varepsilon\or\zeta\or\eta\or\vartheta\or\iota\or\kappa% + \or\lambda\or\mu\or\nu\or\xi\or\varphi\or\varpi\or\varrho% + \or\varsigma\or\tau\or\upsilon\or\chi\or\psi\or\omega% + \else\@ctrerr\fi}} + \expandafter\ifx\csname c@enumv\endcsname\relax + \@definecounter{enumv}% call this before \def\theenumv + \fi + \if3\magyar@opt@@labelenums + \def\theenumi {\@arabic \c@enumi} \def\labelenumi {\theenumi.} + \def\theenumii {\@alph \c@enumii} \def\labelenumii {\itshape\theenumii)} + \def\theenumiii{\@greekalph\c@enumiii}\def\labelenumiii{\itshape\theenumiii)} + \def\theenumiv {\@Alph \c@enumiv} \def\labelenumiv {\itshape\theenumiv)} + \def\theenumv {\@Roman \c@enumv} \def\labelenumc {\theenumv.} % Dat: I'm not sure + \else + \def\theenumi{\@Roman\c@enumi} \def\labelenumi{\theenumi.} + \def\theenumii{\@arabic\c@enumii} \def\labelenumii{\theenumii.} + % !! correct \ref style for \the + \if1\magyar@opt@@labelenums % hu-a + \def\theenumiii{\@alph\c@enumiii} \def\labelenumiii{\itshape\theenumiii)} + \def\theenumiv{\@greekalph\c@enumiv} \def\labelenumiv{\itshape\theenumiv)} + \def\theenumv{\@Alph\c@enumv} \def\labelenumv {\itshape\theenumv)} + \else% hu-A + \def\theenumiii{\@Alph\c@enumiii} \def\labelenumiii{\itshape\theenumiii)} + \def\theenumiv{\@alph\c@enumiv} \def\labelenumiv{\itshape\theenumiv)} + \def\theenumv{\@greekalph\c@enumv} \def\labelenumv {\itshape\theenumv)} + \fi + \fi + \def\reserved@a{% copied from latex.ltx + \ifnum \@enumdepth >\thr@@\@toodeep\else + \advance\@enumdepth\@ne + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter\list + \csname label\@enumctr\endcsname + {\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}% + \fi} + \ifx\reserved@a\enumerate + \def\enumerate{% no \@enumdepth>3 + \advance\@enumdepth\@ne + \expandafter\ifx\csname labelenum\romannumeral\the\@enumdepth\endcsname\relax + \@toodeep\advance\@enumdepth\m@ne\else + \edef\@enumctr{enum\romannumeral\the\@enumdepth}% + \expandafter\list + \csname label\@enumctr\endcsname + {\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}% + \fi} + \fi + \@gobble +{^}% + +% --- labelitems= + +\if0\magyar@opt@@labelitems \@@magyar@skiplong\fi + \def\labelitemi{\textendash} + % vvv Dat: formerly 2.5pt + \def\labelitemii {\raise0.58ex\hbox{\scriptsize\textbullet}} + \def\labelitemiii{\raise0.58ex\hbox{\(\scriptstyle\circ\)}} + \def\labelitemiv {\raise0.58ex\hbox{\scriptsize\textasteriskcentered}} + \def\labelitemv {\raise0.58ex\hbox{\scriptsize\textperiodcentered}} + \def\reserved@a{% copied from latex.ltx + \ifnum \@itemdepth >\thr@@\@toodeep\else + \advance\@itemdepth\@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \expandafter\list + \csname\@itemitem\endcsname + {\def\makelabel##1{\hss\llap{##1}}}% + \fi} + \ifx\reserved@a\itemize + \def\itemize{% no \@itemdepth>3 + \advance\@itemdepth\@ne + \expandafter\ifx\csname labelitem\romannumeral\the\@itemdepth\endcsname\relax + \@toodeep\advance\@enumdepth\m@ne\else + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \expandafter\list + \csname\@itemitem\endcsname + {\def\makelabel##1{\hss\llap{##1}}}% + \fi} + \fi + \@gobble +{^}% + +% --- postpara= and postsubpara= and postdescription= + +\expandafter\ifx\csname magyar@opt@@paragraphs\endcsname\relax\@@magyar@skiplong\fi + % Dat: We make sure that hspaces emitted by \magyar@post@... are unstretchable + \def\magyar@post@dot{.\enskip}% + \def\magyar@post@bfdot{\textbf.\enskip}% + \let\magyar@post@quad\quad% not recommended in Hungarian + \let\magyar@post@enskip\enskip% not recommended in Hungarian + \def\magyar@post@em{\hskip1em\relax}% + \let\magyar@post@empty\@empty + %** from Gyurgy\'ak J\'anos: Szerkeszt\H{o}k \'es szerz\H{o}k k\'ezik\"onyve. + %** We don't have a square-shaped, black diamond in our math fonts :-(. + \def\magyar@post@diamond{% + \enskip\raise.5ex\hbox{\font\f=msam10 at1.3ex \f\char7}\enskip%\ignorespaces% raised \blacklozenge + %{\usefont{U}{msa}{m}{n}\small\char7} + } + \def\magyar@post@star{\enskip\({}^*\)\enskip}% + \def\magyar@post@endash{ -- }% + \def\magyar@post@semicolon{:\enskip}% + \def\magyar@first#1#2\vfuzz{\noexpand#1}% + %** Calls \magyar@pf@lowb, and never emits code resulting from #3 to TOC + %** @param #1 empty or `*' + %** @param #2 \@startsection{...}{...}... call + %** @param #3 \paragraph or \subparagraph (selects one of \magyar@post@...) + %** @param #4 paragraph title text + \def\magyar@pf@lowa#1#2#3#4{% + \if#1*\relax + \bbl@afterelse\magyar@pf@lowb*% + \else + \bbl@afterfi \magyar@pf@lowb{[#4]}% + \fi + {#2}{#3}{#4}% + }% + % !! a less obscure way for \paragraph, without -1sp etc. + %** Calls \magyar@pf@lowb, and never emits code resulting from #3 to TOC + %** @param #1 \@startsection{...}{...}... call + %** @param #2 \paragraph or \subparagraph (selects one of \magyar@post@...) + %** @param #3 paragraph title text + %** @param #4 [...] arg to \paragraph + \def\magyar@pf@lowc#1#2#3[#4]{% + \magyar@pf@lowb{[#4]}{#1}{#2}{#3}% + }% + %** Calls \magyar@post@paragraph and \magyar@post@subparagraph + %** @param #1 [#4] or `*' (what goes to TOC?) + %** @param #2 \@startsection{...}{...}... call + %** @param #3 \paragraph or \subparagraph + %** @param #4 paragraph title text + \def\magyar@pf@lowb#1#2#3#4{% + #2#1{#4\csname magyar@post@\expandafter\@gobble\string#3\endcsname\kern\z@}% + % ^^^ Dat: \kern\z@ is needed so \unskip won't occur at \paragraph* + % ^^^ Dat: {#4\csname...} is needed so \magyar@post@dot makes a {\bf.} + % Dat: \ignorespaces is superflous here, it also doesn't ignore \par + }% + %** Fixes (redefines) the specified macro so postpara= and postsubpara= + %** takes effect. It is useful to call this after a `\renewcommand\paragraph' + %** in a package. Has no effect if the definition of #1 doesn't look like + %** the one in article.cls (i.e. \@startsection) or if it's not defined + %** (such as in beamer.cls). + %** @param #1 \paragraph or \subparagraph + \def\magyar@paragraphfix#1{% + \ifx#1\@undefined\else + % Change only if defined. + \expandafter\magyar@paragraphfix@defined\expandafter#1\fi + } + \def\magyar@paragraphfix@defined#1{% + \expandafter\magyar@pf@lowd\expandafter#1#1\hfuzz........\vfuzz + } + \def\magyar@pf@lowd#1#2#3#4#5#6#7#8#9\vfuzz{% + % Dat: \unskip doesn't work, have to change \hskip to -1sp: 1sp is the + % amount of horizontal space between the diamond and the paragraph text + % 0sp would be bad, because it isn't negative (positive skips are + % interpreted as vertical). + %% + \expandafter\def\expandafter\reserved@a\expandafter{\magyar@first#9\vfuzz}% + %\def\reserved@a{#9}\ifx\reserved@a\@empty + \if\reserved@a\hfuzz\ifx#2\@startsection\if-\magyar@first#7\vfuzz + \def#1{\@ifstar + {\magyar@pf@lowa *{#2{#3}{#4}{#5}{#6}{-1sp}{#8}}#1}% + {\@ifnextchar[%] + {\magyar@pf@lowc{#2{#3}{#4}{#5}{#6}{-1sp}{#8}}#1}% + {\magyar@pf@lowa{}{#2{#3}{#4}{#5}{#6}{-1sp}{#8}}#1}% + }% + }% + \fi\fi\fi + } + % !! Imp: change Hungarian \paragraphs only, with dual load + \expandafter\ifx\csname magyar@opt@@postpara\endcsname\relax\else + \magyar@paragraphfix\paragraph + \expandafter\let\expandafter\magyar@post@paragraph\csname magyar@post@\magyar@opt@@postpara\endcsname + \ifx\magyar@post@paragraph\relax + \@@magyar@error{Invalid arg for option: postpara = \magyar@opt@@postpara}% + \fi + \fi + \expandafter\ifx\csname magyar@opt@@postsubpara\endcsname\relax\else + \magyar@paragraphfix\subparagraph + \expandafter\let\expandafter\magyar@post@subparagraph\csname magyar@post@\magyar@opt@@postsubpara\endcsname + \ifx\magyar@post@subparagraph\relax + \@@magyar@error{Invalid arg for option: postsubpara = \magyar@opt@@postsubpara}% + \fi + \fi + \expandafter\ifx\csname magyar@opt@@postdescription\endcsname\relax\else + \expandafter\let\expandafter\magyar@post@description\csname magyar@post@\magyar@opt@@postdescription\endcsname + \ifx\magyar@post@description\relax + \@@magyar@error{Invalid arg for option: postdescription = \magyar@opt@@postdescription}% + \fi + \def\magyar@@descriptionfont{\normalfont\bfseries}% + \def\descriptionlabel#1{\hskip\labelsep{\magyar@@descriptionfont#1}\magyar@post@description\hskip-\labelsep}% + \fi + \@gobble +{^}% + +% --- afterindent= + +\ifnum\magyar@opt@@afterindent>8 \@@magyar@skiplong\fi + \ifnum\magyar@opt@@afterindent<1 % force-no + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\@afterindenttrue + \let\@afterindenttrue\@afterindentfalse + }% + \else% force-yes + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\@afterindentfalse + \let\@afterindentfalse\@afterindenttrue + }% + \fi + \@gobble +{^} + +% --- default \frenchspacing; frenchspacing= + +\if0\magyar@opt@@frenchspacing \@@magyar@skiplong\fi + \if1\magyar@opt@@frenchspacing% =no + \def\@@magyar@antifrenchspacing{% only does some caching + \ifnum\the\sfcode`\.=\@m + \nonfrenchspacing + \let\@@magyar@nonfrenchspacing\frenchspacing + \else + \let\@@magyar@nonfrenchspacing\relax + \fi} + \let\@@magyar@nonantifrenchspacing\frenchspacing + \expandafter\addto\csname extras\CurrentOption\endcsname{\@@magyar@antifrenchspacing} + \expandafter\addto\csname noextras\CurrentOption\endcsname{\@@magyar@nonantifrenchspacing} + \else + \expandafter\addto\csname extras\CurrentOption\endcsname{\bbl@frenchspacing} + \expandafter\addto\csname noextras\CurrentOption\endcsname{\bbl@nonfrenchspacing} + \fi + \@gobble +{^} + + +% --- Putting dots after section number in toc/lof/lot; sectiondot= +% +% This is to have a dot after figure/table numbers in lof/lot and +% section numbers in toc. +% +% The option sectiondot= is ill-named, because it doesn't apply to what is +% displayed in \section, but it applies to \tableofcontents, \listoftables +% and \listoffigures. + +\if0\magyar@opt@@sectiondot \@@magyar@skiplong\fi + \ifnum\magyar@opt@@sectiondot>1 + % This solution (for sectiondot=problematic) is what was provided by + % magyar.ldf v1.4. It is incomatible with lots of packages. + % + % [pts] This doesn't work with nameref.sty. + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\@caption + \long\def\@caption#1[#2]#3{% + \csname par\endcsname + \addcontentsline{\csname ext@#1\endcsname}{#1}% + {\protect\numberline{\csname the#1\endcsname.}{\ignorespaces #2}}% + \begingroup + \@parboxrestore + \if@minipage + \@setminipage + \fi + \normalsize + \@makecaption{\csname fnum@#1\endcsname}% + {\ignorespaces #3}\csname par\endcsname + \endgroup}} + + % [pts] This is incompatible with some packages. + \expandafter\addto\csname extras\CurrentOption\endcsname{% + % Alas, \@sect must also be redefined to have that dot in toc too. + % On the other hand, we include a dot after a run-in head. + \babel@save\@sect + \def\@sect#1#2#3#4#5#6[#7]#8{% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname.}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8.}% + \csname #1mark\endcsname{#7}% + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname.}% + \fi + #7}}% + \fi + \@xsect{#5}}} + + % [pts] This is incompatible with some packages. + \expandafter\addto\csname extras\CurrentOption\endcsname{% + % In order to have that dot after a run-in head when the star form of the + % sectioning commands is used, we have to redefine \@ssect + \babel@save\@ssect + \def\@ssect#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5.}}% + \fi + \@xsect{#3}}} + \else + % This implements option sectiondot=safe. + % + % [pts] We definitely want \numberline to emit table number in \listoftables as + % `5.6.' instead of the default `5.6', but we don't want to redefine \@caption, + % because the # args \addcontentsline adds to \contentsline depends on whether + % nameref.sty (hyperref.sty) is loaded (no nameref: 3, w/ nameref: 4); this + % would cause the strange `Package hyperref Warning: No destination for + % bookmark of \addcontentsline'. + % So we rather redefine \numberline. But we cannot simply add a dot, because + % it might be already present (e.g in \tableofcontents). So we add a dot only + % if it is missing. This modification affects \tableofcontents, \listoffigures + % and \listoftables. The presence of the dot in TOC depends on the language + % the section was defined in. + % amsart.sty uses \tocsection instead of \numberline, see amstocnumskip= + % below + \def\magyar@striplastdot@lowa#1.\relax{#1\relax}% + \def\magyar@striplastdot@lowb#1\relax#2\relax{#1}% + %** \@tempdima is set by \@dottedtocline, called by \l@section + \def\magyar@numberline#1\vfuzz{\hb@xt@\@tempdima{#1.\hfil}}% + \def\@@magyar@numberline@pre#1{% + \expandafter\expandafter\expandafter\magyar@numberline + \expandafter\magyar@striplastdot@lowb\magyar@striplastdot@lowa#1\relax.\relax\vfuzz + }% + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\numberline + %** Overrides latex.ltx + \let\numberline\@@magyar@numberline@pre + } + \fi + \@gobble +{^} + +% --- amspostsectiondot= + +\if0\magyar@opt@@amspostsectiondot \@@magyar@skiplong\fi + % Now fix ams*.cls so that they don't put a dot after the section title. + % First check whether the definition of \@sect contains + % \global\@nobreaktrue\@xsect + \long\def\@@magyar@amssect@fixa#1\global\@nobreaktrue\@xsect#2\hfuzz#3{% + \ifx\hfuzz#2\hfuzz\else% found + \@@magyar@amssect@fixb#3\fi} + %** @param #1 a \cs, e.g \@sect + \def\@@magyar@amssect@fixb#1{% + \expandafter\let\csname @@magyar@amssect@saved\string#1\endcsname#1% + \edef#1{\noexpand\expandafter\noexpand\@@magyar@amssect@low + \expandafter\noexpand\csname @@magyar@amssect@saved\string#1\endcsname}% + \let\@svsechd\@empty% prevent Undefied \cs + %** Definition of \@sect in ams*.cs ends by `\global\@nobreaktrue{#5}' + \long\def\@@magyar@amssect@low##1\global\@nobreaktrue{% + ##1% + \expandafter\def\expandafter\@svsechd\expandafter{% + \expandafter\let\expandafter\@addpunct\expandafter\@gobble \@svsechd}% + \global\@nobreaktrue + }% + } + \expandafter\@@magyar@amssect@fixa\@sect[][][][][][][][]\global\@nobreaktrue\@xsect\hfuzz\@sect + \expandafter\@@magyar@amssect@fixa\@sect[][][][][][][][]\global\@nobreaktrue\@xsect\hfuzz\NR@sect% with nameref.sty + \@gobble +{^}% + +% --- amstocnumskip=, amstocnumlang= +% +% Change \tocsection, \tocsubsection etc. in amsart.cls etc. These commands +% have effect in \tableofcontents, e.g. in the .toc file: +% `\contentsline {section}{\tocsubsection {}{1.1}{Foo}}{1}' +% +% We should be careful not to define \tocchapter and \tocsection if +% tocbibind.sty is (or will be) loaded, because it provides its own definition +% as \newcommand. + +\ifx\@empty\magyar@opt@@amstocnumskip \@@magyar@skiplong\fi + % Similar to titleskip=, but AMS classes don't look at \@seccntformat + \def\@@magyar@amstocnumskip@lets{% + \ifx\tocsubsection\@undefined\else + \ifx\tocsubsection\tocparagraph + \def\tocsubsection{\tocsection}% + % These lines are similar to those in amsart.cls. + \let\tocsubsubsection\tocsubsection + \let\tocparagraph\tocsubsection + \let\tocsubparagraph\tocsubsection + \let\tocpart\tocsubsection + \let\tocchapter\tocsubsection + \fi + \fi + }% + \def\@@magyar@amstocnumskip@defs{% + \ifx\tocsubsection\@undefined\else + \ifx\tocsubsection\tocparagraph + %** Overrides amsart.cls, amsbook.cls etc. + %** Only for Hungarian \section{}s. Changes \quad to + %** \magyar@opt@@amstocnumskip in the definition. Also changes + %** ``fejezet 1'' to ``1. fejezet'' for \chapter + %** (We have \def\tocchapter{\tocsection} by default.) + \def\tocsection##1##2##3{% + %%\typeout{--##3--}% + \indentlabel{% + \def\reserved@a{##1}% + \def\reserved@b{##2}% + \ifx\reserved@b\empty + \else\ifx\reserved@a\chaptername + % * Sometimes (but not in \tableofcontents) #1 is + % `\csname chaptername\endcsname'. Why? + % * \tocappendix is called instead of \tocsection for the + % appendix. + \ifnum\magyar@opt@@chapternumber=1 \@huordinal{##2}~% + \else\ifnum\magyar@opt@@chapternumber=2 \@Huordinal{##2}~% + \else##2.~% + \fi\fi + ##1.\magyar@opt@@amstocnumskip + \else\ifx\reserved@a\partname + \ifnum\magyar@opt@@partnumber=1 \@huordinal{##2}~% + \else\ifnum\magyar@opt@@partnumber=2 \@Huordinal{##2}~% + \else##2.~% + \fi\fi + ##1.\magyar@opt@@amstocnumskip + \else + \ignorespaces##1 ##2.\magyar@opt@@amstocnumskip + \fi\fi\fi}% + ##3}% + %** Overrides amsart.cls etc. Only for Hungarian \section{}s. Changes \quad to + %** \magyar@opt@@amstocnumskip in the definition. + \def\tocappendix##1##2##3{% + \indentlabel{% + \def\reserved@a{##1}% + \ifx\reserved@a\appendixname + ##2\ifx\@@magyar@appendixname\@empty.\fi~##1% + \else + ##1\@ifnotempty{##2}{ ##2}% + \fi + .\magyar@opt@@amstocnumskip}% + ##3}% + \fi + \fi + }% + \AtBeginDocument\@@magyar@amstocnumskip@lets % must be before @defs + \if2\magyar@opt@@amstocnumlang + \AtBeginDocument\@@magyar@amstocnumskip@defs + %\let\@@magyar@amstocnumskip@defs\@undefined% for use by the user + \else + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\tocsection \babel@save\tocappendix + \@@magyar@amstocnumskip@defs + } + \fi + \@gobble +{^}% + + +% --- Fixup Babel language selection glitches; toclang= + +% There are fundamental problem of emitting \select@language items in LOT +% files. +% +% Problem (3): When using \begin{table}...\end{table} \selectlanguage{foo} +% \begin{table}...\end{table}, the LaTeX-Babel scheme will not emit a +% \select@language{foo} between the two \contentsline{}s in \jobname.lot. The +% TOC file is OK, because section titles aren't floats. (But what about +% \mark{}s?). +% +% Problem (1): \selectlanguage emits .aux entries even +% if the language isn't really changed. +% +% Problem (2): babel.def has +% `\AtBeginDocument...\selectlanguage...\bbl@main@language', from which an +% \immediate is missing, so the \select@language is emitted to the .aux file +% after the first float has been typeset. A better solution would be +% `\select@language{\languagename}', which forcibly activates the default +% language. +% +% Problem (4): \ps@headings isn't run \AtBeginDocument, but book.cls runs +% \pagestyle{headings} when it is loaded. We should change this to +% \AtBeginDocument or similar. + +\ifnum\magyar@opt@@toclang=0 \@@magyar@skiplong\fi + \ifnum\magyar@opt@@toclang>1 % toclang=good + % Solve problems (2) and (4). Timing is critical. \select@language must + % be called after \AtBeginDocument, so \catcode{}s won't be \activated + % too early. (Because some code in \AtBeginDocument might issue an + % \input such as hyperref.sty which does \RequirePackage{nameref}.) + % Note that \extrasmagyar containing the \catcode changes is + % only run when `magyar' is the default language (last arg of + % \usepackage[...]{babel}). If that is run after \AtBeginDocument hooks, + % then most packages will use 12 as \catcode\string``, which is intended. + % \@@magyar@setup@psheadings might just be run \AtBeginDocument, it doesn't + % need \@preamblecmds -- but it must be after \select@language. + % + % \@preamblecmds is expanded after \@begindocumenthook + \expandafter\gdef\expandafter\@preamblecmds\expandafter{\@preamblecmds + \@@magyar@setup@psheadings% Solve problem (4). Before \selectlanguage. + \select@language{\languagename}% force initial language + }% + % Solve problem (1) and assist solving problem (2) by not emitting + % \select@language twice. + \def\bbl@set@language#1{% + \edef\@Lang@tmp{% + \ifcat\noexpand\noexpand\noexpand#1% a control sequence + \expandafter\expandafter\expandafter\@gobble\expandafter\string + \fi + #1% + }% + \ifx\languagename\@Lang@tmp\else + \let\languagename\@Lang@tmp + \select@language{\languagename}% + \fi + }% + % Solve problem (3). + \long\def\addtocontents#1#2{% + % Dat: \noexpand should be avoided in \protected@write + \protected@write\@auxout + {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble \let\select@language\relax}% + {\string\@writefile{#1}{\string\select@language{\languagename} #2}}} + \else + % Solve problems (2) and (4). + \AtBeginDocument{% + \if@filesw \immediate\write\@mainaux{% + \string\select@language{\languagename}% + \string\@writefile{toc}{\string\select@language{\languagename}}% + \string\@writefile{lof}{\string\select@language{\languagename}}% + \string\@writefile{lot}{\string\select@language{\languagename}}% + }\fi + \@@magyar@setup@psheadings% Solve problem (4). Before \selectlanguage. + \select@language{\languagename}% force initial language + } + % Solve problem (1) and assist solving problem (2) by not emitting + % \select@language twice. + \def\bbl@set@language#1{% + \edef\@Lang@tmp{% + \ifcat\noexpand\noexpand\noexpand#1% a control sequence + \expandafter\expandafter\expandafter\@gobble\expandafter\string + \fi + #1% + }% + \ifx\languagename\@Lang@tmp\else + \let\languagename\@Lang@tmp + \select@language{\languagename}% + \if@filesw \protected@write\@auxout{}{% + \string\select@language{\languagename}% + \string\@writefile{toc}{\string\select@language{\languagename}}% + \string\@writefile{lof}{\string\select@language{\languagename}}% + \string\@writefile{lot}{\string\select@language{\languagename}}% + \fi}% + \fi + }% + % Don't solve problem (3). + \fi + \@gobble +{^}% + +% --- suggestions= + +\ifnum\magyar@opt@@suggestions=0 \@@magyar@skiplong\fi + % Dat: buggy varioref.sty adds this to extrasmagyar (\AtBeginDocument is + % buggy, can be used only in the preamble. + % \def\reftextfaceafter {a k\"o\-vet\-kez\H{o} ol\-da\-lon}% + % \def\reftextfacebefore{az el\H{o}\-z\H{o} ol\-da\-lon}% + % \def\reftextafter {a k\"o\-vet\-kez\H{o} ol\-da\-lon}% + % \def\reftextbefore {az el\H{o}\-z\H{o} ol\-da\-lon}% + % \def\reftextcurrent {ezen az ol\-da\-lon}% + % \def\reftextfaraway#1{\aza{\pageref{#1}} \pageref{#1}.~ol\-da\-lon}% + % \def\reftextpagerange#1#2{\vref@stringwarning\reftextpagerange + % on pages~\pageref{#1}--\pageref{#2}}% + % \def\reftextlabelrange#1#2{\vref@stringwarning\reflabelpagerange + % \ref{#1} to~\ref{#2}}% + % \AtBeginDocument{\providecommand\aza[1]{a/az% + % \PackageError{varioref}{% + % Proper definition for command \noexpand\aza missing}% + % {You need to (re)define the command \noexpand\aza that + % takes one argument (a number or a \noexpand\pageref command) + % and produces the string `a' or `az' depending on the argument + % value. It should also accept an optional argument (default `l') + % to denote whether or not the string should be lowercase or + % uppercase.}}}% + \def\@@magyar@ignorehbox@pree#1\hbox$#2{}%$ + %\def\@@magyar@grep@reftextcurrent#1\def\reftextcurrent#2\hbox$ + \def\@@magyar@grep@reftextbegin#1\def\reftextfaceafter#2\hfuzz\hfuzz\hfuzz#3\hbox$#4{%$ + \toks@={#1#3}% Dat: # -> ## conversion for \def + \expandafter\global\expandafter\edef\csname extras#4\endcsname + {\the\toks@}% + } + \def\@@magyar@grep@reftextcurrent#1\def\reftextlabelrange#2#3#4#5#6% + \AtBeginDocument#7#8\hbox$#9{%$ Dat: no need for \long\def + % ^^^ Dat: Don't use `#21', because then #2 would match multiple tokens + \ifx#31% found real data, not sentinel + \PackageWarningNoLine{#9.ldf}{Do not load buggy \string\usepackage[magyar]{varioref},\MessageBreak load simply \string\usepackage{varioref}}% + % vvv remove code inserted by varioref.sty + \@@magyar@grep@reftextbegin#1\hfuzz\hfuzz\hfuzz#8\hbox${#9}%$ + \fi + } + \def\magyar@sugg@vr#1{% + \expandafter\expandafter\expandafter\@@magyar@grep@reftextcurrent + \csname extras#1\endcsname\hbox${#1}\@@magyar@ignorehbox@pree%$ + \def\reftextlabelrange23456\AtBeginDocument78\hbox${#1}%$ + } + \def\magyar@sugg@to#1{% + \def\reserved@a{T1} + \edef\reserved@b{\encodingdefault}% \encodingdefault is \long for t1enc.sty, but not for fontenc.sty + \ifx\reserved@a\reserved@b\else + \@latex@warning@no@line{Please use \string\usepackage{t1enc} with\MessageBreak \string\usepackage[#1]{babel}, to get accented chars hyphenated}% + % ^^^ Dat: \usepackage[T1]{fontenc} is equally good, but less effective + \fi + } + \def\magyar@sugg@ie@lowb#1{\@latex@warning@no@line{% + Please use \string\usepackage[latin2]{inputenc}\MessageBreak + or \string\usepackage[utf8]{inputenc}\MessageBreak + with \string\usepackage[#1]{babel}}}% + %** @param #1 empty (old) or \protect + %** @param #2 input encoding name + \def\magyar@sugg@ie@low#1\@inpenc@undefined@#2#3\vfuzz#4{% + \def\reserved@b{#2}% + \def\reserved@a{latin2}% + \ifx\reserved@a\reserved@b\else + \def\reserved@a{utf8}% + \ifx\reserved@a\reserved@b\else + \def\reserved@a{utf8x}% + \ifx\reserved@a\reserved@b\else + \def\reserved@a{cp1250}% + \ifx\reserved@a\reserved@b\else + \magyar@sugg@ie@lowb{#4}% + \fi + \fi + \fi + \fi + } + \def\magyar@sugg@ie#1{% + % Dat: don't print warning for missing \usepackage + \expandafter\ifx\csname @inpenc@undefined\endcsname\relax + \magyar@sugg@ie@lowb{#1}% + \else + % from inputenc.sty: \edef\@inpenc@undefined{\noexpand\@inpenc@undefined@{#1}}% + % > \@inpenc@undefined=macro: + % ->\@inpenc@undefined@ {latin2}. + \expandafter\magyar@sugg@ie@low\@inpenc@undefined....\vfuzz{#1}% + \fi + }% + \def\magyar@sugg@af#1{% + \expandafter\ifx\csname#1Options\endcsname\relax\else + \PackageWarningNoLine{#1.ldf}{No effect of \string\def\@backslashchar #1Options{...}\MessageBreak + please move it before \string\usepackage[#1]{babel}}% + \fi + }% + \def\@@magyar@@ps@fancy{\relax}%\@fancyplainfalse\ps@@fancy}% + \def\magyar@sugg@fh#1{% + \ifx\ps@fancy\@@magyar@@ps@fancy + \PackageWarningNoLine{#1.ldf}{No effect on fancyhdr.sty,\MessageBreak + please load it before \string\usepackage[#1]{babel}}% + \fi + }% + \def\magyar@sugg@ap#1{% + \expandafter\ifx\csname opt@#1.ldf.sty\endcsname\relax\else + \PackageWarningNoLine{#1.ldf}{No effect of \@backslashchar PassOptionsToPackage{?}{#1.ldf}\MessageBreak + please move it before \string\usepackage[#1]{babel}}% + \fi + }% + \edef\reserved@a{\noexpand\AtBeginDocument{% + \noexpand\magyar@sugg@pa{\CurrentOption}% + \noexpand\magyar@sugg@af{\CurrentOption}% + \noexpand\magyar@sugg@ap{\CurrentOption}% + \noexpand\magyar@sugg@to{\CurrentOption}% + \noexpand\magyar@sugg@ie{\CurrentOption}% + \noexpand\magyar@sugg@vr{\CurrentOption}% + \noexpand\magyar@sugg@fh{\CurrentOption}% + }}\reserved@a + \@gobble +{^}% + +% --- Active characters and shorthands; active=, activeprefix=, activespace= + +\ifnum0=\magyar@opt@@activespace\magyar@opt@@active\space + \def\@@magyar@declare@shorthandx#1#2{% + \expandafter\def\csname @@magyar@shorthand@\string#1\endcsname{#2}% + } +\@@magyar@skiplong\fi + \def\magyar@activate@shorthands{% + \edef\reserved@a{% + \noexpand\addto\expandafter\noexpand\csname extras\CurrentOption\endcsname + {\noexpand\languageshorthands{\CurrentOption}}% + } + \reserved@a + \let\magyar@activate@shorthands\relax + } + \let\@@magyar@saved@initiate@active@char\initiate@active@char + % + % vvv Fri Oct 1 18:09:55 CEST 2004 + % This is the ultimate fix of the .aux file catcodes when + % \usepackage[german,magyar]{babel} or + % \usepackage[french,magyar]{babel}. + % This enforces \catcode\string``=12 very early into the .aux file. + % Imp: don't let \catcode``\active too early... + {\toks@\expandafter{\expandafter\@@magyar@protect@backtick\@begindocumenthook}% + \xdef\@begindocumenthook{\the\toks@}}% Dat: \@begindocumenthook has #1 #2 etc. + \def\@@magyar@protect@backtick{% + \if@filesw\immediate\write\@auxout{\catcode\noexpand\string``=12}\fi} + % + %** @param #1 a non-active char token + %** @param #2 activation type: 0, 1, 2 or 3 + % !! quick link to \@@magyar@shorthand + \def\magyar@activate@char#1#2{% + \ifnum#2>1 % ignore 0 and 1 + \ifnum#2>2 % 3 + % SUXX, breaks compatibility with graphicx.sty and hyperref.sty and possibly + % with many other packages using \catcode`` etc. + %** Fix .aux load timing bug. + \AtBeginDocument{% + \if@filesw\immediate\write\@auxout{\catcode\noexpand\string`#1=12}\fi + } + \initiate@active@char{#1}% + \else% 2 + % Dat: german.ldf emits `\catcode`"\active'; we should emit our + % catcode change (\catcode\string``=12) before that + % Dat: this works only with \usepackage[magyar,german,magyar]{babel}, + % not with \usepackage[german,magyar]{babel} + % solution: \AtBeginDocument{\if@filesw\immediate\write\@auxout{\catcode\noexpand\string`#1=12}\fi} + \let\magyar@saved@AtBeginDocument\AtBeginDocument + \let\AtBeginDocument\@gobble + % vvv Calls \AtBeginDocument to set \catcode to \active and also write such a + % line to the .aux file. We just ignore it. + \initiate@active@char{#1}% + \let\AtBeginDocument\magyar@saved@AtBeginDocument + \let\magyar@saved@AtBeginDocument\@undefined + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@savevariable{\catcode\string`#1}% + \catcode\string`#1=13 % + }% + \fi + % Dat: now #1 is \active (done by \initiate@active@char) + \lccode\string`~=\string`#1\lowercase{% Dat: luckily everything below is in lowercase + \expandafter\addto\csname extras\CurrentOption\endcsname {\bbl@activate{~}}% + \expandafter\addto\csname noextras\CurrentOption\endcsname{\bbl@deactivate{~}}% + } + \lccode\string`~=0 + \catcode\string`#1=12 % Imp: restore _old_ catcode + \fi + } + %** @param #1 shorthand prefix character (depends on activeprefix=) + %** @param #2 a single character (will be prefixed) + %* @param #3 TeX code + \def\@@magyar@declare@shorthand@low#1#2#3{% + \declare@shorthand{\CurrentOption}{#1#2}{#3}% + } + \edef\@@magyar@shorthandprefix{\string`}% + %** @param #1 a single character (will be prefixed by ``' etc.) + %* @param #2 TeX code + %\def\@@magyar@declare@shorthand#1#2{\magyar@opt@@activeprefix#1{#2}}% defined below + \ifx\magyar@opt@@activeprefix\relax + \def\magyar@opt@@active{0}% =none + \def\magyar@opt@@openqq{0}% =unchanged (this must be defined before processing openqq below) + \else\edef\@@magyar@declare@shorthand#1#2{\noexpand\@@magyar@declare@shorthand@low\expandafter\string\magyar@opt@@activeprefix#1{#2}}\fi + %\magyar@activate@shorthands% not yet + \def\@@magyar@declare@shorthandx#1#2{% + \magyar@activate@shorthands + \expandafter\def\csname @@magyar@shorthand@\string#1\endcsname{#2}% + \expandafter\@@magyar@declare@shorthand\expandafter#1\expandafter{\csname @@magyar@shorthand@\string#1\endcsname}% + } + \@gobble +{^}% + +%** Call \@@magyar@shorthand@... For example: {`tty} and +%** {\@@magyar@shorthand tty} are interchangeable. +%** @param #1 a char token. +\def\@@magyar@shorthand#1{% + \expandafter\ifx\csname @@magyar@shorthand@\string#1\endcsname\relax + \@@magyar@error{Unknown shorthand: \string#1 }% + \else + \expandafter\expandafter\csname @@magyar@shorthand@\string#1\endcsname + \fi +} + +% --- activespace= Extra \thispace before :, ;, ! and ? +% +% french.ldf has \space after `:', but we only have \thinspace + +\ifnum\magyar@opt@@activespace=0 \@@magyar@skiplong\fi + %** @param #1 any of : ; ! ? + \def\magyar@thinspaced#1{% + % Dat: `!' at the end of the word is OK, but at the beginning it makes the + % word unhyphenatable. Imp: maybe \nobreak\hskip\z@skip? + % Dat: this is math-mode safe, because \ifhmode is false in math mode + \ifhmode% \ifhmode and \ifmmode are never true + \ifdim\lastskip>\z@ + \unskip\penalty\@M\kern.1em% \thinspace is .16667em + \else + \kern.1em + \fi + \fi + \string#1% + } + \magyar@activate@shorthands + \magyar@activate@char;\magyar@opt@@activespace + \declare@shorthand{\CurrentOption}{;}{\magyar@thinspaced;} + \magyar@activate@char!\magyar@opt@@activespace + \declare@shorthand{\CurrentOption}{!}{% + \ifmmode + \expandafter\ifx\csname factorial\endcsname\relax\mathchar"5021 \else\factorial\fi + \else\magyar@thinspaced!\fi} + % ^^^ compatibility with nath.sty + \magyar@activate@char?\magyar@opt@@activespace + \declare@shorthand{\CurrentOption}{?}{\magyar@thinspaced?} + \magyar@activate@char:\magyar@opt@@activespace + \declare@shorthand{\CurrentOption}{:}{\magyar@thinspaced:} + \@gobble +{^}% + + +% --- active= +% +% Dat: active=safe isn't safe unless other .ldf files used don't call +% \initiate@active@char{`}. +% +% `` `' `= `_ `-- `- `| `< `> `" `~ etc. + +\ifnum\magyar@opt@@active=0 + \ifnum\magyar@opt@@openqq>0 \@@magyar@error{active=none implies openqq=unchanged}\fi +\@@magyar@skiplong\fi + \ifnum\magyar@opt@@active>1 + \magyar@activate@shorthands% Dat: don't do it if \magyar@opt@@active=0 + \expandafter\magyar@activate@char\magyar@opt@@activeprefix\magyar@opt@@active + \fi + % + \ifnum\magyar@opt@@openqq>1 % =down + % Same as in in ukraineb.ldf + \@@magyar@declare@shorthandx`{\glqq}% down 99 \glqq is Babel's macro containing \quotedblbase + \@@magyar@declare@shorthandx'{\grqq}% up 66 + \else\ifnum\magyar@opt@@openqq>0 % =up + \@@magyar@declare@shorthandx`{\grqq}% up 66 + \@@magyar@declare@shorthandx'{\glqq}% down 99 + \else + \dMf @@magyar@shorthand@\string` {\string`\string`}% unchanged -- expect a ligature in font + \dMf @@magyar@shorthand@\string' {\string`\string'}% unchanged -- expect a ligature in font + \fi\fi + % + %** A hyphen, but hyphenation is OK at both sides + %** reported and asked by Jzsa Mrton + \@@magyar@declare@shorthandx ={\leavevmode\nobreak-\hskip\z@skip} + % ^^^ Dat: no need for \nobreak\hskip\z@skip, because of the empty discretionary + %** \shu?-- typesets an endash (--) with a small space around it (the one to + %** the right is breakable). \shu?- typesets a normal hyphen, having + %** hyphenation OK at both sides. + %** @example Kiss Eld\shu?--Nagy Pl + %** @example kzgazdasg\shu?-tudomnyi + \def\@@magyar@shorthandminus{% + \ifmmode \mskip2.4mu plus3.6mu minus1.8mu \else % ,`- is just a space in math mode + \if-\noexpand\@Lang@tmp \leavevmode\nobreak\,\nobreak\hbox{--}\,\expandafter\expandafter\expandafter\@gobble% Dat: \@gobble - + \else \leavevmode\nobreak-\hskip\z@skip\fi% Dat: e.g hegyes`-szg + \fi + } + \@@magyar@declare@shorthandx -{\futurelet\@Lang@tmp\@@magyar@shorthandminus}% + %** A hyphen that is displayed in both next and current lines. Hyphenation + %** is OK at both sides. This differs from ukraineb.ldf. + %** \showhyphens{ntrium`|klorid} -> nt-ri-um--klo-rid + \@@magyar@declare@shorthandx |{\leavevmode\nobreak-\nobreak\discretionary{}{-}{}\nobreak\hskip\z@skip}% Dat: all \nobreak s are important % e.g egyszer`|ktszer + \@@magyar@declare@shorthandx _{\leavevmode\nobreak\-\nobreak\hskip\z@skip} + \@@magyar@declare@shorthandx <{\flqq} + \@@magyar@declare@shorthandx >{\frqq} + \@@magyar@declare@shorthandx "{\hskip\z@skip}% \allowbreak, but hyphenation is OK at both sides + \@@magyar@declare@shorthandx ~{\textormath{\leavevmode\hbox{-}}{-}}% a hyphen that isn't part of ligatures -- and --- + % + % Dat: `CXY means \discretionary{CS-}{XY}{CXY}, which makes sense only for + % `CCS. But `Ccs wouldn't make sense, since there is no Hungarian word + % (whose first letter has to be capitalized) beginning with ccs. + % Dat: \nobreak\bbl@allowhyphens: \showhyphens{ho`sszabbra} -> hosz-szabb-ra + % Dat: \def\foo{`}\declare@shorthand{\CurrentOption{\foo c}{...} doesn't work + % Dat: these work quite well in math mode + % Dat: \showhyphens{a\hskip\z@skip b} displays "ab", but + % \showhyphens{a\hskip0pt b} displays "a b" + %** These should be equivalent: + %** \showhyphens{verembepot\nobreak\discretionary{y-}{}{}\nobreak\hskip\z@skip tyantam} + %** \showhyphens{verembepo`ttyantam} + \def\@@magyar@disc#1#2{#1\textormath{\nobreak\discretionary{#2-}{}{}}{}\nobreak\hskip\z@skip}% + \@@magyar@declare@shorthandx c{\@@magyar@disc cs}% loccsan --> locs-csan (lo`ccsan) + \@@magyar@declare@shorthandx C{\@@magyar@disc CS} + \@@magyar@declare@shorthandx g{\@@magyar@disc gy}% poggy\'asz --> pogy-gy\'asz (po`ggy\'asz) + \@@magyar@declare@shorthandx G{\@@magyar@disc GY} + \@@magyar@declare@shorthandx l{\@@magyar@disc ly}% Kod\'allyal --> Kod\'aly-lyal (Kod\'a`llyal) + \@@magyar@declare@shorthandx L{\@@magyar@disc LY} + \@@magyar@declare@shorthandx n{\@@magyar@disc ny}% mennyei --> meny-nyei (me`nnyei) + \@@magyar@declare@shorthandx N{\@@magyar@disc NY} + \@@magyar@declare@shorthandx s{\@@magyar@disc sz}% vissza --> visz-sza (vi`ssza) + \@@magyar@declare@shorthandx S{\@@magyar@disc SZ} + \@@magyar@declare@shorthandx t{\@@magyar@disc ty}% pottyan --> poty-tyan (po`ttyan) + \@@magyar@declare@shorthandx T{\@@magyar@disc TY} + \@@magyar@declare@shorthandx z{\@@magyar@disc zs}% rizzsel --> rizs-zsel (ri`zzsel) + \@@magyar@declare@shorthandx Z{\@@magyar@disc ZS} + \def\magyar@fixddzs{\@@magyar@declare@shorthandx d{% bridzs-dzsel + % vvv doesn't handle the rare combination dzs-dzs + %\@@magyar@declare@shorthandx D}{\@@magyar@disc DZ} + %\@@magyar@declare@shorthandx d}{\@@magyar@disc dz}% eddz\"unk (felsz. m.) --> edz-dz\"unk (e`ddz\"unk) + \def\reserved@a{% + \if\noexpand\reserved@b d% + \def\reserved@a{% + \if\noexpand\reserved@b z% + \def\reserved@a{% + \nobreak% so word before `ddzs gets hyphenated + \if\noexpand\reserved@b s% + \discretionary{dzs-}{dz}{ddz}% \showhyphens{szuper`ddzsungelben} + \else + \discretionary{dz-}{d}{dd}z% \showhyphens{szuper`ddzungelben} + \fi + \nobreak\hskip\z@skip% allow both pre- and post breaks + }% + \bbl@afterelse\expandafter\futurelet\expandafter\reserved@b\expandafter\reserved@a\@gobble + \else + \bbl@afterfi dd% + \fi + }% + \bbl@afterelse\expandafter\futurelet\expandafter\reserved@b\expandafter\reserved@a\@gobble + \else\bbl@afterfi d\fi + }% + \futurelet\reserved@b\reserved@a% doesn't remove next token + }}% + \magyar@fixddzs \expandafter\uppercase\expandafter{\magyar@fixddzs} + \@gobble +{^}% + + +% --- hunumbers= + +\ifnum\magyar@opt@@hunumbers=0 \@@magyar@skiplong\fi +\def\@@magyar@egyjegyu#1{% + \ifcase#1 \or\or k\'et\or h\'arom\or n\'egy\or \"ot\or hat\or h\'et\or + nyolc\or kilenc\fi +} +\def\@@magyar@upperfi@nine#1\fi\fi\fi\fi\fi\fi\fi\fi\fi{\fi\fi\fi\fi\fi\fi\fi\fi\fi#1} +\def\@@magyar@upperelse@nine#1\else#2\fi\fi\fi\fi\fi\fi\fi\fi\fi{\fi#1} +\def\@@magyar@uppernum#1{% + \ifx#1\"\@@magyar@upperelse@nine\"O\@gobble% \"o + \else\if\noexpand#1eE% + \else\if\noexpand#1hH% + \else\if\noexpand#1kK% + \else\if\noexpand#1mM% mnusz + \else\if\noexpand#1nN% + \else\if\noexpand#1oO% + \else\if\noexpand#1sS% sokadik + \else\if\noexpand#1tT% + \else\@@magyar@upperfi@nine\expandafter\@@magyar@uppernum#1% do an extra expansion + \fi\fi\fi\fi\fi\fi\fi\fi\fi +} +%** For \pagenumbering{huordinal}. Expands to the Hungarian ordered numeral, +%** spelled out in letters (i.e 1 --> first --> els). Suitable for numbering +%** \part{}s and \chapter{}s of a book (\def\thepart{\@Huordinal\c@part}}) +%** @param #1 a number (input for \number) in -9999..9999 +\def\@huordinal#1{% + % !! larger numbers, also for \@hunumeral + \ifnum#1=-1 m\'nusz egyedik\else + \ifnum#1=-2 m\'nusz kettedik\else + \ifnum#1<0 m\'inusz \expandafter\@huordinal\expandafter{\number-#1 }\else + \ifcase\number#1 nulladik\or els\H o\or m\'asodik\or harmadik\or negyedik\or + \"ot\"odik\or hatodik\or hetedik\or nyolcadik\or kilencedik\else + \ifnum#1>999 \expandafter\@@magyar@ezresedik\number#1.\else + \ifnum#1>99 \expandafter\@@magyar@szazasodik\number#1\else + \expandafter\@@magyar@tizesedik\number#1% + \fi\fi\fi\fi\fi\fi +} +%** @param #1#2 1000..9999 +\def\@@magyar@ezresedik#1#2.{% + \ifnum#1#2>9999 sokadik\else + \@@magyar@egyjegyu#1% + \ifnum#2=0 ezredik\else + ezer\ifnum#1>1 -\fi% ktezer-harmadik + \ifnum#2<100 + \expandafter\@@magyar@tizesedik\number#2% + \else + \ifnum#2<200 egy\fi% ezerszzadik -> ezeregyszzadik + \@@magyar@szazasodik#2% + \fi + \fi + \fi +} +%** @param #1#2 100..999 +%** Imp: binary search +\def\@@magyar@szazasodik#1#2#3{% + \@@magyar@egyjegyu#1sz\'az% + \@@magyar@tizesedik#2#3% +} +%** @param #1 a digit +%** @param #2 a digit +%** Imp: binary search +\def\@@magyar@tizesedik#1#2{% + \ifnum#1#2>89 kilencven\@@magyar@egyesedik#2e% + \else\ifnum#1#2>79 nyolcvan\@@magyar@egyesedik#2a% + \else\ifnum#1#2>69 hetven\@@magyar@egyesedik#2e% + \else\ifnum#1#2>59 hatvan\@@magyar@egyesedik#2a% + \else\ifnum#1#2>49 \"otven\@@magyar@egyesedik#2e% + \else\ifnum#1#2>39 negyven\@@magyar@egyesedik#2e% + \else\ifnum#1#2>29 harminc\@@magyar@egyesedik#2a% + \else\ifnum#1#2>20 huszon\@@magyar@egyesedik#2.% + \else\ifnum#1#2=20 huszadik% + \else\ifnum#1#2>10 tizen\@@magyar@egyesedik#2.% + \else\ifnum#1#2=10 tizedik% + \else \@@magyar@egyesedik#2a% ``ktszzadik'' + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +}% +\def\@@magyar@egyesedik#1#2{% + \ifcase#1 #2\or egye\or kette\or harma\or negye\or + \"ot\"o\or hato\or hete\or nyolca\or kilence\fi dik% +} +%** Same as \@huordinal, but uppercase +\def\@Huordinal#1{% + % Dat: \newlabel{hellopart}{{Els\H o}{3}} is correctly written out + \ifcase#1 Nulladik\or Els\H o\or M\'asodik\or Harmadik\or Negyedik\or + \"Ot\"odik\or Hatodik\or Hetedik\or Nyolcadik\or Kilencedik\or Tizedik% + \or Tizenegyedik\or Tizenkettedik\else\@@magyar@uppernum\@huordinal{#1}\fi +} +\def\huordinal#1{\expandafter\@huordinal\csname c@#1\endcsname} +\def\Huordinal#1{\expandafter\@Huordinal\csname c@#1\endcsname} + +%** For \pagenumbering{hunumeral}. Expands to the Hungarian ordered numeral, +%** spelled out in letters (i.e 1 --> first --> els). Suitable for numbering +%** \part{}s and \chapter{}s of a book (\def\thepart{\@Hunumeral\c@part}}) +%** @param #1 a number (input for \number) in -9999..9999 +\def\@hunumeral#1{% + \ifnum#1<0 m\'inusz \expandafter\@hunumeral\expandafter{\number-#1 }\else + \ifcase#1 nulla\or egy\or kett\H{o}\or h\'arom\or n\'egy\or + \"ot\or hat\or h\'et\or nyolc\or kilenc\else + \ifnum#1>999 \expandafter\@@magyar@ezer\number#1.\else + \ifnum#1>99 \expandafter\@@magyar@szaz\number#1\else + \expandafter\@@magyar@tiz\number#1% + \fi\fi\fi\fi +} +%** @param #1#2 1000..9999 +\def\@@magyar@ezer#1#2.{% + \ifnum#1#2>9999 sokadik\else + \@@magyar@egyjegyu#1% + \ifnum#2=0 ezer\else + ezer\ifnum#1>1 -\fi% ktezer-harmadik + \ifnum#2<100 + \expandafter\@@magyar@tiz\number#2% + \else + \ifnum#2<200 egy\fi% ezerszzadik -> ezeregyszzadik + \@@magyar@szaz#2% + \fi + \fi + \fi +} +%** @param #1#2 100..999 +%** Imp: binary search +\def\@@magyar@szaz#1#2#3{% + \@@magyar@egyjegyu#1sz\'az% + \@@magyar@tiz#2#3% +} +%** @param #1 a digit +%** @param #2 a digit +%** Imp: binary search +\def\@@magyar@tiz#1#2{% + \ifnum#1#2>89 kilencven\@@magyar@egy#2% + \else\ifnum#1#2>79 nyolcvan\@@magyar@egy#2% + \else\ifnum#1#2>69 hetven\@@magyar@egy#2% + \else\ifnum#1#2>59 hatvan\@@magyar@egy#2% + \else\ifnum#1#2>49 \"otven\@@magyar@egy#2% + \else\ifnum#1#2>39 negyven\@@magyar@egy#2% + \else\ifnum#1#2>29 harminc\@@magyar@egy#2% + \else\ifnum#1#2>20 huszon\@@magyar@egy#2% + \else\ifnum#1#2=20 h\'usz% + \else\ifnum#1#2>10 tizen\@@magyar@egy#2% + \else\ifnum#1#2=10 t\'iz% + \else \@@magyar@egy#2% ``ktszzadik'' + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +}% +\def\@@magyar@egy#1{% + \ifcase#1 \or egy\or kett\H{o}\or h\'arom\or n\'egy\or + \"ot\or hat\or h\'et\or nyolc\or kilenc\fi% +} +%** Same as \@hunumeral, but uppercase +\def\@Hunumeral#1{% + % Dat: \newlabel{hellopart}{{Els\H o}{3}} is correctly written out + \ifcase#1 Nulla\or Egy\or Kett\H{o}\or H\'arom\or N\'egy\or + \"Ot\or Hat\or H\'et\or Nyolc\or Kilenc\else\@@magyar@uppernum\@hunumeral{#1}\fi +} +\def\hunumeral#1{\expandafter\@hunumeral\csname c@#1\endcsname} +\def\Hunumeral#1{\expandafter\@Hunumeral\csname c@#1\endcsname} + +\@gobble +{^}% + +% --- Appending suffixes to numbers; told= + +\ifnum\magyar@opt@@told=0 \@@magyar@skiplong\fi +% Dat: double accent combinations: +adik,+a,+as,+ad +hoz,+an,+on,+at,+ban... + +% vvv Terminal suffix variants + +% Dat: meaning of classes(#1): {\ifcase 0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or 9\or 10\or 11/-1\or 12/-2\or 100\or 1000\or 10^6\or 10^9\or 20\or 30\or 40\or 60\fi} +% Dat: ...@st is is special for appending +t to \refstruc names +\def\@@magyar@suffix@adik#1{\ifnum#1=1 s\H o\else + \ifcase#1 a\or e\or o\or a\or e\or\"o\or o\or e\or a\or e\or e\or e\or e\or a\or e\or a\or a\or a\or a\or e\or a\or e\or e\fi dik\fi}% +\def\@@magyar@suffix@a#1{\ifcase #1 a\or je\or a\or a\or e\or e\or a\or e\or a\or e\or e\or e\or e\or a\or e\or a\or a\or a\or a\or e\or a\fi}% +\def\@@magyar@suffix@as#1{\ifcase #1 \or e\or e\or a\or e\or\"o\or o\or e\or a\or e\or e\or e\or e\or a\or e\or \or a\or a\or a\or e\or a\fi s}% +\def\@@magyar@suffix@ad#1{\ifcase #1 a\or e\or e\or a\or e\or\"o\or o\or e\or a\or e\or e\or e\or e\or a\or e\or a\or a\or a\or a\or e\or a\fi d}% +\def\@@magyar@suffix@@hoz#1#2{\ifcase#2 o\or e\or\"o\or o\or e\or\"o\or o\or e\or o\or e\or e\or e\or\"o\or o\or e\or o\or o\or o\or o\or e\or o\fi#1}% +\def\@@magyar@suffix@@an#1{\ifcase #1 \or e\or e\or a\or e\or e\or a\or e\or a\or e\or e\or e\or e\or a\or e\or a\or a\or a\or a\or e\or a\fi n}% +\def\@@magyar@suffix@on#1{\ifcase #1 \or e\or \or o\or e\or\"o\or o\or e\or a\or e\or e\or e\or e\or o\or e\or \or o\or o\or o\or e\or o\fi n}% +\def\@@magyar@suffix@st#1{\ifcase #1 \or \or \or \or e\or \or \or \or \or \or \or \or \or \or \or \or \or \or \or \or \fi t}% +\def\@@magyar@suffix@@at#1{\ifcase #1 \or e\or \or a\or e\or\"o\or o\or e\or a\or e\or e\or e\or \or a\or e\or \or a\or a\or a\or e\or a\fi t}% +\def\@@magyar@suffix@@a#1#2{\ifcase #2 a\or e\or e\or a\or e\or e\or a\or e\or a\or e\or e\or e\or e\or a\or e\or a\or a\or a\or a\or e\or a\fi#1}% +\def\@@magyar@suffix@nal#1{n\ifcase #1 \'a\or \'e\or \'e\or\'a\or \'e\or \'e\or\'a\or \'e\or\'a\or \'e\or \'e\or \'e\or \'e\or\'a\or \'e\or \'a\or \'a\or \'a\or\'a\or \'e\or\'a\fi l}% +\def\@@magyar@suffix@@ol#1{\ifcase #1 \'o\or\H o\or\H o\or\'o\or\H o\or\H o\or\'o\or\H o\or\'o\or\H o\or\H o\or\H o\or\H o\or\'o\or\H o\or \'o\or \'o\or \'o\or\'o\or\H o\or\'o\fi l}% +\def\@@magyar@suffix@ul#1{\ifcase #1 u\or \"u\or \"u\or u\or \"u\or \"u\or u\or \"u\or u\or \"u\or \"u\or \"u\or \"u\or u\or \"u\or u\or u\or u\or u\or \"u\or u\fi l}% +\def\@@magyar@suffix@val#1{\ifcase #1 va\or gye\or ve\or ma\or gye\or te\or ta\or te\or ca\or ce\or ze\or gye\or ve\or za\or re\or va\or da\or sza\or ca\or ne\or na\fi l}% +% @example: \atold(2.31)+es+sel{} +\def\@@magyar@suffix@sal#1{\ifcase #1 sa\or se\or se\or sa\or se\or se\or sa\or se\or sa\or se\or se\or se\or se\or sa\or se\or sa\or sa\or sa\or sa\or se\or sa\fi l}% +% @example: \atold(2.31)+ed+del{} +\def\@@magyar@suffix@dal#1{\ifcase #1 da\or de\or de\or da\or de\or de\or da\or de\or da\or de\or de\or de\or de\or da\or de\or da\or da\or da\or da\or de\or da\fi l}% +% @example: \atold(2.31)+edik+kel{} +\def\@@magyar@suffix@kal#1{\ifcase #1 ka\or ke\or ke\or ka\or ke\or ke\or ka\or ke\or ka\or ke\or ke\or ke\or ke\or ka\or ke\or ka\or ka\or ka\or ka\or ke\or da\fi l}% +\def\@@magyar@suffix@an{\@@magyar@suffix@@an}% make \ifx\@@magyar@suffix@an faster +\def\@@magyar@suffix@at{\@@magyar@suffix@@at}% make \ifx\@@magyar@suffix@at faster +\def\@@magyar@suffix@hoz{h\@@magyar@suffix@@hoz z} +\def\@@magyar@suffix@ban{b\@@magyar@suffix@@a n} +\def\@@magyar@suffix@nak{n\@@magyar@suffix@@a k} +\def\@@magyar@suffix@ba{b\@@magyar@suffix@@a \@empty} +\def\@@magyar@suffix@ra{r\@@magyar@suffix@@a \@empty} +\def\@@magyar@suffix@bol{b\@@magyar@suffix@@ol} +\def\@@magyar@suffix@tol{t\@@magyar@suffix@@ol} +\def\@@magyar@suffix@rol{r\@@magyar@suffix@@ol} +\def\@@magyar@suffix@szor{sz\@@magyar@suffix@@hoz r} + +% vvv Continued suffix variants + +\def\@@magyar@skipfi\fi\else{\fi}% +%** Usage: \@@magyar@suffix@aS{5}\magyar@@suffix@hoz +\def\@@magyar@suffix@aS#1#2{% + \ifnum#2=5 \ifx#1\@@magyar@suffix@at \"oset\else\@@magyar@skipfi\fi\else + \ifcase#2 \or e\or e\or a\or e\or \"o\or o\or e\or a\or e\or e\or e\or e\or a\or e\or \or a\or a\or a\or e\or a\fi s% + \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter + \ifx#1\@@magyar@suffix@val\@@magyar@suffix@sal\else#1\fi % +es+vel -> +es+sel + % Imp: +ad+val, +adik+val etc. + \ifcase#2 3\or 1\or 1\or 3\or 1\or 5\or 3\or 1\or 3\or 1\or 1\or 1\or 1\or 3\or 1\or 3\or 3\or 3\or 3\or 1\or 3\fi + \fi +}% +\def\@@magyar@suffix@aD#1#2{% + \ifcase#2 \or e\or e\or a\or e\or \"o\or o\or e\or a\or e\or e\or e\or e\or a\or e\or \or a\or a\or a\or e\or a\fi d% + \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter + \ifx#1\@@magyar@suffix@val\@@magyar@suffix@dal\else#1\fi % +ed+vel -> +ed+del + \ifcase#2 3\or 1\or 1\or 3\or 1\or 5\or 3\or 1\or 3\or 1\or 1\or 1\or 1\or 3\or 1\or 3\or 3\or 3\or 3\or 1\or 3\fi +}% +\def\@@magyar@suffix@adiK#1#2{% + \ifnum#2=1 \ifx#1\@@magyar@suffix@at s\"ot\else\@@magyar@skipfi\fi\else + \ifcase#2 \or e\or e\or a\or e\or \"o\or o\or e\or a\or e\or e\or e\or e\or a\or e\or \or a\or a\or a\or e\or a\fi dik% + \expandafter\expandafter\expandafter\expandafter\expandafter\expandafter + \ifx#1\@@magyar@suffix@val\@@magyar@suffix@kal\else#1\fi % +edik+vel -> +ed+kel + \ifcase#2 3\or 1\or 1\or 3\or 1\or 1\or 3\or 1\or 3\or 1\or 1\or 1\or 1\or 3\or 1\or 3\or 3\or 3\or 3\or 1\or 3\fi + \fi +}% +\def\@@magyar@suffix@A#1#2{% + \ifcase#2 \'a\or j\'e\or \'a\or \'a\or \'e\or \'e\or \'a\or \'e\or \'a\or \'e\or \'e\or \'e\or \'e\or \'a\or \'e\or \'a\or\'a\or\'a\or\'a\or\'e\or\'a\fi + \ifx#1\@@magyar@suffix@at t\else + \ifx#1\@@magyar@suffix@an n\else% Dat: suffix overload: 2-a-an => 2-n + \expandafter#1\ifcase#2 3\or 1\or 1\or 3\or 1\or 1\or 3\or 1\or 3\or 1\or 1\or 1\or 1\or 3\or 1\or 3\or 3\or 3\or 3\or 1\or 3\fi + \fi\fi +}% +\def\@@magyar@suffix@@bad#1#2{\@@magyar@error{Unknown suffix \string`#1' for \string\told}} + +% vvv Input suffix parser + +%** Also defined elsewhere. +%** @param #2 \else...\else...\fi...\fi etc. +\def\@@magyar@swaprelax#1#2\relax{#2#1} +%\def\@@magyar@swapno#1\noexpand{...} +\def\@@magyar@contn#1\relax{#1\@@magyar@told@cont{}} +\def\@@magyar@conta#1#2#3\relax{#3\noexpand#1\@@magyar@told@cont{#2}} +\def\@@magyar@badsuffix#1#2\relax{#2\noexpand\@@magyar@suffix@@bad{#1}\@@magyar@told@cont{#1}}% +\def\@@magyar@fs@#1{% + \if a\noexpand#1\@@magyar@swaprelax\@@magyar@fs@a\else + \if b\noexpand#1\@@magyar@swaprelax\@@magyar@fs@b\else + \if d\noexpand#1\@@magyar@swaprelax\@@magyar@fs@d\else + \if e\noexpand#1\@@magyar@swaprelax\@@magyar@fs@e\else + \if h\noexpand#1\@@magyar@swaprelax\@@magyar@fs@h\else + \if k\noexpand#1\@@magyar@swaprelax\@@magyar@fs@k\else + \if n\noexpand#1\@@magyar@swaprelax\@@magyar@fs@n\else + \if o\noexpand#1\@@magyar@swaprelax\@@magyar@fs@o\else + \if r\noexpand#1\@@magyar@swaprelax\@@magyar@fs@r\else + \if s\noexpand#1\@@magyar@swaprelax\@@magyar@fs@s\else + \if t\noexpand#1\@@magyar@swaprelax\@@magyar@fs@t\else + \if u\noexpand#1\@@magyar@swaprelax\@@magyar@fs@u\else + \if v\noexpand#1\@@magyar@swaprelax\@@magyar@fs@v\else + % Imp: SUXX: badsuffix doesn't work for +qal here -- fix error reporting + \@@magyar@badsuffix{#1}{}\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\relax +} +\def\@@magyar@fs@a#1{% + %\if -\noexpand#1\@@magyar@swapno\else + \if +\noexpand#1\noexpand\@@magyar@suffix@A\@@magyar@swaprelax\@@magyar@fs@\else + \if d\noexpand#1\@@magyar@swaprelax\@@magyar@fs@ad\else + \if n\noexpand#1\noexpand\@@magyar@suffix@an\@@magyar@contn\else + \if s\noexpand#1\@@magyar@swaprelax\@@magyar@fs@as\else + \if t\noexpand#1\noexpand\@@magyar@suffix@at\@@magyar@contn\else + \@@magyar@conta\@@magyar@suffix@a{#1}% + \fi\fi\fi\fi\fi\relax +} +\def\@@magyar@fs@ad#1{% + %\if -\noexpand#1\@@magyar@swapno\else + \if +\noexpand#1\noexpand\@@magyar@suffix@aD\@@magyar@swaprelax\@@magyar@fs@\else + \if i\noexpand#1\@@magyar@swaprelax\@@magyar@fs@adi\else + \@@magyar@conta\@@magyar@suffix@ad{#1}% + \fi\fi\relax +} +\def\@@magyar@fs@adi#1{% + \if k\noexpand#1\@@magyar@swaprelax\@@magyar@fs@adik\else + \@@magyar@badsuffix{adi#1}{}\fi\relax +} +\def\@@magyar@fs@adik#1{% + %\if -\noexpand#1\@@magyar@swapno\else + \if +\noexpand#1\noexpand\@@magyar@suffix@adiK\@@magyar@swaprelax\@@magyar@fs@\else + \@@magyar@conta\@@magyar@suffix@adik{#1}% + \fi\relax +} +\def\@@magyar@fs@as#1{% + %\if -\noexpand#1\@@magyar@swapno\else + \if +\noexpand#1\noexpand\@@magyar@suffix@aS\@@magyar@swaprelax\@@magyar@fs@\else + \@@magyar@conta\@@magyar@suffix@as{#1}% + \fi\relax +} +\def\@@magyar@fs@b#1{% + \if a\noexpand#1\@@magyar@swaprelax\@@magyar@fs@ba\else + \if e\noexpand#1\@@magyar@swaprelax\@@magyar@fs@ba\else + \if o\noexpand#1\@@magyar@swaprelax\@@magyar@fs@bo\else + \@@magyar@badsuffix{b#1}{}\fi\fi\fi\relax +} +\def\@@magyar@fs@ba#1{% + \if n\noexpand#1\noexpand\@@magyar@suffix@ban\@@magyar@contn\else + \@@magyar@conta\@@magyar@suffix@ba{#1}% + \fi\relax +} +\def\@@magyar@fs@bo#1{% + \if l\noexpand#1\noexpand\@@magyar@suffix@bol\@@magyar@contn\else + \@@magyar@badsuffix{bo#1}{}\fi\relax +} +\def\@@magyar@fs@d#1{% + \if a\noexpand#1\@@magyar@swaprelax\@@magyar@fs@da\else + \if e\noexpand#1\@@magyar@swaprelax\@@magyar@fs@da\else + \@@magyar@badsuffix{d#1}{}\fi\fi\relax +} +\def\@@magyar@fs@da#1{% + \if l\noexpand#1\noexpand\@@magyar@suffix@dal\@@magyar@contn\else + \@@magyar@badsuffix{da#1}{}\fi\relax +} +\def\@@magyar@fs@e#1{% + \if d\noexpand#1\@@magyar@swaprelax\@@magyar@fs@ad\else + \if s\noexpand#1\@@magyar@swaprelax\@@magyar@fs@as\else + \if t\noexpand#1\noexpand\@@magyar@suffix@at\@@magyar@contn\else + \if n\noexpand#1\noexpand\@@magyar@suffix@an\@@magyar@contn\else + \if +\noexpand#1\noexpand\@@magyar@suffix@A\@@magyar@swaprelax\@@magyar@fs@\else + %\@@magyar@badsuffix{e#1}{} + \@@magyar@conta\@@magyar@suffix@a{#1}{}% + \fi\fi\fi\fi\fi\relax +} +\def\@@magyar@fs@h#1{% + \if e\noexpand#1\@@magyar@swaprelax\@@magyar@fs@ho\else + \if o\noexpand#1\@@magyar@swaprelax\@@magyar@fs@ho\else + \@@magyar@badsuffix{h#1}{}\fi\fi\relax +} +\def\@@magyar@fs@ho#1{% + \if z\noexpand#1\noexpand\@@magyar@suffix@hoz\@@magyar@contn\else + \@@magyar@badsuffix{ho#1}{}\fi\relax +} +\def\@@magyar@fs@k#1{% + \if a\noexpand#1\@@magyar@swaprelax\@@magyar@fs@ka\else + \if e\noexpand#1\@@magyar@swaprelax\@@magyar@fs@ka\else + \@@magyar@badsuffix{k#1}{}\fi\fi\relax +} +\def\@@magyar@fs@ka#1{% + \if l\noexpand#1\noexpand\@@magyar@suffix@kal\@@magyar@contn\else + \@@magyar@badsuffix{ka#1}{}\fi\relax +} +\def\@@magyar@fs@n#1{% + \if a\noexpand#1\@@magyar@swaprelax\@@magyar@fs@na\else + \if e\noexpand#1\@@magyar@swaprelax\@@magyar@fs@na\else + \@@magyar@badsuffix{n#1}{}\fi\fi\relax +} +\def\@@magyar@fs@na#1{% + \if k\noexpand#1\noexpand\@@magyar@suffix@nak\@@magyar@contn\else + \if l\noexpand#1\noexpand\@@magyar@suffix@nal\@@magyar@contn\else + \@@magyar@badsuffix{na#1}{}\fi\fi\relax +} +\def\@@magyar@fs@o#1{% + \if d\noexpand#1\@@magyar@swaprelax\@@magyar@fs@ad\else + \if n\noexpand#1\noexpand\@@magyar@suffix@on\@@magyar@contn\else + \if s\noexpand#1\@@magyar@swaprelax\@@magyar@fs@as\else + \if t\noexpand#1\noexpand\@@magyar@suffix@at\@@magyar@contn\else + \@@magyar@badsuffix{o#1}{}\fi\fi\fi\fi\relax +} +\def\@@magyar@fs@r#1{% + \if a\noexpand#1\noexpand\@@magyar@suffix@ra\@@magyar@contn\else + \if e\noexpand#1\noexpand\@@magyar@suffix@ra\@@magyar@contn\else + \if o\noexpand#1\@@magyar@swaprelax\@@magyar@fs@ro\else + \@@magyar@badsuffix{r#1}{}\fi\fi\fi\relax +} +\def\@@magyar@fs@ro#1{% + \if l\noexpand#1\noexpand\@@magyar@suffix@rol\@@magyar@contn\else + \@@magyar@badsuffix{ro#1}{}\fi\relax +} +\def\@@magyar@fs@s#1{% + \if z\noexpand#1\@@magyar@swaprelax\@@magyar@fs@sz\else + \if a\noexpand#1\@@magyar@swaprelax\@@magyar@fs@sa\else + \if e\noexpand#1\@@magyar@swaprelax\@@magyar@fs@sa\else + \if t\noexpand#1\noexpand\@@magyar@suffix@st\@@magyar@contn\else + \@@magyar@badsuffix{s#1}{}\fi\fi\fi\fi\relax +} +\def\@@magyar@fs@sa#1{% + \if l\noexpand#1\noexpand\@@magyar@suffix@sal\@@magyar@contn\else + \@@magyar@badsuffix{sa#1}{}\fi\relax +} +\def\@@magyar@fs@sz#1{% + \if o\noexpand#1\@@magyar@swaprelax\@@magyar@fs@szo\else + \if e\noexpand#1\@@magyar@swaprelax\@@magyar@fs@szo\else + \@@magyar@badsuffix{sz#1}{}\fi\fi\relax +} +\def\@@magyar@fs@szo#1{% + \if r\noexpand#1\noexpand\@@magyar@suffix@szor\@@magyar@contn\else + \@@magyar@badsuffix{szo#1}{}\fi\relax +} +\def\@@magyar@fs@t#1{% + \if o\noexpand#1\@@magyar@swaprelax\@@magyar@fs@to\else% Dat: works even if #1 is empty + \@@magyar@conta\@@magyar@suffix@at{#1}% + \fi\relax +} +\def\@@magyar@fs@to#1{% + \if l\noexpand#1\noexpand\@@magyar@suffix@tol\@@magyar@contn\else + \@@magyar@badsuffix{to#1}{}\fi\relax +} +\def\@@magyar@fs@u#1{% + \if l\noexpand#1\noexpand\@@magyar@suffix@ul\@@magyar@contn\else + \@@magyar@badsuffix{u#1}{}\fi\relax +} +\def\@@magyar@fs@v#1{% + \if a\noexpand#1\@@magyar@swaprelax\@@magyar@fs@va\else + \if e\noexpand#1\@@magyar@swaprelax\@@magyar@fs@va\else + \@@magyar@badsuffix{v#1}{}\fi\fi\relax +} +\def\@@magyar@fs@va#1{% + \if l\noexpand#1\noexpand\@@magyar@suffix@val\@@magyar@contn\else + \@@magyar@badsuffix{va#1}{}\fi\relax +} + +% vvv Classification + +% Old: \def\@@magyar@skipor#1\or#2\fi{\fi#1}% +%** Usage: \expandafter\@@magyar@skipor\expandafter\token\ifcase ... \else ... \or\else\fi +\def\@@magyar@skipor#1\or{\@@magyar@skipelse#1\else}% +\def\@@magyar@skipelse#1\else#2\fi{\fi#1}% + +%** Usage: \@@magyar@classify@none{N}{...} +%** Reads till \vfuzz, considers the last decimal number, ignores space, +%** punctuation and the minus `-' sign. Ignores spaces, so `1 2' and `12' are +%** treated the same number. There must ne no `{' or `}' inside `...'. +%** x ends by 0..9, y ends by 1..9 below. +%** @expands to: +%** c0: 0 +%** c1: 1 +%** c2: x2 ... +%** c9: x9 +%** c10: x10 +%** c11: x1 +%** c12: x2 +%** c13: y00 +%** c14: y000 y0000 y00000 +%** c15: y000000 y0000000 y00000000 +%** c16: x000000000 +%** c17: x20 +%** c18: x30 +%** c19: x40 x50 x70 x90 +%** c20: x60 x80 +%** On error, expansion doesn't start with `c' +%** @param #1 default classification, if no (more) numbers found +%** @param #2 next token +\def\@@magyar@classify@none#1#2{% + \if\noexpand#20\@@magyar@swaprelax{\@@magyar@classify@none{c0}}\else + % Dat: smart way to test whether #1 is in 1..9: \ifnum0<0\string#1 foo\fi + \ifnum0<0\string#2 \@@magyar@swaprelax{\@@magyar@classify@single#2}\else + \if\noexpand#2- \@@magyar@swaprelax{\@@magyar@classify@neg{#1}}\else + \ifx#2\vfuzz \@@magyar@swaprelax{#1}\else% stop processing if terminating \vfuzz is found + \@@magyar@swaprelax{\@@magyar@classify@none{#1}}% find next (possibly) number + % ^^^ Dat: it is safe to call \@@magyar@swaprelax here, even if #2 contains \relax + \fi\fi\fi\fi\relax +} +\def\@@magyar@classify@neg#1#2{% + \if\noexpand#20\@@magyar@swaprelax{\@@magyar@classify@none{c0}}\else + % Dat: smart way to test whether #1 is in 1..9: \ifnum0<0\string#1 foo\fi + \ifnum0<0\string#2 \@@magyar@swaprelax{\@@magyar@classify@singleneg#2}\else + \if\noexpand#2- \@@magyar@swaprelax{\@@magyar@classify@none{#1}}\else% double negation + \ifx#2\vfuzz \@@magyar@swaprelax{#1}\else% stop processing if terminating \vfuzz is found + \@@magyar@swaprelax{\@@magyar@classify@none{#1}}% find next (possibly) number, start as positive + % ^^^ Dat: it is safe to call \@@magyar@swaprelax here, even if #2 contains \relax + \fi\fi\fi\fi\relax +} +%** @param #1 previous digit 1..9 +%** @param #2 next token +\def\@@magyar@classify@single#1#2{% + \if\noexpand#20\@@magyar@swaprelax{\@@magyar@classify@tens#1}\else + \ifnum0<0\string#2 \@@magyar@swaprelax{\@@magyar@classify@more#2}\else + \ifx#2\vfuzz \@@magyar@swaprelax{c#1}\else + \@@magyar@swaprelax{\@@magyar@classify@none{c#1}#2}% + % ^^^ Dat: it is safe to call \@@magyar@swaprelax here, even if #2 contains \relax + \fi\fi\fi\relax +} +%** @param #1 previous digit 1..9 +%** @param #2 next token +\def\@@magyar@classify@singleneg#1#2{% + \if\noexpand#20\@@magyar@swaprelax{\@@magyar@classify@tens#1}\else + \ifnum0<0\string#2 \@@magyar@swaprelax{\@@magyar@classify@more#2}\else + \ifx#2\vfuzz \@@magyar@swaprelax{c\ifcase#1 0\or11\or12\else#1\fi}\else % turn `-1' -> `11' and `-2' to `12' + \if#11\@@magyar@swaprelax{\@@magyar@classify@neg{c11}#2}\else + \if#12\@@magyar@swaprelax{\@@magyar@classify@neg{c12}#2}\else + \@@magyar@swaprelax{\@@magyar@classify@neg{c#1}#2}% + % ^^^ Dat: it is safe to call \@@magyar@swaprelax here, even if #2 contains \relax + \fi\fi\fi\fi\fi\relax +} +%** @param #1 previous digit 1..9 +%** @param #2 next token +\def\@@magyar@classify@more#1#2{% + \if\noexpand#20\@@magyar@swaprelax{\@@magyar@classify@tens#1}\else + \ifnum0<0\string#2 \@@magyar@swaprelax{\@@magyar@classify@more#2}\else + \@@magyar@swaprelax{% + \expandafter\@@magyar@skipor\expandafter\@@magyar@classify@none + \ifcase#1 M\or {c11}\or {c12}\else {c#1}\or\else\fi#2}% + % ^^^ Dat: it is safe to call \@@magyar@swaprelax here, even if #2 contains \relax + \fi\fi\relax +} +%** @param #1 prev-prev digit, 1..9 +%** @param #2 next token +\def\@@magyar@classify@tens#1#2{% + \if\noexpand#20\@@magyar@swaprelax{\@@magyar@classify@zeroes2}\else + \ifnum0<0\string#2 \@@magyar@swaprelax{\@@magyar@classify@more#2}\else + \@@magyar@swaprelax{% + \expandafter\@@magyar@skipor\expandafter\@@magyar@classify@none + \ifcase#1 T\or{c10}\or{c17}\or{c18}\or{c19}\or{c19}\or{c20}\or{c19}\or{c20}\else{c19}\or\else\fi#2}% + % ^^^ Dat: it is safe to call \@@magyar@swaprelax here, even if #2 contains \relax + \fi\fi\relax +} +%** @param #1 zero-count 2..9 +%** @param #2 next token +\def\@@magyar@classify@zeroes#1#2{% + \if\noexpand#20\@@magyar@swaprelax{% + %\def\foo#1,{.(#1)} + %\message{\expandafter\expandafter\expandafter\foo\expandafter + % \@@magyar@skipor\ifcase3 zero\or one\or two\else three\or\fi,done} + \expandafter\@@magyar@skipor\expandafter\@@magyar@classify@zeroes + %\ifcase#1 Y\or Y\or 3\or 4\or 5\or 6\or 7\or 8\or 9\or 9\or% Dat: no \else + \ifcase#1 Y\or Y\or 3\or 4\or 5\or 6\or 7\or 8\else 9% + \or\else\fi}\else% ^^^ Dat: 2 -> 3 ... 8 -> 9, 9 -> 9 + \ifnum0<0\string#2 \@@magyar@swaprelax{\@@magyar@classify@more#2}\else + \@@magyar@swaprelax{% + \expandafter\@@magyar@skipor\expandafter\@@magyar@classify@none + \ifcase#1 Z\or Z\or {c13}\or {c14}\or {c14}\or {c14}\or {c15}\or {c15}\or + {c15}\else {c16}\or\else\fi#2}% + % ^^^ Dat: it is safe to call \@@magyar@swaprelax here, even if #2 contains \relax + \fi\fi\relax +} + +% vvv The user interface for suffixing + +\def\@@magyar@ccheck#1#2\vfuzz#3{% + \if\noexpand#1c\relax\else + \@@magyar@error{\string\told\space needs number, not \string`#3'}% + \def\reserved@a{c0}% + \fi +} + +%** Expands #1 with \the if it is \cs (possibly \count or \toks etc.) +\def\@@magyar@the#1{% + \ifx#1\relax\else\if\noexpand\noexpand\noexpand#1% + \expandafter\expandafter\expandafter\the\fi\fi#1% +}% + +\def\@@magyar@firsthfuzz#1#2\hfuzz{#1} +\def\@@magyar@secondhfuzz#1#2#3\hfuzz{#2} +%** See docs in magyar.dtx +\def\@@magyar@zerocite#1{% + \ifx[#1\expandafter\@secondoftwo\fi\@thirdofthree\@firstoftwo + {\@@magyar@zerocite@lowa[, }% had `[' + {\@@magyar@zerocite@lowa[]{#1}}% +} +\def\@@magyar@zerocite@lowa[#1]#2{[\@@magyar@zerocite@lowb#2,\hbox,${#1}} +\def\@@magyar@swapvfuzz#1#2\vfuzz{#2#1} +\def\@@magyar@zerocite@lowb#1#2,{% + \ifx\hfuzz#1\hfuzz + \else\ifx\hbox#1\@@magyar@swapvfuzz\@@magyar@zerocite@lowc + \else\ifx,#1\@@magyar@swapvfuzz\@@magyar@zerocite@lowb{#2,}% + \else\expandafter\ifx\csname b@#1#2\endcsname\relax + 0, \@@magyar@swapvfuzz\@@magyar@zerocite@lowb + \else\expandafter\expandafter\expandafter\@@magyar@b@number + \expandafter\expandafter\expandafter{\csname b@#1#2\endcsname}, + \@@magyar@swapvfuzz\@@magyar@zerocite@lowb + \fi\fi\fi\fi\vfuzz} +\def\@@magyar@zerocite@lowc$#1{]#1} + +%** Expands to the numeric value of a \b@foobar definition +%** Dat: with natbib.sty, we get \def\b@foobar{{1}{...}...}, +%** otherwise something like \def\b@foobar{\... 1} +%** @param #1 value of a \b@foobar +\def\@@magyar@b@number{% + \expandafter\ifx\csname ver@natbib.sty\endcsname\relax + \expandafter\@firstofone + \else \expandafter\@@magyar@b@number@natbibone \fi +} +\def\@@magyar@b@number@natbibone#1{\@@magyar@b@number@natbibtwo#1.\vfuzz} +\def\@@magyar@b@number@natbibtwo#1#2\vfuzz{#1}% + +\def\@@magyar@zeroaref#1{% + % Dat: we cannot use \@ifnextchar here, because it is not expandable + \ifx(#1\expandafter\@secondoftwo\fi\@thirdofthree\@firstoftwo + {\@@magyar@zeroref}{% Dat: gobble the ( + \ifx*#1\expandafter\@secondoftwo\fi\@thirdofthree\@firstoftwo + {\NotAllowedArefStar\@@magyar@zeropageref}% Dat: gobble the * + {\@@magyar@zeroref{#1}}% + {\@@magyar@zeroref{#1}}}% +} + +\def\@@magyar@zeroapageref#1{% + % Dat: we cannot use \@ifnextchar here, because it is not expandable + \ifx*#1\expandafter\@secondoftwo\fi\@thirdofthree\@firstoftwo + {\NotAllowedApagerefStar\@@magyar@zeropageref}% Dat: gobble the * + {\@@magyar@zeropageref{#1}}% +} + +\def\@@magyar@zeroref#1{% + \expandafter\ifx\csname r@#1\endcsname\relax0\else + \expandafter\expandafter\expandafter\@@magyar@firsthfuzz\csname r@#1\endcsname00\hfuzz + \fi +}% +\def\@@magyar@zeroeqref#1{(\@@magyar@zeroref{#1})}% +\def\@@magyar@zerorefplus#1{\@@magyar@zerorefplus@low#1+\vfuzz} +\def\@@magyar@zerorefplus@low#1+#2\vfuzz{% + \expandafter\ifx\csname r@#1\endcsname\relax0\else + \expandafter\expandafter\expandafter\@@magyar@firsthfuzz\csname r@#1\endcsname00\hfuzz + \fi +}% +\def\@@magyar@zeropageref#1{% + \expandafter\ifx\csname r@#1\endcsname\relax0\else + \expandafter\expandafter\expandafter\@@magyar@secondhfuzz\csname r@#1\endcsname00\hfuzz + \fi +}% + +%** A space might be discared after the suffix, depending on the suffix. So +%** please use `\told5+adik{} ' to ensure the space. +%** May raise `! Package magyar.ldf Error: Unknown suffix `...' for \told', but +%** emits unchanged suffix to DVI file. +%** \atold\apageref emits double article +%** \cite, \acite etc. is allowed, but without comma +%** \aref({...}), \aref*, \apageref*, \acite* aren't allowed +%** \refstruc doesn't work inside it, because \refstruc isn't expandable +%** @example \told4+a+a+a+a+adik raises strange error +%** @example no -en is provided for -an/-on, to avoid ambiguity +%** @example \told4+adik: 0-adik 1-s 2-odik 3-adik 12-edik 10^8-adik +%** @example augusztus \told20-a: 1-je 2-a 3-a 4-e 5-e 6-a ... (augusztus 20-a) +%** @example \told3+as: 0-s(??) 1-es 2-es 3-as 4-es 5-s 10^6-s +%** @example \told0+ad: 0-ad 1-ed 2-ed 3-ad 5-d 10^6-ad +%** @example \told1000+hoz: 0-hoz 3-hoz 6-hoz 8-hoz 100-hoz 10^6-hoz 10^9-hoz 1-hez 4-hez 7-hez 9-hez 10-hez 1000-hez 2-hz 5-hz +%** @example \told5+an: 5-en 2-en 100-an 10^6-n +%** @example \told5+on: 5-n 2-n 3-on 100-on 10^6-n +%** @example \told0+at: 0-t 2-t 10^6-t 1-et 4-et 7-et 9-et 10-et 1000-et 3-at 8-at 6-ot 10^9-ot 5-t +%** @example \told1000+ban: 1000-ben +%** @example \told7+ba: 7-be +%** @example \told5+nak: 7-nek +%** @example \told2+ra: 2-re +%** @example \told4+nal: 4-nl +%** @example \told7+bol: 7-bl +%** @example \told5+tol: 5-tl +%** @example \told3+rol: 3-rl +%** @example \told2+ul: 0-ul 1-l 2-l 3-ul +%** @example \told5+odik+hoz +%** @example \told{300}+szor +%** @example -i and -ig don't change have alternate forms +%** @param #1 something that expands to an integer, or `\count...' or `\toks...' +\DeclareRobustCommand \@@magyar@told{\@@magyar@xtold 0} +\DeclareRobustCommand\@@magyar@atold{\@@magyar@xtold a} +\DeclareRobustCommand\@@magyar@Atold{\@@magyar@xtold A} +\def\@@magyar@xtold#1#2+{\@@magyar@told@low{#2}#1} +%** @param #1 something that expands to an integer, or `\count...' or `\toks...' +%** @param #2 add \az? (0: no, a: lowercase A: uppercase) +\def\@@magyar@told@low#1#2{% + % Dat: a level of braces has already been stripped from #1 + % Dat: negative sign isn't important, because it is skipped by \@@magyar@classify@none + \begingroup\begingroup + \@safe@activestrue% allow active `:' inside labels + \let\@safe@activesfalse\@empty \let\@safe@activestrue\@empty% inside \b@... emitted by \cite + % vvv Dat: gobbles its arg and `-' below + % `\@@magyar@toldas{42}' must be the very end of #1 + \let\@@magyar@toldas\@gobbletwo + \let\-\relax +% \let\@@magyar@save@tilde~% + \let~\relax% influenced by \@safe@activestrue + \let\refstruc\relax \let\refstrucparen\relax + \let \ref\relax \let \pageref\relax \let \cite\relax % all unexpandable, even for \@@magyar@the + \let\aref\relax \let\apageref\relax \let\acite\relax + \let\Aref\relax \let\Apageref\relax \let\Acite\relax + \let\autoref\relax + \let\hbox\@firstofone % Make \hbox{...} work by removing the braces. TODO(pts): Make \hbox to...{...} work. + \let\@@magyar@told@optdot\@empty % The optional dot disappears. + %\set@display@protect% \string. Why?? doesn't seem to screw up \r + \set@typeset@protect% \relax. + \edef\reserved@c{#1-}% + \edef\reserved@c{\def\noexpand\reserved@c{\expandafter\@@magyar@the\reserved@c\@empty}}% `\expandafter' is here so `the' and `number' take place + % + \def\@@magyar@toldas##1{.##1.}% emit the number + \let\romannumeral\number + \def\refstruc##1{0}% + \def\refstrucparen##1{0}% + \let\@safe@activestrue\@empty% babel puts these inside \b@...: % Dat: \def\b@abook{\@safe@activesfalse 2}% (what is \@safe@actives??) + \let\@safe@activesfalse\@empty% \b@DuplanJauneau1986 ->\@safe@activesfalse 15 + \def\hyper@@link[##1]##2##3##4{##4}% Dat: \def\b@abook{\hyper@@link [cite]{}{cite.sokt}{2}}% with hyperref.sty % BUGFIX at Tue Nov 21 03:15:32 CET 2006 + % + \let\ref\@@magyar@zeroref + \let\pageref\@@magyar@zeropageref + \let\cite\@@magyar@zerocite + \let\eqref\@@magyar@zeroeqref + % + \let\aref\@@magyar@zeroaref \let\Aref\aref % Dat: supports \aref* and \aref( + \let\apageref\@@magyar@zeroapageref \let\Apageref\apageref % Dat: supports \apageref* and \apageref( + \let\acite\cite \let\Acite\acite + % + \let\autoref\ref% Dat: SUXX: ``section 1-gyel'' + \edef\reserved@a{#1}% + \edef\reserved@a{\expandafter\@@magyar@the\reserved@a\@empty}% `\expandafter' is here so `the' and `number' take place + %\let~\@@magyar@save@tilde% vvv for ~ below etc. + \if0#2\else + #2% a or A + % vvv Dat: we do \az with \romannumeral changed to \number + \expandafter\@@magyar@az@set\expandafter{\reserved@a}\hbox$% Dat: \reserved@a is already expanded, as required by \@@magyar@az@set + \nobreakspace% Dat: `~' is wrong here, it has been redefined !! + \fi + \edef\reserved@a{\noexpand\reserved@c\def\noexpand\reserved@a{\reserved@a}}% + % + \expandafter\expandafter\expandafter\endgroup\reserved@a% keep \reserved@a and \reserved@c + %%\show\reserved@a \show\reserved@c \show\@@magyar@toldas + % vvv Dat: shows friendly LaTeX error: \told{\refstruc{refstruc=}}+ban + \def\refstruc{\@@magyar@error{Cannot use \string\refstruc\space inside \string\told}\@@magyar@refstruc}% + \edef\reserved@a{\expandafter\@@magyar@classify@none\expandafter N\reserved@a\vfuzz}% + %%\show\reserved@a + \expandafter\@@magyar@ccheck\reserved@a..\vfuzz\reserved@c% + %\edef\reserved@a{{\ifcase\expandafter\@gobble\reserved@a\space 0\or1\or2\or + % 3\or4\or5\or6\or7\or8\or9\or10\or11\or12\or13\or14\or15\or16\or + % 8\or8\else 9\fi}}% 20->8 30->8 40->9 % no need for this anymore + \edef\reserved@a{{\number\expandafter\@gobble\reserved@a}}% keeps 17,18,19 for +val + \expandafter\edef\expandafter\reserved@b\expandafter{\if}.\fi\@@magyar@fs@ +} +\def\@@magyar@told@optdot{.} +%** @in \reserved@a is suffix classification in braces: {0}, {1} ... or {16} +%** @param #1 \@empty or a char token +\def\@@magyar@told@cont#1{% + \reserved@a% add the suffix class, example: {11} + #1%\if/\noexpand#1\else#1\fi% add extra char unless `/' + \if{.\fi}% close \edef\reserved@b opened in \@@magyar@told + % Now: example \reserved@b: \@@magyar@suffix@aS \@@magyar@suffix@sal {11} + % Now: example \reserved@b: \@@magyar@suffix@aS \@@magyar@suffix@val {11} + % Dat: \reserved@b is now like \@@magyar@suffix@A \@@magyar@suffix@ban + % vvv Dat: \aref in \reserved@c may modify \reserved@b, so we call it + % late by \expandafter + \expandafter\reserved@c% print the number and the hyphen + \reserved@b% print the suffix + \endgroup +} +% Dat: \told is an unused \cs in LaTeX and its standard packages +\ifnum\magyar@opt@@told>1 + \let \told\@@magyar@told + \let\atold\@@magyar@atold + \let\Atold\@@magyar@Atold +\else + \expandafter\ifx\csname told\endcsname\relax \let \told\@@magyar@told\fi + \expandafter\ifx\csname atold\endcsname\relax \let\atold\@@magyar@atold\fi + \expandafter\ifx\csname Atold\endcsname\relax \let\Atold\@@magyar@Atold\fi +\fi +\@gobble +{^}% + +% --- hutoday= + +% Dat: latex.ltx has \edef for \today, but we have \def +\def\SafeToday{\the\year/\two@digits{\the\month}/\two@digits{\the\day}:% + \two@digits{\the\count@}:\two@digits{\the\count2}} + +\ifnum\magyar@opt@@hutoday=0 \@namedef{date\CurrentOption}{\let\today\SafeToday}\@@magyar@skiplong\fi +%** Same as what latex.ltx has. Expansion doesn't change it, doesn't contain +%** accents. +\@namedef{date\CurrentOption}{% + \def\today{% + \number\year.~\ifcase\month\or + janu\'ar\or febru\'ar\or m\'arcius\or + \'aprilis\or m\'ajus\or j\'unius\or + j\'ulius\or augusztus\or szeptember\or + okt\'ober\or november\or december\fi + \space\number\day.\hbox{}}% + } +% vvv Dat: ondate... and \ontoday is specific to magyar.ldf +\@namedef{ondate\CurrentOption}{% + \number\year.~\ifcase\month\or janu\'ar\or febru\'ar\or m\'arcius\or + \'aprilis\or m\'ajus\or j\'unius\or j\'ulius\or augusztus\or szeptember\or + okt\'ober\or november\or december\fi\space\ifcase\day\or + 1-j\'en\or 2-\'an\or 3-\'an\or 4-\'en\or 5-\'en\or + 6-\'an\or 7-\'en\or 8-\'an\or 9-\'en\or 10-\'en\or + 11-\'en\or 12-\'en\or 13-\'an\or 14-\'en\or 15-\'en\or + 16-\'an\or 17-\'en\or 18-\'an\or 19-\'en\or 20-\'an\or + 21-\'en\or 22-\'en\or 23-\'an\or 24-\'en\or 25-\'en\or + 26-\'an\or 27-\'en\or 28-\'an\or 29-\'en\or 30-\'an\or + 31-\'en\fi} +\edef\reserved@a{% + \noexpand\addto\expandafter\noexpand\csname extras\CurrentOption\endcsname{% + \noexpand\babel@save\noexpand\ontoday + \let\noexpand\ontoday\expandafter\noexpand\csname ondate\CurrentOption\endcsname} +} +\reserved@a +\@gobble +{^}% + +% --- refstruc= + +\if0\magyar@opt@@refstruc \@@magyar@skiplong\fi +\def\@@magyar@nonumbers@skipa#1\@@magyar@nonumbers@s{#1\@@magyar@nonumbers@a} +%** Changes arabic and roman numbers to 1 or i, respectively. +%** Usage: \typeout{((\@@magyar@nonumbers@a 35.2.iv\hfuzz))} -> ((1.1.i)) +\def\@@magyar@nonumbers@a#1{% + \ifx#1\hfuzz \expandafter\@gobble + \else\if\noexpand#101% !! Imp: 1<1\string#1 + \else\if\noexpand#111% + \else\if\noexpand#121% + \else\if\noexpand#131% + \else\if\noexpand#141% + \else\if\noexpand#151% + \else\if\noexpand#161% + \else\if\noexpand#171% + \else\if\noexpand#181% + \else\if\noexpand#191% + \else\if\noexpand#1mi% + \else\if\noexpand#1di% + \else\if\noexpand#1ci% + \else\if\noexpand#1li% + \else\if\noexpand#1xi% + \else\if\noexpand#1vi% + \else\if\noexpand#1ii% + \else\if\noexpand#1MI% + \else\if\noexpand#1DI% + \else\if\noexpand#1CI% + \else\if\noexpand#1LI% + \else\if\noexpand#1XI% + \else\if\noexpand#1VI% + \else\if\noexpand#1II% + \else\noexpand#1\@@magyar@nonumbers@skipa + \fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi \fi + \@@magyar@nonumbers@s +} +\def\@@magyar@nonumbers@s#1{% + \ifx#1\hfuzz \expandafter\@gobble + \else\if\noexpand#10% + \else\if\noexpand#11% + \else\if\noexpand#12% + \else\if\noexpand#13% + \else\if\noexpand#14% + \else\if\noexpand#15% + \else\if\noexpand#16% + \else\if\noexpand#17% + \else\if\noexpand#18% + \else\if\noexpand#19% + \else\if\noexpand#1m% + \else\if\noexpand#1d% + \else\if\noexpand#1c% + \else\if\noexpand#1l% + \else\if\noexpand#1x% + \else\if\noexpand#1v% + \else\if\noexpand#1i% + \else\if\noexpand#1M% + \else\if\noexpand#1D% + \else\if\noexpand#1C% + \else\if\noexpand#1L% + \else\if\noexpand#1X% + \else\if\noexpand#1V% + \else\if\noexpand#1I% + \else\noexpand#1\@@magyar@nonumbers@skipa + \fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi \fi + \@@magyar@nonumbers@s +} + +\let\@@magyar@toldas\@gobble +\def\@@magyar@strucname@part{r\'esz\@@magyar@toldas{4}}% SUXX: may not contain \-; !! rsszel (vs. rszszel) +\def\@@magyar@strucname@chapter{fejezet\@@magyar@toldas{9}}% !! fejezettel +\def\@@magyar@strucname@appendix{f\"ug\-gel\'ek\@@magyar@toldas{4}}% !! fuggelekkel +\def\@@magyar@strucname@section{szakasz\@@magyar@toldas{20}}% +\def\@@magyar@strucname@subsection{al\-sza\-kasz\@@magyar@toldas{20}}% +\def\@@magyar@strucname@subsubsection{al\-al\-szakasz\@@magyar@toldas{20}}% +\def\@@magyar@strucname@subsubsubsection{al\-al\-al\-szakasz\@@magyar@toldas{20}}% +\def\@@magyar@strucname@paragraph{bekezd\'es\@@magyar@toldas{4}}% +\def\@@magyar@strucname@subparagraph{albekezd\'es\@@magyar@toldas{4}}% +\def\@@magyar@strucname@subsubparagraph{alalbekezd\'es\@@magyar@toldas{4}}% +\def\@@magyar@strucname@figure{\'ab\-ra\@@magyar@toldas{4}}% !! brban etc. +\def\@@magyar@strucname@table{t\'ab\-l\'azat\@@magyar@toldas{6}}% +\def\@@magyar@strucname@equation{egyenlet\@@magyar@toldas{7}}% +\def\@@magyar@strucname@footnote{l\'ab\-jegy\-zet\@@magyar@toldas{7}}% +\def\@@magyar@strucname@item{elem\@@magyar@toldas{4}}% !! elemmel etc. +\def\@@magyar@strucname@FancyVerbLine{sor\@@magyar@toldas{8}}% !! sorral +\def\@@magyar@strucname@theorem{t\'e-tel\@@magyar@toldas{4}}% !! ttellel + +%** Must be expandable. +%** @param #1 `section' etc. +%** @expands to its name in English +\def\@@magyar@strucname#1{#1} +%** @param #1 `section' etc. +%** @expands to its name in Hungarian +\def\@@magyar@strucname@hu#1{\csname @@magyar@strucname@#1\endcsname} + +%** Keeps only structure number, discards page number etc. +\def\@@magyar@refstruc@parse#1#2\vfuzz{% + \ifx\relax#1\let\reserved@a\relax + \else\def\reserved@a{#1}\fi +}% +%** Retrieves the structure name (arg #4) from arg 2 of a \newlabel emitted +%** by hyperref.sty. +%** @example \newlabel{fig:vonal}{{1}{1}{my title}{figure.1}{}} +%** \@namedef{r@fig:vonal}{{1}{1}{my title}{figure.1}{}} +%** -> extract `figure' to \reserved@c +\def\@@magyar@refstruc@parsehyname#1#2#3#4#5\vfuzz{% + \ifx\relax#1% + \else\expandafter\@@magyar@refstruc@parsehynamedot#4\vfuzz\fi +}% +\def\@@magyar@refstruc@parsehynamedot#1.#2\vfuzz{% + \expandafter\ifx\csname @@magyar@strucname@#1\endcsname\relax + \else\def\reserved@c{#1}\fi +} + +%** @param #1 name of a count register (e.g c@part) +\def\@@magyar@refstruc@setcnt#1{% + \expandafter\ifx\csname#1\endcsname\relax\expandafter\@tempcnta + \else\csname#1\endcsname\fi +}% + +%** @param #1 a label name +\def\@@magyar@refstruc@ref#1{% + \ref{#1}.~% +} + +%** May not touch \reserved@a +\def\@@magyar@refstruc@split#1+#2\vfuzz#3{% + \if\noexpand#30\else\@@magyar@refstruc@ref{#1}\fi + \ifx\vfuzz#2% + \textbf{??}% + \G@refundefinedtrue + \else + \begingroup + \@safe@activestrue% so active `:' etc. will work inside \csname... + \edef\reserved@c{\noexpand\@@magyar@refstruc@splitlow + \expandafter\ifx\csname r@#1\endcsname\relax\relax\else + \expandafter\noexpand\csname r@#1\endcsname\fi}% + % ^^^ Dat: would emit `undefined' instead of `\relax' w/o \ifx + \expandafter\endgroup\reserved@c{#2}% + \fi +} + +%** @param #1 csname \r@foo:bar +%** @param #2 suffix to add +\def\@@magyar@refstruc@splitlow#1#2{% + \ifx#1\relax + \textbf{??+#2}% + \G@refundefinedtrue + \else + \expandafter\@@magyar@refstruc@parse#1..\vfuzz% + \@@magyar@refstruc@work#1% + \let\@@magyar@save@m\-% + \let\-\relax + \let\@@magyar@toldas\relax + \edef\reserved@c{\expandafter\@@magyar@strucname\expandafter{\reserved@c}}% + \let\-\@@magyar@save@m + \let\@@magyar@suffix@at\@@magyar@suffix@st% fix the -t suffix + \ifx\reserved@b\@empty\else + \@@magyar@refstruc@splitb#2\vfuzz% strip `+' from the end of #2 + \fi + \fi +} + +\def\@@magyar@refstruc@splitb#1+\vfuzz{% + \expandafter\@@magyar@told\reserved@c+#1{}% fejezet -> fejezetben +} + +%** The +val suffix does not produce the desired result. +%** @param #1 \ref id or with \told +%** (@param #2 1 to prefix with 1\ref{...}.~' in Hungarian order) +%** @example \refstruc{sec:foo} +%** @example \refstruc{sec:foo+as+an} +%** May not touch \reserved@a +\def\@@magyar@refstruc@name#1{% + \begingroup + \begingroup + \@safe@activestrue% so active `:' etc. will work inside \csname... + \edef\reserved@c{\noexpand\@@magyar@refstruc@namelow + \expandafter\ifx\csname r@#1\endcsname\relax\relax\else + \expandafter\noexpand\csname r@#1\endcsname\fi}% + % ^^^ Dat: would emit `undefined' instead of `\relax' w/o \ifx + \expandafter\endgroup\reserved@c{#1}% +} + +%** @param #1 csname \r@foo:bar +%** @param #2 foo:bar +%** @param #3 1 to prefix with 1\ref{...}.~' in Hungarian order) +\def\@@magyar@refstruc@namelow#1#2#3{% + \ifx#1\relax + \@@magyar@refstruc@split#2+\vfuzz#3% ends by +suffix, needs \told + \else + \expandafter\@@magyar@refstruc@parse#1..\vfuzz% sets \reserved@a to ref target + %%\show\reserved@a% first arg of ref, i.e section number, eg. `1.2.3' -- or \relax + \if\noexpand#30\else + \begingroup% Dat: \ref might redefine \reserved@a, especially in hyperref.sty + \@@magyar@refstruc@ref{#2}\endgroup\fi + \@@magyar@refstruc@work#1% + \expandafter\@@magyar@strucname\expandafter{\reserved@c}% + \fi + \endgroup +} + +\def\@@magyar@appendix@chapapp{\appendixname}% + +%** Input is \reserved@a, output is \reserved@c +%** @param #1 the control sequence \r@foo:bar +\def\@@magyar@refstruc@work#1{% + \edef\reserved@a{\expandafter\@@magyar@nonumbers@a\reserved@a\hfuzz}% + %\expandafter\lowercase\expandafter{\expandafter\def\expandafter\reserved@a\expandafter{\reserved@a}}% + % ^^^ Dat: don't do lowercasing, deliberately. + % Imp: referring from \@alph sections such as the appendix + \@@magyar@refstruc@setcnt{c@part}1 + \@@magyar@refstruc@setcnt{c@chapter}1 + \@@magyar@refstruc@setcnt{c@section}1 + \@@magyar@refstruc@setcnt{c@subsection}1 + \@@magyar@refstruc@setcnt{c@subsubsection}1 + \@@magyar@refstruc@setcnt{c@subsubsubsection}1 + \@@magyar@refstruc@setcnt{c@paragraph}1 + \@@magyar@refstruc@setcnt{c@subparagraph}1 + \@@magyar@refstruc@setcnt{c@subsubparagraph}1 + \let\reserved@c\relax + \expandafter\@@magyar@refstruc@parsehyname#1....\vfuzz% + \ifx\reserved@c\relax% hyperref.sty and nameref.sty has helped us + \def\reserved@c{subsubparagraph}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{subparagraph}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{paragraph}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{subsubsubsection}\edef\reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{subsubsection}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{subsection}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{section}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{chapter}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{appendix}\edef \reserved@b{\expandafter\ifx\csname c@chapter\endcsname\relax\else\@Alph\c@chapter\fi}\ifx\reserved@a\reserved@b\else% Imp: do this without changing counters in \appendix + \def\reserved@c{part}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + %%\show\@chapapp \show\@@magyar@appendix@chapapp + \ifx\@chapapp\@@magyar@appendix@chapapp% we're in an appendix referring to a normal chapter + \def\thechapter{\@arabic\c@chapter}\fi + \def\reserved@c{subsubparagraph}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{subparagraph}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{paragraph}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{subsubsubsection}\edef\reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{subsubsection}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{subsection}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{section}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + \def\reserved@c{chapter}\edef \reserved@b{\csname the\reserved@c\endcsname}\ifx\reserved@a\reserved@b\else + % + \@latex@error{Unknown structure level for ref \string`\reserved@a'; + \reserved@b}\@ehc% + \def\reserved@c{??}% Dat: must be expandable + \let\reserved@b\@empty + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi +} + +\def\@@magyar@refstruc@hu#1{\@@magyar@refstruc@name{#1}1}% +% Imp: Undocumented: \refstrucparen can be used instead of \refstruc +% to format the section number inside parentheses. +\def\@@magyar@refstrucparen@hu#1{% + \begingroup + \def\@@magyar@refstruc@ref##1{\told(\ref{##1})+es{}~}% + \@@magyar@refstruc@name{#1}1% + \endgroup}% +\def\@@magyar@refstruc#1{\@@magyar@refstruc@name{#1}0~\ref{#1}}% +\def\@@magyar@refstrucparen#1{\@@magyar@refstruc@name{#1}0~(\ref{#1})}% + +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\@@magyar@refstruc + \babel@save\@@magyar@strucname + \let\@@magyar@refstruc \@@magyar@refstruc@hu + \let\@@magyar@refstrucparen \@@magyar@refstrucparen@hu + \let\@@magyar@strucname\@@magyar@strucname@hu +} + +\ifnum\magyar@opt@@refstruc \expandafter\ifx\csname refstruc\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \DeclareRobustCommand\refstruc{\@@magyar@refstruc}% + \DeclareRobustCommand\refstrucparen{\@@magyar@refstrucparen}% +\fi +\@gobble +{^} + +% --- Printing dates; emitdate= + +\ifnum\magyar@opt@@emitdate=0 \@@magyar@skiplong\fi +%** @param #1 1..12 (month number) +\def\@@magyar@month@a#1{\two@digits{#1}}% +\def\@@magyar@month@b#1{\ifcase#1\or janu\'ar\or febru\'ar\or m\'arcius\or + \'aprilis\or m\'ajus\or j\'unius\or j\'ulius\or augusztus\or szeptember\or + okt\'ober\or november\or december\fi}% +\def\@@magyar@month@c#1{\ifcase#1\or jan\or feb\or m\'arc\or + \'apr\or m\'aj\or j\'un\or j\'ul\or aug\or szept\or + okt\or nov\or dec\fi.\hbox{}}% +\def\@@magyar@month@d#1{\@Roman{#1}}% + +\def\@@magyar@four@digits#1{% + \ifnum#1<10 000\else\ifnum#1<100 00\else\ifnum#1<1000 0\fi\fi\fi\number#1% +} + +\def\@@magyar@date@a#1#2#3{#1-\@@magyar@month@a{#2}-\two@digits{#3}} +\def\@@magyar@date@b#1#2#3{#1.~\@@magyar@month@b{#2} \number#3\@@magyar@told@optdot\hbox{}}% Dat: \hbox is to force \frenchspacing +\def\@@magyar@date@c#1#2#3{#1.~\@@magyar@month@c{#2} \number#3\@@magyar@told@optdot\hbox{}} +\def\@@magyar@date@d#1#2#3{#1.~\@@magyar@month@d{#2}.\ \number#3\@@magyar@told@optdot\hbox{}} +\def\@@magyar@date@e#1#2#3{#1.~\@@magyar@month@a{#2}.\ \two@digits{#3}\@@magyar@told@optdot\hbox{}} +\def\@@magyar@date@f#1#2#3{#1.~\@@magyar@month@b{#2}} +\def\@@magyar@date@g#1#2#3{#1.~\@@magyar@month@b{#2} \number#3}% Dat: \told{\@@magyar@date@g{1848}{3}{15}}+e{} +\def\@@magyar@date@h#1#2#3{#1~\@@magyar@month@b{#2}}% Imp: suffixes to months +\def\@@magyar@date@i#1#2#3{#1/\@@magyar@month@a{#2}/\two@digits{#3}}% not Hungarian + +\def\@@magyar@parsedate@a#1-#2-#3!#4\hfuzz{% ISO date: YYYY-MM-DD + \ifx\hfuzz#4\hfuzz\else \ifnum1<1\string#1\relax \ifnum1<1\string#2\relax \ifnum1<1\string#3\relax + \def\reserved@a{\@@magyar@fixdate{#1}{#2}{#3}}% + \fi\fi\fi\fi +} +\def\@@magyar@parsedate@b#1/#2/#3!#4\hfuzz{% LaTeX date: YYYY/MM/DD + \ifx\hfuzz#4\hfuzz\else \ifnum1<1\string#1\relax \ifnum1<1\string#2\relax \ifnum1<1\string#3\relax + \def\reserved@a{\@@magyar@fixdate{#1}{#2}{#3}}% + \fi\fi\fi\fi +} +\def\@@magyar@parsedate@c#1.#2.#3!#4\hfuzz{% English date: YYYY.DD.MM + \ifx\hfuzz#4\hfuzz\else \ifnum1<1\string#1\relax \ifnum1<1\string#2\relax \ifnum1<1\string#3\relax + \def\reserved@a{\@@magyar@fixdate{#1}{#3}{#2}}% + \fi\fi\fi\fi +} +\def\@@magyar@mon@jan{1}% +\def\@@magyar@mon@feb{2}% +\def\@@magyar@mon@mar{3}% +\def\@@magyar@mon@apr{4}% +\def\@@magyar@mon@maj{5}% +\def\@@magyar@mon@may{5}% english.ldf +\def\@@magyar@mon@jun{6}% +\def\@@magyar@mon@jul{7}% +\def\@@magyar@mon@aug{8}% +\def\@@magyar@mon@sze{9}% +\def\@@magyar@mon@sep{9}% english.ldf +\def\@@magyar@mon@okt{10}% +\def\@@magyar@mon@oct{10}% english.ldf +\def\@@magyar@mon@nov{11}% +\def\@@magyar@mon@dec{12}% +\def\@@magyar@parsedate@d#1. #2#3#4#5 #6!#7\hfuzz{% {2003. oktober 25} with \catcodes 12 and 10 + \ifx\hfuzz#7\hfuzz\else + % Dat: now: {#1} is {2003}, {#2#3#4#5} is {oktober}, {#6} is {25} + \ifnum1<1\string#1\relax \ifnum1<1\string#6\relax + \lowercase{% + \expandafter\ifx\csname @@magyar@mon@#2#3#4\endcsname\relax\else + %%\errmessage{(#1)(#2#3#4)(#6)}% + \edef\reserved@a{\noexpand\@@magyar@fixdate{\number#1}{\csname @@magyar@mon@#2#3#4\endcsname}{\number#6}}\fi + }% + \fi\fi\fi +} +\def\@@magyar@parsedate@e#1#2#3#4 #5, #6!#7\hfuzz{% {October 25, 2003} with \catcodes 12 and 10 + \ifx\hfuzz#7\hfuzz\else + \ifnum1<1\string#5\relax \ifnum1<1\string#6\relax + \lowercase{% + \expandafter\ifx\csname @@magyar@mon@#1#2#3\endcsname\relax\else + \edef\reserved@a{\noexpand\@@magyar@fixdate{\number#6}{\csname @@magyar@mon@#1#2#3\endcsname}{\number#5}}\fi + }% + \fi\fi\fi +} + +\def\@@magyar@parsedate@f#1/#2/#3:#4!#5\hfuzz{% LaTeX default \today: YYYY/MM/DD:XX:YY + \ifx\hfuzz#5\hfuzz\else \ifnum1<1\string#1\relax \ifnum1<1\string#2\relax \ifnum1<1\string#3\relax + \def\reserved@a{\@@magyar@fixdate{#1}{#2}{#3}}% + \fi\fi\fi\fi +} + +\def\@@magyar@stripdot@lowa#1.\relax{#1\relax}% +\def\@@magyar@stripdot@lowb#1\relax#2\relax{#1}% +%** by pts@fazekas.hu at Sun Jul 27 15:17:57 CEST 2003 +%** Expands to #1, with a single optional dot (token `.') at the end removed. +%** @param #1 a token list not containing `\relax' (sic) +\def\@@magyar@stripdot#1{\expandafter\@@magyar@stripdot@lowb\@@magyar@stripdot@lowa#1\relax.\relax}% + +%** Definies \reserved@a to {{YYYY}{MM}{DD}} (possibly fewer digits). Parsing +%** is not perfect, but can distinguish between the known formats +%** @param #1 a date in any format, will be expanded +\def\@@magyar@parsedate#1{% + %\let\@@protect\protect \let\protect\@gobble \afterassignment\restore@protect + \begingroup + \def\today{\the\year-\the\month-\the\day}% ISO format + \let\protect\string + \let\'\@firstofone% Dat: (j\'unius, janu\'ar, okt\'ober) date won't contain other accents -- I hope + \let~\space + % ^^^ change `2003.~okt\'ober 25.' to `2003. oktober 25.' + \edef\reserved@b{\def\noexpand\reserved@b{#1}}% + \expandafter\endgroup\reserved@b + \edef\reserved@b{\expandafter\@@magyar@stripdot\expandafter{\reserved@b}}% + %%\show\reserved@b\tracingmacros1 + % vvv Wizardry: deep, parsing dates + \let\reserved@a\@empty \expandafter\@@magyar@parsedate@a\reserved@b!--!\hfuzz + \ifx\reserved@a\@empty \expandafter\@@magyar@parsedate@f\reserved@b!//:!\hfuzz \fi + \ifx\reserved@a\@empty \expandafter\@@magyar@parsedate@b\reserved@b!//!\hfuzz \fi + \ifx\reserved@a\@empty \expandafter\@@magyar@parsedate@c\reserved@b!..!\hfuzz \fi + \ifx\reserved@a\@empty \expandafter\@@magyar@parsedate@d\reserved@b!. xyz !\hfuzz \fi + \ifx\reserved@a\@empty \expandafter\@@magyar@parsedate@e\reserved@b!xyz , !\hfuzz \fi + %%\show\reserved@a + \ifx\reserved@a\@empty + \@@magyar@error{Unrecognised date: \reserved@b}% + %\@@magyar@fixdate{0}{1}{1}}% + \def\reserved@a{{0}{1}{1} {\noexpand\reset@font\noexpand\bfseries \string?date\string?}}% + \else + \reserved@a% calls \@@magyar@fixdate, which sets \reserved@a + \fi + %%\show\reserved@a +}% +%** Definies \reserved@a to {{YYYY}{MM}{DD}} (possibly fewer digits) +%** @param #1 year (50..99 += 1900, 0..49 += 2000) +%** @param #2 month (1..12) +%** @param #3 day of month (1..31), validity of 29..31 not verified +\def\@@magyar@fixdate#1#2#3{% + \edef\reserved@a{\number#1}% + \ifnum\reserved@a<0 \def\reserved@a{0}\@@magyar@error{Year too small: #1}\else + \ifnum\reserved@a<10 \edef\reserved@a{200\reserved@a}\else + \ifnum\reserved@a<50 \edef\reserved@a{20\reserved@a}\else + \ifnum\reserved@a<100 \edef\reserved@a{19\reserved@a}\else + \ifnum\reserved@a<10000 \else + \def\reserved@a{0}\@@magyar@error{Year too large: #1}% + \fi\fi\fi\fi\fi + \ifnum#2<1 \@@magyar@error{Month too small: #2}\fi% Imp: reset to 0? + \ifnum#2>12 \@@magyar@error{Month too large: #2}\fi + \ifnum#3<1 \@@magyar@error{Day of month too small: #3}\fi% Imp: reset to 0? + \ifnum#3>31 \@@magyar@error{Day of month too large: #3}\fi + \edef\reserved@a{{\reserved@a}{\number#2}{\number#3}}% +} + +%** Usage: \magyar@emitdate{FMT}{DATE} or \magyar@emitdate[SUFFIX]{FMT}{DATE} +%** @example [\emitdate{b}{October 25, 2003}] +%** @example %[\emitdate{b}{x-y-z}]% ! Package magyar.ldf Error: Unrecognised date: x-y-z. +%** @example A mai dtum: [\emitdate{b}{\today}]. +%** @example [\emitdate[e]{g}{1848.15.3}] a nap, mikor elhangzott a Nemzeti dal. +%** @example [\emitdate{b}{1956-10-23}] +%** @example \told{\@@magyar@date@g{1848}{3}{115}}+a{} +%** @param SUFFIX any suffix for \told, e.g `e' or `adik+an' +%** @param DATE date in any format, will be expanded +%** @param FMT a single letter, specifies the format of the emitted date +%** a: 1848-03-15 (ISO dtumformtum, 2002-tl(?) a magyar helyesrs rsze) +%** b: 1848.\ mrcius 15. +%** c: 1848.\ mrc.\ 15. +%** d: 1848.\ III.\ 15. +%** e: 1848.\ 03.\ 15. +%** f: 1848. mrcius kzepe +%** g: 1848. mrcius 15[-e reggele] +%** h: 1848 mrcius [hnapjnak kzepe, mrciusnak kzepe, mrciusban stb.] birtokos rag +%** english.ldf: `October 25, 2003' or [UK]: `25th October 2003' +\def\@@magyar@emitdate{% + \@ifnextchar[\@@magyar@emitdate@opt{\@@magyar@emitdate@opt[]}%] +} +\def\@@magyar@emitdate@opt[#1]#2#3{% + \begingroup + \@@magyar@parsedate{#3}% + % Imp: error message if \@@magyar@told is undefined + %\show\reserved@a + \edef\reserved@a{% + \ifx\vfuzz#1\vfuzz \expandafter\noexpand\csname @@magyar@date@#2\endcsname\reserved@a + \else \noexpand\@@magyar@told{\expandafter\noexpand\csname @@magyar@date@#2\endcsname\reserved@a}+#1{}\fi + }% + %\show\reserved@a + %%\show~ + %\show\reserved@a% \told {\@@magyar@date@g {1848}{3}{15}}+e{} + \reserved@a + \endgroup +} + +\ifnum\magyar@opt@@emitdate \expandafter\ifx\csname emitdate\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \let\emitdate\@@magyar@emitdate +\fi +\@gobble +{^}% + +% --- titleskip= + +\ifx\magyar@opt@@titleskip\magyar@@unchanged + \def\magyar@opt@@titleskip{\enspace}% for the appendix with appendixdot=no +\@@magyar@skiplong\fi + \expandafter\addto\csname extras\CurrentOption\endcsname{\magyar@@seccntfix}% + \let\magyar@@seccntfix\@empty + \let\magyar@@default@seccntformat\@seccntformat + \AtBeginDocument{% + % vvv \ifx added for compatiblity with other packages redefining \@seccntformat _after_ magyar.ldf has been loaded + \ifx\@seccntformat\magyar@@default@seccntformat + % \@seccntformat affects dot after the section number in the main text. + % We don't change the TOC file, because we've changed \numberline. Also + % \ps@headings in book.cls already contains a dot. + \def\magyar@@seccntfix{% + \ifx\@seccntformat\@gobble\else + \babel@save\@seccntformat + \def\@seccntformat##1{\csname the##1\endcsname.\magyar@opt@@titleskip}% + \fi + } + \fi + } + \@gobble +{^}% + +% --- footnote= + +\if0\magyar@opt@@footnote \@@magyar@skiplong\fi + %** Overrides latex.ltx. Expand old contents of \cl@#2 only once. + \def\@addtoreset#1#2{% + \begingroup + \edef\reserved@a{\noexpand\@elt{#1}}% + \expandafter\magyar@fo@consra\csname cl@#2\endcsname\gdef + \endgroup + } + %** Similar to \@cons in latex.ltx + %** Appends first-level expansion of \reserved@a + %** @param #1 a \cs + %** @param #2 \def or \gdef + \def\magyar@fo@consra{\expandafter\magyar@fo@cons\expandafter{\reserved@a}}% + %** @param #1 tokens to append + %** @param #2 a \cs + %** @param #3 \def or \gdef + \def\magyar@fo@cons#1#2#3{\expandafter#3\expandafter#2\expandafter{#2#1}}% + + % vvv Dat: \@definecounter can be called twice, \newcounter cannot + \@definecounter{footnote@add}% \newcounter{footnote@add} + %** Number of times footnote numbering has been reset + \@definecounter{footnote@ch} + + \def\magyar@fo@pickzero#1#2#3\hfuzz#4{% + \ifx\relax#1\else \def#4{{#1}{#2}}\fi% pick {#1}{#2} + } + %** Dat: footnotes inside \begin{minipage} are not affected -- intentionally. + %** Will be called by \stepcounter{...} after `\advance\c@footnote1' + \def\magyar@fo@resetzero@afterpage{% + {% { is better \begingroup, because { works in a tabular + \@tempcnta\c@footnote@add + \advance\@tempcnta\c@footnote + \let\reserved@a\@empty% default + % Dat: we ignore \@roman etc. in \thefootnote + \expandafter\expandafter\expandafter\magyar@fo@pickzero\csname r@footnote&\the\c@footnote@ch&\the\@tempcnta\endcsname00\hfuzz\reserved@a% this footnote + \ifx\reserved@a\@empty \G@refundefinedtrue\fi + % + \def\magyar@fo@@prevfn{-}% default + \advance\@tempcnta\m@ne + \expandafter\expandafter\expandafter\magyar@fo@pickzero\csname r@footnote&\the\c@footnote@ch&\the\@tempcnta\endcsname00\hfuzz\magyar@fo@@prevfn% previous footnote + \advance\@tempcnta\@ne + % + \ifx\reserved@a\magyar@fo@@prevfn\else + % Restart footnote numbering (from 1) if \label is missing for previous + % footnote, or \label reports that prev and this footnotes aren't on the + % same page. + \global\advance\c@footnote@add\c@footnote + \global\advance\c@footnote@add\m@ne + \global\c@footnote\@ne + \fi + \def\@currentlabel{\noexpand\number\c@page}% + % ^^^ Dat: \noexpand is here to make \number\c@page expanded during \shipout + \ifx\@listdepth\@mplistdepth% inside \begin{minipage} + % vvv Dat: expand \thepage both early (minipage) and late (real page) + \edef\@currentlabel{\@currentlabel-\thepage}% + \fi + \edef\reserved@a{\noexpand\label{footnote&\the\c@footnote@ch&\the\@tempcnta}}% + % ^^^ Dat: the \label command above produces correct warning (LaTeX + % Warning: Label(s) may have changed. Rerun to get cross-references + % right.), and it also produces `LaTeX Warning: There were undefined + % references.' in case a footnote is removed or changed, and also for + % the very first run. Fine. + \reserved@a + }%\endgroup + } + + \let\magyar@fo@resetzero\relax + + %\magyar@fo@cons{XY}\cl@footnote\gdef + \magyar@fo@cons{\magyar@fo@resetzero}\cl@footnote\gdef + + %\def\magyar@fo@resetadd{% + % \global\advance\c@footnote\c@footnote@add + % \global\c@footnote@add\z@ + %} + \def\magyar@fo@aftergrouprelax#1{% + \ifx#1\relax\else + \aftergroup#1% + \expandafter\magyar@fo@aftergrouprelax + \fi + } + + \def\magyar@fo@mtostar#1{% + \if#1m% + *\expandafter\magyar@fo@mtostar + \fi + } + %** Producing `m's based on the idea of David Kastrup. + %** The default `*' character is in raised position, and we also move it to + %** \@textsuperscript, so it will be double raised. But never mind. + \def\magyar@fo@thefootnote@stars{\expandafter\magyar@fo@mtostar\romannumeral\number\c@footnote000A}% + \def\magyar@fo@thefootnote@starsspmax{\ifcase\c@footnote\or*\or**\or***\or\dag\or\dag\dag\or\dag\dag\dag\else*\the\c@footnote\fi}% + \def\magyar@fo@thefootnote@arabic{\@arabic\c@footnote} + \def\magyar@fo@thempfootnote@stars{\expandafter\magyar@fo@mtostar\romannumeral\number\c@mpfootnote000 A}% + \def\magyar@fo@thempfootnote@starsspmax{\ifcase\c@mpfootnote\or*\or**\or***\or\dag\or\dag\dag\or\dag\dag\dag\else*\the\c@mpfootnote\fi}% + \def\magyar@fo@thempfootnote@arabic{\@arabic\c@mpfootnote} + + % !! indent=article must work within \maketitle for article.cls etc. + + %** Copied from article.cls, added \,. + %** Has #1, but partially applied here + \def\magyar@fo@indent@articlesp{% + \parindent1em % SUXX: impossible to acquire default value + % Dat: don't use \@makefnmark here, because it puts the footnote mark + % only to the main text + \noindent\hb@xt@1.8em{\hss\@textsuperscript{\normalfont\@thefnmark\,}}% + } + %** Same as \@makefntext in article.cls + %** Has #1, but partially applied here + \def\magyar@fo@indent@articlenosp{% + \parindent1em % SUXX: impossible to acquire default value + % Dat: don't use \@makefnmark here, because it puts the footnote mark + % only to the main text + \noindent\hb@xt@1.8em{\hss\@textsuperscript{\normalfont\@thefnmark}}% + } + \def\magyar@@fo@indent@dimensetup{% + \parindent1em % SUXX: impossible to acquire default value + %\advance\leftskip1.8em % SUXX: impossible to acquire default value + \leftskip\leftmargini % SUXX: impossible to acquire default value + } + %** Has #1, but partially applied here + \def\magyar@fo@indent@hulist{% + % Dat: superscript is emitted by \@makefnmark + % Dat: \parindent doesn't apply for the 1st par of the footnote + \magyar@@fo@indent@dimensetup + \ifvmode\noindent\hb@xt@\z@\else\hbox\fi + % ^^^ \usepackage[para]{footmisc} emits footnotes in horizontal mode + {\hss\@textsuperscript{\normalfont\@thefnmark\,}}% + } + + %** Limit the size of the footnote mark (in main text) to \normalsize. + %** Overrides latex.ltx + \def\magyar@fo@makefnmark{% + \hbox{% has \begingroup + \edef\reserved@a{\f@size}% + {\normalsize\edef\reserved@b{\def\noexpand\reserved@b{\f@size}}\expandafter}\reserved@b + \ifdim\reserved@a pt>\reserved@b pt + %\normalsize\@textsuperscript{\normalfont\footnotesize\@thefnmark}% Dat: would place index too low + \@textsuperscript{\normalfont\scriptsize\@thefnmark}% + \else\@textsuperscript{\normalfont\@thefnmark}\fi + }% + } + \let\magyar@fo@@cont@number\@empty + \def\magyar@fo@savecont{\global\edef\magyar@fo@@cont@number{\global\c@footnote\the\c@footnote\space}} + + %** \footnoterule, as defined in latex.ltx + \def\magyar@fo@defaultrule{\kern-3\p@ + \hrule \@width 2in \kern 2.6\p@} % the \hrule is .4pt high + \def\magyar@fo@fourthrule{\kern-3\p@%\hrule\hrule\hrule + \hrule \@width .25\textwidth \kern 2.6\p@} % the \hrule is .4pt high + \def\magyar@fo@onelinerule{% + \unskip% undo \vskip\skip\footins + {\normalsize% Dat: \normalfont is superfluous + \vskip1\baselineskip plus.1\baselineskip minus .1\baselineskip}% + % ^^^ Dat: plus,minus is necessary to avoid `Overfull \vbox (8.86676pt too high)' + } + \def\magyar@fo@chooserule{\relax + \ifx \@listdepth\@mplistdepth \mpfootnoterule \else + \ifnum\split@prev=\z@ \pagefootnoterule \else \splitfootnoterule + \fi + %%\typeout{\string\split@prev=\split@prev}% + \xdef\split@prev{\the\insertpenalties}% + \fi + } + + % `Szerkesztk s szerzk kziknyve, p. 116' says this about Hungarian + % footnotes. Implementation notes are marked with [...]. See better docs + % in magyarldf-doc.tex + % + % (1) Use numbering and/or stars (in upper index) for footnote marks. + % Numbering is recommended. + % [1] Use \footnotestyle{mark=...} + % (2) You can put footnotes by the editor with a star, and footnotes by the + % author with numbers. + % [2] Use \footnotestyle{huplain} in the preamble, and emit each editorial + % footnote with {\footnotestyle{editor}\footnote{Her note.}} + % (3) Don't put \footnoterule if the footnote starts on current page. + % [3] Use \footnotestyle{rule=none}. Please make sure that the group lasts + % till \shipout. + % (4) Put a \footnoterule (1/3\textwidth or 1/4\textwidth) if footnote is + % continued from previous page. + % [4] Not supported. Imp: how to? + % (5) Multiple short footnotes may be put into a single line. + % [5] \usepackage[para]{footmisc} or \usepackage{fnpara} + % (6) Footnotes for \begin{figure} and \begin{table} must be put just under + % them, not at EOP. + % [6] The author should enclose the matrial in a \begin{minipage} + % (7) The size of the \footnotemark should not be scaled up. + % [7] Use \footnotestyle{marksize=max-normal} + % (8) It is possible to use either \parindent or \item when starting a + % footnote. + % [8] Use \footnotestyle{indent=hulist} + % (9) The footnotemark must be followed by a thin space (only at BOP). + % [9] OK, see \@makefntext + % (10) Don't emit too much stars. Recommended: * ** *** + ++ +++ + % [10] OK, see \footnoterule{mark=stars-max}. `\dag' is emitted instead + % of `+', and `*7' is emitted for the 7th footnote on the page. + % + + \@namedef{fos@reset=none}{\let\magyar@fo@resetzero\relax}% + %** Similar to \@addtoreset{footnote}{section}, but isn't \global. + \@namedef{fos@reset=section}{% + \let\magyar@fo@resetzero\relax + \magyar@fo@cons{\@elt{footnote}}\cl@section\def + \magyar@fo@cons{\@elt{footnote}}\cl@chapter\def + }% + \@namedef{fos@reset=chapter}{% + \let\magyar@fo@resetzero\relax + \magyar@fo@cons{\@elt{footnote}}\cl@chapter\def + }% + %** Next footnote-mark will be `*'. The slots of `*'s of \fos@huplain + %** were skipped when changing back to \fos@plain. Restarts numbering from + %** 1 (`*'). Usually called as \footnotestyle{resume,reset=page-cont} + \@namedef{fos@reset=page}{% + \stepcounter{footnote@ch}% + \global\c@footnote@add\z@% + \global\c@footnote\z@% + \let\magyar@fo@resetzero\magyar@fo@resetzero@afterpage + %\aftergroup\magyar@fo@resetadd% switched off deliberately + } + %** editorial footnote on the same page + \@namedef{fos@reset=page-cont}{% + \aftergroup\magyar@fo@savecont + \fos@resume% only \aftergroup + \magyar@fo@@cont@number + \let\magyar@fo@resetzero\magyar@fo@resetzero@afterpage + } + \@namedef{fos@reset=page-resume}{% + \fos@resume \csname fos@reset=page\endcsname + } + %** Resume to the previous footnote number at the end of the group. (Default: don't resume) + %** \footnotestyle{resume,reset=page} is the correct order + \def\fos@resume{% + \aftergroup\global + \aftergroup\c@footnote + \expandafter\magyar@fo@aftergrouprelax\the\c@footnote\relax + \aftergroup\space + %\magyar@fo@resetadd% Dat: not needed because \magyar@fo@resetzero@afterpage won't find prev. ref + } + % + \@namedef{fos@indent=article-sp}{\let\@makefntext\magyar@fo@indent@articlesp}% + \@namedef{fos@indent=article-nosp}{\let\@makefntext\magyar@fo@indent@articlenosp}% + \@namedef{fos@indent=hulist}{\let\@makefntext\magyar@fo@indent@hulist}% + %** This is not a 100% solution, because there might be multiple iterations + %** of \footnoterule with different \split@prev values. + \@namedef{fos@rule=choose}{% ripped from footmisc.sty + \ifx\footnoterule\magyar@fo@chooserule + \let\footnoterule\magyar@fo@defaultrule + \fi + \expandafter\ifx\csname pagefootnoterule\endcsname\relax \let \pagefootnoterule\footnoterule\fi + \expandafter\ifx\csname mpfootnoterule\endcsname\relax \let \mpfootnoterule\footnoterule\fi + \expandafter\ifx\csname splitfootnoterule\endcsname\relax \let\splitfootnoterule\magyar@fo@fourthrule\fi + \expandafter\ifx\csname split@prev\endcsname\relax \gdef\split@prev{0}\fi + % ^^^ Dat: \split@prev is named the same in footmisc.sty + \let\footnoterule\magyar@fo@chooserule + } + \@namedef{fos@rule=none}{\let\footnoterule\@empty}% + \@namedef{fos@rule=fourth}{\let\footnoterule\magyar@fo@fourthrule}% + \@namedef{fos@rule=one-line}{\let\footnoterule\magyar@fo@onelinerule}% + \@namedef{fos@marksize=max-normal}{\let\@makefnmark\magyar@fo@makefnmark}% + \@namedef{fos@mark=arabic}{\let\thefootnote\magyar@fo@thefootnote@arabic}% + \@namedef{fos@mark=stars}{\let\thefootnote\magyar@fo@thefootnote@stars}% + \@namedef{fos@mark=stars-max}{\let\thefootnote\magyar@fo@thefootnote@starsspmax}% + \@namedef{fos@mpmark=arabic}{\let\thempfootnote\magyar@fo@thempfootnote@arabic}% + \@namedef{fos@mpmark=stars}{\let\thempfootnote\magyar@fo@thempfootnote@stars}% + \@namedef{fos@mpmark=stars-max}{\let\thempfootnote\magyar@fo@thempfootnote@starsspmax}% + %\def\fos@globalmark{\expandafter\global\expandafter\let\csname the\@mpfn\endcsname\endcsname\thefootnote} + %\def\fos@globalmpmark{\global\let\thempfootnote\thefootnote} + + \def\fos@plain{\csname fos@reset=none\endcsname\csname fos@mark=arabic\endcsname} + \def\fos@huplain {\csname fos@marksize=max-normal\endcsname \csname fos@reset=none\endcsname\csname fos@mark=arabic\endcsname\csname fos@rule=none\endcsname\csname fos@indent=hulist\endcsname} + \def\fos@starplain{\fos@huplain\csname fos@reset=page\endcsname\csname fos@mark=stars-max\endcsname}% + %\def\fos@editor{\fos@resume\fos@starplain}% + \def\fos@editor{\fos@huplain\csname fos@reset=page-cont\endcsname\csname fos@mark=stars-max\endcsname}% + + \def\footnotestyle#1{% + \@for\reserved@a:=#1\do{% + \@ifundefined{fos@\reserved@a}{\@latex@error{Undefined footnote style: \reserved@a}\@ehc}% + {\csname fos@\reserved@a\endcsname}% + }% + } + + \def\editorfootnote#1{\begingroup\footnotestyle{editor}% + \footnote{#1}\endgroup}% + \def\headingfootnote{% + \ifx\protect\@typeset@protect\expandafter\footnote + \else\expandafter\@gobble\fi + % ^^^ Dat: this test is better, because it makes magyar.ldf compatible + % with nath.sty that says \def\protect{\noexpand} in its redefinition + % of \addtocontents + %\ifx\protect\@unexpandable@protect\expandafter\@gobble + %\else\expandafter\footnote\fi + } + + %** @param #1 an end-csname, example: \endfigure + \def\magyar@fo@mp@setup#1{% + \let\@footnotetext\@mpfootnotetext + \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@ + % ^^^ This line is optional, but strongly recommended. Restart numbering + % for each float, and number with \thempfootnote. + % vvv Very tricky use of `#' in expansion. + % Dat: \magyar@fo@mp@show is idempotent + % vvv Prepend \magyar@fo@mp@show to the definition of \@makecaption + \expandafter\def\expandafter\@makecaption\expandafter##\expandafter1% + \expandafter##\expandafter2\expandafter{\expandafter\magyar@fo@mp@show% + \@makecaption{##1}{##2}% + }% + %%\show\@currenvir + % vvv Dat: this prepending has only local effect. + \expandafter\def\expandafter#1\expandafter{% + \expandafter\magyar@fo@mp@show#1}% + %\expandafter\magyar@fo@mp@prepend\csname\@currenvir\endcsname + \setbox\@mpfootins\box\voidb@x + } + \def\magyar@fo@mp@show{% ripped from latex.ltx (\endminipage) + \ifvoid\@mpfootins\else + \par\unskip \vskip\skip\@mpfootins + \normalcolor \footnoterule + \expandafter\ifx\csname mpmakefootnoteparagraph\endcsname\relax + \unvbox\@mpfootins + \else% fnpara.sty + \mpmakefootnoteparagraph + \fi + \fi + } + + %** Only works if \cs of #1 doesn't have macro arguments. It works for + %** \figure and \table, because their optional argument `[b]' etc. is not + %** a macro argument. + %** @example \makeFootnotable{figure} + %** @example \makeFootnotable{} -- current instance of current environment + \def\makeFootnotable#1{% + \if\relax#1\relax + \expandafter\magyar@fo@mp@setup\csname end\@currenvir\endcsname + \else + \expandafter\expandafter\expandafter\magyar@fo@makef@low + \expandafter\expandafter\csname #1\endcsname + \csname end#1\endcsname + \fi + } + %** @example \magyar@fo@makef@low\table\endtable + \def\magyar@fo@makef@low#1#2{\expandafter\def\expandafter#1\expandafter{% + \expandafter\magyar@fo@mp@setup\expandafter#2#1}}% + + \if2\magyar@opt@@footnote \fos@huplain\fi + \if3\magyar@opt@@footnote \fos@starplain\fi + \@gobble +{^} + +% --- mathbrk= + +\if0\magyar@opt@@mathbrk \@@magyar@skiplong\fi + %** Similar to \@@magyar@fixmathcmd@low, but inserts symbol immediately. + %** @param #1 `\mathchar', all catcodes + %** @param #2 hex code + %** @param #3 ignored + %** @param #4 a \cs + \def\@@magyar@breakmathcmd@low#1"#2"#3\hfuzz#4{% + \def\reserved@a{#1}% + \edef\reserved@b{\string\mathchar}% + \ifx\reserved@a\reserved@b + \mathchar"#2 + \ifnum"#2<"8000 % redundant sanity check, trueness implied by #1==\mathchar + \nobreak\discretionary{}{\hbox{\(\mathchar"#2 \)}}{}% + \fi + \fi + }% + %** Dat: robustness is tested and works with nath.sty + %** @param #1 a \cs or char of a MathBin or MathRel, e.g `\prec' or `+' + \DeclareRobustCommand\MathBrkAll[1]{% + \ifcat\noexpand#1\relax + \expandafter\@@magyar@breakmathcmd@low\meaning#1""\hfuzz#1% + \else + \ifnum\mathcode`#1="8000 + \expandafter\expandafter\expandafter#1% keep original meaning + \else + \mathchar\the\mathcode`#1\relax% disable \active meaning + \ifnum\mathcode`#1<"8000 % redundant sanity check + \nobreak\discretionary{}{\hbox{\(\mathchar\the\mathcode`#1\relax\)}}{}% + \fi + \fi + \fi + } + \let\MathBrk\relax + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\MathBrk + \let\MathBrk\MathBrkAll + } + \@gobble +{^} + +\if2\magyar@opt@@mathbrk\else \@@magyar@skiplong\fi % mathbrk=fix + \def\@@magyar@resetmathchars{% + \mathcode`+"202B \catcode`+12 + \mathcode`-"2200 \catcode`-12 + \mathcode`*"2203 \catcode`*12 + \mathcode`/"013D \catcode`/12 + \mathcode`>"313E \catcode`>12 + \mathcode`<"313C \catcode`<12 + \mathcode`="303D \catcode`=12 + % vvv Dat: leave these chars intact, for compatibility (with nath.sty and others) + %\mathcode`:"303A \catcode`:12 + %\mathcode`;"603B \catcode`;12 + %\mathcode`,"613B \catcode`,12 + %\mathcode`!"5021 \catcode`!12 + %\mathcode`?"503F \catcode`?12 + %\mathcode`|"026A \catcode`|12 + %\mathcode`."013A \catcode`.12 + } + %** Dat: don't do `/', because slash is unbreakable + \def\@@magyar@domathbins{% + \do-\@@magyar@fix@newmcodes@dash + \do+\do*\do>\do<\do=}% + %** @param #1 a char token with \mathcode != "8000, like + + \def\@@magyar@fixmathbinchar#1{% + \ifnum\mathcode`#1="8000 \else + % Dat: \(...\) is safer than `$...$', because \( has a fixed \catcode + % that works with and w/o nath.sty + \begingroup\lccode\string`~\string`#1\lowercase{\endgroup\edef~}{% + \mathchar\the\mathcode`#1\relax% Dat: would need \space\space + \noexpand\ifx\noexpand\MathBrk\noexpand\MathBrkAll% Hungarian language is active + \nobreak\discretionary{}{\hbox{\noexpand\(\mathchar\the\mathcode`#1 \noexpand\)}}{}% + \noexpand\fi}% + \mathcode`#1"8000 + \fi + \catcode`#112 + } + %** \newmcodes@ defined in amsopn.sty doesn't work (triggered by + %** \DeclareMathOperator{\tg}{tg} $\tg$) because it wants to assign + %** \mathchardef\std@minus\mathcode`\-, which is "8000, which is a bad + %** matchar. We fix that by prepending \mathcode`-45 to \newmcodes@ . + %** This is OK, because \newmcodes@ is protected by a block set up by + %** \qopname. + \def\@@magyar@newmcodes@fixed{\mathcode`-"45 \magyar@@newmcodes}% + \def\@@magyar@fix@newmcodes@dash{% + \ifx\newmcodes@\@undefined\else + \ifx\newmcodes@\@@magyar@newmcodes@fixed\else % Protect against double redefinition such as in \begin{align*}\tg\end{align*} + \let\magyar@@newmcodes\newmcodes@ + \let\newmcodes@\@@magyar@newmcodes@fixed + \fi + \fi + }% + + %** @param #1 `\mathchar', all catcodes + %** @param #2 hex code + %** @param #3 ignored + %** @param #4 a \cs + \def\@@magyar@fixmathcmd@low#1"#2"#3\hfuzz#4{% + % Imp: check \cong and \notin with txfonts and pxfonts. Do they look OK? + \def\reserved@a{#1}% + \edef\reserved@b{\string\mathchar}% + \ifx\reserved@a\reserved@b + \ifnum"#2<"8000 % redundant sanity check, trueness implied by #1==\mathchar + % Make #4 robust. + \edef#4{\noexpand\protect\expandafter\noexpand\csname + \expandafter\@gobble\string#4 \endcsname}% + % vvv Imp: \def would be better than \edef? + \expandafter\edef\csname\expandafter\@gobble\string#4 \endcsname{% + % Dat: \mathchar already produces: `! Missing $ inserted.' + \mathchar"#2 + \noexpand\ifx\noexpand\MathBrk\noexpand\MathBrkAll% Hungarian language is active + \nobreak\discretionary{}{\hbox{\noexpand\(\mathchar"#2 \noexpand\)}}{}% + \noexpand\fi + }% + \fi + \fi + }% + %** Works even if #1 is undefined (but consumes hash memory) + %** @param #1 a \cs of a MathBin or MathRel, e.g \prec + \def\@@magyar@fixmathcmd#1{% + \expandafter\@@magyar@fixmathcmd@low\meaning#1""\hfuzz#1% + } + + \let\@@magyar@domathbins@prefix\@empty + \def\@@magyar@fixeverymathcmds@appendto#1{% + \expandafter\def\expandafter#1\expandafter{#1% append + \@@magyar@resetmathchars + \let\do\@@magyar@fixmathbinchar + \@@magyar@domathbins@prefix\@@magyar@domathbins% only in math mode start + }% + } + \def\@@magyar@fixeverymathcmds@setup{% + \expandafter\ifx\csname mathoptions@on\endcsname\relax% no nath.sty + \@@magyar@fixeverymathcmds@appendto\check@mathfonts + \else\@@magyar@fixeverymathcmds@appendto\mathoptions@on\fi + } + + % The definition of \@tabular contains a $, which calls + % \@@magyar@domathbins, which has some unintended side effects of changing + % \catcode values and the meaning of the active character : . This magic + % prevents the call to \@@magyar@domathbins . + % + % Test code: \author{a:b} \maketitle + % Test code: \def\foo{a:b} \begin{tabular}[t]{c}x\foo y\end{tabular} + \def\@@magyar@mathbins@tabularfix#1${% + #1\def\@@magyar@domathbins@prefix{% + \let\@@magyar@domathbins@prefix\@empty\@gobble}$}% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\@tabular + \expandafter\expandafter\expandafter{% + \expandafter\@@magyar@mathbins@tabularfix\@tabular} + + \def\@@magyar@fixmathcmds{% + \let\do\@@magyar@fixmathcmd + % vvv Binary relations listed in Table 3.4 in lshort.dvi + \do\leq\do\le\do\ll\do\prec\do\preceq\do\subset\do\subseteq\do\sqsubset + \do\sqsubseteq\do\in\do\vdash\do\mid\do\smile\do\geq\do\ge\do\gg\do\succ + \do\succeq\do\supset\do\supseteq\do\sqsupset\do\sqsupseteq\do\ni\do\owns + \do\dashv\do\parallel\do\frown\do\notin\do\equiv\do\doteq\do\sim\do\simeq + \do\approx\do\cong\do\Join\do\bowtie\do\propto\do\models\do\perp\do\asymp + \do\neq\do\ne + % vvv Binary operators listed in Table 3.5 in lshort.dvi + %\do\cdot% unbreakable + \do\pm\do\times\do\cup\do\sqcup\do\vee\do\lor\do\oplus\do\odot\do\otimes + \do\bigtriangleup\do\lhd\do\unlhd\do\mp\do\div\do\setminus\do\cap\do\sqcap + \do\wedge\do\land\do\ominus\do\oslash\do\bigcirc\do\bigtriangledown\do\rhd + \do\unrhd\do\triangleleft\do\triangleright\do\star\do\ast\do\circ\do\bullet + \do\diamond\do\uplus\do\amalg\do\dagger\do\ddagger\do\wr + \edef\cdot{\noexpand\protect\csname cdot \endcsname}% + \expandafter\def\csname cdot \endcsname{\nobreak\mathchar"2201\nobreak}% + \def\slash{\nobreak/\nobreak}% only in math-mode start, \nobreak + % ^^^ Dat: \slash is fragile in latex.ltx + } + \AtBeginDocument{\@@magyar@fixmathcmds\@@magyar@fixeverymathcmds@setup} + \@gobble +{^} + +% --- mathfactorial= + +\if0\magyar@opt@@mathfactorial \@@magyar@skiplong\fi + % Imp: weak define? It doesn't conflict with nath.sty -- yet. + \def\factorial{\mathchar"5021\mathopen{}\mathinner{}} + \@gobble +{^} + +\if2\magyar@opt@@mathfactorial\else \@@magyar@skiplong\fi + \expandafter\addto\csname \expandafter\ifx\csname mathoptions@on\endcsname + \relax check@mathfonts\else mathoptions@on\fi\endcsname{% detect nath.sty + \catcode`!12 \mathcode`!"8000 + \begingroup\lccode`~`!\lowercase{\endgroup\def~}{\factorial}% + } + \@gobble +{^} + +% --- mathhucomma= + +\if0\magyar@opt@@mathhucomma \@@magyar@skiplong\fi + %** Dat: works for all catcodes, even for `end group character 5' + %** Inspired by Donald Aresenau + %** @param #1 the + %** @param #2 character + %** @example The sample in your article would be typed + %** \[ F_{i}(x,y) = y^i + 1,3x \qquad x,y \in A,\ i = 1, 2, 3,\ldots \] + \edef\@@magyar@hucomma@lowa#1#2 #3#4 #5#6\hfuzz{% + \noexpand\ifnum9<1#5 \noexpand\if#1t\noexpand\if#3c% + \noexpand\mathord\noexpand\fi\noexpand\fi\noexpand\fi\mathchar + \ifnum\mathcode`,="8000 "613B \else\the\mathcode`, \space\fi% immed expand + % Dat: "613B is the punctuation, "013B is ordinary + }% + %%\show\@@magyar@hucomma@lowa + \def\@@magyar@hucomma@lowb{\expandafter\@@magyar@hucomma@lowa\meaning\reserved@a/ / /\hfuzz}% + %** Put a \mathord, if it is followed by a digit; otherwise put a normal, + \DeclareRobustCommand\HuComma{\futurelet\reserved@a\@@magyar@hucomma@lowb} + \@gobble +{^} + +\if2\magyar@opt@@mathhucomma\else \@@magyar@skiplong\fi + % !! into \extrasmagyar + \expandafter\addto\csname \expandafter\ifx\csname mathoptions@on\endcsname + \relax check@mathfonts\else mathoptions@on\fi\endcsname{% detect nath.sty + \catcode`,12 \mathcode`,"8000 + \begingroup\lccode`~`,\lowercase{\endgroup\def~}{\HuComma}% + } + \@gobble +{^} + +% --- mathmuskips= + +% +\if1\magyar@opt@@mathmuskips% =latex, as defined in latex.ltx + \thickmuskip 5mu plus 5mu + \medmuskip 4mu plus 2mu minus 4mu + \thinmuskip 3mu +\fi +\if2\magyar@opt@@mathmuskips% =hu + \thickmuskip 4mu plus 2mu minus 4mu + \medmuskip 2mu plus 1.5mu minus 2mu % \medmuskip<\thinmuskip OK + \thinmuskip 3mu +\fi + +% --- hynumberline= +% by pts@fazekas.hu at Tue Nov 21 00:34:37 CET 2006 +% +% hynumberline=hu adds a dot after the section number in the bookmarks/outline +% with \hypersetup{bookmarksnumbered=true} in hyperref.sty. + +\if0\magyar@opt@@hynumberline \@@magyar@skiplong\fi + %** Overrides original definition (\def\Hy@numberline#1{#1 }) in + %** pdfmark.def. + %** Also possible with: + %** \pdfstringdefDisableCommands{\renewcommand*{\numberline}[1]{#1. }} + \def\@@magyar@@hynumberline@old#1{#1 }% as defined in pdfmark.def + \def\@@magyar@@hynumberline@hu #1{#1. }% + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \ifx \Hy@numberline\@@magyar@@hynumberline@old + \let\Hy@numberline\@@magyar@@hynumberline@hu \fi}% +\@gobble +{^}% + +% --- mathreal= + +\if0\magyar@opt@@mathreal \@@magyar@skiplong\fi + %** @param #1 a number with a possible decimal digit, e.g `12' or `-12.3' + \def\@@magyar@mathreal@lowa#1{\ensuremath{\@@magyar@mathreal@lowb#1\@gobble.}}% + \def\@@magyar@mathreal@lowb#1.{% + #1% + \@secondoftwo\@gobble% Wizardry: \@secondoftwo may be \@gobbled by token before `.' + {\mathchar"013B \@@magyar@mathreal@lowb}% + } + \DeclareRobustCommand\@@magyar@mathreal{\ensuremath}% + \expandafter\expandafter\expandafter\addto + \expandafter\expandafter\csname extras\CurrentOption\endcsname\expandafter{% + \expandafter\babel@save\csname @@magyar@mathreal \endcsname + \expandafter\let\csname @@magyar@mathreal \endcsname \@@magyar@mathreal@lowa}% + \ifnum\magyar@opt@@mathreal \expandafter\ifx\csname mathreal\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \let\MathReal\@@magyar@mathreal + \fi +\@gobble +{^}% + +% --- \documentclass-specific modifications; classmod= + +% Callback which redefines \ps@headings and runs it again if needed, when +% magyar.ldf has an override for the standard \ps@headings, and +% \pagestyle{headings} is active either explictly (e.g. in article.cls) or +% by default (e.g. in book.cls). +\let\@@magyar@setup@psheadings\relax + +%** Localized definition which replaces \ps@headings, if appropriate. +\let\@@magyar@overridden@psheadings\@empty + +\ifx\magyar@opt@@classmod\relax\@@magyar@skiplong\fi + +%** Appends the first-level expansion of argless macro ##2 to ##1. +\def\magyar@letappendto#1#2{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter#1% + \expandafter\expandafter\expandafter{% + \expandafter#1#2}}% + +%** Defines #1 to the concatenation of \partmark ... \subparagraphmark, +%** \oddfoot, \evenfoot, \oddhead, \evenhead. +\def\magyar@mark@fingerprint@def#1{% + % We have ! here because some macros (such as \partmark) have #1, which + % gets expanded by \expandafter + \def#1{markfp: }% + \ifx\partmark\@undefined + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter{-partmark}}% + \else + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter{\partmark!:partmark}}% + \fi + \magyar@letappendto#1\reserved@b + % + \ifx\chaptermark\@undefined + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter{-chaptermark}}% + \else + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter{\chaptermark!:chaptermark}}% + \fi + \magyar@letappendto#1\reserved@b + % + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter{\sectionmark!:sectionmark}}% + \magyar@letappendto#1\reserved@b + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter{\subsectionmark!:subsectionmark}}% + \magyar@letappendto#1\reserved@b + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter{\paragraphmark!:paragraphmark}}% + \magyar@letappendto#1\reserved@b + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter{\subparagraphmark!}}% + \magyar@letappendto#1\reserved@b + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter{\@oddfoot!:oddfoot}}% + \magyar@letappendto#1\reserved@b + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter{\@evenfoot!:evenfoot}}% + \magyar@letappendto#1\reserved@b + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter{\@evenhead!:evenhead}}% + \magyar@letappendto#1\reserved@b + \expandafter\def\expandafter\reserved@b\expandafter{% + \expandafter{\@oddhead!:oddhead}}% + \magyar@letappendto#1\reserved@b + % Dat: don't use \@mkboth (\let\@mkboth\markboth) +}% + +%** Branches based on whether the \pagestyle has changed since loading the +%** class file. +%** @param #1 class file name, e.g. `book.cls'. Tested with book.cls and +%** report.cls. +%** @param #2 tokens to insert before fingerprinting the current page style. +%** @param implicit-#3 then-branch +%** @param implicit-#4 else-branch +\def\magyar@if@originalpagestyle#1#2{% + \begingroup + % article.cls calls \pagenumbering, which does a \gdef\thepage and + % \global\c@page=1. We'll cancel that below. + \let\magyar@@pagestyle@save@thepage\thepage + \edef\magyar@@pagestyle@save@c@page{\the\c@page\space} + \edef\magyar@@pagestyle@save@c@tocdepth{\the\c@tocdepth\space} + % Dat: no \paragraphmark or \subparagraphmark + % vvv Dat: already defined in latex.ltx + %\providecommand\sectionmark[1]{\relax} + %\providecommand\subsectionmark[1]{\relax} + #2\magyar@mark@fingerprint@def\@@magyar@now@marks + % + \def\ProvidesClass##1[##2]{}% + \def\NeedsTeXFormat##1[##2]{}% avoid ``can be used only in preamble'' + \long\def\DeclareOption##1##2{}% + \def\ExecuteOptions##1{}% + \def\ProcessOptions{}% + \def\DeclareOldFontCommand##1##2##3{}% + % + \def\magyar@gobbleopt[##1]{}% + % Dat: \newcommand etc. are not \global. Good. + \let\@onlypreamble\@gobble % In letter.cls . + \let\newdimen\@gobble + \let\newif\@gobble + \let\newskip\@gobble + \let\newmuskip\@gobble + \let\newcount\@gobble + \let\newbox\@gobble + \let\newtoks\@gobble + \let\newread\@gobble + \let\newwrite\@gobble + \let\newlaunguage\@gobble + \let\newlength\@gobble + \def\newcounter##1{\@ifnextchar[\magyar@gobbleopt{}}% + \def\setcounter##1##2{\@ifundefined{c@##1}{\@nocounterr{##1}}% + {\csname c@##1\endcsname##2\relax}} + %** Like \newcommand, but always overrides old values. + \def\magyar@defcommand{\@star@or@long\magyar@defcommand@low} + \def\magyar@defcommand@low##1{% + \begingroup + \escapechar\m@ne\xdef\@gtempa{\string##1}% + \endgroup + \expandafter\let\csname\@gtempa\endcsname\@undefined + \@star@or@long\new@command##1% + }% + \def\newcommand{\magyar@defcommand}% + \def\renewcommand{\magyar@defcommand}% + \def\magyar@defenvironment##1{% + \@ifundefined{##1}{}{% + \expandafter\let\csname ##1\endcsname\@undefined + \expandafter\let\csname end##1\endcsname\@undefined + }% + \@star@or@long\new@environment{##1}% + }% + \def\newenvironment{\magyar@defenvironment}% + \def\renewenvironment{\magyar@defenvironment}% + % + \ps@empty % Clean \@oddhead as of latex.ltx + \let\@mkboth\@gobbletwo + \let\@oddhead\@empty + \let\@evenhead\@empty + \let\@oddfoot\@empty + \let\@evenfoot\@empty + % + \def\input##1 {} % size10.clo etc. + \makeatletter \@@input #1 % + #2\magyar@mark@fingerprint@def\@@magyar@class@marks + %\message{AAA \meaning\@@magyar@now@marks}% + %\message{BBB \meaning\@@magyar@class@marks}% + \global\let\thepage\magyar@@pagestyle@save@thepage + \global\c@page\magyar@@pagestyle@save@c@page + \global\c@tocdepth\magyar@@pagestyle@save@c@tocdepth + \ifx\@@magyar@now@marks\@@magyar@class@marks + \endgroup\expandafter\@firstoftwo + \else + \endgroup\expandafter\@secondoftwo + \fi +} + +%\begingroup +%\magyar@mark@fingerprint@def\OOO +%\message{OOO \meaning\OOO}% +%\endgroup + +%** Branches based on whether the specified \pagestyle is active. +%** @param #1 tokens which change to the \pagestyle specified, e.g. +%** `\ps@headings'. +%** @param implicit-#2 then-branch +%** @param implicit-#3 else-branch +\def\magyar@if@currentpagestyle#1{% + \begingroup + \magyar@mark@fingerprint@def\@@magyar@now@marks + #1% + \magyar@mark@fingerprint@def\@@magyar@specified@marks + \ifx\@@magyar@now@marks\@@magyar@specified@marks + \endgroup\expandafter\@firstoftwo + \else + \endgroup\expandafter\@secondoftwo + \fi +} + +%** Redefine \@@magyar@setup@psheadings for #2.cls. +%** @param #1 is the expanded value of \CurrentOption (`magyar'). +\def\magyar@def@psheadings#1#2{% + \def\@@magyar@setup@psheadings{% + % SUXX: \show doesn't work here. + \ifx\@@magyar@overridden@psheadings\ps@headings + \@@magyar@error{assert: \string\let\string\ps@headings\string\@@magyar@overridden@psheadings\space was too early}% + \else\ifx\@@magyar@overridden@psheadings\@empty + \@@magyar@error{assert: \string\@@magyar@overridden@psheadings\space should be redefined}% + \else + \magyar@if@originalpagestyle{#2.cls}{\ps@headings}{% + % \ps@headings still has its original definition (as of #1.cls). + % + % For efficiency reasons, we make the following restriction. If the + % user does \selectlanguage{...} throughout the document, he should + % call \pagetsyle{...} after that to make the pagestyle + % language-dependent. + % + % !! add support for \thispagestyle in the preamble. + % !! don't add this if extras gets cleared. + \expandafter\addto\csname extras#1\endcsname{% + \babel@save\ps@headings + \let\ps@headings\@@magyar@overridden@psheadings + }% + \magyar@if@currentpagestyle{\ps@headings}{% + % The current \pagestyle has been selected by the current + % \ps@headings, i.e. \pagestyle{headings} is active. + \edef\reserved@a{\languagename}% + \edef\reserved@a{\expandafter\strip@prefix\meaning\reserved@a}% + \edef\reserved@b{#1}% + \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@a}% + \ifx\reserved@a\reserved@b + % Localize the current \pagestyle to Hungarian `headings'. + \@@magyar@overridden@psheadings + \fi + }{}% + }{}% + \fi\fi + }% +} + +\def\magyar@ulladik{ulladik0}% [Nn]ulladik, `0' at end is intentional + +\def\@@magyar@macro@appendixname{\appendixname} + +%** \thechapter (possibly with huordinal), dot, space. +\def\magyar@huordinal@chapterheaddot{% + \ifx\@chapapp\@@magyar@appendixname \thechapter\hbox{\magyar@opt@@titleskip}% appendixdot=no + \else\ifx\@chapapp\@@magyar@macro@appendixname \thechapter.~% + \else\ifnum\magyar@opt@@chapternumber=1 \@huordinal\c@chapter~% + \else\ifnum\magyar@opt@@chapternumber=2 \@Huordinal\c@chapter~% + \else \thechapter.~% + \fi\fi\fi\fi +} + +%** \thepart (possibly with huordinal), dot, space. +\def\magyar@huordinal@partheaddot{% + \ifnum\magyar@opt@@partnumber=1 \@huordinal\c@part~% + \else\ifnum\magyar@opt@@partnumber=2 \@Huordinal\c@part~% + \else \thepart.~% + \fi\fi +} + +%** Emits the rule to the running head. Must put something of zero width +%** to the horizontal list. +%** @param #1 0: even page, 1: odd page, 3: page w/o [twoside] +\def\@@magyar@headrule#1{} +\def\@@magyar@slshape{}% running head is not slanted + +\ifx\magyar@opt@@classmod\@empty + \let\@@magyar@ifclassloaded\@ifclassloaded +\else + \def\@@magyar@ifclassloaded#1#2{% force specific class + \def\reserved@a{#1}% + \ifx\reserved@a\magyar@opt@@classmod #2\fi + } +\fi + +\@@magyar@ifclassloaded{amsbook}{% + \let\magyar@hunumbers@errmsg\@empty + \let\@@magyar@orig@makechapterhead\@makechapterhead + \def\@makechapterhead#1{% + \begingroup + \let\@@magyar@orig@centerline\centerline + \def\centerline##1{% + \@@magyar@orig@centerline{% + \normalsize\mdseries + \ifx\chaptername\appendixname % We're in the appendix. + \ifx\@@magyar@appendixname\@empty + % print a dot in the appendix only if appendixdot=yes + \thechapter.~% + \else + \thechapter\hbox{\magyar@opt@@titleskip}% + \fi + \else\ifnum\magyar@opt@@chapternumber=1 + \uppercase\@xp{\@huordinal\c@chapter}~% + \else\ifnum\magyar@opt@@chapternumber=2 + \uppercase\@xp{\@Huordinal\c@chapter}~% + \else\thechapter.~% + \fi\fi\fi + \uppercase\@xp{\chaptername}% + }% + }% + \@@magyar@orig@makechapterhead{#1}% + \endgroup + }% + \let\@@magyar@orig@chapter\@chapter + \def\@chapter{% + \let\@@magyar@orig@chapter@typeout\typeout + \def\typeout##1{% + % Original: \typeout{\chaptername\space\@secnumber} + \@@magyar@orig@chapter@typeout{% + \ifnum\c@secnumdepth<\z@ + \chaptername\space + \else + \thechapter\ifx\chaptername\appendixname\else.\fi + \space\chaptername + \fi + }% + \let\typeout\@@magyar@orig@chapter@typeout + }% + \@@magyar@orig@chapter + }% + % Just to be sure, no need for this in amsbook.cls 2004/08/06 + \@ifundefined{tocpart}{\let\tocpart\tocsection}{} + % TODO(pts): Override only parts of \@part + \def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax \refstepcounter{part}% + % TODO(pts): What does \tocpart do for a non-hungarian \tableofcontents? + \addcontentsline{toc}{part}{\protect\tocpart{\partname}{\thepart}% + {#1}}% + \else + \addcontentsline{toc}{part}{#1}\fi + \begingroup\centering + \ifnum \c@secnumdepth >-2\relax + {\fontsize{\@xviipt}{22}\bfseries + \ifnum\magyar@opt@@partnumber=1 \@huordinal\c@part~% + \else\ifnum\magyar@opt@@partnumber=2 \@Huordinal\c@part~% + \else\thechapter.~% + \fi\fi + \partname + } \vskip 20\p@ \fi + \fontsize{\@xxpt}{25}\bfseries + #1\vfil\vfil\endgroup \newpage\thispagestyle{empty}} +}{} + +\@@magyar@ifclassloaded{book}{% + \let\magyar@hunumbers@errmsg\@empty + % Headings: inserting dots, changing orders + %\def\@@magyar@appendixname{\appendixname}% by appendixdot= + \def\@@magyar@overridden@psheadings{% + \if@twoside + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\@@magyar@headrule0\thepage\hfil\@@magyar@slshape\leftmark}% + \def\@oddhead {\@@magyar@headrule1{\@@magyar@slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\chaptermark##1{% + \markboth {\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter% Dat: mainmatter only in book.cls, not in report.cls + \magyar@huordinal@chapterheaddot + \@chapapp.\magyar@opt@@hdrtitleskip% \ % + \fi + \fi + ##1}}{}}% + \def\sectionmark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\z@ + \thesection.\magyar@opt@@hdrtitleskip% \ % + \fi + ##1}}}% + \else + \let\@oddfoot\@empty + \def\@oddhead{\@@magyar@headrule3{\@@magyar@slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\chaptermark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \magyar@huordinal@chapterheaddot + \@chapapp.\magyar@opt@@hdrtitleskip% \ % + \fi + \fi + ##1}}}% + \fi + }% + \expandafter\magyar@def@psheadings\expandafter{\CurrentOption}{book}% + % Part: inserting dot, changing order, toc + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\@part + \def\@part[#1]#2{% book + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \ifnum\magyar@opt@@partnumber>0 \protected@edef\@currentlabel{\@huordinal\c@part}\fi + \addcontentsline{toc}{part}{\thepart.\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \magyar@huordinal@partheaddot\partname% hu + \csname par\endcsname + \vskip 20\p@ + \fi + \Huge \bfseries #2\csname par\endcsname}% + \@endpart}} + % Chapter: dot, changing typeout, toc + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\@chapter + \def\@chapter[#1]#2{% !! don't \def, but \let, other places, too + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{\thechapter\ifx\@chapapp\@@magyar@appendixname\else.\fi\space\@chapapp.}% + \ifx\@chapapp\@@magyar@appendixname + % \@gobble gobbles the dot emitted by \numberline. + \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter\protect\@gobble}#1}% + \else + \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}#1}% + \fi + \ifx\@chapapp\@@magyar@appendix@chapapp\else + \ifnum\magyar@opt@@chapternumber>0 \protected@edef\@currentlabel{\@huordinal\c@chapter}\fi + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + %\csname par\endcsname + \@afterheading % Imp: why doesn't it work? + \fi}} + \if0\magyar@opt@@chapterhead\else + % Chapter: dot, changing order + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\@makechapterhead + \def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \huge\bfseries + \magyar@huordinal@chapterheaddot \@chapapp{}% + \csname par\endcsname\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty\@M + \Huge \bfseries #1\csname par\endcsname\nobreak + \vskip 40\p@ + }}% + }% + \fi +}{} + +\@@magyar@ifclassloaded{report}{% + \let\magyar@hunumbers@errmsg\@empty + %\def\@@magyar@appendixname{\appendixname}% by appendixdot= + % Headings: inserting dots, changing orders + \def\@@magyar@overridden@psheadings{% + \if@twoside + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\@@magyar@headrule0\thepage\hfil\@@magyar@slshape\leftmark}% + \def\@oddhead {\@@magyar@headrule1{\@@magyar@slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\chaptermark##1{% + \markboth {\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \magyar@huordinal@chapterheaddot + \@chapapp.\magyar@opt@@hdrtitleskip% \ % + \fi + ##1}}{}}% + \def\sectionmark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\z@ + \thesection.\magyar@opt@@hdrtitleskip% \ % + \fi + ##1}}}% + \else + \let\@oddfoot\@empty + \def\@oddhead{% + \@@magyar@headrule3{\@@magyar@slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\chaptermark##1{% + \markright{\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \magyar@huordinal@chapterheaddot + \@chapapp.\magyar@opt@@hdrtitleskip% \ % + \fi + ##1}}}% + \fi + }% + \expandafter\magyar@def@psheadings\expandafter{\CurrentOption}{report}% + % Chapter: dot, changing typeout, toc + % Part... + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\@chapter + \def\@chapter[#1]#2{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\thechapter\ifx\@chapapp\@@magyar@appendixname\else.\fi\space\@chapapp.}% + \ifx\@chapapp\@@magyar@appendixname + % \@gobble gobbles the dot emitted by \numberline. + \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter\protect\@gobble}#1}% + \else + \addcontentsline{toc}{chapter}{\protect\numberline{\thechapter}#1}% + \fi + \ifx\@chapapp\@@magyar@appendix@chapapp\else + \ifnum\magyar@opt@@chapternumber>0 \protected@edef\@currentlabel{\@huordinal\c@chapter}\fi + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi}% + \babel@save\@part + \def\@part[#1]#2{% report; added at Fri Jul 23 11:45:57 CEST 2004 + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \ifnum\magyar@opt@@partnumber>0 \protected@edef\@currentlabel{\@huordinal\c@part}\fi + \addcontentsline{toc}{part}{\thepart.\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% %%%%% \l@chapter in report.cls + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \magyar@huordinal@partheaddot\partname% hu + \csname par\endcsname + \vskip 20\p@ + \fi + \Huge \bfseries #2\csname par\endcsname}% + \@endpart}% + } + \if0\magyar@opt@@chapterhead\else + % Chapter: dot, changing order + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\@makechapterhead + \def\@makechapterhead#1{% + \vspace*{50\p@}% + {\parindent \z@ \raggedright \normalfont + \ifnum \c@secnumdepth >\m@ne + \huge\bfseries + \magyar@huordinal@chapterheaddot \@chapapp{}% + \vskip 20\p@ + \fi + \interlinepenalty\@M + \Huge \bfseries #1\csname par\endcsname\nobreak + \vskip 40\p@ + }}% + }% + \fi +}{} + +\@@magyar@ifclassloaded{article}{% + % article.cls has no \chapter. We'll hook \part below though. + \let\magyar@hunumbers@errmsg\@empty + % Headings: inserting dots + % In order for this to take effect, \pagestyle{plain} should be put below + % \begin{document}. + \def\@@magyar@overridden@psheadings{% + \if@twoside + \let\@oddfoot\@empty\let\@evenfoot\@empty + % Dat: by pts: \slshape -> \relax + \def\@evenhead{\@@magyar@headrule0\thepage\hfil\@@magyar@slshape\leftmark}% + \def\@oddhead {\@@magyar@headrule1{\@@magyar@slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\sectionmark##1{% + \markboth {\MakeUppercase{% + \ifnum \c@secnumdepth >\z@ + \thesection.\magyar@opt@@hdrtitleskip + \fi + ##1}}{}}% + \def\subsectionmark##1{% + \markright {% + \ifnum \c@secnumdepth >\@ne + \thesubsection.\magyar@opt@@hdrtitleskip + \fi + ##1}}% + \else + \let\@oddfoot\@empty + \def\@oddhead{\@@magyar@headrule3{\@@magyar@slshape\rightmark}\hfil\thepage}% + \let\@mkboth\markboth + \def\sectionmark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \thesection.\magyar@opt@@hdrtitleskip + \fi + ##1}}} + \fi}% + \expandafter\magyar@def@psheadings\expandafter{\CurrentOption}{article}% + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\@part + \def\@part[#1]#2{% article % added at Fri Jul 23 11:45:57 CEST 2004 + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{part}% + \ifnum\magyar@opt@@partnumber>0 \protected@edef\@currentlabel{\@huordinal\c@part}\fi + \addcontentsline{toc}{part}{\thepart.\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + {\parindent \z@ \raggedright + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >\m@ne + \Large\bfseries \magyar@huordinal@partheaddot\partname% hu + \csname par\endcsname\nobreak + \fi + \huge \bfseries #2% + \markboth{}{}\csname par\endcsname}% + \nobreak + \vskip 3ex + \@afterheading}}% +}{} + +\@@magyar@ifclassloaded{letter}{% + % letter.cls has no \part or \chapter. No need to hook anything here, but + % we make \magyar@hunumbers@errmsg just to pacify + % `\PassOptionsToPackage{defaults=prettiest}{magyar.ldf}'. + \let\magyar@hunumbers@errmsg\@empty + % Headings: inserting dots + % In order for this to take effect, \pagestyle{plain} should be put below + % \begin{document}. + \def\@@magyar@overridden@psheadings{% + \if@twoside + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@oddhead{\@@magyar@headrule3\@@magyar@slshape\headtoname{:} \ignorespaces\toname + \hfil \@date + \hfil \thepage.~\pagename}% + \let\@evenhead\@oddhead + \else + \let\@oddfoot\@empty + \def\@oddhead{\@@magyar@headrule3\@@magyar@slshape\headtoname{:} \ignorespaces\toname + \hfil \@date + \hfil \thepage.~\pagename}% + \fi}% + \expandafter\magyar@def@psheadings\expandafter{\CurrentOption}{letter}% +}{} +\@gobble +{^}% + +% --- mond= + +\if0\magyar@opt@@mond \@@magyar@skiplong\fi +%** Dat: `--\enspace' would be too much +%** Use this in the beginning of the paragraph. +\def\@@magyar@mond{% + % Dat: \noindent after \subsection in article.cls + % Dat: \indent after \subsection in amsart.cls (\@noskipsecfalse) + % vvv Dat: strange: \ifvmode anf \if@noskipsec. + \ifvmode\if@noskipsec\leavevmode\fi\par\vskip-\parskip + \else\@noskipsecfalse\par\vskip-\parskip\fi + \leavevmode--\hbox{ }} +\ifnum\magyar@opt@@mond \expandafter\ifx\csname mond\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \let\mond\@@magyar@mond +\fi +\@gobble +{^}% + +% --- hang= + +\if0\magyar@opt@@hang \@@magyar@skiplong\fi +%** Usage: \hang{-- } Foo\par +\def\@@magyar@hang#1{% + \begingroup + \setbox0\hbox{#1}% + \advance\linewidth-\wd0 % not \hsize + \advance\@totalleftmargin\wd0 + \edef\reserved@a{\parshape=1 \the\@totalleftmargin\space\space\the\linewidth\space}% + \par\noindent\kern-\wd0 \box0 % Dat: \box0 destroys \wd0 + \expandafter\endgroup\expandafter\begingroup\reserved@a + \let\hang@@par\par + \def\par{\hang@@par\endgroup}% OK, works even inside \begin{quotation} + %\def\par{\endgroup\par}% doesn't work, restores \parshape too early + \ignorespaces +}% +\ifnum\magyar@opt@@hang \expandafter\ifx\csname hang\endcsname\relax1\fi>1 % 21, 2, 11, 1 + \let\hang\@@magyar@hang +\fi +\@gobble +{^}% + +% vvv hyphenmins= + +\ifx\magyar@opt@@hyphenmins\@empty\else + \edef\reserved@a{\noexpand\@namedef{\CurrentOption hyphenmins}{\magyar@opt@@hyphenmins}} + \reserved@a +\fi + +% !! + +%\def\skipfoo #1foo {% +% \ifx#1\hfuzz\else +% (#1)% +% \expandafter\skipfoo +% \fi +%} + + +% vvv cjhebrewfix= % by pts@fazekas.hu at Tue Apr 19 18:26:54 CEST 2005 +% thanks to Zoltn Hamar for reporting the problem +% Dat: the ultimate solution is active=onlycs, but it limits other +% functionality +% Dat: use \def\h{\cjRL} in the preamble to abbreviate \cjRL +% wrong: \let\h\cjRL +% wrong: \newcommand{\h}[1]{\cjRL{#1}} +% Dat: cjhebrew uses the following strings for typesetting Hebrew letters: +% ' b g d h w z .h .t y k K l m M n N s ` p P .s .S q r ,s +s t * a a: +% /a e i o O u U E E: A A: | * : ; -- +% Dat: headings in `\pagestyle{headings} \section{(\cjRL{`l})}' doesn't work +% as expected, because \MakeUppercase capitalizes the L, too. +% Solution #1: +% \DeclareRobustCommand\mycjcommand{\cjRL{`l}} +% \section{(\mycjcommand)} +% Solution #2: (won't convert any heading to uppercase) +% % change the definition of \ps@headings, remove \MakeUppercase +% \makeatletter \def\ps@headings{% +% \let\@oddfoot\@empty \let\@mkboth\markboth +% \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% +% \def\sectionmark##1{\markright {\iffalse\MakeUppercase\fi{% +% \ifnum \c@secnumdepth >\m@ne \thesection\quad \fi##1}}}} +\if0\magyar@opt@@cjhebrewfix \@@magyar@skiplong\fi +% Dat: \cjRL{`l} in cjhebrew.sty should typeset two letters, but typesets +% only one if ` is \active. Use this code to fix it. +% Imp: also fix in command arguments etc. Change catcode later. +\if1\magyar@opt@@cjhebrewfix % =onlyouter +% Dat: this doesn't work in the argument of \section etc., but it allows +% LaTeX commands (\) in the arg of \cjRL +\def\@@magyar@cjhebrewfix{% + \let\@@magyar@orig@cjRL\cjRL + \def\cjRL{\begingroup\catcode\string``=12 \@@magyar@cjRL@low}% + \def\@@magyar@cjRL@low##1{\@@magyar@orig@cjRL{##1}\endgroup}} +\else % =yes +% Dat: this works in the argument of \section etc., but it doesn't allow +% LaTeX commands (\) in the arg of \cjRL +\def\reserved@b{\protect} +\edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b} +%\show\reserved@b +\edef\reserved@a{% + \noexpand\def\noexpand\@@magyar@cjhebrew@skipa##1\reserved@b{% + \noexpand\ifx##1\noexpand\hfuzz\noexpand\@empty\noexpand\else + ##1%(##1)% + \noexpand\expandafter\noexpand\@@magyar@cjhebrew@skipa + \noexpand\fi}% + \noexpand\def\noexpand\@@magyar@cjhebrew@skipb##1\noexpand\hfuzz{% Dat: this removes all `\protect ' + \noexpand\@@magyar@cjhebrew@skipa##1\reserved@b\noexpand\hfuzz\reserved@b}} +\reserved@a +\def\@@magyar@cjhebrewfix{% + \let\@@magyar@orig@cjRL\cjRL + %\let\@@magyar@orig@cjRL\bf + \DeclareRobustCommand\cjRL[1]{\begingroup + \toks@{##1}% + %\showthe\toks@ + \edef\reserved@a{\the\toks@}% + \edef\reserved@a{\expandafter\strip@prefix\meaning\reserved@a}% + % Dat: we're almost complete here, but 1st we want to remove all + % instances of `\protect ' (catcodes 12 and 10), which were inserted + % into \firstmark, i.e. with \section{A\cjRL{`l}B}, \firstmark + % becomes: `{}{\protect \csname foreignlanguage \endcsname {magyar}{\protect \MakeUppercase {1\hskip 1em\relax A\protect \cjRL {\protect `l}B}}}' + \edef\reserved@a{\expandafter\@@magyar@cjhebrew@skipb\reserved@a\hfuzz}% + %\show\reserved@a + \expandafter\@@magyar@orig@cjRL\expandafter{\reserved@a}\endgroup}} +\fi +\AtBeginDocument{\ifx\cjRL\@undefined\else\@@magyar@cjhebrewfix\fi} +\@gobble +{^}% + +% vvv varioref= + +\if0\magyar@opt@@varioref \@@magyar@skiplong\fi +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \@@magyar@setup@varioref} % Dat: we are we late enough so we override varioref.sty +% vvv don't apply changes if varioref.sty wasn't loaded +\AtBeginDocument{\expandafter\ifx\csname vpagerefrange\endcsname\relax + \let\@@magyar@setup@varioref\@empty\fi} +\def\@@magyar@setup@varioref{% Dat: must be a separate macro for suggestions= not to find our \reftextfaceafter etc. + \def\reftextfaceafter {\reftextvario{a t\'ul\-ol\-da\-lon}{a k\"o\-vet\-kez\H{o} ol\-da\-lon}}% + \def\reftextfacebefore{\reftextvario{a t\'ul\-ol\-da\-lon}{az el\H{o}\-z\H{o} ol\-da\-lon}}% + \def\reftextafter {a k\"o\-vet\-kez\H{o} ol\-da\-lon}% + \def\reftextbefore {az el\H{o}\-z\H{o} ol\-da\-lon}% + \def\reftextcurrent {ezen az ol\-da\-lon}% + \def\reftextfaraway##1{a~\csname @@magyar@az@lowxu\endcsname{\pageref{##1}}.~ol\-da\-lon}% + \def\reftextpagerange##1##2{a~\csname @@magyar@az@lowxu\endcsname{\pageref{##1}}% + --\pageref{##2}.~ol\-da\-la\-kon}% + \def\reftextlabelrange##1##2{{}\csname @@magyar@told\endcsname\ref{##1}+tol{} + \ref{##2}-ig}% Dat: `{}' is here for anti-\capitalize +} +\@gobble +{^}% + +% vvv fancyhdr= +% +% Dat: magyar.ldf has to be loaded first, otherwise it cannot fix +% `\usepackage{fancyhdr} \pagestyle{fancy}' + +\if0\magyar@opt@@fancyhdr \@@magyar@skiplong\fi +\expandafter\ifx\csname ps@fancy\endcsname\relax + % Emit a warning if \pagestyle{fancy} is used after this. + % The original definition: \def\ps@fancy{\@fancyplainfalse\ps@@fancy} + \def\@@magyar@@ps@fancy{\@fancyplainfalse\ps@@fancy}% +\else + \addto\ps@fancy{% works for article.cls, report.cls and book.cls + \@ifundefined{chapter}{% + % article: + % > \sectionmark=macro: + %#1->\markboth {\MakeUppercase {\ifnum \c@secnumdepth >\z@ + %\thesection \hskip 1em\relax \fi #1}}{}. + \def\sectionmark#1{\markboth{\MakeUppercase{\ifnum \c@secnumdepth>\z@ + \thesection.\magyar@opt@@hdrtitleskip \fi #1}}{}}% + % vvv Imp: do we need \if@twoside to set \subsectionmark here? + % #1->\markright {\ifnum \c@secnumdepth >\@ne \thesubsection + % \hskip 1em\relax \fi #1}. + \def\subsectionmark#1{\markright {\ifnum \c@secnumdepth >\@ne + \thesubsection.\magyar@opt@@hdrtitleskip \fi #1}}% + }{\def\chaptermark#1{ + \markboth{\MakeUppercase{\ifnum \c@secnumdepth>\m@ne + % report.cls doesn't have \if@mainmatter, so we replace it with \iftrue + \@gobble\iftrue % balance for quick skipping + \@@magyar@ifmainmatter % must be macro if quick skipping + \magyar@huordinal@chapterheaddot + \@chapapp.\magyar@opt@@hdrtitleskip + \fi % for \if@mainmatter + \fi#1}}{}}% + \def\sectionmark#1{\markright{\MakeUppercase{\ifnum \c@secnumdepth>\z@ + \thesection.\magyar@opt@@hdrtitleskip \fi#1}}}}}% + \def\@@magyar@@ps@fancy{\relax}% must be done after suggestions= +\fi +% This definition must be outside \iffalse. +\def\@@magyar@ifmainmatter{% + \csname \ifx\if@mainmatter\@undefined iftrue\else if@mainmatter\fi + \endcsname} +\@gobble +{^}% + +% vvv ntheoremfix= + +%** Fix for the `! Undefined control sequence. \select' error message with +%** ntheorem.sty +%** +%** The reason for the error is that magyar.ldf emits +%** \select@language{magyar} into .thm files (as well as .toc, .lof, .lot +%** etc. files), and LaTeX cannot read those files without \makeatletter +%** because of the @ in the \select@language command. +%** +%** Our solution: add \makeatletter somewhere before \@input{\jobname.thm} to +%** the macro which reads the .thm file (\thm@processlist) in ntheorem.sty . +\if0\magyar@opt@@ntheoremfix \@@magyar@skiplong\fi + \def\magyar@@ntheoremfix{% + \expandafter\ifx\csname ver@ntheorem.sty\endcsname\relax\else + \ifx\thm@processlist\@undefined\else + % This doesn't work, because the body of \thm@processlist contains # + %\expandafter\def\expandafter\thm@processlist\expandafter{% + % \expandafter\begingroup\expandafter\makeatletter + % \thm@processlist\endgroup}% + \expandafter\@temptokena\expandafter{% + \expandafter\begingroup\expandafter\makeatletter + \thm@processlist\endgroup}% + \edef\thm@processlist{\the\@temptokena}% + \fi + \fi + } + \AtBeginDocument{\magyar@@ntheoremfix} + \@gobble +{^}% + +% vvv extras=, must be last + +\ifnum\magyar@opt@@extras=0 + % Dat: \extrasmagyar might break compatibility with future LaTeX packages. + % Use this option to turn all of them off, for debugging purposes. + \expandafter\let\csname extras\CurrentOption\endcsname\@empty + \expandafter\let\csname noextras\CurrentOption\endcsname\@empty +\fi + +% --- Finish + +\ldf@finish\CurrentOption% \input \CurrentOption.cfg + +% !! doc: (\string!) +% !! doc: \umlautlow is much more important in OT1 cmr fonts than in T1 +% !! %** @example rtelmezs\/bellts +% \def\per{/\penalty\exhyphenpenalty\hskip\z@skip} +% !! \itemize identation +% !! layout.sty +%\DeclareOption{magyar}{% +% \def\Headertext{Fejl\'ec} +% \def\Bodytext{A dokumentum teste\qquad} +% \def\Footertext{L\'abl\'ec} +% \def\MarginNotestext{Sz\'el-\\jegyzet} +% \def\oneinchtext{1 inch} +% \def\notshown{nem l\'atszik} +% } +% !! vvv this w/ and w/o nathb.sty: $H_{`symm}$, $H_``symm $ +%\let\@@magyar@saved@mathoptions@on\mathoptions@on +%\def\mathoptions@on{% overrides nath.sty +% \catcode``12 % deactivate +% \begingroup\lccode`~``\lowercase{\endgroup\def~}{\abbreviation}% +% % ^^^ \def`{\abbreviation}, but with active ` +% \@@magyar@saved@mathoptions@on +%} +% !! doc: hegyes`-szg +% !! option to detect new magyar.ldf from a TeX file +% !! book.cls \appendix \chapter, sub-numbers into TOC, need dot after `A. fggelk'? Gyurgyk recommends `1. fggelk'. +% !! \MathReal, frenchb.ldf, \nombre +% !! \told\ref{foo}+ban{}, if \foo expands to empty (no \section etc. in .tex file) +% !! french.ldf number decimal comma etc. +% !! \hunnewlabel should store `table', `figure', `section', `equation' etc. +% !! letter.cls +% !! should \newlabel emit a `.' ? (now doesn't) -- compatibility +% `\aref{ekezetek}.\ tblzat' needs explicit `.' +% !! alternative solutions for meny-nyi (possibly defining ligatures?) +% !! baseline grid? +% !! Bujdos`--Wettl: http://www.math.bme.hu/~wettl/plcv/pdf/BWfinal.pdf +% !! some comments not related to magyar.ldf, but to *hyph.tex etc. +% !! add their postpara symbols +% !! section title sizes +% !! baseline grid +% !! rigid \parskip=0pt unless in prospestus or other short doc with \parindent=0pt +% !! add their \leftmargini and variations +% !! substitute bold-extended fonts with bold fonts +% !! no page numbers on blank pages +% !! \hsize <= 24cc (or 20cc) => parindent:=1quad else 2quad +% !! length of last line of par... (break line) +% !! reduce vertical whitespace around \section +% +% !! \MathReal{1.25 cm} +% !! \H,\. in OT1 \texttt +% !! maybe \index{|run husort.pl} +% !! virtual fonts to support \umlauthigh and \umlautlow in T1 encoding +% fnt_def1: scaled size is relative (2^20==1), design size is absolute (same as in local TFM) +% disallowed DVI: bop,eop, >=243 +% down(2^19) moves down 10/2 pt if the design size is 10pt +% dimensions must be <2^24 (160pt, ~5.62cm) +% w=x=y=z=0 +% !! \begin{description} \bf -> \em ?, auto-dot +% !! \def\mdqon{\shorthandon{"}} \def\mdqoff{\shorthandoff{"}} (possibly deactivate `?' etc.) +% !! fix \initiate@active@char for other languages +% !! \addto\shorthandsspanish... +% !! spanish.ldf \es@activate, \if@safe@actives\then +% !! esperanto.ldf why? \declare@shorthand{system}{^}{\csname normal@char\string^\endcsname} +% !! add other low accents for umlaut=low: \. (i) and \' +% !! full amsart.cls compatibility?? +% !! huhyph.tex wrong \showhyphens{azthehe}% az-t-hehe +% !! huhyph.tex wrong zs-hehe +% !! huhyph.tex why sza-badstrand, but szbadsg-rand +% !! \index{foo|hyperpagearg{\textbf}} +% !! combine \magyar@opt@@titleskip, amstocnumskip and \magyar@post@... +% !! \begin{textqq} ? combined command and env +% !! tmagyar.tex \tableofcontents wide \section +% !! \restoreparindent in \item in \itemize +% \edef\restoreparindent{\parindent\the\parindent\relax} in \@listi +% !! 1848 mrcius+nak kzepe +% !! should \told insert \, ?? (no, only \told*??) +% !! \told45{-ed-hez} ?? +% !! \told{45}-ed-hez ?? +% !! \told45\od\hoz \told45+\od\hoz +% !! \told45+adik+val +ad+val etc. +% !! \azhuphy +% !! \huphy{-3331234.5678pF^{-1}} -> $-$3\,331\,234,5678\,pF^{-1} +% !! \huphy if non-Hungarian is the lang {,}->{.} +% !! \huphy ifmmode? +% !! french.ldf \CyrillicGuillemets +% !! french.ldf \LasyGuillemets +% !! huplain.bst editor = "Wizar{\BN dj} V. Oz and Mihalis Yannakakis", +% !! huplain.bst w/o magyar.ldf +% !! hyperref.sty bugfix when turning hyperref.sty on, \ref is spoiled: +% w/ or w/o magyar.ldf +% ! Argument of \@fifthoffive has an extra }. +% +% \par +% l.48 Ld. \ref{tab} +% !! > Kiprbltam, s tnyleg pontosan ugyanaz a fjl magyar.ldf (texmf fban) s +% > magyar-0510.ldf (aktulis knyvtrban) nven ms eredmnyt ad. +% (cjhebrew) +% !! a4wide.sty doesn't compile +% \documentclass[12pt,a4paper]{article} +% \usepackage{t1enc} +% \usepackage{times}% Imp: math mode +% \usepackage[magyar]{babel} +% \usepackage{graphicx} +% \usepackage[latin2]{inputenc} +% %\usepackage{a4wide}% SUXX: doesn't work with magyar.ldf +% \pagestyle{empty} +% \begin{document} +% !! % Imp: magyar.ldf: \textdt{tudja`=e}, \textdt{tudja`-e}; +% !! space in front of `;' is too large with \usepackage{times} +% \declare@shorthand{\CurrentOption}{;}{\magyar@thinspaced;} +% !! doc: `- not suitable in .bib files etc. +% !! \cite{foo,bar} -> `[2, 1]' increasing order preferred +% Imp: indent using the maximum footnotemark *** count on the current page +% Imp: generate ,,harminchrombl'' by \told{\@huordinal{33}}+bol etc. +% +% Dat: \mathcode`\,="013B % s gy a tizedes trtekben matematikai mdban sem lesz kz +% Dat: \mathchardef\comma="613B % a vesz (,) ami matematikai mdban elvlaszt karakterknt hasznlhat +% Dat: additive \PassOptionsToPackage{foo=bar}{magyar.ldf} +% Dat: for book.cls and article.cls: the user has to run \pagestyle{headings} after \selectlanguage{magyar} -- for performance reasons +% Dat: doc: \let\@@magyar@setup@psheadings\relax maybe needed in the preamble +% Dat: \pagestyle{headings} is forced \AtBeginDocument -- user should change it later +% Dat: babel.def assumes we have: \textquotedblright \textquoteright \ll \gg +% < > +% Dat: babel.def defines for OT1 and others: \quotedblbase \quotesinglbase +% \guillemotleft \guillemotright \guilsinglleft \guilsinglright \ij \IJ +% \dj \DJ \SS +% Dat: babel.def defines the following robust commands in math and text modes: +% \glq \grq \glqq \grqq \flq \frq \flqq \frqq +% Dat: OT1 encoding respects accents=low (\umlauthigh and \umlautlow), but T1 +% doesn't -- but we need T1 for hyphenation of accented words +% Dat: \usepackage{t1enc} is faster than \usepackage[T1]{fontenc} +% Dat: \languageattribute should be specified in the document preamble, and +% not changed again +% Dat: it is possible to have 1 letter, e.g \declare@shorthand{turkish}{=}{...} +% Dat: Babel \@activated emits a \PackageInfo entry +% Dat: (` `) is equivalent to (``), because TeX ignores spaces before macro +% arguments +% Dat: example of the so-called ``dual load'': +% \PassOptionsToPackage{frenchspacing=yes}{magyar.ldf} +% \PassOptionsToPackage{frenchspacing=no}{hungarian.ldf} +% \usepackage[hungarian,magyar]{babel} +% Dat: argument of \az and \told may not contain \if..., \else and \fi +% OK: works with article.cls: (mathbrk=fix) +% \noindent s ebbl a tovbbi hrom rsz terlete +% $\displaystyle{1\over3}-{1\over 4}={1\over 12}$, +% $\displaystyle{1\over 2}-{1\over 4}={1\over 4}$ s +% $\displaystyle{1\over 4}+\bigg({1\over 2}-{1\over 3}\bigg)={1\over 4}+{1\over 6}}=\displaystyle{5\over 12}$ +% terletegysg. +% OK: doc in magyarldf-doc.tex: enumeration in math, see $a,\ b$ in nath.sty +% OK: mathbrk=fix +\\+ (all binary ops and relations) in math, \nobreak\cdot, \nobreak\slash +% OK: footnote text indented, asterisks on pages +% OK: Kiss Eld\nobreak\,\nobreak--\,Nagy Pl ... +% OK: \partname in book.cls (seems to work now) +% OK: Els rsz +% OK: smartly disable active chars in preamble +% OK: \@inpenc@undefined defined and != latin2 => recommend \usepackage[latin2]{inputenc} +% OK: \encodingdefault != T1 => recommend \usepackage{t1enc} +% OK: Warning if \l@hungarian vs \l@magyar undefined +% OK: amsart.cls \listoftables overfull \hbox (\magyar@amslevelfix) +% OK: dzs-dzs +% OK: \expandafter\addto\csname extras\CurrentOption\endcsname{\bbl@frenchspacing} +% OK: provide \magyarhyphenmins +% OK: compatibility with latex.ltx, theorem.sty, ntheorem.sty, amsthm.sty +% OK: \PackageWarning if \magyarOptions defined too late +% OK: like frenchb.ldf \declare@shorthand{french}{;}{ +% OK: \told\ref{hellopart}+es{} rszt olvasd el. +% OK: \told appends suffixes to numbers +% OK: activeacute, activegrave babel options +% OK: even more parts made conditional +% OK: \@hunumeral \@huordinal \@Hunumeral \@Huordinal +% OK: negative numbers \told-5-nek, `mnusz kettedik' etc. +% OK: magyar.ldf defaults=hu-min (mathbrk=define) $x+116=\break x-97$ adds space only to BOL; added \nobreak before \discretionary -- and the problem was solved +% OK: fixed. varioref.sty (2001/09/04 v1.3c) mustn't be loaded with option +% [magyar], because that option contains a stupid \AtBeginDocument hook +% added to \extrasmagyar +% OK: Bujdos`--Wettl: add their {itemize} symbols and {enumerate} styles +% OK: spacing around excl. marks in math mode ! closing(5) -> punct(6) +% better solution (found in nath.sty): \def!{\mathchar20513\relax\mathopen{}\mathinner{}}, +% because it doesn't need braces +% No: \@makecaption in frenchb.ldf -> magyar.ldf + +\@@magyar@restcats +\endinput% of magyar.ldf diff --git a/src/manual_build.bat b/src/manual_build.bat new file mode 100644 index 0000000..220332b --- /dev/null +++ b/src/manual_build.bat @@ -0,0 +1,8 @@ +pdflatex --quiet %DOCUMENT% +bibtex -quiet %DOCUMENT% +pdflatex --quiet %DOCUMENT% +pdflatex --quiet %DOCUMENT% + +@REM move %DOCUMENT%.pdf ../pdf/%DOCUMENT%.pdf + +@del *.aux *.dvi *.thm *.lof *.log *.lot *.fls *.out *.toc *.bbl *.blg diff --git a/src/thesis.tex b/src/thesis.tex new file mode 100644 index 0000000..c19c142 --- /dev/null +++ b/src/thesis.tex @@ -0,0 +1,105 @@ +% Change language to en_GB (recommended) or en_US for English documents +\documentclass[11pt,a4paper,oneside]{report} % Single-side +%\documentclass[11pt,a4paper,twoside,openright]{report} % Duplex + +\input{include/packages} + +% Set the main variables +\newcommand{\vikszerzoVezeteknev}{Torma} +\newcommand{\vikszerzoKeresztnev}{Krist\'of} + +\newcommand{\vikkonzulensAMegszolitas}{dr.~} +\newcommand{\vikkonzulensAVezeteknev}{Maliosz} +\newcommand{\vikkonzulensAKeresztnev}{Markosz} + +\newcommand{\vikkonzulensBMegszolitas}{} +\newcommand{\vikkonzulensBVezeteknev}{Konzulens} +\newcommand{\vikkonzulensBKeresztnev}{Kettő} + +\newcommand{\vikkonzulensCMegszolitas}{} +\newcommand{\vikkonzulensCVezeteknev}{} +\newcommand{\vikkonzulensCKeresztnev}{} + +\newcommand{\vikcim}{Elektronikus terelők} % Cím +\newcommand{\viktanszek}{\bmetmit} % Tanszék +\newcommand{\vikdoktipus}{\bsc} % Dokumentum típusa (\bsc vagy \msc) +\newcommand{\vikmunkatipusat}{szakdolgozatot} % a "hallgató nyilatkozat" részhez: szakdolgozatot vagy diplomatervet + +%\input{include/tdk-variables} +\newcommand{\szerzoMeta}{\vikszerzoVezeteknev{} \vikszerzoKeresztnev} % egy szerző esetén +%\newcommand{\szerzoMeta}{\vikszerzoVezeteknev{} \vikszerzoKeresztnev, \tdkszerzoB} % két szerző esetén + +%Language configuration -- choose one +% Beállítások magyar nyelvű dolgozathoz +\input{include/thesis-hu} +% Settings for English documents +%\input{include/thesis-en} + +\input{include/preamble} + +%-------------------------------------------------------------------------------------- +% Table of contents and the main text +%-------------------------------------------------------------------------------------- +\begin{document} + +\pagenumbering{gobble} + +%These includes define guidelines -- remove these +%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +%\include{include/guideline} +%\include{include/project} + +\selectthesislanguage + +%Titlepage -- choose one from below +%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +\input{include/titlepage} % Szakdolgozat/Diplomaterv címlap +%\include{include/titlepage-tdk} % TDK címlap +%\include{include/titlepage-otdk} % OTDK címlap + + +% Table of Contents +%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +\tableofcontents\vfill + + +% Declaration and Abstract +%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +\input{include/declaration} %Hallgatói nyilatkozat -- TDK és OTDK esetén törlendő! +\input{content/abstract} %Összefoglaló -- TDK és OTDK esetén nem kötelező + + +% The main part of the thesis +%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +\pagenumbering{arabic} + +%TODO import your own content +\input{content/introduction} +\input{content/latex-tools} +\input{content/thesis-format} +\input{content/template-usage} + + +% Acknowledgements +%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +\input{content/acknowledgement} + + +% List of Figures, Tables +%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +%\listoffigures\addcontentsline{toc}{chapter}{\listfigurename} +%\listoftables\addcontentsline{toc}{chapter}{\listtablename} + + +% Bibliography +%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +\addcontentsline{toc}{chapter}{\bibname} +\bibliography{bib/mybib} + + +% Appendix +%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +\input{content/appendices} + +%\label{page:last} +\end{document}