diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/babel/magyar.dtx')
-rw-r--r-- | Master/texmf-dist/source/generic/babel/magyar.dtx | 1411 |
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 |