summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/xelatex/polyglossia/polyglossia.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/xelatex/polyglossia/polyglossia.sty')
-rw-r--r--Master/texmf-dist/tex/xelatex/polyglossia/polyglossia.sty360
1 files changed, 360 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xelatex/polyglossia/polyglossia.sty b/Master/texmf-dist/tex/xelatex/polyglossia/polyglossia.sty
new file mode 100644
index 00000000000..1d3abc4c0aa
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/polyglossia/polyglossia.sty
@@ -0,0 +1,360 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{polyglossia}[2008/07/11 v1.0
+ Babel replacement for XeLaTeX]
+\RequirePackage{etoolbox} % TEMPORARY? but so convenient!
+\RequirePackage{fontspec} %which itself depends on xkeyval
+\providecommand*{\xpg@warning}[1]{%
+ \PackageWarning{polyglossia}%
+ {#1}}
+\providecommand*{\xpg@info}[1]{%
+ \PackageInfo{polyglossia}%
+ {#1\@gobble}} %% the \@gobble is to prevent displaying the line nr
+\providecommand*{\xpg@nopatterns}[1]{%
+ \xpg@warning{No hyphenation patterns were loaded for `#1'\MessageBreak
+ I will use the patterns loaded for \string\language=0\MessageBreak instead}}
+\providecommand*{\xpg@nolang}[1]{%
+ \xpg@warning{Couldn't find file gloss-#1.ldf!}}%
+ %TODO try at least to load the hyphenation patterns for #1.
+\def\xpg@ill@value#1#2{%
+ \xpg@warning{Illegal value (#1) for #2}}
+
+\def\xpg@csifdef@warn#1{%
+ \ifcsundef{#1}{\PackageWarning{polyglossia}{ #1 is not defined}}%
+ {\expandafter\protect\csname #1\endcsname}}
+
+\def\xpg@csifdef#1{\ifcsundef{#1}{\relax}{\expandafter\protect\csname #1\endcsname}}
+
+
+\def\@@ensure@dir#1{\ifcsundef{@ensure@dir}{#1}{\@ensure@dir{#1}}}
+\def\@@ensure@maindir#1{\ifcsundef{@ensure@maindir}{#1}{\@ensure@maindir{#1}}}
+
+\def\opt@enabled{on}
+\def\opt@disabled{off}
+\define@key{polyglossia}{localmarks}[on]{%
+ \def\@tmpa{#1}
+ \ifx\@tmpa\opt@enabled
+ \def\local@marks##1{%
+ \def\markboth####1####2{%
+ \begingroup%
+ \let\label\relax \let\index\relax \let\glossary\relax%
+ \unrestored@protected@xdef\@themark%
+ {{\foreignlanguage{##1}{%
+ \protect\@@ensure@maindir{####1}}}%
+ {\foreignlanguage{##1}{%
+ \protect\@@ensure@maindir{####2}}}}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup%
+ \if@nobreak\ifvmode\nobreak\fi\fi}%
+ \def\markright####1{%
+ \begingroup%
+ \let\label\relax \let\index\relax \let\glossary\relax%
+ \expandafter\@markright\@themark%
+ {\foreignlanguage{##1}{\protect\@@ensure@maindir{####1}}}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup%
+ \if@nobreak\ifvmode\nobreak\fi\fi}%
+ \def\@markright####1####2####3{\@temptokena{\protect\@@ensure@maindir{####1}}%
+ \unrestored@protected@xdef\@themark{{\the\@temptokena}%
+ {{\protect\@@ensure@maindir{####3}}}}}}
+ \else\ifx\@tmpa\opt@disabled
+ \def\local@marks#1{}
+ \xpg@info{Option: localmarks=off}
+ \fi%
+ \fi%
+}
+\setkeys{polyglossia}{localmarks=on}
+
+%%TODO Use the etoolbox macros instead!
+%\def\oaddto#1#2{%
+% \ifx#1\@undefined
+% \def#1{#2}%
+% \else
+% \ifx#1\relax
+% \def#1{#2}%
+% \else
+% {\toks@\expandafter{#1#2}%
+% \xdef#1{\the\toks@}}%
+% \fi
+% \fi
+%}
+
+\newcommand{\setdefaultlanguage}[2][]{%
+ \IfFileExists{gloss-#2.ldf}%
+ {\ifcsundef{#2@loaded}% from etoolbox.sty
+ {\input{gloss-#2.ldf}%
+ \xpg@info{Default language is #2.}
+ \def\languagename{#2}%
+ % This is needed because \arabic is a built-in LaTeX command:
+ % so now we have \begin{Arabic}... instead of \begin{arabic}...
+ \edef\@tmpa{arabic}%
+ \edef\@tmpb{#2}%
+ \ifx\@tmpb\@tmpa%
+ \newenvironment{Arabic}[1][]{\begin{otherlanguage}[####1]{arabic}}%
+ {\end{otherlanguage}}%
+ \else%
+ \newenvironment{#2}[1][]{\begin{otherlanguage}[####1]{#2}}%
+ {\end{otherlanguage}}%
+ \fi%
+ \expandafter\newcommand\csname text#2\endcsname[2][]{%
+ \ifcsdef{RL}%
+ {\ifcsundef{#2@RL}%
+ {\@ensure@LR{\foreignlanguage[####1]{#2}{####2}}}%
+ {\@ensure@RL{\foreignlanguage[####1]{#2}{####2}}}}%
+ {\foreignlanguage[####1]{#2}{####2}}%
+ }%
+ \csletcs{local#2}{text#2}%
+ \csgdef{#2@loaded}{}%
+ \gdef\xpg@main@language{#2}%
+ }%
+ {\PackageWarning{polyglossia}{gloss-#2.ldf is already loaded!}}%
+ %% The following settings are for the default language and script:
+ \ifcsundef{#2@RL}{}%
+ {\@rlmaintrue\@rl@footnotetrue%
+ \let\@@oddfoot\@oddfoot%
+ \let\@@evenfoot\@evenfoot%
+ \let\@oddfoot\@@evenfoot%
+ \let\@evenfoot\@@oddfoot%
+ \let\@@oddhead\@oddhead%
+ \let\@@evenhead\@evenhead%
+ \let\@oddhead\@@evenhead%
+ \let\@evenhead\@@oddhead%
+ }%
+ \AtBeginDocument{%
+ \selectlanguage[#1]{#2}%
+ \selectbackgroundlanguage{#2}}%
+ }%
+ %ELSE
+ {\xpg@nolang{#2}}}%
+
+\let\setmainlanguage=\setdefaultlanguage
+
+\newcommand{\resetdefaultlanguage}[2][]{%
+ \ifcsundef{#2@loaded}{%
+ \PackageError{polyglossia}{gloss-#2.ldf is not loaded!}}%
+ {\def\languagename{#2}%
+ \ifcsundef{#2@RL}{}{\@rlmaintrue\@rl@footnotetrue}%
+ \selectlanguage[#1]{#2}%
+ \selectbackgroundlanguage{#2}}}
+
+% This saves the normalfont for the latin script since we may change normalfont in other scripts
+\let\normalfontlatin=\normalfont%
+\let\rmfamilylatin=\rmfamily%
+\let\sffamilylatin=\sffamily%
+\let\ttfamilylatin=\ttfamily%
+
+\def\reset@latin@script{%
+ \let\rmfamily=\rmfamilylatin%
+ \let\sffamily=\sffamilylatin%
+ \let\ttfamily=\ttfamilylatin%
+ \normalfontlatin}
+
+\def\reset@LR{\xpg@csifdef{setLR}}
+
+\let\@@fterindentfalse\@afterindentfalse
+\def\french@indent{\let\@afterindentfalse\@afterindenttrue
+ \@afterindenttrue}
+\def\nofrench@indent{\let\@afterindentfalse\@@fterindentfalse
+ \@afterindentfalse}
+
+\newcommand{\selectbackgroundlanguage}[1]{%
+ \xpg@csifdef{selectnormalfont#1}%
+ \xpg@csifdef{#1@globalnumbers}%
+ }
+
+\newcommand{\setotherlanguage}[2][]{%
+ \IfFileExists{gloss-#2.ldf}%
+ {\ifcsundef{#2@loaded}%
+ {\input{gloss-#2.ldf}%
+ \setkeys{#2}{#1}%
+ \edef\@tmpa{arabic}%
+ \edef\@tmpb{#2}%
+ \ifx\@tmpb\@tmpa%
+ \newenvironment{Arabic}[1][]{\begin{otherlanguage}[####1]{arabic}}%
+ {\end{otherlanguage}}%
+ \else%
+ \newenvironment{#2}[1][]{\begin{otherlanguage}[####1]{#2}}%
+ {\end{otherlanguage}}%
+ \fi%
+ \expandafter\newcommand\csname text#2\endcsname[2][]{%
+ \ifcsdef{RL}{%
+ \ifcsundef{#2@RL}%
+ {\@ensure@LR{\foreignlanguage[####1]{#2}{####2}}}%
+ {\@ensure@RL{\foreignlanguage[####1]{#2}{####2}}}%
+ }{% else
+ \foreignlanguage[####1]{#2}{####2}%
+ }}%
+ \csletcs{local#2}{text#2}%
+ \csgdef{#2@loaded}{}%
+ }%
+ {\PackageWarning{polyglossia}{gloss-#2.ldf is already loaded!}}%
+ }%
+ %ELSE
+ {\xpg@nolang{#2}}%
+ %TODO ? \expandafter\ifx\csname l@#2\endcsname\@undefined
+ %\xpg@nopatterns{#2}\expandafter\adddialect\csname l@#2\endcsname 0%
+ %\else\expandafter\expandafter\protect\language=\csname l@#2\endcsname\fi%
+}
+
+\newcommand\setotherlanguages[1]{%
+ \def\do##1{\setotherlanguage{##1}}%
+ \docsvlist{#1}}% from etoolbox.sty
+
+\def\common@language{%
+ \protect\language=0%
+ \lefthyphenmin=2\righthyphenmin=3}
+
+\def\noextrascurrent#1{\xpg@csifdef{noextras@#1}}
+
+\def\xpg@initial@setup{\ifcsundef{languagename}{}%
+ {\noextrascurrent{\languagename}}%
+ \common@language}
+
+\AtBeginDocument{\xpg@initial@setup}
+
+\ifcsundef{foreignlanguage}{}%
+ {\let\foreignlanguage\@undefined}
+
+\newcommand{\foreignlanguage}[3][]{%
+ \ifcsundef{#2@loaded}{\xpg@nolang{#2}}{%
+ {\def\languagename{#2}%
+ \setkeys{#2}{#1}%
+ \xpg@csifdef@warn{#2@font}%
+ \xpg@csifdef@warn{#2@language}%
+ \xpg@csifdef{date#2}%
+ \xpg@csifdef{#2@numbers}%
+ \use@localhyphenmins{#2}%
+ \xpg@csifdef{inlineextras@#2}%
+ #3}%
+}}
+
+\ifcsundef{selectlanguage}{}%
+ {\let\selectlanguage\@undefined}
+
+\newcommand{\selectlanguage}[2][]{%
+ \ifcsundef{#2@loaded}{\xpg@nolang{#2}}{%
+ \def\xpg@pop@language{%
+ \xpg@set@language{\languagename}%
+ \let\emp@langname\@undefined}%
+ \aftergroup\xpg@pop@language%
+ \setkeys{#2}{#1}%
+ \xpg@set@language{#2}%
+}}
+
+\newcommand{\xpg@set@language}[1]{%
+ \select@language{#1}%
+ \if@filesw%
+ \protected@write\@auxout{}{\protect\select@language{#1}}%
+ \addtocontents{toc}{\protect\select@language{#1}}%
+ \addtocontents{lof}{\protect\select@language{#1}}%
+ \addtocontents{lot}{\protect\select@language{#1}}%
+ \fi%
+}
+
+\ifcsundef{select@language}{}%
+ {\let\select@language\@undefined}
+
+\newcommand{\select@language}[1]{%
+ \xpg@initial@setup%
+ \edef\languagename{#1}%
+ \ifcsundef{RL}{}%
+ {\ifcsundef{#1@RL}{\setLR}{\setRL}}%
+ \xpg@csifdef@warn{#1@font}%
+ \xpg@csifdef@warn{#1@language}%
+ \use@localhyphenmins{#1}%
+ \xpg@csifdef{captions#1}%
+ \xpg@csifdef{date#1}%
+ \xpg@csifdef{#1@numbers}%
+ \local@marks{#1}%
+ \xpg@csifdef{blockextras@#1}%
+}
+
+\let\xpg@pop@language\relax
+
+\ifcsundef{otherlanguage}{}%
+ {\let\otherlanguage\@undefined}
+\ifcsundef{endotherlanguage}{}%
+ {\let\endotherlanguage\@undefined}
+
+\newenvironment{otherlanguage}[2][]{%
+ \selectlanguage[#1]{#2}%
+ }{}
+
+\newcommand{\setlocalhyphenmins}[3]{%
+ \providehyphenmins{#1}{#2#3}}
+
+\def\use@localhyphenmins#1{%
+ \ifcsundef{#1hyphenmins}{}%
+ {\expandafter\expandafter\expandafter\set@hyphenmins\csname #1hyphenmins\endcsname\relax}}
+
+%% package options
+\DeclareOption{nolocalmarks}{\setkeys{polyglossia}{localmarks=off}}
+\DeclareOption{quiet}{%
+ \gdef\@latex@info#1{\relax}% no latex info
+ \gdef\@font@info#1{\relax}% no latex font info
+ \gdef\@font@warning#1{\relax}% no latex font warnings
+ \gdef\zf@PackageInfo#1{\relax}% no fontspec info
+ \gdef\xpg@info#1{\relax}}% no polyglossia info
+\DeclareOption{USenglish}{%
+\ifcsundef{xpg@main@language}%
+ {\edef\@temp{\noexpand\setdefaultlanguage[variant=american]{english}}}%
+ {\edef\@temp{\noexpand\setotherlanguage[variant=american]{english}}}%
+ \@temp}
+\DeclareOption{american}{%
+\ifcsundef{xpg@main@language}%
+ {\edef\@temp{\noexpand\setdefaultlanguage[variant=american]{english}}}%
+ {\edef\@temp{\noexpand\setotherlanguage[variant=american]{english}}}%
+ \@temp}
+\DeclareOption{UKenglish}{%
+\ifcsundef{xpg@main@language}%
+ {\edef\@temp{\noexpand\setdefaultlanguage[variant=british]{english}}}%
+ {\edef\@temp{\noexpand\setotherlanguage[variant=british]{english}}}%
+ \@temp}
+\DeclareOption{british}{%
+\ifcsundef{xpg@main@language}%
+ {\edef\@temp{\noexpand\setdefaultlanguage[variant=british]{english}}}%
+ {\edef\@temp{\noexpand\setotherlanguage[variant=british]{english}}}%
+ \@temp}
+\DeclareOption{australian}{%
+\ifcsundef{xpg@main@language}%
+ {\edef\@temp{\noexpand\setdefaultlanguage[variant=australian]{english}}}%
+ {\edef\@temp{\noexpand\setotherlanguage[variant=australian]{english}}}%
+ \@temp}
+\DeclareOption{newzealand}{%
+\ifcsundef{xpg@main@language}%
+ {\edef\@temp{\noexpand\setdefaultlanguage[variant=newzealand]{english}}}%
+ {\edef\@temp{\noexpand\setotherlanguage[variant=newzealand]{english}}}%
+ \@temp}
+\DeclareOption{ngerman}{%
+\ifcsundef{xpg@main@language}%
+ {\edef\@temp{\noexpand\setdefaultlanguage[spelling=new]{german}}}%
+ {\edef\@temp{\noexpand\setotherlanguage[spelling=new]{german}}}%
+ \@temp}
+\DeclareOption{polygreek}{%
+\ifcsundef{xpg@main@language}%
+ {\edef\@temp{\noexpand\setdefaultlanguage[variant=poly]{greek}}}%
+ {\edef\@temp{\noexpand\setotherlanguage[variant=poly]{greek}}}%
+ \@temp}
+\DeclareOption{monogreek}{%
+\ifcsundef{xpg@main@language}%
+ {\edef\@temp{\noexpand\setdefaultlanguage[variant=mono]{greek}}}%
+ {\edef\@temp{\noexpand\setotherlanguage[variant=mono]{greek}}}%
+ \@temp}
+\DeclareOption{ancientgreek}{%
+\ifcsundef{xpg@main@language}%
+ {\edef\@temp{\noexpand\setdefaultlanguage[variant=ancient]{greek}}}%
+ {\edef\@temp{\noexpand\setotherlanguage[variant=ancient]{greek}}}%
+ \@temp}
+%%% FIXME: this does not work when gloss-<option>.ldf contains a \RequirePackage command !!!
+%%% let's try with \AtEndOfPackage (not tested)
+\DeclareOption*{%
+\ifcsundef{xpg@main@language}%
+{\edef\@temp{\noexpand\setdefaultlanguage{\CurrentOption}}}%
+{\edef\@temp{\noexpand\setotherlanguage{\CurrentOption}}}%
+ \AtEndOfPackage{\@temp}}
+\ProcessOptions*
+%This is for compatibility with biblatex and perhaps other pkgs:
+\def\languageshorthands#1{\relax}
+\endinput
+