% \iffalse meta-comment
%
% Copyright 1989-2003 Johannes L. Braams and any individual authors
% listed elsewhere in this file.  All rights reserved.
% 
% This file is part of the Babel system release 3.7.
% --------------------------------------------------
% 
% It may be distributed under the terms of the LaTeX Project Public
% License, as described in lppl.txt in the base LaTeX distribution.
% Either version 1.2 or, at your option, any later version.
% \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}
        [2003/05/23 v2.6m new German support from the babel system]
%\iffalse
%% File `ngermanb.dtx'
%% Babel package for LaTeX version 2e
%% Copyright (C) 1989 - 2003
%%           by Johannes Braams, TeXniek
%
%% new Germanb Language Definition File
%% Copyright (C) 1989 - 2003
%%           by Bernd Raichle <raichle@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@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
