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.
401 lines
14 KiB
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
|
|
|