\ProvidesFile{gloss-french.ldf}[polyglossia: module for french] \PolyglossiaSetup{french}{% bcp47=fr-FR, language=French, script=Latin, langtag=FRA, hyphennames={french,francais}, frenchspacing=true, indentfirst=true, hyphenmins={2,2}, fontsetup=true} % BCP-47 compliant aliases \setlanguagealias*{french}{fr} \setlanguagealias*[variant=french]{french}{fr-FR} \setlanguagealias*[variant=canadian]{french}{fr-CA} \setlanguagealias*[variant=swiss]{french}{fr-CH} % Babel aliases \setlanguagealias[variant=acadian]{french}{acadien} \setlanguagealias[variant=canadian]{french}{canadien} \def\french@variant{french} \define@choicekey*+{french}{variant}[\val\nr]{french,canadian,acadian,swiss}[french]{% \ifcase\nr\relax % french: \def\french@variant{french}% \SetLanguageKeys{french}{babelname=french,bcp47=fr-FR}% \french@thincolonspacefalse \or % canadian: \def\french@variant{canadien}% \SetLanguageKeys{french}{babelname=canadien,bcp47=fr-CA}% \xpg@ifdefined{canadien}{}% {\xpg@warning{No hyphenation patterns were loaded for "French (Canada)"\MessageBreak I will use the standard patterns for French instead}% \adddialect\l@canadien\l@french\relax}% \french@thincolonspacefalse \or % acadian: \def\french@variant{acadian}% \SetLanguageKeys{french}{babelname=canadien,bcp47=fr-CA}% \xpg@ifdefined{acadian}{}% {\xpg@warning{No hyphenation patterns were loaded for "French (Canada)"\MessageBreak I will use the standard patterns for French instead}% \adddialect\l@acadian\l@french\relax}% \french@thincolonspacefalse \or % swiss: \def\french@variant{swissfrench}% \SetLanguageKeys{french}{babelname=french,bcp47=fr-CH}% \adddialect\l@swissfrench\l@french\relax% \french@thincolonspacetrue \fi \xpg@info{Option: French, variant=\val}% }{\xpg@warning{Unknown French variant `#1'}} \def\french@language{% \polyglossia@setup@language@patterns{\french@variant}% }% \ifluatex \directlua{require('polyglossia-french')}% \else \newXeTeXintercharclass\french@openbrackets % ( [ { \newXeTeXintercharclass\french@closebrackets % ) ] } \newXeTeXintercharclass\french@questionexclamation % ! ? et autres \newXeTeXintercharclass\french@punctthin % ; (et :) \newXeTeXintercharclass\french@punctthick % : \newXeTeXintercharclass\french@punctguillstart % « ‹ \newXeTeXintercharclass\french@punctguillend % » › \fi \def\xpg@unskip{\ifhmode\ifdim\lastskip>\z@\unskip\fi\fi} % Save original footnote definition \let\xpg@orig@makefntext\@makefntext \define@boolkey{french}[french@]{frenchfootnote}[true]{% \AfterPreamble{% \iffrench@frenchfootnote \ifdefstring{\xpg@main@language}{french}{% \ifx\@makefntext\undefined\else \long\def\french@makefntext##1{% \parindent1em \noindent\quad% \ifx\@thefnmark\empty\else% \@thefnmark.\space\fi ##1% } \let\@makefntext\french@makefntext \fi }{\xpg@warning{Option 'frenchfootnote' only supported if French is main language!}}% \else \let\@makefntext\xpg@orig@makefntext \fi }% } \define@boolkey{french}[french@]{autospacing}[true]{} \french@autospacingtrue \newif\iffrench@autospaceguillemets \define@boolkey{french}[french@]{autospaceguillemets}[true]{} \french@autospaceguillemetstrue \newif\iffrench@thincolonspace \define@boolkey{french}[french@]{thincolonspace}[true]{} \french@thincolonspacefalse % Backwards compatibility \define@boolkey{french}[french@]{automaticspacesaroundguillemets}[true]{% \iffrench@automaticspacesaroundguillemets \setkeys{french}{autospaceguillemets=true}% \else \setkeys{french}{autospaceguillemets=false}% \fi } % name is for compatibility with babel \let\french@ttfamilyORI\ttfamily \DeclareRobustCommand\french@ttfamilyFB{\nofrench@punctuation\french@ttfamilyORI} % Allow to switch on autospacing in ttfamily context \define@boolkey{french}[french@]{autospacetypewriter}[true]{} \french@autospacetypewriterfalse % This is how babel-french has it \define@boolkey{french}[french@]{OriginalTypewriter}[true]{% \iffrench@OriginalTypewriter \setkeys{french}{autospacetypewriter=false}% \else \setkeys{french}{autospacetypewriter=true}% \fi } % Configuration of item labels \def\french@itemi{\textemdash} \def\french@itemii{\textemdash} \def\french@itemiii{\textemdash} \def\french@itemiv{\textemdash} \define@key{french}{itemlabels}[\textemdash]{% \def\french@itemi{#1} \def\french@itemii{#1} \def\french@itemiii{#1} \def\french@itemiv{#1} } \define@key{french}{itemlabeli}[\textemdash]{% \def\french@itemi{#1} } \define@key{french}{itemlabelii}[\textemdash]{% \def\french@itemii{#1} } \define@key{french}{itemlabeliii}[\textemdash]{% \def\french@itemiii{#1} } \define@key{french}{itemlabeliv}[\textemdash]{% \def\french@itemiv{#1} } \define@boolkey{french}[french@]{frenchitemlabels}[true]{% \AfterPreamble{% \iffrench@frenchitemlabels \ifdefstring{\xpg@main@language}{french}{% \renewcommand{\labelitemi}{\french@itemi}% \renewcommand{\labelitemii}{\french@itemii}% \renewcommand{\labelitemiii}{\french@itemiii}% \renewcommand{\labelitemiv}{\french@itemiv}% }{\xpg@warning{Option 'frenchitemlabels' only supported if French is main language!}}% \else \let\@makefntext\xpg@orig@makefntext \fi }% } % Register default options \xpg@initialize@gloss@options{french}{variant=french,autospacing=true,thincolonspace=false, autospaceguillemets=true,autospacetypewriter=false, frenchfootnote=false,frenchitemlabels=false, itemlabels=\textemdash,itemlabeli=\textemdash,itemlabelii=\textemdash, itemlabeliii=\textemdash,itemlabeliv=\textemdash} % Register alias options \xpg@set@alias@values{french}{variant}{canadian}{acadian} \def\french@fontsetup{% \unless\iffrench@autospacetypewriter \let\ttfamily\french@ttfamilyFB \fi } \def\nofrench@fontsetup{% \let\ttfamily\french@ttfamilyORI } \def\xpg@french@thinsp{\kern 0.5\fontdimen2\font} \def\french@punctuation{% \lccode"2019="2019 \ifluatex \iffrench@thincolonspace \iffrench@autospaceguillemets \directlua{polyglossia.activate_french_punct(true, true)}% \else \directlua{polyglossia.activate_french_punct(true, false)}% \fi \else \iffrench@autospaceguillemets \directlua{polyglossia.activate_french_punct(false, true)}% \else \directlua{polyglossia.activate_french_punct(false, false)}% \fi \fi \else \XeTeXinterchartokenstate=1 \XeTeXcharclass `\! \french@questionexclamation \XeTeXcharclass `\? \french@questionexclamation \XeTeXcharclass `\‼ \french@questionexclamation \XeTeXcharclass `\⁇ \french@questionexclamation \XeTeXcharclass `\⁈ \french@questionexclamation \XeTeXcharclass `\⁉ \french@questionexclamation \XeTeXcharclass `\‽ \french@questionexclamation % U+203D (interrobang) \XeTeXcharclass `\; \french@punctthin \iffrench@thincolonspace \XeTeXcharclass `\: \french@punctthin \else \XeTeXcharclass `\: \french@punctthick \fi \XeTeXcharclass `\« \french@punctguillstart \XeTeXcharclass `\» \french@punctguillend \XeTeXcharclass `\‹ \french@punctguillstart \XeTeXcharclass `\› \french@punctguillend \XeTeXcharclass `\( \french@openbrackets \XeTeXcharclass `\) \french@closebrackets \XeTeXcharclass `\[ \french@openbrackets \XeTeXcharclass `\] \french@closebrackets \XeTeXcharclass `\{ \french@openbrackets \XeTeXcharclass `\} \french@closebrackets \XeTeXcharclass `\⟨ \french@openbrackets \XeTeXcharclass `\⟩ \french@closebrackets \XeTeXinterchartoks \z@ \french@questionexclamation = {\xpg@french@thinsp}% \XeTeXinterchartoks \z@ \french@punctthin = {\xpg@french@thinsp}% \XeTeXinterchartoks \z@ \french@punctthick = {\nobreakspace}% \XeTeXinterchartoks \xpg@boundaryclass \french@questionexclamation = {\xpg@unskip\xpg@french@thinsp}% \XeTeXinterchartoks \xpg@boundaryclass \french@punctthin = {\xpg@unskip\xpg@french@thinsp}% \XeTeXinterchartoks \xpg@boundaryclass \french@punctthick = {\xpg@unskip\nobreakspace}% \iffrench@autospaceguillemets \let\xpg@french@guillspace\xpg@french@thinsp% \XeTeXinterchartoks \french@punctguillstart \z@ = {\xpg@french@guillspace}% "«a" -> "«\,a" \XeTeXinterchartoks \french@punctguillstart \french@punctguillstart = {\xpg@french@guillspace}% "«‹" -> "«\,‹" % \XeTeXinterchartoks \z@ \french@punctguillstart = {\nobreakspace}% "a«" unchanged? % \XeTeXinterchartoks \french@punctguillend \z@ = {\nobreakspace}% "»a" unchanged? \XeTeXinterchartoks \z@ \french@punctguillend = {\xpg@french@guillspace}% "a»" -> "a\,»" \XeTeXinterchartoks \french@punctguillstart \xpg@boundaryclass = {\xpg@french@guillspace\ignorespaces}% "« " -> "«\," \XeTeXinterchartoks \xpg@boundaryclass \french@punctguillend = {\xpg@unskip\xpg@french@guillspace}% " »" -> "\,»" \XeTeXinterchartoks \french@closebrackets \french@punctguillend = {\xpg@french@guillspace}% ")»" -> ")\,»" \XeTeXinterchartoks \french@questionexclamation \french@punctguillend = {\xpg@french@guillspace}% "?»" -> "?\,»" \XeTeXinterchartoks \french@punctthin \french@punctguillend = {\xpg@french@guillspace}% ";»" -> ";\,»" \XeTeXinterchartoks \french@punctguillend \french@punctguillend = {\xpg@french@guillspace}% "›»" -> "›\,»" \else \def\xpg@french@guillspace{}% \fi \XeTeXinterchartoks \french@punctguillend \french@questionexclamation = {\xpg@french@thinsp}% "»?" -> "»\,?" \XeTeXinterchartoks \french@punctguillend \french@punctthin = {\xpg@french@thinsp}% "»;" -> "»\,;" \XeTeXinterchartoks \french@punctguillend \french@punctthick = {\nobreakspace}% "»:" -> "» :" \XeTeXinterchartoks \french@questionexclamation \french@punctthin = {\xpg@french@thinsp}% "?;" -> "?\,;" \XeTeXinterchartoks \french@questionexclamation \french@punctthick = {\xpg@french@thinsp}% "?:" -> "?\,:" \XeTeXinterchartoks \french@openbrackets \french@questionexclamation = {\xpg@unskip}% "(?" -> "(?" and not "( ?" \XeTeXinterchartoks \french@openbrackets \french@punctthin = {\xpg@unskip}% "(;" -> "(;" and not "( ;" \XeTeXinterchartoks \french@punctthin \french@closebrackets = {\xpg@unskip}% "?)" -> "?)" (code not need, just for symetry with previous one) \XeTeXinterchartoks \french@closebrackets \french@punctthin = {\xpg@french@thinsp}% ")?" -> ")\,?" \XeTeXinterchartoks \french@closebrackets \french@punctthick = {\nobreakspace}% "):" -> ") :" \fi } \def\nofrench@punctuation{% \lccode"2019=\z@ \ifluatex \directlua{polyglossia.deactivate_french_punct()}% \else \XeTeXcharclass `\! \z@ \XeTeXcharclass `\? \z@ \XeTeXcharclass `\‼ \z@ \XeTeXcharclass `\⁇ \z@ \XeTeXcharclass `\⁈ \z@ \XeTeXcharclass `\⁉ \z@ \XeTeXcharclass `\‽ \z@ \XeTeXcharclass `\; \z@ \XeTeXcharclass `\: \z@ \XeTeXcharclass `\« \z@ \XeTeXcharclass `\» \z@ \XeTeXcharclass `\‹ \z@ \XeTeXcharclass `\› \z@ \XeTeXcharclass `\( \z@ \XeTeXcharclass `\) \z@ \XeTeXcharclass `\[ \z@ \XeTeXcharclass `\] \z@ \XeTeXcharclass `\{ \z@ \XeTeXcharclass `\} \z@ \XeTeXcharclass `\⟨ \z@ \XeTeXcharclass `\⟩ \z@ \XeTeXinterchartokenstate=0 \fi } \def\captionsfrench{% \def\refname{Références}% \def\abstractname{Résumé}% \def\bibname{Bibliographie}% \def\prefacename{Préface}% \def\chaptername{Chapitre}% \def\appendixname{Annexe}% \def\contentsname{Table des matières}% \def\listfigurename{Table des figures}% \def\listtablename{Liste des tableaux}% \def\indexname{Index}% \def\figurename{\textsc{Fig.}}% \def\tablename{\textsc{Tab.}}% \def\@Fpt{\ifcase\value{part}\or Première\or Deuxième\or Troisième\or Quatrième\or Cinquième\or Sixième\or Septième\or Huitième\or Neuvième\or Dixième\or Onzième\or Douzième\or Treizième\or Quatorzième\or Quinzième\or Seizième\or Dix-septième\or Dix-huitième\or Dix-neuvième\or Vingtième\fi\space}% \def\thepart{\@Fpt partie}% \def\partname{}% \def\pagename{page}% \def\seename{\emph{voir}}% \def\alsoname{\emph{voir aussi}}% \def\enclname{P.~J. }% \def\ccname{Copie à }% \def\headtoname{}% \def\proofname{Démonstration}% } \def\datefrench{% \def\today{\ifx\ier\undefined\def\ier{er}\fi \ifnum\day=1\relax 1\ier% \else \number\day\fi \space \ifcase\month% \or janvier\or février\or mars\or avril\or mai\or juin\or juillet\or août\or septembre\or octobre\or novembre\or décembre\fi \space \number\year}} \def\noextras@french{% \nofrench@punctuation% \nofrench@fontsetup% } \def\blockextras@french{% \iffrench@autospacing \french@punctuation% \fi \french@fontsetup% } \def\inlineextras@french{% \iffrench@autospacing \french@punctuation% \fi \french@fontsetup% } \def\NoAutoSpacing{% \nofrench@punctuation% } \def\AutoSpacing{% \french@punctuation% } \def\ier{\textsuperscript{er}} \def\iers{\textsuperscript{ers}} \def\iere{\textsuperscript{re}} \def\ieres{\textsuperscript{res}} \def\ieme{\textsuperscript{e}} \def\iemes{\textsuperscript{es}} \def\nd{\textsuperscript{nd}} \def\nds{\textsuperscript{nds}} \def\nde{\textsuperscript{nde}} \def\ndes{\textsuperscript{ndes}} \def\no{\textsuperscript{o}} \def\nos{\textsuperscript{os}} \def\mme{M\textsuperscript{me}\space} \def\mmes{M\textsuperscript{mes}\space} \def\mr{M.\space} \def\mrs{MM.\space} \endinput