%% %% This is file `french.ldf', %% generated with the docstrip utility. %% %% The original source files were: %% %% frenchb.dtx (with options: `french') %% This is a generated file part of the babel-french bundle %% to be used with 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 Daniel Flipo. %% %% Please report errors to: %% \ProvidesLanguage{french} [2022/04/18 v3.5n French support from the babel system] %% %% Babel package for LaTeX version 2e %% Copyright © 1996-2022 %% by Daniel Flipo %% \LdfInit\CurrentOption{FBclean@on@exit} \def\fb@error#1#2{% \begingroup \newlinechar=`\^^J \def\\{^^J(french.ldf) }% \errhelp{#2}\errmessage{\\#1^^J}% \endgroup} \def\fb@warning#1{% \begingroup \newlinechar=`\^^J \def\\{^^J(french.ldf) }% \message{\\#1^^J}% \endgroup} \def\fb@info#1{% \begingroup \newlinechar=`\^^J \def\\{^^J}% \wlog{#1}% \endgroup} \let\bbl@tempa\relax \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname eTeXversion\endcsname\relax \let\bbl@tempa\endinput \fb@error{babel-french requires eTeX.\\ Aborting here} {Orignal PlainTeX is not supported,\\ please use LuaTeX or XeTeX engines.} \fi \bbl@tempa \let\bbl@tempa\relax \ifdefined\babeltags \else \let\bbl@tempa\endinput \ifdefined\PackageError \PackageError{french.ldf} {babel-french requires babel v.3.16.\MessageBreak Aborting here} {Please upgrade Babel!} \else \fb@error{babel-french requires babel v.3.16.\\ Aborting here} {Please upgrade Babel!} \fi \fi \bbl@tempa \def\FB@nopatterns{% \ifdefined\l@nohyphenation \adddialect\l@french\l@nohyphenation \edef\bbl@nulllanguage{\string\language=nohyphenation}% \else \edef\bbl@nulllanguage{\string\language=0}% \adddialect\l@french0 \fi \@nopatterns{French}} \ifdefined\l@french \else \FB@nopatterns \fi \ifdefined\l@acadian \adddialect\l@canadien\l@acadian \else \adddialect\l@acadian\l@french \adddialect\l@canadien\l@french \fi \providehyphenmins{french}{\tw@\thr@@} \providehyphenmins{acadian}{\tw@\thr@@} \newif\ifLaTeXe \let\bbl@tempa\relax \ifdefined\magnification \else \ifdefined\@compatibilitytrue \LaTeXetrue \else \PackageError{french.ldf} {LaTeX-2.09 format is no longer supported.\MessageBreak Aborting here} {Please upgrade to LaTeX2e!} \let\bbl@tempa\endinput \fi \fi \bbl@tempa \newif\ifFBunicode \newif\ifFBLuaTeX \newif\ifFBXeTeX \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname luatexversion\endcsname\relax \else \FBunicodetrue \FBLuaTeXtrue \fi \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname XeTeXrevision\endcsname\relax \else \FBunicodetrue \FBXeTeXtrue \fi \newif\ifFBfrench \def\extrasfrench{% \FBfrenchtrue \babel@savevariable{\lccode"27}% \lccode"27="27 \ifFBunicode \babel@savevariable{\lccode"2019}% \lccode"2019="2019 \fi } \def\noextrasfrench{\FBfrenchfalse} \addto\extrasfrench{\bbl@frenchspacing} \addto\noextrasfrench{\bbl@nonfrenchspacing} \newif\ifFB@active@punct \FB@active@puncttrue \newif\ifFB@luatex@punct \ifFBLuaTeX \ifnum\luatexversion<100 \ifx\PackageWarning\@undefined \fb@warning{Please upgrade LuaTeX to version 1.0.4 or above!\\% babel-french will make high punctuation characters (;:!?)\\% active with LuaTeX < 1.0.4.}% \else \PackageWarning{french.ldf}{Please upgrade LuaTeX to version 1.0.4 or above!\MessageBreak babel-french will make high punctuation characters% \MessageBreak (;:!?) active with LuaTeX < 1.0.4;% \MessageBreak reported}% \fi \else \FB@luatex@puncttrue\FB@active@punctfalse \fi \fi \newcount\FB@nonchar \newif\ifFB@xetex@punct \ifdefined\XeTeXinterchartokenstate \FB@xetex@puncttrue\FB@active@punctfalse \ifdim\the\XeTeXversion\XeTeXrevision pt<0.99994pt \FB@nonchar=255 \relax \else \FB@nonchar=4095 \relax \fi \fi \newcommand*{\FBguillspace}{\hskip .8\fontdimen2\font plus .3\fontdimen3\font minus .8\fontdimen4\font \relax} \newcommand*{\FBcolonspace}{\space} \newcommand*{\FBthinspace}{\hskip .5\fontdimen2\font \relax} \ifLaTeXe \newcommand*{\FBsetspaces}[5][french]{% \def\bbl@tempa{french}\def\bbl@tempb{#1}% \ifx\bbl@tempa\bbl@tempb \def\bbl@tempb{}\fi \@namedef{\bbl@tempb FB#2space}{\hskip #3\fontdimen2\font plus #4\fontdimen3\font minus #5\fontdimen4\font \relax}% \ifFB@luatex@punct \ifx\bbl@tempb\FB@acadian \directlua{ FBsp.#2.gl.ac[1] = #3 FBsp.#2.gl.ac[2] = #4 FBsp.#2.gl.ac[3] = #5 if #3 > 0.6 then FBsp.#2.ch.ac = 0xA0 elseif #3 > 0.2 then FBsp.#2.ch.ac = 0x202F else FBsp.#2.ch.ac = 0x200B end }% \fi \fi } \@onlypreamble\FBsetspaces \fi \ifLaTeXe \addto\extrasfrench{% \ifFB@luatex@punct \edef\bbl@tempa{\detokenize\expandafter{\languagename}}% \edef\bbl@tempb{\detokenize{french}}% \ifx\bbl@tempa\bbl@tempb \FB@dialect=0 \relax \else \FB@dialect=1 \relax \fi \ifdefined\FB@once\else \set@glue@table{colon}% \set@glue@table{thin}% \set@glue@table{guill}% \def\FB@once{}% \fi \fi \ifcsname\languagename FBthinspace\endcsname \babel@save\FBthinspace \renewcommand*{\FBthinspace}{% \csname\languagename FBthinspace\endcsname}% \fi \ifcsname\languagename FBcolonspace\endcsname \babel@save\FBcolonspace \renewcommand*{\FBcolonspace}{% \csname\languagename FBcolonspace\endcsname}% \fi \ifcsname\languagename FBguillspace\endcsname \babel@save\FBguillspace \renewcommand*{\FBguillspace}{% \csname\languagename FBguillspace\endcsname}% \fi } \fi \newif\ifFB@spacing \FB@spacingtrue \newcommand*{\FB@spacing@on}{% \ifFB@luatex@punct \FB@spacing=1 \relax \else \FB@spacingtrue \fi} \newcommand*{\FB@spacing@off}{% \ifFB@luatex@punct \FB@spacing=0 \relax \else \FB@spacingfalse \fi} \ifFB@luatex@punct \ifdefined\newluafunction\else \input ltluatex.tex \fi \newattribute\FB@spacing \FB@spacing=1 \relax \newattribute\FB@addDPspace \FB@addDPspace=1 \relax \newattribute\FB@addGUILspace \FB@addGUILspace=0 \relax \newattribute\FB@ucsNBSP \FB@ucsNBSP=0 \relax \newattribute\FB@dialect \FB@dialect=0 \relax \ifLaTeXe \PackageInfo{french.ldf}{No need for active punctuation characters\MessageBreak with this version of LuaTeX!\MessageBreak reported} \else \fb@info{No need for active punctuation characters\\ with this version of LuaTeX!} \fi \newcommand*{\set@glue@table}[1]{% \directlua { local s = token.get_meaning("FB#1space") local t = FBget_glue(s) if t then FBsp.#1.gl.fr = t if not FBsp.#1.gl.ac[1] then FBsp.#1.gl.ac = t end if FBsp.#1.gl.fr[1] > 0.6 then FBsp.#1.ch.fr = 0xA0 elseif FBsp.#1.gl.fr[1] > 0.2 then FBsp.#1.ch.fr = 0x202F else FBsp.#1.ch.fr = 0x200B end if not FBsp.#1.ch.ac then FBsp.#1.ch.ac = FBsp.#1.ch.fr end else texio.write_nl('term and log', '') texio.write_nl('term and log', '*** french.ldf warning: Unexpected syntax in FB#1space,') texio.write_nl('term and log', '*** french.ldf warning: LuaTeX table FBsp unchanged.') texio.write_nl('term and log', '*** french.ldf warning: Consider using FBsetspaces to ') texio.write('term and log', 'customise FB#1space.') texio.write_nl('term and log', '') end }% } \fi \ifFB@luatex@punct \newcommand*{\FB@luatex@punct@french}{% \babel@save\shorthandon \babel@save\shorthandoff \def\shorthandoff##1{% \ifx\PackageWarning\@undefined \fb@warning{\noexpand\shorthandoff{;:!?} is helpless with LuaTeX,\\ use \noexpand\NoAutoSpacing *inside a group* instead.}% \else \PackageWarning{french.ldf}{\protect\shorthandoff{;:!?} is helpless with LuaTeX,\MessageBreak use \protect\NoAutoSpacing \space *inside a group* instead;\MessageBreak reported}% \fi}% \def\shorthandon##1{}% } \addto\extrasfrench{\FB@luatex@punct@french} \def\activate@luatexpunct{% \directlua{% FR_fr = \the\l@french ; FR_ca = \the\l@acadian ; local path = kpse.find_file("frenchb.lua", "lua") if path then local f = dofile(path) luatexbase.add_to_callback("kerning", f, "frenchb.french_punctuation") else texio.write_nl('') texio.write_nl('*****************************') texio.write_nl('Error: frenchb.lua not found.') texio.write_nl('*****************************') texio.write_nl('') end }% } \fi \ifFB@xetex@punct \ifLaTeXe \PackageInfo{french.ldf}{No need for active punctuation characters\MessageBreak with this version of XeTeX!\MessageBreak reported} \else \fb@info{No need for active punctuation characters\\ with this version of XeTeX!} \fi \newXeTeXintercharclass\FB@punctthick \newXeTeXintercharclass\FB@punctthin \newXeTeXintercharclass\FB@punctnul \newXeTeXintercharclass\FB@guilo \newXeTeXintercharclass\FB@guilf \newXeTeXintercharclass\FB@guilnul \def\FBsavevariable@loop#1#2{\begingroup \toks@\expandafter{\originalTeX #1}% \edef\x{\endgroup \def\noexpand\originalTeX{\the\toks@ #2=\the#1#2\relax}}% \x} \def\FB@charlist{"21,"3A,"3B,"3F,"AB,"BB,"28,"5B,"A0,"202F,% "29,"5D,"7B,"7D,"2C,"2D,"2E,"22,"25,"27,"60,"2019} \newcommand*{\FB@xetex@punct@french}{% \babel@savevariable{\XeTeXinterchartokenstate}% \babel@save{\shorthandon}% \babel@save{\shorthandoff}% \bbl@for\FB@char\FB@charlist {\FBsavevariable@loop{\XeTeXcharclass}{\FB@char}}% \def\shorthandoff##1{% \ifx\PackageWarning\@undefined \fb@warning{\noexpand\shorthandoff{;:!?} is helpless with XeTeX,\\ use \noexpand\NoAutoSpacing *inside a group* instead.}% \else \PackageWarning{french.ldf}{\protect\shorthandoff{;:!?} is helpless with XeTeX,\MessageBreak use \protect\NoAutoSpacing\space *inside a group* instead;\MessageBreak reported}% \fi}% \def\shorthandon##1{}% \XeTeXinterchartokenstate=1 \XeTeXcharclass `\: = \FB@punctthick \XeTeXinterchartoks \z@ \FB@punctthick = {% \ifFB@spacing\ifhmode\FDP@colonspace\fi\fi}% \XeTeXinterchartoks \FB@guilf \FB@punctthick = {% \ifFB@spacing\FDP@colonspace\fi}% \XeTeXinterchartoks \FB@nonchar \FB@punctthick = {% \ifFB@spacing \ifhmode \ifdim\lastskip>1sp \unskip\penalty\@M\FBcolonspace \else \FDP@colonspace \fi \fi \fi}% \bbl@for\FB@char {`\;,`\!,`\?}% {\XeTeXcharclass\FB@char=\FB@punctthin}% \XeTeXinterchartoks \z@ \FB@punctthin = {% \ifFB@spacing\ifhmode\FDP@thinspace\fi\fi}% \XeTeXinterchartoks \FB@guilf \FB@punctthin = {% \ifFB@spacing\FDP@thinspace\fi}% \XeTeXinterchartoks \FB@nonchar \FB@punctthin = {% \ifFB@spacing \ifhmode \ifdim\lastskip>1sp \unskip\penalty\@M\FBthinspace \else \FDP@thinspace \fi \fi \fi}% \XeTeXinterchartoks \FB@guilo \z@ = {% \ifFB@spacing\FB@guillspace\fi}% \XeTeXinterchartoks \FB@guilo \FB@nonchar = {% \ifFB@spacing\FB@guillspace\ignorespaces\fi}% \XeTeXinterchartoks \z@ \FB@guilf = {% \ifFB@spacing\FB@guillspace\fi}% \XeTeXinterchartoks \FB@punctthin \FB@guilf = {% \ifFB@spacing\FB@guillspace\fi}% \XeTeXinterchartoks \FB@nonchar \FB@guilf = {% \ifFB@spacing\unskip\FB@guillspace\fi}% \bbl@for\FB@char {`\[,`\(,"A0,"202F}% {\XeTeXcharclass\FB@char=\FB@punctnul}% \bbl@for\FB@char {`\{,`\,,`\.,`\-,`\),`\],`\},`\%,"22,"27,"60,"2019}% {\XeTeXcharclass\FB@char=\z@}% } \addto\extrasfrench{\FB@xetex@punct@french} \fi \newif\ifFB@koma \ifLaTeXe \@ifclassloaded{scrartcl}{\FB@komatrue}{} \@ifclassloaded{scrbook}{\FB@komatrue}{} \@ifclassloaded{scrreprt}{\FB@komatrue}{} \ifFB@koma\def\FB@std@capsep{:\ }\fi \@ifclassloaded{beamer}{\def\FB@std@capsep{:\ }}{} \@ifclassloaded{memoir}{\def\FB@std@capsep{: }}{} \fi \ifFB@active@punct \initiate@active@char{:}% \initiate@active@char{;}% \initiate@active@char{!}% \initiate@active@char{?}% \declare@shorthand{french}{;}{% \ifFB@spacing \ifhmode \ifdim\lastskip>1sp \unskip\penalty\@M\FBthinspace \else \FDP@thinspace \fi \fi \fi \string;} \declare@shorthand{french}{!}{% \ifFB@spacing \ifhmode \ifdim\lastskip>1sp \unskip\penalty\@M\FBthinspace \else \FDP@thinspace \fi \fi \fi \string!} \declare@shorthand{french}{?}{% \ifFB@spacing \ifhmode \ifdim\lastskip>1sp \unskip\penalty\@M\FBthinspace \else \FDP@thinspace \fi \fi \fi \string?} \declare@shorthand{french}{:}{% \ifFB@spacing \ifhmode \ifdim\lastskip>1sp \unskip\penalty\@M\FBcolonspace \else \FDP@colonspace \fi \fi \fi \string:} \declare@shorthand{system}{:}{\string:} \declare@shorthand{system}{!}{\string!} \declare@shorthand{system}{?}{\string?} \declare@shorthand{system}{;}{\string;} \addto\extrasfrench{\languageshorthands{french}% \bbl@activate{:}\bbl@activate{;}% \bbl@activate{!}\bbl@activate{?}% } \addto\noextrasfrench{% \bbl@deactivate{:}\bbl@deactivate{;}% \bbl@deactivate{!}\bbl@deactivate{?}% } \fi \newif\ifFBAutoSpacePunctuation \FBAutoSpacePunctuationtrue \def\autospace@beforeFDP{% \ifFB@luatex@punct\FB@addDPspace=1 \fi \def\FDP@thinspace{\penalty\@M\FBthinspace}% \def\FDP@colonspace{\penalty\@M\FBcolonspace}} \def\noautospace@beforeFDP{% \ifFB@luatex@punct\FB@addDPspace=0 \fi \let\FDP@thinspace\@empty \let\FDP@colonspace\@empty} \ifLaTeXe \def\AutoSpaceBeforeFDP{\autospace@beforeFDP \FBAutoSpacePunctuationtrue} \def\NoAutoSpaceBeforeFDP{\noautospace@beforeFDP \FBAutoSpacePunctuationfalse} \AtEndOfPackage{\AutoSpaceBeforeFDP} \else \let\AutoSpaceBeforeFDP\autospace@beforeFDP \let\NoAutoSpaceBeforeFDP\noautospace@beforeFDP \AutoSpaceBeforeFDP \fi \ifLaTeXe \DeclareRobustCommand\ttfamilyFB{\FB@spacing@off \ttfamilyORI} \DeclareRobustCommand\rmfamilyFB{\FB@spacing@on \rmfamilyORI} \DeclareRobustCommand\sffamilyFB{\FB@spacing@on \sffamilyORI} \fi \DeclareRobustCommand*{\NoAutoSpacing}{% \FB@spacing@off \ifFB@active@punct\shorthandoff{;:!?}\fi } \ifLaTeXe \else \ifFBunicode \def\guillemotleft{{\char"00AB}} \def\guillemotright{{\char"00BB}} \def\textquotedblleft{{\char"201C}} \def\textquotedblright{{\char"201D}} \else \def\guillemotleft{\leavevmode\raise0.25ex \hbox{$\scriptscriptstyle\ll$}} \def\guillemotright{\raise0.25ex \hbox{$\scriptscriptstyle\gg$}} \def\textquotedblleft{``} \def\textquotedblright{''} \fi \let\xspace\relax \fi \providecommand\texorpdfstring[2]{#1} \newcommand*{\FB@og}{\texorpdfstring{\@FB@og}{\guillemotleft\space}} \newcommand*{\FB@fg}{\texorpdfstring{\@FB@fg}{\space\guillemotright}} \newcommand*{\FB@guillspace}{\penalty\@M\FBguillspace} \newcommand*{\FBgspchar}{\char"A0\relax} \newif\ifFBucsNBSP \ifFB@luatex@punct \DeclareRobustCommand*{\@FB@og}{\leavevmode \bgroup\FB@spacing=0 \guillemotleft\egroup \ifFBucsNBSP\FBgspchar\else\FB@guillspace\fi} \DeclareRobustCommand*{\@FB@fg}{\ifdim\lastskip>\z@\unskip\fi \ifFBucsNBSP\FBgspchar\else\FB@guillspace\fi \bgroup\FB@spacing=0 \guillemotright\egroup} \fi \ifFB@xetex@punct \DeclareRobustCommand*{\@FB@og}{\leavevmode \bgroup\FB@spacingfalse\guillemotleft\egroup \FB@guillspace} \DeclareRobustCommand*{\@FB@fg}{\ifdim\lastskip>\z@\unskip\fi \FB@guillspace \bgroup\FB@spacingfalse\guillemotright\egroup} \fi \ifFB@active@punct \DeclareRobustCommand*{\@FB@og}{\leavevmode \guillemotleft \FB@guillspace} \DeclareRobustCommand*{\@FB@fg}{\ifdim\lastskip>\z@\unskip\fi \FB@guillspace \guillemotright} \fi \newcommand*{\og}{\@empty} \newcommand*{\fg}{\@empty} \ifLaTeXe \def\bbl@frenchguillemets{% \renewcommand*{\og}{\FB@og}% \renewcommand*{\fg}{\FB@fg\xspace}} \renewcommand*{\og}{\textquotedblleft} \renewcommand*{\fg}{\ifdim\lastskip>\z@\unskip\fi \textquotedblright\xspace} \else \def\bbl@frenchguillemets{\let\og\FB@og \let\fg\FB@fg} \def\og{\textquotedblleft} \def\fg{\ifdim\lastskip>\z@\unskip\fi\textquotedblright} \fi \addto\extrasfrench{\babel@save\og \babel@save\fg \bbl@frenchguillemets} \newcommand*{\ogi}{\FB@og} \newcommand*{\fgi}{\FB@fg} \newcommand*{\@ogi}{\ifmmode\hbox{\ogi}\else\ogi\fi} \newcommand*{\@fgi}{\ifmmode\hbox{\fgi}\else\fgi\fi} \newcommand*{\ogii}{\textquotedblleft} \newcommand*{\fgii}{\textquotedblright} \newcommand*{\@ogii}{\ifmmode\hbox{\ogii}\else\ogii\fi} \newcommand*{\@fgii}{\ifmmode\hbox{\fgii}\else\fgii\fi} \newcount\FBguill@level \newtoks\FBold@everypar \def\FB@addquote@everypar{% \let\FBnew@everypar\everypar \FBold@everypar=\expandafter{\the\everypar}% \FBnew@everypar={\the\FBold@everypar\FBeverypar@quote}% \let\everypar\FBold@everypar \let\FB@addquote@everypar\relax } \newif\ifFBcloseguill \FBcloseguilltrue \newif\ifFBInnerGuillSingle \def\FBguillopen{\bgroup\NoAutoSpacing\guillemotleft\egroup} \def\FBguillclose{\bgroup\NoAutoSpacing\guillemotright\egroup} \let\FBguillnone\empty \let\FBeveryparguill\FBguillopen \let\FBeverylineguill\FBguillnone \let\FBeverypar@quote\relax \let\FBeveryline@quote\empty \ifLaTeXe \DeclareRobustCommand\frquote{% \texorpdfstring{\@ifstar{\FBcloseguillfalse\fr@quote}% {\FBcloseguilltrue \fr@quote}}% {\bm@fr@quote}% } \newcommand{\bm@fr@quote}[1]{% \guillemotleft\space #1\space\guillemotright} \else \newcommand\frquote[1]{\fr@quote{#1}} \fi \newcommand{\fr@quote}[1]{% \leavevmode \advance\FBguill@level by \@ne \ifcase\FBguill@level \or \ifx\FBeveryparguill\FBguillnone \else \def\FBeverypar@quote{\FBeveryparguill\FB@guillspace}% \FB@addquote@everypar \fi \@ogi #1\@fgi \or \ifx\FBeverylineguill\FBguillopen \def\FBeveryline@quote{\FB@addGUILspace=0 \guillemotleft \FB@guillspace}% \localleftbox{\FBeveryline@quote}% \let\FBeverypar@quote\relax \@ogi #1\ifFBcloseguill\@fgi\fi \else \ifx\FBeverylineguill\FBguillclose \def\FBeveryline@quote{\FB@addGUILspace=0 \guillemotright \FB@guillspace}% \localleftbox{\FBeveryline@quote}% \let\FBeverypar@quote\relax \@ogi #1\ifFBcloseguill\@fgi\fi \else \let\FBeverypar@quote\relax \ifFBInnerGuillSingle \def\ogii{\leavevmode \guilsinglleft\FB@guillspace}% \def\fgii{\ifdim\lastskip>\z@\unskip\fi \FB@guillspace\guilsinglright}% \ifx\FBeveryparguill\FBguillopen \def\FBeverypar@quote{\guilsinglleft\FB@guillspace}% \fi \ifx\FBeveryparguill\FBguillclose \def\FBeverypar@quote{\guilsinglright\FB@guillspace}% \fi \fi \@ogii #1\ifFBcloseguill \@fgii \fi \fi \fi \else \ifx\PackageWarning\@undefined \fb@warning{\noexpand\frquote\space handles up to two levels.\\ Quotation not printed.}% \else \PackageWarning{french.ldf}{% \protect\frquote\space handles up to two levels. \MessageBreak Quotation not printed. Reported} \fi \fi \global\advance\FBguill@level by \m@ne \ifcase\FBguill@level \global\let\FBeverypar@quote\relax \or \gdef\FBeverypar@quote{\FBeveryparguill\FB@guillspace}% \global\let\FBeveryline@quote\empty \ifx\FBeverylineguill\FBguillnone\else\localleftbox{}\fi \fi } \newcommand*{\NoEveryParQuote}{\let\FBeveryparguill\FBguillnone} \def\BabelLanguages{french,acadian} \StartBabelCommands*{\BabelLanguages}{date} [unicode, fontenc=TU EU1 EU2, charset=utf8] \SetString\monthiiname{février} \SetString\monthviiiname{août} \SetString\monthxiiname{décembre} \StartBabelCommands*{\BabelLanguages}{date} \SetStringLoop{month#1name}{% janvier,f\'evrier,mars,avril,mai,juin,juillet,% ao\^ut,septembre,octobre,novembre,d\'ecembre} \SetString\today{\FB@date{\year}{\month}{\day}} \EndBabelCommands \newcommand*{\FB@date}[3]{% {{\number#3}\ifnum1=#3{\ier}\fi\FBdatespace \csname month\romannumeral#2name\endcsname \ifx#1\@empty\else\FBdatespace\number#1\fi}} \newcommand*{\FBdatebox}{\hbox} \newcommand*{\FBdatespace}{\space} \newcommand*{\frenchdate}{\FBdatebox\FB@date} \newcommand*{\acadiandate}{\FBdatebox\FB@date} \newif\ifFB@poorman \newdimen\FB@Mht \ifLaTeXe \AtEndOfPackage{\RequirePackage{scalefnt}} \newcommand*{\FBsupR}{-0.12} \newcommand*{\FBsupS}{0.65} \newcommand*{\FB@lc}[1]{\MakeLowercase{#1}} \DeclareRobustCommand*{\FB@up@fake}[1]{% \settoheight{\FB@Mht}{M}% \addtolength{\FB@Mht}{\FBsupR \FB@Mht}% \addtolength{\FB@Mht}{-\FBsupS ex}% \raisebox{\FB@Mht}{\scalefont{\FBsupS}{\FB@lc{#1}}}% } \def\FB@split#1#2#3#4\@nil{\def\FB@firstthree{#1#2#3}% \def\FB@suffix{#4}} \def\FB@x{x} \def\FB@j{j} \DeclareRobustCommand*{\FB@up}[1]{% \bgroup \FB@poormantrue \expandafter\FB@split\f@family\@nil \edef\reserved@a{\lowercase{% \noexpand\IfFileExists{\f@encoding\FB@firstthree -sup.fd}}}% \reserved@a {\ifx\FB@suffix\FB@x \FB@poormanfalse\fi \ifx\FB@suffix\FB@j \FB@poormanfalse\fi \ifFB@poorman \FB@up@fake{#1}% \else \FB@up@real{#1}% \fi}% {\FB@up@fake{#1}}% \egroup} \newcommand*{\FB@up@real}[1]{\bgroup \fontfamily{\FB@firstthree -sup}\selectfont \FB@lc{#1}\egroup} \DeclareRobustCommand*{\fup}[1]{% \texorpdfstring{\ifx\realsuperscript\@undefined \FB@up{#1}% \else \bgroup\let\fakesuperscript\FB@up@fake \realsuperscript{\FB@lc{#1}}\egroup \fi }{#1}% } \providecommand*{\up}{\fup} \else \providecommand*{\up}[1]{\leavevmode\raise1ex\hbox{\sevenrm #1}} \fi \def\ieme{\up{e}\xspace} \def\iemes{\up{es}\xspace} \def\ier{\up{er}\xspace} \def\iers{\up{ers}\xspace} \def\iere{\up{re}\xspace} \def\ieres{\up{res}\xspace} \newcommand*{\FBmedkern}{\kern+.2em} \newcommand*{\FBthickkern}{\kern+.3em} \newcommand*{\FrenchEnumerate}[1]{% #1\texorpdfstring{\up{o}\FBthickkern}{\textdegree\space}} \newcommand*{\FrenchPopularEnumerate}[1]{% #1\texorpdfstring{\up{o})\FBthickkern}{\textdegree\space}} \def\primo{\FrenchEnumerate1} \def\secundo{\FrenchEnumerate2} \def\tertio{\FrenchEnumerate3} \def\quarto{\FrenchEnumerate4} \def\fprimo){\FrenchPopularEnumerate1} \def\fsecundo){\FrenchPopularEnumerate2} \def\ftertio){\FrenchPopularEnumerate3} \def\fquarto){\FrenchPopularEnumerate4} \DeclareRobustCommand*{\No}{% \texorpdfstring{N\up{o}\FBmedkern}{N\textdegree\space}} \DeclareRobustCommand*{\no}{% \texorpdfstring{n\up{o}\FBmedkern}{n\textdegree\space}} \DeclareRobustCommand*{\Nos}{% \texorpdfstring{N\up{os}\FBmedkern}{N\textdegree\space}} \DeclareRobustCommand*{\nos}{% \texorpdfstring{n\up{os}\FBmedkern}{n\textdegree\space}} \ifLaTeXe \DeclareRobustCommand*{\bname}[1]{% \texorpdfstring{\leavevmode\begingroup\kern0pt #1\endgroup}{#1}% } \DeclareRobustCommand*{\bsc}[1]{% \texorpdfstring{\leavevmode\begingroup\kern0pt \scshape #1\endgroup}% {\textsc{#1}}% } \else \newcommand*{\bname}[1]{\leavevmode\begingroup\kern0pt #1\endgroup} \let\bsc\bname \fi \ifFBunicode \providecommand*{\textbackslash}{{\char"005C}} \providecommand*{\textasciicircum}{{\char"005E}} \providecommand*{\textasciitilde}{{\char"007E}} \newcommand*{\FB@degre}{°} \else \ifLaTeXe \newcommand*{\FB@degre}{\r{}} \fi \fi \DeclareRobustCommand*{\boi}{\textbackslash} \DeclareRobustCommand*{\circonflexe}{\textasciicircum} \DeclareRobustCommand*{\tild}{\textasciitilde} \DeclareRobustCommand*{\degre}{% \texorpdfstring{\FB@degre}{\textdegree}} \newcommand*{\at}{@} \DeclareRobustCommand*{\degres}{\degre} \ifLaTeXe \AtBeginDocument{% \@ifpackageloaded{fontspec}{}{% \ifdefined\DeclareEncodingSubset \DeclareRobustCommand*{\degres}{% \texorpdfstring{\hbox{\UseTextSymbol{TS1}{\textdegree}}}% {\textdegree}}% \else \def\Warning@degree@TSone{\FBWarning {Degrees would look better in TS1-encoding:% \MessageBreak add \protect \usepackage{textcomp} to the preamble.% \MessageBreak Degrees used}} \DeclareRobustCommand*{\degres}{% \texorpdfstring{\hbox to 0.3em{\hss\degre\hss}% \Warning@degree@TSone \global\let\Warning@degree@TSone\relax}% {\textdegree}}% \fi }% } \fi \newif\ifFB@icomma \newcount\mc@charclass \newcount\mc@charfam \newcount\mc@charslot \newcount\std@mcc \newcount\dec@mcc \ifFBLuaTeX \mc@charclass=\Umathcharclass`\, \newcommand*{\dec@math@comma}{% \mc@charfam=\Umathcharfam`\, \mc@charslot=\Umathcharslot`\, \Umathcode`\,= 0 \mc@charfam \mc@charslot } \newcommand*{\std@math@comma}{% \mc@charfam=\Umathcharfam`\, \mc@charslot=\Umathcharslot`\, \Umathcode`\,= \mc@charclass \mc@charfam \mc@charslot } \else \std@mcc=\mathcode`\, \dec@mcc=\std@mcc \@tempcnta=\std@mcc \divide\@tempcnta by "1000 \multiply\@tempcnta by "1000 \advance\dec@mcc by -\@tempcnta \newcommand*{\dec@math@comma}{\mathcode`\,=\dec@mcc} \newcommand*{\std@math@comma}{\mathcode`\,=\std@mcc} \fi \newcommand*{\DecimalMathComma}{% \ifFB@icomma \PackageWarning{french.ldf}{% icomma package loaded, \protect\DecimalMathComma\MessageBreak does nothing. Reported}% \else \ifFBfrench \dec@math@comma \expandafter\addto\csname extras\languagename\endcsname {\dec@math@comma}% \fi \fi } \newcommand*{\StandardMathComma}{% \ifFB@icomma \PackageWarning{french.ldf}{% icomma package loaded, \protect\StandardMathComma\MessageBreak does nothing. Reported}% \else \std@math@comma \expandafter\addto\csname extras\languagename\endcsname {\std@math@comma}% \fi } \ifLaTeXe \AtBeginDocument{\@ifpackageloaded{icomma}% {\FB@icommatrue}% {\addto\noextrasfrench{\std@math@comma}% \ifdefined\noextrasacadian \addto\noextrasacadian{\std@math@comma}% \fi }% } \else \addto\noextrasfrench{\std@math@comma} \fi \newcommand*{\nombre}[1]{{#1}\fb@warning{*** \noexpand\nombre no longer formats numbers\string! ***}} \ifFB@luatex@punct \activate@luatexpunct \fi \let\FBstop@here\relax \def\FBclean@on@exit{% \let\ifLaTeXe\undefined \let\LaTeXetrue\undefined \let\LaTeXefalse\undefined \let\FB@llc\loadlocalcfg \let\loadlocalcfg\@gobble} \ifx\magnification\@undefined \else \def\FBstop@here{% \FBclean@on@exit \ldf@finish\CurrentOption \let\loadlocalcfg\FB@llc \endinput} \fi \FBstop@here \renewcommand*{\nombre}[1]{\Warning@nombre{#1}} \newcommand*{\Warning@nombre}[1]{% \ifdefined\numprint \numprint{#1}% \else \PackageWarning{french.ldf}{% \protect\nombre\space now relies on package numprint.sty,% \MessageBreak add \protect \usepackage[autolanguage]{numprint},\MessageBreak see file numprint.pdf for more options.\MessageBreak \protect\nombre\space called}% \global\let\Warning@nombre\relax {#1}% \fi } \newcommand*{\FBthousandsep}{\kern \fontdimen2\font \relax} \providecommand*{\FBfigtabshape}{\scshape} \StartBabelCommands*{\BabelLanguages}{captions} [unicode, fontenc=TU EU1 EU2, charset=utf8] \SetString{\refname}{Références} \SetString{\abstractname}{Résumé} \SetString{\prefacename}{Préface} \SetString{\contentsname}{Table des matières} \SetString{\ccname}{Copie à } \SetString{\proofname}{Démonstration} \SetString{\partfirst}{Première} \SetString{\partsecond}{Deuxième} \SetStringLoop{ordinal#1}{% \frenchpartfirst,\frenchpartsecond,Troisième,Quatrième,% Cinquième,Sixième,Septième,Huitième,Neuvième,Dixième,Onzième,% Douzième,Treizième,Quatorzième,Quinzième,Seizième,% Dix-septième,Dix-huitième,Dix-neuvième,Vingtième} \StartBabelCommands*{\BabelLanguages}{captions} \SetString{\refname}{R\'ef\'erences} \SetString{\abstractname}{R\'esum\'e} \SetString{\bibname}{Bibliographie} \SetString{\prefacename}{Pr\'eface} \SetString{\chaptername}{Chapitre} \SetString{\appendixname}{Annexe} \SetString{\contentsname}{Table des mati\`eres} \SetString{\listfigurename}{Table des figures} \SetString{\listtablename}{Liste des tableaux} \SetString{\indexname}{Index} \SetString{\figurename}{Figure} \SetString{\tablename}{Table} \SetString{\pagename}{page} \SetString{\seename}{voir} \SetString{\alsoname}{voir aussi} \SetString{\enclname}{P.~J. } \SetString{\ccname}{Copie \`a } \SetString{\headtoname}{} \SetString{\proofname}{D\'emonstration} \SetString{\glossaryname}{Glossaire} \SetString{\partfirst}{Premi\`ere} \SetString{\partsecond}{Deuxi\`eme} \SetString{\partnameord}{partie} \SetStringLoop{ordinal#1}{% \partfirst,\partsecond,Troisi\`eme,Quatri\`eme, Cinqui\`eme,% Sixi\`eme,Septi\`eme,Huiti\`eme,Neuvi\`eme,Dixi\`eme,% Onzi\`eme,Douzi\`eme,Treizi\`eme,Quatorzi\`eme,Quinzi\`eme,% Seizi\`eme,Dix-septi\`eme,Dix-huiti\`eme,Dix-neuvi\`eme,% Vingti\`eme} \AfterBabelCommands{% \DeclareRobustCommand*{\FB@emptypart}{\def\thepart{\unskip}}% \DeclareRobustCommand*{\FB@partname}{% \ifFBPartNameFull \csname ordinal\romannumeral\value{part}\endcsname\space \partnameord\FB@emptypart \else Partie% \fi}% } \SetString{\partname}{\FB@partname} \EndBabelCommands \AtBeginDocument{% \ifx\FBfigtabshape\relax \else \ifdefined\fnum@figure \let\fnum@figureORI\fnum@figure \renewcommand{\fnum@figure}{{\ifFBfrench\FBfigtabshape\fi \fnum@figureORI}}% \fi \ifdefined\fnum@table \let\fnum@tableORI\fnum@table \renewcommand{\fnum@table}{{\ifFBfrench\FBfigtabshape\fi \fnum@tableORI}}% \fi \fi } \newcommand{\FBWarning}[1]{\PackageWarning{french.ldf}{#1}} \bgroup \catcode`:=12 \catcode`>=12 \relax \long\gdef\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} \egroup \newif\if@FBwarning@capsep \ifFB@active@punct\@FBwarning@capseptrue\fi \newcommand*{\CaptionSeparator}{\space\textendash\space} \def\FBCaption@Separator{: } \long\def\FB@makecaption#1#2{% \vskip\abovecaptionskip \sbox\@tempboxa{#1\FBCaption@Separator #2}% \ifdim \wd\@tempboxa >\hsize #1\FBCaption@Separator #2\par \else \global \@minipagefalse \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% \fi \vskip\belowcaptionskip} \@ifclassloaded{amsart}{\@FBwarning@capsepfalse}{} \@ifclassloaded{amsbook}{\@FBwarning@capsepfalse}{} \@ifclassloaded{amsdtx}{\@FBwarning@capsepfalse}{} \@ifclassloaded{amsldoc}{\@FBwarning@capsepfalse}{} \@ifclassloaded{amproc}{\@FBwarning@capsepfalse}{} \@ifclassloaded{smfart}{\@FBwarning@capsepfalse}{} \@ifclassloaded{smfbook}{\@FBwarning@capsepfalse}{} \@ifclassloaded{IEEEconf}{\@FBwarning@capsepfalse}{} \@ifclassloaded{IEEEtran}{\@FBwarning@capsepfalse}{} \@ifclassloaded{revtex4-2}{\@FBwarning@capsepfalse}{} \@ifclassloaded{svjour3}{\@FBwarning@capsepfalse}{} \@ifclassloaded{memoir}{\@FBwarning@capsepfalse}{} \ifFB@koma \@FBwarning@capsepfalse \fi \@ifclassloaded{beamer}{\@FBwarning@capsepfalse}{} \ifdefined\@makecaption\else\@FBwarning@capsepfalse\fi \AtBeginDocument{% \ifx\@makecaption\STD@makecaption \global\let\@makecaption\FB@makecaption \ifFBOldFigTabCaptions \else \def\FBCaption@Separator{{\autospace@beforeFDP : }}% \ifFBCustomiseFigTabCaptions \ifFB@mainlanguage@FR \def\FBCaption@Separator{\CaptionSeparator}% \fi \fi \fi \@FBwarning@capsepfalse \fi \@ifpackageloaded{caption}{\@FBwarning@capsepfalse}{}% \@ifpackageloaded{caption-light}{\@FBwarning@capsepfalse}{}% \if@FBwarning@capsep \FBWarning {Figures' and tables' captions might look like\MessageBreak `Figure 1:' in French instead of `Figure 1 :'.\MessageBreak If this happens, to fix this issue\MessageBreak switch to LuaLaTeX or XeLaTeX or\MessageBreak try to add \protect\usepackage{caption} or\MessageBreak ... leave it as it is; reported}% \fi \let\FB@makecaption\relax \let\STD@makecaption\relax } \ifFBunicode \else \DeclareTextSymbol{\FBtextellipsis}{LY1}{133} \DeclareTextCommand{\FBtextellipsis}{PU}{\9040\046} \DeclareTextCommand{\FBtextellipsis}{PD1}{\203} \DeclareTextCommandDefault{\FBtextellipsis}{% .\kern\fontdimen3\font.\kern\fontdimen3\font.\xspace}% \def\bbl@frenchdots{\babel@save\textellipsis \let\textellipsis\FBtextellipsis} \addto\extrasfrench{\bbl@frenchdots} \fi \ifFB@active@punct \@ifpackageloaded{listings} {\AtBeginDocument{% \FBWarning{Please load the "listings" package\MessageBreak AFTER babel/french; reported}}% }{} \fi \newif\if@FBwarning@natbib \ifFB@active@punct \@ifpackageloaded{natbib}{}{\@FBwarning@natbibtrue} \fi \AtBeginDocument{% \if@FBwarning@natbib \@ifpackageloaded{natbib}{}{\@FBwarning@natbibfalse}% \fi \if@FBwarning@natbib \FBWarning{Please load the "natbib" package\MessageBreak BEFORE babel/french; reported}% \fi } \newif\if@FBwarning@beamerarticle \@ifpackageloaded{beamerarticle}{}{\@FBwarning@beamerarticletrue} \AtBeginDocument{% \if@FBwarning@beamerarticle \@ifpackageloaded{beamerarticle}{}% {\@FBwarning@beamerarticlefalse}% \fi \if@FBwarning@beamerarticle \FBWarning{Please load the "beamerarticle" package\MessageBreak BEFORE babel/french; reported}% \fi } \newcommand*{\frenchsetup}[1]{% \setkeys{FB}{#1}% }% \@onlypreamble\frenchsetup \let\frenchbsetup\frenchsetup \@onlypreamble\frenchbsetup \newif\ifFBShowOptions \newif\ifFBStandardLayout \FBStandardLayouttrue \newif\ifFBGlobalLayoutFrench \FBGlobalLayoutFrenchtrue \newif\ifFBReduceListSpacing \newif\ifFBStandardListSpacing \FBStandardListSpacingtrue \newif\ifFBListOldLayout \newif\ifFBListItemsAsPar \newif\ifFBCompactItemize \newif\ifFBStandardItemizeEnv \FBStandardItemizeEnvtrue \newif\ifFBStandardEnumerateEnv \FBStandardEnumerateEnvtrue \newif\ifFBStandardItemLabels \FBStandardItemLabelstrue \newif\ifFBStandardLists \FBStandardListstrue \newif\ifFBIndentFirst \newif\ifFBFrenchFootnotes \newif\ifFBAutoSpaceFootnotes \newif\ifFBOriginalTypewriter \newif\ifFBThinColonSpace \newif\ifFBThinSpaceInFrenchNumbers \newif\ifFBFrenchSuperscripts \FBFrenchSuperscriptstrue \newif\ifFBLowercaseSuperscripts \FBLowercaseSuperscriptstrue \newif\ifFBPartNameFull \FBPartNameFulltrue \newif\ifFBCustomiseFigTabCaptions \newif\ifFBOldFigTabCaptions \newif\ifFBSmallCapsFigTabCaptions \FBSmallCapsFigTabCaptionstrue \newif\ifFBSuppressWarning \newif\ifFBINGuillSpace \ifFB@koma \ifdefined\partformat \def\FB@partformat@fix{% \ifFBPartNameFull \babel@save\partformat \renewcommand*{\partformat}{\partname}% \fi} \addto\extrasfrench{\FB@partformat@fix}% \fi \fi \def\FB@french{french} \def\FB@acadian{acadian} \newif\ifFB@mainlanguage@FR \AtEndOfPackage{% \ifx\bbl@main@language\FB@french \FB@mainlanguage@FRtrue \else \ifx\bbl@main@language\FB@acadian \FB@mainlanguage@FRtrue \fi \fi \ifFB@mainlanguage@FR \FBGlobalLayoutFrenchtrue \@ifclassloaded{beamer}% {\PackageInfo{french.ldf}{% No list customisation for the beamer class,% \MessageBreak reported}}% {\@ifpackageloaded{beamerarticle}% {\FBStandardItemLabelsfalse \FBStandardListSpacingfalse \PackageInfo{french.ldf}{% Minimal list customisation for the beamerarticle% \MessageBreak package; reported}}% {\FBStandardListSpacingfalse \FBStandardItemizeEnvfalse \FBStandardEnumerateEnvfalse \FBStandardItemLabelsfalse}% } \FBIndentFirsttrue \FBFrenchFootnotestrue \FBAutoSpaceFootnotestrue \FBCustomiseFigTabCaptionstrue \fi \RequirePackage{keyval}% \define@key{FB}{ShowOptions}[true]% {\csname FBShowOptions#1\endcsname}% \define@key{FB}{StandardLayout}[true]% {\ifFB@mainlanguage@FR \csname FBStandardLayout#1\endcsname \else \PackageWarning{french.ldf}% {Option `StandardLayout' skipped:\MessageBreak French is *not* babel's last option.\MessageBreak Reported}% \fi \ifFBStandardLayout \FBStandardListSpacingtrue \FBStandardItemizeEnvtrue \FBStandardItemLabelstrue \FBStandardEnumerateEnvtrue \FBIndentFirstfalse \FBFrenchFootnotesfalse \FBAutoSpaceFootnotesfalse \else \FBStandardListSpacingfalse \FBStandardItemizeEnvfalse \FBStandardItemLabelsfalse \FBStandardEnumerateEnvfalse \FBIndentFirsttrue \FBFrenchFootnotestrue \FBAutoSpaceFootnotestrue \fi}% \define@key{FB}{GlobalLayoutFrench}[true]% {\ifFB@mainlanguage@FR \csname FBGlobalLayoutFrench#1\endcsname \else \PackageWarning{french.ldf}% {Option `GlobalLayoutFrench' skipped:\MessageBreak French is *not* babel's last option.\MessageBreak Reported}% \fi}% \define@key{FB}{ReduceListSpacing}[true]% {\csname FBReduceListSpacing#1\endcsname \ifFBReduceListSpacing \FBStandardListSpacingfalse \else \FBStandardListSpacingtrue\fi }% \define@key{FB}{StandardListSpacing}[true]% {\csname FBStandardListSpacing#1\endcsname}% \define@key{FB}{ListOldLayout}[true]% {\csname FBListOldLayout#1\endcsname \ifFBListOldLayout \FBStandardEnumerateEnvtrue \renewcommand*{\FrenchLabelItem}{\textendash}% \fi}% \define@key{FB}{CompactItemize}[true]% {\csname FBCompactItemize#1\endcsname \ifFBCompactItemize \FBStandardItemizeEnvfalse \FBStandardEnumerateEnvfalse \else \FBStandardItemizeEnvtrue \FBStandardEnumerateEnvtrue \fi}% \define@key{FB}{StandardItemizeEnv}[true]% {\csname FBStandardItemizeEnv#1\endcsname}% \define@key{FB}{StandardEnumerateEnv}[true]% {\csname FBStandardEnumerateEnv#1\endcsname}% \define@key{FB}{StandardItemLabels}[true]% {\csname FBStandardItemLabels#1\endcsname}% \define@key{FB}{ItemLabels}% {\renewcommand*{\FrenchLabelItem}{#1}}% \define@key{FB}{ItemLabeli}% {\renewcommand*{\Frlabelitemi}{#1}}% \define@key{FB}{ItemLabelii}% {\renewcommand*{\Frlabelitemii}{#1}}% \define@key{FB}{ItemLabeliii}% {\renewcommand*{\Frlabelitemiii}{#1}}% \define@key{FB}{ItemLabeliv}% {\renewcommand*{\Frlabelitemiv}{#1}}% \define@key{FB}{StandardLists}[true]% {\csname FBStandardLists#1\endcsname \ifFBStandardLists \FBStandardListSpacingtrue \FBStandardItemizeEnvtrue \FBStandardEnumerateEnvtrue \FBStandardItemLabelstrue \else \FBStandardListSpacingfalse \FBStandardItemizeEnvfalse \FBStandardEnumerateEnvfalse \FBStandardItemLabelsfalse \fi}% \define@key{FB}{ListItemsAsPar}[true]% {\csname FBListItemsAsPar#1\endcsname} \define@key{FB}{IndentFirst}[true]% {\csname FBIndentFirst#1\endcsname}% \define@key{FB}{FrenchFootnotes}[true]% {\csname FBFrenchFootnotes#1\endcsname}% \define@key{FB}{AutoSpaceFootnotes}[true]% {\csname FBAutoSpaceFootnotes#1\endcsname}% \define@key{FB}{AutoSpacePunctuation}[true]% {\csname FBAutoSpacePunctuation#1\endcsname}% \define@key{FB}{OriginalTypewriter}[true]% {\csname FBOriginalTypewriter#1\endcsname}% \define@key{FB}{ThinColonSpace}[true]% {\csname FBThinColonSpace#1\endcsname \ifFBThinColonSpace \renewcommand*{\FBcolonspace}{\FBthinspace}% \fi}% \define@key{FB}{ThinSpaceInFrenchNumbers}[true]% {\csname FBThinSpaceInFrenchNumbers#1\endcsname}% \define@key{FB}{FrenchSuperscripts}[true]% {\csname FBFrenchSuperscripts#1\endcsname} \define@key{FB}{LowercaseSuperscripts}[true]% {\csname FBLowercaseSuperscripts#1\endcsname} \define@key{FB}{PartNameFull}[true]% {\csname FBPartNameFull#1\endcsname}% \define@key{FB}{CustomiseFigTabCaptions}[true]% {\csname FBCustomiseFigTabCaptions#1\endcsname}% \define@key{FB}{OldFigTabCaptions}[true]% {\csname FBOldFigTabCaptions#1\endcsname \ifFBOldFigTabCaptions \def\FB@capsep@fix{\babel@save\FBCaption@Separator \def\FBCaption@Separator{\CaptionSeparator}}% \addto\extrasfrench{\FB@capsep@fix}% \ifdefined\extrasacadian \addto\extrasacadian{\FB@capsep@fix}% \fi \fi}% \define@key{FB}{SmallCapsFigTabCaptions}[true]% {\csname FBSmallCapsFigTabCaptions#1\endcsname \ifFBSmallCapsFigTabCaptions \else \let\FBfigtabshape\relax \fi}% \define@key{FB}{SuppressWarning}[true]% {\csname FBSuppressWarning#1\endcsname \ifFBSuppressWarning \renewcommand{\FBWarning}[1]{}% \fi}% \define@key{FB}{INGuillSpace}[true]% {\csname FBINGuillSpace#1\endcsname \ifFBINGuillSpace \renewcommand*{\FBguillspace}{\space}% \fi}% \define@key{FB}{InnerGuillSingle}[true]% {\csname FBInnerGuillSingle#1\endcsname}% \define@key{FB}{EveryParGuill}[open]% {\expandafter\let\expandafter \FBeveryparguill\csname FBguill#1\endcsname \ifx\FBeveryparguill\FBguillopen \else\ifx\FBeveryparguill\FBguillclose \else\ifx\FBeveryparguill\FBguillnone \else \let\FBeveryparguill\FBguillopen \FBWarning{Wrong value for `EveryParGuill': try `open',\MessageBreak `close' or `none'. Reported}% \fi \fi \fi}% \define@key{FB}{EveryLineGuill}[open]% {\ifFB@luatex@punct \expandafter\let\expandafter \FBeverylineguill\csname FBguill#1\endcsname \ifx\FBeverylineguill\FBguillopen \else\ifx\FBeverylineguill\FBguillclose \else\ifx\FBeverylineguill\FBguillnone \else \let\FBeverylineguill\FBguillnone \FBWarning{Wrong value for `EveryLineGuill': try `open',\MessageBreak `close' or `none'. Reported}% \fi \fi \fi \else \FBWarning{Option `EveryLineGuill' skipped:% \MessageBreak this option is for LuaTeX *only*.\MessageBreak Reported}% \fi}% \define@key{FB}{UnicodeNoBreakSpaces}[true]% {\ifFB@luatex@punct \csname FBucsNBSP#1\endcsname \ifFBucsNBSP \FB@ucsNBSP=1 \fi \else \FBWarning{Option `UnicodeNoBreakSpaces' skipped:% \MessageBreak this option is for LuaTeX *only*.\MessageBreak Reported}% \fi }% \def\FB@parse#1#2\endparse{\def\FB@second{#2}}% \define@key{FB}{og}% {\ifFBunicode \ifFB@luatex@punct \FB@addGUILspace=1 \relax \fi \ifFB@xetex@punct \XeTeXcharclass"13 = \FB@guilo \XeTeXcharclass"AB = \FB@guilo \XeTeXcharclass"A0 = \FB@guilnul \XeTeXcharclass"202F = \FB@guilnul \fi \ifFB@active@punct \FBWarning{Option og=« not supported with this version of\MessageBreak LuaTeX/XeTeX; reported}% \fi \else \newcommand*{\FB@@og}{% \ifFBfrench \ifFB@spacing\FB@og\ignorespaces \else\guillemotleft \fi \else\guillemotleft\fi}% \AtBeginDocument{% \ifdefined\uc@dclc \uc@dclc{171}{default}{\FB@@og}% \else \FB@parse#1\endparse \ifx\FB@second\@empty \ifdefined\mule@def \mule@def{11}{\FB@@og}% \else \ifdefined\DeclareInputText \@tempcnta`#1\relax \DeclareInputText{\the\@tempcnta}{\FB@@og}% \else \FBWarning{Option `og' requires package inputenc;\MessageBreak reported}% \fi \fi \else \DeclareUnicodeCharacter{00AB}{\FB@@og}% \fi \fi}% \fi }% \define@key{FB}{fg}% {\ifFBunicode \ifFB@luatex@punct \FB@addGUILspace=1 \relax \fi \ifFB@xetex@punct \XeTeXcharclass"14 = \FB@guilf \XeTeXcharclass"BB = \FB@guilf \XeTeXcharclass"A0 = \FB@guilnul \XeTeXcharclass"202F = \FB@guilnul \fi \ifFB@active@punct \FBWarning{Option fg=» not supported with this version of\MessageBreak LuaTeX/XeTeX; reported}% \fi \else \newcommand*{\FB@@fg}{% \ifFBfrench \ifFB@spacing\FB@fg \else\guillemotright \fi \else\guillemotright\fi}% \AtBeginDocument{% \ifdefined\uc@dclc \uc@dclc{187}{default}{\FB@@fg}% \else \FB@parse#1\endparse \ifx\FB@second\@empty \ifdefined\mule@def \mule@def{27}{{\FB@@fg}}% \else \ifdefined\DeclareInputText \@tempcnta`#1\relax \DeclareInputText{\the\@tempcnta}{\FB@@fg}% \else \FBWarning{Option `fg' requires package inputenc;\MessageBreak reported}% \fi \fi \else \DeclareUnicodeCharacter{00BB}{\FB@@fg}% \fi \fi}% \fi }% } \newcommand*{\FBprocess@options}{% \@ifpackageloaded{enumitem}{% \ifFBStandardItemizeEnv \else \FBStandardItemizeEnvtrue \PackageInfo{french.ldf}% {Setting StandardItemizeEnv=true for\MessageBreak compatibility with enumitem package,\MessageBreak reported}% \fi \ifFBStandardEnumerateEnv \else \FBStandardEnumerateEnvtrue \PackageInfo{french.ldf}% {Setting StandardEnumerateEnv=true for\MessageBreak compatibility with enumitem package,\MessageBreak reported}% \fi}{}% \@ifpackageloaded{paralist}{% \ifFBStandardItemizeEnv \else \FBStandardItemizeEnvtrue \PackageInfo{french.ldf}% {Setting StandardItemizeEnv=true for\MessageBreak compatibility with paralist package,\MessageBreak reported}% \fi \ifFBStandardEnumerateEnv \else \FBStandardEnumerateEnvtrue \PackageInfo{french.ldf}% {Setting StandardEnumerateEnv=true for\MessageBreak compatibility with paralist package,\MessageBreak reported}% \fi}{}% \@ifpackageloaded{enumerate}{% \ifFBStandardEnumerateEnv \else \FBStandardEnumerateEnvtrue \PackageInfo{french.ldf}% {Setting StandardEnumerateEnv=true for\MessageBreak compatibility with enumerate package,\MessageBreak reported}% \fi}{}% \def\FB@ufl{\update@frenchlists} \ifFB@mainlanguage@FR \update@frenchlists \else \ifFBStandardItemizeEnv \else \PackageWarning{french.ldf}% {babel-french will not customize lists' layout\MessageBreak when French is not the main language,\MessageBreak reported}% \fi \fi \ifFBAutoSpacePunctuation \autospace@beforeFDP \else \noautospace@beforeFDP \fi \ifFBOriginalTypewriter \else \let\ttfamilyORI\ttfamily \let\rmfamilyORI\rmfamily \let\sffamilyORI\sffamily \let\ttfamily\ttfamilyFB \let\rmfamily\rmfamilyFB \let\sffamily\sffamilyFB \fi \@ifpackageloaded{numprint}% {\ifnprt@autolanguage \providecommand*{\npstylefrench}{}% \ifFBThinSpaceInFrenchNumbers \renewcommand*{\FBthousandsep}{\,}% \fi \g@addto@macro\npstylefrench{\npthousandsep{\FBthousandsep}}% \fi }{}% \ifFBFrenchSuperscripts \DeclareRobustCommand*{\up}{% \texorpdfstring{\@ifstar{\FB@up@fake}{\fup}}{}% } \else \DeclareRobustCommand*{\up}{% \texorpdfstring{\@ifstar{\FB@up@fake}{\textsuperscript}}{}% } \fi \ifFBLowercaseSuperscripts \else \renewcommand*{\FB@lc}[1]{##1}% \fi \ifFB@koma \ifx\captionformat\FB@std@capsep \ifFBCustomiseFigTabCaptions \renewcommand*{\captionformat}{\CaptionSeparator}% \else \renewcommand*{\captionformat}{{\autospace@beforeFDP :\ }}% \fi \fi \fi \@ifclassloaded{memoir}% {\ifx\@contdelim\FB@std@capsep \ifFBCustomiseFigTabCaptions \captiondelim{\CaptionSeparator}% \else \captiondelim{{\autospace@beforeFDP : }}% \fi \fi}{}% \@ifclassloaded{beamer}% {\protected@edef\FB@capsep{% \csname beamer@@tmpl@caption label separator\endcsname}% \ifx\FB@capsep\FB@std@capsep \ifFBCustomiseFigTabCaptions \defbeamertemplate{caption label separator}{FBcustom}{% \CaptionSeparator}% \setbeamertemplate{caption label separator}[FBcustom]% \else \defbeamertemplate{caption label separator}{FBcolon}{% {\autospace@beforeFDP : }}% \setbeamertemplate{caption label separator}[FBcolon]% \fi \fi}{}% \ifFBShowOptions \GenericWarning{* }{% *** List of possible options for babel-french ***\MessageBreak [Default values between brackets when french is loaded *LAST*]% \MessageBreak ShowOptions [false]\MessageBreak StandardLayout [false]\MessageBreak GlobalLayoutFrench [true]\MessageBreak PartNameFull [true]\MessageBreak IndentFirst [true]\MessageBreak ListItemsAsPar [false]\MessageBreak StandardListSpacing [false]\MessageBreak StandardItemizeEnv [false]\MessageBreak StandardEnumerateEnv [false]\MessageBreak StandardItemLabels [false]\MessageBreak ItemLabels=\textemdash, \textbullet, \protect\ding{43},... [\textendash]\MessageBreak ItemLabeli=\textemdash, \textbullet, \protect\ding{43},... [\textendash]\MessageBreak ItemLabelii=\textemdash, \textbullet, \protect\ding{43},... [\textendash]\MessageBreak ItemLabeliii=\textemdash, \textbullet, \protect\ding{43},... [\textendash]\MessageBreak ItemLabeliv=\textemdash, \textbullet, \protect\ding{43},... [\textendash]\MessageBreak StandardLists [false]\MessageBreak ListOldLayout [false]\MessageBreak FrenchFootnotes [true]\MessageBreak AutoSpaceFootnotes [true]\MessageBreak AutoSpacePunctuation [true]\MessageBreak ThinColonSpace [false]\MessageBreak OriginalTypewriter [false]\MessageBreak UnicodeNoBreakSpaces [false]\MessageBreak og= , fg= % INGuillSpace [false]\MessageBreak EveryParGuill=open, close, none [open]\MessageBreak EveryLineGuill=open, close, none [open in LuaTeX, none otherwise]\MessageBreak InnerGuillSingle [false]\MessageBreak ThinSpaceInFrenchNumbers [false]\MessageBreak SmallCapsFigTabCaptions [true]\MessageBreak CustomiseFigTabCaptions [true]\MessageBreak OldFigTabCaptions [false]\MessageBreak FrenchSuperscripts [true]\MessageBreak LowercaseSuperscripts [true]\MessageBreak SuppressWarning [false]\MessageBreak \MessageBreak *********************************************% \MessageBreak\protect\frenchsetup{ShowOptions}} \fi } \AtBeginDocument{% \providecommand*{\xspace}{\relax}% \FBprocess@options \ifFBucsNBSP \renewcommand*{\FBmedkern}{\char"202F\relax}% \renewcommand*{\FBthickkern}{\char"A0\relax}% \ifFBThinSpaceInFrenchNumbers \renewcommand*{\FBthousandsep}{\char"202F\relax}% \else \renewcommand*{\FBthousandsep}{\char"A0\relax}% \fi \fi \begingroup \newcommand{\FBOTone}{OT1}% \ifx\encodingdefault\FBOTone \FBWarning{OT1 encoding should not be used for French.% \MessageBreak Add \protect\usepackage[T1]{fontenc} to the preamble\MessageBreak of your document; reported}% \fi \endgroup } \let\listORI\list \let\endlistORI\endlist \def\FB@listVsettings{% \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}% \@tempdima=\parskip \addtolength{\topsep}{-\@tempdima}% \addtolength{\partopsep}{\@tempdima}% } \def\listFB#1#2{\listORI{#1}{\FB@listVsettings #2}} \let\endlistFB\endlist \newcommand*{\FrenchLabelItem}{\textemdash} \newcommand*{\Frlabelitemi}{\FrenchLabelItem} \newcommand*{\Frlabelitemii}{\FrenchLabelItem} \newcommand*{\Frlabelitemiii}{\FrenchLabelItem} \newcommand*{\Frlabelitemiv}{\FrenchLabelItem} \newdimen\listindentFB \setlength{\listindentFB}{-1pt} \newdimen\descindentFB \setlength{\descindentFB}{-1pt} \newdimen\labelindentFB \setlength{\labelindentFB}{-1pt} \newdimen\labelwidthFB \setlength{\labelwidthFB}{-1pt} \newdimen\leftmarginFB \def\FB@listHsettings{% \ifFBListItemsAsPar \itemindent=\labelindentFB \advance\itemindent by \labelwidthFB \advance\itemindent by \labelsep \leftmargini\z@ \bbl@for\FB@dp {2, 3, 4, 5, 6}% {\csname leftmargin\romannumeral\FB@dp\endcsname = \labelindentFB}% \else \leftmarginFB=\labelwidthFB \advance\leftmarginFB by \labelsep \bbl@for\FB@dp {1, 2, 3, 4, 5, 6}% {\csname leftmargin\romannumeral\FB@dp\endcsname = \leftmarginFB}% \advance\leftmargini by \listindentFB \fi \leftmargin=\csname leftmargin% \ifnum\@listdepth=\@ne i\else ii\fi\endcsname } \def\FB@itemizesettings{% \ifFBStandardListSpacing \else \setlength{\itemsep}{\z@}% \setlength{\parsep}{\z@}% \setlength{\topsep}{\z@}% \setlength{\partopsep}{\z@}% \@tempdima=\parskip \addtolength{\topsep}{-\@tempdima}% \addtolength{\partopsep}{\@tempdima}% \fi \settowidth{\labelwidth}{\csname\@itemitem\endcsname}% \ifFBListOldLayout \setlength{\leftmargin}{\labelwidth}% \addtolength{\leftmargin}{\labelsep}% \addtolength{\leftmargin}{\parindent}% \else \FB@listHsettings \fi } \def\itemizeFB{% \ifnum \@itemdepth >\thr@@\@toodeep\else \advance\@itemdepth by \@ne \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% \expandafter \listORI \csname\@itemitem\endcsname \FB@itemizesettings \fi } \let\enditemizeFB\endlistORI \def\setlabelitemsFB{% \let\labelitemi\Frlabelitemi \let\labelitemii\Frlabelitemii \let\labelitemiii\Frlabelitemiii \let\labelitemiv\Frlabelitemiv \ifdim\labelwidthFB<\z@ \settowidth{\labelwidthFB}{\FrenchLabelItem}% \fi } \def\setlistindentFB{% \ifdim\labelindentFB<\z@ \ifdim\parindent=\z@ \setlength{\labelindentFB}{1.5em}% \else \setlength{\labelindentFB}{\parindent}% \fi \fi \ifdim\listindentFB<\z@ \ifdim\parindent=\z@ \setlength{\listindentFB}{1.5em}% \else \setlength{\listindentFB}{\parindent}% \fi \fi \ifdim\descindentFB<\z@ \ifFBListItemsAsPar \setlength{\descindentFB}{\labelindentFB}% \else \setlength{\descindentFB}{\listindentFB}% \fi \fi } \def\enumerateFB{% \ifnum \@enumdepth >\thr@@\@toodeep\else \advance\@enumdepth by \@ne \edef\@enumctr{enum\romannumeral\the\@enumdepth}% \expandafter \list \csname label\@enumctr\endcsname {\FB@listHsettings \usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}% \fi } \let\endenumerateFB\endlistORI \def\descriptionFB{% \list{}{\FB@listHsettings \labelwidth=\z@ \ifFBListItemsAsPar \itemindent=\descindentFB \else \itemindent=-\leftmargin \ifnum\@listdepth=1 \ifdim\descindentFB=\z@ \ifdim\listindentFB>\z@ \leftmargini=\listindentFB \leftmargin=\leftmargini \itemindent=-\leftmargin \fi \else \advance\itemindent by \descindentFB \fi \fi \fi \let\makelabel\descriptionlabel}% } \let\enddescriptionFB\endlistORI \def\update@frenchlists{% \setlistindentFB \ifFBStandardListSpacing \else \let\list\listFB \fi \ifFBStandardItemizeEnv \else \let\itemize\itemizeFB \fi \ifFBStandardItemLabels \else \setlabelitemsFB \fi \ifFBStandardEnumerateEnv \else \let\enumerate\enumerateFB \let\description\descriptionFB \fi } \def\FB@ufl{\relax} \def\bbl@frenchlistlayout{% \ifFBGlobalLayoutFrench \else \babel@save\list \babel@save\itemize \babel@save\enumerate \babel@save\description \babel@save\labelitemi \babel@save\labelitemii \babel@save\labelitemiii \babel@save\labelitemiv \FB@ufl \fi } \addto\extrasfrench{\bbl@frenchlistlayout} \def\bbl@frenchindent{% \ifFBGlobalLayoutFrench\else\babel@save\@afterindentfalse\fi \ifFBIndentFirst \ifFB@mainlanguage@FR\else\babel@save\@afterindentfalse\fi \let\@afterindentfalse\@afterindenttrue \@afterindenttrue \fi} \addto\extrasfrench{\bbl@frenchindent} \AtBeginDocument{\@ifpackageloaded{bigfoot}% {\PackageInfo{french.ldf}% {bigfoot package in use.\MessageBreak babel-french will NOT customise footnotes;% \MessageBreak reported}}% {\let\@footnotemarkORI\@footnotemark \def\@footnotemarkFB{\leavevmode\unskip\unkern \,\@footnotemarkORI}% \ifFBAutoSpaceFootnotes \let\@footnotemark\@footnotemarkFB \fi}% } \newdimen\parindentFFN \parindentFFN=10in \newcommand*{\dotFFN}{.} \newcommand*{\kernFFN}{\kern .5em} \newdimen\FBfnindent \ifFB@koma \let\@makefntextORI\@makefntext \let\@@makefnmarkORI\@@makefnmark \deffootnote[\FBfnindent]{0pt}{\parindentFFN}% {\thefootnotemark\dotFFN\kernFFN} \let\@makefntextFB\@makefntext \let\@@makefnmarkFB\@@makefnmark \deffootnote[\parindentFFN]{0pt}{\parindentFFN}% {\textsuperscript{\thefootnotemark}} \let\@makefntextTH\@makefntext \let\@@makefnmarkTH\@@makefnmark \let\@makefntext\@makefntextORI \let\@@makefnmark\@@makefnmarkORI \fi \@ifclassloaded{memoir} {\newcommand{\@makefntextFB}[1]{% \def\footscript##1{##1\dotFFN\kernFFN}% \setlength{\footmarkwidth}{\FBfnindent}% \setlength{\footmarksep}{-\footmarkwidth}% \setlength{\footparindent}{\parindentFFN}% \makefootmark #1}% }{} \@ifclassloaded{beamer} {\def\@makefntextFB#1{% \def\insertfootnotetext{#1}% \def\insertfootnotemark{\insertfootnotemarkFB}% \usebeamertemplate***{footnote}}% \def\insertfootnotemarkFB{% \usebeamercolor[fg]{footnote mark}% \usebeamerfont*{footnote mark}% \llap{\@thefnmark}\dotFFN\kernFFN}% }{} \providecommand*{\insertfootnotemarkFB}{% \parindent=\parindentFFN \rule\z@\footnotesep \setbox\@tempboxa\hbox{\@thefnmark}% \ifdim\wd\@tempboxa>\z@ \llap{\@thefnmark}\dotFFN\kernFFN \fi} \providecommand\@makefntextFB[1]{\insertfootnotemarkFB #1} \providecommand\localleftbox[1]{} \AtBeginDocument{% \@ifpackageloaded{bigfoot}{}% {\ifdim\parindentFFN<10in \else \parindentFFN=\parindent \ifdim\parindentFFN<1.5em \parindentFFN=1.5em \fi \fi \settowidth{\FBfnindent}{\dotFFN\kernFFN}% \addtolength{\FBfnindent}{\parindentFFN}% \let\@makefntextORI\@makefntext \ifFB@koma \let\@@makefnmarkORI\@@makefnmark \long\def\@makefntext#1{% \localleftbox{}% \let\FBeverypar@save\FBeverypar@quote \let\FBeverypar@quote\relax \ifFBFrenchFootnotes \ifx\footnote\thanks \let\@@makefnmark\@@makefnmarkTH \@makefntextTH{#1} \else \let\@@makefnmark\@@makefnmarkFB \@makefntextFB{#1} \fi \else \let\@@makefnmark\@@makefnmarkORI \@makefntextORI{#1}% \fi \let\FBeverypar@quote\FBeverypar@save \localleftbox{\FBeveryline@quote}}% \else \@ifclassloaded{memoir}% {\ifFBFrenchFootnotes \setlength{\thanksmarkwidth}{\parindentFFN}% \setlength{\thanksmarksep}{-\thanksmarkwidth}% \fi }{}% \@ifclassloaded{beamer}% {\ifFBFrenchFootnotes \ifdim\parindentFFN=1.5em\else \FBWarning{% \protect\parindentFFN\space is ineffective% \MessageBreak within the beamer class.% \MessageBreak Reported}% \fi \fi }{}% \long\def\@makefntext#1{% \localleftbox{}% \let\FBeverypar@save\FBeverypar@quote \let\FBeverypar@quote\relax \ifFBFrenchFootnotes \@makefntextFB{#1}% \else \@makefntextORI{#1}% \fi \let\FBeverypar@quote\FBeverypar@save \localleftbox{\FBeveryline@quote}}% \fi }% } \newcommand*{\AddThinSpaceBeforeFootnotes}{\FBAutoSpaceFootnotestrue} \newcommand*{\FrenchFootnotes}{\FBFrenchFootnotestrue} \newcommand*{\StandardFootnotes}{\FBFrenchFootnotesfalse} \FBclean@on@exit \ldf@finish\CurrentOption \let\loadlocalcfg\FB@llc %% %% \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 `french.ldf'.