You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
tex-compiler/texmf-dist/tex/latex/polyglossia/gloss-french.ldf

401 lines
14 KiB

\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}[\xpg@val\xpg@nr]{french,canadian,acadian,swiss}[french]{%
\ifcase\xpg@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=\xpg@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
% Do this at the end of the preamble to catch other
% packages' footnote changes (#391)
\AtEndPreamble{%
\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