diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/babel')
97 files changed, 44344 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/babel/athnum.dtx b/Master/texmf-dist/source/generic/babel/athnum.dtx new file mode 100644 index 00000000000..7a088cb5d65 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/athnum.dtx @@ -0,0 +1,278 @@ +% \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{125} +%% \CharacterTable +%\iffalse +% +%% This is file `athnum.dtx' +%% (c) 1997-2005 Apostolos Syropoulos. +%% All rights reserved. +% +% Please report errors or suggestions for improvement to +% +% Apostolos Syropoulos +% 366, 28th October Str. +% GR-671 00 Xanthi, GREECE +% apostolo at platon.ee.duth.gr or apostolo at obelix.ee.duth.gr +% +%\fi +% +% \iffalse +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\def\PiIt#1{{% + \newdimen\boxW \newdimen\boxH + \settowidth{\boxW}{#1}% + \settoheight{\boxH}{#1}% + \addtolength{\boxW}{0.8pt} + \vbox{% + \hrule width\boxW\hbox{% + \vrule height\boxH\mbox{#1}% + \vrule height\boxH}}\kern.5pt}} +\GetFileInfo{athnum.drv} +\begin{document} + \DocInput{athnum.dtx} +\end{document} +%</driver> +% \end{macrocode} +% \fi +% +%\title{Athenian Numerals II\footnote{The documentation of this +% package is essentially the same as that of the package `grnumalt'. +% The `II' serves as a means to distinguish the two documents.}} +% \author{Apostolos Syropoulos\\366, 28th October Str.\\ +% GR-671 00 Xanthi, HELLAS\\ Email:\texttt{apostolo@platon.ee.duth.gr}} +% \date{2003/08/24} +%\maketitle +% +%\MakeShortVerb{\|} +% +%\section{Introduction} +% +% This \LaTeX\ package implements the macro +% \DescribeMacro{\athnum} +% |\athnum|. The macro transforms an Arabic numeral, i.e., the kind +% of numerals we all use (e.g., 1, 5, 789 etc), to the corresponding +% {\itshape Athenian} numeral. Athenian numerals were in use only in +% ancient Athens. The package can be used only in conjunction with the +% |greek| option of the |babel| package. +% +%\section{The Numbering System} +% +% The athenian numbering system, like the roman one, employs +% letters to denote important numbers. Multiple occurrence of a letter denote +% a multiple of the ``important'' number, e.g., the letter I denotes 1, so +% III denotes 3. Here are the basic digits used in the Athenian numbering +% system: +% \begin{itemize} +% \item I denotes the number one (1) +% \item $\Pi$ denotes the number five (5) +% \item $\Delta$ denotes the number ten (10) +% \item H denotes the number one hundred (100) +% \item X denotes the number one thousand (1000) +% \item M denotes the number ten thousands (10000) +%\end{itemize} +% Moreover, the letters $\Delta$, H, X, and M under the letter $\Pi$, +% denote five times their original value, e.g., the symbol +% \PiIt{X}, denotes the number 5000, and the symbol +% \PiIt{$\Delta$}, denotes the number 50. It must be noted that +% the numbering system does not provide negative numerals or a symbol for +% zero. +% +% The Athenian numbering system is described, among others, in an article in +% Encyclopedia $\Delta o\mu\acute{\eta}$, Vol. 2, page 280, 7th edition, +% Athens, October 2, 1975. +% +% \section{The Code} +% Before we do anything further, we have to identify the package. +% \StopEventually +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e}[1996/01/01] +\ProvidesPackage{athnum}[2003/08/24\space v1.1] +\typeout{Package: `athnum' v1.1\space <2003/08/24> (A. Syropoulos)} +% \end{macrocode} +% Next we check to see if the |babel| package is loaded with at least +% the |greek| option. In case it isn't, we opt to produce an error message. +% \begin{macrocode} +\@ifpackagewith{babel}{greek}{}{% + \@ifpackagewith{babel}{polutonikogreek}{}{% + \PackageError{athnum}{% + `greek' option of the `babel'\MessageBreak + package hasn't been loaded}{% + The commands provided by this package\MessageBreak + are specially designed for greek language\MessageBreak + typesetting with the `babel' package. Load\MessageBreak + it with at least the `greek' option.}\relax + }} +% \end{macrocode} +% +% As it is mentioned in the introduction, the Athenian numerals employ +% some special digits. These digits are included in the |cb| fonts of +% Claudio Beccari, and so we must provide access commands. +% \begin{macrocode} +\DeclareTextCommand{\PiDelta}{LGR}{\char"02\relax} +\DeclareTextCommand{\PiEta}{LGR}{\char"03\relax} +\DeclareTextCommand{\PiChi}{LGR}{\char"04\relax} +\DeclareTextCommand{\PiMu}{LGR}{\char"05\relax} +% \end{macrocode} +%\begin{macro}{\@@athnum} +% Now, we turn our attention to the definition of the macro +% |\@@athnum|. This macro uses one integer variable (or counter in +% \TeX's jargon.) +% \begin{macrocode} +\newcount\@ath@num +% \end{macrocode} +% The macro |\@@athnum| is also defined as a robust command. +% \begin{macrocode} +\DeclareRobustCommand*{\@@athnum}[1]{% +% \end{macrocode} +% After assigning to variable |\@ath@num| the value of the macro's argument, +%we make sure that the argument is in the expected range, i.e., it is greater +% than zero, and less or equal to $249999$. In case it isn't, we simply +% produce a |\space|, warn the user about it and quit. Although, the +% |\athnum| macro is capable to produce an Athenian numeral for even greater +% intergers, the following argument by Claudio Beccari convised me to place +% this above upper limit: +% \begin{quote} +% According to psychological perception studies (that ancient Athenians +% and Romans perfectly knew without needing to study Freud and Jung) +% living beings (which includes at least all vertebrates, not only +% humans) can perceive up to four randomly set objects of the same kind +% without the need of counting, the latter activity being a specific +% acquired ability of human kind; the biquinary numbering notation +% used by the Athenians and the Romans exploits this natural +% characteristic of human beings. +% \end{quote} +% \begin{macrocode} + \@ath@num#1\relax + \ifnum\@ath@num<\@ne% + \space% + \PackageWarning{athnum}{% + Illegal value (\the\@ath@num) for athenian numeral}% + \else\ifnum\@ath@num>249999% + \space% + \PackageWarning{athnum}{% + Illegal value (\the\@ath@num) for athenian numeral}% + \else +% \end{macrocode} +% Having done all the necessary checks, we are now ready to do the actual +% computation. If the number is greater than $49999$, then it certainly +% has at least one \PiIt{M} ``digit''. We find all such digits by continuously +% subtracting $50000$ from |\@ath@num|, until |\@ath@num| becomes less than +% $50000$. +% \begin{macrocode} + \@whilenum\@ath@num>49999\do{% + \PiMu\advance\@ath@num-50000}% +% \end{macrocode} +% We now check for tens of thousands. +% \begin{macrocode} + \@whilenum\@ath@num>9999\do{% + M\advance\@ath@num-\@M}% +% \end{macrocode} +% Since a number can have only one \PiIt{X} ``digit'' (equivalent to 5000), it +% is easy to check it out and produce the corresponding numeral in case it does +% have one. +% \begin{macrocode} + \ifnum\@ath@num>4999% + \PiChi\advance\@ath@num-5000% + \fi\relax +% \end{macrocode} +% Next, we check for thousands, the same way we checked for tens of thousands. +% \begin{macrocode} + \@whilenum\@ath@num>999\do{% + Q\advance\@ath@num-\@m}% +% \end{macrocode} +% Like the five thousands, a numeral can have at most one \PiIt{H} ``digit'' +% (equivalent to 500). +% \begin{macrocode} + \ifnum\@ath@num>499% + \PiEta\advance\@ath@num-500% + \fi\relax +% \end{macrocode} +% It is time to check hundreds, which follow the same pattern as thousands +% \begin{macrocode} + \@whilenum\@ath@num>99\do{% + H\advance\@ath@num-100}% +% \end{macrocode} +% A numeral can have only one \PiIt{$\Delta$} ``digit'' (equivalent to 50). +% \begin{macrocode} + \ifnum\@ath@num>49% + \PiDelta\advance\@ath@num-50% + \fi\relax +% \end{macrocode} +% Let's check now decades. +% \begin{macrocode} + \@whilenum\@ath@num>9\do{% + D\advance\@ath@num by-10}% +% \end{macrocode} +% We check for five and, finally, for the digits 1, 2, 3, and 4. +% \begin{macrocode} + \@whilenum\@ath@num>4\do{% + P\advance\@ath@num-5}% + \ifcase\@ath@num\or I\or II\or III\or IIII\fi% + \fi\fi} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@athnum} +% The command |\@athnum| has one argument, which +% is a counter. It calls the command |\@@athnum| to process the value of +% the counter. +% \begin{macrocode} +\def\@athnum#1{% + \expandafter\@@athnum\expandafter{\the#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\athnum} +% The command |\athnum| is a wrapper that declares +% a new counter in a local scope, assigns to it the argument of the command +% and calls the macro |\@athnum|. This way the command can process correctly +% either a number or a counter. +% \begin{macrocode} +\def\athnum#1{% + \@ath@num#1\relax + \@athnum{\@ath@num}} +%</package> +% \end{macrocode} +%\end{macro} +% +% \section*{Acknowledgment} +% I would like to thank Claudio Beccari for reading the documentation +% and for his very helpful suggestions. In addition, Antonis Tsolomitis +% spotted a bug in the first version, which is corrected in the present +% version. +% \section*{Dedication} +% I would like to dedicate this piece of work to my son +% \begin{center}Demetrios-Georgios.\end{center} +% \Finale +% +\endinput diff --git a/Master/texmf-dist/source/generic/babel/babel.drv b/Master/texmf-dist/source/generic/babel/babel.drv new file mode 100644 index 00000000000..ce7f645b0a3 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/babel.drv @@ -0,0 +1,188 @@ +%% +%% This is file `babel.drv', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% babel.dtx (with options: `driver') +%% +%% This file was generated from file(s) of the Babel system. +%% --------------------------------------------------------- +%% +%% Copyright (C) 2004 Johannes Braams. All rights reserved. +%% +%% To produce the documentation in the way you like you are allowed +%% to change this driver file. +%% +%% +%% File 'babel.dtx' +%%\ProvidesFile{babel.dtx}[2005/05/21 v3.8g The Babel package] +%% Babel package for LaTeX2e. +%% Copyright (C) 1989 -- 2005 by Johannes Braams, +%% TeXniek +%% all rights reserved. +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +\ifx\ProvidesFile\@undefined + \def\ProvidesFile#1[#2 #3 #4]{% + \wlog{File: #1 #4 #3 <#2>}% + \let\ProvidesFile\@undefined + } +\fi +\ProvidesFile{babel.drv} + [2005/05/21 v3.8g % +] +\documentclass{ltxdoc} +\usepackage{url,t1enc,supertabular} +\usepackage[icelandic,english]{babel} +\DoNotIndex{\!,\',\,,\.,\-,\:,\;,\?,\/,\^,\`,\@M} +\DoNotIndex{\@,\@ne,\@m,\@afterheading,\@date,\@endpart} +\DoNotIndex{\@hangfrom,\@idxitem,\@makeschapterhead,\@mkboth} +\DoNotIndex{\@oddfoot,\@oddhead,\@restonecolfalse,\@restonecoltrue} +\DoNotIndex{\@starttoc,\@unused} +\DoNotIndex{\accent,\active} +\DoNotIndex{\addcontentsline,\advance,\Alph,\arabic} +\DoNotIndex{\baselineskip,\begin,\begingroup,\bf,\box,\c@secnumdepth} +\DoNotIndex{\catcode,\centering,\char,\chardef,\clubpenalty} +\DoNotIndex{\columnsep,\columnseprule,\crcr,\csname} +\DoNotIndex{\day,\def,\dimen,\discretionary,\divide,\dp,\do} +\DoNotIndex{\edef,\else,\@empty,\end,\endgroup,\endcsname,\endinput} +\DoNotIndex{\errhelp,\errmessage,\expandafter,\fi,\filedate} +\DoNotIndex{\fileversion,\fmtname,\fnum@figure,\fnum@table,\fontdimen} +\DoNotIndex{\gdef,\global} +\DoNotIndex{\hbox,\hidewidth,\hfil,\hskip,\hspace,\ht,\Huge,\huge} +\DoNotIndex{\ialign,\if@twocolumn,\ifcase,\ifcat,\ifhmode,\ifmmode} +\DoNotIndex{\ifnum,\ifx,\immediate,\ignorespaces,\input,\item} +\DoNotIndex{\kern} +\DoNotIndex{\labelsep,\Large,\large,\labelwidth,\lccode,\leftmargin} +\DoNotIndex{\lineskip,\leavevmode,\let,\list,\ll,\long,\lower} +\DoNotIndex{\m@ne,\mathchar,\mathaccent,\markboth,\month,\multiply} +\DoNotIndex{\newblock,\newbox,\newcount,\newdimen,\newif,\newwrite} +\DoNotIndex{\nobreak,\noexpand,\noindent,\null,\number} +\DoNotIndex{\onecolumn,\or} +\DoNotIndex{\p@,par, \parbox,\parindent,\parskip,\penalty} +\DoNotIndex{\protect,\ps@headings} +\DoNotIndex{\quotation} +\DoNotIndex{\raggedright,\raise,\refstepcounter,\relax,\rm,\setbox} +\DoNotIndex{\section,\setcounter,\settowidth,\scriptscriptstyle} +\DoNotIndex{\sfcode,\sl,\sloppy,\small,\space,\spacefactor,\strut} +\DoNotIndex{\string} +\DoNotIndex{\textwidth,\the,\thechapter,\thefigure,\thepage,\thepart} +\DoNotIndex{\thetable,\thispagestyle,\titlepage,\tracingmacros} +\DoNotIndex{\tw@,\twocolumn,\typeout,\uppercase,\usecounter} +\DoNotIndex{\vbox,\vfil,\vskip,\vspace,\vss} +\DoNotIndex{\widowpenalty,\write,\xdef,\year,\z@,\z@skip} +\makeatletter +\gdef\dlqq{{\setbox\tw@=\hbox{,}\setbox\z@=\hbox{''}% + \dimen\z@=\ht\z@ \advance\dimen\z@-\ht\tw@ + \setbox\z@=\hbox{\lower\dimen\z@\box\z@}\ht\z@=\ht\tw@ + \dp\z@=\dp\tw@ \box\z@\kern-.04em}} +\@addtoreset{CodelineNo}{section} +\renewcommand\theCodelineNo{% + \reset@font\scriptsize\thesection.\arabic{CodelineNo}} +\renewcommand\codeline@wrindex[1]{\if@filesw + \immediate\write\@indexfile + {\string\indexentry{#1}% + {\number\c@section.\number\c@CodelineNo}}\fi} +\renewenvironment{theglossary}{% + \glossary@prologue% + \GlossaryParms \let\item\@idxitem \ignorespaces}% + {} +\makeatother +\font\manual=logo10 % font used for the METAFONT logo, etc. +\newcommand*\MF{{\manual META}\-{\manual FONT}} +\newcommand*\TeXhax{\TeX hax} +\newcommand*\babel{\textsf{babel}} +\newcommand*\Babel{\textsf{Babel}} +\newcommand*\m[1]{\mbox{$\langle$\it#1\/$\rangle$}} +\newcommand*\langvar{\m{lang}} +\newcommand*\note[1]{} +\newcommand*\bsl{\protect\bslash} +\newcommand*\Lopt[1]{\textsf{#1}} +\newcommand*\Lenv[1]{\textsf{#1}} +\newcommand*\file[1]{\texttt{#1}} +\newcommand*\cls[1]{\texttt{#1}} +\newcommand*\pkg[1]{\texttt{#1}} +\newcommand*\langdeffile[1]{% + \clearpage + \DocInput{#1}} +\DisableCrossrefs +\RecordChanges +\CodelineIndex +\setcounter{StandardModuleDepth}{1} +\begin{document} +\DocInput{babel.dtx} +^^A% \changes{babel~3.6i}{1997/02/22}{Added kannada} +\langdeffile{esperanto.dtx} +\langdeffile{interlingua.dtx} +\langdeffile{dutch.dtx} +\langdeffile{english.dtx} +\langdeffile{germanb.dtx} +\langdeffile{ngermanb.dtx} +\langdeffile{breton.dtx} +\langdeffile{welsh.dtx} +\langdeffile{irish.dtx} +\langdeffile{scottish.dtx} +\langdeffile{greek.dtx} +\langdeffile{frenchb.dtx} +\langdeffile{italian.dtx} +\langdeffile{latin.dtx} +\langdeffile{portuges.dtx} +\langdeffile{spanish.dtx} +\langdeffile{catalan.dtx} +\langdeffile{galician.dtx} +\langdeffile{basque.dtx} +\langdeffile{romanian.dtx} +\langdeffile{danish.dtx} +\langdeffile{icelandic.dtx} +\langdeffile{norsk.dtx} +\langdeffile{swedish.dtx} +\langdeffile{samin.dtx} +\langdeffile{finnish.dtx} +\langdeffile{magyar.dtx} +\langdeffile{estonian.dtx} +\langdeffile{croatian.dtx} +\langdeffile{czech.dtx} +\langdeffile{polish.dtx} +\langdeffile{serbian.dtx} +\langdeffile{slovak.dtx} +\langdeffile{slovene.dtx} +\langdeffile{russianb.dtx} +\langdeffile{bulgarian.dtx} +\langdeffile{ukraineb.dtx} +\langdeffile{lsorbian.dtx} +\langdeffile{usorbian.dtx} +\langdeffile{turkish.dtx} +\langdeffile{hebrew.dtx} +\DocInput{hebinp.dtx} +\DocInput{hebrew.fdd} +\DocInput{heb209.dtx} +\langdeffile{bahasa.dtx} +\clearpage +\DocInput{bbplain.dtx} +\clearpage +\def\filename{index} +\PrintIndex +\clearpage +\def\filename{changes} +\PrintChanges +\end{document} +%% +%% \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 +%% +%% End of file `babel.drv'. diff --git a/Master/texmf-dist/source/generic/babel/babel.dtx b/Master/texmf-dist/source/generic/babel/babel.dtx new file mode 100644 index 00000000000..aa0a577b1a8 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/babel.dtx @@ -0,0 +1,5793 @@ +% \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{3805} +%% +% \def\filename{babel.dtx} +% \let\thisfilename\filename +% +%\iffalse +% \changes{babel~3.5g}{1996/10/10}{We need at least \LaTeX\ from +% December 1994} +% \changes{babel~3.6k}{1999/03/18}{We need at least \LaTeX\ from +% June 1998} +% \begin{macrocode} +%<+package>\NeedsTeXFormat{LaTeX2e}[1998/06/01] +% \end{macrocode} +% +%% File 'babel.dtx' +%\fi +%%\ProvidesFile{babel.dtx}[2005/05/21 v3.8g The Babel package] +%\iffalse +% +% Babel DOCUMENT-STYLE option for LaTeX version 2.09 or plain TeX; +%% Babel package for LaTeX2e. +% +%% Copyright (C) 1989 -- 2005 by Johannes Braams, +%% TeXniek +%% all rights reserved. +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +%<*filedriver> +\documentclass{ltxdoc} +\usepackage{supertabular} +\font\manual=logo10 % font used for the METAFONT logo, etc. +\newcommand*\MF{{\manual META}\-{\manual FONT}} +\newcommand*\TeXhax{\TeX hax} +\newcommand*\babel{\textsf{babel}} +\newcommand*\Babel{\textsf{Babel}} +\newcommand*\m[1]{\mbox{$\langle$\it#1\/$\rangle$}} +\newcommand*\langvar{\m{lang}} +\newcommand*\note[1]{} +\newcommand*\bsl{\protect\bslash} +\newcommand*\Lopt[1]{\textsf{#1}} +\newcommand*\Lenv[1]{\textsf{#1}} +\newcommand*\file[1]{\texttt{#1}} +\newcommand*\cls[1]{\texttt{#1}} +\newcommand*\pkg[1]{\texttt{#1}} +\begin{document} + \DocInput{babel.dtx} +\end{document} +%</filedriver> +% \changes{babel~3.7a}{1997/04/16}{Make multiple loading of +% \file{babel.def} impossible} +% \begin{macrocode} +%<*core> +\ifx\bbl@afterfi\@undefined +\else + \bbl@afterfi\endinput +\fi +%</core> +% \end{macrocode} +%<*dtx> +\ProvidesFile{babel.dtx} +%</dtx> +%\fi +% +% \GetFileInfo{babel.dtx} +% +% \changes{babel~2.0a}{1990/04/02}{Added text about \file{german.sty}} +% \changes{babel~2.0b}{1990/04/18}{Changed order of code to prevent +% plain \TeX from seeing all of it} +% \changes{babel~2.1}{1990/04/24}{Modified user interface, +% \cs{langTeX} no longer necessary} +% \changes{babel~2.1a}{1990/05/01}{Incorporated Nico's comments} +% \changes{babel~2.1b}{1990/05/01}{rename \cs{language} to +% \cs{current@language}} +% \changes{babel~2.1c}{1990/05/22}{abstract for report fixed, missing +% \texttt{\}}, found by Nicolas Brouard} +% \changes{babel~2.1d}{1990/07/04}{Missing right brace in definition of +% abstract environment, found by Werenfried Spit} +% \changes{babel~2.1e}{1990/07/16}{Incorporated more comments from +% Nico} +% \changes{babel~2.2}{1990/07/17}{Renamed \cs{newlanguage} to +% \cs{addlanguage}} +% \changes{babel~2.2a}{1990/08/27}{Modified the documentation +% somewhat} +% \changes{babel~3.0}{1991/04/23}{Moved part of the code to hyphen.doc +% in preparation for \TeX~3.0} +% \changes{babel~3.0a}{1991/05/21}{Updated comments in various places} +% \changes{babel~3.0b}{1991/05/25}{Removed some problems in change log} +% \changes{babel~3.0c}{1991/07/15}{Renamed \file{babel.sty} and +% \file{latexhax.sty} to \file{.com}} +% \changes{babel~3.1}{1991/10/31}{Added the support for active +% characters and for extending a macro} +% \changes{babel~3.1}{1991/11/05}{Removed the need for +% \file{latexhax}} +% \changes{babel~3.2}{1991/11/10}{Some Changes by br} +% \changes{babel~3.2a}{1992/02/15}{Fixups of the code and +% documentation} +% \changes{babel~3.3}{1993/07/06}{Included driver file, and prepared +% for distribution} +% \changes{babel~3.4}{1994/01/30}{Updated for \LaTeXe} +% \changes{babel~3.4}{1994/02/28}{Added language definition file for +% bahasa} +% \changes{babel~3.4b}{1994/05/18}{Added a small driver to be able to +% process just this file} +% \changes{babel~3.5a}{1995/02/03}{Provided common code to handle the +% active double quote} +% \changes{babel~3.5c}{1995/06/14}{corrected a few typos (PR1652)} +% \changes{babel~3.5d}{1995/07/02}{Merged glyphs.dtx into this file} +% \changes{babel~3.5f}{1995/07/13}{repaired a typo} +% \changes{babel~3.5f}{1996/01/09}{replaced \cs{tmp}, \cs{bbl@tmp} and +% \cs{bbl@temp} with \cs{bbl@tempa}} +% \changes{babel~3.5g}{1996/07/09}{replaced \cs{undefined} with +% \cs{@undefined} to be consistent with \LaTeX} +% \changes{babel~3.7d}{1999/05/05}{Fixed a few typos in \cs{changes} +% entries which made typesetting the code impossible} +% \changes{babel~3.7h}{2001/03/01}{Added a number of missing comment +% characters which caused spurious white space} +% \changes{babel~3.8e}{2005/03/24}{Many enhancements to the text by +% Andrew Young} +% +% \title {Babel, a multilingual package for use with \LaTeX's standard +% document classes\thanks{During the development ideas from Nico +% Poppelier, Piet van Oostrum and many others have been used. +% Bernd Raichle has provided many helpful suggestions.}} +% +% \author{Johannes Braams\\ +% Kersengaarde 33\\ +% 2723 BP Zoetermeer\\ +% The Netherlands\\ +% \texttt{babel@braams.cistron.nl}} +% +% \date{Printed \today} +% +% \maketitle +% +% \begin{abstract} +% The standard distribution of \LaTeX\ contains a number of +% document classes that are meant to be used, but also serve as +% examples for other users to create their own document classes. +% These document classes have become very popular among \LaTeX\ +% users. But it should be kept in mind that they were designed for +% American tastes and typography. At one time they contained a +% number of hard-wired texts. This report describes \babel{}, a +% package that makes use of the new capabilities of \TeX\ version 3 +% to provide an environment in which documents can be typeset in +% a non-American language, or in more than one language. +% \end{abstract} +% +% \begin{multicols}{2} +% \tableofcontents +% \end{multicols} +% +% \section{The user interface}\label{U-I} +% +% The user interface of this package is quite simple. It consists +% of a set of commands that switch from one language to another, and +% a set of commands that deal with shorthands. It is also possible +% to find out what the current language is. +% +% \DescribeMacro{\selectlanguage} +% When a user wants to switch from one language to another he can +% do so using the macro |\selectlanguage|. This macro takes the +% language, defined previously by a language definition file, as +% its argument. It calls several macros that should be defined in +% the language definition files to activate the special definitions +% for the language chosen. +% +% \DescribeEnv{otherlanguage} +% The environment \Lenv{otherlanguage} does basically the same as +% |\selectlanguage|, except the language change is local to the +% environment. This environment is required for intermixing +% left-to-right typesetting with right-to-left typesetting. +% The language to switch to is specified as an +% argument to |\begin{otherlanguage}|. +% +% \DescribeMacro{\foreignlanguage} +% The command |\foreignlanguage| takes two arguments; the second +% argument is a phrase to be typeset according to the rules of the +% language named in its first argument. This command only switches +% the extra definitions and the hyphenation rules for the language, +% \emph{not} the names and dates. +% +% \DescribeEnv{otherlanguage*} +% In the environment \Lenv{otherlanguage*} only the typesetting +% is done according to the rules of the other language, but the +% text-strings such as `figure', `table', etc. are left as they +% were set outside this environment. +% +% \DescribeEnv{hyphenrules} +% The environment \Lenv{hyphenrules} can be used to select +% \emph{only} the hyphenation rules to be used. This can for +% instance be used to select `nohyphenation', provided that in +% \file{language.dat} the `language' nohyphenation is defined by +% loading \file{serohyph.tex}. +% +% \DescribeMacro{\languagename} +% The control sequence |\languagename| contains the name of the +% current language. +% +% \DescribeMacro{\iflanguage} +% If more than one language is used, it might be necessary to know +% which language is active at a specific time. This can be checked +% by a call to |\iflanguage|. This macro takes three arguments. +% The first argument is the name of a language; the second and +% third arguments are the actions to take if the result of the test +% is \texttt{true} or \texttt{false} respectively. +% +% \DescribeMacro{\useshorthands} +% The command |\useshorthands| initiates the definition of +% user-defined shorthand sequences. It has one argument, the +% character that starts these personal shorthands. +% +% \DescribeMacro{\defineshorthand} +% The command |\defineshorthand| takes two arguments: the first +% is a one- or two-character shorthand sequence, and the second is +% the code the shorthand should expand to. +% +% \DescribeMacro{\aliasshorthand} +% The command |\aliasshorthand| can be used to let another +% character perform the same functions as the default shorthand +% character. If one prefers for example to use the character |/| +% over |"| in typing polish texts, this can be achieved by entering +% |\aliasshorthand{"}{/}|. \emph{Please note} that the substitute +% shorthand character must have been declared in the preamble of +% your document, using a command such as |\useshorthands{/}| in this +% example. +% +% \DescribeMacro{\languageshorthands} +% The command |\languageshorthands| can be used to switch the +% shorthands on the language level. It takes one argument, the +% name of a language. Note that for this to work the language +% should have been specified as an option when loading the \babel\ +% package. +% +% \DescribeMacro{\shorthandon} +% \DescribeMacro{\shorthandoff} +% It is sometimes necessary to switch a shorthand +% character off temporarily, because it must be used in an +% entirely different way. For this purpose, the user commands +% |\shorthandoff| and |\shorthandon| are provided. They each take a +% list of characters as their arguments. The command |\shorthandoff| +% sets the |\catcode| for each of the characters in its argument to +% other (12); the command |\shorthandon| sets the |\catcode| to +% active (13). Both commands only work on `known' +% shorthand characters. If a character is not known to be a +% shorthand character its category code will be left unchanged. +% +% \DescribeMacro{\languageattribute} +% This is a user-level command, to be used in the preamble of a +% document (after |\usepackage[...]{babel}|), that declares which +% attributes are to be used for a given language. It takes two +% arguments: the first is the name of the language; the second, +% a (list of) attribute(s) to used. +% The command checks whether the language is known in this document +% and whether the attribute(s) are known for this language. +% +% \subsection{Languages supported by \Babel} +% +% In the following table all the languages supported by \Babel\ are +% listed, together with the names of the options with which you can +% load \babel\ for each language. +% +% \begin{center} +% \tablehead{Language & Option(s)\\\hline} +% \tabletail{\hline} +% \begin{supertabular}{l p{8cm}} +% Afrikaans & afrikaans\\ +% Bahasa & bahasa\\ +% Basque & basque\\ +% Breton & breton\\ +% Bulgarian & bulgarian\\ +% Catalan & catalan\\ +% Croatian & croatian\\ +% Czech & czech\\ +% Danish & danish\\ +% Dutch & dutch\\ +% English & english, USenglish, american, UKenglish, +% british, canadian, australian, newzealand\\ +% Esperanto & esperanto\\ +% Estonian & estonian\\ +% Finnish & finnish\\ +% French & french, francais, canadien, acadian\\ +% Galician & galician\\ +% German & austrian, german, germanb, ngerman, naustrian\\ +% Greek & greek, polutonikogreek \\ +% Hebrew & hebrew \\ +% Hungarian & magyar, hungarian\\ +% Icelandic & icelandic \\ +% Interlingua & interlingua \\ +% Irish Gaelic & irish\\ +% Italian & italian\\ +%^^A Kannada & kannada \\ +% Latin & latin \\ +% Lower Sorbian & lowersorbian\\ +%^^A Devnagari & nagari \\ +% North Sami & samin \\ +% Norwegian & norsk, nynorsk\\ +% Polish & polish\\ +% Portuguese & portuges, portuguese, brazilian, brazil\\ +% Romanian & romanian\\ +% Russian & russian\\ +%^^A Sanskrit & sanskrit\\ +% Scottish Gaelic & scottish\\ +% Spanish & spanish\\ +% Slovakian & slovak\\ +% Slovenian & slovene\\ +% Swedish & swedish\\ +% Serbian & serbian\\ +%^^A Tamil & tamil \\ +% Turkish & turkish\\ +% Ukrainian & ukrainian\\ +% Upper Sorbian & uppersorbian\\ +% Welsh & welsh\\ +% \end{supertabular} +% \end{center} +% +% For some languages \babel\ supports the options +% \Lopt{activeacute} and \Lopt{activegrave}; for typestting Russian +% texts, \babel\ knows about the options \Lopt{LWN} and \Lopt{LCY} +% to specify the fontencoding of the cyrillic font used. Currently +% only \Lopt{LWN} is supported. +% +% \subsection{Workarounds} +% +% If you use the document class \cls{book} \emph{and} you use +% |\ref| inside the argument of |\chapter|, +% \LaTeX\ will keep complaining about an undefined +% label. The reason is that the argument of |\ref| is passed through +% |\uppercase| at some time during processing. To prevent such +% problems, you could revert to using uppercase labels, or you can +% use |\lowercase{\ref{foo}}| inside the argument of |\chapter|. +% +% \section{Changes for \LaTeXe} +% +% With the advent of \LaTeXe\ the interface to \babel\ in the +% preamble of the document has changed. With \LaTeX2.09 one used to +% call up the \babel\ system with a line such as: +% +%\begin{verbatim} +%\documentstyle[dutch,english]{article} +%\end{verbatim} +% +% which would tell \LaTeX\ that the document would be written in +% two languages, Dutch and English, and that English would be the +% first language in use. +% +% The \LaTeXe\ way of providing the same information is: +% +%\begin{verbatim} +%\documentclass{article} +%\usepackage[dutch,english]{babel} +%\end{verbatim} +% +% or, making \Lopt{dutch} and \Lopt{english} global options in +% order to let other packages detect and use them: +% +%\begin{verbatim} +%\documentclass[dutch,english]{article} +%\usepackage{babel} +%\usepackage{varioref} +%\end{verbatim} +% +% In this last example, the package \texttt{varioref} will also see +% the options and will be able to use them. +% +% \section{Changes in \Babel\ version 3.7} +% +% In \Babel\ version 3.7 a number of bugs that were found in +% version~3.6 are fixed. Also a number of changes and additions +% have occurred: +% \begin{itemize} +% \item Shorthands are expandable again. The disadvantage is that +% one has to type |'{}a| when the acute accent is used as a +% shorthand character. The advantage is that a number of other +% problems (such as the breaking of ligatures, etc.) have +% vanished. +% \item Two new commands, |\shorthandon| and |\shorthandoff| have +% been introduced to enable to temporarily switch off one or more +% shorthands. +%^^A \item Support for typesetting Sanskrit in transliteration is now +%^^A available, thanks to Jun Takashima. +%^^A \item Support for typesetting Kannada, Devnagari and Tamil is now +%^^A available thanks to Jun Takashima. +% \item Support for typesetting Greek has been enhanced. Code from +% the \pkg{kdgreek} package (suggested by the author) was added +% and |\greeknumeral| has been added. +% \item Support for typesetting Basque is now available thanks to +% Juan Aguirregabiria. +% \item Support for typesetting Serbian with Latin script is now +% available thanks to Dejan Muhamedagi\'{c} and Jankovic +% Slobodan. +% \item Support for typesetting Hebrew (and potential support for +% typesetting other right-to-left written languages) is now +% available thanks to Rama Porrat and Boris Lavva. +% \item Support for typesetting Bulgarian is now available thanks to +% Georgi Boshnakov. +% \item Support for typesetting Latin is now available, thanks to +% Claudio Beccari and Krzysztof Konrad \.Zelechowski. +% \item Support for typesetting North Sami is now available, thanks +% to Regnor Jernsletten. +% \item The options \Lopt{canadian}, \Lopt{canadien} and +% \Lopt{acadien} have been added for Canadian English and French +% use. +% \item A language attribute has been added to the |\mark...| +% commands in order to make sure that a Greek header line comes +% out right on the last page before a language switch. +% \item Hyphenation pattern files are now read \emph{inside a +% group}; therefore any changes a pattern file needs to make to +% lowercase codes, uppercase codes, and category codes are kept +% local to that group. If they are needed for the language, these +% changes will need to be repeated and stored in |\extras...| +% \item The concept of language attributes is introduced. It is +% intended to give the user some control over the +% features a language-definition file provides. Its +% first use is for the Greek language, where the user can choose +% the $\pi o\lambda\upsilon\tau o\nu\kappa\acute{o}$ +% (``Polutoniko'' or multi-accented) Greek way of typesetting +% texts. These attributes will possibly find wider use in future +% releases. +% \item The environment \Lenv{hyphenrules} is introduced. +% \item The syntax of the file \file{language.dat} has been +% extended to allow (optionally) specifying the font +% encoding to be used while processing the patterns file. +% \item The command |\providehyphenmins| should now be used in +% language definition files in order to be able to keep any +% settings provided by the pattern file. +% \end{itemize} +% +% \section{Changes in \Babel\ version 3.6} +% +% In \Babel\ version 3.6 a number of bugs that were found in +% version~3.5 are fixed. Also a number of changes and additions +% have occurred: +% \begin{itemize} +% \item A new environment \Lenv{otherlanguage*} is introduced. it +% only switches the `specials', but leaves the `captions' +% untouched. +% \item The shorthands are no longer fully expandable. Some +% problems could only be solved by peeking at the token following +% an active character. The advantage is that |'{}a| works as +% expected for languages that have the |'| active. +% \item Support for typesetting french texts is much enhanced; the +% file \file{francais.ldf} is now replaced by \file{frenchb.ldf} +% which is maintained by Daniel Flipo. +% \item Support for typesetting the russian language is again +% available. The language definition file was originally +% developed by Olga Lapko from CyrTUG. The fonts needed to +% typeset the russian language are now part of the \babel\ +% distribution. The support is not yet up to the level which is +% needed according to Olga, but this is a start. +% \item Support for typesetting greek texts is now also +% available. What is offered in this release is a first attempt; +% it will be enhanced later on by Yannis Haralambous. +% \item in \babel\ 3.6j some hooks have been added for the +% development of support for Hebrew typesetting. +% \item Support for typesetting texts in Afrikaans (a variant of +% Dutch, spoken in South Africa) has been added to +% \file{dutch.ldf}. +% \item Support for typesetting Welsh texts is now available. +% \item A new command |\aliasshorthand| is introduced. It seems +% that in Poland various conventions are used to type the +% necessary Polish letters. It is now possible to use the +% character~|/| as a shorthand character instead of the +% character~|"|, by issuing the command |\aliasshorthand{"}{/}|. +% \item The shorthand mechanism now deals correctly with characters +% that are already active. +% \item Shorthand characters are made active at |\begin{document}|, +% not earlier. This is to prevent problems with other packages. +% \item A \emph{preambleonly} command |\substitutefontfamily| has +% been added to create \file{.fd} files on the fly when the font +% families of the Latin text differ from the families used for +% the Cyrillic or Greek parts of the text. +% \item Three new commands |\LdfInit|, |\ldf@quit| and +% |\ldf@finish| are introduced that perform a number of standard +% tasks. +% \item In babel 3.6k the language Ukrainian has been added and the +% support for Russian typesetting has been adapted to the package +% 'cyrillic' to be released with the December 1998 release of +% \LaTeXe. +% \end{itemize} +% +% \section{Changes in \Babel\ version 3.5} +% +% In \Babel\ version 3.5 a lot of changes have been made when +% compared with the previous release. Here is a list of the most +% important ones: +% \begin{itemize} +% \item the selection of the language is delayed until +% |\begin{document}|, which means you must +% add appropriate |\selectlanguage| commands if you include +% |\hyphenation| lists in the preamble of your document. +% \item \babel\ now has a \Lenv{language} environment and a new +% command |\foreignlanguage|; +% \item the way active characters are dealt with is completely +% changed. They are called `shorthands'; one can have three +% levels of shorthands: on the user level, the language level, and +% on `system level'. A consequence of the new way of handling +% active characters is that they are now written to auxiliary +% files `verbatim'; +% \item A language change now also writes information in the +% \file{.aux} file, as the change might also affect typesetting +% the table of contents. The consequence is that an .aux file +% generated by a LaTeX format with babel preloaded gives errors +% when read with a LaTeX format without babel; but I think this +% probably doesn't occur; +% \item \babel\ is now compatible with the \pkg{inputenc} and +% \pkg{fontenc} packages; +% \item the language definition files now have a new extension, +% \file{ldf}; +% \item the syntax of the file \file{language.dat} is extended to +% be compatible with the \pkg{french} package by Bernard Gaulle; +% \item each language definition file looks for a configuration +% file which has the same name, but the extension \file{.cfg}. It +% can contain any valid \LaTeX\ code. +% \end{itemize} +% +% \section{The interface between the core of \babel{} and the language +% definition files} +% +% In the core of the \babel{} system, several macros are defined +% for use in language definition files. Their purpose +% is to make a new language known. +% +% \DescribeMacro{\addlanguage} +% The macro |\addlanguage| is a non-outer version of the macro +% |\newlanguage|, defined in \file{plain.tex} version~3.x. For +% older versions of \file{plain.tex} and \file{lplain.tex} a +% substitute definition is used. +% +% \DescribeMacro{\adddialect} +% The macro |\adddialect| can be used when two +% languages can (or must) use the same hyphenation +% patterns. This can also be useful for +% languages for which no patterns are preloaded in the format. In +% such cases the default behaviour of the \babel{} system is to +% define this language as a `dialect' of the language for which the +% patterns were loaded as |\language0|. +% +% The language definition files must conform to a number of +% conventions, because these files have to fill +% in the gaps left by the common code in \file{babel.def}, i.\,e., +% the definitions of the macros that produce texts. Also the +% language-switching possibility which has been built into the +% \babel{} system has its implications. +% +% The following assumptions are made: +% \begin{itemize} +% \item Some of the language-specific definitions might be used by +% plain \TeX\ users, so the files have to be coded so that they +% can be read by both \LaTeX\ and plain \TeX. The current +% format can be checked by looking at the value of the macro +% |\fmtname|. +% +% \item The common part of the \babel{} system redefines a number +% of macros and environments (defined previously in the document +% style) to put in the names of macros that replace the previously +% hard-wired texts. These macros have to be defined in the +% language definition files. +% +% \item The language definition files define five macros, used to +% activate and deactivate the language-specific definitions. These +% macros are |\|\langvar|hyphenmins|, |\captions|\langvar, +% |\date|\langvar, |\extras|\langvar\ and |\noextras|\langvar; where +% \langvar\ is either the name of the language definition file or +% the name of the \LaTeX\ option that is to be used. These +% macros and their functions are discussed below. +% +% \item When a language definition file is loaded, it can define +% |\l@|\langvar\ to be a dialect of |\language0| when +% |\l@|\langvar\ is undefined. +% +% \item The language definition files can be read in the preamble of +% the document, but also in the middle of document processing. This +% means that they have to function independently of the current +% |\catcode| of the \texttt{@}~sign. +% \end{itemize} +% +% \DescribeMacro{\providehyphenmins} +% The macro |\providehyphenmins| should be used in the language +% definition files to set the |\lefthyphenmin| and +% |\righthyphenmin|. This macro will check whether these parameters +% were provided by the hyphenation file before it takes any action. +% +% \DescribeMacro{\langhyphenmins} +% The macro |\|\langvar|hyphenmins| is used to store the values of +% the |\lefthyphenmin| and |\righthyphenmin|. +% +% \DescribeMacro{\captionslang} +% The macro |\captions|\langvar\ defines the macros that +% hold the texts to replace the original hard-wired texts. +% +% \DescribeMacro{\datelang} +% The macro |\date|\langvar\ defines |\today| and +% +% \DescribeMacro{\extraslang} +% The macro |\extras|\langvar\ contains all the extra definitions +% needed for a specific language. +% +% \DescribeMacro{\noextraslang} +% Because we want to let the user switch +% between languages, but we do not know what state \TeX\ might be in +% after the execution of |\extras|\langvar, a macro that brings +% \TeX\ into a predefined state is needed. It will be no surprise +% that the name of this macro is |\noextras|\langvar. +% +% \DescribeMacro{\bbl@declare@ttribute} +% This is a command to be used in the language definition files for +% declaring a language attribute. It takes three arguments: the +% name of the language, the attribute to be defined, and the code +% to be executed when the attribute is to be used. +% +% \DescribeMacro{\main@language} +% To postpone the activation of the definitions needed for a +% language until the beginning of a document, all language +% definition files should use |\main@language| instead of +% |\selectlanguage|. This will just store the name of the language, +% and the proper language will be activated at the start of the +% document. +% +% \DescribeMacro{\ProvidesLanguage} +% The macro |\ProvidesLanguage| should be used to identify the +% language definition files. Its syntax is similar to the syntax +% of the \LaTeX\ command |\ProvidesPackage|. +% +% \DescribeMacro{\LdfInit} +% The macro |\LdfInit| performs a couple of standard checks that +% must be made at the beginning of a language definition file, +% such as checking the category code of the @-sign, preventing +% the \file{.ldf} file from being processed twice, etc. +% +% \DescribeMacro{\ldf@quit} +% The macro |\ldf@quit| does work needed +% if a \file{.ldf} file was processed +% earlier. This includes resetting the category code +% of the @-sign, preparing the language to be activated at +% |\begin{document}| time, and ending the input stream. +% +% \DescribeMacro{\ldf@finish} +% The macro |\ldf@finish| does work needed +% at the end of each \file{.ldf} file. This +% includes resetting the category code of the @-sign, +% loading a local configuration file, and preparing the language +% to be activated at |\begin{document}| time. +% +% \DescribeMacro{\loadlocalcfg} +% After processing a language definition file, +% \LaTeX\ can be instructed to load a local configuration +% file. This file can, for instance, be used to add strings to +% |\captions|\langvar\ to support local document +% classes. The user will be informed that this +% configuration file has been loaded. This macro is called by +% |\ldf@finish|. +% +% \DescribeMacro{\substitutefontfamily} +% This command takes three arguments, a font encoding and two font +% family names. It creates a font description file for the first +% font in the given encoding. This \file{.fd} file will instruct +% \LaTeX\ to use a font from the second family when a font from the +% first family in the given encoding seems to be needed. +% +% \subsection{Support for active characters} +% +% In quite a number of language definition files, active characters +% are introduced. To facilitate this, some support macros are +% provided. +% +% \DescribeMacro{\initiate@active@char} +% The internal macro |\initiate@active@char| is used in language +% definition files to instruct \LaTeX\ to give a character the +% category code `active'. When a character has been made active it +% will remain that way until the end of the document. Its +% definition may vary. +% +% \DescribeMacro{\bbl@activate} +% \DescribeMacro{\bbl@deactivate} +% The command |\bbl@activate| is used to change the way an active +% character expands. |\bbl@activate| `switches on' the active +% behaviour of the character. |\bbl@deactivate| lets the active +% character expand to its former (mostly) non-active self. +% +% \DescribeMacro{\declare@shorthand} +% The macro |\declare@shorthand| is used to define the various +% shorthands. It takes three arguments: the name for the collection +% of shorthands this definition belongs to; the character +% (sequence) that makes up the shorthand, i.e.\ |~| or |"a|; and the +% code to be executed when the shorthand is encountered. +% +% \DescribeMacro{\bbl@add@special} +% \DescribeMacro{\bbl@remove@special} +% The \TeX book states: ``Plain \TeX\ includes a macro called +% |\dospecials| that is +% essentially a set macro, representing the set of all characters +% that have a special category code.'' \cite[p.~380]{DEK} It is +% used to set text `verbatim'. To make this work if more +% characters get a special category code, you have to add this +% character to the macro |\dospecial|. \LaTeX\ adds another macro +% called |\@sanitize| representing the same character set, but +% without the curly braces. The macros +% |\bbl@add@special|\meta{char} and +% |\bbl@remove@special|\meta{char} add and remove the character +% \meta{char} to these two sets. +% +% \subsection{Support for saving macro definitions} +% +% Language definition files may want to \emph{re}define macros that +% already exist. Therefor a mechanism for saving (and restoring) +% the original definition of those macros is provided. We provide +% two macros for this\footnote{This mechanism was introduced by +% Bernd Raichle.}. +% +% \DescribeMacro{\babel@save} To save the current meaning of any +% control sequence, the macro |\babel@save| is provided. It takes +% one argument, \meta{csname}, the control sequence for which the +% meaning has to be saved. +% +% \DescribeMacro{\babel@savevariable} A second macro is provided to +% save the current value of a variable. In this context, anything +% that is allowed after the |\the| primitive is considered to be a +% variable. The macro takes one argument, the \meta{variable}. +% +% The effect of the preceding macros is to append a piece of code +% to the current definition of |\originalTeX|. When +% |\originalTeX| is expanded, this code restores the previous +% definition of the control sequence or the previous value of the +% variable. +% +% \subsection{Support for extending macros} +% +% \DescribeMacro{\addto} +% The macro |\addto{|\meta{control sequence}|}{|\meta{\TeX\ +% code}|}| can be used to extend the definition of a macro. The +% macro need not be defined. This macro can, for instance, be used +% in adding instructions to a macro like |\extrasenglish|. +% +% \subsection{Macros common to a number of languages} +% +% \DescribeMacro{\allowhyphens} +% In a couple of European languages compound words are used. This +% means that when \TeX\ has to hyphenate such a compound word, it +% only does so at the `\texttt{-}' that is used in such words. To +% allow hyphenation in the rest of such a compound word, the macro +% |\allowhyphens| can be used. +% +% \DescribeMacro{\set@low@box} +% For some languages, quotes need to be lowered to the baseline. For +% this purpose the macro |\set@low@box| is available. It takes one +% argument and puts that argument in an |\hbox|, at the +% baseline. The result is available in |\box0| for further +% processing. +% +% \DescribeMacro{\save@sf@q} +% Sometimes it is necessary to preserve the |\spacefactor|. For +% this purpose the macro |\save@sf@q| is available. It takes one +% argument, saves the current spacefactor, executes the argument, +% and restores the spacefactor. +% +% \DescribeMacro{\bbl@frenchspacing} +% \DescribeMacro{\bbl@nonfrenchspacing} +% The commands |\bbl@frenchspacing| and |\bbl@nonfrenchspacing| can +% be used to properly switch French spacing on and off. +% +% \section{Compatibility with \file{german.sty}}\label{l-h} +% +% The file \file{german.sty} has been +% one of the sources of inspiration for the \babel{} +% system. Because of this I wanted to include \file{german.sty} in +% the \babel{} system. To be able to do that I had to allow for +% one incompatibility: in the definition of the macro +% |\selectlanguage| in \file{german.sty} the argument is used as the +% {$\langle \it number \rangle$} for an |\ifcase|. So in this case +% a call to |\selectlanguage| might look like +% |\selectlanguage{\german}|. +% +% In the definition of the macro |\selectlanguage| in +% \file{babel.def} the argument is used as a part of other +% macronames, so a call to |\selectlanguage| now looks like +% |\selectlanguage{german}|. Notice the absence of the escape +% character. As of version~3.1a of \babel{} both syntaxes are +% allowed. +% +% All other features of the original \file{german.sty} have been +% copied into a new file, called \file{germanb.sty}\footnote{The +% `b' is added to the name to distinguish the file from Partls' +% file.}. +% +% Although the \babel{} system was developed to be used with +% \LaTeX, some of the features implemented in the language +% definition files might be needed by plain \TeX\ users. Care has +% been taken that all files in the system can be processed by plain +% \TeX. +% +% \section{Compatibility with \file{ngerman.sty}} +% +% When used with the options \Lopt{ngerman} or \Lopt{naustrian}, +% \babel{} will provide all features of the package \pkg{ngerman}. +% There is however one exception: The commands for special +% hyphenation of double consonants (|"ff| etc.) and ck (|"ck|), +% which are no longer required with the new German orthography, are +% undefined. With the \pkg{ngerman} package, however, these +% commands will generate appropriate warning messages only. +% +% \section{Compatibility with the \pkg{french} package} +% +% It has been reported to me that the package \pkg{french} by +% Bernard Gaulle (\texttt{gaulle@idris.fr}) works +% together with \babel. On the other hand, it seems \emph{not} to +% work well together with a lot of other packages. Therefore I have +% decided to no longer load \file{french.ldf} by default. Instead, +% when you want to use the package by Bernard Gaulle, you will have +% to request it specifically, by passing either \Lopt{frenchle} or +% \Lopt{frenchpro} as an option to \babel. +% +%\StopEventually{% +% \clearpage +% \let\filename\thisfilename +% \section{Conclusion} +% +% A system of document options has been presented that enable the +% user of \LaTeX\ to adapt the standard document classes of \LaTeX\ +% to the language he or she prefers to use. These options offer the +% possibility of switching between languages in one document. The +% basic interface consists of using one option, which is the same +% for \emph{all} standard document classes. +% +% In some cases the language definition files provide macros that +% can be useful to plain \TeX\ users as well as to \LaTeX\ users. +% The \babel{} system has been implemented so that it +% can be used by both groups of users. +% +% \section{Acknowledgements} +% +% I would like to thank all who volunteered as $\beta$-testers for +% their time. I would like to mention Julio Sanchez who supplied +% the option file for the Spanish language and Maurizio Codogno who +% supplied the option file for the Italian language. Michel Goossens +% supplied contributions for most of the other languages. Nico +% Poppelier helped polish the text of the documentation and +% supplied parts of the macros for the Dutch language. Paul +% Wackers and Werenfried Spit helped find and repair bugs. +% +% During the further development of the babel system I received +% much help from Bernd Raichle, for which I am grateful. +% +% \begin{thebibliography}{9} +% \bibitem{DEK} Donald E. Knuth, +% \emph{The \TeX book}, Addison-Wesley, 1986. +% \bibitem{LLbook} Leslie Lamport, +% \emph{\LaTeX, A document preparation System}, Addison-Wesley, +% 1986. +% \bibitem{treebus} K.F. Treebus. +% \emph{Tekstwijzer, een gids voor het grafisch verwerken van +% tekst.} +% SDU Uitgeverij ('s-Gravenhage, 1988). A Dutch book on layout +% design and typography. +% \bibitem{HP} Hubert Partl, +% \emph{German \TeX}, \emph{TUGboat} 9 (1988) \#1, p.~70--72. +% \bibitem{LLth} Leslie Lamport, +% in: \TeXhax\ Digest, Volume 89, \#13, 17 February 1989. +% \bibitem{BEP} Johannes Braams, Victor Eijkhout and Nico Poppelier, +% \emph{The development of national \LaTeX\ styles}, +% \emph{TUGboat} 10 (1989) \#3, p.~401--406. +% \bibitem{ilatex} Joachim Schrod, +% \emph{International \LaTeX\ is ready to use}, +% \emph{TUGboat} 11 (1990) \#1, p.~87--90. +% \end{thebibliography} +% } +% +% \section{Identification} +% +% The file \file{babel.sty}\footnote{The file described in this +% section is called \texttt{\filename}, has version +% number~\fileversion\ and was last revised on~\filedate.} is meant +% for \LaTeXe, therefor we make sure that the format file used is +% the right one. +% +% \begin{macro}{\ProvidesLanguage} +% \changes{babel~3.7a}{1997/03/18}{Added macro to prevent problems +% with unexpected \cs{ProvidesFile} in plain formats because of +% \babel.} +% The identification code for each file is something that was +% introduced in \LaTeXe. When the command |\ProvidesFile| does not +% exist, a dummy definition is provided temporarily. For use in the +% language definition file the command |\ProvidesLanguage| is +% defined by \babel. +% \changes{babel~3.4e}{1994/06/24}{Redid the identification code, +% provided dummy definition of \cs{ProvidesFile} for plain \TeX} +% \changes{babel~3.5f}{1995/07/26}{Store version in \cs{fileversion}} +% \changes{babel~3.5f}{1995/12/18}{Need to temporarily change the +% definition of \cs{ProvidesFile} for December 1995 release} +% \changes{babel~3.5g}{1996/07/09}{Save a few csnames; use +% \cs{bbl@tempa} instead of \cs{\@ProvidesFile} and store message +% in \cs{toks8}} +% \begin{macrocode} +%<*!package> +\ifx\ProvidesFile\@undefined + \def\ProvidesFile#1[#2 #3 #4]{% + \wlog{File: #1 #4 #3 <#2>}% +%<*kernel&patterns> + \toks8{Babel <#3> and hyphenation patterns for }% +%</kernel&patterns> + \let\ProvidesFile\@undefined + } +% \end{macrocode} +% As an alternative for |\ProvidesFile| we define +% |\ProvidesLanguage| here to be used in the language definition +% files. +% \begin{macrocode} +%<*kernel> + \def\ProvidesLanguage#1[#2 #3 #4]{% + \wlog{Language: #1 #4 #3 <#2>}% + } +\else +% \end{macrocode} +% In this case we save the original definition of |\ProvidesFile| in +% |\bbl@tempa| and restore it after we have stored the version of +% the file in |\toks8|. +% \changes{babel~3.7a}{1997/11/04}{Removed superfluous braces} +% \begin{macrocode} +%<*kernel&patterns> + \let\bbl@tempa\ProvidesFile + \def\ProvidesFile#1[#2 #3 #4]{% + \toks8{Babel <#3> and hyphenation patterns for }% + \bbl@tempa#1[#2 #3 #4]% + \let\ProvidesFile\bbl@tempa} +%</kernel&patterns> +% \end{macrocode} +% When |\ProvidesFile| is defined we give |\ProvidesLanguage| a +% similar definition. +% \begin{macrocode} + \def\ProvidesLanguage#1{% + \begingroup + \catcode`\ 10 % + \@makeother\/% + \@ifnextchar[%] + {\@provideslanguage{#1}}{\@provideslanguage{#1}[]}} + \def\@provideslanguage#1[#2]{% + \wlog{Language: #1 #2}% + \expandafter\xdef\csname ver@#1.ldf\endcsname{#2}% + \endgroup} +%</kernel> +\fi +%</!package> +% \end{macrocode} +% \end{macro} +% +% Identify each file that is produced from this source file. +% \changes{babel~3.4c}{1995/04/28}{lhyphen.cfg has become +% lthyphen.cfg} +% \changes{babel~3.5b}{1995/01/25}{lthyphen.cfg has become hyphen.cfg} +% \begin{macrocode} +%<+package>\ProvidesPackage{babel} +%<+core>\ProvidesFile{babel.def} +%<+kernel&patterns>\ProvidesFile{hyphen.cfg} +%<+kernel&!patterns>\ProvidesFile{switch.def} +%<+driver&!user>\ProvidesFile{babel.drv} +%<+driver&user>\ProvidesFile{user.drv} + [2005/05/21 v3.8g % +%<+package> The Babel package] +%<+core> Babel common definitions] +%<+kernel> Babel language switching mechanism] +%<+driver>] +% \end{macrocode} +% +% \section{The Package File} +% +% In order to make use of the features of \LaTeXe, the \babel\ +% system contains a package file, \file{babel.sty}. This file +% is loaded by the |\usepackage| command and defines all the +% language options known in the \babel\ system. It also takes care +% of a number of compatibility issues with other packages. +% +% \subsection{Language options} +% +% \changes{babel~3.6c}{1997/01/05}{When \cs{LdfInit} is undefined we +% need to load \file{babel.def} from \file{babel.sty}} +% \changes{babel~3.6l}{1999/04/03}{Don't load \file{babel.def} now, +% but rather define \cs{LdfInit} temporarily in order to load +% \file{babel.def} at the right time, preventing problems with the +% temporary definition of \cs{bbl@redefine}} +% \changes{babel~3.6r}{1999/04/12}{We \textbf{do} need to load +% \file{babel.def} right now as \cs{ProvidesLanguage} needs to be +% defined before the \file{.ldf} files are read and the reason for +% for 3.6l has been removed} +% \begin{macrocode} +%<*package> +\ifx\LdfInit\@undefined\input babel.def\relax\fi +% \end{macrocode} +% +% For all the languages supported we need to declare an option. +% \changes{babel~3.5a}{1995/03/14}{Changed extension of language +% definition files to \texttt{ldf}} +% \changes{babel~3.5d}{1995/07/02}{Load language definition files +% \emph{after} the check for the hyphenation patterns} +% \changes{babel~3.5g}{1996/10/04}{Added option \Lopt{afrikaans}} +% \changes{babel~3.7g}{2001/02/09}{Added option \Lopt{acadian}} +% \changes{babel~3.8c}{2004/06/12}{Added option \Lopt{australian}} +% \begin{macrocode} +\DeclareOption{acadian}{\input{frenchb.ldf}} +\DeclareOption{afrikaans}{\input{dutch.ldf}} +\DeclareOption{american}{\input{english.ldf}} +\DeclareOption{australian}{\input{english.ldf}} +% \end{macrocode} +% Austrian is really a dialect of German. +% \changes{babel~3.6i}{1997/02/20}{Added the \Lopt{Basque} option} +% \begin{macrocode} +\DeclareOption{austrian}{\input{germanb.ldf}} +\DeclareOption{bahasa}{\input{bahasa.ldf}} +\DeclareOption{basque}{\input{basque.ldf}} +\DeclareOption{brazil}{\input{portuges.ldf}} +% \end{macrocode} +% \changes{babel~3.5b}{1995/05/25}{Added \Lopt{brazilian} as +% alternative for \Lopt{brazil}} +% \begin{macrocode} +\DeclareOption{brazilian}{\input{portuges.ldf}} +\DeclareOption{breton}{\input{breton.ldf}} +% \end{macrocode} +% \changes{babel~3.5d}{1995/07/02}{Added \Lopt{british} as an +% alternative for \Lopt{english} with a preference for british +% hyphenation} +% \changes{babel~3.7f}{2000/09/21}{Added the \Lopt{bulgarian} option} +% \changes{babel~3.7g}{2001/02/07}{Added option \Lopt{canadian}} +% \changes{babel~3.7g}{2001/02/09}{Added option \Lopt{canadien}} +% \begin{macrocode} +\DeclareOption{british}{\input{english.ldf}} +\DeclareOption{bulgarian}{\input{bulgarian.ldf}} +\DeclareOption{canadian}{\input{english.ldf}} +\DeclareOption{canadien}{\input{frenchb.ldf}} +\DeclareOption{catalan}{\input{catalan.ldf}} +\DeclareOption{croatian}{\input{croatian.ldf}} +\DeclareOption{czech}{\input{czech.ldf}} +\DeclareOption{danish}{\input{danish.ldf}} +\DeclareOption{dutch}{\input{dutch.ldf}} +% \end{macrocode} +% \changes{babel~3.5b}{1995/06/06}{Added the \Lopt{estonian} option} +% \begin{macrocode} +\DeclareOption{english}{\input{english.ldf}} +\DeclareOption{esperanto}{\input{esperanto.ldf}} +\DeclareOption{estonian}{\input{estonian.ldf}} +\DeclareOption{finnish}{\input{finnish.ldf}} +% \end{macrocode} +% The \babel\ support or French used to be stored in +% \file{francais.ldf}; therefor the \LaTeX2.09 option used to be +% \Lopt{francais}. The hyphenation patterns may be loaded as either +% `french' or as `francais'. +% \changes{babel~3.5f}{1996/01/10}{Now use the file \file{frenchb.ldf} +% from Daniel Flipo for french support} +% \changes{babel~3.6e}{1997/01/08}{Added option \Lopt{frenchb} an +% alias for \Lopt{francais}} +% \begin{macrocode} +\DeclareOption{francais}{\input{frenchb.ldf}} +\DeclareOption{frenchb}{\input{frenchb.ldf}} +% \end{macrocode} +% With \LaTeXe\ we can now also use the option \Lopt{french} and +% still call the file \file{frenchb.ldf}. +% \changes{babel~3.5d}{1995/07/02}{Load \file{french.ldf} when it is +% found instead of \file{frenchb.ldf}} +% \changes{babel~3.7j}{2003/06/07}{\emph{only} load +% \file{frenchb.ldf}} +% \begin{macrocode} +\DeclareOption{french}{\input{frenchb.ldf}}% +\DeclareOption{galician}{\input{galician.ldf}} +\DeclareOption{german}{\input{germanb.ldf}} +\DeclareOption{germanb}{\input{germanb.ldf}} +% \end{macrocode} +% \changes{babel~3.5f}{1996/05/31}{Added the \Lopt{greek} option} +% \changes{babel~3.7a}{1997/11/13}{Added the \Lopt{polutonikogreek} +% option} +% \changes{babel~3.7c}{1999/04/22}{set the correct language attribute +% for polutoniko greek} +% \begin{macrocode} +\DeclareOption{greek}{\input{greek.ldf}} +\DeclareOption{polutonikogreek}{% + \input{greek.ldf}% + \languageattribute{greek}{polutoniko}} +% \end{macrocode} +% \changes{babel~3.7a}{1998/03/27}{Added the \Lopt{hebrew} option} +% \begin{macrocode} +\DeclareOption{hebrew}{% + \input{rlbabel.def}% + \input{hebrew.ldf}} +% \end{macrocode} +% \Lopt{hungarian} is just a synonym for \Lopt{magyar} +%^^A \changes{babel~3.6i}{1997/02/21}{Added the \Lopt{kannada} option} +% \changes{babel~3.7a}{1997/05/21}{Added the \Lopt{icelandic} option} +%^^A \changes{babel~3.7a}{1998/03/30}{{Added the \Lopt{nagari} option} +% \changes{babel~3.7b}{1998/06/25}{Added the \Lopt{latin} option} +% \changes{babel~3.7m}{2003/11/13}{Added the \Lopt{interlingua} +% option} +% \begin{macrocode} +\DeclareOption{hungarian}{\input{magyar.ldf}} +\DeclareOption{icelandic}{\input{icelandic.ldf}} +\DeclareOption{interlingua}{\input{interlingua.ldf}} +\DeclareOption{irish}{\input{irish.ldf}} +\DeclareOption{italian}{\input{italian.ldf}} +\DeclareOption{latin}{\input{latin.ldf}} +\DeclareOption{lowersorbian}{\input{lsorbian.ldf}} +%^^A\DeclareOption{kannada}{\input{kannada.ldf}} +\DeclareOption{magyar}{\input{magyar.ldf}} +%^^A\DeclareOption{nagari}{\input{nagari.ldf}} +% \end{macrocode} +% `New' German orthography, including Austrian variant: +% \changes{babel~3.6p}{1999/04/10}{Added the \Lopt{ngerman} and +% \Lopt{naustrian} options} +% \changes{babel~3.7f}{2000/09/26}{Added the \Lopt{samin} option} +% \changes{babel~3.8c}{2004/06/12}{Added the \Lopt{newzealand} option} +% \begin{macrocode} +\DeclareOption{naustrian}{\input{ngermanb.ldf}} +\DeclareOption{newzealand}{\input{english.ldf}} +\DeclareOption{ngerman}{\input{ngermanb.ldf}} +\DeclareOption{norsk}{\input{norsk.ldf}} +\DeclareOption{samin}{\input{samin.ldf}} +% \end{macrocode} +% For Norwegian two spelling variants are provided. +% \begin{macrocode} +\DeclareOption{nynorsk}{\input{norsk.ldf}} +\DeclareOption{polish}{\input{polish.ldf}} +\DeclareOption{portuges}{\input{portuges.ldf}} +\DeclareOption{portuguese}{\input{portuges.ldf}} +\DeclareOption{romanian}{\input{romanian.ldf}} +\DeclareOption{russian}{\input{russianb.ldf}} +% \end{macrocode} +%^^A \changes{babel~3.7a}{1997/02/07}{Added the \Lopt{sanskrit} option} +% \changes{babel~3.6i}{1997/02/21}{Added the \Lopt{ukrainian} option} +%^^A \changes{babel~3.7a}{1998/03/30}{Added the \Lopt{tamil} option} +% \begin{macrocode} +%^^A\DeclareOption{sanskrit}{\input{sanskrit.ldf}} +\DeclareOption{scottish}{\input{scottish.ldf}} +\DeclareOption{serbian}{\input{serbian.ldf}} +\DeclareOption{slovak}{\input{slovak.ldf}} +\DeclareOption{slovene}{\input{slovene.ldf}} +\DeclareOption{spanish}{\input{spanish.ldf}} +\DeclareOption{swedish}{\input{swedish.ldf}} +%^^A\DeclareOption{tamil}{\input{tamil.ldf}} +\DeclareOption{turkish}{\input{turkish.ldf}} +\DeclareOption{ukrainian}{\input{ukraineb.ldf}} +\DeclareOption{uppersorbian}{\input{usorbian.ldf}} +\DeclareOption{welsh}{\input{welsh.ldf}} +% \end{macrocode} +% \changes{babel~3.6e}{1997/01/08}{Added options \Lopt{UKenglish} and +% \Lopt{USenglish}} +% \begin{macrocode} +\DeclareOption{UKenglish}{\input{english.ldf}} +\DeclareOption{USenglish}{\input{english.ldf}} +% \end{macrocode} +% +% For all those languages for which the option name is the same as +% the name of the language specific file we specify a default +% option, which tries to load the file specified. If this doesn't +% succeed an error is signalled. +% \changes{babel~3.6i}{1997/03/12}{Added default option} +% \begin{macrocode} +\DeclareOption*{% + \InputIfFileExists{\CurrentOption.ldf}{}{% + \PackageError{babel}{% + Language definition file \CurrentOption.ldf not found}{% + Maybe you misspelled the language option?}}% + } +% \end{macrocode} +% Another way to extend the list of `known' options for \babel\ is +% to create the file \file{bblopts.cfg} in which one can add +% option declarations. +% \changes{babel~3.6i}{1997/03/15}{Added the possibility to have a +% \file{bblopts.cfg} file with option declarations.} +% \begin{macrocode} +\InputIfFileExists{bblopts.cfg}{% + \typeout{*************************************^^J% + * Local config file bblopts.cfg used^^J% + *}% + }{} +% \end{macrocode} +% +% Apart from all the language options we also have a few options +% that influence the behaviour of language definition files. +% +% The following options don't do anything themselves, they are just +% defined in order to make it possible for language definition +% files to check if one of them was specified by the user. +% \changes{babel~3.5d}{1995/07/04}{Added options to influence +% behaviour of active acute and grave accents} +% \begin{macrocode} +\DeclareOption{activeacute}{} +\DeclareOption{activegrave}{} +% \end{macrocode} +% The next option tells \babel\ to leave shorthand characters +% active at the end of processing the package. This is \emph{not} +% the default as it can cause problems with other packages, but for +% those who want to use the shorthand characters in the preamble of +% their documents this can help. +% \changes{babel~3.6f}{1997/01/14}{Added option +% \Lopt{KeepShorthandsActive}} +% \changes{babel~3.7a}{1997/03/21}{No longer define the control +% sequence \cs{KeepShorthandsActive}} +% \begin{macrocode} +\DeclareOption{KeepShorthandsActive}{} +% \end{macrocode} +% +% The options have to be processed in the order in which the user +% specified them: +% \begin{macrocode} +\ProcessOptions* +% \end{macrocode} +% \changes{babel~3.7c}{1999/03/13}{Added an error message for when no +% language option was specified} +% In order to catch the case where the user forgot to specify a +% language we check whether |\bbl@main@language|, has become +% defined. If not, no language has been loaded and an error +% message is displayed. +% \changes{babel~3.7c}{1999/04/09}{No longer us a redefinition of an +% internal macro, just check \cs{bbl@main@language} and load +% \file{babel.def}} +% \begin{macrocode} +\ifx\bbl@main@language\@undefined + \PackageError{babel}{% + You haven't specified a language option}{% + You need to specify a language, either as a global + option\MessageBreak + or as an optional argument to the \string\usepackage\space + command; \MessageBreak + You shouldn't try to proceed from here, type x to quit.} +% \end{macrocode} +% To prevent undefined command errors when the user insists on +% continuing we load \file{babel.def} here. He should expect more +% errors though. +% \begin{macrocode} + \input{babel.def} +\fi +% \end{macrocode} +% +% \begin{macro}{\substitutefontfamily} +% The command |\substitutefontfamily| creates an \file{.fd} file on +% the fly. The first argument is an encoding mnemonic, the second +% and third arguments are font family names. +% \changes{babel~3.7j}{2003/06/15}{create file with lowercase name} +% \begin{macrocode} +\def\substitutefontfamily#1#2#3{% + \lowercase{\immediate\openout15=#1#2.fd\relax}% + \immediate\write15{% + \string\ProvidesFile{#1#2.fd}% + [\the\year/\two@digits{\the\month}/\two@digits{\the\day} + \space generated font description file]^^J + \string\DeclareFontFamily{#1}{#2}{}^^J + \string\DeclareFontShape{#1}{#2}{m}{n}{<->ssub * #3/m/n}{}^^J + \string\DeclareFontShape{#1}{#2}{m}{it}{<->ssub * #3/m/it}{}^^J + \string\DeclareFontShape{#1}{#2}{m}{sl}{<->ssub * #3/m/sl}{}^^J + \string\DeclareFontShape{#1}{#2}{m}{sc}{<->ssub * #3/m/sc}{}^^J + \string\DeclareFontShape{#1}{#2}{b}{n}{<->ssub * #3/bx/n}{}^^J + \string\DeclareFontShape{#1}{#2}{b}{it}{<->ssub * #3/bx/it}{}^^J + \string\DeclareFontShape{#1}{#2}{b}{sl}{<->ssub * #3/bx/sl}{}^^J + \string\DeclareFontShape{#1}{#2}{b}{sc}{<->ssub * #3/bx/sc}{}^^J + }% + \closeout15 + } +% \end{macrocode} +% This command should only be used in the preamble of a document. +% \begin{macrocode} +\@onlypreamble\substitutefontfamily +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \section{The Kernel of Babel} +% +% The kernel of the \babel\ system is stored in either +% \file{hyphen.cfg} or \file{switch.def} and \file{babel.def}. The +% file \file{hyphen.cfg} is a file that can be loaded into the +% format, which is necessary when you want to be able to switch +% hyphenation patterns. The file \file{babel.def} contains some +% \TeX\ code that can be read in at run time. When \file{babel.def} +% is loaded it checks if \file{hyphen.cfg} is in the format; if +% not the file \file{switch.def} is loaded. +% +% Because plain \TeX\ users might want to use some of the features +% of the \babel{} system too, care has to be taken that plain \TeX\ +% can process the files. For this reason the current format will +% have to be checked in a number of places. Some of the code below +% is common to plain \TeX\ and \LaTeX, some of it is for the +% \LaTeX\ case only. +% +% When the command |\AtBeginDocument| doesn't exist we assume that +% we are dealing with a plain-based format. In that case the file +% \file{plain.def} is needed. +% +% \begin{macrocode} +%<*kernel|core> +\ifx\AtBeginDocument\@undefined +% \end{macrocode} +% But we need to use the second part of \file{plain.def} (when we +% load it from \file{switch.def}) which we can do by defining +% |\adddialect|. +% \changes{babel~3.7c}{1999/04/20}{define \cs{adddialect} before +% loading \file{plain.def} here} +% \begin{macrocode} +%<kernel&!patterns> \def\adddialect{} + \input plain.def\relax +\fi +%</kernel|core> +% \end{macrocode} +% +% Check the presence of the command |\iflanguage|, if it is +% undefined read the file \file{switch.def}. +% \changes{babel~3.0d}{1991/10/29}{Removed use of \cs{@ifundefined}} +% \begin{macrocode} +%<*core> +\ifx\iflanguage\@undefined + \input switch.def\relax +\fi +%</core> +% \end{macrocode} +% \changes{babel~3.6a}{1996/11/02}{Removed \cs{babel@core@loaded}, no +% longer needed with the advent of \cs{LdfInit}} +% +% \subsection{Encoding issues (part 1)} +% +% The first thing we need to do is to determine, at +% |\begin{document}|, which latin fontencoding to use. +% +% \begin{macro}{\latinencoding} +% \changes{babel~3.6i}{1997/03/15}{Macro added, moved from +% \file{.ldf} files} +% When text is being typeset in an encoding other than `latin' +% (\texttt{OT1} or \texttt{T1}), it would be nice to still have +% Roman numerals come out in the Latin encoding. +% So we first assume that the current encoding at the end +% of processing the package is the Latin encoding. +% \begin{macrocode} +%<*core> +\AtEndOfPackage{\edef\latinencoding{\cf@encoding}} +% \end{macrocode} +% But this might be overruled with a later loading of the package +% \pkg{fontenc}. Therefor we check at the execution of +% |\begin{document}| whether it was loaded with the \Lopt{T1} +% option. The normal way to do this (using |\@ifpackageloaded|) is +% disabled for this package. Now we have to revert to parsing the +% internal macro |\@filelist| which contains all the filenames +% loaded. +% \changes{babel~3.6k}{1999/03/15}{Use T1 encoding when it is a known +% encoding} +% \changes{babel~3.6m}{1999/04/06}{Can't use \cs{@ifpackageloaded} +% need to parse \cs{@filelist}} +% \changes{babel~3.6n}{1999/04/07}{moved checking for fontenc right to +% the top of \file{babel.sty}} +% \changes{babel~3.6n}{1999/04/07}{Added a check for `manual' selection +% of \texttt{T1} encoding, without loading \pkg{fontenc}} +% \changes{babel~3.6q}{1999/04/12}{Better solution then parsing +% \cs{@filelist}, use \cs{@ifl@aded}} +% \changes{babel~3.6u}{1999/04/20}{Moved this code to +% \file{babel.def}} +% \begin{macrocode} +\AtBeginDocument{% + \gdef\latinencoding{OT1}% + \ifx\cf@encoding\bbl@t@one + \xdef\latinencoding{\bbl@t@one}% + \else + \@ifl@aded{def}{t1enc}{\xdef\latinencoding{\bbl@t@one}}{}% + \fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\latintext} +% \changes{babel~3.6i}{1997/03/15}{Macro added, moved from +% \file{.ldf} files} +% Then we can define the command |\latintext| which is a +% declarative switch to a latin font-encoding. +% \begin{macrocode} +\DeclareRobustCommand{\latintext}{% + \fontencoding{\latinencoding}\selectfont + \def\encodingdefault{\latinencoding}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textlatin} +% \changes{babel~3.6i}{1997/03/15}{Macro added, moved from +% \file{.ldf} files} +% \changes{babel~3.7j}{2003/03/19}{added \cs{leavevmode} to prevent a +% paragraph starting \emph{inside} the group} +% \changes{babel~3.7k}{2003/10/12}{Use \cs{DeclareTextFontComand}} +% This command takes an argument which is then typeset using the +% requested font encoding. In order to avoid many encoding switches +% it operates in a local scope. +% \begin{macrocode} +\ifx\@undefined\DeclareTextFontCommand + \DeclareRobustCommand{\textlatin}[1]{\leavevmode{\latintext #1}} +\else + \DeclareTextFontCommand{\textlatin}{\latintext} +\fi +%</core> +% \end{macrocode} +% \end{macro} +% +% We also need to redefine a number of commands to ensure that the +% right font encoding is used, but this can't be done before +% \file{babel.def} is loaded. +% \changes{babel~3.6o}{1999/04/07}{Moved the rest of the font encoding +% related definitions to their original place} +% +% \subsection{Multiple languages} +% +% With \TeX\ version~3.0 it has become possible to load hyphenation +% patterns for more than one language. This means that some extra +% administration has to be taken care of. The user has to know for +% which languages patterns have been loaded, and what values of +% |\language| have been used. +% +% Some discussion has been going on in the \TeX\ world about how to +% use |\language|. Some have suggested to set a fixed standard, +% i.\,e., patterns for each language should \emph{always} be loaded +% in the same location. It has also been suggested to use the +% \textsc{iso} list for this purpose. Others have pointed out that +% the \textsc{iso} list contains more than 256~languages, which +% have \emph{not} been numbered consecutively. +% +% I think the best way to use |\language|, is to use it +% dynamically. This code implements an algorithm to do so. It uses +% an external file in which the person who maintains a \TeX\ +% environment has to record for which languages he has hyphenation +% patterns \emph{and} in which files these are stored\footnote{This +% is because different operating systems sometimes use \emph{very} +% different file-naming conventions.}. When hyphenation exceptions +% are stored in a separate file this can be indicated by naming +% that file \emph{after} the file with the hyphenation patterns. +% +% This ``configuration file'' can contain empty lines and comments, +% as well as lines which start with an equals (\texttt{=}) +% sign. Such a line will instruct \LaTeX\ that the hyphenation +% patterns just processed have to be known under an alternative +% name. Here is an example: +% \begin{verbatim} +% % File : language.dat +% % Purpose : tell iniTeX what files with patterns to load. +% english english.hyphenations +% =british +% +% dutch hyphen.dutch exceptions.dutch % Nederlands +% german hyphen.ger +% \end{verbatim} +% +% As the file \file{switch.def} needs to be read only once, we +% check whether it was read before. If it was, the command +% |\iflanguage| is already defined, so we can stop processing. +% \begin{macrocode} +%<*kernel> +%<*!patterns> +\expandafter\ifx\csname iflanguage\endcsname\relax \else +\expandafter\endinput +\fi +%</!patterns> +% \end{macrocode} +% +% \begin{macro}{\language} +% Plain \TeX\ version~3.0 provides the primitive |\language| that +% is used to store the current language. When used with a pre-3.0 +% version this function has to be implemented by allocating a +% counter. +% \begin{macrocode} +\ifx\language\@undefined + \csname newcount\endcsname\language +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\last@language} +% Another counter is used to store the last language defined. For +% pre-3.0 formats an extra counter has to be allocated, +% \begin{macrocode} +\ifx\newlanguage\@undefined + \csname newcount\endcsname\last@language +% \end{macrocode} +% plain \TeX\ version 3.0 uses |\count 19| for this purpose. +% \begin{macrocode} +\else + \countdef\last@language=19 +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\addlanguage} +% +% To add languages to \TeX's memory plain \TeX\ version~3.0 +% supplies |\newlanguage|, in a pre-3.0 environment a similar macro +% has to be provided. For both cases a new macro is defined here, +% because the original |\newlanguage| was defined to be |\outer|. +% +% For a format based on plain version~2.x, the definition of +% |\newlanguage| can not be copied because |\count 19| is used for +% other purposes in these formats. Therefor |\addlanguage| is +% defined using a definition based on the macros used to define +% |\newlanguage| in plain \TeX\ version~3.0. +% \changes{babel~3.2}{1991/11/11}{Added a \texttt{\%}, removed +% \texttt{by}} +% \begin{macrocode} +\ifx\newlanguage\@undefined + \def\addlanguage#1{% + \global\advance\last@language \@ne + \ifnum\last@language<\@cclvi + \else + \errmessage{No room for a new \string\language!}% + \fi + \global\chardef#1\last@language + \wlog{\string#1 = \string\language\the\last@language}} +% \end{macrocode} +% +% For formats based on plain version~3.0 the definition of +% |\newlanguage| can be simply copied, removing |\outer|. +% +% \begin{macrocode} +\else + \def\addlanguage{\alloc@9\language\chardef\@cclvi} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\adddialect} +% The macro |\adddialect| can be used to add the name of a dialect +% or variant language, for which an already defined hyphenation +% table can be used. +% \changes{babel~3.2}{1991/11/11}{Added \cs{relax}} +% \begin{macrocode} +\def\adddialect#1#2{% + \global\chardef#1#2\relax + \wlog{\string#1 = a dialect from \string\language#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\iflanguage} +% Users might want to test (in a private package for instance) +% which language is currently active. For this we provide a test +% macro, |\iflanguage|, that has three arguments. It checks +% whether the first argument is a known language. If so, it +% compares the first argument with the value of |\language|. Then, +% depending on the result of the comparison, it executes either the +% second or the third argument. +% \changes{babel~3.0a}{1991/05/29}{Added \cs{@bsphack} and +% \cs{@esphack}} +% \changes{babel~3.0c}{1991/07/21}{Added comment character after +% \texttt{\#2}} +% \changes{babel~3.0d}{1991/08/08}{Removed superfluous +% \cs{expandafter}} +% \changes{babel~3.0d}{1991/10/07}{Removed space hacks and use of +% \cs{@ifundefined}} +% \changes{babel~3.2}{1991/11/11}{Rephrased \cs{ifnum} test} +% \changes{babel~3.7a}{1998/06/10}{Now evaluate the \cs{ifnum} test +% \emph{after} the \cs{fi} from the \cs{ifx} test and use +% \cs{@firstoftwo} and \cs{@secondoftwo}} +% \changes{babel~3.7b}{1998/06/29}{Slight enhancement: added braces +% around first argument of \cs{bbl@afterfi}} +% \begin{macrocode} +\def\iflanguage#1{% + \expandafter\ifx\csname l@#1\endcsname\relax + \@nolanerr{#1}% + \else + \bbl@afterfi{\ifnum\csname l@#1\endcsname=\language + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\selectlanguage} +% The macro |\selectlanguage| checks whether the language is +% already defined before it performs its actual task, which is to +% update |\language| and activate language-specific definitions. +% +% To allow the call of |\selectlanguage| either with a control +% sequence name or with a simple string as argument, we have to use +% a trick to delete the optional escape character. +% +% To convert a control sequence to a string, we use the |\string| +% primitive. Next we have to look at the first character of this +% string and compare it with the escape character. Because this +% escape character can be changed by setting the internal integer +% |\escapechar| to a character number, we have to compare this +% number with the character of the string. To do this we have to +% use \TeX's backquote notation to specify the character as a +% number. +% +% If the first character of the |\string|'ed argument is the +% current escape character, the comparison has stripped this +% character and the rest in the `then' part consists of the rest of +% the control sequence name. Otherwise we know that either the +% argument is not a control sequence or |\escapechar| is set to a +% value outside of the character range~$0$--$255$. +% +% If the user gives an empty argument, we provide a default +% argument for |\string|. This argument should expand to nothing. +% +% \changes{babel~3.0c}{1991/06/06}{Made \cs{selectlanguage} +% robust} +% \changes{babel~3.2}{1991/11/11}{Modified to allow arguments that +% start with an escape character} +% \changes{babel~3.2a}{1991/11/17}{Simplified the modification to +% allow the use in a \cs{write} command} +% \changes{babel~3.5b}{1995/05/13}{Store the name of the current +% language in a control sequence instead of passing the whole macro +% construct to strip the escape character in the argument of +% \cs{selectlanguage }.} +% \changes{babel~3.5f}{1995/08/30}{Added a missing percent character} +% \changes{babel~3.5f}{1995/11/16}{Moved check for escape character +% one level down in the expansion} +% \begin{macrocode} +\edef\selectlanguage{% + \noexpand\protect + \expandafter\noexpand\csname selectlanguage \endcsname + } +% \end{macrocode} +% Because the command |\selectlanguage| could be used in a moving +% argument it expands to \verb*=\protect\selectlanguage =. +% Therefor, we have to make sure that a macro |\protect| exists. +% If it doesn't it is |\let| to |\relax|. +% \begin{macrocode} +\ifx\@undefined\protect\let\protect\relax\fi +% \end{macrocode} +% As \LaTeX$\:$2.09 writes to files \textit{expanded} whereas +% \LaTeXe\ takes care \textit{not} to expand the arguments of +% |\write| statements we need to be a bit clever about the way we +% add information to \file{.aux} files. Therefor we introduce the +% macro |\xstring| which should expand to the right amount of +% |\string|'s. +% \begin{macrocode} +\ifx\documentclass\@undefined + \def\xstring{\string\string\string} +\else + \let\xstring\string +\fi +% \end{macrocode} +% +% \changes{babel~3.5b}{1995/03/04}{Changed the name of the internal +% macro to \cs{selectlanguage }.} +% \changes{babel~3.5b}{1995/03/05}{Added an extra level of expansion to +% separate the switching mechanism from writing to aux files} +% \changes{babel~3.7f}{2000/09/25}{Use \cs{aftergroup} to keep the +% language grouping correct in auxiliary files {PR3091}} +% Since version 3.5 \babel\ writes entries to the auxiliary files in +% order to typeset table of contents etc. in the correct language +% environment. +% \begin{macro}{\bbl@pop@language} +% \emph{But} when the language change happens \emph{inside} a group +% the end of the group doesn't write anything to the auxiliary +% files. Therefor we need \TeX's |aftergroup| mechanism to help +% us. The command |\aftergroup| stores the token immediately +% following it to be executed when the current group is closed. So +% we define a temporary control sequence |\bbl@pop@language| to be +% executed at the end of the group. It calls |\bbl@set@language| +% with the name of the current language as its argument. +% +% \changes{babel~3.7j}{2003/03/18}{Introduce the language stack +% mechanism} +% \begin{macro}{\bbl@language@stack} +% The previous solution works for one level of nesting groups, but +% as soon as more levels are used it is no longer adequate. For +% that case we need to keep track of the nested languages using a +% stack mechanism. This stack is called |\bbl@language@stack| and +% initially empty. +% \begin{macrocode} +\xdef\bbl@language@stack{} +% \end{macrocode} +% When using a stack we need a mechanism to push an element on the +% stack and to retrieve the information afterwards. +% \begin{macro}{\bbl@push@language} +% \begin{macro}{\bbl@pop@language} +% The stack is simply a list of languagenames, separated with a `+' +% sign; the push function can be simple: +% \begin{macrocode} +\def\bbl@push@language{% + \xdef\bbl@language@stack{\languagename+\bbl@language@stack}% + } +% \end{macrocode} +% Retrieving information from the stack is a little bit less simple, +% as we need to remove the element from the stack while storing it +% in the macro |\languagename|. For this we first define a helper function. +% \begin{macro}{\bbl@pop@lang} +% This macro stores its first element (which is delimited by the +% `+'-sign) in |\languagename| and stores the rest of the string +% (delimited by `-') in its third argument. +% \begin{macrocode} +\def\bbl@pop@lang#1+#2-#3{% + \def\languagename{#1}\xdef#3{#2}% + } +% \end{macrocode} +% \end{macro} +% The reason for the somewhat weird arrangement of arguments to the +% helper function is the fact it is called in the following way: +% \begin{macrocode} +\def\bbl@pop@language{% + \expandafter\bbl@pop@lang\bbl@language@stack-\bbl@language@stack +% \end{macrocode} +% This means that before |\bbl@pop@lang| is executed \TeX\ first +% \emph{expands} the stack, stored in |\bbl@language@stack|. The +% result of that is that the argument string of |\bbl@pop@lang| +% contains one or more language names, each followed by a `+'-sign +% (zero language names won't occur as this macro will only be +% called after something has been pushed on the stack) followed by +% the `-'-sign and finally the reference to the stack. +% \begin{macrocode}$$ + \expandafter\bbl@set@language\expandafter{\languagename}% + } +% \end{macrocode} +% Once the name of the previous language is retrieved from the stack, +% it is fed to |\bbl@set@language| to do the actual work of +% switching everything that needs switching. +% \end{macro} +% \end{macro} +% \end{macro} +% +% \changes{babel~3.7j}{2003/03/18}{Now use the language stack mechanism} +% \begin{macrocode} +\expandafter\def\csname selectlanguage \endcsname#1{% + \bbl@push@language + \aftergroup\bbl@pop@language + \bbl@set@language{#1}} +% \end{macrocode} +% \changes{babel~3.7m}{2003/11/12}{Removed the superfluous empty +% definition of \cs{bbl@pop@language}} +% \end{macro} +% +% \begin{macro}{\bbl@set@language} +% \changes{babel~3.5f}{1995/11/16}{Now also define \cs{languagename} +% at this level} +% \changes{babel~3.7f}{2000/09/25}{Macro \cs{bbl@set@language} +% introduced} +% The macro |\bbl@set@language| takes care of switching the language +% environment \emph{and} of writing entries on the auxiliary files. +% \begin{macrocode} +\def\bbl@set@language#1{% + \edef\languagename{% + \ifnum\escapechar=\expandafter`\string#1\@empty + \else \string#1\@empty\fi}% + \select@language{\languagename}% +% \end{macrocode} +% We also write a command to change the current language in the +% auxiliary files. +% \changes{babel~3.5a}{1995/02/17}{write the language change to the +% auxiliary files} +% \begin{macrocode} + \if@filesw + \protected@write\@auxout{}{\string\select@language{\languagename}}% + \addtocontents{toc}{\xstring\select@language{\languagename}}% + \addtocontents{lof}{\xstring\select@language{\languagename}}% + \addtocontents{lot}{\xstring\select@language{\languagename}}% + \fi} +% \end{macrocode} +% \end{macro} +% +% First, check if the user asks for a known language. If so, +% update the value of |\language| and call |\originalTeX| +% to bring \TeX\ in a certain pre-defined state. +% \changes{babel~3.0a}{1991/05/29}{Added \cs{@bsphack} and +% \cs{@esphack}} +% \changes{babel~3.0d}{1991/08/08}{Removed superfluous +% \cs{expandafter}} +% \changes{babel~3.0d}{1991/10/07}{Removed space hacks and use of +% \cs{@ifundefined}} +% \changes{babel~3.2a}{1991/11/17}{Added \cs{relax} as first command +% to stop an expansion if \cs{protect} is empty} +% \changes{babel~3.6a}{1996/11/07}{Check for the existence of +% \cs{date...} instead of \cs{l@...}} +% \changes{babel~3.7m}{2003/11/16}{Check for the existence of both +% \cs{l@...} and \cs{date...}} +% \begin{macrocode} +\def\select@language#1{% + \expandafter\ifx\csname l@#1\endcsname\relax + \@nolanerr{#1}% + \else + \expandafter\ifx\csname date#1\endcsname\relax + \@noopterr{#1}% + \else + \language=\csname l@#1\endcsname\relax + \originalTeX +% \end{macrocode} +% The name of the language is stored in the control sequence +% |\languagename|. The contents of this control sequence could be +% tested in the following way: +% \begin{verbatim} +% \edef\tmp{\string english} +% \ifx\languagename\tmp +% ... +% \else +% ... +% \fi +% \end{verbatim} +% The construction with |\string| is necessary because +% |\languagename| returns the name with characters of category code +% \texttt{12} (other). Then we have to \emph{re}define +% |\originalTeX| to compensate for the things that have been +% activated. To save memory space for the macro definition of +% |\originalTeX|, we construct the control sequence name for the +% |\noextras|\langvar\ command at definition time by expanding the +% |\csname| primitive. +% \changes{babel~3.0a}{1991/06/06}{Replaced \cs{gdef} with \cs{def}} +% \changes{babel~3.1}{1991/10/31}{\cs{originalTeX} should only be +% executed once} +% \changes{babel~3.2a}{1991/11/17}{Added three \cs{expandafter}s +% to save macro space for \cs{originalTeX}} +% \changes{babel~3.2a}{1991/11/20}{Moved definition of +% \cs{originalTeX} before \cs{extras\langvar}} +% \changes{babel~3.2a}{1991/11/24}{Set \cs{originalTeX} to +% \cs{empty}, because it should be expandable.} +% \begin{macrocode} + \expandafter\def\expandafter\originalTeX + \expandafter{\csname noextras#1\endcsname + \let\originalTeX\@empty}% +% \end{macrocode} +% \changes{babel~3.6d}{1997/01/07}{set the language shorthands to +% `none' before switching on the extras} +% \begin{macrocode} + \languageshorthands{none}% + \babel@beginsave +% \end{macrocode} +% Now activate the language-specific definitions. This is done by +% constructing the names of three macros by concatenating three +% words with the argument of |\selectlanguage|, and calling these +% macros. +% \changes{babel~3.5b}{1995/05/13}{Separated the setting of the +% hyphenmin values} +% \begin{macrocode} + \csname captions#1\endcsname + \csname date#1\endcsname + \csname extras#1\endcsname\relax +% \end{macrocode} +% The switching of the values of |\lefthyphenmin| and +% |\righthyphenmin| is somewhat different. First we save their +% current values, then we check if |\|\langvar|hyphenmins| is +% defined. If it is not, we set default values (2 and 3), otherwise +% the values in |\|\langvar|hyphenmins| will be used. +% \changes{babel~3.5b}{1995/06/05}{Addedd default setting of hyphenmin +% parameters} +% \begin{macrocode} + \babel@savevariable\lefthyphenmin + \babel@savevariable\righthyphenmin + \expandafter\ifx\csname #1hyphenmins\endcsname\relax + \set@hyphenmins\tw@\thr@@\relax + \else + \expandafter\expandafter\expandafter\set@hyphenmins + \csname #1hyphenmins\endcsname\relax + \fi + \fi + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{otherlanguage} +% The \Lenv{otherlanguage} environment can be used as an +% alternative to using the |\selectlanguage| declarative +% command. When you are typesetting a document which mixes +% left-to-right and right-to-left typesetting you have to use this +% environment in order to let things work as you expect them to. +% +% The first thing this environment does is store the name of the +% language in |\languagename|; it then calls +% \verb*=\selectlanguage = to switch on everything that is needed for +% this language The |\ignorespaces| command is necessary to hide +% the environment when it is entered in horizontal mode. +% \changes{babel~3.5d}{1995/06/22}{environment added} +% \changes{babel~3.5e}{1995/07/07}{changed name} +% \changes{babel~3.7j}{2003/03/18}{rely on \cs{selectlanguage } to +% keep track of the nesting} +% \begin{macrocode} +\long\def\otherlanguage#1{% + \csname selectlanguage \endcsname{#1}% + \ignorespaces + } +% \end{macrocode} +% The |\endotherlanguage| part of the environment calls +% |\originalTeX| to restore (most of) the settings and tries to +% hide itself when it is called in horizontal mode. +% \begin{macrocode} +\long\def\endotherlanguage{% + \originalTeX + \global\@ignoretrue\ignorespaces + } +% \end{macrocode} +% \end{environment} +% +% +% \begin{environment}{otherlanguage*} +% The \Lenv{otherlanguage} environment is meant to be used when a +% large part of text from a different language needs to be typeset, +% but without changing the translation of words such as `figure'. +% +% This environment makes use of |\foreign@language|. +% \changes{babel~3.5f}{1996/05/29}{environment added} +% \changes{babel~3.6d}{1997/01/07}{Introduced \cs{foreign@language}} +% \begin{macrocode} +\expandafter\def\csname otherlanguage*\endcsname#1{% + \foreign@language{#1}% + } +% \end{macrocode} +% At the end of the environment we need to switch off the extra +% definitions. The grouping mechanism of the environment will take +% care of resetting the correct hyphenation rules. +% \begin{macrocode} +\expandafter\def\csname endotherlanguage*\endcsname{% + \csname noextras\languagename\endcsname + } +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\foreignlanguage} +% The |\foreignlanguage| command is another substitute for the +% |\selectlanguage| command. This command takes two arguments, the +% first argument is the name of the language to use for typesetting +% the text specified in the second argument. +% +% Unlike |\selectlanguage| this command doesn't switch +% \emph{everything}, it only switches the hyphenation rules and the +% extra definitions for the language specified. It does this within +% a group and assumes the |\extras|\langvar\ command doesn't make +% any |\global| changes. The coding is very similar to part of +% |\selectlanguage|. +% \changes{babel~3.5d}{1995/06/22}{Macro added} +% \changes{babel~3.6d}{1997/01/07}{Introduced \cs{foreign@language}} +% \changes{babel~3.7a}{1998/03/12}{Added executing \cs{originalTeX}} +% \begin{macrocode} +\def\foreignlanguage{\protect\csname foreignlanguage \endcsname} +\expandafter\def\csname foreignlanguage \endcsname#1#2{% + \begingroup + \originalTeX + \foreign@language{#1}% + #2% + \csname noextras#1\endcsname + \endgroup + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\foreign@language} +% \changes{babel~3.6d}{1997/01/07}{New macro} +% This macro does the work for |\foreignlanguage| and the +% \Lenv{otherlanguage*} environment. +% \begin{macrocode} +\def\foreign@language#1{% +% \end{macrocode} +% First we need to store the name of the language and check that it +% is a known language. +% \begin{macrocode} + \def\languagename{#1}% + \expandafter\ifx\csname l@#1\endcsname\relax + \@nolanerr{#1}% + \else +% \end{macrocode} +% If it is we can select the proper hyphenation table and switch on +% the extra definitions for this language. +% \changes{babel~3.6d}{1997/01/07}{set the language shorthands to +% `none' before switching on the extras} +% \begin{macrocode} + \language=\csname l@#1\endcsname\relax + \languageshorthands{none}% +% \end{macrocode} +% Then we set the left- and right hyphenmin variables. +% \changes{babel~3.6d}{1997/01/07}{Added \cs{relax} to prevent +% disappearance of the first token after this command.} +% \begin{macrocode} + \csname extras#1\endcsname + \expandafter\ifx\csname #1hyphenmins\endcsname\relax + \set@hyphenmins\tw@\thr@@\relax + \else + \expandafter\expandafter\expandafter\set@hyphenmins + \csname #1hyphenmins\endcsname\relax + \fi + \fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{hyphenrules} +% \changes{babel~3.7e}{2000/01/28}{Added environment hyphenrules} +% The environment \Lenv{hyphenrules} can be used to select +% \emph{just} the hyphenation rules. This environment does +% \emph{not} change |\languagename| and when the hyphenation rules +% specified were not loaded it has no effect. +% \begin{macrocode} +\def\hyphenrules#1{% + \expandafter\ifx\csname l@#1\endcsname\@undefined + \@nolanerr{#1}% + \else + \language=\csname l@#1\endcsname\relax + \languageshorthands{none}% + \fi + } +\def\endhyphenrules{} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\providehyphenmins} +% \changes{babel~3.7f}{2000/02/18}{added macro} +% The macro |\providehyphenmins| should be used in the language +% definition files to provide a \emph{default} setting for the +% hyphenation parameters |\lefthyphenmin| and |\righthyphenmin|. If +% the macro |\|\langvar|hyphenmins| is already defined this command +% has no effect. +% \begin{macrocode} +\def\providehyphenmins#1#2{% + \expandafter\ifx\csname #1hyphenmins\endcsname\relax + \@namedef{#1hyphenmins}{#2}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\set@hyphenmins} +% This macro sets the values of |\lefthyphenmin| and +% |\righthyphenmin|. It expects two values as its argument. +% \begin{macrocode} +\def\set@hyphenmins#1#2{\lefthyphenmin#1\righthyphenmin#2} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LdfInit} +% \changes{babel~3.6a}{1996/10/16}{Macro added} +% This macro is defined in two versions. The first version is to be +% part of the `kernel' of \babel, ie. the part that is loaded in +% the format; the second version is defined in \file{babel.def}. +% The version in the format just checks the category code of the +% ampersand and then loads \file{babel.def}. +% \begin{macrocode} +\def\LdfInit{% + \chardef\atcatcode=\catcode`\@ + \catcode`\@=11\relax + \input babel.def\relax +% \end{macrocode} +% The category code of the ampersand is restored and the macro +% calls itself again with the new definition from +% \file{babel.def} +% \begin{macrocode} + \catcode`\@=\atcatcode \let\atcatcode\relax + \LdfInit} +%</kernel> +% \end{macrocode} +% The second version of this macro takes two arguments. The first +% argument is the name of the language that will be defined in the +% language definition file; the second argument is either a control +% sequence or a string from which a control sequence should be +% constructed. The existence of the control sequence indicates that +% the file has been processed before. +% +% At the start of processing a language definition file we always +% check the category code of the ampersand. We make sure that it is +% a `letter' during the processing of the file. +% \begin{macrocode} +%<*core> +\def\LdfInit#1#2{% + \chardef\atcatcode=\catcode`\@ + \catcode`\@=11\relax +% \end{macrocode} +% Another character that needs to have the correct category code +% during processing of language definition files is the equals sign, +% `=', because it is sometimes used in constructions with the +% |\let| primitive. Therefor we store its current catcode and +% restore it later on. +% \changes{babel~3.7o}{2003/11/26}{make sure the equals sign has its +% default category code} +% \begin{macrocode} + \chardef\eqcatcode=\catcode`\= + \catcode`\==12\relax +% \end{macrocode} +% Now we check whether we should perhaps stop the processing of +% this file. To do this we first need to check whether the second +% argument that is passed to |\LdfInit| is a control sequence. We +% do that by looking at the first token after passing |#2| through +% |string|. When it is equal to |\@backslashchar| we are dealing +% with a control sequence which we can compare with |\@undefined|. +% \begin{macrocode} + \let\bbl@tempa\relax + \expandafter\if\expandafter\@backslashchar + \expandafter\@car\string#2\@nil + \ifx#2\@undefined + \else +% \end{macrocode} +% If so, we call |\ldf@quit| (but after the end of this |\if| +% construction) to set the main language, restore the category code +% of the @-sign and call |\endinput|. +% \begin{macrocode} + \def\bbl@tempa{\ldf@quit{#1}} + \fi + \else +% \end{macrocode} +% When |#2| was \emph{not} a control sequence we construct one and +% compare it with |\relax|. +% \begin{macrocode} + \expandafter\ifx\csname#2\endcsname\relax + \else + \def\bbl@tempa{\ldf@quit{#1}} + \fi + \fi + \bbl@tempa +% \end{macrocode} +% Finally we check |\originalTeX|. +% \begin{macrocode} + \ifx\originalTeX\@undefined + \let\originalTeX\@empty + \else + \originalTeX + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ldf@quit} +% \changes{babel~3.6a}{1996/10/29}{Macro added} +% This macro interrupts the processing of a language definition file. +% \changes{babel~3.7o}{2003/11/26}{Also restore the category code of +% the equals sign} +% \begin{macrocode} +\def\ldf@quit#1{% + \expandafter\main@language\expandafter{#1}% + \catcode`\@=\atcatcode \let\atcatcode\relax + \catcode`\==\eqcatcode \let\eqcatcode\relax + \endinput +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ldf@finish} +% \changes{babel~3.6a}{1996/10/16}{Macro added} +% This macro takes one argument. It is the name of the language +% that was defined in the language definition file. +% +% We load the local configuration file if one is present, we set +% the main language (taking into account that the argument might be +% a control sequence that needs to be expanded) and reset the +% category code of the @-sign. +% \changes{babel~3.7o}{2003/11/26}{Also restore the category code of +% the equals sign} +% \begin{macrocode} +\def\ldf@finish#1{% + \loadlocalcfg{#1}% + \expandafter\main@language\expandafter{#1}% + \catcode`\@=\atcatcode \let\atcatcode\relax + \catcode`\==\eqcatcode \let\eqcatcode\relax + } +% \end{macrocode} +% \end{macro} +% +% After the preamble of the document the commands |\LdfInit|, +% |\ldf@quit| and |\ldf@finish| are no longer needed. Therefor +% they are turned into warning messages in \LaTeX. +% \begin{macrocode} +\@onlypreamble\LdfInit +\@onlypreamble\ldf@quit +\@onlypreamble\ldf@finish +% \end{macrocode} +% +% \begin{macro}{\main@language} +% \changes{babel~3.5a}{1995/02/17}{Macro added} +% \changes{babel~3.6a}{1996/10/16}{\cs{main@language} now also sets +% \cs{languagename} and \cs{l@languagename} for use by other +% packages in the preamble of a document} +% \begin{macro}{\bbl@main@language} +% \changes{babel~3.5a}{1995/02/17}{Macro added} +% This command should be used in the various language definition +% files. It stores its argument in |\bbl@main@language|; to be used +% to switch to the correct language at the beginning of the +% document. +% \begin{macrocode} +\def\main@language#1{% + \def\bbl@main@language{#1}% + \let\languagename\bbl@main@language + \language=\csname l@\languagename\endcsname\relax + } +% \end{macrocode} +% The default is to use English as the main language. +% \changes{babel~3.6c}{1997/01/05}{When \file{hyphen.cfg} is not +% loaded in the format \cs{l@english} might not be defined; assume +% english is language 0} +% \begin{macrocode} +\ifx\l@english\@undefined + \let\l@english\z@ +\fi +\main@language{english} +% \end{macrocode} +% We also have to make sure that some code gets executed at the +% beginning of the document. +% \begin{macrocode} +\AtBeginDocument{% + \expandafter\selectlanguage\expandafter{\bbl@main@language}} +%</core> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\originalTeX} +% The macro|\originalTeX| should be known to \TeX\ at this moment. +% As it has to be expandable we |\let| it to |\@empty| instead of +% |\relax|. +% \changes{babel~3.2a}{1991/11/24}{Set \cs{originalTeX} to +% \cs{empty}, because it should be expandable.} +% \begin{macrocode} +%<*kernel> +\ifx\originalTeX\@undefined\let\originalTeX\@empty\fi +% \end{macrocode} +% Because this part of the code can be included in a format, we +% make sure that the macro which initialises the save mechanism, +% |\babel@beginsave|, is not considered to be undefined. +% \begin{macrocode} +\ifx\babel@beginsave\@undefined\let\babel@beginsave\relax\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@nolanerr} +% \changes{babel~3.4e}{1994/06/25}{Use \cs{PackageError} in \LaTeXe\ +% mode} +% \begin{macro}{\@nopatterns} +% \changes{babel~3.4e}{1994/06/25}{Macro added} +% The \babel\ package will signal an error when a documents tries +% to select a language that hasn't been defined earlier. When a +% user selects a language for which no hyphenation patterns were +% loaded into the format he will be given a warning about that +% fact. We revert to the patterns for |\language|=0 in that case. +% In most formats that will be (US)english, but it might also be +% empty. +% \begin{macro}{\@noopterr} +% \changes{babel~3.7m}{2003/11/16}{Macro added} +% When the package was loaded without options not everything will +% work as expected. An error message is issued in that case. +% +% When the format knows about |\PackageError| it must be \LaTeXe, +% so we can safely use its error handling interface. Otherwise +% we'll have to `keep it simple'. +% \changes{babel~3.0d}{1991/10/07}{Added a percent sign to remove +% unwanted white space} +% \changes{babel~3.5a}{1995/02/15}{Added \cs{@activated} to log active +% characters} +% \changes{babel~3.5c}{1995/06/19}{Added missing closing brace} +% \begin{macrocode} +\ifx\PackageError\@undefined + \def\@nolanerr#1{% + \errhelp{Your command will be ignored, type <return> to proceed}% + \errmessage{You haven't defined the language #1\space yet}} + \def\@nopatterns#1{% + \message{No hyphenation patterns were loaded for}% + \message{the language `#1'}% + \message{I will use the patterns loaded for \string\language=0 + instead}} + \def\@noopterr#1{% + \errmessage{The option #1 was not specified in \string\usepackage} + \errhelp{You may continue, but expect unexpected results}} + \def\@activated#1{% + \wlog{Package babel Info: Making #1 an active character}} +\else + \newcommand*{\@nolanerr}[1]{% + \PackageError{babel}% + {You haven't defined the language #1\space yet}% + {Your command will be ignored, type <return> to proceed}} + \newcommand*{\@nopatterns}[1]{% + \PackageWarningNoLine{babel}% + {No hyphenation patterns were loaded for\MessageBreak + the language `#1'\MessageBreak + I will use the patterns loaded for \string\language=0 + instead}} + \newcommand*{\@noopterr}[1]{% + \PackageError{babel}% + {You haven't loaded the option #1\space yet}% + {You may proceed, but expect unexpected results}} + \newcommand*{\@activated}[1]{% + \PackageInfo{babel}{% + Making #1 an active character}} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The following code is meant to be read by ini\TeX\ because it +% should instruct \TeX\ to read hyphenation patterns. To this end +% the \texttt{docstrip} option \texttt{patterns} can be used to +% include this code in the file \file{hyphen.cfg}. +% \begin{macrocode} +%<*patterns> +% \end{macrocode} +% +% \changes{babel~3.5g}{1996/07/09}{Removed the use of +% \cs{patterns@loaded} altogether} +% +% \begin{macro}{\process@line} +% \changes{babel~3.5b}{1995/04/28}{added macro} +% Each line in the file \file{language.dat} is processed by +% |\process@line| after it is read. The first thing this macro does +% is to check whether the line starts with \texttt{=}. +% When the first token of a line is an \texttt{=}, the macro +% |\process@synonym| is called; otherwise the macro +% |\process@language| will continue. +% \changes{babel~3.5g}{1996/07/09}{Simplified code, removing +% \cs{bbl@eq@}} +% \changes{babel~3.7c}{1999/04/09}{added an extra argument in order to +% prevent a trailing space from becoming part of the control +% sequence when defining a synonym (PR 2851)} +% \begin{macrocode} +\def\process@line#1#2 #3/{% + \ifx=#1 + \process@synonym#2 / + \else + \process@language#1#2 #3/% + \fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\process@synonym} +% \changes{babel~3.5b}{1995/04/28}{added macro} +% This macro takes care of the lines which start with an +% \texttt{=}. It needs an empty token register to begin with. +% \begin{macrocode} +\toks@{} +\def\process@synonym#1 /{% + \ifnum\last@language=\m@ne +% \end{macrocode} +% When no languages have been loaded yet, the name following the +% \texttt{=} will be a synonym for hyphenation register 0. +% \begin{macrocode} + \expandafter\chardef\csname l@#1\endcsname0\relax + \wlog{\string\l@#1=\string\language0} +% \end{macrocode} +% As no hyphenation patterns are read in yet, we can not yet set +% the hyphenmin parameters. Therefor a commands to do so is stored +% in a token register and executed when the first pattern file has +% been processed. +% \changes{babel~3.7c}{1999/04/27}{Use a token register to temporarily +% store a command to set hyphenmin parameters for the synonym which +% is defined \emph{before} the first pattern file is processed} +% \begin{macrocode} + \toks@\expandafter{\the\toks@ + \expandafter\let\csname #1hyphenmins\expandafter\endcsname + \csname\languagename hyphenmins\endcsname}% + \else +% \end{macrocode} +% Otherwise the name will be a synonym for the language loaded last. +% \begin{macrocode} + \expandafter\chardef\csname l@#1\endcsname\last@language + \wlog{\string\l@#1=\string\language\the\last@language} +% \end{macrocode} +% We also need to copy the hyphenmin parameters for the synonym. +% \changes{babel~3.7c}{1999/04/22}{Now also store hyphenmin parameters +% for language synonyms} +% \begin{macrocode} + \expandafter\let\csname #1hyphenmins\expandafter\endcsname + \csname\languagename hyphenmins\endcsname + \fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\process@language} +% The macro |\process@language| is used to process a non-empty line +% from the `configuration file'. It has three arguments, each +% delimited by white space. The third argument is optional, +% so a |/| character is expected to delimit the last +% argument. The first argument is the `name' of a language; the +% second is the name of the file that contains the patterns. The +% optional third argument is the name of a file containing +% hyphenation exceptions. +% +% The first thing to do is call |\addlanguage| to allocate a +% pattern register and to make that register `active'. +% \changes{babel~3.0d}{1991/08/08}{Removed superfluous +% \cs{expandafter}} +% \changes{babel~3.0d}{1991/08/21}{Reinserted \cs{expandafter}} +% \changes{babel~3.0d}{1991/10/27}{Added the collection of pattern +% names.} +% \changes{babel~3.7c}{1999/04/22}{Also store \cs{languagename} for +% possible later use in \cs{process@synonym}} +% \begin{macrocode} +\def\process@language#1 #2 #3/{% + \expandafter\addlanguage\csname l@#1\endcsname + \expandafter\language\csname l@#1\endcsname + \def\languagename{#1}% +% \end{macrocode} +% Then the `name' of the language that will be loaded now is +% added to the token register |\toks8|. and finally +% the pattern file is read. +% \begin{macrocode} + \global\toks8\expandafter{\the\toks8#1, }% +% \end{macrocode} +% \changes{babel~3.7f}{2000/02/18}{Allow for the encoding to be used +% as part of the language name} +% For some hyphenation patterns it is needed to load them with a +% specific font encoding selected. This can be specified in the +% file \file{language.dat} by adding for instance `\texttt{:T1}' to +% the name of the language. The macro |\bbl@get@enc| extracts the +% font encoding from the language name and stores it in +% |\bbl@hyph@enc|. +% \begin{macrocode} + \begingroup + \bbl@get@enc#1:\@@@ + \ifx\bbl@hyph@enc\@empty + \else + \fontencoding{\bbl@hyph@enc}\selectfont + \fi +% \end{macrocode} +% +% \changes{babel~3.4e}{1994/06/24}{Added code to detect assignments to +% left- and righthyphenmin in the patternfile.} +% Some pattern files contain assignments to |\lefthyphenmin| and +% |\righthyphenmin|. \TeX\ does not keep track of these +% assignments. Therefor we try to detect such assignments and +% store them in the |\|\langvar|hyphenmins| macro. When no +% assignments were made we provide a default setting. +% \begin{macrocode} + \lefthyphenmin\m@ne +% \end{macrocode} +% Some pattern files contain changes to the |\lccode| en |\uccode| +% arrays. Such changes should remain local to the language; +% therefor we process the pattern file in a group; the |\patterns| +% command acts globally so its effect will be remembered. +% \changes{babel~3.7a}{1998/03/27}{Read pattern files in a group} +% \changes{babel~3.7c}{1999/04/05}{need to set hyphenmin values +% globally} +% \changes{babel~3.7c}{1999/04/22}{Set \cs{lefthyphenmin} to \cs{m@ne} +% \emph{inside} the group; explicitly set the hyphenmin parameters +% for language 0} +% \begin{macrocode} + \input #2\relax +% \end{macrocode} +% Now we globally store the settings of |\lefthyphenmin| and +% |\righthyphenmin| and close the group. +% \changes{babel~3.7c}{1999/04/25}{Only set hyphenmin values when the +% pattern file changed them} +% \begin{macrocode} + \ifnum\lefthyphenmin=\m@ne + \else + \expandafter\xdef\csname #1hyphenmins\endcsname{% + \the\lefthyphenmin\the\righthyphenmin}% + \fi + \endgroup +% \end{macrocode} +% If the counter |\language| is still equal to zero we set the +% hyphenmin parameters to the values for the language loaded on +% pattern register 0. +% \begin{macrocode} + \ifnum\the\language=\z@ + \expandafter\ifx\csname #1hyphenmins\endcsname\relax + \set@hyphenmins\tw@\thr@@\relax + \else + \expandafter\expandafter\expandafter\set@hyphenmins + \csname #1hyphenmins\endcsname + \fi +% \end{macrocode} +% Now execute the contents of token register zero as it may +% contain commands which set the hyphenmin parameters for synonyms +% that were defined before the first pattern file is read in. +% \changes{babel~3.7c}{1999/04/27}{Added the execution of the contents +% of \cs{toks@}} +% \begin{macrocode} + \the\toks@ + \fi +% \end{macrocode} +% Empty the token register after use. +% \begin{macrocode} + \toks@{}% +% \end{macrocode} +% When the hyphenation patterns have been processed we need to see +% if a file with hyphenation exceptions needs to be read. This is +% the case when the third argument is not empty and when it does +% not contain a space token. +% \changes{babel~3.5b}{1995/04/28}{Added optional reading of file with +% hyphenation exceptions} +% \changes{babel~3.5f}{1995/07/25}{Use \cs{empty} instead of +% \cs{@empty} as the latter is unknown in plain} +% \begin{macrocode} + \def\bbl@tempa{#3}% + \ifx\bbl@tempa\@empty + \else + \ifx\bbl@tempa\space + \else + \input #3\relax + \fi + \fi + } +% \end{macrocode} +% +% \begin{macro}{\bbl@get@enc} +% \changes{babel~3.7f}{2000/02/18}{Added macro} +% \begin{macro}{\bbl@hyph@enc} +% The macro |\bbl@get@enc| extracts the font encoding from the +% language name and stores it in |\bbl@hyph@enc|. It uses delimited +% arguments to achieve this. +% \begin{macrocode} +\def\bbl@get@enc#1:#2\@@@{% +% \end{macrocode} +% First store both arguments in temporary macros, +% \begin{macrocode} + \def\bbl@tempa{#1}% + \def\bbl@tempb{#2}% +% \end{macrocode} +% then, if the second argument was empty, no font encoding was +% specified and we're done. +% \begin{macrocode} + \ifx\bbl@tempb\@empty + \let\bbl@hyph@enc\@empty + \else +% \end{macrocode} +% But if the second argument was \emph{not} empty it will now have +% a superfluous colon attached to it which we need to remove. This +% done by feeding it to |\bbl@get@enc|. The string that we are +% after will then be in the first argument and be stored in +% |\bbl@tempa|. +% \begin{macrocode} + \bbl@get@enc#2\@@@ + \edef\bbl@hyph@enc{\bbl@tempa}% + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\readconfigfile} +% The configuration file can now be opened for reading. +% \begin{macrocode} +\openin1 = language.dat +% \end{macrocode} +% +% See if the file exists, if not, use the default hyphenation file +% \file{hyphen.tex}. The user will be informed about this. +% +% \begin{macrocode} +\ifeof1 + \message{I couldn't find the file language.dat,\space + I will try the file hyphen.tex} + \input hyphen.tex\relax +\else +% \end{macrocode} +% +% Pattern registers are allocated using count register +% |\last@language|. Its initial value is~0. The definition of the +% macro |\newlanguage| is such that it first increments the count +% register and then defines the language. In order to have the +% first patterns loaded in pattern register number~0 we initialize +% |\last@language| with the value~$-1$. +% +% \changes{babel~3.1}{1991/05/21}{Removed use of \cs{toks0}} +% \begin{macrocode} + \last@language\m@ne +% \end{macrocode} +% +% We now read lines from the file until the end is found +% +% \begin{macrocode} + \loop +% \end{macrocode} +% +% While reading from the input, it is useful to switch off +% recognition of the end-of-line character. This saves us stripping +% off spaces from the contents of the control sequence. +% +% \begin{macrocode} + \endlinechar\m@ne + \read1 to \bbl@line + \endlinechar`\^^M +% \end{macrocode} +% +% Empty lines are skipped. +% \begin{macrocode} + \ifx\bbl@line\@empty + \else +% \end{macrocode} +% +% Now we add a space and a |/| character to the end of +% |\bbl@line|. This is needed to be able to recognize the third, +% optional, argument of |\process@language| later on. +% \changes{babel~3.5b}{1995/04/28}{Now add a \cs{space} and a / +% character} +% \begin{macrocode} + \edef\bbl@line{\bbl@line\space/}% + \expandafter\process@line\bbl@line + \fi +% \end{macrocode} +% +% Check for the end of the file. To avoid a new \texttt{if} +% control sequence we create the necessary |\iftrue| or |\iffalse| +% with the help of |\csname|. But there is one complication with +% this approach: when skipping the \texttt{loop...repeat} \TeX\ has +% to read |\if|/|\fi| pairs. So we have to insert a `dummy' +% |\iftrue|. +% \changes{babel~3.1}{1991/10/31}{Removed the extra \texttt{if} +% control sequence} +% \begin{macrocode} + \iftrue \csname fi\endcsname + \csname if\ifeof1 false\else true\fi\endcsname + \repeat +% \end{macrocode} +% +% Reactivate the default patterns, +% \begin{macrocode} + \language=0 +\fi +% \end{macrocode} +% and close the configuration file. +% \changes{babel~3.2a}{1991/11/20}{Free macro space for +% \cs{process@language}} +% \begin{macrocode} +\closein1 +% \end{macrocode} +% Also remove some macros from memory +% \begin{macrocode} +\let\process@language\@undefined +\let\process@synonym\@undefined +\let\process@line\@undefined +\let\bbl@tempa\@undefined +\let\bbl@tempb\@undefined +\let\bbl@eq@\@undefined +\let\bbl@line\@undefined +\let\bbl@get@enc\@undefined +% \end{macrocode} +% +% \changes{babel~3.5f}{1995/11/08}{Moved the fiddling with \cs{dump} +% to \file{bbplain.dtx} as it is no longer needed for \LaTeX} +% We add a message about the fact that babel is loaded in the +% format and with which language patterns to the \cs{everyjob} +% register. +% \changes{babel~3.6h}{1997/01/23}{Added a couple of \cs{expandafter}s +% to copy the contents of \cs{toks8} into \cs{everyjob} instead of +% the reference} +% \begin{macrocode} +\ifx\addto@hook\@undefined +\else + \expandafter\addto@hook\expandafter\everyjob\expandafter{% + \expandafter\typeout\expandafter{\the\toks8 loaded.}} +\fi +% \end{macrocode} +% Here the code for ini\TeX\ ends. +% \begin{macrocode} +%</patterns> +%</kernel> +% \end{macrocode} +% \end{macro} +% +% \subsection{Support for active characters} +% +% \begin{macro}{\bbl@add@special} +% \changes{babel~3.2}{1991/11/10}{Added macro} +% The macro |\bbl@add@special| is used to add a new character (or +% single character control sequence) to the macro |\dospecials| +% (and |\@sanitize| if \LaTeX\ is used). +% +% To keep all changes local, we begin a new group. Then we +% redefine the macros |\do| and |\@makeother| to add themselves and +% the given character without expansion. +% \begin{macrocode} +%<*core|shorthands> +\def\bbl@add@special#1{\begingroup + \def\do{\noexpand\do\noexpand}% + \def\@makeother{\noexpand\@makeother\noexpand}% +% \end{macrocode} +% To add the character to the macros, we expand the original macros +% with the additional character inside the redefinition of the +% macros. Because |\@sanitize| can be undefined, we put the +% definition inside a conditional. +% \begin{macrocode} + \edef\x{\endgroup + \def\noexpand\dospecials{\dospecials\do#1}% + \expandafter\ifx\csname @sanitize\endcsname\relax \else + \def\noexpand\@sanitize{\@sanitize\@makeother#1}% + \fi}% +% \end{macrocode} +% The macro |\x| contains at this moment the following:\\ +% |\endgroup\def\dospecials{|\textit{old contents}% +% |\do|\meta{char}|}|.\\ +% If |\@sanitize| is defined, it contains an additional definition +% of this macro. The last thing we have to do, is the expansion of +% |\x|. Then |\endgroup| is executed, which restores the old +% meaning of |\x|, |\do| and |\@makeother|. After the group is +% closed, the new definition of |\dospecials| (and |\@sanitize|) is +% assigned. +% \begin{macrocode} + \x} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@remove@special} +% \changes{babel~3.2}{1991/11/10}{Added macro} +% The companion of the former macro is |\bbl@remove@special|. It +% is used to remove a character from the set macros |\dospecials| +% and |\@sanitize|. +% +% To keep all changes local, we begin a new group. Then we define +% a help macro |\x|, which expands to empty if the characters +% match, otherwise it expands to its nonexpandable input. Because +% \TeX\ inserts a |\relax|, if the corresponding |\else| or |\fi| +% is scanned before the comparison is evaluated, we provide a `stop +% sign' which should expand to nothing. +% \begin{macrocode} +\def\bbl@remove@special#1{\begingroup + \def\x##1##2{\ifnum`#1=`##2\noexpand\@empty + \else\noexpand##1\noexpand##2\fi}% +% \end{macrocode} +% With the help of this macro we define |\do| and |\make@other|. +% \begin{macrocode} + \def\do{\x\do}% + \def\@makeother{\x\@makeother}% +% \end{macrocode} +% The rest of the work is similar to |\bbl@add@special|. +% \begin{macrocode} + \edef\x{\endgroup + \def\noexpand\dospecials{\dospecials}% + \expandafter\ifx\csname @sanitize\endcsname\relax \else + \def\noexpand\@sanitize{\@sanitize}% + \fi}% + \x} +% \end{macrocode} +% \end{macro} +% +% \subsection{Shorthands} +% +% \begin{macro}{\initiate@active@char} +% \changes{babel~3.5a}{1995/02/11}{Added macro} +% \changes{babel~3.5b}{1995/03/03}{Renamed macro} +% A language definition file can call this macro to make a +% character active. This macro takes one argument, the character +% that is to be made active. When the character was already active +% this macro does nothing. Otherwise, this macro defines the +% control sequence |\normal@char|\m{char} to expand to the +% character in its `normal state' and it defines the active +% character to expand to |\normal@char|\m{char} by default +% (\m{char} being the character to be made active). Later its +% definition can be changed to expand to |\active@char|\m{char} +% by calling |\bbl@activate{|\m{char}|}|. +% +% For example, to make the double quote character active one could +% have the following line in a language definition file: +% \begin{verbatim} +% \initiate@active@char{"} +% \end{verbatim} +% +% \begin{macro}{\bbl@afterelse} +% \begin{macro}{\bbl@afterfi} +% Because the code that is used in the handling of active +% characters may need to look ahead, we take extra care to `throw' +% it over the |\else| and |\fi| parts of an +% |\if|-statement\footnote{This code is based on code presented in +% TUGboat vol. 12, no2, June 1991 in ``An expansion Power Lemma'' +% by Sonja Maus.}. These macros will break if another |\if...\fi| +% statement appears in one of the arguments. +% \changes{babel~3.6i}{1997/02/20}{Made \cs{bbl@afterelse} and +% \cs{bbl@afterfi} \cs{long}} +% \begin{macrocode} +\long\def\bbl@afterelse#1\else#2\fi{\fi#1} +\long\def\bbl@afterfi#1\fi{\fi#1} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{babel~3.7a}{1997/02/23}{Commented out \c{peek@token} and +% \cs{test@token} as shorthands are made expandable again} +% +% \begin{macro}{\peek@token} +% \changes{babel~3.5f}{1995/12/06}{macro added} +% \changes{babel~3.6i}{1998/03/10}{Renamed \cs{test@token} to +% \cs{bbl@test@token} to prevent a clash with Arab\TeX} +% To prevent error messages when a shorthand, which +% normally takes an argument, sees a |\par|, or |}|, or similar +% tokens, we need to be able to `peek' at what is coming up next in +% the input stream. Depending on the category code of the token +% that is seen, we need to either continue the code for the active +% character, or insert the non-active version of that character in +% the output. The macro |\peek@token| therefore takes two +% arguments, with which it constructs the control sequence to +% expand next. It |\let|'s |\bbl@nexta| and |\bbl@nextb| to the two +% possible macros. This is necessary for |\bbl@test@token| to take +% the right decision. +% \begin{macrocode} +%\def\peek@token#1#2{% +% \expandafter\let\expandafter\bbl@nexta\csname #1\string#2\endcsname +% \expandafter\let\expandafter\bbl@nextb +% \csname system@active\string#2\endcsname +% \futurelet\bbl@token\bbl@test@token} +% \end{macrocode} +% +% \begin{macro}{\bbl@test@token} +% \changes{babel~3.5f}{1995/12/06}{macro added} +% \changes{babel~3.6i}{1998/03/10}{renamed \cs{bbl@token} to +% \cs{bbl@test@token} to prevent a clash with Arab\TeX} +% When the result of peeking at the next token has yielded a token +% with category `letter', `other' or `active' it is safe to proceed +% with evaluating the code for the shorthand. When a token is found +% with any other category code proceeding is unsafe and therefor +% the original shorthand character is inserted in the output. The +% macro that calls |\bbl@test@token| needs to setup |\bbl@nexta| +% and |\bbl@nextb| in order to achieve this. +% \begin{macrocode} +%\def\bbl@test@token{% +% \let\bbl@next\bbl@nexta +% \ifcat\noexpand\bbl@token a% +% \else +% \ifcat\noexpand\bbl@token=% +% \else +% \ifcat\noexpand\bbl@token\noexpand\bbl@next +% \else +% \let\bbl@next\bbl@nextb +% \fi +% \fi +% \fi +% \bbl@next} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +%^^A +%^^A Tekens met mathcode >"8000 zorgen voor problemen. +%^^A hier kan op getest worden door ze catcode13 te geven +%^^A en te vragen of er een undefined macro ontstaat: +%^^A \ifx#1\undefined{matchcode<"8000}\else get active definition +%^^A using \let \fi +%^^A +% The macro |\initiate@active@char| takes all the necessary actions +% to make its argument a shorthand character. The real work is +% performed once for each character. +% \changes{babel~3.7c}{1999/04/30}{Only execute +% \cs{initiate@active@char} for each character} +% \begin{macrocode} +\def\initiate@active@char#1{% + \expandafter\ifx\csname active@char\string##1\endcsname\relax + \bbl@afterfi{\@initiate@active@char{#1}}% + \fi} +% \end{macrocode} +% Note that the definition of |\@initiate@active@char| needs an +% active character, for this the |~| is used. Some of the changes +% we need, do not have to become available later on, so we do it +% inside a group. +% \begin{macrocode} +\begingroup + \catcode`\~\active + \def\x{\endgroup + \def\@initiate@active@char##1{% +% \end{macrocode} +% If the character is already active we provide the default +% expansion under this shorthand mechanism. +% \changes{babel~3.5f}{1996/01/09}{Deal correctly with already active +% characters, provide top level expansion and define all lower +% level expansion macros outside of the \cs{else} branch.} +% \changes{babel~3.5g}{1996/08/13}{Top level expansion of +% \cs{normal@char char} where char is already active, should be the +% expansion of the active character, not the active character +% itself as this causes an endless loop} +% \changes{babel~3.7d}{1999/08/19}{Make sure the active character +% doesn't get expanded more then once by the \cs{edef} by adding +% \cs{expandafter}\cs{strip@prefix}\cs{meaning}} +% \changes{babel~3.7e}{1999/09/06}{previous change was rubbish; use +% \cs{let} instead of \cs{edef}} +% \begin{macrocode} + \ifcat\noexpand##1\noexpand~\relax + \@ifundefined{normal@char\string##1}{% + \expandafter\let\csname normal@char\string##1\endcsname##1% + \expandafter\gdef + \expandafter##1% + \expandafter{% + \expandafter\active@prefix\expandafter##1% + \csname normal@char\string##1\endcsname}}{}% + \else +% \end{macrocode} +% Otherwise we write a message in the transcript file, +% \begin{macrocode} + \@activated{##1}% +% \end{macrocode} +% and define |\normal@char|\m{char} to expand to the character in +% its default state. +% \begin{macrocode} + \@namedef{normal@char\string##1}{##1}% +% \end{macrocode} +% If we are making the right quote active we need to change +% |\pr@m@s| as well. +% \changes{babel~3.5a}{1995/03/10}{Added a check for right quote and +% adapt \cs{pr@m@s} if necessary} +% \changes{babel~3.7f}{1999/12/18}{The redefinition needs to take +% place on level higher, \cs{prim@s} needs to be redefined.} +% \begin{macrocode} + \ifx##1'% + \let\prim@s\bbl@prim@s +% \end{macrocode} +% Also, make sure that a single |'| in math mode `does the right +% thing'. +% \changes{babel~3.7f}{1999/12/18}{Insert a check for math mode in the +% definition of \cs{normal@char'}} +% \changes{babel~3.7g}{2000/10/02}{use \cs{textormath} to get rid of +% the \cs{fi} (PR 3266)} +% \begin{macrocode} + \@namedef{normal@char\string##1}{% + \textormath{##1}{^\bgroup\prim@s}}% + \fi +% \end{macrocode} +% If we are using the caret as a shorthand character special care +% should be taken to make sure math still works. Therefor an extra +% level of expansion is introduced with a check for math mode on +% the upper level. +% \changes{babel~3.7f}{1999/12/18}{Introduced an extra level of +% expansion in the definition of an active caret} +% \begin{macrocode} + \ifx##1^% + \gdef\bbl@act@caret{% + \ifmmode + \csname normal@char\string^\endcsname + \else + \bbl@afterfi + {\if@safe@actives + \bbl@afterelse\csname normal@char\string##1\endcsname + \else + \bbl@afterfi\csname user@active\string##1\endcsname + \fi}% + \fi} + \fi +% \end{macrocode} +% To prevent problems with the loading of other packages after +% \babel\ we reset the catcode of the character at the end of the +% package. +% \changes{babel~3.5f}{1995/12/01}{Restore the category code of a +% shorthand char at end of package} +% \changes{babel~3.6f}{1997/01/14}{Made restoring of the category code +% of shorthand characters optional} +% \changes{babel~3.7a}{1997/03/21}{Use \cs{@ifpackagewith} to +% determine whether shorthand characters need to remain active} +% \begin{macrocode} + \@ifpackagewith{babel}{KeepShorthandsActive}{}{% + \edef\bbl@tempa{\catcode`\noexpand##1\the\catcode`##1}% + \expandafter\AtEndOfPackage\expandafter{\bbl@tempa}}% +% \end{macrocode} +% Now we set the lowercase code of the |~| equal to that of the +% character to be made active and execute the rest of the code +% inside a |\lowercase| `environment'. +% \changes{babel~3.5f}{1996/01/25}{store the \cs{lccode} of the tie +% before changing it} +% \begin{macrocode} + \@tempcnta=\lccode`\~ + \lccode`~=`##1% + \lowercase{% +% \end{macrocode} +% Make the character active and add it to |\dospecials| and +% |\@sanitize|. +% \begin{macrocode} + \catcode`~\active + \expandafter\bbl@add@special + \csname \string##1\endcsname +% \end{macrocode} +% Also re-activate it again at |\begin{document}|. +% \begin{macrocode} + \AtBeginDocument{% + \catcode`##1\active +% \end{macrocode} +% We also need to make sure that the shorthands are active during +% the processing of the \file{.aux} file. Otherwise some citations +% may give unexpected results in the printout when a shorthand was +% used in the optional argument of |\bibitem| for example. +% \changes{babel~3.6i}{1997/03/01}{Make shorthands active during +% \file{.aux} file processing} +% \begin{macrocode} + \if@filesw + \immediate\write\@mainaux{% + \string\catcode`##1\string\active}% + \fi}% +% \end{macrocode} +% Define the character to expand to +% \begin{center} +% |\active@prefix| \m{char} |\normal@char|\m{char} +% \end{center} +% (where |\active@char|\m{char} is \emph{one} control sequence!). +% \changes{babel~3.5f}{1996/01/25}{restore the \cs{lccode} of the tie} +% \begin{macrocode} + \expandafter\gdef + \expandafter~% + \expandafter{% + \expandafter\active@prefix\expandafter##1% + \csname normal@char\string##1\endcsname}}% + \lccode`\~\@tempcnta + \fi +% \end{macrocode} +% For the active caret we first expand to |\bbl@act@caret| in order +% to be able to handle math mode correctly. +% \changes{babel~3.7f}{2000/09/25}{Make an exception for the active +% caret which needs an extra level of expansion} +% \begin{macrocode} + \ifx##1^% + \@namedef{active@char\string##1}{\bbl@act@caret}% + \else +% \end{macrocode} +% We define the first level expansion of |\active@char|\m{char} to +% check the status of the |@safe@actives| flag. If it is set to +% true we expand to the `normal' version of this character, +% otherwise we call |\@active@char|\m{char}. +% \begin{macrocode} + \@namedef{active@char\string##1}{% + \if@safe@actives + \bbl@afterelse\csname normal@char\string##1\endcsname + \else + \bbl@afterfi\csname user@active\string##1\endcsname + \fi}% + \fi +% \end{macrocode} +% The next level of the code checks whether a user has defined a +% shorthand for himself with this character. First we check for a +% single character shorthand. If that doesn't exist we check for a +% shorthand with an argument. +% \changes{babel~3.5d}{1995/07/02}{Skip the user-level active char +% with argument if no shorthands with arguments were defined} +% \changes{babel~3.8b}{2004/04/19}{Now use \cs{bbl@sh@select}} +% \begin{macrocode} + \@namedef{user@active\string##1}{% + \expandafter\ifx + \csname \user@group @sh@\string##1@\endcsname + \relax + \bbl@afterelse\bbl@sh@select\user@group##1% + {user@active@arg\string##1}{language@active\string##1}% + \else + \bbl@afterfi\csname \user@group @sh@\string##1@\endcsname + \fi}% +% \end{macrocode} +% When there is also no user-level shorthand with an argument we +% will check whether there is a language defined shorthand for +% this active character. Before the next token is absorbed as +% argument we need to make sure that this is safe. Therefor +% |\peek@token| is called to decide that. +% \changes{babel~3.5f}{1995/12/07}{use \cs{peek@token} to check whether +% it is safe to proceed} +% \changes{babel~3.6i}{1997/02/20}{Remove the use of \cs{peek@token} +% again and make the \cs{...active@arg...} commands \cs{long}} +% \changes{babel~3.7e}{1999/09/24}{pass the argument on with braces in +% order to prevent it from breaking up} +% \changes{babel~3.7f}{2000/02/18}{remove the braces again} +% \begin{macrocode} + \long\@namedef{user@active@arg\string##1}####1{% + \expandafter\ifx + \csname \user@group @sh@\string##1@\string####1@\endcsname + \relax + \bbl@afterelse + \csname language@active\string##1\endcsname####1% + \else + \bbl@afterfi + \csname \user@group @sh@\string##1@\string####1@% + \endcsname + \fi}% +% \end{macrocode} +% In order to do the right thing when a shorthand with an argument +% is used by itself at the end of the line we provide a definition +% for the case of an empty argument. For that case we let the +% shorthand character expand to its non-active self. +% \begin{macrocode} + \@namedef{\user@group @sh@\string##1@@}{% + \csname normal@char\string##1\endcsname} +% \end{macrocode} +% +% Like the shorthands that can be defined by the user, a language +% definition file can also define shorthands with and without an +% argument, so we need two more macros to check if they exist. +% \changes{babel~3.5d}{1995/07/02}{Skip the language-level active char +% with argument if no shorthands with arguments were defined} +% \changes{babel~3.8b}{2004/04/19}{Now use \cs{bbl@sh@select}} +% \begin{macrocode} + \@namedef{language@active\string##1}{% + \expandafter\ifx + \csname \language@group @sh@\string##1@\endcsname + \relax + \bbl@afterelse\bbl@sh@select\language@group##1% + {language@active@arg\string##1}{system@active\string##1}% + \else + \bbl@afterfi + \csname \language@group @sh@\string##1@\endcsname + \fi}% +% \end{macrocode} +% \changes{babel~3.5f}{1995/12/07}{use \cs{peek@token} to check whether +% it is safe to proceed} +% \changes{babel~3.6i}{1997/02/20}{Remove the use of \cs{peek@token} +% again} +% \changes{babel~3.7e}{1999/09/24}{pass the argument on with braces in +% order to prevent it from breaking up} +% \changes{babel~3.7f}{2000/02/18}{remove the braces again} +% \begin{macrocode} + \long\@namedef{language@active@arg\string##1}####1{% + \expandafter\ifx + \csname \language@group @sh@\string##1@\string####1@\endcsname + \relax + \bbl@afterelse + \csname system@active\string##1\endcsname####1% + \else + \bbl@afterfi + \csname \language@group @sh@\string##1@\string####1@% + \endcsname + \fi}% +% \end{macrocode} +% And the same goes for the system level. +% \changes{babel~3.8b}{2004/04/19}{Now use \cs{bbl@sh@select}} +% \begin{macrocode} + \@namedef{system@active\string##1}{% + \expandafter\ifx + \csname \system@group @sh@\string##1@\endcsname + \relax + \bbl@afterelse\bbl@sh@select\system@group##1% + {system@active@arg\string##1}{normal@char\string##1}% + \else + \bbl@afterfi\csname \system@group @sh@\string##1@\endcsname + \fi}% +% \end{macrocode} +% When no shorthands were found the `normal' version of the active +% character is inserted. +% \changes{babel~3.5f}{1995/12/07}{use \cs{peek@token} to check whether +% it is safe to proceed} +% \changes{babel~3.6i}{1997/02/20}{Remove the use of \cs{peek@token} +% again} +% \begin{macrocode} + \long\@namedef{system@active@arg\string##1}####1{% + \expandafter\ifx + \csname \system@group @sh@\string##1@\string####1@\endcsname + \relax + \bbl@afterelse\csname normal@char\string##1\endcsname####1% + \else + \bbl@afterfi + \csname \system@group @sh@\string##1@\string####1@\endcsname + \fi}% +% \end{macrocode} +% When a shorthand combination such as |''| ends up in a heading +% \TeX\ would see |\protect'\protect'|. To prevent this from +% happening a shorthand needs to be defined at user level. +% \changes{babel~3.7f}{1999/12/09}{Added an extra shorthand +% combination on user level to catch an interfering \cs{protect}} +% \begin{macrocode} + \@namedef{user@sh@\string##1@\string\protect@}{% + \csname user@active\string##1\endcsname}% + }% + }\x +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@sh@select} +% This command helps the shorthand supporting macros to select how +% to proceed. Note that this macro needs to be expandable as do all +% the shorthand macros in order for them to work in expansion-only +% environments such as the argument of |\hyphenation|. +% +% This macro expects the name of a group of shorthands in its first +% argument and a shorthand character in its second argument. It +% will expand to either |\bbl@firstcs| or |\bbl@scndcs|. Hence two +% more arguments need to follow it. +% \changes{babel~3.8b}{2004/04/19}{Added command} +% \begin{macrocode} +\def\bbl@sh@select#1#2{% + \expandafter\ifx\csname#1@sh@\string#2@sel\endcsname\relax + \bbl@afterelse\bbl@scndcs + \else + \bbl@afterfi\csname#1@sh@\string#2@sel\endcsname + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\active@prefix} +% The command |\active@prefix| which is used in the expansion of +% active characters has a function similar to |\OT1-cmd| in that it +% |\protect|s the active character whenever |\protect| is +% \emph{not} |\@typeset@protect|. +% \changes{babel~3.5d}{1995/07/02}{\cs{@protected@cmd} has vanished +% from \file{ltoutenc.dtx}} +% \changes{babel~3.7o}{2003/11/17}{Added handling of the situation +% where \cs{protect} is set to \cs{@unexpandable@protect}} +% \begin{macrocode} +\def\active@prefix#1{% + \ifx\protect\@typeset@protect + \else +% \end{macrocode} +% When |\protect| is set to |\@unexpandable@protect| we make sure +% that the active character is als \emph{not} expanded by inserting +% |\noexpand| in front of it. The |\@gobble| is needed to remove +% a token such as |\activechar:| (when the double colon was the +% active character to be dealt with). +% \begin{macrocode} + \ifx\protect\@unexpandable@protect + \bbl@afterelse\bbl@afterfi\noexpand#1\@gobble + \else + \bbl@afterfi\bbl@afterfi\protect#1\@gobble + \fi + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@safe@actives} +% In some circumstances it is necessary to be able to change the +% expansion of an active character on the fly. For this purpose the +% switch |@safe@actives| is available. The setting of this switch +% should be checked in the first level expansion of +% |\active@char|\m{char}. +% \begin{macrocode} +\newif\if@safe@actives +\@safe@activesfalse +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@restore@actives} +% \changes{babel~3.7m}{2003/11/15}{New macro added} +% When the output routine kicks in while the +% active characters were made ``safe'' this must be undone in +% the headers to prevent unexpected typeset results. For this +% situation we define a command to make them ``unsafe'' again. +% \begin{macrocode} +\def\bbl@restore@actives{\if@safe@actives\@safe@activesfalse\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@activate} +% \changes{babel~3.5a}{1995/02/11}{Added macro} +% +% This macro takes one argument, like |\initiate@active@char|. The +% macro is used to change the definition of an active character to +% expand to |\active@char|\m{char} instead of +% |\normal@char|\m{char}. +% \begin{macrocode} +\def\bbl@activate#1{% + \expandafter\def + \expandafter#1\expandafter{% + \expandafter\active@prefix + \expandafter#1\csname active@char\string#1\endcsname}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@deactivate} +% \changes{babel~3.5a}{1995/02/11}{Added macro} +% This macro takes one argument, like |\bbl@activate|. The macro +% doesn't really make a character non-active; it changes its +% definition to expand to |\normal@char|\m{char}. +% \begin{macrocode} +\def\bbl@deactivate#1{% + \expandafter\def + \expandafter#1\expandafter{% + \expandafter\active@prefix + \expandafter#1\csname normal@char\string#1\endcsname}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@firstcs} +% \begin{macro}{\bbl@scndcs} +% These macros have two arguments. They use one of their arguments +% to build a control sequence from. +% \begin{macrocode} +\def\bbl@firstcs#1#2{\csname#1\endcsname} +\def\bbl@scndcs#1#2{\csname#2\endcsname} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\declare@shorthand} +% The command |\declare@shorthand| is used to declare a shorthand +% on a certain level. It takes three arguments: +% \begin{enumerate} +% \item a name for the collection of shorthands, i.e. `system', or +% `dutch'; +% \item the character (sequence) that makes up the shorthand, +% i.e. |~| or |"a|; +% \item the code to be executed when the shorthand is encountered. +% \end{enumerate} +% \changes{babel~3.5d}{1995/07/02}{Make a `note' when a shorthand with +% an argument is defined.} +% \changes{babel~3.6i}{1997/02/23}{Make it possible to distinguish the +% constructed control sequences for the case with argument} +% \changes{babel~3.8b}{2004/04/19}{We need to support shorthands with +% and without argument in different groups; added the name of the +% group to the storage macro} +% \begin{macrocode} +\def\declare@shorthand#1#2{\@decl@short{#1}#2\@nil} +\def\@decl@short#1#2#3\@nil#4{% + \def\bbl@tempa{#3}% + \ifx\bbl@tempa\@empty + \expandafter\let\csname #1@sh@\string#2@sel\endcsname\bbl@scndcs + \@namedef{#1@sh@\string#2@}{#4}% + \else + \expandafter\let\csname #1@sh@\string#2@sel\endcsname\bbl@firstcs + \@namedef{#1@sh@\string#2@\string#3@}{#4}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textormath} +% Some of the shorthands that will be declared by the language +% definition files have to be usable in both text and mathmode. To +% achieve this the helper macro |\textormath| is provided. +% \begin{macrocode} +\def\textormath#1#2{% + \ifmmode + \bbl@afterelse#2% + \else + \bbl@afterfi#1% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\user@group} +% \begin{macro}{\language@group} +% \begin{macro}{\system@group} +% The current concept of `shorthands' supports three levels or +% groups of shorthands. For each level the name of the level or +% group is stored in a macro. The default is to have a user group; +% use language group `english' and have a system group called +% `system'. +% \changes{babel~3.6i}{1997/02/24}{Have a user group called `user' by +% default} +% \begin{macrocode} +\def\user@group{user} +\def\language@group{english} +\def\system@group{system} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\useshorthands} +% This is the user level command to tell \LaTeX\ that user level +% shorthands will be used in the document. It takes one argument, +% the character that starts a shorthand. +% \changes{babel~3.7j}{2001/11/11}{When \TeX\ has seen a character +% its category code is fixed; need to use a `stand-in' for the +% call of \cs{bbl@activate}} +% \begin{macrocode} +\def\useshorthands#1{% +% \end{macrocode} +% First note that this is user level. +% \begin{macrocode} + \def\user@group{user}% +% \end{macrocode} +% Then initialize the character for use as a shorthand character. +% \begin{macrocode} + \initiate@active@char{#1}% +% \end{macrocode} +% Now that \TeX\ has seen the character its category code is +% fixed, but for the actions of |\bbl@activate| to succeed we need +% it to be active. Hence the trick with the |\lccode| to circumvent +% this. +% \changes{babel~3.7j}{2003/09/11}{The change from 11/112001 was +% incomplete} +% \begin{macrocode} + \@tempcnta\lccode`\~ + \lccode`~=`#1% + \lowercase{\catcode`~\active\bbl@activate{~}}% + \lccode`\~\@tempcnta} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\defineshorthand} +% Currently we only support one group of user level shorthands, +% called `user'. +% \begin{macrocode} +\def\defineshorthand{\declare@shorthand{user}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\languageshorthands} +% A user level command to change the language from which shorthands +% are used. +% \begin{macrocode} +\def\languageshorthands#1{\def\language@group{#1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\aliasshorthand} +% \changes{babel~3.5f}{1996/01/25}{New command} +% \begin{macrocode} +\def\aliasshorthand#1#2{% +% \end{macrocode} +% First the new shorthand needs to be initialized, +% \begin{macrocode} + \expandafter\ifx\csname active@char\string#2\endcsname\relax + \ifx\document\@notprerr + \@notshorthand{#2} + \else + \initiate@active@char{#2}% +% \end{macrocode} +% Then we need to use the |\lccode| trick to make the new shorthand +% behave like the old one. Therefore we save the current |\lccode| +% of the |~|-character and restore it later. Then we |\let| the new +% shorthand character be equal to the original. +% \begin{macrocode} + \@tempcnta\lccode`\~ + \lccode`~=`#2% + \lowercase{\let~#1}% + \lccode`\~\@tempcnta + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@notshorthand} +% \changes{v3.8d}{2004/11/20}{Error message added} +% +% \begin{macrocode} +\def\@notshorthand#1{% + \PackageError{babel}{% + The character `\string #1´ should be made + a shorthand character;\MessageBreak + add the command \string\useshorthands\string{#1\string} to + the preamble.\MessageBreak + I will ignore your instruction}{}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\shorthandon} +% \changes{babel~3.7a}{1998/06/07}{Added command} +% \begin{macro}{\shorthandoff} +% \changes{babel~3.7a}{1998/06/07}{Added command} +% The first level definition of these macros just passes the +% argument on to |\bbl@switch@sh|, adding |\@nil| at the end to +% denote the end of the list of characters. +% \begin{macrocode} +\newcommand*\shorthandon[1]{\bbl@switch@sh{on}#1\@nil} +\newcommand*\shorthandoff[1]{\bbl@switch@sh{off}#1\@nil} +% \end{macrocode} +% +% \begin{macro}{\bbl@switch@sh} +% \changes{babel~3.7a}{1998/06/07}{Added command} +% The macro |\bbl@switch@sh| takes the list of characters apart one +% by one and subsequently switches the category code of the +% shorthand character according to the first argument of +% |\bbl@switch@sh|. +% \begin{macrocode} +\def\bbl@switch@sh#1#2#3\@nil{% +% \end{macrocode} +% But before any of this switching takes place we make sure that +% the character we are dealing with is known as a shorthand +% character. If it is, a macro such as |\active@char"| should +% exist. +% \begin{macrocode} + \@ifundefined{active@char\string#2}{% + \PackageError{babel}{% + The character '\string #2' is not a shorthand character + in \languagename}{% + Maybe you made a typing mistake?\MessageBreak + I will ignore your instruction}}{% + \csname bbl@switch@sh@#1\endcsname#2}% +% \end{macrocode} +% Now that, as the first character in the list has been taken care +% of, we pass the rest of the list back to |\bbl@switch@sh|. +% \begin{macrocode} + \ifx#3\@empty\else + \bbl@afterfi\bbl@switch@sh{#1}#3\@nil + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@switch@sh@off} +% All that is left to do is define the actual switching +% macros. Switching off is easy, we just set the category code to +% `other' (12). +% \begin{macrocode} +\def\bbl@switch@sh@off#1{\catcode`#112\relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@switch@sh@on} +% But switching the shorthand character back on is a bit more +% tricky. It involves making sure that we have an active character +% to begin with when the macro is being defined. It also needs the +% use of |\lowercase| and |\lccode| trickery to get everything to +% work out as expected. And to keep things local that need to +% remain local a group is opened, which is closed as soon as |\x| +% gets executed. +% \begin{macrocode} +\begingroup + \catcode`\~\active + \def\x{\endgroup + \def\bbl@switch@sh@on##1{% + \lccode`~=`##1% + \lowercase{% + \catcode`~\active + }% + }% + } +% \end{macrocode} +% \end{macro} +% The next operation makes the above definition effective. +% \begin{macrocode} +\x +% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% To prevent problems with constructs such as |\char"01A| when the +% double quote is made active, we define a shorthand on +% system level. +% \changes{babel~3.5a}{1995/03/10}{Replaced 16 system shorthands to +% deal with hex numbers by one} +% \begin{macrocode} +\declare@shorthand{system}{"}{\csname normal@char\string"\endcsname} +% \end{macrocode} +% +% When the right quote is made active we need to take care of +% handling it correctly in mathmode. Therefore we define a +% shorthand at system level to make it expand to a non-active right +% quote in textmode, but expand to its original definition in +% mathmode. (Note that the right quote is `active' in mathmode +% because of its mathcode.) +% \changes{babel~3.5a}{1995/03/10}{Added a system shorthand for the +% right quote} +% \begin{macrocode} +\declare@shorthand{system}{'}{% + \textormath{\csname normal@char\string'\endcsname}% + {\sp\bgroup\prim@s}} +% \end{macrocode} +% +% When the left quote is made active we need to take care of +% handling it correctly when it is followed by for instance an open +% brace token. Therefore we define a shorthand at system level to +% make it expand to a non-active left quote. +% \changes{babel~3.5f}{1996/03/06}{Added a system shorthand for the +% left quote} +% \begin{macrocode} +\declare@shorthand{system}{`}{\csname normal@char\string`\endcsname} +% \end{macrocode} +% +% \begin{macro}{\bbl@prim@s} +% \changes{babel~3.7f}{1999/12/01}{Need to redefine \cs{prim@s} as +% well as plain \TeX's definition uses \cs{next}} +% \begin{macro}{\bbl@pr@m@s} +% \changes{babel~3.5a}{1995/03/10}{Added macro} +% One of the internal macros that are involved in substituting +% |\prime| for each right quote in mathmode is |\prim@s|. This +% checks if the next character is a right quote. When the right +% quote is active, the definition of this macro needs to be adapted +% to look for an active right quote. +% \begin{macrocode} +\def\bbl@prim@s{% + \prime\futurelet\@let@token\bbl@pr@m@s} +\begingroup + \catcode`\'\active\let'\relax + \def\x{\endgroup + \def\bbl@pr@m@s{% + \ifx'\@let@token + \expandafter\pr@@@s + \else + \ifx^\@let@token + \expandafter\expandafter\expandafter\pr@@@t + \else + \egroup + \fi + \fi}% + } +\x +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +%</core|shorthands> +% \end{macrocode} +% +% Normally the |~| is active and expands to \verb*=\penalty\@M\ =. +% When it is written to the \file{.aux} file it is written +% expanded. To prevent that and to be able to use the character |~| +% as a start character for a shorthand, it is redefined here as a +% one character shorthand on system level. +% \changes{babel~3.5f}{1996/04/02}{No need to reset the category code +% of the tilde as \cs{initiate@active@char} now correctly deals +% with active characters} +% \begin{macrocode} +%<*core> +\initiate@active@char{~} +\declare@shorthand{system}{~}{\leavevmode\nobreak\ } +\bbl@activate{~} +% \end{macrocode} +% +% \begin{macro}{\OT1dqpos} +% \begin{macro}{\T1dqpos} +% The position of the double quote character is different for the +% OT1 and T1 encodings. It will later be selected using the +% |\f@encoding| macro. Therefor we define two macros here to store +% the position of the character in these encodings. +% \begin{macrocode} +\expandafter\def\csname OT1dqpos\endcsname{127} +\expandafter\def\csname T1dqpos\endcsname{4} +% \end{macrocode} +% When the macro |\f@encoding| is undefined (as it is in plain +% \TeX) we define it here to expand to \texttt{OT1} +% \begin{macrocode} +\ifx\f@encoding\@undefined + \def\f@encoding{OT1} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Language attributes} +% +% Language attributes provide a means to give the user control over +% which features of the language definition files he wants to +% enable. +% \changes{babel~3.7c}{1998/07/02}{Added support for language +% attributes} +% \begin{macro}{\languageattribute} +% The macro |\languageattribute| checks whether its arguments are +% valid and then activates the selected language attribute. +% \begin{macrocode} +\newcommand\languageattribute[2]{% +% \end{macrocode} +% First check whether the language is known. +% \begin{macrocode} + \expandafter\ifx\csname l@#1\endcsname\relax + \@nolanerr{#1}% + \else +% \end{macrocode} +% Than process each attribute in the list. +% \begin{macrocode} + \@for\bbl@attr:=#2\do{% +% \end{macrocode} +% We want to make sure that each attribute is selected only once; +% therefor we store the already selected attributes in +% |\bbl@known@attribs|. When that control sequence is not yet +% defined this attribute is certainly not selected before. +% \begin{macrocode} + \ifx\bbl@known@attribs\@undefined + \in@false + \else +% \end{macrocode} +% Now we need to see if the attribute occurs in the list of +% already selected attributes. +% \begin{macrocode} + \edef\bbl@tempa{\noexpand\in@{,#1-\bbl@attr,}% + {,\bbl@known@attribs,}}% + \bbl@tempa + \fi +% \end{macrocode} +% When the attribute was in the list we issue a warning; this might +% not be the users intention. +% \begin{macrocode} + \ifin@ + \PackageWarning{Babel}{% + You have more than once selected the attribute + '\bbl@attr'\MessageBreak for language #1}% + \else +% \end{macrocode} +% When we end up here the attribute is not selected before. So, we +% add it to the list of selected attributes and execute the +% associated \TeX-code. +% \begin{macrocode} + \edef\bbl@tempa{% + \noexpand\bbl@add@list\noexpand\bbl@known@attribs{#1-\bbl@attr}}% + \bbl@tempa + \edef\bbl@tempa{#1-\bbl@attr}% + \expandafter\bbl@ifknown@ttrib\expandafter{\bbl@tempa}\bbl@attributes% + {\csname#1@attr@\bbl@attr\endcsname}% + {\@attrerr{#1}{\bbl@attr}}% + \fi + } + \fi} +% \end{macrocode} +% This command should only be used in the preamble of a document. +% \begin{macrocode} +\@onlypreamble\languageattribute +% \end{macrocode} +% The error text to be issued when an unknown attribute is +% selected. +% \begin{macrocode} + \newcommand*{\@attrerr}[2]{% + \PackageError{babel}% + {The attribute #2 is unknown for language #1.}% + {Your command will be ignored, type <return> to proceed}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@declare@ttribute} +% This command adds the new language/attribute combination to the +% list of known attributes. +% \begin{macrocode} +\def\bbl@declare@ttribute#1#2#3{% + \bbl@add@list\bbl@attributes{#1-#2}% +% \end{macrocode} +% Then it defines a control sequence to be executed when the +% attribute is used in a document. The result of this should be +% that the macro |\extras...| for the current language is extended, +% otherwise the attribute will not work as its code is removed from +% memory at |\begin{document}|. +% \begin{macrocode} + \expandafter\def\csname#1@attr@#2\endcsname{#3}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@ifattributeset} +% \changes{babel~3.7f}{2000/02/12}{macro added} +% This internal macro has 4 arguments. It can be used to interpret +% \TeX\ code based on whether a certain attribute was set. This +% command should appear inside the argument to |\AtBeginDocument| +% because the attributes are set in the document preamble, +% \emph{after} \babel\ is loaded. +% +% The first argument is the language, the second argument the +% attribute being checked, and the third and fourth arguments are +% the true and false clauses. +% \begin{macrocode} +\def\bbl@ifattributeset#1#2#3#4{% +% \end{macrocode} +% First we need to find out if any attributes were set; if not +% we're done. +% \begin{macrocode} + \ifx\bbl@known@attribs\@undefined + \in@false + \else +% \end{macrocode} +% The we need to check the list of known attributes. +% \begin{macrocode} + \edef\bbl@tempa{\noexpand\in@{,#1-#2,}% + {,\bbl@known@attribs,}}% + \bbl@tempa + \fi +% \end{macrocode} +% When we're this far |\ifin@| has a value indicating if the +% attribute in question was set or not. Just to be safe the code to +% be executed is `thrown over the |\fi|'. +% \begin{macrocode} + \ifin@ + \bbl@afterelse#3% + \else + \bbl@afterfi#4% + \fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@add@list} +% This internal macro adds its second argument to a comma +% separated list in its first argument. When the list is not +% defined yet (or empty), it will be initiated +% \begin{macrocode} +\def\bbl@add@list#1#2{% + \ifx#1\@undefined + \def#1{#2}% + \else + \ifx#1\@empty + \def#1{#2}% + \else + \edef#1{#1,#2}% + \fi + \fi + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@ifknown@ttrib} +% An internal macro to check whether a given language/attribute is +% known. The macro takes 4 arguments, the language/attribute, the +% attribute list, the \TeX-code to be executed when the attribute +% is known and the \TeX-code to be executed otherwise. +% \begin{macrocode} +\def\bbl@ifknown@ttrib#1#2{% +% \end{macrocode} +% We first assume the attribute is unknown. +% \begin{macrocode} + \let\bbl@tempa\@secondoftwo +% \end{macrocode} +% Then we loop over the list of known attributes, trying to find a +% match. +% \begin{macrocode} + \@for\bbl@tempb:=#2\do{% + \expandafter\in@\expandafter{\expandafter,\bbl@tempb,}{,#1,}% + \ifin@ +% \end{macrocode} +% When a match is found the definition of |\bbl@tempa| is changed. +% \begin{macrocode} + \let\bbl@tempa\@firstoftwo + \else + \fi}% +% \end{macrocode} +% Finally we execute |\bbl@tempa|. +% \begin{macrocode} + \bbl@tempa +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@clear@ttribs} +% This macro removes all the attribute code from \LaTeX's memory at +% |\begin{document}| time (if any is present). +% \changes{babel~3.7e}{1999/09/24}{When \cs{bbl@attributes} is +% undefined this should be a no-op} +% \begin{macrocode} +\def\bbl@clear@ttribs{% + \ifx\bbl@attributes\@undefined\else + \@for\bbl@tempa:=\bbl@attributes\do{% + \expandafter\bbl@clear@ttrib\bbl@tempa. + }% + \let\bbl@attributes\@undefined + \fi + } +\def\bbl@clear@ttrib#1-#2.{% + \expandafter\let\csname#1@attr@#2\endcsname\@undefined} +\AtBeginDocument{\bbl@clear@ttribs} +% \end{macrocode} +% \end{macro} +% +% \subsection{Support for saving macro definitions} +% +% To save the meaning of control sequences using |\babel@save|, we +% use temporary control sequences. To save hash table entries for +% these control sequences, we don't use the name of the control +% sequence to be saved to construct the temporary name. Instead we +% simply use the value of a counter, which is reset to zero each +% time we begin to save new values. This works well because we +% release the saved meanings before we begin to save a new set of +% control sequence meanings (see |\selectlanguage| and +% |\originalTeX|). +% +% \begin{macro}{\babel@savecnt} +% \changes{babel~3.2}{1991/11/10}{Added macro} +% \begin{macro}{\babel@beginsave} +% \changes{babel~3.2}{1991/11/10}{Added macro} +% The initialization of a new save cycle: reset the counter to +% zero. +% \begin{macrocode} +\def\babel@beginsave{\babel@savecnt\z@} +% \end{macrocode} +% Before it's forgotten, allocate the counter and initialize all. +% \begin{macrocode} +\newcount\babel@savecnt +\babel@beginsave +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\babel@save} +% \changes{babel~3.2}{1991/11/10}{Added macro} +% The macro |\babel@save|\meta{csname} saves the current meaning of +% the control sequence \meta{csname} to +% |\originalTeX|\footnote{\cs{originalTeX} has to be +% expandable, i.\,e.\ you shouldn't let it to \cs{relax}.}. +% To do this, we let the current meaning to a temporary control +% sequence, the restore commands are appended to |\originalTeX| and +% the counter is incremented. +% \changes{babel~3.2c}{1992/03/17}{missing backslash led to errors +% when executing \cs{originalTeX}} +% \changes{babel~3.2d}{1992/07/02}{saving in \cs{babel@i} and +% restoring from \cs{@babel@i} doesn't work very well...} +% \begin{macrocode} +\def\babel@save#1{% + \expandafter\let\csname babel@\number\babel@savecnt\endcsname #1\relax + \begingroup + \toks@\expandafter{\originalTeX \let#1=}% + \edef\x{\endgroup + \def\noexpand\originalTeX{\the\toks@ \expandafter\noexpand + \csname babel@\number\babel@savecnt\endcsname\relax}}% + \x + \advance\babel@savecnt\@ne} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\babel@savevariable} +% \changes{babel~3.2}{1991/11/10}{Added macro} +% The macro |\babel@savevariable|\meta{variable} saves the value of +% the variable. \meta{variable} can be anything allowed after the +% |\the| primitive. +% \begin{macrocode} +\def\babel@savevariable#1{\begingroup + \toks@\expandafter{\originalTeX #1=}% + \edef\x{\endgroup + \def\noexpand\originalTeX{\the\toks@ \the#1\relax}}% + \x} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@frenchspacing} +% \begin{macro}{\bbl@nonfrenchspacing} +% Some languages need to have |\frenchspacing| in effect. Others +% don't want that. The command |\bbl@frenchspacing| switches it on +% when it isn't already in effect and |\bbl@nonfrenchspacing| +% switches it off if necessary. +% \begin{macrocode} +\def\bbl@frenchspacing{% + \ifnum\the\sfcode`\.=\@m + \let\bbl@nonfrenchspacing\relax + \else + \frenchspacing + \let\bbl@nonfrenchspacing\nonfrenchspacing + \fi} +\let\bbl@nonfrenchspacing\nonfrenchspacing +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Support for extending macros} +% +% \begin{macro}{\addto} +% For each language four control sequences have to be defined that +% control the language-specific definitions. To be able to add +% something to these macro once they have been defined the macro +% |\addto| is introduced. It takes two arguments, a \meta{control +% sequence} and \TeX-code to be added to the \meta{control +% sequence}. +% +% If the \meta{control sequence} has not been defined before it is +% defined now. +% \changes{babel~3.1}{1991/11/05}{Added macro} +% \changes{babel~3.4}{1994/02/04}{Changed to use toks register} +% \changes{babel~3.6b}{1996/12/30}{Also check if control sequence +% expands to \cs{relax}} +% \begin{macrocode} +\def\addto#1#2{% + \ifx#1\@undefined + \def#1{#2}% + \else +% \end{macrocode} +% The control sequence could also expand to |\relax|, in which case +% a circular definition results. The net result is a stack overflow. +% \begin{macrocode} + \ifx#1\relax + \def#1{#2}% + \else +% \end{macrocode} +% Otherwise the replacement text for the \meta{control sequence} is +% expanded and stored in a token register, together with the +% \TeX-code to be added. Finally the \meta{control sequence} is +% \emph{re}defined, using the contents of the token register. +% \begin{macrocode} + {\toks@\expandafter{#1#2}% + \xdef#1{\the\toks@}}% + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \subsection{Macros common to a number of languages} +% +% \begin{macro}{\allowhyphens} +% \changes{babel~3.2b}{1992/02/16}{Moved macro from language +% definition files} +% \changes{babel~3.7a}{1998/03/12}{Make \cs{allowhyphens} a no-op for +% T1 fontencoding} +% This macro makes hyphenation possible. Basically its definition +% is nothing more than |\nobreak| |\hskip| \texttt{0pt plus +% 0pt}\footnote{\TeX\ begins and ends a word for hyphenation at a +% glue node. The penalty prevents a linebreak at this glue node.}. +% \begin{macrocode} +\def\bbl@t@one{T1} +\def\allowhyphens{% + \ifx\cf@encoding\bbl@t@one\else\bbl@allowhyphens\fi} +\def\bbl@allowhyphens{\nobreak\hskip\z@skip} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\set@low@box} +% \changes{babel~3.2b}{1992/02/16}{Moved macro from language +% definition files} +% The following macro is used to lower quotes to the same level as +% the comma. It prepares its argument in box register~0. +% \begin{macrocode} +\def\set@low@box#1{\setbox\tw@\hbox{,}\setbox\z@\hbox{#1}% + \dimen\z@\ht\z@ \advance\dimen\z@ -\ht\tw@% + \setbox\z@\hbox{\lower\dimen\z@ \box\z@}\ht\z@\ht\tw@ \dp\z@\dp\tw@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\save@sf@q} +% \changes{babel~3.2b}{1992/02/16}{Moved macro from language +% definition files} +% The macro |\save@sf@q| is used to save and reset the current +% space factor. +% \changes{babel~3.7f}{2000/09/19}{PR3119, don't start a paragraph in +% a local group} +% \begin{macrocode} +\def\save@sf@q #1{\leavevmode + \begingroup + \edef\@SF{\spacefactor \the\spacefactor}#1\@SF + \endgroup +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@disc} +% \changes{babel~3.5f}{1996/01/24}{Macro moved from language +% definition files} +% For some languages the macro |\bbl@disc| is used to ease the +% insertion of discretionaries for letters that behave `abnormally' +% at a breakpoint. +% \begin{macrocode} +\def\bbl@disc#1#2{% + \nobreak\discretionary{#2-}{}{#1}\allowhyphens} +% \end{macrocode} +% \end{macro} +% +% \changes{babel~3.5c}{1995/06/14}{Repaired a typo (itlaic, PR1652)} +% +% \subsection{Making glyphs available} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion, and was last revised on +% \filedate.} makes a number of glyphs available that either do not +% exist in the \texttt{OT1} encoding and have to be `faked', or +% that are not accessible through \file{T1enc.def}. +% +% \subsection{Quotation marks} +% +% \begin{macro}{\quotedblbase} +% In the \texttt{T1} encoding the opening double quote at the +% baseline is available as a separate character, accessible via +% |\quotedblbase|. In the \texttt{OT1} encoding it is not +% available, therefor we make it available by lowering the normal +% open quote character to the baseline. +% \begin{macrocode} +\ProvideTextCommand{\quotedblbase}{OT1}{% + \save@sf@q{\set@low@box{\textquotedblright\/}% + \box\z@\kern-.04em\allowhyphens}} +% \end{macrocode} +% Make sure that when an encoding other than \texttt{OT1} or +% \texttt{T1} is used this glyph can still be typeset. +% \begin{macrocode} +\ProvideTextCommandDefault{\quotedblbase}{% + \UseTextSymbol{OT1}{\quotedblbase}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\quotesinglbase} +% We also need the single quote character at the baseline. +% \begin{macrocode} +\ProvideTextCommand{\quotesinglbase}{OT1}{% + \save@sf@q{\set@low@box{\textquoteright\/}% + \box\z@\kern-.04em\allowhyphens}} +% \end{macrocode} +% Make sure that when an encoding other than \texttt{OT1} or +% \texttt{T1} is used this glyph can still be typeset. +% \begin{macrocode} +\ProvideTextCommandDefault{\quotesinglbase}{% + \UseTextSymbol{OT1}{\quotesinglbase}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\guillemotleft} +% \begin{macro}{\guillemotright} +% The guillemet characters are not available in \texttt{OT1} +% encoding. They are faked. +% \begin{macrocode} +\ProvideTextCommand{\guillemotleft}{OT1}{% + \ifmmode + \ll + \else + \save@sf@q{\nobreak + \raise.2ex\hbox{$\scriptscriptstyle\ll$}\allowhyphens}% + \fi} +\ProvideTextCommand{\guillemotright}{OT1}{% + \ifmmode + \gg + \else + \save@sf@q{\nobreak + \raise.2ex\hbox{$\scriptscriptstyle\gg$}\allowhyphens}% + \fi} +% \end{macrocode} +% Make sure that when an encoding other than \texttt{OT1} or +% \texttt{T1} is used these glyphs can still be typeset. +% \begin{macrocode} +\ProvideTextCommandDefault{\guillemotleft}{% + \UseTextSymbol{OT1}{\guillemotleft}} +\ProvideTextCommandDefault{\guillemotright}{% + \UseTextSymbol{OT1}{\guillemotright}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\guilsinglleft} +% \begin{macro}{\guilsinglright} +% The single guillemets are not available in \texttt{OT1} +% encoding. They are faked. +% \begin{macrocode} +\ProvideTextCommand{\guilsinglleft}{OT1}{% + \ifmmode + <% + \else + \save@sf@q{\nobreak + \raise.2ex\hbox{$\scriptscriptstyle<$}\allowhyphens}% + \fi} +\ProvideTextCommand{\guilsinglright}{OT1}{% + \ifmmode + >% + \else + \save@sf@q{\nobreak + \raise.2ex\hbox{$\scriptscriptstyle>$}\allowhyphens}% + \fi} +% \end{macrocode} +% Make sure that when an encoding other than \texttt{OT1} or +% \texttt{T1} is used these glyphs can still be typeset. +% \begin{macrocode} +\ProvideTextCommandDefault{\guilsinglleft}{% + \UseTextSymbol{OT1}{\guilsinglleft}} +\ProvideTextCommandDefault{\guilsinglright}{% + \UseTextSymbol{OT1}{\guilsinglright}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \subsection{Letters} +% +% \begin{macro}{\ij} +% \begin{macro}{\IJ} +% The dutch language uses the letter `ij'. It is available in +% \texttt{T1} encoded fonts, but not in the \texttt{OT1} encoded +% fonts. Therefor we fake it for the \texttt{OT1} encoding. +% \changes{dutch-3.7a}{1995/02/04}{Changed the kerning in the faked ij +% to match the dc-version of it} +% \begin{macrocode} +\DeclareTextCommand{\ij}{OT1}{% + \allowhyphens i\kern-0.02em j\allowhyphens} +\DeclareTextCommand{\IJ}{OT1}{% + \allowhyphens I\kern-0.02em J\allowhyphens} +\DeclareTextCommand{\ij}{T1}{\char188} +\DeclareTextCommand{\IJ}{T1}{\char156} +% \end{macrocode} +% Make sure that when an encoding other than \texttt{OT1} or +% \texttt{T1} is used these glyphs can still be typeset. +% \begin{macrocode} +\ProvideTextCommandDefault{\ij}{% + \UseTextSymbol{OT1}{\ij}} +\ProvideTextCommandDefault{\IJ}{% + \UseTextSymbol{OT1}{\IJ}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\dj} +% \begin{macro}{\DJ} +% The croatian language needs the letters |\dj| and |\DJ|; they are +% available in the \texttt{T1} encoding, but not in the +% \texttt{OT1} encoding by default. +% +% Some code to construct these glyphs for the \texttt{OT1} encoding +% was made available to me by Stipcevic Mario, +% (\texttt{stipcevic@olimp.irb.hr}). +% \changes{babel~3.5f}{1996/03/28}{New definition of \cs{dj}, see PR +% 2058} +% \begin{macrocode} +\def\crrtic@{\hrule height0.1ex width0.3em} +\def\crttic@{\hrule height0.1ex width0.33em} +% +\def\ddj@{% + \setbox0\hbox{d}\dimen@=\ht0 + \advance\dimen@1ex + \dimen@.45\dimen@ + \dimen@ii\expandafter\rem@pt\the\fontdimen\@ne\font\dimen@ + \advance\dimen@ii.5ex + \leavevmode\rlap{\raise\dimen@\hbox{\kern\dimen@ii\vbox{\crrtic@}}}} +\def\DDJ@{% + \setbox0\hbox{D}\dimen@=.55\ht0 + \dimen@ii\expandafter\rem@pt\the\fontdimen\@ne\font\dimen@ + \advance\dimen@ii.15ex % correction for the dash position + \advance\dimen@ii-.15\fontdimen7\font % correction for cmtt font + \dimen\thr@@\expandafter\rem@pt\the\fontdimen7\font\dimen@ + \leavevmode\rlap{\raise\dimen@\hbox{\kern\dimen@ii\vbox{\crttic@}}}} +% +\DeclareTextCommand{\dj}{OT1}{\ddj@ d} +\DeclareTextCommand{\DJ}{OT1}{\DDJ@ D} +% \end{macrocode} +% Make sure that when an encoding other than \texttt{OT1} or +% \texttt{T1} is used these glyphs can still be typeset. +% \begin{macrocode} +\ProvideTextCommandDefault{\dj}{% + \UseTextSymbol{OT1}{\dj}} +\ProvideTextCommandDefault{\DJ}{% + \UseTextSymbol{OT1}{\DJ}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\SS} +% For the \texttt{T1} encoding |\SS| is defined and selects a +% specific glyph from the font, but for other encodings it is not +% available. Therefor we make it available here. +% \begin{macrocode} +\DeclareTextCommand{\SS}{OT1}{SS} +\ProvideTextCommandDefault{\SS}{\UseTextSymbol{OT1}{\SS}} +% \end{macrocode} +% \end{macro} +% +% \subsection{Shorthands for quotation marks} +% +% Shorthands are provided for a number of different quotation +% marks, which make them usable both outside and inside mathmode. +% +% \begin{macro}{\glq} +% \begin{macro}{\grq} +% \changes{babel~3.7a}{1997/04/25}{Make the definition of \cs{grq} +% dependent on the font encoding} +% \changes{babel~3.8b}{2004/05/02}{Made \cs{glq} fontencoding +% dependent as well} +% The `german' single quotes. +% \begin{macrocode} +\ProvideTextCommand{\glq}{OT1}{% + \textormath{\quotesinglbase}{\mbox{\quotesinglbase}}} +\ProvideTextCommand{\glq}{T1}{% + \textormath{\quotesinglbase}{\mbox{\quotesinglbase}}} +\ProvideTextCommandDefault{\glq}{\UseTextSymbol{OT1}\glq} +% \end{macrocode} +% The definition of |\grq| depends on the fontencoding. With +% \texttt{T1} encoding no extra kerning is needed. +% \begin{macrocode} +\ProvideTextCommand{\grq}{T1}{% + \textormath{\textquoteleft}{\mbox{\textquoteleft}}} +\ProvideTextCommand{\grq}{OT1}{% + \save@sf@q{\kern-.0125em% + \textormath{\textquoteleft}{\mbox{\textquoteleft}}% + \kern.07em\relax}} +\ProvideTextCommandDefault{\grq}{\UseTextSymbol{OT1}\grq} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\glqq} +% \begin{macro}{\grqq} +% \changes{babel~3.7a}{1997/04/25}{Make the definition of \cs{grqq} +% dependent on the font encoding} +% \changes{babel~3.8b}{2004/05/02}{Made \cs{grqq} fontencoding +% dependent as well} +% The `german' double quotes. +% \begin{macrocode} +\ProvideTextCommand{\glqq}{OT1}{% + \textormath{\quotedblbase}{\mbox{\quotedblbase}}} +\ProvideTextCommand{\glqq}{T1}{% + \textormath{\quotedblbase}{\mbox{\quotedblbase}}} +\ProvideTextCommandDefault{\glqq}{\UseTextSymbol{OT1}\glqq} +% \end{macrocode} +% The definition of |\grqq| depends on the fontencoding. With +% \texttt{T1} encoding no extra kerning is needed. +% \begin{macrocode} +\ProvideTextCommand{\grqq}{T1}{% + \textormath{\textquotedblleft}{\mbox{\textquotedblleft}}} +\ProvideTextCommand{\grqq}{OT1}{% + \save@sf@q{\kern-.07em% + \textormath{\textquotedblleft}{\mbox{\textquotedblleft}}% + \kern.07em\relax}} +\ProvideTextCommandDefault{\grqq}{\UseTextSymbol{OT1}\grqq} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\flq} +% \begin{macro}{\frq} +% \changes{babel~3.5f}{1995/08/07}{corrected spelling of +% \cs{quilsingl...}} +% \changes{babel~3.5f}{1995/09/05}{now use \cs{textormath} in these +% definitions} +% \changes{babel~3.8b}{2004/05/02}{Made \cs{flq} and \cs{frq} +% fontencoding dependent} +% The `french' single guillemets. +% \begin{macrocode} +\ProvideTextCommand{\flq}{OT1}{% + \textormath{\guilsinglleft}{\mbox{\guilsinglleft}}} +\ProvideTextCommand{\flq}{T1}{% + \textormath{\guilsinglleft}{\mbox{\guilsinglleft}}} +\ProvideTextCommandDefault{\flq}{\UseTextSymbol{OT1}\flq} +% \end{macrocode} +% +% \begin{macrocode} +\ProvideTextCommand{\frq}{OT1}{% + \textormath{\guilsinglright}{\mbox{\guilsinglright}}} +\ProvideTextCommand{\frq}{T1}{% + \textormath{\guilsinglright}{\mbox{\guilsinglright}}} +\ProvideTextCommandDefault{\frq}{\UseTextSymbol{OT1}\frq} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\flqq} +% \begin{macro}{\frqq} +% \changes{babel~3.5f}{1995/08/07}{corrected spelling of +% \cs{quillemot...}} +% \changes{babel~3.5f}{1995/09/05}{now use \cs{textormath} in these +% definitions} +% \changes{babel~3.8b}{2004/05/02}{Made \cs{flqq} and \cs{frqq} +% fontencoding dependent} +% The `french' double guillemets. +% \begin{macrocode} +\ProvideTextCommand{\flqq}{OT1}{% + \textormath{\guillemotleft}{\mbox{\guillemotleft}}} +\ProvideTextCommand{\flqq}{T1}{% + \textormath{\guillemotleft}{\mbox{\guillemotleft}}} +\ProvideTextCommandDefault{\flqq}{\UseTextSymbol{OT1}\flqq} +% \end{macrocode} +% +% \begin{macrocode} +\ProvideTextCommand{\frqq}{OT1}{% + \textormath{\guillemotright}{\mbox{\guillemotright}}} +\ProvideTextCommand{\frqq}{T1}{% + \textormath{\guillemotright}{\mbox{\guillemotright}}} +\ProvideTextCommandDefault{\frqq}{\UseTextSymbol{OT1}\frqq} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Umlauts and trema's} +% +% The command |\"| needs to have a different effect for different +% languages. For German for instance, the `umlaut' should be +% positioned lower than the default position for placing it over +% the letters a, o, u, A, O and U. When placed over an e, i, E or I +% it can retain its normal position. For Dutch the same glyph is +% always placed in the lower position. +% +% \begin{macro}{\umlauthigh} +% \changes{v3.8a}{2004/02/19}{Use \cs{leavevmode}\cs{bgroup} to +% prevent problems when this command occurs in vertical mode.} +% \begin{macro}{\umlautlow} +% To be able to provide both positions of |\"| we provide two +% commands to switch the positioning, the default will be +% |\umlauthigh| (the normal positioning). +% \begin{macrocode} +\def\umlauthigh{% + \def\bbl@umlauta##1{\leavevmode\bgroup% + \expandafter\accent\csname\f@encoding dqpos\endcsname + ##1\allowhyphens\egroup}% + \let\bbl@umlaute\bbl@umlauta} +\def\umlautlow{% + \def\bbl@umlauta{\protect\lower@umlaut}} +\def\umlautelow{% + \def\bbl@umlaute{\protect\lower@umlaut}} +\umlauthigh +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\lower@umlaut} +% The command |\lower@umlaut| is used to position the |\"| closer +% the the letter. +% +% We want the umlaut character lowered, nearer to the letter. To do +% this we need an extra \meta{dimen} register. +% \begin{macrocode} +\expandafter\ifx\csname U@D\endcsname\relax + \csname newdimen\endcsname\U@D +\fi +% \end{macrocode} +% The following code fools \TeX's \texttt{make\_accent} procedure +% about the current x-height of the font to force another placement +% of the umlaut character. +% \begin{macrocode} +\def\lower@umlaut#1{% +% \end{macrocode} +% First we have to save the current x-height of the font, because +% we'll change this font dimension and this is always done +% globally. +% \changes{v3.8a}{2004/02/19}{Use \cs{leavevmode}\cs{bgroup} to +% prevent problems when this command occurs in vertical mode.} +% \begin{macrocode} + \leavevmode\bgroup + \U@D 1ex% +% \end{macrocode} +% Then we compute the new x-height in such a way that the umlaut +% character is lowered to the base character. The value of +% \texttt{.45ex} depends on the \MF\ parameters with which the +% fonts were built. (Just try out, which value will look best.) +% \begin{macrocode} + {\setbox\z@\hbox{% + \expandafter\char\csname\f@encoding dqpos\endcsname}% + \dimen@ -.45ex\advance\dimen@\ht\z@ +% \end{macrocode} +% If the new x-height is too low, it is not changed. +% \begin{macrocode} + \ifdim 1ex<\dimen@ \fontdimen5\font\dimen@ \fi}% +% \end{macrocode} +% Finally we call the |\accent| primitive, reset the old x-height +% and insert the base character in the argument. +% \changes{babel~3.5f}{1996/04/02}{Added a \cs{allowhyphens}} +% \changes{babel~3.5f}{1996/06/25}{removed \cs{allowhyphens}} +% \begin{macrocode} + \expandafter\accent\csname\f@encoding dqpos\endcsname + \fontdimen5\font\U@D #1% + \egroup} +% \end{macrocode} +% \end{macro} +% +% For all vowels we declare |\"| to be a composite command which +% uses |\bbl@umlauta| or |\bbl@umlaute| to position the umlaut +% character. We need to be sure that these definitions override the +% ones that are provided when the package \pkg{fontenc} with +% option \Lopt{OT1} is used. Therefor these declarations are +% postponed until the beginning of the document. +% \begin{macrocode} +\AtBeginDocument{% + \DeclareTextCompositeCommand{\"}{OT1}{a}{\bbl@umlauta{a}}% + \DeclareTextCompositeCommand{\"}{OT1}{e}{\bbl@umlaute{e}}% + \DeclareTextCompositeCommand{\"}{OT1}{i}{\bbl@umlaute{\i}}% + \DeclareTextCompositeCommand{\"}{OT1}{\i}{\bbl@umlaute{\i}}% + \DeclareTextCompositeCommand{\"}{OT1}{o}{\bbl@umlauta{o}}% + \DeclareTextCompositeCommand{\"}{OT1}{u}{\bbl@umlauta{u}}% + \DeclareTextCompositeCommand{\"}{OT1}{A}{\bbl@umlauta{A}}% + \DeclareTextCompositeCommand{\"}{OT1}{E}{\bbl@umlaute{E}}% + \DeclareTextCompositeCommand{\"}{OT1}{I}{\bbl@umlaute{I}}% + \DeclareTextCompositeCommand{\"}{OT1}{O}{\bbl@umlauta{O}}% + \DeclareTextCompositeCommand{\"}{OT1}{U}{\bbl@umlauta{U}}% +} +% \end{macrocode} +% +% \subsection{The redefinition of the style commands} +% +% The rest of the code in this file can only be processed by +% \LaTeX, so we check the current format. If it is plain \TeX, +% processing should stop here. But, because of the need to limit +% the scope of the definition of |\format|, a macro that is used +% locally in the following |\if|~statement, this comparison is done +% inside a group. To prevent \TeX\ from complaining about an +% unclosed group, the processing of the command |\endinput| is +% deferred until after the group is closed. This is accomplished by +% the command |\aftergroup|. +% \begin{macrocode} +{\def\format{lplain} +\ifx\fmtname\format +\else + \def\format{LaTeX2e} + \ifx\fmtname\format + \else + \aftergroup\endinput + \fi +\fi} +% \end{macrocode} +% +% Now that we're sure that the code is seen by \LaTeX\ only, we +% have to find out what the main (primary) document style is +% because we want to redefine some macros. This is only necessary +% for releases of \LaTeX\ dated before December~1991. Therefor +% this part of the code can optionally be included in +% \file{babel.def} by specifying the \texttt{docstrip} option +% \texttt{names}. +% \begin{macrocode} +%<*names> +% \end{macrocode} +% +% The standard styles can be distinguished by checking whether some +% macros are defined. In table~\ref{styles} an overview is given of +% the macros that can be used for this purpose. +% \begin{table}[htb] +% \begin{center} +% \DeleteShortVerb{\|} +% \begin{tabular}{|lcp{8cm}|} +% \hline +% article & : & both the \verb+\chapter+ and \verb+\opening+ +% macros are undefined\\ +% report and book & : & the \verb+\chapter+ macro is defined and +% the \verb+\opening+ is undefined\\ +% letter & : & the \verb+\chapter+ macro is undefined and +% the \verb+\opening+ is defined\\ +% \hline +% \end{tabular} +% \caption{How to determine the main document style}\label{styles} +% \MakeShortVerb{\|} +% \end{center} +% \end{table} +% +% \noindent The macros that have to be redefined for the +% \texttt{report} and \texttt{book} document styles happen to be +% the same, so there is no need to distinguish between those two +% styles. +% +% \begin{macro}{\doc@style} +% First a parameter |\doc@style| is defined to identify the current +% document style. This parameter might have been defined by a +% document style that already uses macros instead of hard-wired +% texts, such as \file{artikel1.sty}~\cite{BEP}, so the existence of +% |\doc@style| is checked. If this macro is undefined, i.\,e., if +% the document style is unknown and could therefore contain +% hard-wired texts, |\doc@style| is defined to the default +% value~`0'. +% \changes{babel~3.0d}{1991/10/29}{Removed use of \cs{@ifundefined}} +% \begin{macrocode} +\ifx\@undefined\doc@style + \def\doc@style{0}% +% \end{macrocode} +% This parameter is defined in the following \texttt{if} +% construction (see table~\ref{styles}): +% +% \begin{macrocode} + \ifx\@undefined\opening + \ifx\@undefined\chapter + \def\doc@style{1}% + \else + \def\doc@style{2}% + \fi + \else + \def\doc@style{3}% + \fi% +\fi% +% \end{macrocode} +% \end{macro} +% +% \changes{babel~3.1}{1991/11/05}{Removed definition of +% \cs{if@restonecol}} +% +% \subsubsection{Redefinition of macros} +% +% Now here comes the real work: we start to redefine things and +% replace hard-wired texts by macros. These redefinitions should be +% carried out conditionally, in case it has already been done. +% +% For the \texttt{figure} and \texttt{table} environments we have +% in all styles: +% \begin{macrocode} +\@ifundefined{figurename}{\def\fnum@figure{\figurename{} \thefigure}}{} +\@ifundefined{tablename}{\def\fnum@table{\tablename{} \thetable}}{} +% \end{macrocode} +% +% The rest of the macros have to be treated differently for each +% style. When |\doc@style| still has its default value nothing +% needs to be done. +% \begin{macrocode} +\ifcase \doc@style\relax +\or +% \end{macrocode} +% +% This means that \file{babel.def} is read after the +% \texttt{article} style, where no |\chapter| and |\opening| +% commands are defined\footnote{A fact that was pointed out to me +% by Nico Poppelier and was already used in Piet van Oostrum's +% document style option~\texttt{nl}.}. +% +% First we have the |\tableofcontents|, +% |\listoffigures| and |\listoftables|: +% \begin{macrocode} +\@ifundefined{contentsname}% + {\def\tableofcontents{\section*{\contentsname\@mkboth + {\uppercase{\contentsname}}{\uppercase{\contentsname}}}% + \@starttoc{toc}}}{} + +\@ifundefined{listfigurename}% + {\def\listoffigures{\section*{\listfigurename\@mkboth + {\uppercase{\listfigurename}}{\uppercase{\listfigurename}}}% + \@starttoc{lof}}}{} + +\@ifundefined{listtablename}% + {\def\listoftables{\section*{\listtablename\@mkboth + {\uppercase{\listtablename}}{\uppercase{\listtablename}}}% + \@starttoc{lot}}}{} +% \end{macrocode} +% +% Then the |\thebibliography| and |\theindex| environments. +% +% \begin{macrocode} +\@ifundefined{refname}% + {\def\thebibliography#1{\section*{\refname + \@mkboth{\uppercase{\refname}}{\uppercase{\refname}}}% + \list{[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \usecounter{enumi}}% + \def\newblock{\hskip.11em plus.33em minus.07em}% + \sloppy\clubpenalty4000\widowpenalty\clubpenalty + \sfcode`\.=1000\relax}}{} + +\@ifundefined{indexname}% + {\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi + \columnseprule \z@ + \columnsep 35pt\twocolumn[\section*{\indexname}]% + \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}% + \thispagestyle{plain}% + \parskip\z@ plus.3pt\parindent\z@\let\item\@idxitem}}{} +% \end{macrocode} +% +% The |abstract| environment: +% +% \begin{macrocode} +\@ifundefined{abstractname}% + {\def\abstract{\if@twocolumn + \section*{\abstractname}% + \else \small + \begin{center}% + {\bf \abstractname\vspace{-.5em}\vspace{\z@}}% + \end{center}% + \quotation + \fi}}{} +% \end{macrocode} +% +% And last but not least, the macro |\part|: +% +% \begin{macrocode} +\@ifundefined{partname}% +{\def\@part[#1]#2{\ifnum \c@secnumdepth >\m@ne + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart + \hspace{1em}#1}\else + \addcontentsline{toc}{part}{#1}\fi + {\parindent\z@ \raggedright + \ifnum \c@secnumdepth >\m@ne + \Large \bf \partname{} \thepart + \par \nobreak + \fi + \huge \bf + #2\markboth{}{}\par}% + \nobreak + \vskip 3ex\@afterheading}% +}{} +% \end{macrocode} +% +% This is all that needs to be done for the \texttt{article} style. +% +% \begin{macrocode} +\or +% \end{macrocode} +% +% The next case is formed by the two styles \texttt{book} and +% \texttt{report}. Basically we have to do the same as for the +% \texttt{article} style, except now we must also change the +% |\chapter| command. +% +% The tables of contents, figures and tables: +% \begin{macrocode} +\@ifundefined{contentsname}% + {\def\tableofcontents{\@restonecolfalse + \if@twocolumn\@restonecoltrue\onecolumn + \fi\chapter*{\contentsname\@mkboth + {\uppercase{\contentsname}}{\uppercase{\contentsname}}}% + \@starttoc{toc}% + \csname if@restonecol\endcsname\twocolumn + \csname fi\endcsname}}{} + +\@ifundefined{listfigurename}% + {\def\listoffigures{\@restonecolfalse + \if@twocolumn\@restonecoltrue\onecolumn + \fi\chapter*{\listfigurename\@mkboth + {\uppercase{\listfigurename}}{\uppercase{\listfigurename}}}% + \@starttoc{lof}% + \csname if@restonecol\endcsname\twocolumn + \csname fi\endcsname}}{} + +\@ifundefined{listtablename}% + {\def\listoftables{\@restonecolfalse + \if@twocolumn\@restonecoltrue\onecolumn + \fi\chapter*{\listtablename\@mkboth + {\uppercase{\listtablename}}{\uppercase{\listtablename}}}% + \@starttoc{lot}% + \csname if@restonecol\endcsname\twocolumn + \csname fi\endcsname}}{} +% \end{macrocode} +% +% Again, the |bibliography| and |index| environments; notice that +% in this case we use |\bibname| instead of |\refname| as in the +% definitions for the \texttt{article} style. The reason for this +% is that in the \texttt{article} document style the term +% `References' is used in the definition of |\thebibliography|. In +% the \texttt{report} and \texttt{book} document styles the term +% `Bibliography' is used. +% \begin{macrocode} +\@ifundefined{bibname}% + {\def\thebibliography#1{\chapter*{\bibname + \@mkboth{\uppercase{\bibname}}{\uppercase{\bibname}}}% + \list{[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}% + \leftmargin\labelwidth \advance\leftmargin\labelsep + \usecounter{enumi}}% + \def\newblock{\hskip.11em plus.33em minus.07em}% + \sloppy\clubpenalty4000\widowpenalty\clubpenalty + \sfcode`\.=1000\relax}}{} + +\@ifundefined{indexname}% + {\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi + \columnseprule \z@ + \columnsep 35pt\twocolumn[\@makeschapterhead{\indexname}]% + \@mkboth{\uppercase{\indexname}}{\uppercase{\indexname}}% + \thispagestyle{plain}% + \parskip\z@ plus.3pt\parindent\z@ \let\item\@idxitem}}{} +% \end{macrocode} +% +% Here is the |abstract| environment: +% \begin{macrocode} +\@ifundefined{abstractname}% + {\def\abstract{\titlepage + \null\vfil + \begin{center}% + {\bf \abstractname}% + \end{center}}}{} +% \end{macrocode} +% +% And last but not least the |\chapter|, |\appendix| and +% |\part| macros. +% \begin{macrocode} +\@ifundefined{chaptername}{\def\@chapapp{\chaptername}}{} +% +\@ifundefined{appendixname}% + {\def\appendix{\par + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \def\@chapapp{\appendixname}% + \def\thechapter{\Alph{chapter}}}}{} +% +\@ifundefined{partname}% + {\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 + \ifnum \c@secnumdepth >-2\relax + \huge\bf \partname{} \thepart + \par + \vskip 20pt \fi + \Huge \bf + #1\par}\@endpart}}{}% +% \end{macrocode} +% +% \begin{macrocode} +\or +% \end{macrocode} +% +% Now we address the case where \file{babel.def} is read after the +% \texttt{letter} style. The \texttt{letter} document style +% defines the macro |\opening| and some other macros that are +% specific to \texttt{letter}. This means that we have to redefine +% other macros, compared to the previous two cases. +% +% First two macros for the material at the end of a letter, the +% |\cc| and |\encl| macros. +% \begin{macrocode} +\@ifundefined{ccname}% + {\def\cc#1{\par\noindent + \parbox[t]{\textwidth}% + {\@hangfrom{\rm \ccname : }\ignorespaces #1\strut}\par}}{} + +\@ifundefined{enclname}% + {\def\encl#1{\par\noindent + \parbox[t]{\textwidth}% + {\@hangfrom{\rm \enclname : }\ignorespaces #1\strut}\par}}{} +% \end{macrocode} +% +% The last thing we have to do here is to redefine the +% \texttt{headings} pagestyle: +% \changes{babel~3.3}{1993/07/11}{\cs{headpagename} should be +% \cs{pagename}} +% \begin{macrocode} +\@ifundefined{headtoname}% + {\def\ps@headings{% + \def\@oddhead{\sl \headtoname{} \ignorespaces\toname \hfil + \@date \hfil \pagename{} \thepage}% + \def\@oddfoot{}}}{} +% \end{macrocode} +% +% This was the last of the four standard document styles, so if +% |\doc@style| has another value we do nothing and just close the +% \texttt{if} construction. +% \begin{macrocode} +\fi +% \end{macrocode} +% Here ends the code that can be optionally included when a version +% of \LaTeX\ is in use that is dated \emph{before} December~1991. +% \begin{macrocode} +%</names> +%</core> +% \end{macrocode} +% +% \subsection{Cross referencing macros} +% +% The \LaTeX\ book states: +% \begin{quote} +% The \emph{key} argument is any sequence of letters, digits, and +% punctuation symbols; upper- and lowercase letters are regarded as +% different. +% \end{quote} +% When the above quote should still be true when a document is +% typeset in a language that has active characters, special care +% has to be taken of the category codes of these characters when +% they appear in an argument of the cross referencing macros. +% +% When a cross referencing command processes its argument, all +% tokens in this argument should be character tokens with category +% `letter' or `other'. +% +% The only way to accomplish this in most cases is to use the trick +% described in the \TeX book~\cite{DEK} (Appendix~D, page~382). +% The primitive |\meaning| applied to a token expands to the +% current meaning of this token. For example, `|\meaning\A|' with +% |\A| defined as `|\def\A#1{\B}|' expands to the characters +% `|macro:#1->\B|' with all category codes set to `other' or +% `space'. +% +% \begin{macro}{\bbl@redefine} +% \changes{babel~3.5f}{1995/11/15}{Macro added} +% To redefine a command, we save the old meaning of the macro. +% Then we redefine it to call the original macro with the +% `sanitized' argument. The reason why we do it this way is that +% we don't want to redefine the \LaTeX\ macros completely in case +% their definitions change (they have changed in the past). +% +% Because we need to redefine a number of commands we define the +% command |\bbl@redefine| which takes care of this. It creates a +% new control sequence, |\org@...| +% \begin{macrocode} +%<*core|shorthands> +\def\bbl@redefine#1{% + \edef\bbl@tempa{\expandafter\@gobble\string#1}% + \expandafter\let\csname org@\bbl@tempa\endcsname#1 + \expandafter\def\csname\bbl@tempa\endcsname} +% \end{macrocode} +% +% This command should only be used in the preamble of the document. +% \begin{macrocode} +\@onlypreamble\bbl@redefine +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@redefine@long} +% \changes{babel~3.6f}{1997/01/14}{Macro added} +% This version of |\babel@redefine| can be used to redefine |\long| +% commands such as |\ifthenelse|. +% \begin{macrocode} +\def\bbl@redefine@long#1{% + \edef\bbl@tempa{\expandafter\@gobble\string#1}% + \expandafter\let\csname org@\bbl@tempa\endcsname#1 + \expandafter\long\expandafter\def\csname\bbl@tempa\endcsname} +\@onlypreamble\bbl@redefine@long +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@redefinerobust} +% \changes{babel~3.5f}{1995/11/15}{Macro added} +% For commands that are redefined, but which \textit{might} be +% robust we need a slightly more intelligent macro. A robust +% command |foo| is defined to expand to |\protect|\verb*|\foo |. So +% it is necessary to check whether \verb*|\foo | exists. +% \begin{macrocode} +\def\bbl@redefinerobust#1{% + \edef\bbl@tempa{\expandafter\@gobble\string#1}% + \expandafter\ifx\csname \bbl@tempa\space\endcsname\relax + \expandafter\let\csname org@\bbl@tempa\endcsname#1 + \expandafter\edef\csname\bbl@tempa\endcsname{\noexpand\protect + \expandafter\noexpand\csname\bbl@tempa\space\endcsname}% + \else + \expandafter\let\csname org@\bbl@tempa\expandafter\endcsname + \csname\bbl@tempa\space\endcsname + \fi +% \end{macrocode} +% The result of the code above is that the command that is being +% redefined is always robust afterwards. Therefor all we need to do +% now is define \verb*|\foo |. +% \changes{babel~3.5f}{1996/04/09}{Define \cs*{foo } instead of +% \cs{foo}} +% \begin{macrocode} + \expandafter\def\csname\bbl@tempa\space\endcsname} +% \end{macrocode} +% +% This command should only be used in the preamble of the document. +% \begin{macrocode} +\@onlypreamble\bbl@redefinerobust +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newlabel} +% \changes{babel~3.5f}{1995/11/15}{Now use \cs{bbl@redefine}} +% The macro |\label| writes a line with a |\newlabel| command +% into the |.aux| file to define labels. +% \begin{macrocode} +%\bbl@redefine\newlabel#1#2{% +% \@safe@activestrue\org@newlabel{#1}{#2}\@safe@activesfalse} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@newl@bel} +% \changes{babel~3.6i}{1997/03/01}{Now redefine \cs{@newl@bel} instead +% of \cs{@lbibitem} and \cs{newlabel}} +% We need to change the definition of the \LaTeX-internal macro +% |\@newl@bel|. This is needed because we need to make sure that +% shorthand characters expand to their non-active version. +% +%^^A The following lines commented out in preparation for a change +%^^A in the LaTeX definition of \@enwl@bel... JLB 2000/10/01 +%^^A +%^^A To play it safe when redefining a \LaTeX-internal command we +%^^A first check whether its definition didn't change. +%^^A \begin{macrocode} +%^^A\CheckCommand*\@newl@bel[3]{% +%^^A \@ifundefined{#1@#2}% +%^^A \relax +%^^A {\gdef \@multiplelabels {% +%^^A \@latex@warning@no@line{There were multiply-defined labels}}% +%^^A \@latex@warning@no@line{Label `#2' multiply defined}}% +%^^A \global\@namedef{#1@#2}{#3}} +%^^A \end{macrocode} +%^^A Then we give the new definition. +% \begin{macrocode} +\def\@newl@bel#1#2#3{% +% \end{macrocode} +% First we open a new group to keep the changed setting of +% |\protect| local and then we set the |@safe@actives| switch to +% true to make sure that any shorthand that appears in any of the +% arguments immediately expands to its non-active self. +% \changes{babel~3.7a}{1997/12/19}{Call \cs{@safe@activestrue} +% directly} +% \begin{macrocode} + {% + \@safe@activestrue + \@ifundefined{#1@#2}% + \relax + {% + \gdef \@multiplelabels {% + \@latex@warning@no@line{There were multiply-defined labels}}% + \@latex@warning@no@line{Label `#2' multiply defined}% + }% + \global\@namedef{#1@#2}{#3}% + }% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@testdef} +% An internal \LaTeX\ macro used to test if the labels that have +% been written on the |.aux| file have changed. It is called by +% the |\enddocument| macro. This macro needs to be completely +% rewritten, using |\meaning|. The reason for this is that in some +% cases the expansion of |\#1@#2| contains the same characters as +% the |#3|; but the character codes differ. Therefor \LaTeX\ keeps +% reporting that the labels may have changed. +% \changes{babel~3.4g}{1994/08/30}{Moved the \cs{def} inside the +% macrocode environment} +% \changes{babel~3.5f}{1995/11/15}{Now use \cs{bbl@redefine}} +% \changes{babel~3.5f}{1996/01/09}{Complete rewrite of this macro as +% the same character ended up with different category codes in the +% labels that are being compared. Now use \cs{meaning}} +% \changes{babel~3.5f}{1996/01/16}{Use \cs{strip@prefix} only on +% \cs{bbl@tempa} when it is not \cs{relax}} +% \changes{babel~3.6i}{1997/02/28}{Make sure that shorthands don't get +% expanded at the wrong moment.} +% \changes{babel~3.6i}{1997/03/01}{\cs{@safe@activesfalse} is now +% part of the label definition} +% \changes{babel~3.7a}{1998/03/13}{Removed \cs{@safe@activesfalse} +% from the label definition} +% \begin{macrocode} +\CheckCommand*\@testdef[3]{% + \def\reserved@a{#3}% + \expandafter \ifx \csname #1@#2\endcsname \reserved@a + \else + \@tempswatrue + \fi} +% \end{macrocode} +% Now that we made sure that |\@testdef| still has the same +% definition we can rewrite it. First we make the shorthands +% `safe'. +% \begin{macrocode} +\def\@testdef #1#2#3{% + \@safe@activestrue +% \end{macrocode} +% Then we use |\bbl@tempa| as an `alias' for the macro that +% contains the label which is being checked. +% \begin{macrocode} + \expandafter\let\expandafter\bbl@tempa\csname #1@#2\endcsname +% \end{macrocode} +% Then we define |\bbl@tempb| just as |\@newl@bel| does it. +% \begin{macrocode} + \def\bbl@tempb{#3}% + \@safe@activesfalse +% \end{macrocode} +% When the label is defined we replace the definition of +% |\bbl@tempa| by its meaning. +% \begin{macrocode} + \ifx\bbl@tempa\relax + \else + \edef\bbl@tempa{\expandafter\strip@prefix\meaning\bbl@tempa}% + \fi +% \end{macrocode} +% We do the same for |\bbl@tempb|. +% \begin{macrocode} + \edef\bbl@tempb{\expandafter\strip@prefix\meaning\bbl@tempb}% +% \end{macrocode} +% If the label didn't change, |\bbl@tempa| and |\bbl@tempb| should +% be identical macros. +% \begin{macrocode} + \ifx \bbl@tempa \bbl@tempb + \else + \@tempswatrue + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ref} +% \begin{macro}{\pageref} +% The same holds for the macro |\ref| that references a label +% and |\pageref| to reference a page. So we redefine |\ref| and +% |\pageref|. While we change these macros, we make them robust as +% well (if they weren't already) to prevent problems if they should +% become expanded at the wrong moment. +% \changes{babel~3.5b}{1995/03/07}{Made \cs{ref} and \cs{pageref} +% robust (PR1353)} +% \changes{babel~3.5d}{1995/07/04}{use a different control sequence +% while making \cs{ref} and \cs{pageref} robust} +% \changes{babel~3.5f}{1995/11/06}{redefine \cs*{ref } if it exists +% instead of \cs{ref}} +% \changes{babel~3.5f}{1995/11/15}{Now use \cs{bbl@redefinerobust}} +% \changes{babel~3.5f}{1996/01/19}{redefine \cs{\@setref} instead of +% \cs{ref} and \cs{pageref} in \LaTeXe.} +% \changes{babel~3.5f}{1996/01/21}{Reverse the previous change as it +% inhibits the use of active characters in labels} +% \begin{macrocode} +\bbl@redefinerobust\ref#1{% + \@safe@activestrue\org@ref{#1}\@safe@activesfalse} +\bbl@redefinerobust\pageref#1{% + \@safe@activestrue\org@pageref{#1}\@safe@activesfalse} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@citex} +% \changes{babel~3.5f}{1995/11/15}{Now use \cs{bbl@redefine}} +% The macro used to cite from a bibliography, |\cite|, uses an +% internal macro, |\@citex|. +% It is this internal macro that picks up the argument(s), +% so we redefine this internal macro and leave |\cite| alone. The +% first argument is used for typesetting, so the shorthands need +% only be deactivated in the second argument. +% \changes{babel~3.7g}{2000/10/01}{The shorthands need to be +% deactivated for the second argument of \cs{@citex} only.} +% \begin{macrocode} +\bbl@redefine\@citex[#1]#2{% + \@safe@activestrue\edef\@tempa{#2}\@safe@activesfalse + \org@@citex[#1]{\@tempa}} +% \end{macrocode} +% Unfortunately, the packages \pkg{natbib} and \pkg{cite} need a +% different definition of |\@citex|... +% To begin with, \pkg{natbib} has a definition for |\@citex| with +% \emph{three} arguments... We only know that a package is loaded +% when |\begin{document}| is executed, so we need to postpone the +% different redefinition. +% \begin{macrocode} +\AtBeginDocument{% + \@ifpackageloaded{natbib}{% +% \end{macrocode} +% Notice that we use |\def| here instead of |\bbl@redefine| because +% |\org@@citex| is already defined and we don't want to overwrite +% that definition (it would result in parameter stack overflow +% because of a circular definition). +% \begin{macrocode} + \def\@citex[#1][#2]#3{% + \@safe@activestrue\edef\@tempa{#3}\@safe@activesfalse + \org@@citex[#1][#2]{\@tempa}}% + }{}} +% \end{macrocode} +% The package \pkg{cite} has a definition of |\@citex| where the +% shorthands need to be turned off in both arguments. +% \begin{macrocode} +\AtBeginDocument{% + \@ifpackageloaded{cite}{% + \def\@citex[#1]#2{% + \@safe@activestrue\org@@citex[#1]{#2}\@safe@activesfalse}% + }{}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\nocite} +% \changes{babel~3.5f}{1995/11/15}{Now use \cs{bbl@redefine}} +% The macro |\nocite| which is used to instruct BiB\TeX\ to +% extract uncited references from the database. +% \begin{macrocode} +\bbl@redefine\nocite#1{% + \@safe@activestrue\org@nocite{#1}\@safe@activesfalse} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bibcite} +% \changes{babel~3.5f}{1995/11/15}{Now use \cs{bbl@redefine}} +% The macro that is used in the |.aux| file to define citation +% labels. When packages such as \pkg{natbib} or \pkg{cite} are not +% loaded its second argument is used to typeset the citation +% label. In that case, this second argument can contain active +% characters but is used in an environment where +% |\@safe@activestrue| is in effect. This switch needs to be reset +% inside the |\hbox| which contains the citation label. In order to +% determine during \file{.aux} file processing which definition of +% |\bibcite| is needed we define |\bibcite| in such a way that it +% redefines itself with the proper definition. +% \changes{babel~3.6s}{1999/04/13}{Need to determine `online' which +% definition of \cs{bibcite} is needed} +% \changes{babel~3.6v}{1999/04/21}{Also check for \pkg{cite} it can't +% handle \cs{@safe@activesfalse} in its second argument} +% \begin{macrocode} +\bbl@redefine\bibcite{% +% \end{macrocode} +% We call |\bbl@cite@choice| to select the proper definition for +% |\bibcite|. This new definition is then activated. +% \begin{macrocode} + \bbl@cite@choice + \bibcite} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@bibcite} +% \changes{babel~3.6v}{1999/04/21}{Macro \cs{bbl@bibcite} added} +% The macro |\bbl@bibcite| holds the definition of |\bibcite| +% needed when neither \pkg{natbib} nor \pkg{cite} is loaded. +% \begin{macrocode} +\def\bbl@bibcite#1#2{% + \org@bibcite{#1}{\@safe@activesfalse#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bbl@cite@choice} +% \changes{babel~3.6v}{1999/04/21}{Macro \cs{bbl@cite@choice} added} +% The macro |\bbl@cite@choice| determines which definition of +% |\bibcite| is needed. +% \begin{macrocode} +\def\bbl@cite@choice{% +% \end{macrocode} +% First we give |\bibcite| its default definition. +% \begin{macrocode} + \global\let\bibcite\bbl@bibcite +% \end{macrocode} +% Then, when \pkg{natbib} is loaded we restore the original +% definition of |\bibcite| . +% \begin{macrocode} + \@ifpackageloaded{natbib}{\global\let\bibcite\org@bibcite}{}% +% \end{macrocode} +% For \pkg{cite} we do the same. +% \begin{macrocode} + \@ifpackageloaded{cite}{\global\let\bibcite\org@bibcite}{}% +% \end{macrocode} +% Make sure this only happens once. +% \begin{macrocode} + \global\let\bbl@cite@choice\relax + } +% \end{macrocode} +% +% When a document is run for the first time, no \file{.aux} file is +% available, and |\bibcite| will not yet be properly defined. In +% this case, this has to happen before the document starts. +% \begin{macrocode} +\AtBeginDocument{\bbl@cite@choice} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@bibitem} +% \changes{babel~3.5f}{1995/11/15}{Now use \cs{bbl@redefine}} +% One of the two internal \LaTeX\ macros called by |\bibitem| +% that write the citation label on the |.aux| file. +% \begin{macrocode} +\bbl@redefine\@bibitem#1{% + \@safe@activestrue\org@@bibitem{#1}\@safe@activesfalse} +% \end{macrocode} +% \end{macro} +% +% \subsection{marks} +% +% \begin{macro}{\markright} +% \begin{macro}{\markboth} +% \changes{babel~3.6i}{1997/03/15}{Added redefinition of \cs{mark...} +% commands} +% Because the output routine is asynchronous, we must +% pass the current language attribute to the head lines, together +% with the text that is put into them. To achieve this we need to +% adapt the definition of |\markright| and |\markboth| somewhat. +% \changes{babel~3.7c}{1999/04/08}{Removed the use of \cs{head@lang} +% (PR 2990)} +% \changes{babel~3.7c}{1999/04/09}{Avoid expanding the arguments by +% storing them in token registers} +% \changes{babel~3.7m}{2003/11/15}{added \cs{bbl@restore@actives} to +% the mark} +% \changes{babel~3.8c}{2004/05/26}{No need to add \emph{anything} to +% an empty mark; prevented this by checking the contents of the +% argument} +% \changes{babel~3.8f}{2005/05/15}{Make the definition independent of +% the original definition; expand \cs{languagename} before passing +% it into the token registers} +% \begin{macrocode} +\bbl@redefine\markright#1{% +% \end{macrocode} +% First of all we temporarily store the language switching command, +% using an expanded definition in order to get the current value of +% |\languagename|. +% \begin{macrocode} + \edef\bbl@tempb{\noexpand\protect + \noexpand\foreignlanguage{\languagename}}% +% \end{macrocode} +% Then, we check whether the argument is empty; if it is, we +% just make sure the scratch token register is empty. +% \begin{macrocode} + \def\bbl@arg{#1}% + \ifx\bbl@arg\@empty + \toks@{}% + \else +% \end{macrocode} +% Next, we store the argument to |\markright| in the scratch token +% register, together with the expansion of |\bbl@tempb| (containing +% the language switching command) as defined before. This way +% these commands will not be expanded by using |\edef| later +% on, and we make sure that the text is typeset using the +% correct language settings. While doing so, we make sure that +% active characters that may end up in the mark are not disabled by +% the output routine kicking in while \cs{@safe@activestrue} is in +% effect. +% \begin{macrocode} + \expandafter\toks@\expandafter{% + \bbl@tempb{\protect\bbl@restore@actives#1}}% + \fi +% \end{macrocode} +% Then we define a temporary control sequence using |\edef|. +% \begin{macrocode} + \edef\bbl@tempa{% +% \end{macrocode} +% When |\bbl@tempa| is executed, only |\languagename| will be +% expanded, because of the way the token register was filled. +% \begin{macrocode} + \noexpand\org@markright{\the\toks@}}% + \bbl@tempa +} +% \end{macrocode} +% The definition of |\markboth| is equivalent to that of +% |\markright|, except that we need two token registers. +% \changes{babel~3.7m}{2003/11/15}{added \cs{bbl@restore@actives} to +% the mark} +% \changes{babel~3.8c}{2004/05/26}{No need to add \emph{anything} to +% an empty mark, prevented this by checking the contents of the +% arguments} +% \changes{babel~3.8f}{2005/05/15}{Make the definition independent of +% the original definition; expand \cs{languagename} before passing +% it into the token registers} +% \begin{macrocode} +\bbl@redefine\markboth#1#2{% + \edef\bbl@tempb{\noexpand\protect + \noexpand\foreignlanguage{\languagename}}% + \def\bbl@arg{#1}% + \ifx\bbl@arg\@empty + \toks@{}% + \else + \expandafter\toks@\expandafter{% + \bbl@tempb{\protect\bbl@restore@actives#1}}% + \fi + \def\bbl@arg{#2}% + \ifx\bbl@arg\@empty + \toks8{}% + \else + \expandafter\toks8\expandafter{% + \bbl@tempb{\protect\bbl@restore@actives#2}}% + \fi + \edef\bbl@tempa{% + \noexpand\org@markboth{\the\toks@}{\the\toks8}}% + \bbl@tempa +} +%</core|shorthands> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Encoding issues (part 2)} +% +% \changes{babel~3.7c}{1999/04/16}{Removed redefinition of \cs{@roman} +% and \cs{@Roman}} +% +% \begin{macro}{\TeX} +% \begin{macro}{\LaTeX} +% \changes{babel~3.7a}{1998/03/12}{Make \TeX\ and \LaTeX\ logos +% encoding-independent} +% Because documents may use font encodings other than one of the +% latin encodings, we make sure that the logos of \TeX\ and +% \LaTeX\ always come out in the right encoding. +% \begin{macrocode} +%<*core> +\bbl@redefine\TeX{\textlatin{\org@TeX}} +\bbl@redefine\LaTeX{\textlatin{\org@LaTeX}} +%</core> +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Preventing clashes with other packages} +% +% \subsubsection{\pkg{ifthen}} +% +% \begin{macro}{\ifthenelse} +% \changes{babel~3.5g}{1996/08/11}{Redefinition of \cs{ifthenelse} +% added to circumvent problems with \cs{pageref} in the argument of +% \cs{isodd}} +% Sometimes a document writer wants to create a special effect +% depending on the page a certain fragment of text appears on. This +% can be achieved by the following piece of code: +% \begin{verbatim} +% \ifthenelse{\isodd{\pageref{some:label}}} +% {code for odd pages} +% {code for even pages} +% \end{verbatim} +% In order for this to work the argument of |\isodd| needs to be +% fully expandable. With the above redefinition of |\pageref| it is +% not in the case of this example. To overcome that, we add some +% code to the definition of |\ifthenelse| to make things work. +% +% The first thing we need to do is check if the package +% \pkg{ifthen} is loaded. This should be done at |\begin{document}| +% time. +% \begin{macrocode} +%<*package> +\AtBeginDocument{% + \@ifpackageloaded{ifthen}{% +% \end{macrocode} +% Then we can redefine |\ifthenelse|: +% \changes{babel~3.6f}{1997/01/14}{\cs{ifthenelse} needs to be long} +% \begin{macrocode} + \bbl@redefine@long\ifthenelse#1#2#3{% +% \end{macrocode} +% We want to revert the definition of |\pageref| to its original +% definition for the duration of |\ifthenelse|, so we first need to +% store its current meaning. +% \begin{macrocode} + \let\bbl@tempa\pageref + \let\pageref\org@pageref +% \end{macrocode} +% Then we can set the |\@safe@actives| switch and call the original +% |\ifthenelse|. In order to be able to use shorthands in the +% second and third arguments of |\ifthenelse| the resetting of the +% switch \emph{and} the definition of |\pageref| happens inside +% those arguments. +% \changes{babel~3.6i}{1997/02/25}{Now reset the @safe@actives switch +% inside the 2nd and 3rd arguments of \cs{ifthenelse}} +% \changes{babel~3.7f}{2000/06/29}{\cs{pageref} needs to have its +% babel definition reinstated in the second and third arguments} +% \begin{macrocode} + \@safe@activestrue + \org@ifthenelse{#1}{% + \let\pageref\bbl@tempa + \@safe@activesfalse + #2}{% + \let\pageref\bbl@tempa + \@safe@activesfalse + #3}% + }% +% \end{macrocode} +% When the package wasn't loaded we do nothing. +% \begin{macrocode} + }{}% + } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\pkg{varioref}} +% +% \begin{macro}{\@@vpageref} +% \changes{babel~3.6a}{1996/10/29}{Redefinition of \cs{@@vpageref} +% added to circumvent problems with active \texttt{:} in the +% argument of \cs{vref} when \pkg{varioref} is used} +% \begin{macro}{\vrefpagenum} +% \changes{babel~3.7o}{2003/11/18}{Added redefinition of +% \cs{vrefpagenum} which deals with ranges of pages} +% \begin{macro}{\Ref} +% \changes{babel~3.8g}{2005/05/21}{We also need to adapt \cs{Ref} +% which needs to be able to uppercase the first letter of the +% expansion of \cs{ref}} +% When the package varioref is in use we need to modify its +% internal command |\@@vpageref| in order to prevent problems when +% an active character ends up in the argument of |\vref|. +% \begin{macrocode} +\AtBeginDocument{% + \@ifpackageloaded{varioref}{% + \bbl@redefine\@@vpageref#1[#2]#3{% + \@safe@activestrue + \org@@@vpageref{#1}[#2]{#3}% + \@safe@activesfalse}% +% \end{macrocode} +% The same needs to happen for |\vrefpagenum|. +% \begin{macrocode} + \bbl@redefine\vrefpagenum#1#2{% + \@safe@activestrue + \org@vrefpagenum{#1}{#2}% + \@safe@activesfalse}% +% \end{macrocode} +% The package \pkg{varioref} defines |\Ref| to be a robust command +% wich uppercases the first character of the reference text. In +% order to be able to do that it needs to access the exandable form +% of |\ref|. So we employ a little trick here. We redefine the +% (internal) command \verb*|\Ref | to call |\org@ref| instead of +% |\ref|. The disadvantgage of this solution is that whenever the +% derfinition of |\Ref| changes, this definition needs to be updated +% as well. +% \begin{macrocode} + \expandafter\def\csname Ref \endcsname#1{% + \protected@edef\@tempa{\org@ref{#1}}\expandafter\MakeUppercase\@tempa} + }{}% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{\pkg{hhline}} +% +% \begin{macro}{\hhline} +% Delaying the activation of the shorthand characters has introduced +% a problem with the \pkg{hhline} package. The reason is that it +% uses the `:' character which is made active by the french support +% in \babel. Therefor we need to \emph{reload} the package when +% the `:' is an active character. +% +% So at |\begin{document}| we check whether \pkg{hhline} is loaded. +% \begin{macrocode} +\AtBeginDocument{% + \@ifpackageloaded{hhline}% +% \end{macrocode} +% Then we check whether the expansion of |\normal@char:| is not +% equal to |\relax|. +% \changes{babel~3.8b}{2004/04/19}{added \cs{string} to prevent +% unwanted expansion of the colon} +% \begin{macrocode} + {\expandafter\ifx\csname normal@char\string:\endcsname\relax + \else +% \end{macrocode} +% In that case we simply reload the package. Note that this happens +% \emph{after} the category code of the @-sign has been changed to +% other, so we need to temporarily change it to letter again. +% \begin{macrocode} + \makeatletter + \def\@currname{hhline}\input{hhline.sty}\makeatother + \fi}% + {}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{General} +% +% \begin{macro}{\FOREIGNLANGUAGE} +% The package \pkg{fancyhdr} treats the running head and fout lines +% somewhat differently as the standard classes. A symptom of this is +% that the command |\foreignlanguage| which \babel\ adds to the +% marks can end up inside the argument of |\MakeUppercase|. To +% prevent unexpected results we need to define |\FOREIGNLANGUAGE| +% here. +% \changes{babel~3.7j}{2003/05/23}{Define \cs{FOREIGNLANGUAGE} +% unconditionally} +% \begin{macrocode} +\DeclareRobustCommand{\FOREIGNLANGUAGE}[1]{% + \lowercase{\foreignlanguage{#1}}} +%</package> +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\nfss@catcodes} +% \changes{babel~3.5g}{1996/08/18}{Need to add the double quote and +% acute characters to \cs{nfss@catcodes} to prevent problems when +% reading in .fd files} +% \LaTeX's font selection scheme sometimes wants to read font +% definition files in the middle of processing the document. In +% order to guard against any characters having the wrong +% |\catcode|s it always calls |\nfss@catcodes| before loading a +% file. Unfortunately, the characters |"| and |'| are not dealt +% with. Therefor we have to add them until \LaTeX\ does that +% herself. +% \begin{macrocode} +%<*core|shorthands> +\ifx\nfss@catcodes\@undefined +\else + \addto\nfss@catcodes{% + \@makeother\'% + \@makeother\"% + } +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%</core|shorthands> +% \end{macrocode} +% +% \section{Local Language Configuration} +% +% \begin{macro}{\loadlocalcfg} +% At some sites it may be necessary to add site-specific actions to +% a language definition file. This can be done by creating a file +% with the same name as the language definition file, but with the +% extension \file{.cfg}. For instance the file \file{norsk.cfg} +% will be loaded when the language definition file \file{norsk.ldf} +% is loaded. +% +% \changes{babel~3.5d}{1995/06/22}{Added macro} +% \begin{macrocode} +%<*core> +% \end{macrocode} +% For plain-based formats we don't want to override the definition +% of |\loadlocalcfg| from \file{plain.def}. +% \begin{macrocode} +\ifx\loadlocalcfg\@undefined + \def\loadlocalcfg#1{% + \InputIfFileExists{#1.cfg} + {\typeout{*************************************^^J% + * Local config file #1.cfg used^^J% + *}% + } + {}} +\fi +% \end{macrocode} +% Just to be compatible with \LaTeX$\:$2.09 we add a few more lines +% of code: +% \begin{macrocode} +\ifx\@unexpandable@protect\@undefined + \def\@unexpandable@protect{\noexpand\protect\noexpand} + \long\def \protected@write#1#2#3{% + \begingroup + \let\thepage\relax + #2% + \let\protect\@unexpandable@protect + \edef\reserved@a{\write#1{#3}}% + \reserved@a + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi + } +\fi +%</core> +% \end{macrocode} +% \end{macro} +% +% +% \clearpage +% \section{Driver files for the documented source code} +% +% Since \babel\ version 3.4 all source files that are part of the +% \babel\ system can be typeset separately. But to typeset +% them all in one document, the file \file{babel.drv} can be used. +% If you only want the information on how to use the \babel\ system +% and what goodies are provided by the language-specific files, you +% can run the file \file{user.drv} through \LaTeX\ to get a user +% guide. +% +% \changes{babel~3.4b}{1994/05/18}{Use the ltxdoc class instead of +% article} +% \changes{babel~3.7a}{1997/05/21}{Now need packages t1enc and +% supertabular to be loaded; the documentation for icelandic needs +% its \file{.ldf} file to be present} +% \changes{babel~3.8a}{2004/02/20}{Also load package url} +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\usepackage{url,t1enc,supertabular} +\usepackage[icelandic,english]{babel} +\DoNotIndex{\!,\',\,,\.,\-,\:,\;,\?,\/,\^,\`,\@M} +\DoNotIndex{\@,\@ne,\@m,\@afterheading,\@date,\@endpart} +\DoNotIndex{\@hangfrom,\@idxitem,\@makeschapterhead,\@mkboth} +\DoNotIndex{\@oddfoot,\@oddhead,\@restonecolfalse,\@restonecoltrue} +\DoNotIndex{\@starttoc,\@unused} +\DoNotIndex{\accent,\active} +\DoNotIndex{\addcontentsline,\advance,\Alph,\arabic} +\DoNotIndex{\baselineskip,\begin,\begingroup,\bf,\box,\c@secnumdepth} +\DoNotIndex{\catcode,\centering,\char,\chardef,\clubpenalty} +\DoNotIndex{\columnsep,\columnseprule,\crcr,\csname} +\DoNotIndex{\day,\def,\dimen,\discretionary,\divide,\dp,\do} +\DoNotIndex{\edef,\else,\@empty,\end,\endgroup,\endcsname,\endinput} +\DoNotIndex{\errhelp,\errmessage,\expandafter,\fi,\filedate} +\DoNotIndex{\fileversion,\fmtname,\fnum@figure,\fnum@table,\fontdimen} +\DoNotIndex{\gdef,\global} +\DoNotIndex{\hbox,\hidewidth,\hfil,\hskip,\hspace,\ht,\Huge,\huge} +\DoNotIndex{\ialign,\if@twocolumn,\ifcase,\ifcat,\ifhmode,\ifmmode} +\DoNotIndex{\ifnum,\ifx,\immediate,\ignorespaces,\input,\item} +\DoNotIndex{\kern} +\DoNotIndex{\labelsep,\Large,\large,\labelwidth,\lccode,\leftmargin} +\DoNotIndex{\lineskip,\leavevmode,\let,\list,\ll,\long,\lower} +\DoNotIndex{\m@ne,\mathchar,\mathaccent,\markboth,\month,\multiply} +\DoNotIndex{\newblock,\newbox,\newcount,\newdimen,\newif,\newwrite} +\DoNotIndex{\nobreak,\noexpand,\noindent,\null,\number} +\DoNotIndex{\onecolumn,\or} +\DoNotIndex{\p@,par, \parbox,\parindent,\parskip,\penalty} +\DoNotIndex{\protect,\ps@headings} +\DoNotIndex{\quotation} +\DoNotIndex{\raggedright,\raise,\refstepcounter,\relax,\rm,\setbox} +\DoNotIndex{\section,\setcounter,\settowidth,\scriptscriptstyle} +\DoNotIndex{\sfcode,\sl,\sloppy,\small,\space,\spacefactor,\strut} +\DoNotIndex{\string} +\DoNotIndex{\textwidth,\the,\thechapter,\thefigure,\thepage,\thepart} +\DoNotIndex{\thetable,\thispagestyle,\titlepage,\tracingmacros} +\DoNotIndex{\tw@,\twocolumn,\typeout,\uppercase,\usecounter} +\DoNotIndex{\vbox,\vfil,\vskip,\vspace,\vss} +\DoNotIndex{\widowpenalty,\write,\xdef,\year,\z@,\z@skip} +% \end{macrocode} +% +% Here |\dlqq| is defined so that an example of |"'| can be +% given. +% \begin{macrocode} +\makeatletter +\gdef\dlqq{{\setbox\tw@=\hbox{,}\setbox\z@=\hbox{''}% + \dimen\z@=\ht\z@ \advance\dimen\z@-\ht\tw@ + \setbox\z@=\hbox{\lower\dimen\z@\box\z@}\ht\z@=\ht\tw@ + \dp\z@=\dp\tw@ \box\z@\kern-.04em}} +% \end{macrocode} +% +% The code lines are numbered within sections, +% \begin{macrocode} +%<*!user> +\@addtoreset{CodelineNo}{section} +\renewcommand\theCodelineNo{% + \reset@font\scriptsize\thesection.\arabic{CodelineNo}} +% \end{macrocode} +% which should also be visible in the index; hence this +% redefinition of a macro from \file{doc.sty}. +% \begin{macrocode} +\renewcommand\codeline@wrindex[1]{\if@filesw + \immediate\write\@indexfile + {\string\indexentry{#1}% + {\number\c@section.\number\c@CodelineNo}}\fi} +% \end{macrocode} +% +% The glossary environment is used or the change log, but its +% definition needs changing for this document. +% \begin{macrocode} +\renewenvironment{theglossary}{% + \glossary@prologue% + \GlossaryParms \let\item\@idxitem \ignorespaces}% + {} +%</!user> +\makeatother +% \end{macrocode} +% +% A few shorthands used in the documentation +% \changes{babel~3.5g}{1996/07/06}{Added definition of \cs{Babel}} +% \begin{macrocode} +\font\manual=logo10 % font used for the METAFONT logo, etc. +\newcommand*\MF{{\manual META}\-{\manual FONT}} +\newcommand*\TeXhax{\TeX hax} +\newcommand*\babel{\textsf{babel}} +\newcommand*\Babel{\textsf{Babel}} +\newcommand*\m[1]{\mbox{$\langle$\it#1\/$\rangle$}} +\newcommand*\langvar{\m{lang}} +% \end{macrocode} +% +% Some more definitions needed in the documentation. +% \begin{macrocode} +%\newcommand*\note[1]{\textbf{#1}} +\newcommand*\note[1]{} +\newcommand*\bsl{\protect\bslash} +\newcommand*\Lopt[1]{\textsf{#1}} +\newcommand*\Lenv[1]{\textsf{#1}} +\newcommand*\file[1]{\texttt{#1}} +\newcommand*\cls[1]{\texttt{#1}} +\newcommand*\pkg[1]{\texttt{#1}} +\newcommand*\langdeffile[1]{% +%<-user> \clearpage + \DocInput{#1}} +% \end{macrocode} +% +% When a full index should be generated uncomment the line with +% |\EnableCrossrefs|. Beware, processing may take some time. +% Use |\DisableCrossrefs| when the index is ready. +% \begin{macrocode} +% \EnableCrossrefs +\DisableCrossrefs +% \end{macrocode} +% +% Inlude the change log. +% \begin{macrocode} +%<-user>\RecordChanges +% \end{macrocode} +% The index should use the linenumbers of the code. +% \begin{macrocode} +%<-user>\CodelineIndex +% \end{macrocode} +% +% Set everything in |\MacroFont| instead of |\AltMacroFont| +% \begin{macrocode} +\setcounter{StandardModuleDepth}{1} +% \end{macrocode} +% +% For the user guide we only want the description parts of all the +% files. +% \begin{macrocode} +%<+user>\OnlyDescription +% \end{macrocode} +% Here starts the document +% \begin{macrocode} +\begin{document} +\DocInput{babel.dtx} +% \end{macrocode} +% +% All the language definition files. +% \changes{babel~3.2e}{1992/07/07}{Added slovak} +% \changes{babel~3.3}{1993/07/11}{Added catalan and galician} +% \changes{babel~3.3}{1993/07/11}{Added turkish} +% \changes{babel~3.4}{1994/02/28}{Added bahasa} +% \changes{babel~3.5a}{1995/02/16}{Added breton, irish, scottish} +% \changes{babel~3.5b}{1995/05/19}{Added lsorbian, usorbian} +% \changes{babel~3.5c}{1995/06/14}{Changed the order of including the +% language files somewhat (PR1652)} +% \changes{babel~3.5g}{1996/07/06}{Added greek} +% \changes{babel~3.6a}{1996/12/14}{Added welsh} +%^^A \changes{babel~3.6i}{1997/02/07}{Added sanskrit} +% \changes{babel~3.6i}{1997/02/22}{Added basque} +^^A% \changes{babel~3.6i}{1997/02/22}{Added kannada} +% \changes{babel~3.7a}{1997/05/21}{Added icelandic} +% \changes{babel~3.7b}{1998/06/25}{Added Latin} +% \changes{babel~3.7c}{1999/03/09}{Added ukrainian} +% \changes{babel~3.7c}{1999/05/09}{Added hebrew and serbian} +% \changes{babel~3.7e}{1999/11/22}{Added missing hebrew files} +% \changes{babel~3.7f}{2000/09/21}{Added bulgarian} +% \changes{babel~3.7f}{2000/09/26}{Added samin} +% \changes{babel~3.8a}{2004/02/20}{Added interlingua} +% \begin{macrocode} +%<+user>\clearpage +\langdeffile{esperanto.dtx} +\langdeffile{interlingua.dtx} +% +\langdeffile{dutch.dtx} +\langdeffile{english.dtx} +\langdeffile{germanb.dtx} +\langdeffile{ngermanb.dtx} +% +\langdeffile{breton.dtx} +\langdeffile{welsh.dtx} +\langdeffile{irish.dtx} +\langdeffile{scottish.dtx} +% +\langdeffile{greek.dtx} +% +\langdeffile{frenchb.dtx} +\langdeffile{italian.dtx} +\langdeffile{latin.dtx} +\langdeffile{portuges.dtx} +\langdeffile{spanish.dtx} +\langdeffile{catalan.dtx} +\langdeffile{galician.dtx} +\langdeffile{basque.dtx} +\langdeffile{romanian.dtx} +% +\langdeffile{danish.dtx} +\langdeffile{icelandic.dtx} +\langdeffile{norsk.dtx} +\langdeffile{swedish.dtx} +\langdeffile{samin.dtx} +% +\langdeffile{finnish.dtx} +\langdeffile{magyar.dtx} +\langdeffile{estonian.dtx} +% +\langdeffile{croatian.dtx} +\langdeffile{czech.dtx} +\langdeffile{polish.dtx} +\langdeffile{serbian.dtx} +\langdeffile{slovak.dtx} +\langdeffile{slovene.dtx} +\langdeffile{russianb.dtx} +\langdeffile{bulgarian.dtx} +\langdeffile{ukraineb.dtx} +% +\langdeffile{lsorbian.dtx} +\langdeffile{usorbian.dtx} +\langdeffile{turkish.dtx} +% +\langdeffile{hebrew.dtx} +\DocInput{hebinp.dtx} +\DocInput{hebrew.fdd} +\DocInput{heb209.dtx} +\langdeffile{bahasa.dtx} +%\langdeffile{sanskrit.dtx} +%\langdeffile{kannada.dtx} +%\langdeffile{nagari.dtx} +%\langdeffile{tamil.dtx} +\clearpage +\DocInput{bbplain.dtx} +% \end{macrocode} +% Finally print the index and change log (not for the user guide). +% \begin{macrocode} +%<*!user> +\clearpage +\def\filename{index} +\PrintIndex +\clearpage +\def\filename{changes} +\PrintChanges +%</!user> +\end{document} +%</driver> +% \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 + diff --git a/Master/texmf-dist/source/generic/babel/babel.ins b/Master/texmf-dist/source/generic/babel/babel.ins new file mode 100644 index 00000000000..c4680ba4555 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/babel.ins @@ -0,0 +1,250 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +%% Copyright 2005 Johannes L. Braams +%% +%% This file is part of the `babel' system. +%% +\def\filedate{2004/02/20} +\def\batchfile{babel.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\ifx\askonceonly\undefined + \let\OriginalAsk\Ask + \def\askonceonly{% + \def\Ask##1##2{% + \OriginalAsk{##1}{##2}% + \global\let\Ask\OriginalAsk + \Ask\noprompt{% + By default you will be asked this question for every file.^^J% + If you enter `y' now,^^J% + I will asssume `y' for all future questions^^J% + without prompting.}% + \ifx\y\noprompt\let\noprompt\yes\fi + \ifx\yes\noprompt\gdef\Ask####1####2{\def####1{y}}\fi}} + } +\fi +%% This is the preamble that will be placed on +%% unpacked files + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent +\askonceonly +% +% Make some arrangements to use docstrip files in subdirectories +% unchanged... +% To do this I need to insert a path in front of the source file +% name, for this purpose I need to save the definition of an +% internal docstrip macro: +\let\ds@@from\@from +% +% Then it is convenient to have a special command to load docstrip +% files in subdirectories, it takes the directory path in the first +% argument, the name of the file in the second: +\def\BblInstallSubDir#1#2{% + \def\@from##1{\ds@@from{#1/##1}} + \batchinput{#1/#2.ins} + \let\@from\ds@@from} +% +% When a flat distribution is used a much simpler command +% is needed. +\def\BblInstallFlat#1#2{% + \batchinput{#2.ins}} + +% Now choose which installation to use. +\let\BblInstall\BblInstallFlat %% For now... + +\usepreamble\mainpreamble +\usedir{tex/generic/babel} +% +% First produce the base files for the babel system +% +\BblInstall{base}{base} +% +% Languages have their own subdirectory +% +\BblInstall{bahasa}{bahasa} +\BblInstall{basque}{basque} +\BblInstall{breton}{breton} +\BblInstall{bulgarian}{bulgarian} +\BblInstall{catalan}{catalan} +\BblInstall{croatian}{croatian} +\BblInstall{cyrillic}{russianb} +\BblInstall{cyrillic}{ukraineb} +\BblInstall{czech}{czech} +\BblInstall{danish}{danish} +\BblInstall{dutch}{dutch} +\BblInstall{english}{english} +\BblInstall{esperanto}{esperanto} +\BblInstall{estonian}{estonian} +\BblInstall{finnish}{finnish} +\BblInstall{frenchb}{frenchb} +\BblInstall{galician}{galician} +\BblInstall{german}{german} +\BblInstall{greek}{greek} +\BblInstall{hebrew}{hebrew} +\BblInstall{icelandic}{icelandic} +\BblInstall{interlingua}{interlingua} +\BblInstall{irish}{irish} +\BblInstall{italian}{italian} +%\BblInstall{kannada}{kannada} +\BblInstall{latin}{latin} +\BblInstall{magyar}{magyar} +%\BblInstall{nagari}{nagari} +\BblInstall{norsk}{norsk} +\BblInstall{polish}{polish} +\BblInstall{portuges}{portuges} +\BblInstall{romanian}{romanian} +%\BblInstall{tamil}{tamil} +\BblInstall{samin}{samin} +%\BblInstall{sanskrit}{sanskrit} +\BblInstall{scottish}{scottish} +\BblInstall{serbian}{serbian} +\BblInstall{slovak}{slovak} +\BblInstall{slovene}{slovene} +\BblInstall{sorbian}{sorbian} +\BblInstall{spanish}{spanish} +\BblInstall{swedish}{swedish} +\BblInstall{turkish}{turkish} +\BblInstall{welsh}{welsh} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move all the files} +\Msg{* with names ending in .ldf, .sty, .def or .fd into a} +\Msg{* directory searched by TeX} +\Msg{*} +\Msg{* For making a format the following files have to be in a} +\Msg{* directory which is searched by IniTeX:} +\Msg{* \space\space hyphen.cfg} +\Msg{* \space\space language.dat} +\Msg{* \space\space and files with hyphenation patterns} +\Msg{*} +\Msg{* To produce source listings you can run files with names} +\Msg{* ending in .dtx and/or .drv through LaTeX} +\Msg{*} +\Msg{* To produce the complete source listing MakeIndex needs to be} +\Msg{* able to find the following files} +\Msg{* \space\space bbind.ist} +\Msg{* \space\space bbglo.ist} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{*} +\Msg{***********************************************************} + + diff --git a/Master/texmf-dist/source/generic/babel/bahasa.dtx b/Master/texmf-dist/source/generic/babel/bahasa.dtx new file mode 100644 index 00000000000..c679c2e4a33 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/bahasa.dtx @@ -0,0 +1,243 @@ +% \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{86} +%\iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{bahasa.dtx} +%</dtx> +%<code>\ProvidesLanguage{bahasa} +%\fi +%\ProvidesFile{bahasa.dtx} + [2005/03/29 v1.0i Bahasa support from the babel system] +%\iffalse +%% File `bahasa.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Bahasa Language Definition File +%% Copyright (C) 1994 - 2005 +%% by J"org Knappen, (joerg.knappen at alpha.ntp.springer.de) +% Terry Mart (mart at vkpmzd.kph.uni-mainz.de) +% Institut f\"ur Kernphysik +% Johannes Gutenberg-Universit\"at Mainz +% D-55099 Mainz +% Germany +% +%% Please report errors to: J"org Knappen +%% knappen at alpha.ntp.springer.de +%% J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the bahasa indonesia / bahasa melayu language definition +% file. The original version of this file was written by Terry +% Mart (mart@vkpmzd.kph.uni-mainz.de) and J"org Knappen +% (knappen@vkpmzd.kph.uni-mainz.de). +%<*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{bahasa.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{bahasa.dtx} +% +% \changes{bahasa-0.9c}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{bahasa-1.0d}{1996/07/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{bahasa-1.0e}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning.} +% +% \section{The Bahasa language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate.} defines all the language definition macros for the +% bahasa indonesia / bahasa melayu language. Bahasa just means +% `language' in bahasa indonesia / bahasa melayu. Since both +% national versions of the language use the same writing, although +% differing in pronounciation, this file can be used for both +% languages. +% +% For this language currently no special definitions are needed or +% available. +% +% \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{bahasa-1.0e}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{bahasa}\captionsbahasa +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{bahasa} could be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@bahasa| to see whether we have to do something here. +% +% \changes{bahasa-0.9c}{1994/06/26}{Now use \cs{@patterns} to produce +% the warning} +% \begin{macrocode} +\ifx\l@bahasa\@undefined + \@nopatterns{Bahasa} + \adddialect\l@bahasa0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Bahasa language. +% +% \begin{macro}{\captionsbahasa} +% The macro |\captionsbahasa| defines all strings used in the four +% standard documentclasses provided with \LaTeX. +% \changes{bahasa-1.0b}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{bahasa-1.0d}{1996/07/09}{Replaced `Proof' by `Bukti' +% (PR2214)} +% \changes{bahasa-1.0h}{2000/09/19}{Added \cs{glossaryname}} +% \changes{bahasa-1.0i}{2003/11/17}{Inserted translation for Glossary} +% \begin{macrocode} +\addto\captionsbahasa{% + \def\prefacename{Pendahuluan}% + \def\refname{Pustaka}% + \def\abstractname{Ringkasan}% (sometime it's called 'intisari' + % or 'ikhtisar') + \def\bibname{Bibliografi}% + \def\chaptername{Bab}% + \def\appendixname{Lampiran}% + \def\contentsname{Daftar Isi}% + \def\listfigurename{Daftar Gambar}% + \def\listtablename{Daftar Tabel}% + \def\indexname{Indeks}% + \def\figurename{Gambar}% + \def\tablename{Tabel}% + \def\partname{Bagian}% +% Subject: Subyek +% From: Dari + \def\enclname{Lampiran}% + \def\ccname{cc}% + \def\headtoname{Kepada}% + \def\pagename{Halaman}% +% Notes (Endnotes): Catatan + \def\seename{lihat}% + \def\alsoname{lihat juga}% + \def\proofname{Bukti}% + \def\glossaryname{Daftar Istilah}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datebahasa} +% The macro |\datebahasa| redefines the command |\today| to produce +% Bahasa dates. +% \changes{bahasa-1.0f}{1997/10/01}{Use \cs{edef} to define \cs{today}} +% \changes{bahasa~1.0f}{1998/03/28}{use \cs{def} instead of \cs{edef} +% to save memory} +% \changes{bahasa-1.0g}{1999/03/12}{Februari should be spelled as +% Pebruari} +% \begin{macrocode} +\def\datebahasa{% + \def\today{\number\day~\ifcase\month\or + Januari\or Pebruari\or Maret\or April\or Mei\or Juni\or + Juli\or Agustus\or September\or Oktober\or Nopember\or Desember\fi + \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\extrasbahasa} +% \begin{macro}{\noextrasbahasa} +% The macro |\extrasbahasa| will perform all the extra definitions +% needed for the Bahasa language. The macro |\extrasbahasa| is used +% to cancel the actions of |\extrasbahasa|. For the moment these +% macros are empty but they are defined for compatibility with the +% other language definition files. +% +% \begin{macrocode} +\addto\extrasbahasa{} +\addto\noextrasbahasa{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bahasahyphenmins} +% The bahasa hyphenation patterns should be used with +% |\lefthyphenmin| set to~2 and |\righthyphenmin| set to~2. +% \changes{bahasa-1.0e}{1996/08/07}{use \cs{bahasahyphenmins} to store +% the correct values} +% \changes{bahasa-1.0h}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% 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{bahasa-1.0e}{1996/11/02}{Now use \cs{ldf@finish} to wrap up} +% \begin{macrocode} +\ldf@finish{bahasa} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/bahasa.ins b/Master/texmf-dist/source/generic/babel/bahasa.ins new file mode 100644 index 00000000000..a444a015e17 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/bahasa.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{bahasa.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{bahasa.ldf}{\from{bahasa.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/base.ins b/Master/texmf-dist/source/generic/babel/base.ins new file mode 100644 index 00000000000..7f13287fd29 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/base.ins @@ -0,0 +1,299 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +%% Copyright 2004 Johannes L. Braams +%% +%% This file is part of the `babel' system. +%% +%% You are allowed to distribute this file together with all files +%% mentioned in manifest.bbl. +%% +%% You are not allowed to modify its contents. +%% +\def\filedate{2004/02/20} +\def\batchfile{base.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +% The following command will be added to dostrip in the next LaTeX +% release ... +\ifx\askonceonly\undefined + \let\OriginalAsk\Ask + \def\askonceonly{% + \def\Ask##1##2{% + \OriginalAsk{##1}{##2}% + \global\let\Ask\OriginalAsk + \Ask\noprompt{% + By default you will be asked this question for every file.^^J% + If you enter `y' now,^^J% + I will asssume `y' for all future questions^^J% + without prompting.}% + \ifx\y\noprompt\let\noprompt\yes\fi + \ifx\yes\noprompt\gdef\Ask####1####2{\def####1{y}}\fi}} + } +\fi +%% This is the preamble that will be placed on +%% unpacked files + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\declarepreamble\drvpreamble + +This file was generated from file(s) of the Babel system. +--------------------------------------------------------- + +Copyright (C) 2004 Johannes Braams. All rights reserved. + +To produce the documentation in the way you like you are allowed +to change this driver file. + +\endpreamble + +\declarepreamble\istpreamble +This file was generated from file(s) of the Babel system. +--------------------------------------------------------- + +Copyright (C) 2004 Johannes Braams. All rights reserved. + +This file is a style file for the MakeIndex program + +\endpreamble + +\declarepostamble\istpost +\endpostamble + +\keepsilent +\askonceonly + +\usepreamble\mainpreamble +\usedir{tex/generic/babel} + +\generate{\file{babel.sty}{\from{babel.dtx}{package}} + \file{babel.def}{\from{babel.dtx}{core}} + \file{switch.def}{\from{babel.dtx}{kernel}} + \file{hyphen.cfg}{\from{babel.dtx}{kernel,patterns}} + } +% Support for plain users +\generate{\file{plain.def}{\from{bbplain.dtx}{code}} + \file{bplain.tex}{\from{bbplain.dtx}{bplain}} + \file{blplain.tex}{\from{bbplain.dtx}{blplain}} + } + +% compatibility files + +\usepreamble\mainpreamble + +\def\compatfile#1{\file{#1.sty}{\from{bbcompat.dtx}{#1}}} + +\generate{% + \compatfile{esperanto} + \compatfile{afrikaans} + \compatfile{dutch} + \compatfile{american} + \compatfile{british} + \compatfile{english} + \compatfile{UKenglish} + \compatfile{USenglish} + \compatfile{germanb} + \compatfile{austrian} + \compatfile{ngermanb} + \compatfile{naustrian} + \compatfile{irish} + \compatfile{scottish} + \compatfile{welsh} + \compatfile{breton} + } +\generate{% + \compatfile{francais} + \compatfile{italian} + \compatfile{portuges} + \compatfile{spanish} + \compatfile{catalan} + \compatfile{galician} + \compatfile{danish} + \compatfile{norsk} + \compatfile{swedish} + \compatfile{finnish} + \compatfile{magyar} + \compatfile{greek} + \compatfile{croatian} + \compatfile{czech} + \compatfile{slovak} + \compatfile{polish} + } +\generate{% + \compatfile{estonian} + \compatfile{romanian} + \compatfile{slovene} + \compatfile{russianb} + \compatfile{ukraineb} + \compatfile{turkish} + \compatfile{lsorbian} + \compatfile{usorbian} + \compatfile{bahasa} + \compatfile{hebrew} + %\compatfile{sanskrit} + \compatfile{basque} + \compatfile{latin} + \compatfile{icelandic} + \compatfile{serbian} + \compatfile{bulgarian} + } +\generate{% + \compatfile{samin} + \compatfile{interlingua} + } + +% driver files + +\usepreamble\drvpreamble + +\generate{\file{babel.drv}{\from{babel.dtx}{driver}} + \file{user.drv}{\from{babel.dtx}{driver,user}}} + +% MakeIndex style files + +\usepreamble\istpreamble +\usepostamble\istpost + +\generate{\file{bbind.ist}{\from{bbidxglo.dtx}{idx}} + \file{bbglo.ist}{\from{bbidxglo.dtx}{glo}}} + +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move all the files} +\Msg{* with names ending in .ldf, .sty, .def or .fd into a} +\Msg{* directory searched by TeX} +\Msg{*} +\Msg{* For making a format the following files have to be in a} +\Msg{* directory which is searched by IniTeX:} +\Msg{* \space\space hyphen.cfg} +\Msg{* \space\space language.dat} +\Msg{* \space\space and files with hyphenation patterns} +\Msg{*} +\Msg{* To produce source listings you can run files with names} +\Msg{* ending in .dtx and/or .drv through LaTeX} +\Msg{*} +\Msg{* To produce the complete source listing MakeIndex needs to be} +\Msg{* able to find the following files} +\Msg{* \space\space bbind.ist} +\Msg{* \space\space bbglo.ist} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{*} +\Msg{***********************************************************} + + diff --git a/Master/texmf-dist/source/generic/babel/basque.dtx b/Master/texmf-dist/source/generic/babel/basque.dtx new file mode 100644 index 00000000000..33789ccdfd4 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/basque.dtx @@ -0,0 +1,390 @@ +% \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{193} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{basque.dtx} +%</dtx> +%<code>\ProvidesLanguage{basque} +%\fi +%\ProvidesFile{basque.dtx} + [2005/03/29 v1.0f Basque support from the babel system] +%\iffalse +%% File `Basque.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Basque Language Definition File +%% Copyright (C) 1997 - 2005 +%% by Juan M. Aguirregabiria +% The University of the Basque Country +% Dept. of Theoretical Physics +% Apdo. 644 +% E-48080 Bilbao +% Spain +% tel: +34 946 012 593 +% fax: +34 944 648 500 +% e-mail: wtpagagj at lg.ehu.es +% WWW: http://tp.lc.ehu.es/jma.html +% based on the +% Spanish Language Definition File +% Copyright (C) 1991 - 1998 +% by Julio Sanchez +% GMV, SA +% c/ Isaac Newton 11 +% PTM - Tres Cantos +% E-28760 Madrid +% Spain +% tel: +34 1 807 21 85 +% fax +34 1 807 21 99 +% jsanchez at gmv.es +% +% Acknowledgements: I am indebted to Zunbeltz Izaola, +% who suggested the use of \discretionary in "- +% +%% Please report errors to: Juan M. Aguirregabiria <wtpagagj at lg.ehu.es> +%% (or J.L. Braams <babel at braams.cistron.nl>) +% +% This file is part of the babel system, it provides the source +% code for the basque language definition file. +%<*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{basque.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{basque.dtx} +% +% \section{The Basque language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. The original author is Juan M. Aguirregabiria, +% (\texttt{wtpagagj@lg.ehu.es}) and is based on the Spanish file +% by Julio S\'anchez, +% (\texttt{jsanchez@gmv.es}).} defines all the language definition +% macro's for the Basque language. +% +% For this language the characters |~| and |"| are made +% active. In table~\ref{tab:basque-quote} an overview is given of +% their purpose. +% \begin{table}[htb] +% \centering +% \begin{tabular}{lp{8cm}} +% \verb="|= & disable ligature at this position.\\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word.\\ +% |\-| & like the old |\-|, but allowing hyphenation +% in the rest of the word. \\ +% |"<| & for French left double quotes (similar to $<<$).\\ +% |">| & for French right double quotes (similar to $>>$).\\ +% |~n| & a n with tilde. Works for uppercase too. +% \end{tabular} +% \caption{The extra definitions made by \file{basque.ldf}} +% \label{tab:basque-quote} +% \end{table} +% These active accent characters behave according to their original +% definitions if not followed by one of the characters indicated in +% that table. +% +% \changes{basque-1.0f}{2002/01/07}{Changed url's for the patterns +% file} +% This option includes support for working with extended, 8-bit +% fonts, if available. Support is based on +% providing an appropriate definition for the accent macros on +% entry to the Basque language. This is automatically done by +% \LaTeXe\ or NFSS2. If T1 encoding is chosen, and provided that +% adequate hyphenation patterns\footnote{One source for such +% patterns is the archive at \texttt{tp.lc.ehu.es} that can be +% accessed by anonymous FTP or in +% \texttt{http://tp.lc.ehu.es/jma/basque.html}} are available. +% The easiest way to use the new encoding with \LaTeXe{} is +% to load the package \texttt{t1enc} with |\usepackage|. This must +% be done before loading \babel. +% +% \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. +% \begin{macrocode} +%<*code> +\LdfInit{basque}\captionsbasque +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{basque} could be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@basque| to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\l@basque\@undefined + \@nopatterns{Basque} + \adddialect\l@basque0 +\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Basque language. +% +% \begin{macro}{\captionsbasque} +% The macro |\captionsbasque| defines all strings used in +% the four standard documentclasses provided with \LaTeX. +% \changes{basque-1.0e}{2000/09/19}{Added \cs{glossaryname}} +% \changes{basque-1.0f}{2002/01/07}{Added translation for Glossary} +% \begin{macrocode} +\addto\captionsbasque{% + \def\prefacename{Hitzaurrea}% + \def\refname{Erreferentziak}% + \def\abstractname{Laburpena}% + \def\bibname{Bibliografia}% + \def\chaptername{Kapitulua}% + \def\appendixname{Eranskina}% + \def\contentsname{Gaien Aurkibidea}% + \def\listfigurename{Irudien Zerrenda}% + \def\listtablename{Taulen Zerrenda}% + \def\indexname{Kontzeptuen Aurkibidea}% + \def\figurename{Irudia}% + \def\tablename{Taula}% + \def\partname{Atala}% + \def\enclname{Erantsia}% + \def\ccname{Kopia}% + \def\headtoname{Nori}% + \def\pagename{Orria}% + \def\seename{Ikusi}% + \def\alsoname{Ikusi, halaber}% + \def\proofname{Frogapena}% + \def\glossaryname{Glosarioa}% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datebasque} +% The macro |\datebasque| redefines the command |\today| to +% produce Basque +% \changes{basque-1.0b}{1997/10/01}{Use \cs{edef} to define \cs{today} +% to save memory} +% \changes{basque-1.0b}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \changes{basque-1.0c}{1999/11/22}{fixed typo in April's name} +% \begin{macrocode} +\def\datebasque{% + \def\today{\number\year.eko\space\ifcase\month\or + urtarrilaren\or otsailaren\or martxoaren\or apirilaren\or + maiatzaren\or ekainaren\or uztailaren\or abuztuaren\or + irailaren\or urriaren\or azaroaren\or + abenduaren\fi~\number\day}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasbasque} +% \begin{macro}{\noextrasbasque} +% The macro |\extrasbasque| will perform all the extra definitions +% needed for the Basque language. The macro |\noextrasbasque| is +% used to cancel the actions of |\extrasbasque|. For Basque, some +% characters are made active or are redefined. In particular, the +% \texttt{"} character and the |~| character receive new +% meanings. Therefore these characters have to be treated as +% `special' characters. +% +% \begin{macrocode} +\addto\extrasbasque{\languageshorthands{basque}} +\initiate@active@char{"} +\initiate@active@char{~} +\addto\extrasbasque{% + \bbl@activate{"}% + \bbl@activate{~}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{basque-1.0d}{1999/12/16}{Deactivate shorthands ouside of +% Basque} +% \begin{macrocode} +\addto\noextrasbasque{ + \bbl@deactivate{"}\bbl@deactivate{~}} +% \end{macrocode} +% +% Apart from the active characters some other macros get a new +% definition. Therefore we store the current one to be able to +% restore them later. +% \begin{macrocode} +\addto\extrasbasque{% + \babel@save\"% + \babel@save\~% + \def\"{\protect\@umlaut}% + \def\~{\protect\@tilde}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\basquehyphenmins} +% Basque hyphenation uses |\lefthyphenmin| and |\righthyphenmin| +% both set to~2. +% \changes{basque-1.0e}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dieresia} +% \begin{macro}{\texttilde} +% The original definition of |\"| is stored as |\dieresia|, because +% the we do not know what is its definition, since it depends on +% the encoding we are using or on special macros that the user +% might have loaded. The expansion of the macro might use the \TeX\ +% |\accent| primitive using some particular accent that the font +% provides or might check if a combined accent exists in the font. +% These two cases happen with respectively OT1 and T1 encodings. +% For this reason we save the definition of |\"| and use that in +% the definition of other macros. We do likewise for |\'| and +% |\~|. The present coding of this option file is incorrect in that +% it can break when the encoding changes. We do not use +% |\tilde| as the macro name because it is already defined as +% |\mathaccent|. +% \begin{macrocode} +\let\dieresia\" +\let\texttilde\~ +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@umlaut} +% \begin{macro}{\@tilde} +% We check the encoding and if not using T1, we make the accents +% expand but enabling hyphenation beyond the accent. If this is the +% case, not all break positions will be found in words that contain +% accents, but this is a limitation in \TeX. An unsolved problem +% here is that the encoding can change at any time. The definitions +% below are made in such a way that a change between two 256-char +% encodings are supported, but changes between a 128-char and a +% 256-char encoding are not properly supported. We check if T1 is +% in use. If not, we will give a warning and proceed redefining the +% accent macros so that \TeX{} at least finds the breaks that are +% not too close to the accent. The warning will only be printed to +% the log file. +% \begin{macrocode} +\ifx\DeclareFontShape\@undefined + \wlog{Warning: You are using an old LaTeX} + \wlog{Some word breaks will not be found.} + \def\@umlaut#1{\allowhyphens\dieresia{#1}\allowhyphens} + \def\@tilde#1{\allowhyphens\texttilde{#1}\allowhyphens} +\else + \edef\bbl@next{T1} + \ifx\f@encoding\bbl@next + \let\@umlaut\dieresia + \let\@tilde\texttilde + \else + \wlog{Warning: You are using encoding \f@encoding\space + instead of T1.} + \wlog{Some word breaks will not be found.} + \def\@umlaut#1{\allowhyphens\dieresia{#1}\allowhyphens} + \def\@tilde#1{\allowhyphens\texttilde{#1}\allowhyphens} + \fi +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Now we can define our shorthands: the french quotes, +% \changes{basque-1.0b}{1997/04/03}{Removed empty groups after +% guillemot characters} +% \begin{macrocode} +\declare@shorthand{basque}{"<}{% + \textormath{\guillemotleft}{\mbox{\guillemotleft}}} +\declare@shorthand{basque}{">}{% + \textormath{\guillemotright}{\mbox{\guillemotright}}} +% \end{macrocode} +% ordinals\footnote{The code for the ordinals was taken from the +% answer provided by Raymond Chen +% (\texttt{raymond@math.berkeley.edu}) to a question by Joseph Gil +% (\texttt{yogi@cs.ubc.ca}) in \texttt{comp.text.tex}.}, +% \begin{macrocode} + \declare@shorthand{basque}{''}{% + \textormath{\textquotedblright}{\sp\bgroup\prim@s'}} +% \end{macrocode} +% tildes, +% \begin{macrocode} +\declare@shorthand{basque}{~n}{\textormath{\~n}{\@tilde n}} +\declare@shorthand{basque}{~N}{\textormath{\~N}{\@tilde N}} +% \end{macrocode} +% and some additional commands. +% +% The shorthand |"-| should be used in places where a word contains +% an explictit hyphenation character. According to the Academy of +% the Basque language, when a word break occurs at an explicit +% hyphen it must appear \emph{both} at the end of the first line +% \emph{and} at the beginning of the second line. +% \changes{changes-1.0f}{2002/01/07}{The hyphen char needs to appear +% at the beginning of the line as well.} +% \begin{macrocode} +\declare@shorthand{basque}{"-}{% + \nobreak\discretionary{-}{-}{-}\bbl@allowhyphens} +\declare@shorthand{basque}{"|}{% + \textormath{\nobreak\discretionary{-}{}{\kern.03em}% + \allowhyphens}{}} +% \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. +% \begin{macrocode} +\ldf@finish{basque} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/basque.ins b/Master/texmf-dist/source/generic/babel/basque.ins new file mode 100644 index 00000000000..ccebb561bae --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/basque.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{basque.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{basque.ldf}{\from{basque.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/bbcompat.dtx b/Master/texmf-dist/source/generic/babel/bbcompat.dtx new file mode 100644 index 00000000000..b90991e12fb --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/bbcompat.dtx @@ -0,0 +1,261 @@ +% \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{251} +% +% \iffalse +%<*dtx> +\ProvidesFile{bbcompat.dtx}[2004/02/19 v1.2h] +%</dtx> +% +%% File 'bbcompat.dtx' +%% Copyright (C) 1989 -- 2004 by Johannes Braams, +%% TeXniek +%% all rights reserved. +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +%<*filedriver> +\documentclass{ltxdoc} +\newcommand*\TeXhax{\TeX hax} +\newcommand*\babel{\textsf{babel}} +\newcommand*\Lopt[1]{\textsf{#1}} +\newcommand*\file[1]{\texttt{#1}} +\newcommand*\pkg[1]{\texttt{#1}} +\begin{document} + \DocInput{bbcompat.dtx} +\end{document} +%</filedriver> +% \fi +% +% \GetFileInfo{bbcompat.dtx} +% \StopEventually{} +% +% \changes{bbcompat-1.2}{1996/11/02}{Added the check for \cs{LdfInit}} +% \changes{bbcompat-1.2d}{1999/04/12}{When these files are read by a +% non-babel plain format the @ has still category code `other' so +% can't use \cd{@undefined}} +% \begin{macrocode} +\ifx\LdfInit\undefined + \def\LdfInit{% + \chardef\atcatcode=\catcode`\@ + \catcode`\@=11\relax + \input babel.def\relax + \catcode`\@=\atcatcode \let\atcatcode\relax + \LdfInit} +\fi +% \end{macrocode} +% It seems that these files, although meant for compatibility with +% \file{plain.tex} are also used as packages in \LaTeXe. The +% disadvantage of that is that a number of compatibility measures +% with other packages that are part of \file{babel.sty} are not +% present. Therefore we issue an error and then load +% \file{babel.def} to let the user continue processing his +% document (at his own risk). +% +% First we determine whether we are loaded from \LaTeX\ by checking +% whether |\PackageError| is defined. +% \begin{macrocode} +\ifx\PackageError\undefined +% \end{macrocode} +% In this case we are not being loaded by \LaTeXe, so just define +% |\ProvidesLanguage| to prevent an error when the \file{.ldf} file +% is loaded. +% \begin{macrocode} + \def\ProvidesLanguage#1[#2 #3 #4]{% + \wlog{Language: #1 #4 #3 <#2>}}% +\else +% \end{macrocode} +% Now we define an error message which `deletes' itself from +% memory. +% \begin{macrocode} + \def\bblstyerror{% + \PackageError{babel}% + {You have used an old interface to call babel\MessageBreak + You may expect compatibility problems wit other packages}% + {You could proceed but don't complain if you run into errors}% + \let\bblstyerror\@undefined + } +% \end{macrocode} +% Now we can issue the error, it should appear when these files are +% loaded from \LaTeXe, with \emph{or} without \file{hyphen.cfg} +% preloaded in the format. +% \changes{bbcompat-1.2e}{1999/04/20}{Added a check for +% \cs{ProvidesLanguage}} +% \begin{macrocode} + \ifx\ProvidesLanguage\undefined +% \end{macrocode} +% In this case \file{hyphen.cfg} wasn't loaded in the \LaTeXe\ +% format so we also need to provide a suitable definition for +% |\ProvidesLanguage|. +% \begin{macrocode} + \bblstyerror + \def\ProvidesLanguage{% + \chardef\atcatcode=\catcode`\@ + \catcode`\@=11\relax + \input babel.def\relax + \catcode`\@=\atcatcode \let\atcatcode\relax + \ProvidesLanguage} +% \end{macrocode} +% When we end up here, \file{hyphen.cfg} was loaded into the +% format; we only need to issue the error from \LaTeXe. +% \begin{macrocode} + \else + \bblstyerror + \fi +\fi +% \end{macrocode} +% \changes{bbcompat-1.2}{1996/07/13}{Added \file{.sty} files and +% definition of \cs{CurrentOption} for language definition files +% that are loaded by more than one option.} +% \changes{bbcompat-1.2}{1996/12/14}{Added \file{welsh.sty}} +% \changes{bbcompat-1.2b}{1997/02/07}{Added \file{sanskrit.sty}} +% \changes{bbcompat-1.2c}{1998/03/24}{Added \file{hebrew.sty}} +% \changes{bbcompat-1.2d}{1999/03/09}{Added \file{ukraineb.sty}} +% \changes{bbcompat-1.2d}{1999/04/10}{Added \file{ngerman.sty} and +% \file{naustrian.sty}} +% \changes{bbcompat-1.2f}{2000/09/26}{Added \file{icelandic.sty}, +% \file{bulgarian.sty} and \file{samin.sty}} +% \changes{bbcompat-1.2f}{2000/09/27}{Define \cs{CurrentOption} in +% each file} +% \changes{bbcompat-1.2g}{2001/01/19}{Added code for usenglish and +% ukenglish.sty} +% \changes{bbcompat-1.2h}{2003/11/13}{Added \file{interlingua.sty}} +% \begin{macrocode} +%<+american>\def\CurrentOption{american} +%<+USenglish>\def\CurrentOption{USenglish} +%<+british>\def\CurrentOption{british} +%<+english>\def\CurrentOption{english} +%<+UKenglish>\def\CurrentOption{UKenglish} +%<american|british|english|UKenglish|USenglish>\input english.ldf\relax +%<+bahasa>\def\CurrentOption{bahasa}} +%<+bahasa>\input bahasa.ldf\relax +%<+breton>\def\CurrentOption{breton} +%<+breton>\input breton.ldf\relax +%<+bulgarian>\def\CurrentOption{bulgarian} +%<+bulgarian>\input bulgarian.ldf\relax +%<+catalan>\def\CurrentOption{catalan} +%<+catalan>\input catalan.ldf\relax +%<+croatian>\def\CurrentOption{croatian} +%<+croatian>\input croatian.ldf\relax +%<+czech>\def\CurrentOption{czech} +%<+czech>\input czech.ldf\relax +%<+danish>\def\CurrentOption{danish} +%<+danish>\input danish.ldf\relax +%<+afrikaans>\def\CurrentOption{afrikaans} +%<+dutch>\def\CurrentOption{dutch} +%<+afrikaans|dutch>\input dutch.ldf\relax +%<+esperanto>\def\CurrentOption{esperanto} +%<+esperanto>\input esperanto.ldf\relax +%<+estonian>\def\CurrentOption{estonian} +%<+estonian>\input estonian.ldf\relax +%<+finnish>\def\CurrentOption{finnish} +%<+finnish>\input finnish.ldf\relax +%<+francais>\def\CurrentOption{francais} +%<+french>\def\CurrentOption{french} +%<+francais|french>\input frenchb.ldf\relax +%<+galician>\def\CurrentOption{galician} +%<+galician>\input galician.ldf\relax +%<+austrian>\def\CurrentOption{austrian} +%<+german>\def\CurrentOption{german} +%<+germanb>\def\CurrentOption{german} +%<+austrian|german|germanb>\input germanb.ldf\relax +%<+naustrian>\def\CurrentOption{naustrian} +%<+ngerman>\def\CurrentOption{ngerman} +%<+naustrian|ngerman>\input ngermanb.ldf\relax +%<+greek>\def\CurrentOption{greek} +%<+greek>\input greek.ldf\relax +%<+icelandic>\def\CurrentOption{icelandic} +%<+icelandic>\input icelandic.ldf\relax +%<+interlingua>\def\CurrentOption{interlingua} +%<+interlingua>\input interlingua.ldf\relax +%<+irish>\def\CurrentOption{irish} +%<+irish>\input irish.ldf\relax +%<+italian>\def\CurrentOption{italian} +%<+italian>\input italian.ldf\relax +%<+lsorbian>\def\CurrentOption{lsorbian} +%<+lsorbian>\input lsorbian.ldf\relax +%<+magyar>\def\CurrentOption{magyar} +%<+hungarian>\def\CurrentOption{hungarian} +%<+magyar|hungarian>\input magyar.ldf\relax +%<+norsk>\def\CurrentOption{norsk} +%<+nynorsk>\def\CurrentOption{nynorsk} +%<+norsk|nynorsk>\input norsk.ldf\relax +%<+polish>\def\CurrentOption{polish} +%<+polish>\input polish.ldf\relax +%<+portuges>\def\CurrentOption{portuges} +%<+portuguese>\def\CurrentOption{portuguese} +%<+brazil>\def\CurrentOption{brazil} +%<+brazilian>\def\CurrentOption{brazilian} +%<+portuges|portuguese|brazil|brazilian>\input portuges.ldf\relax +%<+romanian>\def\CurrentOption{romanian} +%<+romanian>\input romanian.ldf\relax +%<+russianb>\def\CurrentOption{russianb} +%<+russianb>\input russianb.ldf\relax +%<+ukraineb>\def\CurrentOption{ukraineb} +%<+ukraineb>\input ukraineb.ldf\relax +%<+samin>\def\CurrentOption{samin} +%<+samin>\input samin.ldf\relax +%<+sanskrit>\def\CurrentOption{sanskrit} +%<+sanskrit>\input sanskrit.ldf\relax +%<+scottish>\def\CurrentOption{scottish} +%<+scottish>\input scottish.ldf\relax +%<+slovak>\def\CurrentOption{slovak} +%<+slovak>\input slovak.ldf\relax +%<+slovene>\def\CurrentOption{slovene} +%<+slovene>\input slovene.ldf\relax +%<+spanish>\def\CurrentOption{spanish} +%<+spanish>\input spanish.ldf\relax +%<+swedish>\def\CurrentOption{swedish} +%<+swedish>\input swedish.ldf\relax +%<+turkish>\def\CurrentOption{turkish} +%<+turkish>\input turkish.ldf\relax +%<+usorbian>\def\CurrentOption{usorbian} +%<+usorbian>\input usorbian.ldf\relax +%<+welsh>\def\CurrentOption{welsh} +%<+welsh>\input welsh.ldf\relax +%<+hebrew>\def\CurrentOption{hebrew} +%<+hebrew>\input rlbabel.def\input hebrew.ldf\relax +% \end{macrocode} +%% +%% \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 diff --git a/Master/texmf-dist/source/generic/babel/bbidxglo.dtx b/Master/texmf-dist/source/generic/babel/bbidxglo.dtx new file mode 100644 index 00000000000..f58e44890a3 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/bbidxglo.dtx @@ -0,0 +1,124 @@ +% \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{66} +% +% \iffalse +% +% \begin{macrocode} +%<*driver> +\ProvidesFile{bbidxglo.drv}[2004/02/19 v1.0b] +\documentclass{ltxdoc} +\GetFileInfo{bbidxglo.drv} +\newcommand{\babel}{\textsf{babel}} +\newcommand{\mkidx}{\texttt{MakeIndex}} +\newcommand{\file}[1]{\texttt{#1}} +\newcommand{\Lopt}[1]{\textsf{#1}} +\begin{document} +\DocInput{bbidxglo.dtx} +\end{document} +%</driver> +% \end{macrocode} +% +% \fi +% \title{Generating the index and chage log for the Babel system} +% \author{Johannes Braams} +% \date{\filedate} +% \maketitle +% +% \section{Description} +% +% This file contains the source for the style files for the \mkidx\ +% program. These are needed to produce the index for the complete +% source listing and to produce the listing of the changes. +% +% \StopEventually{} +% +% \section{The index and the list of changes } Most of the entries are +% the same as in the files \file{gind.ist} and \file{gglo.ist} from +% the \Lopt{doc} package. +% +% \begin{macrocode} +%<*idx|glo> +actual '=' +quote '!' +level '>' +%</idx|glo> +% \end{macrocode} +% +% Because the \babel\ system consists of so many files the default +% codeline numbering scheme of the \Lopt{doc} package has been +% adapted. The line numbers consist of two parts seperated with a +% dot. This has to made known to the \mkidx\ program when it +% produces the index. +% +% \begin{macrocode} +%<+idx>page_compositor "." +% \end{macrocode} +% +% Any further entries are again copied from \file{gind.ist} and +% \file{gglo.ist}. +% +% \begin{macrocode} +%<*idx> +preamble +"\n \\begin{theindex} \n \\makeatletter\\scan@allowedfalse\n" +postamble +"\n\n \\end{theindex}\n" +%</idx> +%<*glo> +preamble +"\n \\begin{theglossary} \n + \\makeatletter\\scan@allowedfalse\n" +postamble +"\n\n \\end{theglossary}\n" +keyword "\\glossaryentry" +%</glo> +%<+idx|glo>item_x1 "\\efill \n \\subitem " +%<+idx>item_x2 "\\efill \n \\subsubitem " +%<+glo>item_x2 "\\ " +%<*idx|glo> +delim_0 "\\pfill " +delim_1 "\\pfill " +delim_2 "\\pfill " +% The next lines will produce some warnings when +% running Makeindex as they try to cover two different +% versions of the program: +lethead_prefix "{\\bfseries\\hfil " +lethead_suffix "\\hfil}\\nopagebreak\n" +%</idx|glo> +%<+idx>lethead_flag 1 +%<+glo>lethead_flag 0 +%<*idx|glo> +heading_prefix "{\\bfseries\\hfil " +heading_suffix "\\hfil}\\nopagebreak\n" +%</idx|glo> +%<+idx>headings_flag 1 +%<+glo>headings_flag 0 +% \end{macrocode} +% diff --git a/Master/texmf-dist/source/generic/babel/bbplain.dtx b/Master/texmf-dist/source/generic/babel/bbplain.dtx new file mode 100644 index 00000000000..ba2aad20de2 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/bbplain.dtx @@ -0,0 +1,717 @@ +% \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{795} +% +% \iffalse +%<*dtx> +\ProvidesFile{bbplain.dtx} + [2004/02/19 v1.0r Babel support for plain-based formats] +%</dtx> +% +%% File `bbplain.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2004 +%% by Johannes Braams +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the extra definitions needed to be able to use babel +% with a plain-based format. +%<*filedriver> +\documentclass{ltxdoc} +\font\manual=logo10 % font used for the METAFONT logo, etc. +\newcommand*\MF{{\manual META}\-{\manual FONT}} +\newcommand*{\babel}{\textsf{babel}} +\newcommand*{\langvar}{$\langle \it lang \rangle$} +\newcommand*{\note}[1]{} +\newcommand*{\pkg}[1]{\textsf{#1}} +\newcommand*{\Lopt}[1]{\textsf{#1}} +\newcommand*{\file}[1]{\texttt{#1}} +\begin{document} + \DocInput{bbplain.dtx} +\end{document} +%</filedriver> +% \fi +% +% \GetFileInfo{bbplain.dtx} +% \StopEventually{} +% \changes{bbplain-1.0n}{1998/06/08}{Added the source for the format +% wrapper files} +% +% \section{Not renaming \file{hyphen.tex}} +% As Don Knuth has declared that the filename \file{hyphen.tex} may +% only be used to designate \emph{his} version of the american +% English hyphenation patterns, a new solution has to be found in +% order to be able to load hyphenation patterns for other languages +% in a plain-based \TeX-format. +% When asked he responded: +% \begin{quote} +% That file name is "sacred", and if anybody changes it they will +% cause severe upward/downward compatibility headaches. +% +% People can have a file localhyphen.tex or whatever they like, +% but they mustn't diddle with hyphen.tex (or plain.tex except to +% preload additional fonts). +% \end{quote} +% +% The files \file{bplain.tex} and \file{blplain.tex} can be used as +% replacement wrappers around \file{plain.tex} and +% \file{lplain.tex} to acheive the desired effect, based on the +% \pkg{babel} package. If you load each of them with ini\TeX, you +% will get a file called either \file{bplain.fmt} or +% \file{blplain.fmt}, which you can use as replacements for +% \file{plain.fmt} and \file{lplain.fmt}. +% +% As these files are going to be read as the first thing ini\TeX\ +% sees, we need to set some category codes just to be able to +% change the definition of |\input| +% \begin{macrocode} +%<*bplain|blplain> +\catcode`\{=1 % left brace is begin-group character +\catcode`\}=2 % right brace is end-group character +\catcode`\#=6 % hash mark is macro parameter character +% \end{macrocode} +% Now let's see if a file called \file{hyphen.cfg} can be found +% somewhere on \TeX's input path by trying to open it for +% reading... +% \begin{macrocode} +\openin 0 hyphen.cfg +% \end{macrocode} +% If the file wasn't found the following test turns out true. +% \begin{macrocode} +\ifeof0 +\else +% \end{macrocode} +% When \file{hyphen.cfg} could be opened we make sure that +% \emph{it} will be read instead of the file \file{hyphen.tex} +% which should (according to Don Knuth's ruling) contain the +% american English hyphenation patterns and nothing else. +% +% We do this by first saving the original meaning of |\input| (and +% I use a one letter control sequence for that so as not to waste +% multi-letter control sequence on this in the format). +% \begin{macrocode} + \let\a\input +% \end{macrocode} +% Then |\input| is defined to forget about its argument and load +% \file{hyphen.cfg} instead. +% \begin{macrocode} + \def\input #1 {% + \let\input\a + \a hyphen.cfg +% \end{macrocode} +% Once that's done the original meaning of |\input| can be restored +% and the definition of |\a| can be forgotten. +% \begin{macrocode} + \let\a\undefined + } +\fi +%</bplain|blplain> +% \end{macrocode} +% Now that we have made sure that \file{hyphen.cfg} will be loaded +% at the right moment it is time to load \file{plain.tex}. +% \begin{macrocode} +%<bplain>\a plain.tex +%<blplain>\a lplain.tex +% \end{macrocode} +% Finally we change the contents of |\fmtname| to indicate that +% this is \emph{not} the plain format, but a format based on plain +% with the \pkg{babel} package preloaded. +% \begin{macrocode} +%<bplain>\def\fmtname{babel-plain} +%<blplain>\def\fmtname{babel-lplain} +% \end{macrocode} +% +% When you are using a different format, based on plain.tex you can +% make a copy of blplain.tex, rename it and replace \file{plain.tex} +% with the name of your format file. +% +% \section{Support for formats based on \textsc{plain}\TeX} +% +% The following code duplicates or emulates parts of \LaTeXe\ that +% are needed for \babel. +% +% \changes{bbplain-1.0f}{1996/07/09}{Consistently use \cs{@undefined} +% instead of \cs{undefined}} +% \changes{bbplain-1.0f}{1996/07/09}{added \cs{@empty}} +% \changes{bbplain-1.0h}{1996/10/07}{Only load the necessary parts +% into the format, let this file be read agian by babel.def} +% \begin{macrocode} +%<*code> +\ifx\adddialect\@undefined +% \end{macrocode} +% When |\adddialect| is still undefined we are making a +% format. In that case only the first part of this file is needed. +% \begin{macrocode} + \def\@empty{} +% \end{macrocode} +% We need to define |\loadlocalcfg| for plain users as the +% \LaTeX\ definition uses |\InputIfFileExists|. +% \changes{bbplain-1.0c}{1995/07/26}{Added definition of +% \cs{loadlocalcfg}} +% \changes{bbplain-1.0d}{1996/01/08}{Also reset category codes after +% loading the configuration file as \cs{AtEndOfPackage} is +% undefined in this case} +% \begin{macrocode} + \def\loadlocalcfg#1{% + \openin0#1.cfg + \ifeof0 + \closein0 + \else + \closein0 + {\immediate\write16{*************************************}% + \immediate\write16{* Local config file #1.cfg used}% + \immediate\write16{*}% + } + \input #1.cfg\relax + \fi +% \end{macrocode} +% We have to execute \cs{@endofldf} in this case +% \begin{macrocode} + \@endofldf + } +% \end{macrocode} +% +% \changes{bbplain-1.0c}{1995/11/08}{Moved the \cs{dump} code here from +% \file{babel.dtx}} +% +% \changes{bbplain-0.1}{1991/10/31}{Added redefinition of \cs{dump} to +% add a message to \cs{everyjob}} +% We want to add a message to the message \LaTeX$\:$2.09 puts in +% the |\everyjob| register. This could be done by the following +% code: +% \begin{verbatim} +% \let\orgeveryjob\everyjob +% \def\everyjob#1{% +% \orgeveryjob{#1}% +% \orgeveryjob\expandafter{\the\orgeveryjob\immediate\write16{% +% hyphenation patterns for \the\loaded@patterns loaded.}}% +% \let\everyjob\orgeveryjob\let\orgeveryjob\@undefined} +% \end{verbatim} +% The code above redefines the control sequence \cs{everyjob} +% in order to be able to add something to the current contents of +% the register. This is necessary because the processing of +% hyphenation patterns happens long before \LaTeX\ fills the +% register.\\ +% There are some problems with this approach though. +% \begin{itemize} +% \item When someone wants to use several hyphenation patterns with +% \SliTeX\ the above scheme won't work. The reason is that \SliTeX\ +% overwrites the contents of the |\everyjob| register with its own +% message. +% \item Plain \TeX\ does not use the |\everyjob| register so the +% message would not be displayed. +% \end{itemize} +% To circumvent this a `dirty trick' can be used. As this code is +% only processed when creating a new format file there is one +% command that is sure to be used, |\dump|. Therefore the original +% |\dump| is saved in |\org@dump| and a new definition is supplied. +% \begin{macrocode} + \let\orig@dump=\dump + \def\dump{% +% \end{macrocode} +% To make sure that \LaTeX$\:$2.09 executes the +% |\@begindocumenthook| we would want to alter |\begin{document}|, +% but as this done too often already, we add the new code at the +% front of |\@preamblecmds|. But we can only do that after it has +% been defined, so we add this piece of code to |\dump|. +% \changes{bbplain-1.0c}{1995/11/19}{Add execution of +% \cs{@begindocumenthook} to \cs{@preamblecmds}} +% \changes{bbplain-1.0i}{1997/01/02}{\cs{document} is not a +% \LaTeX2.09-only command; AMS\TeX defines it too; now use +% \cs{@ztryfc} to detect \LaTeX2.09} +% \changes{bbplain-1.0j}{1997/01/07}{Add the definition of +% \cs{@begindocumenthook} to the \LaTeX2.09 format} +% \begin{macrocode} + \ifx\@ztryfc\@undefined + \else + \toks0=\expandafter{\@preamblecmds} + \edef\@preamblecmds{\noexpand\@begindocumenthook\the\toks0} + \def\@begindocumenthook{} + \fi +% \end{macrocode} +% This new definition starts by adding an instruction to write a +% message on the terminal and in the transcript file to inform the +% user of the preloaded hyphenation patterns. +% \changes{bbplain-1.0f}{1996/07/09}{Use \cs{toks8} instead of +% \cs{patterns@loaded}} +% \begin{macrocode} + \everyjob\expandafter{\the\everyjob% + \immediate\write16{\the\toks8 loaded.}}% +% \end{macrocode} +% Then everything is restored to the old situation and the format +% is dumped. +% \begin{macrocode} + \let\dump\orig@dump\let\orig@dump\@undefined\dump} + \expandafter\endinput +\fi +% \end{macrocode} +% The rest of this file is not processed by ini\TeX\ but during the +% normal document run. +% A number of \LaTeX\ macro's that are needed later on. +% \changes{bbplain-1.0n}{1998/06/10}{Added \cs{@secondoftwo}} +% \changes{bbplain-1.0q}{1999/09/16}{Added \cs{@ifundefined}} +% \begin{macrocode} +\long\def\@firstofone#1{#1} +\long\def\@firstoftwo#1#2{#1} +\long\def\@secondoftwo#1#2{#2} +\def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}} +\def\@star@or@long#1{% + \@ifstar + {\let\l@ngrel@x\relax#1}% + {\let\l@ngrel@x\long#1}} +\let\l@ngrel@x\relax +\def\@car#1#2\@nil{#1} +\def\@cdr#1#2\@nil{#2} +\let\@typeset@protect\relax +\long\def\@gobble#1{} +\edef\@backslashchar{\expandafter\@gobble\string\\} +\def\strip@prefix#1>{} +\def\g@addto@macro#1#2{{% + \toks@\expandafter{#1#2}% + \xdef#1{\the\toks@}}} +\def\@namedef#1{\expandafter\def\csname #1\endcsname} +\def\@ifundefined#1{% + \expandafter\ifx\csname#1\endcsname\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +% \end{macrocode} +% \LaTeXe\ has the command |\@onlypreamble| which adds commands to +% a list of commands that are no longer needed after +% |\begin{document}|. +% \begin{macrocode} +\ifx\@preamblecmds\@undefined + \def\@preamblecmds{} +\fi +\def\@onlypreamble#1{% + \expandafter\gdef\expandafter\@preamblecmds\expandafter{% + \@preamblecmds\do#1}} +\@onlypreamble\@onlypreamble +% \end{macrocode} +% Mimick \LaTeX's |\AtBeginDocument|; for this to work the user +% needs to add |\begindocument| to his file. +% \begin{macrocode} +\def\begindocument{% + \@begindocumenthook + \global\let\@begindocumenthook\@undefined + \def\do##1{\global\let ##1\@undefined}% + \@preamblecmds + \global\let\do\noexpand + } +% \end{macrocode} +% +% \changes{bbplain-1.0j}{1997/01/07}{\cs{@begindocumenthook} might +% already be defined} +% \changes{bbplain-1.0k}{1997/01/14}{missing \cs{@undefined} added} +% \begin{macrocode} +\ifx\@begindocumenthook\@undefined + \def\@begindocumenthook{} +\fi +\@onlypreamble\@begindocumenthook +\def\AtBeginDocument{\g@addto@macro\@begindocumenthook} +% \end{macrocode} +% We also have to mimick \LaTeX's |\AtEndOfPackage|. Our +% replacement macro is much simpler; it stores its argument in +% |\@endofldf|. +% \begin{macrocode} +\def\AtEndOfPackage#1{\g@addto@macro\@endofldf{#1}} +\@onlypreamble\AtEndOfPackage +\def\@endofldf{} +\@onlypreamble\@endofldf +% \end{macrocode} +% \LaTeX\ needs to be able to switch off writing to its auxiliary +% files; plain doesn't have them by default. +% \changes{bbplain-1.0m}{1997/04/28}{Set \cs{if@filesw} to +% \cs{iffalse} only for plain \TeX} +% \changes{bbplain-1.0n}{1997/09/11}{Repaired typo and added missing +% \cs{endcsname}} +% \begin{macrocode} +\ifx\if@filesw\@undefined + \expandafter\let\csname if@filesw\expandafter\endcsname + \csname iffalse\endcsname +\fi +% \end{macrocode} +% Mimick \LaTeX's commands to define control sequences. +% \changes{bbplain-1.0e}{1996/02/22}{Provide a more complete emulation +% of \cs{DeclareRobustCommand} and \cs{newcommand}} +% \begin{macrocode} +\def\newcommand{\@star@or@long\new@command} +\def\new@command#1{% + \@testopt{\@newcommand#1}0} +\def\@newcommand#1[#2]{% + \@ifnextchar [{\@xargdef#1[#2]}% + {\@argdef#1[#2]}} +\long\def\@argdef#1[#2]#3{% + \@yargdef#1\@ne{#2}{#3}} +\long\def\@xargdef#1[#2][#3]#4{% + \expandafter\def\expandafter#1\expandafter{% + \expandafter\@protected@testopt\expandafter #1% + \csname\string#1\expandafter\endcsname{#3}}% + \expandafter\@yargdef \csname\string#1\endcsname + \tw@{#2}{#4}} +\long\def\@yargdef#1#2#3{% + \@tempcnta#3\relax + \advance \@tempcnta \@ne + \let\@hash@\relax + \edef\reserved@a{\ifx#2\tw@ [\@hash@1]\fi}% + \@tempcntb #2% + \@whilenum\@tempcntb <\@tempcnta + \do{% + \edef\reserved@a{\reserved@a\@hash@\the\@tempcntb}% + \advance\@tempcntb \@ne}% + \let\@hash@##% + \l@ngrel@x\expandafter\def\expandafter#1\reserved@a} +\let\providecommand\newcommand +% \end{macrocode} +% +% \begin{macrocode} +\def\DeclareRobustCommand{\@star@or@long\declare@robustcommand} +\def\declare@robustcommand#1{% + \edef\reserved@a{\string#1}% + \def\reserved@b{#1}% + \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}% + \edef#1{% + \ifx\reserved@a\reserved@b + \noexpand\x@protect + \noexpand#1% + \fi + \noexpand\protect + \expandafter\noexpand\csname + \expandafter\@gobble\string#1 \endcsname + }% + \expandafter\new@command\csname + \expandafter\@gobble\string#1 \endcsname +} +\def\x@protect#1{% + \ifx\protect\@typeset@protect\else + \@x@protect#1% + \fi +} +\def\@x@protect#1\fi#2#3{% + \fi\protect#1% +} +% \end{macrocode} +% +% The following little macro |\in@| is taken from latex.ltx; it +% checks whether its first argument is part of its second +% argument. It uses the boolean |\in@|; allocating a new boolean +% inside conditionally executed code is not possible, hence the +% construct with the temporary definition of |\bbl@tempa|. +% \changes{bbplain-1.0o}{1998/07/02}{Added definition of \cs{in@}} +% \begin{macrocode} +\def\bbl@tmpa{\csname newif\endcsname\ifin@} +\ifx\in@\@undefined + \def\in@#1#2{% + \def\in@@##1#1##2##3\in@@{% + \ifx\in@##2\in@false\else\in@true\fi}% + \in@@#2#1\in@\in@@} +\else + \let\bbl@tmpa\@empty +\fi +\bbl@tmpa +% \end{macrocode} +% +% \LaTeX\ has a macro to check whether a certain package was loaded +% with specific options. The command has two extra arguments which +% are code to be executed in either the true or false case. +% This is used to detect whether the document needs one of the +% accents to be activated (\Lopt{activegrave} and +% \Lopt{activeacute}). For plain \TeX\ we assume that the user +% wants them to be active by default. Therefore the only thing we +% do is execute the third argument (the code for the true case). +% +% \begin{macrocode} +\def\@ifpackagewith#1#2#3#4{% + #3} +% \end{macrocode} +% The \LaTeX\ macro |\@ifl@aded| checks whether a file was +% loaded. This functionality is not needed for plain \TeX\ but we +% need the macro to be defined as a no-op. +% \changes{bbplain-1.0p}{1999/04/27}{Added \cs{@ifl@aded} as a no-op} +% \begin{macrocode} +\def\@ifl@aded#1#2#3#4{} +% \end{macrocode} +% +% \changes{bbplain-1.0e}{1996/01/15}{Added the \cs{newcommand} code} +% For the following code we need to make sure that the commands +% |\newcommand| and |\providecommand| exist with some sensible +% definition. They are not fully equivalent to their \LaTeXe\ +% versions; just enough to make things work in plain~\TeX +% environments. +% +% \changes{bbplain-1.0k}{1997/01/14}{\cs{newcount} is an \cs{outer} +% command, can't use it inside an \cs{if} construct} +% \changes{bbplain-1.0l}{1997/01/19}{Mixed up the definition of +% \cs{@tempcntb}} +% \begin{macrocode} +\ifx\@tempcnta\@undefined + \csname newcount\endcsname\@tempcnta\relax +\fi +\ifx\@tempcntb\@undefined + \csname newcount\endcsname\@tempcntb\relax +\fi +% \end{macrocode} +% To prevent wasting two counters in \LaTeX$\:$2.09 (because +% counters with the same name are allocated later by it) we reset +% the counter that holds the next free counter (|\count10|). +% \begin{macrocode} +\ifx\bye\@undefined + \advance\count10 by -2\relax +\fi +\ifx\@ifnextchar\@undefined + \def\@ifnextchar#1#2#3{% + \let\reserved@d=#1% + \def\reserved@a{#2}\def\reserved@b{#3}% + \futurelet\@let@token\@ifnch} + \def\@ifnch{% + \ifx\@let@token\@sptoken + \let\reserved@c\@xifnch + \else + \ifx\@let@token\reserved@d + \let\reserved@c\reserved@a + \else + \let\reserved@c\reserved@b + \fi + \fi + \reserved@c} + \def\:{\let\@sptoken= } \: % this makes \@sptoken a space token + \def\:{\@xifnch} \expandafter\def\: {\futurelet\@let@token\@ifnch} +\fi +\def\@testopt#1#2{% + \@ifnextchar[{#1}{#1[#2]}} +\def\@protected@testopt#1{%% + \ifx\protect\@typeset@protect + \expandafter\@testopt + \else + \@x@protect#1% + \fi} +\long\def\@whilenum#1\do #2{\ifnum #1\relax #2\relax\@iwhilenum{#1\relax + #2\relax}\fi} +\long\def\@iwhilenum#1{\ifnum #1\expandafter\@iwhilenum + \else\expandafter\@gobble\fi{#1}} +% \end{macrocode} +% Code from \file{ltoutenc.dtx}, adapted for use in the plain \TeX\ +% environment. +% \begin{macrocode} +\def\DeclareTextCommand{% + \@dec@text@cmd\providecommand +} +\def\ProvideTextCommand{% + \@dec@text@cmd\providecommand +} +\def\DeclareTextSymbol#1#2#3{% + \@dec@text@cmd\chardef#1{#2}#3\relax +} +\def\@dec@text@cmd#1#2#3{% + \expandafter\def\expandafter#2% + \expandafter{% + \csname#3-cmd\expandafter\endcsname + \expandafter#2% + \csname#3\string#2\endcsname + }% +% \let\@ifdefinable\@rc@ifdefinable + \expandafter#1\csname#3\string#2\endcsname +} +\def\@current@cmd#1{% + \ifx\protect\@typeset@protect\else + \noexpand#1\expandafter\@gobble + \fi +} +\def\@changed@cmd#1#2{% + \ifx\protect\@typeset@protect + \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax + \expandafter\ifx\csname ?\string#1\endcsname\relax + \expandafter\def\csname ?\string#1\endcsname{% + \@changed@x@err{#1}% + }% + \fi + \global\expandafter\let + \csname\cf@encoding \string#1\expandafter\endcsname + \csname ?\string#1\endcsname + \fi + \csname\cf@encoding\string#1% + \expandafter\endcsname + \else + \noexpand#1% + \fi +} +\def\@changed@x@err#1{% + \errhelp{Your command will be ignored, type <return> to proceed}% + \errmessage{Command \protect#1 undefined in encoding \cf@encoding}} +\def\DeclareTextCommandDefault#1{% + \DeclareTextCommand#1?% +} +\def\ProvideTextCommandDefault#1{% + \ProvideTextCommand#1?% +} +\expandafter\let\csname OT1-cmd\endcsname\@current@cmd +\expandafter\let\csname?-cmd\endcsname\@changed@cmd +\def\DeclareTextAccent#1#2#3{% + \DeclareTextCommand#1{#2}[1]{\accent#3 ##1} +} +\def\DeclareTextCompositeCommand#1#2#3#4{% + \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname + \edef\reserved@b{\string##1}% + \edef\reserved@c{% + \expandafter\@strip@args\meaning\reserved@a:-\@strip@args}% + \ifx\reserved@b\reserved@c + \expandafter\expandafter\expandafter\ifx + \expandafter\@car\reserved@a\relax\relax\@nil + \@text@composite + \else + \edef\reserved@b##1{% + \def\expandafter\noexpand + \csname#2\string#1\endcsname####1{% + \noexpand\@text@composite + \expandafter\noexpand\csname#2\string#1\endcsname + ####1\noexpand\@empty\noexpand\@text@composite + {##1}% + }% + }% + \expandafter\reserved@b\expandafter{\reserved@a{##1}}% + \fi + \expandafter\def\csname\expandafter\string\csname + #2\endcsname\string#1-\string#3\endcsname{#4} + \else + \errhelp{Your command will be ignored, type <return> to proceed}% + \errmessage{\string\DeclareTextCompositeCommand\space used on + inappropriate command \protect#1} + \fi +} +\def\@text@composite#1#2#3\@text@composite{% + \expandafter\@text@composite@x + \csname\string#1-\string#2\endcsname +} +\def\@text@composite@x#1#2{% + \ifx#1\relax + #2% + \else + #1% + \fi +} +% +\def\@strip@args#1:#2-#3\@strip@args{#2} +\def\DeclareTextComposite#1#2#3#4{% + \def\reserved@a{\DeclareTextCompositeCommand#1{#2}{#3}}% + \bgroup + \lccode`\@=#4% + \lowercase{% + \egroup + \reserved@a @% + }% +} +% +\def\UseTextSymbol#1#2{% +% \let\@curr@enc\cf@encoding +% \@use@text@encoding{#1}% + #2% +% \@use@text@encoding\@curr@enc +} +\def\UseTextAccent#1#2#3{% +% \let\@curr@enc\cf@encoding +% \@use@text@encoding{#1}% +% #2{\@use@text@encoding\@curr@enc\selectfont#3}% +% \@use@text@encoding\@curr@enc +} +\def\@use@text@encoding#1{% +% \edef\f@encoding{#1}% +% \xdef\font@name{% +% \csname\curr@fontshape/\f@size\endcsname +% }% +% \pickup@font +% \font@name +% \@@enc@update +} +\def\DeclareTextSymbolDefault#1#2{% + \DeclareTextCommandDefault#1{\UseTextSymbol{#2}#1}% +} +\def\DeclareTextAccentDefault#1#2{% + \DeclareTextCommandDefault#1{\UseTextAccent{#2}#1}% +} +\def\cf@encoding{OT1} +% \end{macrocode} +% Currently we only use the \LaTeXe\ method for accents for those +% that are known to be made active in \emph{some} language +% definition file. +% \begin{macrocode} +\DeclareTextAccent{\"}{OT1}{127} +\DeclareTextAccent{\'}{OT1}{19} +\DeclareTextAccent{\^}{OT1}{94} +\DeclareTextAccent{\`}{OT1}{18} +\DeclareTextAccent{\~}{OT1}{126} +% \end{macrocode} +% The following control sequences are used in \file{babel.def} +% but are not defined for \textsc{plain} \TeX. +% \changes{bbplain-1.0f}{1996/07/10}{Added \cs{textquotedblright} and +% \cs{textquoteright}} +% \changes{bbplain-1.0g}{1996/08/15}{Added \cs{ss} and \cs{i}} +% \changes{bbplain-1.0r}{2000/10/02}{Added \cs{textquotedblleft} and +% \cs{textquoteleft}} +% \begin{macrocode} +\DeclareTextSymbol{\textquotedblleft}{OT1}{92} +\DeclareTextSymbol{\textquotedblright}{OT1}{`\"} +\DeclareTextSymbol{\textquoteleft}{OT1}{`\`} +\DeclareTextSymbol{\textquoteright}{OT1}{`\'} +\DeclareTextSymbol{\i}{OT1}{16} +\DeclareTextSymbol{\ss}{OT1}{25} +% \end{macrocode} +% For a couple of languages we need the \LaTeX-control sequence +% |\scriptsize| to be available. Because plain \TeX\ doesn't have +% such a sofisticated font mechanism as \LaTeX\ has, we just |\let| +% it to |\sevenrm|. +% \changes{bbplain-1.0f}{1996/07/10}{Added definition of +% \cs{scriptsize}} +% \begin{macrocode} +\ifx\scriptsize\@undefined + \let\scriptsize\sevenrm +\fi +%</code> +% \end{macrocode} +% +\endinput +%% +%% \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 \~} diff --git a/Master/texmf-dist/source/generic/babel/breton.dtx b/Master/texmf-dist/source/generic/babel/breton.dtx new file mode 100644 index 00000000000..e87500aaf14 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/breton.dtx @@ -0,0 +1,365 @@ +% \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{263} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{breton.dtx} +%</dtx> +%<code>\ProvidesLanguage{breton} +%\fi +%\ProvidesFile{breton.dtx} + [2005/03/29 v1.0h Breton support from the babel system] +%\iffalse +%% File `breton.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Breton Language Definition File +%% Copyright (C) 1994 - 2005 +%% by Christian Rolland +% Universite de Bretagne occidentale +% Departement d'informatique +% 6, avenue Le Gorgeu +% BP 452 +% 29275 Brest Cedex -- FRANCE +% Christian.Rolland at univ-brest.fr (Internet) +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Breton language definition file. It is based on the +% language definition file for french, version 4.5c +%<*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{breton.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{breton.dtx} +% \changes{breton-1.0e}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \changes{breton-1.0}{1994/09/21}{First release} +% +% \section{The Breton language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate.} defines all the language-specific macros for the Breton +% language. +% +% There are not really typographic rules for the Breton +% language. It is a local language (it's one of the celtic +% languages) which is spoken in Brittany (West of France). So we +% have a synthesis between french typographic rules and english +% typographic rules. The characters \texttt{:}, \texttt{;}, +% \texttt{!} and \texttt{?} are made active in order to get a +% whitespace automatically before these characters. +% +% \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{breton-1.0e}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{breton}\captionsbreton +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{breton} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@breton| to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\l@breton\@undefined + \@nopatterns{Breton} + \adddialect\l@breton0\fi +% \end{macrocode} +% The next step consists of defining commands to switch to the +% English language. The reason for this is that a user might want +% to switch back and forth between languages. +% +% \begin{macro}{\captionsbreton} +% The macro |\captionsbreton| defines all strings used in the +% four standard document classes provided with \LaTeX. +% \changes{breton-1.0b}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{breton-1.0h}{2000/09/19}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionsbreton{% + \def\prefacename{Rakskrid}% + \def\refname{Daveenno\`u}% + \def\abstractname{Dvierra\~n}% + \def\bibname{Lennadurezh}% + \def\chaptername{Pennad}% + \def\appendixname{Stagadenn}% + \def\contentsname{Taolenn}% + \def\listfigurename{Listenn ar Figurenno\`u}% + \def\listtablename{Listenn an taolenno\`u}% + \def\indexname{Meneger}% + \def\figurename{Figurenn}% + \def\tablename{Taolenn}% + \def\partname{Lodenn}% + \def\enclname{Diello\`u kevret}% + \def\ccname{Eilskrid da}% + \def\headtoname{evit} + \def\pagename{Pajenn}% + \def\seename{Gwelout}% + \def\alsoname{Gwelout ivez}% + \def\proofname{Proof}% <-- needs translation + \def\glossaryname{Glossary}% <-- Needs translation +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datebreton} +% The macro |\datebreton| redefines the command +% |\today| to produce Breton dates. +% \changes{breton-1.0f}{1997/10/01}{Use \cs{edef} to define \cs{today} +% to save memory} +% \changes{breton-1.0f}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \begin{macrocode} +\def\datebreton{% + \def\today{\ifnum\day=1\relax 1\/$^{\rm a\tilde{n}}$\else + \number\day\fi \space a\space viz\space\ifcase\month\or + Genver\or C'hwevrer\or Meurzh\or Ebrel\or Mae\or Mezheven\or + Gouere\or Eost\or Gwengolo\or Here\or Du\or Kerzu\fi + \space\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasbreton} +% \begin{macro}{\noextrasbreton} +% The macro |\extrasbreton| will perform all the extra +% definitions needed for the Breton language. The macro +% |\noextrasbreton| is used to cancel the actions of +% |\extrasbreton|. +% +% The category code of the characters \texttt{:}, \texttt{;}, +% \texttt{!} and \texttt{?} is made |\active| to insert a little +% white space. +% \changes{breton-1.0b}{1995/03/07}{Use the new mechanism for dealing +% with active chars} +% \begin{macrocode} +\initiate@active@char{:} +\initiate@active@char{;} +\initiate@active@char{!} +\initiate@active@char{?} +% \end{macrocode} +% We specify that the breton group of shorthands should be used. +% \begin{macrocode} +\addto\extrasbreton{\languageshorthands{breton}} +% \end{macrocode} +% These characters are `turned on' once, later their definition may +% vary. +% \begin{macrocode} +\addto\extrasbreton{% + \bbl@activate{:}\bbl@activate{;}% + \bbl@activate{!}\bbl@activate{?}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{breton-1.0g}{1999/12/16}{Deactivate shorthands ouside of Breton} +% \begin{macrocode} +\addto\noextrasbreton{% + \bbl@deactivate{:}\bbl@deactivate{;}% + \bbl@deactivate{!}\bbl@deactivate{?}} +% \end{macrocode} +% +% The last thing |\extrasbreton| needs to do is to make sure that +% |\frenchspacing| is in effect. If this is not the case the +% execution of |\noextrasbreton| will switch it of again. +% \begin{macrocode} +\addto\extrasbreton{\bbl@frenchspacing} +\addto\noextrasbreton{\bbl@nonfrenchspacing} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\breton@sh@;@} +% We have to reduce the amount of white space before \texttt{;}, +% \texttt{:} and \texttt{!} when the user types a space in front of +% these characters. This should only happen outside mathmode, hence +% the test with |\ifmmode|. +% +% \begin{macrocode} +\declare@shorthand{breton}{;}{% + \ifmmode + \string;\space + \else\relax +% \end{macrocode} +% In horizontal mode we check for the presence of a `space' and +% replace it by a |\thinspace|. +% \begin{macrocode} + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\thinspace + \fi + \fi + \string;\space + \fi}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\breton@sh@:@} +% \begin{macro}{\breton@sh@!@} +% Because these definitions are very similar only one is displayed +% in a way that the definition can be easily checked. +% \begin{macrocode} +\declare@shorthand{breton}{:}{% + \ifmmode\string:\space + \else\relax + \ifhmode + \ifdim\lastskip>\z@\unskip\penalty\@M\thinspace\fi + \fi + \string:\space + \fi} +\declare@shorthand{breton}{!}{% + \ifmmode\string!\space + \else\relax + \ifhmode + \ifdim\lastskip>\z@\unskip\penalty\@M\thinspace\fi + \fi + \string!\space + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\breton@sh@?@} +% For the question mark something different has to be done. In this +% case the amount of white space that replaces the space character +% depends on the dimensions of the font. +% \begin{macrocode} +\declare@shorthand{breton}{?}{% + \ifmmode + \string?\space + \else\relax + \ifhmode + \ifdim\lastskip>\z@ + \unskip + \kern\fontdimen2\font + \kern-1.4\fontdimen3\font + \fi + \fi + \string?\space + \fi} +% \end{macrocode} +% \end{macro} +% +% All that is left to do now is provide the breton user with some +% extra utilities. +% +% Some definitions for special characters. +% \begin{macrocode} +\DeclareTextSymbol{\at}{OT1}{64} +\DeclareTextSymbol{\at}{T1}{64} +\DeclareTextSymbolDefault{\at}{OT1} +\DeclareTextSymbol{\boi}{OT1}{92} +\DeclareTextSymbol{\boi}{T1}{16} +\DeclareTextSymbolDefault{\boi}{OT1} +\DeclareTextSymbol{\circonflexe}{OT1}{94} +\DeclareTextSymbol{\circonflexe}{T1}{2} +\DeclareTextSymbolDefault{\circonflexe}{OT1} +\DeclareTextSymbol{\tild}{OT1}{126} +\DeclareTextSymbol{\tild}{T1}{3} +\DeclareTextSymbolDefault{\tild}{OT1} +\DeclareTextSymbol{\degre}{OT1}{23} +\DeclareTextSymbol{\degre}{T1}{6} +\DeclareTextSymbolDefault{\degre}{OT1} +% \end{macrocode} +% +% The following macros are used in the redefinition of |\^| and +% |\"| to handle the letter i. +% \changes{breton-1.0c}{1995/07/07}{Postpone the +% \cs{DeclareTextCompositeCommand}s untill \cs{AtBeginDocument}} +% +% \begin{macrocode} +\AtBeginDocument{% + \DeclareTextCompositeCommand{\^}{OT1}{i}{\^\i} + \DeclareTextCompositeCommand{\"}{OT1}{i}{\"\i}} +% \end{macrocode} +% +% And some more macros for numbering. +% \begin{macrocode} +\def\kentan{1\/${}^{\rm a\tilde{n}}$} +\def\eil{2\/${}^{\rm l}$} +\def\re{\/${}^{\rm re}$} +\def\trede{3\re} +\def\pevare{4\re} +\def\vet{\/${}^{\rm vet}$} +\def\pempvet{5\vet} +% \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{breton-1.0e}{1996/11/02}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{breton} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/breton.ins b/Master/texmf-dist/source/generic/babel/breton.ins new file mode 100644 index 00000000000..595e0cba1bd --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/breton.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{breton.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{breton.ldf}{\from{breton.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/bulgarian.dtx b/Master/texmf-dist/source/generic/babel/bulgarian.dtx new file mode 100644 index 00000000000..decff6c221b --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/bulgarian.dtx @@ -0,0 +1,1037 @@ +% \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{1266} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{bulgarian.dtx} +%</dtx> +%<code>\ProvidesLanguage{bulgarian} + [2005/03/29 v1.0d Bulgarian support from the babel system] +% +%% File `bulgarian.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989-2005 +%% by Johannes Braams,TeXniek +% +%% Bulgarian Language Definition File +%% Copyright (C) 1995-2005 +%% by Georgi.Boshnakov <georgi.boshnakov at umist.ac.uk> +%% Johannes Braams,TeXniek +% +%% Adapted from russianb.dtx +%% by Georgi.Boshnakov <georgi.boshnakov at umist.ac.uk> +% +%% Please report errors to:J.L.Braams +%% babal at braams.cistron.nl +% +%<*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}} +\newcommand\pkg[1]{\texttt{#1}} +\begin{document} + \DocInput{bulgarian.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{bulgarian.dtx} +% +% \changes{bulgarian-0.99}{2000/06/10}{% +% This is a prerelease version of this file. +% Features needing further testing are removed.} +% +% \section{The Bulgarian language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. This file was initially derived from the August-1998 +% version of \file{russianb.dtx}. +% +% It is (reasonably) backward compatible with the 1994/1996 +% (non-babel) bulgarian style (bulgaria.sty) by Georgi +% Boshnakov---files prepared for that style should compile +% successfully (with vastly improved appearance due to usage of +% standard fonts).} provides the language-specific macros for the +% Bulgarian language. +% +% Users should take note of the vaious ``cyrillic'' dashes +% available now (see below). These should remove many causes of +% headache. Also, although by default the Bulgarian quotation marks +% will appear automatically when typesetting in Bulgarian, it is +% better to use the new commands \cs{"'} and \cs{"'} which +% explicitly typeset them. +% Note: automatic switch to Bulgarian quotation is withdrawn +% for the moment and may not be reintroduced at all. +% +% For this language the character |"| is made active. In +% table~\ref{tab:bulgarian-quote} an overview is given of its +% purpose. +% +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% \verb="|= & disable ligature at this position. \\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word. \\ +% |"---| & Cyrillic emdash in plain text. \\ +% |"--~| & Cyrillic emdash in compound names (surnames). \\ +% |"--*| & Cyrillic emdash for denoting direct speech. \\ +% |""| & like |"-|, but producing no hyphen sign +% (for compound words with hyphen, e.g.\ |x-""y| +% or some other signs as ``disable/enable''). \\ +% |"~| & for a compound word mark without a breakpoint. \\ +% |"=| & for a compound word mark with a breakpoint, allowing +% hyphenation in the composing words. \\ +% |",| & thinspace for initials with a breakpoint +% in following surname. \\ +% |"`| & for German left double quotes +% (looks like ,\kern-0.08em,). \\ +% |"'| & for German right double quotes (looks like ``). \\%'' +% |"<| & for French left double quotes (looks like $<\!\!<$).\\ +% |">| & for French right double quotes (looks like $>\!\!>$).\\ +% \end{tabular} +% \caption{The extra definitions made +% by\file{bulgarian}}\label{tab:bulgarian-quote} +% \end{center} +% \end{table} +% +% The quotes in table~\ref{tab:bulgarian-quote} can also be typeset +% by using the commands in table~\ref{tab:bmore-quote}. +% +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |\cdash---| & Cyrillic emdash in plain text. \\ +% |\cdash--~| & Cyrillic emdash in compound names (surnames). \\ +% |\cdash--*| & Cyrillic emdash for denoting direct speech. \\ +% |\glqq| & for German left double quotes +% (looks like,\kern-0.08em,). \\ +% |\grqq| & for German right double quotes (looks like ``).\\%'' +% |\flqq| & for French left double quotes (looks like $<\!\!<$).\\ +% |\frqq| & for French right double quotes (looks like $>\!\!>$).\\ +% |\dq| & the original quotes character (|"|). +% \end{tabular} +% \caption{More commands which produce quotes, defined +% by \babel}\label{tab:bmore-quote} +% \end{center} +% \end{table} +% +% The French quotes are also available as ligatures `|<<|' and +% `|>>|' in 8-bit Cyrillic font encodings (\texttt{LCY}, +% \texttt{X2}, \texttt{T2*}) and as `|<|' and `|>|' characters in +% 7-bit Cyrillic font encodings (\texttt{OT2} and \texttt{LWN}). +% +% The quotation marks traditionally used in Bulgarian were borrowed +% from German o they keep their original names. French quotation +% marks may be seen as well in older books. +% +% \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. +% +% \begin{macrocode} +%<*code> +\LdfInit{bulgarian}{captionsbulgarian} +% \end{macrocode} +% +% When this file is read as an option, i.e., by the |\usepackage| +% command, \texttt{bulgarian} will be an `unknown' language, in +% which case we have to make it known. So we check for the +% existence of |\l@bulgarian| to see whether we have to do +% something here. +% +% \begin{macrocode} +\ifx\l@bulgarian\@undefined + \@nopatterns{Bulgarian} + \adddialect\l@bulgarian0 +\fi +% \end{macrocode} +% +% +% +% \begin{macro}{\latinencoding} +% +% We need to know the encoding for text that is supposed to be +% which is active at the end of the \babel\ package. If the +% \pkg{fontenc} package is loaded later, then \ldots too bad! +% +% \begin{macrocode} +\let\latinencoding\cf@encoding +% \end{macrocode} +% +% \end{macro} +% +% The user may choose between different available Cyrillic +% encodings---e.g., \texttt{X2}, \texttt{LCY}, or \texttt{LWN}. +% If the user wants to use a font encoding other than the default +% (\texttt{T2A}), he has to load the corresponding file +% \emph{before} \file{bulgarian.sty}. +% This may be done in the following way: +% +% \begin{verbatim} +% \usepackage[LCY,OT1]{fontenc} %overwrite the default encoding; +% \usepackage[english,bulgarian]{babel} +% \end{verbatim} +% \unskip +% +% Note: most people would prefer the \texttt{T2A} to \texttt{X2}, +% because \texttt{X2} does not contain Latin letters, and users +% should be very careful to switch the language every time they +% want to typeset a Latin word inside a Bulgarian phrase or vice +% versa. On the other hand, switching the language is a good +% practice anyway. With a decent text processing program it does +% not involve more work than switching between the Bulgarian and +% English keyboard. Moreover that the far most common disruption +% occurs as a result of forgetting to switch back to cyrillic +% keyboard. +% +% We parse the |\cdp@list| containing the encodings known to +% \LaTeX\ in the order they were loaded. We set the +% |\cyrillicencoding| to the \emph{last} loaded encoding in the +% list of supported Cyrillic encodings: \texttt{OT2}, \texttt{LWN}, +% \texttt{LCY}, \texttt{X2}, \texttt{T2C}, \texttt{T2B}, +% \texttt{T2A}, if any. +% +% +% \begin{macrocode} +\def\reserved@a#1#2{% + \edef\reserved@b{#1}% + \edef\reserved@c{#2}% + \ifx\reserved@b\reserved@c + \let\cyrillicencoding\reserved@c + \fi} +\def\cdp@elt#1#2#3#4{% + \reserved@a{#1}{OT2}% + \reserved@a{#1}{LWN}% + \reserved@a{#1}{LCY}% + \reserved@a{#1}{X2}% + \reserved@a{#1}{T2C}% + \reserved@a{#1}{T2B}% + \reserved@a{#1}{T2A}} +\cdp@list +% \end{macrocode} +% +% Now, if |\cyrillicencoding| is undefined, then the user did not +% load any of supported encodings. So, we have to set +% |\cyrillicencoding| to some default value. We test the presence +% of the encoding definition files in the order from less +% preferable to more preferable encodings. We use the lowercase +% names (i.e., \file{lcyenc.def} instead of \file{LCYenc.def}). +% +% \begin{macrocode} +\ifx\cyrillicencoding\undefined + \IfFileExists{ot2enc.def}{\def\cyrillicencoding{OT2}}\relax + \IfFileExists{lwnenc.def}{\def\cyrillicencoding{LWN}}\relax + \IfFileExists{lcyenc.def}{\def\cyrillicencoding{LCY}}\relax + \IfFileExists{x2enc.def}{\def\cyrillicencoding{X2}}\relax + \IfFileExists{t2cenc.def}{\def\cyrillicencoding{T2C}}\relax + \IfFileExists{t2benc.def}{\def\cyrillicencoding{T2B}}\relax + \IfFileExists{t2aenc.def}{\def\cyrillicencoding{T2A}}\relax +% \end{macrocode} +% +% If |\cyrillicencoding| is still undefined, then the user seems +% not to have a properly installed distribution. A fatal error. +% +% \begin{macrocode} +\ifx\cyrillicencoding\undefined + \PackageError{babel}% + {No Cyrillic encoding definition files were found}% + {Your installation is incomplete. \MessageBreak + You need at least one of the following files: \MessageBreak + \space\space + x2enc.def, t2aenc.def, t2benc.def, t2cenc.def, \MessageBreak + \space\space + lcyenc.def, lwnenc.def, ot2enc.def.}% + \else +% \end{macrocode} +% +% We avoid |\usepackage[\cyrillicencoding]{fontenc}| because we +% don't want to force the switch of |\encodingdefault|. +% +% \begin{macrocode} + \lowercase + \expandafter{\expandafter\input\cyrillicencoding enc.def\relax}% + \fi +\fi +% \end{macrocode} +% +% \begin{verbatim} +% \PackageInfo{babel} +% {Using `\cyrillicencoding' as a default Cyrillic encoding}% +% \end{verbatim} +% \unskip +% +% +% +% \begin{macrocode} +\DeclareRobustCommand{\Bulgarian}{% + \fontencoding\cyrillicencoding\selectfont + \let\encodingdefault\cyrillicencoding + \expandafter\set@hyphenmins\bulgarianhyphenmins + \language\l@bulgarian} +\DeclareRobustCommand{\English}{% + \fontencoding\latinencoding\selectfont + \let\encodingdefault\latinencoding + \expandafter\set@hyphenmins\englishhyphenmins + \language\l@english} +\let\Bul\Bulgarian +\let\Bg\Bulgarian +\let\cyrillictext\Bulgarian +\let\cyr\Bulgarian +\let\Eng\English +\def\selectenglanguage{\selectlanguage{english}} +\def\selectbglanguage{\selectlanguage{bulgarian}} +% \end{macrocode} +% +% Since the \texttt{X2} encoding does not contain Latin letters,we +% should make some redefinitions of \LaTeX\ macros which implicitly +% produce Latin letters. +% +% +% \begin{macrocode} +\expandafter\ifx\csname T@X2\endcsname\relax\else +% \end{macrocode} +% +% We put |\latinencoding| in braces to avoid problems with |\@alph| +% inside minipages (e.g., footnotes inside minipages) where +% |\@alph| is expanded and we get for example `|\fontencoding OT1|' +% (|\fontencoding| is robust). +% +% \changes{bulgarian-1.0c}{2003/06/14}{Added missing closing brace} +% \begin{macrocode} + \def\@Alph@eng#1{{\fontencoding{\latinencoding}\selectfont + \ifcase#1\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or + K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or + X\or Y\or Z\else \@ctrerr\fi}}% + \def\@alph@eng#1{{\fontencoding{\latinencoding}\selectfont + \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or + x\or y\or z\else \@ctrerr\fi}}% + \let\@Alph\@Alph@eng + \let\@alph\@alph@eng +% \end{macrocode} +% +% Unfortunately, the commands |\AA| and |\aa| are not encoding +% dependent in \LaTeX\ (unlike e.g., |\oe| or |\DH|). They are +% defined as |\r{A}| and |\r{a}|. This leads to unpredictable +% results when the font encoding does not contain the Latin letters +% `A' and `a' (like \texttt{X2}). +% +% \begin{macrocode} + \DeclareTextSymbolDefault{\AA}{OT1} + \DeclareTextSymbolDefault{\aa}{OT1} + \DeclareTextCommand{\AA}{OT1}{\r A} + \DeclareTextCommand{\aa}{OT1}{\r a} +\fi +% \end{macrocode} +% +% The following block redefines the character class of uppercase +% Greek letters and some accents, if it is equal to 7 (variable +% family), to avoid incorrect results if the font encoding in some +% math family does not contain these characters in places of OT1 +% encoding. The code was taken from |amsmath.dtx|. See comments and +% further explanation there. +% +% \begin{macrocode} +\begingroup\catcode`\"=12 +% uppercase greek letters: +\def\@tempa#1{\expandafter\@tempb\meaning#1\relax\relax\relax\relax + "0000\@nil#1} +\def\@tempb#1"#2#3#4#5#6\@nil#7{% +\ifnum"#2=7 \count@"1#3#4#5\relax +\ifnum\count@<"1000 \else \global\mathchardef#7="0#3#4#5\relax \fi + \fi} +\@tempa\Gamma\@tempa\Delta\@tempa\Theta\@tempa\Lambda\@tempa\Xi +\@tempa\Pi\@tempa\Sigma\@tempa\Upsilon\@tempa\Phi\@tempa\Psi +\@tempa\Omega +% some accents: +\def\@tempa#1#2\@nil{\def\@tempc{#1}}\def\@tempb{\mathaccent} +\expandafter\@tempa\hat\relax\relax\@nil +\ifx\@tempb\@tempc +\def\@tempa#1\@nil{#1}% +\def\@tempb#1{\afterassignment\@tempa\mathchardef\@tempc=}% +\def\do#1"#2{} +\def\@tempd#1{\expandafter\@tempb#1\@nil + \ifnum\@tempc>"FFF + \xdef#1{\mathaccent"\expandafter\do\meaning\@tempc\space}% + \fi} +\@tempd\hat\@tempd\check\@tempd\tilde\@tempd\acute\@tempd\grave +\@tempd\dot\@tempd\ddot\@tempd\breve\@tempd\bar +\fi +\endgroup +% \end{macrocode} +% +% The user should use the \pkg{inputenc} package when any 8-bit +% Cyrillic font encoding is used, selecting one of the Cyrillic +% input encodings. We do not assume any default input encoding, so +% the user should explicitly call the \pkg{inputenc} package by +% |\usepackage{inputenc}|. We also removed |\AtBeginDocument|, so +% \pkg{inputenc} should be used before \babel. +% +% \begin{macrocode} +\@ifpackageloaded{inputenc}{}{% +\def\reserved@a{LWN}% +\ifx\reserved@a\cyrillicencoding\else +\def\reserved@a{OT2}% +\ifx\reserved@a\cyrillicencoding\else +\PackageWarning{babel}% +{No input encoding specified for Bulgarian language}\fi\fi} +% \end{macrocode} +% +% Now we define two commands that offer the possibility to switch +% between Cyrillic and Roman encodings. +% +% \begin{macro}{\cyrillictext} +% \begin{macro}{\latintext} +% +% The command |\cyrillictext| will switch from Latin font encoding +% to the Cyrillic font encoding, the command |\latintext| switches +% back. This assumes that the `normal' font encoding is a Latin +% one. These commands are \emph{declarations}, for shorter peaces +% of text the commands |\textlatin| and |\textcyrillic| can be +% used. +% +% We comment out |\latintext| since it is defined in the core of +% babel (babel.def). We add the shorthand |\lat| for |\latintext|. +% Note that |\cyrillictext| has been defined above. +% +% \begin{macrocode} +% \DeclareRobustCommand{\latintext}{% +% \fontencoding{\latinencoding}\selectfont +% \def\encodingdefault{\latinencoding}} +\let\lat\latintext +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% +% \begin{macro}{\textcyrillic} +% \begin{macro}{\textlatin} +% +% These commands take an argument which is then typeset using the +% requested font encoding. +% |\textlatin| is commented out since it is defined in the core of +% babel. (It is defined there with |\DeclareRobustCommand| instead.) +% +% \begin{macrocode} +\DeclareTextFontCommand{\textcyrillic}{\cyrillictext} +% \DeclareTextFontCommand{\textlatin}{\latintext} +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% +% The next step consists of defining commands to switch to (and +% from) the Bulgarian language. +% +% \begin{macro}{\captionsbulgarian} +% +% The macro |\captionsbulgarian| defines all strings used in the +% four standard document classes provided with \LaTeX. The two +% commands |\cyr| and |\lat| activate Cyrillic resp. Latin encoding. +% +% \begin{macrocode} +\addto\captionsbulgarian{% + \def\prefacename{% + {\cyr\CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr}}% + \def\refname{% + {\cyr\CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra}}% + \def\abstractname{% + {\cyr\CYRA\cyrb\cyrs\cyrt\cyrr\cyra\cyrk\cyrt}}% + \def\bibname{% + {\cyr\CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri\cyrya}}% + \def\chaptername{% + {\cyr\CYRG\cyrl\cyra\cyrv\cyra}}% + \def\appendixname{% + {\cyr\CYRP\cyrr\cyri\cyrl\cyro\cyrzh\cyre\cyrn\cyri\cyre}}% + \def\contentsname{% + {\cyr\CYRS\cyrhrdsn\cyrd\cyrhrdsn\cyrr\cyrzh\cyra\cyrn\cyri\cyre}}% + \def\listfigurename{% + {\cyr\CYRS\cyrp\cyri\cyrs\cyrhrdsn\cyrk\ \cyrn\cyra\ \cyrf\cyri\cyrg\cyru\cyrr\cyri\cyrt\cyre}}% + \def\listtablename{% + {\cyr\CYRS\cyrp\cyri\cyrs\cyrhrdsn\cyrk\ \cyrn\cyra\ \cyrt\cyra\cyrb\cyrl\cyri\cyrc\cyri\cyrt\cyre}}% + \def\indexname{% + {\cyr\CYRA\cyrz\cyrb\cyru\cyrch\cyre\cyrn\ \cyru\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl}}% + \def\authorname{% + {\cyr\CYRI\cyrm\cyre\cyrn\cyre\cyrn\ \cyru\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl}}% + \def\figurename{% + {\cyr\CYRF\cyri\cyrg\cyru\cyrr\cyra}}% + \def\tablename{% + {\cyr\CYRT\cyra\cyrb\cyrl\cyri\cyrc\cyra}}% + \def\partname{% + {\cyr\CYRCH\cyra\cyrs\cyrt}}% + \def\enclname{% + {\cyr\CYRP\cyrr\cyri\cyrl\cyro\cyrzh\cyre\cyrn\cyri\cyrya}}% + \def\ccname{% + {\cyr\cyrk\cyro\cyrp\cyri\cyrya}}% + \def\headtoname{% + {\cyr\CYRZ\cyra}}% + \def\pagename{% + {\cyr\CYRS\cyrt\cyrr.}}% + \def\seename{% + {\cyr\cyrv\cyrzh.}}% + \def\alsoname{% + {\cyr\cyrv\cyrzh.\ \cyrs\cyrhrdsn\cyrshch\cyro\ \cyri}}% + \def\proofname{Proof}% <-- Needs translation + \def\glossaryname{Glossary}% <-- Needs translation +} +% \end{macrocode} +% \end{macro} +%% +% \begin{macro}{\datebulgarian} +% +% The macro |\datebulgarian| redefines the command |\today| to +% produce Bulgarian dates. +% It also provides the command |\todayRoman| which produces the +% date with the month in capital roman numerals, a popular format +% for dates in Bulgarian. +% +% \begin{macrocode} +\def\datebulgarian{% + \def\month@bulgarian{\ifcase\month\or + \cyrya\cyrn\cyru\cyra\cyrr\cyri\or + \cyrf\cyre\cyrv\cyrr\cyru\cyra\cyrr\cyri\or + \cyrm\cyra\cyrr\cyrt\or + \cyra\cyrp\cyrr\cyri\cyrl\or + \cyrm\cyra\cyrishrt\or + \cyryu\cyrn\cyri\or + \cyryu\cyrl\cyri\or + \cyra\cyrv\cyrg\cyru\cyrs\cyrt\or + \cyrs\cyre\cyrp\cyrt\cyre\cyrm\cyrv\cyrr\cyri\or + \cyro\cyrk\cyrt\cyro\cyrm\cyrv\cyrr\cyri\or + \cyrn\cyro\cyre\cyrm\cyrv\cyrr\cyri\or + \cyrd\cyre\cyrk\cyre\cyrm\cyrv\cyrr\cyri\fi}% + \def\month@Roman{\expandafter\@Roman\month}% + \def\today{\number\day~\month@bulgarian\ \number\year~\cyrg.}% + \def\todayRoman{\number\day.\,\month@Roman.\,\number\year~\cyrg.}% +} +% \end{macrocode} +% +% \end{macro} +% +% +% +% \begin{macro}{\todayRoman} +% +% The month is often written with roman numbers in Bulgarian dates. +% Here we define date in this format: +% +% \begin{macrocode} +\def\Romannumeral#1{\uppercase\expandafter{\romannumeral #1}} +\def\todayRoman{\number\day.\Romannumeral{\month}.\number\year~\cyrg.} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\extrasbulgarian} +% +% The macro |\extrasbulgarian| will perform all the extra +% definitions needed for the Bulgarian language. +% The macro |\noextrasbulgarian| is used to cancel the actions of +% |\extrasbulgarian|. +% +% The first action we define is to switch on the selected Cyrillic +% encoding whenever we enter `bulgarian'. +% +% \begin{macrocode} +\addto\extrasbulgarian{\cyrillictext} +% \end{macrocode} +% +% When the encoding definition file was processed by \LaTeX\ the +% current font encoding is stored in |\latinencoding|, assuming +% that \LaTeX\ uses \texttt{T1} or \texttt{OT1} as +% default. Therefore we switch back to |\latinencoding| whenever +% the Bulgarian language is no longer `active'. +% +% \begin{macrocode} +\addto\noextrasbulgarian{\latintext} +% \end{macrocode} +% +% For Bulgarian the \texttt{"} character also is made active. +% +% \begin{macrocode} +\initiate@active@char{"} +% \end{macrocode} +% +% The code above is necessary because we need extra active +% characters. The character |"| is used as indicated in +% table~\ref{tab:bulgarian-quote}. We specify that the Bulgarian +% group of shorthands should be used. +% +% \begin{macrocode} +\addto\extrasbulgarian{\languageshorthands{bulgarian}} +% \end{macrocode} +% +% These characters are `turned on' once, later their definition may +% vary. +% +% \begin{macrocode} +\addto\extrasbulgarian{% + \bbl@activate{"}} +\addto\noextrasbulgarian{% + \bbl@deactivate{"}} +% \end{macrocode} +% +% The \texttt{X2} and \texttt{T2*} encodings do not contain +% |spanish_shriek| and |spanish_query| symbols; as a consequence, +% the ligatures `|?`|' and `|!`|' do not work with them (these +% characters are useless for Cyrillic texts anyway). But we define +% the shorthands to emulate these ligatures (optionally). +% +% We do not use |\latinencoding| here (but instead explicitly use +% \texttt{OT1}) because the user may choose \texttt{T2A} to be the +% primary encoding, but it does not contain these characters. +% +% \begin{macrocode} +%<*spanishligs> +\declare@shorthand{bulgarian}{?`}{\UseTextSymbol{OT1}\textquestiondown} +\declare@shorthand{bulgarian}{!`}{\UseTextSymbol{OT1}\textexclamdown} +%</spanishligs> +% \end{macrocode} +% +% To be able to define the function of `|"|', we first define a +% couple of `support' macros. +% +% \begin{macro}{\dq} +% +% We save the original double quote character in |\dq| to keep it +% available, the math accent |\"|can now be typed as `|"|'. +% \changes{bulgarian-1.0c}{2003/04/10}{repaired typo} +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\reserved@a{\endgroup + \def\@SS{\mathchar"7019} + \def\dq{"}} +\reserved@a +% \end{macrocode} +% +% \end{macro} +% +% Now we can define the doublequote macros: german and french +% quotes. We use definitions of these quotes made in babel.sty. +% The french quotes are contained in the \texttt{T2*} encodings. +% +% \begin{macrocode} +\declare@shorthand{bulgarian}{"`}{\glqq} +\declare@shorthand{bulgarian}{"'}{\grqq} +\declare@shorthand{bulgarian}{"<}{\flqq} +\declare@shorthand{bulgarian}{">}{\frqq} +% \end{macrocode} +% +% Some additional commands: +% +% \begin{macrocode} +\declare@shorthand{bulgarian}{""}{\hskip\z@skip} +\declare@shorthand{bulgarian}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{bulgarian}{"=}{\nobreak-\hskip\z@skip} +\declare@shorthand{bulgarian}{"|}{% +\textormath{\nobreak\discretionary{-}{}{\kern.03em}% +\allowhyphens}{}} +% \end{macrocode} +% +% The next two macros for |"-| and |"---| are somewhat different. +% We must check whether the second token is a hyphen character: +% +% \begin{macrocode} +\declare@shorthand{bulgarian}{"-}{% +% \end{macrocode} +% +% If the next token is `|-|', we typeset an emdash, otherwise a +% hyphen sign: +% +% \begin{macrocode} + \def\bulgarian@sh@tmp{% + \if\bulgarian@sh@next-\expandafter\bulgarian@sh@emdash + \else\expandafter\bulgarian@sh@hyphen\fi + }% +% \end{macrocode} +% +% \TeX\ looks for the next token after the first `|-|': the meaning +% of this token is written to |\bulgarian@sh@next| and +% |\bulgarian@sh@tmp| is called. +% +% \begin{macrocode} + \futurelet\bulgarian@sh@next\bulgarian@sh@tmp} +% \end{macrocode} +% +% Here are the definitions of hyphen and emdash. First the hyphen: +% +% \begin{macrocode} +\def\bulgarian@sh@hyphen{\nobreak\-\bbl@allowhyphens} +% \end{macrocode} +% +% For the emdash definition, there are the two parameters: we must +% `eat' two last hyphen signs of our emdash \dots : +% +% \begin{macrocode} +\def\bulgarian@sh@emdash#1#2{\cdash-#1#2} +% \end{macrocode} +% +% \begin{macro}{\cdash} +% +% \dots\ these two parameters are useful for another macro: +% |\cdash|: +% +% \begin{macrocode} +\ifx\cdash\undefined % should be defined earlier +\def\cdash#1#2#3{\def\tempx@{#3}% +\def\tempa@{-}\def empb@{~}\def empc@{*}% + \ifx\tempx@\tempa@\@Acdash\else + \ifx\tempx@\tempb@\@Bcdash\else + \ifx\tempx@\tempc@\@Ccdash\else + \errmessage{Wrong usage of cdash}\fi\fi\fi} +% \end{macrocode} +% +% second parameter (or third for |\cdash|) shows what kind of emdash +% to create in next step +% \begin{center} +% \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}} +% |"---| & ordinary (plain) Cyrillic emdash inside text: +% an unbreakable thinspace will be inserted before only in case of +% a \textit{space} before the dash (it is necessary for dashes after +% display maths formulae: there could be lists, enumerations etc.\ +% started with ``---where $a$ is ...'' i.e., the dash starts a line). +% (Firstly there were planned rather soft rules for user:he may put +% a space before the dash or not. But it is difficult to place this +% thinspace automatically, i.e., by checking modes because after +% display formulae \TeX{} uses horizontal mode. Maybe there is a +% misunderstanding? Maybe there is another way?) After a dash +% a breakable thinspace is always placed; \\ +% \end{tabular} +% \end{center} +% +% +% \begin{macrocode} +% What is more grammatically: .2em or .2\fontdimen6\font? +\def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi +\cyrdash\hskip.2em\ignorespaces}% +% \end{macrocode} +% +% \begin{center} +% \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}} +% |"--~| & emdash in compound names or surnames +% (like Mendeleev--Klapeiron); this dash has no space characters +% around; after the dash some space is added +% |\exhyphenalty| \\ +% \end{tabular} +% \end{center} +% +% \begin{macrocode} +\def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi + \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}% +% \end{macrocode} +% +% \begin{center} +% \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}} +% |"--*| & for denoting direct speech (a space like |\enskip| +% must follow the emdash); \\ +% \end{tabular} +% \end{center} +% +% \begin{macrocode} +\def\@Ccdash{\leavevmode + \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}% +%\fi +% \end{macrocode} +% +% \end{macro} +% +% +% +% \begin{macro}{\cyrdash} +% +% Finally the macro for ``body'' of the Cyrillic emdash. +% The |\cyrdash| macro will be defined in case this macro hasn't +% been defined in a fontenc file. For T2*fonts, cyrdash will be +% placed in the code of the English emdash thus it uses ligature +% |---|. +% +% \begin{macrocode} +% Is there an IF necessary? +\ifx\cyrdash\undefined +\def\cyrdash{\hbox to.8em{--\hss--}} +\fi +% \end{macrocode} +% +% \end{macro} +% +% Here a really new macro---to place thinspace between initials. +% This macro used instead of |\,| allows hyphenation in the +% following surname. +% +% \begin{macrocode} +\declare@shorthand{bulgarian}{",}{\nobreak\hskip.2em\ignorespaces} +% \end{macrocode} +% +% The Bulgarian hyphenation patterns can be used with +% |\lefthyphenmin| and |\righthyphenmin| set to~2. +% \changes{bulgarian-1.0b}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +\fi +% \end{macrocode} +% +% Now the action |\extrasbulgarian| has to execute is to make sure +% that the command |\frenchspacing| is in effect. If this is not +% the case the execution of |\noextrasbulgarian| will switch it off +% again. +% +% \begin{macrocode} +\addto\extrasbulgarian{\bbl@frenchspacing} +\addto\noextrasbulgarian{\bbl@nonfrenchspacing} +% \end{macrocode} +% +% Make the double quotes produce the traditional quotes +% used in Bulgarian texts (these are the German quotes). +% +% \begin{macrocode} +% \initiate@active@char{`} +% \initiate@active@char{'} +% \addto\extrasbulgarian{% +% \bbl@activate{`}} +% \addto\extrasbulgarian{% +% \bbl@activate{'}} +% \addto\noextrasbulgarian{% +% \bbl@deactivate{`}} +% \addto\noextrasbulgarian{% +% \bbl@deactivate{'}} +% \def\mlron{\bbl@activate{`}\bbl@activate{'}} +% \def\mlroff{\bbl@deactivate{`}\bbl@deactivate{'}} +% \declare@shorthand{bulgarian}{``}{\glqq} +% \declare@shorthand{bulgarian}{''}{\grqq} +% \end{macrocode} +% +% \end{macro} +% +% Next we add a new enumeration style for Bulgarian manuscripts with +% Cyrillic letters,and later on we define some math operator names in +% accordance with Bulgarian typesetting traditions. +% +% \begin{macro}{\@Alph@bul} +% +% We begin by defining |\@Alph@bul| which works like |\@Alph|, but +% produces (uppercase) Cyrillic letters intead of Latin ones. The +% letters ISHRT, HRDSN and SFTSN are skipped, as usual for such +% enumeration. +% +% \begin{macrocode} +\def\enumBul{\let\@Alph\@Alph@bul \let\@alph\@alph@bul} +\def\enumEng{\let\@Alph\@Alph@eng \let\@alph\@alph@eng} +\def\enumLat{\let\@Alph\@Alph@eng \let\@alph\@alph@eng} +\addto\extrasbulgarian{\enumBul} +\addto\noextrasbulgarian{\enumLat} +\def\@Alph@bul#1{% + \ifcase#1\or + \CYRA\or \CYRB\or \CYRV\or \CYRG\or \CYRD\or \CYRE\or \CYRZH\or + \CYRZ\or \CYRI\or \CYRK\or \CYRL\or \CYRM\or \CYRN\or \CYRO\or + \CYRP\or \CYRR\or \CYRS\or \CYRT\or \CYRU\or \CYRF\or \CYRH\or + \CYRC\or \CYRCH\or \CYRSH\or \CYRSHCH\or \CYRYU\or \CYRYA\else + \@ctrerr\fi + } +\def\@Alph@eng#1{% + \ifcase#1\or + A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M\or + N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else + \@ctrerr\fi + } +% \end{macrocode} +% +% \end{macro} +% +% +% +% \begin{macro}{\@alph@bul} +% +% The macro |\@alph@bul| is similar to |\@Alph@bul|; +% it produces lowercase Bulgarian letters. +% +% \begin{macrocode} +\def\@alph@bul#1{% + \ifcase#1\or + \cyra\or \cyrb\or \cyrv\or \cyrg\or \cyrd\or \cyre\or \cyrzh\or + \cyrz\or \cyri\or \cyrk\or \cyrl\or \cyrm\or \cyrn\or \cyro\or + \cyrp\or \cyrr\or \cyrs\or \cyrt\or \cyru\or \cyrf\or \cyrh\or + \cyrc\or \cyrch\or \cyrsh\or \cyrshch\or \cyryu\or \cyrya\else + \@ctrerr\fi + } +\def\@alph@eng#1{% + \ifcase#1\or + a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m\or + n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else + \@ctrerr\fi + } +% \end{macrocode} +% +% \end{macro} +% +% Set up default Cyrillic math alphabets. To use Cyrillic letters +% in math mode user should load the |textmath| package +% \emph{before} loading fontenc package (or \babel). Note,that by +% default Cyrillic letters are taken from upright font in math mode +% (unlike Latin letters). +% +% \begin{macrocode} +%\RequirePackage{textmath} +\@ifundefined{sym\cyrillicencoding letters}{}{% +\SetSymbolFont{\cyrillicencoding letters}{bold}\cyrillicencoding + \rmdefault\bfdefault\updefault +\DeclareSymbolFontAlphabet\cyrmathrm{\cyrillicencoding letters} +% \end{macrocode} +% +% And we need a few commands to be able to switch to different +% variants. +% +% \begin{macrocode} +\DeclareMathAlphabet\cyrmathbf\cyrillicencoding + \rmdefault\bfdefault\updefault +\DeclareMathAlphabet\cyrmathsf\cyrillicencoding + \sfdefault\mddefault\updefault +\DeclareMathAlphabet\cyrmathit\cyrillicencoding + \rmdefault\mddefault\itdefault +\DeclareMathAlphabet\cyrmathtt\cyrillicencoding + \ttdefault\mddefault\updefault +\SetMathAlphabet\cyrmathsf{bold}\cyrillicencoding + \sfdefault\bfdefault\updefault +\SetMathAlphabet\cyrmathit{bold}\cyrillicencoding + \rmdefault\bfdefault\itdefault +} +% \end{macrocode} +% +% Some math functions in Bulgarian math books have other names: +% e.g., \texttt{sinh} in Bulgarian is written as \texttt{sh} +% etc. So we define a number of new math operators. +% +% |\sinh|: +% +% \begin{macrocode} +\def\sh{\mathop{\operator@font sh}\nolimits} +% \end{macrocode} +% +% |\cosh|: +% +% \begin{macrocode} +\def\ch{\mathop{\operator@font ch}\nolimits} +% \end{macrocode} +% +% |\tan|: +% +% \begin{macrocode} +\def\tg{\mathop{\operator@font tg}\nolimits} +% \end{macrocode} +% +% |\arctan|: +% +% \begin{macrocode} +\def\arctg{\mathop{\operator@font arctg}\nolimits} +% \end{macrocode} +% +% |\arccot|: +% +% \begin{macrocode} +\def\arcctg{\mathop{\operator@font arcctg}\nolimits} +% \end{macrocode} +% +% The following macro conflicts with |\th| defined in Latin~1 +% encoding: +% |\tanh|: +% \changes{bulgarian-1.0d}{2004/05/21}{Change definition of \cs{th} +% only for this language} +% \begin{macrocode} +\addto\extrasrussian{% + \babel@save{\th}% + \let\ltx@th\th + \def\th{\textormath{\ltx@th}% + {\mathop{\operator@font th}\nolimits}}% + } +% \end{macrocode} +% +% |\cot|: +% +% \begin{macrocode} +\def\ctg{\mathop{\operator@font ctg}\nolimits} +% \end{macrocode} +% +% |\coth|: +% +% \begin{macrocode} +\def\cth{\mathop{\operator@font cth}\nolimits} +% \end{macrocode} +% +% |\csc|: +% +% \begin{macrocode} +\def\cosec{\mathop{\operator@font cosec}\nolimits} +% \end{macrocode} +% +% This is for compatibility with older Bulgarian packages. +% +% \begin{macrocode} +\DeclareRobustCommand{\No}{% + \ifmmode{\nfss@text{\textnumero}}\else\textnumero\fi} +% \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. +% +% \begin{macrocode} +\ldf@finish{bulgarian} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/bulgarian.ins b/Master/texmf-dist/source/generic/babel/bulgarian.ins new file mode 100644 index 00000000000..85fa800211d --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/bulgarian.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{2000/09/21} +\def\batchfile{bulgarian.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{bulgarian.ldf}{\from{bulgarian.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/source/generic/babel/catalan.dtx b/Master/texmf-dist/source/generic/babel/catalan.dtx new file mode 100644 index 00000000000..b8185af4df8 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/catalan.dtx @@ -0,0 +1,712 @@ +% \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{517} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{catalan.dtx} +%</dtx> +%<code>\ProvidesLanguage{catalan} +%\fi +%\ProvidesFile{catalan.dtx} + [2005/03/29 v2.2p Catalan support from the babel system] +%\iffalse +%% File `catalan.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Catalan Language Definition File +%% Copyright (C) 1991 - 2005 +%% by Goncal Badenes <badenes at imec.be> +%% Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams babel at braams.cistron.nl +%% +% This file is part of the babel system, it provides the source +% code for the Catalan language definition file. +% This file was developped out of spanish.sty and suggestions by +% Goncal Badenes <badenes at imec.be> and Joerg Knappen +% <knappen at vkpmzd.kph.uni-mainz.de>. +% +% The file spanish.sty was written by Julio Sanchez, +% (jsanchez@gmv.es) The code for the catalan language has been +% removed and now is in this file. +%<*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{catalan.dtx} +\end{document} +%</filedriver> +%\fi +% +% \GetFileInfo{catalan.dtx} +% +% \changes{catalan-2.0b}{1993/09/23}{Incorporated the changes from +% \file{spanish.sty}} +% \changes{catalan-2.1}{1994/02/27}{Update for \LaTeXe} +% \changes{catalan-2.1d}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{catalan-2.2b}{1995/07/04}{Made the activation of the grave +% and acute accents optional} +% \changes{catalan-2.2c}{1995/07/08}{Removed the use of the tilde for +% catalan} +% \changes{catalan-2.2f}{1996/07/13}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{catalan-2.2g}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning.} +% \changes{catalan-2.2k}{1999/05/05}{A wrong \cs{changes} entry made +% typesetting impossible} +% +% \section{The Catalan language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate.} defines all the language-specific macro's for the +% Catalan language. +% +% For this language only the double quote character (|"|) is made +% active by default. In table~\ref{tab:catalan-quote-def} an +% overview is given of the new macros defined and the new meanings +% of |"|. Additionally to that, the user can explicitly activate +% the acute accent or apostrophe (|'|) and/or the grave accent +% (|`|) characters by using the \Lopt{activeacute} and +% \Lopt{activegrave} options. In that case, the definitions shown +% in table~\ref{tab:catalan-quote-opt} also become +% available\footnote{Please note that if the acute accent character +% is active, it is necessary to take special care of coding +% apostrophes in a way which cannot be confounded with +% accents. Therefore, it is necessary to type \texttt{l'\{\}estri} +% instead of \texttt{l'estri}.}. +% +% \begin{table}[htb] +% \centering +% \begin{tabular}{lp{8cm}} +% |\l.l| & geminated-l digraph (similar to +% l$\cdot$l). |\L.L| produces the uppercase version.\\ +% |\lgem| & geminated-l digraph (similar to +% l$\cdot$l). |\Lgem| produces the uppercase version.\\ +% |\up| & Macro to help typing raised ordinals, like {1\raise +% 1ex\hbox{\small er}}. Takes one argument.\\ +% |\-| & like the old |\-|, but allowing hyphenation +% in the rest of the word. \\ +% |"i| & i with diaeresis, allowing hyphenation +% in the rest of the word. Valid for the following vowels: +% i, u (both lowercase and uppercase).\\ +% |"c| & c-cedilla (\c{c}). Valid for both uppercase and +% lowercase c.\\ +% |"l| & geminated-l digraph (similar to +% l$\cdot$l). Valid for both uppercase and lowercase l.\\ +% |"<| & French left double quotes (similar to $<<$).\\ +% |">| & French right double quotes (similar to $>>$).\\ +% |"-| & explicit hyphen sign, allowing hyphenation +% in the rest of the word.\\ +% \verb="|= & disable ligature at this position. +% \end{tabular} +% \caption{Extra definitions made by file \file{catalan.ldf} +% (activated by default)} +% \label{tab:catalan-quote-def} +% \end{table} +% +% \begin{table}[htb] +% \centering +% \begin{tabular}{lp{8cm}} +% |'e| & acute accented a, allowing hyphenation +% in the rest of the word. Valid for the following +% vowels: e, i, o, u (both lowercase and uppercase).\\ +% |`a| & grave accented a, allowing hyphenation +% in the rest of the word. Valid for the following +% vowels: a, e, o (both lowercase and uppercase). +% \end{tabular} +% \caption{Extra definitions made by file \file{catalan.ldf} +% (activated only when using the options \Lopt{activeacute} and +% \Lopt{activegrave})} +% \label{tab:catalan-quote-opt} +% \end{table} +% These active accents characters behave according to their original +% definitions if not followed by one of the characters indicated in +% that table. +% +% \StopEventually{} +% +% \changes{catalan-2.0}{1993/07/11}{Removed code to load +% \file{latexhax.com}} +% +% 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{catalan-2.2g}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{catalan}\captionscatalan +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{catalan} could be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@catalan| to see whether we have to do something here. +% +% \changes{catalan-2.1d}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@catalan\@undefined + \@nopatterns{Catalan} + \adddialect\l@catalan0 +\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Catalan language. +% +% \begin{macro}{\catalanhyphenmins} +% This macro is used to store the correct values of the hyphenation +% parameters |\lefthyphenmin| and |\righthyphenmin|. +% \changes{catalan-2.2n}{2001/02/19}{Set the hyphenation parameters +% both to two as required by \texttt{cahyph.tex}} +% \begin{macrocode} +\providehyphenmins{catalan}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\captionscatalan} +% The macro |\captionscatalan| defines all strings used +% in the four standard documentclasses provided with \LaTeX. +% \changes{catalan-1.1}{1993/07/11}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{catalan-2.0}{1993/07/11}{Added some names} +% \changes{catalan-2.1d}{1994/11/09}{Added a few missing translations} +% \changes{catalan-2.2b}{1995/07/03}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{catalan-2.2d}{1995/07/10}{added translation of Proof} +% \changes{catalan-2.2d}{1995/11/15}{Translations revised} +% \changes{catalan-2.2m}{2000/09/19}{Added \cs{glossaryname}} +% \changes{catalan-2.2p}{2003/11/17}{Inserted translation for +% Glossary} +% \begin{macrocode} +\addto\captionscatalan{% + \def\prefacename{Pr\`oleg}% + \def\refname{Refer\`encies}% + \def\abstractname{Resum}% + \def\bibname{Bibliografia}% + \def\chaptername{Cap\'{\i}tol}% + \def\appendixname{Ap\`endix}% + \def\contentsname{\'Index}% + \def\listfigurename{\'Index de figures}% + \def\listtablename{\'Index de taules}% + \def\indexname{\'Index alfab\`etic}% + \def\figurename{Figura}% + \def\tablename{Taula}% + \def\partname{Part}% + \def\enclname{Adjunt}% + \def\ccname{C\`opies a}% + \def\headtoname{A}% + \def\pagename{P\`agina}% + \def\seename{Vegeu}% + \def\alsoname{Vegeu tamb\'e}% + \def\proofname{Demostraci\'o}% + \def\glossaryname{Glossari}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datecatalan} +% The macro |\datecatalan| redefines the command |\today| to +% produce Catalan dates. Months are written in +% lowercase\footnote{This seems to be the common practice. See for +% example: E.~Coromina, \emph{El 9 Nou: Manual de redacci\'o i +% estil}, Ed.~Eumo, Vic, 1993}. +% \changes{catalan-2.2b}{1995/06/18}{Month names in lowercase} +% \changes{catalan-2.2i}{1997/10/01}{Use \cs{edef} to define \cs{today} +% to save memory} +% \changes{catalan-2.2i}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \begin{macrocode} +\def\datecatalan{% + \def\today{\number\day~\ifcase\month\or + de gener\or de febrer\or de mar\c{c}\or d'abril\or de maig\or + de juny\or de juliol\or d'agost\or de setembre\or d'octubre\or + de novembre\or de desembre\fi + \space de~\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrascatalan} +% \changes{catalan-2.0}{1993/07/11}{Macro completely rewritten} +% \changes{catalan-2.2a}{1995/03/11}{Handling of active characters +% completely rewritten} +% +% \begin{macro}{\noextrascatalan} +% \changes{catalan-2.0}{1993/07/11}{Macro completely rewritten} +% +% The macro |\extrascatalan| will perform all the extra definitions +% needed for the Catalan language. The macro |\noextrascatalan| is +% used to cancel the actions of |\extrascatalan|. +% +% \changes{catalan-2.2e}{1995/11/10}{Now give the apostrophe a +% lowercase code} +% To improve hyphenation we give the grave character (\texttt{'}) a +% non-zero lower case code; when we do that \TeX\ will find more +% breakpoints in words that contain this character in its r\^ole as +% apostrophe. +% \begin{macrocode} +\addto\extrascatalan{% + \lccode`'=`'} +\addto\noextrascatalan{% + \lccode`'=0} +% \end{macrocode} +% +% For Catalan, some characters are made active or are redefined. In +% particular, the \texttt{"} character receives a new meaning; this +% can also happen for the \texttt{'} character and the \texttt{`} +% character when the options \Lopt{activegrave} and/or +% \Lopt{activeacute} are specified. +% +% \changes{catalan-2.2b}{1995/07/07}{Make activating the accent +% characters optional} +% \changes{catalan-2.2e}{1995/08/17}{Need to split up the +% \cs{@ifpackagewith} statements} +% \begin{macrocode} +\addto\extrascatalan{\languageshorthands{catalan}} +\initiate@active@char{"} +\addto\extrascatalan{\bbl@activate{"}} +% \end{macrocode} +% Because the grave character is being used in constructs such as +% |\catcode``=\active| it needs to have it's original category code%'' +% when the auxiliary file is being read. Note that this file is +% read twice, once at the beginning of the document; then there is +% no problem; but the second time it is read at the end of the +% document to check whether any labels changes. It's this second +% time round that the actived grave character leads to error +% messages. +% \changes{catalan-2.2l}{1999/11/29}{Make sure that the grave accent +% has catcode 12 \emph{before} it is made \cs{active}} +% \begin{macrocode} +\@ifpackagewith{babel}{activegrave}{% + \AtBeginDocument{% + \if@filesw\immediate\write\@auxout{\catcode096=12}\fi} + \initiate@active@char{`}% + }{} +\@ifpackagewith{babel}{activegrave}{% + \addto\extrascatalan{\bbl@activate{`}}% + }{} +\@ifpackagewith{babel}{activeacute}{% + \initiate@active@char{'}% + }{} +\@ifpackagewith{babel}{activeacute}{% + \addto\extrascatalan{\bbl@activate{'}}% + }{} +% \end{macrocode} +% Now make sure that the characters that have been turned into +% shorthanfd characters expand to `normal' characters outside the +% catalan environment. +% \changes{catalan-2.2l}{1999/12/16}{Don't forget do deactivate the +% shorthands} +% \begin{macrocode} +\addto\noextrascatalan{\bbl@deactivate{"}} +\@ifpackagewith{babel}{activegrave}{% + \addto\noextrascatalan{\bbl@deactivate{`}}}{} +\@ifpackagewith{babel}{activeacute}{% + \addto\noextrascatalan{\bbl@deactivate{'}}}{} +% \end{macrocode} +% +% \changes{catalan-2.2a}{1995/03/11}{All the code for handling active +% characters is now moved to \file{babel.def}} +% +% Apart from the active characters some other macros get a new +% definition. Therefore we store the current ones to be able +% to restore them later. +% When their current meanings are saved, we can safely redefine +% them. +% +% We provide new definitions for the accent macros when one or +% both of the options \Lopt{activegrave} or \Lopt{activeacute} +% were specified. +% +% \changes{catalan-2.2h}{1997/01/08}{Added some comment signs to +% prevent unwanted spaces in the output} +% \begin{macrocode} +\addto\extrascatalan{% + \babel@save\"% + \def\"{\protect\@umlaut}}% +\@ifpackagewith{babel}{activegrave}{% + \babel@save\`% + \addto\extrascatalan{\def\`{\protect\@grave}} + }{} +\@ifpackagewith{babel}{activeacute}{% + \babel@save\'% + \addto\extrascatalan{\def\'{\protect\@acute}} + }{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% All the code above is necessary because we need a few extra +% active characters. These characters are then used as indicated in +% tables~\ref{tab:catalan-quote-def} +% and~\ref{tab:catalan-quote-opt}. +% +% \begin{macro}{\dieresis} +% \begin{macro}{\textacute} +% \changes{catalan-2.1d}{1994/06/26}{Renamed from \cs{acute} as that +% is a \cs{mathaccent}} +% \begin{macro}{\textgrave} +% +% The original definition of |\"| is stored as |\dieresis|, because +% the definition of |\"| might not be the default plain \TeX\ +% one. If the user uses \textsc{PostScript} fonts with the Adobe +% font encoding the \texttt{"} character is not in the same +% position as in Knuth's font encoding. In this case |\"| will not +% be defined as |\accent"7F 1|, but as |\accent'310 #1|. Something +% similar happens when using fonts that follow the Cork +% encoding. For this reason we save the definition of |\"| and use +% that in the definition of other macros. We do likewise for |\`|, +% and |\'|. +% \begin{macrocode} +\let\dieresis\" +\@ifpackagewith{babel}{activegrave}{\let\textgrave\`}{} +\@ifpackagewith{babel}{activeacute}{\let\textacute\'}{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@umlaut} +% \begin{macro}{\@acute} +% \begin{macro}{\@grave} +% We check the encoding and if not using T1, we make the accents +% expand but enabling hyphenation beyond the accent. If this is the +% case, not all break positions will be found in words that contain +% accents, but this is a limitation in \TeX. An unsolved problem +% here is that the encoding can change at any time. The definitions +% below are made in such a way that a change between two 256-char +% encodings are supported, but changes between a 128-char and a +% 256-char encoding are not properly supported. We check if T1 is +% in use. If not, we will give a warning and proceed redefining the +% accent macros so that \TeX{} at least finds the breaks that are +% not too close to the accent. The warning will only be printed to +% the log file. +% +% \begin{macrocode} +\ifx\DeclareFontShape\@undefined + \wlog{Warning: You are using an old LaTeX} + \wlog{Some word breaks will not be found.} + \def\@umlaut#1{\allowhyphens\dieresis{#1}\allowhyphens} + \@ifpackagewith{babel}{activeacute}{% + \def\@acute#1{\allowhyphens\textacute{#1}\allowhyphens}}{} + \@ifpackagewith{babel}{activegrave}{% + \def\@grave#1{\allowhyphens\textgrave{#1}\allowhyphens}}{} +\else + \ifx\f@encoding\bbl@t@one + \let\@umlaut\dieresis + \@ifpackagewith{babel}{activeacute}{% + \let\@acute\textacute}{} + \@ifpackagewith{babel}{activegrave}{% + \let\@grave\textgrave}{} + \else + \wlog{Warning: You are using encoding \f@encoding\space + instead of T1.} + \wlog{Some word breaks will not be found.} + \def\@umlaut#1{\allowhyphens\dieresis{#1}\allowhyphens} + \@ifpackagewith{babel}{activeacute}{% + \def\@acute#1{\allowhyphens\textacute{#1}\allowhyphens}}{} + \@ifpackagewith{babel}{activegrave}{% + \def\@grave#1{\allowhyphens\textgrave{#1}\allowhyphens}}{} + \fi +\fi +% \end{macrocode} +% If the user setup has extended fonts, the Ferguson macros are +% required to be defined. We check for their existance and, if +% defined, expand to whatever they are defined to. For instance, +% |\'a| would check for the existance of a |\@ac@a| macro. It is +% assumed to expand to the code of the accented letter. If it is +% not defined, we assume that no extended codes are available and +% expand to the original definition but enabling hyphenation beyond +% the accent. This is as best as we can do. It is better if you +% have extended fonts or ML-\TeX{} because the hyphenation +% algorithm can work on the whole word. The following macros are +% directly derived from ML-\TeX{}.\footnote{A problem is perceived +% here with these macros when used in a multilingual environment +% where extended hyphenation patterns are available for some but +% not all languages. Assume that no extended patterns exist at some +% site for French and that \file{french.sty} would adopt this +% scheme too. In that case, \mbox{\texttt{'e}} in French would +% produce the combined accented letter, but hyphenation around it +% would be suppressed. Both language options would need an +% independent method to know whether they have extended patterns +% available. The precise impact of this problem and the possible +% solutions are under study.} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \changes{catalan-2.2a}{1995/03/14}{All the code to deal with active +% characters is now in \file{babel.def}} +% +% Now we can define our shorthands: the diaeresis and ``ela +% geminada'' support, +% \begin{macrocode} +\declare@shorthand{catalan}{"i}{\textormath{\@umlaut\i}{\ddot\imath}} +\declare@shorthand{catalan}{"l}{\lgem{}} +\declare@shorthand{catalan}{"u}{\textormath{\@umlaut u}{\ddot u}} +\declare@shorthand{catalan}{"I}{\textormath{\@umlaut I}{\ddot I}} +\declare@shorthand{catalan}{"L}{\Lgem{}} +\declare@shorthand{catalan}{"U}{\textormath{\@umlaut U}{\ddot U}} +% \end{macrocode} +% cedille, +% \changes{catalan-2.2c}{1995/07/08}{cedile now produced by double +% quote shorthand} +% \begin{macrocode} +\declare@shorthand{catalan}{"c}{\textormath{\c c}{^{\prime} c}} +\declare@shorthand{catalan}{"C}{\textormath{\c C}{^{\prime} C}} +% \end{macrocode} +% `french' quote characters, +% \changes{catalan-2.2c}{1995/07/08}{Added shorthands for guillemets} +% \changes{catalan-2.2i}{1997/04/03}{Removed empty groups after +% guillemot characters} +% \begin{macrocode} +\declare@shorthand{catalan}{"<}{% + \textormath{\guillemotleft}{\mbox{\guillemotleft}}} +\declare@shorthand{catalan}{">}{% + \textormath{\guillemotright}{\mbox{\guillemotright}}} +% \end{macrocode} +% grave accents, +% \changes{catalan-2.2e}{1996/03/05}{Added `{}` as an axtra shorthand} +% \begin{macrocode} +\@ifpackagewith{babel}{activegrave}{% + \declare@shorthand{catalan}{`a}{\textormath{\@grave a}{\grave a}} + \declare@shorthand{catalan}{`e}{\textormath{\@grave e}{\grave e}} + \declare@shorthand{catalan}{`o}{\textormath{\@grave o}{\grave o}} + \declare@shorthand{catalan}{`A}{\textormath{\@grave A}{\grave A}} + \declare@shorthand{catalan}{`E}{\textormath{\@grave E}{\grave E}} + \declare@shorthand{catalan}{`O}{\textormath{\@grave O}{\grave O}} + \declare@shorthand{catalan}{``}{\textquotedblleft}%'' + }{} +% \end{macrocode} +% acute accents, +% \changes{catalan-2.2b}{1995/07/03}{Changed mathmode definition of +% acute shorthands to expand to a single prime followed by the next +% character in the input} +% \changes{catalan-2.2e}{1995/09/05}{Added vertical bar as argument to +% active acute} +% \begin{macrocode} +\@ifpackagewith{babel}{activeacute}{% + \declare@shorthand{catalan}{'a}{\textormath{\@acute a}{^{\prime} a}} + \declare@shorthand{catalan}{'e}{\textormath{\@acute e}{^{\prime} e}} + \declare@shorthand{catalan}{'i}{\textormath{\@acute\i{}}{^{\prime} i}} + \declare@shorthand{catalan}{'o}{\textormath{\@acute o}{^{\prime} o}} + \declare@shorthand{catalan}{'u}{\textormath{\@acute u}{^{\prime} u}} + \declare@shorthand{catalan}{'A}{\textormath{\@acute A}{^{\prime} A}} + \declare@shorthand{catalan}{'E}{\textormath{\@acute E}{^{\prime} E}} + \declare@shorthand{catalan}{'I}{\textormath{\@acute I}{^{\prime} I}} + \declare@shorthand{catalan}{'O}{\textormath{\@acute O}{^{\prime} O}} + \declare@shorthand{catalan}{'U}{\textormath{\@acute U}{^{\prime} U}} + \declare@shorthand{catalan}{'|}{% + \textormath{\csname normal@char\string'\endcsname}{^{\prime}}} +% \end{macrocode} +% the acute accent, +% \changes{catalan-2.2c}{1995/07/08}{Added '{}' as an axtra shorthand, +% removed 'n as a shorthand} +% \begin{macrocode} + \declare@shorthand{catalan}{''}{% + \textormath{\textquotedblright}{\sp\bgroup\prim@s'}} + }{} +% \end{macrocode} +% and finally, some support definitions +% \begin{macrocode} +\declare@shorthand{catalan}{"-}{\nobreak-\bbl@allowhyphens} +\declare@shorthand{catalan}{"|}{% + \textormath{\nobreak\discretionary{-}{}{\kern.03em}% + \allowhyphens}{}} +% \end{macrocode} +% +% \begin{macro}{\-} +% +% All that is left now is the redefinition of |\-|. The new version +% of |\-| should indicate an extra hyphenation position, while +% allowing other hyphenation positions to be generated +% automatically. The standard behaviour of \TeX\ in this respect is +% unfortunate for Catalan but not as much as for Dutch or German, +% where long compound words are quite normal and all one needs is a +% means to indicate an extra hyphenation position on top of the +% ones that \TeX\ can generate from the hyphenation +% patterns. However, the average length of words in Catalan makes +% this desirable and so it is kept here. +% +% \begin{macrocode} +\addto\extrascatalan{% + \babel@save{\-}% + \def\-{\bbl@allowhyphens\discretionary{-}{}{}\bbl@allowhyphens}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\lgem} +% \begin{macro}{\Lgem} +% \changes{catalan-2.2b}{1995/06/18}{Added support for typing the +% catalan ``ela geminada'' with the macros \cs{lgem} and \cs{Lgem}} +% \changes{catalan-2.2f}{1996/09/20}{Added a check for math mode as +% the use of \cs{lgem} and \cs{Lgem} in math mode is not sensible.} +% +% Here we define a macro for typing the catalan ``ela geminada'' +% (geminated l). The macros |\lgem| and |\Lgem| have been chosen +% for its lowercase and uppercase representation, +% respectively\footnote{The macro names \cs{ll} and \cs{LL} were +% not taken because of the fact that \cs{ll} is already used in +% mathematical mode.}. +% +% The code used in the actual macro used is a combination of the +% one proposed by Feruglio and Fuster\footnote{G.~Valiente and +% R.~Fuster, Typesetting Catalan Texts with \TeX, \emph{TUGboat} +% \textbf{14}(3), 1993.} and the proposal\footnote{G. Valiente, +% Modern Catalan Typographical Conventions, \emph{TUGboat} +% \textbf{16}(3), 1995.} from Valiente presented at the \TeX\ Users +% Group Annual Meeting in 1995. This last proposal has not been +% fully implemented due to its limitation to CM fonts. +% \begin{macrocode} +\newdimen\leftllkern \newdimen\rightllkern \newdimen\raiselldim +\def\lgem{% + \ifmmode + \csname normal@char\string"\endcsname l% + \else + \leftllkern=0pt\rightllkern=0pt\raiselldim=0pt% + \setbox0\hbox{l}\setbox1\hbox{l\/}\setbox2\hbox{.}% + \advance\raiselldim by \the\fontdimen5\the\font + \advance\raiselldim by -\ht2% + \leftllkern=-.25\wd0% + \advance\leftllkern by \wd1% + \advance\leftllkern by -\wd0% + \rightllkern=-.25\wd0% + \advance\rightllkern by -\wd1% + \advance\rightllkern by \wd0% + \allowhyphens\discretionary{l-}{l}% + {\hbox{l}\kern\leftllkern\raise\raiselldim\hbox{.}% + \kern\rightllkern\hbox{l}}\allowhyphens + \fi + } +\def\Lgem{% + \ifmmode + \csname normal@char\string"\endcsname L% + \else + \leftllkern=0pt\rightllkern=0pt\raiselldim=0pt% + \setbox0\hbox{L}\setbox1\hbox{L\/}\setbox2\hbox{.}% + \advance\raiselldim by .5\ht0% + \advance\raiselldim by -.5\ht2% + \leftllkern=-.125\wd0% + \advance\leftllkern by \wd1% + \advance\leftllkern by -\wd0% + \rightllkern=-\wd0% + \divide\rightllkern by 6% + \advance\rightllkern by -\wd1% + \advance\rightllkern by \wd0% + \allowhyphens\discretionary{L-}{L}% + {\hbox{L}\kern\leftllkern\raise\raiselldim\hbox{.}% + \kern\rightllkern\hbox{L}}\allowhyphens + \fi + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\l.l} +% \begin{macro}{\L.L} +% \changes{catalan-2.2e}{1996/06/26}{Added redefinition of \cs{l} and +% \cs{L}} +% It seems to be the most natural way of entering the ``ela +% geminda'' to use the sequences |\l.l| and |\L.L|. These are not +% really macro's by themselves but the macros |\l| and |\L| with +% delimited arguments. Therefor we define two macros that check if +% the next character is a period. If not the ``polish l'' will be +% typeset, otherwise a ``ela geminada'' will be typeset and the +% next two tokens will be `eaten'. +% \changes{catalan-2.2o}{2003/09/19}{Postpone the redefinition of +% \cs{l} and \cs{L} until begin document to prevent overwriting by +% fontenc} +% \begin{macrocode} +\AtBeginDocument{% + \let\lslash\l + \let\Lslash\L + \DeclareRobustCommand\l{\@ifnextchar.\bbl@l\lslash} + \DeclareRobustCommand\L{\@ifnextchar.\bbl@L\Lslash}} +\def\bbl@l#1#2{\lgem} +\def\bbl@L#1#2{\Lgem} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\up} +% +% A macro for typesetting things like 1\raise1ex\hbox{\small er} as +% proposed by Raymon Seroul\footnote{This macro has been borrowed +% from francais.dtx}. +% \changes{catalan-2.2b}{1995/06/18}{Added definition of macro +% \cs{up}, which can be used to type ordinals} +% \changes{catalan-2.2e}{1996/02/29}{Now use \cs{textsuperscript} and +% make \cs{up} robust} +% \begin{macrocode} +\DeclareRobustCommand*{\up}[1]{\textsuperscript{#1}} +% \end{macrocode} +% \end{macro} +% +% 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{catalan-2.2g}{1996/11/02}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{catalan} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/catalan.ins b/Master/texmf-dist/source/generic/babel/catalan.ins new file mode 100644 index 00000000000..982e9b8bbaf --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/catalan.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{catalan.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{catalan.ldf}{\from{catalan.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/croatian.dtx b/Master/texmf-dist/source/generic/babel/croatian.dtx new file mode 100644 index 00000000000..3389033b0b4 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/croatian.dtx @@ -0,0 +1,226 @@ +% \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{87} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{croatian.dtx} +%</dtx> +%<code>\ProvidesLanguage{croatian} +%\fi +%\ProvidesFile{croatian.dtx} + [2005/03/29 v1.3l Croatian support from the babel system] +%\iffalse +%% File `croatian.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Croatian language definition file. A contribution +% was made by Alan Pai\'{c} (paica@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{croatian.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{croatian.dtx} +% +% \changes{croatian-1.0a}{1991/07/15}{Renamed \file{babel.sty} in +% \file{babel.com}} +% \changes{croatian-1.0c}{1992/01/25}{Removed some typos} +% \changes{croatian-1.1}{1992/02/15}{Brought up-to-date with babel 3.2a} +% \changes{croatian-1.3}{1994/02/27}{Update for \LaTeXe} +% \changes{croatian-1.3g}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \section{The Croatian language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. A contribution was made by Alan Pai\'{c} +% (\texttt{paica@cernvm.cern.ch}).} defines all the +% language definition macros for the Croatian language. +% +% For this language currently no special definitions are needed or +% available. +% +% \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{croatian-1.3g}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{croatian}\captionscroatian +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{croatian} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@croatian| to see whether we have to do something here. +% +% \changes{croatian-1.0b}{1991/10/07}{Removed use of +% \cs{@ifundefined}} +% \changes{croatian-1.1}{1992/02/15}{Added a warning when no +% hyphenation patterns were loaded.} +% \begin{macrocode} +\ifx\l@croatian\@undefined + \@nopatterns{Croatian} + \adddialect\l@croatian0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Croatian language. +% +% \begin{macro}{\captionscroatian} +% The macro |\captionscroatian| defines all strings used +% in the four standard documentclasses provided with \LaTeX. +% \changes{croatian-1.1}{1992/02/15}{Added \cs{seename}, +% \cs{alsoname} and \cs{prefacename}} +% \changes{croatian-1.2}{1993/07/11}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{croatian-1.3d}{1995/05/08}{Added a few translations} +% \changes{croatian-1.3e}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{croatian-1.3f}{1996/01/18}{Added translation of Proof} +% \changes{croatian-1.3i}{1997/09/11}{Replaced some of the +% translations with `better' words} +% \changes{croatian-1.3k}{2000/09/19}{Added \cs{glossaryname}} +% \changes{croatian-1.3l}{2003/11/17}{Inserted translation for Glossary} +% \begin{macrocode} +\addto\captionscroatian{% + \def\prefacename{Predgovor}% + \def\refname{Literatura}% + \def\abstractname{Sa\v{z}etak}% + \def\bibname{Bibliografija}% + \def\chaptername{Poglavlje}% + \def\appendixname{Dodatak}% + \def\contentsname{Sadr\v{z}aj}% + \def\listfigurename{Popis slika}% + \def\listtablename{Popis tablica}% + \def\indexname{Indeks}% + \def\figurename{Slika}% + \def\tablename{Tablica}% + \def\partname{Dio}% + \def\enclname{Prilozi}% + \def\ccname{Kopije}% + \def\headtoname{Prima}% + \def\pagename{Stranica}% + \def\seename{Vidjeti}% + \def\alsoname{Vidjeti i}% + \def\proofname{Dokaz}% + \def\glossaryname{Kazalo}% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datecroatian} +% The macro |\datecroatian| redefines the command |\today| to +% produce Croatian dates. +% \changes{croatian-1.3f}{1996/01/18}{in croatian language, the +% genitive for the name of the month has to be used} +% \changes{croatian-1.3h}{1997/02/06}{\texttt{sijev\{c\}nja} should be +% \texttt{seij\cs{v}\{c\}nja} and there should be a period after +% the year} +% \changes{croatian-1.3i}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{croatian-1.3i}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \changes{croatian-1.3j}{1999/03/12}{changed \cs{od} into \cs{or}} +% \begin{macrocode} +\def\datecroatian{% + \def\today{\number\day.~\ifcase\month\or + sije\v{c}nja\or velja\v{c}e\or o\v{z}ujka\or travnja\or svibnja\or + lipnja\or srpnja\or kolovoza\or rujna\or listopada\or studenog\or + prosinca\fi \space \number\year.}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrascroatian} +% \begin{macro}{\noextrascroatian} +% The macro |\extrascroatian| will perform all the extra +% definitions needed for the Croatian language. The macro +% |\noextrascroatian| is used to cancel the actions of +% |\extrascroatian|. For the moment these macros are empty but +% they are defined for compatibility with the other language +% definition files. +% +% \begin{macrocode} +\addto\extrascroatian{} +\addto\noextrascroatian{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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{croatian-1.3g}{1996/11/02}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{croatian} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/croatian.ins b/Master/texmf-dist/source/generic/babel/croatian.ins new file mode 100644 index 00000000000..babb296ae01 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/croatian.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{croatian.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{croatian.ldf}{\from{croatian.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/czech.dtx b/Master/texmf-dist/source/generic/babel/czech.dtx new file mode 100644 index 00000000000..16f72d3f9bc --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/czech.dtx @@ -0,0 +1,276 @@ +% \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{190} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{czech.dtx} +%</dtx> +%<code>\ProvidesLanguage{czech} +%\fi +%\ProvidesFile{czech.dtx} + [2005/03/29 v1.3k Czech support from the babel system] +%\iffalse +%% File `czech.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Czech language definition file. +% Contributions were made by Milos Lokajicek (LOKAJICK@CERNVM). +%<*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{czech.dtx} +\end{document} +%</filedriver> +%\fi +% +% \GetFileInfo{czech.dtx} +% +% \changes{czech-1.0a}{1991/07/15}{Renamed babel.sty in babel.com} +% \changes{czech-1.1}{1992/02/15}{Brought up-to-date with babel 3.2a} +% \changes{czech-1.2}{1993/07/11}{Included some features from Kasal's +% czech.sty} +% \changes{czech-1.3}{1994/02/27}{Update for \LaTeXe} +% \changes{czech-1.3d}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{czech-1.3h}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \section{The Czech language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. Contributions were made by Milos Lokajicek +% (\texttt{LOKAJICK@CERNVM}).} defines all the language definition +% macros for the Czech language. +% +% For this language |\frenchspacing| is set and two macros |\q| and +% |\w| for easy access to two accents are defined. +% +% The command |\q| is used with the letters (\texttt{t}, +% \texttt{d}, \texttt{l}, and \texttt{L}) and adds a \texttt{'} to +% them to simulate a `hook' that should be there. The result looks +% like t\kern-2pt\char'47. The command |\w| is used to put the +% ring-accent which appears in \aa ngstr\o m over the letters +% \texttt{u} and \texttt{U}. +% +% \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{czech-1.3h}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{czech}\captionsczech +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{czech} will be an `unknown' language in which case +% we have to make it known. So we check for the existence of +% |\l@czech| to see whether we have to do something here. +% +% \changes{czech-1.0b}{1991/10/27}{Removed use of \cs{@ifundefined}} +% \changes{czech-1.1}{1992/02/15}{Added a warning when no hyphenation +% patterns were loaded.} +% \changes{czech-1.3d}{1994/06/26}{Now use \cs{@nopatterns} to produce +% the warning} +% \begin{macrocode} +\ifx\l@czech\@undefined + \@nopatterns{Czech} + \adddialect\l@czech0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Czech language. +% +% \begin{macro}{\captionsczech} +% The macro |\captionsczech| defines all strings used in the four +% standard documentclasses provided with \LaTeX. +% \changes{czech-1.1}{1992/02/15}{Added \cs{seename}, \cs{alsoname} +% and \cs{prefacename}} +% \changes{czech-1.3f}{1995/07/04}{Added \cs{proofname} for AMS-\LaTeX} +% \changes{czech-1.3g}{1996/02/12}{Fixed two errors and provided +% translation for `proof'} +% \changes{czech-1.3j}{2000/09/19}{Added \cs{glossaryname}} +% \changes{czech-1.3k}{2004/02/18}{Added translation for Glossary} +% \begin{macrocode} +\addto\captionsczech{% + \def\prefacename{P\v redmluva}% + \def\refname{Reference}% + \def\abstractname{Abstrakt}% + \def\bibname{Literatura}% + \def\chaptername{Kapitola}% + \def\appendixname{Dodatek}% + \def\contentsname{Obsah}% + \def\listfigurename{Seznam obr\'azk\r{u}}% + \def\listtablename{Seznam tabulek}% + \def\indexname{Index}% + \def\figurename{Obr\'azek}% + \def\tablename{Tabulka}% + \def\partname{\v{C}\'ast}% + \def\enclname{P\v{r}\'{\i}loha}% + \def\ccname{Na v\v{e}dom\'{\i}:}% + \def\headtoname{Komu}% + \def\pagename{Strana}% + \def\seename{viz}% + \def\alsoname{viz tak\'e}% + \def\proofname{D\r{u}kaz}% + \def\glossaryname{Glos\'a\v r}% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateczech} +% The macro |\dateczech| redefines the command |\today| to produce +% Czech dates. +% \changes{czech-1.3i}{1997/10/01}{Use \cs{edef} to define \cs{today} +% to save memory} +% \changes{czech-1.3i}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \begin{macrocode} +\def\dateczech{% + \def\today{\number\day.~\ifcase\month\or + ledna\or \'unora\or b\v{r}ezna\or dubna\or kv\v{e}tna\or + \v{c}ervna\or \v{c}ervence\or srpna\or z\'a\v{r}\'{\i}\or + \v{r}\'{\i}jna\or listopadu\or prosince\fi + \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasczech} +% \begin{macro}{\noextrasczech} +% The macro |\extrasczech| will perform all the extra definitions +% needed for the Czech language. The macro |\noextrasczech| is used +% to cancel the actions of |\extrasczech|. This means saving the +% meaning of two one-letter control sequences before defining them. +% +% \changes{czech-1.1a}{1992/07/07}{Removed typo, \cs{q} was restored +% twice, once too many.} +% \changes{czech-1.3e}{1995/03/15}{Use \LaTeX's \cs{v} and \cs{r} +% accent commands} +% \begin{macrocode} +\addto\extrasczech{\babel@save\q\let\q\v} +\addto\extrasczech{\babel@save\w\let\w\r} +% \end{macrocode} +% For Czech texts |\frenchspacing| should be in effect. We make +% sure this is the case and reset it if necessary. +% \changes{czech-1.3e}{1995/03/14}{now use \cs{bbl@frenchspacing} and +% \cs{bbl@nonfrenchspacing}} +% \begin{macrocode} +\addto\extrasczech{\bbl@frenchspacing} +\addto\noextrasczech{\bbl@nonfrenchspacing} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\v} +% \LaTeX's normal |\v| accent places a caron over the letter that +% follows it (\v{o}). This is not what we want for the letters d, +% t, l and L; for those the accent should change shape. This is +% acheived by the following. +% \begin{macrocode} +\AtBeginDocument{% + \DeclareTextCompositeCommand{\v}{OT1}{t}{% + t\kern-.23em\raise.24ex\hbox{'}} + \DeclareTextCompositeCommand{\v}{OT1}{d}{% + d\kern-.13em\raise.24ex\hbox{'}} + \DeclareTextCompositeCommand{\v}{OT1}{l}{\lcaron{}} + \DeclareTextCompositeCommand{\v}{OT1}{L}{\Lcaron{}}} +% \end{macrocode} +% +% \begin{macro}{\lcaron} +% \begin{macro}{\Lcaron} +% Fot the letters \texttt{l} and \texttt{L} we want to disinguish +% between normal fonts and monospaced fonts. +% \begin{macrocode} +\def\lcaron{% + \setbox0\hbox{M}\setbox\tw@\hbox{i}% + \ifdim\wd0>\wd\tw@\relax + l\kern-.13em\raise.24ex\hbox{'}\kern-.11em% + \else + l\raise.45ex\hbox to\z@{\kern-.35em '\hss}% + \fi} +\def\Lcaron{% + \setbox0\hbox{M}\setbox\tw@\hbox{i}% + \ifdim\wd0>\wd\tw@\relax + L\raise.24ex\hbox to\z@{\kern-.28em'\hss}% + \else + L\raise.45ex\hbox to\z@{\kern-.40em '\hss}% + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% 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{czech-1.3h}{1996/11/02}{Now use \cs{ldf@finish} to wrap up} +% \begin{macrocode} +\ldf@finish{czech} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/czech.ins b/Master/texmf-dist/source/generic/babel/czech.ins new file mode 100644 index 00000000000..06743474603 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/czech.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{czech.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{czech.ldf}{\from{czech.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/danish.dtx b/Master/texmf-dist/source/generic/babel/danish.dtx new file mode 100644 index 00000000000..d0b6a0d7807 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/danish.dtx @@ -0,0 +1,304 @@ +% \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{138} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{danish.dtx} +%</dtx> +%<code>\ProvidesLanguage{danish} +%\fi +%\ProvidesFile{danish.dtx} + [2005/03/30 v1.3p Danish support from the babel system] +%\iffalse +%% File `danish.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Danish language definition file. +%<*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{danish.dtx} +\end{document} +%</filedriver> +% A contribution was made by Henning Larsen (larsen@cernvm.cern.ch) +%\fi +% \GetFileInfo{danish.dtx} +% +% \changes{danish-1.0a}{1991/07/15}{Renamed \file{babel.sty} in +% \file{babel.com}} +% \changes{danish-1.1}{1992/02/15}{Brought up-to-date with babel 3.2a} +% \changes{danish-1.3}{1994/02/27}{Update for \LaTeXe} +% \changes{danish-1.3f}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{danish-1.3g}{1995/06/08}{Added the active double quote +% character as suggested by Peter Busk Laursen} +% \changes{danish-1.3j}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \section{The Danish language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. A contribution was made by Henning Larsen +% (\texttt{larsen@cernvm.cern.ch})} defines all the +% language definition macros for the Danish language. +% +% For this language the character |"| is made active. In +% table~\ref{tab:danish-quote} an overview is given of its purpose. +% +% \begin{table}[htb] +% \centering +% \begin{tabular}{lp{8cm}} +% \verb="|= & disable ligature at this position.\\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word.\\ +% |""| & like \verb="-=, but producing no hyphen sign (for +% words that should break at some sign such as +% ``entrada/salida.''\\ +% |"`| & lowered double left quotes (looks like ,,)\\ +% |"'| & normal double right quotes\\ +% |"<| & for French left double quotes (similar to $<<$).\\ +% |">| & for French right double quotes (similar to $>>$).\\ +% \end{tabular} +% \caption{The extra definitions made by \file{danish.ldf}} +% \label{tab:danish-quote} +% \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{danish-1.3j}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{danish}\captionsdanish +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{danish} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@danish| to see whether we have to do something here. +% +% \changes{danish-1.0b}{1991/10/27}{Removed use of \cs{@ifundefined}} +% \changes{danish-1.1}{1992/02/15}{Added a warning when no hyphenation +% patterns were loaded.} +% \changes{danish-1.3f}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@danish\@undefined + \@nopatterns{Danish} + \adddialect\l@danish0\fi +% \end{macrocode} +% +% \begin{macro}{\englishhyphenmins} +% \changes{danish-1.3p}{2003/11/17}{Added default for setting of +% hyphenmin parameters} +% This macro is used to store the correct values of the hyphenation +% parameters |\lefthyphenmin| and |\righthyphenmin|. +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\@ne\tw@} +% \end{macrocode} +% \end{macro} +% +% The next step consists of defining commands to switch to (and +% from) the Danish language. +% +% \begin{macro}{\captionsdanish} +% The macro |\captionsdanish| defines all strings used in the four +% standard documentclasses provided with \LaTeX. +% \changes{danish-1.1}{1992/02/15}{Added \cs{seename}, \cs{alsoname} +% and \cs{prefacename}} +% \changes{danish-1.2}{1993/07/11}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{danish-1.2b}{1993/10/23}{Added a few translations} +% \changes{danish-1.3c}{1994/06/04}{Included some revisions from Peter +% Busk Larsen} +% \changes{danish-1.3h}{1995/07/02}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{danish-1.3i}{1995/07/13}{Added translation of `Proof'} +% \changes{danish-1.3n}{2000/09/19}{Added \cs{glossaryname}} +% \changes{danish-1.3o}{2003/04/10}{Added translation of `Glossary'} +% \begin{macrocode} +\addto\captionsdanish{% + \def\prefacename{Forord}% + \def\refname{Litteratur}% + \def\abstractname{Resum\'e}% + \def\bibname{Litteratur}% + \def\chaptername{Kapitel}% + \def\appendixname{Bilag}% + \def\contentsname{Indhold}% + \def\listfigurename{Figurer}% + \def\listtablename{Tabeller}% + \def\indexname{Indeks}% + \def\figurename{Figur}% + \def\tablename{Tabel}% + \def\partname{Del}% + \def\enclname{Vedlagt}% + \def\ccname{Kopi til}% or Kopi sendt til + \def\headtoname{Til}% in letter + \def\pagename{Side}% + \def\seename{Se}% + \def\alsoname{Se ogs{\aa}}% + \def\proofname{Bevis}% + \def\glossaryname{Gloseliste}% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datedanish} +% The macro |\datedanish| redefines the command |\today| to produce +% Danish dates. +% \changes{danish-1.3a}{1994/03/23}{Added `.' to definition of +% \cs{today}} +% \changes{danish-1.3k}{1997/10/01}{Use \cs{edef} to define \cs{today} +% to save memory} +% \changes{danish-1.3k}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \begin{macrocode} +\def\datedanish{% + \def\today{\number\day.~\ifcase\month\or + januar\or februar\or marts\or april\or maj\or juni\or + juli\or august\or september\or oktober\or november\or december\fi + \space\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasdanish} +% \changes{danish-1.3h}{1995/07/02}{Added \cs{bbl@frenchspacing}} +% \begin{macro}{\noextrasdanish} +% \changes{danish-1.3h}{1995/07/02}{Added \cs{bbl@nonfrenchspacing}} +% The macro |\extrasdanish| will perform all the extra definitions +% needed for the Danish language. The macro |\noextrasdanish| is +% used to cancel the actions of |\extrasdanish|. +% +% Danish typesetting requires |\frenchspacing| to be in effect. +% \begin{macrocode} +\addto\extrasdanish{\bbl@frenchspacing} +\addto\noextrasdanish{\bbl@nonfrenchspacing} +% \end{macrocode} +% \end{macro} +% +% For Danish the \texttt{"} character is made active. This is +% done once, later on its definition may vary. Other languages in +% the same document may also use the \texttt{"} character for +% shorthands; we specify that the danish group of shorthands +% should be used. +% +% \begin{macrocode} +\initiate@active@char{"} +\addto\extrasdanish{\languageshorthands{danish}} +\addto\extrasdanish{\bbl@activate{"}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{danish-1.3m}{1999/12/16}{Deactivate shorthands ouside of +% Danish} +% \begin{macrocode} +\addto\noextrasdanish{\bbl@deactivate{"}} +% \end{macrocode} +% +% First we define access to the low opening double quote and +% guillemets for quotations, +% \changes{danish-1.3j}{1996/08/15}{Changed definition of \texttt{"'} +% to print \texttt{``} instead of \texttt{''}} +% \changes{danish-1.3k}{1997/04/03}{Removed empty groups after double +% quote and guillemot characters} +% \begin{macrocode} +\declare@shorthand{danish}{"`}{% + \textormath{\quotedblbase}{\mbox{\quotedblbase}}} +\declare@shorthand{danish}{"'}{% + \textormath{\textquotedblleft}{\mbox{\textquotedblleft}}} +\declare@shorthand{danish}{"<}{% + \textormath{\guillemotleft}{\mbox{\guillemotleft}}} +\declare@shorthand{danish}{">}{% + \textormath{\guillemotright}{\mbox{\guillemotright}}} +% \end{macrocode} +% then we define to be able to specify hyphenation +% breakpoints that behave a little different from |\-|. +% \changes{danish-1.3j}{1996/08/15}{Added definition of +% \texttt{"\char126} and \texttt{"\char61}} +% \begin{macrocode} +\declare@shorthand{danish}{"-}{\nobreak-\bbl@allowhyphens} +\declare@shorthand{danish}{""}{\hskip\z@skip} +\declare@shorthand{danish}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{danish}{"=}{\nobreak-\hskip\z@skip} +% \end{macrocode} +% And we want to have a shorthand for disabling a ligature. +% \begin{macrocode} +\declare@shorthand{danish}{"|}{% + \textormath{\discretionary{-}{}{\kern.03em}}{}} +% \end{macrocode} +% \end{macro} +% +% 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{danish-1.3j}{1996/11/02}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{danish} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/danish.ins b/Master/texmf-dist/source/generic/babel/danish.ins new file mode 100644 index 00000000000..203cff95ab9 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/danish.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{danish.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{danish.ldf}{\from{danish.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/dutch.dtx b/Master/texmf-dist/source/generic/babel/dutch.dtx new file mode 100644 index 00000000000..24e2031922d --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/dutch.dtx @@ -0,0 +1,560 @@ +% \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{300} +%\iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{dutch.dtx} +%</dtx> +%<code>\ProvidesLanguage{dutch} +%\fi +%\ProvidesFile{dutch.dtx} + [2005/03/30 v3.8i Dutch support from the babel system] +%\iffalse +%% File `dutch.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Dutch Language Definition File +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Dutch language definition file. +%<*filedriver> +\documentclass{ltxdoc} +\makeatletter +\gdef\dlqq{{\setbox\tw@=\hbox{,}\setbox\z@=\hbox{''}% + \dimen\z@=\ht\z@ \advance\dimen\z@-\ht\tw@ + \setbox\z@=\hbox{\lower\dimen\z@\box\z@}\ht\z@=\ht\tw@ + \dp\z@=\dp\tw@ \box\z@\kern-.04em}} +\makeatother +\font\manual=logo10 % font used for the METAFONT logo, etc. +\newcommand*\MF{{\manual META}\-{\manual FONT}} +\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{dutch.dtx} +\end{document} +%</filedriver> +% \fi +% \GetFileInfo{dutch.dtx} +% +% \changes{dutch-2.0a}{1990/04/02}{Added checking of format} +% \changes{dutch-2.0b}{1990/04/02}{Added extrasdutch} +% \changes{dutch-2.0c}{1990/04/18}{Added grqq macros} +% \changes{dutch-2.1}{1990/04/24}{reflect change to version 2.1 in +% babel and changes in german v2.3} +% \changes{dutch-2.1a}{1990/05/01}{Incorporated Nico's comments} +% \changes{dutch-2.1b}{1990/07/04}{Incorporated more comments by Nico} +% \changes{dutch-2.1c}{1990/07/16}{Fixed some typos} +% \changes{dutch-2.2}{1990/07/16}{Fixed problem with the use of +% \texttt{"} in moving arguments while \texttt{"} is active} +% \changes{dutch-2.3}{1990/07/30}{When using PostScript fonts with the +% Adobe font-encoding, the dieresis-accent is located elsewhere, +% modified code} +% \changes{dutch-2.3a}{1990/08/27}{Modified the documentation somewhat} +% \changes{dutch-3.0}{1991/04/23}{Modified for babel 3.0} +% \changes{dutch-3.0a}{1991/05/25}{Removed some problems in change log} +% \changes{dutch-3.1}{1991/05/29}{Removed bug found by van der Meer} +% \changes{dutch-3.2a}{1991/07/15}{Renamed babel.sty in babel.com} +% \changes{dutch-3.3}{1991/10/31}{Rewritten parts of the code to use +% the new features of babel version 3.1} +% \changes{dutch-3.6}{1994/02/02}{Update or LaTeX2e} +% \changes{dutch-3.6c}{1994/06/26}{Removed the use of \cs{filedate}, +% moved identification after the loading of babel.def} +% \changes{dutch-3.7a}{1995/02/03}{Moved identification code to the +% top of the file} +% \changes{dutch-3.7a}{1995/02/04}{Rewrote the code with respect to +% the active double quote character} +% \changes{dutch-3.7f}{1996/07/11}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{dutch-3.8a}{1996/10/04}{Merged in the definitions for +% `afrikaans'} +% +% \section{The Dutch language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion, and was last revised on +% \filedate.} defines all the language-specific macros for the Dutch +% language and the `Afrikaans' version\footnote{contributed by +% Stoffel Lombard (\texttt{lombc@b31pc87.up.ac.za})} of it. +% +% For this language the character |"| is made active. In +% table~\ref{tab:dutch-quote} an overview is given of its purpose. +% One of the reasons for this is that in the Dutch language a word +% with a dieresis can be hyphenated just before the letter with the +% umlaut, but the dieresis has to disappear if the word is broken +% between the previous letter and the accented letter. +% +% In~\cite{treebus} the quoting conventions for the Dutch language +% are discussed. The preferred convention is the single-quote +% Anglo-American convention, i.e. `This is a quote'. An +% alternative is the slightly old-fashioned Dutch method with +% initial double quotes lowered to the baseline, \dlqq This is a +% quote'', which should be typed as \texttt{"`This is a quote"'}. +% +% \begin{table}[htb] +% \centering +% \begin{tabular}{lp{8cm}} +% |"a| & |\"a| which hyphenates as |-a|; +% also implemented for the other letters. \\ +% |"y| & puts a negative kern between \texttt{i} and \texttt{j}\\ +% |"Y| & puts a negative kern between \texttt{I} and \texttt{J}\\ +% \verb="|= & disable ligature at this position. \\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word. \\ +% |"~| & to produce a hyphencharcter without the following +% |\discretionary{}{}{}|.\\ +% |""| & to produce an invisible `breakpoint'.\\ +% |"`| & lowered double left quotes (see example below).\\ +% |"'| & normal double right quotes. \\ +% |\-| & like the old |\-|, but allowing hyphenation +% in the rest of the word. +% \end{tabular} +% \caption{The extra definitions made by \file{dutch.ldf}} +% \label{tab:dutch-quote} +% \end{table} +% +% \StopEventually{} +% +% \changes{dutch-3.2c}{1991/10/22}{Removed code to load +% \file{latexhax.com}} +% \changes{dutch-3.2a}{1991/07/15}{Added reset of catcode of @ before +% \cs{endinput}.} +% \changes{dutch-3.2c}{1991/10/22}{removed use of \cs{@ifundefined}} +% \changes{dutch-3.3a}{1991/11/11}{Moved code to the beginning of the +% file and added \cs{selectlanguage} call} +% \begin{macrocode} +% \changes{dutch-3.8a}{1996/10/04}{made check dependant on +% \cs{CurrentOption}} +% +% 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{dutch-3.8a}{1996/10/30}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit\CurrentOption{captions\CurrentOption} +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{dutch} could be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@dutch| or |l@afrikaans| to see whether we have to do +% something here. +% +% First we try to establish with which option we are being +% processed. +% +% \changes{dutch-3.0}{1991/04/23}{Now use \cs{adddialect} if language +% undefined} +% \changes{dutch-3.2c}{1991/10/22}{removed use of \cs{@ifundefined}} +% \changes{dutch-3.3b}{1992/01/25}{Added warning, if no dutch patterns +% loaded} +% \changes{dutch-3.6c}{1994/06/26}{Now use \cs{@nopatterns} to produce +% the warning} +% \changes{dutch-3.8a}{1996/10/04}{this needs a more complicated check +% as `afrikaans' may or may not have its own hyphenation patterns} +% \begin{macrocode} +\def\bbl@tempa{dutch} +\ifx\CurrentOption\bbl@tempa +% \end{macrocode} +% If it is \Lopt{dutch} then we first check if the Dutch +% hyphenation patterns wer loaded, +% \begin{macrocode} + \ifx\l@dutch\undefined +% \end{macrocode} +% if no we issue a warning and make dutch a `dialect' of either the +% hyphenation patterns that were loaded in slot 0 or of `afrikaans' +% when it is available. +% \begin{macrocode} + \@nopatterns{Dutch} + \ifx\l@afrikaans\undefined + \adddialect\l@dutch0 + \else + \adddialect\l@dutch\l@afrikaans + \fi + \fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Dutch language. +% +% \begin{macro}{\captionsdutch} +% The macro |\captionsdutch| defines all strings used +% in the four standard document classes provided with \LaTeX. +% \changes{dutch-3.1a}{1991/06/06}{Removed \cs{global} definitions} +% \changes{dutch-3.1a}{1991/06/06}{\cs{pagename} should be +% \cs{headpagename}} +% \changes{dutch-3.3a}{1991/11/11}{added \cs{seename} and +% \cs{alsoname}} +% \changes{dutch-3.3b}{1992/01/25}{added \cs{prefacename}} +% \changes{dutch-3.5}{1993/07/11}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{dutch-3.7c}{1995/06/08}{We need the \texttt{"} to be active +% while defining \cs{captionsdutch}} +% \changes{dutch-3.7d}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{dutch-3.8b}{1997/01/06}{Use \texttt{Bew"ys} instead of +% \texttt{Bewijs}} +% \changes{dutch-3.8h}{2000/09/19}{Added \cs{glossaryname}} +% \begin{macrocode} + \begingroup + \catcode`\"\active + \def\x{\endgroup + \def\captionsdutch{% + \def\prefacename{Voorwoord}% + \def\refname{Referenties}% + \def\abstractname{Samenvatting}% + \def\bibname{Bibliografie}% + \def\chaptername{Hoofdstuk}% + \def\appendixname{B"ylage}% + \def\contentsname{Inhoudsopgave}% + \def\listfigurename{L"yst van figuren}% + \def\listtablename{L"yst van tabellen}% + \def\indexname{Index}% + \def\figurename{Figuur}% + \def\tablename{Tabel}% + \def\partname{Deel}% + \def\enclname{B"ylage(n)}% + \def\ccname{cc}% + \def\headtoname{Aan}% + \def\pagename{Pagina}% + \def\seename{zie}% + \def\alsoname{zie ook}% + \def\proofname{Bew"ys}% + \def\glossaryname{Verklarende Woordenl"yst}% + } + }\x +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datedutch} +% The macro |\datedutch| redefines the command |\today| to produce +% Dutch dates. +% \changes{dutch-3.1a}{1991/06/06}{Removed \cs{global} definitions} +% \changes{dutch-3.8e}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{dutch-3.8e}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \begin{macrocode} + \def\datedutch{% + \def\today{\number\day~\ifcase\month\or + januari\or februari\or maart\or april\or mei\or juni\or + juli\or augustus\or september\or oktober\or november\or + december\fi + \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% When the option with which this file is being process was not +% \Lopt{dutch} we assume it was \Lopt{afrikaans}. We perform a +% similar check on the availability of the hyphenation paterns. +% \begin{macrocode} +\else + \ifx\l@afrikaans\undefined + \@nopatterns{Afrikaans} + \ifx\l@dutch\undefined + \adddialect\l@afrikaans0 + \else + \adddialect\l@afrikaans\l@dutch + \fi + \fi +% \end{macrocode} +% +% \begin{macro}{\captionsafrikaans} +% Now is the time to define the words for `Afrikaans'. +% \begin{macrocode} + \def\captionsafrikaans{% + \def\prefacename{Voorwoord}% + \def\refname{Verwysings}% + \def\abstractname{Samevatting}% + \def\bibname{Bibliografie}% + \def\chaptername{Hoofstuk}% + \def\appendixname{Bylae}% + \def\contentsname{Inhoudsopgawe}% + \def\listfigurename{Lys van figure}% + \def\listtablename{Lys van tabelle}% + \def\indexname{Inhoud}% + \def\figurename{Figuur}% + \def\tablename{Tabel}% + \def\partname{Deel}% + \def\enclname{Bylae(n)}% + \def\ccname{a.a.}% + \def\headtoname{Aan}% + \def\pagename{Bladsy}% + \def\seename{sien}% + \def\alsoname{sien ook}% + \def\proofname{Bewys}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateafrikaans} +% Here is the `Afrikaans' version of the date macro. +% \changes{dutch-3.8e}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{dutch-3.8e}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \begin{macrocode} + \def\dateafrikaans{% + \def\today{\number\day~\ifcase\month\or + Januarie\or Februarie\or Maart\or April\or Mei\or Junie\or + Julie\or Augustus\or September\or Oktober\or November\or + Desember\fi + \space \number\year}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasdutch} +% \begin{macro}{\extrasafrikaans} +% \changes{dutch-3.0b}{1991/05/29}{added some comment chars to prevent +% white space} +% \changes{dutch-3.1a}{1991/06/6}{Removed \cs{global} definitions} +% \changes{dutch-3.2}{1991/07/02}{Save all redefined macros} +% \changes{dutch-3.3}{1991/10/31}{Macro complete rewritten} +% \changes{dutch-3.3b}{1992/01/25}{modified handling of +% \cs{dospecials} and \cs{@sanitize}} +% +% \begin{macro}{\noextrasdutch} +% \begin{macro}{\noextrasafrikaans} +% \changes{dutch-2.3}{1990/07/30}{Added \cs{dieresis}} +% \changes{dutch-3.0b}{1991/05/29}{added some comment chars to prevent +% white space} +% \changes{dutch-3.1a}{1991/06/06}{Removed \cs{global} definitions} +% \changes{dutch-3.2}{1991/07/02}{Try to restore everything to its +% former state} +% \changes{dutch-3.3}{1991/10/31}{Macro complete rewritten} +% \changes{dutch-3.3b}{1992/01/25}{modified handling of \cs{dospecials} +% and \cs{@sanitize}} +% \changes{dutch-3.8a}{1996/10/04}{Made all definitions dependant on +% \cs{CurrentOption}} +% +% The macros |\extrasdutch| and |\captionsafrikaans| will perform +% all the extra definitions needed for the Dutch language. The +% macros |\noextrasdutch| and |noextrasafrikaans| is used +% to cancel the actions of |\extrasdutch| and |\captionsafrikaans|. +% +% For Dutch the \texttt{"} character is made active. This is done +% once, later on its definition may vary. Other languages in the +% same document may also use the \texttt{"} character for +% shorthands; we specify that the dutch group of shorthands should +% be used. +% \begin{macrocode} +\initiate@active@char{"} +% \end{macrocode} +% Both version of the language use the same set of shorthand +% definitions althoug the `ij' is not used in Afrikaans. +% \begin{macrocode} +\@namedef{extras\CurrentOption}{\languageshorthands{dutch}} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@activate{"}} +% \end{macrocode} +% +% The `umlaut' character should be positioned lower on \emph{all} +% vowels in Dutch texts. +% \begin{macrocode} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \umlautlow\umlautelow} +\@namedef{noextras\CurrentOption}{% + \umlauthigh} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\dutchhyphenmins} +% \begin{macro}{\afrikaanshyphenmins} +% The dutch hyphenation patterns can be used with |\lefthyphenmin| +% set to~2 and |\righthyphenmin| set to~3. +% \changes{dutch-3.7a}{1995/05/13}{use \cs{dutchhyphenmins} to store +% the correct values} +% \changes{dutch-3.8h}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\thr@@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{dutch-3.3a}{1991/11/11}{Added \cs{save@sf@q} macro from +% germanb and rewrote all quote macros to use it} +% \changes{dutch-3.4b}{1991/02/16}{moved definition of +% \cs{allowhyphens}, \cs{set@low@box} and \cs{save@sf@q} to +% \file{babel.com}} +% \changes{dutch-3.7a}{1995/02/04}{Removed \cs{dlqq}, \cs{@dlqq}, +% \cs{drqq}, \cs{@drqq} and \cs{dieresis}} +% \changes{dutch-3.7a}{1995/02/15}{moved the definition of the double +% quote character at the baseline to \file{glyhps.def}} +% +% \begin{macro}{\@trema} +% In the Dutch language vowels with a trema are treated +% specially. If a hyphenation occurs before a vowel-plus-trema, the +% trema should disappear. To be able to do this we could first +% define the hyphenation break behaviour for the five vowels, both +% lowercase and uppercase, in terms of |\discretionary|. But this +% results in a large |\if|-construct in the definition of the +% active |"|. Because we think a user should not use |"| when he +% really means something like |''| we chose not to distinguish +% between vowels and consonants. Therefore we have one macro +% |\@trema| which specifies the hyphenation break behaviour for all +% letters. +% +% \changes{dutch-2.3}{1990/07/30}{\cs{dieresis} instead of +% \cs{accent127}} +% \changes{dutch-3.3a}{1991/11/11}{renamed \cs{@umlaut} to +% \cs{@trema}} +% \begin{macrocode} +\def\@trema#1{\allowhyphens\discretionary{-}{#1}{\"{#1}}\allowhyphens} +% \end{macrocode} +% \end{macro} +% +% \changes{dutch-3.7a}{1995/02/15}{Moved the definition of \cs{ij} and +% \cs{IJ} to \file{glyphs.def}} +% \changes{dutch-3.7a}{1995/02/03}{The support macros for the active +% double quote have been moved to \file{babel.def}} +% +% Now we can define the doublequote macros: the tremas, +% +% \changes{dutch-2.3}{1990/07/30}{\cs{dieresis} instead of +% \cs{accent127}} +% \changes{dutch-3.2}{1991/07/02}{added case for \texttt{"y} and +% \texttt{"Y}} +% \changes{dutch-3.2b}{1991/07/16}{removed typo (allowhpyhens)} +% \changes{dutch-3.7a}{1995/02/03}{Now use \cs{Declaredq{dutch}} to +% define the functions of the active double quote} +% \changes{dutch-3.7a}{1995/02/03}{Use \cs{ddot} instead of +% \cs{@MATHUMLAUT}} +% \changes{dutch-3.7a}{1995/03/05}{Use more general mechanism of +% \cs{declare@shorthand}} +% \begin{macrocode} +\declare@shorthand{dutch}{"a}{\textormath{\@trema a}{\ddot a}} +\declare@shorthand{dutch}{"e}{\textormath{\@trema e}{\ddot e}} +\declare@shorthand{dutch}{"i}{\textormath + {\allowhyphens\discretionary{-}{i}{\"{\i}}\allowhyphens}% + {\ddot \imath}} +\declare@shorthand{dutch}{"o}{\textormath{\@trema o}{\ddot o}} +\declare@shorthand{dutch}{"u}{\textormath{\@trema u}{\ddot u}} +% \end{macrocode} +% dutch quotes, +% \changes{dutch-3.8e}{1997/04/03}{Removed empty groups after double +% quote characters} +% \begin{macrocode} +\declare@shorthand{dutch}{"`}{% + \textormath{\quotedblbase}{\mbox{\quotedblbase}}} +\declare@shorthand{dutch}{"'}{% + \textormath{\textquotedblright}{\mbox{\textquotedblright}}} +% \end{macrocode} +% and some additional commands: +% \changes{dutch-3.7b}{1995/06/04}{Added \texttt{""} shorthand} +% \changes{dutch-3.8c}{1997/01/14}{Added the \texttt{"\~{}} shorthand} +% \changes{dutch-3.8e}{1997/04/01}{Forgot to replace `german' by +% `dutch' when copying definition for \texttt{"\~{}}} +% \begin{macrocode} +\declare@shorthand{dutch}{"-}{\nobreak-\bbl@allowhyphens} +\declare@shorthand{dutch}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{dutch}{"|}{% + \textormath{\discretionary{-}{}{\kern.03em}}{}} +\declare@shorthand{dutch}{""}{\hskip\z@skip} +\declare@shorthand{dutch}{"y}{\textormath{\ij{}}{\ddot y}} +\declare@shorthand{dutch}{"Y}{\textormath{\IJ{}}{\ddot Y}} +% \end{macrocode} +% To enable hyphenation in two words, written together but +% separated by a slash, as in `uitdrukking/opmerking' we define the +% command |"/|. +% \changes{dutch-3.8e}{1997/10/03}{Added a shorthand with the slash +% character} +% \changes{dutch-3.8i}{2003/09/15}{\texttt{"/} should use +% \cs{bbl@allowhyphens}} +% \begin{macrocode} +\declare@shorthand{dutch}{"/}{\textormath + {\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}{}} +% \end{macrocode} +% +% \begin{macro}{\-} +% +% All that is left now is the redefinition of |\-|. The new version +% of |\-| should indicate an extra hyphenation position, while +% allowing other hyphenation positions to be generated +% automatically. The standard behaviour of \TeX\ in this respect is +% very unfortunate for languages such as Dutch and German, where +% long compound words are quite normal and all one needs is a means +% to indicate an extra hyphenation position on top of the ones that +% \TeX\ can generate from the hyphenation patterns. +% \changes{dutch-3.8i}{2003/09/15}{\cs{-} should use +% \cs{bbl@allowhyphens}} +% \begin{macrocode} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\-} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \def\-{\bbl@allowhyphens\discretionary{-}{}{}\bbl@allowhyphens}} +% \end{macrocode} +% \end{macro} +% +% 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{dutch-3.8a}{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 diff --git a/Master/texmf-dist/source/generic/babel/dutch.ins b/Master/texmf-dist/source/generic/babel/dutch.ins new file mode 100644 index 00000000000..1437c660a7e --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/dutch.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{dutch.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{dutch.ldf}{\from{dutch.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/english.dtx b/Master/texmf-dist/source/generic/babel/english.dtx new file mode 100644 index 00000000000..9054cc2957b --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/english.dtx @@ -0,0 +1,451 @@ +% \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{360} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{english.dtx} +%</dtx> +%<code>\ProvidesLanguage{english} +%\fi +%\ProvidesFile{english.dtx} + [2005/03/30 v3.3o English support from the babel system] +%\iffalse +%% File 'english.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the English language definition file. +%<*filedriver> +\documentclass{ltxdoc} +\newcommand*\TeXhax{\TeX hax} +\newcommand*\babel{\textsf{babel}} +\newcommand*\langvar{$\langle \mathit lang \rangle$} +\newcommand*\note[1]{} +\newcommand*\Lopt[1]{\textsf{#1}} +\newcommand*\file[1]{\texttt{#1}} +\begin{document} + \DocInput{english.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{english.dtx} +% +% \changes{english-2.0a}{1990/04/02}{Added checking of format} +% \changes{english-2.1}{1990/04/24}{Reflect changes in babel 2.1} +% \changes{english-2.1a}{1990/05/14}{Incorporated Nico's comments} +% \changes{english-2.1b}{1990/05/14}{merged \file{USenglish.sty} into +% this file} +% \changes{english-2.1c}{1990/05/22}{fixed typo in definition for +% american language found by Werenfried Spit (nspit@fys.ruu.nl)} +% \changes{english-2.1d}{1990/07/16}{Fixed some typos} +% \changes{english-3.0}{1991/04/23}{Modified for babel 3.0} +% \changes{english-3.0a}{1991/05/29}{Removed bug found by van der Meer} +% \changes{english-3.0c}{1991/07/15}{Renamed \file{babel.sty} in +% \file{babel.com}} +% \changes{english-3.1}{1991/11/05}{Rewrote parts of the code to use +% the new features of babel version 3.1} +% \changes{english-3.3}{1994/02/08}{Update or \LaTeXe} +% \changes{english-3.3c}{1994/06/26}{Removed the use of \cs{filedate} +% and moved the identification after the loading of +% \file{babel.def}} +% \changes{english-3.3g}{1996/07/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{english-3.3h}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning.} +% +% \section{The English language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate.} defines all the language definition macros for the +% English language as well as for the American and Australian +% version of this language. For the Australian version the British +% hyphenation patterns will be used, if available, for the Canadian +% variant the American patterns are selected. +% +% For this language currently no special definitions are needed or +% available. +% +% \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{english-3.3h}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit\CurrentOption{date\CurrentOption} +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{english} could be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@english| to see whether we have to do something here. +% +% \changes{english-3.0}{1991/04/23}{Now use \cs{adddialect} if +% language undefined} +% \changes{english-3.0d}{1991/10/22}{removed use of \cs{@ifundefined}} +% \changes{english-3.3c}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \changes{english-3.3g}{1996/07/10}{Allow british as the name of the +% UK patterns} +% \changes{english-3.3j}{2000/01/21}{Also allow american english +% hyphenation patterns to be used for `english'} +% We allow for the british english patterns to be loaded as either +% `british', or `UKenglish'. When neither of those is +% known we try to define |\l@english| as an alias for |\l@american| +% or |\l@USenglish|. +% \changes{english-3.3k}{2001/02/07}{Added support for canadian} +% \changes{english-3.3n}{2004/06/12}{Added support for australian and +% newzealand} +% \begin{macrocode} +\ifx\l@english\@undefined + \ifx\l@UKenglish\@undefined + \ifx\l@british\@undefined + \ifx\l@american\@undefined + \ifx\l@USenglish\@undefined + \ifx\l@canadian\@undefined + \ifx\l@australian\@undefined + \ifx\l@newzealand\@undefined + \@nopatterns{English} + \adddialect\l@english0 + \else + \let\l@english\l@newzealand + \fi + \else + \let\l@english\l@australian + \fi + \else + \let\l@english\l@canadian + \fi + \else + \let\l@english\l@USenglish + \fi + \else + \let\l@english\l@american + \fi + \else + \let\l@english\l@british + \fi + \else + \let\l@english\l@UKenglish + \fi +\fi +% \end{macrocode} +% Because we allow `british' to be used as the babel option we need +% to make sure that it will be recognised by |\selectlanguage|. In +% the code above we have made sure that |\l@english| was defined. +% Now we want to make sure that |\l@british| and |\l@UKenglish| are +% defined as well. When either of them is we make them equal to +% each other, when neither is we fall back to the default, +% |\l@english|. +% \changes{english-3.3o}{2004/06/14}{Make sure that british patterns +% are used if they were loaded} +% \begin{macrocode} +\ifx\l@british\@undefined + \ifx\l@UKenglish\@undefined + \adddialect\l@british\l@english + \adddialect\l@UKenglish\l@english + \else + \let\l@british\l@UKenglish + \fi +\else + \let\l@UKenglish\l@british +\fi +% \end{macrocode} +% `American' is a version of `English' which can have its own +% hyphenation patterns. The default english patterns are in fact +% for american english. We allow for the patterns to be loaded as +% `english' `american' or `USenglish'. +% \changes{english-3.0}{1990/04/23}{Now use \cs{adddialect} for +% american} +% \changes{english-3.0b}{1991/06/06}{Removed \cs{global} definitions} +% \changes{english-3.3d}{1995/02/01}{Only define american as a +% dialect when no separate patterns have been loaded} +% \changes{english-3.3g}{1996/07/10}{Allow USenglish as the name of +% the american patterns} +% \begin{macrocode} +\ifx\l@american\@undefined + \ifx\l@USenglish\@undefined +% \end{macrocode} +% When the patterns are not know as `american' or `USenglish' we +% add a ``dialect''. +% \begin{macrocode} + \adddialect\l@american\l@english + \else + \let\l@american\l@USenglish + \fi +\else +% \end{macrocode} +% Make sure that USenglish is known, even if the patterns were +% loaded as `american'. +% \changes{english-3.3j}{2000/01/21}{Ensure that \cs{l@USenglish} is +% alway defined} +% \changes{english-3.3l}{2001/04/15}{Added missing backslash} +% \begin{macrocode} + \ifx\l@USenglish\@undefined + \let\l@USenglish\l@american + \fi +\fi +% \end{macrocode} +% + +% \changes{english-3.3k}{2001/02/07}{Added support for canadian} +% `Canadian' english spelling is a hybrid of British and American +% spelling. Although so far no special `translations' have been +% reported we allow this file to be loaded by the option +% \Lopt{candian} as well. +% \begin{macrocode} +\ifx\l@canadian\@undefined + \adddialect\l@canadian\l@american +\fi +% \end{macrocode} +% +% \changes{english-3.3n}{2004/06/12}{Added support for australian and +% newzealand} +% `Australian' and `New Zealand' english spelling seem to be the +% same as British spelling. Although so far no special +% `translations' have been reported we allow this file to be loaded +% by the options \Lopt{australian} and \Lopt{newzealand} as well. +% \begin{macrocode} +\ifx\l@australian\@undefined + \adddialect\l@australian\l@british +\fi +\ifx\l@newzealand\@undefined + \adddialect\l@newzealand\l@british +\fi +% \end{macrocode} +% + +% \begin{macro}{\englishhyphenmins} +% \changes{english-3.3m}{2003/11/17}{Added default for setting of +% hyphenmin parameters} +% This macro is used to store the correct values of the hyphenation +% parameters |\lefthyphenmin| and |\righthyphenmin|. +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\thr@@} +% \end{macrocode} +% \end{macro} +% +% The next step consists of defining commands to switch to (and +% from) the English language. +% \begin{macro}{\captionsenglish} +% The macro |\captionsenglish| defines all strings used +% in the four standard document classes provided with \LaTeX. +% \changes{english-3.0b}{1991/06/06}{Removed \cs{global} definitions} +% \changes{english-3.0b}{1991/06/06}{\cs{pagename} should be +% \cs{headpagename}} +% \changes{english-3.1a}{1991/11/11}{added \cs{seename} and +% \cs{alsoname}} +% \changes{english-3.1b}{1992/01/26}{added \cs{prefacename}} +% \changes{english-3.2}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{english-3.3e}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{english-3.3g}{1996/07/10}{Construct control sequence on the +% fly} +% \changes{english-3.3j}{2000/09/19}{Added \cs{glossaryname}} +% \begin{macrocode} +\@namedef{captions\CurrentOption}{% + \def\prefacename{Preface}% + \def\refname{References}% + \def\abstractname{Abstract}% + \def\bibname{Bibliography}% + \def\chaptername{Chapter}% + \def\appendixname{Appendix}% + \def\contentsname{Contents}% + \def\listfigurename{List of Figures}% + \def\listtablename{List of Tables}% + \def\indexname{Index}% + \def\figurename{Figure}% + \def\tablename{Table}% + \def\partname{Part}% + \def\enclname{encl}% + \def\ccname{cc}% + \def\headtoname{To}% + \def\pagename{Page}% + \def\seename{see}% + \def\alsoname{see also}% + \def\proofname{Proof}% + \def\glossaryname{Glossary}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateenglish} +% In order to define |\today| correctly we need to know whether it +% should be `english', `australian', or `american'. We can find +% this out by checking the value of |\CurrentOption|. +% \changes{english-3.3j}{2000/01/21}{Make sure that the value of +% \cs{today} is correct for both options `american' and +% `USenglish'} +% \changes{english-3.3n}{2004/06/12}{Added support for `Australian' +% and `Newzealand'} +% \changes{english-3.3o}{2004/06/14}{Explicitly choose the UK form of +% date} +% \begin{macrocode} +\def\bbl@tempa{british} +\ifx\CurrentOption\bbl@tempa\def\bbl@tempb{UK}\fi +\def\bbl@tempa{UKenglish} +\ifx\CurrentOption\bbl@tempa\def\bbl@tempb{UK}\fi +\def\bbl@tempa{american} +\ifx\CurrentOption\bbl@tempa\def\bbl@tempb{US}\fi +\def\bbl@tempa{USenglish} +\ifx\CurrentOption\bbl@tempa\def\bbl@tempb{US}\fi +\def\bbl@tempa{canadian} +\ifx\CurrentOption\bbl@tempa\def\bbl@tempb{US}\fi +\def\bbl@tempa{australian} +\ifx\CurrentOption\bbl@tempa\def\bbl@tempb{AU}\fi +\def\bbl@tempa{newzealand} +\ifx\CurrentOption\bbl@tempa\def\bbl@tempb{AU}\fi +% \end{macrocode} +% +% The macro |\dateenglish| redefines the command |\today| to +% produce English dates. +% \changes{english-3.0b}{1991/06/06}{Removed \cs{global} definitions} +% \changes{english-3.3g}{1996/07/10}{Construct control sequence on the +% fly} +% \changes{english-3.3i}{1997/10/01}{Use \cs{edef} to define \cs{today} +% to save memory} +% \changes{english-3.3i}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \begin{macrocode} +\def\bbl@tempa{UK} +\ifx\bbl@tempa\bbl@tempb + \@namedef{date\CurrentOption}{% + \def\today{\ifcase\day\or + 1st\or 2nd\or 3rd\or 4th\or 5th\or + 6th\or 7th\or 8th\or 9th\or 10th\or + 11th\or 12th\or 13th\or 14th\or 15th\or + 16th\or 17th\or 18th\or 19th\or 20th\or + 21st\or 22nd\or 23rd\or 24th\or 25th\or + 26th\or 27th\or 28th\or 29th\or 30th\or + 31st\fi~\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or + December\fi\space \number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateaustralian} +% Now, test for `australian' or `american'. +% \changes{english-3.3n}{2004/06/12}{Add australian date} +% \begin{macrocode} +\else +% \end{macrocode} +% +% The macro |\dateaustralian| redefines the command |\today| to +% produce Australian resp.\ New Zealand dates. +% \begin{macrocode} + \def\bbl@tempa{AU} + \ifx\bbl@tempa\bbl@tempb + \@namedef{date\CurrentOption}{% + \def\today{\number\day~\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or + December\fi\space \number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateamerican} +% The macro |\dateamerican| redefines the command |\today| to +% produce American dates. +% \changes{english-3.0b}{1991/06/06}{Removed \cs{global} definitions} +% \changes{english-3.3i}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{english-3.3i}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \begin{macrocode} + \else + \@namedef{date\CurrentOption}{% + \def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or + December\fi \space\number\day, \number\year}} + \fi +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasenglish} +% \begin{macro}{\noextrasenglish} +% The macro |\extrasenglish| will perform all the extra definitions +% needed for the English language. The macro |\noextrasenglish| is +% used to cancel the actions of |\extrasenglish|. For the moment +% these macros are empty but they are defined for compatibility +% with the other language definition files. +% +% \changes{english-3.3g}{1996/07/10}{Construct control sequences on +% the fly} +% \begin{macrocode} +\@namedef{extras\CurrentOption}{} +\@namedef{noextras\CurrentOption}{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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{english-3.3h}{1996/11/02}{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 diff --git a/Master/texmf-dist/source/generic/babel/english.ins b/Master/texmf-dist/source/generic/babel/english.ins new file mode 100644 index 00000000000..67c897423da --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/english.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{english.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{english.ldf}{\from{english.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/esperanto.dtx b/Master/texmf-dist/source/generic/babel/esperanto.dtx new file mode 100644 index 00000000000..6a98c77ceb3 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/esperanto.dtx @@ -0,0 +1,341 @@ +% \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{259} +%\iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{esperanto.dtx} +%</dtx> +%<code>\ProvidesLanguage{esperanto} +%\fi +%\ProvidesFile{esperant.dtx} + [2005/03/30 v1.4r Esperanto support from the babel system] +%\iffalse +%% File 'esperanto.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Esperanto language definition file. A contribution +% was made by Ruiz-Altaba Marti (ruizaltb@cernvm.cern.ch) Code from +% esperant.sty version 1.1 by Joerg Knappen +% (\texttt{knappen@vkpmzd.kph.uni-mainz.de}) was included in +% version 1.2. +%<*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{esperanto.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{esperanto.dtx} +% +% \changes{esperanto-1.0a}{1991/07/15}{Renamed \file{babel.sty} in +% \file{babel.com}} +% \changes{esperanto-1.1}{1992/02/15}{Brought up-to-date with +% babel~3.2a} +% \changes{esperanto-1.2}{1992/02/18}{Included code from +% \texttt{esperant.sty}} +% \changes{esperanto-1.4a}{1994/02/04}{Updated for \LaTeXe} +% \changes{esperanto-1.4d}{1994/06/25}{Removed the use of +% \cs{filedate}, moved Identification after loading of +% \file{babel.def}} +% \changes{esperanto-1.4e}{1995/02/09}{Moved identification code to +% the top of the file} +% \changes{esperanto-1.4f}{1995/06/14}{Corrected typos (PR1652)} +% \changes{esperanto-1.4i}{1996/07/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{esperanto-1.4i}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning.} +% +% \section{The Esperanto language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. A contribution was made by Ruiz-Altaba Marti +% (\texttt{ruizaltb@cernvm.cern.ch}). Code from the file +% \texttt{esperant.sty} by J\"org Knappen +% (\texttt{knappen@vkpmzd.kph.uni-mainz.de}) was included.} defines +% all the language-specific macros for the Esperanto language. +% +% For this language the character |^| is made active. +% In table~\ref{tab:esp-act} an overview is given of its purpose. +% \changes{esperanto-1.4j}{1997/01/06}{fixed typo in table caption +% (funtion instead of function)} +% \begin{table}[htb] +% \centering +% \begin{tabular}{lp{8cm}} +% |^c| & gives \^c with hyphenation in the rest of the word +% allowed, this works for c, C, g, G, H, J, s, S, z, Z\\ +% |^h| & prevents h\llap{\^{}} from becoming too tall\\ +% |^j| & gives \^\j\\ +% |^u| & gives \u u, with hyphenation in the rest of the word +% allowed\\ +% |^U| & gives \u U, with hyphenation in the rest of the word +% allowed\\ +% \verb=^|= & inserts a |\discretionary{-}{}{}|\\ +% \end{tabular} +% \caption{The functions of the active character for Esperanto.} +% \label{tab:esp-act} +% \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{esperanto-1.4i}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{esperanto}\captionsesperanto +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{esperanto} will be an `unknown' language in +% which case we have to make it known. So we check for the +% existence of |\l@esperanto| to see whether we have to do +% something here. +% +% \changes{esperanto-1.0b}{1991/10/29}{Removed use of +% \cs{makeatletter}} +% \changes{esperanto-1.1}{1992/02/15}{Added a warning when no +% hyphenation patterns were loaded.} +% \changes{esperanto-1.4d}{1994/06/25}{Use \cs{@nopatterns} for the +% warning} +% \begin{macrocode} +\ifx\l@esperanto\@undefined + \@nopatterns{Esperanto} + \adddialect\l@esperanto0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to the +% Esperanto language. The reason for this is that a user might want +% to switch back and forth between languages. +% +% \begin{macro}{\captionsesperanto} +% The macro |\captionsesperanto| defines all strings used +% in the four standard documentclasses provided with \LaTeX. +% \changes{esperanto-1.1}{1992/02/15}{Added \cs{seename}, +% \cs{alsoname} and \cs{prefacename}} +% \changes{esperanto-1.3}{1993/07/10}{Repaired a number of mistakes, +% indicated by D. Ederveen} +% \changes{esperanto-1.3}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{esperanto-1.4a}{1994/02/04}{added missing closing brace} +% \changes{esperanto-1.4g}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{esperanto-1.4i}{1996/07/06}{Replaced `Proof' by `Pruvo' +% PR 2207} +% \changes{esperanto-1.4p}{2000/09/19}{Added \cs{glossaryname}} +% \changes{esperanto-1.4q}{2002/01/07}{Added translation for Glossary} +% \begin{macrocode} +\addto\captionsesperanto{% + \def\prefacename{Anta\u{u}parolo}% + \def\refname{Cita\^\j{}oj}% + \def\abstractname{Resumo}% + \def\bibname{Bibliografio}% + \def\chaptername{{\^C}apitro}% + \def\appendixname{Apendico}% + \def\contentsname{Enhavo}% + \def\listfigurename{Listo de figuroj}% + \def\listtablename{Listo de tabeloj}% + \def\indexname{Indekso}% + \def\figurename{Figuro}% + \def\tablename{Tabelo}% + \def\partname{Parto}% + \def\enclname{Aldono(j)}% + \def\ccname{Kopie al}% + \def\headtoname{Al}% + \def\pagename{Pa\^go}% + \def\subjectname{Temo}% + \def\seename{vidu}% a^u: vd. + \def\alsoname{vidu anka\u{u}}% a^u vd. anka\u{u} + \def\proofname{Pruvo}% + \def\glossaryname{Glosaro}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateesperanto} +% The macro |\dateesperanto| redefines the command |\today| to +% produce Esperanto dates. +% \changes{esperanto-1.3}{1993/07/10}{Removed the capitals from +% \cs{today}} +% \changes{esperanto-1.4k}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{esperanto-1.4k}{1998/03/27}{Removed Rthe use of \cs{edef} +% again} +% \begin{macrocode} +\def\dateesperanto{% + \def\today{\number\day{--a}~de~\ifcase\month\or + januaro\or februaro\or marto\or aprilo\or majo\or junio\or + julio\or a\u{u}gusto\or septembro\or oktobro\or novembro\or + decembro\fi,\space \number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasesperanto} +% \begin{macro}{\noextrasesperanto} +% The macro |\extrasesperanto| performs all the extra definitions +% needed for the Esperanto language. The macro |\noextrasesperanto| +% is used to cancel the actions of |\extrasesperanto|. +% +% For Esperanto the |^| character is made active. This is done +% once, later on its definition may vary. +% +% \begin{macrocode} +\initiate@active@char{^} +% \end{macrocode} +% Because the character |^| is used in math mode with quite a +% different purpose we need to add an extra level of evaluation to +% the definition of the active |^|. It checks whether math mode is +% active; if so the shorthand mechanism is bypassed by a direct +% call of |\normal@char^|. +% \changes{esperanto-1.4n}{1999/09/30}{Added a check for math mode to +% the definition of the shorthand character} +% \changes{esperant0-1.4o}{1999/12/18}{Moved the check for math to +% babel.def} +% \begin{macrocode} +\addto\extrasesperanto{\languageshorthands{esperanto}} +\addto\extrasesperanto{\bbl@activate{^}} +\addto\noextrasesperanto{\bbl@deactivate{^}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% In order to prevent problems with the active |^| we add a +% shorthand on system level which expands to a `normal |^|. +% \changes{esperanto-1.4l}{1999/04/11}{Added a shorthand definition on +% system level} +% \begin{macrocode} +\declare@shorthand{system}{^}{\csname normal@char\string^\endcsname} +% \end{macrocode} +% And here are the uses of the active |^|: +% \changes{esperanto-1.4h}{1995/07/27}{Added a few shorthands} +% \begin{macrocode} +\declare@shorthand{esperanto}{^c}{\^{c}\allowhyphens} +\declare@shorthand{esperanto}{^C}{\^{C}\allowhyphens} +\declare@shorthand{esperanto}{^g}{\^{g}\allowhyphens} +\declare@shorthand{esperanto}{^G}{\^{G}\allowhyphens} +\declare@shorthand{esperanto}{^h}{h\llap{\^{}}\allowhyphens} +\declare@shorthand{esperanto}{^H}{\^{H}\allowhyphens} +\declare@shorthand{esperanto}{^j}{\^{\j}\allowhyphens} +\declare@shorthand{esperanto}{^J}{\^{J}\allowhyphens} +\declare@shorthand{esperanto}{^s}{\^{s}\allowhyphens} +\declare@shorthand{esperanto}{^S}{\^{S}\allowhyphens} +\declare@shorthand{esperanto}{^u}{\u u\allowhyphens} +\declare@shorthand{esperanto}{^U}{\u U\allowhyphens} +\declare@shorthand{esperanto}{^|}{\discretionary{-}{}{}\allowhyphens} +% \end{macrocode} +% +% \begin{macro}{\Esper} +% \begin{macro}{\esper} +% In \file{esperant.sty} J\"org Knappen provides the macros +% |\esper| and |\Esper| that can be used instead of |\alph| and +% |\Alph|. These macros are available in this file as well. +% +% Their definition takes place in two steps. First the toplevel. +% \begin{macrocode} +\def\esper#1{\@esper{\@nameuse{c@#1}}} +\def\Esper#1{\@Esper{\@nameuse{c@#1}}} +% \end{macrocode} +% Then the second level. +% \changes{esperanto-1.4q}{2002/01/08}{Removed the extra level of +% expansion for more than five items, as was done in \LaTeX} +% \begin{macrocode} +\def\@esper#1{% + \ifcase#1\or a\or b\or c\or \^c\or d\or e\or f\or g\or \^g\or + h\or h\llap{\^{}}\or i\or j\or \^\j\or k\or l\or m\or n\or o\or + p\or s\or \^s\or t\or u\or \u{u}\or v\or z\else\@ctrerr\fi} +\def\@Esper#1{% + \ifcase#1\or A\or B\or C\or \^C\or D\or E\or F\or G\or \^G\or + H\or \^H\or I\or J\or \^J\or K\or L\or M\or N\or O\or + P\or S\or \^S\or T\or U\or \u{U}\or V\or Z\else\@ctrerr\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\hodiau} +% \begin{macro}{\hodiaun} +% In \file{esperant.sty} J\"org Knappen provides two alternative +% macros for |\today|, |\hodiau| and |\hodiaun|. The second macro +% produces an accusative version of the date in Esperanto. +% \begin{macrocode} +\addto\dateesperanto{\def\hodiau{la \today}} +\def\hodiaun{la \number\day --an~de~\ifcase\month\or + januaro\or februaro\or marto\or aprilo\or majo\or junio\or + julio\or a\u{u}gusto\or septembro\or oktobro\or novembro\or + decembro\fi, \space \number\year} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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{esperanto-1.4i}{1996/11/02}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{esperanto} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/esperanto.ins b/Master/texmf-dist/source/generic/babel/esperanto.ins new file mode 100644 index 00000000000..25e39025572 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/esperanto.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{2000/09/26} +\def\batchfile{esperanto.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{esperanto.ldf}{\from{esperanto.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/estonian.dtx b/Master/texmf-dist/source/generic/babel/estonian.dtx new file mode 100644 index 00000000000..74bbb9a3384 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/estonian.dtx @@ -0,0 +1,426 @@ +% \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{330} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{estonian.dtx} +%</dtx> +%<code>\ProvidesLanguage{estonian} +%\fi +%\ProvidesFile{estonian.dtx} + [2005/03/30 v1.0h Estonian support from the babel system] +%\iffalse +%% File `estonian.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Estonian language Definition File +%% Copyright (C) 1991 - 2005 +%% by Enn Saar, Tartu Astrophysical Observatory +% Tartu Astrophysical Observatory +% EE-2444 T\~oravere +% Estonia +% tel: +372 7 410 267 +% fax: +372 7 410 205 +% saar@aai.ee +% +% Johannes Braams, TeXniek +% +%% Please report errors to: Enn Saar saar at aai.ee +%% (or J.L. Braams babel atbraams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Estonian language definition file. The original +% version of this file was written by Enn Saar, +% (saar@aai.ee). +%<*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{estonian.dtx} +\end{document} +%</filedriver> +%\fi +% +% \changes{estonian-1.0b}{1995/06/16}{corrected typos} +% \changes{estonian-1.0e}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \GetFileInfo{estonian.dtx} +% +% \section{The Estonian language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. The original author is Enn Saar, +% (\texttt{saar@aai.ee}).} defines the language definition macro's +% for the Estonian language. +% +% This file was written as part of the TWGML project, and borrows +% heavily from the \babel\ German and Spanish language files +% \file{germanb.ldf} and \file{spanish.ldf}. +% +% Estonian has the same umlauts as German (\"a, \"o, \"u), but in +% addition to this, we have also \~o, and two recent characters +% \v s and \v z, so we need at least two active characters. +% We shall use |"| and |~| to type Estonian accents on ASCII +% keyboards (in the 7-bit character world). Their use is given in +% table~\ref{tab:estonian-quote}. +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |~o| & |\~o|, (and uppercase); \\ +% |"a| & |\"a|, (and uppercase); \\ +% |"o| & |\"o|, (and uppercase); \\ +% |"u| & |\"u|, (and uppercase); \\ +% |~s| & |\v s|, (and uppercase); \\ +% |~z| & |\v z|, (and uppercase); \\ +% \verb="|= & disable ligature at this position;\\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word;\\ +% |\-| & like the old |\-|, but allowing hyphenation +% in the rest of the word; \\ +% |"`| & for Estonian low left double quotes (same as German);\\ +% |"'| & for Estonian right double quotes;\\ +% |"<| & for French left double quotes (also rather popular)\\ +% |">| & for French right double quotes.\\ +% \end{tabular} +% \caption{The extra definitions made +% by \file{estonian.ldf}}\label{tab:estonian-quote} +% \end{center} +% \end{table} +% These active accent characters behave according to their original +% definitions if not followed by one of the characters indicated in +% that table; the original quote character can be typed using the +% macro |\dq|. +% +% We support also the T1 output encoding (and Cork-encoded text +% input). You can choose the T1 encoding by the command +% |\usepackage[T1]{fontenc}|. This package must be loaded before +% \babel. As the standard Estonian hyphenation file +% \file{eehyph.tex} is in the Cork encoding, choosing this encoding +% will give you better hyphenation. +% +% As mentioned in the Spanish style file, it may happen that some +% packages fail (usually in a \cs{message}). In this case you +% should change the order of the \cs{usepackage} declarations +% or the order of the style options in \cs{documentclass}. +% +% \StopEventually{} +% +% \subsection{Implementation} +% +% 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{estonian-1.0e}{1996/10/30}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{estonian}\captionsestonian +% \end{macrocode} +% +% If Estonian is not included in the format file (does not have +% hyphenation patterns), we shall use English hyphenation. +% +% \begin{macrocode} +\ifx\l@estonian\@undefined + \@nopatterns{Estonian} + \adddialect\l@estonian0 +\fi +% \end{macrocode} +% +% Now come the commands to switch to (and from) Estonian. +% +% \begin{macro}{\captionsestonian} +% The macro |\captionsestonian| defines all strings used in the +% four standard documentclasses provided with \LaTeX. +% +% \changes{estonian-1.0c}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{estonian-1.0d}{1995/07/27}{Added translation of `Proof'} +% \changes{estonian-1.0h}{2000/09/20}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionsestonian{% + \def\prefacename{Sissejuhatus}% + \def\refname{Viited}% + \def\bibname{Kirjandus}% + \def\appendixname{Lisa}% + \def\contentsname{Sisukord}% + \def\listfigurename{Joonised}% + \def\listtablename{Tabelid}% + \def\indexname{Indeks}% + \def\figurename{Joonis}% + \def\tablename{Tabel}% + \def\partname{Osa}% + \def\enclname{Lisa(d)}% + \def\ccname{Koopia(d)}% + \def\headtoname{}% + \def\pagename{Lk.}% + \def\seename{vt.}% + \def\alsoname{vt. ka}% + \def\proofname{Korrektuur}% + \def\glossaryname{Glossary}% <-- Needs translation + } +% \end{macrocode} +% +% These captions contain accented characters. +% +% \begin{macrocode} +\begingroup \catcode`\"\active +\def\x{\endgroup +\addto\captionsestonian{% + \def\abstractname{Kokkuv~ote}% + \def\chaptername{Peat"ukk}}} +\x +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateestonian} +% The macro |\dateestonian| redefines the command |\today| to +% produce Estonian dates. +% \changes{estonian-1.0f}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{estonian-1.0f}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \begin{macrocode} +\begingroup \catcode`\"\active +\def\x{\endgroup + \def\month@estonian{\ifcase\month\or + jaanuar\or veebruar\or m"arts\or aprill\or mai\or juuni\or + juuli\or august\or september\or oktoober\or november\or + detsember\fi}} +\x +\def\dateestonian{% + \def\today{\number\day.\space\month@estonian + \space\number\year.\space a.}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasestonian} +% \begin{macro}{\noextrasestonian} +% The macro |\extrasestonian| will perform all the extra +% definitions needed for Estonian. The macro |\noextrasestonian| is +% used to cancel the actions of |\extrasestonian|. For Estonian, +% |"| is made active and has to be treated as `special' (|~| is +% active already). +% +% \begin{macrocode} +\initiate@active@char{"} +\initiate@active@char{~} +\addto\extrasestonian{\languageshorthands{estonian}} +\addto\extrasestonian{\bbl@activate{"}\bbl@activate{~}} +% \end{macrocode} +% Store the original macros, and redefine accents. +% +% \begin{macrocode} +\addto\extrasestonian{\babel@save\"\umlautlow\babel@save\~\tildelow} +% \end{macrocode} +% +% \changes{estonian-1.0d}{1995/07/27}{Removed the code that changes +% category, lower case, uper case and space factor codes } +% +% Estonian does not use extra spaces after sentences. +% +% \begin{macrocode} +\addto\extrasestonian{\bbl@frenchspacing} +\addto\noextrasestonian{\bbl@nonfrenchspacing} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\estonianhyphenmins} +% For Estonian, |\lefthyphenmin| and |\righthyphenmin| are +% both~2. +% \changes{estonian-1.0h}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tildelow} +% \begin{macro}{\gentilde} +% \begin{macro}{\newtilde} +% \begin{macro}{\newcheck} +% The standard \TeX\ accents are too high for Estonian typography, +% we have to lower them (following the \babel\ German style). For +% a detailed explanation see the file \file{glyphs.dtx}. +% +% \begin{macrocode} +\def\tildelow{\def\~{\protect\gentilde}} +\def\gentilde#1{\if#1o\newtilde{#1}\else\if#1O\newtilde{#1}% + \else\newcheck{#1}% + \fi\fi} +\def\newtilde#1{\leavevmode\allowhyphens + {\U@D 1ex% + {\setbox\z@\hbox{\char126}\dimen@ -.45ex\advance\dimen@\ht\z@ + \ifdim 1ex<\dimen@ \fontdimen5\font\dimen@ \fi}% + \accent126\fontdimen5\font\U@D #1}\allowhyphens} +\def\newcheck#1{\leavevmode\allowhyphens + {\U@D 1ex% + {\setbox\z@\hbox{\char20}\dimen@ -.45ex\advance\dimen@\ht\z@ + \ifdim 1ex<\dimen@ \fontdimen5\font\dimen@ \fi}% + \accent20\fontdimen5\font\U@D #1}\allowhyphens} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% We save the double quote character in |\dq|, and tilde in |\til|, +% and store the original definitions of |\"| and |\~| as |\dieresis| +% and |\texttilde|. +% +% \begin{macrocode} +\begingroup \catcode`\"12 +\edef\x{\endgroup + \def\noexpand\dq{"} + \def\noexpand\til{~}} +\x +\let\dieresis\" +\let\texttilde\~ +% \end{macrocode} +% +% This part follows closely \file{spanish.ldf}. We check the +% encoding and if it is T1, we have to tell \TeX\ about our +% redefined accents. +% +% \changes{estonian-1.0g}{1999/04/11}{use \cs{bbl@t@one} instead of +% \cs{bbl@next}} +% \begin{macrocode} +\ifx\f@encoding\bbl@t@one + \let\@umlaut\dieresis + \let\@tilde\texttilde + \DeclareTextComposite{\~}{T1}{s}{178} + \DeclareTextComposite{\~}{T1}{S}{146} + \DeclareTextComposite{\~}{T1}{z}{186} + \DeclareTextComposite{\~}{T1}{Z}{154} + \DeclareTextComposite{\"}{T1}{'}{17} + \DeclareTextComposite{\"}{T1}{`}{18} + \DeclareTextComposite{\"}{T1}{<}{19} + \DeclareTextComposite{\"}{T1}{>}{20} +% \end{macrocode} +% +% If the encoding differs from T1, we expand the accents, enabling +% hyphenation beyond the accent. In this case \TeX\ will not find +% all possible breaks, and we have to warn people. +% +% \begin{macrocode} +\else + \wlog{Warning: Hyphenation would work better for the T1 encoding.} + \let\@umlaut\newumlaut + \let\@tilde\gentilde +\fi +% \end{macrocode} +% +% Now we define the shorthands. +% +% \changes{estonian-1.0d}{1995/07/27}{The second argument was missing +% in the definition of some of the double-quote shorthands} +% \begin{macrocode} +\declare@shorthand{estonian}{"a}{\textormath{\"{a}}{\ddot a}} +\declare@shorthand{estonian}{"A}{\textormath{\"{A}}{\ddot A}} +\declare@shorthand{estonian}{"o}{\textormath{\"{o}}{\ddot o}} +\declare@shorthand{estonian}{"O}{\textormath{\"{O}}{\ddot O}} +\declare@shorthand{estonian}{"u}{\textormath{\"{u}}{\ddot u}} +\declare@shorthand{estonian}{"U}{\textormath{\"{U}}{\ddot U}} +% \end{macrocode} +% german and french quotes, +% \changes{estonian-1.0f}{1997/04/03}{Removed empty groups after +% double quote and guillemot characters} +% \begin{macrocode} +\declare@shorthand{estonian}{"`}{% + \textormath{\quotedblbase}{\mbox{\quotedblbase}}} +\declare@shorthand{estonian}{"'}{% + \textormath{\textquotedblleft}{\mbox{\textquotedblleft}}} +\declare@shorthand{estonian}{"<}{% + \textormath{\guillemotleft}{\mbox{\guillemotleft}}} +\declare@shorthand{estonian}{">}{% + \textormath{\guillemotright}{\mbox{\guillemotright}}} +% \end{macrocode} +% +% \begin{macrocode} +\declare@shorthand{estonian}{~o}{\textormath{\@tilde o}{\tilde o}} +\declare@shorthand{estonian}{~O}{\textormath{\@tilde O}{\tilde O}} +\declare@shorthand{estonian}{~s}{\textormath{\@tilde s}{\check s}} +\declare@shorthand{estonian}{~S}{\textormath{\@tilde S}{\check S}} +\declare@shorthand{estonian}{~z}{\textormath{\@tilde z}{\check z}} +\declare@shorthand{estonian}{~Z}{\textormath{\@tilde Z}{\check Z}} +% \end{macrocode} +% and some additional commands: +% \begin{macrocode} +\declare@shorthand{estonian}{"-}{\nobreak\-\bbl@allowhyphens} +\declare@shorthand{estonian}{"|}{% + \textormath{\nobreak\discretionary{-}{}{\kern.03em}% + \allowhyphens}{}} +\declare@shorthand{estonian}{""}{\dq} +\declare@shorthand{estonian}{~~}{\til} +% \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{estonian-1.0e}{1996/11/02}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{estonian} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/estonian.ins b/Master/texmf-dist/source/generic/babel/estonian.ins new file mode 100644 index 00000000000..ed51cbad940 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/estonian.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{estonian.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{estonian.ldf}{\from{estonian.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/finnish.dtx b/Master/texmf-dist/source/generic/babel/finnish.dtx new file mode 100644 index 00000000000..ccd3b9e62e4 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/finnish.dtx @@ -0,0 +1,362 @@ +% \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{172} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{finnish.dtx} +%</dtx> +%<code>\ProvidesLanguage{finnish} +%\fi +%\ProvidesFile{finnish.dtx} + [2005/03/30 v1.3p Finnish support from the babel system] +%\iffalse +%% File `finnish.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Finnish language definition file. A contribution +% was made by Mikko KANERVA (KANERVA@CERNVM) and Keranen Reino +% (KERANEN@CERNVM). +%<*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{finnish.dtx} +\end{document} +%</filedriver> +%\fi +% +% \GetFileInfo{finnish.dtx} +% +% \changes{finnish-1.0a}{1991/07/15}{Renamed \file{babel.sty} in +% \file{babel.com}} +% \changes{finnish-1.1}{1991/02/15}{Brought up-to-date with babel 3.2a} +% \changes{finnish-1.2}{1994/02/27}{Update for \LaTeXe} +% \changes{finnish-1.3c}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{finnish-1.3d}{1994/06/30}{Removed a few references to +% \file{babel.com}} +% \changes{finnish-1.3i}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \section{The Finnish language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. A contribution was made by Mikko KANERVA +% (\texttt{KANERVA@CERNVM}) and Keranen Reino +% (\texttt{KERANEN@CERNVM}).} defines all the language definition +% macros for the Finnish language. +% +% For this language the character |"| is made active. In +% table~\ref{tab:finnish-quote} an overview is given of its purpose. +% +% \begin{table}[htb] +% \centering +% \begin{tabular}{lp{8cm}} +% \verb="|= & disable ligature at this position.\\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word.\\ +% |"=| & an explicit hyphen sign for expressions such as +% ``pakastekaapit ja -arkut''.\\ +% |""| & like \verb="-=, but producing no hyphen sign (for +% words that should break at some sign such as +% ``entrada/salida.''\\ +% |"`| & lowered double left quotes (looks like ,,)\\ +% |"'| & normal double right quotes\\ +% |"<| & for French left double quotes (similar to $<<$).\\ +% |">| & for French right double quotes (similar to $>>$).\\ +% |\-| & like the old |\-|, but allowing hyphenation +% in the rest of the word. +% \end{tabular} +% \caption{The extra definitions made by \file{finnish.ldf}} +% \label{tab:finnish-quote} +% \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{finnish-1.3i}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{finnish}\captionsfinnish +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{finnish} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@finnish| to see whether we have to do something here. +% +% \changes{finnish-1.0b}{1991/10/29}{Removed use of \cs{@ifundefined}} +% \changes{finnish-1.1}{1992/02/15}{Added a warning when no hyphenation +% patterns were loaded.} +% \changes{finnish-1.3c}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@finnish\@undefined + \@nopatterns{Finnish} + \adddialect\l@finnish0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to the +% Finnish language. The reason for this is that a user might want +% to switch back and forth between languages. +% +% \begin{macro}{\captionsfinnish} +% The macro |\captionsfinnish| defines all strings used in the four +% standard documentclasses provided with \LaTeX. +% \changes{finnish-1.1}{1992/02/15}{Added \cs{seename}, \cs{alsoname} +% and \cs{prefacename}} +% \changes{finnish-1.1}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{finnish-1.1.2}{1993/09/16}{Added translations} +% \changes{finnish-1.3g}{1995/07/02}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{finnish-1.3h}{1995/07/25}{Added finnish word for `Proof'} +% \changes{finnish-1.3n}{2000/09/19}{Added \cs{glossaryname}} +% \changes{finnish-1.3o}{2001/03/12}{Provided translation for +% Glossary} +% \begin{macrocode} +\addto\captionsfinnish{% + \def\prefacename{Esipuhe}% + \def\refname{Viitteet}% + \def\abstractname{Tiivistelm\"a} + \def\bibname{Kirjallisuutta}% + \def\chaptername{Luku}% + \def\appendixname{Liite}% + \def\contentsname{Sis\"alt\"o}% /* Could be "Sis\"allys" as well */ + \def\listfigurename{Kuvat}% + \def\listtablename{Taulukot}% + \def\indexname{Hakemisto}% + \def\figurename{Kuva}% + \def\tablename{Taulukko}% + \def\partname{Osa}% + \def\enclname{Liitteet}% + \def\ccname{Jakelu}% + \def\headtoname{Vastaanottaja}% + \def\pagename{Sivu}% + \def\seename{katso}% + \def\alsoname{katso my\"os}% + \def\proofname{Todistus}% + \def\glossaryname{Sanasto}% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datefinnish} +% The macro |\datefinnish| redefines the command |\today| to +% produce Finnish dates. +% \changes{finnish-1.3e}{1994/07/12}{Added a`.' after the number of +% the day} +% \changes{finnish-1.3k}{1997/10/01}{Use \cs{edef} to define \cs{today} +% to save memory} +% \changes{finnish-1.3k}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \begin{macrocode} +\def\datefinnish{% + \def\today{\number\day.~\ifcase\month\or + tammikuuta\or helmikuuta\or maaliskuuta\or huhtikuuta\or + toukokuuta\or kes\"akuuta\or hein\"akuuta\or elokuuta\or + syyskuuta\or lokakuuta\or marraskuuta\or joulukuuta\fi + \space\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasfinnish} +% \begin{macro}{\noextrasfinnish} +% Finnish has many long words (some of them compound, some not). +% For this reason hyphenation is very often the only solution in +% line breaking. For this reason the values of |\hyphenpenalty|, +% |\exhyphenpenalty| and |\doublehyphendemerits| should be +% decreased. (In one of the manuals of style Matti Rintala noticed +% a paragraph with ten lines, eight of which ended in a hyphen!) +% +% Matti Rintala noticed that with these changes \TeX\ handles +% Finnish very well, although sometimes the values of |\tolerance| +% and |\emergencystretch| must be increased. However, I don't think +% changing these values in \file{finnish.ldf} is appropriate, as +% the looseness of the font (and the line width) affect the correct +% choice of these parameters. +% \changes{finnish-1.3f}{1995/05/13}{Added the setting of more +% hyphenation parameters, according to PR1027} +% \begin{macrocode} +\addto\extrasfinnish{% + \babel@savevariable\hyphenpenalty\hyphenpenalty=30% + \babel@savevariable\exhyphenpenalty\exhyphenpenalty=30% + \babel@savevariable\doublehyphendemerits\doublehyphendemerits=5000% + \babel@savevariable\finalhyphendemerits\finalhyphendemerits=5000% + } +\addto\noextrasfinnish{} +% \end{macrocode} +% +% Another thing |\extrasfinnish| needs to do is to ensure that +% |\frenchspacing| is in effect. If this is not the case the +% execution of |\noextrasfinnish| will switch it of again. +% \changes{finnish-1.3f}{1995/05/15}{Added the setting of +% \cs{frenchspacing}} +% \begin{macrocode} +\addto\extrasfinnish{\bbl@frenchspacing} +\addto\noextrasfinnish{\bbl@nonfrenchspacing} +% \end{macrocode} +% +% For Finnish the \texttt{"} character is made active. This is +% done once, later on its definition may vary. Other languages in +% the same document may also use the \texttt{"} character for +% shorthands; we specify that the finnish group of shorthands +% should be used. +% \changes{finnish-1.3g}{1995/07/02}{Added the active double quote} +% \begin{macrocode} +\initiate@active@char{"} +\addto\extrasfinnish{\languageshorthands{finnish}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{finnish-1.3n}{1999/12/16}{Deactive shorthands ouside of Finnish} +% \begin{macrocode} +\addto\extrasfinnish{\bbl@activate{"}} +\addto\noextrasfinnish{\bbl@deactivate{"}} +% \end{macrocode} +% +% +% The `umlaut' character should be positioned lower on \emph{all} +% vowels in Finnish texts. +% \begin{macrocode} +\addto\extrasfinnish{\umlautlow\umlautelow} +\addto\noextrasfinnish{\umlauthigh} +% \end{macrocode} +% +% First we define access to the low opening double quote and +% guillemets for quotations, +% \changes{finnish-1.3k}{1997/04/03}{Removed empty groups after +% double quote and guillemot characters} +% \changes{finnish-1.3m}{1999/04/13}{Added misisng closing brace} +% \begin{macrocode} +\declare@shorthand{finnish}{"`}{% + \textormath{\quotedblbase}{\mbox{\quotedblbase}}} +\declare@shorthand{finnish}{"'}{% + \textormath{\textquotedblright}{\mbox{\textquotedblright}}} +\declare@shorthand{finnish}{"<}{% + \textormath{\guillemotleft}{\mbox{\guillemotleft}}} +\declare@shorthand{finnish}{">}{% + \textormath{\guillemotright}{\mbox{\guillemotright}}} +% \end{macrocode} +% then we define two shorthands to be able to specify hyphenation +% breakpoints that behave a little different from |\-|. +% \changes{finnish-1.3p}{2001/11/13}{\texttt{"=} should also use +% \cs{bbl@allowhyphens}} +% \begin{macrocode} +\declare@shorthand{finnish}{"-}{\nobreak-\bbl@allowhyphens} +\declare@shorthand{finnish}{""}{\hskip\z@skip} +\declare@shorthand{finnish}{"=}{\hbox{-}\bbl@allowhyphens} +% \end{macrocode} +% And we want to have a shorthand for disabling a ligature. +% \begin{macrocode} +\declare@shorthand{finnish}{"|}{% + \textormath{\discretionary{-}{}{\kern.03em}}{}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\-} +% +% All that is left now is the redefinition of |\-|. The new version +% of |\-| should indicate an extra hyphenation position, while +% allowing other hyphenation positions to be generated +% automatically. The standard behaviour of \TeX\ in this respect is +% very unfortunate for languages such as Dutch, Finnish and German, +% where long compound words are quite normal and all one needs is a +% means to indicate an extra hyphenation position on top of the +% ones that \TeX\ can generate from the hyphenation patterns. +% \changes{finnish-1.3g}{1995/07/02}{Added change of \cs{-}} +% \changes{finnish-1.3n}{2000/09/19}{\cs{allowhyphens} should have +% been \cs{bbl@allowhyphens}} +% \begin{macrocode} +\addto\extrasfinnish{\babel@save\-} +\addto\extrasfinnish{\def\-{\bbl@allowhyphens + \discretionary{-}{}{}\bbl@allowhyphens}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\finishhyphenmins} +% The finnish hyphenation patterns can be used with |\lefthyphenmin| +% set to~2 and |\righthyphenmin| set to~2. +% \changes{finnish-1.3f}{1995/05/13}{use \cs{finnishhyphenmins} to +% store the correct values} +% \changes{finnish-1.3n}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% 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{finnish-1.3i}{1996/11/02}{Now use \cs{ldf@finish} to wrap up} +% \begin{macrocode} +\ldf@finish{finnish} +%</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 + diff --git a/Master/texmf-dist/source/generic/babel/finnish.ins b/Master/texmf-dist/source/generic/babel/finnish.ins new file mode 100644 index 00000000000..370fbf37b29 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/finnish.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{finnish.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{finnish.ldf}{\from{finnish.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/frenchb.dtx b/Master/texmf-dist/source/generic/babel/frenchb.dtx new file mode 100644 index 00000000000..279ee712f9b --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/frenchb.dtx @@ -0,0 +1,2477 @@ +% \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{1985} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. Nothing to write to the .cfg file, if generated. +%<*dtx> +\ProvidesFile{frenchb.dtx} +%</dtx> +%<code>\ProvidesLanguage{french} +%\ProvidesFile{frenchb.dtx} +%<*!cfg> + [2005/02/06 v1.6g French support from the babel system] +%</!cfg> +%<*cfg> +%% frenchb.cfg: configuration file for frenchb.ldf +%% Daniel Flipo Daniel.Flipo at univ-lille1.fr +%</cfg> +%% File `frenchb.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%<*!cfg> +%% Frenchb language Definition File +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +%% Daniel Flipo, GUTenberg +% +%% Please report errors to: Daniel Flipo, GUTenberg +%% Daniel.Flipo at univ-lille1.fr +%</!cfg> +% +% This file is part of the babel system, it provides the source +% code for the French language definition file. +% For differences with francais.sty (author J. Braams) and with +% french.sty (author B. Gaulle), see documentation printed by +% |latex frenchb.dtx|. +% +%<*filedriver> +\documentclass[a4paper]{ltxdoc} +\newcommand*\TeXhax{\TeX hax} +\newcommand*\babel{\textsf{babel}} +\newcommand*\langvar{$\langle \mathit lang \rangle$} +\newcommand*\note[1]{} +\newcommand*\Lopt[1]{\textsf{#1}} +\newcommand*\file[1]{\texttt{#1}} +\begin{document} +\parindent = 0pt +\begin{center} + \textbf{\Large A Babel language definition file for French}\\[3mm]^^A\] + Daniel \textsc{Flipo}\\ + \texttt{Daniel.Flipo@univ-lille1.fr} +\end{center} + \DocInput{frenchb.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{frenchb.dtx} +% +% \changes{frenchb-1.1}{1995/12/23}{Added a hook to insert space or +% not before `double punctuation'.} +% +% \changes{frenchb-1.1b}{1996/08/07}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% +% \changes{frenchb-1.1b}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning.} +% +% \changes{frenchb-1.3f}{1999/04/11}{Deleted sectioning command +% \cs{section}\{About French Typography\}.} +% +% \section{The French language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate.}, derived from \file{frenchy.sty}, defines all +% the language definition macros for the French language. +% +% Customization for the French language is achieved following the +% book ``Lexique des r\`egles typographiques en usage \`a +% l'Imprimerie nationale'' troisi\`eme \'edition (1994), +% ISBN-2-11-081075-0. +% +% This file has been designed to be used with \LaTeXe, \LaTeX-2.09 +% and Plain\TeX{} formats. If you are still using \LaTeX-2.09, you +% \emph{should} consider switching to \LaTeXe! +% +% The command |\selectlanguage{french}| switches to the French +% language% +% \footnote{\texttt{\textbackslash selectlanguage\{francais\}} +% and \texttt{\textbackslash selectlanguage\{frenchb\}} are kept +% for backward compatibility but should no longer be used.}, +% with the following effects: +% \begin{enumerate} +% \item French hyphenation patterns are made active; +% \item `double punctuation' is made active for correct spacing +% in French; +% \item |\today| prints the date in French; +% \item the caption names are translated into French +% (\LaTeX{} only); +% \item the default items in itemize environment are set to `--' +% instead of \textbullet, and all vertical spacing and glue +% is deleted, a hook to reset standard \LaTeX{} spacing +% is provided (|\FrenchItemizeSpacingfalse|); +% it is possible to change `--' to something else (`---' +% for instance) by redefining |\FrenchLabelItem|; +% apart from the global hook |\FrenchLabelItem|, it is +% also possible to change the `labelitems' at any level +% (1 to 4) in French, using the standard \LaTeX{} syntax, +% for instance: |\renewcommand{\labelitemii}{\textbullet}|; +% in order to be effective in French, the redefinitions +% have to be made when French is the current language +% (i.e.\ \emph{after} the |\begin{document}|), the changes are +% saved when switching to another language and will be +% remembered of, when switching back to French; +% \item vertical spacing in general \LaTeX{} lists is +% shortened, a hook to reset standard \LaTeX{} settings +% is provided (|\FrenchListSpacingfalse|) ; +% \item the first paragraph of each section is indented +% (\LaTeX{} only); +% \item the space after |\dots| is removed in French. +% \end{enumerate} +% +% Some commands are provided in |frenchb| to make typesetting +% easier: +% \begin{enumerate} +% \item French quotation marks can be entered using the commands +% |\og| and |\fg| which work in \LaTeXe, \LaTeX-2.09 and +% Plain\TeX{}, their appearance depending on what is +% available to draw them; if you use \LaTeXe{} \emph{and} +% |T1|-encoding you can also enter them as +% |<<~French quotation marks~>>| but then +% \emph{don't forget} the unbreakable spaces, (|\og| and +% |\fg| provide for correct line breaks and better +% horizontal spacing). +% |\og| and |\fg| can be used outside French, they provide +% then English quotes `` and ''. +% \item A command |\up| is provided to typeset superscripts like +% |M\up{me}| (abbreviation for ``Madame''), |1\up{er}| (for +% ``premier''). +% \item Family names should be typeset in small capitals and never +% be hyphenated, the macro |\bsc| (boxed small caps) does +% this, e.g., |Leslie~\bsc{Lamport}| will produce +% Leslie~\mbox{\textsc{Lamport}}. +% \item Commands |\primo|, |\secundo|, |\tertio| and |\quarto| +% may be used to enumerate in lists. +% \item Abbreviations for ``Num\'ero'' and ``num\'ero'' are +% obtained via the commands |\No|, |\no|. +% \item Two commands are provided to typeset the symbol for +% ``degr\'e'': |\degre| prints the raw character and +% |\degres| should be used to typeset temperatures (e.g., +% ``|20~\degres C|'' with an unbreakable space), or for +% alcohols' strengths (e.g., ``|45\degres|'' with \emph{no} +% space in French). +% \item In math mode the comma has to be surrounded with +% braces to avoid a spurious space being inserted after it, +% in decimal numbers for instance (see the \TeX{}book p.~134). +% The command |\DecimalMathComma| makes the comma be an +% ordinary character \emph{in French only} (no space added); +% as a counterpart, if |\DecimalMathComma| is active, an +% explicit space has to be added in lists and intervals: +% |$[0,\ 1]$|, |$(x,\ y)$|. |\StandardMathComma| switches back +% to the standard behaviour of the comma. +% \item A command |\nombre| is provided to easily typeset numbers: +% it works both in text and in math mode: inputting +% |\nombre{3141,592653}| will format this number properly +% according to the current language (French or non-French): +% each slice of three digits will be separated either with +% a comma in English or with a space in French (if you prefer +% a thin space instead of a normal space, just add the command +% |\ThinSpaceInFrenchNumbers| to the preamble of your document, +% or to |frenchb.cfg|). +% The command |\nombre| is a contribution of Vincent Jalby +% using ideas of David Carlisle in comma.sty. +% \item |frenchb| has been designed to take advantage of the |xspace| +% package if present: adding |\usepackage{xspace}| in the +% preamble will force macros like |\fg|, |\ier|, |\ieme|, +% |\dots|, \dots, to respect the spaces you type after them, +% for instance typing `|1\ier juin|' will print +% `1\textsuperscript{er} juin' (no need for a forced space +% after |1\ier|). +% \item Two commands, |\FrenchLayout| and |\StandardLayout| (to be +% used \emph{only in the preamble}) are provided to unify the +% layout of multilingual documents (it mainly concerns lists) +% regardless the current language (see section~\ref{sec-global} +% for details). +% \item Two commands |\AddThinSpaceBeforeFootnotes| and +% |\FrenchFootnotes| enable to customize the layout of +% footnotes following the French IN's specifications; +% the first one, which can only be used \emph{before} the +% |\begin{document}|, adds a thinspace in the running text +% before the number or symbol calling the footnote; the +% second one modifies the footnote's layout: it typesets +% leading numbers as `1.\hspace{.5em}' instead of +% `$\hbox{}^1$'. |\FrenchFootnotes| has no effect on footnotes +% numbered with symbols (as in the |\thanks| command). +% +% None of these commands are active by default, both can +% be best added to |frenchb.cfg| or to the preamble of the +% document. |\FrenchFootnotes| and |\StandardFootnotes|, +% which cancels the effect of |\FrenchFootnotes| for the +% text coming next, can be used anywhere in the document. +% The command |\StandardFootnotes| may be useful when +% some footnotes are numbered with letters (inside minipages +% for instance). +% +% |\AddThinSpaceBeforeFootnotes| and |\FrenchFootnotes| act +% on \emph{all} footnotes whatever the current language is. +% \end{enumerate} +% +% \vspace{\baselineskip} +% All commands previously available in |francais.ldf| have been +% included in |frenchb.ldf| for compatibility, sometimes with +% updated definitions. +% +% The |french| package, by Bernard~\textsc{Gaulle}, was not +% designed to run with \babel\ (although the latest versions claim +% to be \babel\ compatible), but rather as a stand-alone package +% for the French language. +% It provides many more functionalities (like |\lettrine|, +% |\sommaire|\dots) not available in |frenchb|, +% at the cost of a much greater complexity and possible +% incompatibilities with other languages. +% +% As |french| is known to produce the best layout available for +% French typography, I have borrowed many ideas from Bernard's file. +% I did my best to help users of both packages (|french| and +% |frenchb|) to exchange their sources files easily (see the example +% configuration file below in section~\ref{sec-cfg}), with one +% exception which affects the way French quotation marks are +% entered: |frenchb| uses \emph{macros} (|\og| and |\fg|) while +% |french| uses active characters (|<<| and |>>|). +% +% \vspace{\baselineskip} +% French typographic rules specify that some white space should be +% present before `double punctuation' characters. These characters +% are |;| |!| |?| and |:|. +% In order to get this white space automatically, the category code +% of these characters is made |\active|. In French, the user +% \emph{should} input these four characters preceded with a space, +% but as many people forget about it (even among native French +% writers!), the default behaviour of |frenchb| is to automatically +% add a |\thinspace| before `|;|' `|!|' `|?|' and a normal +% (unbreakable) space before~`|:|' (this is the rule in French +% typography). It's up to the user to add or not a space +% \emph{after} `double punctuation' characters: usually a space is +% necessary, but not always (before a full point or a closing brace +% for instance), so this cannot done automatically. +% +% In (rare) cases where no space should be added before a `double +% punctuation', either use |\string;| |\string:| |\string!| +% |\string?| instead of |;| |:| |!| |?|, or switch locally to +% English. For instance you can type |C\string:TEX| or +% |\begin{otherlanguage}{english}{C:TEX}\end{otherlanguage}| to +% avoid the space before~|:| in a MS-DOS path. +% +% Some users dislike this automatic insertion of a space before +% `double punctuation', and prefer to decide themselves whether a +% space should be added or not; so a hook |\NoAutoSpaceBeforeFDP| +% is provided: if this command is added (in file |frenchb.cfg|, or +% anywhere in a document) |frenchb| will respect your typing, and +% introduce a suitable space before `double punctuation' \emph{if +% and only if} a space is typed in the source file before those +% signs. +% +% The command |\AutoSpaceBeforeFDP| switches back to the +% default behaviour of |frenchb|. +% +% \vspace{\baselineskip} +% Once you have built your format, a good precaution would be to +% perform some basic tests about hyphenation in French. For +% \LaTeXe{} I suggest this: +% \begin{itemize} +% \item run the following file, with the encoding suitable for +% your machine (\textit{my-encoding} will be |latin1| for +% \textsc{unix} machines and PCs running~Windows, |applemac| +% for Macintoshs, or |cp850| for PCs running~DOS). \\[3mm]^^A\] +% |%%% Test file for French hyphenation.|\\ +% |\documentclass{article}|\\ +% |\usepackage[|\textit{my-encoding}|]{inputenc}|\\ +% |\usepackage[T1]{fontenc} % Use EC fonts for French|\\ +% |%\usepackage{aeguill} % Uncomment this line and|\\ +% | % comment out the preceeding one|\\ +% | % to use AE virtual fonts.|\\ +% |\usepackage[francais]{babel}|\\ +% |\begin{document}|\\ +% |\showhyphens{signal container \'ev\'enement alg\`ebre}|\\ +% |\showhyphens{|\texttt{signal container \'ev\'enement +% alg\`ebre}|}|\\ +% |\end{document}| +% \item check the hyphenations proposed by \TeX{} in your log-file; +% in French you should get with both 7-bit and 8-bit encodings\\ +% \texttt{si-gnal contai-ner \'ev\'e-ne-ment al-g\`ebre}.\\ +% Do not care about how accented characters are displayed in the +% log-file, what matters is the position of the `|-|' hyphen +% signs \emph{only}. +% \end{itemize} +% If they are all correct, your installation (probably) works fine, +% if one (or more) is (are) wrong, ask a local wizard to see what's +% going wrong and perform the test again (or e-mail me about what +% happens).\\ +% Frequent mismatches: +% \begin{itemize} +% \item you get |sig-nal con-tainer|, this probably means that the +% hyphenation patterns you are using are for US-English, not for +% French; +% \item you get no hyphen at all in \texttt{\'ev\'e-ne-ment}, this +% probably means that you are using CM fonts and the macro +% |\accent| to produce accented characters. +% Using EC fonts with built-in accented characters or Ml\TeX{} +% with CM fonts avoids this type of mismatch. +% \end{itemize} +% +% \vspace{\baselineskip} +% |frenchb| has been improved using helpful suggestions from many +% people, the main contributions came from Vincent~Jalby. +% Thanks to all of them! +% +% \subsection*{Changes} +% +% First version released: 1.1 as of 1996/05/31 part of +% \babel-3.6beta. +% +% \textbf{Changes in version 1.1b}: update for \babel-3.6. +% +% \textbf{Changes in version 1.2}: new command |\nombre| to +% format numbers; removed command |\fup| borrowed from the +% |french| package (|\up| does a better job in \LaTeXe); +% also removed aliases |\french| and |\english| (frenchb.cfg +% is a better place for these). +% +% \textbf{Changes in version 1.3}: +% \begin{itemize} +% \item The `xspace' package, when present, now controls +% spacing after all (sensible) macros, formerly `xspace' +% worked on |\fg| (suggested by Vincent~Jalby); +% \item spacing after opening and before closing guillemets +% improved as suggested by Thierry~Bouche; +% \item a replacement for poor looking guillemets in OT1 encoding +% (\emph{math} fonts are used to emulate them) is provided +% if the file |ot2wncyr.fd| is found: this file defines an +% OT2 encoding using AMS Cyrillic fonts; these +% have built-in guillemets, they are \emph{text} fonts, +% are free, and are distributed as METAFONT and Type1 fonts +% (good for pdftex!), the replacement was suggested by +% G\'erard~Degrez; if the files |ot2wncyr.fd|, |wncy*.mf|, +% |wncy*.tfm|, and |wncy*.pfb| aren't available on your +% system, you \emph{should} get them from \mbox{CTAN}; +% if your system complains about missing |wncy*.tfm| fonts, +% it means your \TeX{} system is \emph{incomplete}, as a +% quick fix, you can either remove |ot2wncyr.fd| or add the +% command |\LasyGuillemets| to the preamble of your document +% or to |frenchb.cfg|, then |frenchb| will behave as it did +% in the previous versions.\\ +% In case Cyrillic guillemets do not fit, it is possible +% to pick French guillemets from any font using the +% command |\FrenchGuillemetsFrom| which requires 4 arguments +% |\FrenchGuillemetsFrom{|{\it coding}|}{|{\it font}\relax +% |}{|{\it char-left}|}{|{\it char-right}|}|, for instance, +% add |\FrenchGuillemetsFrom{T1}{ppl}{19}{20}| to the +% preamble of your document or to |frenchb.cfg|, to pick +% French guillemets from Palatino (fontname=ppl, char 19 +% and 20 are left and right guillemets in T1-encoding). +% This was suggested by Michel~Bovani. +% \item the environment `itemize' has been redesigned in French +% according to specifications from Jacques~Andr\'e +% and Thierry~Bouche; it is possible to switch back to the +% settings of version~1.2: add |\FrenchItemizeSpacingfalse| +% \emph{after} loading |frenchb| in the preamble (this can +% be useful to process old documents); +% \item two switches have been added to go back to standard +% \LaTeX{} list spacing |\FrenchItemizeSpacingfalse| +% and |\FrenchListSpacingfalse|; +% \item |\nombre| now properly handles signs in \LaTeXe; +% \item definition of |\dots| changed in French; +% \item in French, with the standard \LaTeX{} classes, captions +% in figures and tables are printed with an endash instead +% of a colon. +% \end{itemize} +% +% \textbf{Changes in version 1.4}: +% \begin{itemize} +% \item the redefinition of|\@makecaption| is changed not to +% overwrite the changes made by some classes (koma-script, +% amsart, ua-thesis\dots) as pointed out by Werner~Lemberg; +% \item a hook, |\FrenchGuillemetsFrom|, is provided to pick +% French guillemets from any font (suggested by +% Michel~Bovani, works \emph{only} in OT1-encoding); +% \item a hook, |\FrenchLabelItem|, is provided to enable marks +% other than `--' (|\textendash|) in French lists +% (also suggested by Michel~Bovani); +% \item |\DecimalMathComma|, |\StandardMathComma|, +% |\ThinSpaceInFrenchNumbers| added; +% \item |\FrenchLayout| and |\StandardLayout| added; +% \item an example of customization file |frenchb.cfg| is +% included in |frenchb.dtx|. +% \end{itemize} +% +% \textbf{Changes in version 1.5}: +% \begin{itemize} +% \item The settings for spacing in French lists are no longer +% tuned at the |\@trivlist| level but within |\list|; this +% enables the users to provide their own settings for the +% lists they define with |\list| (suggested by P. Pichaureau). +% Although the layout of the standard lists +% \emph{has not changed}, some lists, based directly on +% |\@trivlist| or |\trivlist|, could possibly be typeset +% differently when upgrading from version 1.4 to 1.5. +% The command |\FrenchOldTrivlisttrue| could then, be useful +% to process older documents. +% \item Apart from the global hook |\FrenchLabelItem|, it is +% now also possible to change the `labelitems' at any level +% (1 to 4) in French, using the standard \LaTeX{} syntax, +% for instance: |\renewcommand{\labelitemii}{\textbullet}|. +% \item The internal name for the French language has been +% changed from |frenchb| to |french|, it means that +% |\captionsfrench|, |\datefrench|, |\extrasfrench|, +% |\noextrasfrench|, are to be used now instead of +% |\captionsfrenchb|, |\datefrenchb|, |\extrasfrenchb|, +% |\noextrasfrenchb|. +% \item From version 1.5f on, it is possible to customize +% the space inserted before a colon in French; its default +% value is |\space| (as in previous versions of |frenchb|), +% but it can now be changed to |\thinspace| by redefining +% |\Fcolonspace|. +% \end{itemize} +% +% \textbf{Changes in version 1.6}: +% \begin{itemize} +% \item Two new commands are provided: +% |\AddThinSpaceBeforeFootnotes| and |\FrenchFootnotes|; +% they enable to typeset footnotes according to the +% French IN's specifications (suggested by Jacques~Andr\'e). +% \item |frenchb| will make use of |\textdegree| (TS1 encoding) +% to typeset degrees whenever possible. +% \item Default guillemets have been changed \emph{in OT1 +% encoding only} in version~1.6c: the former ones were picked +% up in the wncyr fonts, which forced the cyrillic encoding to +% OT2 when \babel{} was loaded with option |frenchb| before a +% cyrillic language (|russian|, |ukrainian| or |bulgarian|). +% Now, LM fonts for T1-encoding are available, we pick up the +% guillemets from them, for OT1-encoding. +% \item The config file |frenchb.cfg| is now loaded only when +% \LaTeXe{} is used (from version~1.6g). +% \item The command |\degres| now works also in math mode (from +% version~1.6g), but not in bold versions (it is a text +% character basically). +% \end{itemize} +% +% \StopEventually{} +% +% \subsection*{Customizing frenchb: an example of configuration file} +% \label{sec-cfg} +% +% \changes{frenchb-1.4d}{1999/12/19}{Do NOT set catcodes of French +% quotes to 12 before launching \cs{initiate@active@char} in +% frenchb.cfg, (problem on Mac reported by M.Bovani).} +% +% \begin{macrocode} +%<*cfg> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% If you want to customize frenchb, please DO NOT hack into the code, +%% copy this file into a directory searched by TeX, preferably a +%% personal one on multi-user systems, and customize it as you like. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% WARNING: If you exchange your documents with colleagues using +%% a different TeX installation, it is best NOT TO HAVE a frenchb.cfg +%% file, and add instead the customization commands to the preamble +%% of your documents after babel and frenchb have been loaded. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Uncomment the following line if you dislike frenchb automatically +%% adding a space before French double punctuation (see frenchb.dtx +%% for more information). +%% +%%\NoAutoSpaceBeforeFDP +%% +%% frenchb inserts a normal space before a colon in French (following +%% I.N. specifications), but some people prefer a thinspace instead; +%% uncomment the following line if you prefer a thinspace. +%% +%%\renewcommand{\Fcolonspace}{\thinspace} +%% +%% Uncomment the following line to force lasy font emulation for +%% French guillemets in OT1 encoding; Polish guillemets are +%% FAR BETTER LOOKING, you should normally leave this line commented out. +%% +%%\LasyGuillemets +%% +%% The following option is for backward compatibility ONLY +%% (it might conflict with the russian option of babel). +%% Uncomment the following line if you want to get back to +%% the default guillemets used in versions $<$ 1.6b for OT1-encoding +%% (no effect in T1-encoding). +%% +%%\CyrillicGuillemets +%% +%% If you dislike Polish guillemets in OT1-encoding, you can easily +%% pick up yours from other fonts, examples below: Palatino or +%% cyrillic CMR T2A encoded font. +%% The four arguments are: encoding, font name, character codes of +%% the opening and closing guillemets in the selected font. +%% +%%\FrenchGuillemetsFrom{T1}{ppl}{19}{20} +%%\FrenchGuillemetsFrom{T2A}{cmr}{190}{191} +%% +%% Uncomment the following line if you don't want frenchb to change +%% LaTeX standard settings for vertical spacing in 'itemize' lists. +%% LaTeX standard settings were used by frenchb in versions < 1.3, +%% so you may want to uncomment the following line to process older +%% documents. +%% +%%\FrenchItemizeSpacingfalse +%% +%% frenchb tunes vertical spaces in all lists (at \list level), +%% uncomment the following line if you prefer LaTeX standard settings +%% (this flag is new in version 1.3). When \ifFrenchItemizeSpacing is +%% `true' (default setting), this flag has no effect on itemize lists. +%% +%%\FrenchListSpacingfalse +%% +%% The command \FrenchLabelItem can be used to set the `labelitems' +%% for all levels in French. For instance, to get long dashes, use: +%% +%%\renewcommand{\FrenchLabelItem}{\textemdash} +%% +%% You can also have different `labelitems' for each level in French: +%% +%%\renewcommand{\Frlabelitemi}{\textemdash} +%%\renewcommand{\Frlabelitemii}{\bfseries\textendash} +%%\renewcommand{\Frlabelitemiii}{\textbullet} +%%\renewcommand{\Frlabelitemiv}{} +%% +%% Uncomment the following line if you want a thinspace to be added +%% in the running text before the footnote number or symbol. +%% +%%\AddThinSpaceBeforeFootnotes +%% +%% Uncomment the following line if you want footnotes to be typeset +%% according the specifications of the French `Imprimerie Nationale'. +%% +%%\FrenchFootnotes +%% +%% Uncomment the following line if you want the command \nombre to +%% insert thin spaces (1/6em) instead of normal spaces (0.3em) +%% between slices of 3 digits when typesetting numbers in French. +%% +%%\ThinSpaceInFrenchNumbers +%% +%% If you are bored to type {,} every time you want a decimal comma in +%% math mode, uncomment the following line (and don't forget to add a +%% forced space after the comma in lists and intervals: $(x,\ y)$ and +%% $[0,\ 1]$). I suggest NOT TO UNCOMMENT the following line, +%% and to switch between the decimal comma and the standard comma +%% using \DecimalMathComma and \StandardMathComma inside the document. +%% +%%\DecimalMathComma +%% +%% If you do not want the appearance of lists to depend on the current +%% language, add ONE of these two commands: \FrenchLayout (for a +%% document mainly in French) or \StandardLayout (for a document +%% mainly in English). +%% +%%\FrenchLayout +%%\StandardLayout +%% +%% With the standard LaTeX classes (article.cls, report.cls, book.cls) +%% you can change the separator used in figure and table captions in +%% French with \CaptionSeparator, for instance (the default value of +%% \CaptionSeparator in French is '\space\textendash\space'): +%% +%%\addto\captionsfrench{\def\CaptionSeparator{\space\textemdash\space}} +%% +%% You might want to change some of the translations of caption names, +%% you can do it this way, for instance: +%% +%%\addto\captionsfrench{\def\figurename{{\scshape Figure}}} +%%\addto\captionsfrench{\def\tablename{{\scshape Table}}} +%%\addto\captionsfrench{\def\proofname{Preuve}} +%% +%% If French guillemets are available on your keyboard, you can use +%% them instead of the commands \og and \fg: REPLACE << and >> in +%% the following code by your ready-made guillemets (2 occurrences +%% for each) AND uncomment the resulting code. +%% WARNINGS: +%% 1) This will reduce the portability of your source files! +%% 2) This adds two active characters. +%% 3) If you add this stuff to the preamble of a document, you'll +%% need to wrap it in \makeatletter ... \makeatother. +%% +%% \ifx\mule@def\undefined +%% \initiate@active@char{<<} +%% \initiate@active@char{>>} +%% \AtBeginDocument{% +%% \def<<{\og\ignorespaces}% +%% \def>>{{\fg}}% +%% }% +%% \else %%% For the CJK package, see MULEenc.sty. +%% \mule@def{11}{\og\ignorespaces} +%% \mule@def{27}{{\fg}} +%% \fi +%% +%% The rest is for compatibility with Bernard Gaulle's french.sty: +%% if you want to typeset with babel/frenchb files originally written +%% for french.sty, you will probably want to uncomment these lines. +%% +%% Uncomment these lines if you want the aliases \numero and \Numero +%% (as in french.sty) for \no and \No. +%% +%%\let\numero=\no +%%\let\Numero=\No +%% +%% Uncomment the following lines if you want to substitute `\bsc' to +%% either (or both) of french.sty macros `\fsc' and `\lsc'. +%% +%%\let\fsc=\bsc +%%\let\lsc=\bsc +%% +%% Uncomment the following line if you want to substitute `\up' to +%% french.sty macro `\fup'. +%% +%%\let\fup=\up +%% +%% Uncomment the following lines if you intend to use commands \french +%% and \english to switch between languages, as in french.sty. +%% +%%\def\french{\leavevmode\selectlanguage{french}} +%%\def\english{\leavevmode\selectlanguage{english}} +%% +%% Uncomment the following lines if you intend to use the command +%% \AllTeX to refer to all flavours of TeX, (this command has been +%% made popular by french.sty). +%% +%%\newcommand*{\AllTeX}{% +%% (L\kern-.36em\raise.3ex\hbox{\sc a}\kern-.15em)% +%% T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX} +%</cfg> +% \end{macrocode} +% +% \section{\TeX{}nical details} +% +% \subsection{Initial setup} +% +% 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{frenchb-1.1b}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% +% \changes{frenchb-1.5g}{2001/09/09}{Let \cs{LdfInit} check for +% \cs{datefrench} instead of \cs{NoAutoSpaceBeforeFDP}, +% as the later is also defined by russianb.ldf!} +% +% \begin{macrocode} +%<*code> +%% +\LdfInit\CurrentOption\datefrench +% \end{macrocode} +% +% \begin{macro}{\ifLaTeX} +% \begin{macro}{\ifLaTeXe} +% \changes{frenchb-1.1}{1996/02/12}{Use \cs{fmtname} to check +% the format instead of \cs{newcommand}; define \cs{PlainFmtName} +% and \cs{LaTeXeFmtName}.} +% +% \changes{frenchb-1.3f}{1999/04/11}{Use \cs{magnification} to check +% if the format is plain (i.e \emph{not} \LaTeX). Checking the +% format's name was not reliable: plain-like formats may not be +% called just `plain' but `babel-plain'.} +% +% To check the format in use (plain, \LaTeX{} or \LaTeXe), +% we'll need two new `if'. +% \begin{macrocode} +\newif\ifLaTeX +\ifx\magnification\@undefined\LaTeXtrue\fi +\newif\ifLaTeXe +\ifx\@compatibilitytrue\@undefined\else\LaTeXetrue\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\if@Two@E} +% \changes{frenchb-1.1}{1996/03/01}{New test \cs{if@Two@E}.} +% +% We will need another `if' : |\if@Two@E| is true if and only if +% \LaTeXe{} is running \emph{not} in compatibility mode. It is +% used in the definitions of the command |\nombre| and |\up|. +% The definition is somewhat complicated, due to the fact that +% |\if@compatibility| is not recognized as a |\if| in +% \LaTeX-2.09 based formats. +% \begin{macrocode} +\newif\if@Two@E \@Two@Etrue +\def\@FI@{\fi} +\ifx\@compatibilitytrue\@undefined + \@Two@Efalse \def\@FI@{\relax} +\else + \if@compatibility \@Two@Efalse \fi +\@FI@ +% \end{macrocode} +% \end{macro} +% +% \changes{frenchb-1.1b}{1996/11/07}{Removed test for \cs{l@english}} +% +% \changes{frenchb-1.2}{1997/01/05}{Check for hyphenation patterns} +% +% Check if hyphenation patterns for the French language have been +% loaded in language.dat; we allow for the names `french', +% `francais', `canadien' or `acadian'. The latter two are both +% names used in Canada for variants of French that are in use in +% that country. +% +% \changes{frenchb-1.5b}{2001/02/09}{Added support for canadien and +% acadian} +% +% \begin{macrocode} +\ifx\l@french\@undefined + \ifx\l@francais\@undefined + \ifx\l@canadien\@undefined + \ifx\l@acadian\@undefined + \@nopatterns{French} + \adddialect\l@french0 + \else + \let\l@french\l@acadian + \fi + \else + \let\l@french\l@canadien + \fi + \else + \let\l@french\l@francais + \fi +\fi +% \end{macrocode} +% After the statement above |\l@french| is sure to always be +% defined. +% +% \changes{frenchb-1.2}{1997/01/05}{`french' `frenchb' and +% `francais' are synonymous regardless of \cs{CurrentOption}.} +% The internal name for the French language will be `french'; +% `francais' and `frenchb' will be synonymous for `french': +% first let both names use the same hyphenation patterns. +% Later we will have to set aliases for |\captionsfrench|, +% |\datefrench|, |\extrasfrench| and |\noextrasfrench|. +% As French uses the standard values of |\lefthyphenmin| (2) +% and |\righthyphenmin| (3), no special setting is required here. +% +% \changes{frenchb-1.5d}{2001/02/16}{The internal name for the +% French language is changed from `frenchb' to `french'.} +% +% \begin{macrocode} +\def\CurrentOption{french} +\ifx\l@francais\@undefined + \let\l@francais\l@french +\fi +\ifx\l@frenchb\@undefined + \let\l@frenchb\l@french +\fi +% \end{macrocode} +% When this language definition file was loaded for one of the +% Canadian versions of French we need to make sure that a suitable +% hyphenation pattern register will be found by \TeX. +% +% \changes{babel-1.5b}{2001/02/09}{Added support for canadien and +% acadian} +% +% \begin{macrocode} +\ifx\l@canadien\@undefined + \let\l@canadien\l@french +\fi +\ifx\l@acadian\@undefined + \let\l@acadian\l@french +\fi +% \end{macrocode} +% +% \changes{frenchb-1.5g}{2001/09/09}{Instead of issuing a warning when +% \cs{captionsfrancais} or \cs{captionsfrenchb} are customized in +% the preamble, we merge the changes into \cs{captionsfrench}.} +% +% This language definition can be loaded for different variants of +% the French language. The `key' \babel\ macros are only defined +% once, using `french' as the language name, but |frenchb| and +% |francais| are synonymous. As some users who choose |frenchb| +% or |francais| as option of \babel, might customize +% |\captionsfrenchb| or |\captionsfrancais| in the preamble, +% we merge their changes at the |\begin{document}| when they do so +% (only possible in \LaTeXe). +% The other three commands for |\date|, |\extras|, and |\noextras| +% are not likely to be modified by end-users. +% The other variants of languages are defined by checking if the +% relevant option was used and then adding one extra level of +% expansion. +% +% \changes{frenchb-1.6c}{2003/06/30}{Bug correction: it is necessary +% to re-execute \cs{captionsfrench} after merging +% \cs{captionsfrenchb} and \cs{captionsfrancais}.} +% +% \begin{macrocode} +\def\datefrancais{\datefrench} +\def\extrasfrancais{\extrasfrench} +\def\noextrasfrancais{\noextrasfrench} +\def\datefrenchb{\datefrench} +\def\extrasfrenchb{\extrasfrench} +\def\noextrasfrenchb{\noextrasfrench} +\ifLaTeXe + \AtBeginDocument{\let\captions@French\captionsfrench + \ifx\captionsfrenchb\@undefined + \let\captions@Frenchb\relax + \else + \let\captions@Frenchb\captionsfrenchb + \fi + \ifx\captionsfrancais\@undefined + \let\captions@Francais\relax + \else + \let\captions@Francais\captionsfrancais + \fi + \def\captionsfrench{\captions@French + \captions@Francais\captions@Frenchb}% + \def\captionsfrancais{\captionsfrench}% + \def\captionsfrenchb{\captionsfrench}% + \iflanguage{french}{\captionsfrench}{}% + } +\else + \def\captionsfrancais{\captionsfrench} + \def\captionsfrenchb{\captionsfrench} +\fi +\@ifpackagewith{babel}{canadien}{% + \def\captionscanadien{\captionsfrench}% + \def\datecanadien{\datefrench}% + \def\extrascanadien{\extrasfrench}% + \def\noextrascanadien{\noextrasfrench}% + }{} +\@ifpackagewith{babel}{acadian}{% + \def\captionsacadian{\captionsfrench}% + \def\dateacadian{\datefrench}% + \def\extrasacadian{\extrasfrench}% + \def\noextrasacadian{\noextrasfrench}% + }{} +% \end{macrocode} +% +% \begin{macro}{\extrasfrench} +% \begin{macro}{\noextrasfrench} +% The macro |\extrasfrench| will perform all the extra +% definitions needed for the French language. +% The macro |\noextrasfrench| is used to cancel the actions of +% |\extrasfrench|.\\ +% In French ``apostrophe'' is used in hyphenation in expressions +% like |l'ambulance| (French patterns provide entries for this kind +% of words). This means that the |\lccode| of ``apostrophe'' has +% to be non null in French for proper hyphenation of those +% expressions, and to be reset to null when exiting French. +% +% \changes{frenchb-1.2}{1997/01/05}{`french' `frenchb' and +% `francais' are synonymous regardless of \cs{CurrentOption}.} +% +% \begin{macrocode} +\@namedef{extras\CurrentOption}{\lccode`\'=`\'} +\@namedef{noextras\CurrentOption}{\lccode`\'=0} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{frenchb-1.1}{1996/01/29}{Add some font changing +% definitions.} +% +% It is best to use \LaTeXe{}'s font changing commands, and to +% emulated those we need when they are not available, as in +% Plain\TeX{} or \LaTeX-2.09. Be aware that old commands |\sc|, +% |\it|, \textit{etc.} exist in \LaTeXe{}, but they behave like +% they did in \LaTeX-2.09 (i.\,e., they switch back to +% |\normalfont| instead of keeping the other font attributes +% unchanged). +% \begin{macrocode} +\ifx\scshape\@undefined + \ifx\sc\@undefined + \let\scshape\relax + \else + \let\scshape\sc + \fi +\fi +\ifx\emph\@undefined + \ifx\em\@undefined + \let\emph\relax + \else + \def\emph#1{\em #1} + \fi +\fi +% \end{macrocode} +% +% \subsection{Caption names} +% +% The next step consists of defining the French equivalents for +% the \LaTeX{} caption names. +% +% \changes{frenchb-1.3c}{1997/10/08}{changed \cs{@makecaption} +% definition to add a hook \cs{CaptionSeparator}.} +% +% In French, captions in figures and tables should be printed with +% endash (`--') instead of the standard `:'. If another separator +% is preferred, see in the example configuration file above +% (section~\ref{sec-cfg}) how to change the default value of +% |\CaptionSeparator|. +% +% \changes{frenchb-1.4a}{1999/10/23}{frenchb-1.3 silently redefined +% \cs{@makecaption}, overwriting changes made by some classes +% like koma-script, ua-thesis\dots (pointed out by Werner~Lemberg). +% New implementation suggested by Vincent~Jalby.} +% +% \changes{frenchb-1.4e}{2000/03/12}{Captions print twice with AMS +% classes (amsart, amsbook). Bug reported by Jean-Fran\c cois +% Mertens. Revert to implementation of version 1.4, which is +% safer as \@makecaption can be changed unpredictably.} +% +% We first store the standard definition of |\@makecaption| +% (e.g., the one provided in article.cls, report.cls, book.cls +% which is frozen for \LaTeXe{} according to Frank Mittelbach), +% in |\STD@makecaption|. `ATBeginDocument' we compare it to its +% current definition (some classes like koma-script classes, +% AMS classes, ua-thesis.cls\dots change it). +% If they are identical, frenchb just adds a hook called +% |\CaptionSeparator| to |\@makecaption|, |\CaptionSeparator| +% defaults to ': ' as in the standard |\@makecaption|, and will be +% changed to ' -- ' in French. +% If the definitions differ, frenchb doesn't overwrite the changes, +% but prints a message in the .log file. +% +% \changes{frenchb-1.4f}{2000/04/07}{Only issue a warning if +% \cs{@makecaption} exists} +% +% \begin{macrocode} +\ifLaTeXe + \long\def\STD@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1: #2}% + \ifdim \wd\@tempboxa >\hsize + #1: #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + \def\CaptionSeparator{\string:\space} + \long\def\FB@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox\@tempboxa{#1\CaptionSeparator #2}% + \ifdim \wd\@tempboxa >\hsize + #1\CaptionSeparator #2\par + \else + \global \@minipagefalse + \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + \AtBeginDocument{% + \ifx\@makecaption\STD@makecaption + \let\@makecaption\FB@makecaption + \else + \ifx\@makecaption\@undefined\else + \PackageWarning{frenchb.ldf}% + {The definition of \protect\@makecaption\space + has been changed,\MessageBreak + frenchb will NOT customize it;\MessageBreak reported}% + \fi + \fi + \let\FB@makecaption\relax + \let\STD@makecaption\relax} + \expandafter\addto\csname noextras\CurrentOption\endcsname{% + \def\CaptionSeparator{\string:\space}} +\fi +% \end{macrocode} +% +% \begin{macro}{\captionsfrench} +% The macro |\captionsfrench| defines all strings used in the four +% standard document classes provided with \LaTeX. Some authors do +% not like some of these names; it is easy to change them in the +% preamble \emph{after} loading |frenchb| (or in your file +% |frenchb.cfg|), e.g +% |\addto\captionsfrench{\def\figurename{Figure}}| will print +% `Figure' in Roman instead of `\textsc{Fig.}'. +% +% \changes{frenchb-1.1}{1996/01/30}{This code is useless in Plain\TeX, +% check the format before loading it.} +% +% \changes{frenchb-1.2}{1997/01/05}{Added aliases \cs{captionsfrenchb} +% and \cs{captionsfrancais}.} +% +% \changes{frenchb-1.3c}{1997/10/08}{Added \cs{CaptionSeparator}.} +% +% \changes{frenchb-1.4a}{1999/10/23}{Changed `--' to +% \cs{textendash} in \cs{CaptionSeparator} in case the ligature +% doesn't exist (tt-fonts).} +% +% \changes{frenchb-1.4f}{2000/04/06}{Added \cs{glossaryname}} +% +% \begin{macrocode} +\ifLaTeX +\@namedef{captions\CurrentOption}{% + \def\refname{R\'ef\'erences}% + \def\abstractname{R\'esum\'e}% + \def\bibname{Bibliographie}% + \def\prefacename{Pr\'eface}% + \def\chaptername{Chapitre}% + \def\appendixname{Annexe}% + \def\contentsname{Table des mati\`eres}% + \def\listfigurename{Table des figures}% + \def\listtablename{Liste des tableaux}% + \def\indexname{Index}% + \def\figurename{{\scshape Fig.}}% + \def\tablename{{\scshape Tab.}}% + \def\CaptionSeparator{\space\textendash\space}% +% \end{macrocode} +% ``Premi\`ere partie'' instead of ``Part I'' +% \begin{macrocode} + \def\partname{\protect\@Fpt partie}% + \def\@Fpt{{\ifcase\value{part}\or Premi\`ere\or Deuxi\`eme\or + Troisi\`eme\or Quatri\`eme\or Cinqui\`eme\or Sixi\`eme\or + Septi\`eme\or Huiti\`eme\or Neuvi\`eme\or Dixi\`eme\or Onzi\`eme\or + Douzi\`eme\or Treizi\`eme\or Quatorzi\`eme\or Quinzi\`eme\or + Seizi\`eme\or Dix-septi\`eme\or Dix-huiti\`eme\or Dix-neuvi\`eme\or + Vingti\`eme\fi}\space\def\thepart{}}% + \def\pagename{page}% + \def\seename{{\emph{voir}}}% + \def\alsoname{{\emph{voir aussi}}}% + \def\enclname{P.~J. }% + \def\ccname{Copie \`a }% + \def\headtoname{}% + \def\proofname{D\'emonstration}% for AMS-\LaTeX + \def\glossaryname{Glossaire}% + } +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Punctuation} +% +% The `double punctuation' characters (|;| |!| |?| and |:|) have to +% be made |\active| for an automatic control of the amount of space +% to insert before them. +% \begin{macrocode} +\initiate@active@char{:} +\initiate@active@char{;} +\initiate@active@char{!} +\initiate@active@char{?} +% \end{macrocode} +% We specify that the French group of shorthands should be used. +% \begin{macrocode} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \languageshorthands{french}} +% \end{macrocode} +% These characters are `turned on' once, later their definition may +% vary. +% \begin{macrocode} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@activate{:}\bbl@activate{;}% + \bbl@activate{!}\bbl@activate{?}} +\expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@deactivate{:}\bbl@deactivate{;}% + \bbl@deactivate{!}\bbl@deactivate{?}} +% \end{macrocode} +% +% One more thing |\extrasfrench| needs to do is to make sure that +% |\frenchspacing| is in effect. If this is not the case the +% execution of |\noextrasfrench| will switch it off again. +% \begin{macrocode} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@frenchspacing} +\expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@nonfrenchspacing} +% \end{macrocode} +% +% \begin{macro}{\french@sh@;@} +% We have to tune the amount of white space before \texttt{;} +% \texttt{!} \texttt{?} and \texttt{:}. This should only happen +% in horizontal mode, hence the test |\ifhmode|. +% +% \changes{frenchb-1.1}{1995/12/23}{Added a hook to insert space +% or not before `double punctuation'.} +% +% In horizontal mode, if a space has been typed before `;' we +% remove it and put an unbreakable |\thinspace| instead. If no +% space has been typed, we add |\FDP@thinspace| which will be +% defined, up to the user's wishes, as an automatic added +% thin space, or as |\@empty|. +% +% \begin{macrocode} +\declare@shorthand{french}{;}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\thinspace + \else + \FDP@thinspace + \fi + \fi +% \end{macrocode} +% Now we can insert a |;| character. +% \begin{macrocode} + \string;} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\french@sh@!@} +% \begin{macro}{\french@sh@?@} +% +% Because these definitions are very similar only one is displayed +% in a way that the definition can be easily checked. +% +% \begin{macrocode} +\declare@shorthand{french}{!}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\thinspace + \else + \FDP@thinspace + \fi + \fi + \string!} +% \end{macrocode} +% +% \begin{macrocode} +\declare@shorthand{french}{?}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\thinspace + \else + \FDP@thinspace + \fi + \fi + \string?} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\french@sh@:@} +% +% The `:' requires a normal space before it, instead of +% a |\thinspace|. +% +% \begin{macrocode} +\declare@shorthand{french}{:}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\Fcolonspace + \else + \FDP@colonspace + \fi + \fi + \string:} +% \end{macrocode} +% \end{macro} +% +% \changes{frenchb-1.1}{1995/12/23}{Added a hook to insert space +% or not before `double punctuation'.} +% +% \changes{frenchb-1.5f}{2001/06/02}{Added a hook to customize +% the space before the colon in French (thin or normal).} +% +% \begin{macro}{\Fcolonspace} +% \begin{macro}{\AutoSpaceBeforeFDP} +% \begin{macro}{\NoAutoSpaceBeforeFDP} +% |\FDP@thinspace| and |\FDP@space| are defined as unbreakable +% spaces by\\ |\AutoSpaceBeforeFDP| or as |\@empty| by +% |\NoAutoSpaceBeforeFDP|.\\ +% Default is |\AutoSpaceBeforeFDP|. +% \begin{macrocode} +\newcommand{\Fcolonspace}{\space} +\def\AutoSpaceBeforeFDP{% + \def\FDP@thinspace{\penalty\@M\thinspace}% + \def\FDP@colonspace{\penalty\@M\Fcolonspace}} +\def\NoAutoSpaceBeforeFDP{\let\FDP@thinspace\@empty + \let\FDP@colonspace\@empty} +\AutoSpaceBeforeFDP +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\system@sh@:@} +% \begin{macro}{\system@sh@!@} +% \begin{macro}{\system@sh@?@} +% \begin{macro}{\system@sh@;@} +% +% When the active characters appear in an environment where their +% French behaviour is not wanted they should give an `expected' +% result. Therefore we define shorthands at system level as well. +% +% \begin{macrocode} +\declare@shorthand{system}{:}{\string:} +\declare@shorthand{system}{!}{\string!} +\declare@shorthand{system}{?}{\string?} +\declare@shorthand{system}{;}{\string;} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{French quotation marks} +% +% \changes{frenchb-1.3}{1997/04/24}{New implementation of guillemets.} +% +% \changes{frenchb-1.4}{1999/07/08}{Add a hook to pick French +% guillemets from any font (suggested by Michel Bovani).} +% +% \changes{frenchb-1.3e}{1999/01/02}{Try to use AMS Cyrillic fonts +% to provide better looking guillemets in OT1 encoding.} +% +% \changes{frenchb-1.6b}{2003/04/05}{Default OT1 guillemets are +% now borrowed from Polish fonts, rather than from wncyr.} +% +% \changes{frenchb-1.6c}{2003/06/30}{OT1 `Polish' guillemets are +% now taken from the LM fonts which will be part of TL8.} +% +% EC/LM fonts and standard PostScript fonts have built-in +% guillemets, we of course use them. CM fonts have no French +% guillemets built-in, so we have to emulate them: +% \begin{itemize} +% \item if a file `t1lmr.fd' is found, we expect the LM fonts +% to be present on the system, so we pick up French guillemets +% from them; before version 1.6b, French guillemets were +% borrowed from the `wncyr' fonts, this has been changed because +% it resulted in a conflict with the russian option of \babel. +% Former Cyrillic guillemets are still available through the +% command |\CyrillicGuillemets| (for backward compatibility). +% \item otherwise we use math symbols, either \LaTeX's `lasy' font +% if available, or \TeX{}~symbols |\ll| and |\gg| otherwise; +% \end{itemize} +% +% The standard names for French quotation marks are |\guillemotleft| +% and |\guillemotright|, these commands are defined in |t1enc.def| +% for T1-encoding. +% In \LaTeXe{} formats, we first define these commands for +% OT1-encoding (for CM fonts), using either the Polish `pl*' fonts +% or \LaTeX{}'s `lasy' fonts. +% Other local text encodings \emph{should} define them too, +% but if they don't, the OT1 definitions will be used. +% The standard PostScript fonts should \emph{always} be used together +% with T1-encoding (\emph{not} OT1), for proper hyphenation and +% built-in (better looking) French quotation marks. +% +% \changes{frenchb-1.2b}{1997/04/24}{Spacing after opening and before +% closing guillemets slightly enlarged and some glue added, +% as suggested by Th.~Bouche. Unlike \cs{kern}, \cs{hskip} doesn't +% inhibit hyphenation, nothing like \cs{allowhyphens} is required.} +% +% The next step is to provide correct spacing after |\guillemotleft| +% and before |\guillemotright| : a space precedes and follows +% quotation marks but no line break is allowed neither \emph{after} +% the opening one, nor \emph{before} the closing one. +% |\guill@spacing| which does the spacing, has been fine tuned by +% Thierry Bouche. +% +% \changes{frenchb-1.3d}{1998/04/20}{Spacing after opening and before +% closing guillemets changed again: normal space with little glue +% (suggested by Th. Bouche).} +% +% The top macros for quotation marks will be called |\og| +% (``\underline{o}uvrez \underline{g}uillemets'') and |\fg| +% (``\underline{f}ermez \underline{g}uillemets'').\\ +% The top level definitions for French quotation marks are switched +% on and off through the |\extrasfrench| |\noextrasfrench| +% mechanism. Outside French, |\og| and |\fg| will typeset standard +% English opening and closing double quotes.\\ +% As |\DeclareTextCommand| cannot be used after the +% |\begin{document}| we introduce internal definitions +% |\begin@guill| and |\end@guill|.\\ +% We'll try to be smart to users of D.~\textsc{Carlisle}'s |xspace| +% package: if this package is loaded there will be no need for |{}| +% or |\ | to get a space after |\fg|. +% +% \begin{macro}{\guillemotleft} +% \begin{macro}{\guillemotright} +% \begin{macro}{\og} +% \begin{macro}{\fg} +% \changes{frenchb-1.1}{1996/01/20}{A warning is now issued if \cs{og} +% or \cs{fg} have been defined elsewhere in a \LaTeXe{} document +% (suggested by Vincent Jalby).} +% In \LaTeXe{} we provide a dummy definition for |\og| and |\fg|, +% just to display an error message in case |\og| or |\fg| have been +% defined elsewhere. +% +% \changes{frenchb-1.2b}{1997/04/24}{Define \cs{xspace} as \relax if +% it is not defined by D. Carlisle `xspace.sty'. Will be used in +% \cs{fg}, and \cs{ieme} ... \cs{ieres} (new for this release).} +% +% \changes{frenchb-1.5f}{2001/04/21}{\cs{og} and \cs{fg} should not +% be expanded when written to a file; use \cs{renewcommand} (in +% \cs{LaTeX}) to redefine them instead of \cs{let} or \cs{def}.} +% +% \begin{macrocode} +\newcommand{\og}{\@empty} +\newcommand{\fg}{\@empty} +% \end{macrocode} +% \begin{macro}{\FrenchGuillemetsFrom} +% \begin{macrocode} +\ifLaTeXe + \def\FrenchGuillemetsFrom#1#2#3#4{% + \DeclareFontEncoding{#1}{}{}% + \DeclareFontSubstitution{#1}{#2}{m}{n}% + \DeclareTextCommand{\guillemotleft}{OT1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3}}% + \DeclareTextCommand{\guillemotright}{OT1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}} +% \end{macrocode} +% \begin{macro}{\CyrillicGuillemets} +% \begin{macro}{\PolishGuillemets} +% \begin{macro}{\LasyGuillemets} +% \begin{macro}{\bbl@frenchguillemets} +% \begin{macro}{\bbl@nonfrenchguillemets} +% \begin{macrocode} + \def\CyrillicGuillemets{\FrenchGuillemetsFrom{OT2}{wncyr}{60}{62}} + \def\PolishGuillemets{\FrenchGuillemetsFrom{T1}{lmr}{19}{20}} + \def\LasyGuillemets{% + \DeclareTextCommand{\guillemotleft}{OT1}{\hbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont(\kern-0.20em(}}% + \DeclareTextCommand{\guillemotright}{OT1}{\hbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont)\kern-0.20em)}}} + \IfFileExists{t1lmr.fd}{\PolishGuillemets}{\LasyGuillemets} + \DeclareTextSymbolDefault{\guillemotleft}{OT1} + \DeclareTextSymbolDefault{\guillemotright}{OT1} + \def\guill@spacing{\penalty\@M\hskip.8\fontdimen2\font + plus.3\fontdimen3\font + minus.8\fontdimen4\font} + \DeclareRobustCommand*{\begin@guill}{\leavevmode + \guillemotleft\penalty\@M\guill@spacing} + \DeclareRobustCommand*{\end@guill}{\ifdim\lastskip>\z@\unskip\fi + \penalty\@M\guill@spacing\guillemotright\xspace} + \AtBeginDocument{\ifx\xspace\@undefined\let\xspace\relax\fi} + \def\bbl@frenchguillemets{\renewcommand{\og}{\begin@guill}% + \renewcommand{\fg}{\end@guill}} + \def\bbl@nonfrenchguillemets{\renewcommand{\og}{``}% + \renewcommand{\fg}{\ifdim\lastskip>\z@\unskip\fi ''}} +% \end{macrocode} +% For \emph{Plain}\TeX, and \LaTeX-2.09 we define |\begin@guill| +% and |\end@guill| using math symbols |\ll| and |\gg|. +% \begin{macrocode} +\else + \def\begin@guill{\leavevmode\raise0.25ex + \hbox{$\scriptscriptstyle\ll$}% + \penalty\@M\hskip.8\fontdimen2\font + plus.3\fontdimen3\font + minus.3\fontdimen4\font} + \def\end@guill{\ifdim\lastskip>\z@\unskip\penalty\@M\fi + \penalty\@M\hskip.8\fontdimen2\font + plus.3\fontdimen3\font minus.3\fontdimen4\font + \raise0.25ex\hbox{$\scriptscriptstyle\gg$}} + \let\xspace\relax + \def\bbl@frenchguillemets{\let\og\begin@guill + \let\fg\end@guill} + \def\bbl@nonfrenchguillemets{\def\og{``}% + \def\fg{\ifdim\lastskip>\z@\unskip\fi ''}} +\fi +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@frenchguillemets} +\expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@nonfrenchguillemets} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{French lists} +% \label{sec-lists} +% +% \begin{macro}{\bbl@frenchlistspacing} +% \begin{macro}{\bbl@nonfrenchlistspacing} +% Vertical spacing in general lists should be shorter in French +% texts than the defaults provided by \LaTeX. +% Note that the easy way, just changing values of vertical spacing +% parameters when entering French and restoring them to their +% defaults on exit would not work; as most lists are based on +% |\list| we will redefine |\list| (up to version~1.4, the more +% internal command |\@trivlist| was redefined, this ensured that +% all lists would have common settings, but didn't allow the users +% to provide their own settings, as pointed out by P.~Pichaureau). +% If standard LaTeX{} settings are preferred, it is easy to issue +% the command |\FrenchListSpacingfalse| in the preamble or in +% |frenchb.cfg|. Please note that changing the flag +% |\FrenchListSpacing| will \emph{not} take effect immediately, +% but next time language French is switched on. +% +% The amount of vertical space before and after a list is given by +% |\topsep| + |\parskip| (+ |\partopsep| if the list starts a new +% paragraph). IMHO, |\parskip| should be added \emph{only} when +% the list starts a new paragraph, so I subtract |\parskip| from +% |\topsep| and add it back to |\partopsep|; this will normally +% make no difference because |\parskip|'s default value is 0pt, but +% will be noticeable when |\parskip| is \emph{not} null.\\ +% Of course, this code is only for \LaTeX. +% +% \changes{frenchb-1.3}{1997/05/30}{Add a switch to allow \cs{LaTeXe} +% standard settings.} +% +% \changes{frenchb-1.5a}{2001/01/02}{Redefine \cs{list} instead of +% \cs{@trivlist} to provide more freedom to the user, but still +% allow the former way with \cs{ifFrenchOldTrivlist}.} +% +% \changes{frenchb-1.5g}{2001/09/09}{\cs{parskip} is of type `skip', +% its mean value only (not the glue) should be moved from +% \cs{topsep} to \cs{partopsep}: substracting glue can lead to +% weird results. Bug pointed out by Michel Bovani.} +% +% \begin{macrocode} +\newif\ifFrenchListSpacing \FrenchListSpacingtrue +\newif\ifFrenchOldTrivlist +\ifLaTeX + \let\listORI\list +% \end{macrocode} +% |\endlist| is not redefined, but |\endlistORI| is provided for +% the users who prefer to define their own lists from the original +% command, they can code: |\begin{listORI}{}{} \end{listORI}|. +% \begin{macrocode} + \let\endlistORI\endlist + \def\FR@listsettings{% + \setlength{\itemsep}{0.4ex plus 0.2ex minus 0.2ex}% + \setlength{\parsep}{0.4ex plus 0.2ex minus 0.2ex}% + \setlength{\topsep}{0.8ex plus 0.4ex minus 0.4ex}% + \setlength{\partopsep}{0.4ex plus 0.2ex minus 0.2ex}% +% \end{macrocode} +% |\parskip| is of type `skip', its mean value only (\emph{not +% the glue}) should be substracted from |\topsep| and added to +% |\partopsep|, so convert |\parskip| to a `dimen' using +% |\@tempdima|. +% \begin{macrocode} + \@tempdima=\parskip + \addtolength{\topsep}{-\@tempdima}% + \addtolength{\partopsep}{\@tempdima}}% + \def\listFR#1#2{\listORI{#1}{\FR@listsettings #2}}% +% \end{macrocode} +% Keep the |\@trivlist| redefinition from version 1.4 (only +% for compatibility reasons). The flag |\ifFrenchOldTrivlist| +% could happen to be useful to process older documents. +% \begin{macrocode} + \let\@trivlistORI\@trivlist + \def\@trivlistFR{\FR@listsettings\@trivlistORI} + \def\bbl@frenchlistspacing{\ifFrenchListSpacing\let\list\listFR\fi + \ifFrenchOldTrivlist\let\@trivlist\@trivlistFR + \let\list\listORI\fi} + \def\bbl@nonfrenchlistspacing{\let\list\listORI + \let\@trivlist\@trivlistORI} + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@frenchlistspacing} + \expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@nonfrenchlistspacing} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bbl@frenchitemize} +% \begin{macro}{\bbl@nonfrenchitemize} +% The layout of French itemize-lists has changed between version~1.2 +% and~1.3. Jacques Andr\'e and Thierry Bouche pointed out to me +% that vertical spacing between items, before and after the list, +% should \emph{null} with \emph{no glue} added. Moreover +% horizontal spacing was not correct either: the item labels of a +% first level list should be vertically aligned on the paragraph's +% first character (at |\parindent| from the left margin). +% Checking the book ``Lexique des r\`egles typographiques en usage +% \`a l'Imprimerie nationale'' confirmed their points, so the itemize +% environment has been totally redefined for French in version~1.3. +% +% Several people pointed out to me that the layout of lists can +% either be set by the current language or be tuned independently of +% the language as part of the layout of the document. So hooks should +% be provided to switch off the special settings made in |frenchb|. +% Setting |\FrenchItemizeSpacingfalse| \emph{after} loading |frenchb| +% in the preamble switches back to settings of version~1.2 (this can +% be useful to process old documents). If you want all list spacings +% to be exactly what they are in standard \LaTeXe{}, then add also +% |\FrenchListSpacingfalse| in the preamble \emph{after} loading +% |frenchb|. Both switches can also be set in |frenchb.cfg|. +% Please note that changing the flags |\FrenchItemizeSpacing| and +% |\FrenchListSpacing| will \emph{not} take effect immediately, +% but next time language French is switched on. +% +% The \textbullet{} is never used in French itemize-lists, +% a long dash `--' is preferred for all levels. The item label used +% in French is stored in |\FrenchLabelItem}|, it defaults to '--' and +% can be changed using |\renewcommand| (see the example +% configuration file above). +% +% \changes{frenchb-1.1}{1996/01/25}{Save original definitions of label +% items, instead of hard coding them in \cs{bbl@nonfrenchitems} +% (suggested by Vincent Jalby).} +% +% \changes{frenchb-1.1}{1996/01/26}{Tune vertical spacing in +% French lists.} +% +% \changes{frenchb-1.3}{1997/05/30}{Change -{}- to \cs{textendash}, +% completely redesign the itemize environment in French and add +% a hook to switch back to \cs{LaTeXe} standard itemize lists.} +% +% \changes{frenchb-1.4}{1999/07/08}{\cs{newif} only in LaTeX.} +% +% \changes{frenchb-1.4}{1999/07/08}{Add a hook \cs{FrenchLabelItem} +% which defaults to \cs{textendash}, this was suggested by +% Michel Bovani to allow some customization of label items.} +% +% \changes{frenchb-1.5a}{2001/01/02}{Redesign \cs{itemize} to allow +% users to change the markers of any level in itemize lists.} +% +% \changes{frenchb-1.5g}{2001/09/09}{\cs{parskip} is of type `skip', +% its mean value only (not the glue) should be moved from +% \cs{topsep} to \cs{partopsep}: substracting glue can lead to +% weird results. Bug pointed out by Michel Bovani.} +% +% \begin{macrocode} +\newif\ifFrenchItemizeSpacing \FrenchItemizeSpacingtrue +\ifLaTeX + \newcommand{\FrenchLabelItem}{\textendash} + \newcommand{\Frlabelitemi}{\FrenchLabelItem} + \newcommand{\Frlabelitemii}{\FrenchLabelItem} + \newcommand{\Frlabelitemiii}{\FrenchLabelItem} + \newcommand{\Frlabelitemiv}{\FrenchLabelItem} + \def\bbl@frenchitemize{% + \let\@ltiORI\labelitemi + \let\@ltiiORI\labelitemii + \let\@ltiiiORI\labelitemiii + \let\@ltivORI\labelitemiv + \let\itemizeORI\itemize + \let\labelitemi\Frlabelitemi + \let\labelitemii\Frlabelitemii + \let\labelitemiii\Frlabelitemiii + \let\labelitemiv\Frlabelitemiv + \ifFrenchItemizeSpacing +% \end{macrocode} +% Make sure |\itemize| uses |\@trivlistORI| even with +% |\FrenchOldTrivlisttrue|. +% \begin{macrocode} + \def\itemize{\let\@trivlist\@trivlistORI + \ifnum \@itemdepth >\thr@@\@toodeep\else + \advance\@itemdepth\@ne + \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% + \expandafter + \listORI + \csname\@itemitem\endcsname + {\settowidth{\labelwidth}{\csname\@itemitem\endcsname}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \ifnum\@listdepth=0 + \setlength{\itemindent}{\parindent}% + \else + \addtolength{\leftmargin}{\parindent}% + \fi + \setlength{\itemsep}{\z@}% + \setlength{\parsep}{\z@}% + \setlength{\topsep}{\z@}% + \setlength{\partopsep}{\z@}% +% \end{macrocode} +% |\parskip| is of type `skip', its mean value only (\emph{not +% the glue}) should be substracted from |\topsep| and added to +% |\partopsep|, so convert |\parskip| to a `dimen' using +% |\@tempdima|. +% \begin{macrocode} + \@tempdima=\parskip + \addtolength{\topsep}{-\@tempdima}% + \addtolength{\partopsep}{\@tempdima}}% + \fi}% + \fi} +% \end{macrocode} +% The user's changes in labelitems are saved when leaving French +% for further use when switching back to French. +% \begin{macrocode} + \def\bbl@nonfrenchitemize{\let\Frlabelitemi\labelitemi + \let\Frlabelitemii\labelitemii + \let\Frlabelitemiii\labelitemiii + \let\Frlabelitemiv\labelitemiv + \let\labelitemi\@ltiORI + \let\labelitemii\@ltiiORI + \let\labelitemiii\@ltiiiORI + \let\labelitemiv\@ltivORI + \let\itemize\itemizeORI} + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@frenchitemize} + \expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@nonfrenchitemize} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{French indentation of sections} +% \label{sec-indent} +% +% \begin{macro}{\bbl@frenchindent} +% \begin{macro}{\bbl@nonfrenchindent} +% In French the first paragraph of each section should be indented, +% this is another difference with US-English. +% Add this code only in \LaTeX. +% +% \changes{frenchb-1.2}{1996/12/27}{Corrected typo +% \cs{bbl@nonfrenchident}.} +% +% \begin{macrocode} +\ifLaTeX + \let\@aifORI\@afterindentfalse + \def\bbl@frenchindent{\let\@afterindentfalse\@afterindenttrue + \@afterindenttrue} + \def\bbl@nonfrenchindent{\let\@afterindentfalse\@aifORI + \@afterindentfalse} + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@frenchindent} + \expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@nonfrenchindent} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Formatting footnotes} +% +% \changes{frenchb-1.6a}{2003/02/02}{Add two hooks to customize +% footnotes: \cs{AddThinSpaceBeforeFootnotes} and +% \cs{FrenchFootnotes} (suggested by Jacques Andr\'e).} +% +% \begin{macro}{\AddThinSpaceBeforeFootnotes} +% \begin{macro}{\FrenchFootnotes} +% \begin{macro}{\StandardFootnotes} +% |\AddThinSpaceBeforeFootnotes| redefines |\@footnotemark| (whose +% definition is saved at the |\begin{document}| in order to include +% any customization that packages might have done) to add a thinspace +% before the number or symbol calling a footnote (any space typed +% in is removed first). |\AddThinSpaceBeforeFootnotes| has no effect +% on the layout of the footnote itself. Note that |\thanks| in +% |\maketitle| also relies on |\@footnotemark|, so the thinspace +% is added there too. +% +% \changes{frenchb-1.6f}{2003/04/02}{Move \cs{newif} and +% \cs{newdimen} commands outside \cs{ifLaTeXe} ... \cs{fi} +% for compatibility with the plain format.} +% +% \begin{macrocode} +\newif\ifthinspace@FN +\newif\ifFR@fntlayout +\newdimen\parindentFFN +\ifLaTeXe + \newcommand{\AddThinSpaceBeforeFootnotes}{\thinspace@FNtrue} + \AtBeginDocument{\let\@footnotemarkORI\@footnotemark + \def\@footnotemarkFR{\leavevmode\unskip\unkern + \,\@footnotemarkORI}% + \ifthinspace@FN + \let\@footnotemark\@footnotemarkFR + \fi} +% \end{macrocode} +% +% We then define |\@makefntextFR|, a variant of |\@makefntext| +% which is responsible for the layout of footnotes, to match the +% specifications of the French `Imprimerie Nationale': Footnotes +% will be indented by |\parindentFFN|, numbers (if any) typeset on +% the baseline (instead of textsuperscripts) and followed by a dot +% and an half quad space. Whenever symbols are used to number +% footnotes (as in |\thanks| for instance), we switch back to the +% standard layout (the French layout of footnotes is meant for +% footnotes numbered by arabic or roman digits). +% The value of |\parindentFFN| will be defined at the +% |\begin{document}|, as the maximum of |\parindent| and 1.5em. +% +% \begin{macrocode} + \def\ftnISsymbol{\@fnsymbol\c@footnote} + \long\def\@makefntextFR#1{\ifx\thefootnote\ftnISsymbol + \@makefntextORI{#1}% + \else + \parindent=\parindentFFN + \rule\z@\footnotesep + \setbox\@tempboxa\hbox{\@thefnmark}% + \ifdim\wd\@tempboxa>\z@ + \llap{\@thefnmark}.\kern.5em + \fi #1 + \fi}% +% \end{macrocode} +% We now define two commands |\FrenchFootnotes| and +% |\StandardFootnotes| which select French or Standard layout +% for footnotes; we have to save the standard definition of +% |\@makefntext| at the |\begin{document}|, and then redefine +% |\@makefntext| according to the value of an internal flag set +% by |\FrenchFootnotes| and reset by |\StandardFootnotes|. +% \begin{macrocode} + \AtBeginDocument{\parindentFFN=\parindent + \ifdim\parindentFFN<1.5em\parindentFFN=1.5em\fi + \let\@makefntextORI\@makefntext + \long\def\@makefntext#1{% + \ifFR@fntlayout + \@makefntextFR{#1}% + \else + \@makefntextORI{#1}% + \fi + }% + } + \newcommand{\FrenchFootnotes}{\FR@fntlayouttrue} + \newcommand{\StandardFootnotes}{\FR@fntlayoutfalse} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Formatting numbers} +% \label{sec-numbers} +% +% \changes{frenchb-1.4}{1999/10/02}{Add a hook to let the comma +% be in math mode of type \cs{mathord} in French, as a decimal +% separator should be.} +% +% \changes{frenchb-1.6e}{2003/11/09}{The change from \cs{mathpunct} +% to \cs{mathord} should be encoding independent (suggested by +% Michel Bovani): just strip the highest hexadecimal digit to +% switch from type \cs{mathpunct} to type \cs{mathord}.} +% +% \begin{macro}{\DecimalMathComma} +% \begin{macro}{\StandardMathComma} +% As mentioned in the \TeX{}book p.~134, the comma is of type +% |\mathpunct| in math mode: it is automatically followed by a +% space. This is convenient in lists and intervals but +% unpleasant when the comma is used as a decimal separator +% in French: it has to be entered as |{,}|. +% |\DecimalMathComma| makes the comma be an ordinary character +% (of type |\mathord|) in French \emph{only} (no space added); +% |\StandardMathComma| switches back to the standard behaviour +% of the comma. +% \begin{macrocode} +\newcount\std@mcc +\newcount\dec@mcc +\std@mcc=\mathcode`\, +\dec@mcc=\std@mcc +\@tempcnta=\std@mcc +\divide\@tempcnta by "1000 +\multiply\@tempcnta by "1000 +\advance\dec@mcc by -\@tempcnta +\newcommand{\DecimalMathComma}{\iflanguage{french}% + {\mathcode`\,=\dec@mcc}{}% + \addto\extrasfrench{\mathcode`\,=\dec@mcc}} +\newcommand{\StandardMathComma}{\mathcode`\,=\std@mcc + \addto\extrasfrench{\mathcode`\,=\std@mcc}} +\expandafter\addto\csname noextras\CurrentOption\endcsname{% + \mathcode`\,=\std@mcc} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{frenchb-1.2}{1996/12/27}{New macros \cs{nombre} +% \cs{decimalsep} and \cs{thousandsep} added to format numbers.} +% +% In English the decimal part starts with a point and thousands +% should be separated by a comma: an approximation of $1000\pi$ +% should be inputed as |$3{,}141.592{,}653$| in math mode and +% as |3,141.592,653| in text.\\ +% In French the decimal part starts with a comma and thousands +% should be separated by a space; the same approximation of +% $1000\pi$ should be inputed as |$3\;141{,}592\;653$| in math mode +% and as something like |3~141,592~653| in text: in math mode, the +% comma is of type |\mathpunct| (thus normally followed by a space) +% while the point is of type |\mathord| (no space added). +% +% Thierry Bouche suggested that a second type of comma, of type +% |\mathord| would be useful in math mode, and proposed to +% introduce a command (named |\decimalsep| in this package), +% the expansion of which would depend on the current language. +% +% Vincent Jalby suggested a command |\nombre| to conveniently +% typeset numbers: inputting |\nombre{3141,592653}| either in +% text or in math mode will format this number properly according +% to the current language (French or non-French). +% +% |\nombre| accepts an optional argument which happens to be +% useful with the package `dcolumn', it specifies the decimal +% separator used in the \emph{source code}: +% |\newcolumntype{d}{D{,}{\decimalsep}{-1}}| \\ +% |\begin{tabular}{|d|}\hline | \\ +% | 3,14 \\ | \\ +% | \nombre[,]{123,4567} \\ | \\ +% | \nombre[,]{9876,543}\\\hline| \\ +% |\end{tabular} | \\ +% will print a column of numbers aligned on the decimal point +% (comma or point depending on the current language), each slice +% of 3 digits being separated by a space or a comma according to +% the current language. +% +% \begin{macro}{\decimalsep} +% \begin{macro}{\thousandsep} +% We need a internal definition, valid in both text and math mode, +% for the comma (|\@comma@|) and another one for the unbreakable +% fixed length space (no glue) used in French (|\f@thousandsep|). +% +% The commands |\decimalsep| and |\thousandsep| get default +% definitions (for the English language) when |frenchb| is loaded; +% these definitions will be updated when the current language is +% switched to or from French. +% +% \changes{frenchb-1.2b}{1997/04/24}{Extra care taken to handle +% signs properly inside \cs{nombre} in \LaTeXe.} +% +% \changes{frenchb-1.2b}{1997/04/24}{Definition of \cs{nombre} changed +% to correct a bug with moving arguments in \LaTeX-2.09.} +% +% \changes{frenchb-1.4g}{2000/10/07}{Added a new hook +% \cs{ThinSpaceInFrenchNumbers} to have thin spaces instead of +% normal spaces (the default) when formatting French numbers.} +% +% \begin{macrocode} +\mathchardef\m@comma=\dec@mcc +\def\@comma@{\ifmmode\m@comma\else,\fi} +\def\f@thousandsep{\ifmmode\mskip5.5mu\else\penalty\@M\kern.3em\fi} +\def\ThinSpaceInFrenchNumbers{\def\f@thousandsep{% + \ifmmode\mskip3mu\else\penalty\@M\kern.16667em\fi}} +\newcommand{\decimalsep}{.} +\newcommand{\thousandsep}{\@comma@} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \def\decimalsep{\@comma@}% + \def\thousandsep{\f@thousandsep}} +\expandafter\addto\csname noextras\CurrentOption\endcsname{% + \def\decimalsep{.}% + \def\thousandsep{\@comma@}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{frenchb-1.3}{1997/05/24}{Avoid mixing text and math mode +% whenever possible: check if \cs{textminus} and co. are available.} +% Signs can now be entered inside |\nombre|. When |\nombre| is +% used in text-mode, signs should be text symbols to get the +% series, shape... from the current text-font. When signs are not +% available in text-mode, we provide some defaults. +% +% \begin{macrocode} +\providecommand{\textminus}{\textendash} +\providecommand{\textplusminus}{\ensuremath{\pm}} +\providecommand{\textminusplus}{\ensuremath{\mp}} +\def\fb@minus{\ifmmode-\else\textminus\fi} +\def\fb@plusminus{\ifmmode\pm\else\textplusminus\fi} +\def\fb@minusplus{\ifmmode\mp\else\textminusplus\fi} +% \end{macrocode} +% +% \begin{macro}{\nombre} +% The decimal separator used when \emph{inputing} a number +% with |\nombre| \emph{has to be a comma}. +% |\nombre| splits the inputed number into two parts: what +% comes before the first comma will be formatted by +% \cs{@integerpart} while the rest (if not empty) will be +% formatted by \cs{@decimalpart}. Both parts, once formatted +% separately will be merged together with between them, either +% the decimal separator \cs{decimalsep} or (in \LaTeXe{} +% \emph{only}) the optional argument of |\nombre|. +% +% \changes{frenchb-1.3}{1997/05/24}{Added \cs{@empty} to the +% definitions of \cs{nb@first} and \cs{nb@suite}, as suggested +% by V. Jalby, to cope with possibly empty integer part as in +% \cs{nombre{,123}}.} +% +% \begin{macrocode} +\if@Two@E + \newcommand{\nombre}[2][\decimalsep]{\def\@decimalsep{#1}% + \@@nombre#2\@empty,\@empty,\@nil} +\else + \def\@decimalsep{\decimalsep} + \newcommand{\nombre}[1]{\@nombre#1\@empty,\@empty,\@nil} +\fi +\def\@firstofmany#1#2,{#1} +\def\@@nombre#1,#2,#3\@nil{% + \def\nb@sign{}% + \edef\nb@first{\@firstofmany #1\@empty,}% + \edef\nb@suite{\@secondoftwo #1\@empty,}% + \if+\nb@first \def\nb@sign{+}\fi + \if-\nb@first \def\nb@sign{\fb@minus}\fi + \expandafter\ifx\nb@first\pm \def\nb@sign{\fb@plusminus}\fi + \expandafter\ifx\nb@first\mp \def\nb@sign{\fb@minusplus}\fi + \ifx\@empty\nb@sign + \let\@tmp\nb@suite\edef\nb@suite{\nb@first\@tmp}% + \fi + \nb@sign\expandafter\@nombre\nb@suite#2,#3\@nil} +\def\@nombre#1,#2,#3\@nil{% + \ifx\@empty#2% + \@integerpart{#1}% + \else + \@integerpart{#1}\@decimalsep\@decimalpart{#2}% + \fi} +% \end{macrocode} +% The easiest bit is the decimal part: +% We attempt to read the first four digits of the decimal part, if +% it has less than 4 digits, we just have to print them, otherwise +% |\thousandsep| has to be appended after the third digit, and the +% algorithm is applied recursively to the rest of the decimal part. +% \begin{macrocode} +\def\@decimalpart#1{\@@decimalpart#1\@empty\@empty\@empty} +\def\@@decimalpart#1#2#3#4{#1#2#3% + \ifx\@empty#4% + \else + \thousandsep\expandafter\@@decimalpart\expandafter#4% + \fi} +% \end{macrocode} +% Formatting the integer part is more difficult because the slices +% of 3 digits start from the \emph{bottom} while the number is +% read from the top! +% This (tricky) code is borrowed from David Carlisle's comma.sty. +% \begin{macrocode} +\def\@integerpart#1{\@@integerpart{}#1\@empty\@empty\@empty} +\def\@@integerpart#1#2#3#4{% + \ifx\@empty#2% + \@addthousandsep#1\relax + \else + \ifx\@empty#3% + \@addthousandsep\@empty\@empty#1#2\relax + \else + \ifx\@empty#4% + \@addthousandsep\@empty#1#2#3\relax + \else + \@@integerpartafterfi{#1#2#3#4}% + \fi + \fi + \fi} +\def\@@integerpartafterfi#1\fi\fi\fi{\fi\fi\fi\@@integerpart{#1}} +\def\@addthousandsep#1#2#3#4{#1#2#3% + \if#4\relax + \else + \thousandsep\expandafter\@addthousandsep\expandafter#4% + \fi} +% \end{macrocode} +% \end{macro} +% +% \subsection{Dots\dots} +% \label{sec-dots} +% +% \changes{frenchb-1.3}{1997/06/03}{Added this section.} +% \LaTeXe's standard definition of |\dots| in text-mode is +% |\textellipsis| which includes a |\kern| at the end; +% this space is not wanted in some cases (before a closing brace +% for instance) and |\kern| breaks hyphenation of the next word. +% We define |\Frtextellipsis| for French (in \LaTeXe{} only). +% +% \changes{frenchb-1.4c}{1999/11/17}{Bug correction: \cs{xspace} +% didn't work in \cs{dots} without amsmath.sty.} +% The |\if| construction in the \LaTeXe{} definition of |\dots| +% doesn't allow the use of |xspace| (|xspace| is always followed +% by a |\fi|), so we use the AMS-\LaTeX{} construction of |\dots|; +% this has to be done `AtBeginDocument' not to be overwritten +% when \file{amsmath.sty} is loaded after \babel. +% +% \changes{frenchb-1.4d}{2000/02/01}{AMS-LaTeX 2.0 provides a much +% better spacing for \cs{dots} than 1.2, so let's take advantage +% of it when amsmath (up to 1.2 or newer) is loaded.} +% +% \begin{macro}{\Frtextellipsis} +% \begin{macrocode} +\ifLaTeXe + \DeclareTextCommandDefault{\Frtextellipsis}{% + .\kern\fontdimen3\font.\kern\fontdimen3\font.\xspace} +% \end{macrocode} +% |\Mdots@| and |\Tdots@ORI| hold the definitions of |\dots| in +% Math and Text mode. They default to those of amsmath-2.0, and +% will revert to standard \LaTeX{} definitions `AtBeginDocument', +% if amsmath has not been loaded. |\Mdots@| doesn't change when +% switching from/to French, while |\Tdots@| is |\Frtextellipsis| +% in French and |\Tdots@ORI| otherwise. +% \begin{macrocode} + \newcommand{\Tdots@ORI}{\@xp\textellipsis} + \newcommand{\Tdots@}{\Tdots@ORI} + \newcommand{\Mdots@}{\@xp\mdots@} + \AtBeginDocument{\DeclareRobustCommand{\dots}{\relax + \csname\ifmmode M\else T\fi dots@\endcsname}% + \ifx\@xp\@undefined\let\@xp\relax\fi + \ifx\mdots@\@undefined\let\Tdots@ORI\textellipsis + \let\Mdots@\mathellipsis\fi} + \def\bbl@frenchdots{\let\Tdots@\Frtextellipsis} + \def\bbl@nonfrenchdots{\let\Tdots@\Tdots@ORI} + \expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@frenchdots} + \expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@nonfrenchdots} +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Global layout} +% \label{sec-global} +% +% \changes{frenchb-1.4}{1999/10/03}{Added this section.} +% +% In multilingual documents, some typographic rules must depend +% on the current language (e.g., hyphenation, typesetting of +% numbers, spacing before double punctuation\dots), +% others should, IMHO, be kept global to the document: +% especially the layout of lists (see~\ref{sec-lists}) +% and the indentation of the first paragraph of sections +% (see~\ref{sec-indent}). +% +% \begin{macro}{\FrenchLayout} +% \begin{macro}{\StandardLayout} +% In a multilingual document, a unified look, either the French +% one or the standard one, can be assigned to the whole document: +% adding |\FrenchLayout| will give a global ``French look'' to +% the document (e.g., lists, regardless the current language, will +% be typeset as in French) and |\StandardLayout| forces a global +% ``US-English'' look. +% Both of these commands can only be used \emph{before} the +% |\begin{document}|. +% |\StandardLayout| can also be of interest for class designers +% who do not want |frenchb| to interfere with their global layout +% choices. +% +% As of version~1.4, |\FrenchLayout| and |\StandardLayout| only +% affect: +% \begin{itemize} +% \item the layout of lists (see~\ref{sec-lists}), +% \item the indentation of the first paragraph of sections +% (see~\ref{sec-indent}). +% \end{itemize} +% +% \changes{frenchb-1.6c}{2003/06/30}{Bug correction: the definitions +% of \cs{labelitemi} ... \cs{itemize} need to be saved in +% \cs{StandardLayout}.} +% +% \begin{macrocode} +\ifLaTeXe + \newcommand{\FrenchLayout}{% + \renewcommand{\StandardLayout}{% + \PackageWarning{frenchb.ldf}% + {\protect\StandardLayout\space makes no change\MessageBreak + (\protect\FrenchLayout\space has been selected before + \MessageBreak for the whole document)}% + }% + \AtBeginDocument{\bbl@frenchitemize\bbl@frenchlistspacing + \bbl@frenchindent}% + \let\bbl@nonfrenchitemize\relax + \let\bbl@nonfrenchlistspacing\relax + \let\bbl@nonfrenchindent\relax} + \newcommand{\StandardLayout}{% + \renewcommand{\FrenchLayout}{% + \PackageWarning{frenchb.ldf}% + {\protect\FrenchLayout\space makes no change\MessageBreak + (\protect\StandardLayout\space has been selected before + \MessageBreak for the whole document)}% + }% + \let\@ltiORI\labelitemi + \let\@ltiiORI\labelitemii + \let\@ltiiiORI\labelitemiii + \let\@ltivORI\labelitemiv + \let\itemizeORI\itemize + \let\bbl@frenchitemize\relax + \let\bbl@frenchlistspacing\relax + \let\bbl@frenchindent\relax} + \@onlypreamble\FrenchLayout + \@onlypreamble\StandardLayout +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsection{Extra utilities} +% +% All that is left to do now is to provide the French user +% with some extra utilities. +% +% \begin{macro}{\up} +% \begin{macro}{\ieme} +% |\up| eases the typesetting of superscripts like +% `1\raise0.55ex\hbox{\small er}'. |\up| relies on +% |\textsuperscript| when available (i.\,e., in \LaTeXe). +% +% \changes{frenchb-1.1}{1996/01/20}{Use \cs{textsuperscript} in \LaTeXe, +% as suggested by Vincent Jalby.} +% +% \changes{frenchb-1.1}{1996/01/26}{Internal macro \cs{up@size} +% introduced by Johannes Braams to replace \cs{small}, +% too fragile in 2.09).} +% +% \changes{frenchb-1.1}{1996/05/03}{\cs{@ptsize} may not be undefined, +% i.\,e. in slides.cls.} +% +% \begin{macro}{\up@size} +% The internal macro |\up@size| holds the size at which the +% superscript will be typeset. The reason for this is that we have +% to specify it differently for different formats. +% \begin{macrocode} +\ifx\sevenrm\@undefined + \ifx\@ptsize\@undefined + \let\up@size\small + \else + \ifx\selectfont\@undefined +% \end{macrocode} +% In this case the format is the original \LaTeX-2.09: +% \begin{macrocode} + \ifcase\@ptsize + \let\up@size\ixpt\or + \let\up@size\xpt\or + \let\up@size\xipt + \fi +% \end{macrocode} +% When |\selectfont| is defined we probably have NFSS available: +% \begin{macrocode} + \else + \ifcase\@ptsize + \def\up@size{\fontsize\@ixpt{10pt}\selectfont}\or + \def\up@size{\fontsize\@xpt{11pt}\selectfont}\or + \def\up@size{\fontsize\@xipt{12pt}\selectfont} + \fi + \fi + \fi +\else +% \end{macrocode} +% If we end up here it must be a plain based \TeX{} format, so: +% \begin{macrocode} + \let\up@size\sevenrm +\fi +% \end{macrocode} +% \end{macro} +% Now we can define |\up|. When \LaTeXe{} runs in +% compatibility mode (\LaTeX-2.09 emulation), |\textsuperscript| is +% also defined, but does no good job, so we give two different +% definitions for |\up| using |\if@Two@E|. +% \begin{macrocode} +\if@Two@E + \DeclareRobustCommand*{\up}[1]{\textsuperscript{#1}} +\else + \DeclareRobustCommand*{\up}[1]{\leavevmode\raise1ex\hbox{\up@size#1}} +\fi +% \end{macrocode} +% +% \changes{frenchb-1.1}{1996/05/31}{Added 5 macros from french.sty and +% missing \cs{lowercase}.} +% +% \changes{frenchb-1.2b}{1997/04/24}{Use \cs{xspace} to control spacing +% after \cs{ieme} ... \cs{ieres}.} +% +% |\ieme| is provided for compatibility with |francais.sty|, +% the other 5 for compatibility with |french.sty|: +% \begin{macrocode} +\def\ieme{\up{\lowercase{e}}\xspace} +\def\iemes{\up{\lowercase{es}}\xspace} +\def\ier{\up{\lowercase{er}}\xspace} +\def\iers{\up{\lowercase{ers}}\xspace} +\def\iere{\up{\lowercase{re}}\xspace} +\def\ieres{\up{\lowercase{res}}\xspace} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\No} +% \begin{macro}{\no} +% \begin{macro}{\primo} +% \begin{macro}{\fprimo)} +% And some more macros for numbering, first two support macros. +% +% \changes{frenchb-1.1}{1996/01/25}{Avoid using math superscripts +% in text mode (suggested by V.~Jalby), use \cs{up} instead. +% The symbol `degree' has nothing to do in +% \cs{FrenchPopularEnumerate}, replace it by a small `o'.} +% +% \begin{macrocode} +\DeclareRobustCommand*{\FrenchEnumerate}[1]{% + #1\up{\lowercase{o}}\kern+.3em} +\DeclareRobustCommand*{\FrenchPopularEnumerate}[1]{% + #1\up{\lowercase{o}})\kern+.3em} +% \end{macrocode} +% +% \changes{frenchb-1.3c}{1997/10/08}{Typos corrected: quatro, fquatro} +% +% Typing |\primo| should result in `$1^{\rm o}$\kern+.3em', +% \begin{macrocode} +\def\primo{\FrenchEnumerate1} +\def\secundo{\FrenchEnumerate2} +\def\tertio{\FrenchEnumerate3} +\def\quarto{\FrenchEnumerate4} +% \end{macrocode} +% while typing |\fprimo)| gives `1$^{\rm o}$)\kern+.3em. +% \begin{macrocode} +\def\fprimo){\FrenchPopularEnumerate1} +\def\fsecundo){\FrenchPopularEnumerate2} +\def\ftertio){\FrenchPopularEnumerate3} +\def\fquarto){\FrenchPopularEnumerate4} +% \end{macrocode} +% +% Let's provide two macros for the common abbreviations +% of ``Num\'ero''. +% \begin{macrocode} +\DeclareRobustCommand*{\No}{N\up{\lowercase{o}}\kern+.2em} +\DeclareRobustCommand*{\no}{n\up{\lowercase{o}}\kern+.2em} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \changes{frenchb-1.1}{1996/01/29}{Added command \cs{bsc}.} +% +% \changes{frenchb-1.1}{1996/05/31}{Added \cs{leavevmode} in \cs{bsc}} +% +% \begin{macro}{\bsc} +% As family names should be written in small capitals and never be +% hyphenated, we provide a command (its name comes from Boxed Small +% Caps) to input them easily; this is a simpler implementation of +% commands |\fsc| and |\lsc| from |french.sty| : no automatic +% uppercase/lowercase conversion is performed. +% Usage: |Jean~\bsc{Duchemin}|. +% \begin{macrocode} +\DeclareRobustCommand*{\bsc}[1]{\leavevmode\hbox{\scshape #1}} +% \end{macrocode} +% \end{macro} +% +% \changes{frenchb-1.1}{1996/05/31}{Added \cs{AllTeX}.} +% +% \changes{frenchb-1.2}{1997/01/08}{Removed \cs{AllTeX}.} +% +% \changes{frenchb-1.1}{1996/02/12}{Added T1-encodings for \oe, \OE, +% \ae, \AE. \emph{Do not} re-define these symbols outside \LaTeXe.} +% +% \changes{frenchb-1.1}{1996/02/14}{Corrected definitions of +% \cs{boi}.} +% +% \changes{frenchb-1.3}{1997/05/24}{Use \cs{textbackslash} to define +% \cs{boi}.} +% +% Some definitions for special characters. The first eight are +% mandatory for |\oe| etc. to work properly in moving arguments, +% the others just for convenience. We won't define |\tilde| as a +% Text Symbol not to conflict with the macro |\tilde| for math mode +% and use the name |\tild| instead. Note that |\boi| may \emph{not} +% be used in math mode, its name in math mode is |\backslash|. +% +% \changes{frenchb-1.3}{1997/05/24}{Use \cs{r{}} to access the +% character `degree', as suggested by V. Jalby.} +% +% |\degre| needs a special treatment: it is |\char6| +% in T1-encoding and |\char23| in OT1-encoding, both can be +% accessed by the command |\r{}| for ring accent. +% +% \changes{frenchb-1.1}{1996/03/03}{Do not use commands related to +% encodings outside \LaTeXe.} +% +% \changes{frenchb-1.4}{1999/10/03}{Add definitions for \cs{at}, +% \cs{circonflexe} and \cs{tild} in other encodings (mlTeX's LO1).} +% +% \begin{macrocode} +\ifLaTeXe + \DeclareTextSymbol{\ae}{T1}{230} + \DeclareTextSymbol{\ae}{OT1}{26} + \DeclareTextSymbol{\oe}{T1}{247} + \DeclareTextSymbol{\oe}{OT1}{27} + \DeclareTextSymbol{\AE}{T1}{198} + \DeclareTextSymbol{\AE}{OT1}{29} + \DeclareTextSymbol{\OE}{T1}{215} + \DeclareTextSymbol{\OE}{OT1}{30} + \DeclareTextSymbol{\at}{T1}{64} + \DeclareTextSymbol{\at}{OT1}{64} + \DeclareTextSymbol{\circonflexe}{T1}{94} + \DeclareTextSymbol{\circonflexe}{OT1}{94} + \DeclareTextSymbol{\tild}{T1}{126} + \DeclareTextSymbol{\tild}{OT1}{126} + \DeclareTextSymbolDefault{\at}{OT1} + \DeclareTextSymbolDefault{\circonflexe}{OT1} + \DeclareTextSymbolDefault{\tild}{OT1} + \DeclareRobustCommand*{\boi}{\textbackslash} + \DeclareRobustCommand*{\degre}{\r{}} +\else + \def\T@one{T1} + \ifx\f@encoding\T@one + \newcommand{\degre}{\char6} + \else + \newcommand{\degre}{\char23} + \fi + \newcommand{\at}{\char64} + \newcommand{\circonflexe}{\char94} + \newcommand{\tild}{\char126} + \newcommand{\boi}{{$\backslash$}} +\fi +% \end{macrocode} +% +% \begin{macro}{\degres} +% We now define a macro |\degres| for typesetting the abbreviation +% for `degrees' (as in `degrees Celsius'). As the bounding box of +% the character `degree' has \emph{very} different widths in CM/EC +% and PostScript fonts, we fix the width of the bounding box of +% |\degres| to 0.3\,em, this lets the symbol `degree' stick to the +% preceding (e.g., |45\degres|) or following character +% (e.g., |20~\degres C|). +% +% If the \TeX{} Companion fonts are available (\file{textcomp.sty}), +% we pick up |\textdegree| from them instead of using emulating +% `degrees' from the |\r{}| accent. Otherwise we overwrite the +% (poor) definition of |\textdegree| given in \file{latin1.def}, +% \file{applemac.def} etc. (called by \file{inputenc.sty}) by +% our definition of |\degres|. We also advice the user (once only) +% to use TS1-encoding. +% +% \changes{frenchb-1.1}{1996/01/25}{Fixed width bounding box for +% correct spacing with both CM, EC and PostScript fonts} +% +% \changes{frenchb-1.1}{1996/05/31}{Added \cs{leavevmode} in the +% \cs{degres}'s definition} +% +% \changes{frenchb-1.6a}{2003/02/02}{Replace \cs{degres} by +% \cs{textdegree} from textcomp.sty when possible (suggested +% by Michel Bovani).} +% +% \changes{frenchb-1.6g}{2005/02/06}{Add \cs{hbox} in the definition +% of \cs{degres} when textcomp.sty is loaded, so that \cs{degres} +% can be used in math mode.} +% +% \begin{macrocode} +\ifLaTeXe + \def\Warning@degree@TSone{% + \PackageWarning{frenchb.ldf}{% + Degrees would look better in TS1-encoding: + \MessageBreak add \protect + \usepackage{textcomp} to the preamble. + \MessageBreak Degrees used}} + \AtBeginDocument{\expandafter\ifx\csname M@TS1\endcsname\relax + \DeclareRobustCommand*{\degres}{% + \leavevmode\hbox to 0.3em{\hss\degre\hss}% + \Warning@degree@TSone + \global\let\Warning@degree@TSone\relax}% + \let\textdegree\degres + \else + \DeclareRobustCommand*{\degres}{% + \hbox{\UseTextSymbol{TS1}{\textdegree}}}% + \fi} +\else + \DeclareRobustCommand*{\degres}{% + \leavevmode\hbox to 0.3em{\hss\degre\hss}} +\fi +% \end{macrocode} +% \end{macro} +% +% \changes{frenchb-1.1}{1996/01/16}{Special care has to be taken +% with Ml\TeX.} +% +% The following macros are used in the redefinition of |\^| and +% |\"| to handle the letter~i: they allow users to type simply +% |\^i| and |\"i| instead of |\^{\i}| and |\"{\i}|.\\ +% Ml\TeX{}'s macros dealing with accents conflict with those of +% \LaTeXe{}, so we check whether |\csubinverse| is defined or not. +% If |\csubinverse| is \emph{defined}, we are in Ml\TeX. +% +% \changes{frenchb-1.1}{1996/03/02}{Do this only in \LaTeXe.} +% +% \changes{frenchb-1.1}{1996/03/12}{Do not redefine \cs{\char94} and +% \cs{"} in Ml\TeX, because it would break hyphenation. The correct +% place to redefine \cs{\char94i} and \cs{"i} is in the format +% itself, see MLTeX.cfg.} +% +% \begin{macrocode} +\ifLaTeXe + \AtBeginDocument{% + \ifx\csubinverse\@undefined + \DeclareTextCompositeCommand{\^}{OT1}{i}{\^\i}% + \DeclareTextCompositeCommand{\"}{OT1}{i}{\"\i}% + \fi} +\fi +% \end{macrocode} +% +% \subsection{Date and clean up} +% +% \begin{macro}{\datefrench} +% The macro |\datefrench| redefines the command |\today| to +% produce French dates. +% +% \changes{frenchb-1.2}{1997/01/05}{Added aliases \cs{datefrenchb} +% and \cs{datefrancais}. Use \cs{ier} instead of \cs{up}.} +% +% \changes{frenchb-1.3b}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% +% \changes{frenchb-1.3d}{1998/07/04}{Move this code to the end +% of file, until \cs{ier} is defined (due to use of \cs{edef}); +% expansion of \cs{ier} has to be stopped anyway.} +% +% \changes{frenchb-1.3g}{1999/08/18}{Replaced \cs{edef} with \cs{def} +% to prevent problems with unexpandable accent commands} +% +% \changes{frenchb-1.4d}{2000/02/01}{Changed \cs{noexpand}\cs{ier} +% to \cs{ier}, as a result of the replacement of \cs{edef} by +% \cs{def}, see previous change. Also add braces around \cs{ier} +% for xspace.sty.} +% +% \begin{macrocode} +\@namedef{date\CurrentOption}{% + \def\today{\number\day + \ifnum1=\day {\ier}\fi + \space \ifcase\month + \or janvier\or f\'evrier\or mars\or avril\or mai\or juin\or + juillet\or ao\^ut\or septembre\or octobre\or novembre\or + d\'ecembre\fi + \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% The macro |\ldf@quit| takes care for setting the main language +% to be switched on at |\begin{document}| and resetting the +% category code of \texttt{@} to its original value. +% The config file searched for has to be `frenchb.cfg', and +% |\CurrentOption| has been set to `french', so +% |\ldf@finish\CurrentOption| cannot be used: we first load +% `frenchb.cfg' (in LaTeX2e only), then call +% |\ldf@quit\CurrentOption|. +% The macro-space used by some control sequences we do not +% need any longer, is freed. +% +% \changes{frenchb-1.1b}{1996/11/02}{Now use \cs{ldf@finish} to wrap +% up.} +% +% \changes{frenchb-1.2}{1997/01/05}{The config file searched for is +% `frenchb.cfg' regardless \cs{CurrentOption}.} +% +% \changes{frenchb-1.5d}{2001/02/16}{Load frenchb.cfg first and +% change \cs{ldf@finish} to \cs{ldf@quit}.} +% +% \changes{frenchb-1.6g}{2005/02/06}{frenchb.cfg is now loaded only +% with LaTeX2e, as the customization makes sense only in LaTeX2e. +% Suggested by J.F. Burnol.} +% +% \begin{macrocode} +\ifLaTeXe + \loadlocalcfg{frenchb} +\fi +\let\T@one\relax +\let\@FI@\relax +\let\ifLaTeX\@undefined +\let\LaTeXtrue\@undefined +\let\LaTeXfalse\@undefined +\let\ifLaTeXe\@undefined +\let\LaTeXetrue\@undefined +\let\LaTeXefalse\@undefined +\ldf@quit\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 diff --git a/Master/texmf-dist/source/generic/babel/frenchb.ins b/Master/texmf-dist/source/generic/babel/frenchb.ins new file mode 100644 index 00000000000..8e5f7507769 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/frenchb.ins @@ -0,0 +1,155 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/10/30} +\def\batchfile{frenchb.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{frenchb.ldf}{\from{frenchb.dtx}{code}} + } +\nopreamble +\nopostamble +\generate{\file{frenchb.cfg}{\from{frenchb.dtx}{cfg}} + } + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput + + + + diff --git a/Master/texmf-dist/source/generic/babel/galician.dtx b/Master/texmf-dist/source/generic/babel/galician.dtx new file mode 100644 index 00000000000..89b8c59e296 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/galician.dtx @@ -0,0 +1,476 @@ +% \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{263} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{galician.dtx} +%</dtx> +%<code>\ProvidesLanguage{galician} +%\fi +%\ProvidesFile{galician.dtx} + [2005/03/30 v1.2l Galician support from the babel system] +%\iffalse +%% File `galician.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Galician Language Definition File +%% Copyright (C) 1989 - 2005 +%% by Manuel Carriba mcarriba at eunetcom.net +%% Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Galician language definition file. +% +% The 'galician' style was originally adopted from the 'spanish' +% style. +% +% All the macrocodes have been translated from the spanish language +% into the galician language, using the spanish-galician +% dictionary: +% +% X.L. Franco Grande +% Diccionario Galego-Castelan e Vocabulario Castelan-Galego +% Editorial Galaixa, Vigo 1968 +% +% The hyphenation patterns for the galician language should be the +% same as the spanish language. I've inspected some galician essays +% and nothing strange seems to point out that both languages might +% use different hyphenation patterns. This still has to been +% proved. I will check it anyway, and hope to report more as soon +% as possible. +% +% A small note to the months in the galician language: +% +% 'outono' will be used sometimes instead of 'outubro', but this +% word will be used more to assign the season. +% +% 'nadal' will be used sometimes instead of 'decembro', but this +% word will be used more for the event on Christmas. +% +% Manuel Carriba (mcarriba at eunetcom.net) +% +% The file spanish.sty was written by Julio Sanchez, +% (jsanchez at gmv.es) +%<*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{galician.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{galician.dtx} +% +% \changes{galician-1.1}{1994/02/27}{Update for \LaTeXe} +% \changes{galician-1.1c}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{galician-1.2e}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \section{The Galician language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate.} defines all the language definition macros for the +% Galician language. +% +% For this language the characters |'| |~| and |"| are made +% active. In table~\ref{tab:galician-quote} an overview is given of +% their purpose. +% \begin{table}[htb] +% \centering +% \begin{tabular}{lp{8cm}} +% \verb="|= & disable ligature at this position.\\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word.\\ +% |\-| & like the old |\-|, but allowing hyphenation +% in the rest of the word. \\ +% |'a| & an accent that allows hyphenation. Valid for all +% vowels uppercase and lowercase.\\ +% |'n| & a n with a tilde. This is included to +% improve compatibility with FTC. Works for uppercase too.\\ +% |"u| & a u with dieresis allowing hyphenation.\\ +% |"a| & feminine ordinal as in +% 1{\raise1ex\hbox{\underbar{\scriptsize a}}}.\\ +% |"o| & masculine ordinal as in +% 1{\raise1ex\hbox{\underbar{\scriptsize o}}}.\\ +% |~n| & a n with tilde. Works for uppercase too. +% \end{tabular} +% \caption{The extra definitions made by \texttt{galician.ldf}} +% \label{tab:galician-quote} +% \end{table} +% These active accents character behave according to their original +% definitions if not followed by one of the characters indicated in +% that 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{galician-1.2e}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{galician}\captionsgalician +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{galician} could be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@galician| to see whether we have to do something here. +% +% \changes{galician-1.1c}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@galician\@undefined + \@nopatterns{Galician} + \adddialect\l@galician0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Galician language. +% +% \begin{macro}{\captionsgalician} +% The macro |\captionsgalician| defines all strings used +% in the four standard documentclasses provided with \LaTeX. +% \changes{galician-1.1d}{1994/11/09}{Added a few missing +% translations} +% \changes{galician-1.2b}{1995/07/02}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{galician-1.2j}{2000/09/20}{Added \cs{glossaryname}} +% \changes{galician-1.2k}{2001/02/20}{Translated Proof} +% \changes{galician-1.2l}{2003/05/23}{Translated Gloassary} +% \begin{macrocode} +\addto\captionsgalician{% + \def\prefacename{Prefacio}% + \def\refname{Referencias}% + \def\abstractname{Resumo}% + \def\bibname{Bibliograf\'{\i}a}% + \def\chaptername{Cap\'{\i}tulo}% + \def\appendixname{Ap\'endice}% + \def\contentsname{\'Indice Xeral}% + \def\listfigurename{\'Indice de Figuras}% + \def\listtablename{\'Indice de T\'aboas}% + \def\indexname{\'Indice de Materias}% + \def\figurename{Figura}% + \def\tablename{T\'aboa}% + \def\partname{Parte}% + \def\enclname{Adxunto}% + \def\ccname{Copia a}% + \def\headtoname{A}% + \def\pagename{P\'axina}% + \def\seename{v\'exase}% + \def\alsoname{v\'exase tam\'en}% + \def\proofname{Demostraci\'on}% + \def\glossaryname{Glosario}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dategalician} +% The macro |\dategalician| redefines the command |\today| to +% produce Galician dates. +% \changes{galician-1.1d}{1994/11/09}{Corrected the name of the month +% marzo from marzal} +% \changes{galician-1.2h}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{galician-1.2h}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \begin{macrocode} +\def\dategalician{% + \def\today{\number\day~de\space\ifcase\month\or + xaneiro\or febreiro\or marzo\or abril\or maio\or xu\~no\or + xullo\or agosto\or setembro\or outubro\or novembro\or decembro\fi + \space de~\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasgalician} +% \changes{galician-1.2a}{1995/03/14}{Handling of active characters +% completely rewritten} +% \begin{macro}{\noextrasgalician} +% +% The macro |\extrasgalician| will perform all the extra +% definitions needed for the Galician language. The macro +% |\noextrasgalician| is used to cancel the actions of +% |\extrasgalician|. +% +% For Galician, some characters are made active or are +% redefined. In particular, the \texttt{"} character and the |~| +% character receive new meanings this can also happen for the +% \texttt{'} character when the option \Lopt{activeacute} is +% specified. +% +% \changes{galician-1.2c}{1995/07/08}{Make active accent optional} +% \changes{galician-1.2d}{1995/08/17}{Need to split up the +% \cs{@ifpackagewith} statement} +% \begin{macrocode} +\addto\extrasgalician{\languageshorthands{galician}} +\initiate@active@char{"} +\initiate@active@char{~} +\addto\extrasgalician{% + \bbl@activate{"}\bbl@activate{~}} +\@ifpackagewith{babel}{activeacute}{% + \initiate@active@char{'}}{} +\@ifpackagewith{babel}{activeacute}{% + \addto\extrasgalician{\bbl@activate{'}}}{} +% \end{macrocode} +% Now make sure that the characters that have been turned into +% shorthanfd characters expand to `normal' characters outside the +% catalan environment. +% \changes{galician-1.2i}{1999/12/16}{Don't forget do deactivate the +% shorthands} +% \begin{macrocode} +\addto\noextrasgalician{% + \bbl@deactivate{"}\bbl@deactivate{~}} +\@ifpackagewith{babel}{activeacute}{% + \addto\noextrascatalan{\bbl@deactivate{'}}}{} +% \end{macrocode} +% +% \changes{galician-1.2a}{1995/03/14}{All the code for handling active +% characters is now moved to \file{babel.def}} +% +% Apart from the active characters some other macros get a new +% definition. Therefore we store the current one to be able to +% restore them later. +% +% \changes{galician-1.2f}{1997/01/08}{Added some comment signs to +% prevent unwanted spaces in the output} +% \begin{macrocode} +\addto\extrasgalician{% + \babel@save\"\babel@save\~% + \def\"{\protect\@umlaut}% + \def\~{\protect\@tilde}} +\@ifpackagewith{babel}{activeacute}{% + \babel@save\'% + \addto\extrasgalician{\def\'{\protect\@acute}} + }{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% All the code above is necessary because we need a few extra +% active characters. These characters are then used as indicated in +% table~\ref{tab:galician-quote}. +% +% This option includes some support for working with extended, +% 8-bit fonts, if available. This assumes that the user has some +% macros predefined. For instance, if the user has a |\@ac@a| macro +% defined, the sequence |\'a| or |'a| will both expand to whatever +% |\@ac@a| is defined to expand, presumably \texttt{\'a}. The +% names of these macros are the same as those in Ferguson's +% ML-\TeX{} compatibility package on purpose. Using this method, +% and provided that adequate hyphenation patterns exist, it is +% possible to get better hyphenation for Galician than before. If +% the user has a terminal able to produce these codes directly, it +% is possible to do so. If the need arises to send the document to +% someone who does not have such support, it is possible to +% mechanically translate the document so that the receiver can make +% use of it. +% +% To be able to define the function of the new accents, we first +% define a couple of `support' macros. +% +% \begin{macro}{\dieresis} +% \begin{macro}{\textacute} +% \changes{galician-1.1c}{1994/06/26}{Renamed from \cs{acute} as that +% is a \cs{mathaccent}} +% \begin{macro}{\texttilde} +% \changes{galician-1.1c}{1994/06/26}{Renamed from \cs{tilde} as that +% is a \cs{mathaccent}} +% +% The original definition of |\"| is stored as |\dieresis|, because +% the definition of |\"| might not be the default plain \TeX\ +% one. If the user uses \textsc{PostScript} fonts with the Adobe +% font encoding the \texttt{"} character is not in the same +% position as in Knuth's font encoding. In this case |\"| will not +% be defined as |\accent"7F #1|, but as |\accent'310 #1|. Something +% similar happens when using fonts that follow the Cork +% encoding. For this reason we save the definition of |\"| and use +% that in the definition of other macros. We do likewise for |\'| +% and |\~|. +% \begin{macrocode} +\let\dieresis\" +\let\texttilde\~ +\@ifpackagewith{babel}{activeacute}{\let\textacute\'}{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@umlaut} +% \begin{macro}{\@acute} +% \begin{macro}{\@tilde} +% If the user setup has extended fonts, the Ferguson macros are +% required to be defined. We check for their existance and, if +% defined, expand to whatever they are defined to. For instance, +% |\'a| would check for the existance of a |\@ac@a| macro. It is +% assumed to expand to the code of the accented letter. If it is +% not defined, we assume that no extended codes are available and +% expand to the original definition but enabling hyphenation beyond +% the accent. This is as best as we can do. It is better if you +% have extended fonts or ML-\TeX{} because the hyphenation +% algorithm can work on the whole word. The following macros are +% directly derived from ML-\TeX{}.\footnote{A problem is perceived +% here with these macros when used in a multilingual environment +% where extended hyphenation patterns are available for some but +% not all languages. Assume that no extended patterns exist at some +% site for French and that \file{french.sty} would adopt this +% scheme too. In that case, \texttt{'e} in French would +% produce the combined accented letter, but hyphenation around it +% would be suppressed. Both language options would need an +% independent method to know whether they have extended patterns +% available. The precise impact of this problem and the possible +% solutions are under study.} +% +% \begin{macrocode} +\def\@umlaut#1{\allowhyphens\dieresis{#1}\allowhyphens} +\def\@tilde#1{\allowhyphens\texttilde{#1}\allowhyphens} +\@ifpackagewith{babel}{activeacute}{% + \def\@acute#1{\allowhyphens\textacute{#1}\allowhyphens}}{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Now we can define our shorthands: the umlauts, +% \begin{macrocode} +\declare@shorthand{galician}{"-}{\nobreak-\bbl@allowhyphens} +\declare@shorthand{galician}{"|}{\discretionary{-}{}{\kern.03em}} +\declare@shorthand{galician}{"u}{\@umlaut{u}} +\declare@shorthand{galician}{"U}{\@umlaut{U}} +% \end{macrocode} +% ordinals\footnote{The code for the ordinals was taken from the +% answer provided by Raymond Chen +% {\texttt(raymond@math.berkeley.edu}) to a question by Joseph Gil +% (\texttt{yogi@cs.ubc.ca}) in \texttt{comp.text.tex}.}, +% \changes{galician-1.2f}{1997/01/08}{Added \cs{leavevmode} to +% definitions of \texttt{"a} and \texttt{"o}} +% \begin{macrocode} +\declare@shorthand{galician}{"o}{% + \leavevmode\raise1ex\hbox{\underbar{\scriptsize o}}} +\declare@shorthand{galician}{"a}{% + \leavevmode\raise1ex\hbox{\underbar{\scriptsize a}}} +% \end{macrocode} +% acute accents, +% \changes{galician-1.2b}{1995/07/03}{Changed mathmode definition of +% acute shorthands to expand to a single prime followed by the next +% character in the input} +% \begin{macrocode} +\@ifpackagewith{babel}{activeacute}{% + \declare@shorthand{galician}{'a}{\textormath{\@acute a}{^{\prime} a}} + \declare@shorthand{galician}{'e}{\textormath{\@acute e}{^{\prime} e}} + \declare@shorthand{galician}{'i}{\textormath{\@acute\i{}}{^{\prime}i}} + \declare@shorthand{galician}{'o}{\textormath{\@acute o}{^{\prime} o}} + \declare@shorthand{galician}{'u}{\textormath{\@acute u}{^{\prime} u}} + \declare@shorthand{galician}{'A}{\textormath{\@acute A}{^{\prime} A}} + \declare@shorthand{galician}{'E}{\textormath{\@acute E}{^{\prime} E}} + \declare@shorthand{galician}{'I}{\textormath{\@acute I}{^{\prime} I}} + \declare@shorthand{galician}{'O}{\textormath{\@acute O}{^{\prime} O}} + \declare@shorthand{galician}{'U}{\textormath{\@acute U}{^{\prime} U}} +% \end{macrocode} +% tildes, +% \begin{macrocode} + \declare@shorthand{galician}{'n}{\textormath{\~n}{^{\prime} n}} + \declare@shorthand{galician}{'N}{\textormath{\~N}{^{\prime} N}} +% \end{macrocode} +% the acute accent, +% \changes{galician-1.2d}{1995/11/11}{Added '{}' as an axtra shorthand} +% \begin{macrocode} + \declare@shorthand{galician}{''}{% + \textormath{\textquotedblright}{\sp\bgroup\prim@s'}} + }{} +\declare@shorthand{galician}{~n}{\textormath{\~n}{\@tilde n}} +\declare@shorthand{galician}{~N}{\textormath{\~N}{\@tilde N}} +% \end{macrocode} +% +% \begin{macro}{\-} +% +% All that is left now is the redefinition of |\-|. The new version +% of |\-| should indicate an extra hyphenation position, while +% allowing other hyphenation positions to be generated +% automatically. The standard behaviour of \TeX\ in this respect is +% unfortunate for Galician but not as much as for Dutch or German, +% where long compound words are quite normal and all one needs is a +% means to indicate an extra hyphenation position on top of the +% ones that \TeX\ can generate from the hyphenation +% patterns. However, the average length of words in Galician makes +% this desirable and so it is kept here. +% +% \begin{macrocode} +\addto\extrasgalician{% + \babel@save{\-}% + \def\-{\bbl@allowhyphens\discretionary{-}{}{}\bbl@allowhyphens}} +% \end{macrocode} +% \end{macro} +% +% 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{galician-1.2e}{1996/11/02}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{galician} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/galician.ins b/Master/texmf-dist/source/generic/babel/galician.ins new file mode 100644 index 00000000000..a50810d8f2c --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/galician.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{galician.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{galician.ldf}{\from{galician.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/german.ins b/Master/texmf-dist/source/generic/babel/german.ins new file mode 100644 index 00000000000..987f600bf78 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/german.ins @@ -0,0 +1,149 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{german.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{germanb.ldf}{\from{germanb.dtx}{code}} + \file{ngermanb.ldf}{\from{ngermanb.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/germanb.dtx b/Master/texmf-dist/source/generic/babel/germanb.dtx new file mode 100644 index 00000000000..4e2491b2ecd --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/germanb.dtx @@ -0,0 +1,543 @@ +% \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{343} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{germanb.dtx} +%</dtx> +%<code>\ProvidesLanguage{germanb} +%\fi +%\ProvidesFile{germanb.dtx} + [2004/02/19 v2.6k German support from the babel system] +%\iffalse +%% File `germanb.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2004 +%% by Johannes Braams, TeXniek +% +%% Germanb Language Definition File +%% Copyright (C) 1989 - 2004 +%% by Bernd Raichle raichle at azu.Informatik.Uni-Stuttgart.de +%% Johannes Braams, TeXniek +% This file is based on german.tex version 2.5d, +% by Bernd Raichle, Hubert Partl et.al. +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +%<*filedriver> +\documentclass{ltxdoc} +\font\manual=logo10 % font used for the METAFONT logo, etc. +\newcommand*\MF{{\manual META}\-{\manual FONT}} +\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{germanb.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{germanb.dtx} +% +% \changes{germanb-1.0a}{1990/05/14}{Incorporated Nico's comments} +% \changes{germanb-1.0b}{1990/05/22}{fixed typo in definition for +% austrian language found by Werenfried Spit +% \texttt{nspit@fys.ruu.nl}} +% \changes{germanb-1.0c}{1990/07/16}{Fixed some typos} +% \changes{germanb-1.1}{1990/07/30}{When using PostScript fonts with +% the Adobe fontencoding, the dieresis-accent is located elsewhere, +% modified code} +% \changes{germanb-1.1a}{1990/08/27}{Modified the documentation +% somewhat} +% \changes{germanb-2.0}{1991/04/23}{Modified for babel 3.0} +% \changes{germanb-2.0a}{1991/05/25}{Removed some problems in change +% log} +% \changes{germanb-2.1}{1991/05/29}{Removed bug found by van der Meer} +% \changes{germanb-2.2}{1991/06/11}{Removed global assignments, +% brought uptodate with \file{german.tex} v2.3d} +% \changes{germanb-2.2a}{1991/07/15}{Renamed \file{babel.sty} in +% \file{babel.com}} +% \changes{germanb-2.3}{1991/11/05}{Rewritten parts of the code to use +% the new features of babel version 3.1} +% \changes{germanb-2.3e}{1991/11/10}{Brought up-to-date with +% \file{german.tex} v2.3e (plus some bug fixes) [br]} +% \changes{germanb-2.5}{1994/02/08}{Update or \LaTeXe} +% \changes{germanb-2.5c}{1994/06/26}{Removed the use of \cs{filedate} +% and moved the identification after the loading of +% \file{babel.def}} +% \changes{germanb-2.6a}{1995/02/15}{Moved the identification to the +% top of the file} +% \changes{germanb-2.6a}{1995/02/15}{Rewrote the code that handles the +% active double quote character} +% \changes{germanb-2.6d}{1996/07/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{germanb-2.6d}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning.} +% +% \section{The German language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate.} defines all the language definition macros for the +% German language as well as for the Austrian dialect of this +% language\footnote{This file is a re-implementation of Hubert +% Partl's \file{german.sty} version 2.5b, see~\cite{HP}.}. +% +% For this language the character |"| is made active. In +% table~\ref{tab:german-quote} an overview is given of its +% purpose. One of the reasons for this is that in the German +% language some character combinations change when a word is broken +% between the combination. Also the vertical placement of the +% umlaut can be controlled this way. +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |"a| & |\"a|, also implemented for the other +% lowercase and uppercase vowels. \\ +% |"s| & to produce the German \ss{} (like |\ss{}|). \\ +% |"z| & to produce the German \ss{} (like |\ss{}|). \\ +% |"ck|& for |ck| to be hyphenated as |k-k|. \\ +% |"ff|& for |ff| to be hyphenated as |ff-f|, +% this is also implemented for l, m, n, p, r and t\\ +% |"S| & for |SS| to be |\uppercase{"s}|. \\ +% |"Z| & for |SZ| to be |\uppercase{"z}|. \\ +% \verb="|= & disable ligature at this position. \\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word. \\ +% |""| & like |"-|, but producing no hyphen sign +% (for compund words with hyphen, e.g.\ |x-""y|). \\ +% |"~| & for a compound word mark without a breakpoint. \\ +% |"=| & for a compound word mark with a breakpoint, allowing +% hyphenation in the composing words. \\ +% |"`| & for German left double quotes (looks like ,,). \\ +% |"'| & for German right double quotes. \\ +% |"<| & for French left double quotes (similar to $<<$). \\ +% |">| & for French right double quotes (similar to $>>$). \\ +% \end{tabular} +% \caption{The extra definitions made +% by \file{german.ldf}}\label{tab:german-quote} +% \end{center} +% \end{table} +% The quotes in table~\ref{tab:german-quote} can also be typeset by +% using the commands in table~\ref{tab:more-quote}. +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |\glqq| & for German left double quotes (looks like ,,). \\ +% |\grqq| & for German right double quotes (looks like ``). \\ +% |\glq| & for German left single quotes (looks like ,). \\ +% |\grq| & for German right single quotes (looks like `). \\ +% |\flqq| & for French left double quotes (similar to $<<$). \\ +% |\frqq| & for French right double quotes (similar to $>>$).\\ +% |\flq| & for (French) left single quotes (similar to $<$). \\ +% |\frq| & for (French) right single quotes (similar to $>$). \\ +% |\dq| & the original quotes character (|"|). \\ +% \end{tabular} +% \caption{More commands which produce quotes, defined +% by \file{german.ldf}}\label{tab:more-quote} +% \end{center} +% \end{table} +% +% \StopEventually{} +% +% When this file was read through the option \Lopt{germanb} we make +% it behave as if \Lopt{german} was specified. +% \begin{macrocode} +\def\bbl@tempa{germanb} +\ifx\CurrentOption\bbl@tempa + \def\CurrentOption{german} +\fi +% \end{macrocode} +% +% 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{germanb-2.6d}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit\CurrentOption{captions\CurrentOption} +% \end{macrocode} +% +% When this file is read as an option, i.e., by the |\usepackage| +% command, \texttt{german} will be an `unknown' language, so we +% have to make it known. So we check for the existence of +% |\l@german| to see whether we have to do something here. +% +% \changes{germanb-2.0}{1991/04/23}{Now use \cs{adddialect} if +% language undefined} +% \changes{germanb-2.2d}{1991/10/27}{Removed use of \cs{@ifundefined}} +% \changes{germanb-2.3e}{1991/11/10}{Added warning, if no german +% patterns loaded} +% \changes{germanb-2.5c}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@german\@undefined + \@nopatterns{German} + \adddialect\l@german0 +\fi +% \end{macrocode} +% +% For the Austrian version of these definitions we just add another +% language. +% \changes{germanb-2.0}{1991/04/23}{Now use \cs{adddialect} for +% austrian} +% \begin{macrocode} +\adddialect\l@austrian\l@german +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the German language. +% +% \begin{macro}{\captionsgerman} +% \begin{macro}{\captionsaustrian} +% Either the macro |\captionsgerman| or the macro +% |\captionsaustrian| will define all strings used in the four +% standard document classes provided with \LaTeX. +% +% \changes{germanb-2.2}{1991/06/06}{Removed \cs{global} definitions} +% \changes{germanb-2.2}{1991/06/06}{\cs{pagename} should be +% \cs{headpagename}} +% \changes{germanb-2.3e}{1991/11/10}{Added \cs{prefacename}, +% \cs{seename} and \cs{alsoname}} +% \changes{germanb-2.4}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{germanb-2.6b}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{germanb-2.6d}{1996/07/10}{Construct control sequence on the +% fly} +% \changes{germanb-2.6j}{2000/09/20}{Added \cs{glossaryname}} +% \begin{macrocode} +\@namedef{captions\CurrentOption}{% + \def\prefacename{Vorwort}% + \def\refname{Literatur}% + \def\abstractname{Zusammenfassung}% + \def\bibname{Literaturverzeichnis}% + \def\chaptername{Kapitel}% + \def\appendixname{Anhang}% + \def\contentsname{Inhaltsverzeichnis}% % oder nur: Inhalt + \def\listfigurename{Abbildungsverzeichnis}% + \def\listtablename{Tabellenverzeichnis}% + \def\indexname{Index}% + \def\figurename{Abbildung}% + \def\tablename{Tabelle}% % oder: Tafel + \def\partname{Teil}% + \def\enclname{Anlage(n)}% % oder: Beilage(n) + \def\ccname{Verteiler}% % oder: Kopien an + \def\headtoname{An}% + \def\pagename{Seite}% + \def\seename{siehe}% + \def\alsoname{siehe auch}% + \def\proofname{Beweis}% + \def\glossaryname{Glossar}% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\dategerman} +% The macro |\dategerman| redefines the command +% |\today| to produce German dates. +% \changes{germanb-2.3e}{1991/11/10}{Added \cs{month@german}} +% \changes{germanb-2.6f}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{germanb-2.6f}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \begin{macrocode} +\def\month@german{\ifcase\month\or + Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or + Juli\or August\or September\or Oktober\or November\or Dezember\fi} +\def\dategerman{\def\today{\number\day.~\month@german + \space\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateaustrian} +% The macro |\dateaustrian| redefines the command +% |\today| to produce Austrian version of the German dates. +% \changes{germanb-2.6f}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{germanb-2.6f}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \begin{macrocode} +\def\dateaustrian{\def\today{\number\day.~\ifnum1=\month + J\"anner\else \month@german\fi \space\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasgerman} +% \begin{macro}{\extrasaustrian} +% \changes{germanb-2.0b}{1991/05/29}{added some comment chars to +% prevent white space} +% \changes{germanb-2.2}{1991/06/11}{Save all redefined macros} +% \begin{macro}{\noextrasgerman} +% \begin{macro}{\noextrasaustrian} +% \changes{germanb-1.1}{1990/07/30}{Added \cs{dieresis}} +% \changes{germanb-2.0b}{1991/05/29}{added some comment chars to +% prevent white space} +% \changes{germanb-2.2}{1991/06/11}{Try to restore everything to its +% former state} +% \changes{germanb-2.6d}{1996/07/10}{Construct control sequence +% \cs{extrasgerman} or \cs{extrasaustrian} on the fly} +% +% Either the macro |\extrasgerman| or the macros |\extrasaustrian| +% will perform all the extra definitions needed for the German +% language. The macro |\noextrasgerman| is used to cancel the +% actions of |\extrasgerman|. +% +% For German (as well as for Dutch) the \texttt{"} character is +% made active. This is done once, later on its definition may vary. +% \begin{macrocode} +\initiate@active@char{"} +\@namedef{extras\CurrentOption}{% + \languageshorthands{german}} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@activate{"}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{germanb-2.6i}{1999/12/16}{Deactivate shorthands ouside of +% German} +% \begin{macrocode} +\addto\noextrasgerman{\bbl@deactivate{"}} +% \end{macrocode} +% +% \changes{germanb-2.6a}{1995/02/15}{All the code to handle the active +% double quote has been moved to \file{babel.def}} +% +% In order for \TeX\ to be able to hyphenate German words which +% contain `\ss' (in the \texttt{OT1} position |^^Y|) we have to +% give the character a nonzero |\lccode| (see Appendix H, the \TeX +% book). +% \changes{germanb-2.6c}{1996/04/08}{Use decimal number instead of +% hat-notation as the hat may be activated} +% \begin{macrocode} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@savevariable{\lccode25}% + \lccode25=25} +% \end{macrocode} +% \changes{germanb-2.6a}{1995/02/15}{Removeed \cs{3} as it is no +% longer in \file{german.ldf}} +% +% The umlaut accent macro |\"| is changed to lower the umlaut dots. +% The redefinition is done with the help of |\umlautlow|. +% \begin{macrocode} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\"\umlautlow} +\@namedef{noextras\CurrentOption}{\umlauthigh} +% \end{macrocode} +% The german hyphenation patterns can be used with |\lefthyphenmin| +% and |\righthyphenmin| set to~2. +% \changes{germanb-2.6a}{1995/05/13}{use \cs{germanhyphenmins} to store +% the correct values} +% \changes{germanb-2.6j}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% For German texts we need to make sure that |\frenchspacing| is +% turned on. +% \changes{germanb-2.6k}{2001/01/26}{Turn frenchspacing on, as in +% \texttt{german.sty}} +% \begin{macrocode} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@frenchspacing} +\expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@nonfrenchspacing} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \changes{germanb-2.6a}{1995/02/15}{\cs{umlautlow} and +% \cs{umlauthigh} moved to \file{glyphs.dtx}, as well as +% \cs{newumlaut} (now \cs{lower@umlaut}} +% +% The code above is necessary because we need an extra active +% character. This character is then used as indicated in +% table~\ref{tab:german-quote}. +% +% To be able to define the function of |"|, we first define a +% couple of `support' macros. +% +% \changes{germanb-2.3e}{1991/11/10}{Added \cs{save@sf@q} macro and +% rewrote all quote macros to use it} +% \changes{germanb-2.3h}{1991/02/16}{moved definition of +% \cs{allowhyphens}, \cs{set@low@box} and \cs{save@sf@q} to +% \file{babel.com}} +% \changes{germanb-2.6a}{1995/02/15}{Moved all quotation characters to +% \file{glyphs.dtx}} +% +% \begin{macro}{\dq} +% We save the original double quote character in |\dq| to keep +% it available, the math accent |\"| can now be typed as |"|. +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\x{\endgroup + \def\@SS{\mathchar"7019 } + \def\dq{"}} +\x +% \end{macrocode} +% \end{macro} +% \changes{germanb-2.6c}{1996/01/24}{Moved \cs{german@dq@disc} to +% babel.def, calling it \cs{bbl@disc}} +% +% \changes{germanb-2.6a}{1995/02/15}{Use \cs{ddot} instead of +% \cs{@MATHUMLAUT}} +% +% Now we can define the doublequote macros: the umlauts, +% \changes{germanb-2.6c}{1996/05/30}{added the \cs{allowhyphens}} +% \begin{macrocode} +\declare@shorthand{german}{"a}{\textormath{\"{a}\allowhyphens}{\ddot a}} +\declare@shorthand{german}{"o}{\textormath{\"{o}\allowhyphens}{\ddot o}} +\declare@shorthand{german}{"u}{\textormath{\"{u}\allowhyphens}{\ddot u}} +\declare@shorthand{german}{"A}{\textormath{\"{A}\allowhyphens}{\ddot A}} +\declare@shorthand{german}{"O}{\textormath{\"{O}\allowhyphens}{\ddot O}} +\declare@shorthand{german}{"U}{\textormath{\"{U}\allowhyphens}{\ddot U}} +% \end{macrocode} +% tremas, +% \begin{macrocode} +\declare@shorthand{german}{"e}{\textormath{\"{e}}{\ddot e}} +\declare@shorthand{german}{"E}{\textormath{\"{E}}{\ddot E}} +\declare@shorthand{german}{"i}{\textormath{\"{\i}}% + {\ddot\imath}} +\declare@shorthand{german}{"I}{\textormath{\"{I}}{\ddot I}} +% \end{macrocode} +% german es-zet (sharp s), +% \changes{germanb-2.6f}{1997/05/08}{use \cs{SS} instead of +% \texttt{SS}, removed braces after \cs{ss}} +% \begin{macrocode} +\declare@shorthand{german}{"s}{\textormath{\ss}{\@SS{}}} +\declare@shorthand{german}{"S}{\SS} +\declare@shorthand{german}{"z}{\textormath{\ss}{\@SS{}}} +\declare@shorthand{german}{"Z}{SZ} +% \end{macrocode} +% german and french quotes, +% \begin{macrocode} +\declare@shorthand{german}{"`}{\glqq} +\declare@shorthand{german}{"'}{\grqq} +\declare@shorthand{german}{"<}{\flqq} +\declare@shorthand{german}{">}{\frqq} +% \end{macrocode} +% discretionary commands +% \begin{macrocode} +\declare@shorthand{german}{"c}{\textormath{\bbl@disc ck}{c}} +\declare@shorthand{german}{"C}{\textormath{\bbl@disc CK}{C}} +\declare@shorthand{german}{"F}{\textormath{\bbl@disc F{FF}}{F}} +\declare@shorthand{german}{"l}{\textormath{\bbl@disc l{ll}}{l}} +\declare@shorthand{german}{"L}{\textormath{\bbl@disc L{LL}}{L}} +\declare@shorthand{german}{"m}{\textormath{\bbl@disc m{mm}}{m}} +\declare@shorthand{german}{"M}{\textormath{\bbl@disc M{MM}}{M}} +\declare@shorthand{german}{"n}{\textormath{\bbl@disc n{nn}}{n}} +\declare@shorthand{german}{"N}{\textormath{\bbl@disc N{NN}}{N}} +\declare@shorthand{german}{"p}{\textormath{\bbl@disc p{pp}}{p}} +\declare@shorthand{german}{"P}{\textormath{\bbl@disc P{PP}}{P}} +\declare@shorthand{german}{"r}{\textormath{\bbl@disc r{rr}}{r}} +\declare@shorthand{german}{"R}{\textormath{\bbl@disc R{RR}}{R}} +\declare@shorthand{german}{"t}{\textormath{\bbl@disc t{tt}}{t}} +\declare@shorthand{german}{"T}{\textormath{\bbl@disc T{TT}}{T}} +% \end{macrocode} +% We need to treat |"f| a bit differently in order to preserve the +% ff-ligature. +% \changes{germanb-2.6f}{1998/06/15}{Copied the coding for \texttt{"f} +% from german.dtx version 2.5d} +% \begin{macrocode} +\declare@shorthand{german}{"f}{\textormath{\bbl@discff}{f}} +\def\bbl@discff{\penalty\@M + \afterassignment\bbl@insertff \let\bbl@nextff= } +\def\bbl@insertff{% + \if f\bbl@nextff + \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi + {\relax\discretionary{ff-}{f}{ff}\allowhyphens}{f\bbl@nextff}} +\let\bbl@nextff=f +% \end{macrocode} +% and some additional commands: +% \begin{macrocode} +\declare@shorthand{german}{"-}{\nobreak\-\bbl@allowhyphens} +\declare@shorthand{german}{"|}{% + \textormath{\penalty\@M\discretionary{-}{}{\kern.03em}% + \allowhyphens}{}} +\declare@shorthand{german}{""}{\hskip\z@skip} +\declare@shorthand{german}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{german}{"=}{\penalty\@M-\hskip\z@skip} +% \end{macrocode} +% +% \begin{macro}{\mdqon} +% \begin{macro}{\mdqoff} +% \begin{macro}{\ck} +% All that's left to do now is to define a couple of commands +% for reasons of compatibility with \file{german.sty}. +% \changes{germanb-2.6f}{1998/06/07}{Now use \cs{shorthandon} and +% \cs{shorthandoff}} +% \begin{macrocode} +\def\mdqon{\shorthandon{"}} +\def\mdqoff{\shorthandoff{"}} +\def\ck{\allowhyphens\discretionary{k-}{k}{ck}\allowhyphens} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% 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{germanb-2.6d}{1996/11/02}{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 diff --git a/Master/texmf-dist/source/generic/babel/greek.dtx b/Master/texmf-dist/source/generic/babel/greek.dtx new file mode 100644 index 00000000000..4f198cdee56 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/greek.dtx @@ -0,0 +1,864 @@ +% \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{636} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{greek.dtx} +%</dtx> +%<code>\ProvidesLanguage{greek} +%\fi +%\ProvidesFile{greek.dtx} + [2005/03/30 v1.3l Greek support from the babel system] +%\iffalse +%% File `greek.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 -- 2005 +%% by Johannes Braams, TeXniek +% +%% Greek language Definition File +%% Copyright (C) 1997, 2005 +%% by Apostolos Syropoulos +%% Johannes Braams, TeXniek +% +%% Please report errors to: Apostolos Syropoulos +%% apostolo at platon.ee.duth.gr or +%% apostolo at obelix.ee.duth.gr +%% (or J.L. Braams <babel at braams.cistron.nl) +% +% This file is part of the babel system, it provides the source +% code for the greek language definition file. The original +% version of this file was written by Apostolos Syropoulos. +% It was then enhanced by adding code from kdgreek.sty from David +% Kastrup <dak@neuroinformatik.ruhr-uni-bochum.de> with his +% consent. +%<*filedriver> +\documentclass{ltxdoc} +\newcommand*{\TeXhax}{\TeX hax} +\newcommand*{\babel}{\textsf{babel}} +\newcommand*{\langvar}{$\langle \mathit lang \rangle$} +\newcommand*{\note}[1]{} +\newcommand*{\Lopt}[1]{\textsf{#1}} +\newcommand*{\file}[1]{\texttt{#1}} +\newcommand*{\pkg}[1]{\texttt{#1}} +\begin{document} + \DocInput{greek.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{greek.dtx} +% +% \changes{greek-1.0b}{1996/07/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{greek-1.0b}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning} +% \changes{greek-1.2}{1997/10/28}{Classical Greek is now a dialect} +% \changes{greek-1.2b}{1997/11/01}{Classical Greek is now called +% ``Polutoniko'' Greek. The previous name was at least misleading} +% \changes{greek-1.2c}{1998/06/26}{This version conforms to version +% 2.0 of the CB fonts and consequently we added a few new +% symbol-producing commands} +% \changes{greek-1.3a}{1998/07/04}{polutoniko is now an attribute to +% Greek, no longer a `dialect'} +% +% \section{The Greek language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. The original author is Apostolos Syropoulos +% (\texttt{apostolo@platon.ee.duth.gr}), code from +% \file{kdgreek.sty} by David Kastrup +% \texttt{dak@neuroinformatik.ruhr-uni-bochum.de} was used to +% enhance the support for typesetting greek texts.} defines all the +% language definition macros for the Greek language, i.e., +% as it used today with only one accent, and the attribute +% $\pi o\lambda\upsilon\tau o\nu\kappa\acute{o}$ (``Polutoniko'') +% for typesetting greek text with all accents. This separation +% arose out of the need to simplify things, for only very few +% people will be really interested to typeset polytonic Greek +% text. +% +% \DescribeMacro\greektext +% \DescribeMacro\latintext +% The commands |\greektext| and |\latintext| can be used to switch +% to greek or latin fonts. These are declarations. +% +% \DescribeMacro\textgreek +% \DescribeMacro\textlatin +% The commands |\textgreek| and |\textlatin| both take one argument +% which is then typeset using the requested font encoding. +% \DescribeMacro\textol +% The command |\greekol| switches to the greek outline font family, +% while the command |\textol| typests a short text in outline font. +% A number of extra greek characters are made available through the +% added text commands |\stigma|, |\qoppa|, |\sampi|, |\ddigamma|, +% |\Digamma|, |\euro|, |\permill|, and |\vardigamma|. +% +% \subsection{Typing conventions} +% +% Entering greek text can be quite difficult because of the many +% diacritical signs that need to be added for various purposes. +% The fonts that are used to typeset Greek make this a lot +% easier by offering a lot of ligatures. But in order for this to +% work, some characters need to be considered as letters. These +% characters are |<|, |>|, |~|, |`|, |'|, |"| and +% \verb=|=. Therefore their |\lccode| is changed when Greek is in +% effect. In order to let |\uppercase| give correct results, the +% |\uccode| of these characters is set to a non-existing character +% to make them disappear. Of course not all characters are needed +% when typesetting ``modern'' $\mu o\nu o\tau o\nu +% \iota\kappa\acute{o}$. In that case we only need the |'| and |"| +% symbols which are treated in the proper way. +% +% \subsection{Greek numbering} +% +% The Greek alphabetical numbering system, like the Roman one, is +% still used in everyday life for short enumerations. Unfortunately +% most Greeks don't know how to write Greek numbers bigger than 20 or +% 30. Nevertheless, in official editions of the last century and +% beginning of this century this numbering system was also used for +% dates and numbers in the range of several thousands. Nowadays +% this numbering system is primary used by the Eastern Orthodox +% Church and by certain scholars. It is hence necessary to be able +% to typeset any Greek numeral up to \hbox{999\,999}. Here are the +% conventions: +% \begin{itemize} +% \item There is no Greek numeral for any number less than or equal +% to $0$. +% \item Numbers from $1$ to $9$ are denoted by letters alpha, beta, +% gamma, delta, epsilon, stigma, zeta, eta, theta, followed by a +% mark similar to the mathematical symbol ``prime''. (Nowadays +% instead of letter stigma the digraph sigma tau is used for number +% $6$. Mainly because the letter stigma is not always available, so +% people opt to write down the first two letters of its name as an +% alternative. In our implementation we produce the letter stigma, +% not the digraph sigma tau.) +% \item Decades from $10$ to $90$ are denoted by letters iota, +% kappa, lambda, mu, nu, xi, omikron, pi, qoppa, again followed by +% the numeric mark. The qoppa used for this purpose has a special +% zig-zag form, which doesn't resemble at all the original +% `q'-like qoppa. +% \item Hundreds from $100$ to $900$ are denoted by letters rho, +% sigma, tau, upsilon, phi, chi, psi, omega, sampi, followed by the +% numeric mark. +% \item Any number between $1$ and $999$ is obtained by a group of +% letters denoting the hundreds decades and units, followed by a +% numeric mark. +% \item To denote thousands one uses the same method, but this time +% the mark is placed in front of the letter, and under the baseline +% (it is inverted by 180 degrees). When a group of letters denoting +% thousands is followed by a group of letters denoting a number +% under $1000$, then both marks are used. +% \end{itemize} +% +% Using these conventions one obtains numbers up to \hbox{999\,999}. +% \DescribeMacro{\greeknumeral} +% The command |\greeknumeral| makes it possible to typeset Greek +% numerals. There is also an +% \DescribeMacro{\Greeknumeral} +% ``uppercase'' version of this macro: |\Greeknumeral|. +% +% Another system which was in wide use only in Athens, could +% express any positive number. This system is implemented in +% package |athnum|. +% +% \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{greek-1.0b}{1996/11/02}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit\CurrentOption{captions\CurrentOption} +% \end{macrocode} +% When the option \Lopt{polutonikogreek} was used, redefine +% |\CurrentOption| to prevent problems later on. +% \begin{macrocode} +\gdef\CurrentOption{greek}% +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{greek} could be an `unknown' language in +% which case we have to make it known. So we check for the +% existence of |\l@greek| to see whether we have to do +% something here. +% +% \begin{macrocode} +\ifx\l@greek\@undefined + \@nopatterns{greek} + \adddialect\l@greek0\fi +% \end{macrocode} +% +% Now we declare the |polutoniko| language attribute. +% \begin{macrocode} +\bbl@declare@ttribute{greek}{polutoniko}{% +% \end{macrocode} +% This code adds the expansion of |\extraspolutonikogreek| to +% |\extrasgreek| and changes the definition of |\today| for Greek +% to produce polytonic month names. +% \begin{macrocode} + \expandafter\addto\expandafter\extrasgreek + \expandafter{\extraspolutonikogreek}% + \let\captionsgreek\captionspolutonikogreek + \let\gr@month\gr@c@month +% \end{macrocode} +% We need to take some extra precautions in order not to break +% older documents which still use the old \Lopt{polutonikogreek} +% option. +% \changes{greek-1.3f}{1999/09/29}{Added some code to make older +% documents work} +% \changes{greek-1.3g}{2000/02/04}{\cs{noextraspolutonikogreek} was +% missing} +% \begin{macrocode} + \let\l@polutonikogreek\l@greek + \let\datepolutonikogreek\dategreek + \let\extraspolutonikogreek\extrasgreek + \let\noextraspolutonikogreek\noextrasgreek + } +% \end{macrocode} +% +% Typesetting Greek texts implies that a special set of fonts needs +% to be used. The current support for greek uses the |cb| fonts +% created by Claudio Beccari\footnote{Apostolos Syropoulos wishes +% to thank him for his patience, collaboration, cooments and +% suggestions.}. The |cb| fonts provide all sorts of \textit{font +% combinations}. In order to use these fonts we define the Local +% GReek encoding (LGR, see the file \file{greek.fdd}). We make sure +% that this encoding is known to \LaTeX, and if it isn't we abort. +% \changes{greek-1.2a}{1997/10/31}{filename \file{lgrenc.def} now +% lowercase} +% \begin{macrocode} +\InputIfFileExists{lgrenc.def}{% + \message{Loading the definitions for the Greek font encoding}}{% + \errhelp{I can't find the lgrenc.def file for the Greek fonts}% + \errmessage{Since I do not know what the LGR encoding means^^J + I can't typeset Greek.^^J + I stop here, while you get a suitable lgrenc.def file}\@@end + } +% \end{macrocode} +% +% Now we define two commands that offer the possibility to switch +% between Greek and Roman encodings. +% +% \begin{macro}{\greektext} +% The command |\greektext| will switch from Latin font encoding to +% the Greek font encoding. This assumes that the `normal' font +% encoding is a Latin one. This command is a \emph{declaration}, +% for shorter pieces of text the command |\textgreek| should be +% used. +% \begin{macrocode} +\DeclareRobustCommand{\greektext}{% + \fontencoding{LGR}\selectfont + \def\encodingdefault{LGR}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textgreek} +% This command takes an argument which is then typeset using the +% requested font encoding. In order to avoid many encoding switches +% it operates in a local scope. +% \changes{greek-1.0b}{1996/09/23}{Added a level of braces to keep +% encoding change local} +% \changes{greek-1.3k}{2003/03/19}{Added \cs{leavevmode} as was done +% with \cs{latintext}} +% \begin{macrocode} +\DeclareRobustCommand{\textgreek}[1]{\leavevmode{\greektext #1}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textol} +% A last aspect of the set of fonts provided with this version of +% support for typesetting Greek texts is that it contains an +% outline family. In order to make it available we define the command +% |\textol|. +% \begin{macrocode} +\def\outlfamily{\usefont{LGR}{cmro}{m}{n}} +\DeclareTextFontCommand{\textol}{\outlfamily} +% \end{macrocode} +% \end{macro} +% +% The next step consists in defining commands to switch to (and +% from) the Greek language. +% +% \begin{macro}{\greekhyphenmins} +% This macro is used to store the correct values of the hyphenation +% parameters |\lefthyphenmin| and |\righthyphenmin|. +% \changes{greek-1.3h}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +% Yannis Haralambous has suggested this value +\providehyphenmins{\CurrentOption}{\@ne\@ne} +% \end{macrocode} +% \end{macro} +% +% \changes{greek-1.1e}{1997/10/12}{Added caption name for proof} +% \changes{greek-1.3d}{1999/08/28}{Fixed typo, \texttt{bl'epe ep'ishc} +% instead of \texttt{bl'pe ep'ishc}} +% +% \begin{macro}{\captionsgreek} +% The macro |\captionsgreek| defines all strings used in the +% four standard document classes provided with \LaTeX. +% \changes{greek-1.3h}{2000/09/20}{Added \cs{glossaryname}} +% \changes{greek-1.3i}{2000/10/02}{The final sigma in all names appears +% as `s' instead of `c'.} +% \begin{macrocode} +\addto\captionsgreek{% + \def\prefacename{Pr'ologos}% + \def\refname{Anafor'es}% + \def\abstractname{Per'ilhyh}% + \def\bibname{Bibliograf'ia}% + \def\chaptername{Kef'alaio}% + \def\appendixname{Par'arthma}% + \def\contentsname{Perieq'omena}% + \def\listfigurename{Kat'alogos Sqhm'atwn}% + \def\listtablename{Kat'alogos Pin'akwn}% + \def\indexname{Euret'hrio}% + \def\figurename{Sq'hma}% + \def\tablename{P'inakas}% + \def\partname{M'eros}% + \def\enclname{Sunhmm'ena}% + \def\ccname{Koinopo'ihsh}% + \def\headtoname{Pros}% + \def\pagename{Sel'ida}% + \def\seename{bl'epe}% + \def\alsoname{bl'epe ep'ishs}% + \def\proofname{Ap'odeixh}% + \def\glossaryname{Glwss'ari}% + } +% \end{macrocode} +% \end{macro} +% \changes{greek-1.2}{1997/10/28}{Added caption names for +% \cs{polutonikogreek}} +% \changes{greek-1.3d}{1999/08/28}{Fixed typo, \texttt{bl'epe >ep'ishc} +% instead of \texttt{bl'pe >ep'ishc}} +% +% \begin{macro}{\captionspolutonikogreek} +% For texts written in the $\pi o\lambda\upsilon\tau +% o\nu\kappa\acute{o}$ (polytonic greek) the translations are +% the same as above, but some words are spelled differently. For +% now we just add extra definitions to |\captionsgreek| in order to +% override the earlier definitions. +% \begin{macrocode} +\let\captionspolutonikogreek\captionsgreek +\addto\captionspolutonikogreek{% + \def\refname{>Anafor`es}% + \def\indexname{E<uret'hrio}% + \def\figurename{Sq~hma}% + \def\headtoname{Pr`os}% + \def\alsoname{bl'epe >ep'ishs}% + \def\proofname{>Ap'odeixh}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\gr@month} +% \changes{greek-1.1e}{1997/10/12}{Macro added} +% \begin{macro}{\dategreek} +% The macro |\dategreek| redefines the command |\today| to +% produce greek dates. The name of the month is now produced +% by the macro |\gr@month| since it is needed in the definition +% of the macro |\Grtoday|. +% \changes{greek-1.1a}{1997/03/03}{Fixed typo, \texttt{Oktwbr'iou} +% instead of \texttt{Oktobr'iou}} +% \changes{greek-1.1d}{1997/10/12}{Macro \cs{gr@month} now produces +% the name of the month} +% \changes{greek-1.2a}{1997/10/31}{Use \cs{edef} to define \cs{today}} +% \changes{greek-1.2b}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \begin{macrocode} +\def\gr@month{% + \ifcase\month\or + Ianouar'iou\or Febrouar'iou\or Mart'iou\or April'iou\or + Ma'"iou\or Ioun'iou\or Ioul'iou\or Augo'ustou\or + Septembr'iou\or Oktwbr'iou\or Noembr'iou\or Dekembr'iou\fi} +\def\dategreek{% + \def\today{\number\day \space \gr@month\space \number\year}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\gr@c@greek} +% \changes{greek-1.2}{1997/10/28}{Added macro \cs{gr@cl@month}} +% \changes{greek-1.2}{1997/10/28}{Added macro +% \cs{datepolutonikogreek}} +% \changes{greek-1.3a}{1997/10/28}{removed macro +% \cs{datepolutonikogreek}} +% \begin{macrocode} +\def\gr@c@month{% + \ifcase\month\or >Ianouar'iou\or + Febrouar'iou\or Mart'iou\or >April'iou\or Ma"'iou\or + >Ioun'iou\or >Ioul'iou\or A>ugo'ustou\or Septembr'iou\or + >Oktwbr'iou\or Noembr'iou\or Dekembr'iou\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Grtoday} +% \changes{greek-1.1}{1996/10/28}{Added macro \cs{Grtoday}} +% The macro |\Grtoday| produces the current date, only that the +% month and the day are shown as greek numerals instead of arabic +% as it is usually the case. +% \begin{macrocode} +\def\Grtoday{% + \expandafter\Greeknumeral\expandafter{\the\day}\space + \gr@c@month \space + \expandafter\Greeknumeral\expandafter{\the\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasgreek} +% \begin{macro}{\noextrasgreek} +% The macro |\extrasgreek| will perform all the extra definitions +% needed for the Greek language. The macro |\noextrasgreek| is used +% to cancel the actions of |\extrasgreek|. For the moment these +% macros switch the fontencoding used and the definition of the +% internal macros |\@alph| and |\@Alph| because in Greek we do use +% the Greek numerals. +% +% \begin{macrocode} +\addto\extrasgreek{\greektext} +\addto\noextrasgreek{\latintext} +% \end{macrocode} +% +% \begin{macro}{\gr@ill@value} +% When the argument of |\greeknumeral| has a value outside of the +% acceptable bounds ($0 < x < 999999$) a warning will be issued +% (and nothing will be printed). +% \begin{macrocode} +\def\gr@ill@value#1{% + \PackageWarning{babel}{Illegal value (#1) for greeknumeral}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\anw@true} +% \begin{macro}{\anw@false} +% \begin{macro}{\anw@print} +% When a a large number with three \emph{trailing} zero's is to be +% printed those zeros \emph{and} the numeric mark need to be +% discarded. As each `digit' is processed by a separate macro +% \emph{and} because the processing needs to be expandable we need +% some helper macros that help remember to \emph{not} print the +% numeric mark (|\anwtonos|). +% +% The command |\anw@false| switches the printing of the numeric +% mark off by making |\anw@print| expand to nothing. The command +% |\anw@true| (re)enables the printing of the numeric marc. These +% macro's need to be robust in order to prevent improper expansion +% during writing to files or during |\uppercase|. +% \begin{macrocode} +\DeclareRobustCommand\anw@false{% + \DeclareRobustCommand\anw@print{}} +\DeclareRobustCommand\anw@true{% + \DeclareRobustCommand\anw@print{\anwtonos}} +\anw@true +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\greeknumeral} +% The command |\greeknumeral| needs to be \emph{fully} expandable +% in order to get the right information in auxiliary +% files. Therefore we use a big |\if|-construction to check the +% value of the argument and start the parsing at the right level. +% \begin{macrocode} +\def\greeknumeral#1{% +% \end{macrocode} +% If the value is negative or zero nothing is printed and a warning +% is issued. +% \changes{greek-1.3b}{1999/04/03}{Added \cs{expandafter} and +% \cs{number} (PR3000) in order to make a counter an acceptable +% argument} +% \begin{macrocode} + \ifnum#1<\@ne\space\gr@ill@value{#1}% + \else + \ifnum#1<10\expandafter\gr@num@i\number#1% + \else + \ifnum#1<100\expandafter\gr@num@ii\number#1% + \else +% \end{macrocode} +% We use the available shorthands for 1.000 (|\@m|) and 10.000 +% (|\@M|) to save a few tokens. +% \begin{macrocode} + \ifnum#1<\@m\expandafter\gr@num@iii\number#1% + \else + \ifnum#1<\@M\expandafter\gr@num@iv\number#1% + \else + \ifnum#1<100000\expandafter\gr@num@v\number#1% + \else + \ifnum#1<1000000\expandafter\gr@num@vi\number#1% + \else +% \end{macrocode} +% If the value is too large, nothing is printed and a warning +% is issued. +% \begin{macrocode} + \space\gr@ill@value{#1}% + \fi + \fi + \fi + \fi + \fi + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Greeknumeral} +% The command |\Greeknumeral| prints uppercase greek numerals. +% The parsing is performed by the macro |\greeknumeral|. +% \begin{macrocode} +\def\Greeknumeral#1{% + \expandafter\MakeUppercase\expandafter{\greeknumeral{#1}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\greek@alph} +% \begin{macro}{\greek@Alph} +% In the previous release of this language definition the +% commands |\greek@aplh| and |\greek@Alph| were kept just for +% reasons of compatibility. Here again they become meaningful macros. +% They are definited in a way that even page numbering with greek +% numerals is possible. Since the macros |\@alph| and |\@Alph| will +% lose their original meaning while the Greek option is active, we +% must save their original value. +% macros |\@alph| +% \begin{macrocode} +\let\latin@alph\@alph +\let\latin@Alph\@Alph +% \end{macrocode} +% Then we define the Greek versions; the additional |\expandafter|s +% are needed in order to make sure the table of contents will be +% correct, e.g., when we have appendixes. +% \begin{macrocode} +\def\greek@alph#1{\expandafter\greeknumeral\expandafter{\the#1}} +\def\greek@Alph#1{\expandafter\Greeknumeral\expandafter{\the#1}} +% \end{macrocode} +% +% Now we can set up the switching. +% \changes{greek-1.1a}{1997/03/03}{removed two superfluous @'s which +% made \cs{@alph} undefined} +% \begin{macrocode} +\addto\extrasgreek{% + \let\@alph\greek@alph + \let\@Alph\greek@Alph} +\addto\noextrasgreek{% + \let\@alph\latin@alph + \let\@Alph\latin@Alph} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\greek@roman} +% \begin{macro}{\greek@Roman} +% \changes{greek-1.2e}{1999/04/16}{Moved redefinition of \cs{@roman} +% back to the language specific file} +% \changes{greek-1.3d}{1999/08/27}{\cs{@roman} and \cs{@Roman} need to +% be added to \cs{extraspolutonikogreek}} +% \changes{greek-1.3e}{1999/09/24}{\cs{@roman} and \cs{@Roman} need +% \emph{not} be in \cs{extraspolutonikogreek} when they are already +% in \cs{extrasgreek}} +% +% To prevent roman numerals being typeset in greek letters we need +% to adopt the internal \LaTeX\ commands |\@roman| and +% |\@Roman|. \textbf{Note that this may cause errors where +% |\@roman| ends up in a situation where it needs to be expanded; +% problems are known to exist with the AMS document classes.} +% \begin{macrocode} +\let\latin@roman\@roman +\let\latin@Roman\@Roman +\def\greek@roman#1{\textlatin{\latin@roman{#1}}} +\def\greek@Roman#1{\textlatin{\latin@Roman{#1}}} +\addto\extrasgreek{% + \let\@roman\greek@roman + \let\@Roman\greek@Roman} +\addto\noextrasgreek{% + \let\@roman\latin@roman + \let\@Roman\latin@Roman} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\greek@amp} +% \begin{macro}{\ltx@amp} +% The greek fonts do not contain an ampersand, so the \LaTeX\ +% command |\&| dosn't give the expected result if we do not do +% something about it. +% \changes{greek-1.2f}{1999/04/25}{Now switch the definition of +% \cs{\&} from \cs{extrasgreek}} +% \changes{greek-1.3c}{1999/05/17}{Added a missing opening brace} +% \begin{macrocode} +\let\ltx@amp\& +\def\greek@amp{\textlatin{\ltx@amp}} +\addto\extrasgreek{\let\&\greek@amp} +\addto\noextrasgreek{\let\&\ltx@amp} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% What is left now is the definition of a set of macros to produce +% the various digits. +% \begin{macro}{\gr@num@i} +% \begin{macro}{\gr@num@ii} +% \begin{macro}{\gr@num@iii} +% \changes{greek-1.2b}{1997/11/13}{No longer use \cs{\let} in the +% expansion of the \cs{gr@num@x} macros as they ned to be +% expandable} +% As there is no representation for $0$ in this system the zeros +% are simply discarded. When we have a large number with three +% \emph{trailing} zero's also the numeric mark is discarded. +% Therefore these macros need to pass the information to each other +% about the (non-)translation of a zero. +% \begin{macrocode} +\def\gr@num@i#1{% + \ifcase#1\or a\or b\or g\or d\or e\or \stigma\or z\or h\or j\fi + \ifnum#1=\z@\else\anw@true\fi\anw@print} +\def\gr@num@ii#1{% + \ifcase#1\or i\or k\or l\or m\or n\or x\or o\or p\or \qoppa\fi + \ifnum#1=\z@\else\anw@true\fi\gr@num@i} +\def\gr@num@iii#1{% + \ifcase#1\or r\or sv\or t\or u\or f\or q\or y\or w\or \sampi\fi + \ifnum#1=\z@\anw@false\else\anw@true\fi\gr@num@ii} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\gr@num@iv} +% \begin{macro}{\gr@num@v} +% \begin{macro}{\gr@num@vi} +% The first three `digits' always have the numeric mark, except +% when one is discarded because it's value is zero. +% \begin{macrocode} +\def\gr@num@iv#1{% + \ifnum#1=\z@\else\katwtonos\fi + \ifcase#1\or a\or b\or g\or d\or e\or \stigma\or z\or h\or j\fi + \gr@num@iii} +\def\gr@num@v#1{% + \ifnum#1=\z@\else\katwtonos\fi + \ifcase#1\or i\or k\or l\or m\or n\or x\or o\or p\or \qoppa\fi + \gr@num@iv} +\def\gr@num@vi#1{% + \katwtonos + \ifcase#1\or r\or sv\or t\or u\or f\or q\or y\or w\or \sampi\fi + \gr@num@v} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\greek@tilde} +% \changes{greek-1.0c}{1997/02/19}{Added command} +% In greek typesetting we need a number of characters with more +% than one accent. In the underlying family of fonts (the +% |cb| fonts) this is solved using Knuth's ligature +% mechanism. +% Characters we need to have ligatures with are the tilde, the +% acute and grave accent characters, the rough and smooth breathings, +% the subscript, and the double quote character. +% In text input the |~| is normaly used to produce an +% unbreakable space. The command |\~| normally produces a tilde +% accent. For polytonic Greek we change the definition of |\~| +% to produce the tilde character itself, making sure it has category +% code 12. +% \changes{greek-1.3k}{2003/04/10}{Make sure the character `!' is not +% active during the definition of \cs{greek@tilde}} +% \begin{macrocode} +\begingroup + \@ifundefined{active@char\string!}{}{\catcode`!=12\relax} + \catcode`\~=12 + \lccode`\!=`\~ + \lowercase{\def\x{\endgroup + \def\greek@tilde{!}}\x} +\addto\extraspolutonikogreek{% + \babel@save\~\let\~\greek@tilde} +% \end{macrocode} +% \end{macro} +% In order to get correct hyphenation we need to set the lower case +% code of a number of characters. The `v' character has a special +% usage for the |cb| fonts: in fact this ligature mechanism detects +% the end of a word and assures that a final sigma is typeset with +% the proper sign wich is different from that of an initial or +% medial sigma; the `v 'after an \textit{isolated} sigma fools +% the ligature mechanism in order to typeset $\sigma$ in place of +% $\varsigma$. Because of this we make sure its lowercase code is +% not changed. For ``modern'' greek we have to deal only with |'| +% and |"| and so things are easy. +% \changes{greek-1.1c}{1997/04/30}{fixed two typos} +% \changes{greek-1.1e}{1997/10/12}{Added lowercase code for v} +% \changes{greek-1.2}{1997/10/28}{Definitions for ``modern'' Greek are +% now the definitions of ``Polutoniko'' Greek} +% \changes{greek-1.2}{1997/10/28}{Added lowercase codes for ``modern'' +% greek} +% \changes{greek-1.3e}{1999/09/24}{\cs{extrasgreek} and +% \cs{extraspolutonikogreek} should be complementary} +% \begin{macrocode} +\addto\extrasgreek{% + \babel@savevariable{\lccode`v}\lccode`v=`v% + \babel@savevariable{\lccode`\'}\lccode`\'=`\'% + \babel@savevariable{\lccode`\"}\lccode`\"=`\"} +\addto\extraspolutonikogreek{% + \babel@savevariable{\lccode`\<}\lccode`\<=`\<% + \babel@savevariable{\lccode`\>}\lccode`\>=`\>% + \babel@savevariable{\lccode`\~}\lccode`\~=`\~% + \babel@savevariable{\lccode`\|}\lccode`\|=`\|% + \babel@savevariable{\lccode`\`}\lccode`\`=`\`} +% \end{macrocode} +% And in order to get rid of all accents and breathings when a +% string is |\uppercase|d we also change a number of uppercase +% codes. +% \changes{greek-1.1b}{1997/03/06}{Added setting of \cs{uccode}s +% (after \file{kdgreek.sty})} +% \changes{greek-1.1e}{1997/10/12}{Added uppercase code for special +% letter ``v''. Uppercase code for accents is now \texttt{9f}, +% instead of \texttt{ff}} +% \changes{greek-1.2}{1997/10/28}{Added uppercase codes for ``modern'' +% Greek. The old codes are now for ``Polutoniko'' Greek} +% \changes{greek-1.3e}{1999/09/24}{\cs{extrasgreek} and +% \cs{extraspolutonikogreek} should be complementary} +% {\catcode`|=12\relax\gdef\indexbar{\cs{|}}} +% \changes{greek-1.3g}{1999/11/17}{uc code of \indexbar{} is now just +% \indexbar{} to reflect recent changes in the cb fonts} +% \changes{greek-1.3i}{2000/10/02}{uc code of `v' is switched to V +% so that mixed text appears correctly in headers.} +% \changes{greek-1.3j}{2001/02/03}{Because other languages might +% make the caret active, we can't use the double caret notation +% here} +% \begin{macrocode} +\addto\extrasgreek{% + \babel@savevariable{\uccode`\"}\uccode`\"=`\"% + \babel@savevariable{\uccode`\'}\uccode`\'=159} %% 159 == ^^9f +\addto\extraspolutonikogreek{% + \babel@savevariable{\uccode`\~}\uccode`\~=159% + \babel@savevariable{\uccode`\>}\uccode`\>=159% + \babel@savevariable{\uccode`\<}\uccode`\<=159% + \babel@savevariable{\uccode`\|}\uccode`\|=`\|% + \babel@savevariable{\uccode`\`}\uccode`\`=159} +% \end{macrocode} +% For this to work we make the character |^^9f| a shorthand that +% expands to nothing. In order for this to work we need to make a +% character look like |^^9f| in \TeX's eyes. The trick is to have +% another character and assign it a different lowercase code. The +% execute the macros needed in a |\lowercase| environment. Usually +% the tile |~| character is used for such purposes. Before we do +% this we save it's original lowercase code to restore it once +% we're done. +% \changes{greek-1.1b}{1997/03/06}{Added shorthand for \cs{char255}} +% \changes{greek-1.1e}{1997/10/12}{Shorthand is changed. Active +% character is now \cs{char159}} +% \changes{greek-1.2a}{1997/10/31}{Need shorthand to exist for +% ``monotoniko'' Greek, not ``polutoniko'' Greek} +% \changes{greek-1.3j}{2001/02/03}{Ues the tilde as an alias for +% character 159} +% \begin{macrocode} +\@tempcnta=\lccode`\~ +\lccode`\~=159 +\lowercase{% + \initiate@active@char{~}% + \declare@shorthand{greek}{~}{}} +\lccode`\~=\@tempcnta +% \end{macrocode} +% We can also make the tilde character itself expand to a tilde with +% category code 12 to make the typing of texts easier. +% \changes{greek-1.1b}{1997/03/06}{Made tilde expand to a tilde with +% \cs{catcode 12}} +% \begin{macrocode} +\addto\extraspolutonikogreek{\languageshorthands{greek}}% +\declare@shorthand{greek}{~}{\greek@tilde} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% +% \changes{greek-1.1c}{1997/03/10}{Added a couple of symbols, needed +% for \cs{greeknumeral}} +% \changes{greek-1.1e}{1997/10/12}{Most symbols are removed and are +% now defined in package grsymb} +% \changes{greek-1.2c}{1998/06/26}{Package grsymb has been eliminated +% because the CB fonts v2.0 do not inlcude certain symbols and so +% the remaining symbol definitions have been moved here} +% We now define a few symbols which are used in the typesetting of +% greek numerals, as well as some other symbols which are usefull, +% such as the $\epsilon\upsilon\rho\omega$ symbol, etc. +% \begin{macrocode} +\DeclareTextCommand{\anwtonos}{LGR}{\char"FE\relax} +\DeclareTextCommand{\katwtonos}{LGR}{\char"FF\relax} +\DeclareTextCommand{\qoppa}{LGR}{\char"12\relax} +\DeclareTextCommand{\stigma}{LGR}{\char"06\relax} +\DeclareTextCommand{\sampi}{LGR}{\char"1B\relax} +\DeclareTextCommand{\Digamma}{LGR}{\char"C3\relax} +\DeclareTextCommand{\ddigamma}{LGR}{\char"93\relax} +\DeclareTextCommand{\vardigamma}{LGR}{\char"07\relax} +\DeclareTextCommand{\euro}{LGR}{\char"18\relax} +\DeclareTextCommand{\permill}{LGR}{\char"19\relax} +% \end{macrocode} +% +% Since the |~| cannot be used to produce an unbreakable white +% space we must redefine at least the commands |\fnum@figure| and +% |\fnum@table| so they do not produce a |~| instead of white +% space. +% \changes{greek-1.3l}{2004/02/19}{Commented these lines out as this +% change has made it into \LaTeX{} itself.} +% \begin{macrocode} +%\def\fnum@figure{\figurename\nobreakspace\thefigure} +%\def\fnum@table{\tablename\nobreakspace\thetable} +% \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{greek-1.0b}{1996/11/02}{Now use \cs{ldf@finish} to wrap up} +% \begin{macrocode} +\ldf@finish{\CurrentOption} +%</code> +% \end{macrocode} +% +% \Finale +%\endinput +%% \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 \~} +%% diff --git a/Master/texmf-dist/source/generic/babel/greek.fdd b/Master/texmf-dist/source/generic/babel/greek.fdd new file mode 100644 index 00000000000..c567aa5d52c --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/greek.fdd @@ -0,0 +1,349 @@ +% \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{105} +% +% \iffalse This is a META comment +% +%<*fdd> +\ProvidesFile{greek.fdd} +%</fdd> +% +%<LGRenc, >\ProvidesFile{lgrenc.def} +%<LGRcmr, >\ProvidesFile{lgrcmr.fd} +%<LGRcmro, >\ProvidesFile{lgrcmro.fd} +%<LGRcmtt, >\ProvidesFile{lgrcmtt.fd} +%<LGRcmss, >\ProvidesFile{lgrcmss.fd} +%<LGRlcmss, >\ProvidesFile{lgrlcmss.fd} +%<LGRlcmtt, >\ProvidesFile{lgrlcmtt.fd} + [2001/01/30 v2.2e % +%<LGRenc, > Greek Encoding] +%<LGRcmr, > Greek Computer Modern] +%<LGRcmro, > Greek Computer Modern Outline] +%<LGRcmtt, > Greek Computer Modern Typewriter] +%<LGRcmss, > Greek Computer Modern Sans Serif] +%<LGRlcmss, > Greek Computer Modern Sans Serif slide sizes] +%<LGRlcmtt, > Greek Computer Modern Typewriter slide sizes] +%<*fdd> +] +%</fdd> +% +%<*driver> +\documentclass{ltxdoc} +\GetFileInfo{greek.fdd} +\providecommand\dsc{\expandafter{\normalfont\scshape docstrip}} +\title{The file \texttt{greek.fdd} for use with + \LaTeXe.\thanks{This file has version + number \fileversion, dated \filedate.}} +\date{\filedate} +\author{Claudio Beccari, Apostolos Syropoulos and Johannes Braams} +\newcommand*\Lopt[1]{\textsf{#1}} +\begin{document} +\maketitle +\DocInput{greek.fdd} +\end{document} +%</driver> +% +%\fi +% +% \changes{greekfdd-2.0}{1997/10/12}{Changed to use Claudio Beccari's +% fonts} +% \changes{greekfdd-2.1}{1997/10/31}{Produce files with lowercase +% names} +% \changes{greekfdd-2.2}{1998/05/16}{Added support for CB fonts v2.xx} +% +% \section{Introduction} +% +% The file `greek.fdd' provides font definitions for typesetting +% greek texts. This version of the file has been updated, since +% now the official fonts for the \Lopt{greek} option of the +% \textsf{babel} package are the |cb| fonts. +% +% \StopEventually{} +% +% \section{The \texttt{docstrip} modules} +% The following modules are used to direct \texttt{docstrip} in +% generating external files: +% \begin{center} +% \begin{tabular}{ll} +% driver & produce a documentation driver file \\ +% LGRenc & The encoding definition file\\ +% LGRcmr & The Roman font shapes\\ +% LGRcmro & The Outline Roman font shapes\\ +% LGRcmss & The Sans Serif font shapes\\ +% LGRcmtt & The typewriter font shapes\\ +% LGRlcmss & The slide size Sans Serif font shapes\\ +% LGRlcmtt & The slide size typewriter fonts\\ +% \end{tabular} +% \end{center} +% A typical \dsc\ command file would then have entries like: +%\begin{verbatim} +%\generateFile{lgrcmr.fd}{t}{\from{greek.fdd}{fd,LGRcmr}} +%\end{verbatim} +% +% \section{The encoding definition file} +% +% This file defines the fontencoding \texttt{LGR} for greek +% text. Moreover, it provides the |\EC@family| macro, since the +% Greek fonts have the same naming conventions as the Latin +% ones produced by J\"{o}rg Knappen that are now the official +% fonts of \LaTeXe. It also makes some definitions to ensure +% that commands such as |\TeX|, |\copyright| give ``expected +% results'' (\TeX, \copyright). +% +% \changes{greekfdd-2.1}{1997/10/31}{Removed some unwanted spaces} +% \changes{greekfdd-2.2e}{2000/10/26}{Added more font sizes to make +% the CB fonts compatible with the EC fonts} +% \begin{macrocode} +%<*fd> +\providecommand{\EC@family}[5]{% + \DeclareFontShape{#1}{#2}{#3}{#4} + {<5><6><7><8><9><10><10.95><12><14.4>% + <17.28><20.74><24.88><29.86><35.83>genb*#5}{}} +%</fd> +%<*LGRenc> +\DeclareFontEncoding{LGR}{}{} +\DeclareFontSubstitution{LGR}{cmr}{m}{n} +\DeclareErrorFont{LGR}{cmr}{m}{n}{10} +% \end{macrocode} +% First we define a few commands in the \texttt{LGR} encoding. +% \changes{greekfdd-2.2c}{1999/04/05}{Fixed typos, \cs{textrademark} +% misses a `t', \cs{copyright} should be \cs{textcopyright}} +% \changes{greekfdd-2.2d}{1999/04/25}{removed redefinition of \cs{\&}} +% \begin{macrocode} +\ProvideTextCommand{\textcopyright}{LGR}{% + \textcircled{\textlatin{c}}} +\ProvideTextCommand{\textregistered}{LGR}{% + \textcircled{\textlatin{\textsc r}}} +\ProvideTextCommand{\texttrademark}{LGR}{% + \textsuperscript{\textlatin{TM}}} +\ProvideTextCommand{\SS}{LGR}{% + \textlatin{SS}} +%</LGRenc> +% \end{macrocode} +% +% \section{The font definition files} +% +% In the previous release of the greek option we used +% the \texttt{kd} family of fonts, which were made by +% K.J.~Dryllerakis. Now, we have switched to the |cb| fonts by +% Claudio Beccari, mainly because these fonts are complete, in any +% sense of the word, and moreover fit nicely with the Computer +% Modern font family. +% +% We begin with the definitions for the Greek Computer Modern fonts. +% +% \begin{macrocode} +%<*LGRcmr> +\DeclareFontFamily{LGR}{cmr}{} +\EC@family{LGR}{cmr}{m}{n} {grmn} +\EC@family{LGR}{cmr}{m}{sl} {grmo} +\EC@family{LGR}{cmr}{m}{it} {grmi} +\EC@family{LGR}{cmr}{m}{sc} {grmc} +\EC@family{LGR}{cmr}{m}{ui} {grmu} +\EC@family{LGR}{cmr}{bx}{sc} {grxc} +\EC@family{LGR}{cmr}{bx}{n} {grxn} +\EC@family{LGR}{cmr}{bx}{sl} {grxo} +\EC@family{LGR}{cmr}{bx}{it} {grxi} +\EC@family{LGR}{cmr}{bx}{ui} {grxu} +\DeclareFontShape{LGR}{cmr}{b}{n} + {<->ssub*cmr/bx/n}{} +\DeclareFontShape{LGR}{cmr}{b}{sc} + {<->ssub*cmr/bx/sc}{} +%</LGRcmr> +% \end{macrocode} +% +% The greek outline family is now complete with the same five +% shapes and the two series as the roman family. +% \changes{greekfdd-2.2b}{1999/04/03}{grmu should be gomu here...} +% \begin{macrocode} +%<*LGRcmro> +\DeclareFontFamily{LGR}{cmro}{} +\EC@family{LGR}{cmro}{m}{n} {gomn} +\EC@family{LGR}{cmro}{m}{sl} {gomo} +\EC@family{LGR}{cmro}{m}{it} {gomi} +\EC@family{LGR}{cmro}{m}{sc} {gomc} +\EC@family{LGR}{cmro}{m}{ui} {gomu} +\EC@family{LGR}{cmro}{bx}{sc} {goxc} +\EC@family{LGR}{cmro}{bx}{n} {goxn} +\EC@family{LGR}{cmro}{bx}{sl} {goxo} +\EC@family{LGR}{cmro}{bx}{it} {goxi} +\EC@family{LGR}{cmro}{bx}{ui} {goxu} +\DeclareFontShape{LGR}{cmro}{b}{n} + {<->ssub*cmro/bx/n}{} +\DeclareFontShape{LGR}{cmro}{b}{sc} + {<->ssub*cmro/bx/sc}{} +%</LGRcmro> +% \end{macrocode} +% +% Then we have the \texttt{typewriter} fonts... +% +% \changes{greekfdd-2.1}{1997/10/31}{Set the \cs{hyphenchar} of the tt +% font to $-1$} +% \begin{macrocode} +%<*LGRcmtt> +\DeclareFontFamily{LGR}{cmtt}{\hyphenchar\font\m@ne}% \hyphenchar = -1 +\EC@family{LGR}{cmtt}{m}{n} {gttn} +\EC@family{LGR}{cmtt}{m}{sl} {gtto} +\EC@family{LGR}{cmtt}{m}{sc} {gttc} +\EC@family{LGR}{cmtt}{m}{it} {gtti} +\EC@family{LGR}{cmtt}{m}{ui} {gttu} +\DeclareFontShape{LGR}{cmtt}{bx}{n} + {<->ssub*cmtt/m/n}{} +\DeclareFontShape{LGR}{cmtt}{bx}{sl} + {<->ssub*cmtt/m/sl}{} +\DeclareFontShape{LGR}{cmtt}{bx}{it} + {<->ssub*cmtt/m/it}{} +\DeclareFontShape{LGR}{cmtt}{bx}{sc} + {<->ssub*cmtt/m/sc}{} +\DeclareFontShape{LGR}{cmtt}{bx}{ui} + {<->ssub*cmtt/m/ui}{} +%</LGRcmtt> +% \end{macrocode} +% +% Now we come to the Sans Serif font to be used in greek +% texts. +% \changes{greekfdd-2.2b}{1999/04/03}{the last two lines had m instead +% of x in the fontname} +% \begin{macrocode} +%<*LGRcmss> +\DeclareFontFamily{LGR}{cmss}{} +\EC@family{LGR}{cmss}{m}{n} {gsmn} +\EC@family{LGR}{cmss}{m}{sl} {gsmo} +\EC@family{LGR}{cmss}{m}{sc} {gsmc} +\EC@family{LGR}{cmss}{m}{it} {gsmi} +\EC@family{LGR}{cmss}{m}{ui} {gsmu} +\EC@family{LGR}{cmss}{bx}{n} {gsxn} +\EC@family{LGR}{cmss}{bx}{sl} {gsxo} +\EC@family{LGR}{cmss}{bx}{sc} {gsxc} +\EC@family{LGR}{cmss}{bx}{it} {gsmi} +\EC@family{LGR}{cmss}{bx}{ui} {gsmu} +%</LGRcmss> +% \end{macrocode} +% +% We have finished with the ``regular'' fonts. We now provide the fonts +% definition files for the fonts used only in slides. First comes the +% typewriter font. +% \begin{macrocode} +%<*LGRlcmtt> +\DeclareFontFamily{LGR}{lcmtt}{\hyphenchar\font\m@ne} +\DeclareFontShape{LGR}{lcmtt}{m}{n}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * gltn}{} +\DeclareFontShape{LGR}{lcmtt}{m}{In}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * gljn}{} +\DeclareFontShape{LGR}{lcmtt}{m}{it}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glto}{} +\DeclareFontShape{LGR}{lcmtt}{m}{Iit}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * gljo}{} +\DeclareFontShape{LGR}{lcmtt}{m}{sl}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + ssub * lcmtt/m/it}{} +\DeclareFontShape{LGR}{lcmtt}{m}{Isl}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + ssub * lcmtt/m/Iit}{} +\DeclareFontShape{LGR}{lcmtt}{m}{sc}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * gltc}{} +\DeclareFontShape{LGR}{lcmtt}{m}{Isc}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * gljc}{} +%</LGRlcmtt> +% \end{macrocode} +% +% And then the Sans Serif font. +% \begin{macrocode} +%<*LGRlcmss> +\DeclareFontFamily{LGR}{lcmss}{} +\DeclareFontShape{LGR}{lcmss}{m}{n}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glmn}{} +\DeclareFontShape{LGR}{lcmss}{m}{In}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glin}{} +\DeclareFontShape{LGR}{lcmss}{m}{sl}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glmo}{} +\DeclareFontShape{LGR}{lcmss}{m}{Isl}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glio}{} +\DeclareFontShape{LGR}{lcmss}{m}{it}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glmi}{} +\DeclareFontShape{LGR}{lcmss}{m}{Iit}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glii}{} +\DeclareFontShape{LGR}{lcmss}{m}{ui}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glmu}{} +\DeclareFontShape{LGR}{lcmss}{bx}{n}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glxn}{} +\DeclareFontShape{LGR}{lcmss}{bx}{In}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glwn}{} +\DeclareFontShape{LGR}{lcmss}{bx}{sl}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glxo}{} +\DeclareFontShape{LGR}{lcmss}{bx}{Isl}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glwo}{} +\DeclareFontShape{LGR}{lcmss}{bx}{it}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glxi}{} +\DeclareFontShape{LGR}{lcmss}{bx}{Iit}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glwi}{} +\DeclareFontShape{LGR}{lcmss}{m}{sc}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glmc}{} +\DeclareFontShape{LGR}{lcmss}{m}{Isc}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glic}{} +\DeclareFontShape{LGR}{lcmss}{bx}{sc}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glxc}{} +\DeclareFontShape{LGR}{lcmss}{bx}{Isc}{% + <7><8><10><12><13.82><16.59><19.91><23.89><28.66><34.4><41.28> + genb * glwc}{} +%</LGRlcmss> +% \end{macrocode} +% +% The next line goes into all files and in addition prevents \dsc{} +% from adding any further code from the main source file (such as a +% character table. +% \begin{macrocode} +\endinput +% \end{macrocode} +% +% \Finale + + diff --git a/Master/texmf-dist/source/generic/babel/greek.ins b/Master/texmf-dist/source/generic/babel/greek.ins new file mode 100644 index 00000000000..a641719f93a --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/greek.ins @@ -0,0 +1,158 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/03/15} +\def\batchfile{greek.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{greek.ldf}{\from{greek.dtx}{code}} + \file{athnum.sty}{\from{athnum.dtx}{package}} + \file{grmath.sty}{\from{grmath.dtx}{package}} + } +\usepreamble\fdpreamble +\generate{\file{lgrenc.def}{\from{greek.fdd}{LGRenc}} + \file{lgrcmr.fd}{\from{greek.fdd}{fd,LGRcmr}} + \file{lgrcmro.fd}{\from{greek.fdd}{fd,LGRcmro}} + \file{lgrcmtt.fd}{\from{greek.fdd}{fd,LGRcmtt}} + \file{lgrcmss.fd}{\from{greek.fdd}{fd,LGRcmss}} + \file{lgrlcmtt.fd}{\from{greek.fdd}{fd,LGRlcmtt}} + \file{lgrlcmss.fd}{\from{greek.fdd}{fd,LGRlcmss}} + } + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/grmath.dtx b/Master/texmf-dist/source/generic/babel/grmath.dtx new file mode 100644 index 00000000000..be42c48545a --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/grmath.dtx @@ -0,0 +1,168 @@ +% \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{126} +% +%\iffalse +% +%% This is file `grmath.sty' +%% (c) 1997-2005 Apostolos Syropoulos. +%% All rights reserved. +% You are allowed to modify this file as long the initial copyright notice +% appears in the modified file. +% +% Please report errors or suggestions for improvement to +% +% Apostolos Syropoulos +% 366, 28th October Str. +% GR-671 00 Xanthi, GREECE +% +% apostolo at platon.ee.duth.gr or apostolo at obelix.ee.duth.gr +% +%\fi +%\iffalse +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\GetFileInfo{grmath.drv} +\begin{document} + \DocInput{grmath.dtx} +\end{document} +%</driver> +% \end{macrocode} +%\fi +% +% \changes{grmath-1.2}{2001/02/12}{Package provides options ``grlog'' +% (default) and ``enlog'' that create Greek and Latin names +% log functions} +% +% \title{Greek log-like Operators} +% \author{Apostolos Syropoulos\\ +% 366, 28th October Str.\\ +% GR-671 00 Xanthi, HELLAS\\ +% E-mail: \texttt{apostolo@platon.ee.duth.gr}} +% \date{2001/02/12} +% \maketitle +% +% \MakeShortVerb{|} +% \section{What is this all about?} +% +% In Greece, until recently, it was common practice to write down most +% log-like functions as abbreviations of their Greek names. Consequently, +% high school students and even university freshmen were not familiar with +% the Latin names employed in international literature. However, this practice +% is fading away in universities but it is still in wide use in books for +% high schools, mainly because the Latin names would produce nothing but +% confusion. The package |grmath| redefines most log-like definitions +% so that they produce the Greek name, instead of the Latin one. The package +% can be used only in conjunction with the |greek| option of the |babel| +% package. The new option |enlog| allows one to keep the Latin names for +% the log functions. +% \StopEventually +% +% \section{The Implementation} +% +% As usual we must first identify ourselves. +% +% \begin{macrocode} +%<*package> +\ProvidesPackage{grmath}[2001/02/12\space v1.2] +\typeout{Package: `grmath' v1.2\space <2001/02/12> (A. Syropoulos)} +% \end{macrocode} +% +% The next thing we do is to process the options. The default option +% ``grlog'' generates Greek names for log functions and the ``enlog'' +% option generates Latin names for log functions. +% \begin{macrocode} +\DeclareOption{grlog}{% + \def\log{\mathop{\mathgroup\symgroperators log_{10}}\nolimits} + \def\ln{\mathop{\mathgroup\symgroperators log_% + {\mathgroup\symoperators e}}\nolimits} +} +\DeclareOption{enlog}{% + \def\log{\mathop{\operator@font log}\nolimits} + \def\ln{\mathop{\operator@font ln}\nolimits} +} +\ExecuteOptions{grlog} +\ProcessOptions +% \end{macrocode} +% +% Now we check to see if the |babel| package is loaded with at least +% the |greek| option. In case it isn't, we opt to produce an error message. +% \begin{macrocode} +\@ifpackagewith{babel}{greek}{}{% + \@ifpackagewith{babel}{polutonikogreek}{}{% + \PackageError{grmath}{% + `greek' option of the `babel'\MessageBreak + package hasn't been loaded}{% + The commands provided by this package\MessageBreak + are specially designed for greek language\MessageBreak + typesetting with the `babel' package. Load\MessageBreak + it with at least the `greek' option.}\relax + }} +% \end{macrocode} +% +% We define the mathematical font which will be used to typeset +% the log-like functions. +% \begin{macrocode} +\DeclareSymbolFont{groperators}{LGR}{cmr}{m}{n} +\SetSymbolFont{groperators}{bold}{LGR}{cmr}{bx}{n} +% \end{macrocode} +% +% We are now ready to proceed with the redefinitions of the log-like +% operator names. +% \begin{macrocode} +\def\sin{\mathop{\mathgroup\symgroperators hm}\nolimits} +\def\cos{\mathop{\mathgroup\symgroperators sun}\nolimits} +\def\tan{\mathop{\mathgroup\symgroperators ef}\nolimits} +\def\arcsin{\mathop{\mathgroup\symgroperators toxhm}\nolimits} +\def\arccos{\mathop{\mathgroup\symgroperators toxsun}\nolimits} +\def\arctan{\mathop{\mathgroup\symgroperators toxef}\nolimits} +\def\cot{\mathop{\mathgroup\symgroperators sf}\nolimits} +\def\sec{\mathop{\mathgroup\symgroperators tem}\nolimits} +\def\csc{\mathop{\mathgroup\symgroperators stem}\nolimits} +\def\gcd{\mathop{\mathgroup\symgroperators MKD}\nolimits} +% \end{macrocode} +% In the standard \LaTeX\ distribution there is no provision for a +% Least Common Multiple (lcm) log-like operator. Since, this operator +% appears quite often in greek literature we opt to include it. Moreover, +% we include three more log-like functions: |\arccot|, |\arcsec| and +% |\arccsc|. +% \begin{macrocode} +\def\lcm{\mathop{\mathgroup\symgroperators EKP}\nolimits} +\def\arccot{\mathop{\mathgroup\symgroperators toxsf}\nolimits} +\def\arcsec{\mathop{\mathgroup\symgroperators toxtem}\nolimits} +\def\arccsc{\mathop{\mathgroup\symgroperators toxstem}\nolimits} +%</package> +% \end{macrocode} +% +% \section*{Dedication} +% I would like to dedicate this piece of work to my son +% \begin{center}Demetrios-Georgios.\end{center} +% \Finale +\endinput diff --git a/Master/texmf-dist/source/generic/babel/grsymb.dtx b/Master/texmf-dist/source/generic/babel/grsymb.dtx new file mode 100644 index 00000000000..ef783fbd48d --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/grsymb.dtx @@ -0,0 +1,131 @@ +% \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{55} +% +%\iffalse +% +%% This is file `grsymb.sty' +%% (c) 1997-2005 Apostolos Syropoulos. +%% All rights reserved. +% You are allowed to modify this file as long the initial copyright notice +% appears in the modified file. +% +% Please report errors or suggestions for improvement to +% +% Apostolos Syropoulos +% 366, 28th October Str. +% GR-671 00 Xanthi, GREECE +% +% apostolo at platon.ee.duth.gr or apostolo at obelix.ee.duth.gr +% +%\fi +%\iffalse +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\GetFileInfo{grsymb.drv} +\begin{document} + \DocInput{grsymb.dtx} +\end{document} +%</driver> +% \end{macrocode} +%\fi +% +% \title{Greek Symbols} +% \author{Apostolos Syropoulos\\ +% 366, 28th October Str.\\ +% GR-671 00 Xanthi, HELLAS\\ +% E-mail: \texttt{apostolo@platon.ee.duth.gr}} +% \date{1997/09/21} +% \maketitle +% +% \MakeShortVerb{|} +% \section{Introduction} +% +% There are certain symbols which were in use in ancient Greece and which +% are of use to scholars even today. These symbols are various forms of +% qoppa and stigma, and the letter digamma. These special symbols are +% provided by the \texttt{cb} fonts which are now the official fonts for +% the \texttt{greek} option of the \texttt{babel} package. Moreover, these +% fonts provide a few more symbols such as a symbol for Euro, etc. The `tao' +% symbol although is not a greek symbol, survives mainly for reasons of +% compatibility. This little package provides access commands for these +% symbols. The package can be used only in conjunction with the |greek| +% option of the |babel| package. +% +% \StopEventually +% +% \section{The Implementation} +% +% First comes the identification part. +% +% \begin{macrocode} +%<*package> +\ProvidesPackage{grsymb}[1997/09/21\space v1.0] +\typeout{Package: `grsymb' v1.0\space <1997/09/21> (A. Syropoulos)} +% \end{macrocode} +% +% Next we check to see if the |babel| package is loaded with at least +% the |greek| option. In case it isn't, we opt to produce an error message. +% \begin{macrocode} +\@ifpackagewith{babel}{greek}{}{% + \PackageError{grsymb}{% + `greek' option of the `babel'\MessageBreak + package hasn't been loaded}{% + The commands provided by this package\MessageBreak + are specially designed for greek language\MessageBreak + typesetting with the `babel' package. Load\MessageBreak + it with at least the `greek' option.}\relax + } +% \end{macrocode} +% Now, we proceed with the definitions of the various symbols. Please note +% that |\ddigamma| is intensionally spelled erroneously, in order to avoid +% conflicts with the command |\digamma| that is defined by the package +% |amssymb|. Although the tao symbol is not a greek symbol, it is included +% mainly for reasons of compatibility. +% \begin{macrocode} +\DeclareTextCommand{\Digamma}{LGR}{\char"C3\relax} +\DeclareTextCommand{\ddigamma}{LGR}{\char"93\relax} +\DeclareTextCommand{\tao}{LGR}{\char"01\relax} +\DeclareTextCommand{\Qoppa}{LGR}{\char"14\relax} +\DeclareTextCommand{\varqoppa}{LGR}{\char"13\relax} +\DeclareTextCommand{\Sampi}{LGR}{\char"1A\relax} +\DeclareTextCommand{\vardigamma}{LGR}{\char"07\relax} +\DeclareTextCommand{\Stigma}{LGR}{\char"08\relax} +\DeclareTextCommand{\VarQoppa}{LGR}{\char"15\relax} +\DeclareTextCommand{\euro}{LGR}{\char"18\relax} +\DeclareTextCommand{\permill}{LGR}{\char"19\relax} +%</package> +% \end{macrocode} +% +% \section*{Dedication} +% I would like to dedicate this piece of work to my son +% \begin{center}Demetrios-Georgios.\end{center} +% \Finale +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/source/generic/babel/heb209.dtx b/Master/texmf-dist/source/generic/babel/heb209.dtx new file mode 100644 index 00000000000..69101ca7660 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/heb209.dtx @@ -0,0 +1,165 @@ +% \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{8} +% +% \iffalse meta-comment +%% File `heb209.dtx' - obsolete LaTeX 2.09 compatible style files. +%% Copyright (C) 1997 -- 2004 Boris Lavva. +% +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 -- 2004 by Johannes Braams, +%% TeXniek +%% All rights reserved. +%\fi +% \providecommand\dst{\textsc{docstrip}} +% \providecommand\babel{\textsf{babel}} +% \GetFileInfo{heb209.dtx} +% +% \changes{heb209~1.0a}{1998/01/06}{% +% Initial version. Provides hebrew\_newcode, hebrew\_oldcode and +% hebrew\_p style files for \LaTeX~2.09 (by Boris Lavva)} +% +% \section{Hebrew in \LaTeX~2.09 compatibility mode}\label{sec:heb209} +% +% |\documentstyle| command in the preamble of \LaTeX\ document +% indicates that it is a \LaTeX~2.09 document, and should be processed +% in \emph{compatibility mode}. In such documents, one of the following +% three Hebrew style options can be included: +% \begin{enumerate} +% \item \texttt{hebrew\_newcode} indicates that document will use UNIX +% ISO 8859-8 or Windows cp1255 input encoding, i.e.\ \emph{Alef} +% letter will be represented as 224. +% \item \texttt{hebrew\_p} indicates that document is encoded with IBM +% PC cp862 encoding, i.e.\ \emph{Alef} letter will be represented as +% 128. +% \item \texttt{hebrew\_oldcode} indicates that document uses old 7-bit +% encoding, as defined in Israeli Standard 960, i.e.\ \emph{Alef} is +% character number 96. +% \end{enumerate} +% Note, that other hebrew-related styles, such as \texttt{hebcal} can +% be included \emph{after} the abovenamed Hebrew style option, for +% example: +% \begin{quote} +% |\documentstyle[12pt,hebrew_p,hebcal]{report}|. +% \end{quote} +% +% Any Hebrew document which compiled under \LaTeX~2.09 should compile +% under compatibility mode, unless it uses low-level commands such as +% |\tenrm|. +% +% \subsection{The {\normalfont\dst{}} modules} +% +% The following modules are used in the implementation to direct +% \dst{} in generating the external files: +% \begin{center} +% \begin{tabular}{ll} +% newcode & produce \texttt{hebrew\_newcode.sty} \\ +% pccode & produce \texttt{hebrew\_p.sty} \\ +% oldcode & produce \texttt{hebrew\_oldcode.sty} +% \end{tabular} +% \end{center} +% +% \StopEventually{} +% +% \iffalse +% \subsection{A driver for this document} +% +% The next bit of code contains the documentation driver file for +% \TeX{}, i.e., the file that will produce the documentation you +% are currently reading. It will be extracted from this file by +% the \dst{} program. +% +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\title{Hebrew \LaTeX~2.09 compatibility style files} +\author{Boris Lavva} +\date{Printed \today} +\begin{document} + \maketitle + \DocInput{heb209.dtx} +\end{document} +%</driver> +% \end{macrocode} +% \fi +% +% \subsection{Obsolete style files} +% +% For each of the Hebrew \LaTeX~2.09 Hebrew styles, we produce a +% file which uses correct input encoding and calls \babel\ with +% Hebrew and English language options. +% This means that any styles which say |\input hebrew_newcode.sty| +% or |\documentstyle[|\ldots|hebrew_newcode|\ldots|]{|\ldots|}| +% should still work. +% +% \begin{macrocode} +%<*newcode|pccode|oldcode> +\NeedsTeXFormat{LaTeX2e} +%</newcode|pccode|oldcode> +% \end{macrocode} +% +% \begin{macrocode} +%<*newcode> +\@obsoletefile{hebrew.sty}{hebrew_newcode.sty} +\RequirePackage[8859-8]{inputenc} +%</newcode> +%<*pccode> +\@obsoletefile{hebrew.sty}{hebrew_p.sty} +\RequirePackage[cp862]{inputenc} +%</pccode> +%<*oldcode> +\@obsoletefile{hebrew.sty}{hebrew_oldcode.sty} +\RequirePackage[si960]{inputenc} +%</oldcode> +% \end{macrocode} +% +% \begin{macrocode} +%<*newcode|pccode|oldcode> +\RequirePackage[english,hebrew]{babel} +%</newcode|pccode|oldcode> +% \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 diff --git a/Master/texmf-dist/source/generic/babel/hebinp.dtx b/Master/texmf-dist/source/generic/babel/hebinp.dtx new file mode 100644 index 00000000000..a6a9d60c394 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/hebinp.dtx @@ -0,0 +1,550 @@ +% \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{446} +% +% \iffalse +%<si960> \ProvidesFile{si960.def} +%<8859-8> \ProvidesFile{8859-8.def} +%<cp862> \ProvidesFile{cp862.def} +%<cp1255> \ProvidesFile{cp1255.def} +%<*driver> +\ProvidesFile{hebinp.drv} +%</driver> +% \fi +% \ProvidesFile{hebinp.dtx} + [2004/02/20 v1.1b Hebrew input encoding file] +% \iffalse meta-comment +%% File `hebinp.dtx' for installing the input hebrew encodings. +%% Copyright (C) 1997 -- 2005 Boris Lavva. +% +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 -- 2005 by Johannes Braams, +%% TeXniek +%% All rights reserved. +% \fi +% +% \providecommand\dst{\textsc{docstrip}} +% \GetFileInfo{hebinp.dtx} +% +% \changes{hebinp~1.0a}{1997/12/07}{% +% Initial version. Provides 8859-8, cp862, cp1255, and old 7-bit +% input encodings (by Boris Lavva)} +% \changes{hebinp~1.1}{2001/02/27}{% +% Renamed hebrew letters: \cs{alef} to \cs{hebalef} etc. +% (by Tzafrir Cohen)} +% \changes{hebinp~1.1a}{2001/07/22}{% +% Renamed CP1255 nikud \cs{patah} to \cs{hebpatah etc}. +% Added the macro \cs{DisableNikud} - may not be a good idea +% (by Tzafrir Cohen)} +% +% \section{Hebrew input encodings}\label{sec:hebinp} +% +% Hebrew input encodings defined in file |hebinp.dtx|\footnote{The +% files described in this section have version number \fileversion\ +% and were last revised on \filedate.} should be used with |inputenc| +% \LaTeXe{} package. This package allows the user +% to specify an input encoding from this file (for example, ISO +% Hebrew/Latin 8859-8, IBM Hebrew codepage 862 or MS Windows +% Hebrew codepage 1255) by saying: +% \begin{quote} +% |\usepackage[|\emph{encoding name}|]{inputenc}| +% \end{quote} +% The encoding can also be selected in the document with: +% \begin{quote} +% |\inputencoding{|\emph{encoding name}|}| +% \end{quote} +% The only practical use of this command within a document is when +% using text from several documents to build up a composite work such +% as a volume of journal articles. Therefore this command will be +% used only in vertical mode. +% +% The encodings provided by this package are: +% \begin{itemize} +% \item |si960| 7-bit Hebrew encoding for the range 32--127. This +% encoding also known as ``old-code'' and defined by Israeli +% Standard SI-960. +% \item |8859-8| ISO 8859-8 Hebrew/Latin encoding commonly used in +% UNIX systems. This encoding also known as ``new-code'' and +% includes hebrew letters in positions starting from 224. +% \item |cp862| IBM 862 code page commonly used by DOS on +% IBM-compatible personal computers. This encoding also known as +% ``pc-code'' and includes hebrew letters in positions starting +% from 128. +% \item |cp1255| MS Windows 1255 (hebrew) code page which is similar to +% 8859-8. In addition to hebrew letters, this encoding contains +% also hebrew vowels and dots (nikud). +% \end{itemize} +% Each encoding has an associated |.def| file, for example +% |8859-8.def| which defines the behaviour of each input character, +% using the commands: +% \begin{quote} +% |\DeclareInputText{|\emph{slot}|}{|\emph{text}|}| \\ +% |\DeclareInputMath{|\emph{slot}|}{|\emph{math}|}| +% \end{quote} +% This defines the input character \emph{slot} to be the +% \emph{text} material or \emph{math} material respectively. +% For example, |8859-8.def| defines slots |"EA| (letter hebalef) +% and |"B5| ($\mu$) by saying: +%\begin{verbatim} +% \DeclareInputText{224}{\hebalef} +% \DeclareInputMath{181}{\mu} +%\end{verbatim} +% Note that the \emph{commands} should be robust, and should not be +% dependent on the output encoding. The same \emph{slot} should not +% have both a text and a math declaration for it. (This restriction +% may be removed in future releases of inputenc). +% +% The |.def| file may also define commands using the declarations:\\ +% |\providecommand| or |\ProvideTextCommandDefault|. +% For example, |8859-8.def| defines: +%\begin{verbatim} +% \ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}} +% \DeclareInputText{188}{\textonequarter} +%\end{verbatim} +% The use of the `provide' forms here will ensure that a +% better definition will not be over-written; their use is +% recommended since, in general, the best defintion depends on the +% fonts available. +% +% See the documentation in |inputenc.dtx| for details of how to +% declare input definitions for various encodings. +% +% \StopEventually{} +% +% \iffalse +% \subsection{A driver for this document} +% +% The next bit of code contains the documentation driver file for +% \TeX{}, i.e., the file that will produce the documentation you +% are currently reading. It will be extracted from this file by +% the \dst{} program. +% +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\title{Hebrew input encodings for use with \LaTeXe} +\author{Boris Lavva} +\date{Printed \today} +\begin{document} + \maketitle + \DocInput{hebinp.dtx} +\end{document} +%</driver> +% \end{macrocode} +% \fi +% +% \subsection{Default definitions for characters} +% +% First, we insert a |\makeatletter| at the beginning of all |.def| +% files to use |@| symbol in the macros' names. +% \begin{macrocode} +%<-driver>\makeatletter +% \end{macrocode} +% +% Some input characters map to internal functions which are not in +% either the |T1| or |OT1| font encoding. For this reason default +% definitions are provided in the encoding file: these will be +% used unless some other output encoding is used which supports +% those glyphs. In some cases this default defintion has to be +% simply an error message. +% +% Note that this works reasonably well only because the encoding +% files for both |OT1| and |T1| are loaded in the standard LaTeX +% format. +% +% \begin{macrocode} +%<*8859-8|cp862|cp1255> +\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}} +\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}} +\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}} +%</8859-8|cp862|cp1255> +%<*8859-8|cp1255> +\ProvideTextCommandDefault{\textthreequarters}{\ensuremath{\frac34}} +%</8859-8|cp1255> +%<*cp862|cp1255> +\ProvideTextCommandDefault{\textflorin}{\textit{f}} +%</cp862|cp1255> +%<*cp862> +\ProvideTextCommandDefault{\textpeseta}{Pt} +%</cp862> +% \end{macrocode} +% +% The name |\textblacksquare| is derived from the AMS symbol name +% since Adobe seem not to want this symbol. The default +% definition, as a rule, makes no claim to being a good design. +% \begin{macrocode} +%<*cp862> +\ProvideTextCommandDefault{\textblacksquare} + {\vrule \@width .3em \@height .4em \@depth -.1em\relax} +%</cp862> +% \end{macrocode} +% +% Some commands can't be faked, so we have them generate an error +% message. +% \begin{macrocode} +%<*8859-8|cp862|cp1255> +\ProvideTextCommandDefault{\textcent} + {\TextSymbolUnavailable\textcent} +\ProvideTextCommandDefault{\textyen} + {\TextSymbolUnavailable\textyen} +%</8859-8|cp862|cp1255> +%<*8859-8> +\ProvideTextCommandDefault{\textcurrency} + {\TextSymbolUnavailable\textcurrency} +%</8859-8> +%<*cp1255> +\ProvideTextCommandDefault{\newsheqel} + {\TextSymbolUnavailable\newsheqel} +%</cp1255> +%<*8859-8|cp1255> +\ProvideTextCommandDefault{\textbrokenbar} + {\TextSymbolUnavailable\textbrokenbar} +%</8859-8|cp1255> +%<*cp1255> +\ProvideTextCommandDefault{\textperthousand} + {\TextSymbolUnavailable\textperthousand} +%</cp1255> +% \end{macrocode} +% +% Characters that are supposed to be used only in math will be defined +% by |\providecommand| because \LaTeXe{} assumes that the font +% encoding for math fonts is static. +% \begin{macrocode} +%<*8859-8|cp1255> +\providecommand{\mathonesuperior}{{^1}} +\providecommand{\maththreesuperior}{{^3}} +%</8859-8|cp1255> +%<*8859-8|cp862|cp1255> +\providecommand{\mathtwosuperior}{{^2}} +%</8859-8|cp862|cp1255> +%<*cp862> +\providecommand{\mathordmasculine}{{^o}} +\providecommand{\mathordfeminine}{{^a}} +%</cp862> +% \end{macrocode} +% +% \subsection{The SI-960 encoding} +% +%% The SI-960 or ``old-code'' encoding only allows characters in the +%% range 32--127, so we only need to provide an empty |si960.def| file. +% +% \subsection{The ISO 8859-8 encoding and the MS Windows cp1255 encoding} +% +% The |8859-8.def| encoding file defines the characters in the ISO +% 8859-8 encoding. +% +% The MS Windows Hebrew character set incorporates the Hebrew +% letter repertoire of ISO 8859-8, and uses the same code points +% (starting from 224). It has also some important additions in the +% 128--159 and 190--224 ranges. +% +% \begin{macrocode} +%<*cp1255> +\DeclareInputText{130}{\quotesinglbase} +\DeclareInputText{131}{\textflorin} +\DeclareInputText{132}{\quotedblbase} +\DeclareInputText{133}{\dots} +\DeclareInputText{134}{\dag} +\DeclareInputText{135}{\ddag} +\DeclareInputText{136}{\^{}} +\DeclareInputText{137}{\textperthousand} +\DeclareInputText{139}{\guilsinglleft} +\DeclareInputText{145}{\textquoteleft} +\DeclareInputText{146}{\textquoteright} +\DeclareInputText{147}{\textquotedblleft} +\DeclareInputText{148}{\textquotedblright} +\DeclareInputText{149}{\textbullet} +\DeclareInputText{150}{\textendash} +\DeclareInputText{151}{\textemdash} +\DeclareInputText{152}{\~{}} +\DeclareInputText{153}{\texttrademark} +\DeclareInputText{155}{\guilsinglright} +%</cp1255> +% \end{macrocode} +% +% \begin{macrocode} +%<*8859-8|cp1255> +\DeclareInputText{160}{\nobreakspace} +\DeclareInputText{162}{\textcent} +\DeclareInputText{163}{\pounds} +%<+8859-8>\DeclareInputText{164}{\textcurrency} +%<+cp1255>\DeclareInputText{164}{\newsheqel} +\DeclareInputText{165}{\textyen} +\DeclareInputText{166}{\textbrokenbar} +\DeclareInputText{167}{\S} +\DeclareInputText{168}{\"{}} +\DeclareInputText{169}{\textcopyright} +%<+8859-8>\DeclareInputMath{170}{\times} +\DeclareInputText{171}{\guillemotleft} +\DeclareInputMath{172}{\lnot} +\DeclareInputText{173}{\-} +\DeclareInputText{174}{\textregistered} +\DeclareInputText{175}{\@tabacckludge={}} +\DeclareInputText{176}{\textdegree} +\DeclareInputMath{177}{\pm} +\DeclareInputMath{178}{\mathtwosuperior} +\DeclareInputMath{179}{\maththreesuperior} +\DeclareInputText{180}{\@tabacckludge'{}} +\DeclareInputMath{181}{\mu} +\DeclareInputText{182}{\P} +\DeclareInputText{183}{\textperiodcentered} +%<+8859-8>\DeclareInputText{184}{\c\ } +\DeclareInputMath{185}{\mathonesuperior} +%<+8859-8>\DeclareInputMath{186}{\div} +\DeclareInputText{187}{\guillemotright} +\DeclareInputText{188}{\textonequarter} +\DeclareInputText{189}{\textonehalf} +\DeclareInputText{190}{\textthreequarters} +%</8859-8|cp1255> +% \end{macrocode} +% +% Hebrew vowels and dots (nikud) are included only to MS Windows cp1255 +% page and start from the position 192. +% \begin{macrocode} +%<*cp1255> +\DeclareInputText{192}{\hebsheva} +\DeclareInputText{193}{\hebhatafsegol} +\DeclareInputText{194}{\hebhatafpatah} +\DeclareInputText{195}{\hebhatafqamats} +\DeclareInputText{196}{\hebhiriq} +\DeclareInputText{197}{\hebtsere} +\DeclareInputText{198}{\hebsegol} +\DeclareInputText{199}{\hebpatah} +\DeclareInputText{200}{\hebqamats} +\DeclareInputText{201}{\hebholam} +\DeclareInputText{203}{\hebqubuts} +\DeclareInputText{204}{\hebdagesh} +\DeclareInputText{205}{\hebmeteg} +\DeclareInputText{206}{\hebmaqaf} +\DeclareInputText{207}{\hebrafe} +\DeclareInputText{208}{\hebpaseq} +\DeclareInputText{209}{\hebshindot} +\DeclareInputText{210}{\hebsindot} +\DeclareInputText{211}{\hebsofpasuq} +\DeclareInputText{212}{\hebdoublevav} +\DeclareInputText{213}{\hebvavyod} +\DeclareInputText{214}{\hebdoubleyod} +%</cp1255> +% \end{macrocode} +% +% Hebrew letters start from the position 224 in both encodings. +% \begin{macrocode} +%<*8859-8|cp1255> +\DeclareInputText{224}{\hebalef} +\DeclareInputText{225}{\hebbet} +\DeclareInputText{226}{\hebgimel} +\DeclareInputText{227}{\hebdalet} +\DeclareInputText{228}{\hebhe} +\DeclareInputText{229}{\hebvav} +\DeclareInputText{230}{\hebzayin} +\DeclareInputText{231}{\hebhet} +\DeclareInputText{232}{\hebtet} +\DeclareInputText{233}{\hebyod} +\DeclareInputText{234}{\hebfinalkaf} +\DeclareInputText{235}{\hebkaf} +\DeclareInputText{236}{\heblamed} +\DeclareInputText{237}{\hebfinalmem} +\DeclareInputText{238}{\hebmem} +\DeclareInputText{239}{\hebfinalnun} +\DeclareInputText{240}{\hebnun} +\DeclareInputText{241}{\hebsamekh} +\DeclareInputText{242}{\hebayin} +\DeclareInputText{243}{\hebfinalpe} +\DeclareInputText{244}{\hebpe} +\DeclareInputText{245}{\hebfinaltsadi} +\DeclareInputText{246}{\hebtsadi} +\DeclareInputText{247}{\hebqof} +\DeclareInputText{248}{\hebresh} +\DeclareInputText{249}{\hebshin} +\DeclareInputText{250}{\hebtav} +%</8859-8|cp1255> +% \end{macrocode} +% +% Special symbols which define the direction of symbols explicitly. +% Currently, they are not used in \LaTeX. +% \begin{macrocode} +%<*cp1255> +\DeclareInputText{253}{\lefttorightmark} +\DeclareInputText{254}{\righttoleftmark} +%</cp1255> +% \end{macrocode} +% +% \subsection{The IBM code page 862} +% +% The |cp862.def| encoding file defines the characters in the IBM +% codepage 862 encoding. The DOS graphics `letters' and a few +% other positions are ignored (left undefined). +% +% Hebrew letters start from the position 128. +% \begin{macrocode} +%<*cp862> +\DeclareInputText{128}{\hebalef} +\DeclareInputText{129}{\hebbet} +\DeclareInputText{130}{\hebgimel} +\DeclareInputText{131}{\hebdalet} +\DeclareInputText{132}{\hebhe} +\DeclareInputText{133}{\hebvav} +\DeclareInputText{134}{\hebzayin} +\DeclareInputText{135}{\hebhet} +\DeclareInputText{136}{\hebtet} +\DeclareInputText{137}{\hebyod} +\DeclareInputText{138}{\hebfinalkaf} +\DeclareInputText{139}{\hebkaf} +\DeclareInputText{140}{\heblamed} +\DeclareInputText{141}{\hebfinalmem} +\DeclareInputText{142}{\hebmem} +\DeclareInputText{143}{\hebfinalnun} +\DeclareInputText{144}{\hebnun} +\DeclareInputText{145}{\hebsamekh} +\DeclareInputText{146}{\hebayin} +\DeclareInputText{147}{\hebfinalpe} +\DeclareInputText{148}{\hebpe} +\DeclareInputText{149}{\hebfinaltsadi} +\DeclareInputText{150}{\hebtsadi} +\DeclareInputText{151}{\hebqof} +\DeclareInputText{152}{\hebresh} +\DeclareInputText{153}{\hebshin} +\DeclareInputText{154}{\hebtav} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareInputText{155}{\textcent} +\DeclareInputText{156}{\pounds} +\DeclareInputText{157}{\textyen} +\DeclareInputText{158}{\textpeseta} +\DeclareInputText{159}{\textflorin} +\DeclareInputText{160}{\@tabacckludge'a} +\DeclareInputText{161}{\@tabacckludge'\i} +\DeclareInputText{162}{\@tabacckludge'o} +\DeclareInputText{163}{\@tabacckludge'u} +\DeclareInputText{164}{\~n} +\DeclareInputText{165}{\~N} +\DeclareInputMath{166}{\mathordfeminine} +\DeclareInputMath{167}{\mathordmasculine} +\DeclareInputText{168}{\textquestiondown} +\DeclareInputMath{170}{\lnot} +\DeclareInputText{171}{\textonehalf} +\DeclareInputText{172}{\textonequarter} +\DeclareInputText{173}{\textexclamdown} +\DeclareInputText{174}{\guillemotleft} +\DeclareInputText{175}{\guillemotright} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareInputMath{224}{\alpha} +\DeclareInputText{225}{\ss} +\DeclareInputMath{226}{\Gamma} +\DeclareInputMath{227}{\pi} +\DeclareInputMath{228}{\Sigma} +\DeclareInputMath{229}{\sigma} +\DeclareInputMath{230}{\mu} +\DeclareInputMath{231}{\tau} +\DeclareInputMath{232}{\Phi} +\DeclareInputMath{233}{\Theta} +\DeclareInputMath{234}{\Omega} +\DeclareInputMath{235}{\delta} +\DeclareInputMath{236}{\infty} +\DeclareInputMath{237}{\phi} +\DeclareInputMath{238}{\varepsilon} +\DeclareInputMath{239}{\cap} +\DeclareInputMath{240}{\equiv} +\DeclareInputMath{241}{\pm} +\DeclareInputMath{242}{\ge} +\DeclareInputMath{243}{\le} +\DeclareInputMath{246}{\div} +\DeclareInputMath{247}{\approx} +\DeclareInputText{248}{\textdegree} +\DeclareInputText{249}{\textperiodcentered} +\DeclareInputText{250}{\textbullet} +\DeclareInputMath{251}{\surd} +\DeclareInputMath{252}{\mathnsuperior} +\DeclareInputMath{253}{\mathtwosuperior} +\DeclareInputText{254}{\textblacksquare} +\DeclareInputText{255}{\nobreakspace} +%</cp862> +% \end{macrocode} +% +% \begin{macro}{\DisableNikud} +% A utility macro to ignore any nikud character that may appear in the +% input. This allows you to ignore cp1255 nikud characters that happened to +% appear in the input. +% \end{macro} +% \begin{macrocode} +%<*8859-8> +\newcommand{\DisableNikud}{% + \DeclareInputText{192}{}% + \DeclareInputText{193}{}% + \DeclareInputText{194}{}% + \DeclareInputText{195}{}% + \DeclareInputText{196}{}% + \DeclareInputText{197}{}% + \DeclareInputText{198}{}% + \DeclareInputText{199}{}% + \DeclareInputText{200}{}% + \DeclareInputText{201}{}% + \DeclareInputText{203}{}% + \DeclareInputText{204}{}% + \DeclareInputText{205}{}% + \DeclareInputText{206}{}% + \DeclareInputText{207}{}% + \DeclareInputText{208}{}% + \DeclareInputText{209}{}% + \DeclareInputText{210}{}% + \DeclareInputText{211}{}% + \DeclareInputText{212}{}% + \DeclareInputText{213}{}% + \DeclareInputText{214}{}% +} +%</8859-8> +% \end{macrocode} +% +% Finally, we reset the category code of the |@| sign at the end of +% all |.def| files. +% \begin{macrocode} +%<-driver>\makeatother +% \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 diff --git a/Master/texmf-dist/source/generic/babel/hebrew.dtx b/Master/texmf-dist/source/generic/babel/hebrew.dtx new file mode 100644 index 00000000000..19f0fbf0fc8 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/hebrew.dtx @@ -0,0 +1,3329 @@ +% \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{3345} +% +% \iffalse meta-comment +%% Hebrew language definition and additional packages. +%% Copyright (C) 1997 -- 2005 Boris Lavva. +% +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 -- 2005 by Johannes Braams, +%% TeXniek +%% All rights reserved. +%<*calendar> +%% TeX & LaTeX macros for computing Hebrew date from Gregorian one +%% Copyright (C) 1991 by Michail Rozman, misha@iop.tartu.ew.su +%% +%</calendar> +% \fi +% +% +% \iffalse +%<hebrew>\ProvidesFile{hebrew.ldf} +%<rightleft>\ProvidesFile{rlbabel.def} +%<calendar>\ProvidesPackage{hebcal} +%<*driver> +\ProvidesFile{hebrew.drv} +%</driver> +% \fi +% \ProvidesFile{hebrew.dtx} + [2005/03/30 v2.3h % +% \iffalse +%<hebrew> Hebrew language definition from the babel system +%<rightleft> Right-to-Left support from the babel system +%<calendar> Hebrew calendar +%<driver> Driver file for hebrew support +% \fi + Hebrew language support from the babel system] +% +% \iffalse +% \subsection{A driver for this document} +% +% The next bit of code contains the documentation driver file for +% \TeX{}, i.e., the file that will produce the documentation you are +% currently reading. It will be extracted from this file by the \dst{} +% program. +% +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\providecommand\babel{\textsf{babel}} +\providecommand\file[1]{\texttt{#1}} +\makeatletter +% \end{macrocode} +% +% The code lines are numbered within sections, +% \begin{macrocode} +\@addtoreset{CodelineNo}{section} +\renewcommand\theCodelineNo{% + \reset@font\scriptsize\thesection.\arabic{CodelineNo}} +% \end{macrocode} +% which should also be visible in the index; hence this +% redefinition of a macro from \file{doc.sty}. +% \begin{macrocode} +\renewcommand\codeline@wrindex[1]{\if@filesw + \immediate\write\@indexfile + {\string\indexentry{#1}% + {\number\c@section.\number\c@CodelineNo}}\fi} +% \end{macrocode} +% +% The glossary environment is used or the change log, but its +% definition needs changing for this document. +% \begin{macrocode} +\renewenvironment{theglossary}{% + \glossary@prologue% + \GlossaryParms \let\item\@idxitem \ignorespaces}% + {} +\makeatother +\DisableCrossrefs +\CodelineIndex +\RecordChanges +\title{Hebrew language support from the \babel\ system} +\author{Boris Lavva} +\date{Printed \today} +\begin{document} + \maketitle + \tableofcontents + \DocInput{hebrew.dtx} + \DocInput{hebinp.dtx} + \DocInput{hebrew.fdd} + \DocInput{heb209.dtx} + \clearpage + \def\filename{index} + \PrintIndex + \clearpage + \def\filename{changes} + \PrintChanges +\end{document} +%</driver> +% \end{macrocode} +% \fi +% +% \providecommand\babel{\textsf{babel}} +% \providecommand\dst{\textsc{docstrip}} +% \providecommand\file[1]{\texttt{#1}} +% \providecommand\pkg[1]{\texttt{#1}} +% \providecommand\XeT{X\kern-.125em\lower.5ex\hbox{E}\kern-.1667emT\@} +% \providecommand\scrunch{\setlength{\itemsep}{-.05in}} +% \GetFileInfo{hebrew.dtx} +% +% \changes{hebrew~0.1}{??/??/??}{% +% Preliminary \LaTeX\ Hebrew option (by Sergio Fogel)} +% \changes{hebrew~0.2}{??/??/??}{% +% Corrections and additions (by Rama Porrat)} +% \changes{hebrew~0.6}{??/??/??}{Additions (by Yael Dubinsky)} +% \changes{hebrew~1.2}{??/??/??}{% +% Bilingual tables, penalties, documentation and more changes +% (by Yaniv Bargury)} +% \changes{hebrew~1.30}{1992/05/15}{% +% Font selection, various (by Alon Ziv)} +% \changes{hebrew~1.31}{1993/02/22}{Bug fixes (by Alon Ziv)} +% \changes{hebrew~1.32}{1993/03/10}{Made font-change command +% for numbers `\cs{protect}'ed (by Alon Ziv)} +% \changes{hebrew~1.33}{1993/03/11}{% +% Made \cs{refstepcounter} work using \cs{@ltor} (by Alon Ziv)} +% \changes{hebrew~1.34}{1993/03/22}{% +% Moved font loading to another file. Added \cs{mainsec}. +% Made all text strings be produced by control codes (similar to +% \LaTeX 2.09 Mar '92). Fixed \cs{noindent} (by Alon Ziv)} +% \changes{hebrew~1.35}{1993/03/22}{% +% Moved the texts to a file selected by the current encoding +% (by Alon Ziv)} +% \changes{hebrew~1.36}{1993/03/24}{Use \TeX\ tricks to redefine +% \cs{theXXXX} without keeping old definitions. +% Use only \cs{@eng} for direction/font change (removed \cs{@ltor}). +% Switched from use of \cs{mainsec} to code taken from \babel\ +% system (by Alon Ziv)} +% \changes{hebrew~1.37}{1993/03/28}{% +% Use \cs{add@around} in defining font size commands. Small bug +% fixes (by Alon Ziv)} +% \changes{hebrew~1.38}{1993/04/20}{% +% \cs{everypar} changed so that \cs{noindent} works unmodified +% (by Alon Ziv, thanks to Chris Rowley)} +% \changes{hebrew~1.39}{1993/08/10}{% +% Redefined primitive sectioning commands. Changed \cs{include} so +% it finds \texttt{.h}, \texttt{.xet}, and \texttt{.ltx} files (no +% extension needed). Reinstated use of \cs{@ltor} (by Alon Ziv)} +% \changes{hebrew~1.40}{1993/09/01}{Added the \cs{@brackets} hack +% (by Alon Ziv)} +% \changes{hebrew~1.41}{1993/09/09}{% +% Reworked towards using NFSS2. Changed some macro names to be more +% logical: renamed \cs{@ltor} to \cs{@number}, \cs{@eng} to +% \cs{@latin}, and (in \texttt{hebrew.ldf}) \cs{@heb} to +% \cs{@hebrew} (by Alon Ziv)} +% \changes{hebrew~1.42}{1993/09/22}{% +% Made list environments work better. Fixed thebibliography +% environment (by Alon Ziv)} +% \changes{hebrew~2.0a}{1998/01/01}{% +% Completely rewritten for \LaTeXe\ and \babel\ support. Various +% input and font encodings (with NFSS2) are supported too. The +% original \pkg{hebrew.sty} is divided to a number of packages and +% definition files for better readability and extensibility. Added +% some user- and code-level documentation inside the \texttt{.dtx} +% and \texttt{.fdd} files, and \LaTeX -driven installation with +% \pkg{hebrew.ins} (by Boris Lavva)} +% \changes{hebrew~2.1}{2000/11/23}{% +% corrections from Sivan Toledo: sender name in letter, and section name in +% headings. (by Tzafrir Cohen)} +% \changes{hebrew~2.2}{2000/12/11}{% +% renamed hebrew letters to heb* (e.g.: alef renamed to hebalef) +% (by Tzafrir Cohen)} +% \changes{hebrew~2.3}{2001/02/27}{ +% added several \cs{@ifclassloaded}\{slides\} to allow the use of the +% slides class. (by Tzafrir Cohen)} +% \changes{hebrew~2.3a}{2001/07/09}{ +% The documentation should now be built fine (broken since at least +% 2.1, and probably 2.0) (by Tzafrir Cohen)} +% \changes{hebrew~2.3b}{2001/08/16}{ +% minor clean-ups. The documentation builds now with no warnings. +% Also removed \cs{R} from the caption macro (added in 2.1) +% Added internal \cs{@ensure@L} and \cs{@ensure@R} +% (Is there a real need for them? Maybe should they be exposed?) +% (by Tzafrir Cohen)} +% \changes{hebrew~2.3c}{2001/10/05}{ +% a temporary fix to the \cs{gim} macro. Should be replaced by stuff +% from hebcal. +% (by Tzafrir Cohen)} +% \changes{hebrew~2.3d}{2002/01/04}{ +% Initial support for the prosper class. Added \cs{arabicnorl} . +% (by Tzafrir Cohen)} +% \changes{hebrew~2.3e}{2002/08/09}{ +% Removing hebtech from this distriution (not relevant to babel), +% added \cs{HeblatexEncoding}. some docs cleanup +% (by Tzafrir Cohen)} +% \changes{hebrew~2.3f}{2002/12/26}{ +% redefined \cs{list} instead of redefining every environment +% that uses it. some pscolor handling, removed HeblatexEncoding +% (don't use 2.3e) (by Tzafrir Cohen)} +% \changes{hebrew~2.3g}{2003/06/05}{ +% Reimplemented the printing of Hebrew numerals and Hebrew +% counters; modified \pkg{hebcal.sty} to use this implementation +% when typesetting Hebrew dates; added option |full| to package +% \pkg{hebcal}; also removed some gratuitous +% spaces inserted by \pkg{hebcal.sty} by adding comment marks. +% CAUTION: the changes to \pkg{hebcal.sty} make it dependent on +% \pkg{babel} and not useable as a stand-alone package. Is this a +% problem? (by Ron Artstein)} +% +% \section{The Hebrew language}\label{sec:hebrew} +% +% The file \file{\filename}\footnote{The Hebrew language support +% files described in this section have version number \fileversion\ +% and were last revised on \filedate.} provides the following +% packages and files for Hebrew language support: +% \begin{description} +% \item[\file{hebrew.ldf}] file defines all the language-specific +% macros for the Hebrew language. +% \item[\file{rlbabel.def}] file is used by |hebrew.ldf| for +% bidirectional versions of the major \LaTeX{} commands and +% environments. It is designed to be used with other right-to-left +% languages, not only with Hebrew. +% \item[\pkg{hebcal.sty}] package defines a set of macros for +% computing Hebrew date from Gregorian one. +% \end{description} +% +% Additional Hebrew input and font encoding definition files that +% should be included and used with \file{hebrew.ldf} are: +% \begin{description} +% \item[\file{hebinp.dtx}] provides Hebrew input encodings, such as +% ISO 8859-8, MS Windows codepage 1255 or IBM PC codepage 862 +% (see Section~\ref{sec:hebinp} on page~\pageref{sec:hebinp}). +% \item[\file{hebrew.fdd}] contains Hebrew font encodings, related +% font definition files and \pkg{hebfont} package that +% provides Hebrew font switching commands (see +% Section~\ref{sec:hebfdd} on page~\pageref{sec:hebfdd} for +% further details). +% \end{description} +% +% \LaTeX~2.09 compatibility files are included with +% \file{heb209.dtx} and gives possibility to compile existing +% \LaTeX~2.09 Hebrew documents with small (if any) changes (see +% Section~\ref{sec:heb209} on page~\pageref{sec:heb209} for +% details). +% +% Finally, optional document class \pkg{hebtech} may be useful for +% writing theses and dissertations in both Hebrew and English (and +% any other languages included with \babel). It designed to meet +% requirements of the Graduate School of the Technion --- Israel +% Institute of Technology. +% +% \emph{As of version 2.3e hebtech is no longer distributed together +% with heblatex. It should be part of a new "hebclasses" package} +% +% \subsection{Acknowledgement} +% +% The following people have contributed to Hebrew package in one +% way or another, knowingly or unknowingly. In alphabetical order: +% Irina Abramovici, Yaniv Bargury, Yael Dubinsky, Sergio Fogel, +% Dan Haran, Rama Porrat, Michail Rozman, Alon Ziv. +% +% Tatiana Samoilov and Vitaly Surazhsky found a number of serious +% bugs in preliminary version of Hebrew package. +% +% A number of other people have contributed comments and +% information. Specific contributions are acknowledged within the +% document. +% +% I want to thank my wife, Vita, and son, Mishka, for their +% infinite love and patience. +% +% If you made a contribution and I haven't mentioned it, don't +% worry, it was an accident. I'm sorry. Just tell me and I will add +% you to the next version. +% +% \StopEventually{} +% +% \subsection{The {\normalfont\dst{}} modules} +% +% The following modules are used in the implementation to direct +% \dst{} in generating external files: +% \begin{center} +% \begin{tabular}{@{}ll} +% driver & produce a documentation driver file \\[4pt] +% hebrew & produce Hebrew language support file\\ +% rightleft & create right-to-left support file\\ +% calendar & create Hebrew calendar package +% \end{tabular} +% \end{center} +% A typical \dst{} command file would then have entries like: +% \begin{quote} +% |\generateFile{hebrew.ldf}{t}{\from{hebrew.dtx}{hebrew}}| +% \end{quote} +% +% \subsection{Hebrew language definitions} +% +% The macro |\LdfInit| takes care of preventing that this file is +% loaded more than once, checking the category code of the |@| +% sign, etc. +% \begin{macrocode} +%<*hebrew> +\LdfInit{hebrew}{captionshebrew} +% \end{macrocode} +% +% When this file is read as an option, i.e., by the |\usepackage| +% command, |hebrew| will be an `unknown' language, in which case we +% have to make it known. So we check for the existence of +% |\l@hebrew| to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\l@hebrew\@undefined + \@nopatterns{Hebrew}% + \adddialect\l@hebrew0 +\fi +% \end{macrocode} +% +% \begin{macro}{\hebrewencoding} +% \emph{FIX DOCS REGARDING 8BIT} +% +% Typesetting Hebrew texts implies that a special input and output +% encoding needs to be used. Generally, the user may choose +% between different available Hebrew encodings provided. The +% current support for Hebrew uses all available fonts from the +% Hebrew University of Jerusalem encoded in `old-code' 7-bit +% encoding also known as Israeli Standard SI-960. We define for +% these fonts the Local Hebrew Encoding |LHE| (see the file +% |hebrew.fdd| for more details), and the |LHE| encoding definition +% file should be loaded by default. +% +% Other fonts are available in windows-cp1255 (a superset of ISO-8859-8 +% with nikud). For those, the encoding |HE8| should be used. Such fonts +% are, e.g., windows' TrueType fonts (once cnverted to Type1 or MetaFont) +% and IBM's Type1 fonts. +% +% However, if an user wants to use another font encoding, for +% example, cyrillic encoding T2 and extended latin encoding T1, --- +% he/she has to load the corresponding file \emph{before} the +% \pkg{hebrew} package. This may be done in the following way: +% \begin{quote} +% |\usepackage[LHE,T2,T1]{fontenc}|\\ +% |\usepackage[hebrew,russian,english]{babel}| +% \end{quote} +% We make sure that the |LHE| encoding is known to \LaTeX{} at end +% of this package. +% +% Also note that if you want to use the encoding |HE8| , you should define +% the following in your document, \emph{before loading babel}: +% \begin{quote} +% |\def\HeblatexEncoding{HE8}|\\ +% |\def\HeblatexEncodingFile{he8enc}| +% \end{quote} +% \changes{hebrew-2.3h}{2004/02/20}{Make LHE the default encoding for +% compatibility reasons} +% \begin{macrocode} +\providecommand{\HeblatexEncoding}{LHE}% +\providecommand{\HeblatexEncodingFile}{lheenc}% +\newcommand{\heblatex@set@encoding}[2]{ +} +\AtEndOfPackage{% + \@ifpackageloaded{fontenc}{% + \@ifl@aded{def}{% + \HeblatexEncodingFile}{\def\hebrewencoding{\HeblatexEncoding}}{}% + }{% + \input{\HeblatexEncodingFile.def}% + \def\hebrewencoding{\HeblatexEncoding}% + }} +% \end{macrocode} +% \end{macro} +% +% We also need to load inputenc package with one of the Hebrew +% input encodings. By default, we set up the |8859-8| codepage. +% If an user wants to use many input encodings in the same +% document, for example, the MS Windows Hebrew codepage |cp1255| +% and the standard IBM PC Russian codepage |cp866|, he/she has to +% load the corresponding file \emph{before} the hebrew package +% too. This may be done in the following way: +% \begin{quote} +% |\usepackage[cp1255,cp866]{inputenc}|\\ +% |\usepackage[hebrew,russian,english]{babel}| +% \end{quote} +% +% An user can switch input encodings in the document using the +% command |\inputencoding|, for example, to use the |cp1255|: +% \begin{quote} +% |\inputencoding{cp1255}| +% \end{quote} +% \begin{macrocode} +\AtEndOfPackage{% + \@ifpackageloaded{inputenc}{}{\RequirePackage[8859-8]{inputenc}}} +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Hebrew language. +% +% \begin{macro}{\hebrewhyphenmins} +% This macro is used to store the correct values of the hyphenation +% parameters |\lefthyphenmin| and |\righthyphenmin|. They are set +% to~2. +% \changes{hebrew~2.0b}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\captionshebrew} +% The macro |\captionshebrew| replaces all captions used in the four +% standard document classes provided with \LaTeXe with their Hebrew +% equivalents. +% \changes{hebrew-2.0b}{2000/09/20}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionshebrew{% + \def\prefacename{\@ensure@R{\hebmem\hebbet\hebvav\hebalef}}% + \def\refname{\@ensure@R{\hebresh\hebshin\hebyod\hebmem\hebtav\ % + \hebmem\hebqof\hebvav\hebresh\hebvav\hebtav}}% + \def\abstractname{\@ensure@R{\hebtav\hebqof\hebtsadi\hebyod\hebresh}}% + \def\bibname{\@ensure@R{\hebbet\hebyod\hebbet\heblamed\hebyod\hebvav% + \hebgimel\hebresh\hebpe\hebyod\hebhe}}% + \def\chaptername{\@ensure@R{\hebpe\hebresh\hebqof}}% + \def\appendixname{\@ensure@R{\hebnun\hebsamekh\hebpe\hebhet}}% + \def\contentsname{\@ensure@R{% + \hebtav\hebvav\hebkaf\hebfinalnun\ % + \hebayin\hebnun\hebyod\hebyod\hebnun\hebyod\hebfinalmem}}% + \def\listfigurename{\@ensure@R{% + \hebresh\hebshin\hebyod\hebmem\hebtav\ % + \hebalef\hebyod\hebvav\hebresh\hebyod\hebfinalmem}}% + \def\listtablename{\@ensure@R{% + \hebresh\hebshin\hebyod\hebmem\hebtav\ + \hebtet\hebbet\heblamed\hebalef\hebvav\hebtav}}% + \def\indexname{\@ensure@R{\hebmem\hebpe\hebtav\hebhet}}% + \def\figurename{\@ensure@R{\hebalef\hebyod\hebvav\hebresh}}% + \def\tablename{\@ensure@R{\hebtet\hebbet\heblamed\hebhe}}% + \def\partname{\@ensure@R{\hebhet\heblamed\hebqof}}% + \def\enclname{\@ensure@R{\hebresh\hebtsadi"\hebbet}}% + \def\ccname{\@ensure@R{\hebhe\hebayin\hebtav\hebqof\hebyod% + \hebfinalmem}}% + \def\headtoname{\@ensure@R{\hebalef\heblamed}}% + \def\pagename{\@ensure@R{\hebayin\hebmem\hebvav\hebdalet}}% + \def\psname{\@ensure@R{\hebnun.\hebbet.}}% + \def\seename{\@ensure@R{\hebresh\hebalef\hebhe}}% + \def\alsoname{\@ensure@R{\hebresh\hebalef\hebhe \hebgimel% + \hebmemesof}}% + \def\proofname{\@ensure@R{\hebhe\hebvav\hebkaf\hebhet\hebhe}} + \def\glossaryname{\@ensure@L{Glossary}}% <-- Needs translation +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\slidelabel} +% Here we fix the macro |slidelabel| of the seminar package. Note +% that this still won't work well enough when overlays will be +% involved +% \begin{macrocode} +\@ifclassloaded{seminar}{% + \def\slidelabel{\bf \if@rl\R{\hebshin\hebqof\hebfinalpe{} \theslide}% + \else\L{Slide \theslide}% + \fi}% +}{} +% \end{macrocode} +% \end{macro} +% +% Here we provide an user with translation of Gregorian dates +% to Hebrew. In addition, the \pkg{hebcal} package can be used +% to create Hebrew calendar dates. +% +% \begin{macro}{\hebmonth} +% The macro |\hebmonth{|\emph{month}|}| produces month names in +% Hebrew. +% \begin{macrocode} +\def\hebmonth#1{% + \ifcase#1\or \hebyod\hebnun\hebvav\hebalef\hebresh\or % + \hebpe\hebbet\hebresh\hebvav\hebalef\hebresh\or % + \hebmem\hebresh\hebfinaltsadi\or % + \hebalef\hebpe\hebresh\hebyod\heblamed\or % + \hebmem\hebalef\hebyod\or \hebyod\hebvav\hebnun\hebyod\or % + \hebyod\hebvav\heblamed\hebyod\or % + \hebalef\hebvav\hebgimel\hebvav\hebsamekh\hebtet\or % + \hebsamekh\hebpe\hebtet\hebmem\hebbet\hebresh\or % + \hebalef\hebvav\hebqof\hebtet\hebvav\hebbet\hebresh\or % + \hebnun\hebvav\hebbet\hebmem\hebbet\hebresh\or % + \hebdalet\hebtsadi\hebmem\hebbet\hebresh\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hebdate} +% The macro |\hebdate{|\emph{day}|}{|\emph{month}|}{|\emph{year}|}| +% translates a given Gregorian date to Hebrew. +% \begin{macrocode} +\def\hebdate#1#2#3{% + \beginR\beginL\number#1\endL\ \hebbet\hebmonth{#2} + \beginL\number#3\endL\endR} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\hebday} +% The macro |\hebday| will replace |\today| command when in Hebrew +% mode. +% \begin{macrocode} +\def\hebday{\hebdate{\day}{\month}{\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datehebrew} +% The macro |\datehebrew| redefines the command |\today| to produce +% Gregorian dates in Hebrew. It uses the macro |\hebday|. +% \begin{macrocode} +\def\datehebrew{\let\today=\hebday} +% \end{macrocode} +% \end{macro} +% +% The macro |\extrashebrew| will perform all the extra definitions +% needed for the Hebrew language. The macro |\noextrashebrew| +% is used to cancel the actions of |\extrashebrew|. +% +% \begin{macro}{\extrashebrew} +% We switch font encoding to Hebrew and direction to +% right-to-left. We cannot use the regular language switching +% commands (for example, |\sethebrew| and |\unsethebrew| or +% |\selectlanguage{hebrew}|), when in restricted horizontal mode, +% because it will result in \emph{unbalanced} |\beginR| or +% |\beginL| primitives. +% Instead, in \TeX 's restricted horizontal mode, the +% |\L{|\emph{latin text}|}| and |\R{|\emph{hebrew text}|}|, or +% |\embox{|\emph{latin text}|}| and |\hmbox{|\emph{hebrew text}|}| +% should be used. +% +% Hence, we use |\beginR| and |\beginL| switching commands only +% when not in restricted horizontal mode. +% \begin{macrocode} +\addto\extrashebrew{% + \tohebrew% + \ifhmode\ifinner\else\beginR\fi\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\noextrashebrew} +% The macro |\noextrashebrew| is used to cancel the actions of +% |\extrashebrew|. We switch back to the previous font encoding and +% restore left-to-right direction. +% \begin{macrocode} +\addto\noextrashebrew{% + \fromhebrew% + \ifhmode\ifinner\else\beginL\fi\fi} +% \end{macrocode} +% \end{macro} +% +% Generally, we can switch to- and from- Hebrew by means of +% standard \babel -defined commands, for example, +% \begin{quote} +% |\selectlanguage{hebrew}| +% \end{quote} +% or +% \begin{quote} +% |\begin{otherlanguage}{hebrew}|\\ +% \hspace*{1.5em} some Hebrew text\\ +% |\end{otherlanguage}| +% \end{quote} +% Now we define two additional commands that offer the possibility +% to switch to and from Hebrew language. These commands are +% backward compatible with the previous versions of +% \pkg{hebrew.sty}. +% +% \begin{macro}{\sethebrew} +% \begin{macro}{\unsethebrew} +% The command |\sethebrew| will switch from the current font encoding +% to the hebrew font encoding, and from the current direction of +% text to the right-to-left mode. The command |\unsethebrew| switches +% back. +% +% Both commands use standard right-to-left switching macros +% |\setrllanguage{|\emph{ r2l language name}|}| and +% |\unsetrllanguage{|\emph{r2l language name}|}|, that +% defined in the \file{rlbabel.def} file. +% \begin{macrocode} +\def\sethebrew{\setrllanguage{hebrew}} +\def\unsethebrew{\unsetrllanguage{hebrew}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\hebrewtext} +% \begin{macro}{\nohebrewtext} +% The following two commands are \emph{obsolete} and work only +% in \LaTeX 2.09 compatibility mode. They are synonyms of +% |\sethebrew| and |\unsethebrew| defined above. +% \begin{macrocode} +\if@compatibility + \let\hebrewtext=\sethebrew + \let\nohebrewtext=\unsethebrew +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\tohebrew} +% \begin{macro}{\fromhebrew} +% These two commands change only the current font encoding to- and +% from- Hebrew encoding. Their implementation uses +% |\@torl{|\emph{language name}|}| and |\@fromrl| macros defined in +% \file{rlbabel.def} file. Both commands may be useful \emph{only} +% for package and class writers, not for regular users. +% \begin{macrocode} +\def\tohebrew{\@torl{hebrew}}% +\def\fromhebrew{\@fromrl} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@hebrew} +% Sometimes we need to preserve Hebrew mode without knowing in +% which environment we are located now. For these cases, the +% |\@hebrew{|\emph{hebrew text}|}| macro will be useful. Not that +% this macro is similar to the |\@number| and |\@latin| macros +% defined in \file{rlbabel.def} file. +% \begin{macrocode} +\def\@@hebrew#1{\beginR{{\tohebrew#1}}\endR} +\def\@hebrew{\protect\@@hebrew} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Hebrew numerals} +% +% We provide commands to print numbers in the traditional +% notation using Hebrew letters. We need commands that print +% a Hebrew number from a decimal input, as well as commands +% to print the value of a counter as a Hebrew number. +% \begin{macro}{\if@gim@apost} +% \begin{macro}{\if@gim@final} +% Hebrew numbers can be written in various styles: with or without +% apostrophes, and with the letters kaf, mem, nun, pe, tsadi as either +% final or initial forms when they are the last letters in the +% sequence. We provide two flags to set the style options. +% \begin{macrocode} +\newif\if@gim@apost % whether we print apostrophes +\newif\if@gim@final % whether we use final or initial letters +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\hebrewnumeral} +% \begin{macro}{\Hebrewnumeral} +% \begin{macro}{\Hebrewnumeralfinal} +% The commands that print a Hebrew number +% must specify the style locally: relying on a global style +% option could cause a counter to +% print in an inconsistent manner---for instance, page numbers +% might appear in different styles if the global style option +% changed mid-way through a document. +% The commands only allow three of the four possible flag +% combinations (I do not know of a use that requires the +% combination of final letters and no apostrophes --RA). +% +% Each command sets the style flags and calls |\@hebrew@numeral|. +% Double braces are used in order to protect the values of +% |\@tempcnta| and |\@tempcntb|, which are changed by this call; +% they also keep the flag assignments local (this is not important +% because the global values are never used). +% \begin{macrocode} +\newcommand*{\hebrewnumeral}[1] % no apostrophe, no final letters + {{\@gim@finalfalse\@gim@apostfalse\@hebrew@numeral{#1}}} +\newcommand*{\Hebrewnumeral}[1] % apostrophe, no final letters + {{\@gim@finalfalse\@gim@aposttrue\@hebrew@numeral{#1}}} +\newcommand*{\Hebrewnumeralfinal}[1] % apostrophe, final letters + {{\@gim@finaltrue\@gim@aposttrue\@hebrew@numeral{#1}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\alph} +% \begin{macro}{\@alph} +% \begin{macro}{\Alph} +% \begin{macro}{\@Alph} +% \begin{macro}{\Alphfinal} +% \begin{macro}{\@Alphfinal} +% Counter-printing commands are based on the above commands. The +% natural name for the counter-printing commands is |\alph|, because +% Hebrew numerals are the only way to represent numbers with +% Hebrew letters (kaf always means~20, never~11). Hebrew has no +% uppercase letters, hence no need for the familiar meaning of |\Alph|; +% we therefore define |\alph| to print counters as Hebrew numerals +% without apostrophes, and |\Alph| to print with apostrophes. A third +% form, |\Alphfinal|, is provided to print with apostrophes and final +% letters, as is required for Hebrew year designators. The commands +% |\alph| and |\Alph| are defined in \pkg{latex.ltx}, and we only +% need to redefine the internal commands |\@alph| and +% |\@Alph|; for |\Alphfinal| we need to provide both a wrapper and +% an internal command. +% The counter printing commands are made semi-robust: without the +% |\protect|, commands like |\theenumii| break (I'm not quite clear +% on why this happens, --RA); at the same time, we cannot make the +% commands too robust (e.g.~with |\DeclareRobustCommand|) because +% this would enter the command name rather than its value into +% files like |.aux|, |.toc| etc\@. +% The old meanings of meaning of |\@alph| and |\@Alph| are saved +% upon entering Hebrew mode and restored upon exiting it. +% \begin{macrocode} +\addto\extrashebrew{% + \let\saved@alph=\@alph% + \let\saved@Alph=\@Alph% + \renewcommand*{\@alph}[1]{\protect\hebrewnumeral{\number#1}}% + \renewcommand*{\@Alph}[1]{\protect\Hebrewnumeral{\number#1}}% + \def\Alphfinal#1{\expandafter\@Alphfinal\csname c@#1\endcsname}% + \providecommand*{\@Alphfinal}[1]{\protect\Hebrewnumeralfinal{\number#1}}} +\addto\noextrashebrew{% + \let\@alph=\saved@alph% + \let\@Alph=\saved@Alph} +% \end{macrocode} +% Note that |\alph| (without apostrophes) is already the +% appropriate choice for the second-level enumerate label, and +% |\Alph| (with apostrophes) is an appropriate choice for appendix; +% however, the default \LaTeX\ labels need to be redefined for +% appropriate cross-referencing, see below. +% \LaTeX\ default class files specify |\Alph| for +% the fourth-level enumerate level, this should probably be changed. +% Also, the way labels get flushed left by default looks inappropriate +% for Hebrew numerals, so we should redefine |\labelenumii| as well +% as |\labelenumiv| (presently not implemented). +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\theenumii} +% \begin{macro}{\theenumiv} +% \begin{macro}{\label} +% Cross-references to counter labels need to be printed according +% to the language environment in which a label was issued, not +% the environment in which it is called: for example, a label~(1b) +% issued in a Latin environment should be referred to as~(1b) in a +% Hebrew text, and label~(2dalet) issued in a Hebrew environment +% should be referred to as~(2dalet) in a Latin text. This was the +% unanimous opinion in a poll sent to the Ivri\TeX\ list. +% We therefore redefine |\theenumii| and |\theenumiv|, so that an +% explicit language instruction gets written to the |.aux| file. +% \begin{macrocode} +\renewcommand{\theenumii} + {\if@rl\protect\hebrewnumeral{\number\c@enumii}% + \else\protect\L{\protect\@@alph{\number\c@enumii}}\fi} +\renewcommand{\theenumiv} + {\if@rl\protect\Hebrewnumeral{\number\c@enumiv}% + \else\protect\L{\protect\@@Alph{\number\c@enumiv}}\fi} +% \end{macrocode} +% We also need to control for the font and direction in which a +% counter label is printed. Direction is straightforward: a Latin +% label like~(1b) should be written left-to-right when called in a +% Hebrew text, and a Hebrew label like~(2dalet) should be written +% right-to-left when called in a Latin text. The font question is +% more delicate, because we should decide whether the numerals +% should be typeset in the font of the language enviroment in which +% the label was issued, or that of the environment in which it is +% called. +% \begin{itemize} +% \item +% A purely numeric label like~(23) looks best if it is set in the +% font of the surrounding language. +% \item +% But a mixed alphanumeric label like~(1b) lookes weird if +% the~`1' is taken from the Hebrew font; likewise, (2dalet) looks +% weird if the~`2' is taken from a Latin font. +% \item +% Finally, mixing the two possibilities is worst, because a +% single Hebrew sentence referring to examples~(1b) and~(2) would +% take the~`1' from the Latin font and the~`2' from the Hebrew +% font, and this looks really awful. (It is also very hard to +% implement). +% \end{itemize} +% In light of the conflicting considerations it seems like there's +% no perfect solution. I have chosen to implement the top option, +% where numerals are taken from the font of the surrounding +% language, because it seems to me that reference to purely numeric +% labels is the most common, so this gives a good solution to the +% majority of cases and a mediocre solution to the minority. +% +% We redefine the |\label| command which writes to the +% |.aux| file. Depending on the language environment we issue +% appropriate |\beginR/L|$\cdots$|\endR/L| commands to control the +% direction without affecting the font. Since these commands do not +% affect the value of |\if@rl|, we cannot use the macro +% |\@brackets| to determine the correct brackets to be used with +% |\p@enumiii|; instead, we let the language environment determine an +% explicit definition. +% \begin{macrocode} +\def\label#1{\@bsphack + \if@rl + \def\p@enumiii{\p@enumii)\theenumii(}% + \protected@write\@auxout{}% + {\string\newlabel{#1}{{\beginR\@currentlabel\endR}{\thepage}}}% + \else + \def\p@enumiii{\p@enumii(\theenumii)}% + \protected@write\@auxout{}% + {\string\newlabel{#1}{{\beginL\@currentlabel\endL}{\thepage}}}% + \fi + \@esphack} +% \end{macrocode} +% NOTE: it appears that the definition of |\label| is +% language-independent and thus belongs in \pkg{rlbabel.def}, but +% this is not the case. The decision to typeset label numerals +% in the font of the surrounding language is reasonable for Hebrew, +% because mixed-font (1b) and (2dalet) are somewhat acceptable. The +% same may not be acceptable for Arabic, whose numeral glyphs are +% radically different from those in the Latin fonts. The decision +% about the direction may also be different for Arabic, which is +% more right-to-left oriented than Hebrew (two examples: dates like +% 15/6/2003 are written left-to-right in Hebrew but right-to-left +% in Arabic; equations like $1+2=3$ are written left-to-right in +% Hebrew but right-to-left in Arabic elementary school textbooks +% using Arabic numeral glyphs). My personal hunch is that a label +% like~(1b) in an Arabic text would be typeset left-to-right if +% the~`1' is a Western glyph, but right-to-left if the~`1' is an +% Arabic glyph. But this is just a guess, I'd have to ask Arab +% typesetters to find the correct answer. --RA. +% \end{macro} +% \end{macro} +% \end{macro} +% \begin{macro}{\appendix} +% The following code provides for the proper printing of appendix +% numbers in tables of contents. Section and chapter headings are +% normally bilingual: regardless of the text language, the author +% supplies each section/chapter with two headings---one for the +% Hebrew table of contents and one for the Latin table of contents. +% It makes sense that the label should be a Latin letter in the +% Latin table of contents and a Hebrew letter in the Hebrew table +% of contents. The definition is similar to that of |\theenumii| +% and |\theenumiv| above, but additional |\protect| commands ensure +% that the entire condition is written the |.aux| file. The +% appendix number will therefore be typeset according to the +% environment in which it is used rather than issued: a Hebrew +% number (with apostrophes) in a Hebrew environment and a Latin +% capital letter in a Latin environment (the command +% |\@@Alph| is set in \pkg{rlbabel.def} to hold the default meaning +% of \LaTeX\ [latin] |\@Alph|, regardless of the mode in which it is +% issued). The net result is that +% the second appendix will be marked with~`B' in the Latin table of +% contents and with `bet' in the Hebrew table of contents; the mark +% in the main text will depend on the language of the appendix itself. +% \begin{macrocode} +\@ifclassloaded{letter}{}{% +\@ifclassloaded{slides}{}{% + \let\@@appendix=\appendix% + \@ifclassloaded{article}{% + \renewcommand\appendix{\@@appendix% + \renewcommand\thesection + {\protect\if@rl\protect\Hebrewnumeral{\number\c@section}% + \protect\else\@@Alph\c@section\protect\fi}}} + {\renewcommand\appendix{\@@appendix% + \renewcommand\thechapter + {\protect\if@rl\protect\Hebrewnumeral{\number\c@chapter}% + \protect\else\@@Alph\c@chapter\protect\fi}}}}} +% \end{macrocode} +% QUESTION: is this also the appropriate way to refer to an +% appendix in the text, or should we retain the original label the +% same way we did with |enumerate| labels? +% ANOTHER QUESTION: are similar redefinitions needed for other +% counters that generate texts in bilingual lists like |.lof/.fol| +% and |.lot/.tol|? --RA. +% \end{macro} +% \begin{macro}{\@hebrew@numeral} +% The command |\@hebrew@numeral| prints a Hebrew number. The groups +% of thousands, millions, billions are separated by apostrophes and +% typeset without apostrophes or final letters; the remainder +% (under 1000) is typeset conventionally, with the selected styles +% for apostrophes and final letters. +% The function calls on |\gim@no@mil| to typeset each +% three-digit block. The algorithm +% is recursive, but the maximum recursion depth is~4 because \TeX\ +% only allows numbers up to $2^{31}-1 = 2{,}147{,}483{,}647$. +% The typesetting routine is wrapped in |\@hebrew| in order to +% ensure that numbers are always typeset in Hebrew mode. +% +% Initialize: |\@tempcnta| holds the value, |\@tempcntb| is used for +% calculations. +% \begin{macrocode} +\newcommand*{\@hebrew@numeral}[1] +{\@hebrew{\@tempcnta=#1\@tempcntb=#1\relax + \divide\@tempcntb by 1000 +% \end{macrocode} +% If we're under 1000, call |\gim@nomil| +% \begin{macrocode} + \ifnum\@tempcntb=0\gim@nomil\@tempcnta\relax +% \end{macrocode} +% If we're above 1000 then force no apostrophe and no final letter +% styles for the value above~1000, recur for the value above~1000, +% add an apostrophe, and call |\gim@nomil| for the remainder. +% \begin{macrocode} + \else{\@gim@apostfalse\@gim@finalfalse\@hebrew@numeral\@tempcntb}'% + \multiply\@tempcntb by 1000\relax + \advance\@tempcnta by -\@tempcntb\relax + \gim@nomil\@tempcnta\relax + \fi +}} +% \end{macrocode} +% NOTE: is it the case that 15,000 and 16,000 are written as +% yod-he and yod-vav, rather than tet-vav and tet-zayin? This +% vaguely rings a bell, but I'm not certain. If this is the case, +% then the current behavior is incorrect and should be changed. --RA. +% \end{macro} +% \begin{macro}{\gim@nomil} +% The command |\gim@nomil| typesets an integer between 0~and~999 +% (for~0 it typesets nothing). The code has been modified from the +% old |hebcal.sty| +% (appropriate credits---Boris Lavva and Michail Rozman ?). +% |\@tempcnta| holds the total value that remains to be typeset. +% At each stage we find the highest valued letter that is +% less than or equal to |\@tempcnta|, and call on |\gim@print| to +% subtract this value and print the letter. +% +% Initialize: |\@tempcnta| holds the value, there is no previous +% letter. +% \begin{macrocode} +\newcommand*{\gim@nomil}[1]{\@tempcnta=#1\@gim@prevfalse +% \end{macrocode} +% Find the hundreds digit. +% \begin{macrocode} + \@tempcntb=\@tempcnta\divide\@tempcntb by 100\relax % hundreds digit + \ifcase\@tempcntb % print nothing if no hundreds + \or\gim@print{100}{\hebqof}% + \or\gim@print{200}{\hebresh}% + \or\gim@print{300}{\hebshin}% + \or\gim@print{400}{\hebtav}% + \or\hebtav\@gim@prevtrue\gim@print{500}{\hebqof}% + \or\hebtav\@gim@prevtrue\gim@print{600}{\hebresh}% + \or\hebtav\@gim@prevtrue\gim@print{700}{\hebshin}% + \or\hebtav\@gim@prevtrue\gim@print{800}{\hebtav}% + \or\hebtav\@gim@prevtrue\hebtav\gim@print{900}{\hebqof}% + \fi +% \end{macrocode} +% Find the tens digit. The numbers 15 and 16 are traditionally +% printed as tet-vav ($9+6$) and tet-zayin ($9+7$) to avoid +% spelling the Lord's name. +% \begin{macrocode} + \@tempcntb=\@tempcnta\divide\@tempcntb by 10\relax % tens digit + \ifcase\@tempcntb % print nothing if no tens + \or % number between 10 and 19 + \ifnum\@tempcnta = 16 \gim@print {9}{\hebtet}% tet-zayin + \else\ifnum\@tempcnta = 15 \gim@print {9}{\hebtet}% tet-vav + \else \gim@print{10}{\hebyod}% + \fi % \@tempcnta = 15 + \fi % \@tempcnta = 16 +% \end{macrocode} +% Initial or final forms are selected according to the current +% style option; |\gim@print| will force a non-final letter in +% non-final position by means of a local style change. +% \begin{macrocode} + \or\gim@print{20}{\if@gim@final\hebfinalkaf\else\hebkaf\fi}% + \or\gim@print{30}{\heblamed}% + \or\gim@print{40}{\if@gim@final\hebfinalmem\else\hebmem\fi}% + \or\gim@print{50}{\if@gim@final\hebfinalnun\else\hebnun\fi}% + \or\gim@print{60}{\hebsamekh}% + \or\gim@print{70}{\hebayin}% + \or\gim@print{80}{\if@gim@final\hebfinalpe\else\hebpe\fi}% + \or\gim@print{90}{\if@gim@final\hebfinaltsadi\else\hebtsadi\fi}% + \fi +% \end{macrocode} +% Print the ones digit. +% \begin{macrocode} + \ifcase\@tempcnta % print nothing if no ones + \or\gim@print{1}{\hebalef}% + \or\gim@print{2}{\hebbet}% + \or\gim@print{3}{\hebgimel}% + \or\gim@print{4}{\hebdalet}% + \or\gim@print{5}{\hebhe}% + \or\gim@print{6}{\hebvav}% + \or\gim@print{7}{\hebzayin}% + \or\gim@print{8}{\hebhet}% + \or\gim@print{9}{\hebtet}% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\gim@print} +% \begin{macro}{\if@gim@prev} +% The actual printing routine typesets a digit with the appropriate +% apostrophes: if a number sequence consists of a +% single letter then it is followed by a single apostrophe, and if +% it consists of more than one letter then a double +% apostrophe is inserted before the last letter. +% We typeset the letters one at a time, keeping a flag that tells +% us if any previous letters had been typeset. +% \begin{macrocode} +\newif\if@gim@prev % flag if a previous letter has been typeset +% \end{macrocode} +% For each letter, we +% first subtract its value from the total. Then, +% \begin{itemize} +% \item +% if the result is zero then this is the last letter; we check +% the flag to see if this is the only letter and print it with +% the appropriate apostrophe; +% \item +% if the result is not zero then there remain additional letters +% to be typeset; we print without an apostrophe and set the +% `previous letter' flag. +% \end{itemize} +% |\@tempcnta| holds the total value that remains to be typeset. +% We first deduct the letter's value from |\@tempcnta|, +% so |\@tempcnta| is zero if and only if this is the last letter. +% \begin{macrocode} +\newcommand*{\gim@print}[2]{% #2 is a letter, #1 is its value. + \advance\@tempcnta by -#1\relax% deduct the value from the remainder +% \end{macrocode} +% If this is the last letter, we print with the appropriate +% apostrophe (depending on the style option): +% if there is a preceding letter, print |"x| if the style calls for +% apostrophes, |x| if it doesn't; +% otherwise, this is the only letter: print |x'| if the style calls +% for apostrophes, |x| if it doesn't. +% \begin{macrocode} + \ifnum\@tempcnta=0% if this is the last letter + \if@gim@prev\if@gim@apost"\fi#2% + \else#2\if@gim@apost'\fi\fi% +% \end{macrocode} +% If this is not the last letter: print a non-final form (by +% forcing a local style option) and set the `previous letter' flag. +% \begin{macrocode} + \else{\@gim@finalfalse#2}\@gim@prevtrue\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\hebr} +% \begin{macro}{\gim} +% The older Hebrew counter commands |\hebr| and |\gim| are retained +% in order to keep older documents from breaking. They are set to +% be equivalent to |\alph|, and their use is deprecated. Note that +% |\hebr| gives different results than it had in the past---it +% now typesets 11 as yod-alef rather than kaf. +% \begin{macrocode} +\let\hebr=\alph +\let\gim=\alph +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% For backward compatibility with `older' \pkg{hebrew.sty} +% packages, we define Hebrew equivalents of some useful \LaTeX\ +% commands. Note, however, that 8-bit macros defined in Hebrew +% are no longer supported. +% \begin{macrocode} +\def\hebcopy{\protect\R{\hebhe\hebayin\hebtav\hebqof}} +\def\hebincl{\protect\R{\hebresh\hebtsadi"\hebbet}} +\def\hebpage{\protect\R{\hebayin\hebmem\hebvav\hebdalet}} +\def\hebto{\protect\R{\hebayin\hebdalet}} +% \end{macrocode} +% |\hadgesh| produce ``poor man's bold'' (heavy printout), when +% used with normal font glyphs. It is advisable to use bold font +% (for example, \emph{Dead Sea}) instead of this macro. +% \begin{macrocode} +\def\hadgesh#1{\leavevmode\setbox0=\hbox{#1}% + \kern-.025em\copy0\kern-\wd0 + \kern.05em\copy0\kern-\wd0 + \kern-.025em\raise.0433em\box0 } +% \end{macrocode} +% |\piska| and |\piskapiska| sometimes used in `older' hebrew +% sources, and should not be used in \LaTeXe. +% \begin{macrocode} +\if@compatibility + \def\piska#1{\item{#1}\hangindent=-\hangindent} + \def\piskapiska#1{\itemitem{#1}\hangindent=-\hangindent} +\fi +% \end{macrocode} +% The following commands are simply synonyms for the standard ones, +% provided with \LaTeXe. +% \begin{macrocode} +\let\makafgadol=\textendash +\let\makafanak=\textemdash +\let\geresh=\textquoteright +\let\opengeresh=\textquoteright +\let\closegeresh=\textquoteleft +\let\openquote=\textquotedblright +\let\closequote=\textquotedblleft +\let\leftquotation=\textquotedblright +\let\rightquotation=\textquotedblleft +% \end{macrocode} +% +% We need to ensure that Hebrew is used as the default +% right-to-left language at |\begin{document}|. The mechanism of +% defining the |\@rllanguagename| is the same as in \babel 's +% |\languagename|: the last right-to-left language in the +% |\usepackage{babel}| line is set as the default right-to-left +% language at document beginning. +% +% For example, the following code: +% \begin{quote} +% |\usepackage[russian,hebrew,arabic,greek,english]{babel}| +% \end{quote} +% will set the Arabic language as the default right-to-left +% language and the English language as the default language. +% As a result, the commands |\L{}| and |\embox{}| will use English +% and |\R{}| and |\hmbox{}| will use Arabic by default. These +% defaults can be changed with the next |\sethebrew| or +% |\selectlanguage{|\emph{language name}|}| command. +% \begin{macrocode} +\AtBeginDocument{\def\@rllanguagename{hebrew}} +% \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 |@| to its +% original value. +% \begin{macrocode} +\ldf@finish{hebrew} +%</hebrew> +% \end{macrocode} +% +% \subsection{Right to left support} +% +% This file \pkg{rlbabel.def} defines necessary bidirectional macro +% support for \LaTeXe. It is designed for use not only with Hebrew, +% but with any Right-to-Left languages, supported by \babel. The +% macros provided in this file are language and encoding +% independent. +% +% Right-to-left languages will use \TeX\ extensions, namely \TeX\ +% primitives |\beginL|, |\endL| and |\beginR|, |\endR|, currently +% implemented only in $\varepsilon$-\TeX\ and in \TeX{-}{-}\XeT. +% +% If $\varepsilon$-\TeX\ is used, we should switch it to the +% \emph{enhanced} mode: +% \begin{macrocode} +%<*rightleft> +\ifx\TeXXeTstate\undefined\else% + \TeXXeTstate=1 +\fi +% \end{macrocode} +% +% Note, that $\varepsilon$-\TeX 's format file should be created +% for \emph{extended} mode. Mode can be checked by running +% $\varepsilon$-\TeX\ on some \TeX{} file, for example: +% \begin{quote} +% |This is e-TeX, Version 3.14159-1.1 (Web2c 7.0)|\\ +% |entering extended mode| +% \end{quote} +% The second line should be \texttt{entering extended mode}. +% +% We check if user uses Right-to-Left enabled engine instead of +% regular Knuth's \TeX: +% \begin{macrocode} +\ifx\beginL\@undefined% + \newlinechar`\^^J + \typeout{^^JTo avoid this error message,^^J% + run TeX--XeT or e-TeX engine instead of regular TeX.^^J} + \errmessage{Right-to-Left Support Error: use TeX--XeT or e-TeX + engine}% +\fi +% \end{macrocode} +% +% \subsubsection{Switching from LR to RL mode and back} +% +% \cs{@torl} and \cs{@fromrl} are called each time the horizontal +% direction changes. They do all that is necessary besides changing +% the direction. Currently their task is to change the encoding +% information and mode (condition \cs{if@rl}). They should not +% normally be called by users: user-level macros, such as +% \cs{sethebrew} and \cs{unsethebrew}, as well as \babel 's +% \cs{selectlanguage} are defined in language-definition files and +% should be used to change default language (and direction). +% +% Local direction changing commands (for small pieces of text): +% |\L{}|, |\R{}|, |\embox{}| and |\hmbox{}| are defined below in +% this file in language-independent manner. +% +% \begin{macro}{\if@rl} +% \begin{description}\scrunch +% \item[|\@rltrue|] means that the main mode is currently +% Right-to-Left. +% \item[|\@rlfalse|] means that the main mode is currently +% Left-to-Right. +% \end{description} +% \begin{macrocode} +\newif\if@rl +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@rlmain} +% This is the main direction of the document. Unlike |\if@rl| +% it is set once and never changes. +% \begin{description}\scrunch +% \item[|\@rltrue|] means that the document is Right-to-Left. +% \item[|\@rlfalse|] means that the document is Left-to-Right. +% \end{description} +% Practically |\if@rlmain| is set according to the value of |\if@rl| +% in the beginning of the run. +% \begin{macrocode} +\AtBeginDocument{% Here we set the main document direction + \newif\if@rlmain% + \if@rl% e.g: if the options to babel were [english,hebrew] + \@rlmaintrue% + \else% e.g: if the options to babel were [hebrew,english] + \@rlmainfalse% + \fi% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@torl} +% Switches current direction to Right-to-Left: saves current +% Left-to-Right encoding in |\lr@encodingdefault|, sets required +% Right-to-Left language name in |\@rllanguagename| (similar to +% \babel 's |\languagename|) and changes derection. +% +% The Right-to-Left language encoding should be defined in |.ldf| +% file as special macro created by concatenation of the language +% name and string \texttt{encoding}, for example, for Hebrew it +% will be |\hebrewencoding|. +% \begin{macrocode} +\DeclareRobustCommand{\@torl}[1]{% + \if@rl\else% + \let\lr@encodingdefault=\encodingdefault% + \fi% + \def\@rllanguagename{#1}% + \def\encodingdefault{\csname#1encoding\endcsname}% + \fontencoding{\encodingdefault}% + \selectfont% + \@rltrue} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@fromrl} +% Opposite to |\@torl|, switches current direction to +% Left-to-Right: restores saved Left-to-Right encoding +% (|\lr@encodingdefault|) and changes direction. +% \begin{macrocode} +\DeclareRobustCommand{\@fromrl}{% + \if@rl% + \let\encodingdefault=\lr@encodingdefault% + \fi% + \fontencoding{\encodingdefault}% + \selectfont% + \@rlfalse} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\selectlanguage} +% This standard \babel 's macro should be redefined to support +% bidirectional tables. We divide |\selectlanguage| implementation +% to two parts, and the first part calls the second +% |\@@selectlanguage|. +% \begin{macrocode} +\expandafter\def\csname selectlanguage \endcsname#1{% + \edef\languagename{% + \ifnum\escapechar=\expandafter`\string#1\@empty + \else \string#1\@empty\fi}% + \@@selectlanguage{\languagename}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@selectlanguage} +% This new internal macro redefines a final part of the standard +% \babel 's |\select|\-|language| implementation. +% +% Standard \LaTeX\ provides us with 3 tables: Table of Contents +% (|.toc|), List of Figures (|.lof|), and List of Tables +% (|.lot|). In multi-lingual texts mixing Left-to-Right languages +% with Right-to-Left ones, the use of various directions in one +% table results in very ugly output. Therefore, these 3 standard +% tables will be used now only for Left-to-Right languages, and we +% will add 3 Right-to-Left tables (their extensions are simply +% reversed ones): RL Table of Contents (|.cot|), RL List of Figures +% (|.fol|), and RL List of Tables (|.lof|). +% \begin{macrocode} +\def\@@selectlanguage#1{% + \select@language{#1}% + \if@filesw + \protected@write\@auxout{}{\string\select@language{#1}}% + \if@rl% + \addtocontents{cot}{\xstring\select@language{#1}}% + \addtocontents{fol}{\xstring\select@language{#1}}% + \addtocontents{tol}{\xstring\select@language{#1}}% + \else% + \addtocontents{toc}{\xstring\select@language{#1}}% + \addtocontents{lof}{\xstring\select@language{#1}}% + \addtocontents{lot}{\xstring\select@language{#1}}% + \fi% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\setrllanguage} +% \begin{macro}{\unsetrllanguage} +% The |\setrllanguage| and |\unsetrllanguage| pair of macros is +% proved to very useful in bilingual texts, for example, in +% Hebrew-English texts. The language-specific commands, for example, +% |\sethebrew| and |\unsethebrew| use these macros as basis. +% +% Implementation saves and restores other language in +% |\other@languagename| variable, and uses internal macro +% |\@@selectlanguage|, defined above, to switch between languages. +% \begin{macrocode} +\let\other@languagename=\languagename +\DeclareRobustCommand{\setrllanguage}[1]{% + \if@rl\else% + \let\other@languagename=\languagename% + \fi% + \def\languagename{#1}% + \@@selectlanguage{\languagename}} +% \end{macrocode} +% +% \begin{macrocode} +\DeclareRobustCommand{\unsetrllanguage}[1]{% + \if@rl% + \let\languagename=\other@languagename% + \fi + \@@selectlanguage{\languagename}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\L} +% \begin{macro}{\R} +% \begin{macro}{\HeblatexRedefineL} +% Macros for changing direction, originally taken from TUGboat. +% Usage: |\L{|\emph{Left to Right text}|}| and |\R{|\emph{Right to +% Left text}|}|. Numbers should also be enclosed in |\L{}|, as in +% |\L{123}|. +% +% Note, that these macros do not receive language name as +% parameter. Instead, the saved |\@rllanguagename| will be +% used. We assume that each Right-to-Left language defines +% |\to|\emph{languagename} and |\from|\emph{languagename} macros in +% language definition file, for example, for Hebrew: |\tohebrew| +% and |\fromhebrew| macros in \pkg{hebrew.ldf} file. +% +% The macros \cs{L} and \cs{R} include `protect' to to make them robust and +% allow use, for example, in tables. +% +% Due to the fact that some packages have different definitions for \cs{L} +% the macro |\HeblatexRedefineL| is provided to overide them. This may +% be required with hyperref, for instance. +% \begin{macrocode} +\let\next=\ +\def\HeblatexRedefineL{% + \def\L{\protect\pL}% +} +\HeblatexRedefineL +\def\pL{\protect\afterassignment\moreL \let\next= } +\def\moreL{\bracetext \aftergroup\endL \beginL\csname + from\@rllanguagename\endcsname} +% \end{macrocode} +% +% \begin{macrocode} +\def\R{\protect\pR} +\def\pR{\protect\afterassignment\moreR \let\next= } +\def\moreR{\bracetext \aftergroup\endR \beginR\csname + to\@rllanguagename\endcsname} +\def\bracetext{\ifcat\next{\else\ifcat\next}\fi + \errmessage{Missing left brace has been substituted}\fi \bgroup} +\everydisplay{\if@rl\aftergroup\beginR\fi } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@ensure@R} +% \begin{macro}{\@ensure@L} +% Two small internal macros, a-la |\ensuremath| +% \begin{macrocode} +\def\@ensure@R#1{\if@rl#1\else\R{#1}\fi} +\def\@ensure@L#1{\if@rl\L{#1}\else#1\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Take care of Right-to-Left indentation in every paragraph. +% Originally, \cs{noindent} was redefined for right-to-left by +% Yaniv Bargury, then the implementation was rewritten by Alon Ziv +% using an idea by Chris Rowley: \cs{noindent} now works +% unmodified. +% \begin{macrocode} +\def\rl@everypar{\if@rl{\setbox\z@\lastbox\beginR\usebox\z@}\fi} +\let\o@everypar=\everypar +\def\everypar#1{\o@everypar{\rl@everypar#1}} +% \end{macrocode} +% +% \begin{macro}{\hmbox} +% \begin{macro}{\embox} +% Useful vbox commands. All text in math formulas is best enclosed +% in these: LR text in |\embox| and RL text in |\hmbox|. |\mbox{}| +% is useless for both cases, since it typesets in Left-to-Right +% even for Right-to-Left languages (additions by Yaniv Bargury). +% \begin{macrocode} +\newcommand{\hmbox}[1]{\mbox{\R{#1}}} +\newcommand{\embox}[1]{\mbox{\L{#1}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@brackets} +% When in Right-to-Left mode, brackets should be swapped. This +% macro receives 3 parameters: left bracket, content, right +% bracket. Brackets can be square brackets, braces, or +% parentheses. +% \begin{macrocode} +\def\@brackets#1#2#3{\protect\if@rl #3#2#1\protect\else + #1#2#3\protect\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@number} +% \begin{macro}{\@latin} +% \cs{@number} preserves numbers direction from Left to Right. +% \cs{@latin} in addition switches current encoding to the latin. +% \begin{macrocode} +\def\@@number#1{\ifmmode\else\beginL\fi#1\ifmmode\else\endL\fi} +\def\@@latin#1{\@@number{{\@fromrl#1}}} +\def\@number{\protect\@@number} +\def\@latin{\protect\@@latin} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Counters} +% +% To make counter references work in Right to Left text, we need +% to surround their original definitions with an +% |\@number{|\ldots|}| or |\@latin{|\ldots|}|. Note, that +% language-specific counters, such as \cs{hebr} or \cs{gim} are +% provided with language definition file. +% +% We start with saving the original definitions: +% \begin{macrocode} +\let\@@arabic=\@arabic +\let\@@roman=\@roman +\let\@@Roman=\@Roman +\let\@@alph=\@alph +\let\@@Alph=\@Alph +% \end{macrocode} +% +% \begin{macro}{\@arabic} +% \begin{macro}{\@roman} +% \begin{macro}{\@Roman} +% Arabic and roman numbers should be from Left to Right. In +% addition, roman numerals, both lower- and upper-case should be in +% latin encoding. +% \begin{macrocode} +\def\@arabic#1{\@number{\@@arabic#1}} +\def\@roman#1{\@latin{\@@roman#1}} +\def\@Roman#1{\@latin{\@@Roman#1}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\arabicnorl} +% This macro preserves the original definition of |\arabic| +% (overrides the overriding of |\@arabic|) +% \begin{macrocode} +\def\arabicnorl#1{\expandafter\@@arabic\csname c@#1\endcsname} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\make@lr} +% In Right to Left documents all counters defined in the standard +% document classes \emph{article}, \emph{report} and \emph{book} +% provided with \LaTeXe, such as |\thesection|, |\thefigure|, +% |\theequation| should be typed as numbers from left to right. To +% ensure direction, we use the following +% |\make@lr{|\emph{counter}|}| macro: +% \begin{macrocode} +\def\make@lr#1{\begingroup + \toks@=\expandafter{#1}% + \edef\x{\endgroup + \def\noexpand#1{\noexpand\@number{\the\toks@}}}% + \x} +% \end{macrocode} +% +% \begin{macrocode} +\@ifclassloaded{letter}{}{% + \@ifclassloaded{slides}{}{% + \make@lr\thesection + \make@lr\thesubsection + \make@lr\thesubsubsection + \make@lr\theparagraph + \make@lr\thesubparagraph + \make@lr\thefigure + \make@lr\thetable + } + \make@lr\theequation +} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Preserving logos} +% +% Preserve \TeX, \LaTeX\ and \LaTeXe\ logos. +% \begin{macro}{\TeX} +% \begin{macrocode} +\let\@@TeX\TeX +\def\TeX{\@latin{\@@TeX}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LaTeX} +% \begin{macrocode} +\let\@@LaTeX\LaTeX +\def\LaTeX{\@latin{\@@LaTeX}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\LaTeXe} +% \begin{macrocode} +\let\@@LaTeXe\LaTeXe +\def\LaTeXe{\@latin{\@@LaTeXe}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{List environments} +% +% List environments in Right-to-Left languages, are ticked and +% indented from the right instead of from the left. All the +% definitions that caused indentation are revised for Right-to-Left +% languages. \LaTeX\ keeps track on the indentation with the +% \cs{leftmargin} and \cs{rightmargin} values. +% +% \begin{macro}{list} +% Thus we need to override the definition of the |\list| macro: when +% in RTL mode, the right margins are the begining of the line. +% \begin{macrocode} +\def\list#1#2{% + \ifnum \@listdepth >5\relax + \@toodeep + \else + \global\advance\@listdepth\@ne + \fi + \rightmargin\z@ + \listparindent\z@ + \itemindent\z@ + \csname @list\romannumeral\the\@listdepth\endcsname + \def\@itemlabel{#1}% + \let\makelabel\@mklab + \@nmbrlistfalse + #2\relax + \@trivlist + \parskip\parsep + \parindent\listparindent + \advance\linewidth -\rightmargin + \advance\linewidth -\leftmargin +% \end{macrocode} +% The only change in the macro is the |\if@rl| case: +% \begin{macrocode} + \if@rl + \advance\@totalleftmargin \rightmargin + \else + \advance\@totalleftmargin \leftmargin + \fi + \parshape \@ne \@totalleftmargin \linewidth + \ignorespaces} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\labelenumii} +% \begin{macro}{\p@enumiii} +% The \cs{labelenumii} and \cs{p@enumiii} commands use +% \emph{parentheses}. They are revised to work Right-to-Left with +% the help of \cs{@brackets} macro defined above. +% \begin{macrocode} +\def\labelenumii{\@brackets(\theenumii)} +\def\p@enumiii{\p@enumii\@brackets(\theenumii)} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \subsubsection{Tables of moving stuff} +% +% Tables of moving arguments: table of contents (|toc|), list of +% figures (|lof|) and list of tables (|lot|) are handles here. These +% three default \LaTeX\ tables will be used now exclusively for +% Left to Right stuff. +% +% Three additional Right-to-Left tables: RL table of contents +% (|cot|), RL list of figures (|fol|), and RL list of tables +% (|tol|) are added. +% These three tables will be used exclusively for Right to +% Left stuff. +% +% \begin{macro}{\@tableofcontents} +% \begin{macro}{\@listoffigures} +% \begin{macro}{\@listoftables} +% We define 3 new macros similar to the standard \LaTeX\ tables, +% but with one parameter --- table file extension. These macros +% will help us to define our additional tables below. +% \begin{macrocode} +\@ifclassloaded{letter}{}{% other +\@ifclassloaded{slides}{}{% other + \@ifclassloaded{article}{% article + \newcommand\@tableofcontents[1]{% + \section*{\contentsname\@mkboth% + {\MakeUppercase\contentsname}% + {\MakeUppercase\contentsname}}% + \@starttoc{#1}} + \newcommand\@listoffigures[1]{% + \section*{\listfigurename\@mkboth% + {\MakeUppercase\listfigurename}% + {\MakeUppercase\listfigurename}}% + \@starttoc{#1}} + \newcommand\@listoftables[1]{% + \section*{\listtablename\@mkboth% + {\MakeUppercase\listtablename}% + {\MakeUppercase\listtablename}}% + \@starttoc{#1}}}% + {% else report or book + \newcommand\@tableofcontents[1]{% + \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn% + \fi\chapter*{\contentsname\@mkboth% + {\MakeUppercase\contentsname}% + {\MakeUppercase\contentsname}}% + \@starttoc{#1}\if@restonecol\twocolumn\fi} + \newcommand\@listoffigures[1]{% + \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn% + \fi\chapter*{\listfigurename\@mkboth% + {\MakeUppercase\listfigurename}% + {\MakeUppercase\listfigurename}}% + \@starttoc{#1}\if@restonecol\twocolumn\fi} + \newcommand\@listoftables[1]{% + \if@twocolumn\@restonecoltrue\onecolumn\else\@restonecolfalse\fi% + \chapter*{\listtablename\@mkboth% + {\MakeUppercase\listtablename}% + {\MakeUppercase\listtablename}}% + \@starttoc{#1}\if@restonecol\twocolumn\fi}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\lrtableofcontents} +% \begin{macro}{\lrlistoffigures} +% \begin{macro}{\lrlistoftables} +% Left-to-Right tables are called now |\lr|\emph{xxx} and defined +% with the aid of three macros defined above (extensions |toc|, +% |lof|, and |lot|). +% \begin{macrocode} + \newcommand\lrtableofcontents{\@tableofcontents{toc}}% + \newcommand\lrlistoffigures{\@listoffigures{lof}}% + \newcommand\lrlistoftables{\@listoftables{lot}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\rltableofcontents} +% \begin{macro}{\rllistoffigures} +% \begin{macro}{\rllistoftables} +% Right-to-Left tables will be called |\rl|\emph{xxx} and defined +% with the aid of three macros defined above (extensions |cot|, +% |fol|, and |tol|). +% \begin{macrocode} + \newcommand\rltableofcontents{\@tableofcontents{cot}}% + \newcommand\rllistoffigures{\@listoffigures{fol}}% + \newcommand\rllistoftables{\@listoftables{tol}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\tableofcontents} +% \begin{macro}{\listoffigures} +% \begin{macro}{\listoftables} +% Let |\|\emph{xxx} be |\rl|\emph{xxx} if the current direction is +% Right-to-Left and |\lr|\emph{xxx} if it is Left-to-Right. +% \begin{macrocode} + \renewcommand\tableofcontents{\if@rl\rltableofcontents% + \else\lrtableofcontents\fi} + \renewcommand\listoffigures{\if@rl\rllistoffigures% + \else\lrlistoffigures\fi} + \renewcommand\listoftables{\if@rl\rllistoftables% + \else\lrlistoftables\fi}}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@dottedtocline} +% The following makes problems when making a Right-to-Left tables, +% since it uses \cs{leftskip} and \cs{rightskip} which are both +% mode dependent. +% \begin{macrocode} +\def\@dottedtocline#1#2#3#4#5{% + \ifnum #1>\c@tocdepth \else + \vskip \z@ \@plus.2\p@ + {\if@rl\rightskip\else\leftskip\fi #2\relax + \if@rl\leftskip\else\rightskip\fi \@tocrmarg \parfillskip + -\if@rl\leftskip\else\rightskip\fi + \parindent #2\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + \advance\if@rl\rightskip\else\leftskip\fi \@tempdima + \null\nobreak\hskip -\if@rl\rightskip\else\leftskip\fi + {#4}\nobreak + \leaders\hbox{$\m@th + \mkern \@dotsep mu\hbox{.}\mkern \@dotsep + mu$}\hfill + \nobreak + \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor \beginL#5\endL}% + \par}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@part} +% This standard macro was redefined for table of contents since it +% uses \cs{rightskip} which is mode dependent. +% \begin{macrocode} +\@ifclassloaded{letter}{}{% other +\@ifclassloaded{slides}{}{% other +\renewcommand*\l@part[2]{% + \ifnum \c@tocdepth >-2\relax + \addpenalty{-\@highpenalty}% + \addvspace{2.25em \@plus\p@}% + \begingroup + \setlength\@tempdima{3em}% + \parindent \z@ \if@rl\leftskip\else\rightskip\fi \@pnumwidth + \parfillskip -\@pnumwidth + {\leavevmode + \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss#2}}\par + \nobreak + \global\@nobreaktrue + \everypar{\global\@nobreakfalse\everypar{}}% + \endgroup + \fi}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@part} +% Part is redefined to support new Right-to-Left table of contents +% (|cot|) as well as the Left-to-Right one (|toc|). +% \begin{macrocode} +\@ifclassloaded{article}{% article class + \def\@part[#1]#2{% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \addcontentsline{cot}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \addcontentsline{cot}{part}{#1}% + \fi + {\parindent \z@ \raggedright + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >\m@ne + \Large\bfseries \partname~\thepart + \par\nobreak + \fi + \huge \bfseries #2% + \markboth{}{}\par}% + \nobreak + \vskip 3ex + \@afterheading}% +}{% report and book classes + \def\@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \addcontentsline{cot}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \addcontentsline{cot}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty \@M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname~\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + \@endpart}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@sect} +% Section was redefined from the \pkg{latex.ltx} file. It is +% changed to support both Left-to-Right (|toc|) and Right-to-Left +% (|cot|) table of contents simultaneously. +% \begin{macrocode} +\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}% + \addcontentsline{cot}{#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}% + \addcontentsline{cot}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@caption} +% Caption was redefined from the \pkg{latex.ltx} file. It is +% changed to support Left-to-Right list of figures and list of +% tables (|lof| and |lot|) as well as new Right-to-Left lists +% (|fol| and |tol|) simultaneously. +% \begin{macrocode} +\long\def\@caption#1[#2]#3{% + \par + \addcontentsline{\csname ext@#1\endcsname}{#1}% + {\protect\numberline{\csname the#1\endcsname}% + {\ignorespaces #2}}% + \def\@fignm{figure} + \ifx#1\@fignm\addcontentsline{fol}{#1}% + {\protect\numberline{\csname the#1\endcsname}% + {\ignorespaces #2}}\fi% + \def\@tblnm{table} + \ifx#1\@tblnm\addcontentsline{tol}{#1}% + {\protect\numberline{\csname the#1\endcsname}% + {\ignorespaces #2}}\fi% + \begingroup + \@parboxrestore + \if@minipage + \@setminipage + \fi + \normalsize + \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@chapter} +% This standard macro was redefined for table of contents since it +% uses \cs{rightskip} which is mode dependent. +% \begin{macrocode} +\@ifclassloaded{letter}{}{% +\@ifclassloaded{slides}{}{% + \@ifclassloaded{article}{}{% + \renewcommand*\l@chapter[2]{% + \ifnum \c@tocdepth >\m@ne + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ + \setlength\@tempdima{1.5em}% + \begingroup + \parindent \z@ \if@rl\leftskip\else\rightskip\fi \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \bfseries + \advance\if@rl\rightskip\else\leftskip\fi\@tempdima + \hskip -\if@rl\rightskip\else\leftskip\fi + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss#2}\par + \penalty\@highpenalty + \endgroup + \fi}}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@section} +% \begin{macro}{\l@subsection} +% \begin{macro}{\l@subsubsection} +% \begin{macro}{\l@paragraph} +% \begin{macro}{\l@subparagraph} +% The toc entry for section did not work in article style. +% Also it does not print dots, which is funny when most of your +% work is divided into sections. +% +% It was revised to use |\@dottedtocline| as in \pkg{report.sty} +% (by Yaniv Bargury) and was updated later for all kinds of +% sections (by Boris Lavva). +% \begin{macrocode} +\@ifclassloaded{article}{% +\renewcommand*\l@section{\@dottedtocline{1}{1.5em}{2.3em}} +\renewcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}} +\renewcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}} +\renewcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}} +\renewcommand*\l@subparagraph{\@dottedtocline{5}{12em}{6em}}}{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Two-column mode} +% +% This is the support of \texttt{twocolumn} option for the standard +% \LaTeXe\ classes. +% The following code was originally borrowed from the Arab\TeX\ +% package, file \pkg{latexext.sty}, copyright by Klaus Lagally, +% Institut fuer Informatik, Universitaet Stuttgart. It was updated +% for this package by Boris Lavva. +% +% \begin{macro}{\@outputdblcol} +% \begin{macro}{\set@outputdblcol} +% \begin{macro}{rl@outputdblcol} +% First column is \cs{@leftcolumn} will be shown at the right side, +% Second column is \cs{@outputbox} will be shown at the left side. +% +% |\set@outputdblcol| IS CURRENTLY DISABLED. TODO: REMOVE IT [tzafrir] +% \begin{macrocode} +\let\@@outputdblcol\@outputdblcol +%\def\set@outputdblcol{% +% \if@rl\renewcommand{\@outputdblcol}{\rl@outputdblcol}% +% \else\renewcommand{\@outputdblcol}{\@@outputdblcol}\fi} +\renewcommand{\@outputdblcol}{% + \if@rlmain% + \rl@outputdblcol% + \else% + \@@outputdblcol% + \fi% +} +\newcommand{\rl@outputdblcol}{% + \if@firstcolumn + \global \@firstcolumnfalse + \global \setbox\@leftcolumn \box\@outputbox + \else + \global \@firstcolumntrue + \setbox\@outputbox \vbox {\hb@xt@\textwidth {% + \hskip\columnwidth% + \hfil\vrule\@width\columnseprule\hfil + \hb@xt@\columnwidth {% + \box\@leftcolumn \hss}% + \hb@xt@\columnwidth {% + \hskip-\textwidth% + \box\@outputbox \hss}% + \hskip\columnsep% + \hskip\columnwidth}}% + \@combinedblfloats + \@outputpage + \begingroup + \@dblfloatplacement + \@startdblcolumn + \@whilesw\if@fcolmade \fi + {\@outputpage + \@startdblcolumn}% + \endgroup + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Footnotes} +% +% \begin{macro}{\footnoterule} +% The Right-to-Left footnote rule is simply reversed default +% Left-to-Right one. Footnotes can be used in RL or LR main +% modes, but changing mode while a footnote is pending is still +% unsolved. +% \begin{macrocode} +\let\@@footnoterule=\footnoterule +\def\footnoterule{\if@rl\hb@xt@\hsize{\hss\vbox{\@@footnoterule}}% + \else\@@footnoterule\fi} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Headings and two-side support} +% +% When using \texttt{headings} or \texttt{myheadings} modes, we +% have to ensure that the language and direction of heading is the +% same as the whole chapter/part of the document. This is +% implementing by setting special variable \cs{headlanguage} when +% starting new chapter/part. +% +% In addition, when selecting the \texttt{twoside} option (default in +% \texttt{book} document class), the LR and RL modes need to be set +% properly for things on the heading and footing. This is done +% here too. +% +% \begin{macro}{ps@headings} +% \begin{macro}{ps@myheadings} +% \begin{macro}{headeven} +% \begin{macro}{headodd} +% First, we will support the standard \pkg{letter} class: +% \begin{macrocode} +\@ifclassloaded{letter}{% + \def\headodd{\protect\if@rl\beginR\fi\headtoname{} + \ignorespaces\toname + \hfil \@date + \hfil \pagename{} \thepage\protect\if@rl\endR\fi} + \if@twoside + \def\ps@headings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@oddhead{\select@language{\headlanguage}\headodd} + \let\@evenhead\@oddhead} + \else + \def\ps@headings{% + \let\@oddfoot\@empty + \def\@oddhead{\select@language{\headlanguage}\headodd}} + \fi + \def\headfirst{\protect\if@rl\beginR\fi\fromlocation \hfill % + \telephonenum\protect\if@rl\endR\fi} + \def\ps@firstpage{% + \let\@oddhead\@empty + \def\@oddfoot{\raisebox{-45\p@}[\z@]{% + \hb@xt@\textwidth{\hspace*{100\p@}% + \ifcase \@ptsize\relax + \normalsize + \or + \small + \or + \footnotesize + \fi + \select@language{\headlanguage}\headfirst}}\hss}} +% + \renewcommand{\opening}[1]{% + \let\headlanguage=\languagename% + \ifx\@empty\fromaddress% + \thispagestyle{firstpage}% + {\raggedleft\@date\par}% + \else % home address + \thispagestyle{empty}% + {\raggedleft + \if@rl\begin{tabular}{@{\beginR\csname% + to\@rllanguagename\endcsname}r@{\endR}}\ignorespaces + \fromaddress \\*[2\parskip]% + \@date \end{tabular}\par% + \else\begin{tabular}{l}\ignorespaces + \fromaddress \\*[2\parskip]% + \@date \end{tabular}\par% + \fi}% + \fi + \vspace{2\parskip}% + {\raggedright \toname \\ \toaddress \par}% + \vspace{2\parskip}% + #1\par\nobreak} +} +% \end{macrocode} +% Then, the \pkg{article}, \pkg{report} and \pkg{book} document +% classes are supported. Note, that in one-sided mode +% \cs{markright} was changed to \cs{markboth}. +% \begin{macrocode} +{% article, report, book + \def\headeven{\protect\if@rl\beginR\thepage\hfil\rightmark\endR + \protect\else\thepage\hfil{\slshape\leftmark} + \protect\fi} + \def\headodd{\protect\if@rl\beginR\leftmark\hfil\thepage\endR + \protect\else{\slshape\rightmark}\hfil\thepage + \protect\fi} + \@ifclassloaded{article}{% article + \if@twoside % two-sided + \def\ps@headings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\select@language{\headlanguage}\headeven}% + \def\@oddhead{\select@language{\headlanguage}\headodd}% + \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 % one-sided + \def\ps@headings{% + \let\@oddfoot\@empty + \def\@oddhead{\headodd}% + \let\@mkboth\markboth + \def\sectionmark##1{% + \markboth{\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \thesection\quad + \fi + ##1}}{\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \thesection\quad + \fi + ##1}}}} + \fi +% + \def\ps@myheadings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\select@language{\headlanguage}\headeven}% + \def\@oddhead{\select@language{\headlanguage}\headodd}% + \let\@mkboth\@gobbletwo + \let\sectionmark\@gobble + \let\subsectionmark\@gobble + }}{% report and book + \if@twoside % two-sided + \def\ps@headings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\select@language{\headlanguage}\headeven} + \def\@oddhead{\select@language{\headlanguage}\headodd} + \let\@mkboth\markboth + \def\chaptermark##1{% + \markboth{\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \@chapapp\ \thechapter. \ % + \fi + ##1}}{}}% + \def\sectionmark##1{% + \markright {\MakeUppercase{% + \ifnum \c@secnumdepth >\z@ + \thesection. \ % + \fi + ##1}}}} + \else % one-sided + \def\ps@headings{% + \let\@oddfoot\@empty + \def\@oddhead{\select@language{\headlanguage}\headodd} + \let\@mkboth\markboth + \def\chaptermark##1{% + \markboth{\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \@chapapp\ \thechapter. \ % + \fi + ##1}}{\MakeUppercase{% + \ifnum \c@secnumdepth >\m@ne + \@chapapp\ \thechapter. \ % + \fi + ##1}}}} + \fi + \def\ps@myheadings{% + \let\@oddfoot\@empty\let\@evenfoot\@empty + \def\@evenhead{\select@language{\headlanguage}\headeven}% + \def\@oddhead{\select@language{\headlanguage}\headodd}% + \let\@mkboth\@gobbletwo + \let\chaptermark\@gobble + \let\sectionmark\@gobble + }}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \subsubsection{Postscript Porblems} +% Any command that is implemented by PostScript directives, e.g +% commands from the ps-tricks package, needs to be fixed, because the +% PostScript directives are being interpeted after the document has been +% converted by \TeX to visual Hebrew (DVI, PostScript and PDF have visual +% Hebrew). +% +% For instance: Suppose you wrote in your document: +% +% |\textcolor{cyan}{some ltr text}| +% +% This would be interpeted by \TeX to something like: +% +% |[postscript:make color cyan]some LTR text[postscript:make color black]| +% +% +% However, with the bidirectionality support we get: +% +% |\textcolor{cyan}{\hebalef\hebbet}| +% +% Translated to: +% +% |[postscript:make color black]{bet}{alef}[postscript:make color cyan]| +% +% While we want: +% +% |[postscript:make color cyan]{bet}{alef}[postscript:make color black]| +% +% The following code will probably work at least with code that stays in the +% same line: +% \begin{macro}{@textcolor} +% \begin{macrocode} +\AtBeginDocument{% + %I assume that \@textcolor is only defined by the package color + \ifx\@textcolor\@undefined\else% + % If that macro was defined before the beginning of the document, + % that is: the package was loaded: redefine it with bidi support + \def\@textcolor#1#2#3{% + \if@rl% + \beginL\protect\leavevmode{\color#1{#2}\beginR#3\endR}\endL% + \else% + \protect\leavevmode{\color#1{#2}#3}% + \fi% + }% + \fi% +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\thetrueSlideCounter} +% This macro probably needs to be overriden for when using |prosper|, +% (waiting for feedback. Tzafrir) +% \begin{macrocode} +\@ifclassloaded{prosper}{% + \def\thetrueSlideCounter{\arabicnorl{trueSlideCounter}} +}{} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Miscellaneous internal \LaTeX\ macros} +% +% \begin{macro}{\raggedright} +% \begin{macro}{\raggedleft} +% \cs{raggedright} was changed from \pkg{latex.ltx} file to support +% Right-to-Left mode, because of the bug in its implementation. +% \begin{macrocode} +\def\raggedright{% + \let\\\@centercr + \leftskip\z@skip\rightskip\@flushglue + \parindent\z@\parfillskip\z@skip} +% \end{macrocode} +% Swap meanings of \cs{raggedright} and \cs{raggedleft} in +% Right-to-Left mode. +% \begin{macrocode} +\let\@@raggedleft=\raggedleft +\let\@@raggedright=\raggedright +\renewcommand\raggedleft{\if@rl\@@raggedright% + \else\@@raggedleft\fi} +\renewcommand\raggedright{\if@rl\@@raggedleft% + \else\@@raggedright\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\author} +% \cs{author} is inserted with \texttt{tabular} environment, and +% will be used in restricted horizontal mode. Therefore we have to +% add explicit direction change command when in Right-to-Left +% mode. +% \begin{macrocode} +\let\@@author=\author +\renewcommand{\author}[1]{\@@author{\if@rl\beginR #1\endR\else #1\fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\MakeUppercase} +% \begin{macro}{\MakeLowercase} +% There are no uppercase and lowercase letters in most +% Right-to-Left languages, therefore we should redefine +% \cs{MakeUppercase} and \cs{MakeLowercase} \LaTeXe\ commands. +% \begin{macrocode} +\let\@@MakeUppercase=\MakeUppercase +\def\MakeUppercase#1{\if@rl#1\else\@@MakeUppercase{#1}\fi} +\let\@@MakeLowercase=\MakeLowercase +\def\MakeLowercase#1{\if@rl#1\else\@@MakeLowercase{#1}\fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\underline} +% We should explicitly use \cs{L} and \cs{R} commands in +% \cs{underline}d text. +% \begin{macrocode} +\let\@@@underline=\underline +\def\underline#1{\@@@underline{\if@rl\R{#1}\else #1\fi}} +% \end{macrocode} +% \end{macro} +% +% \cs{undertext} was added for \LaTeX 2.09 compatibility mode. +% \begin{macrocode} +\if@compatibility + \let\undertext=\underline +\fi +% \end{macrocode} +% +% \begin{macro}{\@xnthm} +% \begin{macro}{\@opargbegintheorem} +% The following has been inserted to correct the appearance of the +% number in \cs{newtheorem} to reorder theorem number components. A +% similar correction in the definition of \cs{@opargbegintheorem} +% was added too. +% \begin{macrocode} +\def\@xnthm#1#2[#3]{% + \expandafter\@ifdefinable\csname #1\endcsname + {\@definecounter{#1}\@addtoreset{#1}{#3}% + \expandafter\xdef\csname the#1\endcsname{\noexpand\@number + {\expandafter\noexpand\csname the#3\endcsname \@thmcountersep + \@thmcounter{#1}}}% + \global\@namedef{#1}{\@thm{#1}{#2}}% + \global\@namedef{end#1}{\@endtheorem}}} +% +\def\@opargbegintheorem#1#2#3{% + \trivlist + \item[\hskip \labelsep{\bfseries #1\ #2\ + \@brackets({#3})}]\itshape} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@chapter} +% \begin{macro}{\@schapter} +% The following was added for pretty printing of the chapter +% numbers, for supporting Right-to-Left tables (\texttt{cot}, +% \texttt{fol}, and \texttt{tol}), to save \cs{headlanguage} +% for use in running headers, and to start two-column mode +% depending on chapter's main language. +% \begin{macrocode} +\@ifclassloaded{article}{}{% + % For pretty priniting + \def\@@chapapp{Chapter} + \def\@@thechapter{\@@arabic\c@chapter} + \def\@chapter[#1]#2{% + \let\headlanguage=\languagename% + %\set@outputdblcol% + \ifnum \c@secnumdepth >\m@ne + \refstepcounter{chapter}% + \typeout{\@@chapapp\space\@@thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1} + \addcontentsline{cot}{chapter}% + {\protect\numberline{\thechapter}#1} + \else + \addcontentsline{toc}{chapter}{#1}% + \addcontentsline{cot}{chapter}{#1}% + \fi + \chaptermark{#1} + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{fol}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \addtocontents{tol}{\protect\addvspace{10\p@}}% + \if@twocolumn + \@topnewpage[\@makechapterhead{#2}]% + \else + \@makechapterhead{#2}% + \@afterheading + \fi} + % + \def\@schapter#1{% + \let\headlanguage=\languagename% + %\set@outputdblcol% + \if@twocolumn + \@topnewpage[\@makeschapterhead{#1}]% + \else + \@makeschapterhead{#1}% + \@afterheading + \fi}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\appendix} +% Changed mainly for pretty printing of appendix numbers, and to +% start two-column mode with the right language (if needed). +% \begin{macrocode} +\@ifclassloaded{letter}{}{% other +\@ifclassloaded{slides}{}{% other + \@ifclassloaded{article}{% article + \renewcommand\appendix{\par + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \renewcommand\thesection{\@Alph\c@section}} + }{% report and book + \renewcommand\appendix{\par + %\set@outputdblcol% + \setcounter{chapter}{0}% + \setcounter{section}{0}% + \renewcommand\@chapapp{\appendixname}% + % For pretty priniting + \def\@@chapapp{Appendix}% + \def\@@thechapter{\@@Alph\c@chapter} + \renewcommand\thechapter{\@Alph\c@chapter}}}}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Bibliography and citations} +% +% \begin{macro}{\@cite} +% \begin{macro}{\@biblabel} +% \begin{macro}{\@lbibitem} +% Citations are produced by the macro +% |\@cite{|\emph{LABEL}|}{|\emph{NOTE}|}|. Both the citation label +% and the note is typeset in the current direction. We have to use +% \cs{@brackets} macro in \cs{@cite} and \cs{@biblabel} macros. In +% addition, when using \emph{alpha} or similar bibliography style, +% the \cs{@lbibitem} is used and have to be update to support bot +% Right-to-Left and Left-to-Right citations. +% +% \begin{macrocode} +\def\@cite#1#2{\@brackets[{#1\if@tempswa , #2\fi}]} +\def\@biblabel#1{\@brackets[{#1}]} +\def\@lbibitem[#1]#2{\item[\@biblabel{#1}\hfill]\if@filesw + {\let\protect\noexpand + \immediate + \if@rl\write\@auxout{\string\bibcite{#2}{\R{#1}}}% + \else\write\@auxout{\string\bibcite{#2}{\L{#1}}}\fi% + }\fi\ignorespaces} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{environment}{thebibliography} +% Use \cs{rightmargin} instead of \cs{leftmargin} when in RL mode. +% \begin{macrocode} +\@ifclassloaded{letter}{}{% other +\@ifclassloaded{slides}{}{% other +\@ifclassloaded{article}{% + \renewenvironment{thebibliography}[1] + {\section*{\refname\@mkboth% + {\MakeUppercase\refname}% + {\MakeUppercase\refname}}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \if@rl\leftmargin\else\rightmargin\fi\labelwidth + \advance\if@rl\leftmargin\else\rightmargin\fi\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist}}% +{\renewenvironment{thebibliography}[1]{% + \chapter*{\bibname\@mkboth% + {\MakeUppercase\bibname}% + {\MakeUppercase\bibname}}% + \list{\@biblabel{\@arabic\c@enumiv}}% + {\settowidth\labelwidth{\@biblabel{#1}}% + \if@rl\leftmargin\else\rightmargin\fi\labelwidth + \advance\if@rl\leftmargin\else\rightmargin\fi\labelsep + \@openbib@code + \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\@arabic\c@enumiv}}% + \sloppy + \clubpenalty4000 + \@clubpenalty \clubpenalty + \widowpenalty4000% + \sfcode`\.\@m} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% + \endlist}}}} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\@verbatim} +% All kinds of verbs (\cs{verb},\cs{verb*},\texttt{verbatim} and +% \texttt{verbatim*}) now can be used in Right-to-Left mode. Errors +% in latin mode solved too. +% \begin{macrocode} +\def\@verbatim{% + \let\do\@makeother \dospecials% + \obeylines \verbatim@font \@noligs} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@makecaption} +% Captions are set always centered. This allows us to use bilingual +% captions, for example: |\caption{\R{RLtext} \\ \L{LRtext}}|, +% which will be formatted as: +% \begin{center} +% Right to left caption here (RLtext) \\ +% Left to right caption here (LRtext) +% \end{center} +% See also \cs{bcaption} command below. +% \begin{macrocode} +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip% + \begin{center}% + #1: #2% + \end{center} \par% + \vskip\belowcaptionskip} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Additional bidirectional commands} +% +% \begin{itemize} +% \item Section headings are typeset with the default global +% direction. +% \item Text in section headings in the reverse language \emph{do +% not} have to be protected for the reflection command, as in: +% |\protect\L{|\emph{Latin Text}|}|, because \cs{L} and \cs{R} are +% robust now. +% \item Table of contents, list of figures and list of tables +% should be typeset with the \cs{tableofcontents}, +% \cs{listoffigures} and \cs{listoftables} commands respectively. +% \item The above tables will be typeset in the main direction (and +% language) in effect where the above commands are placed. +% \item Only 2 tables of each kind are supported: one for +% Right-to-Left and another for Left-to-Right directions. +% \end{itemize} +% +% How to include line to both tables? One has to use bidirectional +% sectioning commands as following: +% \begin{enumerate} +% \item Use the |\b|\emph{xxx} version of the sectioning commands +% in the text instead of the |\|\emph{xxx} version (\emph{xxx} is +% one of: \texttt{part}, \texttt{chapter}, \texttt{section}, +% \texttt{subsection}, \texttt{subsubsection}, \texttt{caption}). +% \item Syntax of the |\b|\emph{xxx} command is +% |\b|\emph{xxx}|{|\emph{RL text}|}{|\emph{LR text}|}|. +% Both arguments are typeset in proper direction by default (no +% need to change direction for the text inside). +% \item The section header inside the document will be typeset in +% the global direction in effect at the time. i.e. The |{|\emph{RL +% text}|}| will be typeset if Right-to-Left mode is in effect and +% |{|\emph{LR text}|}| otherwise. +% \end{enumerate} +% +% \begin{macro}{\bpart} +% \begin{macrocode} +\newcommand{\bpart}[2]{\part{\protect\if@rl% + #1 \protect\else #2 \protect\fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bchapter} +% \begin{macrocode} +\newcommand{\bchapter}[2]{\chapter{\protect\if@rl% + #1 \protect\else #2 \protect\fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bsection} +% \begin{macrocode} +\newcommand{\bsection}[2]{\section{\protect\if@rl% + #1 \protect\else #2 \protect\fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bsubsection} +% \begin{macrocode} +\newcommand{\bsubsection}[2]{\subsection{\protect\if@rl% + #1 \protect\else #2 \protect\fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bsubsubsection} +% \begin{macrocode} +\newcommand{\bsubsubsection}[2]{\subsubsection{\protect\if@rl% + #1 \protect\else #2 \protect\fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bcaption} +% \begin{macrocode} +\newcommand{\bcaption}[2]{% + \caption[\protect\if@rl \R{#1}\protect\else \L{#2}\protect\fi]{% + \if@rl\R{#1}\protect\\ \L{#2} + \else\L{#2}\protect\\ \R{#1}\fi}} +% \end{macrocode} +% \end{macro} +% +% The following definition is a modified version of \cs{bchapter}, meant +% as a bilingual twin for \cs{chapter*} and \cs{section*} +% (added by Irina Abramovici). +% +% \begin{macro}{\bchapternn} +% \begin{macrocode} +\newcommand{\bchapternn}[2]{\chapter*{\protect\if@rl% + #1 \protect\else #2 \protect\fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bsectionnn} +% \begin{macrocode} +\newcommand{\bsectionnn}[2]{\section*{\protect\if@rl% + #1 \protect\else #2 \protect\fi}} +% \end{macrocode} +% \end{macro} +% +% Finally, at end of \babel\ package, the \cs{headlanguage} and +% two-column mode will be initialized according to the current +% language. +% \begin{macrocode} +\AtEndOfPackage{\rlAtEndOfPackage} +% +\def\rlAtEndOfPackage{% + \global\let\headlanguage=\languagename%\set@outputdblcol% +} +%</rightleft> +% \end{macrocode} +% +% \subsection{Hebrew calendar} +% +% The original version of the package \pkg{hebcal.sty}\footnote{The +% following description of \pkg{hebcal} package is based on the +% comments included with original source by the author, Michail +% Rozman.} for \TeX\ and \LaTeX2.09, entitled ``\TeX{} \& \LaTeX{} +% macros for computing Hebrew date from Gregorian one'' was created +% by Michail Rozman, |misha@iop.tartu.ew.su|\footnote{Please direct +% any comments, bug reports, questions, etc. about the package to +% this address.} +% +% \begin{tabular}{@{}lr@{}c@{}ll} +% Released: &Tammuz 12, 5751&--&June 24, 1991 &\\ +% Corrected:&Shebat 10, 5752&--&January 15, 1992&by Rama Porrat\\ +% Corrected:&Adar II 5, 5752&--&March 10, 1992 &by Misha\\ +% Corrected:&Tebeth, 5756 &--&January 1996 &Dan Haran\\ +% &&&&(haran@math.tau.ac.il) +% \end{tabular} +% +% The package was adjusted for \babel{} and \LaTeXe{} by Boris +% Lavva. +% +% Changes to the printing routine (only) by Ron Artstein, June 1, +% 2003. +% +% This package should be included \emph{after} the \pkg{babel} with +% \pkg{hebrew} option, as following: +% \begin{quote} +% |\documentclass[|\ldots|]{|\ldots|}|\\ +% |\usepackage[hebrew,|\ldots|,|\emph{other languages}|,| +% \ldots|]{babel}|\\ +% |\usepackage{hebcal}| +% \end{quote} +% +% Two main user-level commands are provided by this package: +% +% \DescribeMacro{\Hebrewtoday} +% Computes today's Hebrew date and prints it. If we are presently +% in Hebrew mode, the date will be printed in Hebrew, otherwise --- +% in English (like Shebat 10, 5752). +% +% \DescribeMacro{\Hebrewdate} +% Computes the Hebrew date from the given Gregorian date and +% prints it. If we are presently in Hebrew mode, the date will be +% printed in Hebrew, otherwise --- in English (like Shebat 10, +% 5752). An example of usage is shown below: +% \begin{quote} +% |\newcount\hd \newcount\hm \newcount\hy|\\ +% |\hd=10 \hm=3 \hy=1992|\\ +% |\Hebrewdate{\hd}{\hm}{\hy}| +% \end{quote} +% +% \DescribeMacro{full} +% The package option |full| sets the flag |\@full@hebrew@year|, +% which causes years from the current millenium to be printed with +% the thousands digit (he-tav-shin-samekh-gimel). Without this +% option, thousands are not printed for the current millenium. +% NOTE: should this be a command option rather than a package +% option? --RA. +% +% \subsubsection{Introduction} +% +% The Hebrew calendar is inherently complicated: it is lunisolar -- +% each year starts close to the autumn equinox, but each month must +% strictly start at a new moon. Thus Hebrew calendar must be +% harmonized simultaneously with both lunar and solar events. In +% addition, for reasons of the religious practice, the year cannot +% start on Sunday, Wednesday or Friday. +% +% For the full description of Hebrew calendar and for the list of +% references see: +% \begin{quote} +% Nachum Dershowitz and Edward M. Reingold, +% \emph{``Calendarical Calculations''}, Software--Pract.Exper., +% vol. 20 (9), pp.899--928 (September 1990). +% \end{quote} +% |C| translation of |LISP| programs from the above article +% available from Mr. Wayne Geiser, |geiser%pictel@uunet.uu.net|. +% +% The 4\textsuperscript{th} distribution (July 1989) of hdate/hcal +% (Hebrew calendar programs similar to UNIX date/cal) by Mr. Amos +% Shapir, |amos@shum.huji.ac.il|, contains short and very clear +% description of algorithms. +% +% \subsubsection{Registers, Commands, Formatting Macros} +% +% The command |\Hebrewtoday| produces today's date for Hebrew +% calendar. It is similar to the standard \LaTeXe{} command +% |\today|. In addition three numerical registers |\Hebrewday|, +% |\Hebrewmonth| and |\Hebrewyear| are set. +% For setting this registers without producing of date string +% command |\Hebrewsetreg| can be used. +% +% The command +% |\Hebrewdate{|\emph{Gday}|}{|\emph{Gmonth}|}{|\emph{Gyear}|}| +% produces Hebrew calendar date corresponding to Gregorian date +% |Gday.Gmonth.Gyear|. Three numerical registers |\Hebrewday|, +% |\Hebrewmonth| and |\Hebrewyear| are set. +% +% For converting arbitrary Gregorian date |Gday.Gmonth.Gyear| +% to Hebrew date |Hday.Hmonth.Hyear| without producing date string +% the command: +% \begin{center} +% |\HebrewFromGregorian{|\emph{Gday}|}{|\emph{Gmonth}|}{|% +% \emph{Gyear}|}{|\emph{Hday}|}{|\emph{Hmonth}|}{|\emph{Hyear}|}| +% \end{center} +% can be used. +% +% \begin{macrocode} +%<*calendar> +\newif\if@full@hebrew@year +\@full@hebrew@yearfalse +\DeclareOption{full}{\@full@hebrew@yeartrue} +\ProcessOptions +\newcount\Hebrewday \newcount\Hebrewmonth \newcount\Hebrewyear +% \end{macrocode} +% +% \begin{macro}{\Hebrewdate} +% Hebrew calendar date corresponding to Gregorian date +% |Gday.Gmonth.Gyear|. If Hebrew (right-to-left) fonts \& macros +% are not loaded, we have to use English format. +% \begin{macrocode} +\def\Hebrewdate#1#2#3{% + \HebrewFromGregorian{#1}{#2}{#3} + {\Hebrewday}{\Hebrewmonth}{\Hebrewyear}% + \ifundefined{if@rl}% + \FormatForEnglish{\Hebrewday}{\Hebrewmonth}{\Hebrewyear}% + \else% + \FormatDate{\Hebrewday}{\Hebrewmonth}{\Hebrewyear}% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Hebrewtoday} +% Today's date in Hebrew calendar. +% \begin{macrocode} +\def\Hebrewtoday{\Hebrewdate{\day}{\month}{\year}} +\let\hebrewtoday=\Hebrewtoday +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Hebrewsetreg} +% Set registers: today's date in hebrew calendar. +% \begin{macrocode} +\def\Hebrewsetreg{% + \HebrewFromGregorian{\day}{\month}{\year} + {\Hebrewday}{\Hebrewmonth}{\Hebrewyear}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\FormatDate} +% Prints a Hebrew calendar date |Hebrewday.Hebrewmonth.Hebrewyear|. +% \begin{macrocode} +\def\FormatDate#1#2#3{% + \if@rl% + \FormatForHebrew{#1}{#2}{#3}% + \else% + \FormatForEnglish{#1}{#2}{#3} + \fi} +% \end{macrocode} +% \end{macro} +% +% To prepare another language version of Hebrew calendar commands, +% one should change or add commands here. +% +% We start with Hebrew language macros. +% \begin{macro}{\HebrewYearName} +% Prints Hebrew year as a Hebrew number. Disambiguates strings by +% adding lamed-pe-gimel to years of the first Jewish millenium and +% to years divisible by 1000. Suppresses the thousands digit in the +% current millenium unless the package option |full| is selected. +% NOTE: should this be provided as a command option rather than a +% package option? --RA. +% \begin{macrocode} +\def\HebrewYearName#1{{% + \@tempcnta=#1\divide\@tempcnta by 1000\multiply\@tempcnta by 1000 + \ifnum#1=\@tempcnta\relax % divisible by 1000: disambiguate + \Hebrewnumeralfinal{#1}\ )\heblamed\hebpe"\hebgimel(% + \else % not divisible by 1000 + \ifnum#1<1000\relax % first millennium: disambiguate + \Hebrewnumeralfinal{#1}\ )\heblamed\hebpe"\hebgimel(% + \else + \ifnum#1<5000 + \Hebrewnumeralfinal{#1}% + \else + \ifnum#1<6000 % current millenium, print without thousands + \@tempcnta=#1\relax + \if@full@hebrew@year\else\advance\@tempcnta by -5000\fi + \Hebrewnumeralfinal{\@tempcnta}% + \else % #1>6000 + \Hebrewnumeralfinal{#1}% + \fi + \fi + \fi + \fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HebrewMonthName} +% The macro |\HebrewMonthName{|\emph{month}|}{|\emph{year}|}| +% returns the name of month in the `year'. +% \begin{macrocode} +\def\HebrewMonthName#1#2{% + \ifnum #1 = 7 % + \CheckLeapHebrewYear{#2}% + \if@HebrewLeap \hebalef\hebdalet\hebresh\ \hebbet'% + \else \hebalef\hebdalet\hebresh% + \fi% + \else% + \ifcase#1% + % nothing for 0 + \or\hebtav\hebshin\hebresh\hebyod% + \or\hebhet\hebshin\hebvav\hebfinalnun% + \or\hebkaf\hebsamekh\heblamed\hebvav% + \or\hebtet\hebbet\hebtav% + \or\hebshin\hebbet\hebtet% + \or\hebalef\hebdalet\hebresh\ \hebalef'% + \or\hebalef\hebdalet\hebresh\ \hebbet'% + \or\hebnun\hebyod\hebsamekh\hebfinalnun% + \or\hebalef\hebyod\hebyod\hebresh% + \or\hebsamekh\hebyod\hebvav\hebfinalnun% + \or\hebtav\hebmem\hebvav\hebzayin% + \or\hebalef\hebbet% + \or\hebalef\heblamed\hebvav\heblamed% + \fi% + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HebrewDayName} +% Name of day in Hebrew letters (gimatria). +% \begin{macrocode} +\def\HebrewDayName#1{\Hebrewnumeral{#1}} +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\FormatForHebrew} +% The macro |\FormatForHebrew{|\emph{hday}|}{|\emph{hmonth} +% |}{|\emph{hyear}|}| returns the formatted Hebrew date in Hebrew +% language. +% \begin{macrocode} +\def\FormatForHebrew#1#2#3{% + \HebrewDayName{#1}~\hebbet\HebrewMonthName{#2}{#3},~% + \HebrewYearName{#3}} +% \end{macrocode} +% \end{macro} +% +% We continue with two English language macros for Hebrew calendar. +% \begin{macro}{\HebrewMonthNameInEnglish} +% The macro |\HebrewMonthNameInEnglish{|\emph{month}|}{|% +% \emph{year}|}| is similar to |\Hebrew|\-|Month|\-|Name| described +% above. It returns the name of month in the Hebrew `year' in +% English. +% \begin{macrocode} +\def\HebrewMonthNameInEnglish#1#2{% + \ifnum #1 = 7% + \CheckLeapHebrewYear{#2}% + \if@HebrewLeap Adar II\else Adar\fi% + \else% + \ifcase #1% + % nothing for 0 + \or Tishrei% + \or Heshvan% + \or Kislev% + \or Tebeth% + \or Shebat% + \or Adar I% + \or Adar II% + \or Nisan% + \or Iyar% + \or Sivan% + \or Tammuz% + \or Av% + \or Elul% + \fi + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\FormatForEnglish} +% The macro |\FormatForEnglish{|\emph{hday}|}{|\emph{hmonth} +% |}{|\emph{hyear}|}| is similar to |\Format|\-|For|\-|Hebrew| +% macro described above and returns the formatted Hebrew date in +% English. +% \begin{macrocode} +\def\FormatForEnglish#1#2#3{% + \HebrewMonthNameInEnglish{#2}{#3} \number#1,\ \number#3} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Auxiliary Macros} +% +% \begin{macrocode} +\newcount\@common +% \end{macrocode} +% \begin{macro}{\Remainder} +% |\Remainder{|\emph{a}|}{|\emph{b}|}{|\emph{c}|}| calculates +% $c = a\%b == a-b\times\frac{a}{b}$ +% \begin{macrocode} +\def\Remainder#1#2#3{% + #3 = #1% % c = a + \divide #3 by #2% % c = a/b + \multiply #3 by -#2% % c = -b(a/b) + \advance #3 by #1}% % c = a - b(a/b) +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\newif\if@Divisible +% \end{macrocode} +% \begin{macro}{\CheckIfDivisible} +% |\CheckIfDivisible{|\emph{a}|}{|\emph{b}|}| sets +% |\@Divisibletrue| if $a\%b == 0$ +% \begin{macrocode} +\def\CheckIfDivisible#1#2{% + {% + \countdef\tmp = 0% \tmp == \count0 - temporary variable + \Remainder{#1}{#2}{\tmp}% + \ifnum \tmp = 0% + \global\@Divisibletrue% + \else% + \global\@Divisiblefalse% + \fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ifundefined} +% From the \TeX book, ex. 7.7: +% \begin{quote} +% |\ifundefined{|\emph{command}|}<true text>\else<false text>\fi| +% \end{quote} +% \begin{macrocode} +\def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Gregorian Part} +% +% \begin{macrocode} +\newif\if@GregorianLeap +% \end{macrocode} +% \begin{macro}{\IfGregorianLeap} +% Conditional which is true if Gregorian `year' is a leap year: +% $((year\%4==0)\wedge(year\%100\neq 0))\vee(year\%400==0)$ +% \begin{macrocode} +\def\IfGregorianLeap#1{% + \CheckIfDivisible{#1}{4}% + \if@Divisible% + \CheckIfDivisible{#1}{100}% + \if@Divisible% + \CheckIfDivisible{#1}{400}% + \if@Divisible% + \@GregorianLeaptrue% + \else% + \@GregorianLeapfalse% + \fi% + \else% + \@GregorianLeaptrue% + \fi% + \else% + \@GregorianLeapfalse% + \fi% + \if@GregorianLeap} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GregorianDaysInPriorMonths} +% The macro |\GregorianDaysInPriorMonths{|\emph{month}|}{|^^A +% \emph{year}|}{|\emph{days}|}| calculates the number of days in +% months prior to `month' in the `year'. +% \begin{macrocode} +\def\GregorianDaysInPriorMonths#1#2#3{% + {% + #3 = \ifcase #1% + 0 \or% % no month number 0 + 0 \or% + 31 \or% + 59 \or% + 90 \or% + 120 \or% + 151 \or% + 181 \or% + 212 \or% + 243 \or% + 273 \or% + 304 \or% + 334% + \fi% + \IfGregorianLeap{#2}% + \ifnum #1 > 2% % if month after February + \advance #3 by 1% % add leap day + \fi% + \fi% + \global\@common = #3}% + #3 = \@common} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\GregorianDaysInPriorYears} +% The macro |\GregorianDaysInPriorYears{|\emph{year}|}{|^^A +% \emph{days}|}| calculates the number of days in years prior to +% the `year'. +% \begin{macrocode} +\def\GregorianDaysInPriorYears#1#2{% + {% + \countdef\tmpc = 4% % \tmpc==\count4 + \countdef\tmpb = 2% % \tmpb==\count2 + \tmpb = #1% % + \advance \tmpb by -1% % + \tmpc = \tmpb% % \tmpc = \tmpb = year-1 + \multiply \tmpc by 365% % Days in prior years = + #2 = \tmpc% % = 365*(year-1) ... + \tmpc = \tmpb% % + \divide \tmpc by 4% % \tmpc = (year-1)/4 + \advance #2 by \tmpc% % ... plus Julian leap days ... + \tmpc = \tmpb% % + \divide \tmpc by 100% % \tmpc = (year-1)/100 + \advance #2 by -\tmpc% % ... minus century years ... + \tmpc = \tmpb% % + \divide \tmpc by 400% % \tmpc = (year-1)/400 + \advance #2 by \tmpc% % ... plus 4-century years. + \global\@common = #2}% + #2 = \@common} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AbsoluteFromGregorian} +% The macro |\AbsoluteFromGregorian{|\emph{day}|}{|\emph{month}^^A +% |}{|\emph{year}|}{|\emph{absdate}|}| calculates the absolute date +% (days since $01.01.0001$) from Gregorian date |day.month.year|. +% \begin{macrocode} +\def\AbsoluteFromGregorian#1#2#3#4{% + {% + \countdef\tmpd = 0% % \tmpd==\count0 + #4 = #1% % days so far this month + \GregorianDaysInPriorMonths{#2}{#3}{\tmpd}% + \advance #4 by \tmpd% % add days in prior months + \GregorianDaysInPriorYears{#3}{\tmpd}% + \advance #4 by \tmpd% % add days in prior years + \global\@common = #4}% + #4 = \@common} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Hebrew Part} +% +% \begin{macrocode} +\newif\if@HebrewLeap +% \end{macrocode} +% \begin{macro}{\CheckLeapHebrewYear} +% Set |\@HebrewLeaptrue| if Hebrew `year' is a leap year, i.e.\ if +% $(1+7\times year)\%19 < 7$ then \emph{true} else \emph{false} +% \begin{macrocode} +\def\CheckLeapHebrewYear#1{% + {% + \countdef\tmpa = 0% % \tmpa==\count0 + \countdef\tmpb = 1% % \tmpb==\count1 +% + \tmpa = #1% + \multiply \tmpa by 7% + \advance \tmpa by 1% + \Remainder{\tmpa}{19}{\tmpb}% + \ifnum \tmpb < 7% % \tmpb = (7*year+1)%19 + \global\@HebrewLeaptrue% + \else% + \global\@HebrewLeapfalse% + \fi}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HebrewElapsedMonths} +% The macro |\HebrewElapsedMonths{|\emph{year}|}{|\emph{months}|}| +% determines the number of months elapsed from the Sunday prior to +% the start of the Hebrew calendar to the mean conjunction of +% Tishri of Hebrew `year'. +% \begin{macrocode} +\def\HebrewElapsedMonths#1#2{% + {% + \countdef\tmpa = 0% % \tmpa==\count0 + \countdef\tmpb = 1% % \tmpb==\count1 + \countdef\tmpc = 2% % \tmpc==\count2 +% + \tmpa = #1% % + \advance \tmpa by -1% % + #2 = \tmpa% % #2 = \tmpa = year-1 + \divide #2 by 19% % Number of complete Meton cycles + \multiply #2 by 235% % #2 = 235*((year-1)/19) +% + \Remainder{\tmpa}{19}{\tmpb}% \tmpa = years%19-years this cycle + \tmpc = \tmpb% % + \multiply \tmpb by 12% % + \advance #2 by \tmpb% % add regular months this cycle +% + \multiply \tmpc by 7% % + \advance \tmpc by 1% % + \divide \tmpc by 19% % \tmpc = (1+7*((year-1)%19))/19 - +% % number of leap months this cycle + \advance #2 by \tmpc% % add leap months +% + \global\@common = #2}% + #2 = \@common} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HebrewElapsedDays} +% The macro |\HebrewElapsedDays{|\emph{year}|}{|\emph{days}|}| +% determines the number of days elapsed from the Sunday prior to +% the start of the Hebrew calendar to the mean conjunction of +% Tishri of Hebrew `year'. +% \begin{macrocode} +\def\HebrewElapsedDays#1#2{% + {% + \countdef\tmpa = 0% % \tmpa==\count0 + \countdef\tmpb = 1% % \tmpb==\count1 + \countdef\tmpc = 2% % \tmpc==\count2 +% + \HebrewElapsedMonths{#1}{#2}% + \tmpa = #2% % + \multiply \tmpa by 13753% % + \advance \tmpa by 5604% % \tmpa=MonthsElapsed*13758 + 5604 + \Remainder{\tmpa}{25920}{\tmpc}% \tmpc == ConjunctionParts + \divide \tmpa by 25920% +% + \multiply #2 by 29% + \advance #2 by 1% + \advance #2 by \tmpa% % #2 = 1 + MonthsElapsed*29 + +% % PartsElapsed/25920 + \Remainder{#2}{7}{\tmpa}% % \tmpa == DayOfWeek + \ifnum \tmpc < 19440% + \ifnum \tmpc < 9924% + \else% % New moon at 9 h. 204 p. or later + \ifnum \tmpa = 2% % on Tuesday ... + \CheckLeapHebrewYear{#1}% of a common year + \if@HebrewLeap% + \else% + \advance #2 by 1% + \fi% + \fi% + \fi% + \ifnum \tmpc < 16789% + \else% % New moon at 15 h. 589 p. or later + \ifnum \tmpa = 1% % on Monday ... + \advance #1 by -1% + \CheckLeapHebrewYear{#1}% at the end of leap year + \if@HebrewLeap% + \advance #2 by 1% + \fi% + \fi% + \fi% + \else% + \advance #2 by 1% % new moon at or after midday + \fi% +% + \Remainder{#2}{7}{\tmpa}% % \tmpa == DayOfWeek + \ifnum \tmpa = 0% % if Sunday ... + \advance #2 by 1% + \else% % + \ifnum \tmpa = 3% % Wednesday ... + \advance #2 by 1% + \else% + \ifnum \tmpa = 5% % or Friday + \advance #2 by 1% + \fi% + \fi% + \fi% + \global\@common = #2}% + #2 = \@common} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\DaysInHebrewYear} +% The macro |\DaysInHebrewYear{|\emph{year}|}{|\emph{days}|}| +% calculates the number of days in Hebrew `year'. +% \begin{macrocode} +\def\DaysInHebrewYear#1#2{% + {% + \countdef\tmpe = 12% % \tmpe==\count12 +% + \HebrewElapsedDays{#1}{\tmpe}% + \advance #1 by 1% + \HebrewElapsedDays{#1}{#2}% + \advance #2 by -\tmpe% + \global\@common = #2}% + #2 = \@common} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HebrewDaysInPriorMonths} +% The macro |\HebrewDaysInPriorMonths{|\emph{month}|}{|^^A +% \emph{year}|}{|\emph{days}|}| calculates the nu\-mber of days in +% months prior to `month' in the `year'. +% \begin{macrocode} +\def\HebrewDaysInPriorMonths#1#2#3{% + {% + \countdef\tmpf= 14% % \tmpf==\count14 +% + #3 = \ifcase #1% % Days in prior month of regular year + 0 \or% % no month number 0 + 0 \or% % Tishri + 30 \or% % Heshvan + 59 \or% % Kislev + 89 \or% % Tebeth + 118 \or% % Shebat + 148 \or% % Adar I + 148 \or% % Adar II + 177 \or% % Nisan + 207 \or% % Iyar + 236 \or% % Sivan + 266 \or% % Tammuz + 295 \or% % Av + 325 \or% % Elul + 400% % Dummy + \fi% + \CheckLeapHebrewYear{#2}% + \if@HebrewLeap% % in leap year + \ifnum #1 > 6% % if month after Adar I + \advance #3 by 30% % add 30 days + \fi% + \fi% + \DaysInHebrewYear{#2}{\tmpf}% + \ifnum #1 > 3% + \ifnum \tmpf = 353% % + \advance #3 by -1% % + \fi% % Short Kislev + \ifnum \tmpf = 383% % + \advance #3 by -1% % + \fi% % + \fi% +% + \ifnum #1 > 2% + \ifnum \tmpf = 355% % + \advance #3 by 1% % + \fi% % Long Heshvan + \ifnum \tmpf = 385% % + \advance #3 by 1% % + \fi% % + \fi% + \global\@common = #3}% + #3 = \@common} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AbsoluteFromHebrew} +% The macro |\AbsoluteFromHebrew{|\emph{day}|}{|\emph{month}^^A +% |}{|\emph{year}|}{|\emph{absdate}|}| calculates the absolute date +% of Hebrew date |day.month.year|. +% \begin{macrocode} +\def\AbsoluteFromHebrew#1#2#3#4{% + {% + #4 = #1% + \HebrewDaysInPriorMonths{#2}{#3}{#1}% + \advance #4 by #1% % Add days in prior months this year + \HebrewElapsedDays{#3}{#1}% + \advance #4 by #1% % Add days in prior years + \advance #4 by -1373429% % Subtract days before Gregorian + \global\@common = #4}% % 01.01.0001 + #4 = \@common} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HebrewFromGregorian} +% The macro |\HebrewFromGregorian{|\emph{Gday}|}{|\emph{Gmonth}^^A +% |}{|\emph{Gyear}|}{|\emph{Hday}|}{|\emph{Hmonth}|}|\-|{|^^A +% \emph{Hyear}|}| evaluates Hebrew date |Hday|, |Hmonth|, |Hyear| +% from Gregorian date |Gday|, |Gmonth|, |Gyear|. +% \begin{macrocode} +\def\HebrewFromGregorian#1#2#3#4#5#6{% + {% + \countdef\tmpx= 17% % \tmpx==\count17 + \countdef\tmpy= 18% % \tmpy==\count18 + \countdef\tmpz= 19% % \tmpz==\count19 +% + #6 = #3% % + \global\advance #6 by 3761% approximation from above + \AbsoluteFromGregorian{#1}{#2}{#3}{#4}% + \tmpz = 1 \tmpy = 1% + \AbsoluteFromHebrew{\tmpz}{\tmpy}{#6}{\tmpx}% + \ifnum \tmpx > #4% % + \global\advance #6 by -1% Hyear = Gyear + 3760 + \AbsoluteFromHebrew{\tmpz}{\tmpy}{#6}{\tmpx}% + \fi% % + \advance #4 by -\tmpx% % Days in this year + \advance #4 by 1% % + #5 = #4% % + \divide #5 by 30% % Approximation for month from below + \loop% % Search for month + \HebrewDaysInPriorMonths{#5}{#6}{\tmpx}% + \ifnum \tmpx < #4% + \advance #5 by 1% + \tmpy = \tmpx% + \repeat% + \global\advance #5 by -1% + \global\advance #4 by -\tmpy}} +%</calendar> +% \end{macrocode} +% \end{macro} +% +% \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 diff --git a/Master/texmf-dist/source/generic/babel/hebrew.fdd b/Master/texmf-dist/source/generic/babel/hebrew.fdd new file mode 100644 index 00000000000..f61d06f430e --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/hebrew.fdd @@ -0,0 +1,1297 @@ +% \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{610} +% +% \iffalse meta-comment +%% File `hebrew.fdd' for installing the Hebrew encodings and fonts. +%% Copyright (C) 1997 -- 2005 Boris Lavva. +% +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 -- 2005 by Johannes Braams, +%% TeXniek +%% All rights reserved. +% \fi +% \iffalse +%<LHEenc>\ProvidesFile{lheenc.def} +%<LHEcmr>\ProvidesFile{lhecmr.fd} +%<LHEcmss>\ProvidesFile{lhecmss.fd} +%<LHEcmtt>\ProvidesFile{lhecmtt.fd} +%<LHEclas>\ProvidesFile{lheclas.fd} +%<LHEshold>\ProvidesFile{lheshold.fd} +%<LHEshscr>\ProvidesFile{lheshscr.fd} +%<LHEshstk>\ProvidesFile{lheshstk.fd} +%<LHEfr>\ProvidesFile{lhefr.fd} +%<LHEcrml>\ProvidesFile{lhecrml.fd} +%<LHEredis>\ProvidesFile{lheredis.fd} +%<HE8enc>\ProvidesFile{HE8enc.def} +%<HE8cmr>\ProvidesFile{HE8cmr.fd} +%<HE8cmss>\ProvidesFile{HE8cmss.fd} +%<HE8cmtt>\ProvidesFile{HE8cmtt.fd} +% The recoded Omega font (only Hebrew glyphs. Lacks other glyphs) +%<HE8OmegaHebrew>\ProvidesFile{HE8OmegaHebrew.fd} +% The culmus fonts: +%<HE8aharoni>\ProvidesFile{HE8aharoni.fd} +%<HE8david>\ProvidesFile{HE8david.fd} +%<HE8drugulin>\ProvidesFile{HE8drugulin.fd} +%<HE8ellinia>\ProvidesFile{HE8ellinia.fd} +%<HE8frankruehl>\ProvidesFile{HE8frankruehl.fd} +%<HE8yad>\ProvidesFile{HE8yad.fd} +%<HE8miriam>\ProvidesFile{HE8miriam.fd} +%<HE8nachlieli>\ProvidesFile{HE8nachlieli.fd} +% The IBM Type1 fonts (not freely distributable +%<HE8CourierShalom>\ProvidesFile{HE8CourierShalom.fd} +%<HE8HelveticaNarkissTam>\ProvidesFile{HE8HelveticaNarkissTam.fd} +%<HE8TimesNarkissim>\ProvidesFile{HE8TimesNarkissim.fd} +% Placeholders for windows fonts: +%<HE8mfdavid>\ProvidesFile{HE8mfdavid.fd} +%<HE8mffrank>\ProvidesFile{HE8mffrank.fd} +%<HE8mffrankthick>\ProvidesFile{HE8mffrankthick.fd} +%<HE8mffrankthin>\ProvidesFile{HE8mffrankthin.fd} +%<HE8mfmiriam>\ProvidesFile{HE8mfmiriam.fd} +%<HE8mfmiriamwide>\ProvidesFile{HE8mfmiriamwide.fd} +%<HE8mfnarkistam>\ProvidesFile{HE8mfnarkistam.fd} +%<hebfont>\ProvidesPackage{hebfont} +%<*driver> +\ProvidesFile{hebrew.drv} +%</driver> +% \fi +% \ProvidesFile{hebrew.fdd} + [2005/05/20 v1.2c % +% \iffalse +%<LHEenc> 7-bit Hebrew font encoding +%<LHEcmr> Hebrew default font +%<LHEcmss> Hebrew sans-serif font +%<LHEcmtt> Hebrew typewriter font +%<LHEclas> Hebrew classic font (by Joel M. Hoffman) +%<LHEshold> Hebrew shalom old font (by Jonathan Brecher) +%<LHEshscr> Hebrew shalom script font (by Jonathan Brecher) +%<LHEshstk> Hebrew shalom stick font (by Jonathan Brecher) +%<LHEfr> Hebrew frank-ruehl font +%<LHEcrml> Hebrew carmel font (by Dr. Samy Zafrany) +%<LHEredis> Hebrew redis font (by Prof. Jacques J. Goldberg) +%<HE8enc> 8-bit Hebrew font encoding +%<HE8cmr> Hebrew default font +%<HE8cmss> Hebrew sans-serif font +%<HE8cmtt> Hebrew typewriter font +%<HE8OmegaHebrew> Hebrew font from the Omega project (by ???) +%<HE8aharoni> Hebrew sans-serif font (Culmus) +%<HE8david> Hebrew serif font (Culmus) +%<HE8drugulin> Hebrew old serif font (Culmus) +%<HE8ellinia> Hebrew sans-serif font (Culmus) +%<HE8frankruehl> Hebrew serif font (Culmus) +%<HE8yad> Hebrew handwriting font (Culmus) +%<HE8miriam> Hebrew monospaced font (Culmus) +%<HE8nachlieli> Hebrew sans-serif font (Culmus) +%<HE8CourierShalom> Hebrew Shalom (Courier) font (by IBM) +%<HE8HelveticaNarkissTam> Hebrew NarkisTam (Helvetica) (by Zvi Narkis) +%<HE8TimesNarkissim> Hebrew Narkissim (Times) (by Zvi Narkis) +%<HE8mfdavid> Hebrew David font (by ???) +%<HE8mffrank> Hebrew Frank-Ruehl font (by ??) +%<HE8mffrankthick> Hebrew Frank-Ruehl (thick) font (by ??) +%<HE8mffrankthin> Hebrew Frank-Ruehl (thin) font (by ??) +%<HE8mfmiriam> Hebrew Miriam font (by ???) +%<HE8mfmiriamwide> Hebrew Miriam (wide) font (by ???) +%<HE8mfnarkistam> Hebrew Narkis Tam font (by ???) +%<hebfont> Hebrew font switching commands +%<driver> Driver file for hebrew.fdd file +% \fi +% Hebrew font encodings support + (test version: still liable to change)] +% +% \font\manual=logo10 +% \providecommand\MF{{\manual META}\-{\manual FONT}} +% \providecommand\PS{\textsc{PostScript}} +% \providecommand\dst{\textsc{docstrip}} +% \providecommand\LHE{\texttt{LHE}} +% \providecommand\HEH{\texttt{HE8}} +% \providecommand\file[1]{\texttt{#1}} +% \providecommand\pkg[1]{\texttt{#1}} +% \GetFileInfo{hebrew.fdd} +% +% \changes{hebfdd-1.0a}{1998/01/01}{% +% Initial version. Supports only 7-bit LHE font encoding and all +% available Hebrew \TeX\ fonts (by Boris Lavva)} +% \changes{hebfdd-1.0b}{2001/08/16}{% +% fixed lhecmr.fd to use oldjaf10 for a slanted font +% available Hebrew \TeX\ fonts (by Tzafrir Cohen)} +% \changes{hebfdd-1.1a}{2001/08/16}{% +% Adding 8-bit HE8 fonts. Note that most of them cannot be distributed +% with heb\LaTeX\ (by Tzafrir Cohen)} +% \changes{hebfdd-1.2a}{2003/08/19}{% +% Adding configurations for the Culmus fonts, currently 0.90 +% (by Tzafrir Cohen)} +% \changes{hebfdd-1.2b}{2004/02/20}{Reinstated the test whether LHE or +% HE8 is to be used} +% +% \changes{hebrew-1.2c}{2005/05/18}{Typo's in the docstrip guards made +% HE8nachlieli.fd unusable} +% \section{Hebrew font encodings}\label{sec:hebfdd} +% +% % Don't forget to update the docs... +% \subsection{THIS SECTION IS OUT OF DATE. UPDATE DOCS TO MATCH HE8 +% ENCODING} +% +% The file \file{\filename}\footnote{The files described in this +% section have version number \fileversion{} and were last revised +% on \filedate.} contains the Local Hebrew Encoding (\LHE) +% definition, the external font information needed to use the +% Hebrew 7-bit fonts (old code fonts) and \pkg{hebfont} package +% that provides Hebrew font switching commands. +% +% Using this file as an input, |lheenc.def| encoding definition +% file, all |.fd| files (font definition files) and font switching +% package for available Hebrew fonts are generated. We chose to use +% 7-bit encoding as default font encoding, because: +% \begin{enumerate} +% \item There are many 7-bit encoded Hebrew fonts available, more +% then for any other encoding. +% \item Available \TeX{} Hebrew fonts do not include latin +% alphabet, and we can safely map Hebrew glyphs to the +% \texttt{ASCII} positions (0 -- 127). +% \end{enumerate} +% +% Current definition of the \LHE{} encoding supports only Hebrew +% letters (|\hebalef|--|\hebtav|), but not Hebrew points, such as +% |\hebdagesh|, |\hebqamats|, |\hebpatah|, |\hebshindot|, etc. We +% are working now on such addition. +% +% \StopEventually{} +% +% \iffalse +% \subsection{A driver for this document} +% +% The next bit of code contains the documentation driver file for +% \TeX{}, i.e., the file that will produce the documentation you are +% currently reading. It will be extracted from this file by the \dst{} +% program. +% +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\title{Hebrew font encodings for use with \LaTeXe} +\author{Boris Lavva} +\date{Printed \today} +\begin{document} + \maketitle + \DocInput{hebrew.fdd} +\end{document} +%</driver> +% \end{macrocode} +% \fi +% +% \subsection{The {\normalfont\dst{}} modules} +% +% The following modules are used in the implementation to direct +% \dst{} in generating external files: +% \begin{center} +% \begin{tabular}{@{}ll} +% driver & produce a documentation driver file \\[4pt] +% HE8enc & produce the encoding definition for CodePage 1255 +% (\HEH)\\[4pt] +% HE8cmr & make Hebrew default font in \HEH\\ +% HE8cmss & make Hebrew sans-serif font in \HEH\\ +% HE8cmtt & make Hebrew typewriter font in \HEH\\ +% HE8OmegaHebrew & Hebrew font from the Omega project (by ???)\\ +% HE8aharoni & Hebrew sans-serif font (Culmus)\\ +% HE8david & Hebrew serif font (Culmus)\\ +% HE8drugulin & Hebrew old serif font (Culmus)\\ +% HE8ellinia & Hebrew isans-serif font (Culmus)\\ +% HE8frankruehl & Hebrew serif font (Culmus)\\ +% HE8KtavYad & Hebrew handwriting font (Culmus)\\ +% HE8MiriamMono & Hebrew monospaced font\\ +% HE8Nachlieli & Hebrew sans-serif font (Culmus)\\ +% HE8CourierShalom & Hebrew Shalom (Courier) font (by IBM)\\ +% HE8HelveticaNarkissTam &Hebrew NarkisTam (Helvetica) (by Zvi Narkis)\\ +% HE8TimesNarkissim & Hebrew Narkissim (Times) (by Zvi Narkis) \\ +% HE8mfdavid & Hebrew David font (by ???)\\ +% HE8mffrank & Hebrew Frank-Ruehl font (by ??)\\ +% HE8mffrankthick & Hebrew Frank-Ruehl (thick) font (by ??)\\ +% HE8mffrankthin & Hebrew Frank-Ruehl (thin) font (by ??)\\ +% HE8mfmiriam & Hebrew Miriam font (by ???)\\ +% HE8mfmiriamwide & Hebrew Miriam (wide) font (by ???)\\ +% HE8mfnarkistam & Hebrew Narkis Tam font (by ???)\\ +% LHEenc & produce the encoding definition for Local Hebrew +% Encoding (\LHE)\\[4pt] +% LHEcmr & make Hebrew default font in \LHE\\ +% LHEcmss & make Hebrew sans-serif font in \LHE\\ +% LHEcmtt & make Hebrew typewriter font in \LHE\\ +% LHEclas & make Hebrew classic font (by Joel M.~Hoffman) in \LHE\\ +% LHEshold & make Hebrew shalom old font (by Jonathan Brecher) +% in \LHE\\ +% LHEshscr & make Hebrew shalom script font (by Jonathan Brecher) +% in \LHE\\ +% LHEshstk & make Hebrew shalom stick font (by Jonathan Brecher) +% in \LHE\\ +% LHEfr & make Hebrew frank-ruehl font in \LHE\\ +% LHEcrml & make Hebrew carmel font (by Dr. Samy Zafrany) in \LHE\\ +% LHEredis & make Hebrew redis font (by Prof. Jacques J.~Goldberg) +% in \LHE\\[4pt] +% nowarn & option for font definition files, that used\\ +% & to produce ``silent'' font substitutions without +% giving warnings\\[4pt] +% hebfont & create Hebrew font switching commands package +% \end{tabular} +% \end{center} +% A typical \dst{} command file would then have entries like: +%\begin{verbatim} +%\generateFile{lhecmr.fd}{t}{\from{hebrew.fdd}{LHEcmr,nowarn}} +%\end{verbatim} +% +% \subsection{The \LHE encoding definition file} +% +% The Hebrew font encoding \LHE{} is based upon the old-code encoding +% also known as the Israeli Standard SI-960. Many Hebrew \TeX{} +% fonts from the Hebrew University of Jerusalem are encoded +% in this encoding. It only uses the lower 128 positions of the font +% table. As local encoding its name start with the letter `L'. +% +% First we define the Local Hebrew Encoding; specify a default +% for the font substitution process for the \LHE{} encoding and +% supply a font to be used when all else fails. +% +% \begin{macrocode} +%<*LHEenc> +\DeclareFontEncoding{LHE}{}{} +\DeclareFontSubstitution{LHE}{cmr}{m}{n} +\DeclareErrorFont{LHE}{cmr}{m}{n}{10} +%</LHEenc> +% \end{macrocode} +% Then we define a few commands in the \LHE{} encoding. +% \begin{macrocode} +%<*LHEenc> +\ProvideTextCommand{\textcopyright}{LHE}{\textcircled{\@latin{c}}} +\ProvideTextCommand{\textregistered}{LHE}{\textcircled{\scshape% + \@latin{r}}} +\ProvideTextCommand{\texttrademark}{LHE}{\textsuperscript{\@latin{TM}}} +%</LHEenc> +% \end{macrocode} +% +% Because not everyone can input Hebrew input text directly from +% the keyboard we need to define control sequences for all the +% Hebrew glyphs in the fonts. In addition, we want to support +% many input encodings for Hebrew and to keep the language +% definition file (|hebrew.ldf|) independent of the +% encoding. Therefore, we exploit the standard \LaTeXe{} font +% encoding mechanism to define control sequences for all the Hebrew +% glyphs in the fonts in encoding-specific way. The language +% definition file uses only the control sequences and doesn't need +% to check the current font or input encoding. +% +% In the \LHE{} encoding (7-bit encoding) all the Hebrew glyphes +% reside in the \emph{lower} half of the font. Currently, only the +% Hebrew letters are supported. They use the same positions as the +% latin small letters in |ASCII| encoding and the position of |`|. +% +% The symbol |`| (glyph 96) is used by Hebrew letter \emph{Alef}, +% so we need to define its |lccode| to allow hyphenation. All other +% letters retain the same |lccode|s as their latin counterparts. +% \begin{macrocode} +%<+LHEenc>\lccode``=`` +% \end{macrocode} +% Hebrew letters occupy the positions 96--122 in \LHE{} encoding: +% \begin{macrocode} +%<*LHEenc> +\DeclareTextSymbol{\hebalef}{LHE}{96} +\DeclareTextSymbol{\hebbet}{LHE}{97} +\DeclareTextSymbol{\hebgimel}{LHE}{98} +\DeclareTextSymbol{\hebdalet}{LHE}{99} +\DeclareTextSymbol{\hebhe}{LHE}{100} +\DeclareTextSymbol{\hebvav}{LHE}{101} +\DeclareTextSymbol{\hebzayin}{LHE}{102} +\DeclareTextSymbol{\hebhet}{LHE}{103} +\DeclareTextSymbol{\hebtet}{LHE}{104} +\DeclareTextSymbol{\hebyod}{LHE}{105} +\DeclareTextSymbol{\hebfinalkaf}{LHE}{106} +\DeclareTextSymbol{\hebkaf}{LHE}{107} +\DeclareTextSymbol{\heblamed}{LHE}{108} +\DeclareTextSymbol{\hebfinalmem}{LHE}{109} +\DeclareTextSymbol{\hebmem}{LHE}{110} +\DeclareTextSymbol{\hebfinalnun}{LHE}{111} +\DeclareTextSymbol{\hebnun}{LHE}{112} +\DeclareTextSymbol{\hebsamekh}{LHE}{113} +\DeclareTextSymbol{\hebayin}{LHE}{114} +\DeclareTextSymbol{\hebfinalpe}{LHE}{115} +\DeclareTextSymbol{\hebpe}{LHE}{116} +\DeclareTextSymbol{\hebfinaltsadi}{LHE}{117} +\DeclareTextSymbol{\hebtsadi}{LHE}{118} +\DeclareTextSymbol{\hebqof}{LHE}{119} +\DeclareTextSymbol{\hebresh}{LHE}{120} +\DeclareTextSymbol{\hebshin}{LHE}{121} +\DeclareTextSymbol{\hebtav}{LHE}{122} +%</LHEenc> +% \end{macrocode} +% Letter |\hebsin| is defined as a synonym of |\hebshin|: +% \begin{macrocode} +%<+LHEenc>\let\hebsin=\hebshin +% \end{macrocode} +% +% \subsection{The font definition files (in \LHE{} encoding)} +% +% \subsubsection{Hebrew default font} +% +% It uses \emph{Jerusalem} font for regular font, \emph{Old +% Jaffa} font for italic shape and small-caps, \emph{Dead Sea} +% font for bold face, and \emph{Tel-Aviv} for bold-italic +% \begin{macrocode} +%<*LHEcmr> +\DeclareFontFamily{LHE}{cmr}{\hyphenchar\font45} +\DeclareFontShape{LHE}{cmr}{m}{n} + {<-> jerus10 }{} +%%%%%%% Italicized shape +\DeclareFontShape{LHE}{cmr}{m}{it} + {<-> oldjaf10 }{} +\DeclareFontShape{LHE}{cmr}{m}{sl} + {<-> oldjaf10 }{} +\DeclareFontShape{LHE}{cmr}{m}{sc} + {<-> oldjaf10 }{} +%%%%%%% Bold extended series +\DeclareFontShape{LHE}{cmr}{bx}{n} + {<-> deads10 }{} +\DeclareFontShape{LHE}{cmr}{b}{n} + {<-> deads10 }{} +%%%%%%% Bold extended (Italic) series +\DeclareFontShape{LHE}{cmr}{bx}{sl} + {<-> telav10 }{} +\DeclareFontShape{LHE}{cmr}{bx}{it} + {<-> telav10 }{} +%</LHEcmr> +% \end{macrocode} +% +% \subsubsection{Hebrew sans-serif font} +% +% We use \emph{Tel Aviv} font for the Sans family. \emph{Old +% Jaffa} font is used for italic shape and \emph{Dead Sea} +% used for bold face. +% \begin{macrocode} +%<*LHEcmss> +\DeclareFontFamily{LHE}{cmss}{\hyphenchar\font45} +\DeclareFontShape{LHE}{cmss}{m}{n} + {<-> telav10 }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{cmss}{m}{sc} +%<-nowarn> {<->sub * cmss/m/n}{} +%<+nowarn> {<->ssub * cmss/m/n}{} +%%%%%%% Italicized shape +\DeclareFontShape{LHE}{cmss}{m}{it} + {<-> oldjaf10 }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{cmss}{m}{sl} +%<-nowarn> {<->sub * cmss/m/it}{} +%<+nowarn> {<->ssub * cmss/m/it}{} +%%%%%%% Bold extended series +\DeclareFontShape{LHE}{cmss}{bx}{n} + {<-> deads10 }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{cmss}{b}{n} +%<-nowarn> {<->sub * cmss/bx/n}{} +%<+nowarn> {<->ssub * cmss/bx/n}{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{cmss}{bx}{sl} +%<-nowarn> {<->sub * cmss/bx/n}{} +%<+nowarn> {<->ssub * cmss/bx/n}{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{cmss}{bx}{it} +%<-nowarn> {<->sub * cmss/bx/n}{} +%<+nowarn> {<->ssub * cmss/bx/n}{} +%</LHEcmss> +% \end{macrocode} +% +% \subsubsection{Hebrew typewriter font} +% +% We use \emph{Tel Aviv} font as the typewriter font. \emph{Old +% Jaffa} font is used for italic shape and \emph{Dead Sea} +% used for bold face. +% \begin{macrocode} +%<*LHEcmtt> +\DeclareFontFamily{LHE}{cmtt}{\hyphenchar \font\m@ne} +\DeclareFontShape{LHE}{cmtt}{m}{n} + {<-> telav10 }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{cmtt}{m}{sc} +%<-nowarn> {<->sub * cmtt/m/n}{} +%<+nowarn> {<->ssub * cmtt/m/n}{} +%%%%%%% Italicized shape +\DeclareFontShape{LHE}{cmtt}{m}{it} + {<-> oldjaf10 }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{cmtt}{m}{sl} +%<-nowarn> {<->sub * cmtt/m/it}{} +%<+nowarn> {<->ssub * cmtt/m/it}{} +%%%%%%% Bold extended series +\DeclareFontShape{LHE}{cmtt}{bx}{n} + {<-> deads10 }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{cmtt}{bx}{it} +%<-nowarn> {<->sub * cmtt/bx/n}{} +%<+nowarn> {<->ssub * cmtt/bx/n}{} +%</LHEcmtt> +% \end{macrocode} +% +% \subsubsection{Hebrew classic font} +% +% \emph{Hclassic} and \emph{hcaption} fonts are distributed freely +% from |CTAN| sites and copyrighted by Joel M.~Hoffman, of 19 +% Hillcrest Lane, Rye, NY 10580 USA, e-mail: +% |72700.402@compuserve.com|. +% +% Hclassic is a modernized Classical Hebrew font (in the same way +% that Knuth's |cmr| family is a modernized Roman font --- but his +% fonts are much nicer). Hcaption is a slanted version of hclassic +% font. Both fonts contain all of the Hebrew consonants, +% the (rarely used) ligature \emph{alef-lamed} and two versions of +% the letter \emph{ayin} for use with and without +% vowels. Hclassic also contains all of the vowels found in Hebrew, +% a symbol for \emph{meteg}, and dots for use as a \emph{dagesh} +% and for differentiating \emph{shin} and \emph{sin} letters. +% +% Currently, only the Hebrew consonants (\emph{hebalef} -- \emph{hebtav}) +% from these fonts are supported by \LaTeXe{}, however one can use +% vowels and dots directly with \PlainTeX{} macros. We are working +% on generic vowels and dots support for \LaTeXe. +% +% \begin{macrocode} +%<*LHEclas> +\DeclareFontFamily{LHE}{clas}{} +\DeclareFontShape{LHE}{clas}{m}{n} + {<-> s * [0.83345] hclassic }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{clas}{m}{sc} +%<-nowarn> {<->sub * clas/m/n}{} +%<+nowarn> {<->ssub * clas/m/n}{} +%%%%%%% Slanted shape +\DeclareFontShape{LHE}{clas}{m}{sl} + {<-> s * [0.69389] hcaption }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{clas}{m}{it} +%<-nowarn> {<->sub * clas/m/sl}{} +%<+nowarn> {<->ssub * clas/m/sl}{} +%</LHEclas> +% \end{macrocode} +% +% \subsubsection{Hebrew shalom fonts} +% +% All three shalom fonts (\emph{ShalomScript10}, +% \emph{ShalomStick10} and \emph{ShalomOldStyle10}) have been +% created by Jonathan Brecher, of 9 Skyview Road, Lexington, MA +% 02173-1112 USA, e-mail: |brecher@husc.harvard.edu|. +% +% All shalom fonts have been written in \PS{} via Fontographer on a +% Mac. The fonts have been converted to \MF{} by Rama Porrat +% (e-mail: |rama@cc.huji.ac.il|), using +% the utility typo, a font editor + converter between font formats +% (a commercial product). |ShalomScript10.mf| is the \MF{} +% equivalent of |ShalomScript.ps|, |ShalomStick10.mf| came from +% |ShalomStick.ps| and |ShalomOldStyle10.mf| originated in +% |ShalomOldStyle.ps|. +% +% The fonts differ in the letters' style. ShalomScript10 contains +% hand writing Hebrew letters; ShalomStick10 contains sans-serif +% letters, and ShalomOldStyle10 contains old style letters. All +% three fonts contain vowels and dots (nikud). While converting to +% \MF{}, letters and symbols within the fonts have been arranged +% so as to get a usable font for writing Hebrew documents in \TeX{} +% or \LaTeX{}, with as well as without vowels. +% +% Currently, only the Hebrew consonants (\emph{hebalef} -- \emph{hebtav}) +% from these fonts are supported by \LaTeXe{}, however one can use +% vowels and dots directly with \PlainTeX{} macros. We are working +% on generic vowels and dots support for \LaTeXe. +% +% \begin{macrocode} +%<*LHEshold> +\DeclareFontFamily{LHE}{shold}{} +\DeclareFontShape{LHE}{shold}{m}{n} + {<-> shold10 }{} +%</LHEshold> +%<*LHEshscr> +\DeclareFontFamily{LHE}{shscr}{} +\DeclareFontShape{LHE}{shscr}{m}{n} + {<-> shscr10 }{} +%</LHEshscr> +%<*LHEshstk> +\DeclareFontFamily{LHE}{shstk}{} +\DeclareFontShape{LHE}{shstk}{m}{n} + {<-> shstk10 }{} +%</LHEshstk> +% \end{macrocode} +% +% \subsubsection{Hebrew frank-ruehl font} +% +% \emph{Frank Ruehl} font was written in \MF{} and includes three +% shapes: regular, bold extaneded and slanted. +% +% \begin{macrocode} +%<*LHEfr> +\DeclareFontFamily{LHE}{fr}{} +\DeclareFontShape{LHE}{fr}{m}{n} + {<-> fr }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{fr}{m}{sc} +%<-nowarn> {<->sub * fr/m/n}{} +%<+nowarn> {<->ssub * fr/m/n}{} +%%%%%%% Slanted shape +\DeclareFontShape{LHE}{fr}{m}{sl} + {<-> frsl }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{fr}{m}{it} +%<-nowarn> {<->sub * fr/m/sl}{} +%<+nowarn> {<->ssub * fr/m/sl}{} +%%%%%%% Bold extended series +\DeclareFontShape{LHE}{fr}{bx}{n} + {<-> frbx }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{fr}{b}{n} +%<-nowarn> {<->sub * fr/bx/n}{} +%<+nowarn> {<->ssub * fr/bx/n}{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{fr}{bx}{sl} +%<-nowarn> {<->sub * fr/bx/n}{} +%<+nowarn> {<->ssub * fr/bx/n}{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{fr}{bx}{it} +%<-nowarn> {<->sub * fr/bx/n}{} +%<+nowarn> {<->ssub * fr/bx/n}{} +%</LHEfr> +% \end{macrocode} +% +% \subsubsection{Hebrew carmel font} +% +% \emph{Carmel} font includes regular and slanted shapes. It was +% created by Dr.~Samy Zafrany of the Technion, Haifa, Israel with +% the intention of making nice fonts for headers and emphasized +% text. +% +% \begin{macrocode} +%<*LHEcrml> +\DeclareFontFamily{LHE}{crml}{} +\DeclareFontShape{LHE}{crml}{m}{n} + {<-> crml10 }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{crml}{m}{sc} +%<-nowarn> {<->sub * crml/m/n}{} +%<+nowarn> {<->ssub * crml/m/n}{} +%%%%%%% Slanted shape +\DeclareFontShape{LHE}{crml}{m}{sl} + {<-> crmlsl10 }{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{crml}{m}{it} +%<-nowarn> {<->sub * crml/m/sl}{} +%<+nowarn> {<->ssub * crml/m/sl}{} +%</LHEcrml> +% \end{macrocode} +% +% \subsubsection{Hebrew redis font} +% +% \emph{Redis} font has been created by Prof.~Jacques J.~Goldberg +% of the Technion. Haifa, Israel. The font is available in regular, +% slanted and bold extanded shapes. This font contains a full set +% of Hebrew letters in a ``sans-serif vectorized'' style, and +% selected punctuation. +% +% \begin{macrocode} +%<*LHEredis> +\DeclareFontFamily{LHE}{redis}{} +\DeclareFontShape{LHE}{redis}{m}{n}{% + <5> <6> redis7 + <7> <8> <9> <10> <12> gen * redis + <10.95> redis10 + <14.4> redis12 + <17.28> <20.74> <24.88> redis17}{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{redis}{m}{sc} +%<-nowarn> {<->sub * redis/m/n}{} +%<+nowarn> {<->ssub * redis/m/n}{} +%%%%%%% Slanted shape +\DeclareFontShape{LHE}{redis}{m}{sl}{% + <5> <6> <7> rediss8 + <8> <9> <10> <12> gen * rediss + <10.95> rediss10 + <14.4> <17.28> <20.74> <24.88> rediss12}{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{redis}{m}{it} +%<-nowarn> {<->sub * redis/m/sl}{} +%<+nowarn> {<->ssub * redis/m/sl}{} +%%%%%%% Bold extended series +\DeclareFontShape{LHE}{redis}{bx}{n}{% + <5> <6> <7> <8> <9> <10> <10.95> <12> + <14.4> <17.28> <20.74> <24.88> redisb10}{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{redis}{b}{n} +%<-nowarn> {<->sub * redis/bx/n}{} +%<+nowarn> {<->ssub * redis/bx/n}{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{redis}{bx}{sl} +%<-nowarn> {<->sub * redis/bx/n}{} +%<+nowarn> {<->ssub * redis/bx/n}{} +%%%%%%% Font/shape undefined, therefore substituted +\DeclareFontShape{LHE}{redis}{bx}{it} +%<-nowarn> {<->sub * redis/bx/n}{} +%<+nowarn> {<->ssub * redis/bx/n}{} +%</LHEredis> +% \end{macrocode} +% +% \subsection{The \HEH encoding definition file} +% +% The Hebrew font encoding \HEH{} is based upon an extention by +% Microsoft to the ISO-8859-8 standard. This is an 8bit encoding. The +% extentions include hebrew points (``Nikud''). +% +% First we define the Codepage 1255; specify a default +% for the font substitution process for the \HEH{} encoding and +% supply a font to be used when all else fails. +% +% \begin{macrocode} +%<*HE8enc> +\DeclareFontEncoding{HE8}{}{} +\DeclareFontSubstitution{HE8}{cmr}{m}{n} +\DeclareErrorFont{HE8}{cmr}{m}{n}{10} +%</HE8enc> +% \end{macrocode} +% Then we define a few commands in the \HEH{} encoding. +% \begin{macrocode} +%<*HE8enc> +\ProvideTextCommand{\textcopyright}{HE8}{\textcircled{\@latin{c}}} +\ProvideTextCommand{\textregistered}{HE8}{\textcircled{\scshape% + \@latin{r}}} +\ProvideTextCommand{\texttrademark}{HE8}{\textsuperscript{\@latin{TM}}} +%</HE8enc> +% \end{macrocode} +% +% \subsubsection{CHECK HERE FOR HE8 UPDATES} +% +% Because not everyone can input Hebrew input text directly from +% the keyboard we need to define control sequences for all the +% Hebrew glyphs in the fonts. In addition, we want to support +% many input encodings for Hebrew and to keep the language +% definition file (|hebrew.ldf|) independent of the +% encoding. Therefore, we exploit the standard \LaTeXe{} font +% encoding mechanism to define control sequences for all the Hebrew +% glyphs in the fonts in encoding-specific way. The language +% definition file uses only the control sequences and doesn't need +% to check the current font or input encoding. +% +% % In the \LHE{} encoding (7-bit encoding) all the Hebrew glyphes +% % reside in the \emph{lower} half of the font. Currently, only the +% % Hebrew letters are supported. They use the same positions as the +% % latin small letters in |ASCII| encoding and the position of |`|. +% +% Some general symbols: +% \begin{macrocode} +%<*HE8enc> +\ProvideTextCommand{\textcopyright}{HE8}{\textcircled{\@latin{c}}} +\ProvideTextCommand{\textregistered}{HE8}{\textcircled{\scshape% + \@latin{r}}} +\ProvideTextCommand{\texttrademark}{HE8}{\textsuperscript{\@latin{TM}}} +%</HE8enc> +% \end{macrocode} +% +% The hebrew points: +% \begin{macrocode} +%<*HE8enc> +\DeclareTextSymbol{\sheva}{HE8}{192} +\DeclareTextSymbol{\hatafsegol}{HE8}{193} +\DeclareTextSymbol{\hatafpatah}{HE8}{194} +\DeclareTextSymbol{\hatafqamats}{HE8}{195} +\DeclareTextSymbol{\hiriq}{HE8}{196} +\DeclareTextSymbol{\tsere}{HE8}{197} +\DeclareTextSymbol{\segol}{HE8}{198} +\DeclareTextSymbol{\patah}{HE8}{199} +\DeclareTextSymbol{\qamats}{HE8}{200} +\DeclareTextSymbol{\holam}{HE8}{201} +\DeclareTextSymbol{\qubuts}{HE8}{203} +\DeclareTextSymbol{\dagesh}{HE8}{204} +\DeclareTextSymbol{\meteg}{HE8}{205} +\DeclareTextSymbol{\maqaf}{HE8}{206} +\DeclareTextSymbol{\rafe}{HE8}{207} +\DeclareTextSymbol{\paseq}{HE8}{208} +\DeclareTextSymbol{\shindot}{HE8}{209} +\DeclareTextSymbol{\sindot}{HE8}{210} +\DeclareTextSymbol{\sofpasuq}{HE8}{211} +\DeclareTextSymbol{\doublevav}{HE8}{212} +\DeclareTextSymbol{\vavyod}{HE8}{213} +\DeclareTextSymbol{\doubleyod}{HE8}{214} +%</HE8enc> +% \end{macrocode} +% +% Hebrew letters occupy the positions 224--250 in \HEH{} encoding [WHAT +% ABOUT OTHER MARKS]: +% \begin{macrocode} +%<*HE8enc> +% \lccode``=`` % probably not needed (Tzafrir) +\DeclareTextSymbol{\hebalef}{HE8}{224} +\DeclareTextSymbol{\hebbet}{HE8}{225} +\DeclareTextSymbol{\hebgimel}{HE8}{226} +\DeclareTextSymbol{\hebdalet}{HE8}{227} +\DeclareTextSymbol{\hebhe}{HE8}{228} +\DeclareTextSymbol{\hebvav}{HE8}{229} +\DeclareTextSymbol{\hebzayin}{HE8}{230} +\DeclareTextSymbol{\hebhet}{HE8}{231} +\DeclareTextSymbol{\hebtet}{HE8}{232} +\DeclareTextSymbol{\hebyod}{HE8}{233} +\DeclareTextSymbol{\hebfinalkaf}{HE8}{234} +\DeclareTextSymbol{\hebkaf}{HE8}{235} +\DeclareTextSymbol{\heblamed}{HE8}{236} +\DeclareTextSymbol{\hebfinalmem}{HE8}{237} +\DeclareTextSymbol{\hebmem}{HE8}{238} +\DeclareTextSymbol{\hebfinalnun}{HE8}{239} +\DeclareTextSymbol{\hebnun}{HE8}{240} +\DeclareTextSymbol{\hebsamekh}{HE8}{241} +\DeclareTextSymbol{\hebayin}{HE8}{242} +\DeclareTextSymbol{\hebfinalpe}{HE8}{243} +\DeclareTextSymbol{\hebpe}{HE8}{244} +\DeclareTextSymbol{\hebfinaltsadi}{HE8}{245} +\DeclareTextSymbol{\hebtsadi}{HE8}{246} +\DeclareTextSymbol{\hebqof}{HE8}{247} +\DeclareTextSymbol{\hebresh}{HE8}{248} +\DeclareTextSymbol{\hebshin}{HE8}{249} +\DeclareTextSymbol{\hebtav}{HE8}{250} +%</HE8enc> +% \end{macrocode} +% Letter |\hebsin| is defined as a synonym of |\hebshin|: +% \begin{macrocode} +%<+HE8enc>\let\hebsin=\hebshin +% \end{macrocode} +% +% \subsection{The font definition files (in \HEH{} encoding)} +% +% \subsubsection{Hebrew default font} +% +% It uses \emph{OmegaHebrew} font for regular font, \emph{Old +% Jaffa} font for italic shape and small-caps, \emph{Dead Sea} +% font for bold face, and \emph{Tel-Aviv} for bold-italic +% \begin{macrocode} +%<*HE8cmr> +\DeclareFontFamily{HE8}{cmr}{\hyphenchar\font45} +\DeclareFontShape{HE8}{cmr}{m}{n} + {<-> david }{} +%%%%%%% Italicized shape +\DeclareFontShape{HE8}{cmr}{m}{it} + {<-> davidi }{} +\DeclareFontShape{HE8}{cmr}{m}{sl} + {<-> davidi }{} +\DeclareFontShape{HE8}{cmr}{m}{sc} + {<-> david }{} +%%%%%%% Bold extended series +\DeclareFontShape{HE8}{cmr}{bx}{n} + {<-> davidb }{} +\DeclareFontShape{HE8}{cmr}{b}{n} + {<-> davidb }{} +%%%%%%% Bold extended (Italic) series +\DeclareFontShape{HE8}{cmr}{bx}{sl} + {<-> davidbi }{} +\DeclareFontShape{HE8}{cmr}{bx}{it} + {<-> davidbi }{} +%</HE8cmr> +% \end{macrocode} +% +% \subsubsection{Hebrew sans-serif font} +% +% Until we have a real sans-serif font in this distribution, this file +% will remain a copy of the roman fonts definitons above. +% \begin{macrocode} +%<*HE8cmss> +\DeclareFontFamily{HE8}{cmss}{\hyphenchar\font45} +\DeclareFontShape{HE8}{cmss}{m}{n} + {<-> nachlieli }{} +%%%%%%% Italicized shape +\DeclareFontShape{HE8}{cmss}{m}{it} + {<-> nachlieli }{} +\DeclareFontShape{HE8}{cmss}{m}{sl} + {<-> nachlieli }{} +\DeclareFontShape{HE8}{cmss}{m}{sc} + {<-> nachlieli }{} +%%%%%%% Bold extended series +\DeclareFontShape{HE8}{cmss}{bx}{n} + {<-> nachlieli }{} +\DeclareFontShape{HE8}{cmss}{b}{n} + {<-> nachlieli }{} +%%%%%%% Bold extended (Italic) series +\DeclareFontShape{HE8}{cmss}{bx}{sl} + {<-> nachlieli }{} +\DeclareFontShape{HE8}{cmss}{bx}{it} + {<-> nachlieli }{} +%</HE8cmss> +% \end{macrocode} +% +% \subsubsection{Hebrew typewriter font} +% +% Until we have a real sans-serif font in this distribution, this file +% will remain a copy of the roman fonts definitons above. +% \begin{macrocode} +%<*HE8cmtt> +\DeclareFontFamily{HE8}{cmtt}{\hyphenchar\font45} +\DeclareFontShape{HE8}{cmtt}{m}{n} + {<-> miriam }{} +%%%%%%% Italicized shape +\DeclareFontShape{HE8}{cmtt}{m}{it} + {<-> miriam }{} +\DeclareFontShape{HE8}{cmtt}{m}{sl} + {<-> miriam }{} +\DeclareFontShape{HE8}{cmtt}{m}{sc} + {<-> miriam }{} +%%%%%%% Bold extended series +\DeclareFontShape{HE8}{cmtt}{bx}{n} + {<-> miriam }{} +\DeclareFontShape{HE8}{cmtt}{b}{n} + {<-> miriam }{} +%%%%%%% Bold extended (Italic) series +\DeclareFontShape{HE8}{cmtt}{bx}{sl} + {<-> miriam }{} +\DeclareFontShape{HE8}{cmtt}{bx}{it} + {<-> miriam }{} +%</HE8cmtt> +% \end{macrocode} +% +% \subsubsection{8Bit OmegaHebrew font} +% +% \emph{OmegaHebrew} is a serif hebrew font created by the omega project +% [FILL IN CREDITS] +% [FILL IN GENERAL SHAPE DESCRIPTION] +% shapes: [FILL IN] +% +% \begin{macrocode} +%<*HE8OmegaHebrew> +\def\OmegaHebrewscale{0.9} +\DeclareFontFamily{HE8}{OmegaHebrew}{\hyphenchar\font45} +\DeclareFontShape{HE8}{OmegaHebrew}{m}{n}{<-> [\OmegaHebrewscale] OmegaHebrew }{} +%\endinput % is it needed [tzafrir] +%</HE8OmegaHebrew> +% \end{macrocode} +% +% +% \subsubsection{8Bit Aharoni font} +% +% \emph{Aharoni} is a serif hebrew font created by the omega project +% [FILL IN CREDITS] +% [FILL IN GENERAL SHAPE DESCRIPTION] +% shapes: [FILL IN] +% +% \begin{macrocode} +%<*HE8aharoni> +\def\Aharoniscale{1.0} +\DeclareFontFamily{HE8}{aharoni}{\hyphenchar\font45} +\DeclareFontShape{HE8}{aharoni}{m}{n} {<-> [\Aharoniscale] aharoni}{} +\DeclareFontShape{HE8}{aharoni}{m}{it} {<-> [\Aharoniscale] aharonii}{} +\DeclareFontShape{HE8}{aharoni}{m}{sl} {<-> [\Aharoniscale] aharonii}{} +\DeclareFontShape{HE8}{aharoni}{b}{n} {<-> [\Aharoniscale] aharonib}{} +\DeclareFontShape{HE8}{aharoni}{bx}{n} {<-> [\Aharoniscale] aharonib}{} +\DeclareFontShape{HE8}{aharoni}{bx}{it} {<-> [\Aharoniscale] aharonibi}{} + +%\endinput % is it needed [tzafrir] +%</HE8aharoni> +% \end{macrocode} +% +% +% \subsubsection{8Bit David font} +% +% \emph{David} is a serif hebrew font created by the omega project +% [FILL IN CREDITS] +% [FILL IN GENERAL SHAPE DESCRIPTION] +% shapes: [FILL IN] +% +% \begin{macrocode} +%<*HE8david> +\def\Davidscale{1.0} +\DeclareFontFamily{HE8}{david}{\hyphenchar\font45} + +\DeclareFontShape{HE8}{david}{m}{n} {<-> [\Davidscale] david}{} +\DeclareFontShape{HE8}{david}{m}{it} {<-> [\Davidscale] davidi}{} +\DeclareFontShape{HE8}{david}{m}{sl} {<-> [\Davidscale] davidi}{} +\DeclareFontShape{HE8}{david}{b}{n} {<-> [\Davidscale] davidb}{} +\DeclareFontShape{HE8}{david}{bx}{n} {<-> [\Davidscale] davidb}{} +\DeclareFontShape{HE8}{david}{bx}{it} {<-> [\Davidscale] davidbi}{} + + +%\endinput % is it needed [tzafrir] +%</HE8david> +% \end{macrocode} +% +% +% \subsubsection{8Bit Drugulin font} +% +% \emph{Drugulin} is a serif hebrew font created by the omega project +% [FILL IN CREDITS] +% [FILL IN GENERAL SHAPE DESCRIPTION] +% shapes: [FILL IN] +% +% \begin{macrocode} +%<*HE8drugulin> +\def\Drugulinscale{1.0} +\DeclareFontFamily{HE8}{drugulin}{\hyphenchar\font45} +\DeclareFontShape{HE8}{drugulin}{m}{n} {<-> [\Drugulinscale] drugulinb}{} +\DeclareFontShape{HE8}{drugulin}{m}{it} {<-> [\Drugulinscale] drugulinbi}{} +\DeclareFontShape{HE8}{drugulin}{m}{sl} {<-> [\Drugulinscale] drugulinbi}{} +\DeclareFontShape{HE8}{drugulin}{b}{n} {<-> [\Drugulinscale] drugulinb}{} +\DeclareFontShape{HE8}{drugulin}{bx}{n} {<-> [\Drugulinscale] drugulinb}{} +\DeclareFontShape{HE8}{drugulin}{bx}{it} {<-> [\Drugulinscale] drugulinbi}{} +%\endinput % is it needed [tzafrir] +%</HE8drugulin> +% \end{macrocode} +% +% +% \subsubsection{8Bit Ellinia font} +% +% \emph{Ellinia} is a sans-serif hebrew font created by the omega project +% [FILL IN CREDITS] +% [FILL IN GENERAL SHAPE DESCRIPTION] +% shapes: [FILL IN] +% +% \begin{macrocode} +%<*HE8ellinia> +\def\Elliniascale{1.0} +\DeclareFontFamily{HE8}{ellinia}{\hyphenchar\font45} +\DeclareFontShape{HE8}{ellinia}{m}{n} {<-> [\Elliniascale] ellinia}{} +\DeclareFontShape{HE8}{ellinia}{m}{it} {<-> [\Elliniascale] elliniai}{} +\DeclareFontShape{HE8}{ellinia}{m}{sl} {<-> [\Elliniascale] elliniai}{} +\DeclareFontShape{HE8}{ellinia}{b}{n} {<-> [\Elliniascale] elliniab}{} +\DeclareFontShape{HE8}{ellinia}{bx}{n} {<-> [\Elliniascale] elliniab}{} +\DeclareFontShape{HE8}{ellinia}{bx}{it} {<-> [\Elliniascale] elliniabi}{} +%\endinput % is it needed [tzafrir] +%</HE8ellinia> +% \end{macrocode} +% +% +% \subsubsection{8Bit FrankRuehl font} +% +% \emph{FrankRuehl} is a serif hebrew font created by the omega project +% [FILL IN CREDITS] +% [FILL IN GENERAL SHAPE DESCRIPTION] +% shapes: [FILL IN] +% +% \begin{macrocode} +%<*HE8frankruehl> +\def\FrankRuehlscale{1.0} +\DeclareFontFamily{HE8}{frank}{\hyphenchar\font45} +\DeclareFontShape{HE8}{frank}{m}{n} {<-> [\FrankRuehlscale] frank}{} +\DeclareFontShape{HE8}{frank}{m}{it} {<-> [\FrankRuehlscale] franki}{} +\DeclareFontShape{HE8}{frank}{m}{sl} {<-> [\FrankRuehlscale] franki}{} +\DeclareFontShape{HE8}{frank}{b}{n} {<-> [\FrankRuehlscale] frankb}{} +\DeclareFontShape{HE8}{frank}{bx}{n} {<-> [\FrankRuehlscale] frankb}{} +\DeclareFontShape{HE8}{frank}{bx}{it} {<-> [\FrankRuehlscale] frankbi}{} +%\endinput % is it needed [tzafrir] +%</HE8frankruehl> +% \end{macrocode} +% +% +% \subsubsection{8Bit KtavYad font} +% +% \emph{KtavYad} is a serif hebrew font created by the omega project +% [FILL IN CREDITS] +% [FILL IN GENERAL SHAPE DESCRIPTION] +% shapes: [FILL IN] +% +% \begin{macrocode} +%<*HE8yad> +\def\KtavYadscale{1.0} +\DeclareFontFamily{HE8}{yad}{\hyphenchar\font45} +\DeclareFontShape{HE8}{yad}{m}{n} {<-> [\KtavYadscale] yadi}{} +\DeclareFontShape{HE8}{yad}{m}{it} {<-> [\KtavYadscale] yadi}{} +\DeclareFontShape{HE8}{yad}{m}{sl} {<-> [\KtavYadscale] yadi}{} +\DeclareFontShape{HE8}{yad}{b}{n} {<-> [\KtavYadscale] yadbi}{} +\DeclareFontShape{HE8}{yad}{bx}{n} {<-> [\KtavYadscale] yadbi}{} +\DeclareFontShape{HE8}{yad}{bx}{it} {<-> [\KtavYadscale] yadbi}{} +%\endinput % is it needed [tzafrir] +%</HE8yad> +% \end{macrocode} +% +% \subsubsection{8Bit MiriamMono font} +% +% \emph{MiriamMono} is a serif hebrew font created by the omega project +% [FILL IN CREDITS] +% [FILL IN GENERAL SHAPE DESCRIPTION] +% shapes: [FILL IN] +% +% \begin{macrocode} +%<*HE8miriam> +\def\MiriamMonoscale{1.0} +\DeclareFontFamily{HE8}{miriam}{\hyphenchar\font45} +\DeclareFontShape{HE8}{miriam}{m}{n} {<-> [\MiriamMonoscale] miriam}{} +\DeclareFontShape{HE8}{miriam}{m}{it} {<-> [\MiriamMonoscale] miriami}{} +\DeclareFontShape{HE8}{miriam}{m}{sl} {<-> [\MiriamMonoscale] miriami}{} +\DeclareFontShape{HE8}{miriam}{b}{n} {<-> [\MiriamMonoscale] miriamb}{} +\DeclareFontShape{HE8}{miriam}{bx}{n} {<-> [\MiriamMonoscale] miriamb}{} +\DeclareFontShape{HE8}{miriam}{bx}{it} {<-> [\MiriamMonoscale] miriambi}{} + +%\endinput % is it needed [tzafrir] +%</HE8miriam> +% \end{macrocode} +% +% +% \subsubsection{8Bit Nachlieli font} +% +% \emph{Nachlieli} is a serif hebrew font created by the omega project +% [FILL IN CREDITS] +% [FILL IN GENERAL SHAPE DESCRIPTION] +% shapes: [FILL IN] +% +% \begin{macrocode} +%<*HE8nachlieli> +\def\Nachlieliscale{1.0} +\DeclareFontFamily{HE8}{nachlieli}{\hyphenchar\font45} +\DeclareFontShape{HE8}{nachlieli}{m}{n} {<-> [\Nachlieliscale] nachlieli}{} +\DeclareFontShape{HE8}{nachlieli}{m}{it} {<-> [\Nachlieliscale] nachlielii}{} +\DeclareFontShape{HE8}{nachlieli}{m}{sl} {<-> [\Nachlieliscale] nachlielii}{} +\DeclareFontShape{HE8}{nachlieli}{b}{n} {<-> [\Nachlieliscale] nachlielib}{} +\DeclareFontShape{HE8}{nachlieli}{bx}{n} {<-> [\Nachlieliscale] nachlielib}{} +\DeclareFontShape{HE8}{nachlieli}{bx}{it} {<-> [\Nachlieliscale] nachlielibi}{} +%\endinput % is it needed [tzafrir] +%</HE8nachlieli> +% \end{macrocode} +% +% +% \subsubsection{Hebrew font switching commands} +% +% The \pkg{hebfont} package defines a number of high-level commands +% (all starting with |\text..| similar to the standard \LaTeXe{} +% font-change commands, for example |\textbf|) that have one +% argument and typeset this argument in the requested way. These +% commands are defined for all available Hebrew fonts defined above +% and change only font parameters but not direction. +% +% For example, to use Hebrew Classic font family, the following +% sequence of commands should be included in a \LaTeXe{} document: +% \begin{quote} +% |\sethebrew|\\ +% |\textclas{Hebrew text printed with Classic fonts}| +% \end{quote} +% or to use Hebrew with Classic fonts locally: +% \begin{quote} +% |\R{\textclas{Hebrew text printed with Classic fonts}}| +% \end{quote} +% +% \begin{table}[t] +% \begin{center} +% \begin{tabular}{lll} +% \textit{Command} & \textit{Corresponds to} & +% \textit{Font family} \\[4pt] +% |\textjm{..}| & |\rmfamily| & Jerusalem font \\ +% |\textds{..}| & |\bfseries| & Dead Sea font \\ +% |\textoj{..}| & |\itshape| & Old Jaffa font \\ +% & |\slshape| & \\ +% & |\emph| & \\ +% |\textta{..}| & |\sffamily| & Tel-Aviv font \\ +% & |\ttfamily| & \\[2pt] +% |\textcrml{..}| & |\fontfamily{crml}| & Carmel fonts \\[2pt] +% |\textfr{..}| & |\fontfamily{fr}| & Frank-Ruehl fonts \\[2pt] +% |\textredis{..}| & |\fontfamily{redis}| & Redis fonts \\[2pt] +% |\textclas{..}| & |\fontfamily{redis}| & Classic fonts \\[2pt] +% |\textshold{..}| & |\fontfamily{shold}| & Shalom Old Style font \\ +% |\textshscr{..}| & |\fontfamily{shscr}| & Shalom Script font \\ +% |\textshstk{..}| & |\fontfamily{shstk}| & Shalom Stick font +% \end{tabular} +% \end{center} +% \caption{Hebrew font-change commands with arguments} +% \label{tab:fntcmds} +% \begin{quote} +% The font change commands provided here all start with |\text..| +% to emphasize that they are for use in normal text and to be +% easily memorable. +% \end{quote} +% \end{table} +% +% We declare \LaTeXe{} font commands, e.g.\ |\textjm{|\ldots|}| +% for all available fonts. Table~\ref{tab:fntcmds} shows the +% meanings of all these new high-level commands. +% +% \begin{macro}{\textjm} +% Switches to \emph{Jerusalem} font which is default regular Hebrew +% font (``roman'' family). Commands |\textrm{|\ldots|}| and +% old-style |{\rm |\ldots|}| will produce the same result. +% \begin{macrocode} +%<*hebfont> +\def\ivritex@tmp{HE8} +\ifx\ivritex@tmp\HeblatexEncoding % + % compatibility with hebfonts: + \DeclareTextFontCommand{\textjm}{\rmfamily\selectfont} + \DeclareTextFontCommand{\textds}{\bfseries\selectfont} + \DeclareTextFontCommand{\textoj}{\itshape\selectfont} + \DeclareTextFontCommand{\textta}{\sffamily\selectfont} + + % an attempt to give some replacements to the original hebfonts: + % + \DeclareTextFontCommand{\textcrml}{\fontfamily{david}\selectfont} + \DeclareTextFontCommand{\textfr}{\fontfamily{frank}\selectfont} + \DeclareTextFontCommand{\textredis}{\fontfamily{aharoni}\selectfont} + \DeclareTextFontCommand{\textclas}{\fontfamily{drugulin}\selectfont} + \DeclareTextFontCommand{\textshold}{\fontfamily{frank}\selectfont} + \DeclareTextFontCommand{\textshscr}{\fontfamily{yad}\selectfont} + \DeclareTextFontCommand{\textshstk}{\fontfamily{aharoni}\selectfont} + % note that redis is larger than shstk + + + \DeclareTextFontCommand{\textaha}{\fontfamily{aharoni}\selectfont} + \DeclareTextFontCommand{\textdav}{\fontfamily{david}\selectfont} + \DeclareTextFontCommand{\textdru}{\fontfamily{drugulin}\selectfont} + \DeclareTextFontCommand{\textel} {\fontfamily{ellinia}\selectfont} + % \textfr is already declared above + \DeclareTextFontCommand{\textmir}{\fontfamily{miriam}\selectfont} + \DeclareTextFontCommand{\textna} {\fontfamily{nachlieli}\selectfont} + % is this necessary: + \DeclareTextFontCommand{\textyad} {\fontfamily{yad}\selectfont} + +\else% +\DeclareTextFontCommand{\textjm}{\rmfamily\selectfont} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textds} +% Switches to \emph{Dead Sea} font which is default bold font in +% Hebrew. Commands |\textbf{|\ldots|}| and old-style +% |{\bf |\ldots|}| will produce the same result. +% \begin{macrocode} +\DeclareTextFontCommand{\textds}{\bfseries\selectfont} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textoj} +% Switches to \emph{Old Jaffa} font which is default italic font in +% Hebrew. Commands |\textit{|\ldots|}|, |\textsl{|\ldots|}|, +% |\emph{|\ldots|}| and old-style |{\it |\ldots|}| or +% |{\em |\ldots|}| will produce the same result. +% \begin{macrocode} +\DeclareTextFontCommand{\textoj}{\itshape\selectfont} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textta} +% Switches to \emph{Tel-Aviv} font which is default sans-serif font +% in Hebrew. Commands |\textsf{|\ldots|}|, |\texttt{|\ldots|}| and +% old-style |{\sf |\ldots|}| or |{\tt |\ldots|}| will produce the +% same result (because sans-serif is used as typewriter font when +% in Hebrew mode). +% \begin{macrocode} +\DeclareTextFontCommand{\textta}{\sffamily\selectfont} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textcrml} +% Switches to \emph{Carmel} font. Regular and slanted variants of +% carmel font will be used.. +% \begin{macrocode} +\DeclareTextFontCommand{\textcrml}{\fontfamily{crml}\selectfont} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textfr} +% Switches to \emph{Frank-Ruehl} font family. Regular, bold and +% slanted frank ruehl fonts will be used. +% \begin{macrocode} +\DeclareTextFontCommand{\textfr}{\fontfamily{fr}\selectfont} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textredis} +% Switches to \emph{Redis} font family. Regular, bold and slanted +% redis fonts of various sizes will be used. +% \begin{macrocode} +\DeclareTextFontCommand{\textredis}{\fontfamily{redis}\selectfont} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textclas} +% Switches to \emph{Classic} font family. The normal font will be +% hclassic and slanted --- hcaption. +% \begin{macrocode} +\DeclareTextFontCommand{\textclas}{\fontfamily{clas}\selectfont} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textshold} +% Switches to \emph{Shalom Old Style} font. +% \begin{macrocode} +\DeclareTextFontCommand{\textshold}{\fontfamily{shold}\selectfont} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textshscr} +% Switches to \emph{Shalom Script} font. +% \begin{macrocode} +\DeclareTextFontCommand{\textshscr}{\fontfamily{shscr}\selectfont} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textshstk} +% Switches to \emph{Shalom Stick} font. +% \begin{macrocode} +\DeclareTextFontCommand{\textshstk}{\fontfamily{shstk}\selectfont} +\fi +% \end{macrocode} +% \end{macro} +% +% Finally, for backward compatibility with \LaTeX2.09. four old +% font commands, e.g.\ |{\jm |\ldots|}| are defined too (see +% Table~\ref{tab:oldcmds}). +% \begin{table}[t] +% \begin{center} +% \begin{tabular}{lll} +% \textit{Old font command} & \textit{Font name} & +% \textit{Comment}\\[4pt] +% |{\jm ..}| & Jerusalem & default regular (roman) font \\ +% |{\ds ..}| & Dead Sea & default bold font \\ +% |{\oj ..}| & Old Jaffa & default italic and slanted font \\ +% & & used also to emphasize text \\ +% |{\ta ..}| & Tel-Aviv & default sans-serif and typewriter font\\ +% \end{tabular} +% \end{center} +% \caption{Hebrew old font-change commands for compatibility mode} +% \label{tab:oldcmds} +% \end{table} +% \begin{macrocode} +\if@compatibility + \DeclareOldFontCommand{\jm}{\normalfont\rmfamily\selectfont}% + {\@nomath\jm} + \DeclareOldFontCommand{\ds}{\normalfont\bfseries\selectfont}% + {\@nomath\ds} + \DeclareOldFontCommand{\oj}{\normalfont\itshape\selectfont}% + {\@nomath\oj} + \DeclareOldFontCommand{\ta}{\normalfont\sffamily\selectfont}% + {\@nomath\ta} +\fi +%</hebfont> +% \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 diff --git a/Master/texmf-dist/source/generic/babel/hebrew.ins b/Master/texmf-dist/source/generic/babel/hebrew.ins new file mode 100644 index 00000000000..80f35a41eca --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/hebrew.ins @@ -0,0 +1,215 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +%% +%% Copyright (C) 1997 -- 1998 Boris Lavva. +%% Copyright (C) 1989 -- 2004 by Johannes Braams, +%% TeXniek +%% All rights reserved. +%% +%% This file is contributed to the `babel' system. +%% +%% You are allowed to distribute this file together with all files +%% mentioned in manifest.bbl. +%% +%% You are not allowed to modify its contents. +%% +\def\filedate{2004/02/20} +\def\batchfile{hebrew.ins} +\input docstrip + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble + +This is a generated file. + +Copyright 1997-2004 Boris Lavva and any individual authors +listed elsewhere in this file. All rights reserved. + +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble + +This is a generated file. + +Copyright 1997-2004 Boris Lavva and any individual authors +listed elsewhere in this file. All rights reserved. + +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\Msg{*** Generating hebrew font encoding files ***} +\usepreamble\fdpreamble +\generate{\file{lheenc.def}{\from{hebrew.fdd}{LHEenc}} + \file{lhecmr.fd}{\from{hebrew.fdd}{LHEcmr,nowarn}} + \file{lhecmss.fd}{\from{hebrew.fdd}{LHEcmss,nowarn}} + \file{lhecmtt.fd}{\from{hebrew.fdd}{LHEcmtt,nowarn}} + \file{lheclas.fd}{\from{hebrew.fdd}{LHEclas,nowarn}} + \file{he8enc.def}{\from{hebrew.fdd}{HE8enc}} + \file{he8cmr.fd}{\from{hebrew.fdd}{HE8cmr,nowarn}} + \file{he8cmss.fd}{\from{hebrew.fdd}{HE8cmss,nowarn}} + \file{he8cmtt.fd}{\from{hebrew.fdd}{HE8cmtt,nowarn}} + \file{he8aharoni.fd}{\from{hebrew.fdd}{HE8aharoni,nowarn}} + \file{he8david.fd}{\from{hebrew.fdd}{HE8david,nowarn}} + \file{he8drugulin.fd}{\from{hebrew.fdd}{HE8drugulin,nowarn}} + \file{he8frankruehl.fd}{\from{hebrew.fdd}{HE8frankruehl,nowarn}} + \file{he8yad.fd}{\from{hebrew.fdd}{HE8yad,nowarn}} + \file{he8miriam.fd}{\from{hebrew.fdd}{HE8miriam,nowarn}} + \file{he8nachlieli.fd}{\from{hebrew.fdd}{HE8nachlieli,nowarn}} + \file{he8OmegaHebrew.fd}{\from{hebrew.fdd}{HE8OmegaHebrew,nowarn}} + \file{lheshold.fd}{\from{hebrew.fdd}{LHEshold,nowarn}} + \file{lheshscr.fd}{\from{hebrew.fdd}{LHEshscr,nowarn}} + \file{lheshstk.fd}{\from{hebrew.fdd}{LHEshstk,nowarn}} + \file{lhefr.fd}{\from{hebrew.fdd}{LHEfr,nowarn}} + \file{lhecrml.fd}{\from{hebrew.fdd}{LHEcrml,nowarn}} + \file{lheredis.fd}{\from{hebrew.fdd}{LHEredis,nowarn}} + \file{hebfont.sty}{\from{hebrew.fdd}{hebfont}} + } + +\Msg{*** Generating hebrew input encoding files ***} +\usepreamble\mainpreamble +\generate{\file{8859-8.def}{\from{hebinp.dtx}{8859-8}} + \file{cp1255.def}{\from{hebinp.dtx}{cp1255}} + \file{cp862.def}{\from{hebinp.dtx}{cp862}} + \file{si960.def}{\from{hebinp.dtx}{si960}} + } + +\Msg{*** Generating hebrew language support files ***} +\generate{\file{hebrew.ldf}{\from{hebrew.dtx}{hebrew}} + \file{rlbabel.def}{\from{hebrew.dtx}{rightleft}} + \file{hebcal.sty}{\from{hebrew.dtx}{calendar}} + } + +\Msg{*** Generating hebrew 2.09 compatibility files ***} +\generate{\file{hebrew_newcode.sty}{\from{heb209.dtx}{newcode}} + \file{hebrew_p.sty}{\from{heb209.dtx}{pccode}} + \file{hebrew_oldcode.sty}{\from{heb209.dtx}{oldcode}} + } + +\ifToplevel{ +\Msg{*************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.cls, *.sty, *.ldf, *.fd and *.def} +\Msg{*} +\Msg{* To produce the documentation run `hebrew.dtx' through LaTeX} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{*************************************************************} +} + +\endbatchfile diff --git a/Master/texmf-dist/source/generic/babel/icelandic.dtx b/Master/texmf-dist/source/generic/babel/icelandic.dtx new file mode 100644 index 00000000000..7b4be56c383 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/icelandic.dtx @@ -0,0 +1,749 @@ +% \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{546} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{icelandic.dtx} +%</dtx> +%<code>\ProvidesLanguage{icelandic} +%\fi +%\ProvidesFile{icelandic.dtx} + [2005/03/30 v1.1g Icelandic support from the babel system] +%\iffalse +%% File iceland.dtx +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989--2005 +%% by Johannes Braams, TeXniek +% +%% Icelandic Language Definition File +%% Copyright (C) 1996--2005 +%% by Einar \'Arnason <einar@lif.hi.is> +%% Johannes Braams, TeXniek +% +%% Please report errors to: Einar \'Arnason +%% einar at lif.hi.is +%% or to: J.L. Braams +%% babel at braams.cistron.nl +%% +% +%<*filedriver> +\documentclass{ltxdoc} +\usepackage{t1enc} +\usepackage[icelandic,english]{babel} +\font\manual=logo10 % font used for the METAFONT logo, etc. +\newcommand*\MF{{\manual META}\-{\manual FONT}} +\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} +\begin{center} + \textbf{\Large A Babel language definition file for + Icelandic}\\[3mm]^^A\] + Einar \'Arnason\\ + \texttt{einar@lif.hi.is} +\end{center} + \DocInput{icelandic.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{iceland.dtx} +% +% +% \changes{icelandic-1.1c}{1997/05/21}{Removed code already present in +% \file{babel.def}} +% +% \section{The Icelandic language} +% +% \subsection{Overview} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. } defines all the language definition macros for +% the Icelandic language +% +% Customization for the Icelandic language was made following +% several official and semiofficial publications~\cite{74:_augl, +% 77:_augl,88:_reglur,94:_si,97:_forst_fs}. These publications do +% not always agree and we indicate those instances. +% +% For this language the character |"| is made active. In +% table~\ref{tab:icelandic-extras} an overview is given of its +% purpose. +% \begin{table}[htb] +% \begin{center} +% \begin{otherlanguage*}{icelandic} +% \begin{tabular}{lp{8cm}} +% \verb="|= & disable ligature at this position. \\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word. \\ +% |""| & like |"-|, but producing no hyphen sign +% (for compund words with hyphen, e.g.\ |x-""y|). \\ +% |"~| & for a compound word mark without a breakpoint. \\ +% |"=| & for a compound word mark with a breakpoint, allowing +% hyphenation in the composing words. \\ +% |"`| & for Icelandic left double quotes (looks like ,,). \\ +% |"'| & for Icelandic right double quotes. \\ +% |">| & for Icelandic `french' left double quotes +% (similar to $>>$).\\ +% |"<| & for Icelandic `french' right double quotes +% (similar to $<<$).\\ +% |"o| & for old Icelandic "o \\ +% |"O| & for old Icelandic "O \\ +% |"ó| & for old Icelandic "ó \\ +% |"Ó| & for old Icelandic "Ó \\ +% |"e| & for old Icelandic "e \\ +% |"E| & for old Icelandic "E \\ +% |"é| & for old Icelandic "é \\ +% |"É| & for old Icelandic "É \\ +% |\tala| & for typesetting numbers\\ +% |\grada| & for the `degree' symbol\\ +% |\gradur| & for `degrees', e.g. 5~\gradur C\\ +% |\upp| & for textsuperscript \\ +% \end{tabular} +% \end{otherlanguage*} +% \caption{The shorthands and extra definitions made +% by \file{icelandic.ldf}}\label{tab:icelandic-extras} +% \end{center} +% \end{table} +% The shorthands in table~\ref{tab:icelandic-extras} can also be +% typeset by using the commands in +% table~\ref{tab:icelandic-commands}. +% \begin{table}[htb] +% \begin{center} +% \begin{otherlanguage*}{icelandic} +% \begin{tabular}{lp{8cm}} +% |\ilqq| & for Icelandic left double quotes +% (looks like ,,). \\ +% |\irqq| & for Icelandic right double quotes +% (looks like ``). \\ +% |\ilq| & for Icelandic left single quotes +% (looks like ,). \\ +% |\irq| & for Icelandic right single quotes +% (looks like `). \\ +% |\iflqq| & for Icelandic `french' left double quotes +% (similar to $>>$).\\ +% |\ifrqq| & for Icelandic `french' right double quotes +% (similar to $<<$).\\ +% |\ifrq| & for Icelandic `french' right single quotes +% (similar to $<$).\\ +% |\iflq| & for Icelandic `french' left single quotes +% (similar to $>$). \\ +% |\dq| & the original quotes character (|"|). \\ +% |\oob| & for old Icelandic "o \\ +% |\Oob| & for old Icelandic "O \\ +% |\ooob| & for old Icelandic "ó \\ +% |\OOob| & for old Icelandic "Ó \\ +% |\eob| & for old Icelandic "e \\ +% |\Eob| & for old Icelandic "E \\ +% |\eeob| & for old Icelandic "é \\ +% |\EEob| & for old Icelandic "É \\ +% \end{tabular} +% \end{otherlanguage*} +% \caption{Commands which produce quotes and old Icelandic +% diacritics, defined by +% \file{icelandic.ldf}}\label{tab:icelandic-commands} +% \end{center} +% \end{table} +% +% \begin{thebibliography}{1} +% +% \bibitem{88:_reglur} +% Alþingi. +% \newblock {\em Reglur um frágang þingskjala og prentun umræðna}, +% 1988. +% +% \bibitem{74:_augl} +% Auglýsing um greinarmerkjasetningu. +% \newblock Stj.tíð B, nr. 133/1974, 1974. +% +% \bibitem{77:_augl} +% Auglýsing um breyting auglýsingu nr. 132/1974 um íslenska +% stafsetningu. +% \newblock Stj.tíð B, nr. 261/1977, 1977. +% +% \bibitem{unknown72:_first_gramm_treat} +% Einar Haugen, editor. +% \newblock {\em First Grammatical Treatise}. +% \newblock Longman, London, 2 edition, 1972. +% +% \bibitem{97:_forst_fs} +% Staðlaráð Íslands og Fagráð í upplýsingatækni, Reykjavík. +% \newblock {\em Forstaðall FS 130:1997}, 1997. +% +% \bibitem{94:_si} +% STRÍ Staðlaráð Íslands. +% \newblock {\em SI - kerfið}, 2 edition, 1994. +% +% \end{thebibliography} +% +% \StopEventually{} +% +% +% \subsection{\TeX{}nical details} +% +% When this file was read through the option \Lopt{icelandic} we make +% it behave as if \Lopt{icelandic} was specified. +% +% \begin{macrocode} +\def\bbl@tempa{icelandic} +\ifx\CurrentOption\bbl@tempa + \def\CurrentOption{icelandic} +\fi +% \end{macrocode} +% +% The macro |\LdfInit| takes care of preventing that this file is +% loaded more than once, checking the category code of the +% \texttt{@} sign, etc. +% \begin{macrocode} +%<*code> +\LdfInit\CurrentOption{captions\CurrentOption} +% \end{macrocode} +% +% When this file is read as an option, i.e., by the |\usepackage| +% command, \texttt{icelandic} will be an `unknown' language, so we +% have to make it known. So we check for the existence of +% |\l@icelandic| to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\l@icelandic\@undefined + \@nopatterns{Icelandic} + \adddialect\l@icelandic0 +\fi +% \end{macrocode} +% +% \begin{macro}{\if@Two@E} +% We will need a new `if' : |\if@Two@E| is true if and only if +% \LaTeXe{} is running \emph{not} in compatibility mode. It is +% used in the definitions of the command |\tala| and |\upp|. +% The definition is somewhat complicated, due to the fact that +% |\if@compatibility| is not recognized as a |\if| in +% \LaTeX-2.09 based formats. +% \begin{macrocode} +\newif\if@Two@E \@Two@Etrue +\def\@FI@{\fi} +\ifx\@compatibilitytrue\@undefined + \@Two@Efalse \def\@FI@{\relax} +\else + \if@compatibility \@Two@Efalse \fi +\@FI@ +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\extrasicelandic} +% \begin{macro}{\noextrasicelandic} +% +% The macro |\extrasicelandic| +% will perform all the extra definitions needed for the Icelandic +% language. The macro |\noextrasicelandic| is used to cancel the +% actions of |\extrasicelandic|. +% +% For Icelandic the \texttt{"} character is +% made active. This is done once, later on its definition may vary. +% \begin{macrocode} +\initiate@active@char{"} +\@namedef{extras\CurrentOption}{% + \languageshorthands{icelandic}} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@activate{"}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{icelandic-1.1e}{1999/12/17}{Deactivate shorthands ouside of +% Icelandic} +% \begin{macrocode} +\addto\noextrasicelandic{\bbl@deactivate{"}} +% \end{macrocode} +% +% The icelandic hyphenation patterns can be used with +% |\lefthyphenmin| and |\righthyphenmin| set to~2. +% \changes{icelandic-1.1f}{2000/09/22}{Now use \cs{providehyphenmins} +% to provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The code above is necessary because we need an extra active +% character. This character is then used as indicated in +% table~\ref{tab:icelandic-commands}. +% +% To be able to define the function of |"|, we first define a +% couple of `support' macros. +% +% \subsection{Captionnames and date} +% +% The next step consists of defining the Icelandic equivalents for +% the \LaTeX{} captionnames. +% +% \begin{macro}{\captionsicelandic} +% The macro |\captionsicelandic| will define all strings used +% used in the four standard document classes provided +% with \LaTeX. +% \changes{icelandic-1.1f}{2000/09/20}{Added \cs{glossaryname}} +% \changes{icelandic-1.1g}{2002/01/00}{Only use 7-bit ASCII characters +% in order to keep the texts input encoding independant} +% \changes{icelandic-1.1g}{2002/01/09}{Added translation for Glossary} +% \begin{macrocode} +\@namedef{captions\CurrentOption}{% + \def\prefacename{Form\'{a}li}% + \def\refname{Heimildir}% + \def\abstractname{\'{U}tdr\'{a}ttur}% + \def\bibname{Heimildir}% + \def\chaptername{Kafli}% + \def\appendixname{Vi{\dh}auki}% + \def\contentsname{Efnisyfirlit}% + \def\listfigurename{Myndaskr\'{a}}% + \def\listtablename{T\"{o}fluskr\'{a}}% + \def\indexname{Atri{\dh}isor{\dh}askr\'{a}}% + \def\figurename{Mynd}% + \def\tablename{Tafla}% + \def\partname{Hluti}% + \def\enclname{Hj\'{a}lagt}% + \def\ccname{Samrit}% + \def\headtoname{Til:}% in letter + \def\pagename{Bla{\dh}s\'{\i}{\dh}a}% + \def\seename{Sj\'{a}}% + \def\alsoname{Sj\'{a} einnig}% + \def\proofname{S\"{o}nnun}% + \def\glossaryname{Or{\dh}alisti}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateicelandic} +% The macro |\dateicelandic| redefines the command |\today| +% to produce Icelandic dates. +% \changes{icelandic-1.1c}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{icelandic-1.1c}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \begin{macrocode} +\def\dateicelandic{% + \def\today{\number\day.~\ifcase\month\or + jan\'{u}ar\or febr\'{u}ar\or mars\or apr\'{\i}l\or ma\'{\i}\or + j\'{u}n\'{\i}\or j\'{u}l\'{\i}\or \'{a}g\'{u}st\or september\or + okt\'{o}ber\or n\'{o}vember\or desember\fi + \space\number\year}} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Icelandic quotation marks} +% +% +% \begin{macro}{\dq} +% We save the original double quote character in |\dq| to keep +% it available, the math accent |\"| can now be typed as |"|. +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\x{\endgroup + \def\@SS{\mathchar"7019 } + \def\dq{"}} +\x +% \end{macrocode} +% \end{macro} +% +% Now we can define the icelandic and icelandic `french' quotes. +% The icelandic `french' guillemets are the reverse of french +% guillemets. We define single icelandic `french' quotes for +% compatibility. Shorthands are provided for a number of different +% quotation marks, which make them useable both outside and +% inside mathmode. +% +% \begin{macrocode} +\let\ilq\grq +\let\irq\grq +\let\iflq\frq +\let\ifrq\flq +\let\ilqq\glqq +\let\irqq\grqq +\let\iflqq\frqq +\let\ifrqq\flqq +% \end{macrocode} +% +% \begin{macrocode} +\declare@shorthand{icelandic}{"`}{\glqq} +\declare@shorthand{icelandic}{"'}{\grqq} +\declare@shorthand{icelandic}{">}{\frqq} +\declare@shorthand{icelandic}{"<}{\flqq} +% \end{macrocode} +% and some additional commands: +% \begin{macrocode} +\declare@shorthand{icelandic}{"-}{\nobreak\-\bbl@allowhyphens} +\declare@shorthand{icelandic}{"|}{% + \textormath{\nobreak\discretionary{-}{}{\kern.03em}% + \bbl@allowhyphens}{}} +\declare@shorthand{icelandic}{""}{\hskip\z@skip} +\declare@shorthand{icelandic}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{icelandic}{"=}{\nobreak-\hskip\z@skip} +% \end{macrocode} +% +% +% \subsection{Old Icelandic} +% \label{oldicelandic} +% +% \changes{icelandic-1.1}{1997/04/24}{Added definitions for old +% icelandic.} +% +% In old Icelandic some letters have special diacritical marks, +% described for example in \emph{First Grammatical +% Treatise}~\cite{unknown72:_first_gramm_treat,97:_forst_fs}. We +% provide these in the \texttt{T1} encoding with the `ogonek'. The +% ogonek is placed with the letters `o', and `O', `ó' and `Ó', `e' +% and `E', and `é' and `É'. Shorthands are provided for these as +% well. +% +% The following code by Leszek Holenderski lifted from +% \texttt{polish.dtx} is designed to position the diacritics +% correctly for every font in every size. These macros need a +% few extra dimension variables. +% +% \begin{macrocode} +\newdimen\pl@left +\newdimen\pl@down +\newdimen\pl@right +\newdimen\pl@temp +% \end{macrocode} +% +% \begin{macro}{\sob} +% The macro |\sob| is used to put the `ogonek' in the right +% place. +% +% \begin{macrocode} +\def\sob#1#2#3#4#5{%parameters: letter and fractions hl,ho,vl,vo + \setbox0\hbox{#1}\setbox1\hbox{\k{}}\setbox2\hbox{p}% + \pl@right=#2\wd0 \advance\pl@right by-#3\wd1 + \pl@down=#5\ht1 \advance\pl@down by-#4\ht0 + \pl@left=\pl@right \advance\pl@left by\wd1 + \pl@temp=-\pl@down \advance\pl@temp by\dp2 \dp1=\pl@temp + \leavevmode + \kern\pl@right\lower\pl@down\box1\kern-\pl@left #1} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\oob} +% \begin{macro}{\Oob} +% \begin{macro}{\ooob} +% \begin{macro}{\OOob} +% \begin{macro}{\eob} +% \begin{macro}{\Eob} +% \begin{macro}{\eeob} +% \begin{macro}{\EEob} +% \begin{macrocode} +\DeclareTextCommand{\oob}{T1}{\sob {o}{.85}{0}{.04}{0}} +\DeclareTextCommand{\Oob}{T1}{\sob {O}{.7}{0}{0}{0}} +\DeclareTextCommand{\ooob}{T1}{\sob {ó}{.85}{0}{.04}{0}} +\DeclareTextCommand{\OOob}{T1}{\sob {Ó}{.7}{0}{0}{0}} +\DeclareTextCommand{\eob}{T1}{\sob {e}{1}{0}{.04}{0}} +\DeclareTextCommand{\Eob}{T1}{\sob {E}{1}{0}{.04}{0}} +\DeclareTextCommand{\eeob}{T1}{\sob {é}{1}{0}{.04}{0}} +\DeclareTextCommand{\EEob}{T1}{\sob {É}{1}{0}{.04}{0}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +\declare@shorthand{icelandic}{"o}{\oob} +\declare@shorthand{icelandic}{"O}{\Oob} +\declare@shorthand{icelandic}{"ó}{\ooob} +\declare@shorthand{icelandic}{"Ó}{\OOob} +\declare@shorthand{icelandic}{"e}{\eob} +\declare@shorthand{icelandic}{"E}{\Eob} +\declare@shorthand{icelandic}{"é}{\eeob} +\declare@shorthand{icelandic}{"É}{\EEob} +% \end{macrocode} +% +% \subsection{Formatting numbers} +% \label{numbers} +% +% \changes{icelandic-1.1a}{1997/04/26}{Added definitions for +% formatting numbers in Icelandic and some extra utilities.} +% This section is lifted from \texttt{frenchb.dtx} by D. Flipo. +% In English the decimal part starts with a point and thousands +% should be separated by a comma: an approximation of $1000\pi$ +% should be inputed as |$3{,}141.592{,}653$| in math-mode and +% as |3,141.592,653| in text. +% \changes{icelandic-1.1b}{1997/05/05}{Added references to various +% publications used} +% +% In Icelandic the decimal part starts with a comma and thousands +% should be separated by a space~\cite{88:_reglur} or by a +% period~\cite{97:_forst_fs}; we have the space. The above +% approximation of $1000\pi$ should be inputed as +% |$3\;141{,}592\;653$| in math-mode and as something like +% |3~141,592~653| in text. Braces are mandatory around the comma in +% math-mode, the reason is mentioned in the \TeX{}book p.~134: +% the comma is of type |\mathpunct| (thus normally followed by a +% space) while the point is of type |\mathord| (no space added). +% +% Thierry Bouche suggested that a second type of comma, of type +% |\mathord| would be useful in math-mode, and proposed to +% introduce a command (named |\decimalsep| in this package), +% the expansion of which would depend on the current language. +% +% Vincent Jalby suggested a command |\nombre| to conveniently +% typeset numbers: inputting |\nombre{3141,592653}| either in +% text or in math-mode will format this number properly according +% to the current language (Icelandic or non-Icelandic). We use +% |\nombre| to define command |\tala| in Icelandic. +% +% |\tala| accepts an optional argument which happens to be +% useful with the extension `dcolumn', it specifies the decimal +% separator used in the \emph{source code}: +% |\newcolumntype{d}{D{,}{\decimalsep}{-1}}| \\ +% |\begin{tabular}{|d|}\hline | \\ +% | 3,14 \\ | \\ +% | \tala[,]{123,4567} \\ | \\ +% | \tala[,]{9876,543}\\\hline| \\ +% |\end{tabular} | \\ +% will print a column of numbers aligned on the decimal point +% (comma or point depending on the current language), each slice +% of 3 digits being separated by a space or a comma according to +% the current language. +% +% \begin{macro}{\decimalsep} +% \begin{macro}{\thousandsep} +% We need a internal definition, valid in both text and math-mode, +% for the comma (|\@comma@|) and another one for the unbreakable +% fixed length space (no glue) used in Icelandic (|\f@thousandsep|). +% +% The commands |\decimalsep| and |\thousandsep| get default +% definitions (for the English language) when |icelandic| is loaded; +% these definitions will be updated when the current language is +% switched to or from Icelandic. +% \begin{macrocode} +\mathchardef\m@comma="013B \def\@comma@{\ifmmode\m@comma\else,\fi} +\def\f@thousandsep{\ifmmode\mskip5.5mu\else\penalty\@M\kern.3em\fi} +\newcommand{\decimalsep}{.} \newcommand{\thousandsep}{\@comma@} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \def\decimalsep{\@comma@}% + \def\thousandsep{\f@thousandsep}} +\expandafter\addto\csname noextras\CurrentOption\endcsname{% + \def\decimalsep{.}% + \def\thousandsep{\@comma@}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\tala} +% The decimal separator used when \emph{inputing} a number +% with |\tala| \emph{has to be a comma}. +% |\tala| splits the inputed number into two parts: what +% comes before the first comma will be formatted by +% \cs{@integerpart} while the rest (if not empty) will be +% formatted by \cs{@decimalpart}. Both parts, once formatted +% separately will be merged together with between them, either +% the decimal separator \cs{decimalsep} or (in \LaTeXe{} +% \emph{only}) the optional argument of |\tala|. +% +% \begin{macrocode} +\if@Two@E + \newcommand{\tala}[2][\decimalsep]{% + \def\@decimalsep{#1}\@tala#2\@empty,\@empty,\@nil} +\else + \newcommand{\tala}[1]{% + \def\@decimalsep{\decimalsep}\@tala#1\@empty,\@empty,\@nil} +\fi +\def\@tala#1,#2,#3\@nil{% + \ifx\@empty#2% + \@integerpart{#1}% + \else + \@integerpart{#1}\@decimalsep\@decimalpart{#2}% + \fi} +% \end{macrocode} +% The easiest bit is the decimal part: +% We attempt to read the first four digits of the decimal part, if +% it has less than 4 digits, we just have to print them, otherwise +% |\thousandsep| has to be appended after the third digit, and the +% algorithm is applied recursively to the rest of the decimal part. +% \begin{macrocode} +\def\@decimalpart#1{\@@decimalpart#1\@empty\@empty\@empty} +\def\@@decimalpart#1#2#3#4{#1#2#3% + \ifx\@empty#4% + \else + \thousandsep\expandafter\@@decimalpart\expandafter#4% + \fi} +% \end{macrocode} +% Formatting the integer part is more difficult because the slices +% of 3 digits start from the \emph{bottom} while the number is +% read from the top! +% This (tricky) code is borrowed from David Carlisle's comma.sty. +% \begin{macrocode} +\def\@integerpart#1{\@@integerpart{}#1\@empty\@empty\@empty} +\def\@@integerpart#1#2#3#4{% + \ifx\@empty#2% + \@addthousandsep#1\relax + \else + \ifx\@empty#3% + \@addthousandsep\@empty\@empty#1#2\relax + \else + \ifx\@empty#4% + \@addthousandsep\@empty#1#2#3\relax + \else + \@@integerpartafterfi{#1#2#3#4}% + \fi + \fi + \fi} +\def\@@integerpartafterfi#1\fi\fi\fi{\fi\fi\fi\@@integerpart{#1}} +\def\@addthousandsep#1#2#3#4{#1#2#3% + \if#4\relax + \else + \thousandsep\expandafter\@addthousandsep\expandafter#4% + \fi} +% \end{macrocode} +% \end{macro} +% +% \subsection{Extra utilities} +% +% We now provide the Icelandic user with some extra utilities. +% +% \begin{macro}{\upp} +% |\upp| is for typesetting superscripts. |\upp| relies on +% \begin{macro}{\upp@size} +% The internal macro |\upp@size| holds the size at which the +% superscript will be typeset. The reason for this is that we have +% to specify it differently for different formats. +% \begin{macrocode} +\ifx\sevenrm\@undefined + \ifx\@ptsize\@undefined + \let\upp@size\small + \else + \ifx\selectfont\@undefined +% \end{macrocode} +% In this case the format is the original \LaTeX-2.09: +% \begin{macrocode} + \ifcase\@ptsize + \let\upp@size\ixpt\or + \let\upp@size\xpt\or + \let\upp@size\xipt + \fi +% \end{macrocode} +% When |\selectfont| is defined we probably have NFSS available: +% \begin{macrocode} + \else + \ifcase\@ptsize + \def\upp@size{\fontsize\@ixpt{10pt}\selectfont}\or + \def\upp@size{\fontsize\@xpt{11pt}\selectfont}\or + \def\upp@size{\fontsize\@xipt{12pt}\selectfont} + \fi + \fi + \fi +\else +% \end{macrocode} +% If we end up here it must be a plain based \TeX{} format, so: +% \begin{macrocode} + \let\upp@size\sevenrm +\fi +% \end{macrocode} +% \end{macro} +% Now we can define |\upp|. When \LaTeXe{} runs in +% compatibility mode (\LaTeX-2.09 emulation), |\textsuperscript| is +% also defined, but does no good job, so we give two different +% definitions for |\upp| using |\if@Two@E|. +% \begin{macrocode} +\if@Two@E + \DeclareRobustCommand*{\upp}[1]{\textsuperscript{#1}} +\else + \DeclareRobustCommand*{\upp}[1]{% + \leavevmode\raise1ex\hbox{\upp@size#1}} +\fi +% \end{macrocode} +% +% \end{macro} +% +% Some definitions for special characters. +% |\grada| needs a special treatment: it is |\char6| +% in T1-encoding and |\char23| in OT1-encoding. +% \begin{macrocode} +\ifx\fmtname\LaTeXeFmtName + \DeclareTextSymbol{\grada}{T1}{6} + \DeclareTextSymbol{\grada}{OT1}{23} +\else + \def\T@one{T1} + \ifx\f@encoding\T@one + \newcommand{\grada}{\char6} + \else + \newcommand{\grada}{\char23} + \fi +\fi +% \end{macrocode} +% +% \begin{macro}{\gradur} +% Macro for typesetting the abbreviation for `degrees' (as in +% `degrees Celsius'). As the bounding box of the character `degree' +% has \emph{very} different widths in CMR/DC and PostScript fonts, +% we fix the width of the bounding box of |\gradur| to 0.3\,em, +% this lets the symbol `degree' stick to the preceding +% (e.g., |45\gradur|) or following character (e.g., |20~\gradur C|). +% \begin{macrocode} +\DeclareRobustCommand*{\gradur}{% + \leavevmode\hbox to 0.3em{\hss\grada\hss}} +% \end{macrocode} +% \end{macro} +% +% 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. +% \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 diff --git a/Master/texmf-dist/source/generic/babel/icelandic.ins b/Master/texmf-dist/source/generic/babel/icelandic.ins new file mode 100644 index 00000000000..21ba5daade9 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/icelandic.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{2000/09/26} +\def\batchfile{icelandic.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{icelandic.ldf}{\from{icelandic.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/interlingua.dtx b/Master/texmf-dist/source/generic/babel/interlingua.dtx new file mode 100644 index 00000000000..56b109fdca7 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/interlingua.dtx @@ -0,0 +1,207 @@ +% \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{85} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{interlingua.dtx} +%</dtx> +%<code>\ProvidesLanguage{interlingua} +%\fi +%\ProvidesFile{interlingua.dtx} + [2005/03/30 v1.6 Interlingua support from the babel system] +%\iffalse +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 -- 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source code for +% the Interlingua language definition file. +%<*filedriver> +\documentclass{ltxdoc} +\newcommand*{\TeXhax}{\TeX hax} +\newcommand*{\babel}{\textsf{babel}} +\newcommand*{\langvar}{$\langle \mathit lang \rangle$} +\newcommand*{\note}[1]{} +\newcommand*{\Lopt}[1]{\textsf{#1}} +\newcommand*{\file}[1]{\texttt{#1}} +\usepackage{url} +\begin{document} + \DocInput{interlingua.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{interlingua.dtx} +% +% \section{The Interlingua language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate.} defines all the language definition macros for the +% Interlingua language. This file was contributed by Peter +% Kleiweg, kleiweg at let.rug.nl. +% +% Interlingua is an auxiliary language, built from the common +% vocabulary of Spanish/Portuguese, English, Italian and French, +% with some normalisation of spelling. The grammar is very easy, +% more similar to English's than to neolatin languages. The site +% \url{http://www.interlingua.com} is mostly written in interlingua +% (as is \url{http://interlingua.altervista.org}), in case you want +% to read some sample of it. +% +% You can have a look at the grammar at +% \url{http://www.geocities.com/linguablau} +% +% \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. +% \begin{macrocode} +%<*code> +\LdfInit{interlingua}{captionsinterlingua} +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{interlingua} could be an `unknown' language in +% which case we have to make it known. So we check for the +% existence of |\l@interlingua| to see whether we have to do +% something here. +% +% \begin{macrocode} +\ifx\undefined\l@interlingua + \@nopatterns{Interlingua} + \adddialect\l@interlingua0\fi +% \end{macrocode} + +% The next step consists of defining commands to switch to (and +% from) the Interlingua language. +% +% +% \begin{macro}{\interlinguahyphenmins} +% This macro is used to store the correct values of the hyphenation +% parameters |\lefthyphenmin| and |\righthyphenmin|. +% \begin{macrocode} +\providehyphenmins{interlingua}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\captionsinterlingua} +% The macro |\captionsinterlingua| defines all strings used in the +% four standard documentclasses provided with \LaTeX. +% \begin{macrocode} +\def\captionsinterlingua{% + \def\prefacename{Prefacio}% + \def\refname{Referentias}% + \def\abstractname{Summario}% + \def\bibname{Bibliographia}% + \def\chaptername{Capitulo}% + \def\appendixname{Appendice}% + \def\contentsname{Contento}% + \def\listfigurename{Lista de figuras}% + \def\listtablename{Lista de tabellas}% + \def\indexname{Indice}% + \def\figurename{Figura}% + \def\tablename{Tabella}% + \def\partname{Parte}% + \def\enclname{Incluso}% + \def\ccname{Copia}% + \def\headtoname{A}% + \def\pagename{Pagina}% + \def\seename{vide}% + \def\alsoname{vide etiam}% + \def\proofname{Prova}% + \def\glossaryname{Glossario}% + } +% \end{macrocode} +% \end{macro} + + +% \begin{macro}{\dateinterlingua} +% The macro |\dateinterlingua| redefines the command |\today| to +% produce Interlingua dates. +% \begin{macrocode} +\def\dateinterlingua{% + \def\today{le~\number\day\space de \ifcase\month\or + januario\or februario\or martio\or april\or maio\or junio\or + julio\or augusto\or septembre\or octobre\or novembre\or + decembre\fi + \space \number\year}} +% \end{macrocode} +% \end{macro} +% + +% \begin{macro}{\extrasinterlingua} +% \begin{macro}{\noextrasinterlingua} +% The macro |\extrasinterlingua| will perform all the extra +% definitions needed for the Interlingua language. The macro +% |\noextrasinterlingua| is used to cancel the actions of +% |\extrasinterlingua|. For the moment these macros are empty but +% they are defined for compatibility with the other +% language definition files. +% +% \begin{macrocode} +\addto\extrasinterlingua{} +\addto\noextrasinterlingua{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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. +% \begin{macrocode} +\ldf@finish{interlingua} +%</code> +% \end{macrocode} +% +% \Finale +%\endinput +%% \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 \~} +%% diff --git a/Master/texmf-dist/source/generic/babel/interlingua.ins b/Master/texmf-dist/source/generic/babel/interlingua.ins new file mode 100644 index 00000000000..679af1e10c4 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/interlingua.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{2003/11/13} +\def\batchfile{interlingua.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{interlingua.ldf}{\from{interlingua.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/irish.dtx b/Master/texmf-dist/source/generic/babel/irish.dtx new file mode 100644 index 00000000000..221c08f91a5 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/irish.dtx @@ -0,0 +1,218 @@ +% \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{122} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{irish.dtx} +%</dtx> +%<code>\ProvidesLanguage{irish} +%\fi +%\ProvidesFile{irish.dtx} + [2005/03/30 v1.0h Irish support from the babel system] +%\iffalse +%% File `irish.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 -- 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Irish language definition file. +% +% The Gaeilge or Irish Gaelic terms were tranlated from those +% provided by Fraser Grant \texttt{FRASER@CERNVM} by Marion Gunn. +%<*filedriver> +\documentclass{ltxdoc} +\newcommand*{\TeXhax}{\TeX hax} +\newcommand*{\babel}{\textsf{babel}} +\newcommand*{\langvar}{$\langle \mathit lang \rangle$} +\newcommand*{\note}[1]{} +\newcommand*{\Lopt}[1]{\textsf{#1}} +\newcommand*{\file}[1]{\texttt{#1}} +\begin{document} + \DocInput{irish.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{irish.dtx} +% +% \changes{irish-1.0b}{1995/06/14}{Corrected typo (PR1652)} +% \changes{irish-1.0e}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \section{The Irish language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. A contribution was made by Marion Gunn.} defines all +% the language definition macros for the Irish language. +% +% For this language currently no special definitions are needed or +% available. +% +% \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{irish-1.0e}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{irish}\captionsirish +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{irish} could be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@irish| to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\l@irish\@undefined + \@nopatterns{irish} + \adddialect\l@irish0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Irish language. +% +% \begin{macro}{\irishhyphenmins} +% This macro is used to store the correct values of the hyphenation +% parameters |\lefthyphenmin| and |\righthyphenmin|. +% \changes{irish-1.0f}{1998/06/08}{Added definition of +% \cs{hyphenmins}} +% \changes{irish-1.0h}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\thr@@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\captionsirish} +% The macro |\captionsirish| defines all strings used in the +% four standard documentclasses provided with \LaTeX. +% \changes{irish-1.0c}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{irish-1.0f}{1998/06/08}{Added missing translations provided +% in PR 2719} +% \changes{irish-1.0h}{2000/09/20}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionsirish{% + \def\prefacename{R\'eamhr\'a}% <-- also "Brollach" + \def\refname{Tagairt\'{\i}}% + \def\abstractname{Achoimre}% + \def\bibname{Leabharliosta}% + \def\chaptername{Caibidil}% + \def\appendixname{Aguis\'{\i}n}% + \def\contentsname{Cl\'ar \'Abhair}% + \def\listfigurename{L\'ear\'aid\'{\i}}% + \def\listtablename{T\'abla\'{\i}}% + \def\indexname{Inn\'eacs}% + \def\figurename{L\'ear\'aid}% + \def\tablename{T\'abla}% + \def\partname{Cuid}% + \def\enclname{faoi iamh}% + \def\ccname{cc}% abrv. `c\'oip chuig' + \def\headtoname{Go}% + \def\pagename{Leathanach}% + \def\seename{f\'each}% + \def\alsoname{f\'each freisin}% + \def\proofname{Cruth\'unas}% + \def\glossaryname{Glossary}% <-- Needs translation + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateirish} +% The macro |\dateirish| redefines the command |\today| to produce +% Irish dates. +% \changes{irish-1.0f}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{irish-1.0f}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \begin{macrocode} +\def\dateirish{% + \def\today{% + \number\day\space \ifcase\month\or + Ean\'air\or Feabhra\or M\'arta\or Aibre\'an\or + Bealtaine\or Meitheamh\or I\'uil\or L\'unasa\or + Me\'an F\'omhair\or Deireadh F\'omhair\or + M\'{\i} na Samhna\or M\'{\i} na Nollag\fi + \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasirish} +% \begin{macro}{\noextrasirish} +% The macro |\extrasirish| will perform all the extra definitions +% needed for the Irish language. The macro |\noextrasirish| is used +% to cancel the actions of |\extrasirish|. For the moment these +% macros are empty but they are defined for compatibility with the +% other language definition files. +% +% \begin{macrocode} +\addto\extrasirish{} +\addto\noextrasirish{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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{irish-1.0e}{1996/11/03}{Now use \cs{ldf@finish} to wrap up} +% \begin{macrocode} +\ldf@finish{irish} +%</code> +% \end{macrocode} +% +% \Finale +%\endinput +%% \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 \~} +%% diff --git a/Master/texmf-dist/source/generic/babel/irish.ins b/Master/texmf-dist/source/generic/babel/irish.ins new file mode 100644 index 00000000000..33a3172ee2b --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/irish.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{irish.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{irish.ldf}{\from{irish.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/italian.dtx b/Master/texmf-dist/source/generic/babel/italian.dtx new file mode 100644 index 00000000000..ea9899f79f2 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/italian.dtx @@ -0,0 +1,857 @@ +% \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{419} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{italian.dtx} +%</dtx> +%<code>\ProvidesLanguage{italian} +%\fi +%\ProvidesFile{italian.dtx} + [2005/02/05 v1.2q Italian support from the babel system] +%\iffalse +%% File `italian.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams babel at braams.cistron.nl +%% Claudio Beccari beccari at polito.it +% +% This file is part of the babel system, it provides the source +% code for the Italian language definition file. +% The original version of this file was written by Maurizio +% Codogno, (mau@beatles.cselt.stet.it). Several features were added +% by Claudio Beccari, (beccari@polito.it). +%<*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{italian.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{italian.dtx} +% +% \changes{italian-0.99}{1990/07/11}{First version, from english.doc} +% \changes{italian-1.0}{1991/04/23}{Modified for babel 3.0} +% \changes{italian-1.0a}{1991/05/23}{removed typo} +% \changes{italian-1.0b}{1991/05/29}{Removed bug found by van der Meer} +% \changes{italian-1.0e}{1991/07/15}{Renamed \file{babel.sty} in +% \file{babel.com}} +% \changes{italian-1.1}{1992/02/16}{Brought up-to-date with babel 3.2a} +% \changes{italian-1.2}{1994/02/09}{Update for\ LaTeXe} +% \changes{italian-1.2e}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{italian-1.2f}{1995/05/28}{Updated for babel 3.5} +% \changes{italian-1.2i}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% \changes{italian-1.2l}{1999/04/24}{Added \cs{unit}, \cs{ap}, and +% \cs{ped} macros} +% \changes{italian-1.2m}{2000/01/05}{Added support for etymological +% hyphenation} +% \changes{italian-1.2n}{2000/02/02}{Completely modified etymological +% hyphenation facility} +% \changes{italian-1.2n}{2000/05/28}{Added several commands for the +% caporali double quotes and for simplifying the accented vowel input} +% \changes{italian-1.2o}{2000/12/12}{Added \cs{glossaryname}} +% \changes{italian-1.2p}{2002/07/10}{Removed redefinition of +% \cs{add@acc} since its functionality has been introduced into the +% kernel of LaTeX 2001/06/01} +% \changes{italian-1.2q}{2005/02/05}{Added test for avoiding conflict +% with package units.sty; adjusted caporali functionality, since +% the previous one did not work with the standard (although obsolete) +% slides class file} +% \section{The Italian language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. The original author is Maurizio Codogno, +% (\texttt{mau@beatles.cselt.stet.it}). It has been largely revised +% by Johannes Braams and Claudio Beccari} defines all the +% language-specific macros for the Italian language. +% +% The features of this language definition file are the following: +% \begin{enumerate} +% \item The Italian hyphenation is invoked, provided that file +% \texttt{ithyph.tex} was loaded when the \LaTeXe\ format was +% built; in case it was not, read the information coming with your +% distribution of the \TeX\ software, and the \babel\ +% documentation. +% \item The language dependent fixed words to be inserted by such +% commands as |\chapter|, |\caption|, |\tableofcontents|, +% etc. are redefined in accordance with the Italian +% typographical practice. +% \item Since Italian can be easily hyphenated and Italian practice +% allows to break a word before the last two letters, hyphenation +% parameters have been set accordingly, but a very high demerit +% value has been set in order to avoid word breaks in the +% penultimate line of a paragraph. Specifically the |\clubpenalty|, +% and the |\widowpenalty| are set to rather high values and +% |\finalhyphendemerits| is set to such a high value that +% hyphenation is prohibited between the last two lines of a +% paragraph. +% \item Some language specific shortcuts have been defined so as to +% allow etymological hyphenation, specifically |"| inserts a +% break point in any word boundary that the typesetter chooses, +% provided it is not followed by and accented letter (very unlikely +% in Italian, where compulsory accents fall only on the last and +% ending vowel of a word, but may take place with compound words +% that include foreign roots), and \verb="|= when the desired break +% point falls before an accented letter. +% \item The shortcut |""| introduces the raised (English) opening +% double quotes; this shortcut proves its usefulness when one +% reminds that the Italian keyboard misses the backtick key, and +% the backtick on a Windows based platform may be obtained only by +% pressing the \texttt{Alt} key while inputting the numerical code +% 0096; very, very annoying! +% \item The shortcuts |"<| and |">| insert the French guillemots, +% sometimes used in Italian typography; with the T1 font encoding +% the ligatures |<<| and |>>| should insert such signs directly, +% but not all the virtual fonts that claim to follow the T1 font +% encoding actually contain the guillemots; with the OT1 encoding +% the guillemots are not available and must be faked in some +% way. By using the |"<| and |">| shortcuts (even with the T1 +% encoding) the necessary tests are performed and in case the +% suitable glyphs are taken from other fonts normally available +% with any good, modern \LaTeX\ distribution. +% \item Three new specific commands |\unit|, |\ped|, and |\ap| are +% introduced so as to enable the correct composition of technical +% mathematics according to the ISO~31/XI recommendations. |\unit| +% does not get redefined if the \babel\ package is loaded \emph{after} +% the package \texttt{units.sty} whose homonymous command plays +% a different role and follows a different syntax. +% \end{enumerate} +% +% For this language a limited number of shortcuts has been defined, +% table~\ref{t:itshrtct}, some of which are used to overcome +% certain limitations of the Italian keyboard; in +% section~\ref{s:itkbd} there are other comments and hints in order +% to overcome some other keyboard limitations. +% +% \begin{table}[htb]\centering +% \begin{tabular}{cp{80mm}} +% |"| & inserts a compound word mark where hyphenation is legal; +% it allows etymological hyphenation which is recommended +% for technical terms, chemical names and the like; it +% does not work if the next character is represented with +% a control sequence or is an accented character.\\ +% \texttt{\string"\string|} +% & the same as the above without the limitation on +% characters represented with control sequences or accented +% ones.\\ +% |""| & inserts open quotes ``.\\ %^^A'' emacs matching +% |"<| & inserts open guillemots.\\ +% |">| & inserts closed guillemots.\\ +% |"/| & equivalent to |\slash| +% \end{tabular} +% \caption{Shortcuts for the Italian language}\label{t:itshrtct} +% \end{table} +% +% \StopEventually{% +% \begin{thebibliography}{1} +% \bibitem{CBec} Beccari C., ``Computer Aided Hyphenation for +% Italian and Modern Latin'', \textsf{TUGboat} vol.~13, n.~1, +% pp.~23-33 (1992). +% \bibitem{Becc2} Beccari C., ``Typesetting mathematics for science +% and technology according to ISO\,31/XI'', \textsf{TUGboat} +% vol.~18, n.~1, pp.~39-48 (1997). +% \end{thebibliography}} +% +% 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{italian-1.2i}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \changes{italian-1.2j}{1996/12/29}{Added braces around second arg of +% \cs{LdfInit}} +% \begin{macrocode} +%<*code> +\LdfInit{italian}{captionsitalian}% +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{italian} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@italian| to see whether we have to do something here. +% +% \changes{italian-1.0}{1991/04/23}{Now use \cs{adddialect} if +% language undefined} +% \changes{italian-1.0h}{1991/10/08}{Removed use of \cs{@ifundefined}} +% \changes{italian-1.1}{1992/02/16}{Added a warning when no +% hyphenation patterns were loaded.} +% \changes{italian-1.2e}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@italian\@undefined + \@nopatterns{Italian}% + \adddialect\l@italian0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Italian language. +% +% \begin{macro}{\captionsitalian} +% The macro |\captionsitalian| defines all strings used +% in the four standard document classes provided with \LaTeX. +% \changes{italian-1.0c}{1991/06/06}{Removed \cs{global} definitions} +% \changes{italian-1.0c}{1991/06/06}{\cs{pagename} should be +% \cs{headpagename}} +% \changes{italian-1.0d}{1991/07/01}{`contiene' substitued by `Allegati' +% as suggested by Marco Bozzo (\texttt{BOZZO@CERNVM}).} +% \changes{italian-1.1}{1992/02/16}{Added \cs{seename}, \cs{alsoname} +% and \cs{prefacename}} +% \changes{italian-1.1}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{italian-1.2b}{1994/05/19}{Changed some of the words +% following suggestions from Claudio Beccari} +% \changes{italian-1.2g}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{italian-1.2h}{1995/07/27}{Added translation of `Proof'} +% \begin{macrocode} +\addto\captionsitalian{% + \def\prefacename{Prefazione}% + \def\refname{Riferimenti bibliografici}% + \def\abstractname{Sommario}% + \def\bibname{Bibliografia}% + \def\chaptername{Capitolo}% + \def\appendixname{Appendice}% + \def\contentsname{Indice}% + \def\listfigurename{Elenco delle figure}% + \def\listtablename{Elenco delle tabelle}% + \def\indexname{Indice analitico}% + \def\figurename{Figura}% + \def\tablename{Tabella}% + \def\partname{Parte}% + \def\enclname{Allegati}% + \def\ccname{e~p.~c.}% + \def\headtoname{Per}% + \def\pagename{Pag.}% % in Italian the abbreviation is preferred + \def\seename{vedi}% + \def\alsoname{vedi anche}% + \def\proofname{Dimostrazione}% + \def\glossaryname{Glossario}% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateitalian} +% The macro |\dateitalian| redefines the command +% |\today| to produce Italian dates. +% \changes{italian-1.0c}{1991/06/06}{Removed \cs{global} definitions} +% \begin{macrocode} +\def\dateitalian{% + \def\today{\number\day~\ifcase\month\or + gennaio\or febbraio\or marzo\or aprile\or maggio\or giugno\or + luglio\or agosto\or settembre\or ottobre\or novembre\or + dicembre\fi\space \number\year}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\italianhyphenmins} +% \changes{italian-1.2b}{1994/05/19}{Added setting of left and +% righthyphenmin according to Claudio Beccari's suggestion} +% +% The italian hyphenation patterns can be used with both +% |\lefthyphenmin| and |\righthyphenmin| set to~2. +% \changes{italian-1.2m}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasitalian} +% \begin{macro}{\noextrasitalian} +% +% \changes{italian-1.2b}{1994/05/19}{Added setting of club- and +% widowpenalty} +% Lower the chance that clubs or widows occur. +% \begin{macrocode} +\addto\extrasitalian{% + \babel@savevariable\clubpenalty + \babel@savevariable\widowpenalty + \clubpenalty3000\widowpenalty3000}% +% \end{macrocode} +% +% \changes{italian-1.2b}{1994/05/19}{Added setting of +% finalhyphendemerits} +% +% Never ever break a word between the last two lines of a paragraph +% in italian texts. +% \begin{macrocode} +\addto\extrasitalian{% + \babel@savevariable\finalhyphendemerits + \finalhyphendemerits50000000}% +% \end{macrocode} +% +% \changes{italian-1.2h}{1995/11/10}{Now give the apostrophe a +% lowercase code} +% \changes{italian-1.2l}{1999/04/5}{Changed example ``begl'italiani'' +% (obsolete spelling) with another, ``nell'altezza'', that behaves +% the same way} +% In order to enable the hyphenation of words such as +% ``nell'altezza'' we give the \texttt{'} a non-zero lower case +% code. When we do that \TeX\ finds the following hyphenation +% points |nel-l'al-tez-za| instead of none. +% \begin{macrocode} +\addto\extrasitalian{% + \lccode`'=`'}% +\addto\noextrasitalian{% + \lccode`'=0}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \changes{italian-1.2m}{2000/01/05}{Support for etymological +% hyphenation} +% +% \subsection{Support for etymological hyphenation} +% +% In his article on Italian hyphenation \cite{CBec} Beccari pointed +% out that the Italian language gets hyphenated on a phonetic +% basis, although etymological hyphenation is allowed; this is in +% contrast with what happens in Latin, for example, where +% etymological hyphenation is always used. Since the patterns for +% both languages would become too complicated in order to cope with +% etymological hyphenation, in his paper Beccari proposed the +% definition of an active character `|_|' such that it could insert +% a ``soft'' discretionary hyphen at the compound word +% boundary. For several reasons that idea and the specific active +% character proved to be unpractical and was abandoned. +% +% This problem is so important with the majority of the European +% languages, that \babel\ from the very beginning developed +% the tradition of making the |"| character active so as to perform +% several actions that turned useful with every language. +% One of these actions consisted in defining the shortcut \verb="|= +% that was extensively used in German and in many other languages +% in order to insert a discretionary hyphen such that hyphenation +% would not be precluded in the rest of the word as it happens with +% the standard \TeX\ command |\-|. +% +% Meanwhile the \texttt{ec} fonts with the double Cork encoding +% (thus formerly called the \texttt{dc} fonts) have become more or +% less standard and are widely used by virtually all Europeans that +% write languages with many special national characters; by so +% doing they avoid the use of the |\accent| primitive which would +% be required with the standard \texttt{cm} fonts; with the latter +% fonts the primitive command |\accent| is such that hyphenation +% becomes almost impossible, in any case strongly impeached. +% +% The \texttt{ec} fonts contain a special character, named +% ``compound word mark'', that occupies position 23 in the font +% scheme and may be input with the sequence |^^W|. Up to now, +% apparently, this special character has never been used in a +% practical way for the typesetting of languages rich of compound +% words; also it has never been inserted in the hyphenation pattern +% files of any language. Beccari modified his pattern file +% \file{ithyph.tex v4.8b} for Italian so as to contain five new +% patterns that involve |^^W|, and he tried to give the +% \babel\ active character |"| a new shortcut definition, +% so as to allow the insertion of the ``compound word mark'' in the +% proper place within any word where two semantic fragments join +% up. With such facility for marking the compound word boundaries, +% etymological hyphenation becomes possible even if the patterns +% know nothing about etymology (but the typesetter hopefully +% does!). +% In Italian such etymological hyphenation is desirable with +% technical terms, chemical names, and the like. +% +% Even this solution proved to be inconvenient on certain UN*X +% platforms, so Beccari resorted to another approach that uses the +% \babel\ active character |"| and relies on the category +% code of the character that follows |"|. +% +% \changes{italian-1.2n}{2000/02/02}{Completely new etymological +% hyphenation facility} +% +% \begin{macrocode} +\initiate@active@char{"}% +\addto\extrasitalian{\bbl@activate{"}\languageshorthands{italian}}% +% \end{macrocode} +% \begin{macro}{\it@cwm} +% The active character |"| is now defined for language |italian| so +% as to perform different actions in math mode compared to text +% mode; specifically in math mode a double quote is inserted so as +% to produce a double prime sign, while in text mode the temporary +% macro |\it@next| is defined so as to defer any further action +% until the next token category code has been tested. +% \begin{macrocode} +\declare@shorthand{italian}{"}{% +\ifmmode + \def\it@next{''}% +\else + \def\it@next{\futurelet\it@temp\it@cwm}% +\fi +\it@next +}% +% \end{macrocode} +% \begin{macro}{\it@cwm} +% The \cs{it@next} service control sequence is such that upon its +% execution a temporary variable \cs{it@temp} is made equivalent to +% the next token in the input list without actually removing +% it. Such temporary token is then tested by the macro \cs{it@cwm} +% and if it is found to be a letter token, then it introduces a +% compound word separator control sequence \cs{it@allowhyphens} +% whose expansion introduces a discretionary hyphen and an +% unbreakable space; in case the token is not a letter, then it is +% tested against \verb=|=$_{12}$: if so a compound word separator +% is inserted and the \verb=|= token is removed, otherwise another +% test is performed so as to see if another double quote sign +% follows: in this case a double open quote mark is inserted, +% otherwise two other tests are performed so as to see if +% guillemets have to be inserted, otherwise nothing is done. +% The double quote shortcut for inserting a double open quote sign +% is useful for people who are inputting Italian text by means of +% an Italian keyboard that unfortunately misses the grave or +% backtick key. +% By this shortcut |""| becomes equivalent to |``| for inserting +% raised open high double quotes. +% \begin{macrocode} +\def\it@@cwm{\nobreak\discretionary{-}{}{}\hskip\z@skip}% +\def\it@@ocap#1{\it@ocap}\def\it@@ccap#1{\it@ccap}% +\DeclareRobustCommand*{\it@cwm}{\let\it@@next\relax +\ifcat\noexpand\it@temp a% + \def\it@@next{\it@@cwm}% +\else + \if\noexpand\it@temp \string|% + \def\it@@next{\it@@cwm\@gobble}% + \else + \if\noexpand\it@temp \string<% + \def\it@@next{\it@@ocap}% + \else + \if\noexpand\it@temp \string>% + \def\it@@next{\it@@ccap}% + \else + \if\noexpand\it@temp\string/% + \def\it@next{\slash\@gobble}% + \else + \ifx\it@temp"% + \def\it@@next{``\@gobble}% + \fi + \fi + \fi + \fi + \fi +\fi +\it@@next}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% +% \begin{sloppypar} +% By this definition of |"| if one types |macro"istruzione| the +% possible break points become \textsf{ma-cro-istru-zio-ne}, while +% without the |"| mark they would be \textsf{ma-croi-stru-zio-ne}, +% according to the phonetic rules such that the |macro| prefix is +% not taken as a unit. +% A chemical name such as \texttt{des"clor"fenir"amina"cloridrato} +% is breakable as \textsf{des-clor-fe-nir-ami-na-clo-ri-dra-to} +% instead of \textsf{de-sclor-fe-ni-ra-mi-na-...} +% +% In other language description files a shortcut is defined so as +% to allow a break point without actually inserting any hyphen +% sign; examples are given such as \mbox{entrada/salida}; actually +% if one wants to allow a breakpoint after the slash, it is much +% clearer to type |\slash| instead of |/| and \LaTeX\ does +% everything by itself; here the shortcut |"/| was introduced to +% stand for |\slash| so that one can type |input"/output| and allow +% a line break after the slash. +% This shortcut works only for the slash, since in Italian such +% constructs are extremely rare. +% \end{sloppypar} +% +% Attention: the expansion of |"| takes place before the actual +% expansion of OT1 or T1 accented sequences such as |\`{a}|; +% therefore this etymological hyphenation facility works as it +% should only when the semantic word fragments \textit{do not +% start} with an accented letter; this in Italian is always +% avoidable, because compulsory accents fall only on the last +% vowel, but it may be necessary to mark a compound word where one +% or more components come from a foreign language and contain +% diacritical marks according to the spelling rules of that +% language. In this case the special shorthand \verb!"|! may be +% used that performs exactly as |"| normally does, except that the +% \verb!|! sign is removed from the token input list: +% \verb!kilo"|{\"o}rsted! gets hyphenated as +% \texttt{ki-lo-\"or-sted}. +% +% \changes{italian-1.2l}{1999/04/05}{Added useful macros for +% fulfilling ISO 31/XI regulations} +% +% \subsection{Facilities required by the ISO 31/XI regulations} +% The ISO 31/XI regulations require that units of measure are +% typeset in upright font in any circumstance, math or text, and +% that in text mode they are separated from the numerical +% indication of the measure with an unbreakable (thin) space. +% The command |\unit| that was defined for achieving this +% goal happened to conflict with the homonymous command defined by +% the package \texttt{units.sty}; we therefore need to test if that +% package has already been loaded so as to avoid conflicts; we assume +% that if the user loads that package, s/he wants to use that package +% facilities and command syntax. +% +% The same regulations require also that super and subscripts +% (apices and pedices) are in upright font, \emph{not in math +% italics}, when they represent ``adjectives'' or appositions to +% mathematical or physical variables that do not represent +% countable or measurable entities such as, for example, +% $V_{\mathrm{max}}$ or $V_{\mathrm{rms}}$ for a maximum or a root +% mean square voltage, compared to $V_i$ or $V_T$ as the $i$-th +% voltage in a set, or a voltage that depends on the thermodynamic +% temperature $T$. See \cite{Becc2} for a complete description of +% the ISO regulations in connection with typesetting. +% +% More rarely it happens to use superscripts that are not +% mathematical variables, such as the notation +% $\mathbf{A}^{\!\mathrm{T}}$ to denote the transpose of matrix +% $\mathbf{A}$; text superscripts are useful also as ordinals or +% in old fashioned abbreviations in text mode; for example the +% feminine ordinal $1^{\mathrm{a}}$ or the old fashioned obsolete +% abbreviation F$^{\mathrm{lli}}$ for \mbox{Fratelli} in company +% names (compare with ``Bros.'' for \underline{bro}ther\underline{s} +% in American English); text subscripts are mostly used in logos. +% +% \begin{macro}{\unit} +% \begin{macro}{\ap} +% \begin{macro}{\ped} +% First we define the new (internal) commands |\bbl@unit|, |\bbl@ap|, +% and |\bbl@ped| as robust ones. +% \changes{italian-1.2q}{2005/02/05}{Added testing for avoiding conflicts +% with the units.sty package} +% \begin{macrocode} +\@ifpackageloaded{units}{}{% + \DeclareRobustCommand*{\bbl@unit}[1]{% + \textormath{\,\mbox{#1}}{\,\mathrm{#1}}}% + }% +\DeclareRobustCommand*{\bbl@ap}[1]{% + \textormath{\textsuperscript{#1}}{^{\mathrm{#1}}}}% +\DeclareRobustCommand*{\bbl@ped}[1]{% + \textormath{$_{\mbox{\fontsize\sf@size\z@ + \selectfont#1}}$}{_\mathrm{#1}}}% +% \end{macrocode} +% Then we can use |\let| to define the user level commands, but in +% case the macros already have a different meaning before entering +% in Italian mode typesetting, we first memorize their meaning so +% as to restore them on exit. +% \begin{macrocode} +\@ifpackageloaded{units}{}{% + \addto\extrasitalian{% + \babel@save\unit\let\unit\bbl@unit}% + }% +\addto\extrasitalian{% + \babel@save\ap\let\ap\bbl@ap + \babel@save\ped\let\ped\bbl@ped + }% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Accents}\label{s:itkbd} +% Most of the other language description files introduce a number +% of shortcuts for inserting accents and other language specific +% diacritical marks in a more comfortable way compared with the +% lengthy standard \TeX\ conventions. When an Italian keyboard is +% being used on a Windows based platform, it exhibits such +% limitations that up to now no convenient shortcuts have been +% developed; the reason lies in the fact that the Italian keyboard +% lacks the grave accent (also known as ``backtick''), which is +% compulsory on all accented vowels except the `e', but, on the +% opposite, it carries the keys with all the accented lowercase +% vowels; the keyboard lacks also the tie |~| (tilde) key, while +% the curly braces require pressing three keys simultaneously. +% +% The best solution Italians have found so far is to use a smart +% editor that accepts shortcut definitions such that, for example, +% by striking |"(| one gets directly |{| on the screen and the same +% sign is saved into the \file{.tex} file; the same smart editor +% should be capable of translating the accented characters into the +% standard \TeX\ sequences when writing a file to disk (for the +% sake of file portability), and to transform the standard \TeX\ +% sequences into the corresponding signs when loading a \file{.tex} +% file from disk to memory. Such smart editors do exist and can be +% downloaded from the \textsc{ctan} archives. +% +% \changes{italian-1.2p}{2002/07/10}{Removed redefinition of \cs{add@acc} since its +% functionality has been introduced into the kernel of LaTeX 2001/06/01} +% +% For what concerns the missing backtick key, +% which is used also for inputting the open quotes, it must be +% noticed that the shortcut |""| described above completely solves +% the problem for \textit{double} raised open quotes; according to +% the traditions of particular publishing houses, since there are +% no compulsory regulations on the matter, the French guillemets +% may be used; in this case the T1 font encoding solves the problem +% by means of its built in ligatures |<<| and |>>|. But\dots +% +% \subsection{\emph{Caporali} or French double quotes} +% Although the T1 font encoding ligatures solve the problem, there +% are some circumstances where even the T1 font encoding cannot be +% used, either because the author\slash typesetter wants to use the +% OT1 encoding, or because s/he uses a font set that does +% not comply completely with the T1 font encoding; some virtual +% fonts, for example, are supposed to implement the double Cork +% font encoding but actually miss some glyphs; one such virtual +% font set is given by the \texttt{ae} virtual fonts, because they +% are supposed to implement such double font encoding simply using +% the \texttt{cm} fonts, of which the type~1 PostScript version +% exists and is freely available. Since guillemets (in Italian +% \emph{caporali}) do not exist in any \texttt{cm} latin font, +% their glyphs must be substituted with something else that +% approaches them. +% +% \changes{italian-1.2q}{2005/02/05}{Redefined the caporali machinery +% so as to avoid incompatibilities with the slides class, as there +% are no Cyrillic slides fonts as there are for Latins script} +% +% Since in French typesetting guillemets are compulsory, the French +% language definition file resorts to a clever font substitution; +% such file exploits the \LaTeXe\ font selection machinery so as to +% get the guillemets from the Cyrillic fonts, because it suffices +% to locally change the default encoding. There are several sets of +% Cyrillic fonts, but the ones that obey the OT2 font encoding are +% generally distributed with all recent implementations of the +% \TeX\ software; they are part of the American Mathematical +% Society fonts and come both as \textsf{METAFONT} source files and +% Type~1 PostScript \texttt{.pfb} files. The availability of such +% fonts should be guaranteed by the presence of the +% \texttt{OT2cmr.fd} font description file. Actually the presence +% of this file does not guarantee the completeness of your \TeX\ +% implementation; should \LaTeX\ complain about a missing Cyrillic +% \texttt{.tfm} file (that kind of file that contains the font +% metric parameters) and/or about missing Cyrillic \texttt(.mf) +% files, then your \TeX\ system is \emph{incomplete} and you should +% download such fonts from the \textsc{ctan} archives. Temporarily +% you may issue the command |\LtxSymbCaporali| so as to approximate +% the missing glyphs with the \LaTeX\ symbol fonts. In some case +% warning messages are issued so as to inform the typesetter about +% the necessity of resorting to some \emph{poor man} solution. +% +% In spite of these alternate fonts, we must avoid invoking unusual +% fonts if the available encoding allows to use built in caporali. +% As far as I know (CB) the only T1-encoded font families that miss +% the guillemets are the AE ones; we therefore first test if the +% default encoding id the T1 one and in this case if the AE families +% are the default ones; in order for this to work properly it is +% necessary to load these optional packages \emph{before} \babel. +% If the T1 encoding is not the default one when the Italian language +% is specified, then some substitutions must be done. +% +% \begin{macro}{\LtxSymbCaporali} +% \begin{macro}{\it@ocap} +% \begin{macro}{\it@ccap} +% We define some macros for substituting the default guillemets; first the +% emulation by means of the \LaTeX\ symbols; each one of these macro sets +% actually redefines the control sequences |\it@ocap| and |\it@ccap| that +% are the ones effectively activated by the shortcuts |"<| and |">|. +% \begin{macrocode} +\def\LtxSymbCaporali{% + \DeclareRobustCommand*{\it@ocap}{\mbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont(\kern-0.20em(}% + \ignorespaces}% + \DeclareRobustCommand*{\it@ccap}{\ifdim\lastskip>\z@\unskip\fi + \mbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont)\kern-0.20em)}}% +}% +% \end{macrocode} +% Then the substitution with any specific font that contains such +% glyphs; it might be the CBgreek fonts, the Cyrillic one, the super-cm ones, the lm ones, +% or any other the user might prefer (the code is adapted from the one +% that appears in the \texttt{frenchb.ld} file; thanks to Daniel Flipo). +% By default if the user did not select the T1 encoding, the existence of the +% CBgreek fonts is tested; if they exist the guillemets are taken from this +% font, and since its families are a superset of the default CM ones and they apply also +% to typeset slides with the standard class \texttt{slides}. If the +% CBgreek fonts are not found, then the existence of the Cyrillic ones is tested, +% although this choice is not suited for typesetting slides; +% otherwise the poor man solution of the \LaTeX\ special symbols is used. +% In any case the user can force the use of the Cyrillic guillemets substitution +% by issuing the declaration |\CyrillicCaporali| just before the +% |\begin{document}| statement; in alternative the user can specify with +% \begin {flushleft} +% |\CaporaliFrom|\marg{encoding}\marg{family}\marg{opening number}\marg{closing number} +% \end{flushleft} +% the encoding and family of the font s/he prefers, and the slot numbers of the opening +% and closing guillemets respectively. For example if the T1-encoded Latin Modern fonts +% are desired the specific command should be +% \begin {flushleft} +% |\CaporaliFrom{T1}{lmr}{19}{20}| +% \end{flushleft} +% These user choices might be necessary for assuring the correct typesetting +% with fonts that contain the required glyphs and are available also in PostScript form +% so as to use them directly di \texttt{pdflatex}, for example. +% \begin{macrocode} +\def\CaporaliFrom#1#2#3#4{% + \DeclareFontEncoding{#1}{}{}% + \DeclareTextCommand{\it@ocap}{T1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3\ignorespaces}}% + \DeclareTextCommand{\it@ccap}{T1}{\ifdim\lastskip>\z@\unskip\fi% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}% + \DeclareTextCommand{\it@ocap}{OT1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3\ignorespaces}}% + \DeclareTextCommand{\it@ccap}{OT1}{\ifdim\lastskip>\z@\unskip\fi% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}} +% \end{macrocode} +% Then we set a boolean variable and test the default family; +% if such family has a name that starts with the letters ``ae'' +% then we have no built in guillemets; of course if the AE font family is chosen +% after the \babel\ package is loaded, the test does not perform as required. +% \begin{macrocode} +\def\get@ae#1#2#3!{\def\bbl@ae{#1#2}}% +\def\@ifT@one@noCap{\expandafter\get@ae\f@family!% +\def\bbl@temp{ae}\ifx\bbl@ae\bbl@temp\expandafter\@firstoftwo\else + \expandafter\@secondoftwo\fi}% +% \end{macrocode} +% We set another couple of boolean variables for testing the existence of the +% CBgreek or the Cyrillic fonts +% \begin{macrocode} +\newif\if@CBgreekEncKnown +\IfFileExists{lgrcmr.fd}% + {\@CBgreekEncKnowntrue}{\@CBgreekEncKnownfalse} +\newif\if@CyrEncKnown +\IfFileExists{ot2cmr.fd}% + {\@CyrEncKnowntrue}{\@CyrEncKnownfalse}% +% \end{macrocode} +% \begin {macro}{\CBgreekCaporali} +% \begin {macro}{\CyrillicCaporali} +% \begin {macro}{\T@unoCaporali} +% Next we define the macros |\CBgreekCaporali|, |\T@unoCaporali|, +% and |\CyrillicCaporali|; +% with the latter one we test the loaded class, and if it's \texttt{slides} +% nothing gets done. In any case each one of these declarations, if used, must be specified +% in the preamble. +% \begin{macrocode} +\def\CBgreekCaporali{\@ifclassloaded{slides}{% + \IfFileExists{lgrlcmss.fd}{\DeclareFontEncoding{LGR}{}{}% + \DeclareRobustCommand*{\it@ccap}% + {\ifdim\lastskip>\z@\unskip\fi + {\fontencoding{LGR}\selectfont))}}% + \DeclareRobustCommand*{\it@ocap}% + {{\fontencoding{LGR}\selectfont((}\ignorespaces}}% + {\LtxSymbCaporali}}% + {\DeclareFontEncoding{LGR}{}{}% + \DeclareRobustCommand*{\it@ccap}% + {\ifdim\lastskip>\z@\unskip + \fi{\fontencoding{LGR}\selectfont))}}% + \DeclareRobustCommand*{\it@ocap}% + {{\fontencoding{LGR}\selectfont((}\ignorespaces}}% + }% +\def\CyrillicCaporali{\@ifclassloaded{slides}{\relax}% + {\DeclareFontEncoding{OT2}{}{}% + \DeclareRobustCommand*{\it@ccap}% + {\ifdim\lastskip>\z@\unskip\fi + {\fontencoding{OT2}\selectfont\char62\relax}}% + \DeclareRobustCommand*{\it@ocap}% + {{\fontencoding{OT2}\selectfont\char60\relax}\ignorespaces}}}% +\@onlypreamble{\CBgreekCaporali}\@onlypreamble{\CyrillicCaporali}% +\def\T@unoCaporali{\DeclareRobustCommand*{\it@ocap}{<<\ignorespaces}% + \DeclareRobustCommand*{\it@ccap}{\ifdim\lastskip>\z@\unskip\fi>>}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% Now we can do some real setting; first we start testing the encoding; +% if the encoding is T1 we test if the font family is the AE one; if so, +% we further test for other possibilities +% \begin{macrocode} +\ifx\cf@encoding\bbl@t@one + \@ifT@one@noCap{% + \if@CBgreekEncKnown + \CBgreekCaporali + \else + \if@CyrEncKnown + \CyrilicCaporali + \else + \LtxSymbCaporali + \fi + \fi}% + {\T@unoCaporali}% +% \end{macrocode} +% But if the default encoding is not the T1 one, then the +% substitutions must be performed. +% \begin{macrocode} +\else + \if@CBgreekEncKnown + \CBgreekCaporali + \else + \if@CyrEncKnown + \CyrilicCaporali + \else + \LtxSymbCaporali + \fi + \fi +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsection{Finishing commands} +% 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{italian-1.2i}{1996/11/03}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{italian}% +%</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 diff --git a/Master/texmf-dist/source/generic/babel/italian.ins b/Master/texmf-dist/source/generic/babel/italian.ins new file mode 100644 index 00000000000..e7e51cbbd19 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/italian.ins @@ -0,0 +1,155 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +%% +%% Questo file serve per generare dal file italian.dtx il file +%% italian.ldf mediante il programma LaTeX/docstrip che toglie +%% praticamente tutti i commenti e ne rende il caricamento molto +%% veloce. La documentazione puo' essere ottenuta passando a +%% LaTeX2e il file sorgente italian.dtx +%% +\def\filedate{2001/01/19} +\def\batchfile{italian.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{italian.ldf}{\from{italian.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/latin.dtx b/Master/texmf-dist/source/generic/babel/latin.dtx new file mode 100644 index 00000000000..c3b3a599990 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/latin.dtx @@ -0,0 +1,623 @@ +% \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{434} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{latin.dtx} +%</dtx> +%<code>\ProvidesFile{latin.ldf} +%\fi +%\ProvidesFile{latin.dtx}% + [2005/03/30 v2.0f Latin support from the babel system] +%\iffalse +%% File `latin.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams babel at braams.cistron.nl +%% Claudio Beccari beccari at polito.it +% +% This file is part of the babel system, it provides the source +% code for the Latin language definition file. +% The original version of this file was written by +% Claudio Beccari, (beccari@polito.it) and includes contributions +% by Krzysztof Konrad \.Zelechowski, (\texttt{kkz@alfa.mimuw.edu.pl}). +%<*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}} +\providecommand*\pkg[1]{\textsf{#1}} +\begin{document} + \DocInput{latin.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{latin.dtx} +% +% \changes{latin-0.99}{1999/12/06}{First version, from italian.dtx (CB)} +% \changes{latin-0.99}{1999/12/06}{Added shortcuts for breve, macron, +% and etymological hyphenation (CB)} +% \changes{latin-1.2}{2000/01/31}{Added suggestions from Krzysztof +% Konrad \.Zelechowski (CB)} +% \changes{latin-2.0}{2000/02/10}{Completely new etymological +% hyphenation (CB)} +% \changes{latin-2.0a}{2000/10/15}{Revised by JB} +% \changes{latin-2.0b}{2000/12/13}{Simplified shortcuts for +% etymological hyphenation; modified breve and macro shortcuts; +% language attribute medieval declared} +% \changes{latin-2.0d}{2001/06/04}{Restored caret and equals sign +% category codes before exiting} +% \changes{latin-2.0e}{2003/04/11}{Introduced the language attribute +% `withprosodicmarks'; modified use of breve and macron shortcuts +% in order to avoid possible conflicts with other packages} +% +% \section{The Latin language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. The original author is Claudio Beccari with +% contributions by Krzysztof Konrad \.Zelechowski, +% (\texttt{kkz@alfa.mimuw.edu.pl})} defines all the +% language-specific macros for the Latin language both in modern +% and medieval spelling. +% +% For this language two ``styles'' of typesetting are implemented: +% ``regular'' or modern-spelling Latin, and medieval Latin. +% The medieval Latin specific commands can be activated by means of +% the language attribute |medieval|; the medieval spelling differs +% from the modern one by the systematic use of the lower case `u' +% also where in modern spelling the letter `v' is used; when +% typesetting with capital letters, on the opposite, the letter 'V' +% is used also in place of 'U'. +% Medieval spelling also includes the ligatures |\ae| (\ae), |\oe| +% (\oe), |\AE| (\AE), and |\OE| (\OE) that are not used in modern +% spelling, nor were used in the classical times. +% +% Furthermore a third typesetting style |withprosodicmarks| is +% defined in order to use special shortcuts for inserting breves +% and macrons when typesetting grammars, dictionaries, teaching +% texts, and the like, where prosodic marks are important for the +% complete information on the words or the verses. The shortcuts, +% listed in table~\ref{t:lashrtct} and described in +% section~\ref{s:shrtcts}, may interfere with other packages; +% therefore by default this third style is off and no interference +% is introduced. If this third style is used and interference is +% experienced, there are special commands for turning on and off +% the specific short hand commands of this style. +% +% For what concerns \textsf{babel} and typesetting with \LaTeX, the +% differences between the two styles of spelling reveal themselves +% in the strings used to name for example the ``Preface'' that +% becomes ``Praefatio'' or ``Pr\ae fatio'' respectively. +% Hyphenation rules are also different, but the hyphenation pattern +% file \file{lahyph.tex} takes care of both versions of the +% language. Needless to say that such patterns must be loaded in +% the \LaTeX\ format by by running |initex| (or whatever the name +% of the initializer) on |latex.ltx|. +% +% The name strings for chapters, figures, tables, etcetera, are +% suggested by prof. Raffaella Tabacco, a classicist of the +% University of Turin, Italy, to whom we address our warmest +% thanks. The names suggested by Krzysztof Konrad \.Zelechowski, +% when different, are used as the names for the medieval variety, +% since he made a word and spelling choice more suited for this +% variety. +% +% For this language some shortcuts are defined according to +% table~\ref{t:lashrtct}; all of them are supposed to work with +% both spelling styles, except where the opposite is explicitly +% stated. +% \begin{table}[htb]\centering +% \begin{tabular}{cp{80mm}} +% |^i| & inserts the breve accent as \u{\i}; valid also for the +% other lowercase vowels, but it does not operate on the +% medieval ligatures \ae\ and \oe.\\ +% |=a| & inserts the macron accent as \=a; valid also for the +% other lowercase vowels, but it does not operate on the +% medieval ligatures \ae\ and \oe.\\ +% |"| & inserts a compound word mark where hyphenation is legal; +% the next character must not be a medieval ligature \ae\ +% or \oe, nor an accented letter (foreign names).\\ +% \texttt{\string"\string|} +% & same as above, but operates also when the next character +% is a medieval ligature or an accented letter. +% \end{tabular} +% \caption[]{Shortcuts defined for the Latin language. The +% characters \texttt{\string^} and \texttt{\string=} are +% active only when the language attribute +% \texttt{withprosodicmarks} has been declared, +% otherwise they are disabled; see +% section~\ref{s:shrtcts} for more details.}% +% \label{t:lashrtct} +% \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. +% \begin{macrocode} +%<*code> +\LdfInit{latin}{captionslatin} +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{latin} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@latin| to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\l@latin\@undefined + \@nopatterns{Latin} + \adddialect\l@latin0\fi +% \end{macrocode} +% +% +% Now we declare the |medieval| language attribute. +% \begin{macrocode} +\bbl@declare@ttribute{latin}{medieval}{% + \addto\captionslatin{\def\prefacename{Pr{\ae}fatio}}% + \def\november{Nouembris}% + \expandafter\addto\expandafter\extraslatin + \expandafter{\extrasmedievallatin}% + } +% \end{macrocode} +% +% The third typesetting style |withprosodicmarks| is defined here +% \begin{macrocode} +\bbl@declare@ttribute{latin}{withprosodicmarks}{% + \expandafter\addto\expandafter\extraslatin + \expandafter{\extraswithprosodicmarks}% + } +% \end{macrocode} +% It must be remembered that the |medieval| and the |withprosodicmarks| +% styles may be used together. +% +% The next step consists of defining commands to switch to (and +% from) the Latin language\footnote{Most of these names were +% kindly suggested by Raffaella Tabacco.}. +% +% \begin{macro}{\captionslatin} +% The macro |\captionslatin| defines all strings used +% in the four standard document classes provided with \LaTeX. +% \begin{macrocode} +\@namedef{captionslatin}{% + \def\prefacename{Praefatio}% + \def\refname{Conspectus librorum}% + \def\abstractname{Summarium}% + \def\bibname{Conspectus librorum}% + \def\chaptername{Caput}% + \def\appendixname{Additamentum}% + \def\contentsname{Index}% + \def\listfigurename{Conspectus descriptionum}% + \def\listtablename{Conspectus tabularum}% + \def\indexname{Index rerum notabilium}% + \def\figurename{Descriptio}% + \def\tablename{Tabula}% + \def\partname{Pars}% + \def\enclname{Adduntur}% Or " Additur" ? Or simply Add.? + \def\ccname{Exemplar}% Use the recipient's dative + \def\headtoname{\ignorespaces}% Use the recipient's dative + \def\pagename{Charta}% + \def\seename{cfr.}% + \def\alsoname{cfr.}% R.Tabacco never saw "cfr. atque" or similar forms + \def\proofname{Demonstratio}% + \def\glossaryname{Glossarium}% + } +% \end{macrocode} +% \end{macro} +% In the above definitions there are some points that might change +% in the future or that require a minimum of attention from the +% typesetter. +% \begin{enumerate} +% \item the \cs{enclname} is translated by a passive verb, that +% literally means ``(they) are being added''; if just one +% enclosure is joined to the document, the plural passive is not +% suited any more; nevertheless a generic plural passive might be +% incorrect but suited for most circumstances. On the opposite +% ``Additur'', the corresponding singular passive, might be more +% correct with one enclosure and less suited in general: what +% about the abbreviation ``Add.'' that works in both cases, but +% certainly is less elegant? +% \item The \cs{headtoname} is empty and gobbles the possible +% following space; in practice the typesetter should use the +% dative of the recipient's name; since nowadays not all such +% names can be translated into Latin, they might result +% indeclinable. The clever use of an appellative by the +% typesetter such as ``Domino'' or ``Dominae'' might solve the +% problem, but the header might get too impressive. The typesetter +% must make a decision on his own. +% \item The same holds true for the copy recipient's name in the +% ``Cc'' field of \cs{ccname}. +% \end{enumerate} +% +% \begin{macro}{\datelatin} +% The macro |\datelatin| redefines the command |\today| to produce +% Latin dates; the choice of faked small caps Latin numerals is +% arbitrary and may be changed in the future. For medieval latin +% the spelling of `Novembris' should be \textit{Nouembris}. This is +% taken care of by using a control sequence which can be redefined +% when the attribute `medieval' is selected. +% \changes{latin-2.0f}{2005/03/30}{Added a comment character to +% prevent unwanted space} +% \begin{macrocode} +\def\datelatin{% + \def\november{Novembris}% + \def\today{% + {\check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont + \uppercase\expandafter{\romannumeral\day}}\nobreakspace + \ifcase\month\or + Ianuarii\or Februarii\or Martii\or Aprilis\or Maii\or Iunii\or + Iulii\or Augusti\or Septembris\or Octobris\or \november\or + Decembris\fi + \space{\uppercase\expandafter{\romannumeral\year}}}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\romandate} +% Thomas Martin Widmann (\texttt{viralbus@daimi.au.dk}) developed a +% macro originally named |\latindate| (but to be renamed +% |\romandate| so as not to conflict with the standard \babel\ +% conventions) that should compute and translate the current date +% into a date \textit{ab urbe condita} with days numbered according +% to the kalendae and idus; for the moment this is a placeholder +% for Thomas' macro, waiting for a self standing one that keeps +% local all the intermediate data, counters, etc. If he succeeds, +% here is the place to add his macro. +% \end{macro} +% +% \begin{macro}{\latinhyphenmins} +% The Latin hyphenation patterns can be used with both +% |\lefthyphenmin| and |\righthyphenmin| set to~2. +% \changes{latin-2.0a}{2000/10/15}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extraslatin} +% \begin{macro}{\noextraslatin} +% For this language the |\clubpenalty|, |\widowpenalty| are set to +% rather high values and |\finalhyphendemerits| is set to such a +% high value that hyphenation is prohibited between the last two +% lines of a paragraph. +% \begin{macrocode} +\addto\extraslatin{% + \babel@savevariable\clubpenalty + \babel@savevariable\widowpenalty + \clubpenalty3000\widowpenalty3000} +% \end{macrocode} +% Never ever break a word between the last two lines of a paragraph +% in latin texts. +% \begin{macrocode} +\addto\extraslatin{% + \babel@savevariable\finalhyphendemerits + \finalhyphendemerits50000000} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% With medieval Latin we need the suitable correspondence between +% upper case V and lower case u, since in that spelling there is +% only one sign, and the u shape is the (uncial) version of the +% capital V. Everything else is identical with Latin. +% \begin{macrocode} +\addto\extrasmedievallatin{% +\babel@savevariable{\lccode`\V}% +\babel@savevariable{\uccode`\u}% +\lccode`\V=`\u \uccode`\u=`\V} +% \end{macrocode} +% +% \begin{macro}{\SetLatinLigatures} +% We need also the lccodes for \ae\ and \oe; since they occupy +% different positions in the OT1 \TeX-fontencoding compared to the +% T1 one, we must save the lc- and the uccodes for both encodings, +% but we specify the new lc- and uccodes separately as it appears +% natural not to change encoding while typesetting the same +% language. The encoding is assumed to be set before starting to +% use the Latin language, so that if Latin is the default language, +% the font encoding must be chosen before requiring the \pkg{babel} +% package with the |latin| option, in any case before any +% |\selectlanguage| or |\foreignlanguage| command. +% +% All this fuss is made in order to allow the use of the medieval +% ligatures \ae\ and \oe\ while typesetting with the medieval +% spelling; I have my doubts that the medieval spelling should be +% used at all in modern books, reports, and the like, as the uncial +% `u' shape of the lower case `v' and the above ligatures were +% used until the middle of the XVII century. Since my opinion (CB) +% may be wrong, I managed to set up the instruments and it is up +% to the typesetter to use them or not. +% +% \begin{macrocode} +\addto\extrasmedievallatin{% + \babel@savevariable{\lccode`\^^e6}% T1 \ae + \babel@savevariable{\uccode`\^^e6}% T1 \ae + \babel@savevariable{\lccode`\^^c6}% T1 \AE + \babel@savevariable{\lccode`\^^f7}% T1 \oe + \babel@savevariable{\uccode`\^^f7}% T1 \OE + \babel@savevariable{\lccode`\^^d7}% T1 \OE + \babel@savevariable{\lccode`\^^1a}% OT1 \ae + \babel@savevariable{\uccode`\^^1a}% OT1 \ae + \babel@savevariable{\lccode`\^^1d}% OT1 \AE + \babel@savevariable{\lccode`\^^1b}% OT1 \oe + \babel@savevariable{\uccode`\^^1b}% OT1 \OE + \babel@savevariable{\lccode`\^^1e}% OT1 \OE + \SetLatinLigatures} +\providecommand\SetLatinLigatures{% + \def\@tempA{T1}\ifx\@tempA\f@encoding + \catcode`\^^e6=11 \lccode`\^^e6=`\^^e6 \uccode`\^^e6=`\^^c6 % \ae + \catcode`\^^c6=11 \lccode`\^^c6=`\^^e6 % \AE + \catcode`\^^f7=11 \lccode`\^^f7=`\^^f7 \uccode`\^^f7=`\^^d7 % \oe + \catcode`\^^d7=11 \lccode`\^^d7=`\^^f7 % \OE + \else + \catcode`\^^1a=11 \lccode`\^^1a=`\^^1a \uccode`\^^1a=`\^^1d % \ae + \catcode`\^^1d=11 \lccode`\^^1d=`\^^1a % \AE (^^]) + \catcode`\^^1b=11 \lccode`\^^1b=`\^^1b \uccode`\^^1b=`\^^1e % \oe + \catcode`\^^1e=11 \lccode`\^^1e=`\^^1b % \OE (^^^) + \fi + \let\@tempA\@undefined + } +% \end{macrocode} +% With the above definitions we are sure that |\MakeUppercase| +% works properly and |\MakeUppercase{C{\ae}sar}| correctly `yields +% `C{\AE}SAR''; correspondingly |\MakeUppercase{Heluetia}| +% correctly yields ``HELVETIA''. +% \end{macro} +% +% \section{Latin shortcuts}\label{s:shrtcts} +% For writing dictionaries or didactic texts we defined a third +% language attribute, or a third typesetting style, where a couple +% of other active characters are defined: |^| for marking a vowel +% with the breve sign, and |=| for marking a vowel with the macro +% sign. Please take notice that neither the OT1 font encoding, nor +% the T1 one for most vowels, contain directly the marked vowels, +% therefore hyphenation of words containing these ``accents'' may +% become problematic; for this reason the above active characters +% not only introduce the required accent, but also the necessary +% code for allowing hyphenation in the rest of the word. +% +% It must be remarked that the active characters |^| and |=| may +% have other meanings in other contexts. For example the equals +% sign is used by the graphic extensions for specifying keyword +% options for handling the graphic elements to be included in the +% document. At the same time, as mentioned in the previous +% paragraph, diacritical marking in Latin is used only for +% typesetting certain kind of documents, such as grammars and +% dictionaries. It is reasonable that the breve and macron active +% characters may be switched on and off at will, and in particular +% that they are off by default if the attribute |withprosodicmarks| +% has not been set. +% +% \begin{macro}{\ProsodicMarksOn} +% \begin{macro}{\ProsodicMarksOff} +% We begin by adding to the normal typesetting style the +% definitions of the new commands |\ProsodicMarksOn| and +% |\ProsodicMarksOff| that should produce error messages when the +% third style is not declared: +% \begin{macrocode} +\addto\extraslatin{\def\ProsodicMarksOn{% +\GenericError{(latin)\@spaces\@spaces\@spaces\@spaces}% + {Latin language error: \string\ProsodicMarksOn\space + is defined by setting the\MessageBreak + language attribute to `withprosodicmarks'\MessageBreak + If you continue you are likely to encounter\MessageBreak + fatal errors that I can't recover}% + {See the Latin language description in the babel + documentation for explanation}{\@ehd}}} +\addto\extraslatin{\let\ProsodicMarksOff\relax} +% \end{macrocode} +% +% Then we temporarily set the caret and the equals sign to active +% characters so that they can receive their definitions: +% \begin{macrocode} +\catcode`\= \active +\catcode`\^ \active +% \end{macrocode} +% and we add the necessary declarations to the macros that are +% being activated when the Latin language and its typesetting +% styles are declared: +% \begin{macrocode} +\addto\extraslatin{\languageshorthands{latin}}% +\addto\extraswithprosodicmarks{\bbl@activate{^}}% +\addto\extraswithprosodicmarks{\bbl@activate{=}}% +\addto\noextraswithprosodicmarks{\bbl@deactivate{^}}% +\addto\noextraswithprosodicmarks{\bbl@deactivate{=}}% +\addto\extraswithprosodicmarks{\ProsodicMarks} +% \end{macrocode} +% +% \begin{macro}{\ProsodicMarks} +% Next we define the defining macro for the active characters +% \begin{macrocode} +\def\ProsodicMarks{% +\def\ProsodicMarksOn{\catcode`\^ 13\catcode`\= 13\relax}% +\def\ProsodicMarksOff{\catcode`\^ 7\catcode`\= 12\relax}% +% \end{macrocode} +% Notice that with the above redefinitions of the commands +% |\ProsodicMarksOn| and |\ProsodicMarksOff|, the operation of the +% newly defined shortcuts may be switched on and off at will, so +% that even if a picture has to be inserted in the document by +% means of the commands and keyword options of the |graphicx| +% package, it suffices to switch them off before invoking the +% picture including command, and switched on again afterwards; or, +% even better, since the picture very likely is being inserted +% within a |figure| environment, it suffices the switch them off +% within the environment, being conscious that their deactivation +% remains local to the environment. +% \begin{macrocode} +\initiate@active@char{^}% +\initiate@active@char{=}% +\declare@shorthand{latin}{^a}{% + \textormath{\u{a}\allowhyphens}{\hat{a}}}% +\declare@shorthand{latin}{^e}{% + \textormath{\u{e}\allowhyphens}{\hat{e}}}% +\declare@shorthand{latin}{^i}{% + \textormath{\u{\i}\allowhyphens}{\hat{\imath}}}% +\declare@shorthand{latin}{^o}{% + \textormath{\u{o}\allowhyphens}{\hat{o}}}% +\declare@shorthand{latin}{^u}{% + \textormath{\u{u}\allowhyphens}{\hat{u}}}% +\declare@shorthand{latin}{=a}{% + \textormath{\={a}\allowhyphens}{\bar{a}}}% +\declare@shorthand{latin}{=e}{% + \textormath{\={e}\allowhyphens}{\bar{e}}}% +\declare@shorthand{latin}{=i}{% + \textormath{\={\i}\allowhyphens}{\bar{\imath}}}% +\declare@shorthand{latin}{=o}{% + \textormath{\={o}\allowhyphens}{\bar{o}}}% +\declare@shorthand{latin}{=u}{% + \textormath{\={u}\allowhyphens}{\bar{u}}}% +} +% \end{macrocode} +% Notice that the short hand definitions are given only for lower +% case letters; it would not be difficult to extend the set of +% definitions to upper case letters, but it appears of very little +% use in view of the kind of documents where prosodic marks are +% supposed to be used. Nevertheless in those rare cases when it's +% required to set some uppercase letters with their prosodic +% marks, it is always possible to use the standard \LaTeX\ commands +% such as |\u{I}| for typesetting \u{I}, or |\={A}| for +% typesetting~\=A. +% +% Finally we restore the caret and equals sign initial default +% category codes. +% \begin{macrocode} +\catcode`\= 12\relax +\catcode`\^ 7\relax +% \end{macrocode} +% \end{macro} +% +% It must be understood that by using the above prosodic marks, +% line breaking is somewhat impeached; since such prosodic marks +% are used almost exclusively in dictionaries, grammars, and poems +% (only in school textbooks), this shouldn't be of any importance +% for what concerns the quality of typesetting. +% \end{macro} +% \end{macro} +% +% \section{Etymological hyphenation} +% In order to deal in a clean way with prefixes and compound words +% to be divided etymologically, the active character |"| is given +% a special definition so as to behave as a discretionary break +% with hyphenation allowed after it. +% Most of the code for dealing with the active |"| is already +% contained in the core of \babel, but we are going to use it as a +% single character shorthand for Latin. +% \begin{macrocode} +\initiate@active@char{"}% +\addto\extraslatin{\bbl@activate{"}% +} +% \end{macrocode} +% +% A temporary macro is defined so as to take different actions in +% math mode and text mode: specifically in the former case the +% macro inserts a double quote as it should in math mode, otherwise +% another delayed macro comes into action. +% \begin{macrocode} +\declare@shorthand{latin}{"}{% + \ifmmode + \def\lt@@next{''}% + \else + \def\lt@@next{\futurelet\lt@temp\lt@cwm}% + \fi + \lt@@next +}% +% \end{macrocode} +% In text mode the \cs{lt@next} control sequence is such that upon +% its execution a temporary variable \cs{lt@temp} is made +% equivalent to the next token in the input list without actually +% removing it. Such temporary token is then tested by the macro +% \cs{lt@cwm} and if it is found to be a letter token, then it +% introduces a compound word separator control sequence +% \cs{lt@allowhyphens} whose expansion introduces a discretionary +% hyphen and an unbreakable space; in case the token is not a +% letter, the token is tested again to find if it is the character +% \texttt{\string|}, in which case it is gobbled and a +% discretionary break is introduced. +% \begin{macrocode} +\def\lt@allowhyphens{\nobreak\discretionary{-}{}{}\hskip\z@skip} +\newcommand*{\lt@cwm}{\let\lt@n@xt\relax + \ifcat\noexpand\lt@temp a% + \let\lt@n@xt\lt@allowhyphens + \else + \if\noexpand\lt@temp\string|% + \def\lt@n@xt{\lt@allowhyphens\@gobble}% + \fi + \fi + \lt@n@xt}% +% \end{macrocode} +% +% Attention: the category code comparison does not work if the +% temporary control sequence \cs{lt@temp} has been let equal to an +% implicit character, such as |\ae|; therefore this etymological +% hyphenation facility does not work with medieval Latin spelling +% when |"| immediately precedes a ligature. in order to overcome +% this drawback the shorthand \verb!"|! may be used in such cases; +% it behaves exactly as |"|, but it does not test the implicit +% character control sequence. An input such as +% \verb!super"|{\ae}quitas!\footnote{This word does not exist in +% ``regular'' Latin, and it is used just as an example.} +% gets hyphenated as \texttt{su-per-{\ae}qui-tas} instead of +% \texttt{su-pe-r\ae-qui-tas}. +% +% 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. +% \begin{macrocode} +\ldf@finish{latin} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/latin.ins b/Master/texmf-dist/source/generic/babel/latin.ins new file mode 100644 index 00000000000..88bfe93d36d --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/latin.ins @@ -0,0 +1,150 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{latin.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. + +Copyright 1999-2001 Claudio Beccari All rights reserved. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{latin.ldf}{\from{latin.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/lsorbian.dtx b/Master/texmf-dist/source/generic/babel/lsorbian.dtx new file mode 100644 index 00000000000..9f528f8aa9c --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/lsorbian.dtx @@ -0,0 +1,239 @@ +% \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{129} +% \iffalse +% +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{lsorbian.dtx} +%</dtx> +%<code>\ProvidesLanguage{lsorbian} +%\fi +%\ProvidesFile{lsorbian.dtx} + [2005/03/31 v1.0f Lower Sorbian support from the babel system] +%\iffalse +%% File `lsorbian.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Lower Sorbian Language Definition File +%% Copyright (C) 1994 - 2005 +%% by Eduard Werner +% Werner, Eduard", +% Serbski institut z. t., +% Dw\'orni\v{s}\'cowa 6 +% 02625 Budy\v{s}in/Bautzen +% Germany", +% (??)3591 497223", +% edi at kaihh.hanse.de", +% +%% Please report errors to: Eduard Werner edi at kaihh.hanse.de +%% +% This file is part of the babel system, it provides the source +% code for the Lower Sorbian definition file. +%<*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{lsorbian.dtx} +\end{document} +%</filedriver> +%\fi +% +% \GetFileInfo{lsorbian.dtx} +% +% \changes{lsorbian-0.1}{1994/10/10}{First version} +% \changes{lsorbian-1.0d}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \section{The Lower Sorbian language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. It was written by Eduard Werner +% (\texttt{edi@kaihh.hanse.de}).} It defines all the +% language-specific macros for Lower Sorbian. +% +% \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{lsorbian-1.0d}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{lsorbian}\captionslsorbian +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{lsorbian} will be an `unknown' languagein which +% case we have to make it known. So we check for the existence of +% |\l@lsorbian| to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\l@lsorbian\@undefined + \@nopatterns{Lsorbian} + \adddialect\l@lsorbian\l@usorbian\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Lower Sorbian language. +% +% \begin{macro}{\captionslsorbian} +% The macro |\captionslsorbian| defines all strings used in the four +% standard documentclasses provided with \LaTeX. +% \changes{lsorbian-1.0b}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{lsorbian-1.0f}{2000/09/22}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionslsorbian{% + \def\prefacename{Zawod}% + \def\refname{Referency}% + \def\abstractname{Abstrakt}% + \def\bibname{Literatura}% + \def\chaptername{Kapitl}% + \def\appendixname{Dodawki}% + \def\contentsname{Wop\'simje\'se}% + \def\listfigurename{Zapis wobrazow}% + \def\listtablename{Zapis tabulkow}% + \def\indexname{Indeks}% + \def\figurename{Wobraz}% + \def\tablename{Tabulka}% + \def\partname{\'Z\v el}% + \def\enclname{P\'si\l oga}% + \def\ccname{CC}% + \def\headtoname{Komu}% + \def\pagename{Strona}% + \def\seename{gl.}% + \def\alsoname{gl.~teke}% + \def\proofname{Proof}% <-- needs translation + \def\glossaryname{Glossary}% <-- Needs translation + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newdatelsorbian} +% The macro |\newdatelsorbian| redefines the command |\today| to +% produce Lower Sorbian dates. +% \changes{lsorbian-1.0e}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{lsorbian-1.0e}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \begin{macrocode} +\def\newdatelsorbian{% + \def\today{\number\day.~\ifcase\month\or + januara\or februara\or m\v erca\or apryla\or maja\or + junija\or julija\or awgusta\or septembra\or oktobra\or + nowembra\or decembra\fi + \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\olddatelsorbian} +% The macro |\olddatelsorbian| redefines the command |\today| to +% produce old-style Lower Sorbian dates. +% \begin{macrocode} +\def\olddatelsorbian{% + \def\today{\number\day.~\ifcase\month\or + wjelikego ro\v zka\or + ma\l ego ro\v zka\or + nal\v etnika\or + jat\v sownika\or + ro\v zownika\or + sma\v znika\or + pra\v znika\or + \v znje\'nca\or + po\v znje\'nca\or + winowca\or + nazymnika\or + godownika\fi \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% The default will be the new-style dates. +% \begin{macrocode} +\let\datelsorbian\newdatelsorbian +% \end{macrocode} +% +% \begin{macro}{\extraslsorbian} +% \begin{macro}{\noextraslsorbian} +% The macro |\extraslsorbian| will perform all the extra +% definitions needed for the lsorbian language. The macro +% |\noextraslsorbian| is used to cancel the actions of +% |\extraslsorbian|. For the moment these macros are empty but +% they are defined for compatibility with the other language +% definition files. +% +% \begin{macrocode} +\addto\extraslsorbian{} +\addto\noextraslsorbian{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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{lsorbian-1.0d}{1996/11/03}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{lsorbian} +%</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 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 diff --git a/Master/texmf-dist/source/generic/babel/magyar.ins b/Master/texmf-dist/source/generic/babel/magyar.ins new file mode 100644 index 00000000000..ea4b4851d12 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/magyar.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{magyar.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{magyar.ldf}{\from{magyar.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/ngermanb.dtx b/Master/texmf-dist/source/generic/babel/ngermanb.dtx new file mode 100644 index 00000000000..12b940fdceb --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/ngermanb.dtx @@ -0,0 +1,357 @@ +% \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{266} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{ngermanb.dtx} +%</dtx> +%<code>\ProvidesLanguage{ngermanb} +%\fi +%\ProvidesFile{ngermanb.dtx} + [2004/02/20 v2.6m new German support from the babel system] +%\iffalse +%% File `ngermanb.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2004 +%% by Johannes Braams, TeXniek +% +%% new Germanb Language Definition File +%% Copyright (C) 1989 - 2004 +%% by Bernd Raichle raichle at azu.Informatik.Uni-Stuttgart.de +%% Johannes Braams, TeXniek, +%% Walter Schmidt. +% This file is based on german.tex version 2.5e +% by Bernd Raichle, Hubert Partl et.al. +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +%<*filedriver> +\documentclass{ltxdoc} +\font\manual=logo10 % font used for the METAFONT logo, etc. +\newcommand*\MF{{\manual META}\-{\manual FONT}} +\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{ngermanb.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{ngermanb.dtx} +% +% \changes{ngermanb-2.6f}{1999/03/24}{Renamed from \file{germanb.ldf}; +% language names changed from \texttt{german} and \texttt{austrian} +% to \texttt{ngerman} and \texttt{naustrian}.} +% +% \section{The German language -- new orthography} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate.} defines all the language definition macros for the +% German language with the `new orthography' introduced in +% August 1998. This includes also the Austrian dialect of this +% language. +% +% As with the `traditional' German orthography, +% the character |"| is made active, and +% the commands in table~\ref{tab:german-quote} can be used, except +% for |"ck| and |"ff| etc., which are no longer required. +% +% The internal language names are |ngerman| and |naustrian|. +% +% \StopEventually{} +% +% When this file was read through the option \Lopt{ngermanb} we make +% it behave as if \Lopt{ngerman} was specified. +% \begin{macrocode} +\def\bbl@tempa{ngermanb} +\ifx\CurrentOption\bbl@tempa + \def\CurrentOption{ngerman} +\fi +% \end{macrocode} +% +% The macro |\LdfInit| takes care of preventing that this file is +% loaded more than once, checking the category code of the +% \texttt{@} sign, etc. +% \begin{macrocode} +%<*code> +\LdfInit\CurrentOption{captions\CurrentOption} +% \end{macrocode} +% +% When this file is read as an option, i.e., by the |\usepackage| +% command, \texttt{ngerman} will be an `unknown' language, so we +% have to make it known. So we check for the existence of +% |\l@ngerman| to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\l@ngerman\@undefined + \@nopatterns{ngerman} + \adddialect\l@ngerman0 +\fi +% \end{macrocode} +% +% For the Austrian version of these definitions we just add another +% language. +% \begin{macrocode} +\adddialect\l@naustrian\l@ngerman +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the German language. +% +% \begin{macro}{\captionsngerman} +% \begin{macro}{\captionsnaustrian} +% Either the macro |\captionnsgerman| or the macro +% |\captionsnaustrian| will define all strings used in the four +% standard document classes provided with \LaTeX. +% +% \changes{ngermanb-2.6k}{2000/09/20}{Added \cs{glossaryname}} +% \begin{macrocode} +\@namedef{captions\CurrentOption}{% + \def\prefacename{Vorwort}% + \def\refname{Literatur}% + \def\abstractname{Zusammenfassung}% + \def\bibname{Literaturverzeichnis}% + \def\chaptername{Kapitel}% + \def\appendixname{Anhang}% + \def\contentsname{Inhaltsverzeichnis}% % oder nur: Inhalt + \def\listfigurename{Abbildungsverzeichnis}% + \def\listtablename{Tabellenverzeichnis}% + \def\indexname{Index}% + \def\figurename{Abbildung}% + \def\tablename{Tabelle}% % oder: Tafel + \def\partname{Teil}% + \def\enclname{Anlage(n)}% % oder: Beilage(n) + \def\ccname{Verteiler}% % oder: Kopien an + \def\headtoname{An}% + \def\pagename{Seite}% + \def\seename{siehe}% + \def\alsoname{siehe auch}% + \def\proofname{Beweis}% + \def\glossaryname{Glossar}% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\datengerman} +% The macro |\datengerman| redefines the command +% |\today| to produce German dates. +% \begin{macrocode} +\def\month@ngerman{\ifcase\month\or + Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or + Juli\or August\or September\or Oktober\or November\or Dezember\fi} +\def\datengerman{\def\today{\number\day.~\month@ngerman + \space\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateanustrian} +% The macro |\datenaustrian| redefines the command +% |\today| to produce Austrian version of the German dates. +% \begin{macrocode} +\def\datenaustrian{\def\today{\number\day.~\ifnum1=\month + J\"anner\else \month@ngerman\fi \space\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasngerman} +% \begin{macro}{\extrasnaustrian} +% \begin{macro}{\noextrasngerman} +% \begin{macro}{\noextrasnaustrian} +% Either the macro |\extrasngerman| or the macros |\extrasnaustrian| +% will perform all the extra definitions needed for the German +% language. The macro |\noextrasngerman| is used to cancel the +% actions of |\extrasngerman|. +% +% For German (as well as for Dutch) the \texttt{"} character is +% made active. This is done once, later on its definition may vary. +% \begin{macrocode} +\initiate@active@char{"} +\@namedef{extras\CurrentOption}{% + \languageshorthands{ngerman}} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@activate{"}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{ngermanb-2.6j}{1999/12/16}{Deactivate shorthands ouside of +% German} +% \begin{macrocode} +\addto\noextrasngerman{\bbl@deactivate{"}} +% \end{macrocode} +% +% +% In order for \TeX\ to be able to hyphenate German words which +% contain `\ss' (in the \texttt{OT1} position |^^Y|) we have to +% give the character a nonzero |\lccode| (see Appendix H, the \TeX +% book). +% \begin{macrocode} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@savevariable{\lccode25}% + \lccode25=25} +% \end{macrocode} +% +% The umlaut accent macro |\"| is changed to lower the umlaut dots. +% The redefinition is done with the help of |\umlautlow|. +% \begin{macrocode} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\"\umlautlow} +\@namedef{noextras\CurrentOption}{\umlauthigh} +% \end{macrocode} +% The current +% version of the `new' German hyphenation patterns (\file{dehyphn.tex} +% is to be used with |\lefthyphenmin| and |\righthyphenmin| set to~2. +% \changes{ngermanb-2.6k}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% For German texts we need to make sure that |\frenchspacing| is +% turned on. +% \changes{ngermanb-2.6m}{2001/01/26}{Turn frenchspacing on, as in +% \texttt{german.sty}} +% \begin{macrocode} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@frenchspacing} +\expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@nonfrenchspacing} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% The code above is necessary because we need an extra active +% character. This character is then used as indicated in +% table~\ref{tab:german-quote}. +% +% To be able to define the function of |"|, we first define a +% couple of `support' macros. +% +% +% \begin{macro}{\dq} +% We save the original double quote character in |\dq| to keep +% it available, the math accent |\"| can now be typed as |"|. +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\x{\endgroup + \def\@SS{\mathchar"7019 } + \def\dq{"}} +\x +% \end{macrocode} +% \end{macro} +% +% Now we can define the doublequote macros: the umlauts, +% \begin{macrocode} +\declare@shorthand{ngerman}{"a}{\textormath{\"{a}\allowhyphens}{\ddot a}} +\declare@shorthand{ngerman}{"o}{\textormath{\"{o}\allowhyphens}{\ddot o}} +\declare@shorthand{ngerman}{"u}{\textormath{\"{u}\allowhyphens}{\ddot u}} +\declare@shorthand{ngerman}{"A}{\textormath{\"{A}\allowhyphens}{\ddot A}} +\declare@shorthand{ngerman}{"O}{\textormath{\"{O}\allowhyphens}{\ddot O}} +\declare@shorthand{ngerman}{"U}{\textormath{\"{U}\allowhyphens}{\ddot U}} +% \end{macrocode} +% tremas, +% \begin{macrocode} +\declare@shorthand{ngerman}{"e}{\textormath{\"{e}}{\ddot e}} +\declare@shorthand{ngerman}{"E}{\textormath{\"{E}}{\ddot E}} +\declare@shorthand{ngerman}{"i}{\textormath{\"{\i}}% + {\ddot\imath}} +\declare@shorthand{ngerman}{"I}{\textormath{\"{I}}{\ddot I}} +% \end{macrocode} +% german es-zet (sharp s), +% \begin{macrocode} +\declare@shorthand{ngerman}{"s}{\textormath{\ss}{\@SS{}}} +\declare@shorthand{ngerman}{"S}{\SS} +\declare@shorthand{ngerman}{"z}{\textormath{\ss}{\@SS{}}} +\declare@shorthand{ngerman}{"Z}{SZ} +% \end{macrocode} +% german and french quotes, +% \begin{macrocode} +\declare@shorthand{ngerman}{"`}{\glqq} +\declare@shorthand{ngerman}{"'}{\grqq} +\declare@shorthand{ngerman}{"<}{\flqq} +\declare@shorthand{ngerman}{">}{\frqq} +% \end{macrocode} +% and some additional commands: +% \begin{macrocode} +\declare@shorthand{ngerman}{"-}{\nobreak\-\bbl@allowhyphens} +\declare@shorthand{ngerman}{"|}{% + \textormath{\penalty\@M\discretionary{-}{}{\kern.03em}% + \allowhyphens}{}} +\declare@shorthand{ngerman}{""}{\hskip\z@skip} +\declare@shorthand{ngerman}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{ngerman}{"=}{\penalty\@M-\hskip\z@skip} +% \end{macrocode} +% +% \begin{macro}{\mdqon} +% \begin{macro}{\mdqoff} +% All that's left to do now is to define a couple of commands +% for reasons of compatibility with \file{german.sty}. +% \begin{macrocode} +\def\mdqon{\shorthandon{"}} +\def\mdqoff{\shorthandoff{"}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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. +% \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 diff --git a/Master/texmf-dist/source/generic/babel/norsk.dtx b/Master/texmf-dist/source/generic/babel/norsk.dtx new file mode 100644 index 00000000000..6fe166ca066 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/norsk.dtx @@ -0,0 +1,453 @@ +% \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{305} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{norsk.dtx} +%</dtx> +%<code>\ProvidesLanguage{norsk} +%\fi +%\ProvidesFile{norsk.dtx} + [2005/03/30 v2.0h Norsk support from the babel system] +%\iffalse +%%File `norsk.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Norwegian language definition file. Contributions +% were made by Haavard Helstrup (HAAVARD@CERNVM) and Alv Kjetil +% Holme (HOLMEA@CERNVM); the `nynorsk' variant has been supplied by +% Per Steinar Iversen (iversen@vxcern.cern.ch) and Terje Engeset +% Petterst (TERJEEP@VSFYS1.FI.UIB.NO) +% +% Rune Kleveland (runekl at math.uio.no) added the shorthand +% definitions +%<*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{norsk.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{norsk.dtx} +% +% \changes{norsk-1.0a}{1991/07/15}{Renamed \file{babel.sty} in +% \file{babel.com}} +% \changes{norsk-1.1a}{1992/02/16}{Brought up-to-date with babel 3.2a} +% \changes{norsk-1.1c}{1993/11/11}{Added a couple of translations +% (from Per Norman Oma, TeX@itk.unit.no)} +% \changes{norsk-1.2a}{1994/02/27}{Update for \LaTeXe} +% \changes{norsk-1.2d}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{norsk-1.2h}{1996/07/12}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{norsk-1.2h}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning.} +% +% +% \section{The Norwegian language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. Contributions were made by Haavard Helstrup +% (\texttt{HAAVARD@CERNVM)} and Alv Kjetil Holme +% (\texttt{HOLMEA@CERNVM}); the `nynorsk' variant has been supplied +% by Per Steinar Iversen \texttt{iversen@vxcern.cern.ch}) and Terje +% Engeset Petterst (\texttt{TERJEEP@VSFYS1.FI.UIB.NO)}; the +% shorthand definitions were provided by Rune Kleveland +% (\texttt{runekl@math.uio.no}).} defines all the language definition +% macros for the Norwegian language as well as for an alternative +% variant `nynorsk' of this language. +% +% For this language the character |"| is made active. In +% table~\ref{tab:norsk-quote} an overview is given of its purpose. +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{.7\textwidth}} +% |"ff|& for |ff| to be hyphenated as |ff-f|, +% this is also implemented for b, d, f, g, l, m, n, +% p, r, s, and t. (|o"ppussing|) \\ +% |"ee|& Hyphenate |"ee| as |\'e-e|. (|komit"een|) \\ +% |"-| & an explicit hyphen sign, allowing hyphenation in the +% composing words. Use this for compound words when the +% hyphenation patterns fail to hyphenate +% properly. (|alpin"-anlegg|) \\ +% \verb="|= & Like |"-|, but inserts 0.03em space. Use it if +% the compound point is spanned by a ligature. +% (\verb=hoff"|intriger=) \\ +% |""| & Like |"-|, but producing no hyphen sign. +% (|i""g\aa{}r|) \\ +% |"~| & Like |-|, but allows no hyphenation at all. (|E"~cup|)\\ +% |"=| & Like |-|, but allowing hyphenation in the composing +% words. (|marksistisk"=leninistisk|) \\ +% |"<| & for French left double quotes (similar to $<<$). \\ +% |">| & for French right double quotes (similar to $>>$). \\ +% \end{tabular} +% \caption{The extra definitions made +% by \file{norsk.sty}}\label{tab:norsk-quote} +% \end{center} +% \end{table} +% \changes{norsk-2.0a}{1998/06/24}{Describe the use of double quote as +% active character} +% +% Rune Kleveland distributes a Norwegian dictionary for ispell +% (570000 words). It can be found at +% |http://www.uio.no/~runekl/dictionary.html|. +% +% This dictionary supports the spellings |spi"sslede| for +% `spisslede' (hyphenated spiss-slede) and other such words, and +% also suggest the spelling |spi"sslede| for `spisslede' and +% `spissslede'. +% +% \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{norsk-1.2h}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit\CurrentOption{captions\CurrentOption} +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{norsk} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@norsk| to see whether we have to do something here. +% +% \changes{norsk-1.0c}{1991/10/29}{Removed use of \cs{@ifundefined}} +% \changes{norsk-1.1a}{1992/02/16}{Added a warning when no hyphenation +% patterns were loaded.} +% \changes{norsk-1.2d}{1994/06/26}{Now use \cs{@nopatterns} to produce +% the warning} +% \begin{macrocode} +\ifx\l@norsk\@undefined + \@nopatterns{Norsk} + \adddialect\l@norsk0\fi +% \end{macrocode} +% +% \begin{macro}{\norskhyphenmins} +% Some sets of Norwegian hyphenation patterns can be used with +% |\lefthyphenmin| set to~1 and |\righthyphenmin| set to~2, but +% the most common set |nohyph.tex| can't. So we use +% |\lefthyphenmin=2| by default. +% \changes{norsk-1.2f}{1995/07/02}{Added setting of hyphenmin +% parameters} +% \changes{norsk-2.0a}{1998/06/24}{Changed setting of hyphenmin +% parameters to 2~2} +% \changes{norsk-2.0e}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% Now we have to decide which version of the captions should be +% made available. This can be done by checking the contents of +% |\CurrentOption|. +% \begin{macrocode} +\def\bbl@tempa{norsk} +\ifx\CurrentOption\bbl@tempa +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Norwegian language. +% +% \begin{macro}{\captionsnorsk} +% The macro |\captionsnorsk| defines all strings used +% in the four standard documentclasses provided with \LaTeX. +% \changes{norsk-1.1a}{1992/02/16}{Added \cs{seename}, \cs{alsoname} and +% \cs{prefacename}} +% \changes{norsk-1.1b}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{norsk-1.2f}{1995/07/02}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{norsk-1.2g}{1996/04/01}{Replaced `Proof' by its +% translation} +% \changes{norsk-2.0e}{2000/09/20}{Added \cs{glossaryname}} +% \changes{norsk-2.0g}{1996/04/01}{Replaced `Glossary' by its +% translation} +% \begin{macrocode} + \def\captionsnorsk{% + \def\prefacename{Forord}% + \def\refname{Referanser}% + \def\abstractname{Sammendrag}% + \def\bibname{Bibliografi}% or Litteraturoversikt + % or Litteratur or Referanser + \def\chaptername{Kapittel}% + \def\appendixname{Tillegg}% or Appendiks + \def\contentsname{Innhold}% + \def\listfigurename{Figurer}% or Figurliste + \def\listtablename{Tabeller}% or Tabelliste + \def\indexname{Register}% + \def\figurename{Figur}% + \def\tablename{Tabell}% + \def\partname{Del}% + \def\enclname{Vedlegg}% + \def\ccname{Kopi sendt}% + \def\headtoname{Til}% in letter + \def\pagename{Side}% + \def\seename{Se}% + \def\alsoname{Se ogs\aa{}}% + \def\proofname{Bevis}% + \def\glossaryname{Ordliste}% + } +\else +% \end{macrocode} +% \end{macro} +% +% For the `nynorsk' version of these definitions we just add a +% ``dialect''. +% \begin{macrocode} + \adddialect\l@nynorsk\l@norsk +% \end{macrocode} +% +% \begin{macro}{\captionsnynorsk} +% The macro |\captionsnynorsk| defines all strings used in the four +% standard documentclasses provided with \LaTeX, but using a +% different spelling than in the command |\captionsnorsk|. +% \changes{norsk-1.1a}{1992/02/16}{Added \cs{seename}, \cs{alsoname} and +% \cs{prefacename}} +% \changes{norsk-1.1b}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{norsk-1.2g}{1996/04/01}{Replaced `Proof' by its +% translation} +% \changes{norsk-2.0e}{2000/09/20}{Added \cs{glossaryname}} +% \changes{norsk-2.0g}{1996/04/01}{Replaced `Glossary' by its +% translation} +% \changes{norks-2.0h}{2001/01/12}{Changed \cs{ccname} and \cs{alsoname}} +% \begin{macrocode} + \def\captionsnynorsk{% + \def\prefacename{Forord}% + \def\refname{Referansar}% + \def\abstractname{Samandrag}% + \def\bibname{Litteratur}% or Litteraturoversyn + % or Referansar + \def\chaptername{Kapittel}% + \def\appendixname{Tillegg}% or Appendiks + \def\contentsname{Innhald}% + \def\listfigurename{Figurar}% or Figurliste + \def\listtablename{Tabellar}% or Tabelliste + \def\indexname{Register}% + \def\figurename{Figur}% + \def\tablename{Tabell}% + \def\partname{Del}% + \def\enclname{Vedlegg}% + \def\ccname{Kopi til}% + \def\headtoname{Til}% in letter + \def\pagename{Side}% + \def\seename{Sj\aa{}}% + \def\alsoname{Sj\aa{} \`{o}g}% + \def\proofname{Bevis}% + \def\glossaryname{Ordliste}% + } +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datenorsk} +% The macro |\datenorsk| redefines the command |\today| to produce +% Norwegian dates. +% \changes{norsk-1.2i}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{norsk-1.2i}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \begin{macrocode} +\@namedef{date\CurrentOption}{% + \def\today{\number\day.~\ifcase\month\or + januar\or februar\or mars\or april\or mai\or juni\or + juli\or august\or september\or oktober\or november\or desember + \fi + \space\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasnorsk} +% \begin{macro}{\extrasnynorsk} +% The macro |\extrasnorsk| will perform all the extra definitions +% needed for the Norwegian language. The macro |\noextrasnorsk| is +% used to cancel the actions of |\extrasnorsk|. +% +% Norwegian typesetting requires |\frencspacing| to be in effect. +% \begin{macrocode} +\@namedef{extras\CurrentOption}{\bbl@frenchspacing} +\@namedef{noextras\CurrentOption}{\bbl@nonfrenchspacing} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% For Norsk the \texttt{"} character is made active. This is done +% once, later on its definition may vary. +% \changes{norsk-2.0a}{1998/06/24}{Made double quote character active} +% \begin{macrocode} +\initiate@active@char{"} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \languageshorthands{norsk}} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@activate{"}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{norsk-2.0c}{1999/12/17}{Deactivate shorthands ouside of +% Norsk} +% \begin{macrocode} +\expandafter\addto\csname noextras\CurrentOption\endcsname{% + \bbl@deactivate{"}} +% \end{macrocode} +% +% The code above is necessary because we need to define a number of +% shorthand commands. These sharthand commands are then used as +% indicated in table~\ref{tab:norsk-quote}. +% +% To be able to define the function of |"|, we first define a +% couple of `support' macros. +% +% \begin{macro}{\dq} +% We save the original double quote character in |\dq| to keep +% it available, the math accent |\"| can now be typed as |"|. +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\x{\endgroup + \def\@SS{\mathchar"7019 } + \def\dq{"}} +\x +% \end{macrocode} +% \end{macro} +% +% Now we can define the discretionary shorthand commands. +% The number of words where such hyphenation is required is for +% each character +% \begin{center} +% \begin{tabular}{*{11}c} +% b&d&f &g&k &l &n&p &r&s &t \\ +% 4&4&15&3&43&30&8&12&1&33&35 +% \end{tabular} +% \end{center} +% taken from a list of 83000 ispell-roots. +% +% \changes{norsk-2.0d}{2000/02/29}{Shorthands are the same for both +% spelling variants, no need to use \cs{CurrentOption}} +% \begin{macrocode} +\declare@shorthand{norsk}{"b}{\textormath{\bbl@disc b{bb}}{b}} +\declare@shorthand{norsk}{"B}{\textormath{\bbl@disc B{BB}}{B}} +\declare@shorthand{norsk}{"d}{\textormath{\bbl@disc d{dd}}{d}} +\declare@shorthand{norsk}{"D}{\textormath{\bbl@disc D{DD}}{D}} +\declare@shorthand{norsk}{"e}{\textormath{\bbl@disc e{\'e}}{}} +\declare@shorthand{norsk}{"E}{\textormath{\bbl@disc E{\'E}}{}} +\declare@shorthand{norsk}{"F}{\textormath{\bbl@disc F{FF}}{F}} +\declare@shorthand{norsk}{"g}{\textormath{\bbl@disc g{gg}}{g}} +\declare@shorthand{norsk}{"G}{\textormath{\bbl@disc G{GG}}{G}} +\declare@shorthand{norsk}{"k}{\textormath{\bbl@disc k{kk}}{k}} +\declare@shorthand{norsk}{"K}{\textormath{\bbl@disc K{KK}}{K}} +\declare@shorthand{norsk}{"l}{\textormath{\bbl@disc l{ll}}{l}} +\declare@shorthand{norsk}{"L}{\textormath{\bbl@disc L{LL}}{L}} +\declare@shorthand{norsk}{"n}{\textormath{\bbl@disc n{nn}}{n}} +\declare@shorthand{norsk}{"N}{\textormath{\bbl@disc N{NN}}{N}} +\declare@shorthand{norsk}{"p}{\textormath{\bbl@disc p{pp}}{p}} +\declare@shorthand{norsk}{"P}{\textormath{\bbl@disc P{PP}}{P}} +\declare@shorthand{norsk}{"r}{\textormath{\bbl@disc r{rr}}{r}} +\declare@shorthand{norsk}{"R}{\textormath{\bbl@disc R{RR}}{R}} +\declare@shorthand{norsk}{"s}{\textormath{\bbl@disc s{ss}}{s}} +\declare@shorthand{norsk}{"S}{\textormath{\bbl@disc S{SS}}{S}} +\declare@shorthand{norsk}{"t}{\textormath{\bbl@disc t{tt}}{t}} +\declare@shorthand{norsk}{"T}{\textormath{\bbl@disc T{TT}}{T}} +% \end{macrocode} +% We need to treat |"f| a bit differently in order to preserve the +% ff-ligature. +% \changes{norsk-2.0b}{1999/11/19}{Copied the coding for \texttt{"f} +% from germanb.dtx version 2.6g} +% \begin{macrocode} +\declare@shorthand{norsk}{"f}{\textormath{\bbl@discff}{f}} +\def\bbl@discff{\penalty\@M + \afterassignment\bbl@insertff \let\bbl@nextff= } +\def\bbl@insertff{% + \if f\bbl@nextff + \expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi + {\relax\discretionary{ff-}{f}{ff}\allowhyphens}{f\bbl@nextff}} +\let\bbl@nextff=f +% \end{macrocode} +% We now define the French double quotes and some commands +% concerning hyphenation: +% \changes{norsk-2.0b}{1999/11/22}{added the french double quotes} +% \changes{norsk-2.0d}{2000/01/28}{Use \cs{bbl@allowhyphens} in +% \texttt{"-}} +% \begin{macrocode} +\declare@shorthand{norsk}{"<}{\flqq} +\declare@shorthand{norsk}{">}{\frqq} +\declare@shorthand{norsk}{"-}{\penalty\@M\-\bbl@allowhyphens} +\declare@shorthand{norsk}{"|}{% + \textormath{\penalty\@M\discretionary{-}{}{\kern.03em}% + \allowhyphens}{}} +\declare@shorthand{norsk}{""}{\hskip\z@skip} +\declare@shorthand{norsk}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{norsk}{"=}{\penalty\@M-\hskip\z@skip} +% \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{norsk-1.2h}{1996/11/03}{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 diff --git a/Master/texmf-dist/source/generic/babel/norsk.ins b/Master/texmf-dist/source/generic/babel/norsk.ins new file mode 100644 index 00000000000..9ec2729e642 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/norsk.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{norsk.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{norsk.ldf}{\from{norsk.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/polish.dtx b/Master/texmf-dist/source/generic/babel/polish.dtx new file mode 100644 index 00000000000..a2e66978558 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/polish.dtx @@ -0,0 +1,563 @@ +% \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{543} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{polish.dtx} +%</dtx> +%<code>\ProvidesLanguage{polish} +%\fi +%\ProvidesFile{polish.dtx} + [2005/03/31 v1.2l Polish support from the babel system] +%\iffalse +%% File `polish.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 -- 2005 +%% by Johannes Braams, TeXniek +% +%% Polish Language Definition File +%% Copyright (C) 1989 - 2005 +%% by Elmar Schalueck, Michael Janich +% Universitaet-Gesamthochschule Paderborn +% Warburger Strasse 100 +% 4790 Paderborn +% Germany +% elmar at uni-paderborn.de +% massa at uni-paderborn.de +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Polish language definition file. It was developped +% out of Polish.tex, which was written by Elmar Schalueck and +% Michael Janich. Polish.tex was based on code by Leszek +% Holenderski, Jerzy Ryll and J. S. Bie\'n from Faculty of +% Mathematics,Informatics and Mechanics of Warsaw University, exept +% of Jerzy Ryll (Instytut Informatyki Uniwersytetu Warszawskiego). +%<*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{polish.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{polish.dtx} +% +% \changes{polish-1.1c}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of babel.def} +% \changes{polish-1.2d}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \section{The Polish language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate.} defines all the language-specific macros for the +% Polish language. +% +% For this language the character |"| is made active. In +% table~\ref{tab:polish-quote} an overview is given of its purpose. +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |"a| & or |\aob|, for tailed-a (like \c{a})\\ +% |"A| & or |\Aob|, for tailed-A (like \c{A})\\ +% |"e| & or |\eob|, for tailed-e (like \c{e})\\ +% |"E| & or |\Eob|, for tailed-E (like \c{E})\\ +% |"c| & or |\'c|, for accented c (like \'c), +% same with uppercase letters and n,o,s\\ +% |"l| & or |\lpb{}|, for l with stroke (like \l)\\ +% |"L| & or |\Lpb{}|, for L with stroke (like \L)\\ +% |"r| & or |\zkb{}|, for pointed z (like \.z), cf. +% pronounciation\\ +% |"R| & or |\Zkb{}|, for pointed Z (like \.Z)\\ +% |"z| & or |\'z|, for accented z\\ +% |"Z| & or |\'Z|, for accented Z\\ +% \verb="|= & disable ligature at this position.\\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word.\\ +% |""| & like |"-|, but producing no hyphen sign +% (for compund words with hyphen, e.g.\ |x-""y|). \\ +% |"`| & for German left double quotes (looks like ,,). \\ +% |"'| & for German right double quotes. \\ +% |"<| & for French left double quotes (similar to $<<$). \\ +% |">| & for French right double quotes (similar to $>>$).\\ +% \end{tabular} +% \caption{The extra definitions made by \file{polish.sty}} +% \label{tab:polish-quote} +% \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{polish-1.2d}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{polish}\captionspolish +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{polish} could be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@polish| to see whether we have to do something here. +% +% \changes{polish-1.1c}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@polish\@undefined + \@nopatterns{Polish} + \adddialect\l@polish0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Polish language. +% +% \begin{macro}{\captionspolish} +% The macro |\captionspolish| defines all strings used in the four +% standard documentclasses provided with \LaTeX. +% \changes{polish-1.2b}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{polish-1.2f}{1997/09/11}{Added translation for Proof and +% changed translation of Contents} +% \changes{polish-1.2i}{2000/09/19}{\cs{bibname} and \cs{refname} were +% swapped} +% \changes{polish-1.2i}{2000/09/19}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionspolish{% + \def\prefacename{Przedmowa}% + \def\refname{Literatura}% + \def\abstractname{Streszczenie}% + \def\bibname{Bibliografia}% + \def\chaptername{Rozdzia\l}% + \def\appendixname{Dodatek}% + \def\contentsname{Spis tre\'sci}% + \def\listfigurename{Spis rysunk\'ow}% + \def\listtablename{Spis tablic}% + \def\indexname{Indeks}% + \def\figurename{Rysunek}% + \def\tablename{Tablica}% + \def\partname{Cz\eob{}\'s\'c}% + \def\enclname{Za\l\aob{}cznik}% + \def\ccname{Kopie:}% + \def\headtoname{Do}% + \def\pagename{Strona}% + \def\seename{Por\'ownaj}% + \def\alsoname{Por\'ownaj tak\.ze}% + \def\proofname{Dow\'od}% + \def\glossaryname{Glossary}% <-- Needs translation +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datepolish} +% The macro |\datepolish| redefines the command |\today| to produce +% Polish dates. +% \changes{polish-1.2f}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{polish-1.2f}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \changes{polish-1.2i}{2000/01/08}{A missing comment character caused +% an unwanted space character in the output} +% \begin{macrocode} +\def\datepolish{% + \def\today{\number\day~\ifcase\month\or + stycznia\or lutego\or marca\or kwietnia\or maja\or czerwca\or lipca\or + sierpnia\or wrze\'snia\or pa\'zdziernika\or listopada\or grudnia\fi + \space\number\year}% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extraspolish} +% \begin{macro}{\noextraspolish} +% The macro |\extraspolish| will perform all the extra definitions +% needed for the Polish language. The macro |\noextraspolish| is +% used to cancel the actions of |\extraspolish|. +% +% For Polish the \texttt{"} character is made active. This is +% done once, later on its definition may vary. Other languages in +% the same document may also use the \texttt{"} character for +% shorthands; we specify that the polish group of shorthands +% should be used. +% +% \begin{macrocode} +\initiate@active@char{"} +\addto\extraspolish{\languageshorthands{polish}} +\addto\extraspolish{\bbl@activate{"}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{polish-1.2h}{1999/12/17}{Deactivate shorthands ouside of +% Polish} +% \begin{macrocode} +\addto\noextraspolish{\bbl@deactivate{"}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The code above is necessary because we need an extra +% active character. This character is then used as indicated in +% table~\ref{tab:polish-quote}. +% +% If you have problems at the end of a word with a linebreak, use +% the other version without hyphenation tricks. Some TeX wizard may +% produce a better solution with forcasting another token to decide +% whether the character after the double quote is the last in a +% word. Do it and let us know. +% +% In Polish texts some letters get special diacritical marks. +% Leszek Holenderski designed the following code to position the +% diacritics correctly for every font in every size. These macros +% need a few extra dimension variables. +% +% \begin{macrocode} +\newdimen\pl@left +\newdimen\pl@down +\newdimen\pl@right +\newdimen\pl@temp +% \end{macrocode} +% +% \begin{macro}{\sob} +% The macro |\sob| is used to put the `ogonek' in the right +% place. +% +% \changes{polish-1.2d}{1996/08/18}{This macro is meant to be used in +% horizontal mode; so leave vertical mode if necessary} +% \begin{macrocode} +\def\sob#1#2#3#4#5{%parameters: letter and fractions hl,ho,vl,vo + \setbox0\hbox{#1}\setbox1\hbox{$_\mathchar'454$}\setbox2\hbox{p}% + \pl@right=#2\wd0 \advance\pl@right by-#3\wd1 + \pl@down=#5\ht1 \advance\pl@down by-#4\ht0 + \pl@left=\pl@right \advance\pl@left by\wd1 + \pl@temp=-\pl@down \advance\pl@temp by\dp2 \dp1=\pl@temp + \leavevmode + \kern\pl@right\lower\pl@down\box1\kern-\pl@left #1} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\aob} +% \begin{macro}{\Aob} +% \begin{macro}{\eob} +% \begin{macro}{\Eob} +% The ogonek is placed with the letters `a', `A', `e', and `E'. +% \changes{polish-1.2d}{1996/08/18}{Use the constructed version of the +% characters only in OT1; use proper characters in T1.} +% \begin{macrocode} +\DeclareTextCommand{\aob}{OT1}{\sob a{.66}{.20}{0}{.90}} +\DeclareTextCommand{\Aob}{OT1}{\sob A{.80}{.50}{0}{.90}} +\DeclareTextCommand{\eob}{OT1}{\sob e{.50}{.35}{0}{.93}} +\DeclareTextCommand{\Eob}{OT1}{\sob E{.60}{.35}{0}{.90}} +% \end{macrocode} +% For the 'new' \texttt{T1} encoding we can provide simpler +% definitions. +% \begin{macrocode} +\DeclareTextCommand{\aob}{T1}{\k a} +\DeclareTextCommand{\Aob}{T1}{\k A} +\DeclareTextCommand{\eob}{T1}{\k e} +\DeclareTextCommand{\Eob}{T1}{\k E} +% \end{macrocode} +% Construct the characters by default from the OT1 encoding. +% \begin{macrocode} +\ProvideTextCommandDefault{\aob}{\UseTextSymbol{OT1}{\aob}} +\ProvideTextCommandDefault{\Aob}{\UseTextSymbol{OT1}{\Aob}} +\ProvideTextCommandDefault{\eob}{\UseTextSymbol{OT1}{\eob}} +\ProvideTextCommandDefault{\Eob}{\UseTextSymbol{OT1}{\Eob}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\spb} +% The macro |\spb| is used to put the `poprzeczka' in the +% right place. +% +% \changes{polish-1.2d}{1996/08/18}{\cs{spb} is meant to be used in +% horizontal mode; so leave vertical mode if necessary} +% \begin{macrocode} +\def\spb#1#2#3#4#5{% + \setbox0\hbox{#1}\setbox1\hbox{\char'023}% + \pl@right=#2\wd0 \advance\pl@right by-#3\wd1 + \pl@down=#5\ht1 \advance\pl@down by-#4\ht0 + \pl@left=\pl@right \advance\pl@left by\wd1 + \ht1=\pl@down \dp1=-\pl@down + \leavevmode + \kern\pl@right\lower\pl@down\box1\kern-\pl@left #1} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\skb} +% The macro |\skb| is used to put the `kropka' in the +% right place. +% +% \changes{polish-1.2d}{1996/08/18}{\cs{skb} is meant to be used in +% horizontal mode; so leave vertical mode if necessary} +% \begin{macrocode} +\def\skb#1#2#3#4#5{% + \setbox0\hbox{#1}\setbox1\hbox{\char'056}% + \pl@right=#2\wd0 \advance\pl@right by-#3\wd1 + \pl@down=#5\ht1 \advance\pl@down by-#4\ht0 + \pl@left=\pl@right \advance\pl@left by\wd1 + \leavevmode + \kern\pl@right\lower\pl@down\box1\kern-\pl@left #1} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textpl} +% For the `poprzeczka' and the `kropka' in text fonts we don't need +% any special coding, but we can (almost) use what is already +% available. +% +% \begin{macrocode} +\def\textpl{% + \def\lpb{\plll}% + \def\Lpb{\pLLL}% + \def\zkb{\.z}% + \def\Zkb{\.Z}} +% \end{macrocode} +% Initially we assume that typesetting is done with text fonts. +% \changes{polish-1.0a}{1993/11/05}{Initially execute `textpl} +% \begin{macrocode} +\textpl +% \end{macrocode} +% +% \begin{macrocode} +\let\lll=\l \let\LLL=\L +\def\plll{\lll} +\def\pLLL{\LLL} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\telepl} +% But for the `teletype' font in `OT1' encoding we have to take some +% special actions, involving the macros defined above. +% +% \begin{macrocode} +\def\telepl{% + \def\lpb{\spb l{.45}{.5}{.4}{.8}}% + \def\Lpb{\spb L{.23}{.5}{.4}{.8}}% + \def\zkb{\skb z{.5}{.5}{1.2}{0}}% + \def\Zkb{\skb Z{.5}{.5}{1.1}{0}}} +% \end{macrocode} +% \end{macro} +% +% To activate these codes the font changing commands as they are +% defined in \LaTeX\ are modified. The same is done for plain +% \TeX's font changing commands. +% +% When |\selectfont| is undefined the current format is spposed to be +% either plain (based) or \LaTeX$\:$2.09. +% \changes{polish-1.2a}{1995/06/06}{Don't modify \cs{rm} and friends for +% \LaTeXe, take \cs{selectfont } instead} +% \begin{macrocode} +\ifx\selectfont\@undefined + \ifx\prm\@undefined \addto\rm{\textpl}\else \addto\prm{\textpl}\fi + \ifx\pit\@undefined \addto\it{\textpl}\else \addto\pit{\textpl}\fi + \ifx\pbf\@undefined \addto\bf{\textpl}\else \addto\pbf{\textpl}\fi + \ifx\psl\@undefined \addto\sl{\textpl}\else \addto\psl{\textpl}\fi + \ifx\psf\@undefined \else \addto\psf{\textpl}\fi + \ifx\psc\@undefined \else \addto\psc{\textpl}\fi + \ifx\ptt\@undefined \addto\tt{\telepl}\else \addto\ptt{\telepl}\fi +\else +% \end{macrocode} +% When |\selectfont| exists we assume \LaTeXe. +% \begin{macrocode} + \expandafter\addto\csname selectfont \endcsname{% + \csname\f@encoding @pl\endcsname} +\fi +% \end{macrocode} +% Currently we support the OT1 and T1 encodings. For T1 we don't +% have to make a difference between typewriter fonts and other +% fonts, they all have the same glyphs. +% \begin{macrocode} +\expandafter\let\csname T1@pl\endcsname\textpl +% \end{macrocode} +% For OT1 we need to check the current font family, stored in +% |\f@family|. Unfortunately we need a hack as |\ttdefault| is +% defined as a |\long| macro, while |\f@family| is not. +% \begin{macrocode} +\expandafter\def\csname OT1@pl\endcsname{% + \long\edef\curr@family{\f@family}% + \ifx\curr@family\ttdefault + \telepl + \else + \textpl + \fi} +% \end{macrocode} +% +% \begin{macro}{\dq} +% We save the original double quote character in |\dq| to keep +% it available, the math accent |\"| can now be typed as |"|. +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\x{\endgroup + \def\dq{"}} +\x +% \end{macrocode} +% \end{macro} +% +% Now we can define the doublequote macros for diacritics, +% \changes{polish-1.1d}{1995/01/31}{The dqmacro for C used \cs{'c}} +% \begin{macrocode} +\declare@shorthand{polish}{"a}{\textormath{\aob}{\ddot a}} +\declare@shorthand{polish}{"A}{\textormath{\Aob}{\ddot A}} +\declare@shorthand{polish}{"c}{\textormath{\'c}{\acute c}} +\declare@shorthand{polish}{"C}{\textormath{\'C}{\acute C}} +\declare@shorthand{polish}{"e}{\textormath{\eob}{\ddot e}} +\declare@shorthand{polish}{"E}{\textormath{\Eob}{\ddot E}} +\declare@shorthand{polish}{"l}{\textormath{\lpb}{\ddot l}} +\declare@shorthand{polish}{"L}{\textormath{\Lpb}{\ddot L}} +\declare@shorthand{polish}{"n}{\textormath{\'n}{\acute n}} +\declare@shorthand{polish}{"N}{\textormath{\'N}{\acute N}} +\declare@shorthand{polish}{"o}{\textormath{\'o}{\acute o}} +\declare@shorthand{polish}{"O}{\textormath{\'O}{\acute O}} +\declare@shorthand{polish}{"s}{\textormath{\'s}{\acute s}} +\declare@shorthand{polish}{"S}{\textormath{\'S}{\acute S}} +% \end{macrocode} +% \begin{macro}{\polishrz} +% \begin{macro}{\polishzx} +% \changes{polish-1.2j}{2000/11/11}{Added support for two +% notationstyles for kropka and accented z} +% The command |\polishrz| defines the shorthands |"r|, |"z| and +% |"x| to produce pointed z, accented z and |"x|. This is the +% default as these shorthands were defined by this language +% definition file for quite some time. +% \begin{macrocode} +\newcommand*{\polishrz}{% + \declare@shorthand{polish}{"r}{\textormath{\zkb}{\ddot r}}% + \declare@shorthand{polish}{"R}{\textormath{\Zkb}{\ddot R}}% + \declare@shorthand{polish}{"z}{\textormath{\'z}{\acute z}}% + \declare@shorthand{polish}{"Z}{\textormath{\'Z}{\acute Z}}% + \declare@shorthand{polish}{"x}{\dq x}% + \declare@shorthand{polish}{"X}{\dq X}% + } +\polishrz +% \end{macrocode} +% The command |\polishzx| switches to a different set of +% shorthands, |"z|, |"x| and |"r| to produce pointed z, accented z +% and |"r|; a different shorthand notation also in use. +% \changes{polish-1.2k}{2003/10/12}{Fixed a typo} +% \begin{macrocode} +\newcommand*{\polishzx}{% + \declare@shorthand{polish}{"z}{\textormath{\zkb}{\ddot z}}% + \declare@shorthand{polish}{"Z}{\textormath{\Zkb}{\ddot Z}}% + \declare@shorthand{polish}{"x}{\textormath{\'z}{\acute x}}% + \declare@shorthand{polish}{"X}{\textormath{\'Z}{\acute X}}% + \declare@shorthand{polish}{"r}{\dq r}% + \declare@shorthand{polish}{"R}{\dq R}% + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% Then we define access to two forms of quotation marks, similar +% to the german and french quotation marks. +% \changes{polish-1.2e}{1997/04/03}{Removed empty groups after +% double quote and guillemot characters} +% \changes{polish-1.2l}{2004/02/18}{Changed closing quote} +% \begin{macrocode} +\declare@shorthand{polish}{"`}{% + \textormath{\quotedblbase}{\mbox{\quotedblbase}}} +\declare@shorthand{polish}{"'}{% + \textormath{\textquotedblright}{\mbox{\textquotedblright}}} +\declare@shorthand{polish}{"<}{% + \textormath{\guillemotleft}{\mbox{\guillemotleft}}} +\declare@shorthand{polish}{">}{% + \textormath{\guillemotright}{\mbox{\guillemotright}}} +% \end{macrocode} +% then we define two shorthands to be able to specify hyphenation +% breakpoints that behavew a little different from |\-|. +% \begin{macrocode} +\declare@shorthand{polish}{"-}{\nobreak-\bbl@allowhyphens} +\declare@shorthand{polish}{""}{\hskip\z@skip} +% \end{macrocode} +% And we want to have a shorthand for disabling a ligature. +% \begin{macrocode} +\declare@shorthand{polish}{"|}{% + \textormath{\discretionary{-}{}{\kern.03em}}{}} +% \end{macrocode} +% +% +% \begin{macro}{\mdqon} +% \begin{macro}{\mdqoff} +% All that's left to do now is to define a couple of commands +% for reasons of compatibility with \file{polish.tex}. +% \changes{polish-1.2f}{1998/06/07}{Now use \cs{shorthandon} and +% \cs{shorthandoff}} +% \begin{macrocode} +\def\mdqon{\shorthandon{"}} +\def\mdqoff{\shorthandoff{"}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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{polish-1.2d}{1996/11/03}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{polish} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/polish.ins b/Master/texmf-dist/source/generic/babel/polish.ins new file mode 100644 index 00000000000..00a5e50a92b --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/polish.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{polish.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{polish.ldf}{\from{polish.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/portuges.dtx b/Master/texmf-dist/source/generic/babel/portuges.dtx new file mode 100644 index 00000000000..8c4fbf1d6f3 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/portuges.dtx @@ -0,0 +1,473 @@ +% \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{319} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{portuges.dtx} +%</dtx> +%<code>\ProvidesLanguage{portuges} +%\fi +%\ProvidesFile{portuges.dtx} + [2005/03/31 v1.2p Portuguese support from the babel system] +%\iffalse +%% File `portuges.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Portuguese Language Definition File +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Portuguese language definition file. The Portuguese +% words were contributed by Jose Pedro Ramalhete, (JRAMALHE@CERNVM +% or Jose-Pedro_Ramalhete@MACMAIL). +% +% Arnaldo Viegas de Lima <arnaldo@VNET.IBM.COM> contributed +% brasilian translations and suggestions for enhancements. +%<*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{portuges.dtx} +\end{document} +%</filedriver> +%\fi +% +% \GetFileInfo{portuges.dtx} +% +% \changes{portuges-1.0a}{1991/07/15}{Renamed \file{babel.sty} in +% \file{babel.com}} +% \changes{portuges-1.1}{1992/02/16}{Brought up-to-date with babel 3.2a} +% \changes{portuges-1.2}{1994/02/26}{Update for \LaTeXe} +% \changes{portuges-1.2d}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{portuges-1.2g}{1995/06/04}{Enhanced support for brasilian} +% \changes{portuges-1.2j}{1996/07/11}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{portuges-1.2j}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning.} +% +% \section{The Portuguese language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. Contributions were made by Jose Pedro Ramalhete +% (\texttt{JRAMALHE@CERNVM} or +% \texttt{Jose-Pedro\_Ramalhete@MACMAIL}) and Arnaldo Viegas de +% Lima \texttt{arnaldo@VNET.IBM.COM}.} defines all the +% language-specific macros for the Portuguese language as well as +% for the Brasilian version of this language. +% +% For this language the character |"| is made active. In +% table~\ref{tab:port-quote} an overview is given of its purpose. +% +% \begin{table}[htb] +% \centering +% \begin{tabular}{lp{8cm}} +% \verb="|= & disable ligature at this position.\\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word.\\ +% |""| & like \verb="-=, but producing no hyphen sign (for +% words that should break at some sign such as +% ``entrada/salida.''\\ +% |"<| & for French left double quotes (similar to $<<$).\\ +% |">| & for French right double quotes (similar to $>>$).\\ +% |\-| & like the old |\-|, but allowing hyphenation +% in the rest of the word. \\ +% \end{tabular} +% \caption{The extra definitions made by \file{portuges.ldf}} +% \label{tab:port-quote} +% \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{portuges-1.2j}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit\CurrentOption{captions\CurrentOption} +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{portuges} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@portuges| to see whether we have to do something here. Since +% it is possible to load this file with any of the following four +% options to babel: \Lopt{portuges}, \Lopt{portuguese}, +% \Lopt{brazil} and \Lopt{brazilian} we also allow that the +% hyphenation patterns are loaded under any of these four names. We +% just have to find out which one was used. +% +% \changes{portuges-1.0b}{1991/10/29}{Removed use of cs{@ifundefined}} +% \changes{portuges-1.1}{1992/02/16}{Added a warning when no +% hyphenation patterns were loaded.} +% \changes{portuges-1.2d}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@portuges\@undefined + \ifx\l@portuguese\@undefined + \ifx\l@brazil\@undefined + \ifx\l@brazilian\@undefined + \@nopatterns{Portuguese} + \adddialect\l@portuges0 + \else + \let\l@portuges\l@brazilian + \fi + \else + \let\l@portuges\l@brazil + \fi + \else + \let\l@portuges\l@portuguese + \fi +\fi +% \end{macrocode} +% By now |\l@portuges| is defined. When the language definition +% file was loaded under a different name we make sure that the +% hyphenation patterns can be found. +% \begin{macrocode} +\expandafter\ifx\csname l@\CurrentOption\endcsname\relax + \expandafter\let\csname l@\CurrentOption\endcsname\l@portuges +\fi +% \end{macrocode} +% +% Now we have to decide whether this language definition file was +% loaded for Portuguese or Brasilian use. This can be done by +% checking the contents of |\CurrentOption|. When it doesn't +% contain either `portuges' or `portuguese' we make |\bbl@tempb| +% empty. +% \begin{macrocode} +\def\bbl@tempa{portuguese} +\ifx\CurrentOption\bbl@tempa + \let\bbl@tempb\@empty +\else + \def\bbl@tempa{portuges} + \ifx\CurrentOption\bbl@tempa + \let\bbl@tempb\@empty + \else + \def\bbl@tempb{brazil} + \fi +\fi +\ifx\bbl@tempb\@empty +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and from) +% the Portuguese language. +% +% \begin{macro}{\captionsportuges} +% The macro |\captionsportuges| defines all strings used +% in the four standard documentclasses provided with \LaTeX. +% \changes{portuges-1.1}{1992/02/16}{Added \cs{seename}, \cs{alsoname} +% and \cs{prefacename}} +% \changes{portuges-1.1}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{portuges-1.2e}{1994/11/09}{Added a few missing +% translations} +% \changes{portuges-1.2h}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{portuges-1.2i}{1995/11/25}{Substituted `Prova' for `Proof'} +% \begin{macrocode} + \@namedef{captions\CurrentOption}{% + \def\prefacename{Pref\'acio}% + \def\refname{Refer\^encias}% + \def\abstractname{Resumo}% + \def\bibname{Bibliografia}% + \def\chaptername{Cap\'{\i}tulo}% + \def\appendixname{Ap\^endice}% +% \end{macrocode} +% Some discussion took place around the correct translations for +% `Table of Contents' and `Index'. the translations differ for +% Portuguese and Brasilian based the following history: +% \begin{quote} +% The whole issue is that some books without a real index at the +% end misused the term `\'Indice' as table of contents. Then, +% what happens is that some books apeared with `\'Indice' at the +% begining and a `\'Indice Remissivo' at the end. Remissivo is a +% redundant word in this case, but was introduced to make up the +% difference. So in Brasil people started using `Sum\'ario' and +% `\'Indice Remissivo'. In Portugal this seems not to be very +% common, therefore we chose `\'Indice' instead of `\'Indice +% Remissivo'. +% \end{quote} +% \begin{macrocode} + \def\contentsname{Conte\'udo}% + \def\listfigurename{Lista de Figuras}% + \def\listtablename{Lista de Tabelas}% + \def\indexname{\'Indice}% + \def\figurename{Figura}% + \def\tablename{Tabela}% + \def\partname{Parte}% + \def\enclname{Anexo}% + \def\ccname{Com c\'opia a}% + \def\headtoname{Para}% + \def\pagename{P\'agina}% + \def\seename{ver}% + \def\alsoname{ver tamb\'em}% +% \end{macrocode} +% An alternate term for `Proof' could be `Prova'. +% \changes{portuges-1.2m}{2000/09/20}{Added \cs{glossaryname}} +% \changes{portuges-1.2p}{2003/05/23}{Substituted `Gloss\'ario' for +% `Glossary'} +% \begin{macrocode} + \def\proofname{Demonstra\c{c}\~ao}% + \def\glossaryname{Gloss\'ario}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateportuges} +% The macro |\dateportuges| redefines the command |\today| to +% produce Portuguese dates. +% \changes{portuges-1.2k}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{portuges-1.2k}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \changes{portuges-1.2n}{2001/01/27}{Removed spurious space after +% Dezembro} +% \begin{macrocode} + \@namedef{date\CurrentOption}{% + \def\today{\number\day\space de\space\ifcase\month\or + Janeiro\or Fevereiro\or Mar\c{c}o\or Abril\or Maio\or Junho\or + Julho\or Agosto\or Setembro\or Outubro\or Novembro\or Dezembro% + \fi + \space de\space\number\year}} +\else +% \end{macrocode} +% \end{macro} +% +% For the Brasilian version of these definitions we just add a +% ``dialect''. +% \begin{macrocode} + \expandafter + \adddialect\csname l@\CurrentOption\endcsname\l@portuges +% \end{macrocode} +% +% \begin{macro}{\captionsbrazil} +% \changes{portuges-1.2g}{1995/06/04}{The captions for brasilian and +% portuguese are different now} +% +% The ``captions'' are different for both versions of the language, +% so we define the macro |\captionsbrazil| here. +% \changes{portuges-1.2i}{1995/11/25}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{portuges-1.2m}{2000/09/20}{Added \cs{glossaryname}} +% \begin{macrocode} + \@namedef{captions\CurrentOption}{% + \def\prefacename{Pref\'acio}% + \def\refname{Refer\^encias}% + \def\abstractname{Resumo}% + \def\bibname{Refer\^encias Bibliogr\'aficas}% + \def\chaptername{Cap\'{\i}tulo}% + \def\appendixname{Ap\^endice}% + \def\contentsname{Sum\'ario}% + \def\listfigurename{Lista de Figuras}% + \def\listtablename{Lista de Tabelas}% + \def\indexname{\'Indice Remissivo}% + \def\figurename{Figura}% + \def\tablename{Tabela}% + \def\partname{Parte}% + \def\enclname{Anexo}% + \def\ccname{C\'opia para}% + \def\headtoname{Para}% + \def\pagename{P\'agina}% + \def\seename{veja}% + \def\alsoname{veja tamb\'em}% + \def\proofname{Demonstra\c{c}\~ao}% + \def\glossaryname{Glossary}% <-- Needs translation + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datebrazil} +% The macro |\datebrazil| redefines the command +% |\today| to produce Brasilian dates, for which the names +% of the months are not capitalized. +% \changes{portuges-1.2k}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{portuges-1.2k}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \changes{portuges-1.2n}{2001/01/27}{Removed spurious space after +% dezembro} +% \begin{macrocode} + \@namedef{date\CurrentOption}{% + \def\today{\number\day\space de\space\ifcase\month\or + janeiro\or fevereiro\or mar\c{c}o\or abril\or maio\or junho\or + julho\or agosto\or setembro\or outubro\or novembro\or dezembro% + \fi + \space de\space\number\year}} +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\portugeshyphenmins} +% \changes{portuges-1.2g}{1995/06/04}{Added setting of hyphenmin +% values} +% Set correct values for |\lefthyphenmin| and |\righthyphenmin|. +% \changes{portuges-1.2m}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \changes{portuges-1.2o}{2001/02/16}{Set \cs{righthyphenmin} to 3 if +% not provided by the pattern file.} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\thr@@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasportuges} +% \changes{portuges-1.2g}{1995/06/04}{Added the definition of some +% \texttt{"} shorthands} +% \begin{macro}{\noextrasportuges} +% The macro |\extrasportuges| will perform all the extra +% definitions needed for the Portuguese language. The macro +% |\noextrasportuges| is used to cancel the actions of +% |\extrasportuges|. +% +% For Portuguese the \texttt{"} character is made active. This is +% done once, later on its definition may vary. Other languages in +% the same document may also use the \texttt{"} character for +% shorthands; we specify that the portuguese group of shorthands +% should be used. +% +% \begin{macrocode} +\initiate@active@char{"} +\@namedef{extras\CurrentOption}{\languageshorthands{portuges}} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \bbl@activate{"}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{portuges-1.2m}{1999/12/17}{Deactivate shorthands ouside of +% Basque} +% \begin{macrocode} +\addto\noextrasportuges{\bbl@deactivate{"}} +% \end{macrocode} +% First we define access to the guillemets for quotations, +% \changes{portuges-1.2k}{1997/04/03}{Removed empty groups after +% guillemot characters} +% \begin{macrocode} +\declare@shorthand{portuges}{"<}{% + \textormath{\guillemotleft}{\mbox{\guillemotleft}}} +\declare@shorthand{portuges}{">}{% + \textormath{\guillemotright}{\mbox{\guillemotright}}} +% \end{macrocode} +% then we define two shorthands to be able to specify hyphenation +% breakpoints that behave a little different from |\-|. +% \begin{macrocode} +\declare@shorthand{portuges}{"-}{\nobreak-\bbl@allowhyphens} +\declare@shorthand{portuges}{""}{\hskip\z@skip} +% \end{macrocode} +% And we want to have a shorthand for disabling a ligature. +% \begin{macrocode} +\declare@shorthand{portuges}{"|}{% + \textormath{\discretionary{-}{}{\kern.03em}}{}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\-} +% +% All that is left now is the redefinition of |\-|. The new version +% of |\-| should indicate an extra hyphenation position, while +% allowing other hyphenation positions to be generated +% automatically. The standard behaviour of \TeX\ in this respect is +% very unfortunate for languages such as Dutch and German, where +% long compound words are quite normal and all one needs is a means +% to indicate an extra hyphenation position on top of the ones that +% \TeX\ can generate from the hyphenation patterns. +% \begin{macrocode} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \babel@save\-} +\expandafter\addto\csname extras\CurrentOption\endcsname{% + \def\-{\allowhyphens\discretionary{-}{}{}\allowhyphens}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ord} +% \changes{portuges-1.2g}{1995/06/04}{Added macro} +% \begin{macro}{\ro} +% \changes{portuges-1.2g}{1995/06/04}{Added macro} +% \begin{macro}{\orda} +% \changes{portuges-1.2g}{1995/06/04}{Added macro} +% \begin{macro}{\ra} +% \changes{portuges-1.2g}{1995/06/04}{Added macro} +% We also provide an easy way to typeset ordinals, both in the male +% (|\ord| or |\ro|) and the female (|orda| or |\ra|) form. +% \begin{macrocode} +\def\ord{$^{\rm o}$} +\def\orda{$^{\rm a}$} +\let\ro\ord\let\ra\orda +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% 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{portuges-1.2j}{1996/11/03}{ow 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 diff --git a/Master/texmf-dist/source/generic/babel/portuges.ins b/Master/texmf-dist/source/generic/babel/portuges.ins new file mode 100644 index 00000000000..3889bc8f8b2 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/portuges.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{portuges.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{portuges.ldf}{\from{portuges.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/romanian.dtx b/Master/texmf-dist/source/generic/babel/romanian.dtx new file mode 100644 index 00000000000..88950570306 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/romanian.dtx @@ -0,0 +1,232 @@ +% \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{89} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{romanian.dtx} +%</dtx> +%<code>\ProvidesLanguage{romanian} +%\fi +%\ProvidesFile{romanian.dtx} + [2005/03/31 v1.2l Romanian support from the babel system] +%\iffalse +%% File `romanian.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Romanian Language Definition File +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Romanian language definition file. A contribution +% was made by Umstatter Horst (hhu at cernvm.cern.ch) and Robert +% Juhasz (robertj at uni-paderborn.de) +%<*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{romanian.dtx} +\end{document} +%</filedriver> +%\fi +% +% \GetFileInfo{romanian.dtx} +% +% \changes{romanian-1.0a}{1991/07/15}{Renamed babel.sty in babel.com} +% \changes{romanian-1.1}{1992/02/16}{Brought up-to-date with babel 3.2a} +% \changes{romanian-1.2}{1994/02/27}{Update for LaTeX2e} +% \changes{romanian-1.2d}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of babel.def} +% \changes{romanian-1.2e}{1995/05/25}{Updated for babel release 3.5} +% \changes{romanian-1.2h}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \section{The Romanian language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. A contribution was made by Umstatter Horst +% (\texttt{hhu@cernvm.cern.ch}).} defines all the +% language-specific macros for the Romanian language. +% +% For this language currently no special definitions are needed or +% available. +% +% \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{romanian-1.2h}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{romanian}\captionsromanian +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{romanian} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@romanian| to see whether we have to do something here. +% +% \changes{romanian-1.0b}{1991/10/29}{Removed use of +% \cs{@ifundefined}} +% \changes{romanian-1.1}{1992/02/16}{Added a warning when no +% hyphenation patterns were loaded.} +% \changes{romanian-1.2d}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@romanian\@undefined + \@nopatterns{Romanian} + \adddialect\l@romanian0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Romanian language. +% +% \begin{macro}{\captionsromanian} +% The macro |\captionsromanian| defines all strings used in the +% four standard documentclasses provided with \LaTeX. +% \changes{romanian-1.1}{1992/02/16}{Added \cs{seename}, \cs{alsoname} +% and \cs{prefacename}} +% \changes{romanian-1.1}{1992/02/17}{Translation errors found by +% Robert Juhasz fixed} +% \changes{romanian-1.1}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{romanian-1.2f}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{romanian-1.2g}{1995/11/10}{Added translation of `Proof'} +% \changes{romanian-1.2k}{2000/09/20}{Added \cs{glossaryname}} +% \changes{romanian-1.2l}{2003/06/10}{Added translation for Glossary} +% \begin{macrocode}ls +\addto\captionsromanian{% + \def\prefacename{Prefa\c{t}\u{a}}% + \def\refname{Bibliografie}% + \def\abstractname{Rezumat}% + \def\bibname{Bibliografie}% + \def\chaptername{Capitolul}% + \def\appendixname{Anexa}% + \def\contentsname{Cuprins}% + \def\listfigurename{List\u{a} de figuri}% + \def\listtablename{List\u{a} de tabele}% + \def\indexname{Glosar}% + \def\figurename{Figura}% % sau Plan\c{s}a + \def\tablename{Tabela}% + \def\partname{Partea}% + \def\enclname{Anex\u{a}}% % sau Anexe + \def\ccname{Copie}% + \def\headtoname{Pentru}% + \def\pagename{Pagina}% + \def\seename{Vezi}% + \def\alsoname{Vezi de asemenea}% + \def\proofname{Demonstra\c{t}ie} % + \def\glossaryname{Glosar}% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateromanian} +% The macro |\dateromanian| redefines the command |\today| to +% produce Romanian dates. +% \changes{romanian-1.1}{1992/02/17}{Translation errors found by Robert +% Juhasz fixed} +% \changes{romanian-1.2i}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{romanian-1.2i}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \begin{macrocode} +\def\dateromanian{% + \def\today{\number\day~\ifcase\month\or + ianuarie\or februarie\or martie\or aprilie\or mai\or + iunie\or iulie\or august\or septembrie\or octombrie\or + noiembrie\or decembrie\fi + \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasromanian} +% \begin{macro}{\noextrasromanian} +% The macro |\extrasromanian| will perform all the extra +% definitions needed for the Romanian language. The macro +% |\noextrasromanian| is used to cancel the actions of +% |\extrasromanian| For the moment these macros are empty but they +% are defined for compatibility with the other language definition +% files. +% +% \begin{macrocode} +\addto\extrasromanian{} +\addto\noextrasromanian{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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{romanian-1.2h}{1996/11/03}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{romanian} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/romanian.ins b/Master/texmf-dist/source/generic/babel/romanian.ins new file mode 100644 index 00000000000..749b4561ea7 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/romanian.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{romanian.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{romanian.ldf}{\from{romanian.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/russianb.dtx b/Master/texmf-dist/source/generic/babel/russianb.dtx new file mode 100644 index 00000000000..0cb758441aa --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/russianb.dtx @@ -0,0 +1,1238 @@ +% \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{1461} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{russianb.dtx} +%</dtx> +%<code>\ProvidesLanguage{russianb} + [2005/03/29 v1.1r Russian support from the babel system] +% +%% File `russianb.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Russianb Language Definition File +%% Copyright (C) 1995 - 2005 +%% by Olga Lapko cyrtug at mir.msk.su +%% Johannes Braams, TeXniek +% +%% Adapted to the new T2 and X2 Cyrillic encodings +%% by Vladimir Volovich TeX at vvv.vsu.ru +%% Werner Lemberg wl at gnu.org +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +%<*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}} +\newcommand\pkg[1]{\texttt{#1}} +\begin{document} + \DocInput{russianb.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{russianb.dtx} +% +% \changes{russianb-1.1c}{1996/07/11}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{russianb-1.1d}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning.} +% \changes{russianb-1.1k}{1999/08/19}{replaced all \cs{penalty}\cs{@M} +% with \cs{nobreak}} +% +% \section{The Russian language} +% +% The file \file{\filename}\footnote{The file described in this section +% has version number \fileversion\ and was last revised on \filedate. +% This file was initially derived from the original version of +% \file{german.sty}, which has some definitions for Russian. Later the +% definitions from \file{russian.sty} version 1.0b (for \LaTeX\ 2.09), +% \file{russian.sty} version v2.5c (for \LaTeXe) and \file{francais.sty} +% version 4.5c and \file{germanb.sty} version 2.5c were added.} defines +% all the language-specific macros for the Russian language. It needs the +% file \file{cyrcod} for success documentation with Russian encodings +% (see below). +% +% For this language the character |"| is made active. In +% table~\ref{tab:russian-quote} an overview is given of its purpose. +% +% \changes{russianb-1.1f}{1998/06/26}{% +% Added definitions of Cyrillic emdash stuff and thinspace} +% +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% \verb="|= & disable ligature at this position. \\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word. \\ +% |"---| & Cyrillic emdash in plain text. \\ +% |"--~| & Cyrillic emdash in compound names (surnames). \\ +% |"--*| & Cyrillic emdash for denoting direct speech. \\ +% |""| & like |"-|, but producing no hyphen sign +% (for compund words with hyphen, e.g.\ |x-""y| +% or some other signs as ``disable/enable''). \\ +% |"~| & for a compound word mark without a breakpoint. \\ +% |"=| & for a compound word mark with a breakpoint, allowing +% hyphenation in the composing words. \\ +% |",| & thinspace for initials with a breakpoint +% in following surname. \\ +% |"`| & for German left double quotes +% (looks like ,\kern-0.08em,). \\ +% |"'| & for German right double quotes (looks like ``). \\%'' +% |"<| & for French left double quotes (looks like $<\!\!<$). \\ +% |">| & for French right double quotes (looks like $>\!\!>$). \\ +% \end{tabular} +% \caption{The extra definitions made +% by \file{russianb}}\label{tab:russian-quote} +% \end{center} +% \end{table} +% +% The quotes in table~\ref{tab:russian-quote} can also be typeset by +% using the commands in table~\ref{tab:rmore-quote}. +% +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |\cdash---| & Cyrillic emdash in plain text. \\ +% |\cdash--~| & Cyrillic emdash in compound names (surnames). \\ +% |\cdash--*| & Cyrillic emdash for denoting direct speech. \\ +% |\glqq| & for German left double quotes +% (looks like ,\kern-0.08em,). \\ +% |\grqq| & for German right double quotes (looks like ``). \\%'' +% |\flqq| & for French left double quotes (looks like $<\!\!<$). \\ +% |\frqq| & for French right double quotes (looks like $>\!\!>$). \\ +% |\dq| & the original quotes character (|"|). \\ +% \end{tabular} +% \caption{More commands which produce quotes, defined +% by \babel}\label{tab:rmore-quote} +% \end{center} +% \end{table} +% +% The French quotes are also available as ligatures `|<<|' and `|>>|' in +% 8-bit Cyrillic font encodings (\texttt{LCY}, \texttt{X2}, \texttt{T2*}) +% and as `|<|' and `|>|' characters in 7-bit Cyrillic font encodings +% (\texttt{OT2} and \texttt{LWN}). +% +% The quotation marks traditionally used in Russian were borrowed from +% other languages (e.g., French and German) so they keep their original +% names. +% +% \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{russianb-1.1d}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \changes{russianb-1.1e}{1996/12/29}{Added closing brace to second +% argument of \cs{LdfInit}} +% \begin{macrocode} +%<*code> +\LdfInit{russian}{captionsrussian} +% \end{macrocode} +% +% When this file is read as an option, i.e., by the |\usepackage| +% command, \texttt{russianb} will be an `unknown' language, in which case +% we have to make it known. So we check for the existence of |\l@russian| +% to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\l@russian\@undefined + \@nopatterns{Russian} + \adddialect\l@russian0 +\fi +% \end{macrocode} +% +% \begin{macro}{\latinencoding} +% +% We need to know the encoding for text that is supposed to be which is +% active at the end of the \babel\ package. If the \pkg{fontenc} package +% is loaded later, then\ldots too bad! +% +% \begin{macrocode} +\let\latinencoding\cf@encoding +% \end{macrocode} +% +% \end{macro} +% +% The user may choose between different available Cyrillic +% encodings---e.g., \texttt{X2}, \texttt{LCY}, or \texttt{LWN}.\@ +% Hopefully, \texttt{X2} will eventually replace the two latter encodings +% (\texttt{LCY} and \texttt{LWN}).\@ If the user wants to use another +% font encoding than the default (\texttt{T2A}), he has to load the +% corresponding file \emph{before} \file{russianb.sty}. This may be done +% in the following way: +% +% \begin{verbatim} +% % override the default X2 encoding used in Babel +% \usepackage[LCY,OT1]{fontenc} +% \usepackage[english,russian]{babel} +% \end{verbatim} +% \unskip +% +% Note: for the Russian language, the \texttt{T2A} encoding is better than +% \texttt{X2}, because \texttt{X2} does not contain Latin letters, and +% users should be very careful to switch the language every time they +% want to typeset a Latin word inside a Russian phrase or vice versa. +% +% We parse the |\cdp@list| containing the encodings known to \LaTeX\ in +% the order they were loaded. We set the |\cyrillicencoding| to the +% \emph{last} loaded encoding in the list of supported Cyrillic +% encodings: \texttt{OT2}, \texttt{LWN}, \texttt{LCY}, \texttt{X2}, +% \texttt{T2C}, \texttt{T2B}, \texttt{T2A}, if any. +% +% \begin{macrocode} +\def\reserved@a#1#2{% + \edef\reserved@b{#1}% + \edef\reserved@c{#2}% + \ifx\reserved@b\reserved@c + \let\cyrillicencoding\reserved@c + \fi} +\def\cdp@elt#1#2#3#4{% + \reserved@a{#1}{OT2}% + \reserved@a{#1}{LWN}% + \reserved@a{#1}{LCY}% + \reserved@a{#1}{X2}% + \reserved@a{#1}{T2C}% + \reserved@a{#1}{T2B}% + \reserved@a{#1}{T2A}} +\cdp@list +% \end{macrocode} +% +% Now, if |\cyrillicencoding| is undefined, then the user did not load +% any of supported encodings. So, we have to set |\cyrillicencoding| to +% some default value. We test the presence of the encoding definition +% files in the order from less preferable to more preferable encodings. +% We use the lowercase names (i.e., \file{lcyenc.def} instead of +% \file{LCYenc.def}). +% +% \begin{macrocode} +\ifx\cyrillicencoding\undefined + \IfFileExists{ot2enc.def}{\def\cyrillicencoding{OT2}}\relax + \IfFileExists{lwnenc.def}{\def\cyrillicencoding{LWN}}\relax + \IfFileExists{lcyenc.def}{\def\cyrillicencoding{LCY}}\relax + \IfFileExists{x2enc.def}{\def\cyrillicencoding{X2}}\relax + \IfFileExists{t2cenc.def}{\def\cyrillicencoding{T2C}}\relax + \IfFileExists{t2benc.def}{\def\cyrillicencoding{T2B}}\relax + \IfFileExists{t2aenc.def}{\def\cyrillicencoding{T2A}}\relax +% \end{macrocode} +% +% If |\cyrillicencoding| is still undefined, then the user seems not to +% have a properly installed distribution. A fatal error. +% +% \begin{macrocode} + \ifx\cyrillicencoding\undefined + \PackageError{babel}% + {No Cyrillic encoding definition files were found}% + {Your installation is incomplete.\MessageBreak + You need at least one of the following files:\MessageBreak + \space\space + x2enc.def, t2aenc.def, t2benc.def, t2cenc.def,\MessageBreak + \space\space + lcyenc.def, lwnenc.def, ot2enc.def.}% + \else +% \end{macrocode} +% +% We avoid |\usepackage[\cyrillicencoding]{fontenc}| because we don't +% want to force the switch of |\encodingdefault|. +% +% \begin{macrocode} + \lowercase + \expandafter{\expandafter\input\cyrillicencoding enc.def\relax}% + \fi +\fi +% \end{macrocode} +% +% \begin{verbatim} +% \PackageInfo{babel} +% {Using `\cyrillicencoding' as a default Cyrillic encoding}% +% \end{verbatim} +% \unskip +% +% \begin{macrocode} +\DeclareRobustCommand{\Russian}{% + \fontencoding\cyrillicencoding\selectfont + \let\encodingdefault\cyrillicencoding + \expandafter\set@hyphenmins\russianhyphenmins + \language\l@russian}% +\DeclareRobustCommand{\English}{% + \fontencoding\latinencoding\selectfont + \let\encodingdefault\latinencoding + \expandafter\set@hyphenmins\englishhyphenmins + \language\l@english}% +\let\Rus\Russian +\let\Eng\English +\let\cyrillictext\Russian +\let\cyr\Russian +% \end{macrocode} +% +% Since the \texttt{X2} encoding does not contain Latin letters, we +% should make some redefinitions of \LaTeX\ macros which implicitly +% produce Latin letters. +% +% \begin{macrocode} +\expandafter\ifx\csname T@X2\endcsname\relax\else +% \end{macrocode} +% +% We put |\latinencoding| in braces to avoid problems with +% |\@alph| inside minipages (e.g., footnotes inside minipages) where +% |\@alph| is expanded and we get for example `|\fontencoding OT1|' +% (|\fontencoding| is robust). +% +% \begin{macrocode} + \def\@alph#1{{\fontencoding{\latinencoding}\selectfont + \ifcase#1\or + a\or b\or c\or d\or e\or f\or g\or h\or + i\or j\or k\or l\or m\or n\or o\or p\or + q\or r\or s\or t\or u\or v\or w\or x\or + y\or z\else\@ctrerr\fi}}% + \def\@Alph#1{{\fontencoding{\latinencoding}\selectfont + \ifcase#1\or + A\or B\or C\or D\or E\or F\or G\or H\or + I\or J\or K\or L\or M\or N\or O\or P\or + Q\or R\or S\or T\or U\or V\or W\or X\or + Y\or Z\else\@ctrerr\fi}}% +% \end{macrocode} +% +% Unfortunately, the commands |\AA| and |\aa| are not encoding dependent +% in \LaTeX\ (unlike e.g., |\oe| or |\DH|). They are defined as |\r{A}| and +% |\r{a}|. This leads to unpredictable results when the font encoding +% does not contain the Latin letters `A' and `a' (like \texttt{X2}). +% +% \begin{macrocode} + \DeclareTextSymbolDefault{\AA}{OT1} + \DeclareTextSymbolDefault{\aa}{OT1} + \DeclareTextCommand{\aa}{OT1}{\r a} + \DeclareTextCommand{\AA}{OT1}{\r A} +\fi +% \end{macrocode} +% +% The following block redefines the character class of uppercase Greek +% letters and some accents, if it is equal to 7 (variable family), to +% avoid incorrect results if the font encoding in some math family does +% not contain these characters in places of OT1 encoding. The code was +% taken from |amsmath.dtx|. See comments and further explanation there. +% +% \changes{russianb-1.1n}{2001/02/21}{As this code generates a +% textfont 7 error it is commented out for now.} +% \begin{macrocode} +% \begingroup\catcode`\"=12 +% % uppercase greek letters: +% \def\@tempa#1{\expandafter\@tempb\meaning#1\relax\relax\relax\relax +% "0000\@nil#1} +% \def\@tempb#1"#2#3#4#5#6\@nil#7{% +% \ifnum"#2=7 \count@"1#3#4#5\relax +% \ifnum\count@<"1000 \else \global\mathchardef#7="0#3#4#5\relax \fi +% \fi} +% \@tempa\Gamma\@tempa\Delta\@tempa\Theta\@tempa\Lambda\@tempa\Xi +% \@tempa\Pi\@tempa\Sigma\@tempa\Upsilon\@tempa\Phi\@tempa\Psi +% \@tempa\Omega +% % some accents: +% \def\@tempa#1#2\@nil{\def\@tempc{#1}}\def\@tempb{\mathaccent} +% \expandafter\@tempa\hat\relax\relax\@nil +% \ifx\@tempb\@tempc +% \def\@tempa#1\@nil{#1}% +% \def\@tempb#1{\afterassignment\@tempa\mathchardef\@tempc=}% +% \def\do#1"#2{} +% \def\@tempd#1{\expandafter\@tempb#1\@nil +% \ifnum\@tempc>"FFF +% \xdef#1{\mathaccent"\expandafter\do\meaning\@tempc\space}% +% \fi} +% \@tempd\hat\@tempd\check\@tempd\tilde\@tempd\acute\@tempd\grave +% \@tempd\dot\@tempd\ddot\@tempd\breve\@tempd\bar +% \fi +% \endgroup +% \end{macrocode} +% +% The user should use the \pkg{inputenc} package when any 8-bit Cyrillic +% font encoding is used, selecting one of the Cyrillic input encodings. +% We do not assume any default input encoding, so the user should +% explicitly call the \pkg{inputenc} package by |\usepackage{inputenc}|. +% We also removed |\AtBeginDocument|, so \pkg{inputenc} should be used +% before \babel. +% +% \changes{russianb-1.1l}{1999/08/27}{Made not using inputenc a +% warning instead of an error} +% \begin{macrocode} +\@ifpackageloaded{inputenc}{}{% + \def\reserved@a{LWN}% + \ifx\reserved@a\cyrillicencoding\else + \def\reserved@a{OT2}% + \ifx\reserved@a\cyrillicencoding\else + \PackageWarning{babel}% + {No input encoding specified for Russian language} + \fi\fi} +% \end{macrocode} +% +% Now we define two commands that offer the possibility to switch between +% Cyrillic and Roman encodings. +% +% \begin{macro}{\cyrillictext} +% \begin{macro}{\latintext} +% +% The command |\cyrillictext| will switch from Latin font encoding to the +% Cyrillic font encoding, the command |\latintext| switches back. This +% assumes that the `normal' font encoding is a Latin one. These commands +% are \emph{declarations}, for shorter peaces of text the commands +% |\textlatin| and |\textcyrillic| can be used. +% +% \changes{russianb-1.1o}{2003/10/12}{\cs{latintext} is already +% defined by the core of \babel} +% \begin{macrocode} +%\DeclareRobustCommand{\latintext}{% +% \fontencoding{\latinencoding}\selectfont +% \def\encodingdefault{\latinencoding}} +\let\lat\latintext +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% +% \begin{macro}{\textcyrillic} +% \begin{macro}{\textlatin} +% +% These commands take an argument which is then typeset using the +% requested font encoding. +% \changes{russianb-1.1o}{2003/10/12}{\cs{textlatin} already defined +% by the core of \babel} +% \begin{macrocode} +\DeclareTextFontCommand{\textcyrillic}{\cyrillictext} +%\DeclareTextFontCommand{\textlatin}{\latintext} +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% +% We make the \TeX +% \begin{macrocode} +%\ifx\ltxTeX\undefined\let\ltxTeX\TeX\fi +%\ProvideTextCommandDefault{\TeX}{\textlatin{\ltxTeX}} +% \end{macrocode} +% and \LaTeX\ logos encoding independent. +% \begin{macrocode} +%\ifx\ltxLaTeX\undefined\let\ltxLaTeX\LaTeX\fi +%\ProvideTextCommandDefault{\LaTeX}{\textlatin{\ltxLaTeX}} +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Russian language. +% +% \begin{macro}{\captionsrussian} +% +% The macro |\captionsrussian| defines all strings used in the four +% standard document classes provided with \LaTeX. The two commands |\cyr| +% and |\lat| activate Cyrillic resp.\ Latin encoding. +% +% \begin{macrocode} +\addto\captionsrussian{% +% FIXME: Where is the \prefacename used? + \def\prefacename{% + {\cyr\CYRP\cyrr\cyre\cyrd\cyri\cyrs\cyrl\cyro\cyrv\cyri\cyre}}% +% {\cyr\CYRV\cyrv\cyre\cyrd\cyre\cyrn\cyri\cyre}}% + \def\refname{% + {\cyr\CYRS\cyrp\cyri\cyrs\cyro\cyrk + \ \cyrl\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyrery}}% +% \def\refname{% +% {\cyr\CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra}}% + \def\abstractname{% + {\cyr\CYRA\cyrn\cyrn\cyro\cyrt\cyra\cyrc\cyri\cyrya}}% + \def\bibname{% + {\cyr\CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra}}% +% \def\bibname{% +% {\cyr\CYRB\cyri\cyrb\cyrl\cyri\cyro +% \cyrg\cyrr\cyra\cyrf\cyri\cyrya}}% +% for reports according to GOST: +% \def\bibname{% +% {\cyr\CYRS\cyrp\cyri\cyrs\cyro\cyrk +% \ \cyri\cyrs\cyrp\cyro\cyrl\cyrsftsn\cyrz\cyro\cyrv\cyra\cyrn +% \cyrn\cyrery\cyrh\ \cyri\cyrs\cyrt\cyro\cyrch\cyrn\cyri +% \cyrk\cyro\cyrv}}% + \def\chaptername{{\cyr\CYRG\cyrl\cyra\cyrv\cyra}}% +% \@ifundefined{chapter}{}{% +% \def\chaptername{{\cyr\CYRG\cyrl\cyra\cyrv\cyra}}}% + \def\appendixname{% + {\cyr\CYRP\cyrr\cyri\cyrl\cyro\cyrzh\cyre\cyrn\cyri\cyre}}% +% \end{macrocode} +% +% There are two names for the Table of Contents that are used in Russian +% publications. For books (and reports) the second variant is +% appropriate, but for proceedings the first variant is preferred: +% +% \begin{macrocode} + \@ifundefined{thechapter}% + {\def\contentsname{% + {\cyr\CYRS\cyro\cyrd\cyre\cyrr\cyrzh\cyra\cyrn\cyri\cyre}}}% + {\def\contentsname{% + {\cyr\CYRO\cyrg\cyrl\cyra\cyrv\cyrl\cyre\cyrn\cyri\cyre}}}% + \def\listfigurename{% + {\cyr\CYRS\cyrp\cyri\cyrs\cyro\cyrk + \ \cyri\cyrl\cyrl\cyryu\cyrs\cyrt\cyrr\cyra\cyrc\cyri\cyrishrt}}% +% \def\listfigurename{% +% {\cyr\CYRS\cyrp\cyri\cyrs\cyro\cyrk +% \ \cyrr\cyri\cyrs\cyru\cyrn\cyrk\cyro\cyrv}}% + \def\listtablename{% + {\cyr\CYRS\cyrp\cyri\cyrs\cyro\cyrk + \ \cyrt\cyra\cyrb\cyrl\cyri\cyrc}}% + \def\indexname{% + {\cyr\CYRP\cyrr\cyre\cyrd\cyrm\cyre\cyrt\cyrn\cyrery\cyrishrt + \ \cyru\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl\cyrsftsn}}% + \def\authorname{% + {\cyr\CYRI\cyrm\cyre\cyrn\cyrn\cyro\cyrishrt + \ \cyru\cyrk\cyra\cyrz\cyra\cyrt\cyre\cyrl\cyrsftsn}}% + \def\figurename{{\cyr\CYRR\cyri\cyrs.}}% + \def\tablename{{\cyr\CYRT\cyra\cyrb\cyrl\cyri\cyrc\cyra}}% + \def\partname{{\cyr\CYRCH\cyra\cyrs\cyrt\cyrsftsn}}% + \def\enclname{{\cyr\cyrv\cyrk\cyrl.}}% + \def\ccname{{\cyr\cyri\cyrs\cyrh.}}% +% \def\ccname{{\cyr\cyri\cyrz}}% + \def\headtoname{{\cyr\cyrv\cyrh.}}% +% \def\headtoname{{\cyr\cyrv}}% + \def\pagename{{\cyr\cyrs.}}% +% \def\pagename{{\cyr\cyrs\cyrt\cyrr.}}% + \def\seename{{\cyr\cyrs\cyrm.}}% + \def\alsoname{{\cyr\cyrs\cyrm.\ \cyrt\cyra\cyrk\cyrzh\cyre}}% +% \end{macrocode} +% \changes{russianb-1.1m}{2000/09/20}{Added \cs{glossaryname}} +% \begin{macrocode} + \def\proofname{{\cyr\CYRD\cyro\cyrk\cyra\cyrz\cyra\cyrt + \cyre\cyrl\cyrsftsn\cyrs\cyrt\cyrv\cyro}}% + \def\glossaryname{Glossary}% <-- Needs translation + } +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\daterussian} +% +% The macro |\daterussian| redefines the command |\today| to produce +% Russian dates. +% +% \begin{macrocode} +\def\daterussian{% + \def\today{\number\day~\ifcase\month\or + \cyrya\cyrn\cyrv\cyra\cyrr\cyrya\or + \cyrf\cyre\cyrv\cyrr\cyra\cyrl\cyrya\or + \cyrm\cyra\cyrr\cyrt\cyra\or + \cyra\cyrp\cyrr\cyre\cyrl\cyrya\or + \cyrm\cyra\cyrya\or + \cyri\cyryu\cyrn\cyrya\or + \cyri\cyryu\cyrl\cyrya\or + \cyra\cyrv\cyrg\cyru\cyrs\cyrt\cyra\or + \cyrs\cyre\cyrn\cyrt\cyrya\cyrb\cyrr\cyrya\or + \cyro\cyrk\cyrt\cyrya\cyrb\cyrr\cyrya\or + \cyrn\cyro\cyrya\cyrb\cyrr\cyrya\or + \cyrd\cyre\cyrk\cyra\cyrb\cyrr\cyrya\fi + \ \number\year~\cyrg.}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\extrasrussian} +% +% The macro |\extrasrussian| will perform all the extra definitions +% needed for the Russian language. The macro |\noextrasrussian| is used +% to cancel the actions of |\extrasrussian|. +% +% \changes{russianb-1.1b}{1996/02/20}{Added switch to \texttt{LWN} +% encoding} +% +% The first action we define is to switch on the selected Cyrillic +% encoding whenever we enter `russian'. +% +% \begin{macrocode} +\addto\extrasrussian{\cyrillictext} +% \end{macrocode} +% +% When the encoding definition file was processed by \LaTeX\ the current +% font encoding is stored in |\latinencoding|, assuming that \LaTeX\ uses +% \texttt{T1} or \texttt{OT1} as default. Therefore we switch back to +% |\latinencoding| whenever the Russian language is no longer `active'. +% +% \begin{macrocode} +\addto\noextrasrussian{\latintext} +% \end{macrocode} +% +% \begin{macro}{\verbatim@font} +% +% \changes{russianb-1.1b}{1996/02/20}{Added changing of +% \cs{verbatim@font}} +% +% In order to get both Latin and Cyrillic letters in verbatim text we +% need to change the definition of an internal \LaTeX\ command somewhat: +% +% \begin{macrocode} +%\def\verbatim@font{% +% \let\encodingdefault\latinencoding +% \normalfont\ttfamily +% \expandafter\def\csname\cyrillicencoding-cmd\endcsname##1##2{% +% \ifx\protect\@typeset@protect +% \begingroup\UseTextSymbol\cyrillicencoding##1\endgroup +% \else\noexpand##1\fi}} +% \end{macrocode} +% +% \end{macro} +% +% The category code of the characters `\texttt{:}', `\texttt{;}', +% `\texttt{!}', and `\texttt{?}' is made |\active| to insert a little +% white space. +% +% For Russian (as well as for German) the \texttt{"} character also is +% made active. +% +% Note: It is \emph{very} questionable whether the Russian typesetting +% tradition requires additional spacing before those punctuation signs. +% Therefore, we make the corresponding code optional. If you need it, +% then define the \texttt{frenchpunct} docstrip option in +% \file{babel.ins}. +% +% \changes{russianb-1.1f}{1998/06/26}{% +% Added a hook to insert space +% or not before `double punctuation' (from frenchb).} +% +% Borrowed from french. +% Some users dislike automatic insertion of a space before +% `double punctuation', and prefer to decide themselves whether a +% space should be added or not; so a hook |\NoAutoSpaceBeforeFDP| +% is provided: if this command is added (in file |russianb.cfg|, or +% anywhere in a document) |russianb| will respect your typing, and +% introduce a suitable space before `double punctuation' \emph{if +% and only if} a space is typed in the source file before those +% signs. +% +% The command |\AutoSpaceBeforeFDP| switches back to the +% default behavior of |russianb|. +% +% \changes{russianb-1.1a}{1995/03/07}{Use the new mechanism for dealing +% with active characters} +% +% \begin{macrocode} +%<*frenchpunct> +\initiate@active@char{:} +\initiate@active@char{;} +%</frenchpunct> +%<*frenchpunct|spanishligs> +\initiate@active@char{!} +\initiate@active@char{?} +%</frenchpunct|spanishligs> +\initiate@active@char{"} +% \end{macrocode} +% +% The code above is necessary because we need extra active characters. +% The character |"| is used as indicated in +% table~\ref{tab:russian-quote}. +% +% We specify that the Russian group of shorthands should be used. +% +% \begin{macrocode} +\addto\extrasrussian{\languageshorthands{russian}} +% \end{macrocode} +% +% These characters are `turned on' once, later their definition may +% vary. +% +% \begin{macrocode} +\addto\extrasrussian{% +%<frenchpunct> \bbl@activate{:}\bbl@activate{;}% +%<frenchpunct|spanishligs> \bbl@activate{!}\bbl@activate{?}% + \bbl@activate{"}} +\addto\noextrasrussian{% +%<frenchpunct> \bbl@deactivate{:}\bbl@deactivate{;}% +%<frenchpunct|spanishligs> \bbl@deactivate{!}\bbl@deactivate{?}% + \bbl@deactivate{"}} +% \end{macrocode} +% +% The \texttt{X2} and \texttt{T2*} encodings do not contain +% |spanish_shriek| and |spanish_query| symbols; as a consequence, the +% ligatures `|?`|' and `|!`|' do not work with them (these characters are +% useless for Cyrillic texts anyway). But we define the shorthands to +% emulate these ligatures (optionally). +% +% We do not use |\latinencoding| here (but instead explicitly use +% \texttt{OT1}) because the user may choose \texttt{T2A} to be the primary +% encoding, but it does not contain these characters. +% +% \begin{macrocode} +%<*spanishligs> +\declare@shorthand{russian}{?`}{\UseTextSymbol{OT1}\textquestiondown} +\declare@shorthand{russian}{!`}{\UseTextSymbol{OT1}\textexclamdown} +%</spanishligs> +% \end{macrocode} +% +% \begin{macro}{\russian@sh@;@} +% \begin{macro}{\russian@sh@:@} +% \begin{macro}{\russian@sh@!@} +% \begin{macro}{\russian@sh@?@} +% +% We have to reduce the amount of white space before \texttt{;}, +% \texttt{:} and \texttt{!}. This should only happen in horizontal mode, +% hence the test with |\ifhmode|. +% +% \changes{russianb-1.1a}{1995/07/04}{Use new \cs{DefineActiveNoArg}} +% \changes{russianb-1.1a}{1995/07/04}{Use the more general mechanism of +% \cs{declare@shorthand}} +% \changes{russianb-1.1b}{1996/02/08}{Updated to reflect the latest +% french definitions} +% +% \begin{macrocode} +%<*frenchpunct> +\declare@shorthand{russian}{;}{% + \ifhmode +% \end{macrocode} +% +% \changes{russianb-1.1f}{1998/06/26}{% +% \thinspace changed to kern.1em (space bit thinner)} +% \changes{russianb-1.1f}{1998/06/26}{% +% Added a hook to insert space +% or not before `double punctuation' (from frenchb).} +% +% In horizontal mode we check for the presence of a `space', `unskip' if +% it exists and place a |0.1em| kerning. +% +% \begin{macrocode} + \ifdim\lastskip>\z@ + \unskip\nobreak\kern.1em + \else +% \end{macrocode} +% If no space has been typed, we add |\FDP@thinspace| +% which will be +% defined, up to the user's wishes, as an automatic added +% thinspace, or as |\@empty|. +% +% \begin{macrocode} + \FDP@thinspace + \fi + \fi +% \end{macrocode} +% +% Now we can insert a `|;|' character. +% +% \begin{macrocode} + \string;} +% \end{macrocode} +% +% The other definitions are very similar. +% +% \begin{macrocode} +\declare@shorthand{russian}{:}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\nobreak\kern.1em + \else + \FDP@thinspace + \fi + \fi + \string:} +% \end{macrocode} +% +% \begin{macrocode} +\declare@shorthand{russian}{!}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\nobreak\kern.1em + \else + \FDP@thinspace + \fi + \fi + \string!} +% \end{macrocode} +% +% \begin{macrocode} +\declare@shorthand{russian}{?}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\nobreak\kern.1em + \else + \FDP@thinspace + \fi + \fi + \string?} +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \changes{russianb-1.1f}{1998/06/26}{% +% Added a hook to insert space +% or not before `double punctuation' (from frenchb).} +% \begin{macro}{\AutoSpaceBeforeFDP} +% \begin{macro}{\NoAutoSpaceBeforeFDP} +% \begin{macro}{\FDP@thinspace} +% |\FDP@thinspace| is defined as unbreakable +% spaces if |\AutoSpaceBeforeFDP| is activated or as |\@empty| if +% |\NoAutoSpaceBeforeFDP| is in use. +% The default is |\AutoSpaceBeforeFDP|. +% \begin{macrocode} +\def\AutoSpaceBeforeFDP{% + \def\FDP@thinspace{\nobreak\kern.1em}} +\def\NoAutoSpaceBeforeFDP{\let\FDP@thinspace\@empty} +\AutoSpaceBeforeFDP +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\FDPon} +% \begin{macro}{\FDPoff} +% \changes{russianb-1.1f}{1998/06/26}{One more chance to avoid +% spaces before double punctuation} +% +% The next macros allow to switch on/off activeness of double +% punctuation signs. +% +% \begin{macrocode} +\def\FDPon{\bbl@activate{:}% + \bbl@activate{;}% + \bbl@activate{?}% + \bbl@activate{!}} +\def\FDPoff{\bbl@deactivate{:}% + \bbl@deactivate{;}% + \bbl@deactivate{?}% + \bbl@deactivate{!}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\system@sh@:@} +% \begin{macro}{\system@sh@!@} +% \begin{macro}{\system@sh@?@} +% \begin{macro}{\system@sh@;@} +% +% \changes{russianb-1.1a}{1995/07/04}{Added system level shorthands} +% +% When the active characters appear in an environment where their +% Russian behaviour is not wanted they should give an `expected' +% result. Therefore we define shorthands at system level as well. +% +% \begin{macrocode} +\declare@shorthand{system}{:}{\string:} +\declare@shorthand{system}{;}{\string;} +%</frenchpunct> +%<*frenchpunct&!spanishligs> +\declare@shorthand{system}{!}{\string!} +\declare@shorthand{system}{?}{\string?} +%</frenchpunct&!spanishligs> +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% To be able to define the function of `|"|', we first define a couple of +% `support' macros. +% +% \begin{macro}{\dq} +% +% We save the original double quote character in |\dq| to keep it +% available, the math accent |\"| can now be typed as `|"|'. +% +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\reserved@a{\endgroup + \def\@SS{\mathchar"7019 } + \def\dq{"}} +\reserved@a +% \end{macrocode} +% +% \end{macro} +% +% \changes{russianb-1.1a}{1995/07/04}{Use \cs{ddot} instead of +% \cs{@MATHUMLAUT}} +% +% Now we can define the doublequote macros: german and french quotes. +% We use definitions of these quotes made in babel.sty. +% The french quotes are contained in the \texttt{T2*} encodings. +% +% \begin{macrocode} +\declare@shorthand{russian}{"`}{\glqq} +\declare@shorthand{russian}{"'}{\grqq} +\declare@shorthand{russian}{"<}{\flqq} +\declare@shorthand{russian}{">}{\frqq} +% \end{macrocode} +% +% Some additional commands: +% +% \begin{macrocode} +\declare@shorthand{russian}{""}{\hskip\z@skip} +\declare@shorthand{russian}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{russian}{"=}{\nobreak-\hskip\z@skip} +\declare@shorthand{russian}{"|}{% + \textormath{\nobreak\discretionary{-}{}{\kern.03em}% + \allowhyphens}{}} +% \end{macrocode} +% +% The next two macros for |"-| and |"---| are somewhat different. +% We must check whether the second token is a hyphen character: +% +% \begin{macrocode} +\declare@shorthand{russian}{"-}{% +% \end{macrocode} +% +% If the next token is `|-|', we typeset an emdash, otherwise a hyphen +% sign: +% +% \begin{macrocode} + \def\russian@sh@tmp{% + \if\russian@sh@next-\expandafter\russian@sh@emdash + \else\expandafter\russian@sh@hyphen\fi + }% +% \end{macrocode} +% +% \TeX\ looks for the next token after the first `|-|': the meaning of +% this token is written to |\russian@sh@next| and |\russian@sh@tmp| is +% called. +% +% \begin{macrocode} + \futurelet\russian@sh@next\russian@sh@tmp} +% \end{macrocode} +% +% Here are the definitions of hyphen and emdash. First the hyphen: +% +% \begin{macrocode} +\def\russian@sh@hyphen{% + \nobreak\-\bbl@allowhyphens} +% \end{macrocode} +% +% \changes{russianb-1.1f}{1998/06/26}{% +% Rearranging of cyrillic emdash stuff} +% +% For the emdash definition, there are the two parameters: we must `eat' +% two last hyphen signs of our emdash\dots : +% \begin{macrocode} +\def\russian@sh@emdash#1#2{\cdash-#1#2} +% \end{macrocode} +% \begin{macro}{\cdash} +% \dots\ these two parameters are useful for another macro: +% |\cdash|: +% \begin{macrocode} +%\ifx\cdash\undefined % should be defined earlier +\def\cdash#1#2#3{\def\tempx@{#3}% +\def\tempa@{-}\def\tempb@{~}\def\tempc@{*}% + \ifx\tempx@\tempa@\@Acdash\else + \ifx\tempx@\tempb@\@Bcdash\else + \ifx\tempx@\tempc@\@Ccdash\else + \errmessage{Wrong usage of cdash}\fi\fi\fi} +% \end{macrocode} +% second parameter (or third for |\cdash|) shows what kind of emdash +% to create in next step +% \begin{center} +% \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}} +% |"---| & ordinary (plain) Cyrillic emdash inside text: +% an unbreakable thinspace will be inserted before only in case of +% a \textit{space} before the dash (it is necessary for dashes after +% display maths formulae: there could be lists, enumerations etc.\ +% started with ``--- where $a$ is ...'' i.e., the dash starts a line). +% (Firstly there were planned rather soft rules for user: he may put +% a space before the dash or not. But it is difficult to place this +% thinspace automatically, i.e., by checking modes because after +% display formulae \TeX{} uses horizontal mode. Maybe there is a +% misunderstanding? Maybe there is another way?) After a dash +% a breakable thinspace is always placed; \\ +% \end{tabular} +% \end{center} +% \begin{macrocode} +% What is more grammatically: .2em or .2\fontdimen6\font ? +\def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi + \cyrdash\hskip.2em\ignorespaces}% +% \end{macrocode} +% \begin{center} +% \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}} +% |"--~| & emdash in compound names or surnames +% (like Mendeleev--Klapeiron); this dash has no space characters +% around; after the dash some space is added +% |\exhyphenalty| \\ +% \end{tabular} +% \end{center} +% \begin{macrocode} +\def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi + \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}% +% \end{macrocode} +% \begin{center} +% \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}} +% |"--*| & for denoting direct speech (a space like |\enskip| +% must follow the emdash); \\ +% \end{tabular} +% \end{center} +% \begin{macrocode} +\def\@Ccdash{\leavevmode + \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}% +%\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\cyrdash} +% Finally the macro for ``body'' of the Cyrillic emdash. +% The |\cyrdash| macro will be defined in case this macro hasn't been +% defined in a fontenc file. For T2* fonts, cyrdash will be placed in +% the code of the English emdash thus it uses ligature |---|. +% \begin{macrocode} +% Is there an IF necessary? +\ifx\cyrdash\undefined + \def\cyrdash{\hbox to.8em{--\hss--}} +\fi +% \end{macrocode} +% \end{macro} +% +% \changes{russianb-1.1f}{1998/06/26}{% +% Add macro for thinspace between initials} +% +% Here a really new macro---to place thinspace between initials. +% This macro used instead of |\,| allows hyphenation in the following +% surname. +% +% \changes{russianb-1.1r}{2004/11/21}{Removed the commanet character +% before the next code line, see R3669} +% \begin{macrocode} +\declare@shorthand{russian}{",}{\nobreak\hskip.2em\ignorespaces} +% \end{macrocode} +% +% \changes{russianb-1.1f}{1998/06/26}{% +% Add commands for switch on/off +% doublequote activeness. Borrowed from german.} +% +% \begin{macro}{\mdqon} +% \begin{macro}{\mdqoff} +% All that's left to do now is to define a couple of commands +% for |"|. +% \begin{macrocode} +\def\mdqon{\bbl@activate{"}} +\def\mdqoff{\bbl@deactivate{"}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The Russian hyphenation patterns can be used with |\lefthyphenmin| +% and |\righthyphenmin| set to~2. +% +% \changes{russianb-1.1a}{1995/07/04}{use \cs{russianhyphenmins} to +% store the correct values} +% \changes{russianb-1.1m}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% temporary hack: +\ifx\englishhyphenmins\undefined + \def\englishhyphenmins{\tw@\thr@@} +\fi +% \end{macrocode} +% +% Now the action |\extrasrussian| has to execute is to make sure that the +% command |\frenchspacing| is in effect. If this is not the case the +% execution of |\noextrasrussian| will switch it off again. +% +% \begin{macrocode} +\addto\extrasrussian{\bbl@frenchspacing} +\addto\noextrasrussian{\bbl@nonfrenchspacing} +% \end{macrocode} +% +% \end{macro} +% +% Next we add a new enumeration style for Russian manuscripts with +% Cyrillic letters, and later on we define some math operator names in +% accordance with Russian typesetting traditions. +% +% \begin{macro}{\Asbuk} +% +% We begin by defining |\Asbuk| which works like |\Alph|, but produces +% (uppercase) Cyrillic letters intead of Latin ones. The letters YO, +% ISHRT, HRDSN, ERY, and SFTSN are skipped, as usual for such +% enumeration. +% +% \begin{macrocode} +\def\Asbuk#1{\expandafter\@Asbuk\csname c@#1\endcsname} +\def\@Asbuk#1{\ifcase#1\or + \CYRA\or\CYRB\or\CYRV\or\CYRG\or\CYRD\or\CYRE\or\CYRZH\or + \CYRZ\or\CYRI\or\CYRK\or\CYRL\or\CYRM\or\CYRN\or\CYRO\or + \CYRP\or\CYRR\or\CYRS\or\CYRT\or\CYRU\or\CYRF\or\CYRH\or + \CYRC\or\CYRCH\or\CYRSH\or\CYRSHCH\or\CYREREV\or\CYRYU\or + \CYRYA\else\@ctrerr\fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\asbuk} +% +% The macro |\asbuk| is similar to |\alph|; it produces lowercase +% Russian letters. +% +% \begin{macrocode} +\def\asbuk#1{\expandafter\@asbuk\csname c@#1\endcsname} +\def\@asbuk#1{\ifcase#1\or + \cyra\or\cyrb\or\cyrv\or\cyrg\or\cyrd\or\cyre\or\cyrzh\or + \cyrz\or\cyri\or\cyrk\or\cyrl\or\cyrm\or\cyrn\or\cyro\or + \cyrp\or\cyrr\or\cyrs\or\cyrt\or\cyru\or\cyrf\or\cyrh\or + \cyrc\or\cyrch\or\cyrsh\or\cyrshch\or\cyrerev\or\cyryu\or + \cyrya\else\@ctrerr\fi} +% \end{macrocode} +% +% \end{macro} +% +% Set up default Cyrillic math alphabets. To use Cyrillic letters in +% math mode user should load the |textmath| package \emph{before} +% loading fontenc package (or \babel). Note, that by default Cyrillic +% letters are taken from upright font in math mode (unlike Latin +% letters). +% \begin{macrocode} +%\RequirePackage{textmath} +\@ifundefined{sym\cyrillicencoding letters}{}{% +\SetSymbolFont{\cyrillicencoding letters}{bold}\cyrillicencoding + \rmdefault\bfdefault\updefault +\DeclareSymbolFontAlphabet\cyrmathrm{\cyrillicencoding letters} +% \end{macrocode} +% And we need a few commands to be able to switch to different variants. +% \begin{macrocode} +\DeclareMathAlphabet\cyrmathbf\cyrillicencoding + \rmdefault\bfdefault\updefault +\DeclareMathAlphabet\cyrmathsf\cyrillicencoding + \sfdefault\mddefault\updefault +\DeclareMathAlphabet\cyrmathit\cyrillicencoding + \rmdefault\mddefault\itdefault +\DeclareMathAlphabet\cyrmathtt\cyrillicencoding + \ttdefault\mddefault\updefault +% +\SetMathAlphabet\cyrmathsf{bold}\cyrillicencoding + \sfdefault\bfdefault\updefault +\SetMathAlphabet\cyrmathit{bold}\cyrillicencoding + \rmdefault\bfdefault\itdefault +} +% \end{macrocode} +% +% Some math functions in Russian math books have other names: e.g., +% \texttt{sinh} in Russian is written as \texttt{sh} etc. So we define a +% number of new math operators. +% +% |\sinh|: +% \begin{macrocode} +\def\sh{\mathop{\operator@font sh}\nolimits} +% \end{macrocode} +% |\cosh|: +% \begin{macrocode} +\def\ch{\mathop{\operator@font ch}\nolimits} +% \end{macrocode} +% |\tan|: +% \begin{macrocode} +\def\tg{\mathop{\operator@font tg}\nolimits} +% \end{macrocode} +% |\arctan|: +% \begin{macrocode} +\def\arctg{\mathop{\operator@font arctg}\nolimits} +% \end{macrocode} +% arcctg: +% \begin{macrocode} +\def\arcctg{\mathop{\operator@font arcctg}\nolimits} +% \end{macrocode} +% The following macro conflicts with |\th| defined in Latin~1 encoding: +% +% |\tanh|: +% \changes{russianb-1.1q}{2004/05/21}{Change definition of \cs{th} +% only for this language} +% \begin{macrocode} +\addto\extrasrussian{% + \babel@save{\th}% + \let\ltx@th\th + \def\th{\textormath{\ltx@th}% + {\mathop{\operator@font th}\nolimits}}% + } +% \end{macrocode} +% |\cot|: +% \begin{macrocode} +\def\ctg{\mathop{\operator@font ctg}\nolimits} +% \end{macrocode} +% |\coth|: +% \begin{macrocode} +\def\cth{\mathop{\operator@font cth}\nolimits} +% \end{macrocode} +% |\csc|: +% \begin{macrocode} +\def\cosec{\mathop{\operator@font cosec}\nolimits} +% \end{macrocode} +% +% And finally some other Russian mathematical symbols: +% \begin{macrocode} +\def\Prob{\mathop{\kern\z@\mathsf{P}}\nolimits} +\def\Variance{\mathop{\kern\z@\mathsf{D}}\nolimits} +\def\nod{\mathop{\cyrmathrm{\cyrn.\cyro.\cyrd.}}\nolimits} +\def\nok{\mathop{\cyrmathrm{\cyrn.\cyro.\cyrk.}}\nolimits} +\def\NOD{\mathop{\cyrmathrm{\CYRN\CYRO\CYRD}}\nolimits} +\def\NOK{\mathop{\cyrmathrm{\CYRN\CYRO\CYRK}}\nolimits} +\def\Proj{\mathop{\cyrmathrm{\CYRP\cyrr}}\nolimits} +% \end{macrocode} +% +% This is for compatibility with older Russian packages. +% \begin{macrocode} +\DeclareRobustCommand{\No}{% + \ifmmode{\nfss@text{\textnumero}}\else\textnumero\fi} +% \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{russianb-1.1d}{1996/11/03}{Now use \cs{ldf@finish} to wrap +% up} +% +% \begin{macrocode} +\ldf@finish{russian} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/russianb.ins b/Master/texmf-dist/source/generic/babel/russianb.ins new file mode 100644 index 00000000000..607d861173f --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/russianb.ins @@ -0,0 +1,147 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/03/13} +\def\batchfile{russianb.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble + +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\usedir{tex/generic/babel} +\keepsilent + +\usepreamble\mainpreamble + +\generate{\file{russianb.ldf}{\from{russianb.dtx}{code}}} + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.fd} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/samin.dtx b/Master/texmf-dist/source/generic/babel/samin.dtx new file mode 100644 index 00000000000..b3d951204c7 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/samin.dtx @@ -0,0 +1,232 @@ +% \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{120} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{samin.dtx} +%</dtx> +%<code>\ProvidesLanguage{samin} +%\fi +%\ProvidesFile{samin.dtx} + [2004/02/20 v1.0c North Sami support from the babel system] +%\iffalse +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 -- 2004 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source code for +% the North Sami language definition file. +%<*filedriver> +\documentclass{ltxdoc} +\newcommand*{\TeXhax}{\TeX hax} +\newcommand*{\babel}{\textsf{babel}} +\newcommand*{\langvar}{$\langle \mathit lang \rangle$} +\newcommand*{\note}[1]{} +\newcommand*{\Lopt}[1]{\textsf{#1}} +\newcommand*{\file}[1]{\texttt{#1}} +\begin{document} + \DocInput{samin.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{samin.dtx} +% +% \section{The North Sami language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. It was written by Regnor Jernsletten, +% (\texttt{Regnor.Jernsletten@sami.uit.no}) or +% (\texttt{Regnor.Jernsletten@eunet.no}).} +% defines all the language definition macros for the North Sami language. +% +% Several Sami dialects/languages are spoken in Finland, Norway, Sweden +% and on the Kola Peninsula (Russia). The alphabets differ, so there +% will eventually be a need for more \texttt{.dtx} files for e.g. Lule +% and South Sami. Hence the name \file{samin.dtx} (and not +% \file{sami.dtx} or the like) in the North Sami case. +% +% There are currently no hyphenation patterns available for the North +% Sami language, but you might consider using the patterns for Finnish +% (\file{fi8hyph.tex}), Norwegian (\file{nohyph.tex}) or Swedish +% (\file{sehyph.tex}). Add a line for the \texttt{samin} language to +% the \file{language.dat} file, and rebuild the \LaTeX\ format file. +% See the documentation for your \LaTeX\ distribution. +% +% A note on writing North Sami in \LaTeX: The TI encoding and EC fonts +% do not include the T WITH STROKE letter, which you will need a +% workaround for. My suggestion is to place the lines\\ +% |\newcommand{\tx}{\mbox{t\hspace{-.35em}-}}|\\ +% |\newcommand{\txx}{\mbox{T\hspace{-.5em}-}}|\\ +% in the preamble of your documents. They define the commands\\ +% |\txx{}| for LATIN CAPITAL LETTER T WITH STROKE and \\ +% |\tx{}| for LATIN SMALL LETTER T WITH STROKE. +% +% \subsection{The code of \file{samin.dtx}} +% +% \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. +% \begin{macrocode} +%<*code> +\LdfInit{samin}{captionssamin} +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{samin} could be an `unknown' language in +% which case we have to make it known. So we check for the +% existence of |\l@samin| to see whether we have to do +% something here. +% +% \begin{macrocode} +\ifx\undefined\l@samin + \@nopatterns{Samin} + \adddialect\l@samin0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the North Sami language. +% +% \begin{macro}{\saminhyphenmins} +% This macro is used to store the correct values of the hyphenation +% parameters |\lefthyphenmin| and |\righthyphenmin|. +% \changes{samin-1.0b}{2000/09/26}{use \cs{providehyphenmins}} +% \begin{macrocode} +\providehyphenmins{samin}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\captionssamin} +% The macro |\captionssamin| defines all strings used in the +% four standard documentclasses provided with \LaTeX. +% \changes{samin-1.0b}{2000/09/26}{Added \cs{glossaryname}} +% \changes{samin-1.0c}{2000/10/04}{Provided the translation for +% glossary} +% \begin{macrocode} +\def\captionssamin{% + \def\prefacename{Ovdas\'atni}% + \def\refname{\v Cujuhusat}% + \def\abstractname{\v Coahkk\'aigeassu}% + \def\bibname{Girjj\'ala\v svuohta}% + \def\chaptername{Kapihttal}% + \def\appendixname{\v Cuovus}% + \def\contentsname{Sisdoallu}% + \def\listfigurename{Govvosat}% + \def\listtablename{Tabeallat}% + \def\indexname{Registtar}% + \def\figurename{Govus}% + \def\tablename{Tabealla}% + \def\partname{Oassi}% + \def\enclname{Mielddus}% + \def\ccname{Kopia s\'addejuvvon}% + \def\headtoname{Vuost\'aiv\'aldi}% + \def\pagename{Siidu}% + \def\seename{geah\v ca}% + \def\alsoname{geah\v ca maidd\'ai}% + \def\proofname{Duo\dj{}a\v stus}% + \def\glossaryname{S\'atnelistu}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datesamin} +% The macro |\datesamin| redefines the command |\today| to +% produce North Sami dates. +% \begin{macrocode} +\def\datesamin{% + \def\today{\ifcase\month\or + o\dj{}\dj{}ajagem\'anu\or + guovvam\'anu\or + njuk\v cam\'anu\or + cuo\ng{}om\'anu\or + miessem\'anu\or + geassem\'anu\or + suoidnem\'anu\or + borgem\'anu\or + \v cak\v cam\'anu\or + golggotm\'anu\or + sk\'abmam\'anu\or + juovlam\'anu\fi + \space\number\day.~b.\space\number\year}% +}% +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\extrassamin} +% \begin{macro}{\noextrassamin} +% The macro |\extrassamin| will perform all the extra +% definitions needed for the North Sami language. The macro +% |\noextrassamin| is used to cancel the actions of +% |\extrassamin|. For the moment these macros are empty but +% they are defined for compatibility with the other +% language definition files. +% +% \begin{macrocode} +\addto\extrassamin{} +\addto\noextrassamin{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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. +% \begin{macrocode} +\ldf@finish{samin} +%</code> +% \end{macrocode} +% +% \Finale +%\endinput +%% \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 \~} +%% diff --git a/Master/texmf-dist/source/generic/babel/samin.ins b/Master/texmf-dist/source/generic/babel/samin.ins new file mode 100644 index 00000000000..e94cf6f90ab --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/samin.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{2000/09/26} +\def\batchfile{samin.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{samin.ldf}{\from{samin.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/source/generic/babel/scottish.dtx b/Master/texmf-dist/source/generic/babel/scottish.dtx new file mode 100644 index 00000000000..82613e5cd0b --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/scottish.dtx @@ -0,0 +1,209 @@ +% \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{95} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{scottish.dtx} +%</dtx> +%<code>\ProvidesLanguage{scottish} +%\fi +%\ProvidesFile{scottish.dtx} + [2005/03/31 v1.0g Scottish support from the babel system] +%\iffalse +%% File `scottish.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 -- 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Scottish language definition file. +% +% The Gaidhlig or Scottish Gaelic terms were provided by Fraser +% Grant \texttt{FRASER@CERNVM}. +%<*filedriver> +\documentclass{ltxdoc} +\newcommand*{\TeXhax}{\TeX hax} +\newcommand*{\babel}{\textsf{babel}} +\newcommand*{\langvar}{$\langle \mathit lang \rangle$} +\newcommand*{\note}[1]{} +\newcommand*{\Lopt}[1]{\textsf{#1}} +\newcommand*{\file}[1]{\texttt{#1}} +\begin{document} + \DocInput{scottish.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{scottish.dtx} +% +% \changes{scottish-1.0b}{1995/06/14}{Corrected typos (PR1652)} +% \changes{scottish-1.0d}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \section{The Scottish language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. A contribution was made by Fraser Grant +% (\texttt{FRASER@CERNVM}).} defines all the language definition +% macros for the Scottish language. +% +% For this language currently no special definitions are needed or +% available. +% +% \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{scottish-1.0d}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{scottish}\captionsscottish +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{scottish} could be an `unknown' language in +% which case we have to make it known. So we check for the +% existence of |\l@scottish| to see whether we have to do something +% here. +% +% \begin{macrocode} +\ifx\l@scottish\@undefined + \@nopatterns{scottish} + \adddialect\l@scottish0\fi +% \end{macrocode} +% The next step consists of defining commands to switch to (and +% from) the Scottish language. +% +% \begin{macro}{\captionsscottish} +% The macro |\captionsscottish| defines all strings used in the +% four standard documentclasses provided with \LaTeX. +% \changes{scottish-1.0c}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{scottish-1.0g}{2000/09/20}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionsscottish{% + \def\prefacename{Preface}% <-- needs translation + \def\refname{Iomraidh}% + \def\abstractname{Br\`{\i}gh}% + \def\bibname{Leabhraichean}% + \def\chaptername{Caibideil}% + \def\appendixname{Ath-sgr`{\i}obhadh}% + \def\contentsname{Cl\`ar-obrach}% + \def\listfigurename{Liosta Dhealbh }% + \def\listtablename{Liosta Chl\`ar}% + \def\indexname{Cl\`ar-innse}% + \def\figurename{Dealbh}% + \def\tablename{Cl\`ar}% + \def\partname{Cuid}% + \def\enclname{a-staigh}% + \def\ccname{lethbhreac gu}% + \def\headtoname{gu}% + \def\pagename{t.d.}% abrv. `taobh duilleag' + \def\seename{see}% <-- needs translation + \def\alsoname{see also}% <-- needs translation + \def\proofname{Proof}% <-- needs translation + \def\glossaryname{Glossary}% <-- Needs translation +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datescottish} +% The macro |\datescottish| redefines the command |\today| to +% produce Scottish dates. +% \changes{scottish-1.0e}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{scottish-1.0e}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \begin{macrocode} +\def\datescottish{% + \def\today{% + \number\day\space \ifcase\month\or + am Faoilteach\or an Gearran\or am M\`art\or an Giblean\or + an C\`eitean\or an t-\`Og mhios\or an t-Iuchar\or + L\`unasdal\or an Sultuine\or an D\`amhar\or + an t-Samhainn\or an Dubhlachd\fi + \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasscottish} +% \begin{macro}{\noextrasscottish} +% The macro |\extrasscottish| will perform all the extra +% definitions needed for the Scottish language. The macro +% |\noextrasscottish| is used to cancel the actions of +% |\extrasscottish|. For the moment these macros are empty but +% they are defined for compatibility with the other language +% definition files. +% +% \begin{macrocode} +\addto\extrasscottish{} +\addto\noextrasscottish{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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{scottish-1.0d}{1996/11/03}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{scottish} +%</code> +% \end{macrocode} +% +% \Finale +%\endinput +%% \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 \~} +%% diff --git a/Master/texmf-dist/source/generic/babel/scottish.ins b/Master/texmf-dist/source/generic/babel/scottish.ins new file mode 100644 index 00000000000..5937bb1c446 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/scottish.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{scottish.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{scottish.ldf}{\from{scottish.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/serbian.dtx b/Master/texmf-dist/source/generic/babel/serbian.dtx new file mode 100644 index 00000000000..60179088835 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/serbian.dtx @@ -0,0 +1,312 @@ +% \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{263} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{serbian.dtx} +%</dtx> +%<code>\ProvidesLanguage{serbian} +%\fi +%\ProvidesFile{serbian.dtx} + [2005/03/31 v1.0d Serbocroatian support from the babel system] +%\iffalse +% Babel package for LaTeX version 2e +% Copyright (C) 1989 - 2005 +% by Johannes Braams, TeXniek +% +% Please report errors to: J.L. Braams +% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Serbocroatian language definition file. A contribution +% was made by Dejan Muhamedagi\'{c} (dejan@yunix.com) and Jankovic +% Slobodan <slobodan@archimed.filfak.ac.ni.yu> +% +%<*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{serbian.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{serbian.dtx} +% \changes{serbian-1.0b}{1998/06/16}{Added suggestions for shorthands +% and so on from Jankovic Slobodan} +% +% \section{The Serbocroatian language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. A contribution was made by Dejan Muhamedagi\'{c} +% (\texttt{dejan@yunix.com}).} defines all the language definition +% macros for the Serbian language, typeset in a latin script. In a +% future version support for typesetting in a cyrillic script may +% be added. +% +% For this language the character |"| is made active. In +% table~\ref{tab:serbian-quote} an overview is given of its +% purpose. One of the reasons for this is that in the Serbian +% language some special characters are used. +% +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |"c| & |\"c|, also implemented for the +% lowercase and uppercase s and z. \\ +% |"d| & |\dj|, also implemented for |"D| \\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word. \\ +% \verb="|= & disable ligature at this position \\ +% |""| & like |"-|, but producing no hyphen sign +% (for compund words with hyphen, e.g.\ |x-""y|). \\ +% |"`| & for Serbian left double quotes (looks like ,,). \\ +% |"'| & for Serbian right double quotes. \\ +% |"<| & for French left double quotes (similar to $<<$). \\ +% |">| & for French right double quotes (similar to $>>$). \\ +% \end{tabular} +% \caption{The extra definitions made +% by \file{serbian.ldf}}\label{tab:serbian-quote} +% \end{center} +% \end{table} +% +% Apart from defining shorthands we need to make sure taht the +% first paragraph of each section is intended. Furthermore the +% following new math operators are defined (|\tg|, |\ctg|, +% |\arctg|, |\arcctg|, |\sh|, |\ch|, |\th|, |\cth|, |\arsh|, +% |\arch|, |\arth|, |\arcth|, |\Prob|, |\Expect|, |\Variance|). +% +% \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. +% \begin{macrocode} +%<*code> +\LdfInit{serbian}\captionsserbian +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{serbian} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@serbian| to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\l@serbian\@undefined + \@nopatterns{Serbian} + \adddialect\l@serbian0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Serbocroatian language. +% +% \begin{macro}{\captionsserbian} +% The macro |\captionsserbian| defines all strings used +% in the four standard documentclasses provided with \LaTeX. +% \changes{serbian-1.0d}{2000/09/20}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionsserbian{% + \def\prefacename{Predgovor}% + \def\refname{Literatura}% + \def\abstractname{Sa\v{z}etak}% + \def\bibname{Bibliografija}% + \def\chaptername{Glava}% + \def\appendixname{Dodatak}% + \def\contentsname{Sadr\v{z}aj}% + \def\listfigurename{Slike}% + \def\listtablename{Tabele}% + \def\indexname{Indeks}% + \def\figurename{Slika}% + \def\tablename{Tabela}% + \def\partname{Deo}% + \def\enclname{Prilozi}% + \def\ccname{Kopije}% + \def\headtoname{Prima}% + \def\pagename{Strana}% + \def\seename{Vidi}% + \def\alsoname{Vidi tako\dj e}% + \def\proofname{Dokaz}% + \def\glossaryname{Glossary}% <-- Needs translation + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateserbian} +% The macro |\dateserbian| redefines the command |\today| to +% produce Serbocroatian dates. +% \begin{macrocode} +\def\dateserbian{% + \def\today{\number\day .~\ifcase\month\or + januar\or februar\or mart\or april\or maj\or + juni\or juli\or avgust\or septembar\or oktobar\or novembar\or + decembar\fi \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasserbian} +% \begin{macro}{\noextrasserbian} +% The macro |\extrasserbian| will perform all the extra +% definitions needed for the Serbocroatian language. The macro +% |\noextrasserbian| is used to cancel the actions of +% |\extrasserbian|. +% +% For Serbian the \texttt{"} character is made active. This is done +% once, later on its definition may vary. Other languages in the +% same document may also use the \texttt{"} character for +% shorthands; we specify that the serbian group of shorthands +% should be used. +% +% \changes{serbian-1.0b}{1998/06/16}{Introduced the active \texttt{"}} +% \begin{macrocode} +\initiate@active@char{"} +\addto\extrasserbian{\languageshorthands{serbian}} +\addto\extrasserbian{\bbl@activate{"}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{serbian-1.0c}{1999/12/17}{Deactivate shorthands ouside of +% Serbian} +% \begin{macrocode} +\addto\noextrasserbian{\bbl@deactivate{"}} +% \end{macrocode} +% First we define shorthands to facilitate the occurence of letters +% such as \v{c}. +% \begin{macrocode} +\declare@shorthand{serbian}{"c}{\textormath{\v c}{\check c}} +\declare@shorthand{serbian}{"d}{\textormath{\dj}{\dj}}%% +\declare@shorthand{serbian}{"s}{\textormath{\v s}{\check s}} +\declare@shorthand{serbian}{"z}{\textormath{\v z}{\check z}} +\declare@shorthand{serbian}{"C}{\textormath{\v C}{\check C}} +\declare@shorthand{serbian}{"D}{\textormath{\DJ}{\DJ}}%% +\declare@shorthand{serbian}{"S}{\textormath{\v S}{\check S}} +\declare@shorthand{serbian}{"Z}{\textormath{\v Z}{\check Z}} +% \end{macrocode} +% +% Then we define access to two forms of quotation marks, similar +% to the german and french quotation marks. +% \begin{macrocode} +\declare@shorthand{serbian}{"`}{% + \textormath{\quotedblbase{}}{\mbox{\quotedblbase}}} +\declare@shorthand{serbian}{"'}{% + \textormath{\textquotedblleft{}}{\mbox{\textquotedblleft}}} +\declare@shorthand{serbian}{"<}{% + \textormath{\guillemotleft{}}{\mbox{\guillemotleft}}} +\declare@shorthand{serbian}{">}{% + \textormath{\guillemotright{}}{\mbox{\guillemotright}}} +% \end{macrocode} +% then we define two shorthands to be able to specify hyphenation +% breakpoints that behave a little different from |\-|. +% \changes{serbian-1.0d}{2000/09/20}{Changed definition of \texttt{"-} +% to be the same as for other languages} +% \begin{macrocode} +\declare@shorthand{serbian}{"-}{\nobreak-\bbl@allowhyphens} +\declare@shorthand{serbian}{""}{\hskip\z@skip} +% \end{macrocode} +% And we want to have a shorthand for disabling a ligature. +% \begin{macrocode} +\declare@shorthand{serbian}{"|}{% + \textormath{\discretionary{-}{}{\kern.03em}}{}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\bbl@frenchindent} +% \begin{macro}{\bbl@nonfrenchindent} +% In Serbian the first paragraph of each section should be indented. +% Add this code only in \LaTeX. +% \begin{macrocode} +\ifx\fmtname plain \else + \let\@aifORI\@afterindentfalse + \def\bbl@frenchindent{\let\@afterindentfalse\@afterindenttrue + \@afterindenttrue} + \def\bbl@nonfrenchindent{\let\@afterindentfalse\@aifORI + \@afterindentfalse} + \addto\extrasserbian{\bbl@frenchindent} + \addto\noextrasserbian{\bbl@nonfrenchindent} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\mathserbian} +% Some math functions in Serbian math books have other names: +% e.g. |sinh| in Serbian is written as |sh| etc. So we define a +% number of new math operators. +% \begin{macrocode} +\def\sh{\mathop{\operator@font sh}\nolimits} % same as \sinh +\def\ch{\mathop{\operator@font ch}\nolimits} % same as \cosh +\def\th{\mathop{\operator@font th}\nolimits} % same as \tanh +\def\cth{\mathop{\operator@font cth}\nolimits} % same as \coth +\def\arsh{\mathop{\operator@font arsh}\nolimits} +\def\arch{\mathop{\operator@font arch}\nolimits} +\def\arth{\mathop{\operator@font arth}\nolimits} +\def\arcth{\mathop{\operator@font arcth}\nolimits} +\def\tg{\mathop{\operator@font tg}\nolimits} % same as \tan +\def\ctg{\mathop{\operator@font ctg}\nolimits} % same as \cot +\def\arctg{\mathop{\operator@font arctg}\nolimits} % same as \arctan +\def\arcctg{\mathop{\operator@font arcctg}\nolimits} +\def\Prob{\mathop{\mathsf P\hskip0pt}\nolimits} +\def\Expect{\mathop{\mathsf E\hskip0pt}\nolimits} +\def\Variance{\mathop{\mathsf D\hskip0pt}\nolimits} +% \end{macrocode} +% \end{macro} +% +% 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. +% \begin{macrocode} +\ldf@finish{serbian} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/serbian.ins b/Master/texmf-dist/source/generic/babel/serbian.ins new file mode 100644 index 00000000000..137084466d2 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/serbian.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/03/13} +\def\batchfile{serbian.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\usedir{tex/generic/babel} +\keepsilent + +\usepreamble\mainpreamble + +\generate{\file{serbian.ldf}{\from{serbian.dtx}{code}}} + +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.fd} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/slovak.dtx b/Master/texmf-dist/source/generic/babel/slovak.dtx new file mode 100644 index 00000000000..8b47f53b86e --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/slovak.dtx @@ -0,0 +1,417 @@ +% \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{402} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{slovak.dtx} +%</dtx> +%<code>\ProvidesLanguage{slovak} +%\fi +%\ProvidesFile{slovak.dtx} + [2005/03/31 v1.3a Slovak support from the babel system] +%\iffalse +%% File `slovak.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Slovak Language Definition File +%% Copyright (C) 1989 - 2001 +%% by Jana Chlebikova +% Department of Artificial Intelligence +% Faculty of Mathematics and Physics +% Mlynska dolina +% 84215 Bratislava +% Slovakia +% (42)(7) 720003 l. 835 +% (42)(7) 725882 +% chlebikj at mff.uniba.cs (Internet) +% and Johannes Braams, TeXniek +% +%% Copyright (C) 2002-2005 +%% by Tobias Schlemmer +% Braunsdorfer Stra\ss e 101 +% 01159 Dresden +% Deutschland +% Tobias.Schlemmer at web.de +% +%% Please report errors to: J.L. Braams babel at braams.cistron.nl +%% Tobias Schlemmer Tobias.Schlemmer at web.de +% +% This file is part of the babel system, it provides the source +% code for the Slovak language definition file. +%<*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{slovak.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{slovak.dtx} +% +% \changes{slovak-1.0}{1992/07/15}{First version} +% \changes{slovak-1.2}{1994/02/27}{Update for \LaTeXe} +% \changes{slovak-1.2d}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{slovak-1.2i}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% \changes{slovak-1.3a}{2004/02/20}{Added contributed shorthand +% definitions} +% +% \section{The Slovak language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. It was written by Jana Chlebikova +% (\texttt{chlebik@euromath.dk}) and modified by Tobias Schlemmer +% (\texttt{Tobias.Schlemmer@web.de}).} defines all the +% language-specific macros for the Slovak language. +% +% For this language the macro |\q| is defined. It was used with the +% letters (\texttt{t}, \texttt{d}, \texttt{l}, and \texttt{L}) and +% adds a \texttt{'} to them to simulate a `hook' that should be +% there. The result looks like t\kern-2pt\char'47. Since the the T1 +% font encoding has the corresponding characters it is mapped to |\v|. +% Therefore we recommend using T1 font encoding. If you don't want to +% use this encoding, please, feel free to redefine |\q| in your file. +% I think babel will honour this |;-)|. +% +% For this language the characters |"|, |'| and |^| are ade +% active. In table~\ref{tab:slovak-quote} an overview is given of +% its purpose. Also the vertical placement of the +% umlaut can be controlled this way. +% +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |"a| & |\"a|, also implemented for the other +% lowercase and uppercase vowels. \\ +% |^d| & |\q d|, also implemented for l, t and L. \\ +% |^c| & |\v c|, also implemented for C, D, N, n, T, Z and z. \\ +% |^o| & |\^o|, also implemented for O. \\ +% |'a| & |\'a|, also implemented for the other lowercase and +% uppercase l, r, y and vowels. \\ +% \verb="|= & disable ligature at this position. \\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word. \\ +% |""| & like |"-|, but producing no hyphen sign +% (for compund words with hyphen, e.g.\ |x-""y|). \\ +% |"~| & for a compound word mark without a breakpoint. \\ +% |"=| & for a compound word mark with a breakpoint, allowing +% hyphenation in the composing words. \\ +% |"`| & for German left double quotes (looks like ,,). \\ +% |"'| & for German right double quotes. \\ +% |"<| & for French left double quotes (similar to $<<$). \\ +% |">| & for French right double quotes (similar to $>>$). \\ +% \end{tabular} +% \caption{The extra definitions made +% by \file{slovak.ldf}}\label{tab:slovak-quote} +% \end{center} +% \end{table} +% +% The quotes in table~\ref{tab:slovak-quote} can also be typeset by +% using the commands in table~\ref{tab:smore-quote}. +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |\glqq| & for German left double quotes (looks like ,,). \\ +% |\grqq| & for German right double quotes (looks like ``). \\ +% |\glq| & for German left single quotes (looks like ,). \\ +% |\grq| & for German right single quotes (looks like `). \\ +% |\flqq| & for French left double quotes (similar to $<<$). \\ +% |\frqq| & for French right double quotes (similar to $>>$).\\ +% |\flq| & for (French) left single quotes (similar to $<$). \\ +% |\frq| & for (French) right single quotes (similar to $>$). \\ +% |\dq| & the original quotes character (|"|). \\ +% |\sq| & the original single quote (|'|). \\ +% \end{tabular} +% \caption{More commands which produce quotes, defined +% by \file{slovak.ldf}}\label{tab:smore-quote} +% \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{slovak-1.2i}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{slovak}\captionsslovak +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{slovak} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@slovak| to see whether we have to do something here. +% +% \changes{slovak-1.2d}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@slovak\@undefined + \@nopatterns{Slovak} + \adddialect\l@slovak0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Slovak language. +% +% \begin{macro}{\captionsslovak} +% The macro |\captionsslovak| defines all strings used in the four +% standard documentclasses provided with \LaTeX. +% \changes{slovak-1.2g}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{slovak-1.2k}{1999/02/28}{Repaired a few spelling mistakes} +% \changes{slovak-1.2l}{2000/09/20}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionsslovak{% + \def\prefacename{\'Uvod}% + \def\refname{Referencie}% + \def\abstractname{Abstrakt}% + \def\bibname{Literat\'ura}% + \def\chaptername{Kapitola}% + \def\appendixname{Dodatok}% + \def\contentsname{Obsah}% + \def\listfigurename{Zoznam obr\'azkov}% + \def\listtablename{Zoznam tabuliek}% + \def\indexname{Index}% + \def\figurename{Obr\'azok}% + \def\tablename{Tabu\q lka}%%% special letter l with hook + \def\partname{\v{C}as\q t}%%% special letter t with hook + \def\enclname{Pr\'{\i}lohy}% + \def\ccname{CC}% + \def\headtoname{Komu}% + \def\pagename{Strana}% + \def\seename{vi\q d}%%% Special letter d with hook + \def\alsoname{vi\q d tie\v z}%%% Special letter d with hook + \def\proofname{D\^okaz}% + \def\glossaryname{Glossary}% <-- Needs translation + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateslovak} +% The macro |\dateslovak| redefines the command |\today| to produce +% Slovak dates. +% \changes{slovak-1.2j}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{slovak-1.2j}{1998/03/28}{use \cs{def} instead of \cs{edef}} +% \changes{slovak-1.2k}{1999/02/28}{Repaired a spelling mistake} +% \begin{macrocode} +\def\dateslovak{% + \def\today{\number\day.~\ifcase\month\or + janu\'ara\or febru\'ara\or marca\or apr\'{\i}la\or m\'aja\or + j\'una\or j\'ula\or augusta\or septembra\or okt\'obra\or + novembra\or decembra\fi + \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasslovak} +% \begin{macro}{\noextrasslovak} +% The macro |\extrasslovak| will perform all the extra definitions +% needed for the Slovak language. The macro |\noextrasslovak| is +% used to cancel the actions of |\extrasslovak|. +% For Slovak three characters are used to define shorthands, they +% need to be made active. +% \changes{slovak-1.3a}{2004/02/20}{Make three characters available +% for shorthands} +% +% \begin{macrocode} +\addto\extrasslovak{\languageshorthands{slovak}} +\initiate@active@char{^} +\addto\extrasslovak{\bbl@activate{^}} +\addto\noextrasslovak{\bbl@deactivate{^}} +\initiate@active@char{"} +\addto\extrasslovak{\bbl@activate{"}\umlautlow} +\addto\noextrasslovak{\bbl@deactivate{"}\umlauthigh} +\initiate@active@char{'} +\@ifpackagewith{babel}{activeacute}{% + \addto\extrasslovak{\bbl@activate{'}} + \addto\noextrasslovak{\bbl@deactivate{'}}% + }{} +% \end{macrocode} +% +% +% \changes{slovak-1.2e}{1995/05/28}{Use \LaTeX's \cs{v} accent +% command} +% \begin{macrocode} +\addto\extrasslovak{\babel@save\q\let\q\v} +% \end{macrocode} +% +% \changes{slovak-1.2b}{1994/06/04}{Added setting of left- and +% righthyphenmin} +% +% The slovak hyphenation patterns should be used with +% |\lefthyphenmin| set to~2 and |\righthyphenmin| set to~2. +% \changes{slovak-1.2e}{1995/05/28}{Now use \cs{slovakhyphenmins}} +% \changes{slovak-1.2l}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\dq} +% We save the original double quote character in |\dq| to keep +% it available, the math accent |\"| can now be typed as |"|. +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\x{\endgroup + \def\sq{'} + \def\dq{"}} +\x +% \end{macrocode} +% \end{macro} +% +% In order to prevent problems with the active |^| we add a +% shorthand on system level which expands to a `normal |^|. +% \begin{macrocode} +\declare@shorthand{system}{^}{\csname normal@char\string^\endcsname} +% \end{macrocode} +% +% Now we can define the doublequote macros: the umlauts, +% \begin{macrocode} +\declare@shorthand{slovak}{"a}{\textormath{\"{a}\allowhyphens}{\ddot a}} +\declare@shorthand{slovak}{"o}{\textormath{\"{o}\allowhyphens}{\ddot o}} +\declare@shorthand{slovak}{"u}{\textormath{\"{u}\allowhyphens}{\ddot u}} +\declare@shorthand{slovak}{"A}{\textormath{\"{A}\allowhyphens}{\ddot A}} +\declare@shorthand{slovak}{"O}{\textormath{\"{O}\allowhyphens}{\ddot O}} +\declare@shorthand{slovak}{"U}{\textormath{\"{U}\allowhyphens}{\ddot U}} +% \end{macrocode} +% tremas, +% \begin{macrocode} +\declare@shorthand{slovak}{"e}{\textormath{\"{e}\allowhyphens}{\ddot e}} +\declare@shorthand{slovak}{"E}{\textormath{\"{E}\allowhyphens}{\ddot E}} +\declare@shorthand{slovak}{"i}{\textormath{\"{\i}\allowhyphens}% + {\ddot\imath}} +\declare@shorthand{slovak}{"I}{\textormath{\"{I}\allowhyphens}{\ddot I}} +% \end{macrocode} +% other slovak characters +% \begin{macrocode} +\declare@shorthand{slovak}{^c}{\textormath{\v{c}\allowhyphens}{\check{c}}} +\declare@shorthand{slovak}{^d}{\textormath{\q{d}\allowhyphens}{\check{d}}} +\declare@shorthand{slovak}{^l}{\textormath{\q{l}\allowhyphens}{\check{l}}} +\declare@shorthand{slovak}{^n}{\textormath{\v{n}\allowhyphens}{\check{n}}} +\declare@shorthand{slovak}{^o}{\textormath{\^{o}\allowhyphens}{\hat{o}}} +\declare@shorthand{slovak}{^s}{\textormath{\v{s}\allowhyphens}{\check{s}}} +\declare@shorthand{slovak}{^t}{\textormath{\q{t}\allowhyphens}{\check{t}}} +\declare@shorthand{slovak}{^z}{\textormath{\v{z}\allowhyphens}{\check{z}}} +\declare@shorthand{slovak}{^C}{\textormath{\v{C}\allowhyphens}{\check{C}}} +\declare@shorthand{slovak}{^D}{\textormath{\v{D}\allowhyphens}{\check{D}}} +\declare@shorthand{slovak}{^L}{\textormath{\q{L}\allowhyphens}{\check{L}}} +\declare@shorthand{slovak}{^N}{\textormath{\v{N}\allowhyphens}{\check{N}}} +\declare@shorthand{slovak}{^O}{\textormath{\^{O}\allowhyphens}{\hat{O}}} +\declare@shorthand{slovak}{^S}{\textormath{\v{S}\allowhyphens}{\check{S}}} +\declare@shorthand{slovak}{^T}{\textormath{\v{T}\allowhyphens}{\check{T}}} +\declare@shorthand{slovak}{^Z}{\textormath{\v{Z}\allowhyphens}{\check{Z}}} +% \end{macrocode} +% acute accents, +% \begin{macrocode} +\@ifpackagewith{babel}{activeacute}{% + \declare@shorthand{slovak}{'a}{\textormath{\'a\allowhyphens}{^{\prime}a}} + \declare@shorthand{slovak}{'e}{\textormath{\'e\allowhyphens}{^{\prime}e}} + \declare@shorthand{slovak}{'i}{\textormath{\'\i{}\allowhyphens}{^{\prime}i}} + \declare@shorthand{slovak}{'l}{\textormath{\'l\allowhyphens}{^{\prime}l}} + \declare@shorthand{slovak}{'o}{\textormath{\'o\allowhyphens}{^{\prime}o}} + \declare@shorthand{slovak}{'r}{\textormath{\'r\allowhyphens}{^{\prime}r}} + \declare@shorthand{slovak}{'u}{\textormath{\'u\allowhyphens}{^{\prime}u}} + \declare@shorthand{slovak}{'y}{\textormath{\'y\allowhyphens}{^{\prime}y}} + \declare@shorthand{slovak}{'A}{\textormath{\'A\allowhyphens}{^{\prime}A}} + \declare@shorthand{slovak}{'E}{\textormath{\'E\allowhyphens}{^{\prime}E}} + \declare@shorthand{slovak}{'I}{\textormath{\'I\allowhyphens}{^{\prime}I}} + \declare@shorthand{slovak}{'L}{\textormath{\'L\allowhyphens}{^{\prime}l}} + \declare@shorthand{slovak}{'O}{\textormath{\'O\allowhyphens}{^{\prime}O}} + \declare@shorthand{slovak}{'R}{\textormath{\'R\allowhyphens}{^{\prime}R}} + \declare@shorthand{slovak}{'U}{\textormath{\'U\allowhyphens}{^{\prime}U}} + \declare@shorthand{slovak}{'Y}{\textormath{\'Y\allowhyphens}{^{\prime}Y}} + \declare@shorthand{slovak}{''}{% + \textormath{\textquotedblright}{\sp\bgroup\prim@s'}} + }{} +% \end{macrocode} +% german and french quotes, +% \begin{macrocode} +\declare@shorthand{slovak}{"`}{\glqq} +\declare@shorthand{slovak}{"'}{\grqq} +\declare@shorthand{slovak}{"<}{\flqq} +\declare@shorthand{slovak}{">}{\frqq} +% \end{macrocode} +% and some additional commands: +% \begin{macrocode} +\declare@shorthand{slovak}{"-}{\nobreak\-\bbl@allowhyphens} +\declare@shorthand{slovak}{"|}{% + \textormath{\penalty\@M\discretionary{-}{}{\kern.03em}% + \bbl@allowhyphens}{}} +\declare@shorthand{slovak}{""}{\hskip\z@skip} +\declare@shorthand{slovak}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{slovak}{"=}{\nobreak-\hskip\z@skip} +% \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{slovak-1.2i}{1996/11/03}{Now use \cs{ldf@finish} to wrap up} +% \begin{macrocode} +\ldf@finish{slovak} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/slovak.ins b/Master/texmf-dist/source/generic/babel/slovak.ins new file mode 100644 index 00000000000..3a007b7c3c7 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/slovak.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{slovak.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{slovak.ldf}{\from{slovak.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/slovene.dtx b/Master/texmf-dist/source/generic/babel/slovene.dtx new file mode 100644 index 00000000000..391f39e7f9d --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/slovene.dtx @@ -0,0 +1,302 @@ +% \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{142} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{slovene.dtx} +%</dtx> +%<code>\ProvidesLanguage{slovene} +%\fi +%\ProvidesFile{slovene.dtx} + [2005/03/31 v1.2m Slovene support from the babel system] +%\iffalse +%% File `slovene.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Slovenian language definition file. The Slovenian +% words were contributed by Danilo Zavrtanik, University of +% Ljubljana (Slovenia, former Yugoslavia). +% The usage of the active " was introduced by +% Leon \v{Z}lajpah +% Jo\v{z}ef Stefan Institute, +% Jamova 39, Ljubljana, +% Slovenia +% e-mail: leon.zlajpah at ijs.si +% +%<*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{slovene.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{slovene.dtx} +% +% \changes{slovene-1.0a}{1991/07/15}{Renamed babel.sty in babel.com} +% \changes{slovene-1.1}{1992/02/16}{Brought up-to-date with babel 3.2a} +% \changes{slovene-1.2}{1994/02/27}{Update for \LaTeXe} +% \changes{slovene-1.2d}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{slovene-1.2i}{1995/11/03}{Replaced `Slovanian' with correct +% `Slovenian'} +% \changes{slovene-1.2i}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% +% \section{The Slovenian language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. Contributions were made by Danilo Zavrtanik, +% University of Ljubljana (YU) and Leon \v{Z}lajpah +% (\texttt{leon.zlajpah@ijs.si}).} defines all the +% language-specific macros for the Slovenian language. +% +% For this language the character |"| is made active. In +% table~\ref{tab:slovene-quote} an overview is given of its +% purpose. One of the reasons for this is that in the Slovene +% language some special characters are used. +% +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |"c| & |\"c|, also implemented for the +% lowercase and uppercase s and z. \\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word. \\ +% |""| & like |"-|, but producing no hyphen sign +% (for compund words with hyphen, e.g.\ |x-""y|). \\ +% |"`| & for Slovene left double quotes (looks like ,,). \\ +% |"'| & for Slovene right double quotes. \\ +% |"<| & for French left double quotes (similar to $<<$). \\ +% |">| & for French right double quotes (similar to $>>$).\\ +% \end{tabular} +% \caption{The extra definitions made +% by \file{slovene.ldf}}\label{tab:slovene-quote} +% \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{slovene-1.2i}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{slovene}\captionsslovene +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{slovene} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@slovene| to see whether we have to do something here. +% +% \changes{slovene-1.0b}{1991/10/29}{Removed use of \cs{@ifundefined}} +% \changes{slovene-1.1}{1992/02/16}{Added a warning when no +% hyphenation patterns were loaded.} +% \changes{slovene-1.2d}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@slovene\@undefined + \@nopatterns{Slovene} + \adddialect\l@slovene0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to the +% Slovenian language. The reason for this is that a user might want +% to switch back and forth between languages. +% +% \begin{macro}{\captionsslovene} +% The macro |\captionsslovene| defines all strings used in the four +% standard documentclasses provided with \LaTeX. +% \changes{slovene-1.1}{1992/02/16}{Added \cs{seename}, \cs{alsoname} +% and \cs{prefacename}} +% \changes{slovene-1.1}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{slovene-1.2b}{1994/06/04}{Added extra translations from +% Josef Leydold, \texttt{leydold@statrix2.wu-wien.ac.at}} +% \changes{slovene-1.2g}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{slovene-1.2h}{1995/07/25}{Added translation of `Proof'} +% \changes{slovene-1.2m}{2000/09/20}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionsslovene{% + \def\prefacename{Predgovor}% + \def\refname{Literatura}% + \def\abstractname{Povzetek}% + \def\bibname{Literatura}% + \def\chaptername{Poglavje}% + \def\appendixname{Dodatek}% + \def\contentsname{Kazalo}% + \def\listfigurename{Slike}% + \def\listtablename{Tabele}% + \def\indexname{Stvarno kazalo}% used to be Indeks + \def\figurename{Slika}% + \def\tablename{Tabela}% + \def\partname{Del}% + \def\enclname{Priloge}% + \def\ccname{Kopije}% + \def\headtoname{Prejme}% + \def\pagename{Stran}% + \def\seename{glej}% + \def\alsoname{glej tudi}% + \def\proofname{Dokaz}% + \def\glossaryname{Glossary}% <-- Needs translation + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateslovene} +% The macro |\dateslovene| redefines the command |\today| to +% produce Slovenian dates. +% \changes{slovene-1.2j}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{slovene-1.2j}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \begin{macrocode} +\def\dateslovene{% + \def\today{\number\day.~\ifcase\month\or + januar\or februar\or marec\or april\or maj\or junij\or + julij\or avgust\or september\or oktober\or november\or december\fi + \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasslovene} +% \begin{macro}{\noextrasslovene} +% The macro |\extrasslovene| performs all the extra definitions +% needed for the Slovenian language. The macro |\noextrasslovene| +% is used to cancel the actions of |\extrasslovene|. +% +% For Slovene the \texttt{"} character is made active. This is done +% once, later on its definition may vary. Other languages in the +% same document may also use the \texttt{"} character for +% shorthands; we specify that the slovenian group of shorthands +% should be used. +% +% \changes{slovene-1.2f}{1995/06/04}{Introduced the active \texttt{"}} +% \begin{macrocode} +\initiate@active@char{"} +\addto\extrasslovene{\languageshorthands{slovene}} +\addto\extrasslovene{\bbl@activate{"}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{slovene-1.2l}{1999/12/17}{Deactivate shorthands ouside of +% Slovene} +% \begin{macrocode} +\addto\noextrasslovene{\bbl@deactivate{"}} +% \end{macrocode} +% First we define shorthands to facilitate the occurence of letters +% such as \v{c}. +% \changes{slovene-1.2i}{1996/09/21}{removed shorthand for \texttt{"L} +% as it is not needed for slovenian} +% \begin{macrocode} +\declare@shorthand{slovene}{"c}{\textormath{\v c}{\check c}} +\declare@shorthand{slovene}{"s}{\textormath{\v s}{\check s}} +\declare@shorthand{slovene}{"z}{\textormath{\v z}{\check z}} +\declare@shorthand{slovene}{"C}{\textormath{\v C}{\check C}} +\declare@shorthand{slovene}{"S}{\textormath{\v S}{\check S}} +\declare@shorthand{slovene}{"Z}{\textormath{\v Z}{\check Z}} +% \end{macrocode} +% +% Then we define access to two forms of quotation marks, similar +% to the german and french quotation marks. +% \changes{slovene-1.2j}{1997/04/03}{Removed empty groups after +% double quote and guillemot characters} +% \begin{macrocode} +\declare@shorthand{slovene}{"`}{% + \textormath{\quotedblbase}{\mbox{\quotedblbase}}} +\declare@shorthand{slovene}{"'}{% + \textormath{\textquotedblleft}{\mbox{\textquotedblleft}}} +\declare@shorthand{slovene}{"<}{% + \textormath{\guillemotleft}{\mbox{\guillemotleft}}} +\declare@shorthand{slovene}{">}{% + \textormath{\guillemotright}{\mbox{\guillemotright}}} +% \end{macrocode} +% then we define two shorthands to be able to specify hyphenation +% breakpoints that behavew a little different from |\-|. +% \begin{macrocode} +\declare@shorthand{slovene}{"-}{\nobreak-\bbl@allowhyphens} +\declare@shorthand{slovene}{""}{\hskip\z@skip} +% \end{macrocode} +% And we want to have a shorthand for disabling a ligature. +% \begin{macrocode} +\declare@shorthand{slovene}{"|}{% + \textormath{\discretionary{-}{}{\kern.03em}}{}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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{slovene-1.2i}{1996/11/03}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{slovene} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/slovene.ins b/Master/texmf-dist/source/generic/babel/slovene.ins new file mode 100644 index 00000000000..86760a5e13f --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/slovene.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{slovene.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{slovene.ldf}{\from{slovene.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/sorbian.ins b/Master/texmf-dist/source/generic/babel/sorbian.ins new file mode 100644 index 00000000000..c329cad27b2 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/sorbian.ins @@ -0,0 +1,149 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{sorbian.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{lsorbian.ldf}{\from{lsorbian.dtx}{code}} + \file{usorbian.ldf}{\from{usorbian.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/spanish.dtx b/Master/texmf-dist/source/generic/babel/spanish.dtx new file mode 100644 index 00000000000..232c2436479 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/spanish.dtx @@ -0,0 +1,2638 @@ +% \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{2195} +% \ProvidesFile{spanish.dtx} +% [2004/02/20 v4.2b Spanish support from the babel system] +%\iffalse +%% File `spanish.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2004 +%% by Johannes Braams, TeXniek +% +%% Spanish Language Definition File +%% Copyright (C) 1997 - 2005 +%% by Javier Bezos (jbezos at wanadoo.es) +%% Apartado 116.035 +%% E-28080 Madrid +%% Espa\~na / Espagne +%% and +%% by CervanTeX (www.cervantex.org) +% +%% Please report errors to: Javier Bezos (preferably) +%% jbezos at wanadoo.es +%% J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Spanish language definition file. +% The original version of this file was written by Javier Bezos. +% +%<*filedriver> +\documentclass[spanish,a4paper]{ltxdoc} +\usepackage[activeacute]{babel} + +%\usepackage{ps} + +\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}} + +\setlength{\arrayrulewidth}{2\arrayrulewidth} +\newcommand\toprule{\cline{1-2}\\[-2ex]} +\newcommand\botrule{\\[.6ex]\cline{1-2}} +\newcommand\hmk{$\string|$} + +\newcommand\New[1]{% + \leavevmode\marginpar{\raggedleft\sffamily Nuevo en #1}} + +\newcommand\nm[1]{\unskip\,$^{#1}$} +\newcommand\nt[1]{\quad$^{#1}$\,\ignorespaces} + +\makeatletter + \renewcommand\@biblabel{} +\makeatother + +\newcommand\DOT[1]{\lsc{DOT},~#1} +\newcommand\DTL[1]{\lsc{DTL},~#1} +\newcommand\MEA[1]{\lsc{MEA},~#1} + +\raggedright +\setlength{\parindent}{1em} + +\addtolength{\oddsidemargin}{-2pc} +\addtolength{\textwidth}{4pc} + +\OnlyDescription +\begin{document} + \DocInput{spanish.dtx} +\end{document} +%</filedriver> +%\fi +% +% \begingroup +% +% \catcode`\{=11 +% \catcode`\[=1 +% +% \gdef\ignoringuser[^^A +% \bgroup +% \let\end{userdtx\fi +% \let\end{userdrv\fi +% \aftergroup\endgroup +% \catcode`\{=11 +% \catcode`f=14 ^^A kills \if... and \fi +% \catcode`l=14 ^^A kills \else +% \catcode`o=14 ^^A kills \or +% \catcode`p=14 ^^A kills \repeat +% \iffalse} +% +% \endgroup +% +% \newenvironment{userdtx} +% {\ifx\langdeffile\undefined +% \else\expandafter\ignoringuser +% \fi}{} +% +% \newenvironment{userdrv} +% {\ifx\langdeffile\undefined +% \expandafter\ignoringuser +% \else\fi}{} +% +% \begin{userdtx} +%^^A ======= Beginning of text as typeset by spanish.dtx ========= +% +% \title{Estilo \textsf{spanish}\\ +% para el sistema \babel.\footnote{Este +% archivo est\'a actualmente en la versi\'on +% 4.2b con fecha 12 de septiembre del 2003. ^^A@# +% Esta copia del manual se compuso el~\today.}} +% +% \author{Javier Bezos\footnote{Por favor, env\'{\i}en +% comentarios y sugerencias a \texttt{jbezos@wanadoo.es} +% o a mi direcci\'on postal: Apartado 116.035, E-28080 Madrid, +% Espa'na / Espagne. Han colaborado de una u otra forma muchas +% personas, a las cuales agradezco sus comentarios y sugerencias. +% Para m'as informaci'on sobre los criterios seguidos, v'ease la +% referencia: Javier Bezos, \textit{Tipograf'ia espa'nola con +% \TeX.} Para informaci'on sobre actualizaciones: +% http://www.cervantex.org/}} +% +% \date{12 de septiembre del 2003} ^^A@# +% +% \maketitle +% +% {\small\tableofcontents} +% +%% \section{\textsf{spanish} como lengua principal} +% +% En \babel{} se considera que la 'ultima lengua citada en |\usepackage| y +% |\documentclass|, por este orden, es la lengua principal. Si la +% lengua principal es |spanish|, \New{4.1} se activa el grupo +% |\layoutspanish| que adapta varios elementos +% a los usos tipogr'aficos espa'noles del siguiente modo: +% +% \begin{itemize} +% +% \item[$\diamond$] +% |enumerate| e |itemize|\\[1ex] +% +% El primero usa la siguiente secuencia:\,\footnote{No hay raz'on +% concreta para ella. Es tan s'olo una f'ormula de compromiso.}\\ +% \quad 1.\\ +% \qquad \emph{a})\\ +% \quad\qquad 1)\\ +% \qquad\qquad \emph{a$'$})\\ +% El segundo la siguiente:\\ +% \quad\leavevmode\hbox to 1.2ex +% {\hss\vrule height .95ex width .8ex depth -.15ex\hss}\\ +% \qquad\textbullet\\ +% \quad\qquad $\circ$\\ +% \qquad\qquad $\diamond$ +% +% \New{4.2}Dos 'ordenes permiten otros estilos en +% |itemize|: con |\spanishdashitems| se cambia a rayas en todos los +% niveles, y con |\spanishsignitems|, a \textbullet{} $\circ$ +% $\diamond$ $\triangleright$. +% +% \item[$\diamond$] +% |\alph| y |\Alph|\\[1ex] +% +% Incluyen la e'ne. +% +% \item[$\diamond$] +% |\fnsymbol|\\[1ex] +% +% Se emplean uno, dos, tres... asteriscos (*, **, ***, etc.), +% en lugar de la sucesi'on angloamericana de cruces, barras, +% etc.\footnote{\DOT{162}.} +% +% \item[$\diamond$] +% |\guillemotleft| y |\guillemotright|\\[1ex] +% +% Las comillas latinas para |OT1| son menos angulosas y se generan +% con unas puntas de flecha de |lasy|. +% +% \item[$\diamond$] +% |\roman|\\[1ex] +% +% Como en castellano no se usan n'umeros romanos +% en min'uscula, |\roman| se redefine para que los d'e en +% versalitas.\footnote{\DTL{197}. Los n'umeros romanos con +% versalitas son desconocidos en ingl'es, donde se prefiere +% la min'uscula. En la Europa continental, la situaci'on es +% justamente la opuesta.} +% +% \begin{quote}\small +% \textbf{Nota.} MakeIndex no puede entender la forma en que +% |\roman| escribe el n'umero de p'agina, por lo +% que elimina las l'ineas afectadas. Por ello el archivo |.idx| +% ha de ser convertido antes de procesarlo con MakeIndex. +% Con este paquete se proporciona la utilidad |romanidx.tex| que se +% encarga de ello. Simplemente se compone ese archivo con \LaTeX{} +% y a continuaci'on se responde a las preguntas que se formulan. +% Este proceso no es necesario si no se introdujo ninguna +% entrada de 'indice en p'aginas numeradas con |\roman| (lo cual ser'a +% lo m'as normal). Si un s'imbolo propio de \emph{MakeIndex} generara +% problemas, debe encerrarse entre llaves: \verb={"|}=. +% \end{quote} +% +% \item[$\diamond$] +% |\section|, |\subsection|, etc.\\[1ex] +% +% Los n'umeros en los t'itulos est'an seguidos de un punto +% tanto en el texto como en el 'indice. Adem'as, +% el primer p'arrafo tras el t'itulo no elimina la sangr'ia +% (de nuevo, una costumbre angloamericana). +% +% \end{itemize} +% +% Estos cambios funcionan con las clases est'andar ~---con otras +% tal vez alguno de ellos no tenga efecto--- y persisten durante +% todo el documento (no se pueden desactivar). Ninguno de ellos +% es necesario para componer el documento, aunque naturalmente el +% resultado ser'a distinto. +% +% \begin{itemize} +% +% \item[$\diamond$] +% |\selectspanish*|\\[1ex] +% +% \New{4.1}Si no se desean estos cambios, basta con usar en el +% pre'ambulo |\selectspanish*| (con asterisco) o <<borrarlos>> con: +%\begin{verbatim} +% \let\layoutspanish\relax +%\end{verbatim} +% +% \end{itemize} +% +% \section{Descripci'on} +% +% \subsection{Traducciones} +% +% Ciertas 'ordenes se definen para +% proporcionar traducciones al castellano de algunos t'erminos, tal +% y como se describe en el cuadro 1. +% +% \begin{table} +% \center\small +% \caption{Traducciones} +% \vspace{1.5ex} +% \begin{tabular}{l@{\hspace{3em}}l} +% \toprule +% |\refname| & Referencias\\ +% |\abstractname| & Resumen\\ +% |\bibname| & Bibliograf'ia\\ +% |\chaptername| & Cap'itulo\\ +% |\appendixname| & Ap'endice\\ +% |\contentsname| & 'Indice general\nm{a}\\ +% |\listfigurename| & 'Indice de figuras\\ +% |\listtablename| & 'Indice de cuadros\\ +% |\indexname| & 'Indice alfab'etico\\ +% |\figurename| & Figura\\ +% |\tablename| & Cuadro\\ +% |\partname| & Parte\\ +% |\enclname| & Adjunto\\ +% |\ccname| & Copia a\\ +% |\headtoname| & A\\ +% |\pagename| & P'agina\\ +% |\seename| & v'ease\\ +% |\alsoname| & v'ease tambi'en\\ +% |\proofname| & Demostraci'on +% \botrule +% \end{tabular} +% +% \vspace{1.5ex} +% +% \begin{minipage}{6cm}\footnotesize +% \nt{a} Pero s'olo <<'Indice>> en \textsf{article}. +% \end{minipage} +% \end{table} +% +% No existe una terminolog'ia unificada. +% Tal vez \emph{'Indice general} es lo +% que m'as se usa para el 'indice de los cap'itulos, as'i que a +% ello me atengo salvo en |article|, donde se compone como secci'on +% y por tanto resulta algo ostentoso.\footnote{Al contrario que en +% ingl'es, en castellano el 'indice por antonomasia es el general.} +% +% Para el 'indice alfab'etico se ha propuesto \emph{'Indice de +% materias} o \emph{'Indice anal'itico}, aunque +% estos 'indices no solamente suelen incluir +% materias, sino tambi'en nombres; \emph{'Indice alfab'etico} es +% m'as preciso.\footnote{Es la usada en \DOT{300} as'i +% como en la mayor'ia de los libros que consult'e al azar en una +% biblioteca.} +% +% En cuanto a los de cuadros y figuras, tambi'en es posible decir +% \emph{lista}, pero me parece preferible \emph{'indice}, que +% implica la correspondencia con las p'aginas. +% +% Para traducir \emph{table} es mejor \emph{cuadro}, ya que +% \emph{tabla} es un \emph{falso amigo};\,\footnote{V'eanse las +% definiciones del \lsc{DRAE} y \DTL{67 ss.}} esa es la pr'actica +% tradicional. (Por ejemplo, <<cuadro de estados medievales>> +% frente a <<tabla de logaritmos>>.) +% +% Las traducciones se escriben de min'usculas, salvo la inicial. +% Se evita el anglicismo de comenzar en +% may'usculas los sustantivos.\footnote{\DOT{197}.} +% +% La orden |\today| da la fecha actual. \New{4.2}Aunque al citar +% a'nos posteriores a 1999 la Academia s'olo admite la supresi'on del +% art'iculo en cartas y documentos, en la pr'actica se ha extendido +% esta construcci'on agramatical y as'i se hace aqu'i. Con +% |\spanishdatedel| y |\spanishdatede| se opta por \textit{del} +% (recomendado) o \textit{de} (predeterminado). +% +% \subsection{Abreviaciones} +% +% (Lo que en \babel{} se denomina `shorthands'.) La +% lista completa se puede encontrar en el cuadro 2. En los +% siguientes apartados se dar'an m'as detalles sobre algunas de +% ellas. +% +% \begin{table}[!t] +% \center\small +% \caption{Abreviaciones} +% \vspace{1.5ex} +% \begin{tabular}{l@{\hspace{3em}}l} +% \toprule +% |'a 'e 'i 'o 'u| & 'a 'e 'i 'o 'u\\ +% |'A 'E 'I 'O 'U| & 'A 'E 'I 'O 'U\\ +% |'n 'N| & 'n 'N\nm{a}\\ +% |"u "U| & "u "U\\ +% |"a "A "o "O| & Ordinales: 1"a, 1"A, 1"o, 1"O\\ +%\llap{\textsf{Nuevo en 4.2 }}\relax +% |"er "ER| & Ordinales: 1"er, 1"ER\\ +% |"c "C| & "c "C\nm{b}\\ +% |"rr "RR| & rr, pero -r cuando se divide\\ +% |"y| & El antiguo signo para <<y>>\\ +% |"-| & Como |\-|, pero permite m'as divisiones\\ +% |"=| & Como |-|, pero permite mas divisiones\nm{c}\\ +% |"~| & Gui'on estil'istico\nm{d}\\ +% |~- ~-- ~---| & Como |-|, |--| y |---|, pero sin divisi'on\\ +% |""| & Permite mas divisiones antes y despu'es\nm{e}\\ +% |"/| & Una barra algo m'as baja\\ +% \verb+"|+ & Divide un logotipo\nm{f}\\ +% |"< ">| & "< ">\\ +% |<< >>| & |\begin{quoting}| |\end{quoting}|\nm{g}\\ +% |?` !`| & ?` !`\nm{h}\\ +%\llap{\textsf{Nuevo en 4.2 }}\relax +%|"? "!| & "? "! alineados con la linea base\nm{i} +% \botrule +% \end{tabular} +% +% \vspace{1.5ex} +% +% \begin{minipage}{11cm} +% \footnotesize +% \nt{a} La forma |~n| debe considerarse en extinci'on. +% \nt{b} La cedilla ya no se usa, pero se us'o anta'no. +% \nt{c} |"=| viene a ser lo mismo que |""-""|. +% \nt{d} Esta abreviaci'on tiene un uso distinto +% en otras lenguas. \nt{e} Como en <<entrada/salida>>. +% \nt{f} Carece de uso en castellano. \nt{g} V'ease sec.~2.7. +% \nt{h} No proporcionadas por este paquete, sino por cada tipo; +% figuran aqu'i como simple recordatorio. \nt{i} 'Utiles en +% r'otulos en may'usculas. +% \end{minipage} +% \end{table} +% +% Para poder usar ap'ostrofos como abreviaciones de acentos +% es necesaria la opci'on |activeacute| en |\usepackage|. +% Puede cambiarse este comportamiento con +% la orden |\es@acuteactive| en el archivo de configuraci'on +% |spanish.cfg|; en ese caso los ap'ostrofos se activan siempre. +% +% \New{4.1} La conjunci'on \textit{y} es de por s'i bastante breve, +% por lo que en espa'nol no se han usado signos sustitutorios +% desde hace varios siglos. Sin +% embargo, existe un signo parecido a un dos dado la vuelta, que +% desapareci'o tras el Renacimento y que se emplea hoy en ediciones +% paleogr'aficas. Se puede <<imitar>> con |"y|, siempre que se +% haya cargado el paquete |graphics|; de no ser as'i, se usa la letra +% $\tau$, aunque la variante normal de \TeX{} no es demasiado +% apropiada. +% +% Los caracteres usados como abreviaciones se comportan +% como otras 'ordenes de \TeX{} y por tanto se hace caso +% omiso de los espacios que le puedan seguir: \verb*|' a| es lo mismo +% que |'a|. Eso tambi'en implica que tras esos caracteres no +% puede ir una llave de cierre y que deber'a escribirse +% |{... '{}}| en lugar de |{... '}|; en modo matem'atico no hay +% problema y |$x^{a'}$| ($x^{a'}$) es v'alido. \New{4.1} +% +% \begin{itemize} +% +% \item[$\diamond$] +% |\deactivatetilden|\\[1ex] +% +% Esta orden desactiva las abreviaciones |~n| y |~N| debido a +% los problemas que presentan. Puede usarse en el archivo +% de configuraci'on (v'ease m'as abajo). +% +% % \item[$\diamond$] +% |\spanishdeactivate{<caracteres>}|\\[1ex] +% +% \New{4.1}Permite desactivar las abreviaciones correspondientes a los +% caracteres dados. Para evitar entrar en conflicto con otras lenguas, +% al salir de |spanish| se reactivan,\footnote{El punto para +% los decimales no es estrictamente una abreviaci'on y no se +% reactiva.} por lo que si se desea que +% persista hay que a'nadir la orden a |\shorthandsspanish| con +%|\addto|. La orden |\renewcommand\shorthandsspanish{}| es una +% variante optimizada de +%\begin{verbatim} +% \addto\shorthandsspanish{\spanishdeactivate{.'"~<>}} +%\end{verbatim} +% y es lo recomendado si se desea +% prescindir del mecanismo de abreviaciones. +% \end{itemize} +% +% \subsection{Coma decimal} +% +% Tanto el ingl'es como el castellano y otras lenguas tienen sus +% formas tradicionales de representar la coma decimal. En ingl'es +% es algo como $12{\cdot}34$, mientras que en castellano +% es $12$'$34$. Adem'as, los millares se pueden separar por coma en +% ingl'es y punto en castellano.\footnote{Excepto en a'nos, donde +% siempre se escriben las cifras juntas: \emph{1978, 1998}.} +% Tales formas deben ser descartadas, pues se ha llegado a +% una normalizaci'on internacional donde los millares se +% separan por un espacio fino y los decimales con coma.\footnote{% +% La ISO admite el punto en pa'ises donde haya sido esa +% la tradici'on, aunque recomienda que se adapten a la coma.} +% +% Ya que \TeX\ usa la coma como separador en intervalos o expresiones +% similares, lo que a'nade un espacio fino, \textsf{spanish} +% convierte todo punto en modo matem'atico en +% una coma siempre que est'e seguido de una cifra, pero no en otras +% circunstancias: +% \begin{quote}\small\begin{tabbing} +% |$1\,234.567\,890$| \quad \= $1\,234.567\,890$\\ +% |$f(1,2)=12.34.$| \> $f(1,2)=12.34.$\\ +% |$1{.}000$| \> $1{.}000$, pero\\ +% |1.000| \> 1.000, pues no es modo matem'atico. +% \end{tabbing}\end{quote} +% +% Las 'ordenes |\decimalcomma| y |\decimalpoint| +% establecen si se usa una coma, que es el valor predeterminado, +% o un punto, mientras que |\spanishdecimal{<math>}| permite darle +% una definici'on arbitraria.\footnote{Internamente el mecanismo es +% de una abreviaci'on, y se puede desactivar como las otras. +% \textsf{Nuevo 4.2}} +% +% \subsection{Divisi'on de palabras} +% +% \textsf{Spanish} comprueba la +% codificaci'on en el momento en que se usa un acento: si la +% codificaci'on es |OT1| se toman medidas para facilitar +% la divisi'on, que pese a todo nunca ser'a perfecta, mientras que con +% |T1| se accede directamente al car'acter correspondiente. +% +% Para matizar la divisi'on de palabras hay cuatro posibilidades, dos +% de ellas con el m'etodo de abreviaciones: +% \begin{itemize} +% \item la orden |\-| es un gui'on opcional que no permite +% m'as divisiones, +% +% \item |"-| es similar pero permite m'as divisiones, +% +% \item un |-| es un gui'on que no permite m'as divisiones ni +% antes ni despu'es, y +% +% \item |"=| es el equivalente que s'i las permite,\footnote{No +% es una buena idea usar esta orden, pero en +% medidas muy cortas puede resultar necesario.} +% +% \end{itemize} +% Por ejemplo (con las posibles divisiones marcadas con \hmk): +% \begin{quote}\small\begin{tabbing} +% |Zaragoza-Barcelona|\qquad \= Zaragoza-\hmk Barcelona\\ +% |Zaragoza"=Barcelona| \> +% Za\hmk ra\hmk go\hmk za-\hmk Bar\hmk ce\hmk lo\hmk na\\ +% |semi\-abierto| \> semi\hmk abierto\\ +% |semi"-abierto| \> se\hmk mi\hmk abier\hmk to.\footnotemark +% \end{tabbing}\footnotetext{Justo antes y despu'es de +% {\ttfamily\string"\string-} y {\ttfamily\string"\string=} se +% aplican los correspondientes +% valores de {\ttfamily\string\...hyphenmin} lo que implica que la +% divis'on semia\hmk bierto no es posible. +% 'Este es un comportamiento correcto.} +% \end{quote} +% +% Adem'as. hay abreviaciones que evitan +% divisiones: |~-|, que resulta 'util para expresar una serie de +% n'umeros sin que el gui'on los divida (12~-14, |12~-14|), y |~---|, +% que es la forma que debe usarse para abrir incisos con rayas, ya que +% de lo contrario puede haber una divisi'on entre la raya de abrir y +% la palabra que le sigue: +% \begin{quote}\small\begin{tabbing} +% |Los conciertos ~---o academias--- que organiz'o...| +% \end{tabbing}\end{quote} +% Mientras que este gui'on evita toda posible divisi'on en los +% elementos que une, la raya (---) y la semirraya (--) las permiten +% en las palabras que le precedan o le sigan. +% +% La abreviaci'on |"~| se usa cuando se quiere que el gui'on +% tambi'en aparezca al comienzo de la siguiente l'inea. Por ejemplo: +% \begin{quote}\small\begin{tabbing} +% |infra"~rojo| \quad \= in\hmk fra-ro\hmk jo, pero infra-\hmk-rojo. +% \end{tabbing}\end{quote} +% +% Otra abreviaci'on es |"rr| que sirve para el +% 'unico cambio de escritura del castellano en caso de haber divisi'on. +% La \lsc{RAE} indica que al a'nadir un prefijo que termina en vocal a +% una palabra que comienza con \emph{r}, 'esta 'ultima debe +% doblarse a menos que se unan por un gui'on. Por ejemplo: +% \begin{quote}\small\begin{tabbing} +% |extra"rradio| \quad \= ex\hmk trarra\hmk dio, pero extra-\hmk +% radio. +% \end{tabbing}\end{quote} +% No hay acuerdo sobre si esta regla y otras similares han de +% aplicarse o no, aunque la opini'on mayoritaria actual est'a en +% contra. +% +% \subsection{Ordinales} +% +% Las abreviaturas siempre llevan punto, salvo algunas en que +% se sustituye por una barra (y salvo las siglas y s'imbolos, +% naturalmente), que precede a las letras voladitas.\footnote{Puede +% comprobarse en \DTL{196}. V'ease tambi'en \DOT{222 y 227}.} +% Por ello, \textsf{spanish} proporciona la orden +% |\sptext| que facilita la creaci'on de estas abreviaturas. Por +% ejemplo: |adm\sptext{'on}| que da adm\sptext{'on}. Hay seis abreviaciones +% asociadas a ordinales: |"a|, |"A|, |"o|, |"O|, |"er| y |"ER| que equivalen a +% |\sptext{a}|, etc.\footnote{Muchos tipos a'naden +% un peque'no subrayado que debe evitarse, y por tanto no se debe +% escribir los ordinales con \textsf{inputenc}.} +% +% Para ajustar el tama'no lo mejor posible, se usa el de +% 'indices en curso. Esto funciona bien salvo para tama'nos muy +% grandes o muy peque'nos, donde los resultados son meramente +% aceptables. +% +% \New{4.1}En Plain \TeX{} se ejecuta la orden |\sptextfont| para la +% letra voladita, de forma que |{\bf\let\sptextfont\bf 1"o}| da el +% resultado correcto (|\mit| si es para cursiva). Para usar un tipo +% nuevo con |\sptext| hay que definir tambi'en las variantes +% matem'aticas con |\newfam|. +% +% \subsection{Funciones matem'aticas} +% +% Tradicionalmente, se han formado las abreviaciones +% de lo que en \TeX\ se conocen como operadores a partir +% del nombre castellano, lo que implica la presencia del +% acento en l'im (en sus tres formas |\lim|, |\limsup| y |\liminf|), +% m'ax, m'in, 'inf y m'od (en sus dos +% formas |\bmod| y |\pmod|). +% +% Con |spanish| pueden seguirse varias convenciones con ayuda +% de las siguientes 'ordenes: +% \begin{itemize} +% \item[$\diamond$] |\accentedoperators| |\unaccentedoperators|\\[1ex] +% Activa o desactiva los acentos. +% Por omisi'on se acent'uan, como por ejemplo: $\lim_{x\to 0}(1/x)$ +% (|$\lim_{x\to 0}(1/x)$|). +% +% \item[$\diamond$] |\spacedoperators| |\unspacedoperators|\\[1ex] +% Activa o desactiva el espacio entre "<arc"> y la funci'on. +% Lo habitual ha sido con espacio; as'i pues, por omisi'on +% se espacia. +% \end{itemize} +% +% La i sin punto tambi'en es accesible directamente en modo +% matem'atico con la orden |\dotlessi|, de forma que se puede escribir +% |\acute{\dotlessi}|. Por ejemplo, +% |$V_{\mathbf{cr\acute{\dotlessi}t}}$| da +% $V_{\mathbf{cr\acute{\dotlessi}t}}$. +% +% Tambi'en se a'naden |\sen|, |\arcsen|, |\tg| y |\arctg|, +% que dan las funciones respectivas. Otras funciones trigonom'etricas +% se encuentran almacenadas en el par'ametro |\spanishoperators|, que +% inicialmente incluye cotg, cosec, senh y tgh. La raz'on por la que +% estas funciones se han separado es porque ~---al contrario que sen +% y tg~--- su forma est'a lejos de estar normalizada en el 'ambito +% hispanohablante. De esta +% forma se puede cambiar por otras con, por ejemplo: +%\begin{verbatim} +% \renewcommand{\spanishoperators}{ctg arc\,ctg sh ch th} +%\end{verbatim} +% (separadas con espacio). Cuando se selecciona |spanish| se crean +% 'ordenes con esos nombres +% y que dan esas funciones (siempre con |\nolimits|). Adem'as de +% las letras sin acentuar se aceptan las 'ordenes |\,| y |\acute|, que +% se pasan por alto para formar el nombre. \New{4.2}Por ejemplo, |arc\,ctg| +% se escribe en el documento con +% |\arcctg|, |M\acute{a}x| como |\Max| y |cr\acute{i}t| como |\crit| +% (hay que usar |i| y no |\dotlessi|). +% La orden |\,| responde a |\|(|un|)|spacedoperators|, y |\acute| +% a |\|(|un|)|accentedoperators|. +% +% Conviene que |\spanishoperators| est'e en el pre'ambulo del +% documento en s'i, antes de |\selectspanish| o de +% |\begin{document}|. +% +% \subsection{Entrecomillados} +% +% El entorno |quoting| entrecomilla un +% texto, a'nadiendo comillas de seguir al comienzo de +% cada p'arrafo en su interior.\footnote{Se puede encontrar +% una detallada exposici'on de las comillas en \DTL{44 ss.} De ah'i +% se ha tomado alg'un ejemplo.} +% Tambi'en se pueden emplear las +% abreviaciones |<<| y |>>| que se limitan a llamar a |quoting|, que +% por ser entorno considera sus cambios internos como locales. (Es +% decir, |<< ... >>| implica |{<< ... >>}|.) +% Las abreviaciones |"<| y |">| contin'uan dando sin m'as los +% caracteres de comillas de abrir y cerrar, respectivamente. +% +% Por ejemplo: +%\begin{verbatim} +% <<Se llaman <<comillas de seguir>> a las que son de cierre, +% pero se colocan al comienzo de cada p'arrafo cuando se transcribe +% un texto entrecomillado con m'as de un p'arrafo. +% +% En su interior, como de costumbre, se usan inglesas.>> +%\end{verbatim} +% cuyo resultado es: +% \begin{quotation}\small +% <<Se llaman <<comillas de seguir>> a las que son de cierre, +% pero se colocan al comienzo de cada p'arrafo cuando se transcribe +% un texto entrecomillado con m'as de un p'arrafo. +% +% En su interior, como de costumbre, se usan inglesas.>> +% \end{quotation} +% +% Este entorno se puede redefinir, como por ejemplo: +%\begin{verbatim} +% \renewenvironment{quoting}{\itshape}{} +%\end{verbatim} +% pero en principio no implica un nuevo p'arrafo, ya que +% est'a pensado para ser usado tambi'en en el texto. +% +% En caso de anidar entornos |quoting|, se modifican las comillas +% de los niveles interiores, que tambi'en se a'naden a las de seguir: +%\begin{verbatim} +% <<El di'alogo se desarroll'o de esta forma: +% +% <<---Yo no he sido ---grit'o Antonio. +% +% ---Pero has colaborado ---asegur'o Rafael>>. +% +% Pero all'i no se aclar'o nadie.>> +%\end{verbatim} +% +% \begin{quotation}\small +% <<El di'alogo se desarroll'o de esta forma: +% +% <<---Yo no he sido ---grit'o Antonio. +% +% ---Pero has colaborado ---asegur'o Rafael>>. +% +% Pero all'i no se aclar'o nadie.>> +% \end{quotation} +% +% \begin{itemize} +% \item[$\diamond$] +% |\lquoti| |\rquoti| |\lquotii| |\rquotii| |\lquotiii| +% |\rquotiii|\\[1ex] +% +% Controlan las comillas en |quoting|, seg'un el +% nivel en que nos encontremos. |\lquoti| son las comillas de abrir +% m'as exteriores, |\lquotii| las de segundo nivel, etc., y lo mismo +% para las de cerrar con |\rquoti|... Para las de seguir siempre se +% usan las de cerrar. Los valores predefinidos est'an en el cuadro 3. +% \begin{table} +% \center\small +% \caption{Entrecomillados} +% \vspace{1.5ex} +% \begin{tabular}{l@{\hspace{5em}}l} +% \toprule +% |\lquoti| &|"<|\\ +% |\rquoti| &|">|\\ +% |\lquotii| &|``|\\ +% |\rquotii| &|''|\\ +% |\lquotiii| &|`|\\ +% |\rquotiii| &|'| +% \botrule +% \end{tabular} +% \end{table} +% +% \newenvironment{dialog} +% {\def\lquoti{}\begin{quoting}---\ignorespaces} +% {\def\rquoti{}\end{quoting}} +% +% Las comillas de seguir tambi'en se emplean en di'alogos, incluso +% si no las hay de abrir y cerrar. Con la ayuda del siguiente +% entorno, +%\begin{verbatim} +% \newenvironment{dialog} +% {\def\lquoti{}\begin{quoting}---\ignorespaces} +% {\def\rquoti{}\end{quoting}} +%\end{verbatim} +% podemos obtener +% \begin{quotation}\small +% \begin{dialog}% +% El di'alogo se desarroll'o de esta forma: +% +% <<---Yo no he sido ---grit'o Antonio. +% +% ---Pero has colaborado ---asegur'o Rafael>>. +% +% Pero all'i no se aclar'o nadie. +% \end{dialog} +% \end{quotation} +% +% \item[$\diamond$] +% |\activatequoting \deactivatequoting|\\[1ex] +% +% Las incompatibilidades potenciales de estas abreviaciones son +% enormes. Por ejemplo, en \textsf{ifthen} se cancelan las +% comparaciones entre n'umeros;\,\footnote{Y en |\string\ifnum|, +% etc. usado por los desarrolladores en los paquetes.} tambi'en +% resultan inoperantes |@>>>| y |@<<<| de +% \textsf{amstex}.\footnote{Aunque en +% este caso cabe usar los sin'onimos |@)))| y |@(((|.} +% Por ello, se da posibilidad de cancelarlas y reactivarlas con +% estas 'ordenes, \New{4.2}aunque si se est'a usando con +% \textsf{xmltex} ya se +% desactivan por completo de forma autom'atica. El entorno +% |quoting| siempre permanece disponible.\footnote{Algunos tipos +% disponen de esta ligadura de forma interna para +% generar los caracteres de comillas, por lo que en ellos tambi'en +% podemos usarlos siempre, aunque los ajustes proporcionados por +% \textsf{spanish} se pueden perder; por otra parte, tampoco se +% usan demasiado a menudo.} +% +% \end{itemize} +% +% \subsection{Selecci'on} +% +% Por omisi'on, \babel{} deja <<dormidas>> las lenguas hasta que se +% llega a |\begin{document}| con el fin de evitar conflictos por +% las abreviaciones; a cambio, +% se priva de la posibilidad de usar las lenguas en el pre'ambulo +% en 'ordenes como |\savebox|, |\title|, |\newtheorem|, etc. +% +% La orden |\selectspanish| permite activar |spanish| con sus +% extensiones y abreviaciones antes de +% |\begin{document}|.\footnote{Algunos detalles, que +% apenas afectan a \texttt{spanish}, siguen sin activarse hasta el +% comienzo del documento.} +% De esta forma, podr'iamos decir +%\begin{verbatim} +% \documentclass{book} +% \usepackage[T1]{fontenc} +% \usepackage[spanish]{babel} +% \usepackage[latin1]{inputenc} +% \usepackage[centerlast]{caption2} +% ... % Mas paquetes +% +% \selectspanish +% +% \title{T'itulo} +% \author{Autor} +% \newcommand{\pste}{para"-psicol'ogicamente} +% \newsavebox{\mybox} +% \savebox{\mybox}{m'as cosas} +% ... % Mas definiciones +% +% \begin{document} +%\end{verbatim} +% +% \subsection{Espaciado} +% +% El espaciado espa'nol difiere relativamente poco del ingl'es; +% sin embargo, el espacio tras los signos de +% puntuaci'on debe ser mismo que el que hay entre palabras. O dicho en +% t'erminos de \TeX, |\frenchspacing| est'a activo. +% +% Tambi'en en otros dos sitios hay diferencias. El primero son los +% puntos suspensivos, para los que se define una nueva orden |\...| +% que los da menos espaciados; con ella \TeX{} preserva +% el espacio siguiente. Por ejemplo: +% \begin{quote}\small\begin{tabbing} +% |\... y solo estaba\... ella.|\quad\=\... y solo estaba\... ella. +% \end{tabbing}\end{quote} +% Tambi'en podr'ian escribirse los tres puntos sin m'as |...|, y en +% la pr'actica no hay diferencia, a menos que se cambie el +% valor del espacio tras punto; en ese caso, la forma con barra +% da los valores apropiados \emph{dentro} de una sentencia, y +% los tres puntos \emph{al final} de ella. Esta orden no +% interfiere con el valor original de |\.| (un punto suprascrito). +% +% El segundo sitio es un espacio fino antes del signo |\%| (que +% m'as exactamente es |\,|, con lo cual se puede "<recuperar"> con +% su opuesto |\!|, si |\%| no sigue a una cifra). +% +% \subsection{Miscel'anea} +% +% \begin{itemize} +% +% \item[$\bullet$] La orden |\lsc| se puede usar para siglas +% en versalitas. +% Por ejemplo: +% \begin{quote}\small\begin{tabbing} +% |\lsc{RAE}| \quad \= \lsc{RAE}\\ +% |\lsc{ReNFe}| \quad \= \lsc{ReNFe}. +% \end{tabbing}\end{quote} +% Tambi'en puede ser 'util para algunos usos de los n'umeros +% romanos: +% \begin{quote}\small\begin{tabbing} +% |siglo \lsc{XVII}| \quad \= siglo \lsc{XVII}\\ +% |cap'itulo \lsc{II}| \quad \= cap'itulo \lsc{II}. +% \end{tabbing}\end{quote} +% +% Para evitar que con un tipo que carece de versalitas acabe +% apareciendo (por substituci'on) un texto de min'usculas se +% intenta usar en estos casos las versales \emph{reales} +% de un tama'no menor. Queda simplemente aceptable, pero es mejor que +% nada. (\LaTeX\ tiende a sustituir versalitas por versalitas, +% pero hay excepciones, como con las negritas.) +% +% \item[$\bullet$] Se puede escribir |\'i| para |\'{\i}|. +% +% \item[$\bullet$] Hay una abreviaci'on adicional como utilidad +% tipogr'afica m'as que espec'ificamente espa'nola. En ciertos +% tipos, como Times, el extremo inferior de la barra est'a en la +% l'inea de base y expresiones como <<am/pm>> resultan poco +% est'eticas. |"/| produce una barra que, de ser necesario, +% se baja ligeramente. Computer Modern tiene una barra bien +% dise'nada y no es posible ilustrar aqu'i este punto +% pero en todo caso se escribir'ia |am"/pm|.\footnote{En \MEA{141} +% se recurre a una soluci'on que es la 'unica sencilla en +% programas de maquetaci'on: usar un cuerpo menor. Pero con \TeX{} +% es mucho m'as f'acil automatizar las tareas.} +% +% \end{itemize} +% +% \section{Adaptaci'on} +% \subsection{Configuraci'on} +% +% En sus 'ultimas versiones, \babel{} proporciona la posibilidad +% de cargar autom'aticamente un archivo con el mismo nombre que +% el principal, pero con extensi'on |.cfg|. \textsf{Spanish} +% proporciona unas pocas 'ordenes para ser usadas en este archivo: +% \begin{itemize} +% \item[$\diamond$] |\es@activeacute|\\[1ex] +% Activa las abreviaciones con ap'ostrofos, sin que sea +% necesario incluir |activeacute| como opci'on en |\usepackage|. +% +% \item[$\diamond$] |\es@enumerate{<leveli>}|% +% |{<levelii>}{<leveliii>}{<leveliv>}|\\[1ex] +% Cambia los valores preestablecidos por |spanish| para +% |enumerate|. \textit{leveln} consiste en una letra, que +% indica qu'e formato tendr'a el n'umero, seguida +% de cualquier texto. La letra tiene que ser: |1| (ar'abigo), +% |a| (min'uscula \emph{cursiva}\,\footnote{La letra es cursiva +% pero no los signos que le puedan seguir. M'as bien deber'ia +% decirse destacada, ya que se usa |\string\emph|. +% V'ease \DTL{11}.}), |A| (versal), +% |i| (romano \emph{versalita}), |I| (romano versal) o +% finalmente |o| (ordinal\,\footnote{Lo normal es no a'nadir ning'un +% signo tras ordinal.}). +% +% Esta orden no est'a pensada para hacer cambios elaborados, sino +% s—lo meros reajustes. Los valores preestablecidos +% equivalen a +%\begin{verbatim} +% \es@enumerate{1.}{a)}{1)}{a$'$)} +%\end{verbatim} +% +% \item[$\diamond$] |\es@itemize{<leveli>}|% +% |{<levelii>}{<leveliii>}{<leveliv>}|\\[1ex] +% Lo mismo para |itemize|, s'olo que los argumentos se +% usan de forma literal. Los valores originales de \LaTeX{} son +% similares a +%\begin{verbatim} +% \es@itemize{\textbullet}{\normalfont\bfseries\textendash} +% {\textasteriskcentered}{\textperiodcentered} +%\end{verbatim} +% +% \item[$\diamond$] |\es@operators|\\[1ex] +% Todo lo relativo a operadores se cancela con +%\begin{verbatim} +% \let\es@operators\relax +%\end{verbatim} +% Es buena idea incluirlo si no se van a usar, ya que ahorra memoria. +% +% \end{itemize} +% +% Otros ajustes 'utiles en este contexto son |\spanishoperators|, +% |\selectspanish| y |\deactivatequoting|. +% +% +% Recordemos que todos los cambios +% operados desde este archivo restan compatibilidad al +% documento, por lo que si se distribuye conviene adjuntarlo +% con el entorno |filecontents|. +% +% \subsection{Otros cambios} +% +% \begin{itemize} +% +% \item La orden |\addto| permite +% cambiar alguna de las convenciones internas. Esto resulta +% interesante con las traducciones, ya que las +% formas proporcionadas pueden no ser las deseadas. +% Para ello es necesario que |spanish| no est'e seleccionado. +% Por ejemplo, para cambiar \emph{'Indice de figuras} por +% \emph{Lista de figuras}: +%\begin{verbatim} +% \addto\captionsspanish{% +% \def\listfigurename{Lista de figuras}} +%\end{verbatim} +% +% \item Para volver a eliminar la sangr'ia tras secci'on: +%\begin{verbatim} +% \def\@afterindentfalse{\let\if@afterindent\iffalse} +% \@afterindentfalse +%\end{verbatim} +% +% \item Para que |\roman| proporcione n'umeros romanos en +% min'uscula, seg'un la forma inglesa: +%\begin{verbatim} +% \def\@roman#1{\romannumeral #1} +%\end{verbatim} +% +% \item +% Los extras se encuentran organizados en varios grupos: +% |\textspanish|, |\mathspanish|, +% |\shorthandsspanish| y |\layoutspanish|. Pueden +% cancelarse con: +%\begin{verbatim} +% \renewcommand\textspanish{} +%\end{verbatim} +% +% \end{itemize} +% +% \section{Formatos distintos a \LaTeXe} +% +% El estilo |spanish| funciona con +% otros formatos, aunque con un subconjunto de las funciones +% disponibles en \LaTeXe{}. Con Plain hay que hacer +%\begin{verbatim} +% \input spanish.sty +%\end{verbatim} +% y con \LaTeX2.09, incluir |spanish| entre las opciones de estilo. +% +% Se incluyen: traducciones, casi todas las abreviaciones, coma +% decimal, utilidades para divisi'on de palabras, ordinales en una +% versi'on simplificada (y no muy elegante), funciones matem'aticas, +% entrecomillados en \LaTeX2.09, |\'i| y espaciado. +% La selecci'on de la lengua es inmediata al cargar el archivo. +% +% En cambio no est'an disponibles: entrecomillados en Plain, +% |\lsc| ni las adaptaciones proporcionadas por |\layoutspanish|. +% +% A partir de esta versi'on, el archivo de configuraci'on +% se lee siempre, por lo que aquellos que ya est'an escritos +% espec'ificamante para \LaTeXe{} pueden presentar problemas si se usan +% con otros formatos. Si las versiones que se usan no son muy antiguas, +% se puede comprobar el formato con la variable |\fmtname| que vale +% |LaTeX2e| o |plain|. Por ejemplo +%\begin{verbatim} +% \def\temp{LaTeX2e} +% \ifx\temp\fmtname +% ... +% \fi +%\end{verbatim} +% +% \section{Bibliograf'ias} +% +% El archivo |esbst.tex| que se genera con \textsf{spanish} +% sirve para que la utilidad \textsf{custom-bib} trabaje en +% conjunci'on con \babel. Define una serie de 'ordenes, que pueden +% consultarse en el propio archivo, que se utilizan para las +% traducciones si se selecciona |babel| como lengua al generar un +% estilo bibliogr'afico. +% +% \section{Incompatibilidades con versiones anteriores} +% +% \begin{itemize} +% +% \item En versiones de cierta antig"uedad, el actual |activeacute| +% estaba siempre impl'icito, por lo que ahora la abreviaci'on no se +% reconoce y en su lugar aparecen ap'ostrofos. +% +% \item El t'ermino correspondiente a |\tablename| estaba traducido +% incorrectamente como <<Tabla>>. Como quiera que <<tabla>> es la +% palabra con que puede aparecer en el propio texto, o bien puede +% haber un art'iculo femenino ante |\tablename|, puede reponerse el +% valor antiguo con: +%\begin{verbatim} +% \addto\captionsspanish{% +% \def\tablename{Tabla}% +% \def\listtablename{\'Indice de tablas}} +%\end{verbatim} +% +% \end{itemize} +% +% \section*{Referencias} +% \addcontentsline{toc}{section}{Referencias} +% +% \begingroup +% \small +% \leftskip1.5cm \parindent-1.5cm +% +% \makebox[1.5cm][l]{\lsc{DRAE}}\textit{Diccionario de la Academia +% Espa'nola}, Madrid, Espasa-Calpe, 21"a ed., 1992. +% +% \makebox[1.5cm][l]{\lsc{DOT}}Jos'e Mart'inez de Sousa, +% \textit{Diccionario de ortograf'ia t'ecnica}, +% Madrid, Germ'an S'anchez Ruip'erez/Pir'amide, 1987. +% (Biblioteca del libro.) +% +% \makebox[1.5cm][l]{\lsc{DTL}}Jos'e Mart'inez de Sousa, +% \textit{Diccionario de tipograf'ia y del libro}, +% Madrid, Paraninfo, 3"a ed., 1992. +% +% \makebox[1.5cm][l]{\lsc{MEA}}Jos'e Mart'inez de Sousa, +% \textit{Manual de edici'on y autoedici'on}, +% Madrid, Pir'amide, 1994. +% +% \leftskip0pt \parindent0pt \vspace{6pt} +% +% {\itshape +% Como normalmente el primer contacto con \TeX{} es por una tesis, +% cito libros que +% est'an relacionados con el tema a los que he tenido acceso. +% Est'an por orden de preferencia; en particular, los dos 'ultimos me +% parecen poco recomendables.} +% +% \parindent-1.5pc \leftskip1.5pc \vspace{3pt} +% +% Umberto Eco, +% \textit{C'omo se hace una tesis}, +% Barcelona, Gedisa, 1982. +% +% Antonia Rigo Arnavat y Gabriel Genesc\`a Due'nas, +% \textit{C'omo presentar una tesis y trabajos de investigaci'on}, +% Barcelona, Eumo-Octaedro, 2002. +% +% Prudenci Comes, +% \textit{Gu'ia para la redacci'on y presentaci'on de trabajos +% cient'ificos, informes t'ecnicos y tesinas}, +% Barcelona, Oikos-Tau, 1971. +% +% Javier Lasso de la Vega, +% \textit{C'omo se hace una tesis doctoral}, +% Madrid, Fundacion Universitaria Espa~nola, 1977. +% +% Jos'e Romera Castillo y otros, +% \textit{Manual de estilo}, +% Madrid, Universidad Nacional de Educaci'on a Distancia, 1996. +% +% Restituto Sierra Bravo, +% \textit{Tesis doctorales y trabajos de investigaci'on cient'ifica}, +% Madrid, Paraninfo, 1986. +% +% \parindent0pc \leftskip0pc \vspace{6pt} +% +% {\itshape +% Para otras cuestiones tipogr'aficas, las referencias +% usadas son, entre otras:} +% +% \parindent-1.5pc \leftskip1.5pc \vspace{3pt} +% +% Javier Bezos, +% \textit{Tipograf'ia espa'nola con \TeX}, documento electr'onico +% disponible en +% \textsf{http://perso.wanadoo.es/jbezos/tipografia.html}. +% +% Ra'ul Cabanes Mart'inez, +% <<El sistema internacional de unidades: ese desconocido>>, +% \textit{Mundo Electr'onico}, n"o 142, 1984, p'ags.~119~-125. +% +% \textit{The Chicago Manual of Style}, Chicago, University of +% Chicago Press, 14"a~ed., 1993, esp.~p'ags.~333~-335. +% +% Jos'e Fern'andez Castillo, +% \textit{Normas para correctores y compositores tip'ografos}, +% Madrid, Espasa-Calpe, 1959. +% +% IRANOR [AENOR], Normas \lsc{UNE} n'umeros 5010 (<<Signos +% matem'aticos>>), 5028 (<<S'imbolos +% geom'etricos>>) y 5029 (<<Impresi'on de los +% s'imbolos de magnitudes y unidades y de los n'umeros>>). +% [Obsoletas.] +% +% Real Academia Espa'nola, +% \textit{Esbozo de una nueva gram'atica de la +% lengua espa'nola}, Madrid, Espasa-Calpe, 1973. +% +% V.\ Mart'inez Sicluna, +% \textit{Teor'ia y pr'actica de la tipograf'ia}, +% Barcelona, Gustavo Gili, 1945. +% +% Jos'e Mart'inez de Sousa, +% \textit{Diccionario de ortograf'ia de la lengua espa'nola}, +% Madrid, Paraninfo, 1996. +% +% Juan Mart'inez Val, \textit{Tipograf'ia pr'actica}, Madrid, +% Laberinto, 2002. +% +% Juan Jos'e Morato, \textit{Gu'ia pr'actica del compositor +% tipogr'afico}, Madrid, Hernando, 2"a ed., 1908 (1"a ed., 1900, +% 3"a ed., 1933). +% +% Marion Neubauer, +% <<Feinheiten bei wissenschaftlichen Publikationen>>, +% \textit{Die \TeX nisches Kom\"odie}, parte I, vol. 8, n"o 4, 1996, +% p'ags. 23-40; parte II, vol. 9, n"o 1, 1997, p'ags.~25~-44. +% +% Jos'e Polo, +% \textit{Ortograf'ia y ciencia del lenguaje}, Madrid, Paraninfo, +% 1974. +% +% Pedro Valle, +% \textit{C'omo corregir sin ofender}, Buenos Aires, Lumen, 1998. +% +% Hugh C. Wolfe, <<S'imbolos, unidades y nomenclatura>>, +% \textit{Enciclopedia de F'isica}, dir. Rita G. Lerner y George L. +% Trigg, Madrid, Alianza, 1987, t.~2, p'ags.~1423~-1451. +% +% \endgroup +% +% \end{userdtx} +% +% \begin{userdrv} +%^^A ======= Beginning of text as typeset by user.drv ========= +% +% \GetFileInfo{spanish.dtx} +% +% \section{The Spanish language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. The original author from v4.0 on is Javier +% Bezos. Previous versions were by Julio S\'anchez.} defines all the +% language-specific macros for the Spanish language. +% +% Custumization is made following mainly the +% books on the subject by Jos\'e Mart\'\i nez de Sousa. +% By typesetting |spanish.dtx| directly you will get the full +% documentation (regrettably is in Spanish only, but it is +% pretty long). References in this part refers to that document. +% There are several aditional features documented in the Spanish +% version only. +% +% This style provides: +% \begin{itemize} +% \item Translations following the International \LaTeX{} +% conventions, as well as |\today|. +% +% \item Shorthands listed in Table~\ref{tab:spanish-quote-def}. +% Examples in subsection~3.4 are illustrative. Note that +% |"~| has a special meaning in \textsf{spanish} +% different to other languages, and is used mainly in linguistic +% contexts. +% +% \begin{table}[htb] +% \centering +% \begin{tabular}{lp{8cm}} +% |'a| & acute accented a. Also for: e, i, o, u (both +% lowercase and uppercase).\\ +% |'n| & \~n (also uppercase).\\ +% |~n| & \~n (also uppercase). Deprecated.\\ +% |"u| & \"u (also uppercase).\\ +% |"a| & Ordinal numbers (also |"A|, |"o|, |"O|).\\ +% |"c| & \c{c} (also uppercase).\\ +% |"rr| & rr, but -r when hyphenated\\ +% |"-| & Like |\-|, but allowing hyphenation in the rest +% the word.\\ +% |"=| & Like |-|, but allowing hyphenation in the rest +% the word.\\ +% |"~| & The hyphen is repeated at the very beginning of +% the next line if the word is hyphenated at this +% point.\\ +% |""| & Like |"-| but producing no hyphen sign.\\ +% |~-| & Like |-| but with no break after the hyphen. Also for: +% en-dashes (|~--|) and em-dashes (|~---|). \\ +% |"/| & A slash slightly lowered, if necessary.\\ +% \verb+"|+ & disable ligatures at this point.\\ +% |"<| & Left guillemets.\\ +% |">| & Right guillemets.\\ +% |<<| & |\begin{quoting}|. (See text.)\\ +% |>>| & |\end{quoting}|. (See text.) +% \end{tabular} +% \caption{Extra definitions made by file \file{spanish.ldf}} +% \label{tab:spanish-quote-def} +% \end{table} +% +% \item |\deactivatetilden| deactivates the |~n| and |~N| shorthands. +% +% \item \emph{In math mode} a dot followed by a digit is replaced +% by a decimal comma. +% +% \item Spanish ordinals and abbeviations with |\sptext| +% as, for instance, |1\sptext{er}|. The +% preceptive dot is included. +% +% \item Accented functions: l\'\i m, m\'ax, m\'\i n, m\'od. You may +% globally omit the accents with |\unaccentedoperators|. Spaced +% functions: arc\,cos, etc. You may globally kill that space with +% |\unspacedoperators|. |\dotlessi| is provided for use in math mode. +% +% \item A |quoting| environment and a related pair of shorthands |<<| +% and |>>|. The command +% |\deactivatequoting| deactivates these shorthand in case +% you want to use |<| and |>| in some AMS commands and numerical +% comparisons. +% +% \item The command |\selectspanish| selects the |spanish| language +% \emph{and} its shorthands. (Intended for the preamble.) +% +% \item |\frenchspacing| is used. +% +% \item Ellipsis are best typed |...| or, within a sentence, |\...| +% +% \item There is a small space before |\%|. +% +% \item |\lsc| provides lowercase small caps. (See subsection~3.10.) +% \end{itemize} +% +% Just in case |spanish| is the main language, the group +% |\layoutspanish| is activated, which modifies the standard +% classes through the whole document (it cannot be deactivated) +% in the following way: +% \begin{itemize} +% \item Both |enumerate| and |itemize| are adapted to Spanish rules. +% +% \item Both |\alph| and |\Alph| include \textit{\~n} after \textit{n}. +% +% \item Symbol footmarks are one, two, three, etc., asteriscs. +% +% \item |OT1| guillemets are generated with two |lasy| symbols instead +% of small |\ll| and |\gg|. +% +% \item |\roman| is redefined to write small caps roman numerals, since +% lowercase roman numerals are not allowed. However, \textit{MakeIndex} +% rejects entries containing pages in that format. The |.idx| file must +% be preprocessed if the document has this kind of entries with +% the provided |romanidx.tex| tool---just \TeX{} it and follow the +% instructions. +% +% \item There is a dot after section numbers in titles and toc. +% \end{itemize} +% This group is ignored if you write |\selectspanish*| in the +% preamble. +% +% Some additional commands are provided to be used in the +% |spanish.cfg| file: +% \begin{itemize} +% \item With |\es@activeacute| acute accents are always active, +% overriding the default \textsf{babel} behaviour. +% +% \item |\es@enumerate| sets the labels to be used by |enumerate|. The +% same applies to |\es@itemize| and |itemize|. +% +% \item |\es@operators| stores the operator commands. +% All of them are canceled with +%\begin{verbatim} +% \let\es@operators\relax +%\end{verbatim} +% \end{itemize} +% The commands |\deactivatequoting|, |\deactivatetilden| and +% |\selectspanish| may be used in this file, too. +% +% A subset of these commands is provided for +% use in Plain \TeX{} (with |\input spanish.sty|). +% +% \end{userdrv} +% +%\StopEventually{} +% +%^^A ========== End of manual =============== +% +% \begin{userdtx} +% +% \section{The Code} +% +% \end{userdtx} +% +% \begin{userdrv} +% +% \subsection{The Code} +% +% \end{userdrv} +% +% \changes{spanish~4.0f}{99/04/12}{Beginning of changes to follow the +% doc conventions} +% \changes{spanish~4.0d}{99/03/26}{Changed some parts for babel.ins +% to generate the files} +% \changes{spanish~4.0e}{99/04/10}{Adapted to 3.6k with some minor +% changes, since most of features intended for 3.7 are included +% now} +% \changes{spanish~4.0d}{99/03/26}{Restored the test for \cs{LdfInit}. +% It is redundant for LaTeX209 but not for plain} +% \changes{spanish~4.0d}{99/03/29}{With a shoddy piece of work, the +% plain variant works (at last). Instead of inputting +% \file{babel.def} we input \file{switch.def}. To be changed, I +% think, since now \file{plain.def} is read twice} +% \changes{spanish~4.0e}{99/04/10}{Replaced all instances of +% allowhyphens by \cs{bbl@allowhyphens}} +% \changes{spanish~4.0g}{99/05/05}{The code introduced the 99/03/29 +% (see above) has been removed} +% \changes{spanish~4.1a}{99/12/26}{Added \cs{spanishdecimal}.} +% \changes{spanish~4.1b}{00/06/16}{Added the Spanish et sign.} +% \changes{spanish~4.1a}{99/12/29}{Modified \cs{@marginparreset} +% in order to kill the continuing guillemets.} +% \changes{spanish~4.1a}{00/01/09}{\cs{sptext} protected.} +% +% This file provides definition for both \LaTeXe{} and non +% \LaTeXe{} formats. +% +% Identify the |ldf| file. +% +% \changes{spanish~4.0g}{99/05/05}{Replaced \cs{ProvidesFile} +% by \cs{ProvidesLanguage}} +% \changes{spanish~4.0j}{99/09/18}{Renamed spanish.tex as spanish.lpf} +% +% \begin{macrocode} +%<*code> +\ProvidesLanguage{spanish.ldf} + [2005/03/31 v4.2b Spanish support from the babel system] +% \end{macrocode} +% +% The macro |\LdfInit| takes care of preventing that this file is +% loaded more than once, checking the category code of the +% \texttt{@} sign, etc. +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{spanish} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@spanish| to see whether we have to do something here. +% +% \changes{spanish~4.0a}{98/09/23}{All files renamed from spanishb +% to spanish as requested by the Spanish TeX list, since this +% style should replace the current Spanish option. Julio +% Sanchez gave up supporting his files and he has withdrawn +% from his TeX activities. The last distributed version as +% spanishb was 1.1.} +% \changes{spanish~4.0a}{98/09/12}{Introduced \cs{LdfInit} setup} +% \begin{macrocode} +\LdfInit{spanish}\captionsspanish +\ifx\undefined\l@spanish + \@nopatterns{Spanish} + \adddialect\l@spanish0 +\fi +% \end{macrocode} +% +% We define some tools which will be used in that style file: +% (1) we make sure that |~| is active, (2) |\es@delayed| delays +% the expansion of the code in conditionals (in fact, quite similar +% to |\bbl@afterfi|). +% +% \changes{spanish~4.0a}{98/09/12}{Test for 209 moved from sty} +% \changes{spanish~4.1a}{99/12/01}{Introduced the \cs{es@delayed} +% mechanism for ``conflictive'' conditionals.} +% \begin{macrocode} +\edef\es@savedcatcodes{% + \catcode`\noexpand\~=\the\catcode`\~ + \catcode`\noexpand\"=\the\catcode`\"} +\catcode`\~=\active +\catcode`\"=12 +\long\def\es@delayed#1\then#2\else#3\fi{% + #1% + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {#2}{#3}} +% \end{macrocode} +% +% Two tests are introduced. The first one tells us if the format is +% \LaTeXe{}, and the second one if the format is plain or any other. +% If both are false, the format is \LaTeX2.09{}. +% +% \begin{macrocode} +\es@delayed +\expandafter\ifx\csname documentclass\endcsname\relax\then + \let\ifes@LaTeXe\iffalse +\else + \let\ifes@LaTeXe\iftrue +\fi +\es@delayed +\expandafter\ifx\csname newenvironment\endcsname\relax\then + \let\ifes@plain\iftrue +\else + \let\ifes@plain\iffalse +\fi +% \end{macrocode} +% +% Translations for captions. +% +% \changes{spanishb~1.1}{98/03/17}{Corrected \cs{indexname} to the +% promised text} +% \changes{spanish~4.1c}{00/10/04}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionsspanish{% + \def\prefacename{Prefacio}% + \def\refname{Referencias}% + \def\abstractname{Resumen}% + \def\bibname{Bibliograf\'{\i}a}% + \def\chaptername{Cap\'{\i}tulo}% + \def\appendixname{Ap\'endice}% + \def\listfigurename{\'Indice de figuras}% + \def\listtablename{\'Indice de cuadros}% + \def\indexname{\'Indice alfab\'etico}% + \def\figurename{Figura}% + \def\tablename{Cuadro}% + \def\partname{Parte}% + \def\enclname{Adjunto}% + \def\ccname{Copia a}% + \def\headtoname{A}% + \def\pagename{P\'agina}% + \def\seename{v\'ease}% + \def\alsoname{v\'ease tambi\'en}% + \def\proofname{Demostraci\'on}% + \def\glossaryname{Glosario}} + +\expandafter\ifx\csname chapter\endcsname\relax + \addto\captionsspanish{\def\contentsname{\'Indice}} +\else + \addto\captionsspanish{\def\contentsname{\'Indice general}} +\fi +% \end{macrocode} +% +% And the date. +% \changes{spanish~4.2a}{03/08/08}{Added the mechanism to +% select \textit{del} or \textit{de}} +% \begin{macrocode} +\def\datespanish{% + \def\today{\the\day~de \ifcase\month\or enero\or febrero\or + marzo\or abril\or mayo\or junio\or julio\or agosto\or + septiembre\or octubre\or noviembre\or diciembre\fi + \ de\ifnum\year>1999\es@yearl\fi~\the\year}} +\def\spanishdatedel{\def\es@yearl{l}} +\def\spanishdatede{\let\es@yearl\@empty} +\spanishdatede +% \end{macrocode} +% +% The basic macros to select the language, in the preamble or the +% config file. Use of |\selectlanguage| should be avoided at this +% early stage because the active chars are not yet +% active. |\selectspanish| makes them active. +% +% \begin{macrocode} +\def\selectspanish{% + \def\selectspanish{% + \def\selectspanish{% + \PackageWarning{spanish}{Extra \string\selectspanish ignored}}% + \es@select}} + +\@onlypreamble\selectspanish + +\def\es@select{% + \let\es@select\@undefined + \selectlanguage{spanish}% + \catcode`\"\active\catcode`\~=\active} +% \end{macrocode} +% +% Instead of joining all the extras directly in |\extrasspanish|, +% we subdivide them in three further groups. +% \changes{spanish~4.0a}{99/11/30}{The extras subdivided into three +% further groups.} +% \changes{spanish~4.2a}{03/08/08}{The dot is deactitated, too} +% \begin{macrocode} +\def\extrasspanish{% + \textspanish + \mathspanish + \ifx\shorthandsspanish\@empty + \spanishdeactivate{."'~<>}% + \languageshorthands{none}% + \else + \shorthandsspanish + \fi} +\def\noextrasspanish{% + \ifx\textspanish\@empty\else + \notextspanish + \fi + \ifx\mathspanish\@empty\else + \nomathspanish + \fi + \ifx\shorthandsspanish\@empty\else + \noshorthandsspanish + \fi + \es@reviveshorthands} +% \end{macrocode} +% +% And the first of these sub-groups is defined. +% +% \begin{macrocode} +\addto\textspanish{% + \babel@save\sptext + \def\sptext{\protect\es@sptext}} +% \end{macrocode} +% +% The definition of |\sptext| is more elaborated than that of +% |\textsuperscript|. With uppercase superscript text +% the scriptscriptsize is used. The mandatory dot is already +% included. There are two versions, depending on the +% format. +% +% \begin{macrocode} +\ifes@LaTeXe %<<<<<< + \newcommand\es@sptext[1]{% + {.\setbox\z@\hbox{8}\dimen@\ht\z@ + \csname S@\f@size\endcsname + \edef\@tempa{\def\noexpand\@tempc{#1}% + \lowercase{\def\noexpand\@tempb{#1}}}\@tempa + \ifx\@tempb\@tempc + \fontsize\sf@size\z@ + \selectfont + \advance\dimen@-1.15ex + \else + \fontsize\ssf@size\z@ + \selectfont + \advance\dimen@-1.5ex + \fi + \math@fontsfalse\raise\dimen@\hbox{#1}}} +\else %<<<<<< + \let\sptextfont\rm + \newcommand\es@sptext[1]{% + {.\setbox\z@\hbox{8}\dimen@\ht\z@ + \edef\@tempa{\def\noexpand\@tempc{#1}% + \lowercase{\def\noexpand\@tempb{#1}}}\@tempa + \ifx\@tempb\@tempc + \advance\dimen@-0.75ex + \raise\dimen@\hbox{$\scriptstyle\sptextfont#1$}% + \else + \advance\dimen@-0.8ex + \raise\dimen@\hbox{$\scriptscriptstyle\sptextfont#1$}% + \fi}} +\fi %<<<<<< +% \end{macrocode} +% +% Now, lowercase small caps. First, we test if there are actual +% small caps for the current font. If not, faked small caps are +% used. The \cs{selectfont} in \cs{es@lsc} could seem redundant, +% but it's not. +% +% \changes{spanishb~1.1}{98/05/11}{\cs{es@lsc} rewritten to +% incorporate the procedure so far available in +% \cs{roman} only} +% \changes{spanish~4.0e}{99/04/10}{Added \cs{leavevmode}} +% \begin{macrocode} +\ifes@LaTeXe %<<<<<< + \addto\textspanish{% + \babel@save\lsc + \def\lsc{\protect\es@lsc}} + + \def\es@lsc#1{% + \leavevmode + \hbox{\scshape\selectfont + \expandafter\ifx\csname\f@encoding/\f@family/\f@series + /n/\f@size\expandafter\endcsname + \csname\curr@fontshape/\f@size\endcsname + \csname S@\f@size\endcsname + \fontsize\sf@size\z@\selectfont + \PackageInfo{spanish}{Replacing undefined sc font\MessageBreak + shape by faked small caps}% + \MakeUppercase{#1}% + \else + \MakeLowercase{#1}% + \fi}} +\fi %<<<<<< +% \end{macrocode} +% +% The |quoting| environment. This part is not available +% in Plain, hence the test. Overriding the default |\everypar| is +% a bit tricky. +% +% \begin{macrocode} +\newif\ifes@listquot + +\ifes@plain\else %<<<<<< + \csname newtoks\endcsname\es@quottoks + \csname newcount\endcsname\es@quotdepth + + \newenvironment{quoting} + {\leavevmode + \advance\es@quotdepth1 + \csname lquot\romannumeral\es@quotdepth\endcsname% + \ifnum\es@quotdepth=\@ne + \es@listquotfalse + \let\es@quotpar\everypar + \let\everypar\es@quottoks + \everypar\expandafter{\the\es@quotpar}% + \es@quotpar{\the\everypar + \ifes@listquot\global\es@listquotfalse\else\es@quotcont\fi}% + \fi + \toks@\expandafter{\es@quotcont}% + \edef\es@quotcont{\the\toks@ + \expandafter\noexpand + \csname rquot\romannumeral\es@quotdepth\endcsname}} + {\csname rquot\romannumeral\es@quotdepth\endcsname} + + \def\lquoti{\guillemotleft{}} + \def\rquoti{\guillemotright{}} + \def\lquotii{``} + \def\rquotii{''} + \def\lquotiii{`} + \def\rquotiii{'} + + \let\es@quotcont\@empty +% \end{macrocode} +% +% If there is a margin par inside quoting, we don't add the +% quotes. |\es@listqout| stores the quotes to be used before +% item labels; otherwise they could appear after the labels. +% +% \begin{macrocode} + \addto\@marginparreset{\let\es@quotcont\@empty} + + \def\es@listquot{% + \csname rquot\romannumeral\es@quotdepth\endcsname + \global\es@listquottrue} +\fi %<<<<<< +% \end{macrocode} +% +% Now, the |\frenchspacing|, followed by |\...| and |\%| +% +% \changes{spanish~4.0e}{99/04/10}{Added ignorespaces to \cs{es@dots}} +% \changes{spanish~4.1d}{01/09/12}{Now there are two versions of +% percent sign} +% \begin{macrocode} +\addto\textspanish{\bbl@frenchspacing} +\addto\notextspanish{\bbl@nonfrenchspacing} + +\addto\textspanish{% + \let\es@save@dot\.% + \babel@save\.% + \def\.{\@ifnextchar.{\es@dots}{\es@save@dot}}} + +\def\es@dots..{\leavevmode\hbox{...}\spacefactor\@M} + +\ifes@LaTeXe %<<<<<< + \addto\textspanish{% + \let\percentsign\%% + \babel@save\%% + \def\%{\unskip\,\percentsign{}}} +\else + \addto\textspanish{% + \let\percentsign\%% + \babel@save\%% + \def\%{\unskip\ifmmode\,\else$\m@th\,$\fi\percentsign{}}} +\fi +% \end{macrocode} +% +% We follow with the math group. +% It's not easy to add an accent in an operator. +% The difficulty is that we must avoid using text (that is, +% |\mbox|) because we have no control on font and size, and +% at time we should access |\i|, which is a text +% command forbidden in math mode. |\dotlessi| must be +% converted to uppercase if necessary in \LaTeXe. There are +% two versions, depending on the format. +% +% \changes{spanishb~1.1}{98/04/01}{dotless math i handling +% rewritten} +% \changes{spanishb~1.1}{98/05/13}{Again rewriten in full. Now +% that character is accesible as \cs{dotlessi}} +% \changes{spanish~4.0c}{98/12/07}{Moved from its original place below. +% Decimal values replaced by hex ones.} +% \changes{spanish~4.0k}{99/10/12}{Minor improvementes in +% \cs{es@dotlessi}. Now it behaves like the dotlessi.sty package} +% \changes{spanish~4.1f}{02/05/17}{\cs{i} not used directly in +% the upper/lowercase list} +% \begin{macrocode} +\addto\mathspanish{% + \babel@save\dotlessi + \def\dotlessi{\protect\es@dotlessi}} + +\let\nomathspanish\relax %% Unused, but called + +\ifes@LaTeXe %<<<<<< + \def\es@texti{\i} + \addto\@uclclist{\dotlessi\es@texti} +\fi %<<<<<< + +\ifes@LaTeXe %<<<<<< + \def\es@dotlessi{% + \ifmmode + {\ifnum\mathgroup=\m@ne + \imath + \else + \count@\escapechar \escapechar=\m@ne + \expandafter\expandafter\expandafter + \split@name\expandafter\string\the\textfont\mathgroup\@nil + \escapechar=\count@ + \@ifundefined{\f@encoding\string\i}% + {\edef\f@encoding{\string?}}{}% + \expandafter\count@\the\csname\f@encoding\string\i\endcsname + \advance\count@"7000 + \mathchar\count@ + \fi}% + \else + \i + \fi} +\else %<<<<<< + \def\es@dotlessi{% + \ifmmode + \mathchar"7010 + \else + \i + \fi} +\fi %<<<<<< +% \end{macrocode} +% +% The switches for accents and spaces in math. +% +%\changes{spanish~4.0b}{98/11/10}{Added missing \cs{nolimits}} +%\changes{spanish~4.0c}{98/11/30}{Merged \cs{es@op@i} and +% \cs{es@op@a} into a single command. The (re)defided commands +% have been changed as suggested by JoseRa Portillo and Juan Luis +% Varona. Now it conforms the UNE 5010 norm. Code is no +% longer duplicated--\cs{operator@font} is defined for lplain +% instead} +%\changes{spanish~4.0c}{98/12/10}{Removed the explicit +% trigonometric declaration. While some functions are +% preceptive (sen, tg) some other are optional and +% defined in \cs{spanishoperators}. This is because there +% is no norm in Spanish and there is quite a chaos in their +% form. Restored the forms of v 1.1} +%\changes{spanish~4.0k}{99/10/13}{Restored the \cs{es@op@i} +% command, because we have to discriminate \cs{dotlessi} and i} +% +% \begin{macrocode} +\def\accentedoperators{% + \def\es@op@ac##1{\acute{##1}}% + \def\es@op@i{\acute{\dotlessi}}} +\def\unaccentedoperators{% + \def\es@op@ac##1{##1}% + \def\es@op@i{i}} +\accentedoperators + +\def\spacedoperators{\let\es@op@sp\,} +\def\unspacedoperators{\let\es@op@sp\@empty} +\spacedoperators +% \end{macrocode} +% +% The operators are stored in |\es@operators|, which in turn is +% included in the math group. Since |\operator@font| is +% defined in \LaTeXe{} only, we defined in the plain variant. +% +% \changes{spanish~4.0g}{99/05/05}{Restored the assignment of +% \cs{operator@font} which was misteriously missing} +% \changes{spanish~4.0i}{99/06/21}{Replaced wrong \cs{spanishoperators} +% by \cs{es@b}} +% \changes{spanish~4.0j}{99/09/17}{Removed an extra line in the lplain +% option} +% \changes{spanish~4.2a}{03/08/08}{Names including \cs{acute} can be +% formed} +% +% \begin{macrocode} +\addto\mathspanish{\es@operators} + +\ifes@LaTeXe\else %<<<<<< + \let\operator@font\rm + \def\@empty{} +\fi %<<<<<< + +\def\es@operators{% + \babel@save\lim + \def\lim{\mathop{\operator@font l\protect\es@op@i m}}% + \babel@save\limsup + \def\limsup{\mathop{\operator@font l\es@op@i m\,sup}}% + \babel@save\liminf + \def\liminf{\mathop{\operator@font l\es@op@i m\,inf}}% + \babel@save\max + \def\max{\mathop{\operator@font m\es@op@ac ax}}% + \babel@save\inf + \def\inf{\mathop{\operator@font \protect\es@op@i nf}}% + \babel@save\min + \def\min{\mathop{\operator@font m\protect\es@op@i n}}% + \babel@save\bmod + \def\bmod{% + \nonscript\mskip-\medmuskip\mkern5mu% + \mathbin{\operator@font m\es@op@ac od}\penalty900\mkern5mu% + \nonscript\mskip-\medmuskip}% + \babel@save\pmod + \def\pmod##1{% + \allowbreak\mkern18mu({\operator@font m\es@op@ac od}\,\,##1)}% + \def\es@a##1 {% + \es@delayed + \if^##1^\then % is it empty? do nothing and continue + \es@a + \else + \es@delayed + \if&##1\then % is it &? do nothing and finish + \else + \begingroup + \let\,\@empty % \, is ignored when def'ing the macro name + \let\acute\@firstofone % same + \edef\es@b{\expandafter\noexpand\csname##1\endcsname}% + \def\,{\noexpand\es@op@sp}% + \def\acute####1{% + \if i####1% + \noexpand\es@op@i + \else + \noexpand\es@op@ac####1% + \fi}% + \edef\es@a{\endgroup + \noexpand\babel@save\expandafter\noexpand\es@b + \def\expandafter\noexpand\es@b{% + \mathop{\noexpand\operator@font##1}\nolimits}}% + \es@a % It restores itself + \es@a + \fi + \fi}% + \let\es@b\spanishoperators + \addto\es@b{ }% + \expandafter\es@a\es@b sen tg arc\,sen arc\,cos arc\,tg & } + +\def\spanishoperators{cotg cosec senh tgh} +% \end{macrocode} +% +% Now comes the text shorthands. They are grouped in +% |\shorthandsspanish| and this style performs some +% operations before the babel shortands are called. +% The goals are to allow espression like |$a^{x'}$| +% and to deactivate the shorthands making them of +% category `other.' After providing a |\'i| shorthand, +% the new macros are defined. +% +% \changes{spanish~4.1a}{99/11/30}{Added basic code for +% spanish shorthands.} +% \changes{spanish~4.1a}{99/12/01}{Debugged and added support +% for the babel groups.} +% \changes{spanish~4.1c}{00/10/04}{Revised so that it +% now uses the babel shorthands} +% \changes{spanish~4.2a}{03/08/08}{Deactivation of dot as +% a special case} +% \begin{macrocode} +\DeclareTextCompositeCommand{\'}{OT1}{i}{\@tabacckludge'{\i}} + +\def\es@set@shorthand#1{% + \expandafter\edef\csname es@savecat\string#1\endcsname + {\the\catcode`#1}% + \initiate@active@char{#1}% + \catcode`#1=\csname es@savecat\string#1\endcsname\relax + \expandafter\let\csname es@math\string#1\expandafter\endcsname + \csname normal@char\string#1\endcsname} + +\def\es@use@shorthand{% + \es@delayed + \ifx\thepage\relax\then + \string + \else{% + \es@delayed + \ifx\protect\@unexpandable@protect\then + \noexpand + \else + \es@use@sh + \fi}% + \fi} + +\def\es@text@sh#1{\csname active@char\string#1\endcsname} +\def\es@math@sh#1{\csname es@math\string#1\endcsname} + +\def\es@use@sh{% + \es@delayed + \if@safe@actives\then + \string + \else{% + \es@delayed + \ifmmode\then + \es@math@sh + \else + \es@text@sh + \fi}% + \fi} + +\gdef\es@activate#1{% + \begingroup + \lccode`\~=`#1 + \lowercase{% + \endgroup + \def~{\es@use@shorthand~}}} + +\def\spanishdeactivate#1{% + \@tfor\@tempa:=#1\do{\expandafter\es@spdeactivate\@tempa}} + +\def\es@spdeactivate#1{% + \if.#1% + \mathcode`\.=\es@period@code + \else + \begingroup + \lccode`\~=`#1 + \lowercase{% + \endgroup + \expandafter\let\expandafter~% + \csname normal@char\string#1\endcsname}% + \catcode`#1\csname es@savecat\string#1\endcsname\relax + \fi} + +\def\es@reviveshorthands{% + \es@restore{"}\es@restore{~}% + \es@restore{<}\es@restore{>}% + \es@quoting} + +\def\es@restore#1{% + \catcode`#1=\active + \begingroup + \lccode`\~=`#1 + \lowercase{% + \endgroup + \bbl@deactivate{~}}} +% \end{macrocode} +% +% But \textsf{spanish} allows two category codes for |'|, +% so both should be taken into account in \cs{bbl@pr@m@s}. +% +% \changes{spanish~4.1c}{00/10/03}{Added support for primes +% which are either `active' or `other'} +% \begin{macrocode} +\begingroup +\catcode`\'=12 +\lccode`~=`' \lccode`'=`' +\lowercase{% +\gdef\bbl@pr@m@s{% + \es@delayed + \ifx~\@let@token\then + \pr@@@s + \else + {\es@delayed + \ifx'\@let@token\then + \pr@@@s + \else + {\es@delayed + \ifx^\@let@token\then + \pr@@@t + \else + \egroup + \fi}% + \fi}% + \fi}} +\endgroup +% \end{macrocode} +% +% \changes{spanishb~1.1}{98/05/15}{Rewritten part} +% \changes{spanish~4.0c}{98/12/07}{Optimized a bit} +% +% \begin{macrocode} +\expandafter\ifx\csname @tabacckludge\endcsname\relax + \let\es@tak\a +\else + \let\es@tak\@tabacckludge +\fi + +\ifes@LaTeXe %<<<<<< + \def\@tabacckludge#1{\expandafter\es@tak\string#1} + \let\a\@tabacckludge +\else\ifes@plain %<<<<<< + \def\@tabacckludge#1{\csname\string#1\endcsname} +\else %<<<<<< + \def\@tabacckludge#1{\csname a\string#1\endcsname} +\fi\fi %<<<<<< + +\expandafter\ifx\csname add@accent\endcsname\relax + \def\add@accent#1#2{\accent#1 #2} +\fi +% \end{macrocode} +% +% Instead of redefining |\'|, we redefine the internal +% macro for the OT1 encoding. +% \changes{spanish~4.1f}{02/05/17}{The spacefactor is restored +% with the method used in LaTeX2e} +% \begin{macrocode} +\ifes@LaTeXe %<<<<<< + \def\es@accent#1#2#3{% + \expandafter\@text@composite + \csname OT1\string#1\endcsname#3\@empty\@text@composite + {\bbl@allowhyphens\add@accent{#2}{#3}\bbl@allowhyphens + \setbox\@tempboxa\hbox{#3% + \global\mathchardef\accent@spacefactor\spacefactor}% + \spacefactor\accent@spacefactor}} +\else %<<<<<< + \def\es@accent#1#2#3{% + \bbl@allowhyphens\add@accent{#2}{#3}\bbl@allowhyphens + \spacefactor\sfcode`#3 } +\fi %<<<<<< +% \end{macrocode} +% +% The shorthands are activated in the aux file. Now, we begin +% the shorthands group. +% +% \changes{spanish~4.0j}{99/09/15}{Added shorthands for \cs{protect} +% following active chars. This way, they work in headers} +% \changes{spanish~4.0l}{99/11/13}{Added the \cs{es@activate} +% command, which makes the shorthands more robust in math mode. +% In particular, any of them may be followed by a closing brace} +% \begin{macrocode} +\addto\shorthandsspanish{\languageshorthands{spanish}} +\let\noshorthandsspanish\relax +% \end{macrocode} +% +% First, decimal comma. +% +% \changes{spanish~4.1c}{00/10/03}{Removed an unnecessary macro.} +% \begin{macrocode} +\def\spanishdecimal#1{\def\es@decimal{{#1}}} +\def\decimalcomma{\spanishdecimal{,}} +\def\decimalpoint{\spanishdecimal{.}} +\decimalcomma + +\es@set@shorthand{.} + +\@namedef{es@math\string.}{% + \@ifnextchar\egroup + {\mathchar\es@period@code\relax}% + {\es@text@sh.}} + +\declare@shorthand{system}{.}{\mathchar\es@period@code\relax} +% \end{macrocode} +% +% \changes{spanish~4.0a}{98/09/10}{After the . is activated, it is +% redefined to avoid errors if followed by a closing brace. +% Changed \cs{edef} by \cs{mathchardef}. Use +% \cs{babel@savevariable}instead of \cs{noextrasspanish}.} +% \changes{spanish~4.0e}{99/04/10}{The catcode is restored in +% the aux file, too} +% \begin{macrocode} +\addto\shorthandsspanish{% + \mathchardef\es@period@code\the\mathcode`\.% + \babel@savevariable{\mathcode`\.}% + \mathcode`\.="8000 % + \es@activate{.}} + +\AtBeginDocument{% + \catcode`\.=12 + \if@filesw + \immediate\write\@mainaux{% + \string\catcode`\string\.=12}% + \fi} + +\declare@shorthand{spanish}{.1}{\es@decimal1} +\declare@shorthand{spanish}{.2}{\es@decimal2} +\declare@shorthand{spanish}{.3}{\es@decimal3} +\declare@shorthand{spanish}{.4}{\es@decimal4} +\declare@shorthand{spanish}{.5}{\es@decimal5} +\declare@shorthand{spanish}{.6}{\es@decimal6} +\declare@shorthand{spanish}{.7}{\es@decimal7} +\declare@shorthand{spanish}{.8}{\es@decimal8} +\declare@shorthand{spanish}{.9}{\es@decimal9} +\declare@shorthand{spanish}{.0}{\es@decimal0} +% \end{macrocode} +% +% Now accents and tools +% +% \changes{spanish~4.0d}{99/03/26}{Removed the tilde settings +% because they are included in babel.def} +% \changes{spanish~4.0b}{98/10/02}{Introduced \cs{es@umlaut} to allow +% further division in words containing g\"u} +% \changes{spanish~4.0c}{98/12/02}{Added missing space at the end +% of \cs{es@umlaut}} +% \begin{macrocode} +\es@set@shorthand{"} +\def\es@umlaut#1{% + \bbl@allowhyphens\add@accent{127}#1\bbl@allowhyphens + \spacefactor\sfcode`#1 } +% \end{macrocode} +% +% We override the default |"| of babel, intended for german. +% +% \begin{macrocode} +\ifes@LaTeXe %<<<<<< + \addto\shorthandsspanish{% + \es@activate{"}% + \es@activate{~}% + \babel@save\bbl@umlauta + \let\bbl@umlauta\es@umlaut + \expandafter\babel@save\csname OT1\string\~\endcsname + \expandafter\def\csname OT1\string\~\endcsname{\es@accent\~{126}}% + \expandafter\babel@save\csname OT1\string\'\endcsname + \expandafter\def\csname OT1\string\'\endcsname{\es@accent\'{19}}} +\else %<<<<<< + \addto\shorthandsspanish{% + \es@activate{"}% + \es@activate{~}% + \babel@save\bbl@umlauta + \let\bbl@umlauta\es@umlaut + \babel@save\~% + \def\~{\es@accent\~{126}}% + \babel@save\'% + \def\'#1{\if#1i\es@accent\'{19}\i\else\es@accent\'{19}{#1}\fi}} +\fi %<<<<<< +% \end{macrocode} +% \changes{spanish~4.0c}{98/11/19}{Subtituted +% \cs{char}\cs{hyphenchar}\cs{font} for some instances of -} +% \changes{spanish~4.0h}{98/06/06}{Added \cs{deactivatetilden}} +% \changes{spanish~4.2a}{03/08/08}{Added raised ?` and !`} +% \changes{spanish~4.2b}{03/09/12}{Added er and ER} +% \begin{macrocode} +\declare@shorthand{spanish}{"a}{\protect\es@sptext{a}} +\declare@shorthand{spanish}{"A}{\protect\es@sptext{A}} +\declare@shorthand{spanish}{"o}{\protect\es@sptext{o}} +\declare@shorthand{spanish}{"O}{\protect\es@sptext{O}} +\declare@shorthand{spanish}{"e}{\protect\es@sptext@r{e}} +\declare@shorthand{spanish}{"E}{\protect\es@sptext@r{E}} + +\def\es@sptext@r#1#2{\es@sptext{#1#2}} + +\declare@shorthand{spanish}{"u}{\"u} +\declare@shorthand{spanish}{"U}{\"U} + +\declare@shorthand{spanish}{"c}{\c{c}} +\declare@shorthand{spanish}{"C}{\c{C}} + +\declare@shorthand{spanish}{"<}{\guillemotleft{}} +\declare@shorthand{spanish}{">}{\guillemotright{}} +\declare@shorthand{spanish}{"-}{\bbl@allowhyphens\-\bbl@allowhyphens} +\declare@shorthand{spanish}{"=}% + {\bbl@allowhyphens\char\hyphenchar\font\hskip\z@skip} +\declare@shorthand{spanish}{"~} + {\bbl@allowhyphens\discretionary{\char\hyphenchar\font}% + {\char\hyphenchar\font}{\char\hyphenchar\font}\bbl@allowhyphens} +\declare@shorthand{spanish}{"r} + {\bbl@allowhyphens\discretionary{\char\hyphenchar\font}% + {}{r}\bbl@allowhyphens} +\declare@shorthand{spanish}{"R} + {\bbl@allowhyphens\discretionary{\char\hyphenchar\font}% + {}{R}\bbl@allowhyphens} +\declare@shorthand{spanish}{"y} + {\@ifundefined{scalebox}% + {\ensuremath{\tau}}% + {\raisebox{1ex}{\scalebox{-1}{\resizebox{.45em}{1ex}{2}}}}} +\declare@shorthand{spanish}{""}{\hskip\z@skip} +\declare@shorthand{spanish}{"/} + {\setbox\z@\hbox{/}% + \dimen@\ht\z@ + \advance\dimen@-1ex + \advance\dimen@\dp\z@ + \dimen@.31\dimen@ + \advance\dimen@-\dp\z@ + \ifdim\dimen@>0pt + \kern.01em\lower\dimen@\box\z@\kern.03em + \else + \box\z@ + \fi} +\declare@shorthand{spanish}{"?} + {\setbox\z@\hbox{?`}% + \leavevmode\raise\dp\z@\box\z@} +\declare@shorthand{spanish}{"!} + {\setbox\z@\hbox{!`}% + \leavevmode\raise\dp\z@\box\z@} + +\es@set@shorthand{~} +\declare@shorthand{spanish}{~n}{\~n} +\declare@shorthand{spanish}{~N}{\~N} +\declare@shorthand{spanish}{~-}{% + \leavevmode + \bgroup + \let\@sptoken\es@dashes % This assignation changes the + \@ifnextchar-% \@ifnextchar behaviour + {\es@dashes}% + {\hbox{\char\hyphenchar\font}\egroup}} +\def\es@dashes-{% + \@ifnextchar-% + {\bbl@allowhyphens\hbox{---}\bbl@allowhyphens\egroup\@gobble}% + {\bbl@allowhyphens\hbox{--}\bbl@allowhyphens\egroup}} + +\def\deactivatetilden{% + \expandafter\let\csname spanish@sh@\string~@n@\endcsname\relax + \expandafter\let\csname spanish@sh@\string~@N@\endcsname\relax} +% \end{macrocode} +% +% The shorthands for |quoting|. +% +% \changes{spanish~4.1d}{01/09/10}{Disabled if in xmltex} +% \begin{macrocode} +\expandafter\ifx\csname XML@catcodes\endcsname\relax + \addto\es@select{% + \catcode`\<\active\catcode`\>=\active + \es@quoting} + + \es@set@shorthand{<} + \es@set@shorthand{>} + + \declare@shorthand{system}{<}{\csname normal@char\string<\endcsname} + \declare@shorthand{system}{>}{\csname normal@char\string>\endcsname} + + \addto\shorthandsspanish{% + \es@activate{<}% + \es@activate{>}} +% \end{macrocode} +% +% \changes{spanish~4.0e}{99/04/10}{\cs{es@quoting} is written to the +% aux file, too} +% \begin{macrocode} + \ifes@LaTeXe %<<<<<< + \AtBeginDocument{% + \es@quoting + \if@filesw + \immediate\write\@mainaux{\string\es@quoting}% + \fi}% + \fi %<<<<<< + + \def\activatequoting{% + \catcode`>=\active \catcode`<=\active + \let\es@quoting\activatequoting} + \def\deactivatequoting{% + \catcode`>=12 \catcode`<=12 + \let\es@quoting\deactivatequoting} + + \declare@shorthand{spanish}{<<}{\begin{quoting}} + \declare@shorthand{spanish}{>>}{\end{quoting}} +\fi + +\let\es@quoting\relax +\let\deactivatequoting\relax +\let\activatequoting\relax +% \end{macrocode} +% +% The acute accents are stored in a macro. If |activeacute| was set +% as an option it's executed. If not is not deleted for a possible +% later use in the |cfg| file. In non \LaTeXe{} formats is always +% executed. +% +% \changes{spanish~4.0l}{99/11/12}{We make a preevaluation of acute; +% in math mode, the shorthand mechanism is bypassed. That's done +% *after* the test of the protection status.} +% \begin{macrocode} +\def\es@activeacute{% + \es@set@shorthand{'}% + \addto\shorthandsspanish{\es@activate{'}}% + \addto\es@reviveshorthands{\es@restore{'}}% + \addto\es@select{\catcode`'=\active}% + \declare@shorthand{spanish}{'a}{\@tabacckludge'a}% + \declare@shorthand{spanish}{'A}{\@tabacckludge'A}% + \declare@shorthand{spanish}{'e}{\@tabacckludge'e}% + \declare@shorthand{spanish}{'E}{\@tabacckludge'E}% + \declare@shorthand{spanish}{'i}{\@tabacckludge'i}% + \declare@shorthand{spanish}{'I}{\@tabacckludge'I}% + \declare@shorthand{spanish}{'o}{\@tabacckludge'o}% + \declare@shorthand{spanish}{'O}{\@tabacckludge'O}% + \declare@shorthand{spanish}{'u}{\@tabacckludge'u}% + \declare@shorthand{spanish}{'U}{\@tabacckludge'U}% + \declare@shorthand{spanish}{'n}{\~n}% + \declare@shorthand{spanish}{'N}{\~N}% + \declare@shorthand{spanish}{''}{\textquotedblright}% + \let\es@activeacute\relax} + +\ifes@LaTeXe %<<<<<< + \@ifpackagewith{babel}{activeacute}{\es@activeacute}{} +\else %<<<<<< + \es@activeacute +\fi %<<<<<<% +% \end{macrocode} +% +% And the customization. By default these macros only +% store the values and do nothing. +% +% \begin{macrocode} +\def\es@enumerate#1#2#3#4{% + \def\es@enum{{#1}{#2}{#3}{#4}}} + +\def\es@itemize#1#2#3#4{% + \def\es@item{{#1}{#2}{#3}{#4}}} +% \end{macrocode} +% +% The part formerly in the |.lld| file comes here. It performs +% layout adaptation of \LaTeX{} to ``orthodox'' Spanish rules. +% \changes{spanish~4.1c}{00/09/30}{The box used in itemize made +% slightly smaller (.1ex).} +% \changes{spanish~4.1d}{02/01/25}{Removed extra \cs{enspace} +% which formatted differently \cs{item} with brackets.} +% \changes{spanish~4.2a}{03/08/08}{Added \cs{spanishsignitems}} +% \changes{spanish~4.2a}{03/08/08}{Mispaced \cs{es@enumerate} +% and \cs{es@itemize} moved into \cs{layoutspanish}} +% \changes{spanish~4.2b}{03/09/12}{If an entry toc has an +% empty \cs{numberline} the dot is not printed} +% \begin{macrocode} +\ifes@LaTeXe %<<<<<< + +\es@enumerate{1.}{a)}{1)}{a$'$} +\def\spanishdashitems{\es@itemize{---}{---}{---}{---}} +\def\spanishsymbitems{% + \es@itemize + {\leavevmode\hbox to 1.2ex + {\hss\vrule height .9ex width .7ex depth -.2ex\hss}}% + {\textbullet}% + {$\m@th\circ$}% + {$\m@th\diamond$}} +\def\spanishsignitems{% + \es@itemize + {\textbullet}% + {$\m@th\circ$}% + {$\m@th\diamond$}% + {$\m@th\triangleright$}} +\spanishsymbitems + +\def\es@enumdef#1#2#3\@@{% + \if#21% + \@namedef{theenum#1}{\arabic{enum#1}}% + \else\if#2a% + \@namedef{theenum#1}{\emph{\alph{enum#1}}}% + \else\if#2A% + \@namedef{theenum#1}{\Alph{enum#1}}% + \else\if#2i% + \@namedef{theenum#1}{\roman{enum#1}}% + \else\if#2I% + \@namedef{theenum#1}{\Roman{enum#1}}% + \else\if#2o% + \@namedef{theenum#1}{\arabic{enum#1}\protect\es@sptext{o}}% + \fi\fi\fi\fi\fi\fi + \toks@\expandafter{\csname theenum#1\endcsname} + \expandafter\edef\csname labelenum#1\endcsname + {\noexpand\es@listquot\the\toks@#3}} + +\addto\layoutspanish{% + \def\es@enumerate##1##2##3##4{% + \es@enumdef{i}##1\@empty\@empty\@@ + \es@enumdef{ii}##2\@empty\@empty\@@ + \es@enumdef{iii}##3\@empty\@empty\@@ + \es@enumdef{iv}##4\@empty\@empty\@@}% + \def\es@itemize##1##2##3##4{% + \def\labelitemi{\es@listquot##1}% + \def\labelitemii{\es@listquot##2}% + \def\labelitemiii{\es@listquot##3}% + \def\labelitemiv{\es@listquot##4}}% + \def\p@enumii{\theenumi}% + \def\p@enumiii{\theenumi\theenumii}% + \def\p@enumiv{\p@enumiii\theenumiii}% + \expandafter\es@enumerate\es@enum + \expandafter\es@itemize\es@item + \DeclareTextCommand{\guillemotleft}{OT1}{% + \ifmmode\ll + \else + \save@sf@q{\penalty\@M + \leavevmode\hbox{\usefont{U}{lasy}{m}{n}% + \char40 \kern-0.19em\char40 }}% + \fi}% + \DeclareTextCommand{\guillemotright}{OT1}{% + \ifmmode\gg + \else + \save@sf@q{\penalty\@M + \leavevmode\hbox{\usefont{U}{lasy}{m}{n}% + \char41 \kern-0.19em\char41 }}% + \fi}% + \def\@fnsymbol##1% + {\ifcase##1\or*\or**\or***\or****\or + *****\or******\else\@ctrerr\fi}% + \def\@alph##1% + {\ifcase##1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or \~n\or o\or p\or q\or r\or s\or t\or u\or v\or + w\or x\or y\or z\else\@ctrerr\fi}% + \def\@Alph##1% + {\ifcase##1\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or + K\or L\or M\or N\or \~N\or O\or P\or Q\or R\or S\or T\or U\or V\or + W\or X\or Y\or Z\else\@ctrerr\fi}% + \let\@afterindentfalse\@afterindenttrue + \@afterindenttrue + \def\@seccntformat##1{\csname the##1\endcsname.\quad}% + \def\numberline##1{\hb@xt@\@tempdima{##1\if&##1&\else.\fi\hfil}}% + \def\@roman##1{\protect\es@roman{\number##1}}% + \def\es@roman##1{\protect\es@lsc{\romannumeral##1}}% + \def\esromanindex##1##2{##1{\protect\es@lsc{##2}}}} +% \end{macrocode} +% +% We need to execute the following code when babel has been +% run, in order to see if |spanish| is the main language. +% +% \begin{macrocode} +\AtEndOfPackage{% + \let\es@activeacute\@undefined + \def\bbl@tempa{spanish}% + \ifx\bbl@main@language\bbl@tempa + \AtBeginDocument{\layoutspanish}% + \addto\es@select{% + \@ifstar{\let\layoutspanish\relax}% + {\layoutspanish\let\layoutspanish\relax}}% + \fi + \selectspanish} + +\fi %<<<<<< +% \end{macrocode} +% +% After restoring the catcode of |~| and setting the minimal +% values for hyphenation, the |.ldf| is finished. +% +% \changes{spanish~4.0e}{99/04/11}{Removed duplicated \cs{loadlocalcfg}} +% \changes{spanish~4.0a}{98/09/14}{Moved +% \cs{let}\cs{es@activeacute}\cs{@undefined} +% to \cs{AtEndOfPackage}} +% \changes{spanish~4.0a}{98/09/12}{Introduced \cs{ldf@finish}} +% \changes{spanish~4.1d}{01/06/06}{Removed extra \cs{endinput}} +% \begin{macrocode} +\es@savedcatcodes + +\providehyphenmins{\CurrentOption}{\tw@\tw@} + +\ifes@LaTeXe %<<<<<< + \ldf@finish{spanish} +\else %<<<<<< + \es@select + \ldf@finish{spanish} + \csname activatequoting\endcsname +\fi %<<<<<< + +%</code> +% \end{macrocode} +% That's all in the main file. Now the file with +% \textsf{custom-bib} macros. +% +% \changes{spanish~4.0b}{98/11/09}{Added support for custom-bib} +% \changes{spanish~4.0i}{99/06/21}{the mthesis and phdthesis text +% were reverted. Fixed} +% \changes{spanish~4.0i}{99/06/21}{Added \cs{bbletal}} +% \begin{macrocode} +%<*bblbst> +\def\bbland{y} +\def\bbleditors{directores} \def\bbleds{dirs.\@} +\def\bbleditor{director} \def\bbled{dir.\@} +\def\bbledby{dirigido por} +\def\bbledition{edici\'on} \def\bbledn{ed.\@} +\def\bbletal{y otros} +\def\bblvolume{vol\'umen} \def\bblvol{vol.\@} +\def\bblof{de} +\def\bblnumber{n\'umero} \def\bblno{n\sptext{o}} +\def\bblin{en} +\def\bblpages{p\'aginas} \def\bblpp{p\'ags.\@} +\def\bblpage{p\'gina} \def\bblp{p\'ag.\@} +\def\bblchapter{cap\'itulo} \def\bblchap{cap.\@} +\def\bbltechreport{informe t\'ecnico} +\def\bbltechrep{inf.\@ t\'ec.\@} +\def\bblmthesis{proyecto de fin de carrera} +\def\bblphdthesis{tesis doctoral} +\def\bblfirst {primera} \def\bblfirsto {1\sptext{a}} +\def\bblsecond{segunda} \def\bblsecondo{2\sptext{a}} +\def\bblthird {tercera} \def\bblthirdo {3\sptext{a}} +\def\bblfourth{cuarta} \def\bblfourtho{4\sptext{a}} +\def\bblfifth {quinta} \def\bblfiftho {5\sptext{a}} +\def\bblth{\sptext{a}} +\let\bblst\bblth \let\bblnd\bblth \let\bblrd\bblth +\def\bbljan{enero} \def\bblfeb{febrero} \def\bblmar{marzo} +\def\bblapr{abril} \def\bblmay{mayo} \def\bbljun{junio} +\def\bbljul{julio} \def\bblaug{agosto} \def\bblsep{septiembre} +\def\bbloct{octubre}\def\bblnov{noviembre}\def\bbldec{diciembre} +%</bblbst> +% \end{macrocode} +% +% The |spanish| option writes a macro in the page field of +% \textit{MakeIndex} in entries with small caps number, and they +% are rejected. This program is a preprocessor which moves this +% macro to the entry field. +% +% \begin{macrocode} +%<*indexes> +\makeatletter + +\newcount\es@converted +\newcount\es@processed + +\def\es@encap{`\|} +\def\es@openrange{`\(} +\def\es@closerange{`\)} + +\def\es@split@file#1.#2\@@{#1} +\def\es@split@ext#1.#2\@@{#2} + +\typein[\answer]{^^JArchivo que convertir^^J% + (extension por omision .idx):} + +\@expandtwoargs\in@{.}{\answer} +\ifin@ + \edef\es@input@file{\expandafter\es@split@file\answer\@@} + \edef\es@input@ext{\expandafter\es@split@ext\answer\@@} +\else + \edef\es@input@file{\answer} + \def\es@input@ext{idx} +\fi + +\typein[\answer]{^^JArchivo de destino^^J% + (archivo por omision: \es@input@file.eix,^^J% + extension por omision .eix):} +\ifx\answer\@empty + \edef\es@output{\es@input@file.eix} +\else + \@expandtwoargs\in@{.}{\answer} + \ifin@ + \edef\es@output{\answer} + \else + \edef\es@output{\answer.eix} + \fi +\fi + +\typein[\answer]{% + ^^J?Se ha usado algun esquema especial de controles^^J% + de MakeIndex para encap, open_range o close_range?^^J% + [s/n] (n por omision)} + +\if s\answer + \typein[\answer]{^^JCaracter para 'encap'^^J% + (\string| por omision)} + \ifx\answer\@empty\else + \edef\es@encap{% + `\expandafter\noexpand\csname\expandafter\string\answer\endcsname} + \fi + \typein[\answer]{^^JCaracter para 'open_range'^^J% + (\string( por omision)} + \ifx\answer\@empty\else + \edef\es@openrange{% + `\expandafter\noexpand\csname\expandafter\string\answer\endcsname} + \fi + \typein[\answer]{^^JCaracter para 'close_range'^^J% + (\string) por omision)} + \ifx\answer\@empty\else + \edef\es@closerange{% + `\expandafter\noexpand\csname\expandafter\string\answer\endcsname} + \fi +\fi + +\newwrite\es@indexfile +\immediate\openout\es@indexfile=\es@output + +\newif\ifes@encapsulated + +\def\es@roman#1{\romannumeral#1 } +\edef\es@slash{\expandafter\@gobble\string\\} + +\def\indexentry{% + \begingroup + \@sanitize + \es@indexentry} + +\begingroup + +\catcode`\|=12 \lccode`\|=\es@encap\relax +\catcode`\(=12 \lccode`\(=\es@openrange\relax +\catcode`\)=12 \lccode`\)=\es@closerange\relax + +\lowercase{ +\gdef\es@indexentry#1{% + \endgroup + \advance\es@processed\@ne + \es@encapsulatedfalse + \es@bar@idx#1|\@@ + \es@idxentry}% +} + +\lowercase{ +\gdef\es@idxentry#1{% + \in@{\es@roman}{#1}% + \ifin@ + \advance\es@converted\@ne + \immediate\write\es@indexfile{% + \string\indexentry{\es@b|\ifes@encapsulated\es@p\fi esromanindex% + {\ifx\es@a\@empty\else\es@slash\es@a\fi}}{#1}}% + \else + \immediate\write\es@indexfile{% + \string\indexentry{\es@b\ifes@encapsulated|\es@p\es@a\fi}{#1}}% + \fi} +} + +\lowercase{ +\gdef\es@bar@idx#1|#2\@@{% + \def\es@b{#1}\def\es@a{#2}% + \ifx\es@a\@empty\else\es@encapsulatedtrue\es@bar@eat#2\fi} +} + +\lowercase{ +\gdef\es@bar@eat#1#2|{\def\es@p{#1}\def\es@a{#2}% + \edef\es@t{(}\ifx\es@t\es@p + \else\edef\es@t{)}\ifx\es@t\es@p + \else + \edef\es@a{\es@p\es@a}\let\es@p\@empty% + \fi\fi} +} + +\endgroup + +\input \es@input@file.\es@input@ext + +\immediate\closeout\es@indexfile + +\typeout{*****************} +\typeout{Se ha procesado: \es@input@file.\es@input@ext } +\typeout{Lineas leidas: \the\es@processed} +\typeout{Lineas convertidas: \the\es@converted} +\typeout{Resultado en: \es@output} +\ifnum\es@converted>\z@ + \typeout{Genere el indice a partir de ese archivo} +\else + \typeout{No se ha realizado ningun tipo de conversion} + \typeout{Se puede generar el archivo directamente^^J% + de \es@input@file.\es@input@ext} +\fi +\typeout{*****************} +\@@end +%</indexes> +% \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 + + + + + diff --git a/Master/texmf-dist/source/generic/babel/spanish.ins b/Master/texmf-dist/source/generic/babel/spanish.ins new file mode 100644 index 00000000000..025a0f1c792 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/spanish.ins @@ -0,0 +1,151 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\batchfile{spanish.ins} +\def\filedate{2000/10/13} +\input docstrip.tex + +{\ifx\generate\undefined + \Msg{**********************************************} + \Msg{*} + \Msg{* This installation requires docstrip} + \Msg{* version 2.3c or later.} + \Msg{*} + \Msg{* An older version of docstrip has been input} + \Msg{*} + \Msg{**********************************************} + \errhelp{Move or rename old docstrip.tex.} + \errmessage{Old docstrip in input path} + \batchmode + \csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\keepsilent + +\usepreamble\mainpreamble +\generate{\file{spanish.ldf}{\from{spanish.dtx}{code}}% + \file{esbst.tex}{\from{spanish.dtx}{bblbst}}% + \file{romanidx.tex}{\from{spanish.dtx}{indexes}}} +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/swedish.dtx b/Master/texmf-dist/source/generic/babel/swedish.dtx new file mode 100644 index 00000000000..6beb68787b5 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/swedish.dtx @@ -0,0 +1,442 @@ +% \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{272} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{swedish.dtx} +%</dtx> +%<code>\ProvidesLanguage{swedish} +%\fi +%\ProvidesFile{swedish.dtx} + [2005/03/31 v2.3d Swedish support from the babel system] +%\iffalse +%% File `swedish.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Swedish language definition file. A contribution +% was made by Sten Hellman HELLMAN@CERNVM.CERN.CH +% +% Further enhancements for version 2.0 were provided by +% Erik "Osthols <erik\_osthols@yahoo.com> +%<*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{swedish.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{swedish.dtx} +% +% \changes{swedish-1.0a}{1991/07/15}{Renamed \file{babel.sty} in +% \file{babel.com}} +% \changes{swedish-1.1}{1992/02/16}{Brought up-to-date with babel 3.2a} +% \changes{swedish-1.2}{1994/02/27}{Update for LaTeX2e} +% \changes{swedish-1.3d}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{swedish-1.3e}{1995/05/28}{Update for release 3.5} +% \changes{swedish-2.0}{1996/01/24}{Introduced active double quote} +% \changes{swedish-2.1}{1996/10/10}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX, moved the definition of \cs{atcatcode} right to the +% beginning.} +% \changes{swedish-2.3d}{2001/11/16}{Fixed a \cs{changes} entry} +% +% \section{The Swedish language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. Contributions were made by Sten Hellman +% (\texttt{HELLMAN@CERNVM.CERN.CH}) and Erik \"Osthols +% (\texttt{erik\_osthols@yahoo.com}).} defines all the +% language-specific macros for the Swedish language. This +% file has borrowed heavily from |finnish.dtx| and |germanb.dtx|. +% +% For this language the character |"| is made active. In +% table~\ref{tab:swedish-quote} an overview is given of its +% purpose. The vertical placement of the "umlaut" in some letters +% can be controlled this way. +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |"a| & Gives \"a, also implemented for |"A|, |"o| and |"O|. \\ +% |"w|, |"W| & gives {\aa} and {\AA}. \\ +% |"ff| & for |ff| to be hyphenated as |ff-f|. Used for compound +% words, such as \texttt{stra|"|ff{\aa}nge}, which +% should be hyphenated as \texttt{straff-f{\aa}nge}. +% This is also implemented for b, d, f, g, l, m, n, +% p, r, s, and t. \\ +% \verb="|= & disable ligature at this position. This should be +% used for compound words, such as +% ``\texttt{stra|"|ffinr\"attning}'', +% which should not have the ligature ``ffi''. \\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word, such as e. g. in +% ``x|"-|axeln''. \\ +% |""| & like |"-|, but producing no hyphen sign +% (for words that should break at some sign such as +% \texttt{och/|""|eller}). \\ +% |"~| & for an explicit hyphen without a breakpoint; useful for +% expressions such as ``2|"~|3 veckor'' where no linebreak +% is desirable. \\ +% |"=| & an explicit hyphen sign allowing subsequent hyphenation, +% for expressions such as ``studiebidrag och \newline +% -l{\aa}n''. \\ +% |\-| & like the old |\-|, but allowing hyphenation +% in the rest of the word. \\ +% \end{tabular} +% \caption{The extra definitions made +% by \file{swedish.sty}}\label{tab:swedish-quote} +% \end{center} +% \end{table} +% +% Two variations for formatting of dates are added. \cs{datesymd} +% makes \cs{today} output dates formatted as YYYY-MM-DD, which is +% commonly used in Sweden today. \cs{datesdmy} formats the date as +% D/M YYYY, which is also very common in Sweden. These commands +% should be issued after \cs{begin{document}}. +% +% \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{swedish-2.1}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{swedish}\captionsswedish +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{swedish} will be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@swedish| to see whether we have to do something here. +% +% \changes{swedish-1.0c}{1991/10/29}{Removed use of \cs{@ifundefined}} +% \changes{swedish-1.1}{1992/02/16}{Added a warning when no hyphenation +% patterns were loaded.} +% \changes{swedish-1.3d}{1994/06/26}{Now use \cs{@nopatterns} to +% producew the warning} +% \begin{macrocode} +\ifx\l@swedish\@undefined + \@nopatterns{Swedish} + \adddialect\l@swedish0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to the +% Swedish language. The reason for this is that a user might want +% to switch back and forth between languages. +% +% \begin{macro}{\captionsswedish} +% The macro |\captionsswedish| defines all strings used in the four +% standard documentclasses provided with \LaTeX. +% \changes{swedish-1.0b}{1991/08/21}{removed type in definition of +% \cs{contentsname}} +% \changes{swedish-1.0b}{1991/08/21}{added definition for \cs{enclname}} +% \changes{swedish-1.0b}{1991/08/21}{made definition of \cs{refname} +% pluralis} +% \changes{swedish-1.1}{1992/02/16}{Added \cs{seename}, \cs{alsoname} +% and \cs{prefacename}} +% \changes{swedish-1.1}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{swedish-1.1b}{1993/09/16}{Added translations} +% \changes{swedish-1.3d}{1994/07/27}{Changed \cs{aa} to +% \cs{csname}\texttt{ aa}\cs{endcsname}, to make \cs{uppercase} do +% the right thing} +% \changes{swedish-1.3f}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \begin{macrocode} +\addto\captionsswedish{% + \def\prefacename{F\"orord}% + \def\refname{Referenser}% + \def\abstractname{Sammanfattning}% + \def\bibname{Litteraturf\"orteckning}% + \def\chaptername{Kapitel}% + \def\appendixname{Bilaga}% + \def\contentsname{Inneh\csname aa\endcsname ll}% + \def\listfigurename{Figurer}% + \def\listtablename{Tabeller}% + \def\indexname{Sakregister}% + \def\figurename{Figur}% + \def\tablename{Tabell}% + \def\partname{Del}% +% \end{macrocode} +% \changes{swedish-2.3a}{2000/01/19}{Added full stop after ``Bil''} +% \begin{macrocode} + \def\enclname{Bil.}% + \def\ccname{Kopia f\"or k\"annedom}% + \def\headtoname{Till}% in letter + \def\pagename{Sida}% + \def\seename{se}% +% \end{macrocode} +% \changes{swedish-1.3e}{1995/05/29}{Changed \cs{alsoname} from +% `\texttt{se ocks\aa}'} +% \begin{macrocode} + \def\alsoname{se \"aven}% +% \end{macrocode} +% \changes{swedish-1.3g}{1995/11/03}{Replaced `Proof' by its +% translation} +% \changes{swedish-2.3b}{2000/09/26}{Added \cs{glossaryname}} +% \changes{swedish-2.3c}{2001/03/12}{Provided translation for +% Glossary} +% \begin{macrocode} + \def\proofname{Bevis}% + \def\glossaryname{Ordlista}% + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateswedish} +% The macro |\dateswedish| redefines the command |\today| to +% produce Swedish dates. +% \changes{swedish-2.2}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{swedish-2.2}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \begin{macrocode} +\def\dateswedish{% + \def\today{% + \number\day~\ifcase\month\or + januari\or februari\or mars\or april\or maj\or juni\or + juli\or augusti\or september\or oktober\or november\or + december\fi + \space\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datesymd} +% \changes{swedish-2.3a}{2000/01/20}{Command added} +% The macro |\datesymd| redefines the command |\today| to +% produce dates in the format YYYY-MM-DD, common in Sweden. +% \begin{macrocode} +\def\datesymd{% + \def\today{\number\year-\two@digits\month-\two@digits\day}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datesdmy} +% \changes{swedish-2.3a}{2000/01/20}{Command added} +% The macro |\datesdmy| redefines the command |\today| to +% produce Swedish dates in the format DD/MM YYYY, also common in +% Sweden. +% \begin{macrocode} +\def\datesdmy{% + \def\today{\number\day/\number\month\space\number\year}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\swedishhyphenmins} +% The swedish hyphenation patterns can be used with |\lefthyphenmin| +% set to~2 and |\righthyphenmin| set to~2. +% \changes{swedish-1.3e}{1995/06/02}{use \cs{swedishhyphenmins} to +% store the correct values} +% \begin{macrocode} +\providehyphenmins{swedish}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasswedish} +% \changes{swedish-1.3e}{1995/05/29}{Added \cs{bbl@frenchspacing}} +% \begin{macro}{\noextrasswedish} +% \changes{swedish-1.3e}{1995/05/29}{Added \cs{bbl@nonfrenchspacing}} +% The macro |\extrasswedish| performs all the extra definitions +% needed for the Swedish language. The macro |\noextrasswedish| is +% used to cancel the actions of |\extrasswedish|. +% +% For Swedish texts |\frenchspacing| should be in effect. We make +% sure this is the case and reset it if necessary. +% +% \begin{macrocode} +\addto\extrasswedish{\bbl@frenchspacing} +\addto\noextrasswedish{\bbl@nonfrenchspacing} +% \end{macrocode} +% +% For Swedish the \texttt{"} character is made active. This is done +% once, later on its definition may vary. +% \changes{swedish-2.0}{1996/01/24}{Added active double quote +% character} +% +% \begin{macrocode} +\initiate@active@char{"} +\addto\extrasswedish{\languageshorthands{swedish}} +\addto\extrasswedish{\bbl@activate{"}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{swedish-2.2b}{1999/12/17}{Deactivate shorthands ouside of +% Swedish} +% \begin{macrocode} +\addto\noextrasswedish{\bbl@deactivate{"}} +% \end{macrocode} +% The ``umlaut'' accent macro |\"| is changed to lower the +% ``umlaut'' dots. The redefinition is done with the help of +% |\umlautlow|. +%^^A PROBLEM: +%^^A What happens to ``umlaut'' +%^^A characters entered using e. g. latin input encoding? They should +%^^A be lowered as well. +% \begin{macrocode} +\addto\extrasswedish{\babel@save\"\umlautlow} +\addto\noextrasswedish{\umlauthigh} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The code above is necessary because we need an extra active +% character. This character is then used as indicated in +% table~\ref{tab:swedish-quote}. +% +% To be able to define the function of |"|, we first define a +% couple of `support' macros. +% +% \begin{macro}{\dq} +% We save the original double quote character in |\dq| to keep +% it available, the math accent |\"| can now be typed as |"|. +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\x{\endgroup + \def\@SS{\mathchar"7019 } + \def\dq{"}} +\x +% \end{macrocode} +% \end{macro} +% +% Now we can define the doublequote macros: the umlauts and {\aa}. +% \changes{swedish-2.3a}{2000/01/20}{added \cs{allowhyphens}} +% \begin{macrocode} +\declare@shorthand{swedish}{"w}{\textormath{{\aa}\allowhyphens}{\ddot w}} +\declare@shorthand{swedish}{"a}{\textormath{\"{a}\allowhyphens}{\ddot a}} +\declare@shorthand{swedish}{"o}{\textormath{\"{o}\allowhyphens}{\ddot o}} +\declare@shorthand{swedish}{"W}{\textormath{{\AA}\allowhyphens}{\ddot W}} +\declare@shorthand{swedish}{"A}{\textormath{\"{A}\allowhyphens}{\ddot A}} +\declare@shorthand{swedish}{"O}{\textormath{\"{O}\allowhyphens}{\ddot O}} +% \end{macrocode} +% discretionary commands +%^^A PROBLEM: +%^^A Will these allow subsequent hyphenation? Perhaps we need to +%^^A add \cs{allowhyphens} here as well? +% \begin{macrocode} +\declare@shorthand{swedish}{"b}{\textormath{\bbl@disc b{bb}}{b}} +\declare@shorthand{swedish}{"B}{\textormath{\bbl@disc B{BB}}{B}} +\declare@shorthand{swedish}{"d}{\textormath{\bbl@disc d{dd}}{d}} +\declare@shorthand{swedish}{"D}{\textormath{\bbl@disc D{DD}}{D}} +\declare@shorthand{swedish}{"f}{\textormath{\bbl@disc f{ff}}{f}} +\declare@shorthand{swedish}{"F}{\textormath{\bbl@disc F{FF}}{F}} +\declare@shorthand{swedish}{"g}{\textormath{\bbl@disc g{gg}}{g}} +\declare@shorthand{swedish}{"G}{\textormath{\bbl@disc G{GG}}{G}} +\declare@shorthand{swedish}{"l}{\textormath{\bbl@disc l{ll}}{l}} +\declare@shorthand{swedish}{"L}{\textormath{\bbl@disc L{LL}}{L}} +\declare@shorthand{swedish}{"m}{\textormath{\bbl@disc m{mm}}{m}} +\declare@shorthand{swedish}{"M}{\textormath{\bbl@disc M{MM}}{M}} +\declare@shorthand{swedish}{"n}{\textormath{\bbl@disc n{nn}}{n}} +\declare@shorthand{swedish}{"N}{\textormath{\bbl@disc N{NN}}{N}} +\declare@shorthand{swedish}{"p}{\textormath{\bbl@disc p{pp}}{p}} +\declare@shorthand{swedish}{"P}{\textormath{\bbl@disc P{PP}}{P}} +\declare@shorthand{swedish}{"r}{\textormath{\bbl@disc r{rr}}{r}} +\declare@shorthand{swedish}{"R}{\textormath{\bbl@disc R{RR}}{R}} +\declare@shorthand{swedish}{"s}{\textormath{\bbl@disc s{ss}}{s}} +\declare@shorthand{swedish}{"S}{\textormath{\bbl@disc S{SS}}{S}} +\declare@shorthand{swedish}{"t}{\textormath{\bbl@disc t{tt}}{t}} +\declare@shorthand{swedish}{"T}{\textormath{\bbl@disc T{TT}}{T}} +% \end{macrocode} +% and some additional commands: +% \def\indexeqs{=} +% \changes{swedish-2.3a}{2000/01/28}{changed definition of +% \texttt{"\protect\indexeqs}, \cs{-} and \texttt{"~}} +% \begin{macrocode} +\declare@shorthand{swedish}{"-}{\nobreak-\bbl@allowhyphens} +\declare@shorthand{swedish}{"|}{% + \textormath{\nobreak\discretionary{-}{}{\kern.03em}% + \bbl@allowhyphens}{}} +\declare@shorthand{swedish}{""}{\hskip\z@skip} +\declare@shorthand{swedish}{"~}{% + \textormath{\leavevmode\hbox{-}\bbl@allowhyphens}{-}} +\declare@shorthand{swedish}{"=}{\hbox{-}\allowhyphens} +% \end{macrocode} +% +% \begin{macro}{\-} +% Redefinition of |\-|. The new version of |\-| should indicate an +% extra hyphenation position, while allowing other hyphenation +% positions to be generated automatically. The standard behaviour +% of \TeX\ in this respect is very unfortunate for languages such +% as Dutch, Finnish, German and Swedish, where long compound words +% are quite normal and all one needs is a means to indicate an +% extra hyphenation position on top of the ones that \TeX\ can +% generate from the hyphenation patterns. +% \begin{macrocode} +\addto\extrasswedish{\babel@save\-} +\addto\extrasswedish{\def\-{\allowhyphens + \discretionary{-}{}{}\allowhyphens}} +% \end{macrocode} +% \end{macro} +% +% 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{swedish-2.1}{1996/11/03}{Now use \cs{ldf@finish} to wrap up} +% \begin{macrocode} +\ldf@finish{swedish} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/swedish.ins b/Master/texmf-dist/source/generic/babel/swedish.ins new file mode 100644 index 00000000000..34916c0021f --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/swedish.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{swedish.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{swedish.ldf}{\from{swedish.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/turkish.dtx b/Master/texmf-dist/source/generic/babel/turkish.dtx new file mode 100644 index 00000000000..2ec69bc6bee --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/turkish.dtx @@ -0,0 +1,309 @@ +% \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{179} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{turkish.dtx} +%</dtx> +%<code>\ProvidesLanguage{turkish} +%\fi +%\ProvidesFile{turkish.dtx} + [2005/03/31 v1.2m Turkish support from the babel system] +%\iffalse +%% File `turkish.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +%% Turkish Language Definition File +%% Copyright (C) 1994 - 2005 +%% by Mustafa Burc +%% rz6001@rziris01.rrz.uni-hamburg.de +%% (40) 2503476 +% +% This file is part of the babel system, it provides the source +% code for the Turkish language definition file. +%<*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{turkish.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{turkish.dtx} +% +% \changes{turkish-1.2}{1994/02/27}{Update for \LaTeXe} +% \changes{turkish-1.2c}{1994/06/26}{Removed the use of \cs{filedate} +% and moved identification after the loading of \file{babel.def}} +% \changes{turkish-1.2h}{1996/07/13}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{turkish-1.2i}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning.} +% +% \section{The Turkish language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate.} defines all the language definition macros for the +% Turkish language\footnote{Mustafa Burc, +% \texttt{z6001@rziris01.rrz.uni-hamburg.de} provided the code for +% this file. It is based on the work by Pierre Mackay; Turgut Uyar, +% \texttt{uyar@cs.itu.edu.tr} supplied additional translations in +% version 1.2j and later}. +% +% Turkish typographic rules specify that a little `white space' +% should be added before the characters `\texttt{:}', `\texttt{!}' +% and `\texttt{=}'. In order to insert this white space +% automatically these characters are made `active'. Also +% |\frenhspacing| is set. +% +% \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{turkish-1.2i}{1996/11/03}{ow use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{turkish}\captionsturkish +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{turkish} could be an `unknown' language in which +% case we have to make it known. So we check for the existence of +% |\l@turkish| to see whether we have to do something here. +% +% \changes{turkish-1.2c}{1994/06/26}{Now use \cs{@nopatterns} to +% produce the warning} +% \begin{macrocode} +\ifx\l@turkish\@undefined + \@nopatterns{Turkish} + \adddialect\l@turkish0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Turkish language. +% +% \begin{macro}{\captionsturkish} +% The macro |\captionsturkish| defines all strings used in the four +% standard documentclasses provided with \LaTeX. +% \changes{turkish-1.1}{1993/07/15}{\cs{headpagename} should be +% \cs{pagename}} +% \changes{turkish-1.2b}{1994/06/04}{Added braces behind \cs{i} in +% strings} +% \changes{turkish-1.2f}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{turkish-1.2j}{1997/09/29}{Added and modified translations} +% \changes{turkish-1.2k}{1999/04/18}{Incorporated some more +% corrections} +% \changes{turkish-1.2m}{2000/09/20}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionsturkish{% + \def\prefacename{\"Ons\"oz}% + \def\refname{Kaynaklar}% + \def\abstractname{\"Ozet}% + \def\bibname{Kaynak\c ca}% + \def\chaptername{B\"ol\"um}% + \def\appendixname{Ek}% + \def\contentsname{\.I\c cindekiler}% + \def\listfigurename{\c Sekil Listesi}% + \def\listtablename{Tablo Listesi}% + \def\indexname{Dizin}% + \def\figurename{\c Sekil}% + \def\tablename{Tablo}% + \def\partname{K\i s\i m}% + \def\enclname{\.Ili\c sik}% + \def\ccname{Di\u ger Al\i c\i lar}% + \def\headtoname{Al\i c\i}% + \def\pagename{Sayfa}% + \def\subjectname{\.Ilgili}% + \def\seename{bkz.}% + \def\alsoname{ayr\i ca bkz.}% + \def\proofname{Kan\i t}% + \def\glossaryname{Glossary}% <-- Needs translation +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\dateturkish} +% The macro |\dateturkish| redefines the command |\today| to +% produce Turkish dates. +% \changes{turkish-1.2b}{1994/06/04}{Added braces behind \cs{i} in +% strings} +% \changes{turkish-1.2d}{1995/01/31}{removed extra closing brace, +% \cs{mont} should be \cs{month}} +% \changes{turkish-1.2j}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{turkish-1.2j}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \changes{turkish-1.2l}{1999/05/17}{removed dot from the date format} +% \begin{macrocode} +\def\dateturkish{% + \def\today{\number\day~\ifcase\month\or + Ocak\or \c Subat\or Mart\or Nisan\or May\i{}s\or Haziran\or + Temmuz\or A\u gustos\or Eyl\"ul\or Ekim\or Kas\i{}m\or + Aral\i{}k\fi + \space\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extrasturkish} +% \changes{turkish-1.2e}{1995/05/15}{Completely rewrote macro} +% \begin{macro}{\noextrasturkish} +% The macro |\extrasturkish| will perform all the extra definitions +% needed for the Turkish language. The macro |\noextrasturkish| is +% used to cancel the actions of |\extrasturkish|. +% +% Turkish typographic rules specify that a little `white space' +% should be added before the characters `\texttt{:}', `\texttt{!}' +% and `\texttt{=}'. In order to insert this white space +% automatically these characters are made |\active|, so they have +% to be treated in a special way. +% \begin{macrocode} +\initiate@active@char{:} +\initiate@active@char{!} +\initiate@active@char{=} +% \end{macrocode} +% We specify that the turkish group of shorthands should be used. +% \begin{macrocode} +\addto\extrasturkish{\languageshorthands{turkish}} +% \end{macrocode} +% These characters are `turned on' once, later their definition may +% vary. +% \begin{macrocode} +\addto\extrasturkish{% + \bbl@activate{:}\bbl@activate{!}\bbl@activate{=}} +% \end{macrocode} +% +% For Turkish texts |\frenchspacing| should be in effect. We +% make sure this is the case and reset it if necessary. +% \changes{turkish-1.2e}{1995/05/15}{now use \cs{bbl@frenchspacing} +% and \cs{bbl@nonfrenchspacing}} +% \begin{macrocode} +\addto\extrasturkish{\bbl@frenchspacing} +\addto\noextrasturkish{\bbl@nonfrenchspacing} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\turkish@sh@!@} +% \begin{macro}{\turkish@sh@=@} +% \begin{macro}{\turkish@sh@:@} +% The definitions for the three active characters were made using +% intermediate macros. These are defined now. The insertion of +% extra `white space' should only happen outside math mode, hence +% the check |\ifmmode| in the macros. +% \changes{turkish-1.2d}{1995/01/31}{Added missing \cs{def}} +% \changes{turkish-1.2e}{1995/05/15}{Use the new mechanism of +% \cs{declare@shorthand}} +%%^^A JLB:: this code breaks during \begin{document} +%%^^A JLB: Needs fixing!! +% \begin{macrocode} +\declare@shorthand{turkish}{:}{% + \ifmmode + \string:% + \else\relax + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\thinspace + \fi + \fi + \string:% + \fi} +\declare@shorthand{turkish}{!}{% + \ifmmode + \string!% + \else\relax + \ifhmode + \ifdim\lastskip>\z@ + \unskip\penalty\@M\thinspace + \fi + \fi + \string!% + \fi} +\declare@shorthand{turkish}{=}{% + \ifmmode + \string=% + \else\relax + \ifhmode + \ifdim\lastskip>\z@ + \unskip\kern\fontdimen2\font + \kern-1.4\fontdimen3\font + \fi + \fi + \string=% + \fi} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% 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{turkish-1.2i}{1996/11/03}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{turkish} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/turkish.ins b/Master/texmf-dist/source/generic/babel/turkish.ins new file mode 100644 index 00000000000..9e7af81a31a --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/turkish.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{turkish.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{turkish.ldf}{\from{turkish.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/ukraineb.dtx b/Master/texmf-dist/source/generic/babel/ukraineb.dtx new file mode 100644 index 00000000000..7f118d5934c --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/ukraineb.dtx @@ -0,0 +1,1158 @@ +% \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{1472} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{ukraineb.dtx} +%</dtx> +%<code>\ProvidesLanguage{ukraineb} + [2005/03/30 v1.1k Ukrainian support from the babel system] +% +%% File `ukraineb.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% ukraineb Language Definition File +%% Copyright (C) 1997 - 2005 +%% by Andrij Shvaika ashv at icmp.lviv.ua +% +%% derived from the Russianb Language Definition File +%% Copyright (C) 1995 - 2005 +%% by Olga Lapko cyrtug at mir.msk.su +%% Johannes Braams, TeXniek +% adapted to the new T2 and X2 Cyrillic encodings +% by Vladimir Volovich TeX at vvv.vsu.ru +% Werner Lemberg wl at gnu.org +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +%<*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}} +\newcommand\pkg[1]{\texttt{#1}} +\begin{document} + \DocInput{ukraineb.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{ukraineb.dtx} +% +% \changes{ukraineb-1.1e}{1999/08/19}{replaced all \cs{penalty}\cs{@M} +% with \cs{nobreak}} +% +% \section{The Ukrainian language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion. +% This file was derived from the \file{russianb.dtx} version 1.1g.} +% defines all the language-specific macros for the Ukrainian +% language. It needs the file \file{cyrcod} for success documentation +% with Ukrainian encodings (see below). +% +% For this language the character |"| is made active. In +% table~\ref{tab:ukrainian-quote} an overview is given of its +% purpose. +% +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% \verb="|= & disable ligature at this position. \\ +% |"-| & an explicit hyphen sign, allowing hyphenation +% in the rest of the word. \\ +% |"---| & Cyrillic emdash in plain text. \\ +% |"--~| & Cyrillic emdash in compound names (surnames). \\ +% |"--*| & Cyrillic emdash for denoting direct speech. \\ +% |""| & like |"-|, but producing no hyphen sign +% (for compund words with hyphen, e.g.\ |x-""y| +% or some other signs as ``disable/enable''). \\ +% |"~| & for a compound word mark without a breakpoint. \\ +% |"=| & for a compound word mark with a breakpoint, allowing +% hyphenation in the composing words. \\ +% |",| & thinspace for initials with a breakpoint +% in following surname. \\ +% |"`| & for German left double quotes +% (looks like ,\kern-0.08em,). \\ +% |"'| & for German right double quotes (looks like ``). \\%'' +% |"<| & for French left double quotes (looks like $<\!\!<$). \\ +% |">| & for French right double quotes (looks like $>\!\!>$). \\ +% \end{tabular} +% \caption{The extra definitions made +% by \file{ukraineb}}\label{tab:ukrainian-quote} +% \end{center} +% \end{table} +% +% The quotes in table~\ref{tab:ukrainian-quote} (see, also +% table~\ref{tab:russian-quote}) can also be typeset by using the commands +% in table~\ref{tab:umore-quote} (see, also table~\ref{tab:rmore-quote}). +% +% \begin{table}[htb] +% \begin{center} +% \begin{tabular}{lp{8cm}} +% |\cdash---| & Cyrillic emdash in plain text. \\ +% |\cdash--~| & Cyrillic emdash in compound names (surnames). \\ +% |\cdash--*| & Cyrillic emdash for denoting direct speech. \\ +% |\glqq| & for German left double quotes +% (looks like ,\kern-0.08em,). \\ +% |\grqq| & for German right double quotes (looks like ``). \\%'' +% |\flqq| & for French left double quotes (looks like $<\!\!<$). \\ +% |\frqq| & for French right double quotes (looks like $>\!\!>$). \\ +% |\dq| & the original quotes character (|"|). \\ +% \end{tabular} +% \caption{More commands which produce quotes, defined +% by \babel}\label{tab:umore-quote} +% \end{center} +% \end{table} +% +% The French quotes are also available as ligatures `|<<|' and `|>>|' in +% 8-bit Cyrillic font encodings (\texttt{LCY}, \texttt{X2}, \texttt{T2*}) +% and as `|<|' and `|>|' characters in 7-bit Cyrillic font encodings +% (\texttt{OT2} and \texttt{LWN}). +% +% The quotation marks traditionally used in Ukrainian and Russian +% languages were borrowed from other languages (e.g. French and German) +% so they keep their original names. +% +% \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. +% +% \begin{macrocode} +%<*code> +\LdfInit{ukrainian}{captionsukrainian} +% \end{macrocode} +% +% When this file is read as an option, i.e., by the |\usepackage| +% command, \texttt{ukraineb} will be an `unknown' language, in which case +% we have to make it known. So we check for the existence of |\l@ukrainian| +% to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\l@ukrainian\@undefined + \@nopatterns{Ukrainian} + \adddialect\l@ukrainian0 +\fi +% \end{macrocode} +% +% \begin{macro}{\latinencoding} +% +% We need to know the encoding for text that is supposed to be which is +% active at the end of the \babel\ package. If the \pkg{fontenc} package +% is loaded later, then\ldots too bad! +% +% \begin{macrocode} +\let\latinencoding\cf@encoding +% \end{macrocode} +% +% \end{macro} +% +% The user may choose between different available Cyrillic +% encodings---e.g., \texttt{X2}, \texttt{LCY}, or \texttt{LWN}.\@ +% Hopefully, \texttt{X2} will eventually replace the two latter encodings +% (\texttt{LCY} and \texttt{LWN}).\@ If the user wants to use another +% font encoding than the default (\texttt{T2A}), he has to load the +% corresponding file \emph{before} \file{ukraineb.sty}. This may be done +% in the following way: +% +% \begin{verbatim} +% % override the default X2 encoding used in Babel +% \usepackage[LCY,OT1]{fontenc} +% \usepackage[english,ukrainian]{babel} +% \end{verbatim} +% \unskip +% +% Note: for the Ukrainian language, the \texttt{T2A} encoding is better than +% \texttt{X2}, because \texttt{X2} does not contain Latin letters, and +% users should be very careful to switch the language every time they +% want to typeset a Latin word inside a Ukrainian phrase or vice versa. +% +% We parse the |\cdp@list| containing the encodings known to \LaTeX\ in +% the order they were loaded. We set the |\cyrillicencoding| to the +% \emph{last} loaded encoding in the list of supported Cyrillic +% encodings: \texttt{OT2}, \texttt{LWN}, \texttt{LCY}, \texttt{X2}, +% \texttt{T2C}, \texttt{T2B}, \texttt{T2A}, if any. +% +% \begin{macrocode} +\def\reserved@a#1#2{% + \edef\reserved@b{#1}% + \edef\reserved@c{#2}% + \ifx\reserved@b\reserved@c + \let\cyrillicencoding\reserved@c + \fi} +\def\cdp@elt#1#2#3#4{% + \reserved@a{#1}{OT2}% + \reserved@a{#1}{LWN}% + \reserved@a{#1}{LCY}% + \reserved@a{#1}{X2}% + \reserved@a{#1}{T2C}% + \reserved@a{#1}{T2B}% + \reserved@a{#1}{T2A}} +\cdp@list +% \end{macrocode} +% +% Now, if |\cyrillicencoding| is undefined, then the user did not load +% any of supported encodings. So, we have to set |\cyrillicencoding| to +% some default value. We test the presence of the encoding definition +% files in the order from less preferable to more preferable encodings. +% We use the lowercase names (i.e., \file{lcyenc.def} instead of +% \file{LCYenc.def}). +% +% \begin{macrocode} +\ifx\cyrillicencoding\undefined + \IfFileExists{ot2enc.def}{\def\cyrillicencoding{OT2}}\relax + \IfFileExists{lwnenc.def}{\def\cyrillicencoding{LWN}}\relax + \IfFileExists{lcyenc.def}{\def\cyrillicencoding{LCY}}\relax + \IfFileExists{x2enc.def}{\def\cyrillicencoding{X2}}\relax + \IfFileExists{t2cenc.def}{\def\cyrillicencoding{T2C}}\relax + \IfFileExists{t2benc.def}{\def\cyrillicencoding{T2B}}\relax + \IfFileExists{t2aenc.def}{\def\cyrillicencoding{T2A}}\relax +% \end{macrocode} +% +% If |\cyrillicencoding| is still undefined, then the user seems not to +% have a properly installed distribution. A fatal error. +% +% \begin{macrocode} + \ifx\cyrillicencoding\undefined + \PackageError{babel}% + {No Cyrillic encoding definition files were found}% + {Your installation is incomplete.\MessageBreak + You need at least one of the following files:\MessageBreak + \space\space + x2enc.def, t2aenc.def, t2benc.def, t2cenc.def,\MessageBreak + \space\space + lcyenc.def, lwnenc.def, ot2enc.def.}% + \else +% \end{macrocode} +% +% We avoid |\usepackage[\cyrillicencoding]{fontenc}| because we don't +% want to force the switch of |\encodingdefault|. +% +% \begin{macrocode} + \lowercase + \expandafter{\expandafter\input\cyrillicencoding enc.def\relax}% + \fi +\fi +% \end{macrocode} +% +% \begin{verbatim} +% \PackageInfo{babel} +% {Using `\cyrillicencoding' as a default Cyrillic encoding}% +% \end{verbatim} +% \unskip +% +% \begin{macrocode} +\DeclareRobustCommand{\Ukrainian}{% + \fontencoding\cyrillicencoding\selectfont + \let\encodingdefault\cyrillicencoding + \expandafter\set@hyphenmins\ukrainianhyphenmins + \language\l@ukrainian}% +\DeclareRobustCommand{\English}{% + \fontencoding\latinencoding\selectfont + \let\encodingdefault\latinencoding + \expandafter\set@hyphenmins\englishhyphenmins + \language\l@english}% +\let\Ukr\Ukrainian +\let\Eng\English +\let\cyrillictext\Ukrainian +\let\cyr\Ukrainian +% \end{macrocode} +% +% Since the \texttt{X2} encoding does not contain Latin letters, we +% should make some redefinitions of \LaTeX\ macros which implicitly +% produce Latin letters. +% +% \begin{macrocode} +\expandafter\ifx\csname T@X2\endcsname\relax\else +% \end{macrocode} +% +% We put |\latinencoding| in braces to avoid problems with +% |\@alph| inside minipages (e.g., footnotes inside minipages) where +% |\@alph| is expanded and we get for example `|\fontencoding OT1|' +% (|\fontencoding| is robust). +% +% \begin{macrocode} + \def\@alph#1{{\fontencoding{\latinencoding}\selectfont + \ifcase#1\or + a\or b\or c\or d\or e\or f\or g\or h\or + i\or j\or k\or l\or m\or n\or o\or p\or + q\or r\or s\or t\or u\or v\or w\or x\or + y\or z\else\@ctrerr\fi}}% + \def\@Alph#1{{\fontencoding{\latinencoding}\selectfont + \ifcase#1\or + A\or B\or C\or D\or E\or F\or G\or H\or + I\or J\or K\or L\or M\or N\or O\or P\or + Q\or R\or S\or T\or U\or V\or W\or X\or + Y\or Z\else\@ctrerr\fi}}% +% \end{macrocode} +% +% Unfortunately, the commands |\AA| and |\aa| are not encoding dependent +% in \LaTeX\ (unlike e.g., |\oe| or |\DH|). They are defined as |\r{A}| and +% |\r{a}|. This leads to unpredictable results when the font encoding +% does not contain the Latin letters `A' and `a' (like \texttt{X2}). +% +% \begin{macrocode} + \DeclareTextSymbolDefault{\AA}{OT1} + \DeclareTextSymbolDefault{\aa}{OT1} + \DeclareTextCommand{\aa}{OT1}{\r a} + \DeclareTextCommand{\AA}{OT1}{\r A} +\fi +% \end{macrocode} +% +% The following block redefines the character class of uppercase Greek +% letters and some accents, if it is equal to 7 (variable family), to +% avoid incorrect results if the font encoding in some math family does +% not contain these characters in places of OT1 encoding. The code was +% taken from |amsmath.dtx|. See comments and further explanation there. +% +% \changes{ukraineb-1.1i}{2001/02/21}{As this code generates a +% textfont 7 error it is commented out for now.} +% \begin{macrocode} +% \begingroup\catcode`\"=12 +% % uppercase greek letters: +% \def\@tempa#1{\expandafter\@tempb\meaning#1\relax\relax\relax\relax +% "0000\@nil#1} +% \def\@tempb#1"#2#3#4#5#6\@nil#7{% +% \ifnum"#2=7 \count@"1#3#4#5\relax +% \ifnum\count@<"1000 \else \global\mathchardef#7="0#3#4#5\relax \fi +% \fi} +% \@tempa\Gamma\@tempa\Delta\@tempa\Theta\@tempa\Lambda\@tempa\Xi +% \@tempa\Pi\@tempa\Sigma\@tempa\Upsilon\@tempa\Phi\@tempa\Psi +% \@tempa\Omega +% % some accents: +% \def\@tempa#1#2\@nil{\def\@tempc{#1}}\def\@tempb{\mathaccent} +% \expandafter\@tempa\hat\relax\relax\@nil +% \ifx\@tempb\@tempc +% \def\@tempa#1\@nil{#1}% +% \def\@tempb#1{\afterassignment\@tempa\mathchardef\@tempc=}% +% \def\do#1"#2{} +% \def\@tempd#1{\expandafter\@tempb#1\@nil +% \ifnum\@tempc>"FFF +% \xdef#1{\mathaccent"\expandafter\do\meaning\@tempc\space}% +% \fi} +% \@tempd\hat\@tempd\check\@tempd\tilde\@tempd\acute\@tempd\grave +% \@tempd\dot\@tempd\ddot\@tempd\breve\@tempd\bar +% \fi +% \endgroup +% \end{macrocode} +% +% The user must use the \pkg{inputenc} package when any 8-bit Cyrillic +% font encoding is used, selecting one of the Cyrillic input encodings. +% We do not assume any default input encoding, so the user should +% explicitly call the \pkg{inputenc} package by |\usepackage{inputenc}|. +% We also removed |\AtBeginDocument|, so \pkg{inputenc} should be used +% before \babel. +% +% \changes{ukraineb-1.1f}{1999/08/27}{Made not using inputenc a +% warning instead of an error} +% \begin{macrocode} +\@ifpackageloaded{inputenc}{}{% + \def\reserved@a{LWN}% + \ifx\reserved@a\cyrillicencoding\else + \def\reserved@a{OT2}% + \ifx\reserved@a\cyrillicencoding\else + \PackageWarning{babel}% + {No input encoding specified for Ukrainian language} + \fi\fi} +% \end{macrocode} +% +% Now we define two commands that offer the possibility to switch between +% Cyrillic and Roman encodings. +% +% \begin{macro}{\cyrillictext} +% \begin{macro}{\latintext} +% +% The command |\cyrillictext| will switch from Latin font encoding to the +% Cyrillic font encoding, the command |\latintext| switches back. This +% assumes that the `normal' font encoding is a Latin one. These commands +% are \emph{declarations}, for shorter peaces of text the commands +% |\textlatin| and |\textcyrillic| can be used. +% +% \changes{ukraineb-1.1j}{2003/10/12}{\cs{latintext} is already +% defined by the core of \babel} +% \begin{macrocode} +%\DeclareRobustCommand{\latintext}{% +% \fontencoding{\latinencoding}\selectfont +% \def\encodingdefault{\latinencoding}} +\let\lat\latintext +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% +% \begin{macro}{\textcyrillic} +% \begin{macro}{\textlatin} +% +% These commands take an argument which is then typeset using the +% requested font encoding. +% \changes{ukraineb-1.1j}{2003/10/12}{\cs{latintext} is already +% defined by the core of \babel} +% \begin{macrocode} +\DeclareTextFontCommand{\textcyrillic}{\cyrillictext} +%\DeclareTextFontCommand{\textlatin}{\latintext} +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% +% We make the \TeX +% \begin{macrocode} +%\ifx\ltxTeX\undefined\let\ltxTeX\TeX\fi +%\ProvideTextCommandDefault{\TeX}{\textlatin{\ltxTeX}} +% \end{macrocode} +% and \LaTeX\ logos encoding independent. +% \begin{macrocode} +%\ifx\ltxLaTeX\undefined\let\ltxLaTeX\LaTeX\fi +%\ProvideTextCommandDefault{\LaTeX}{\textlatin{\ltxLaTeX}} +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Ukrainian language. +% +% \begin{macro}{\captionsukrainian} +% +% The macro |\captionsukrainian| defines all strings used in the four +% standard document classes provided with \LaTeX. The two commands |\cyr| +% and |\lat| activate Cyrillic resp.\ Latin encoding. +% \changes{ukraineb-1.1d}{1999/04/03}{replace \cs{CYRUKRI} with +% \cs{CYRII} in \cs{authorname} } +% \changes{ukraineb-1.1g}{2000/09/20}{Added \cs{glossaryname}} +% \changes{ukraineb-1.1h}{2001/02/13}{Added translation for +% `Glossary'} +% \begin{macrocode} +\addto\captionsukrainian{% + \def\prefacename{{\cyr\CYRV\cyrs\cyrt\cyru\cyrp}}% +% \def\prefacename{{\cyr\CYRP\cyre\cyrr\cyre\cyrd\cyrm\cyro\cyrv\cyra}}% + \def\refname{% + {\cyr\CYRL\cyrii\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra}}% +% \def\refname{% +% {\cyr\CYRP\cyre\cyrr\cyre\cyrl\cyrii\cyrk +% \ \cyrp\cyro\cyrs\cyri\cyrl\cyra\cyrn\cyrsftsn}}% + \def\abstractname{% + {\cyr\CYRA\cyrn\cyro\cyrt\cyra\cyrc\cyrii\cyrya}}% +% \def\abstractname{{\cyr\CYRR\cyre\cyrf\cyre\cyrr\cyra\cyrt}}% + \def\bibname{% + {\cyr\CYRB\cyrii\cyrb\cyrl\cyrii\cyro\cyrgup\cyrr\cyra\cyrf\cyrii\cyrya}}% +% \def\bibname{{\cyr\CYRL\cyrii\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra}}% + \def\chaptername{{\cyr\CYRR\cyro\cyrz\cyrd\cyrii\cyrl}}% +% \def\chaptername{{\cyr\CYRG\cyrl\cyra\cyrv\cyra}}% + \def\appendixname{{\cyr\CYRD\cyro\cyrd\cyra\cyrt\cyro\cyrk}}% + \def\contentsname{{\cyr\CYRZ\cyrm\cyrii\cyrs\cyrt}}% + \def\listfigurename{{\cyr\CYRP\cyre\cyrr\cyre\cyrl\cyrii\cyrk + \ \cyrii\cyrl\cyryu\cyrs\cyrt\cyrr\cyra\cyrc\cyrii\cyrishrt}}% + \def\listtablename{{\cyr\CYRP\cyre\cyrr\cyre\cyrl\cyrii\cyrk + \ \cyrt\cyra\cyrb\cyrl\cyri\cyrc\cyrsftsn}}% + \def\indexname{{\cyr\CYRP\cyro\cyrk\cyra\cyrzh\cyrch\cyri\cyrk}}% + \def\authorname{{\cyr\CYRII\cyrm\cyre\cyrn\cyrn\cyri\cyrishrt + \ \cyrp\cyro\cyrk\cyra\cyrzh\cyrch\cyri\cyrk}}% + \def\figurename{{\cyr\CYRR\cyri\cyrs.}}% +% \def\figurename{\cyr\CYRR\cyri\cyrs\cyru\cyrn\cyro\cyrk}}% + \def\tablename{{\cyr\CYRT\cyra\cyrb\cyrl.}}% +% \def\tablename{\cyr\CYRT\cyra\cyrb\cyrl\cyri\cyrc\cyrya}}% + \def\partname{{\cyr\CYRCH\cyra\cyrs\cyrt\cyri\cyrn\cyra}}% + \def\enclname{{\cyr\cyrv\cyrk\cyrl\cyra\cyrd\cyrk\cyra}}% + \def\ccname{{\cyr\cyrk\cyro\cyrp\cyrii\cyrya}}% + \def\headtoname{{\cyr\CYRD\cyro}}% + \def\pagename{{\cyr\cyrs.}}% +% \def\pagename{{\cyr\cyrs\cyrt\cyro\cyrr\cyrii\cyrn\cyrk\cyra}}% + \def\seename{{\cyr\cyrd\cyri\cyrv.}}% + \def\alsoname{{\cyr\cyrd\cyri\cyrv.\ \cyrt\cyra\cyrk\cyro\cyrzh}} + \def\proofname{{\cyr\CYRD\cyro\cyrv\cyre\cyrd\cyre\cyrn\cyrn\cyrya}}% + \def\glossaryname{{\cyr\CYRS\cyrl\cyro\cyrv\cyrn\cyri\cyrk\ % + \cyrt\cyre\cyrr\cyrm\cyrii\cyrn\cyrii\cyrv}}% + } +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\dateukrainian} +% +% The macro |\dateukrainian| redefines the command |\today| to produce +% Ukrainian dates. +% +% \begin{macrocode} +\def\dateukrainian{% + \def\today{\number\day~\ifcase\month\or + \cyrs\cyrii\cyrch\cyrn\cyrya\or + \cyrl\cyryu\cyrt\cyro\cyrg\cyro\or + \cyrb\cyre\cyrr\cyre\cyrz\cyrn\cyrya\or + \cyrk\cyrv\cyrii\cyrt\cyrn\cyrya\or + \cyrt\cyrr\cyra\cyrv\cyrn\cyrya\or + \cyrch\cyre\cyrr\cyrv\cyrn\cyrya\or + \cyrl\cyri\cyrp\cyrn\cyrya\or + \cyrs\cyre\cyrr\cyrp\cyrn\cyrya\or + \cyrv\cyre\cyrr\cyre\cyrs\cyrn\cyrya\or + \cyrzh\cyro\cyrv\cyrt\cyrn\cyrya\or + \cyrl\cyri\cyrs\cyrt\cyro\cyrp\cyra\cyrd\cyra\or + \cyrg\cyrr\cyru\cyrd\cyrn\cyrya\fi + \space\number\year~\cyrr.}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\extrasukrainian} +% +% The macro |\extrasukrainian| will perform all the extra definitions +% needed for the Ukrainian language. The macro |\noextrasukrainian| +% is used to cancel the actions of |\extrasukrainian|. +% +% The first action we define is to switch on the selected Cyrillic +% encoding whenever we enter `ukrainian'. +% +% \begin{macrocode} +\addto\extrasukrainian{\cyrillictext} +% \end{macrocode} +% +% When the encoding definition file was processed by \LaTeX\ the current +% font encoding is stored in |\latinencoding|, assuming that \LaTeX\ uses +% \texttt{T1} or \texttt{OT1} as default. Therefore we switch back to +% |\latinencoding| whenever the Ukrainian language is no longer `active'. +% +% \begin{macrocode} +\addto\noextrasukrainian{\latintext} +% \end{macrocode} +% +% Next we must allow hyphenation in the Ukrainian words with apostrophe +% whenever we enter `ukrainian'. This solution was proposed by +% Vladimir Volovich <vvv@vvv.vsu.ru> +% +% \begin{macrocode} +\addto\extrasukrainian{\lccode`\'=`\'} +\addto\noextrasukrainian{\lccode`\'=0} +% \end{macrocode} +% +% \begin{macro}{\verbatim@font} +% +% In order to get both Latin and Cyrillic letters in verbatim text we +% need to change the definition of an internal \LaTeX\ command somewhat: +% +% \begin{macrocode} +%\def\verbatim@font{% +% \let\encodingdefault\latinencoding +% \normalfont\ttfamily +% \expandafter\def\csname\cyrillicencoding-cmd\endcsname##1##2{% +% \ifx\protect\@typeset@protect +% \begingroup\UseTextSymbol\cyrillicencoding##1\endgroup +% \else\noexpand##1\fi}} +% \end{macrocode} +% +% \end{macro} +% +% The category code of the characters `\texttt{:}', `\texttt{;}', +% `\texttt{!}', and `\texttt{?}' is made |\active| to insert a little +% white space. +% +% For Ukrainian (as well as for Russian and German) the \texttt{"} +% character also is made active. +% +% Note: It is \emph{very} questionable whether the Russian typesetting +% tradition requires additional spacing before those punctuation signs. +% Therefore, we make the corresponding code optional. If you need it, +% then define the \texttt{frenchpunct} docstrip option in +% \file{babel.ins}. +% +% Borrowed from french. +% Some users dislike automatic insertion of a space before +% `double punctuation', and prefer to decide themselves whether a +% space should be added or not; so a hook |\NoAutoSpaceBeforeFDP| +% is provided: if this command is added (in file |ukraineb.cfg|, or +% anywhere in a document) |ukraineb| will respect your typing, and +% introduce a suitable space before `double punctuation' \emph{if +% and only if} a space is typed in the source file before those +% signs. +% +% The command |\AutoSpaceBeforeFDP| switches back to the +% default behavior of |ukraineb|. +% +% \begin{macrocode} +%<*frenchpunct> +\initiate@active@char{:} +\initiate@active@char{;} +%</frenchpunct> +%<*frenchpunct|spanishligs> +\initiate@active@char{!} +\initiate@active@char{?} +%</frenchpunct|spanishligs> +\initiate@active@char{"} +% \end{macrocode} +% +% The code above is necessary because we need extra active characters. +% The character |"| is used as indicated in +% table~\ref{tab:ukrainian-quote}. +% +% We specify that the Ukrainian group of shorthands should be used. +% +% \begin{macrocode} +\addto\extrasukrainian{\languageshorthands{ukrainian}} +% \end{macrocode} +% +% These characters are `turned on' once, later their definition may +% vary. +% +% \begin{macrocode} +\addto\extrasukrainian{% +%<frenchpunct> \bbl@activate{:}\bbl@activate{;}% +%<frenchpunct|spanishligs> \bbl@activate{!}\bbl@activate{?}% + \bbl@activate{"}} +\addto\noextrasukrainian{% +%<frenchpunct> \bbl@deactivate{:}\bbl@deactivate{;}% +%<frenchpunct|spanishligs> \bbl@deactivate{!}\bbl@deactivate{?}% + \bbl@deactivate{"}} +% \end{macrocode} +% +% The \texttt{X2} and \texttt{T2*} encodings do not contain +% |spanish_shriek| and |spanish_query| symbols; as a consequence, the +% ligatures `|?`|' and `|!`|' do not work with them (these characters are +% useless for Cyrillic texts anyway). But we define the shorthands to +% emulate these ligatures (optionally). +% +% We do not use |\latinencoding| here (but instead explicitly use +% \texttt{OT1}) because the user may choose \texttt{T2A} to be the primary +% encoding, but it does not contain these characters. +% +% \begin{macrocode} +%<*spanishligs> +\declare@shorthand{ukrainian}{?`}{\UseTextSymbol{OT1}\textquestiondown} +\declare@shorthand{ukrainian}{!`}{\UseTextSymbol{OT1}\textexclamdown} +%</spanishligs> +% \end{macrocode} +% +% \begin{macro}{\ukrainian@sh@;@} +% \begin{macro}{\ukrainian@sh@:@} +% \begin{macro}{\ukrainian@sh@!@} +% \begin{macro}{\ukrainian@sh@?@} +% +% We have to reduce the amount of white space before \texttt{;}, +% \texttt{:} and \texttt{!}. This should only happen in horizontal mode, +% hence the test with |\ifhmode|. +% +% \begin{macrocode} +%<*frenchpunct> +\declare@shorthand{ukrainian}{;}{% + \ifhmode +% \end{macrocode} +% +% In horizontal mode we check for the presence of a `space', `unskip' if +% it exists and place a |0.1em| kerning. +% +% \begin{macrocode} + \ifdim\lastskip>\z@ + \unskip\nobreak\kern.1em + \else +% \end{macrocode} +% If no space has been typed, we add |\FDP@thinspace| +% which will be +% defined, up to the user's wishes, as an automatic added +% thinspace, or as |\@empty|. +% +% \begin{macrocode} + \FDP@thinspace + \fi + \fi +% \end{macrocode} +% +% Now we can insert a `|;|' character. +% +% \begin{macrocode} + \string;} +% \end{macrocode} +% +% The other definitions are very similar. +% +% \begin{macrocode} +\declare@shorthand{ukrainian}{:}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\nobreak\kern.1em + \else + \FDP@thinspace + \fi + \fi + \string:} +% \end{macrocode} +% +% \begin{macrocode} +\declare@shorthand{ukrainian}{!}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\nobreak\kern.1em + \else + \FDP@thinspace + \fi + \fi + \string!} +% \end{macrocode} +% +% \begin{macrocode} +\declare@shorthand{ukrainian}{?}{% + \ifhmode + \ifdim\lastskip>\z@ + \unskip\nobreak\kern.1em + \else + \FDP@thinspace + \fi + \fi + \string?} +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \begin{macro}{\AutoSpaceBeforeFDP} +% \begin{macro}{\NoAutoSpaceBeforeFDP} +% \begin{macro}{\FDP@thinspace} +% |\FDP@thinspace| is defined as unbreakable +% spaces if |\AutoSpaceBeforeFDP| is activated or as |\@empty| if +% |\NoAutoSpaceBeforeFDP| is in use. +% The default is |\AutoSpaceBeforeFDP|. +% \begin{macrocode} +\def\AutoSpaceBeforeFDP{% + \def\FDP@thinspace{\nobreak\kern.1em}} +\def\NoAutoSpaceBeforeFDP{\let\FDP@thinspace\@empty} +\AutoSpaceBeforeFDP +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\FDPon} +% \begin{macro}{\FDPoff} +% +% The next macros allow to switch on/off activeness of double +% punctuation signs. +% +% \begin{macrocode} +\def\FDPon{\bbl@activate{:}% + \bbl@activate{;}% + \bbl@activate{?}% + \bbl@activate{!}} +\def\FDPoff{\bbl@deactivate{:}% + \bbl@deactivate{;}% + \bbl@deactivate{?}% + \bbl@deactivate{!}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\system@sh@:@} +% \begin{macro}{\system@sh@!@} +% \begin{macro}{\system@sh@?@} +% \begin{macro}{\system@sh@;@} +% +% When the active characters appear in an environment where their +% Ukrainian behaviour is not wanted they should give an `expected' +% result. Therefore we define shorthands at system level as well. +% +% \begin{macrocode} +\declare@shorthand{system}{:}{\string:} +\declare@shorthand{system}{;}{\string;} +%</frenchpunct> +%<*frenchpunct&!spanishligs> +\declare@shorthand{system}{!}{\string!} +\declare@shorthand{system}{?}{\string?} +%</frenchpunct&!spanishligs> +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% To be able to define the function of `|"|', we first define a couple of +% `support' macros. +% +% \begin{macro}{\dq} +% +% We save the original double quote character in |\dq| to keep it +% available, the math accent |\"| can now be typed as `|"|'. +% +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\reserved@a{\endgroup + \def\@SS{\mathchar"7019 } + \def\dq{"}} +\reserved@a +% \end{macrocode} +% +% \end{macro} +% +% Now we can define the doublequote macros: german and french quotes. +% We use definitions of these quotes made in babel.sty. +% The french quotes are contained in the \texttt{T2*} encodings. +% +% \begin{macrocode} +\declare@shorthand{ukrainian}{"`}{\glqq} +\declare@shorthand{ukrainian}{"'}{\grqq} +\declare@shorthand{ukrainian}{"<}{\flqq} +\declare@shorthand{ukrainian}{">}{\frqq} +% \end{macrocode} +% +% Some additional commands: +% +% \begin{macrocode} +\declare@shorthand{ukrainian}{""}{\hskip\z@skip} +\declare@shorthand{ukrainian}{"~}{\textormath{\leavevmode\hbox{-}}{-}} +\declare@shorthand{ukrainian}{"=}{\nobreak-\hskip\z@skip} +\declare@shorthand{ukrainian}{"|}{% + \textormath{\nobreak\discretionary{-}{}{\kern.03em}% + \allowhyphens}{}} +% \end{macrocode} +% +% The next two macros for |"-| and |"---| are somewhat different. +% We must check whether the second token is a hyphen character: +% +% \begin{macrocode} +\declare@shorthand{ukrainian}{"-}{% +% \end{macrocode} +% +% If the next token is `|-|', we typeset an emdash, otherwise a hyphen +% sign: +% +% \begin{macrocode} + \def\ukrainian@sh@tmp{% + \if\ukrainian@sh@next-\expandafter\ukrainian@sh@emdash + \else\expandafter\ukrainian@sh@hyphen\fi + }% +% \end{macrocode} +% +% \TeX\ looks for the next token after the first `|-|': the meaning of +% this token is written to |\ukrainian@sh@next| and |\ukrainian@sh@tmp| is +% called. +% +% \begin{macrocode} + \futurelet\ukrainian@sh@next\ukrainian@sh@tmp} +% \end{macrocode} +% +% Here are the definitions of hyphen and emdash. First the hyphen: +% +% \begin{macrocode} +\def\ukrainian@sh@hyphen{% + \nobreak\-\bbl@allowhyphens} +% \end{macrocode} +% +% For the emdash definition, there are the two parameters: we must `eat' +% two last hyphen signs of our emdash\dots : +% \begin{macrocode} +\def\ukrainian@sh@emdash#1#2{\cdash-#1#2} +% \end{macrocode} +% \begin{macro}{\cdash} +% \dots\ these two parameters are useful for another macro: +% |\cdash|: +% \begin{macrocode} +%\ifx\cdash\undefined % should be defined earlier +\def\cdash#1#2#3{\def\tempx@{#3}% +\def\tempa@{-}\def\tempb@{~}\def\tempc@{*}% + \ifx\tempx@\tempa@\@Acdash\else + \ifx\tempx@\tempb@\@Bcdash\else + \ifx\tempx@\tempc@\@Ccdash\else + \errmessage{Wrong usage of cdash}\fi\fi\fi} +% \end{macrocode} +% second parameter (or third for |\cdash|) shows what kind of emdash +% to create in next step +% \begin{center} +% \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}} +% |"---| & ordinary (plain) Cyrillic emdash inside text: +% an unbreakable thinspace will be inserted before only in case of +% a \textit{space} before the dash (it is necessary for dashes after +% display maths formulae: there could be lists, enumerations etc.\ +% started with ``--- where $a$ is ...'' i.e., the dash starts a line). +% (Firstly there were planned rather soft rules for user: he may put +% a space before the dash or not. But it is difficult to place this +% thinspace automatically, i.e., by checking modes because after +% display formulae \TeX{} uses horizontal mode. Maybe there is a +% misunderstanding? Maybe there is another way?) After a dash +% a breakable thinspace is always placed; \\ +% \end{tabular} +% \end{center} +% \begin{macrocode} +% What is more grammatically: .2em or .2\fontdimen6\font ? +\def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi + \cyrdash\hskip.2em\ignorespaces}% +% \end{macrocode} +% \begin{center} +% \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}} +% |"--~| & emdash in compound names or surnames +% (like Mendeleev--Klapeiron); this dash has no space characters +% around; after the dash some space is added +% |\exhyphenalty| \\ +% \end{tabular} +% \end{center} +% \begin{macrocode} +\def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi + \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}% +% \end{macrocode} +% \begin{center} +% \begin{tabular}{@{}p{.1\hsize}@{}p{.9\hsize}@{}} +% |"--*| & for denoting direct speech (a space like |\enskip| +% must follow the emdash); \\ +% \end{tabular} +% \end{center} +% \begin{macrocode} +\def\@Ccdash{\leavevmode + \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}% +%\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\cyrdash} +% Finally the macro for ``body'' of the Cyrillic emdash. +% The |\cyrdash| macro will be defined in case this macro hasn't been +% defined in a fontenc file. For T2* fonts, cyrdash will be placed in +% the code of the English emdash thus it uses ligature |---|. +% \begin{macrocode} +% Is there an IF necessary? +\ifx\cyrdash\undefined + \def\cyrdash{\hbox to.8em{--\hss--}} +\fi +% \end{macrocode} +% \end{macro} +% +% Here a really new macro---to place thinspace between initials. +% This macro used instead of |\,| allows hyphenation in the following +% surname. +% +% \begin{macrocode} +%\declare@shorthand{ukrainian}{",}{\nobreak\hskip.2em\ignorespaces} +% \end{macrocode} +% +% \begin{macro}{\mdqon} +% \begin{macro}{\mdqoff} +% All that's left to do now is to define a couple of commands +% for |"|. +% \begin{macrocode} +\def\mdqon{\bbl@activate{"}} +\def\mdqoff{\bbl@deactivate{"}} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% The Ukrainian hyphenation patterns can be used with |\lefthyphenmin| +% and |\righthyphenmin| set to~2. +% \changes{ukraineb-1.1g}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% temporary hack: +\ifx\englishhyphenmins\undefined + \def\englishhyphenmins{\tw@\thr@@} +\fi +% \end{macrocode} +% +% Now the action |\extrasukrainian| has to execute is to make sure that the +% command |\frenchspacing| is in effect. If this is not the case the +% execution of |\noextrasukrainian| will switch it off again. +% +% \begin{macrocode} +\addto\extrasukrainian{\bbl@frenchspacing} +\addto\noextrasukrainian{\bbl@nonfrenchspacing} +% \end{macrocode} +% +% \end{macro} +% +% Next we add a new enumeration style for Ukrainian manuscripts with +% Cyrillic letters, and later on we define some math operator names in +% accordance with Ukrainian and Russian typesetting traditions. +% +% \begin{macro}{\Asbuk} +% +% We begin by defining |\Asbuk| which works like |\Alph|, but produces +% (uppercase) Cyrillic letters intead of Latin ones. The letters CYRGUP, +% and SFTSN are skipped, as usual for such enumeration. +% +% \begin{macrocode} +\def\Asbuk#1{\expandafter\@Asbuk\csname c@#1\endcsname} +\def\@Asbuk#1{\ifcase#1\or + \CYRA\or\CYRB\or\CYRV\or\CYRG\or\CYRD\or\CYRE\or\CYRIE\or + \CYRZH\or\CYRZ\or\CYRI\or\CYRII\or\CYRYI\or\CYRISHRT\or + \CYRK\or\CYRL\or\CYRM\or\CYRN\or\CYRO\or\CYRP\or\CYRR\or + \CYRS\or\CYRT\or\CYRU\or\CYRF\or\CYRH\or\CYRC\or\CYRCH\or + \CYRSH\or\CYRSHCH\or\CYRYU\or\CYRYA\else\@ctrerr\fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\asbuk} +% +% The macro |\asbuk| is similar to |\alph|; it produces lowercase +% Ukrainian letters. +% +% \begin{macrocode} +\def\asbuk#1{\expandafter\@asbuk\csname c@#1\endcsname} +\def\@asbuk#1{\ifcase#1\or + \cyra\or\cyrb\or\cyrv\or\cyrg\or\cyrd\or\cyre\or\cyrie\or + \cyrzh\or\cyrz\or\cyri\or\cyrii\or\cyryi\or\cyrishrt\or + \cyrk\or\cyrl\or\cyrm\or\cyrn\or\cyro\or\cyrp\or\cyrr\or + \cyrs\or\cyrt\or\cyru\or\cyrf\or\cyrh\or\cyrc\or\cyrch\or + \cyrsh\or\cyrshch\or\cyryu\or\cyrya\else\@ctrerr\fi} +% \end{macrocode} +% +% \end{macro} +% +% Set up default Cyrillic math alphabets. The math groups for cyrillic +% letters are defined in the encoding definition files. First, declare +% a new alphabet for symbols, |\cyrmathrm|, based on the symbol font +% for Cyrillic letters defined in the encoding definition file. Note, +% that by default Cyrillic letters are taken from upright font in math +% mode (unlike Latin letters). +% \begin{macrocode} +%\RequirePackage{textmath} +\@ifundefined{sym\cyrillicencoding letters}{}{% +\SetSymbolFont{\cyrillicencoding letters}{bold}\cyrillicencoding + \rmdefault\bfdefault\updefault +\DeclareSymbolFontAlphabet\cyrmathrm{\cyrillicencoding letters} +% \end{macrocode} +% And we need a few commands to be able to switch to different variants. +% \begin{macrocode} +\DeclareMathAlphabet\cyrmathbf\cyrillicencoding + \rmdefault\bfdefault\updefault +\DeclareMathAlphabet\cyrmathsf\cyrillicencoding + \sfdefault\mddefault\updefault +\DeclareMathAlphabet\cyrmathit\cyrillicencoding + \rmdefault\mddefault\itdefault +\DeclareMathAlphabet\cyrmathtt\cyrillicencoding + \ttdefault\mddefault\updefault +% +\SetMathAlphabet\cyrmathsf{bold}\cyrillicencoding + \sfdefault\bfdefault\updefault +\SetMathAlphabet\cyrmathit{bold}\cyrillicencoding + \rmdefault\bfdefault\itdefault +} +% \end{macrocode} +% +% Some math functions in Ukrainian and Russian math books have other +% names: e.g., \texttt{sinh} in Russian is written as \texttt{sh} etc. +% So we define a number of new math operators. +% +% |\sinh|: +% \begin{macrocode} +\def\sh{\mathop{\operator@font sh}\nolimits} +% \end{macrocode} +% |\cosh|: +% \begin{macrocode} +\def\ch{\mathop{\operator@font ch}\nolimits} +% \end{macrocode} +% |\tan|: +% \begin{macrocode} +\def\tg{\mathop{\operator@font tg}\nolimits} +% \end{macrocode} +% |\arctan|: +% \begin{macrocode} +\def\arctg{\mathop{\operator@font arctg}\nolimits} +% \end{macrocode} +% arcctg: +% \begin{macrocode} +\def\arcctg{\mathop{\operator@font arcctg}\nolimits} +% \end{macrocode} +% The following macro conflicts with |\th| defined in Latin~1 encoding: +% +% |\tanh|: +% \changes{ukraineb-1.1k}{2004/05/21}{Change definition of \cs{th} +% only for this language} +% \begin{macrocode} +\addto\extrasrussian{% + \babel@save{\th}% + \let\ltx@th\th + \def\th{\textormath{\ltx@th}% + {\mathop{\operator@font th}\nolimits}}% + } +% \end{macrocode} +% |\cot|: +% \begin{macrocode} +\def\ctg{\mathop{\operator@font ctg}\nolimits} +% \end{macrocode} +% |\coth|: +% \begin{macrocode} +\def\cth{\mathop{\operator@font cth}\nolimits} +% \end{macrocode} +% |\csc|: +% \begin{macrocode} +\def\cosec{\mathop{\operator@font cosec}\nolimits} +% \end{macrocode} +% +% And finally some other Ukrainian and Russian mathematical symbols: +% \begin{macrocode} +\def\Prob{\mathop{\kern\z@\mathsf{P}}\nolimits} +\def\Variance{\mathop{\kern\z@\mathsf{D}}\nolimits} +\def\nsd{\mathop{\cyrmathrm{\cyrn.\cyrs.\cyrd.}}\nolimits} +\def\nsk{\mathop{\cyrmathrm{\cyrn.\cyrs.\cyrk.}}\nolimits} +\def\NSD{\mathop{\cyrmathrm{\CYRN\CYRS\CYRD}}\nolimits} +\def\NSK{\mathop{\cyrmathrm{\CYRN\CYRS\CYRK}}\nolimits} + \def\nod{\mathop{\cyrmathrm{\cyrn.\cyro.\cyrd.}}\nolimits} % ?????? + \def\nok{\mathop{\cyrmathrm{\cyrn.\cyro.\cyrk.}}\nolimits} % ?????? + \def\NOD{\mathop{\cyrmathrm{\CYRN\CYRO\CYRD}}\nolimits} % ?????? + \def\NOK{\mathop{\cyrmathrm{\CYRN\CYRO\CYRK}}\nolimits} % ?????? +\def\Proj{\mathop{\cyrmathrm{\CYRP\cyrr}}\nolimits} +% \end{macrocode} +% +% This is for compatibility with older Ukrainian packages. +% \begin{macrocode} +\DeclareRobustCommand{\No}{% + \ifmmode{\nfss@text{\textnumero}}\else\textnumero\fi} +% \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. +% +% \begin{macrocode} +\ldf@finish{ukrainian} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/ukraineb.ins b/Master/texmf-dist/source/generic/babel/ukraineb.ins new file mode 100644 index 00000000000..73b35f110d3 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/ukraineb.ins @@ -0,0 +1,147 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/03/13} +\def\batchfile{ukraineb.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble + +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\usedir{tex/generic/babel} +\keepsilent + +\usepreamble\mainpreamble + +\generate{\file{ukraineb.ldf}{\from{ukraineb.dtx}{code}}} + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.fd} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput diff --git a/Master/texmf-dist/source/generic/babel/user.drv b/Master/texmf-dist/source/generic/babel/user.drv new file mode 100644 index 00000000000..9b45647aa69 --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/user.drv @@ -0,0 +1,170 @@ +%% +%% This is file `user.drv', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% babel.dtx (with options: `driver,user') +%% +%% This file was generated from file(s) of the Babel system. +%% --------------------------------------------------------- +%% +%% Copyright (C) 2004 Johannes Braams. All rights reserved. +%% +%% To produce the documentation in the way you like you are allowed +%% to change this driver file. +%% +%% +%% File 'babel.dtx' +%%\ProvidesFile{babel.dtx}[2005/05/21 v3.8g The Babel package] +%% Babel package for LaTeX2e. +%% Copyright (C) 1989 -- 2005 by Johannes Braams, +%% TeXniek +%% all rights reserved. +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +\ifx\ProvidesFile\@undefined + \def\ProvidesFile#1[#2 #3 #4]{% + \wlog{File: #1 #4 #3 <#2>}% + \let\ProvidesFile\@undefined + } +\fi +\ProvidesFile{user.drv} + [2005/05/21 v3.8g % +] +\documentclass{ltxdoc} +\usepackage{url,t1enc,supertabular} +\usepackage[icelandic,english]{babel} +\DoNotIndex{\!,\',\,,\.,\-,\:,\;,\?,\/,\^,\`,\@M} +\DoNotIndex{\@,\@ne,\@m,\@afterheading,\@date,\@endpart} +\DoNotIndex{\@hangfrom,\@idxitem,\@makeschapterhead,\@mkboth} +\DoNotIndex{\@oddfoot,\@oddhead,\@restonecolfalse,\@restonecoltrue} +\DoNotIndex{\@starttoc,\@unused} +\DoNotIndex{\accent,\active} +\DoNotIndex{\addcontentsline,\advance,\Alph,\arabic} +\DoNotIndex{\baselineskip,\begin,\begingroup,\bf,\box,\c@secnumdepth} +\DoNotIndex{\catcode,\centering,\char,\chardef,\clubpenalty} +\DoNotIndex{\columnsep,\columnseprule,\crcr,\csname} +\DoNotIndex{\day,\def,\dimen,\discretionary,\divide,\dp,\do} +\DoNotIndex{\edef,\else,\@empty,\end,\endgroup,\endcsname,\endinput} +\DoNotIndex{\errhelp,\errmessage,\expandafter,\fi,\filedate} +\DoNotIndex{\fileversion,\fmtname,\fnum@figure,\fnum@table,\fontdimen} +\DoNotIndex{\gdef,\global} +\DoNotIndex{\hbox,\hidewidth,\hfil,\hskip,\hspace,\ht,\Huge,\huge} +\DoNotIndex{\ialign,\if@twocolumn,\ifcase,\ifcat,\ifhmode,\ifmmode} +\DoNotIndex{\ifnum,\ifx,\immediate,\ignorespaces,\input,\item} +\DoNotIndex{\kern} +\DoNotIndex{\labelsep,\Large,\large,\labelwidth,\lccode,\leftmargin} +\DoNotIndex{\lineskip,\leavevmode,\let,\list,\ll,\long,\lower} +\DoNotIndex{\m@ne,\mathchar,\mathaccent,\markboth,\month,\multiply} +\DoNotIndex{\newblock,\newbox,\newcount,\newdimen,\newif,\newwrite} +\DoNotIndex{\nobreak,\noexpand,\noindent,\null,\number} +\DoNotIndex{\onecolumn,\or} +\DoNotIndex{\p@,par, \parbox,\parindent,\parskip,\penalty} +\DoNotIndex{\protect,\ps@headings} +\DoNotIndex{\quotation} +\DoNotIndex{\raggedright,\raise,\refstepcounter,\relax,\rm,\setbox} +\DoNotIndex{\section,\setcounter,\settowidth,\scriptscriptstyle} +\DoNotIndex{\sfcode,\sl,\sloppy,\small,\space,\spacefactor,\strut} +\DoNotIndex{\string} +\DoNotIndex{\textwidth,\the,\thechapter,\thefigure,\thepage,\thepart} +\DoNotIndex{\thetable,\thispagestyle,\titlepage,\tracingmacros} +\DoNotIndex{\tw@,\twocolumn,\typeout,\uppercase,\usecounter} +\DoNotIndex{\vbox,\vfil,\vskip,\vspace,\vss} +\DoNotIndex{\widowpenalty,\write,\xdef,\year,\z@,\z@skip} +\makeatletter +\gdef\dlqq{{\setbox\tw@=\hbox{,}\setbox\z@=\hbox{''}% + \dimen\z@=\ht\z@ \advance\dimen\z@-\ht\tw@ + \setbox\z@=\hbox{\lower\dimen\z@\box\z@}\ht\z@=\ht\tw@ + \dp\z@=\dp\tw@ \box\z@\kern-.04em}} +\makeatother +\font\manual=logo10 % font used for the METAFONT logo, etc. +\newcommand*\MF{{\manual META}\-{\manual FONT}} +\newcommand*\TeXhax{\TeX hax} +\newcommand*\babel{\textsf{babel}} +\newcommand*\Babel{\textsf{Babel}} +\newcommand*\m[1]{\mbox{$\langle$\it#1\/$\rangle$}} +\newcommand*\langvar{\m{lang}} +\newcommand*\note[1]{} +\newcommand*\bsl{\protect\bslash} +\newcommand*\Lopt[1]{\textsf{#1}} +\newcommand*\Lenv[1]{\textsf{#1}} +\newcommand*\file[1]{\texttt{#1}} +\newcommand*\cls[1]{\texttt{#1}} +\newcommand*\pkg[1]{\texttt{#1}} +\newcommand*\langdeffile[1]{% + \DocInput{#1}} +\DisableCrossrefs +\setcounter{StandardModuleDepth}{1} +\OnlyDescription +\begin{document} +\DocInput{babel.dtx} +^^A% \changes{babel~3.6i}{1997/02/22}{Added kannada} +\clearpage +\langdeffile{esperanto.dtx} +\langdeffile{interlingua.dtx} +\langdeffile{dutch.dtx} +\langdeffile{english.dtx} +\langdeffile{germanb.dtx} +\langdeffile{ngermanb.dtx} +\langdeffile{breton.dtx} +\langdeffile{welsh.dtx} +\langdeffile{irish.dtx} +\langdeffile{scottish.dtx} +\langdeffile{greek.dtx} +\langdeffile{frenchb.dtx} +\langdeffile{italian.dtx} +\langdeffile{latin.dtx} +\langdeffile{portuges.dtx} +\langdeffile{spanish.dtx} +\langdeffile{catalan.dtx} +\langdeffile{galician.dtx} +\langdeffile{basque.dtx} +\langdeffile{romanian.dtx} +\langdeffile{danish.dtx} +\langdeffile{icelandic.dtx} +\langdeffile{norsk.dtx} +\langdeffile{swedish.dtx} +\langdeffile{samin.dtx} +\langdeffile{finnish.dtx} +\langdeffile{magyar.dtx} +\langdeffile{estonian.dtx} +\langdeffile{croatian.dtx} +\langdeffile{czech.dtx} +\langdeffile{polish.dtx} +\langdeffile{serbian.dtx} +\langdeffile{slovak.dtx} +\langdeffile{slovene.dtx} +\langdeffile{russianb.dtx} +\langdeffile{bulgarian.dtx} +\langdeffile{ukraineb.dtx} +\langdeffile{lsorbian.dtx} +\langdeffile{usorbian.dtx} +\langdeffile{turkish.dtx} +\langdeffile{hebrew.dtx} +\DocInput{hebinp.dtx} +\DocInput{hebrew.fdd} +\DocInput{heb209.dtx} +\langdeffile{bahasa.dtx} +\clearpage +\DocInput{bbplain.dtx} +\end{document} +%% +%% \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 +%% +%% End of file `user.drv'. diff --git a/Master/texmf-dist/source/generic/babel/usorbian.dtx b/Master/texmf-dist/source/generic/babel/usorbian.dtx new file mode 100644 index 00000000000..e4a9ebe26df --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/usorbian.dtx @@ -0,0 +1,360 @@ +% \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{298} +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{usorbian.dtx} +%</dtx> +%<code>\ProvidesLanguage{usorbian} +%\fi +%\ProvidesFile{usorbian.dtx} + [2005/03/31 v1.0i Upper Sorbian support from the babel system] +%\iffalse +%% File `usorbian.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 - 2005 +%% by Johannes Braams, TeXniek +% +%% Upper Sorbian Language Definition File +%% Copyright (C) 1994 - 2004 +%% by Eduard Werner +% Werner, Eduard", +% Serbski institut z. t., +% Dw\'orni\v{s}\'cowa 6 +% 02625 Budy\v{s}in/Bautzen +% Germany", +% (??)3591 497223", +% edi at kaihh.hanse.de", +% +%% Please report errors to: Eduard Werner edi at kaihh.hanse.de +%% +% This file is part of the babel system, it provides the source +% code for the Upper Sorbian definition file. +%<*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}} +\newfont{\logo}{logo10} +\newcommand*\MF{{\logo METAFONT}} +\begin{document} + \DocInput{usorbian.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{usorbian.dtx} +% +% \changes{usorbian-0.1}{1994/10/10}{First version} +% \changes{usorbian-0.1b}{1994/10/18}{Made it possible to run through +% \LaTeX; added \cs{MF} and removed extra \cs{end{macro}}} +% \changes{usorbian-1.0d}{1996/07/13}{Replaced \cs{undefined} with +% \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency +% with \LaTeX} +% \changes{usorbian-1.0e}{1996/10/10}{Moved the definition of +% \cs{atcatcode} right to the beginning.} +% +% \section{The Upper Sorbian language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate. It was written by Eduard Werner +% (\texttt{edi@kaihh.hanse.de}).} It defines all the +% language-specific macros for Upper Sorbian. +% +% \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{usorbian-1.0e}{1996/11/03}{Now use \cs{LdfInit} to perform +% initial checks} +% \begin{macrocode} +%<*code> +\LdfInit{usorbian}\captionsusorbian +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{usorbian} will be an `unknown' languagein which +% case we have to make it known. So we check for the existence of +% |\l@usorbian| to see whether we have to do something here. +% +% \begin{macrocode} +\ifx\l@usorbian\@undefined + \@nopatterns{Usorbian} + \adddialect\l@usorbian0\fi +% \end{macrocode} +% +% The next step consists of defining commands to switch to (and +% from) the Upper Sorbian language. +% +% \begin{macro}{\captionsusorbian} +% The macro |\captionsusorbian| defines all strings used in the four +% standard documentclasses provided with \LaTeX. +% \changes{usorbian-0.1c}{1994/11/27}{Removed two typos (Kapitel and +% Dodatki)} +% \changes{usorbian-1.0b}{1995/07/04}{Added \cs{proofname} for +% AMS-\LaTeX} +% \changes{usorbian-1.0i}{2000/09/22}{Added \cs{glossaryname}} +% \begin{macrocode} +\addto\captionsusorbian{% + \def\prefacename{Zawod}% + \def\refname{Referency}% + \def\abstractname{Abstrakt}% + \def\bibname{Literatura}% + \def\chaptername{Kapitl}% + \def\appendixname{Dodawki}% + \def\contentsname{Wobsah}% + \def\listfigurename{Zapis wobrazow}% + \def\listtablename{Zapis tabulkow}% + \def\indexname{Indeks}% + \def\figurename{Wobraz}% + \def\tablename{Tabulka}% + \def\partname{D\'z\v el}% + \def\enclname{P\v r\l oha}% + \def\ccname{CC}% + \def\headtoname{Komu}% + \def\pagename{Strona}% + \def\seename{hl.}% + \def\alsoname{hl.~te\v z} + \def\proofname{Proof}% <-- needs translation + \def\glossaryname{Glossary}% <-- Needs translation + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\newdateusorbian} +% The macro |\newdateusorbian| redefines the command |\today| to +% produce Upper Sorbian dates. +% \changes{usorbian-1.0g}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{usorbian-1.0g}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \begin{macrocode} +\def\newdateusorbian{% + \def\today{\number\day.~\ifcase\month\or + januara\or februara\or m\v erca\or apryla\or meje\or junija\or + julija\or awgusta\or septembra\or oktobra\or + nowembra\or decembra\fi + \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\olddateusorbian} +% The macro |\olddateusorbian| redefines the command |\today| to +% produce old-style Upper Sorbian dates. +% \changes{usorbian-1.0g}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{usorbian-1.0g}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \begin{macrocode} +\def\olddateusorbian{% + \def\today{\number\day.~\ifcase\month\or + wulkeho r\'o\v zka\or ma\l eho r\'o\v zka\or nal\v etnika\or + jutrownika\or r\'o\v zownika\or sma\v znika\or pra\v znika\or + \v znjenca\or po\v znjenca\or winowca\or nazymnika\or + hodownika\fi \space \number\year}} +% \end{macrocode} +% \end{macro} +% +% The default will be the new-style dates. +% \begin{macrocode} +\let\dateusorbian\newdateusorbian +% \end{macrocode} +% +% \begin{macro}{\extrasusorbian} +% The macro |\extrasusorbian| will perform all the extra +% definitions needed for the Upper Sorbian language. It's pirated +% from |germanb.sty|. The macro |\noextrasusorbian| is used to +% cancel the actions of |\extrasusorbian|. +% +% Because for Upper Sorbian (as well as for Dutch) the \texttt{"} +% character is made active. This is done once, later on its +% definition may vary. +% \begin{macrocode} +\initiate@active@char{"} +\addto\extrasusorbian{\languageshorthands{usorbian}} +\addto\extrasusorbian{\bbl@activate{"}} +% \end{macrocode} +% Don't forget to turn the shorthands off again. +% \changes{usorbian-1.0h}{1999/12/17}{Deactivate shorthands ouside of +% Upper Sorbian} +% \begin{macrocode} +\addto\noextrasusorbian{\bbl@deactivate{"}} +% \end{macrocode} +% +% In order for \TeX\ to be able to hyphenate German Upper Sorbian +% words which contain `\ss' we have to give the character a nonzero +% |\lccode| (see Appendix H, the \TeX book). +% \begin{macrocode} +\addto\extrasusorbian{\babel@savevariable{\lccode`\^^Y}% + \lccode`\^^Y`\^^Y} +% \end{macrocode} +% The umlaut accent macro |\"| is changed to lower the umlaut dots. +% The redefinition is done with the help of |\umlautlow|. +% \begin{macrocode} +\addto\extrasusorbian{\babel@save\"\umlautlow} +\addto\noextrasusorbian{\umlauthigh} +% \end{macrocode} +% The Upper Sorbian hyphenation patterns can be used with +% |\lefthyphenmin| and |\righthyphenmin| set to~2. +% \changes{usorbian-1.0i}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\tw@} +% \end{macrocode} +% \end{macro} +% +% \changes{usorbian-1.0a}{1995/05/27}{Removed stuff that has been +% moved to \file{babel.def}} +% +% \begin{macro}{\dq} +% We save the original double quote character in |\dq| to keep it +% available, the math accent |\"| can now be typed as |"|. Also we +% store the original meaning of the command |\"| for future use. +% \begin{macrocode} +\begingroup \catcode`\"12 +\def\x{\endgroup + \def\@SS{\mathchar"7019 } + \def\dq{"}} +\x +% \end{macrocode} +% \end{macro} +% +% Now we can define the doublequote macros: the umlauts, +% \begin{macrocode} +\declare@shorthand{usorbian}{"a}{\textormath{\"{a}}{\ddot a}} +\declare@shorthand{usorbian}{"o}{\textormath{\"{o}}{\ddot o}} +\declare@shorthand{usorbian}{"u}{\textormath{\"{u}}{\ddot u}} +\declare@shorthand{usorbian}{"A}{\textormath{\"{A}}{\ddot A}} +\declare@shorthand{usorbian}{"O}{\textormath{\"{O}}{\ddot O}} +\declare@shorthand{usorbian}{"U}{\textormath{\"{U}}{\ddot U}} +% \end{macrocode} +% tremas, +% \begin{macrocode} +\declare@shorthand{usorbian}{"e}{\textormath{\"{e}}{\ddot e}} +\declare@shorthand{usorbian}{"E}{\textormath{\"{E}}{\ddot E}} +\declare@shorthand{usorbian}{"i}{\textormath{\"{\i}}{\ddot\imath}} +\declare@shorthand{usorbian}{"I}{\textormath{\"{I}}{\ddot I}} +% \end{macrocode} +% usorbian es-zet (sharp s), +% \begin{macrocode} +\declare@shorthand{usorbian}{"s}{\textormath{\ss{}}{\@SS{}}} +\declare@shorthand{usorbian}{"S}{SS} +% \end{macrocode} +% german and french quotes, +% \changes{usorbian-1.0f}{1997/04/03}{Removed empty groups after +% double quote and guillemot characters} +% \begin{macrocode} +\declare@shorthand{usorbian}{"`}{% + \textormath{\quotedblbase}{\mbox{\quotedblbase}}} +\declare@shorthand{usorbian}{"'}{% + \textormath{\textquotedblleft}{\mbox{\textquotedblleft}}} +\declare@shorthand{usorbian}{"<}{% + \textormath{\guillemotleft}{\mbox{\guillemotleft}}} +\declare@shorthand{usorbian}{">}{% + \textormath{\guillemotright}{\mbox{\guillemotright}}} +% \end{macrocode} +% discretionary commands +% \changes{usorbian-1.0c}{1996/01/24}{Now use \cs{bbl@disc}} +% \begin{macrocode} +\declare@shorthand{usorbian}{"c}{\textormath{\bbl@disc ck}{c}} +\declare@shorthand{usorbian}{"C}{\textormath{\bbl@disc CK}{C}} +\declare@shorthand{usorbian}{"f}{\textormath{\bbl@disc f{ff}}{f}} +\declare@shorthand{usorbian}{"F}{\textormath{\bbl@disc F{FF}}{F}} +\declare@shorthand{usorbian}{"l}{\textormath{\bbl@disc l{ll}}{l}} +\declare@shorthand{usorbian}{"L}{\textormath{\bbl@disc L{LL}}{L}} +\declare@shorthand{usorbian}{"m}{\textormath{\bbl@disc m{mm}}{m}} +\declare@shorthand{usorbian}{"M}{\textormath{\bbl@disc M{MM}}{M}} +\declare@shorthand{usorbian}{"n}{\textormath{\bbl@disc n{nn}}{n}} +\declare@shorthand{usorbian}{"N}{\textormath{\bbl@disc N{NN}}{N}} +\declare@shorthand{usorbian}{"p}{\textormath{\bbl@disc p{pp}}{p}} +\declare@shorthand{usorbian}{"P}{\textormath{\bbl@disc P{PP}}{P}} +\declare@shorthand{usorbian}{"t}{\textormath{\bbl@disc t{tt}}{t}} +\declare@shorthand{usorbian}{"T}{\textormath{\bbl@disc T{TT}}{T}} +% \end{macrocode} +% and some additional commands: +% \begin{macrocode} +\declare@shorthand{usorbian}{"-}{\nobreak\-\bbl@allowhyphens} +\declare@shorthand{usorbian}{"|}{% + \textormath{\nobreak\discretionary{-}{}{\kern.03em}% + \allowhyphens}{}} +\declare@shorthand{usorbian}{""}{\hskip\z@skip} +% \end{macrocode} +% +% \begin{macro}{\mdqon} +% \begin{macro}{\mdqoff} +% \begin{macro}{\ck} +% All that's left to do now is to define a couple of commands +% for reasons of compatibility with \file{german.sty}. +% \changes{usorbian-1.0g}{1998/06/07}{Now use \cs{shorthandon} and +% \cs{shorthandoff}} +% \begin{macrocode} +\def\mdqon{\shorthandon{"}} +\def\mdqoff{\shorthandoff{"}} +\def\ck{\allowhyphens\discretionary{k-}{k}{ck}\allowhyphens} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% 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{usorbian-1.0e}{1996/11/03}{Now use \cs{ldf@finish} to wrap +% up} +% \begin{macrocode} +\ldf@finish{usorbian} +%</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 diff --git a/Master/texmf-dist/source/generic/babel/welsh.dtx b/Master/texmf-dist/source/generic/babel/welsh.dtx new file mode 100644 index 00000000000..95965fcfaed --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/welsh.dtx @@ -0,0 +1,207 @@ +% \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{97} +% +% \iffalse +% Tell the \LaTeX\ system who we are and write an entry on the +% transcript. +%<*dtx> +\ProvidesFile{welsh.dtx} +%</dtx> +%<code>\ProvidesLanguage{welsh} +%\fi +%\ProvidesFile{welsh.dtx} + [2005/03/31 v1.0d Welsh support from the babel system] +%\iffalse +%% File `welsh.dtx' +%% Babel package for LaTeX version 2e +%% Copyright (C) 1989 -- 2005 +%% by Johannes Braams, TeXniek +% +%% Please report errors to: J.L. Braams +%% babel at braams.cistron.nl +% +% This file is part of the babel system, it provides the source +% code for the Welsh language definition file. +%<*filedriver> +\documentclass{ltxdoc} +\newcommand*{\TeXhax}{\TeX hax} +\newcommand*{\babel}{\textsf{babel}} +\newcommand*{\langvar}{$\langle \mathit lang \rangle$} +\newcommand*{\note}[1]{} +\newcommand*{\Lopt}[1]{\textsf{#1}} +\newcommand*{\file}[1]{\texttt{#1}} +\begin{document} + \DocInput{welsh.dtx} +\end{document} +%</filedriver> +%\fi +% \GetFileInfo{welsh.dtx} +% +% \section{The Welsh language} +% +% The file \file{\filename}\footnote{The file described in this +% section has version number \fileversion\ and was last revised on +% \filedate.} defines all the language definition macros for the +% Welsh language. +% +% For this language currently no special definitions are needed or +% available. +% +% \StopEventually{} +% +% The macro |\ldf@init| takes care of preventing that this file is +% loaded more than once, checking the category code of the +% \texttt{@} sign, etc. +% \begin{macrocode} +%<*code> +\LdfInit{welsh}{captionswelsh} +% \end{macrocode} +% +% When this file is read as an option, i.e. by the |\usepackage| +% command, \texttt{welsh} could be an `unknown' language in +% which case we have to make it known. So we check for the +% existence of |\l@welsh| to see whether we have to do +% something here. +% +% \begin{macrocode} +\ifx\undefined\l@welsh + \@nopatterns{welsh} + \adddialect\l@welsh0\fi +% \end{macrocode} +% The next step consists of defining commands to switch to (and +% from) the Welsh language. +% +% \begin{macro}{\welshhyphenmins} +% This macro is used to store the correct values of the hyphenation +% parameters |\lefthyphenmin| and |\righthyphenmin|. +% \changes{welsh-1.0c}{2000/09/22}{Now use \cs{providehyphenmins} to +% provide a default value} +% \begin{macrocode} +\providehyphenmins{\CurrentOption}{\tw@\thr@@} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\captionswelsh} +% The macro |\captionswelsh| defines all strings used in the +% four standard documentclasses provided with \LaTeX. +% \changes{welsh-1.0c}{2000/09/20}{Added \cs{glossaryname}} +% \changes{welsh-1.0d}{2005/03/31}{Provided the translation for +% Glossary} +% \begin{macrocode} +\def\captionswelsh{% + \def\prefacename{Rhagair}% + \def\refname{Cyfeiriadau}% + \def\abstractname{Crynodeb}% + \def\bibname{Llyfryddiaeth}% + \def\chaptername{Pennod}% + \def\appendixname{Atodiad}% + \def\contentsname{Cynnwys}% + \def\listfigurename{Rhestr Ddarluniau}% + \def\listtablename{Rhestr Dablau}% + \def\indexname{Mynegai}% + \def\figurename{Darlun}% + \def\tablename{Taflen}% + \def\partname{Rhan}% + \def\enclname{amgae\"edig}% + \def\ccname{cop\"\i au}% + \def\headtoname{At}% % `at' on letters meaning `to ( a person)' + % `to (a place)' is `i' in Welsh + \def\pagename{tudalen}% + \def\seename{gweler}% + \def\alsoname{gweler hefyd}% + \def\proofname{Prawf}% + \def\glossaryname{Rhestr termau}% + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\datewelsh} +% The macro |\datewelsh| redefines the command |\today| to +% produce welsh dates. +% \changes{welsh-1.0b}{1997/10/01}{Use \cs{edef} to define +% \cs{today} to save memory} +% \changes{welsh-1.0b}{1998/03/28}{use \cs{def} instead of +% \cs{edef}} +% \changes{welsh-1.0d}{2005/03/31}{removed `a viz' from the definition +% of \cs{today}} +% \begin{macrocode} +\def\datewelsh{% + \def\today{\ifnum\day=1\relax 1\/$^{\mathrm{a\tilde{n}}}$\else + \number\day\fi\space\ifcase\month\or + Ionawr\or Chwefror\or Mawrth\or Ebrill\or + Mai\or Mehefin\or Gorffennaf\or Awst\or + Medi\or Hydref\or Tachwedd\or Rhagfyr\fi + \space\number\year}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\extraswelsh} +% \begin{macro}{\noextraswelsh} +% The macro |\extraswelsh| will perform all the extra +% definitions needed for the welsh language. The macro +% |\noextraswelsh| is used to cancel the actions of +% |\extraswelsh|. For the moment these macros are empty but +% they are defined for compatibility with the other +% language definition files. +% +% \begin{macrocode} +\addto\extraswelsh{} +\addto\noextraswelsh{} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% 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. +% \begin{macrocode} +\ldf@finish{welsh} +%</code> +% \end{macrocode} +% +% \Finale +%\endinput +%% \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 \~} +%% diff --git a/Master/texmf-dist/source/generic/babel/welsh.ins b/Master/texmf-dist/source/generic/babel/welsh.ins new file mode 100644 index 00000000000..a807ec6272b --- /dev/null +++ b/Master/texmf-dist/source/generic/babel/welsh.ins @@ -0,0 +1,148 @@ +%% +%% This file will generate fast loadable files and documentation +%% driver files from the doc files in this package when run through +%% LaTeX or TeX. +%% +%% 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 LaTeX base distribution 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. +%% +%% --------------- start of docstrip commands ------------------ +%% +\def\filedate{1999/04/11} +\def\batchfile{welsh.ins} +\input docstrip.tex + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\declarepreamble\mainpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution 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. +\endpreamble + +\declarepreamble\fdpreamble +This is a generated file. + +Copyright 1989-2005 Johannes L. Braams and any individual authors +listed elsewhere in this file. All rights reserved. + +This file was generated from file(s) 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. + +This file may only be distributed together with a copy of the Babel +system. You may however distribute the Babel system without +such generated files. + +The list of all files belonging to the Babel distribution is +given in the file `manifest.bbl'. See also `legal.bbl for additional +information. + +In particular, permission is granted to customize the declarations in +this file to serve the needs of your installation. + +However, NO PERMISSION is granted to distribute a modified version +of this file under its original name. + +\endpreamble + +\keepsilent + +\usedir{tex/generic/babel} + +\usepreamble\mainpreamble +\generate{\file{welsh.ldf}{\from{welsh.dtx}{code}} + } +\usepreamble\fdpreamble + +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* files into a directory searched by TeX:} +\Msg{*} +\Msg{* \space\space All *.def, *.fd, *.ldf, *.sty} +\Msg{*} +\Msg{* To produce the documentation run the files ending with} +\Msg{* '.dtx' and `.fdd' through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} + +\endinput |