% \iffalse meta-comment
%
% Copyright (C) 1989-1994 by Johannes Braams
% All rights reserved.
% For additional copyright information see further down in this file.
% 
% This file is part of the Babel system, release 3.4 patchlevel 2.
% ----------------------------------------------------------------
% 
% This file is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% 
% 
% IMPORTANT NOTICE:
% 
% For error reports in case of UNCHANGED versions see readme file.
% 
% Please do not request updates from me directly.  Distribution is
% done through Mail-Servers and TeX organizations.
% 
% You are not allowed to change this file.
% 
% You are allowed to distribute this file under the condition that
% it is distributed together with all files mentioned in manifest.txt.
% 
% If you receive only some of these files from someone, complain!
% 
% You are NOT ALLOWED to distribute this file alone.  You are NOT
% ALLOWED to take money for the distribution or use of either this
% file or a changed version, except for a nominal charge for copying
% etc.
% \fi
% \CheckSum{384}
%%% \iffalse ============================================================
%%%  @LaTeX-style-file{
%%%     author          = "Braams J.L.",
%%%     version         = "3.6c",
%%%     date            = "26 June 1994",
%%%     time            = "02:19:03 MET",
%%%     filename        = "dutch.dtx",
%%%     address         = "PTT Research
%%%                        St. Paulusstraat 4
%%%                        2264 XZ Leidschendam
%%%                        The Netherlands",
%%%     telephone       = "(70) 3325051",
%%%     FAX             = "(70) 3326477",
%%%     checksum        = "18631 699 3432 28815",
%%%     email           = "J.L.Braams@research.ptt.nl (Internet)",
%%%     codetable       = "ISO/ASCII",
%%%     keywords        = "babel, dutch",
%%%     supported       = "yes",
%%%     abstract        = "",
%%%     docstring       = "This file contains the dutch language specific
%%%                        definitions for the babel system.",
%%%  }
%%% ====================================================================
%%% \fi
% \def\filename{dutch.dtx}
% \def\fileversion{v3.6c}
% \def\filedate{1994/05/26}
%
% \iffalse
% Babel DOCUMENT-STYLE option for LaTeX version 2.e
% Copyright (C) 1989 - 1994
%           by Johannes Braams, PTT Research Neher Laboratories
%
% Please report errors to: J.L. Braams
%                          J.L.Braams@research.ptt.nl
%
%    This file is part of the babel system, it provides the source
%    code for the Dutch language-specific 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{{\sf babel}}
\newcommand\ttbs{\char'134}
\newcommand\langvar{$\langle \it lang \rangle$}
\newcommand\note[1]{}
\newcommand\bsl{\protect\bslash}
\newcommand\Lopt[1]{{\sf #1}}
\newcommand\file[1]{{\tt #1}}
\begin{document}
 \DocInput{dutch.dtx}
\end{document}
%</filedriver>
% \fi
%
% \changes{dutch-2.0a}{2 apr 90}{Added checking of format}
% \changes{dutch-2.0b}{2 apr 90}{Added extrasdutch}
% \changes{dutch-2.0c}{18 apr 90}{Added grqq macros}
% \changes{dutch-2.1}{24 apr 90}{reflect change to version 2.1 in babel
%                          and changes in german v2.3}
% \changes{dutch-2.1a}{1 may 90}{Incorporated Nico's comments}
% \changes{dutch-2.1b}{4 july 90}{Incorporated more comments by Nico}
% \changes{dutch-2.1c}{16 july 90}{Fixed some typos}
% \changes{dutch-2.2}{16 july 90}{Fixed problem with the use of {\tt "}
%                          in moving arguments while {\tt "} is active}
% \changes{dutch-2.3}{30 juli 90}{When using PostScript fonts with the
%                              Adobe font-encoding, the dieresis-accent
%                              is located elsewhere, modified code}
% \changes{dutch-2.3a}{27 aug 90}{Modified the documentation somewhat}
% \changes{dutch-3.0}{23 april 91}{Modified for babel 3.0}
% \changes{dutch-3.0a}{25 may 91}{Removed some problems in change log}
% \changes{dutch-3.1}{29 may 91}{Removed bug found by van der Meer}
% \changes{dutch-3.2a}{15 july 91}{Renamed babel.sty in babel.com}
% \changes{dutch-3.3}{31 oct 91}{Rewritten parts of the code to use the
%                                new features of babel version 3.1}
% \changes{dutch-3.6}{2 feb 94}{Update or LaTeX2e}
% \changes{dutch-3.6c}{1994/06/26}{Removed the use of \cs{filedate},
%    moved identification after the loading of babel.def}
%
%  \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.
%
%    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 {\tt "`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 {\tt i} and {\tt j}\\
%      |"Y| & puts a negative kern between {\tt I} and {\tt J}\\
%      \verb="|= & disable ligature at this position.             \\
%      |"-| & an explicit hyphen sign, allowing hyphenation
%             in the rest of the word.                       \\
%      |"`| & 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 {\tt dutch.sty}}
%     \label{tab:dutch-quote}
%    \end{table}
%
% \StopEventually{}
%
% \changes{dutch-3.2c}{22 okt 91}{Removed code to load {\tt
%                                 latexhax.com}}
%
%    As this file needs to be read only once, we check whether it was
%    read before. If it was, the command |\captionsdutch| is
%    already defined, so we can stop processing. If this command is
%    undefined we proceed with the various definitions and first show
%    the current version of this file.
%
% \changes{dutch-3.2a}{15 july 91}{Added reset of catcode of @ before
%                                  {\tt\bsl endinput}.}
% \changes{dutch-3.2c}{22 okt 91}{removed use of {\tt\bsl @ifundefined}}
% \changes{dutch-3.3a}{11 nov 91}{Moved code to the beginning of the
%                                 file and added {\tt\bsl
%                                 selectlanguage} call}
%    \begin{macrocode}
\ifx\undefined\captionsdutch
\else
  \selectlanguage{dutch}
  \expandafter\endinput
\fi
%    \end{macrocode}
%
% \begin{macro}{\atcatcode}
%    This file, \file{dutch.sty}, may have been read while \TeX\ is in
%    the middle of processing a document, so we have to make sure the
%    category code of {\tt @} is `letter' while this file is being
%    read. We save the category code of the @-sign in |\atcatcode| and
%    make it `letter'. Later the category code can be restored to
%    whatever it was before.
%
% \changes{dutch-3.1a}{06/06/91}{Made test of catcode of @ more robust}
% \changes{dutch-3.2a}{15 july 91}{Modified handling of catcode of @
%                                again.}
% \changes{dutch-3.2c}{22 okt 91}{Removed use of {\tt\bsl makeatletter}
%                                and hence the need to load {\tt
%                                latexhax.com}}
%    \begin{macrocode}
\chardef\atcatcode=\catcode`\@
\catcode`\@=11\relax
%    \end{macrocode}
% \end{macro}
%
%    Now we determine whether the common macros from the file
%    \file{babel.def} need to be read. We can be in one of two
%    situations: either another language option has been read earlier
%    on, in which case that other option has already read
%    \file{babel.def}, or {\tt dutch} is the first language option to
%    be processed. In that case we need to read \file{babel.def} right
%    here before we continue.
%
% \changes{dutch-3.0}{23 april 91}{New check before loading babel.com}
% \changes{dutch-3.4a}{15 feb 92}{Added {\tt\bsl relax} after the
%                                 argument of {\tt\bsl input}}
%    \begin{macrocode}
\ifx\undefined\babel@core@loaded\input babel.def\relax\fi
%    \end{macrocode}
%
%    Tell the \LaTeX\ system who we are and write an entry on the
%    transcript.
%    \begin{macrocode}
\ProvidesFile{dutch.sty}[1994/06/26 v3.6c
         Dutch support from the babel system]
%    \end{macrocode}
%
% \changes{dutch-3.1}{29 may 91}{Add a check for existence
%                                {\tt\bsl originalTeX}}
%    Another check that has to be made, is if another language
%    specific file has been read already. In that case its definitions
%    have been activated. This might interfere with definitions this
%    file tries to make. Therefore we make sure that we cancel any
%    special definitions. This can be done by checking the existence
%    of the macro |\originalTeX|. If it exists we simply execute it,
%    otherwise it is |\let| to |\empty|.
% \changes{dutch-3.2a}{15 july 91}{Added {\tt\bsl let\bsl originalTeX%
%                               \bsl relax} to test for existence}
% \changes{dutch-3.3b}{25 jan 92}{Set {\tt\bsl originalTeX} to
%                       {\tt\bsl empty}, because it should be
%                       expandable.}
%    \begin{macrocode}
\ifx\undefined\originalTeX \let\originalTeX\empty \fi
\originalTeX
%    \end{macrocode}
%
%    When this file is read as an option, i.e. by
%    the |\usepackage| command, {\tt dutch} could be an
%    `unknown' language in which case we have to make it known.
%    So we check for the existence of |\l@dutch| to see whether
%    we have to do something here.
%
% \changes{dutch-3.0}{23 april 91}{Now use {\tt\bsl adddialect} if
%    language undefined}
% \changes{dutch-3.2c}{22 okt 91}{removed use of {\tt\bsl
%    @ifundefined}}
% \changes{dutch-3.3b}{25 jan 92}{Added warning, if no dutch patterns
%    loaded}
% \changes{v3.6c}{1994/06/26}{Now use \cs{@nopatterns} to produce the
%    warning}
%    \begin{macrocode}
\ifx\undefined\l@dutch
  \@nopatterns{Dutch}
  \adddialect\l@dutch0
\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}{6 june 91}{Removed {\tt\bsl global}
%                                 definitions}
% \changes{dutch-3.1a}{6 june 91}{{\tt\bsl pagename} should be
%                                 {\tt\bsl headpagename}}
% \changes{dutch-3.3a}{11 nov 91}{added {\tt\bsl seename}
%                                  and {\tt\bsl alsoname}}
% \changes{dutch-3.3b}{25 jan 92}{added {\tt\bsl prefacename}}
% \changes{dutch-3.5}{11 jul 93}{`headpagename should be `pagename}
%    \begin{macrocode}
\addto\captionsdutch{%
  \def\prefacename{Voorwoord}%
  \def\refname{Referenties}%
  \def\abstractname{Samenvatting}%
  \def\bibname{Bibliografie}%
  \def\chaptername{Hoofdstuk}%
  \def\appendixname{Bijlage}%
  \def\contentsname{Inhoudsopgave}%
  \def\listfigurename{Lijst van figuren}%
  \def\listtablename{Lijst van tabellen}%
  \def\indexname{Index}%
  \def\figurename{Figuur}%
  \def\tablename{Tabel}%
  \def\partname{Deel}%
  \def\enclname{Bijlage(n)}%
  \def\ccname{cc}%
  \def\headtoname{Aan}%
  \def\pagename{Pagina}%
  \def\seename{zie}%
  \def\alsoname{zie ook}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\datedutch}
%    The macro |\datedutch| redefines the command
%    |\today| to produce Dutch dates.
% \changes{dutch-3.1a}{6 june 91}{Removed {\tt\bsl global}
%                                 definitions}
%    \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}
%
% \begin{macro}{\extrasdutch}
% \changes{dutch-3.0b}{29 may 91}{added some comment chars to
%                                 prevent white space}
% \changes{dutch-3.1a}{6 june 91}{Removed {\tt\bsl global}
%                                 definitions}
% \changes{dutch-3.2}{2 july 91}{Save all redefined macros}
% \changes{dutch-3.3}{31 oct 91}{Macro complete rewritten}
% \changes{dutch-3.3b}{25 jan 92}{modified handling of {\tt\bsl
%                                 dospecials} and {\tt\bsl @sanitize}}
%
% \begin{macro}{\noextrasdutch}
% \changes{dutch-2.3}{30 juli 90}{Added {\tt\bsl dieresis}}
% \changes{dutch-3.0b}{29 may 91}{added some comment chars to prevent
%                                 white space}
% \changes{dutch-3.1a}{6 june 91}{Removed {\tt\bsl global}
%                                 definitions}
% \changes{dutch-3.2}{2 july 91}{Try to restore everything to
%                                its former state}
% \changes{dutch-3.3}{31 oct 91}{Macro complete rewritten}
% \changes{dutch-3.3b}{25 jan 92}{modified handling of {\tt\bsl
%                                 dospecials}
%                                 and {\tt\bsl @sanitize}}
%    The macro |\extrasdutch| will perform all the extra definitions
%    needed for the Dutch language. The macro |\noextrasdutch|
%    is used to cancel the actions of |\extrasdutch|.
%
%    Because for Dutch (as well as for German) the {\tt "} character
%    is made active, the \LaTeX\ macros |\dospecials| and
%    |\@sanitize| have to be redefined to include this character
%    as well.
%    \begin{macrocode}
\addto\extrasdutch{\babel@add@special\"}
%    \end{macrocode}
%    Similarly, |\noextrasdutch| should restore them to their
%    original definition.
%    \begin{macrocode}
\addto\noextrasdutch{\babel@remove@special\"}
%    \end{macrocode}
%
%    The {\tt "} character is made active by |\extrasdutch|.
%    The restore operation for the category change is appended to
%    |\originalTeX|. Additionally we redefine |\active@dq|,
%    after we have saved the original meaning.  If written with
%    |\protect| set accordingly, the active doublequote is written
%    as this macro. (All languages with the doublequote active
%    should write it using the same control sequence name.)
%    \begin{macrocode}
\addto\extrasdutch{%
  \babel@savevariable{\catcode`\"}%
  \babel@save\active@dq
  \catcode`\"\active \let\active@dq\dutch@active@dq}
%    \end{macrocode}
%    The simple definition |\def"{\protect\active@dq}| is not usable,
%    because the |\protect| occurs at the toplevel.  If \TeX\
%    tries to scan a number in hexadecimal notation (i.\,e., using a
%    doublequote), the |\protect| with meaning |\relax|
%    prevents the correct scanning of the number.
%    \begin{macrocode}
\begingroup \catcode`\"=\active
\def\x{\endgroup
  \addto\extrasdutch{\babel@save"\let"\dutch@@active@dq}}
\x
%    \end{macrocode}
%    The active {\tt "} is written as ``|\active@dq|''.
%    (All languages with the doublequote active
%    should write it using the same control sequence name.)
%    When the command |\"| appears in a moving argument
%    (i.e. {\tt\ttbs section\{Het re\ttbs"\{e\}le probleem\}}) an error
%    message might
%    occur. The reason is that when the argument is written to the
%    \file{.aux} file macros are expanded. The original definition of
%    |\"| is:
%\begin{verbatim}
%    \def\"#1{{\accent"7F #1}}
%\end{verbatim}
%    When the {\tt .aux} file is processed and the {\tt .toc} file is
%    written while the {\tt "} character is active, the expansion of
%    {\tt "} will replace it, resulting in a piece of code such as:
%\begin{verbatim}
%    ... re\accent \protect\active@dq ele ...
%\end{verbatim}
%    When \TeX\ reads this it will protest about a missing number.
%
%    To circumvent this, |\"| is redefined, using one of the support
%    macros for the definition of the active {\tt "}.
%
%    The original definition of |\"| has to be saved by
%    |\extrasdutch| and restored by |\noextrasdutch|.
%    \begin{macrocode}
\addto\extrasdutch{\babel@save\"}
\addto\extrasdutch{\def\"{\protect\dutch@umlaut}}
%    \end{macrocode}
%
%    The dutch hyphenation patterns can be used with |\lefthyphenmin|
%    set to~2 and |\righthyphenmin| set to~3.
%    \begin{macrocode}
\addto\extrasdutch{\babel@savevariable\lefthyphenmin
  \babel@savevariable\righthyphenmin
  \lefthyphenmin\tw@\righthyphenmin\thr@@}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
%  \begin{macro}{\@umlaut}
% \changes{dutch-3.3c}{26 jan 91}{added macro, adapted from {\tt\bsl
%                                 newumlaut} in german.tex}
%    The macro |\@umlaut|
%    lowers the umlaut character nearer to the letter. To do this it
%    needs 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 {\tt make\_accent} procedure
%    about the current x-height of the font to force another placement
%    of the umlaut character.
%    \begin{macrocode}
\def\dutch@umlaut#1{\@umlaut#1\allowhyphens}
\def\@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.
%    \begin{macrocode}
  {\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 {\tt .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{\char127}\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.
%    \begin{macrocode}
  \accent127\fontdimen5\font\U@D #1}}
%    \end{macrocode}
%  \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:dutch-quote}.
%
% \changes{dutch-3.3a}{11 nov 91}{Added {\tt\bsl save@sf@q} macro from
%                                 germanb and rewrote all quote macros
%                                 to use it}
% \changes{dutch-3.4b}{16 feb 91}{moved definition of {\tt\bsl
%                                 allowhyphens}, {\tt\bsl set@low@box}
%                                 and {\tt\bsl save@sf@q} to {\tt
%                                 babel.com}}
%
%  \begin{macro}{\dlqq}
%    The above macro can now be used to define low opening quotes.
%    Since it may be used in arguments to other macros we protect it.
%    \begin{macrocode}
\def\dlqq{\protect\@dlqq}
\def\@dlqq{\save@sf@q{\set@low@box{''}\box\z@\kern-.04em\allowhyphens}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\drqq}
%    For reasons of symmetry we also define |"'|. This command
%    is defined similar to |\dlqq|, except that the quotes aren't
%    lowered to the baseline.
%    \begin{macrocode}
\def\drqq{\protect\@drqq}
\def\@drqq{\save@sf@q{''}}
%    \end{macrocode}
%  \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\@MATHUMLAUT{\mathaccent"707F }
  \def\dq{"}}
\x
%    \end{macrocode}
%    If an active {\tt "} character gets ``lost'' in a non-dutch
%    language it should expand to a {\tt "} with category code `other'
%    by default.
%    The same applies for the control sequence |\active@dq|.
% \changes{dutch-3.3a}{11 nov 91}{Added default expansion of active
%                                  doublequote}
%    \begin{macrocode}
\begingroup \catcode`\"=\active
\def\x{\endgroup
  \let"\dq
  \let\active@dq\dq}
\x
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\dieresis}
% \changes{dutch-2.3}{30 juli 90}{Macro added}
%    The original definition of |\"| is stored as |\dieresis|, because
%    the definition of |\"| might not be the default plain \TeX\ one.
%    If the user uses {\sc PostScript} fonts with the Adobe font
%    encoding the {\tt "} 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|. For this reason we save
%    the definition of |\"| and use that in the definition of other
%    macros.
%
% \changes{dutch-3.1a}{6 june 91}{Removed {\tt\bsl global} definitions}
%    \begin{macrocode}
\let\dieresis\"
%    \end{macrocode}
%  \end{macro}
%
%  \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}{30 juli 90}{{\tt\bsl dieresis} instead of
%                                {\tt\bsl accent127}}
% \changes{dutch-3.3a}{11 nov 91}{renamed {\tt\bsl @umlaut} to
%                                {\tt\bsl @trema}}
%    \begin{macrocode}
\def\@trema#1{%
  \allowhyphens\discretionary{-}{#1}{\@umlaut #1}\allowhyphens}
%    \end{macrocode}
%  \end{macro}
%
% \changes{dutch-3.4}{25 jan 92}{Copied dq mechanism from german
%                                v2.3e}
%
%  \begin{macro}{\dutch@dq@macro}
%    For all arguments of an active doublequote which should be
%    treated in a special way, we define a macro with a name that
%    contains the argument text.
%
%    \begin{macrocode}
\def\dutch@dqmacro#1{\csname d@dq@\string #1@dq@\endcsname}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\dutch@@active@dq}
%    An active doublequote is |\let| to this macro definition.
%    First we look if the argument triggers a special macro, then we
%    expand either to a normal doublequote or indirectly to this
%    macro.
%    \begin{macrocode}
\def\dutch@@active@dq#1{\expandafter\expandafter\expandafter
  \ifx\dutch@dqmacro{#1}\relax \expandafter\normal@dq
  \else \expandafter\dutch@@@active@dq \fi {#1}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\normal@dq}
%    The braces around the argument in |\dutch@@active@dq| are
%    necessary for empty arguments.  For |\normal@dq| we have to
%    delete the braces and insert a normal doublequote.
%    \begin{macrocode}
\def\normal@dq#1{\dq #1}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\dutch@@@active@dq}
%    We have to call |\active@dq|, but this call has to be protected
%    to inhibit further expansion when it is written to files.
%    (|\active@dq| is |\let| to |\dutch@active@dq|.)
%    To allow correct ligatures and kerning, the |\protect| should
%    expand to nothing, if it is used with meaning |\relax|.
%    The additional |\empty| in the argument of the |\active@dq|
%    call is necessary for the correct expansion of |""|.
%    \begin{macrocode}
\def\dutch@@@active@dq#1{%
  \ifx\protect\relax \else \expandafter\protect \fi
  \active@dq{#1\empty}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\dutch@active@dq}
%    In dutch mode |\active@dq| is |\let| to this macro.
%    To get the final expansion of the special action macros, we have
%    to expand the |\dutch@dqmacro| three times.  This expansion
%    results in two groups of code, containing the action for text and
%    for math mode. The correct group is selected with the help of two
%    additional macros.
%    \begin{macrocode}
\def\dutch@active@dq#1{%
  \csname dutch@dq@\ifmmode second\else first\fi
    \expandafter\expandafter\expandafter\expandafter
    \expandafter\expandafter\expandafter
  \endcsname
  \dutch@dqmacro{#1}}
\def\dutch@dq@first#1#2{#1}
\def\dutch@dq@second#1#2{#2}
%    \end{macrocode}
% \end{macro}
%
%  \begin{macro}{\def@dutch@dqmacro}
% \changes{dutch-3.4b}{16 feb 91}{Renamed macro from {\tt\bsl
%                                 def@dqmacro} because of clash with
%                                 the same macro for other languages}
%  \begin{macro}{\let@dutch@dqmacro}
% \changes{dutch-3.4b}{16 feb 91}{Renamed macro from {\tt\bsl
%                                 let@dqmacro} because of clash with
%                                 the same macro for other languages}
%    To define a doublequote macro we use two macros.
%    \begin{macrocode}
\def\def@dutch@dqmacro#1#2#3{\expandafter\expandafter\expandafter
  \def\dutch@dqmacro{#1}{{#2}{#3}}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\let@dutch@dqmacro#1#2{\begingroup
  \edef\x{\endgroup \let
    \expandafter\expandafter\expandafter\noexpand\dutch@dqmacro{#1}%
    \expandafter\expandafter\expandafter\noexpand\dutch@dqmacro{#2}}%
  \x}
%    \end{macrocode}
%  \end{macro}
%  \end{macro}
%
% \changes{dutch-2.3}{30 juli 90}{{\tt\bsl dieresis} instead of
%                                 {\tt\bsl accent127}}
% \changes{dutch-3.2}{2 juli 91}{added case for {\tt "y} and {\tt "Y}}
% \changes{dutch-3.2b}{16 juli 91}{removed typo (allowhpyhens)}
%     Now we can define the doublequote macros: the tremas,
%    \begin{macrocode}
\def@dutch@dqmacro{a}{\@trema a}{\@MATHUMLAUT a}
\def@dutch@dqmacro{e}{\@trema e}{\@MATHUMLAUT e}
\def@dutch@dqmacro{i}%
        {\allowhyphens\discretionary{-}{i}{\dieresis\i}\allowhyphens}%
        {\@MATHUMLAUT \imath}
\def@dutch@dqmacro{o}{\@trema o}{\@MATHUMLAUT o}
\def@dutch@dqmacro{u}{\@trema u}{\@MATHUMLAUT u}
%    \end{macrocode}
%    dutch quotes,
%    \begin{macrocode}
\def@dutch@dqmacro{`}{\dlqq{}}{\dlqq{}}
\def@dutch@dqmacro{'}{\drqq{}}{\drqq{}}
%    \end{macrocode}
%    and some additional commands:
%    \begin{macrocode}
\def@dutch@dqmacro{-}{\allowhyphens-\allowhyphens}%
                     {\allowhyphens-\allowhyphens}
\def@dutch@dqmacro{|}{\discretionary{-}{}{\kern.03em}}{}
\def@dutch@dqmacro{y}{\allowhyphens i\kern-0.06\p@ j\allowhyphens}%
                     {\@MATHUMLAUT y}
\def@dutch@dqmacro{Y}{\allowhyphens I\kern-0.06\p@ J\allowhyphens}%
                     {\@MATHUMLAUT Y}
%    \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.
%    \begin{macrocode}
\addto\extrasdutch{\babel@save\-}
\addto\extrasdutch{\def\-{\allowhyphens
                          \discretionary{-}{}{}\allowhyphens}}
%    \end{macrocode}
%  \end{macro}
%
% Our last action is to activate the commands we have just defined,
% by calling the macro |\selectlanguage|.
%    \begin{macrocode}
\selectlanguage{dutch}
%    \end{macrocode}
%    Finally, the category code of {\tt @} is reset to its original
%    value. The macrospace used by |\atcatcode| is freed.
% \changes{dutch-3.2a}{15 july 91}{Modified handling of catcode of
%                                  @-sign.}
%    \begin{macrocode}
\catcode`\@=\atcatcode \let\atcatcode\relax
%    \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
