%% %% This is file `PJLlang.sty', %% generated with the docstrip utility. %% Copyright (C) 2021 by Jinwen XU %% %% This is part of the ProjLib Toolkit. %% %% This work may be distributed and/or modified under the conditions of the %% LaTeX Project Public License, either version 1.3c 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.3c or later is part of all distributions of LaTeX version %% 2005/12/01 or later. %% \NeedsTeXFormat{LaTeX2e}[2020-10-01] \ProvidesPackage{PJLlang} [2021/07/30 Multi-language configuration] \RequirePackage{kvoptions} \RequirePackage{etoolbox} \SetupKeyvalOptions{% family = @PJLlang, prefix = @PJLlang@ } \DeclareBoolOption[false]{polyglossia} \newif\if@PJLlang@enable@all\@PJLlang@enable@alltrue \newif\if@PJLlang@enable@EN\@PJLlang@enable@ENfalse \newif\if@PJLlang@enable@FR\@PJLlang@enable@FRfalse \newif\if@PJLlang@enable@DE\@PJLlang@enable@DEfalse \newif\if@PJLlang@enable@IT\@PJLlang@enable@ITfalse \newif\if@PJLlang@enable@PT\@PJLlang@enable@PTfalse \newif\if@PJLlang@enable@BR\@PJLlang@enable@BRfalse \newif\if@PJLlang@enable@ES\@PJLlang@enable@ESfalse \newif\if@PJLlang@enable@CN\@PJLlang@enable@CNfalse \newif\if@PJLlang@enable@TC\@PJLlang@enable@TCfalse \newif\if@PJLlang@enable@JP\@PJLlang@enable@JPfalse \newif\if@PJLlang@enable@RU\@PJLlang@enable@RUfalse \def\PJLlang@babeloptions{} \DeclareVoidOption{EN}{\@PJLlang@enable@allfalse\@PJLlang@enable@ENtrue\providecommand{\PJLlang@mainlang}{EN}\gpreto{\PJLlang@babeloptions}{,english}} \DeclareVoidOption{english}{\@PJLlang@enable@allfalse\@PJLlang@enable@ENtrue\providecommand{\PJLlang@mainlang}{EN}\gpreto{\PJLlang@babeloptions}{,english}} \DeclareVoidOption{English}{\@PJLlang@enable@allfalse\@PJLlang@enable@ENtrue\providecommand{\PJLlang@mainlang}{EN}\gpreto{\PJLlang@babeloptions}{,english}} \DeclareVoidOption{FR}{\@PJLlang@enable@allfalse\@PJLlang@enable@FRtrue\providecommand{\PJLlang@mainlang}{FR}\gpreto{\PJLlang@babeloptions}{,french}} \DeclareVoidOption{french}{\@PJLlang@enable@allfalse\@PJLlang@enable@FRtrue\providecommand{\PJLlang@mainlang}{FR}\gpreto{\PJLlang@babeloptions}{,french}} \DeclareVoidOption{French}{\@PJLlang@enable@allfalse\@PJLlang@enable@FRtrue\providecommand{\PJLlang@mainlang}{FR}\gpreto{\PJLlang@babeloptions}{,french}} \DeclareVoidOption{DE}{\@PJLlang@enable@allfalse\@PJLlang@enable@DEtrue\providecommand{\PJLlang@mainlang}{DE}\gpreto{\PJLlang@babeloptions}{,ngerman}} \DeclareVoidOption{german}{\@PJLlang@enable@allfalse\@PJLlang@enable@DEtrue\providecommand{\PJLlang@mainlang}{DE}\gpreto{\PJLlang@babeloptions}{,ngerman}} \DeclareVoidOption{ngerman}{\@PJLlang@enable@allfalse\@PJLlang@enable@DEtrue\providecommand{\PJLlang@mainlang}{DE}\gpreto{\PJLlang@babeloptions}{,ngerman}} \DeclareVoidOption{German}{\@PJLlang@enable@allfalse\@PJLlang@enable@DEtrue\providecommand{\PJLlang@mainlang}{DE}\gpreto{\PJLlang@babeloptions}{,ngerman}} \DeclareVoidOption{IT}{\@PJLlang@enable@allfalse\@PJLlang@enable@ITtrue\providecommand{\PJLlang@mainlang}{IT}\gpreto{\PJLlang@babeloptions}{,italian}} \DeclareVoidOption{italian}{\@PJLlang@enable@allfalse\@PJLlang@enable@ITtrue\providecommand{\PJLlang@mainlang}{IT}\gpreto{\PJLlang@babeloptions}{,italian}} \DeclareVoidOption{Italian}{\@PJLlang@enable@allfalse\@PJLlang@enable@ITtrue\providecommand{\PJLlang@mainlang}{IT}\gpreto{\PJLlang@babeloptions}{,italian}} \DeclareVoidOption{PT}{\@PJLlang@enable@allfalse\@PJLlang@enable@PTtrue\providecommand{\PJLlang@mainlang}{PT}\gpreto{\PJLlang@babeloptions}{,portuguese}} \DeclareVoidOption{portuguese}{\@PJLlang@enable@allfalse\@PJLlang@enable@PTtrue\providecommand{\PJLlang@mainlang}{PT}\gpreto{\PJLlang@babeloptions}{,portuguese}} \DeclareVoidOption{Portuguese}{\@PJLlang@enable@allfalse\@PJLlang@enable@PTtrue\providecommand{\PJLlang@mainlang}{PT}\gpreto{\PJLlang@babeloptions}{,portuguese}} \DeclareVoidOption{BR}{\@PJLlang@enable@allfalse\@PJLlang@enable@BRtrue\providecommand{\PJLlang@mainlang}{BR}\gpreto{\PJLlang@babeloptions}{,brazilian}} \DeclareVoidOption{brazilian}{\@PJLlang@enable@allfalse\@PJLlang@enable@BRtrue\providecommand{\PJLlang@mainlang}{BR}\gpreto{\PJLlang@babeloptions}{,brazilian}} \DeclareVoidOption{Brazilian}{\@PJLlang@enable@allfalse\@PJLlang@enable@BRtrue\providecommand{\PJLlang@mainlang}{BR}\gpreto{\PJLlang@babeloptions}{,brazilian}} \DeclareVoidOption{ES}{\@PJLlang@enable@allfalse\@PJLlang@enable@EStrue\providecommand{\PJLlang@mainlang}{ES}\gpreto{\PJLlang@babeloptions}{,spanish}} \DeclareVoidOption{spanish}{\@PJLlang@enable@allfalse\@PJLlang@enable@EStrue\providecommand{\PJLlang@mainlang}{ES}\gpreto{\PJLlang@babeloptions}{,spanish}} \DeclareVoidOption{Spanish}{\@PJLlang@enable@allfalse\@PJLlang@enable@EStrue\providecommand{\PJLlang@mainlang}{ES}\gpreto{\PJLlang@babeloptions}{,spanish}} \DeclareVoidOption{CN}{\@PJLlang@enable@allfalse\@PJLlang@enable@CNtrue\providecommand{\PJLlang@mainlang}{CN}} \DeclareVoidOption{chinese}{\@PJLlang@enable@allfalse\@PJLlang@enable@CNtrue\providecommand{\PJLlang@mainlang}{CN}} \DeclareVoidOption{Chinese}{\@PJLlang@enable@allfalse\@PJLlang@enable@CNtrue\providecommand{\PJLlang@mainlang}{CN}} \DeclareVoidOption{schinese}{\@PJLlang@enable@allfalse\@PJLlang@enable@CNtrue\providecommand{\PJLlang@mainlang}{CN}} \DeclareVoidOption{SChinese}{\@PJLlang@enable@allfalse\@PJLlang@enable@CNtrue\providecommand{\PJLlang@mainlang}{CN}} \DeclareVoidOption{simplifiedchinese}{\@PJLlang@enable@allfalse\@PJLlang@enable@CNtrue\providecommand{\PJLlang@mainlang}{CN}} \DeclareVoidOption{SimplifiedChinese}{\@PJLlang@enable@allfalse\@PJLlang@enable@CNtrue\providecommand{\PJLlang@mainlang}{CN}} \DeclareVoidOption{TC}{\@PJLlang@enable@allfalse\@PJLlang@enable@TCtrue\providecommand{\PJLlang@mainlang}{TC}} \DeclareVoidOption{tchinese}{\@PJLlang@enable@allfalse\@PJLlang@enable@TCtrue\providecommand{\PJLlang@mainlang}{TC}} \DeclareVoidOption{TChinese}{\@PJLlang@enable@allfalse\@PJLlang@enable@TCtrue\providecommand{\PJLlang@mainlang}{TC}} \DeclareVoidOption{traditionalchinese}{\@PJLlang@enable@allfalse\@PJLlang@enable@TCtrue\providecommand{\PJLlang@mainlang}{TC}} \DeclareVoidOption{TraditionalChinese}{\@PJLlang@enable@allfalse\@PJLlang@enable@TCtrue\providecommand{\PJLlang@mainlang}{TC}} \DeclareVoidOption{JP}{\@PJLlang@enable@allfalse\@PJLlang@enable@JPtrue\providecommand{\PJLlang@mainlang}{JP}\gpreto{\PJLlang@babeloptions}{,japanese}} \DeclareVoidOption{japanese}{\@PJLlang@enable@allfalse\@PJLlang@enable@JPtrue\providecommand{\PJLlang@mainlang}{JP}\gpreto{\PJLlang@babeloptions}{,japanese}} \DeclareVoidOption{Japanese}{\@PJLlang@enable@allfalse\@PJLlang@enable@JPtrue\providecommand{\PJLlang@mainlang}{JP}\gpreto{\PJLlang@babeloptions}{,japanese}} \DeclareVoidOption{RU}{\@PJLlang@enable@allfalse\@PJLlang@enable@RUtrue\providecommand{\PJLlang@mainlang}{RU}\gpreto{\PJLlang@babeloptions}{,russian}} \DeclareVoidOption{russian}{\@PJLlang@enable@allfalse\@PJLlang@enable@RUtrue\providecommand{\PJLlang@mainlang}{RU}\gpreto{\PJLlang@babeloptions}{,russian}} \DeclareVoidOption{Russian}{\@PJLlang@enable@allfalse\@PJLlang@enable@RUtrue\providecommand{\PJLlang@mainlang}{RU}\gpreto{\PJLlang@babeloptions}{,russian}} \ProcessKeyvalOptions*\relax \ExplSyntaxOn \cs_new_protected:cpn { @clearglobaloption } #1 { \clist_remove_all:cn { @classoptionslist } { #1 } } \ExplSyntaxOff \@clearglobaloption{chinese} \@clearglobaloption{Chinese} \providecommand{\PJLlang@mainlang}{EN} \if@PJLlang@enable@all \@PJLlang@enable@ENtrue \@PJLlang@enable@FRtrue \@PJLlang@enable@DEtrue \@PJLlang@enable@ITtrue \@PJLlang@enable@PTtrue \@PJLlang@enable@BRtrue \@PJLlang@enable@EStrue \@PJLlang@enable@CNtrue \@PJLlang@enable@TCtrue \@PJLlang@enable@JPtrue \@PJLlang@enable@RUtrue \fi \newcommand\englishABBR{EN} \newcommand\frenchABBR{FR} \newcommand\ngermanABBR{DE} \newcommand\italianABBR{IT} \newcommand\portugueseABBR{PT} \newcommand\brazilianABBR{BR} \newcommand\spanishABBR{ES} \newcommand\chineseABBR{CN} \newcommand\tchineseABBR{TC} \newcommand\japaneseABBR{JP} \newcommand\russianABBR{RU} \RequirePackage{iftex} \ifPDFTeX \RequirePackage[T1]{fontenc} \RequirePackage{inputenc} \fi \if@PJLlang@polyglossia \RequirePackage{polyglossia} \setdefaultlanguage{english} \setotherlanguage[frenchpart=false]{french} \setotherlanguage{ngerman} \setotherlanguage{spanish} \setotherlanguage{portuguese} \setotherlanguage[variant=brazilian]{portuguese} \setotherlanguage{italian} \ifPDFTeX\else \setotherlanguage{russian} \setotherlanguage{japanese} \RequirePackage{silence} \WarningFilter{polyglossia}{Asking to add empty feature to latin font(Script="CJK" to scripttag "")} \fi \else \if@PJLlang@enable@all \ifPDFTeX\else \PassOptionsToPackage{japanese,russian}{babel} \fi \PassOptionsToPackage{italian,portuguese,brazilian,spanish,es-notilde,es-noquoting,ngerman,french,english,shorthands=off}{babel} \else \PassOptionsToPackage{\PJLlang@babeloptions}{babel} \fi \PassOptionsToPackage{italian,brazilian,spanish,ngerman,french,english}{cleveref} \RequirePackage{babel} \if@PJLlang@enable@FR \frenchsetup{PartNameFull=false} \fi \fi \let\today@PJLoriginal\today \newcommand{\PJLlang@langconfig@common}{% \ifdefined\DTMtoday% \let\today\DTMtoday% \else% \let\today\today@PJLoriginal% \fi% } \newcommand{\PJLlang@langconfig@chinese}{% \def\abstractname{摘要}% \def\proofname{证明}% \def\contentsname{目录}% \def\listfigurename{插图}% \def\listtablename{表格}% \def\figurename{图}% \def\tablename{表}% \def\indexname{索引}% \def\appendixname{附录}% \def\refname{参考文献}% \def\bibname{参考文献}% \let\today\zhtoday% \renewcommand{\languagename}{chinese}% } \newcommand{\PJLlang@langconfig@tchinese}{% \def\abstractname{摘要}% \def\proofname{證明}% \def\contentsname{目錄}% \def\listfigurename{插圖}% \def\listtablename{表格}% \def\figurename{圖}% \def\tablename{表}% \def\indexname{索引}% \def\appendixname{附錄}% \def\refname{參考文獻}% \def\bibname{參考文獻}% \let\today\zhtoday% \renewcommand{\languagename}{tchinese}% } \newcommand{\PJLlang@langconfig@japanese}{% \selectlanguage{japanese}% } \newcommand{\PJLlang@langconfig@english}{% \selectlanguage{english}% } \newcommand{\PJLlang@langconfig@french}{% \selectlanguage{french}% \def\frenchpartname{Partie}% } \newcommand{\PJLlang@langconfig@german}{% \selectlanguage{ngerman}% } \newcommand{\PJLlang@langconfig@italian}{% \selectlanguage{italian}% } \newcommand{\PJLlang@langconfig@portuguese}{% \selectlanguage{portuguese}% } \newcommand{\PJLlang@langconfig@brazilian}{% \selectlanguage{brazilian}% } \newcommand{\PJLlang@langconfig@spanish}{% \selectlanguage{spanish}% } \newcommand{\PJLlang@langconfig@russian}{% \selectlanguage{russian}% } \RequirePackage{xstring} \NewDocumentCommand\AddLanguageSetting{d()m}{% \IfNoValueTF{#1}% {\gappto{\PJLlang@langconfig@common}{#2}}% {% \lowercase{\IfStrEqCase{#1}}{% {cn}{\gappto{\PJLlang@langconfig@chinese}{#2}}% {chinese}{\gappto{\PJLlang@langconfig@chinese}{#2}}% {schinese}{\gappto{\PJLlang@langconfig@chinese}{#2}}% {simplifiedchinese}{\gappto{\PJLlang@langconfig@chinese}{#2}}% {tc}{\gappto{\PJLlang@langconfig@tchinese}{#2}}% {tchinese}{\gappto{\PJLlang@langconfig@tchinese}{#2}}% {traditionalchinese}{\gappto{\PJLlang@langconfig@tchinese}{#2}}% {jp}{\gappto{\PJLlang@langconfig@japanese}{#2}}% {japanese}{\gappto{\PJLlang@langconfig@japanese}{#2}}% {en}{\gappto{\PJLlang@langconfig@english}{#2}}% {english}{\gappto{\PJLlang@langconfig@english}{#2}}% {fr}{\gappto{\PJLlang@langconfig@french}{#2}}% {french}{\gappto{\PJLlang@langconfig@french}{#2}}% {de}{\gappto{\PJLlang@langconfig@german}{#2}}% {ngerman}{\gappto{\PJLlang@langconfig@german}{#2}}% {it}{\gappto{\PJLlang@langconfig@italian}{#2}}% {italian}{\gappto{\PJLlang@langconfig@italian}{#2}}% {pt}{\gappto{\PJLlang@langconfig@portuguese}{#2}}% {portuguese}{\gappto{\PJLlang@langconfig@portuguese}{#2}}% {br}{\gappto{\PJLlang@langconfig@brazilian}{#2}}% {brazilian}{\gappto{\PJLlang@langconfig@brazilian}{#2}}% {es}{\gappto{\PJLlang@langconfig@spanish}{#2}}% {spanish}{\gappto{\PJLlang@langconfig@spanish}{#2}}% {german}{\gappto{\PJLlang@langconfig@german}{#2}}% {ru}{\gappto{\PJLlang@langconfig@russian}{#2}}% {russian}{\gappto{\PJLlang@langconfig@russian}{#2}}% }% }% } \RequirePackage{setspace} \def\PJL@config@linespacing{\setstretch{1.00}} \def\PJL@config@CJKlinespacing{\onehalfspacing} \newcommand{\PJLsetlinespacing}[1]{\renewcommand{\PJL@config@linespacing}{#1}} \newcommand{\PJLsetCJKlinespacing}[1]{\renewcommand{\PJL@config@CJKlinespacing}{#1}} \def\PJL@config@parindent{\ltx@ifpackageloaded{parskip}{}{\setlength{\parindent}{1.5em}}} \def\PJL@config@CJKparindent{\ltx@ifpackageloaded{parskip}{}{\setlength{\parindent}{2em}}} \newcommand{\PJLsetparindent}[1]{\renewcommand{\PJL@config@parindent}{\ltx@ifpackageloaded{parskip}{}{\setlength{\parindent}{#1}}}} \newcommand{\PJLsetCJKparindent}[1]{\renewcommand{\PJL@config@CJKparindent}{\ltx@ifpackageloaded{parskip}{}{\setlength{\parindent}{#1}}}} \def\PJL@config@CJK{\PJL@config@CJKlinespacing\PJL@config@CJKparindent} \def\PJL@config@Latin{\PJL@config@linespacing\PJL@config@parindent} \newcommand{\UseLanguageCORE}[1]{% \PJLlang@langconfig@common% \lowercase{\IfStrEqCase{#1}}{% {cn}{\PJL@config@CJK\PJLlang@langconfig@chinese}% {chinese}{\PJL@config@CJK\PJLlang@langconfig@chinese}% {schinese}{\PJL@config@CJK\PJLlang@langconfig@chinese}% {simplifiedchinese}{\PJL@config@CJK\PJLlang@langconfig@chinese}% {tc}{\PJL@config@CJK\PJLlang@langconfig@tchinese}% {tchinese}{\PJL@config@CJK\PJLlang@langconfig@tchinese}% {traditionalchinese}{\PJL@config@CJK\PJLlang@langconfig@tchinese}% {jp}{\PJL@config@CJK\PJLlang@langconfig@japanese}% {japanese}{\PJL@config@CJK\PJLlang@langconfig@japanese}% {en}{\PJL@config@Latin\PJLlang@langconfig@english}% {english}{\PJL@config@Latin\PJLlang@langconfig@english}% {fr}{\PJL@config@Latin\PJLlang@langconfig@french}% {french}{\PJL@config@Latin\PJLlang@langconfig@french}% {de}{\PJL@config@Latin\PJLlang@langconfig@german}% {ngerman}{\PJL@config@Latin\PJLlang@langconfig@german}% {german}{\PJL@config@Latin\PJLlang@langconfig@german}% {it}{\PJL@config@Latin\PJLlang@langconfig@italian}% {italian}{\PJL@config@Latin\PJLlang@langconfig@italian}% {pt}{\PJL@config@Latin\PJLlang@langconfig@portuguese}% {portuguese}{\PJL@config@Latin\PJLlang@langconfig@portuguese}% {br}{\PJL@config@Latin\PJLlang@langconfig@brazilian}% {brazilian}{\PJL@config@Latin\PJLlang@langconfig@brazilian}% {es}{\PJL@config@Latin\PJLlang@langconfig@spanish}% {spanish}{\PJL@config@Latin\PJLlang@langconfig@spanish}% {ru}{\PJL@config@Latin\PJLlang@langconfig@russian}% {russian}{\PJL@config@Latin\PJLlang@langconfig@russian}% }% } \newcommand{\UseLanguage}[1]{% \ifx\@onlypreamble\@notprerr% \UseLanguageCORE{#1}% \else% \AfterEndPreamble{\UseLanguageCORE{#1}}% \fi% } \newcommand{\UseOtherLanguage}[2]{% \begingroup% \PJLlang@langconfig@common% \lowercase{\IfStrEqCase{#1}}{% {cn}{\PJLlang@langconfig@chinese}% {chinese}{\PJLlang@langconfig@chinese}% {schinese}{\PJLlang@langconfig@chinese}% {simplifiedchinese}{\PJLlang@langconfig@chinese}% {tc}{\PJLlang@langconfig@tchinese}% {tchinese}{\PJLlang@langconfig@tchinese}% {traditionalchinese}{\PJLlang@langconfig@tchinese}% {jp}{\PJLlang@langconfig@japanese}% {japanese}{\PJLlang@langconfig@japanese}% {en}{\PJLlang@langconfig@english}% {english}{\PJLlang@langconfig@english}% {fr}{\PJLlang@langconfig@french}% {french}{\PJLlang@langconfig@french}% {de}{\PJLlang@langconfig@german}% {ngerman}{\PJLlang@langconfig@german}% {german}{\PJLlang@langconfig@german}% {it}{\PJLlang@langconfig@italian}% {italian}{\PJLlang@langconfig@italian}% {pt}{\PJLlang@langconfig@portuguese}% {portuguese}{\PJLlang@langconfig@portuguese}% {br}{\PJLlang@langconfig@brazilian}% {brazilian}{\PJLlang@langconfig@brazilian}% {es}{\PJLlang@langconfig@spanish}% {spanish}{\PJLlang@langconfig@spanish}% {ru}{\PJLlang@langconfig@russian}% {russian}{\PJLlang@langconfig@russian}% }% #2% \endgroup% } \IfStrEqCase{\PJLlang@mainlang}{% {EN}{\UseLanguage{EN}}% {FR}{\UseLanguage{FR}}% {DE}{\UseLanguage{DE}}% {IT}{\UseLanguage{IT}}% {PT}{\UseLanguage{PT}}% {BR}{\UseLanguage{BR}}% {ES}{\UseLanguage{ES}}% {CN}{\UseLanguage{CN}}% {TC}{\UseLanguage{TC}}% {JP}{\UseLanguage{JP}}% {RU}{\UseLanguage{RU}}% } \endinput %% %% End of file `PJLlang.sty'.