summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/generic/babel/magyar.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/generic/babel/magyar.dtx')
-rw-r--r--Master/texmf-dist/source/generic/babel/magyar.dtx1411
1 files changed, 1411 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/babel/magyar.dtx b/Master/texmf-dist/source/generic/babel/magyar.dtx
new file mode 100644
index 00000000000..febd734ad76
--- /dev/null
+++ b/Master/texmf-dist/source/generic/babel/magyar.dtx
@@ -0,0 +1,1411 @@
+% \iffalse meta-comment
+%
+% Copyright 1989-2005 Johannes L. Braams and any individual authors
+% listed elsewhere in this file. All rights reserved.
+%
+% This file is part of the Babel system.
+% --------------------------------------
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2003/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer of this work is Johannes Braams.
+%
+% The list of all files belonging to the Babel system is
+% given in the file `manifest.bbl. See also `legal.bbl' for additional
+% information.
+%
+% The list of derived (unpacked) files belonging to the distribution
+% and covered by LPPL is defined by the unpacking scripts (with
+% extension .ins) which are part of the distribution.
+% \fi
+% \CheckSum{1538}
+% \iffalse
+% Tell the \LaTeX\ system who we are and write an entry on the
+% transcript.
+%<*dtx>
+\ProvidesFile{magyar.dtx}
+%</dtx>
+%<code>\ProvidesLanguage{magyar}
+%\fi
+%\ProvidesFile{magyar.dtx}
+ [2005/03/30 v1.4j Magyar support from the babel system]
+%\iffalse
+%% File `magyar.dtx'
+%% Babel package for LaTeX version 2e
+%% Copyright (C) 1989 - 2005
+%% by Johannes Braams, TeXniek
+%
+%% Magyar Language Definition File
+%% Copyright (C) 1989 - 2005
+%% by Johannes Braams, TeXniek
+%% \'Arp\'ad B\'IR\'O
+%% J\'ozsef B\'ERCES
+%
+% Please report errors to: J.L. Braams babel braams.cistron.nl
+%
+% This file is part of the babel system, it provides the source
+% code for the Hungarian language definition file. A contribution
+% was made by Attila Koppanyi (attila@cernvm.cern.ch).
+%<*filedriver>
+\documentclass{ltxdoc}
+\newcommand*\TeXhax{\TeX hax}
+\newcommand*\babel{\textsf{babel}}
+\newcommand*\langvar{$\langle \it lang \rangle$}
+\newcommand*\note[1]{}
+\newcommand*\Lopt[1]{\textsf{#1}}
+\newcommand*\file[1]{\texttt{#1}}
+\begin{document}
+ \DocInput{magyar.dtx}
+\end{document}
+%</filedriver>
+%\fi
+% \GetFileInfo{magyar.dtx}
+%
+% \changes{magyar-1.0a}{1991/07/15}{Renamed \file{babel.sty} in
+% \file{babel.com}}
+% \changes{magyar-1.1}{1992/02/16}{Brought up-to-date with babel 3.2a}
+% \changes{magyar-1.1d}{1994/02/08}{Further spelling corrections}
+% \changes{magyar-1.1e}{1994/02/09}{Still more spelling corrections}
+% \changes{magyar-1.2}{1994/02/27}{Update for \LaTeXe}
+% \changes{magyar-1.3c}{1994/06/26}{Removed the use of \cs{filedate}
+% and moved identification after the loading of \file{babel.def}}
+% \changes{magyar-1.3g}{1996/07/12}{Replaced \cs{undefined} with
+% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency
+% with \LaTeX}
+% \changes{magyar-1.4a}{1998/06/04}{order inverting in
+% headings/titles/captions; definite article handling; active char
+% for special hyphenation}
+% \changes{magyar-1.4d}{2001/11/15}{Corrected checksum}
+% \changes{magyar-1.4j}{2004/11/17}{Added missing comment characters
+% in the redefinitions of \cs{ps@headings} to prevent spurious
+% spaces}
+%
+% \section{The Hungarian language}
+%
+% The file option \file{\filename} defines all the
+% language definition macros for the Hungarian language.
+%
+% The \babel{} support for the Hungarian language until file
+% version 1.3i was essentially changing the English document
+% elements to Hungarian ones, but because of the differences
+% between these too languages this was actually unusable (`Part I'
+% was transferred to `R\'esz I' which is not usable instead of `I.\
+% r\'esz'). To enhance the typesetting facilities for Hungarian
+% the following should be considered:
+% \begin{itemize}
+% \item In Hungarian documents there is a period after
+% the part, section, subsection \mbox{etc.} numbers.
+%
+% \item In the part, chapter, appendix name the number
+% (or letter) goes before the name, so `Part I' translates to
+% `I.\ r\'esz'.
+%
+% \item The same is true with captions
+% (`Table 2.1' goes to `2.1.\ t\'abl\'azat').
+%
+% \item There is a period after the caption name instead of a colon.
+% (`Table 2.1:' goes to `2.1.\ t\'abl\'azat.')
+%
+% \item There is a period at the end of the title in a run-in head
+% (when |afterskip<0| in |\@startsection|).
+%
+% \item Special hyphenation rules must be applied
+% for the so-called long double consonants (ccs, ssz,\dots).
+%
+% \item The opening quotation mark is like the German one
+% (the closing is the same as in English).
+%
+% \item In Hungarian figure, table, \mbox{etc.}
+% referencing a definite article is also incorporated.
+% The Hungarian definite articles behave like the English
+% indefinite ones (`a/an'). `a' is used for words beginning
+% with a consonant and `az' goes for a vowel.
+% Since some numbers begin with a vowel some others
+% with a consonant some commands should be provided for
+% automatic definite article generation.
+% \end{itemize}
+%
+% Until file version 1.3i\footnote{That file was
+% last revised on 1996/12/23 with a contribution by the next
+% authors: Attila Kopp\'anyi (\texttt{attila@cernvm.cern.ch}),
+% \'Arp\'ad B\'{\i}r\'o (\texttt{JZP1104@HUSZEG11.bitnet}),
+% Istv\'an Hamecz (\texttt{hami@ursus.bke.hu)} and
+% Dezs\H{o} Horv\'ath (\texttt{horvath@pisa.infn.it}).}
+% the special typesetting rules of the Hungarian language
+% mentioned above were not taken into consideration.
+% This version (\fileversion)\footnote{It was written by J\'ozsef
+% B\'erces (\texttt{jozsi@docs4.mht.bme.hu}) with some help from
+% Ferenc Wettl (\texttt{wettl@math.bme.hu}) and an idea from David
+% Carlisle (\texttt{david@dcarlisle.demon.co.uk}).}
+% enables \babel{} to typeset `good-looking' Hungarian texts.
+%
+% \DescribeMacro\ontoday
+% The |\ontoday| command works like |\today| but
+% produces a slightly different date format used in expressions such
+% as `on February 10th'.
+%
+% \DescribeMacro\Az
+% The commands |\Az#1| and |\az#1| write the correct
+% definite article for the argument and the argument itself
+% (separated with a |~|). The star-forms (|\Az*| and |\az*|)
+% produce the article only.
+%
+% \DescribeMacro\Azr
+% |\Azr#1| and |\azr#1| treat the argument as a label so expand
+% it then write the definite article for |\r@#1|, a non-breakable
+% space then the label expansion. The star-forms do not print
+% the label expansion. |\Azr(#1| and |\azr(#1| are used for
+% equation referencing with the syntax |\azr(|\textit{label}|)|.
+%
+% \DescribeMacro\Aref
+% There are two aliases |\Aref| and |\aref| for |\Azr| and |\azr|,
+% respectively. During the preparation of a document it is not
+% known in general, if the code `|a~\ref{|\textit{label}|}|' or the code
+% `|az~\ref{|\textit{label}|}|' is the grammatically correct one. Writing
+% `|\aref{|\textit{label}|}|' instead of the previous ones solves the
+% problem.
+%
+% \DescribeMacro\Azp
+% |\Azp#1| and |\azp#1| also treat the argument as a label but
+% use the label's page for definite article determination.
+% There are star-forms giving only the definite article without
+% the page number.
+%
+% \DescribeMacro\Apageref
+% There are aliases |\Apageref| and |\apageref| for |\Azp| and
+% |\azp|, respectively. The code |\apageref{|\textit{label}|}|
+% is equivalent either to |a~\pageref{|\textit{label}|}| or
+% to |az~\pageref{|\textit{label}|}|.
+%
+% \DescribeMacro\Azc
+% |\Azc| and |\azc| work like the |\cite| command but
+% (of course) they insert the definite article. There can be
+% several comma separated cite labels and in that case the
+% definite article is given for the first one.
+% They accept |\cite|'s optional argument.
+% There are star-forms giving the definite article only.
+%
+% \DescribeMacro\Acite
+% There are aliases |\Acite| and |\acite| for
+% |\Azc| and |\azc|, respectively.
+%
+% For this language the character |`| is made active.
+% Table~\ref{tab:hun-actives} shows the shortcuts.
+% The main reason for the activation of the |`| character
+% is to handle the special hyphenation of the long double
+% consonants.
+% \begin{table}
+% \begin{center}
+% \begin{tabular}{lp{45mm}p{47mm}}
+% shortcut & explanation & example \\
+% \hline
+% |``| & same as |\glqq| in \babel{}, or
+% |\quotedblbase| in T1
+% (opening quotation mark, like ,,)
+% & |``id\'ezet''|$\longrightarrow$,,id\'ezet'{}' \\
+% |`c|, |`C| & ccs is hyphenated as cs-cs
+% & |lo`ccsan|$\longrightarrow$locs-csan \\
+% |`d|, |`D| & ddz is hyphenated as dz-dz
+% & |e`ddz\"unk|$\longrightarrow$edz-dz\"unk \\
+% |`g|, |`G| & ggy is hyphenated as gy-gy
+% & |po`ggy\'asz|$\longrightarrow$pogy-gy\'asz \\
+% |`l|, |`L| & lly is hyphenated as ly-ly
+% & |Kod\'a`llyal|$\longrightarrow$Kod\'aly-lyal \\
+% |`n|, |`N| & nny is hyphenated as ny-ny
+% & |me`nnyei|$\longrightarrow$meny-nyei \\
+% |`s|, |`S| & ssz is hyphenated as sz-sz
+% & |vi`ssza|$\longrightarrow$visz-sza \\
+% |`t|, |`T| & tty is hyphenated as ty-ty
+% & |po`ttyan|$\longrightarrow$poty-tyan \\
+% |`z|, |`Z| & zzs is hyphenated as zs-zs
+% & |ri`zzsel|$\longrightarrow$rizs-zsel \\
+% \end{tabular}
+% \caption{The shortcuts defined in \file{magyar.ldf}}
+% \label{tab:hun-actives}
+% \end{center}
+% \end{table}
+%
+%
+% \StopEventually{}
+%
+% The macro |\LdfInit| takes care of preventing that this file is
+% loaded more than once, checking the category code of the
+% \texttt{@} sign, etc.
+% \changes{magyar-1.3h}{1996/11/03}{Now use \cs{LdfInit} to perform
+% initial checks}
+% \begin{macrocode}
+%<*code>
+\LdfInit{magyar}{caption\CurrentOption}
+% \end{macrocode}
+%
+% When this file is read as an option, i.e. by the |\usepackage|
+% command, \texttt{magyar} will be an `unknown' language in which
+% case we have to make it known. So we check for the existence of
+% |\l@magyar| or |\l@hungarian| to see whether we have to do
+% something here.
+%
+% \changes{magyar-1.0b}{1991/10/29}{Removed use of \cs{@ifundefined}}
+% \changes{magyar-1.1}{1992/02/16}{Added a warning when no hyphenation
+% patterns were loaded.}
+% \changes{magyar-1.3c}{1994/06/26}{Now use \cs{@nopatterns} to
+% produce the warning}
+% \changes{magyar-1.4d}{2003/09/18}{The \cs{else} clause got outside
+% of the \cs{if} statement, breaking the Hungarian support}
+% \changes{magyar-1.4g}{2003/10/07}{Further change to make it work
+% when neither \cs{l@magyar} nor \cs{l@hugarian} are defined}
+% \begin{macrocode}
+\ifx\l@magyar\@undefined
+ \ifx\l@hungarian\@undefined
+ \@nopatterns{Magyar}
+ \adddialect\l@magyar0
+ \else
+ \let\l@magyar\l@hungarian
+ \fi
+\fi
+% \end{macrocode}
+% The statement above makes sure that |\l@magyar| is always
+% defined; if |\l@hungarian| is still undefined we make it equal to
+% |\l@magyar|.
+% \begin{macrocode}
+\ifx\l@hungarian\@undefined
+ \let\l@hungarian\l@magyar
+\fi
+% \end{macrocode}
+%
+% The next step consists of defining commands to switch to (and
+% from) the Hungarian language.
+%
+% \begin{macro}{\captionsmagyar}
+% The macro |\captionsmagyar| defines all strings used in the four
+% standard document classes provided with \LaTeX.
+% \changes{magyar-1.1}{1992/02/16}{Added \cs{seename}, \cs{alsoname}
+% and \cs{prefacename}}
+% \changes{magyar-1.1}{1993/07/15}{\cs{headpagename} should be
+% \cs{pagename}}
+% \changes{magyar-1.1c}{1994/01/05}{Added translations, fixed typos}
+% \changes{magyar-1.3e}{1995/07/04}{Added \cs{proofname} for
+% AMS-\LaTeX}
+% \changes{magyar-1.3f}{1996/04/18}{translated Proof and replaced some
+% translations}
+% \changes{magyar-1.4a}{1998/06/04}{the initial letter of fejezet,
+% t\'abl\'azat, r\'esz, l\'asd changed to lowercase}
+% \begin{macrocode}
+\@namedef{captions\CurrentOption}{%
+ \def\prefacename{El\H osz\'o}%
+% \end{macrocode}
+% For the list of references at the end of an article we have a
+% choice between two words, `Referenci\'ak' (a Hungarian version of
+% the English word) and `Hivatkoz\'asok'. The latter seems to
+% be in more widespread use.
+% \begin{macrocode}
+ \def\refname{Hivatkoz\'asok}%
+% \end{macrocode}
+% If you have a document with a summary instead of an abstract you
+% might want to replace the word `Kivonat' with
+% `\"Osszefoglal\'o'.
+% \begin{macrocode}
+ \def\abstractname{Kivonat}%
+% \end{macrocode}
+% The Hungarian version of `Bibliography' is `Bibliogr\'afia', but
+% a more natural word to use is `Irodalomjegyz\'ek'.
+% \begin{macrocode}
+ \def\bibname{Irodalomjegyz\'ek}%
+ \def\chaptername{fejezet}%
+ \def\appendixname{F\"uggel\'ek}%
+ \def\contentsname{Tartalomjegyz\'ek}%
+ \def\listfigurename{\'Abr\'ak jegyz\'eke}%
+ \def\listtablename{T\'abl\'azatok jegyz\'eke}%
+ \def\indexname{T\'argymutat\'o}%
+ \def\figurename{\'abra}%
+ \def\tablename{t\'abl\'azat}%
+ \def\partname{r\'esz}%
+ \def\enclname{Mell\'eklet}%
+ \def\ccname{K\"orlev\'el--c\'\i mzettek}%
+ \def\headtoname{C\'\i mzett}%
+ \def\pagename{oldal}%
+ \def\seename{l\'asd}%
+ \def\alsoname{l\'asd m\'eg}%
+% \end{macrocode}
+% Besides the Hungarian word for Proof, `Bizony\'\i t\'as' we can
+% also name Corollary (K\"ovetkezm\'eny), Theorem (T\'etel) and
+% Lemma (Lemma).
+% \changes{magyar-1.4b}{2000/09/20}{Added \cs{glossaryname}}
+% \changes{magyar-1.4h}{2003/11/20}{Inserted translation for Glossary}
+% \begin{macrocode}
+ \def\proofname{Bizony\'\i t\'as}%
+ \def\glossaryname{Sz\'ojegyz\'ek}%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\datemagyar}
+% The macro |\datemagyar| redefines the command |\today| to produce
+% Hungarian dates.
+% \changes{magyar-1.1d}{1994/02/08}{Rewritten to produce the correct
+% date format}
+% \changes{magyar-1.4a}{1998/06/10}{Use \cs{number}\cs{day} instead of
+% \cs{ifcase} construct}
+% \begin{macrocode}
+\@namedef{date\CurrentOption}{%
+ \def\today{%
+ \number\year.\nobreakspace\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.}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ondatemagyar}
+% The macro |\ondatemagyar| produces Hungarian dates which have the
+% meaning `\emph{on this day}'. It does not redefine the command
+% |\today|.
+% \changes{magyar-1.1c}{1994/01/05}{The date number should not be
+% followed by a dot.}
+% \changes{magyar-1.1d}{1994/02/08}{Renamed from \cs{datemagyar};
+% nolonger redefines \cs{today}.}
+% \begin{macrocode}
+\@namedef{ondate\CurrentOption}{%
+ \number\year.\nobreakspace\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}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\extrasmagyar}
+% \begin{macro}{\noextrasmagyar}
+% The macro |\extrasmagyar| will perform all the extra definitions
+% needed for the Hungarian language. The macro |\noextrasmagyar| is
+% used to cancel the actions of |\extrasmagyar|.
+%
+% \begin{macrocode}
+ \@namedef{extras\CurrentOption}{%
+ \expandafter\let\expandafter\ontoday
+ \csname ondate\CurrentOption\endcsname}
+\@namedef{noextras\CurrentOption}{\let\ontoday\@undefined}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Now we redefine some commands included into \file{latex.ltx}.
+% The original form of a command is always saved with
+% |\babel@save| and the changes are added to |\extrasmagyar|.
+% This ensures that the Hungarian version of a macro is alive
+% \emph{only} if the Hungarian language is active.
+%
+% \begin{macro}{\fnum@figure}
+% \begin{macro}{\fnum@table}
+% In figure and table captions the order of the figure/table
+% number and |\figurename|\hspace{0pt}/|\tablename| must be changed.
+% To achieve this |\fnum@figure| and |\fnum@table| are
+% redefined and added to |\extrasmagyar|.
+% \changes{magyar-1.4i}{2004/02/20}{Use \cs{nobreakspace} instead of
+% tilde}
+% \begin{macrocode}
+\expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\fnum@figure
+ \def\fnum@figure{\thefigure.\nobreakspace\figurename}}
+\expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\fnum@table
+ \def\fnum@table{\thetable.\nobreakspace\tablename}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@makecaption}
+% The colon in a figure/table caption must be replaced by a dot
+% by redefining |\@makecaption|.
+% \begin{macrocode}
+\expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\@makecaption
+ \def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \sbox\@tempboxa{#1. #2}%
+ \ifdim \wd\@tempboxa >\hsize
+ {#1. #2\csname par\endcsname}
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@caption}
+% There should be a dot after the figure/table number in lof/lot,
+% so |\@caption| is redefined.
+% \begin{macrocode}
+\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}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@seccntformat}
+% In order to have a dot after the section number
+% |\@seccntformat| is redefined.
+% \begin{macrocode}
+\expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\@seccntformat
+ \def\@seccntformat#1{\csname the#1\endcsname.\quad}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@sect}
+% 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.
+% \begin{macrocode}
+\expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \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}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@ssect}
+% 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|.
+% \begin{macrocode}
+\expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \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}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@begintheorem}
+% \begin{macro}{\@opargbegintheorem}
+% Order changing and dot insertion in theorem by redefining
+% |\@begintheorem| and |\@opargbegintheorem|.
+% \begin{macrocode}
+\expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\@begintheorem
+ \def\@begintheorem#1#2{\trivlist
+ \item[\hskip \labelsep{\bfseries #2.\ #1.}]\itshape}%
+ \babel@save\@opargbegintheorem
+ \def\@opargbegintheorem#1#2#3{\trivlist
+ \item[\hskip \labelsep{\bfseries #2.\ #1\ (#3).}]\itshape}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The next step is to redefine some macros included into the
+% class files. It is determined which class file is loaded
+% then the original form of the macro is saved and the changes
+% are added to |\extrasmagyar|.
+%
+% First we check if the \file{book.cls} is loaded.
+% \begin{macrocode}
+\@ifclassloaded{book}{%
+% \end{macrocode}
+% \begin{macro}{\ps@headings}
+% The look of the headings is changed: we have to insert some dots
+% and change the order of chapter number and |\chaptername|.
+% \begin{macrocode}
+ \expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\ps@headings}
+ \expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \if@twoside
+ \def\ps@headings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+ \let\@mkboth\markboth
+ \def\chaptermark##1{%
+ \markboth {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \thechapter. \@chapapp. \ %
+ \fi
+ \fi
+ ##1}}{}}%
+ \def\sectionmark##1{%
+ \markright {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\z@
+ \thesection. \ %
+ \fi
+ ##1}}}}%
+ \else
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+ \let\@mkboth\markboth
+ \def\chaptermark##1{%
+ \markright {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \thechapter. \@chapapp. \ %
+ \fi
+ \fi
+ ##1}}}}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@part}
+% At the beginning of a part we need \mbox{eg.} `I.\ r\'esz'
+% instead of `Part I' (in toc too).
+% To achieve this |\@part| is redefined.
+% \begin{macrocode}
+ \expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\@part
+ \def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \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 \thepart.\nobreakspace\partname
+ \csname par\endcsname
+ \vskip 20\p@
+ \fi
+ \Huge \bfseries #2\csname par\endcsname}%
+ \@endpart}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@chapter}
+% The same changes are made to chapter.
+% First the screen typeout and the toc are changed by
+% redefining |\@chapter|.
+% \begin{macrocode}
+ \expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\@chapter
+ \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \refstepcounter{chapter}%
+ \typeout{\thechapter.\space\@chapapp.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter.}#1}%
+ \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}%
+ \@afterheading
+ \fi}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@makechapterhead}
+% Then the look of the chapter-start is modified by redefining
+% |\@makechapterhead|.
+% \begin{macrocode}
+ \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 \thechapter.\nobreakspace\@chapapp{}
+ \csname par\endcsname\nobreak
+ \vskip 20\p@
+ \fi
+ \fi
+ \interlinepenalty\@M
+ \Huge \bfseries #1\csname par\endcsname\nobreak
+ \vskip 40\p@
+ }}}%
+% \end{macrocode}
+% \end{macro}
+% This the end of the book class modification.
+% \begin{macrocode}
+}{}
+% \end{macrocode}
+%
+% Now we check if \file{report.cls} is loaded.
+% \begin{macrocode}
+\@ifclassloaded{report}{%
+% \end{macrocode}
+% \begin{macro}{\ps@headings}
+% First the headings are modified just in case of the book class.
+% \begin{macrocode}
+ \expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\ps@headings}
+ \expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \if@twoside
+ \def\ps@headings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+ \let\@mkboth\markboth
+ \def\chaptermark##1{%
+ \markboth {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne
+ \thechapter. \@chapapp. \ %
+ \fi
+ ##1}}{}}%
+ \def\sectionmark##1{%
+ \markright {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\z@
+ \thesection. \ %
+ \fi
+ ##1}}}}%
+ \else
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+ \let\@mkboth\markboth
+ \def\chaptermark##1{%
+ \markright {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne
+ \thechapter. \@chapapp. \ %
+ \fi
+ ##1}}}}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@chapter}
+% Chapter-start modification with |\@chapter|
+% \begin{macrocode}
+ \expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\@chapter
+ \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{chapter}%
+ \typeout{\thechapter.\space\@chapapp.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\thechapter.}#1}%
+ \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}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@makechapterhead}
+% and |\@makechapterhead|.
+% \begin{macrocode}
+ \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 \thechapter.\nobreakspace\@chapapp{}
+ \csname par\endcsname\nobreak
+ \vskip 20\p@
+ \fi
+ \interlinepenalty\@M
+ \Huge \bfseries #1\csname par\endcsname\nobreak
+ \vskip 40\p@
+ }}}%
+% \end{macrocode}
+% \end{macro}
+% End of report class modification.
+% \begin{macrocode}
+}{}
+% \end{macrocode}
+%
+% Checking if \file{article.cls} is loaded.
+% \begin{macrocode}
+\@ifclassloaded{article}{%
+% \end{macrocode}
+% \begin{macro}{\ps@headings}
+% Changing headings by redefining |\ps@headings|.
+% \begin{macrocode}
+ \expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\ps@headings}
+ \expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \if@twoside
+ \def\ps@headings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+ \let\@mkboth\markboth
+ \def\sectionmark##1{%
+ \markboth {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\z@
+ \thesection.\quad
+ \fi
+ ##1}}{}}%
+ \def\subsectionmark##1{%
+ \markright {%
+ \ifnum \c@secnumdepth >\@ne
+ \thesubsection.\quad
+ \fi
+ ##1}}}%
+ \else
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+ \let\@mkboth\markboth
+ \def\sectionmark##1{%
+ \markright {\MakeUppercase{%
+ \ifnum \c@secnumdepth >\m@ne
+ \thesection.\quad
+ \fi
+ ##1}}}}%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+% No more necessary changes specific to the article class.
+% \begin{macrocode}
+}{}
+% \end{macrocode}
+%
+% And now this is the turn of \file{letter.cls}.
+% \begin{macrocode}
+\@ifclassloaded{letter}{%
+% \end{macrocode}
+% \begin{macro}{\ps@headings}
+% In the headings the page number must be followed by a dot
+% and then |\pagename|.
+% \begin{macrocode}
+ \expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\ps@headings}
+ \expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \if@twoside
+ \def\ps@headings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@oddhead{\slshape\headtoname{:} \ignorespaces\toname
+ \hfil \@date
+ \hfil \thepage.\nobreakspace\pagename}%
+ \let\@evenhead\@oddhead}
+ \else
+ \def\ps@headings{%
+ \let\@oddfoot\@empty
+ \def\@oddhead{\slshape\headtoname{:} \ignorespaces\toname
+ \hfil \@date
+ \hfil \thepage.\nobreakspace\pagename}}
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+% End of letter class.
+% \begin{macrocode}
+}{}
+% \end{macrocode}
+%
+% After making the changes to the \LaTeX{}
+% macros we define some new ones to handle the problem
+% with definite articles.
+% \begin{macro}{\az}
+% |\az| is a user-level command which decides if the next
+% character is a star. |\@az| is called for |\az*| and
+% |\az@| for |\az|.
+% \begin{macrocode}
+\def\az{a\@ifstar{\@az}{\az@}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Az}
+% |\Az| is used at the beginning of a sentence. Otherwise it behaves
+% the same as |\az|.
+% \begin{macrocode}
+\def\Az{A\@ifstar{\@az}{\az@}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\az@}
+% |\az@| is called if there is no star after |\az| or |\Az|.
+% It calls |\@az| and writes |#1| separating with a non-breakable
+% space.
+% \begin{macrocode}
+\def\az@#1{\@az{#1}\nobreakspace#1}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@az}
+% This macro calls |\hun@tempadef| to remove the accents from
+% the argument then calls |\@@az| that determines if a `z'
+% should be written after a/A (written by |\az|/|\Az|).
+% \begin{macrocode}
+\def\@az#1{%
+ \hun@tempadef{relax}{relax}{#1}%
+ \edef\@tempb{\noexpand\@@az\@tempa\hbox!}%
+ \@tempb}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hun@tempadef}
+% The macro |\hun@tempadef| has three tasks:
+% \begin{itemize}
+% \item Accent removal. Accented letters confuse
+% |\@@az|, the main definite article determinator
+% macro, so they must be changed to their non-accented
+% counterparts. Special letters must also be changed,
+% \mbox{eg.} \oe$\,\rightarrow\,$o.
+% \item Labels must be expanded.
+% \item To handle Roman numerals correctly, commands starting
+% with |\hun@| are defined for labels containing Roman
+% numbers with the Roman numerals
+% replaced by their Arabic representation.
+% This macro can check if there is a |\hun@| command.
+% \end{itemize}
+% There are three arguments:
+% \begin{enumerate}
+% \item The primary command that should be expanded if it exists.
+% This is usually the |\hun@| command for a label.
+% \item The secondary command which is used if the first one
+% is |\relax|. This is usually the original \LaTeX{}
+% command for a label.
+% \item This is used if the first two is |\relax|. For this one
+% no expansion is carried out but the accents are still
+% removed and special letters are changed.
+% \end{enumerate}
+% \changes{magyar-1.4f}{2003/09/29}{Added
+% \cs{def}\cs{safe@activesfalse{}} as a fix for PR3426}
+% \begin{macrocode}
+\def\hun@tempadef#1#2#3{%
+ \begingroup
+ \def\@safe@activesfalse{}%
+ \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{}%
+ \expandafter\ifx\csname #1\endcsname\relax
+ \expandafter\ifx\csname #2\endcsname\relax
+ \xdef\@tempa{#3}%
+ \else
+ \xdef\@tempa{\csname #2\endcsname}%
+ \fi
+ \else
+ \xdef\@tempa{\csname #1\endcsname}%
+ \fi
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% The following macros are used to determine the definite
+% article for a label's expansion.
+% \begin{macro}{\aref}
+% |\aref| is an alias for |\azr|.
+% \begin{macrocode}
+\def\aref{\azr}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Aref}
+% |\Aref| is an alias for |\Azr|.
+% \begin{macrocode}
+\def\Aref{\Azr}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\azr}
+% |\azr| calls |\@azr| if the next character is a star,
+% otherwise it calls |\azr@|.
+% \begin{macrocode}
+\def\azr{a\@ifstar{\@azr}{\azr@}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Azr}
+% |\Azr| is the same as |\azr| except that it writes `A'
+% instead of `a'.
+% \begin{macrocode}
+\def\Azr{A\@ifstar{\@azr}{\azr@}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\azr@}
+% |\azr@| decides if the next character is |(| and
+% in that case it calls |\azr@@@| which writes an extra |(|
+% for equation referencing. Otherwise |\azr@@| is called.
+% \begin{macrocode}
+\def\azr@{\@ifnextchar ({\azr@@@}{\azr@@}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\azr@@}
+% Calls |\@azr| then writes the label's expansion preceded by
+% a non-breakable space.
+% \begin{macrocode}
+\def\azr@@#1{\@azr{#1}\nobreakspace\ref{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\azr@@@}
+% Same as |\azr@@| but inserts a |(| between the
+% non-breakable space and the label expansion.
+% \begin{macrocode}
+\def\azr@@@(#1{\@azr{#1}\nobreakspace(\ref{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@azr}
+% Calls |\hun@tempadef| to choose between the label's
+% |\hun@| or original \LaTeX{} command and to expand
+% it with accent removal and special letter substitution.
+% Then calls |\@@az|, the core macro of definite article handling.
+% \begin{macrocode}
+\def\@azr#1{%
+ \hun@tempadef{hun@r@#1}{r@#1}{}%
+ \ifx\@tempa\empty
+ \else
+ \edef\@tempb{\noexpand\@@az\expandafter\@firstoftwo\@tempa\hbox!}%
+ \@tempb
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% The following commands are used to generate the definite article
+% for the page number of a label.
+% \begin{macro}{\apageref}
+% |\apageref| is an alias for |\azp|.
+% \begin{macrocode}
+\def\apageref{\azp}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Apageref}
+% |\Apageref| is an alias for |\Azp|.
+% \begin{macrocode}
+\def\Apageref{\Azp}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\azp}
+% Checks if the next character is |*| and calls
+% |\@azp| or |\azp@|.
+% \begin{macrocode}
+\def\azp{a\@ifstar{\@azp}{\azp@}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Azp}
+% Same as |\azp| except that it writes `A' instead of `a'.
+% \begin{macrocode}
+\def\Azp{A\@ifstar{\@azp}{\azp@}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\azp@}
+% Calls |\@azp| then writes the label's page preceded by
+% a non-breakable space.
+% \begin{macrocode}
+\def\azp@#1{\@azp{#1}\nobreakspace\pageref{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@azp}
+% Calls |\hun@tempadef| then takes the label's page and passes
+% it to |\@@az|.
+% \begin{macrocode}
+\def\@azp#1{%
+ \hun@tempadef{hun@r@#1}{r@#1}{}%
+ \ifx\@tempa\empty
+ \else
+ \edef\@tempb{\noexpand\@@az\expandafter\@secondoftwo\@tempa\hbox!}%
+ \@tempb
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% The following macros are used to give the definite article to
+% citations.
+% \begin{macro}{\acite}
+% This is an alias for |\azc|.
+% \begin{macrocode}
+\def\acite{\azc}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Acite}
+% This is an alias for |\Azc|.
+% \begin{macrocode}
+\def\Acite{\Azc}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\azc}
+% Checks if the next character is a star and
+% calls |\@azc| or |\azc@|.
+% \begin{macrocode}
+\def\azc{a\@ifstar{\@azc}{\azc@}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Azc}
+% Same as |\azc| but used at the beginning of sentences.
+% \begin{macrocode}
+\def\Azc{A\@ifstar{\@azc}{\azc@}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\azc@}
+% If there is no star we accept an optional argument,
+% just like the |\cite| command.
+% \begin{macrocode}
+\def\azc@{\@ifnextchar [{\azc@@}{\azc@@[]}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\azc@@}
+% First calls |\@azc| then |\cite|.
+% \begin{macrocode}
+\def\azc@@[#1]#2{%
+ \@azc{#2}\nobreakspace\def\@tempa{#1}%
+ \ifx\@tempa\@empty\cite{#2}\else\cite[#1]{#2}\fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@azc}
+% This is an auxiliary macro to get the first cite label
+% from a comma-separated list.
+% \begin{macrocode}
+\def\@azc#1{\@@azc#1,\hbox!}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@azc}
+% This one uses only the first argument, that is the first
+% element of the comma-separated list of cite labels.
+% Calls |\hun@tempadef| to expand the cite label with accent
+% removal and special letter replacement.
+% Then |\@@az|, the core macro, is called.
+% \begin{macrocode}
+\def\@@azc#1,#2\hbox#3!{%
+ \hun@tempadef{hun@b@#1}{b@#1}{}%
+ \ifx\@tempa\empty
+ \else
+ \edef\@tempb{\noexpand\@@az\@tempa\hbox!}%
+ \@tempb
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hun@number@lehgth}
+% This macro is used to count the number of digits in its
+% argument until a non-digit character is found or
+% the end of the argument is reached.
+% It must be called as
+% |\hun@number@lehgth|\textit{arg}|\hbox\hbox!| and
+% |\count@| must be zeroed.
+% It is called by |\@@az|.
+% \begin{macrocode}
+\def\hun@number@lehgth#1#2\hbox#3!{%
+ \ifcat\noexpand#11%
+ \ifnum\expandafter`\csname#1\endcsname>47
+ \ifnum\expandafter`\csname#1\endcsname<58
+ \advance\count@ by \@ne
+ \hun@number@lehgth#2\hbox\hbox!\fi\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hun@alph@lehgth}
+% This is used to count the number of letters until a
+% non-letter is found or the end of the argument is reached.
+% It must be called as
+% |\hun@alph@lehgth|\textit{arg}|\hbox\hbox!| and
+% |\count@| must be set to zero.
+% It is called by |\@@az@string|.
+% \begin{macrocode}
+\def\hun@alph@lehgth#1#2\hbox#3!{%
+ \ifcat\noexpand#1A%
+ \advance\count@ by \@ne
+ \hun@alph@lehgth#2\hbox\hbox!\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@az@string}
+% This macro is called by |\@@az| if the argument begins
+% with a letter.
+% The task of |\@@az@string| is to determine if the argument
+% starts with a vowel and in that case |\let\@tempa\@tempb|.
+% After checking if the first letter is A, E, I, O, or U,
+% |\hun@alph@lehgth| is called
+% to determine the length of the argument. If it gives 1
+% (that is the argument is a single-letter one or the second
+% character is not letter) then the letters L, M, N, R, S, X, and Y
+% are also considered as a vowel since their Hungarian pronounced
+% name starts with a vowel.
+% \begin{macrocode}
+\def\@@az@string#1#2{%
+ \ifx#1A%
+ \let\@tempa\@tempb
+ \else\ifx#1E%
+ \let\@tempa\@tempb
+ \else\ifx#1I%
+ \let\@tempa\@tempb
+ \else\ifx#1O%
+ \let\@tempa\@tempb
+ \else\ifx#1U%
+ \let\@tempa\@tempb
+ \fi\fi\fi\fi\fi
+ \ifx\@tempa\@tempb
+ \else
+ \count@\z@
+ \hun@alph@lehgth#1#2\hbox\hbox!%
+ \ifnum\count@=\@ne
+ \ifx#1F%
+ \let\@tempa\@tempb
+ \else\ifx#1L%
+ \let\@tempa\@tempb
+ \else\ifx#1M%
+ \let\@tempa\@tempb
+ \else\ifx#1N%
+ \let\@tempa\@tempb
+ \else\ifx#1R%
+ \let\@tempa\@tempb
+ \else\ifx#1S%
+ \let\@tempa\@tempb
+ \else\ifx#1X%
+ \let\@tempa\@tempb
+ \else\ifx#1Y%
+ \let\@tempa\@tempb
+ \fi\fi\fi\fi\fi\fi\fi\fi
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@az}
+% This macro is the core of definite article handling.
+% It determines if the argument needs `az' or `a' definite
+% article by setting |\@tempa| to `z' or |\@empty|.
+% It sets |\@tempa| to `z' if
+% \begin{itemize}
+% \item the first character of the argument is 5; or
+% \item the first character of the argument is 1 and
+% the $\mathit{length\ of\ the\ number} \pmod 3 = 1$
+% (one--egy, thousand--ezer, million--egymilli\'o,\dots); or
+% \item the first character of the argument is
+% a, A, e, E, i, I, o, O, u, or U; or
+% \item the first character of the argument is
+% l, L, m, M, n, N, r, R, s, S, x, X, y, or Y
+% and the length of the argument is 1 or the second
+% character is a non-letter.
+% \end{itemize}
+% At the end it calls |\@tempa|, that is, it either typesets a `z'
+% or nothing.
+% \begin{macrocode}
+\def\@@az#1#2\hbox#3!{%
+ \let\@tempa\@empty
+ \def\@tempb{z}%
+ \uppercase{%
+ \ifx5#1%
+ \let\@tempa\@tempb
+ \else\ifx1#1%
+ \count@\@ne
+ \hun@number@lehgth#2\hbox\hbox!%
+ \loop
+ \ifnum\count@>\thr@@
+ \advance\count@-\thr@@
+ \repeat
+ \ifnum\count@=\@ne
+ \let\@tempa\@tempb
+ \fi
+ \else
+ \@@az@string{#1}{#2}%
+ \fi\fi
+ }%
+ \@tempa}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\refstepcounter}
+% |\refstepcounter| must be redefined in order to keep
+% |\@currentlabel| unexpanded. This is necessary to enable
+% the |\label| command to write a |\hunnewlabel| command
+% to the aux file with the Roman numerals substituted by
+% their Arabic representations.
+% Of course, the original definition of |\refstepcounter| is
+% saved and restored if the Hungarian language is switched off.
+% \begin{macrocode}
+\expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \babel@save\refstepcounter
+ \def\refstepcounter#1{\stepcounter{#1}%
+ \def\@currentlabel{\csname p@#1\endcsname\csname the#1\endcsname}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\label}
+% |\label| is redefined to write another line into the aux
+% file: |\hunnewlabel{ }{ }| where the Roman numerals
+% are replaced their Arabic representations.
+% The original definition of |\label| is saved into
+% |\old@label| and it is also called by |\label|.
+% On leaving the Hungarian typesetting mode |\label|'s
+% original is restored since it is added to |\noextrasmagyar|.
+% \begin{macrocode}
+\expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \let\old@label\label
+ \def\label#1{\@bsphack
+ \old@label{#1}%
+ \begingroup
+ \let\romannumeral\number
+ \def\@roman##1{\number ##1}%
+ \def\@Roman##1{\number ##1}%
+ {\toks0={\noexpand\noexpand\noexpand\number}%
+ \def\number##1{\the\toks0 ##1}\xdef\tempb@{\thepage}}%
+ \edef\@tempa##1{\noexpand\protected@write\@auxout{}%
+ {\noexpand\string\noexpand\hunnewlabel
+ {##1}{{\@currentlabel}{\tempb@}}}}%
+ \@tempa{#1}%
+ \endgroup
+ \@esphack}%
+}
+\expandafter\addto\csname noextras\CurrentOption\endcsname{%
+ \let\label\old@label
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\hunnewlabel}
+% Finally, |\hunnewlabel| is defined.
+% It checks if the label's expansion (|#2|) differs from that
+% one given in the |\newlabel| command. If yes
+% (that is, the label contains some Roman numerals),
+% it defines the macro |\hun@r@|\textit{label},
+% otherwise it does nothing.
+% \begin{macrocode}
+\def\hunnewlabel#1#2{%
+ \def\@tempa{#2}%
+ \expandafter\ifx\csname r@#1\endcsname\@tempa
+ \relax% \message{No need for def: #1}%
+ \else
+ \global\expandafter\let\csname hun@r@#1\endcsname\@tempa%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% For Hungarian the |`| character is made active.
+% \changes{magyar-1.4c}{2001/03/05}{Make sure that the grave accent
+% has catcode 12 \emph{before} it is made \cs{active}}
+% \begin{macrocode}
+\AtBeginDocument{%
+ \if@filesw\immediate\write\@auxout{\catcode096=12}\fi}
+\initiate@active@char{`}
+\expandafter\addto\csname extras\CurrentOption\endcsname{%
+ \languageshorthands{magyar}%
+ \bbl@activate{`}}
+\expandafter\addto\csname noextras\CurrentOption\endcsname{%
+ \bbl@deactivate{`}}
+% \end{macrocode}
+%
+% The character sequence |``| is declared as a shorthand
+% in order to produce
+% the opening quotation sign appropriate for Hungarian.
+% \begin{macrocode}
+\declare@shorthand{magyar}{``}{\glqq}
+% \end{macrocode}
+%
+% In Hungarian there are some long double consonants which
+% must be hyphenated specially.
+% For all these long double consonants (except dzzs, that is
+% extremely very-very rare) a shortcut is defined.
+% \begin{macrocode}
+\declare@shorthand{magyar}{`c}{\textormath{\bbl@disc{c}{cs}}{c}}
+\declare@shorthand{magyar}{`C}{\textormath{\bbl@disc{C}{CS}}{C}}
+\declare@shorthand{magyar}{`d}{\textormath{\bbl@disc{d}{dz}}{d}}
+\declare@shorthand{magyar}{`D}{\textormath{\bbl@disc{D}{DZ}}{D}}
+\declare@shorthand{magyar}{`g}{\textormath{\bbl@disc{g}{gy}}{g}}
+\declare@shorthand{magyar}{`G}{\textormath{\bbl@disc{G}{GY}}{G}}
+\declare@shorthand{magyar}{`l}{\textormath{\bbl@disc{l}{ly}}{l}}
+\declare@shorthand{magyar}{`L}{\textormath{\bbl@disc{L}{LY}}{L}}
+\declare@shorthand{magyar}{`n}{\textormath{\bbl@disc{n}{ny}}{n}}
+\declare@shorthand{magyar}{`N}{\textormath{\bbl@disc{N}{NY}}{N}}
+\declare@shorthand{magyar}{`s}{\textormath{\bbl@disc{s}{sz}}{s}}
+\declare@shorthand{magyar}{`S}{\textormath{\bbl@disc{S}{SZ}}{S}}
+\declare@shorthand{magyar}{`t}{\textormath{\bbl@disc{t}{ty}}{t}}
+\declare@shorthand{magyar}{`T}{\textormath{\bbl@disc{T}{TY}}{T}}
+\declare@shorthand{magyar}{`z}{\textormath{\bbl@disc{z}{zs}}{z}}
+\declare@shorthand{magyar}{`Z}{\textormath{\bbl@disc{Z}{ZS}}{Z}}
+% \end{macrocode}
+%
+% The macro |\ldf@finish| takes care of looking for a
+% configuration file, setting the main language to be switched on
+% at |\begin{document}| and resetting the category code of
+% \texttt{@} to its original value.
+% \changes{magyar-1.3h}{1996/10/30}{Now use \cs{ldf@finish} to wrap up}
+% \begin{macrocode}
+\ldf@finish\CurrentOption
+%</code>
+% \end{macrocode}
+%
+% \Finale
+%%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+\endinput