summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/projlib/ProjLib.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/projlib/ProjLib.dtx')
-rw-r--r--macros/latex/contrib/projlib/ProjLib.dtx1252
1 files changed, 1252 insertions, 0 deletions
diff --git a/macros/latex/contrib/projlib/ProjLib.dtx b/macros/latex/contrib/projlib/ProjLib.dtx
new file mode 100644
index 0000000000..42f43b7ea1
--- /dev/null
+++ b/macros/latex/contrib/projlib/ProjLib.dtx
@@ -0,0 +1,1252 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2021 by Jinwen XU
+% -------------------------------
+%
+% This file 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
+%
+% \fi
+%
+%<*driver>
+\ProvidesFile{ProjLib.dtx}
+%</driver>
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+%
+%<*PLamssim>
+\ProvidesPackage{PLamssim}
+ [2021/05/12 Simulate some features of amsart]
+%</PLamssim>
+%
+%<*PLauthor>
+\ProvidesPackage{PLauthor}
+ [2021/05/12 Enhanced author information block]
+%</PLauthor>
+%
+%<*PLdate>
+\ProvidesPackage{PLdate}
+ [2021/05/12 Convert yyyy-mm-dd to normal datetime format]
+%</PLdate>
+%
+%<*PLdraft>
+\ProvidesPackage{PLdraft}
+ [2021/05/12 Some useful macros for the draft stage]
+%</PLdraft>
+%
+%<*PLlang>
+\ProvidesPackage{PLlang}
+ [2021/05/12 Multi-language configuration]
+%</PLlang>
+%
+%<*PLlogo>
+\ProvidesPackage{PLlogo}
+ [2021/05/12 The ProjLib logo]
+%</PLlogo>
+%
+%<*PLpaper>
+\ProvidesPackage{PLpaper}
+ [2021/05/12 Paper style configuration]
+%</PLpaper>
+%
+%<*PLthm>
+\ProvidesPackage{PLthm}
+ [2021/05/12 Theorem setup and configuration]
+%</PLthm>
+%
+%<*PLtoolkit>
+\ProvidesPackage{PLtoolkit}
+ [2021/05/12 Collective interface of ProjLib Toolkit]
+%</PLtoolkit>
+%
+\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
+%
+%<*PLamssim>
+\ifdefined\subjclass\endinput\fi
+
+\RequirePackage{PLauthor}
+\RequirePackage{calc}
+
+\providecommand{\conditionalbfseries}{\bfseries}
+
+% keywords
+\def\keywordsnameEN{\textsc{Key words and phrases}}
+\def\keywordsnameFR{\textsc{Mots et phrases clés}}
+\def\keywordsnameDE{\textsc{Schlüsselwörter und Phrasen}}
+\def\keywordsnameCN{关键词}
+\def\keywordsnameTC{關鍵詞}
+\def\keywordsnameJP{キーワード}
+\def\keywordsnameRU{Ключевые слова и фразы}
+
+\ifdefined\keywords\else
+ \def\PL@keywords{}
+ \newcommand*{\keywords}[1]{\def\PL@keywords{#1}}
+\fi
+
+% dedicatory
+\ifdefined\dedicatory\else
+ \def\PL@dedicatory{}
+ \newcommand*{\dedicatory}[1]{\def\PL@dedicatory{#1}}
+\fi
+
+% \thanks: behave like article-style when in \author, and ams-style (no marker) when outside
+\AtEndPreamble{
+% In case that \@author changes again
+\let\footnotemark@PLoriginal\footnotemark%
+\let\footnotemark\relax%
+\let\thanks@PLoriginal\thanks%
+\newlength\PL@starlength
+\setlength{\PL@starlength}{\widthof{*}}
+\newcommand*{\PL@prethanks}[1]{\thanks@PLoriginal{\hspace*{-\PL@starlength}#1}}
+% \renewcommand*{\thanks}[1]{%
+% \ifx#1\@empty\else%
+% \thanks@PLoriginal{\hspace*{-\PL@starlength}#1}%
+% \fi}
+\renewcommand*{\thanks}[1]{%
+ \ifx#1\@empty\else%
+ \apptocmd{\@title}{%
+ \thanks@PLoriginal{\hspace*{-\PL@starlength}#1}%
+ }{}{\FAIL}%
+ \fi}
+\let\author@PLoriginal\author
+\renewcommand{\author}[1]{%
+ \author@PLoriginal{%
+ \let\footnotemark\footnotemark@PLoriginal%
+ \let\thanks\thanks@PLoriginal%
+ #1%
+ \let\footnotemark\relax%
+ }%
+}
+% \pretocmd{\@author}{\let\footnotemark\footnotemark@PLoriginal\let\thanks\thanks@PLoriginal}{}{\FAIL}
+% \apptocmd{\@author}{\let\footnotemark\relax}{}{\FAIL}
+}
+
+%% Modify abstract to allow it before maketitle
+\let\abstract@PLoriginal\abstract%
+\let\endabstract@PLoriginal\endabstract%
+\newif\if@PLamssim@maketitle\@PLamssim@maketitlefalse
+\newif\if@PLamssim@absbefore\@PLamssim@absbeforefalse
+\RequirePackage{fancyvrb}
+% Taken from https://tex.stackexchange.com/a/596328
+% define the same as \protected@write, but with \immediate
+\providecommand*\protected@iwrite[3]{%
+ \begingroup
+ \let\thepage\relax
+ #2%
+ \let\protect\@unexpandable@protect
+ \edef\reserved@a{\immediate\write#1{#3}}\reserved@a
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi
+}
+\patchcmd{\FVB@VerbatimOut}
+ {\immediate\write\FV@OutFile}
+ {\protected@iwrite\FV@OutFile{}}
+ {}{}
+%
+\renewenvironment{abstract}{%
+ \VerbatimOut{\jobname.plabs}%
+}{
+ \endVerbatimOut%
+ \if@PLamssim@maketitle%
+ \begin{abstract@PLoriginal}%
+ \input{\jobname.plabs}%
+ \end{abstract@PLoriginal}%
+ % \ifx\PL@keywords\@empty\else%
+ % \par\smallskip\noindent{\conditionalbfseries\csname keywordsname\csname\languagename ABBR\endcsname\endcsname.}~\PL@keywords%
+ % \fi%
+ \else%
+ \global\@PLamssim@absbeforetrue%
+ \fi%
+}
+
+%% Modify maketitle
+\AtEndPreamble{%
+% Add dedicatory to @maketitle
+\patchcmd{\@maketitle}{\@date}{%
+ \ifx\@date\@empty\vspace{-2\baselineskip}%
+ \else\@date\fi%
+ \ifx\PL@dedicatory\@empty\else%
+ \par\vspace{-\parskip}\bigskip%
+ {\itshape\PL@dedicatory}\fi}
+ {}{\FAIL}
+% Add keywords to maketitle
+\pretocmd{\maketitle}{%
+ \ifx\PL@keywords\@empty\else%
+ \PL@prethanks{{\conditionalbfseries%
+ \csname keywordsname\csname\languagename ABBR\endcsname\endcsname.}%
+ ~\PL@keywords}%
+ \fi}{}{\FAIL}
+% Add abstract to maketitle
+\apptocmd{\maketitle}{%
+ \if@PLamssim@absbefore%
+ \begin{abstract@PLoriginal}%
+ \input{\jobname.plabs}%
+ % \ifx\PL@keywords\@empty\else%
+ % \par\smallskip\noindent{\conditionalbfseries\csname keywordsname\csname\languagename ABBR\endcsname\endcsname.}~\PL@keywords%
+ % \fi%
+ \end{abstract@PLoriginal}%
+ \fi%
+ \global\let\address\relax
+ \global\let\curraddr\relax
+ \global\let\email\relax
+ \global\let\dedicatory\relax
+ \global\let\keywords\relax
+ \global\@PLamssim@maketitletrue
+}{}{\FAIL}
+% Disbale the \newpage in maketitle
+% \let\maketitle@PLoriginal=\maketitle
+% \renewcommand*{\maketitle}{{\let\newpage\relax\maketitle@PLoriginal}}
+}
+
+\newcommand*\subjclass[2][2020]{%
+ \def\@subjclass{#2}%
+ \@ifundefined{subjclassname@#1}{%
+ \ClassWarning{\@currname}{Unknown edition (#1) of Mathematics
+ Subject Classification; using '2020'}%
+ \expandafter\let\expandafter\subjclassname\csname subjclassname@2020\endcsname
+ }{%
+ \expandafter\let\expandafter\subjclassname\csname subjclassname@#1\endcsname
+ }%
+ \PL@prethanks{{\itshape\subjclassname.}\enspace\@subjclass{}.}
+}
+\@namedef{subjclassname@1991}{%
+ \textup{1991} Mathematics Subject Classification}
+\@namedef{subjclassname@2000}{%
+ \textup{2000} Mathematics Subject Classification}
+\@namedef{subjclassname@2010}{%
+ \textup{2010} Mathematics Subject Classification}
+\@namedef{subjclassname@2020}{%
+ \textup{2020} Mathematics Subject Classification}
+%</PLamssim>
+%
+%<*PLauthor>
+\ifdefined\subjclass\endinput\fi
+
+\RequirePackage{PLlang}
+
+%%================================
+%% Font and style
+%%================================
+\def\PLauthor@font@author{\normalsize\normalfont\scshape}
+\def\PLauthor@font@address{\small\normalfont\itshape}
+\def\PLauthor@font@curraddr{\small\normalfont\itshape}
+\def\PLauthor@font@email{\small\normalfont\ttfamily}
+
+%%================================
+%% Lengths
+%%================================
+% Space between author and address
+\newlength{\PLauthor@length@innersep}
+\setlength{\PLauthor@length@innersep}{.3\baselineskip}
+
+% Space between different author blocks
+\newlength{\PLauthor@length@sep}
+\setlength{\PLauthor@length@sep}{.5\baselineskip}
+
+% Space between affiliation and date
+\newlength{\PLauthor@length@aftersep}
+\setlength{\PLauthor@length@aftersep}{.3\baselineskip}
+
+%%================================
+%% The macros
+%%================================
+\newif\if@PLauthor@affilon
+\renewcommand*{\author}[1]{%
+ \gappto\@author{\phantom{A}\\[-\baselineskip]%
+ \vspace{\PLauthor@length@sep}%
+ \PLauthor@font@author{#1}\\\phantom{}
+ \@PLauthor@affilonfalse}}
+\providecommand*{\address}[1]{%
+ \gappto\@author{\phantom{A}\\[-\baselineskip]%
+ \if@PLauthor@affilon\else%
+ \vspace{\PLauthor@length@innersep}%
+ \fi%
+ \@PLauthor@affilontrue%
+ \PLauthor@font@address{#1}\\\phantom{}}%
+}
+\providecommand*{\curraddr}[1]{%
+ \gappto\@author{\phantom{A}\\[-\baselineskip]%
+ \if@PLauthor@affilon\else%
+ \vspace{\PLauthor@length@innersep}%
+ \fi%
+ \@PLauthor@affilontrue%
+ \PLauthor@font@curraddr{#1}\\\phantom{}}%
+}
+\providecommand*{\email}[1]{%
+ \gappto\@author{\phantom{A}\\[-\baselineskip]%
+ \if@PLauthor@affilon\else%
+ \vspace{\PLauthor@length@innersep}%
+ \fi%
+ \@PLauthor@affilontrue%
+ \PLauthor@font@email{#1}\\\phantom{}}%
+}
+
+%%================================
+%% Adjustment
+%%================================
+\patchcmd{\@maketitle}{\begin{tabular}[t]{c}}{}{}{}
+\patchcmd{\@maketitle}{\end{tabular}}{}{}{}
+\def\@author{} % Remove "No \author given."
+\pretocmd{\@maketitle}{%
+ \pretocmd{\@author}{\vspace{-\PLauthor@length@sep}}{}{\FAIL}%
+ \apptocmd{\@author}{%
+% Fix the space caused by `\\\phantom{}`
+ \vspace{-\baselineskip}%
+ \if@PLauthor@affilon%
+ \vspace{\PLauthor@length@aftersep}%
+ \fi%
+ }{}{\FAIL}%
+}{}{\FAIL}
+%</PLauthor>
+%
+%<*PLdate>
+\SetupKeyvalOptions{
+ family = @PLdate,
+ prefix = @PLdate@,
+}
+\DeclareBoolOption[false]{draft}
+\DeclareBoolOption[false]{fast}
+\ProcessKeyvalOptions*\relax
+\if@PLdate@draft
+ \@PLdate@fasttrue
+\fi
+\if@PLdate@fast\let\PLdate\relax\endinput\fi
+
+\RequirePackage{PLlang}
+
+% The following line is for "authblk"
+\robustify\@latex@warning@no@line
+\RequirePackage{silence}
+\WarningFilter*{datetime2}{Date-Time Language Module}
+\PassOptionsToPackage{fr-FR,en-US}{datetime2}
+\RequirePackage{datetime2}
+\RequirePackage{zhnumber}
+
+\let\@DTMdate@PLoriginal\@DTMdate
+\gappto{\PLlang@langconfig@common}{%
+ \let\@DTMdate\@DTMdate@PLoriginal%
+}
+\gappto{\PLlang@langconfig@chinese}{%
+ \renewcommand*{\@DTMdate}[1]{%
+ \expandafter\@dtm@parsedate#1\@dtm@endparsedate%
+ \zhdate{\@dtm@year/\@dtm@month/\@dtm@day}%
+ }%
+}
+\gappto{\PLlang@langconfig@tchinese}{%
+ \renewcommand*{\@DTMdate}[1]{%
+ \expandafter\@dtm@parsedate#1\@dtm@endparsedate%
+ \zhdate{\@dtm@year/\@dtm@month/\@dtm@day}%
+ }%
+}
+\gappto{\PLlang@langconfig@japanese}{%
+ \renewcommand*{\@DTMdate}[1]{%
+ \expandafter\@dtm@parsedate#1\@dtm@endparsedate%
+ \zhdate{\@dtm@year/\@dtm@month/\@dtm@day}%
+ }%
+}
+\providecommand*{\PLdate}[1]{\DTMdate{#1}}
+%</PLdate>
+%
+%<*PLdraft>
+\SetupKeyvalOptions{
+ family = @PLdraft,
+ prefix = @PLdraft@,
+}
+\DeclareBoolOption[false]{draft}
+\DeclareBoolOption[false]{fast}
+\ProcessKeyvalOptions*\relax
+\if@PLdraft@draft
+ \@PLdraft@fasttrue
+\fi
+
+\RequirePackage{PLlang}
+\RequirePackage{xcolor}
+
+\def\dnfFont{\ttfamily}
+\def\needgraphFont{\ttfamily}
+
+\def\dnfTextEN{To be finished}
+\def\needgraphTextEN{A graph is needed here}
+\def\dnfTextFR{Pas encore fini}
+\def\needgraphTextFR{Il manque une image ici}
+\def\dnfTextDE{Nicht beendet}
+\def\needgraphTextDE{Benötigen Sie ein Bild}
+\def\dnfTextCN{这里尚未完成}
+\def\needgraphTextCN{这里需要一张图片}
+\def\dnfTextTC{這裡尚未完成}
+\def\needgraphTextTC{這裡需要一張圖片}
+\def\dnfTextJP{終わってない}
+\def\needgraphTextJP{まだ画像が必要です}
+\def\dnfTextRU{Не закончен}
+\def\needgraphTextRU{Еще нужна картинка}
+
+\definecolor{dnfColor}{RGB}{21,122,20}
+\definecolor{needgraphColor}{RGB}{70,130,180}
+
+\if@PLdraft@fast
+ \newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
+ \setlength{\fboxsep}{1.5pt}%
+ \setlength{\fboxrule}{1.2pt}%
+ \fbox{#2}}}
+\else
+ \PassOptionsToPackage{many}{tcolorbox}
+ \RequirePackage{tcolorbox}
+ \newtcbox{\plainBox}[1][-paper]{enhanced jigsaw,%
+ on line, arc = 1.2pt, outer arc = 1pt,breakable,%
+ colframe = #1,colupper=#1,opacityback=0,%
+ boxsep = 1pt,boxrule = 1.2pt,%
+ left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,%
+ }
+\fi
+
+\newcounter{dnfcnt}
+\newcounter{needgraphcnt}
+
+\NewDocumentCommand{\dnf}{d<>}{%
+ \noindent\plainBox[dnfColor]%
+ {\normalfont\dnfFont\bfseries\small%
+ \csname dnfText\csname\languagename ABBR\endcsname\endcsname%
+ \stepcounter{dnfcnt}~\#\thednfcnt%
+ \IfNoValueF{#1}{\,: #1}}%
+}
+\NewDocumentCommand{\needgraph}{d<>}{%
+ \begin{center}%
+ \plainBox[needgraphColor]%
+ {\normalfont\needgraphFont\bfseries\small%
+ \csname needgraphText\csname\languagename ABBR\endcsname\endcsname%
+ \stepcounter{needgraphcnt}~\#\theneedgraphcnt%
+ \IfNoValueF{#1}{\,: #1}}%
+ \end{center}%
+}
+%</PLdraft>
+%
+%<*PLlang>
+\SetupKeyvalOptions{%
+ family = @PLlang,
+ prefix = @PLlang@
+}
+\DeclareBoolOption[false]{polyglossia}
+\ProcessKeyvalOptions*\relax
+
+\newcommand\englishABBR{EN}
+\newcommand\frenchABBR{FR}
+\newcommand\ngermanABBR{DE}
+\newcommand\chineseABBR{CN}
+\newcommand\tchineseABBR{TC}
+\newcommand\japaneseABBR{JP}
+\newcommand\russianABBR{RU}
+
+\RequirePackage{iftex}
+\ifPDFTeX
+\RequirePackage[T1]{fontenc}
+\RequirePackage{inputenc}
+\fi
+
+\if@PLlang@polyglossia
+ \RequirePackage{polyglossia}
+ \setdefaultlanguage{english}
+ \setotherlanguage[frenchpart=false]{french}
+ \setotherlanguage{ngerman}
+ \setotherlanguage{spanish}
+ \setotherlanguage{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
+ \ifPDFTeX\else
+ \PassOptionsToPackage{japanese,russian}{babel}
+ \fi
+ \PassOptionsToPackage{italian,portuguese,brazilian,spanish.noquoting,ngerman,french,english,shorthands=off}{babel}
+ \PassOptionsToPackage{italian,brazilian,spanish,ngerman,french,english}{cleveref}
+ \RequirePackage{babel}
+ \frenchsetup{PartNameFull=false}
+\fi
+%
+\let\today@PLoriginal\today
+\newcommand{\PLlang@langconfig@common}{%
+ \ifdefined\DTMtoday%
+ \let\today\DTMtoday%
+ \else%
+ \let\today\today@PLoriginal%
+ \fi%
+}
+\newcommand{\PLlang@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{\PLlang@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{\PLlang@langconfig@japanese}{%
+ \selectlanguage{japanese}%
+}
+\newcommand{\PLlang@langconfig@english}{%
+ \selectlanguage{english}%
+}
+\newcommand{\PLlang@langconfig@french}{%
+ \selectlanguage{french}%
+% The line below is currently only needed for 'babel', but also works with 'polyglossia'
+ \def\frenchpartname{Partie}%
+}
+\newcommand{\PLlang@langconfig@german}{%
+ \selectlanguage{ngerman}%
+}
+\newcommand{\PLlang@langconfig@russian}{%
+ \selectlanguage{russian}%
+}
+\NewDocumentCommand\AddLanguageSetting{d()m}{%
+\IfNoValueTF{#1}%
+ {\gappto{\PLlang@langconfig@common}{#2}}%
+ {%
+ \ifstrequal{#1}{chinese}{\gappto{\PLlang@langconfig@chinese}{#2}}{}%
+ \ifstrequal{#1}{Chinese}{\gappto{\PLlang@langconfig@chinese}{#2}}{}%
+ \ifstrequal{#1}{schinese}{\gappto{\PLlang@langconfig@chinese}{#2}}{}%
+ \ifstrequal{#1}{SChinese}{\gappto{\PLlang@langconfig@chinese}{#2}}{}%
+ \ifstrequal{#1}{simplifiedchinese}{\gappto{\PLlang@langconfig@chinese}{#2}}{}%
+ \ifstrequal{#1}{SimplifiedChinese}{\gappto{\PLlang@langconfig@chinese}{#2}}{}%
+ \ifstrequal{#1}{tchinese}{\gappto{\PLlang@langconfig@tchinese}{#2}}{}%
+ \ifstrequal{#1}{TChinese}{\gappto{\PLlang@langconfig@tchinese}{#2}}{}%
+ \ifstrequal{#1}{traditionalchinese}{\gappto{\PLlang@langconfig@tchinese}{#2}}{}%
+ \ifstrequal{#1}{TraditionalChinese}{\gappto{\PLlang@langconfig@tchinese}{#2}}{}%
+ \ifstrequal{#1}{japanese}{\gappto{\PLlang@langconfig@japanese}{#2}}{}%
+ \ifstrequal{#1}{Japanese}{\gappto{\PLlang@langconfig@japanese}{#2}}{}%
+ \ifstrequal{#1}{english}{\gappto{\PLlang@langconfig@english}{#2}}{}%
+ \ifstrequal{#1}{English}{\gappto{\PLlang@langconfig@english}{#2}}{}%
+ \ifstrequal{#1}{french}{\gappto{\PLlang@langconfig@french}{#2}}{}%
+ \ifstrequal{#1}{French}{\gappto{\PLlang@langconfig@french}{#2}}{}%
+ \ifstrequal{#1}{ngerman}{\gappto{\PLlang@langconfig@german}{#2}}{}%
+ \ifstrequal{#1}{german}{\gappto{\PLlang@langconfig@german}{#2}}{}%
+ \ifstrequal{#1}{German}{\gappto{\PLlang@langconfig@german}{#2}}{}%
+ \ifstrequal{#1}{russian}{\gappto{\PLlang@langconfig@russian}{#2}}{}%
+ \ifstrequal{#1}{Russian}{\gappto{\PLlang@langconfig@russian}{#2}}{}%
+ }%
+}
+
+\RequirePackage{setspace}
+%
+\def\PL@config@linespacing{\setstretch{1.00}}
+\def\PL@config@CJKlinespacing{\onehalfspacing}
+\newcommand{\PLsetlinespacing}[1]{\renewcommand{\PL@config@linespacing}{#1}}
+\newcommand{\PLsetCJKlinespacing}[1]{\renewcommand{\PL@config@CJKlinespacing}{#1}}
+%
+\newcommand{\UseLanguageCORE}[1]{%
+ \PLlang@langconfig@common%
+ \ifstrequal{#1}{chinese}{\PL@config@CJKlinespacing\PLlang@langconfig@chinese}{}%
+ \ifstrequal{#1}{Chinese}{\PL@config@CJKlinespacing\PLlang@langconfig@chinese}{}%
+ \ifstrequal{#1}{schinese}{\PL@config@CJKlinespacing\PLlang@langconfig@chinese}{}%
+ \ifstrequal{#1}{SChinese}{\PL@config@CJKlinespacing\PLlang@langconfig@chinese}{}%
+ \ifstrequal{#1}{simplifiedchinese}{\PL@config@CJKlinespacing\PLlang@langconfig@chinese}{}%
+ \ifstrequal{#1}{SimplifiedChinese}{\PL@config@CJKlinespacing\PLlang@langconfig@chinese}{}%
+ \ifstrequal{#1}{tchinese}{\PL@config@CJKlinespacing\PLlang@langconfig@tchinese}{}%
+ \ifstrequal{#1}{TChinese}{\PL@config@CJKlinespacing\PLlang@langconfig@tchinese}{}%
+ \ifstrequal{#1}{traditionalchinese}{\PL@config@CJKlinespacing\PLlang@langconfig@tchinese}{}%
+ \ifstrequal{#1}{TraditionalChinese}{\PL@config@CJKlinespacing\PLlang@langconfig@tchinese}{}%
+ \ifstrequal{#1}{japanese}{\PL@config@CJKlinespacing\PLlang@langconfig@japanese}{}%
+ \ifstrequal{#1}{Japanese}{\PL@config@CJKlinespacing\PLlang@langconfig@japanese}{}%
+ \ifstrequal{#1}{english}{\PL@config@linespacing\PLlang@langconfig@english}{}%
+ \ifstrequal{#1}{English}{\PL@config@linespacing\PLlang@langconfig@english}{}%
+ \ifstrequal{#1}{french}{\PL@config@linespacing\PLlang@langconfig@french}{}%
+ \ifstrequal{#1}{French}{\PL@config@linespacing\PLlang@langconfig@french}{}%
+ \ifstrequal{#1}{ngerman}{\PL@config@linespacing\PLlang@langconfig@german}{}%
+ \ifstrequal{#1}{german}{\PL@config@linespacing\PLlang@langconfig@german}{}%
+ \ifstrequal{#1}{German}{\PL@config@linespacing\PLlang@langconfig@german}{}%
+ \ifstrequal{#1}{russian}{\PL@config@linespacing\PLlang@langconfig@russian}{}%
+ \ifstrequal{#1}{Russian}{\PL@config@linespacing\PLlang@langconfig@russian}{}%
+}
+\newcommand{\UseLanguage}[1]{%
+ \ifx\@onlypreamble\@notprerr%
+ \UseLanguageCORE{#1}%
+ \else%
+ \AfterEndPreamble{\UseLanguageCORE{#1}}%
+ \fi%
+}
+\newcommand{\UseOtherLanguage}[2]{%
+\begingroup%
+ \PLlang@langconfig@common%
+ \ifstrequal{#1}{chinese}{\PLlang@langconfig@chinese}{}%
+ \ifstrequal{#1}{Chinese}{\PLlang@langconfig@chinese}{}%
+ \ifstrequal{#1}{schinese}{\PLlang@langconfig@chinese}{}%
+ \ifstrequal{#1}{SChinese}{\PLlang@langconfig@chinese}{}%
+ \ifstrequal{#1}{simplifiedchinese}{\PLlang@langconfig@chinese}{}%
+ \ifstrequal{#1}{SimplifiedChinese}{\PLlang@langconfig@chinese}{}%
+ \ifstrequal{#1}{tchinese}{\PLlang@langconfig@tchinese}{}%
+ \ifstrequal{#1}{TChinese}{\PLlang@langconfig@tchinese}{}%
+ \ifstrequal{#1}{traditionalchinese}{\PLlang@langconfig@tchinese}{}%
+ \ifstrequal{#1}{TraditionalChinese}{\PLlang@langconfig@tchinese}{}%
+ \ifstrequal{#1}{japanese}{\PLlang@langconfig@japanese}{}%
+ \ifstrequal{#1}{Japanese}{\PLlang@langconfig@japanese}{}%
+ \ifstrequal{#1}{english}{\PLlang@langconfig@english}{}%
+ \ifstrequal{#1}{English}{\PLlang@langconfig@english}{}%
+ \ifstrequal{#1}{french}{\PLlang@langconfig@french}{}%
+ \ifstrequal{#1}{French}{\PLlang@langconfig@french}{}%
+ \ifstrequal{#1}{ngerman}{\PLlang@langconfig@german}{}%
+ \ifstrequal{#1}{german}{\PLlang@langconfig@german}{}%
+ \ifstrequal{#1}{German}{\PLlang@langconfig@german}{}%
+ \ifstrequal{#1}{russian}{\PLlang@langconfig@russian}{}%
+ \ifstrequal{#1}{Russian}{\PLlang@langconfig@russian}{}%
+ #2%
+\endgroup%
+}
+
+\UseLanguage{English}
+%</PLlang>
+%
+%<*PLlogo>
+\SetupKeyvalOptions{
+ family = @PLlogo,
+ prefix = @PLlogo@,
+}
+\DeclareBoolOption[false]{draft}
+\DeclareBoolOption[false]{fast}
+\ProcessKeyvalOptions*\relax
+\if@PLlogo@draft
+ \@PLlogo@fasttrue
+\fi
+\if@PLlogo@fast\def\ProjLib{{\normalfont ProjLib}}\endinput\fi
+
+\RequirePackage{xcolor}
+\RequirePackage{graphicx}
+\RequirePackage{iftex}
+% \ifPDFTeX
+% \RequirePackage{fontenc}
+% \newcommand{\PLlogo@font}{\fontfamily{LinuxBiolinumT-TLF}\selectfont}
+% \else
+% \RequirePackage{fontspec}
+% \newcommand{\PLlogo@font}{\fontspec{LinBiolinum_R.otf}\selectfont}
+% \fi
+\ifdefined\fontspec
+ \newcommand{\PLlogo@font}{\normalfont\fontspec{LinBiolinum_R.otf}\selectfont}
+\else
+ \PassOptionsToPackage{T1}{fontenc}
+ \RequirePackage{fontenc}
+ \newcommand{\PLlogo@font}{\normalfont\fontfamily{LinuxBiolinumT-TLF}\selectfont}
+\fi
+% \DeclareSymbolFont{PLupright}{OT1}{zplm}{b}{n}
+\DeclareSymbolFont{PLupright}{U}{zeur}{b}{n}
+\DeclareMathSymbol{\PLSigma}{\mathalpha}{PLupright}{"06}
+
+\providecommand*{\ProjLib}{%
+\begingroup%
+\PLlogo@font%
+\color{blue!60!cyan}P%
+\color{blue!45!cyan}r%
+\color{blue!30!cyan}o%
+\color{green!70!black}\j%
+% \kern-0.235em\raisebox{0.57em}{\scalebox{0.3}{\rotatebox{-10}{$\PLSigma$}}}%
+% \kern-0.01em%
+\kern-0.266em\raisebox{0.56em}{\scalebox{0.4}{\rotatebox{-10}{$\PLSigma$}}}%
+\kern-0.065em%
+\color{red!20!yellow}L%
+\color{red!40!yellow}i%
+\color{red!60!yellow}b%
+\endgroup%
+}
+
+\providecommand*{\ProjLibText}{%
+\begingroup%
+\PLlogo@font%
+\color{blue!60!cyan}P%
+\color{blue!45!cyan}r%
+\color{blue!30!cyan}o%
+\color{green!70!black}j%
+\color{red!20!yellow}L%
+\color{red!40!yellow}i%
+\color{red!60!yellow}b%
+\endgroup%
+}
+%</PLlogo>
+%
+%<*PLpaper>
+\RequirePackage{ifthen}
+
+\SetupKeyvalOptions{%
+ family = @PLpaper,
+ prefix = @PLpaper@,
+ setkeys=\kvsetkeys
+}
+
+\DeclareStringOption[normal]{paperstyle}
+\DeclareVoidOption{yellowpaper}{\kvsetkeys{@PLpaper}{paperstyle=yellow}}
+\DeclareVoidOption{darkpaper}{\kvsetkeys{@PLpaper}{paperstyle=dark}}
+\DeclareVoidOption{nordpaper}{\kvsetkeys{@PLpaper}{paperstyle=nord}}
+\DeclareBoolOption[false]{preview}
+
+\ProcessKeyvalOptions*\relax
+
+%%================================
+%% Preview mode
+%%================================
+\ifdefined\PLnoPreview\else%
+ \if@PLpaper@preview%
+ \RequirePackage{calc}
+ \AtEndPreamble{%
+ \setlength{\paperwidth}{\textwidth*\real{1.05}}%
+ \setlength{\paperheight}{%
+ (\textheight+\headheight+\headsep+\footskip)*\real{1.05}}%
+ \setlength{\oddsidemargin}{(\paperwidth-\textwidth)/2-1in}%
+ \setlength{\evensidemargin}{(\paperwidth-\textwidth)/2-1in}%
+ \setlength{\topmargin}{(\paperheight-\textheight-\headheight-\headsep-\footskip)/2- 1in}%
+ }
+ \fi
+\fi
+
+%%================================
+%% Paper color
+%%================================
+\RequirePackage{xcolor}
+\definecolor{paper}{RGB}{255,255,255}
+\definecolor{maintext}{RGB}{0,0,0}
+
+\ifthenelse{\equal{\@PLpaper@paperstyle}{yellow}}
+{
+ \definecolor{paper}{RGB}{247,246,233}
+}
+{\relax}
+
+\ifthenelse{\equal{\@PLpaper@paperstyle}{dark}}
+{
+ \definecolor{paper}{RGB}{30,30,30}
+ \definecolor{maintext}{RGB}{207,207,207}
+}
+{\relax}
+
+\ifthenelse{\equal{\@PLpaper@paperstyle}{nord}}
+{
+ \definecolor{paper}{RGB}{46,52,64}
+ \definecolor{maintext}{RGB}{214,220,230}
+}
+{\relax}
+
+\newcommand{\PLglobalcolor}[1]{%
+ \color{#1}\global\let\default@color\current@color
+}
+
+\pagecolor{paper}
+\PLglobalcolor{maintext}
+\ifdefined\tcbset%
+ \tcbset{colupper=maintext,collower=maintext}
+\fi
+%</PLpaper>
+%
+%<*PLthm>
+\SetupKeyvalOptions{%
+ family = @PLthm,
+ prefix = @PLthm@
+}
+\DeclareBoolOption[false]{nothms}
+\ProcessKeyvalOptions*\relax
+
+\RequirePackage{PLlang}
+\RequirePackage{amsmath,amsthm}
+\RequirePackage{aliascnt}
+\PassOptionsToPackage{nameinlink}{cleveref}
+\RequirePackage{cleveref}
+
+% Macro for creating theorems
+\RequirePackage{xstring}
+\newcommand\PassFirstToSecond[2]{#2{#1}}%
+\NewDocumentCommand{\CreateTheorem}{sm}{%
+ \begingroup
+ \protected@edef\temp{#2}%
+ \expandafter\IfEndWith\expandafter{\temp}{*}{%
+ \expandafter\StrGobbleRight\expandafter{\temp}{1}[\temp]%
+ \PassFirstToSecond{*}%
+ }{%
+ \PassFirstToSecond{}%
+ }%
+ {\expandafter\PassFirstToSecond%
+ \expandafter{\temp}{\endgroup\InnerCreateTheorem{#1}}}%
+}%
+\NewDocumentCommand{\InnerCreateTheorem}{mmmod<>d()}{%
+% #1 = star or no star
+% #2 = name of environment
+% #3 = emptiness or star to append to name of environment
+% #4 = numbered like
+% #5 = numbered within
+% #6 = existed environment
+ \IfBooleanTF{#1}{%
+ \IfValueTF{#4}
+ {\@firstoftwo}
+ {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}%
+ }{%
+ \IfValueTF{#4}
+ {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{
+ \@secondoftwo}
+ }%
+ {%
+ \GenericError{}%
+ {\string\CreateTheorem\space syntax error\on@line}{%
+ You cannot call the starred variant with optional argument,\MessageBreak
+ nor call the unstarred variant with several optional arguments.}%
+ {}%
+ }{%
+ \IfValueTF{#6}{%
+ \IfBooleanTF{#1}{%
+ \ifcsmacro{#2#3}%
+ {\renewenvironment{#2#3}{\begin{#6*}}{\end{#6*}}}%
+ {\newenvironment{#2#3}{\begin{#6*}}{\end{#6*}}}%
+ }{%
+ \ifcsmacro{#2#3}%
+ {\renewenvironment{#2#3}{\begin{#6}}{\end{#6}}}%
+ {\newenvironment{#2#3}{\begin{#6}}{\end{#6}}}%
+ }
+ }{%
+ \IfBooleanTF{#1}{%
+ \newtheorem*{#2EN#3}{\csname#2nameEN\endcsname}
+ \newtheorem*{#2FR#3}{\csname#2nameFR\endcsname}
+ \newtheorem*{#2DE#3}{\csname#2nameDE\endcsname}
+ \newtheorem*{#2CN#3}{\csname#2nameCN\endcsname}
+ \newtheorem*{#2TC#3}{\csname#2nameTC\endcsname}
+ \newtheorem*{#2JP#3}{\csname#2nameJP\endcsname}
+ \newtheorem*{#2RU#3}{\csname#2nameRU\endcsname}
+ }{%
+ \IfValueTF{#5}{%
+ \newcounter{#2#3}[{#5}]%
+ \expandafter\renewcommand\expandafter*%
+ \csname the#2#3\expandafter\endcsname%
+ \expandafter{\csname the#5\endcsname.\arabic{#2#3}}%
+ }{%
+ \IfValueTF{#4}
+ {\newaliascnt{#2#3}{#4}}
+ {\newcounter{#2#3}}%
+ }%
+ %---------------------------------------------------------------
+ \CreateTheoremNumberedLikeAliasCounter{#2}{EN}{#3}%
+ \CreateTheoremNumberedLikeAliasCounter{#2}{FR}{#3}%
+ \CreateTheoremNumberedLikeAliasCounter{#2}{DE}{#3}%
+ \CreateTheoremNumberedLikeAliasCounter{#2}{CN}{#3}%
+ \CreateTheoremNumberedLikeAliasCounter{#2}{TC}{#3}%
+ \CreateTheoremNumberedLikeAliasCounter{#2}{JP}{#3}%
+ \CreateTheoremNumberedLikeAliasCounter{#2}{RU}{#3}%
+ %---------------------------------------------------------------
+ }%
+ \NewDocumentEnvironment{#2#3}{}
+ {\csname#2\csname\languagename ABBR\endcsname#3\endcsname}%
+ {\csname end#2\csname\languagename ABBR\endcsname#3\endcsname}%
+ }
+ }%
+}%
+\NewDocumentCommand{\CreateTheoremNumberedLikeAliasCounter}{mmm}{%
+ \newaliascnt{#1#2#3}{#1#3}%
+ \newtheorem{#1#2#3}[{#1#2#3}]{\csname#1name#2\endcsname}%
+ \aliascntresetthe{#1#2#3}%
+ \crefname{#1#2#3}%
+ {\csname#1name#2\endcsname}%
+ {\csname#1name#2\endcsname}%
+ \Crefname{#1#2#3}%
+ {\csname#1name#2\endcsname}%
+ {\csname#1name#2\endcsname}%
+}%
+
+%% English theorems names
+\def\theoremnameEN{Theorem}
+\def\lemmanameEN{Lemma}
+\def\propositionnameEN{Proposition}
+\def\corollarynameEN{Corollary}
+\def\propertynameEN{Property}
+\def\factnameEN{Fact}
+\def\conjecturenameEN{Conjecture}
+\def\definitionnameEN{Definition}
+\def\axiomnameEN{Axiom}
+\def\assumptionnameEN{Assumption}
+\def\conventionnameEN{Convention}
+\def\hypothesisnameEN{Hypothesis}
+\def\notationnameEN{Notation}
+\def\examplenameEN{Example}
+\def\problemnameEN{Problem}
+\def\questionnameEN{Question}
+\def\exercisenameEN{Exercise}
+\def\remarknameEN{Remark}
+\expandafter\def\csname definition-propositionnameEN\endcsname{\definitionnameEN-\propositionnameEN}
+\expandafter\def\csname definition-theoremnameEN\endcsname{\definitionnameEN-\theoremnameEN}
+
+%% French theorems names
+\def\theoremnameFR{Théorème}
+\def\lemmanameFR{Lemme}
+\def\propositionnameFR{Proposition}
+\def\corollarynameFR{Corollaire}
+\def\propertynameFR{Propriété}
+\def\factnameFR{Fait}
+\def\conjecturenameFR{Conjecture}
+\def\definitionnameFR{Définition}
+\def\axiomnameFR{Axiome}
+\def\assumptionnameFR{Supposition}
+\def\conventionnameFR{Convention}
+\def\hypothesisnameFR{Hypothèse}
+\def\notationnameFR{Notation}
+\def\examplenameFR{Exemple}
+\def\problemnameFR{Problème}
+\def\questionnameFR{Question}
+\def\exercisenameFR{Exercice}
+\def\remarknameFR{Remarque}
+\expandafter\def\csname definition-propositionnameFR\endcsname{\definitionnameFR-\propositionnameFR}
+\expandafter\def\csname definition-theoremnameFR\endcsname{\definitionnameFR-\theoremnameFR}
+
+%% German theorems names
+\def\theoremnameDE{Satz}
+\def\lemmanameDE{Lemma}
+\def\propositionnameDE{Proposition}
+\def\corollarynameDE{Korollar}
+\def\propertynameDE{Eigenschaft}
+\def\factnameDE{Fakt}
+\def\conjecturenameDE{Vermutung}
+\def\definitionnameDE{Definition}
+\def\axiomnameDE{Axiom}
+\def\assumptionnameDE{Annahme}
+\def\conventionnameDE{Konvention}
+\def\hypothesisnameDE{Hypothese}
+\def\notationnameDE{Notation}
+\def\examplenameDE{Beispiel}
+\def\problemnameDE{Problem}
+\def\questionnameDE{Frage}
+\def\exercisenameDE{Übung}
+\def\remarknameDE{Bemerkung}
+\expandafter\def\csname definition-propositionnameDE\endcsname{\definitionnameDE-\propositionnameDE}
+\expandafter\def\csname definition-theoremnameDE\endcsname{\definitionnameDE-\theoremnameDE}
+
+%% Chinese theorems names
+\def\theoremnameCN{定理}
+\def\lemmanameCN{引理}
+\def\propositionnameCN{命题}
+\def\corollarynameCN{推论}
+\def\propertynameCN{性质}
+\def\factnameCN{事实}
+\def\conjecturenameCN{猜想}
+\def\definitionnameCN{定义}
+\def\axiomnameCN{公理}
+\def\assumptionnameCN{假设}
+\def\conventionnameCN{约定}
+\def\hypothesisnameCN{假设}
+\def\notationnameCN{记号}
+\def\examplenameCN{例}
+\def\problemnameCN{问题}
+\def\questionnameCN{问题}
+\def\exercisenameCN{练习}
+\def\remarknameCN{备注}
+\expandafter\def\csname definition-propositionnameCN\endcsname{\definitionnameCN-\propositionnameCN}
+\expandafter\def\csname definition-theoremnameCN\endcsname{\definitionnameCN-\theoremnameCN}
+
+\def\theoremnameTC{定理}
+\def\lemmanameTC{引理}
+\def\propositionnameTC{命題}
+\def\corollarynameTC{推論}
+\def\propertynameTC{性質}
+\def\factnameTC{事實}
+\def\conjecturenameTC{猜想}
+\def\definitionnameTC{定義}
+\def\axiomnameTC{公理}
+\def\assumptionnameTC{假設}
+\def\conventionnameTC{約定}
+\def\hypothesisnameTC{假設}
+\def\notationnameTC{記號}
+\def\examplenameTC{例}
+\def\problemnameTC{問題}
+\def\questionnameTC{問題}
+\def\exercisenameTC{練習}
+\def\remarknameTC{備註}
+\expandafter\def\csname definition-propositionnameTC\endcsname{\definitionnameTC-\propositionnameTC}
+\expandafter\def\csname definition-theoremnameTC\endcsname{\definitionnameTC-\theoremnameTC}
+
+%% Japanese theorems names
+\def\theoremnameJP{定理}
+\def\lemmanameJP{補題}
+\def\propositionnameJP{命題}
+\def\corollarynameJP{系}
+\def\propertynameJP{性質}
+\def\factnameJP{事実}
+\def\conjecturenameJP{予想}
+\def\definitionnameJP{定義}
+\def\axiomnameJP{公理}
+\def\assumptionnameJP{仮定}
+\def\conventionnameJP{慣例}
+\def\hypothesisnameJP{仮設}
+\def\notationnameJP{記法}
+\def\examplenameJP{例}
+\def\problemnameJP{問題}
+\def\questionnameJP{問題}
+\def\exercisenameJP{練習}
+\def\remarknameJP{注釈}
+\expandafter\def\csname definition-propositionnameJP\endcsname{\definitionnameJP-\propositionnameJP}
+\expandafter\def\csname definition-theoremnameJP\endcsname{\definitionnameJP-\theoremnameJP}
+
+%% Russian theorems names
+\def\theoremnameRU{Теорема} % Теоре́ма
+\def\lemmanameRU{Лемма} % Ле́мма
+\def\propositionnameRU{Предложение} % Предложе́ние
+\def\corollarynameRU{Следствие} % Сле́дствие
+\def\propertynameRU{Имущество} % Иму́щество
+\def\factnameRU{Факт}
+\def\conjecturenameRU{Гипотеза} % Гипо́теза
+\def\definitionnameRU{Определение} % Определе́ние
+\def\axiomnameRU{Аксиома} % Аксио́ма
+\def\assumptionnameRU{Предположение} % Предположе́ние
+\def\conventionnameRU{Конвенция} % Конве́нция
+\def\hypothesisnameRU{Гипотеза} % Гипо́теза
+\def\notationnameRU{Нотация} % Нота́ция
+\def\examplenameRU{Пример} % Приме́р
+\def\problemnameRU{Проблема} % Пробле́ма
+\def\questionnameRU{Вопрос} % Вопро́с
+\def\exercisenameRU{Упражнение} % Упражне́ние
+\def\remarknameRU{Замечание} % Замеча́ние
+\expandafter\def\csname definition-propositionnameRU\endcsname{\definitionnameRU-\propositionnameRU}
+\expandafter\def\csname definition-theoremnameRU\endcsname{\definitionnameRU-\theoremnameRU}
+
+\newif\ifPLthm@IsBook
+\ifdefined\chapter\PLthm@IsBooktrue\else\PLthm@IsBookfalse\fi
+\if@PLthm@nothms\else
+%% Theorem environments
+\ifbool{PLthm@IsBook}{
+ \newaliascnt{highest}{chapter}
+}{
+ \newaliascnt{highest}{section}
+}
+\CreateTheorem{theorem}<highest>
+\CreateTheorem{lemma}[theorem]
+\CreateTheorem{proposition}[theorem]
+\CreateTheorem{corollary}[theorem]
+\CreateTheorem{definition-proposition}[theorem]
+\CreateTheorem{definition-theorem}[theorem]
+\CreateTheorem{property}[theorem]
+\CreateTheorem{fact}[theorem]
+\CreateTheorem{conjecture}[theorem]
+\CreateTheorem*{theorem*}
+\CreateTheorem*{lemma*}
+\CreateTheorem*{proposition*}
+\CreateTheorem*{corollary*}
+\CreateTheorem*{definition-proposition*}
+\CreateTheorem*{definition-theorem*}
+\CreateTheorem*{property*}
+\CreateTheorem*{fact*}
+\CreateTheorem*{conjecture*}
+
+\theoremstyle{definition}
+\CreateTheorem{definition}[theorem]
+\CreateTheorem{axiom}[theorem]
+\CreateTheorem{assumption}[theorem]
+\CreateTheorem{convention}[theorem]
+\CreateTheorem{hypothesis}[theorem]
+\CreateTheorem{notation}[theorem]
+\CreateTheorem{example}[theorem]
+\CreateTheorem{problem}[theorem]
+\CreateTheorem{question}[theorem]
+\CreateTheorem{exercise}[theorem]
+\CreateTheorem*{definition*}
+\CreateTheorem*{axiom*}
+\CreateTheorem*{assumption*}
+\CreateTheorem*{convention*}
+\CreateTheorem*{hypothesis*}
+\CreateTheorem*{notation*}
+\CreateTheorem*{example*}
+\CreateTheorem*{problem*}
+\CreateTheorem*{question*}
+\CreateTheorem*{exercise*}
+
+\theoremstyle{remark}
+\CreateTheorem{remark}<highest>
+\CreateTheorem*{remark*}
+\numberwithin{equation}{highest}
+\fi
+
+% Some localization of cref
+\gappto{\PLlang@langconfig@chinese}{%
+ \crefname{equation}{式}{式}%
+ \crefname{figure}{图}{图}%
+ \crefname{table}{表}{表}%
+ \crefname{appendix}{附录}{附录}%
+ \Crefname{equation}{式}{式}%
+ \Crefname{figure}{图}{图}%
+ \Crefname{table}{表}{表}%
+ \Crefname{appendix}{附录}{附录}%
+ \def\crefpairconjunction{~和~}%
+ \def\crefmiddleconjunction{、}%
+ \def\creflastconjunction{~和~}%
+ \def\crefpairgroupconjunction{~和~}%
+ \def\crefmiddlegroupconjunction{、}%
+ \def\creflastgroupconjunction{~和~}%
+ \def\crefrangeconjunction{~}%
+}
+\gappto{\PLlang@langconfig@tchinese}{%
+ \crefname{equation}{式}{式}%
+ \crefname{figure}{圖}{圖}%
+ \crefname{table}{表}{表}%
+ \crefname{appendix}{附錄}{附錄}%
+ \Crefname{equation}{式}{式}%
+ \Crefname{figure}{圖}{圖}%
+ \Crefname{table}{表}{表}%
+ \Crefname{appendix}{附錄}{附錄}%
+ \def\crefpairconjunction{~與~}%
+ \def\crefmiddleconjunction{、}%
+ \def\creflastconjunction{~與~}%
+ \def\crefpairgroupconjunction{~與~}%
+ \def\crefmiddlegroupconjunction{、}%
+ \def\creflastgroupconjunction{~與~}%
+ \def\crefrangeconjunction{~}%
+}
+\gappto{\PLlang@langconfig@japanese}{%
+ \crefname{equation}{式}{式}%
+ \crefname{figure}{図}{図}%
+ \crefname{table}{表}{表}%
+ \Crefname{appendix}{付録}{付録}%
+ \Crefname{equation}{式}{式}%
+ \Crefname{figure}{図}{図}%
+ \Crefname{table}{表}{表}%
+ \Crefname{appendix}{付録}{付録}%
+ \def\crefpairconjunction{~と~}%
+ \def\crefmiddleconjunction{~と~}%
+ \def\creflastconjunction{~と~}%
+ \def\crefpairgroupconjunction{~と~}%
+ \def\crefmiddlegroupconjunction{~と~}%
+ \def\creflastgroupconjunction{~と~}%
+ \def\crefrangeconjunction{〜}%
+}
+\gappto{\PLlang@langconfig@russian}{%
+ \crefname{equation}{уравнение}{уравнения}%
+ \crefname{figure}{рис.}{рис.}%
+ \crefname{table}{таблица}{таблицы}%
+ \crefname{appendix}{приложение}{приложения}%
+ \Crefname{equation}{Уравнение}{Уравнения}%
+ \Crefname{figure}{Рис.}{Рис.}%
+ \Crefname{table}{Таблица}{Таблицы}%
+ \Crefname{appendix}{Приложение}{Приложения}%
+ \def\crefpairconjunction{~и~}%
+ \def\crefmiddleconjunction{,~}%
+ \def\creflastconjunction{~и~}%
+ \def\crefpairgroupconjunction{~и~}%
+ \def\crefmiddlegroupconjunction{,~}%
+ \def\creflastgroupconjunction{~и~}%
+ \def\crefrangeconjunction{~\textasciitilde~}%
+}
+%</PLthm>
+%
+%<*PLtoolkit>
+\SetupKeyvalOptions{
+ family = @PLtoolkit,
+ prefix = @PLtoolkit@,
+}
+\DeclareBoolOption[false]{draft}
+\DeclareBoolOption[false]{fast}
+\DeclareBoolOption[false]{author}
+\DeclareBoolOption[false]{amssim}
+\DeclareBoolOption[false]{nothms}
+\DeclareBoolOption[false]{palatino}
+\DeclareBoolOption[false]{times}
+\DeclareBoolOption[false]{garamond}
+\DeclareBoolOption[false]{biolinum}
+\ProcessKeyvalOptions*\relax
+\if@PLtoolkit@draft
+ \@PLtoolkit@fasttrue
+\fi
+\if@PLtoolkit@fast
+ \PassOptionsToPackage{fast}{PLdate}
+ \PassOptionsToPackage{fast}{PLdraft}
+ \PassOptionsToPackage{fast}{PLlogo}
+\fi
+\if@PLtoolkit@nothms
+ \PassOptionsToPackage{nothms}{PLthm}
+\fi
+
+\if@PLtoolkit@author
+ \RequirePackage{PLauthor}
+\fi
+\if@PLtoolkit@amssim
+ \RequirePackage{PLamssim}
+\fi
+\RequirePackage{PLdate}
+\RequirePackage{PLdraft}
+\RequirePackage{PLlogo}
+\RequirePackage{PLpaper}
+\RequirePackage{PLthm}
+
+% \RequirePackage{iftex}
+% \ifPDFTeX
+% \RequirePackage[T1]{fontenc}
+% \RequirePackage{inputenc}
+% \fi
+%
+\RequirePackage{mathtools}
+
+% \PL@font@alreadyset should contain the current font name
+% A message can then be shown as: Font "(font name)" has been set
+\ifdefined\PL@font@alreadyset\else
+
+\if@PLtoolkit@palatino
+ \RequirePackage{amssymb}
+ \RequirePackage{mathpazo}
+ \PassOptionsToPackage{defaultsups}{newpxtext}
+ \RequirePackage{newpxtext}
+ \RequirePackage{newpxmath}
+ \let\openbox\relax
+ \PLsetlinespacing{\setstretch{1.07}}
+\fi
+
+\if@PLtoolkit@times
+ \RequirePackage{amssymb}
+ \PassOptionsToPackage{defaultsups}{newtxtext}
+ \RequirePackage{newtxtext}
+ \RequirePackage{newtxmath}
+ \let\openbox\relax
+ \PLsetlinespacing{\setstretch{1.00}}
+\fi
+
+\if@PLtoolkit@garamond
+ \RequirePackage{amssymb}
+ \RequirePackage{ebgaramond-maths}
+ \RequirePackage{ebgaramond}
+ % \RequirePackage{garamondlibre}
+ \PLsetlinespacing{\setstretch{1.00}}
+\fi
+
+\if@PLtoolkit@biolinum
+ \RequirePackage{amssymb}
+ \RequirePackage{mathpazo}
+ % \RequirePackage[sansmath]{libertinust1math}
+ \ifPDFTeX
+ \RequirePackage{biolinum}
+ \renewcommand*\familydefault{\biolinum@family}
+ \else
+ \PassOptionsToPackage{no-math}{fontspec}
+ \RequirePackage{fontspec}
+ \setmainfont{LinBiolinum_R.otf}[
+ BoldFont = LinBiolinum_RB.otf ,
+ ItalicFont = LinBiolinum_RI.otf ,
+ BoldItalicFont = LinBiolinum_RBO.otf ]
+ \fi
+ \PLsetlinespacing{\setstretch{1.05}}
+\fi
+
+\fi
+
+\RequirePackage{microtype}
+%</PLtoolkit>
+
+\endinput \ No newline at end of file