% \iffalse meta-comment
%
% Copyright 1989-2026 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 Javier Bezos
% 
% \fi
%
% \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}
        [2026/01/24 v1.0i Breton support from the babel system]
%\iffalse
%% File `breton.dtx'
%% Babel package for LaTeX version 2e
%% Copyright (C) 1989 - 2026
%%           by Johannes Braams, TeXniek
%%           by Javier Bezos
%
%% 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)
%
%    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}}
% \changes{breton-1.0i}{2026/01/24}{Fixed many strings (by Alan
%   Kersaudy).}
%    \begin{macrocode}
\addto\captionsbreton{%
  \def\prefacename{Rakskrid}%
  \def\refname{Daveenno\`u}%
  \def\abstractname{Diverradur}%
  \def\bibname{Levrlennadurezh}%
  \def\chaptername{Pennad}%
  \def\appendixname{Stagadenn}%
  \def\contentsname{Danvezio\`u}%
  \def\listfigurename{Listenn ar figurenno\`u}%
  \def\listtablename{Listenn an taolenno\`u}%
  \def\indexname{Indeks}%
  \def\figurename{Figurenn}%
  \def\tablename{Taolenn}%
  \def\partname{Lodenn}%
  \def\enclname{Diello\`u kevret}%
  \def\ccname{Eilskrid da}%
  \def\headtoname{Da}
  \def\pagename{Pajenn}%
  \def\seename{Gwelet}%
  \def\alsoname{Gwelet ivez}%
  \def\proofname{Prouenn}%
  \def\glossaryname{Geriaoueg}%
}
%    \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
