% \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{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}
        [2003/11/20 v2.2p Catalan support from the babel system]
%\iffalse
%% File `catalan.dtx'
%% Babel package for LaTeX version 2e
%% Copyright (C) 1989 - 2003
%%           by Johannes Braams, TeXniek
%
%% Catalan Language Definition File
%% Copyright (C) 1991 - 2001
%%           by Goncal Badenes <badenes@imec.be>
%%              Johannes Braams, TeXniek
%
%% 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 Catalan language definition file.
%    This file was developped out of spanish.sty and suggestions by
%    Goncal Badenes <badenes@imec.be> and Joerg Knappen
%    <knappen@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
