texlive[62601] branches/branch2021.final/Master: projlib (10mar22)

commits+karl at tug.org commits+karl at tug.org
Thu Mar 10 22:25:27 CET 2022


Revision: 62601
          http://tug.org/svn/texlive?view=revision&revision=62601
Author:   karl
Date:     2022-03-10 22:25:27 +0100 (Thu, 10 Mar 2022)
Log Message:
-----------
projlib (10mar22) (branch)

Modified Paths:
--------------
    branches/branch2021.final/Master/texmf-dist/doc/latex/projlib/README.md
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/ProjLib.sty
    branches/branch2021.final/Master/tlpkg/libexec/ctan2tds

Added Paths:
-----------
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLauthor.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLdate.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLdraft.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLlang.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLlogo.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLmath.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLpaper.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLthm.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLtoolkit.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-author.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-font.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-language.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-math.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty

Removed Paths:
-------------
    branches/branch2021.final/Master/texmf-dist/doc/latex/projlib/new-modules/
    branches/branch2021.final/Master/texmf-dist/source/latex/projlib/ProjLib.dtx
    branches/branch2021.final/Master/texmf-dist/source/latex/projlib/ProjLib.ins
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLauthor.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLdate.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLdraft.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLlang.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLlogo.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLmath.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLpaper.sty
    branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLthm.sty

Modified: branches/branch2021.final/Master/texmf-dist/doc/latex/projlib/README.md
===================================================================
--- branches/branch2021.final/Master/texmf-dist/doc/latex/projlib/README.md	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/texmf-dist/doc/latex/projlib/README.md	2022-03-10 21:25:27 UTC (rev 62601)
@@ -2,15 +2,17 @@
 
 # ProjLib Toolkit
 
-The bundle is dated 2022/02/27
+The bundle is dated 2022/03/09
 
 Old modules are still dated 2021/12/16 and will *not* be modified. When all the new modules are finished, old files shall be removed from this bundle.
 
 ## **Important note**
 
-The whole project is being rewritten with `expl3`. New modules have the name with prefix "projlib-", and they are in many ways better and more powerful than their predecessors. Some basically finished new modules are included in the bundle but are not yet documented. Most importantly, they are not compatible with the old modules, so they cannot appear at the same time in the same document, which, unfortunately, means that (for now) they cannot be used in classes like `einfart` or `lebhart`, etc.
+The whole project is being rewritten with `expl3`. The new modules are basically finished but are not yet documented. They have the names with prefix "projlib-", and they are in many ways better and more powerful than their predecessors. Most importantly, they are not compatible with the old modules, so they cannot appear at the same time in the same document, which, unfortunately, means that (for now) they cannot be used in classes like `einfart` or `lebhart`, etc.
 
-The newly added modules include:
+The current `ProjLib.sty` is the new `expl3` version, the old one has been renamed to `PJLtoolkit.sty`.
+
+The new modules are:
 - projlib-author
 - projlib-datetime
 - projlib-draft
@@ -19,9 +21,12 @@
 - projlib-logo
 - projlib-math
 - projlib-paper
+- projlib-theorem
 
 When all these modules are finished, the documentation will be updated accordingly.
 
+Below are the old README.
+
 ---
 
 > **ProjLib** can be interpreted as "***Proj**ect **Lib**rary*" (in English), or as "***Proj**et **Lib**re*" (in French).

Deleted: branches/branch2021.final/Master/texmf-dist/source/latex/projlib/ProjLib.dtx
===================================================================
--- branches/branch2021.final/Master/texmf-dist/source/latex/projlib/ProjLib.dtx	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/texmf-dist/source/latex/projlib/ProjLib.dtx	2022-03-10 21:25:27 UTC (rev 62601)
@@ -1,3683 +0,0 @@
-% \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]
-%
-%<*ProjLib>
-\ProvidesPackage{ProjLib}
-    [2021/12/16 The collective interface of ProjLib toolkit]
-%</ProjLib>
-%
-%<*PJLauthor>
-\ProvidesPackage{PJLauthor}
-    [2021/12/16 Enhanced author information block]
-%</PJLauthor>
-%
-%<*PJLdate>
-\ProvidesPackage{PJLdate}
-    [2021/12/16 Convert yyyy-mm-dd to normal datetime format]
-%</PJLdate>
-%
-%<*PJLdraft>
-\ProvidesPackage{PJLdraft}
-    [2021/12/16 Some useful macros for the draft stage]
-%</PJLdraft>
-%
-%<*PJLlang>
-\ProvidesPackage{PJLlang}
-    [2021/12/16 Multi-language configuration]
-%</PJLlang>
-%
-%<*PJLlogo>
-\ProvidesPackage{PJLlogo}
-    [2021/12/16 The ProjLib logo]
-%</PJLlogo>
-%
-%<*PJLmath>
-\ProvidesPackage{PJLmath}
-    [2021/12/16 Useful math macros and shortcuts]
-%</PJLmath>
-%
-%<*PJLpaper>
-\ProvidesPackage{PJLpaper}
-    [2021/12/16 Paper style configuration]
-%</PJLpaper>
-%
-%<*PJLthm>
-\ProvidesPackage{PJLthm}
-    [2021/12/16 Theorem setup and configuration]
-%</PJLthm>
-%
-%# 下面两行引入宏包的代码是所有文件共用的。
-%# The following two lines are common to all files.
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-%
-%<*PJLauthor>
-%# 这段代码定义了宏包中的选项。
-%# This code defines the options in the package.
-\SetupKeyvalOptions{
-    family = @PJLauthor,
-    prefix = @PJLauthor@,
-}
-%# 支持 AMS 风格
-%# Support AMS fashion
-\DeclareBoolOption[false]{amsfashion}
-%# 处理选项
-%# Process options
-\ProcessKeyvalOptions*\relax
-
-%# 在 AMS 文档类中不执行任何操作
-%# Do nothing if AMS class detected
-\ifdefined\subjclass\endinput\fi
-
-%%================================
-%% Font and style
-%%================================
-%# 各个作者信息元素的字体
-%# Font of the elements in the author block
-\def\PJLauthor at font@author{\normalsize\normalfont\scshape}
-\def\PJLauthor at font@address{\small\normalfont\itshape}
-\def\PJLauthor at font@curraddr{\small\normalfont\itshape}
-\def\PJLauthor at font@email{\small\normalfont\ttfamily}
-
-%%================================
-%% Lengths
-%%================================
-%# author 和 address 之间的距离
-%# Space between author and address
-\newlength{\PJLauthor at length@innersep}
-\setlength{\PJLauthor at length@innersep}{.3\baselineskip}
-%# 两个作者块之间的距离
-%# Space between different author blocks
-\newlength{\PJLauthor at length@sep}
-\setlength{\PJLauthor at length@sep}{.5\baselineskip}
-%# 作者块和日期之间的距离
-%# Space between affiliation and date
-\newlength{\PJLauthor at length@aftersep}
-\setlength{\PJLauthor at length@aftersep}{.3\baselineskip}
-
-%%================================
-%% The macros
-%%================================
-%# 用来记录当前是否有附加作者信息,以便调整距离
-%# To record whether there's affiliation so as to adjust the vertical space
-\newif\if at PJLauthor@affilon
-%# 作者
-%# author
-\renewcommand*{\author}[1]{%
-    \gappto\@author{\phantom{A}\\[-\baselineskip]%
-    \vspace{\PJLauthor at length@sep}%
-    \PJLauthor at font@author{#1}\\\phantom{}
-    \@PJLauthor at affilonfalse}}
-%# 地址
-%# address
-\providecommand*{\address}[1]{%
-    \gappto\@author{\phantom{A}\\[-\baselineskip]%
-        \if at PJLauthor@affilon\else%
-            \vspace{\PJLauthor at length@innersep}%
-        \fi%
-        \@PJLauthor at affilontrue%
-        \PJLauthor at font@address{#1}\\\phantom{}}%
-}
-%# 当前地址
-%# curraddr
-\providecommand*{\curraddr}[1]{%
-    \gappto\@author{\phantom{A}\\[-\baselineskip]%
-        \if at PJLauthor@affilon\else%
-            \vspace{\PJLauthor at length@innersep}%
-        \fi%
-        \@PJLauthor at affilontrue%
-        \PJLauthor at font@curraddr{#1}\\\phantom{}}%
-}
-%# 电子邮箱
-%# email
-\providecommand*{\email}[1]{%
-    \gappto\@author{\phantom{A}\\[-\baselineskip]%
-        \if at PJLauthor@affilon\else%
-            \vspace{\PJLauthor at length@innersep}%
-        \fi%
-        \@PJLauthor at affilontrue%
-        \PJLauthor at font@email{#1}\\\phantom{}}%
-}
-
-%%================================
-%% Adjustment
-%%================================
-%# 去除 maketitle 中默认对 author 的处理
-%# Remove the tabular around \@author in maketitle
-\patchcmd{\@maketitle}{\begin{tabular}[t]{c}}{}{}{}
-\patchcmd{\@maketitle}{\end{tabular}}{}{}{}
-%# 下面这一行是为了避免错误 "No \author given."
-%# The follwing line is for avoiding the error "No \author given."
-\def\@author{}
-%# 修正作者块的前后等距离
-%# Adjust the spacing before and after the author block
-\pretocmd{\@maketitle}{%
-    \pretocmd{\@author}{\vspace{-\PJLauthor at length@sep}}{}{\FAIL}%
-    \apptocmd{\@author}{%
-% Fix the space caused by `\\\phantom{}`
-        \vspace{-\baselineskip}%
-        \if at PJLauthor@affilon%
-            \vspace{\PJLauthor at length@aftersep}%
-        \fi%
-    }{}{\FAIL}%
-}{}{\FAIL}
-
-%# 若使用 AMS 风格
-%# If AMS fashion enabled
-\ifbool{@PJLauthor at amsfashion}{
-
-%# 使用 PJLlang 以支持自动语言转换
-%# Use `PJLlang` to support automatic language conversion
-\RequirePackage{PJLlang}
-\RequirePackage{calc}
-
-%# 设定带条件的加粗
-%# Set the conditional bold face
-\providecommand{\conditionalbfseries}{\bfseries}
-
-%# 关键词的标签
-%# keywords' label
-\def\keywordsnameEN{\textsc{Key words and phrases}}
-\def\keywordsnameFR{\textsc{Mots et phrases clés}}
-\def\keywordsnameDE{\textsc{Schlüsselwörter und Phrasen}}
-\def\keywordsnameIT{\textsc{Parole e frasi chiave}}
-\def\keywordsnamePT{\textsc{Palavras e frases chave}}
-\def\keywordsnameBR{\textsc{Palavras e frases chave}}
-\def\keywordsnameES{\textsc{Palabras y frases clave}}
-\def\keywordsnameCN{关键词}
-\def\keywordsnameTC{關鍵詞}
-\def\keywordsnameJP{キーワード}
-\def\keywordsnameRU{Ключевые слова и фразы}
-
-%# 关键词
-%# keywords
-\def\PJL at keywords{}
-\providecommand*{\keywords}[1]{\def\PJL at keywords{#1}}
-
-%# 献给
-%# dedicatory
-\def\PJL at dedicatory{}
-\providecommand*{\dedicatory}[1]{\def\PJL at dedicatory{#1}}
-
-%# 致谢,在 \author 中使用时呈现为 article 风格,在外面单独用是则呈现为 AMS 风格
-%# \thanks: behave like article-style when in \author, and ams-style (no marker) when outside
-\AtEndPreamble{
-% In case that \@author changes again
-\let\footnotemark at PJLoriginal\footnotemark%
-\let\footnotemark\relax%
-\let\thanks at PJLoriginal\thanks%
-\newlength\PJL at starlength
-\setlength{\PJL at starlength}{\widthof{*}}
-\newcommand*{\PJL at prethanks}[1]{\thanks at PJLoriginal{\hspace*{-\PJL at starlength}#1}}
-% \renewcommand*{\thanks}[1]{%
-%     \ifx#1\@empty\else%
-%         \thanks at PJLoriginal{\hspace*{-\PJL at starlength}#1}%
-%     \fi}
-\renewcommand*{\thanks}[1]{%
-    \ifx#1\@empty\else%
-        \apptocmd{\@title}{%
-            \thanks at PJLoriginal{\hspace*{-\PJL at starlength}#1}%
-        }{}{\FAIL}%
-    \fi}
-\let\author at PJLoriginal\author
-\renewcommand{\author}[1]{%
-    \author at PJLoriginal{%
-        \let\footnotemark\footnotemark at PJLoriginal%
-        \let\thanks\thanks at PJLoriginal%
-        #1%
-        \let\footnotemark\relax%
-    }%
-}
-% \pretocmd{\@author}{\let\footnotemark\footnotemark at PJLoriginal\let\thanks\thanks at PJLoriginal}{}{\FAIL}
-% \apptocmd{\@author}{\let\footnotemark\relax}{}{\FAIL}
-}
-
-%# 重定义 abstract 环境以允许其出现在 maketitle 的前面
-%# Modify abstract to allow it before maketitle
-\let\abstract at PJLoriginal\abstract%
-\let\endabstract at PJLoriginal\endabstract%
-\newif\if at PJLauthor@maketitle\@PJLauthor at maketitlefalse
-\newif\if at PJLauthor@absbefore\@PJLauthor at absbeforefalse
-\RequirePackage{fancyvrb}
-% Taken from https://tex.stackexchange.com/a/596328
-% define the same as \protected at write, but with \immediate
-\providecommand*\protected at iwrite[3]{%
-  \begingroup
-  \let\thepage\relax
-  #2%
-  \let\protect\@unexpandable at protect
-  \edef\reserved at a{\immediate\write#1{#3}}\reserved at a
-  \endgroup
-  \if at nobreak\ifvmode\nobreak\fi\fi
-}
-\patchcmd{\FVB at VerbatimOut}
-  {\immediate\write\FV at OutFile}
-  {\protected at iwrite\FV at OutFile{}}
-  {}{}
-%
-\renewenvironment{abstract}{%
-    \VerbatimOut{\jobname.pjlabs}%
-}{
-    \endVerbatimOut%
-    \if at PJLauthor@maketitle%
-        \begin{abstract at PJLoriginal}%
-            \input{\jobname.pjlabs}%
-        \end{abstract at PJLoriginal}%
-        % \ifx\PJL at keywords\@empty\else%
-        %     \par\smallskip\noindent{\conditionalbfseries\csname keywordsname\csname\languagename ABBR\endcsname\endcsname.}~\PJL at keywords%
-        % \fi%
-    \else%
-        \global\@PJLauthor at absbeforetrue%
-    \fi%
-}
-
-%# 修改 maketitle 以包含上面的诸多改动
-%# Modify maketitle to reflect the modifications above
-\AtEndPreamble{%
-%## 将 dedicatory 添加进 \@maketitle
-%## Add dedicatory to \@maketitle
-\patchcmd{\@maketitle}{\@date}{%
-    \ifx\@date\@empty\vspace{-2\baselineskip}%
-    \else\@date\fi%
-    \ifx\PJL at dedicatory\@empty\else%
-        \ifx\@date\@empty\vspace{2\baselineskip}\fi%
-        \par\vspace{-\parskip}\bigskip%
-        {\itshape\PJL at dedicatory}%
-        \ifx\@date\@empty%
-            \vspace{-1.7\baselineskip}%
-            \vspace{-\parskip}%
-        \fi%
-    \fi%
-}{}{\FAIL}
-%## 将 keywords 添加进 \maketitle
-%## Add keywords to \maketitle
-\pretocmd{\maketitle}{%
-    \ifx\PJL at keywords\@empty\else%
-    \PJL at prethanks{{\protect\conditionalbfseries%
-    \csname keywordsname\csname\languagename ABBR\endcsname\endcsname.}%
-    ~\PJL at keywords}%
-    \fi}{}{\FAIL}
-%## 将 abstract 添加进 \maketitle
-%## Add abstract to \maketitle
-\apptocmd{\maketitle}{%
-    \if at PJLauthor@absbefore%
-        \begin{abstract at PJLoriginal}%
-            \input{\jobname.pjlabs}%
-            % \ifx\PJL at keywords\@empty\else%
-            %     \par\smallskip\noindent{\conditionalbfseries\csname keywordsname\csname\languagename ABBR\endcsname\endcsname.}~\PJL at keywords%
-            % \fi%
-        \end{abstract at PJLoriginal}%
-    \fi%
-    \global\let\address\relax
-    \global\let\curraddr\relax
-    \global\let\email\relax
-    \global\let\dedicatory\relax
-    \global\let\keywords\relax
-    \global\@PJLauthor at maketitletrue
-}{}{\FAIL}
-%##- 这段未被采用的代码将使 maketitle 中的 \newpage 失效
-%##- Disbale the \newpage in maketitle
-% \let\maketitle at PJLoriginal=\maketitle
-% \renewcommand*{\maketitle}{{\let\newpage\relax\maketitle at PJLoriginal}}
-}
-
-%# 定义 \subjclass,这段代码改编自 AMS 文档类
-%# Define \subjclass, the code is adopted from AMS classes
-\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 at 2020\endcsname
-    }{%
-        \expandafter\let\expandafter\subjclassname\csname subjclassname@#1\endcsname
-    }%
-    \PJL at prethanks{{\itshape\subjclassname.}\enspace\@subjclass{}.}
-}
-\@namedef{subjclassname at 1991}{%
-  \textup{1991} Mathematics Subject Classification}
-\@namedef{subjclassname at 2000}{%
-  \textup{2000} Mathematics Subject Classification}
-\@namedef{subjclassname at 2010}{%
-  \textup{2010} Mathematics Subject Classification}
-\@namedef{subjclassname at 2020}{%
-  \textup{2020} Mathematics Subject Classification}
-
-}
-%</PJLauthor>
-%
-%<*PJLdate>
-%# 这段代码定义了宏包中的选项。
-%# This code defines the options in the package.
-\SetupKeyvalOptions{
-    family = @PJLdate,
-    prefix = @PJLdate@,
-}
-%# 草稿模式或快速模式
-%# Draft mode or fast mode
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-%# 处理选项
-%# Process options
-\ProcessKeyvalOptions*\relax
-%# 下面的代码设定了选项之间的关系
-%# The following code sets the relationship between options
-\if at PJLdate@draft
-    \@PJLdate at fasttrue
-\fi
-%# 定义 \PJLdate 的同义指令
-%# Define synonym macros of \PJLdate
-\DeclareDocumentCommand{\TheDate}{}{\PJLdate}
-\DeclareDocumentCommand{\PLdate}{}{\PJLdate}
-%# 快速模式下直接输出原日期字符串
-%# Directly output the original date string in fast mode
-\if at PJLdate@fast\let\PJLdate\relax\endinput\fi
-
-%# 载入多语言支持
-%# Load multi-language support
-\RequirePackage{PJLlang}
-
-%# 下面一行是为了避免使用 authblk 时产生的错误
-%# The following line is for "authblk"
-\robustify\@latex at warning@no at line
-
-%# 消除一些警告
-%# Eliminate some warnings
-\RequirePackage{silence}
-\WarningFilter*{datetime2}{Date-Time Language Module}
-%# 分别引入负责西文日期和 CJK 日期的宏包
-%# Use packages resp. for western date and CJK date
-\PassOptionsToPackage{fr-FR,en-US}{datetime2}
-\RequirePackage{datetime2}
-\RequirePackage{zhnumber}
-
-%# 在 CJK 模式下将 DTMdate 定义为 zhdate
-%# Maps DTMdate to zhdate in CJK context
-\let\@DTMdate at PJLoriginal\@DTMdate
-\gappto{\PJLlang at langconfig@common}{%
-    \let\@DTMdate\@DTMdate at PJLoriginal%
-}
-\gappto{\PJLlang at langconfig@CN}{%
-    \renewcommand*{\@DTMdate}[1]{%
-    \expandafter\@dtm at parsedate#1\@dtm at endparsedate%
-    \zhdate{\@dtm at year/\@dtm at month/\@dtm at day}%
-    }%
-}
-\gappto{\PJLlang at langconfig@TC}{%
-    \renewcommand*{\@DTMdate}[1]{%
-    \expandafter\@dtm at parsedate#1\@dtm at endparsedate%
-    \zhdate{\@dtm at year/\@dtm at month/\@dtm at day}%
-    }%
-}
-\gappto{\PJLlang at langconfig@JP}{%
-    \renewcommand*{\@DTMdate}[1]{%
-    \expandafter\@dtm at parsedate#1\@dtm at endparsedate%
-    \zhdate{\@dtm at year/\@dtm at month/\@dtm at day}%
-    }%
-}
-
-%# 提供命令 PJLdate
-%# Provide the macro PJLdate
-\providecommand*{\PJLdate}[1]{\DTMdate{#1}}
-%</PJLdate>
-%
-%<*PJLdraft>
-%# 这段代码定义了宏包中的选项。
-%# This code defines the options in the package.
-\SetupKeyvalOptions{
-    family = @PJLdraft,
-    prefix = @PJLdraft@,
-}
-%# 草稿模式或快速模式
-%# Draft mode or fast mode
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-%# 处理选项
-%# Process options
-\ProcessKeyvalOptions*\relax
-%# 下面的代码设定了选项之间的关系
-%# The following code sets the relationship between options
-\if at PJLdraft@draft
-    \@PJLdraft at fasttrue
-\fi
-
-%# 载入多语言支持
-%# Load multi-language support
-\RequirePackage{PJLlang}
-%# 载入颜色支持
-%# Load support for colors
-\RequirePackage{xcolor}
-
-%# 命令中的默认字体
-%# Default font in the macro
-\def\dnfFont{\ttfamily}
-\def\needgraphFont{\ttfamily}
-
-%# 命令中的文字
-%# Text in the macro
-\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\dnfTextIT{Per essere finito}
-\def\needgraphTextIT{Manca un'immagine qui}
-\def\dnfTextPT{Não terminou}
-\def\needgraphTextPT{Precisa de uma foto aqui}
-\def\dnfTextBR{Não terminou}
-\def\needgraphTextBR{Precisa de uma foto aqui}
-\def\dnfTextES{Estar terminado}
-\def\needgraphTextES{Falta una imagen aquí}
-\def\dnfTextCN{这里尚未完成}
-\def\needgraphTextCN{这里需要一张图片}
-\def\dnfTextTC{這裡尚未完成}
-\def\needgraphTextTC{這裡需要一張圖片}
-\def\dnfTextJP{終わってない}
-\def\needgraphTextJP{まだ画像が必要です}
-\def\dnfTextRU{Не закончен}
-\def\needgraphTextRU{Еще нужна картинка}
-
-%# 命令中的颜色
-%# Default color in the macro
-\definecolor{dnfColor}{RGB}{21,122,20}
-\definecolor{needgraphColor}{RGB}{70,130,180}
-
-\if at PJLdraft@fast
-%# 快速模式用 fbox 定义
-%# Use fbox in fast mode
-    \newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
-    \setlength{\fboxsep}{1.5pt}%
-    \setlength{\fboxrule}{1.2pt}%
-    \fbox{#2}}}
-\else
-%# 正常模式用 tcolorbox 定义
-%# Use tcolorbox in normal mode
-    \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
-
-%# 命令中的计数器
-%# Counters for the macro
-\newcounter{dnfcnt}
-\newcounter{needgraphcnt}
-
-%# 尚未完成的标记
-%# Mark for ``did not finish''
-\NewDocumentCommand{\dnf}{d<>}{%
-    \noindent\plainBox[dnfColor]%
-    {\normalfont\dnfFont\bfseries\small%
-    \csname dnfText\csname\languagename ABBR\endcsname\endcsname%
-    \stepcounter{dnfcnt}~\#\thednfcnt%
-    \IfNoValueF{#1}{\,: #1}}%
-}
-%# 需要图片的标记
-%# Mark for ``Graph needed''
-\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}%
-}
-%</PJLdraft>
-%
-%<*PJLlang>
-%# 这段代码定义了宏包中的选项。
-%# This code defines the options in the package.
-\SetupKeyvalOptions{%
-    family = @PJLlang,
-    prefix = @PJLlang@
-}
-%# 使用 polyglossia 而不是 babel 进行设置,目前还不完善
-%# Use polyglossia instead of babel
-\DeclareBoolOption[false]{polyglossia}
-
-%# 用于记录该语言是否被启用
-%# To record whether the language is enabled in the document
-\newif\if at PJLlang@enable at all\@PJLlang at enable@alltrue
-\newif\if at PJLlang@enable at EN\@PJLlang at enable@ENfalse
-\newif\if at PJLlang@enable at FR\@PJLlang at enable@FRfalse
-\newif\if at PJLlang@enable at DE\@PJLlang at enable@DEfalse
-\newif\if at PJLlang@enable at IT\@PJLlang at enable@ITfalse
-\newif\if at PJLlang@enable at PT\@PJLlang at enable@PTfalse
-\newif\if at PJLlang@enable at BR\@PJLlang at enable@BRfalse
-\newif\if at PJLlang@enable at ES\@PJLlang at enable@ESfalse
-\newif\if at PJLlang@enable at CN\@PJLlang at enable@CNfalse
-\newif\if at PJLlang@enable at TC\@PJLlang at enable@TCfalse
-\newif\if at PJLlang@enable at JP\@PJLlang at enable@JPfalse
-\newif\if at PJLlang@enable at RU\@PJLlang at enable@RUfalse
-%# 用来存储要传递给babel的选项
-%# To store the option list to pass to babel
-\def\PJLlang at babeloptions{}
-%# 语言选项:启用该语言并添加相应的 babel 参数
-%# The language options: enable the corresponding language and add the corresponding options to babel
-\DeclareVoidOption{EN}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}\gpreto{\PJLlang at babeloptions}{,english}}
-\DeclareVoidOption{english}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}\gpreto{\PJLlang at babeloptions}{,english}}
-\DeclareVoidOption{English}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}\gpreto{\PJLlang at babeloptions}{,english}}
-\DeclareVoidOption{FR}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}\gpreto{\PJLlang at babeloptions}{,french}}
-\DeclareVoidOption{french}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}\gpreto{\PJLlang at babeloptions}{,french}}
-\DeclareVoidOption{French}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}\gpreto{\PJLlang at babeloptions}{,french}}
-\DeclareVoidOption{DE}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}\gpreto{\PJLlang at babeloptions}{,ngerman}}
-\DeclareVoidOption{german}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}\gpreto{\PJLlang at babeloptions}{,ngerman}}
-\DeclareVoidOption{ngerman}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}\gpreto{\PJLlang at babeloptions}{,ngerman}}
-\DeclareVoidOption{German}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}\gpreto{\PJLlang at babeloptions}{,ngerman}}
-\DeclareVoidOption{IT}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}\gpreto{\PJLlang at babeloptions}{,italian}}
-\DeclareVoidOption{italian}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}\gpreto{\PJLlang at babeloptions}{,italian}}
-\DeclareVoidOption{Italian}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}\gpreto{\PJLlang at babeloptions}{,italian}}
-\DeclareVoidOption{PT}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}\gpreto{\PJLlang at babeloptions}{,portuguese}}
-\DeclareVoidOption{portuguese}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}\gpreto{\PJLlang at babeloptions}{,portuguese}}
-\DeclareVoidOption{Portuguese}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}\gpreto{\PJLlang at babeloptions}{,portuguese}}
-\DeclareVoidOption{BR}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}\gpreto{\PJLlang at babeloptions}{,brazilian}}
-\DeclareVoidOption{brazilian}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}\gpreto{\PJLlang at babeloptions}{,brazilian}}
-\DeclareVoidOption{Brazilian}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}\gpreto{\PJLlang at babeloptions}{,brazilian}}
-\DeclareVoidOption{ES}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}\gpreto{\PJLlang at babeloptions}{,spanish}}
-\DeclareVoidOption{spanish}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}\gpreto{\PJLlang at babeloptions}{,spanish}}
-\DeclareVoidOption{Spanish}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}\gpreto{\PJLlang at babeloptions}{,spanish}}
-\DeclareVoidOption{CN}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{chinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{Chinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{schinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{SChinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{simplifiedchinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{SimplifiedChinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{TC}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
-\DeclareVoidOption{tchinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
-\DeclareVoidOption{TChinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
-\DeclareVoidOption{traditionalchinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
-\DeclareVoidOption{TraditionalChinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
-\DeclareVoidOption{JP}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}\gpreto{\PJLlang at babeloptions}{,japanese}}
-\DeclareVoidOption{japanese}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}\gpreto{\PJLlang at babeloptions}{,japanese}}
-\DeclareVoidOption{Japanese}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}\gpreto{\PJLlang at babeloptions}{,japanese}}
-\DeclareVoidOption{RU}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}\gpreto{\PJLlang at babeloptions}{,russian}}
-\DeclareVoidOption{russian}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}\gpreto{\PJLlang at babeloptions}{,russian}}
-\DeclareVoidOption{Russian}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}\gpreto{\PJLlang at babeloptions}{,russian}}
-%# 处理选项
-%# Process options
-\ProcessKeyvalOptions*\relax
-
-%# 从全局参数中去除 chinese 和 Chinese
-%# Remove chinese and Chinese from global options
-\ExplSyntaxOn
-\cs_new_protected:cpn { @clearglobaloption } #1
- {
-  \clist_remove_all:cn { @classoptionslist } { #1 }
- }
-\ExplSyntaxOff
-
-\@clearglobaloption{chinese}
-\@clearglobaloption{Chinese}
-
-%# 默认语言:英语
-%# Default main language: English
-\providecommand{\PJLlang at mainlang}{EN}
-
-%# 启用全部支持的语言
-%# Enable all supported language
-\if at PJLlang@enable at all
-    \@PJLlang at enable@ENtrue
-    \@PJLlang at enable@FRtrue
-    \@PJLlang at enable@DEtrue
-    \@PJLlang at enable@ITtrue
-    \@PJLlang at enable@PTtrue
-    \@PJLlang at enable@BRtrue
-    \@PJLlang at enable@EStrue
-    \@PJLlang at enable@CNtrue
-    \@PJLlang at enable@TCtrue
-    \@PJLlang at enable@JPtrue
-    \@PJLlang at enable@RUtrue
-\fi
-
-%# 语言名称的缩写
-%# Abbreviation of language name
-\newcommand\englishABBR{EN}
-\newcommand\frenchABBR{FR}
-\newcommand\ngermanABBR{DE}
-\newcommand\italianABBR{IT}
-\newcommand\portugueseABBR{PT}
-\newcommand\brazilianABBR{BR}
-\newcommand\spanishABBR{ES}
-\newcommand\schineseABBR{CN}
-\newcommand\tchineseABBR{TC}
-\newcommand\japaneseABBR{JP}
-\newcommand\russianABBR{RU}
-
-%# 将字符串转换为相应的缩写
-%# Convert a string to the corresponding abbreviation
-\ExplSyntaxOn
-% See https://tex.stackexchange.com/a/610146
-\NewExpandableDocumentCommand{\StrToABBR}{m}
- {
-  \str_case_e:nn { \str_foldcase:n { #1 } }
-   {
-        {cn}                    {CN}
-        {chinese}               {CN}
-        {schinese}              {CN}
-        {simplifiedchinese}     {CN}
-        {tc}                    {TC}
-        {tchinese}              {TC}
-        {traditionalchinese}    {TC}
-        {jp}                    {JP}
-        {japanese}              {JP}
-        {en}                    {EN}
-        {english}               {EN}
-        {fr}                    {FR}
-        {french}                {FR}
-        {de}                    {DE}
-        {ngerman}               {DE}
-        {it}                    {IT}
-        {italian}               {IT}
-        {pt}                    {PT}
-        {portuguese}            {PT}
-        {br}                    {BR}
-        {brazilian}             {BR}
-        {es}                    {ES}
-        {spanish}               {ES}
-        {german}                {DE}
-        {ru}                    {RU}
-        {russian}               {RU}
-   }
- }
-
-\NewExpandableDocumentCommand{\StrToTYPE}{m}
- {
-  \str_case_e:nn { \str_foldcase:n { #1 } }
-   {
-        {cn}                    {CJK}
-        {chinese}               {CJK}
-        {schinese}              {CJK}
-        {simplifiedchinese}     {CJK}
-        {tc}                    {CJK}
-        {tchinese}              {CJK}
-        {traditionalchinese}    {CJK}
-        {jp}                    {CJK}
-        {japanese}              {CJK}
-        {en}                    {Latin}
-        {english}               {Latin}
-        {fr}                    {Latin}
-        {french}                {Latin}
-        {de}                    {Latin}
-        {ngerman}               {Latin}
-        {it}                    {Latin}
-        {italian}               {Latin}
-        {pt}                    {Latin}
-        {portuguese}            {Latin}
-        {br}                    {Latin}
-        {brazilian}             {Latin}
-        {es}                    {Latin}
-        {spanish}               {Latin}
-        {german}                {Latin}
-        {ru}                    {Latin}
-        {russian}               {Latin}
-   }
- }
-\ExplSyntaxOff
-
-%# 在 pdfLaTeX 编译时载入编码设置
-%# Load the encoding settings when pdfLaTeX is used
-\RequirePackage{iftex}
-\ifPDFTeX
-\RequirePackage[T1]{fontenc}
-\RequirePackage{inputenc}
-\fi
-
-\if at PJLlang@polyglossia
-%# polyglossia 对应的设置
-%# Configure with `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
-%# babel 对应的设置
-%# Configure with `babel`
-    \if at PJLlang@enable at 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 at babeloptions}{babel}
-    \fi
-    \PassOptionsToPackage{italian,brazilian,spanish,ngerman,french,english}{cleveref}
-    \RequirePackage{babel}
-    \if at PJLlang@enable at FR
-        \frenchsetup{PartNameFull=false}
-    \fi
-    \if at PJLlang@enable at PT
-        \let\PJL at babelord\ord
-        \let\ord\relax
-        \AtBeginDocument{
-            \@ifundefined{ord}{}
-            {
-                \let\PJL at userord\ord
-                \let\ord\relax
-                \newcommand{\ord}{%
-                    \ifmmode\expandafter\PJL at userord\else\expandafter\PJL at babelord\fi%
-                }
-            }
-        }
-    \fi
-
-    \babelprovide{schinese}
-    \babelprovide{tchinese}
-\fi
-
-%# 本地化 \today
-%# Localize \today
-\let\today at PJLoriginal\today
-\newcommand{\PJLlang at langconfig@common}{%
-    \ifdefined\DTMtoday%
-        \let\today\DTMtoday%
-    \else%
-        \let\today\today at PJLoriginal%
-    \fi%
-}
-
-%# 各个语言的设置
-%# The configuration for each language
-\newcommand{\PJLlang at langconfig@CN}{%
-    \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}{schinese}%
-}
-\newcommand{\PJLlang at langconfig@TC}{%
-    \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 at langconfig@JP}{%
-    \selectlanguage{japanese}%
-}
-\newcommand{\PJLlang at langconfig@EN}{%
-    \selectlanguage{english}%
-}
-\newcommand{\PJLlang at langconfig@FR}{%
-    \selectlanguage{french}%
-% The line below is currently only needed for 'babel', but also works with 'polyglossia'
-    \def\frenchpartname{Partie}%
-}
-\newcommand{\PJLlang at langconfig@DE}{%
-    \selectlanguage{ngerman}%
-}
-\newcommand{\PJLlang at langconfig@IT}{%
-    \selectlanguage{italian}%
-}
-\newcommand{\PJLlang at langconfig@PT}{%
-    \selectlanguage{portuguese}%
-}
-\newcommand{\PJLlang at langconfig@BR}{%
-    \selectlanguage{brazilian}%
-}
-\newcommand{\PJLlang at langconfig@ES}{%
-    \selectlanguage{spanish}%
-}
-\newcommand{\PJLlang at langconfig@RU}{%
-    \selectlanguage{russian}%
-}
-
-%# 用于增加语言设置的用户指令 AddLanguageSetting
-%# User command for adding language settings
-\NewDocumentCommand\AddLanguageSetting{d()m}{%
-\IfNoValueTF{#1}%
-    {\gappto{\PJLlang at langconfig@common}{#2}}%
-    {\expandafter\gappto\expandafter{\csname PJLlang at langconfig@\StrToABBR{#1}\endcsname}{#2}}%
-}
-
-\RequirePackage{setspace}
-%# 行距的设置
-%# Line spacing configuration
-\def\PJL at config@linespacing{\setstretch{1.00}}
-\def\PJL at config@CJKlinespacing{\onehalfspacing}
-\newcommand{\PJLsetlinespacing}[1]{\renewcommand{\PJL at config@linespacing}{#1}}
-\newcommand{\PJLsetCJKlinespacing}[1]{\renewcommand{\PJL at config@CJKlinespacing}{#1}}
-%# 缩进的设置
-%# Parindent configuration
-\@ifclassloaded{beamer}{
-    \def\PJL at config@parindent{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{0em}}}
-    \def\PJL at config@CJKparindent{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{0em}}}
-}{
-    \def\PJL at config@parindent{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{1.5em}}}
-    \def\PJL at config@CJKparindent{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{2em}}}
-}
-\newcommand{\PJLsetparindent}[1]{\renewcommand{\PJL at config@parindent}{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{#1}}}}
-\newcommand{\PJLsetCJKparindent}[1]{\renewcommand{\PJL at config@CJKparindent}{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{#1}}}}
-%# 合并设置
-%# All-in-all configuration
-\def\PJL at config@CJK{\PJL at config@CJKlinespacing\PJL at config@CJKparindent}
-\def\PJL at config@Latin{\PJL at config@linespacing\PJL at config@parindent}
-%
-%# UseLanguage 的核心部分,只能在正文中使用
-%# The core part of UseLanguage, can be used only in the main text, not preamble
-\NewDocumentCommand{\UseLanguageCORE}{m}{%
-    \PJLlang at langconfig@common%
-    \csname PJL at config@\StrToTYPE{#1}\endcsname%
-    \csname PJLlang at langconfig@\StrToABBR{#1}\endcsname%
-}
-%# 用于选定语言的 UseLanguage
-%# Macro for selecting language
-\NewDocumentCommand{\UseLanguage}{m}{%
-    \ifx\@onlypreamble\@notprerr%
-        \UseLanguageCORE{#1}%
-    \else%
-        \AfterEndPreamble{\UseLanguageCORE{#1}}%
-    \fi%
-}
-%# 用于局部选定语言的 UseOtherLanguage
-%# Macro for selecting language locally
-\NewDocumentCommand{\UseOtherLanguage}{mm}{%
-\begingroup\begingroup%
-    \PJLlang at langconfig@common%
-    \csname PJLlang at langconfig@\StrToABBR{#1}\endcsname%
-    #2%
-\endgroup\endgroup%
-}
-
-%# 运行默认语言的设置
-%# Execute the configuration of the main language
-\expandafter\UseLanguage\expandafter{\PJLlang at mainlang}
-%</PJLlang>
-%
-%<*PJLlogo>
-%# 这段代码定义了宏包中的选项。
-%# This code defines the options in the package.
-\SetupKeyvalOptions{
-    family = @PJLlogo,
-    prefix = @PJLlogo@,
-}
-%# 草稿模式或快速模式
-%# Draft mode or fast mode
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-%# 处理选项
-%# Process options
-\ProcessKeyvalOptions*\relax
-%# 下面的代码设定了选项之间的关系
-%# The following code sets the relationship between options
-\if at PJLlogo@draft
-    \@PJLlogo at fasttrue
-\fi
-%# 快速模式下直接输出字符串 ProjLib
-%# Directly output the string ``ProjLib'' in fast mode
-\if at PJLlogo@fast\def\ProjLib{{\normalfont ProjLib}}\endinput\fi
-
-%# 以下选取字体并定义 Logo
-%# Below select the font and define the logo
-\RequirePackage{xcolor}
-\RequirePackage{graphicx}
-\ifdefined\fontspec
-  \newfontface{\PJLlogo at font}{LinBiolinum_R.otf}
-\else
-  \RequirePackage[T1]{fontenc}
-  \newcommand{\PJLlogo at font}{\fontfamily{LinuxBiolinumT-TLF}\selectfont}
-\fi
-
-\newcommand{\PJLSigmaJ}{%
-  \vbox{\offinterlineskip
-    \ialign{%
-      \hfil##\hfil\cr
-      \hidewidth\hskip0.15ex\scalebox{0.4}{\rotatebox{-10}{\usefont{U}{zeur}{b}{n}\symbol{"06}}}\hidewidth\cr
-      \noalign{\kern0.15ex}
-      \j\cr
-    }%
-  }%
-}
-
-\newcommand{\ProjLib at generic}[1]{%
-  \begingroup
-  \normalfont\PJLlogo at font
-  \textcolor{blue!60!cyan}{P}%
-  \textcolor{blue!45!cyan}{r}%
-  \textcolor{blue!30!cyan}{o}%
-  \textcolor{green!70!black}{#1}%
-  \textcolor{red!20!yellow}{L}%
-  \textcolor{red!40!yellow}{i}%
-  \textcolor{red!60!yellow}{b}%
-  \endgroup
-}
-\DeclareRobustCommand*{\ProjLib}{\ProjLib at generic{\PJLSigmaJ}}
-\DeclareRobustCommand*{\ProjLibText}{\ProjLib at generic{j}}
-%</PJLlogo>
-%
-%<*PJLmath>
-%# 载入常用数学宏包
-%# Load commonly used math packages
-\RequirePackage{mathtools}
-\RequirePackage{mathrsfs}
-\@ifpackageloaded{unicode-math}{}{\RequirePackage{amssymb}}
-
-%%================================
-%% Shorthands
-%%================================
-%# 常见代数结构的捷径
-%# Shortcuts for commonly used algebraic structures
-\providecommand{\N}{\ensuremath{\mathbb{N}}}
-\providecommand{\Z}{\ensuremath{\mathbb{Z}}}
-\providecommand{\Q}{\ensuremath{\mathbb{Q}}}
-\providecommand{\R}{\ensuremath{\mathbb{R}}}
-\providecommand{\C}{\ensuremath{\mathbb{C}}}
-\providecommand{\F}{\ensuremath{\mathbb{F}}}
-\providecommand{\A}{\ensuremath{\mathbb{A}}}
-
-%# mathbb 的捷径
-%# Shortcuts for blackboard bold face
-\providecommand{\bb}[1]{\ensuremath{\mathbb{#1}}}
-\providecommand{\bbA}{\ensuremath{\mathbb{A}}}
-\providecommand{\bbB}{\ensuremath{\mathbb{B}}}
-\providecommand{\bbC}{\ensuremath{\mathbb{C}}}
-\providecommand{\bbD}{\ensuremath{\mathbb{D}}}
-\providecommand{\bbE}{\ensuremath{\mathbb{E}}}
-\providecommand{\bbF}{\ensuremath{\mathbb{F}}}
-\providecommand{\bbG}{\ensuremath{\mathbb{G}}}
-\providecommand{\bbH}{\ensuremath{\mathbb{H}}}
-\providecommand{\bbI}{\ensuremath{\mathbb{I}}}
-\providecommand{\bbJ}{\ensuremath{\mathbb{J}}}
-\providecommand{\bbK}{\ensuremath{\mathbb{K}}}
-\providecommand{\bbL}{\ensuremath{\mathbb{L}}}
-\providecommand{\bbM}{\ensuremath{\mathbb{M}}}
-\providecommand{\bbN}{\ensuremath{\mathbb{N}}}
-\providecommand{\bbO}{\ensuremath{\mathbb{O}}}
-\providecommand{\bbP}{\ensuremath{\mathbb{P}}}
-\providecommand{\bbQ}{\ensuremath{\mathbb{Q}}}
-\providecommand{\bbR}{\ensuremath{\mathbb{R}}}
-\providecommand{\bbS}{\ensuremath{\mathbb{S}}}
-\providecommand{\bbT}{\ensuremath{\mathbb{T}}}
-\providecommand{\bbU}{\ensuremath{\mathbb{U}}}
-\providecommand{\bbV}{\ensuremath{\mathbb{V}}}
-\providecommand{\bbW}{\ensuremath{\mathbb{W}}}
-\providecommand{\bbX}{\ensuremath{\mathbb{X}}}
-\providecommand{\bbY}{\ensuremath{\mathbb{Y}}}
-\providecommand{\bbZ}{\ensuremath{\mathbb{Z}}}
-
-%# mathcal 的捷径
-%# Shortcuts for calligraphic shape
-\providecommand{\mc}[1]{\ensuremath{\mathcal{#1}}}
-\providecommand{\mcA}{\ensuremath{\mathcal{A}}}
-\providecommand{\mcB}{\ensuremath{\mathcal{B}}}
-\providecommand{\mcC}{\ensuremath{\mathcal{C}}}
-\providecommand{\mcD}{\ensuremath{\mathcal{D}}}
-\providecommand{\mcE}{\ensuremath{\mathcal{E}}}
-\providecommand{\mcF}{\ensuremath{\mathcal{F}}}
-\providecommand{\mcG}{\ensuremath{\mathcal{G}}}
-\providecommand{\mcH}{\ensuremath{\mathcal{H}}}
-\providecommand{\mcI}{\ensuremath{\mathcal{I}}}
-\providecommand{\mcJ}{\ensuremath{\mathcal{J}}}
-\providecommand{\mcK}{\ensuremath{\mathcal{K}}}
-\providecommand{\mcL}{\ensuremath{\mathcal{L}}}
-\providecommand{\mcM}{\ensuremath{\mathcal{M}}}
-\providecommand{\mcN}{\ensuremath{\mathcal{N}}}
-\providecommand{\mcO}{\ensuremath{\mathcal{O}}}
-\providecommand{\mcP}{\ensuremath{\mathcal{P}}}
-\providecommand{\mcQ}{\ensuremath{\mathcal{Q}}}
-\providecommand{\mcR}{\ensuremath{\mathcal{R}}}
-\providecommand{\mcS}{\ensuremath{\mathcal{S}}}
-\providecommand{\mcT}{\ensuremath{\mathcal{T}}}
-\providecommand{\mcU}{\ensuremath{\mathcal{U}}}
-\providecommand{\mcV}{\ensuremath{\mathcal{V}}}
-\providecommand{\mcW}{\ensuremath{\mathcal{W}}}
-\providecommand{\mcX}{\ensuremath{\mathcal{X}}}
-\providecommand{\mcY}{\ensuremath{\mathcal{Y}}}
-\providecommand{\mcZ}{\ensuremath{\mathcal{Z}}}
-
-\providecommand{\cal}[1]{\ensuremath{\mathcal{#1}}}
-\providecommand{\calA}{\ensuremath{\mathcal{A}}}
-\providecommand{\calB}{\ensuremath{\mathcal{B}}}
-\providecommand{\calC}{\ensuremath{\mathcal{C}}}
-\providecommand{\calD}{\ensuremath{\mathcal{D}}}
-\providecommand{\calE}{\ensuremath{\mathcal{E}}}
-\providecommand{\calF}{\ensuremath{\mathcal{F}}}
-\providecommand{\calG}{\ensuremath{\mathcal{G}}}
-\providecommand{\calH}{\ensuremath{\mathcal{H}}}
-\providecommand{\calI}{\ensuremath{\mathcal{I}}}
-\providecommand{\calJ}{\ensuremath{\mathcal{J}}}
-\providecommand{\calK}{\ensuremath{\mathcal{K}}}
-\providecommand{\calL}{\ensuremath{\mathcal{L}}}
-\providecommand{\calM}{\ensuremath{\mathcal{M}}}
-\providecommand{\calN}{\ensuremath{\mathcal{N}}}
-\providecommand{\calO}{\ensuremath{\mathcal{O}}}
-\providecommand{\calP}{\ensuremath{\mathcal{P}}}
-\providecommand{\calQ}{\ensuremath{\mathcal{Q}}}
-\providecommand{\calR}{\ensuremath{\mathcal{R}}}
-\providecommand{\calS}{\ensuremath{\mathcal{S}}}
-\providecommand{\calT}{\ensuremath{\mathcal{T}}}
-\providecommand{\calU}{\ensuremath{\mathcal{U}}}
-\providecommand{\calV}{\ensuremath{\mathcal{V}}}
-\providecommand{\calW}{\ensuremath{\mathcal{W}}}
-\providecommand{\calX}{\ensuremath{\mathcal{X}}}
-\providecommand{\calY}{\ensuremath{\mathcal{Y}}}
-\providecommand{\calZ}{\ensuremath{\mathcal{Z}}}
-
-%# mathfrak 的捷径
-%# Shortcuts for Fraktur shape
-\providecommand{\mf}[1]{\ensuremath{\mathfrak{#1}}}
-\providecommand{\mfa}{\ensuremath{\mathfrak{a}}}
-\providecommand{\mfb}{\ensuremath{\mathfrak{b}}}
-\providecommand{\mfc}{\ensuremath{\mathfrak{c}}}
-\providecommand{\mfd}{\ensuremath{\mathfrak{d}}}
-\providecommand{\mfe}{\ensuremath{\mathfrak{e}}}
-\providecommand{\mff}{\ensuremath{\mathfrak{f}}}
-\providecommand{\mfg}{\ensuremath{\mathfrak{g}}}
-\providecommand{\mfh}{\ensuremath{\mathfrak{h}}}
-\providecommand{\mfi}{\ensuremath{\mathfrak{i}}}
-\providecommand{\mfj}{\ensuremath{\mathfrak{j}}}
-\providecommand{\mfk}{\ensuremath{\mathfrak{k}}}
-\providecommand{\mfl}{\ensuremath{\mathfrak{l}}}
-\providecommand{\mfm}{\ensuremath{\mathfrak{m}}}
-\providecommand{\mfn}{\ensuremath{\mathfrak{n}}}
-\providecommand{\mfo}{\ensuremath{\mathfrak{o}}}
-\providecommand{\mfp}{\ensuremath{\mathfrak{p}}}
-\providecommand{\mfq}{\ensuremath{\mathfrak{q}}}
-\providecommand{\mfr}{\ensuremath{\mathfrak{r}}}
-\providecommand{\mfs}{\ensuremath{\mathfrak{s}}}
-\providecommand{\mft}{\ensuremath{\mathfrak{t}}}
-\providecommand{\mfu}{\ensuremath{\mathfrak{u}}}
-\providecommand{\mfv}{\ensuremath{\mathfrak{v}}}
-\providecommand{\mfw}{\ensuremath{\mathfrak{w}}}
-\providecommand{\mfx}{\ensuremath{\mathfrak{x}}}
-\providecommand{\mfy}{\ensuremath{\mathfrak{y}}}
-\providecommand{\mfz}{\ensuremath{\mathfrak{z}}}
-\providecommand{\mfA}{\ensuremath{\mathfrak{A}}}
-\providecommand{\mfB}{\ensuremath{\mathfrak{B}}}
-\providecommand{\mfC}{\ensuremath{\mathfrak{C}}}
-\providecommand{\mfD}{\ensuremath{\mathfrak{D}}}
-\providecommand{\mfE}{\ensuremath{\mathfrak{E}}}
-\providecommand{\mfF}{\ensuremath{\mathfrak{F}}}
-\providecommand{\mfG}{\ensuremath{\mathfrak{G}}}
-\providecommand{\mfH}{\ensuremath{\mathfrak{H}}}
-\providecommand{\mfI}{\ensuremath{\mathfrak{I}}}
-\providecommand{\mfJ}{\ensuremath{\mathfrak{J}}}
-\providecommand{\mfK}{\ensuremath{\mathfrak{K}}}
-\providecommand{\mfL}{\ensuremath{\mathfrak{L}}}
-\providecommand{\mfM}{\ensuremath{\mathfrak{M}}}
-\providecommand{\mfN}{\ensuremath{\mathfrak{N}}}
-\providecommand{\mfO}{\ensuremath{\mathfrak{O}}}
-\providecommand{\mfP}{\ensuremath{\mathfrak{P}}}
-\providecommand{\mfQ}{\ensuremath{\mathfrak{Q}}}
-\providecommand{\mfR}{\ensuremath{\mathfrak{R}}}
-\providecommand{\mfS}{\ensuremath{\mathfrak{S}}}
-\providecommand{\mfT}{\ensuremath{\mathfrak{T}}}
-\providecommand{\mfU}{\ensuremath{\mathfrak{U}}}
-\providecommand{\mfV}{\ensuremath{\mathfrak{V}}}
-\providecommand{\mfW}{\ensuremath{\mathfrak{W}}}
-\providecommand{\mfX}{\ensuremath{\mathfrak{X}}}
-\providecommand{\mfY}{\ensuremath{\mathfrak{Y}}}
-\providecommand{\mfZ}{\ensuremath{\mathfrak{Z}}}
-
-\providecommand{\frak}[1]{\ensuremath{\mathfrak{#1}}}
-\providecommand{\fraka}{\ensuremath{\mathfrak{a}}}
-\providecommand{\frakb}{\ensuremath{\mathfrak{b}}}
-\providecommand{\frakc}{\ensuremath{\mathfrak{c}}}
-\providecommand{\frakd}{\ensuremath{\mathfrak{d}}}
-\providecommand{\frake}{\ensuremath{\mathfrak{e}}}
-\providecommand{\frakf}{\ensuremath{\mathfrak{f}}}
-\providecommand{\frakg}{\ensuremath{\mathfrak{g}}}
-\providecommand{\frakh}{\ensuremath{\mathfrak{h}}}
-\providecommand{\fraki}{\ensuremath{\mathfrak{i}}}
-\providecommand{\frakj}{\ensuremath{\mathfrak{j}}}
-\providecommand{\frakk}{\ensuremath{\mathfrak{k}}}
-\providecommand{\frakl}{\ensuremath{\mathfrak{l}}}
-\providecommand{\frakm}{\ensuremath{\mathfrak{m}}}
-\providecommand{\frakn}{\ensuremath{\mathfrak{n}}}
-\providecommand{\frako}{\ensuremath{\mathfrak{o}}}
-\providecommand{\frakp}{\ensuremath{\mathfrak{p}}}
-\providecommand{\frakq}{\ensuremath{\mathfrak{q}}}
-\providecommand{\frakr}{\ensuremath{\mathfrak{r}}}
-\providecommand{\fraks}{\ensuremath{\mathfrak{s}}}
-\providecommand{\frakt}{\ensuremath{\mathfrak{t}}}
-\providecommand{\fraku}{\ensuremath{\mathfrak{u}}}
-\providecommand{\frakv}{\ensuremath{\mathfrak{v}}}
-\providecommand{\frakw}{\ensuremath{\mathfrak{w}}}
-\providecommand{\frakx}{\ensuremath{\mathfrak{x}}}
-\providecommand{\fraky}{\ensuremath{\mathfrak{y}}}
-\providecommand{\frakz}{\ensuremath{\mathfrak{z}}}
-\providecommand{\frakA}{\ensuremath{\mathfrak{A}}}
-\providecommand{\frakB}{\ensuremath{\mathfrak{B}}}
-\providecommand{\frakC}{\ensuremath{\mathfrak{C}}}
-\providecommand{\frakD}{\ensuremath{\mathfrak{D}}}
-\providecommand{\frakE}{\ensuremath{\mathfrak{E}}}
-\providecommand{\frakF}{\ensuremath{\mathfrak{F}}}
-\providecommand{\frakG}{\ensuremath{\mathfrak{G}}}
-\providecommand{\frakH}{\ensuremath{\mathfrak{H}}}
-\providecommand{\frakI}{\ensuremath{\mathfrak{I}}}
-\providecommand{\frakJ}{\ensuremath{\mathfrak{J}}}
-\providecommand{\frakK}{\ensuremath{\mathfrak{K}}}
-\providecommand{\frakL}{\ensuremath{\mathfrak{L}}}
-\providecommand{\frakM}{\ensuremath{\mathfrak{M}}}
-\providecommand{\frakN}{\ensuremath{\mathfrak{N}}}
-\providecommand{\frakO}{\ensuremath{\mathfrak{O}}}
-\providecommand{\frakP}{\ensuremath{\mathfrak{P}}}
-\providecommand{\frakQ}{\ensuremath{\mathfrak{Q}}}
-\providecommand{\frakR}{\ensuremath{\mathfrak{R}}}
-\providecommand{\frakS}{\ensuremath{\mathfrak{S}}}
-\providecommand{\frakT}{\ensuremath{\mathfrak{T}}}
-\providecommand{\frakU}{\ensuremath{\mathfrak{U}}}
-\providecommand{\frakV}{\ensuremath{\mathfrak{V}}}
-\providecommand{\frakW}{\ensuremath{\mathfrak{W}}}
-\providecommand{\frakX}{\ensuremath{\mathfrak{X}}}
-\providecommand{\frakY}{\ensuremath{\mathfrak{Y}}}
-\providecommand{\frakZ}{\ensuremath{\mathfrak{Z}}}
-
-%# mathscr 的捷径
-%# Shortcuts for script shape
-\providecommand{\ms}[1]{\ensuremath{\mathscr{#1}}}
-\providecommand{\msA}{\ensuremath{\mathscr{A}}}
-\providecommand{\msB}{\ensuremath{\mathscr{B}}}
-\providecommand{\msC}{\ensuremath{\mathscr{C}}}
-\providecommand{\msD}{\ensuremath{\mathscr{D}}}
-\providecommand{\msE}{\ensuremath{\mathscr{E}}}
-\providecommand{\msF}{\ensuremath{\mathscr{F}}}
-\providecommand{\msG}{\ensuremath{\mathscr{G}}}
-\providecommand{\msH}{\ensuremath{\mathscr{H}}}
-\providecommand{\msI}{\ensuremath{\mathscr{I}}}
-\providecommand{\msJ}{\ensuremath{\mathscr{J}}}
-\providecommand{\msK}{\ensuremath{\mathscr{K}}}
-\providecommand{\msL}{\ensuremath{\mathscr{L}}}
-\providecommand{\msM}{\ensuremath{\mathscr{M}}}
-\providecommand{\msN}{\ensuremath{\mathscr{N}}}
-\providecommand{\msO}{\ensuremath{\mathscr{O}}}
-\providecommand{\msP}{\ensuremath{\mathscr{P}}}
-\providecommand{\msQ}{\ensuremath{\mathscr{Q}}}
-\providecommand{\msR}{\ensuremath{\mathscr{R}}}
-\providecommand{\msS}{\ensuremath{\mathscr{S}}}
-\providecommand{\msT}{\ensuremath{\mathscr{T}}}
-\providecommand{\msU}{\ensuremath{\mathscr{U}}}
-\providecommand{\msV}{\ensuremath{\mathscr{V}}}
-\providecommand{\msW}{\ensuremath{\mathscr{W}}}
-\providecommand{\msX}{\ensuremath{\mathscr{X}}}
-\providecommand{\msY}{\ensuremath{\mathscr{Y}}}
-\providecommand{\msZ}{\ensuremath{\mathscr{Z}}}
-
-\providecommand{\scr}[1]{\ensuremath{\mathscr{#1}}}
-\providecommand{\scrA}{\ensuremath{\mathscr{A}}}
-\providecommand{\scrB}{\ensuremath{\mathscr{B}}}
-\providecommand{\scrC}{\ensuremath{\mathscr{C}}}
-\providecommand{\scrD}{\ensuremath{\mathscr{D}}}
-\providecommand{\scrE}{\ensuremath{\mathscr{E}}}
-\providecommand{\scrF}{\ensuremath{\mathscr{F}}}
-\providecommand{\scrG}{\ensuremath{\mathscr{G}}}
-\providecommand{\scrH}{\ensuremath{\mathscr{H}}}
-\providecommand{\scrI}{\ensuremath{\mathscr{I}}}
-\providecommand{\scrJ}{\ensuremath{\mathscr{J}}}
-\providecommand{\scrK}{\ensuremath{\mathscr{K}}}
-\providecommand{\scrL}{\ensuremath{\mathscr{L}}}
-\providecommand{\scrM}{\ensuremath{\mathscr{M}}}
-\providecommand{\scrN}{\ensuremath{\mathscr{N}}}
-\providecommand{\scrO}{\ensuremath{\mathscr{O}}}
-\providecommand{\scrP}{\ensuremath{\mathscr{P}}}
-\providecommand{\scrQ}{\ensuremath{\mathscr{Q}}}
-\providecommand{\scrR}{\ensuremath{\mathscr{R}}}
-\providecommand{\scrS}{\ensuremath{\mathscr{S}}}
-\providecommand{\scrT}{\ensuremath{\mathscr{T}}}
-\providecommand{\scrU}{\ensuremath{\mathscr{U}}}
-\providecommand{\scrV}{\ensuremath{\mathscr{V}}}
-\providecommand{\scrW}{\ensuremath{\mathscr{W}}}
-\providecommand{\scrX}{\ensuremath{\mathscr{X}}}
-\providecommand{\scrY}{\ensuremath{\mathscr{Y}}}
-\providecommand{\scrZ}{\ensuremath{\mathscr{Z}}}
-
-%%================================
-%% General symbols
-%%================================
-\providecommand{\abs}[1]{\lvert#1\rvert}
-\providecommand{\norm}[1]{\lVert#1\rVert}
-
-\providecommand*{\injection}{\ensuremath{\hookrightarrow}}
-\providecommand*{\surjection}{\ensuremath{\twoheadrightarrow}}
-\providecommand*{\bijection}{\ensuremath{\xrightarrow{\sim}}}
-
-%%================================
-%% Symbols for number theory
-%%================================
-\ifdefined\@@pmod\else
-\let\@@pmod\pmod
-\DeclareRobustCommand{\pmod}{\@ifstar\@pmods\@@pmod}
-\def\@pmods#1{\mkern4mu({\operator at font mod}\mkern 6mu#1)}
-\fi
-
-\providecommand{\genlegendre}[4]{%
-  \genfrac{(}{)}{}{#1}{#3}{#4}%
-  \if\relax\detokenize{#2}\relax\else_{\!#2}\fi%
-}
-\providecommand{\legendre}[3][]{\genlegendre{}{#1}{#2}{#3}}
-\providecommand{\dlegendre}[3][]{\genlegendre{0}{#1}{#2}{#3}}
-\providecommand{\tlegendre}[3][]{\genlegendre{1}{#1}{#2}{#3}}
-%</PJLmath>
-%
-%<*PJLpaper>
-\RequirePackage{ifthen}
-
-%# 这段代码定义了宏包中的选项。
-%# This code defines the options in the package.
-\SetupKeyvalOptions{%
-    family = @PJLpaper,
-    prefix = @PJLpaper@,
-    setkeys=\kvsetkeys
-}
-
-\DeclareStringOption[normal]{paperstyle}
-%# 几种纸张颜色的选项
-%# Several options of different paper color style
-\DeclareVoidOption{yellowpaper}{\kvsetkeys{@PJLpaper}{paperstyle=yellow}}
-\DeclareVoidOption{darkpaper}{\kvsetkeys{@PJLpaper}{paperstyle=dark}}
-\DeclareVoidOption{nordpaper}{\kvsetkeys{@PJLpaper}{paperstyle=nord}}
-%# 预览模式:减去边框
-%# Preview mode: crop the edge
-\DeclareBoolOption[false]{preview}
-%# 处理选项
-%# Process options
-\ProcessKeyvalOptions*\relax
-
-%%================================
-%% Preview mode
-%%================================
-\ifdefined\PJLnoPreview\else%
-    \if at PJLpaper@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{\@PJLpaper at paperstyle}{yellow}}
-{
-    \definecolor{paper}{RGB}{247,246,233}
-}
-{\relax}
-
-\ifthenelse{\equal{\@PJLpaper at paperstyle}{dark}}
-{
-    \definecolor{paper}{RGB}{30,30,30}
-    \definecolor{maintext}{RGB}{207,207,207}
-}
-{\relax}
-
-\ifthenelse{\equal{\@PJLpaper at paperstyle}{nord}}
-{
-    \definecolor{paper}{RGB}{46,52,64}
-    \definecolor{maintext}{RGB}{214,220,230}
-}
-{\relax}
-
-\newcommand{\PJLglobalcolor}[1]{%
-    \color{#1}\global\let\default at color\current at color
-}
-
-%# 设置纸张颜色、文字颜色
-%# Set the paper and text color
-\pagecolor{paper}
-\PJLglobalcolor{maintext}
-\AtEndPreamble{
-\ifdefined\tcbset%
-    \tcbset{colupper=maintext,collower=maintext}
-\fi
-}
-%</PJLpaper>
-%
-%<*PJLthm>
-%# 这段代码定义了宏包中的选项。
-%# This code defines the options in the package.
-\SetupKeyvalOptions{%
-    family = @PJLthm,
-    prefix = @PJLthm@
-}
-%# 不建立定理类环境
-%# Do not setup theorem-like environments
-\DeclareBoolOption[false]{nothms}
-%# 推迟建立定理类环境
-%# Delay the setup of theorem-like environments to the end of the preamble
-\DeclareBoolOption[false]{delaythms}
-%# 不编号定理类环境
-%# Do not number theorem-like environments
-\DeclareBoolOption[false]{nothmnum}
-%# 指定如何编号定理类环境
-%# Number theorem-like environments With ...
-\DeclareStringOption{thmnum}[PJL at thmnum@default]
-%# 草稿模式或快速模式
-%# Draft mode or fast mode
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-%# 引用的名称将随当前语言的不同而改变
-%# Reference name will change with the current language
-\DeclareBoolOption[true]{regionalref}
-\DeclareBoolOption[false]{originalref}
-%# 名称采用详尽设置或简易设置
-%# Detailed or simple settings for the name of theorem-like environments
-\DeclareBoolOption[true]{complexname}
-\DeclareBoolOption[false]{simplename}
-%# 处理选项
-%# Process options
-\ProcessKeyvalOptions*\relax
-%# 下面的代码设定了选项之间的关系
-%# The following code sets the relationship between options
-\if at PJLthm@originalref
-    \@PJLthm at regionalreffalse
-\fi
-\if at PJLthm@simplename
-    \@PJLthm at complexnamefalse
-\fi
-\if at PJLthm@draft
-    \@PJLthm at fasttrue
-\fi
-\if at PJLthm@fast
-    \@PJLthm at regionalreftrue
-\fi
-
-\@ifclassloaded{beamer}{%
-    \RequirePackage{silence}
-    \WarningFilter{cleveref}{hyperref package loaded with implicit=false option}
-    \@PJLthm at nothmnumtrue%
-    \if at PJLthm@nothms\else%
-        \let\theorem\relax
-        \let\lemma\relax
-        \let\corollary\relax
-        \let\definition\relax
-        \let\fact\relax
-        \let\example\relax
-        \let\problem\relax
-    \fi
-}{}
-
-\RequirePackage{PJLlang}
-\RequirePackage{amsmath,amsthm}
-\RequirePackage{aliascnt}
-\PassOptionsToPackage{nameinlink}{cleveref}
-\RequirePackage{crefthe}
-
-%# 用于命名定理类环境的用户命令
-%# Macro for naming theorems
-\RequirePackage{xparse}
-\RequirePackage{xstring}
-\NewDocumentCommand{\NameTheorem}{omm}{%
-    \protected at edef\PJLthm at temp{#2}%
-    \expandafter\IfEndWith\expandafter{\PJLthm at temp}{*}{%
-        \expandafter\StrGobbleRight\expandafter{\PJLthm at temp}{1}[\PJLthm at temp]%
-    }{}%
-    \IfSubStr{\detokenize{#3}}{=}{% key-value mode
-        \IfValueTF{#1}{%
-            \CreateTheoremSetKeys{\PJLthm at temp}{#1={#3}}%
-        }{%
-            \CreateTheoremSetKeys{\PJLthm at temp}{#3}%
-        }%
-    }{% simple mode
-        \IfValueTF{#1}{%
-            \expandafter\def\csname\PJLthm at temp name\StrToABBR{#1}\endcsname{#3}%
-        }{%
-            \expandafter\def\csname\PJLthm at temp nameEN\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameFR\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameDE\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameIT\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp namePT\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameBR\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameES\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameCN\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameTC\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameJP\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameRU\endcsname{#3}%
-        }%
-    }%
-}
-
-%# 用于创建定理类环境的用户命令
-%# Macro for creating theorems
-\newcommand\PassFirstToSecond[2]{#2{#1}}%
-\NewDocumentCommand{\CreateTheorem}{sm}{%
-    \begingroup
-    \protected at edef\PJLthm at temp{#2}%
-    \expandafter\IfEndWith\expandafter{\PJLthm at temp}{*}{%
-        \expandafter\StrGobbleRight\expandafter{\PJLthm at temp}{1}[\PJLthm at temp]%
-        \PassFirstToSecond{*}%
-    }{%
-        \PassFirstToSecond{}%
-    }%
-    {\expandafter\PassFirstToSecond%
-        \expandafter{\PJLthm at temp}{\endgroup\InnerCreateTheorem{#1}}}%
-}%
-\if at PJLthm@regionalref
-\NewDocumentCommand{\InnerCreateTheorem}{mmmod<>d()g}{%
-% #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
-% #7 = key-value configuration of names
-    \IfBooleanTF{#1}{%
-        \IfValueTF{#4}
-            {\@firstoftwo}
-            {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}%
-    }{%
-        \IfValueTF{#4}
-            {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{
-            \@secondoftwo}
-    }%
-    {%
-        \GenericError{}%
-        {\string\CreateTheorem\space syntax error\on at 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*{#2#3}{\csname#2name\csname\languagename ABBR\endcsname\endcsname}
-            }{%
-                \IfValueTF{#5}{%
-                    \newtheorem{PJL#2#3}{\csname#2name\csname\languagename ABBR\endcsname\endcsname}[#5]%
-                    \newaliascnt{#2#3}{PJL#2#3}%
-                }{%
-                    \IfValueTF{#4}{%
-                            \newtheorem{PJL#2#3}[#4]{\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
-                        }{%
-                            \newtheorem{PJL#2#3}{\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
-                            \newaliascnt{#2#3}{PJL#2#3}%
-                        }%
-                }%
-                \ifcsname cref at PJL#2#3 at name\endcsname\else%
-                    \crefname{PJL#2#3}%
-                        {\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
-                        {\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
-                \fi%
-                \ifcsname Cref at PJL#2#3 at name\endcsname\else%
-                    \Crefname{PJL#2#3}%
-                        {\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
-                        {\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
-                \fi%
-                \NewDocumentEnvironment{#2#3}{}
-                    {\begin{PJL#2#3}}
-                    {\end{PJL#2#3}}
-            }%
-        }%
-    }%
-    \IfValueTF{#7}{%
-        \NameTheorem{#2}{#7}%
-    }{}%
-}%
-\else
-\NewDocumentCommand{\InnerCreateTheorem}{mmmod<>d()g}{%
-% #1 = Tokens denoting an xparse-boolean value;
-%      value "true" -> the call was \CreateTheorem*{...}...
-%      value "false" -> the call was \CreateTheorem{...}...
-%      This indicates whether the "starred" variant or the
-%      "unstarred" variant of \CreateTheorem was called.
-% #2 = Name of environment to define. One trailing
-%      star is removed from the environment-name provided 
-%      to \CreateTheorem if that environment-name has
-%      trailing stars.
-% #3 = If the environment-name provided to \CreateTheorem has
-%      trailing stars: A star (*).
-%      If the environment-name provided to \CreateTheorem has
-%      no trailing stars: Empty/no tokens at all.
-% #4 = numbered like=name of counter like which the environment
-%      shall be numbered.
-% #5 = numbered within=name of counter which is superordinate
-%      to the environment's counter and whose stepping resets
-%      the environment's counter.
-% #6 = existed environment name (the environment to copy)
-% #7 = key-value configuration of names
-    \IfBooleanTF{#1}{%
-        \IfValueTF{#4}
-            {\@firstoftwo}
-            {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}%
-    }{%
-        \IfValueTF{#4}
-            {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{
-            \@secondoftwo}
-    }%
-    {%
-        \GenericError{}%
-        {\string\CreateTheorem\space syntax error\on at line}{%
-        You cannot call the starred variant with optional argument,\MessageBreak
-        nor call the unstarred variant with several optional arguments.}%
-        {%
-            Allowed usage:\MessageBreak\MessageBreak
-            \CreateTheorem*{(name of environment)}\MessageBreak
-            \CreateTheorem{(name of environment)}\MessageBreak
-            \CreateTheorem{(name of environment)}[(numbered like)]\MessageBreak
-            \CreateTheorem{(name of environment)}<(numbered within)>\MessageBreak
-            \CreateTheorem{(name of environment)}((existed environment))\MessageBreak
-        }%
-    }{%
-        \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*{#2IT#3}{\csname#2nameIT\endcsname}%
-%                 \newtheorem*{#2PT#3}{\csname#2namePT\endcsname}%
-%                 \newtheorem*{#2BR#3}{\csname#2nameBR\endcsname}%
-%                 \newtheorem*{#2ES#3}{\csname#2nameES\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}%
-                \if at PJLlang@enable at EN\expandafter\PassFirstToSecond\expandafter{\csname#2nameEN\endcsname}{\newtheorem*{#2EN#3}}\fi%
-                \if at PJLlang@enable at FR\expandafter\PassFirstToSecond\expandafter{\csname#2nameFR\endcsname}{\newtheorem*{#2FR#3}}\fi%
-                \if at PJLlang@enable at DE\expandafter\PassFirstToSecond\expandafter{\csname#2nameDE\endcsname}{\newtheorem*{#2DE#3}}\fi%
-                \if at PJLlang@enable at IT\expandafter\PassFirstToSecond\expandafter{\csname#2nameIT\endcsname}{\newtheorem*{#2IT#3}}\fi%
-                \if at PJLlang@enable at PT\expandafter\PassFirstToSecond\expandafter{\csname#2namePT\endcsname}{\newtheorem*{#2PT#3}}\fi%
-                \if at PJLlang@enable at BR\expandafter\PassFirstToSecond\expandafter{\csname#2nameBR\endcsname}{\newtheorem*{#2BR#3}}\fi%
-                \if at PJLlang@enable at ES\expandafter\PassFirstToSecond\expandafter{\csname#2nameES\endcsname}{\newtheorem*{#2ES#3}}\fi%
-                \if at PJLlang@enable at CN\expandafter\PassFirstToSecond\expandafter{\csname#2nameCN\endcsname}{\newtheorem*{#2CN#3}}\fi%
-                \if at PJLlang@enable at TC\expandafter\PassFirstToSecond\expandafter{\csname#2nameTC\endcsname}{\newtheorem*{#2TC#3}}\fi%
-                \if at PJLlang@enable at JP\expandafter\PassFirstToSecond\expandafter{\csname#2nameJP\endcsname}{\newtheorem*{#2JP#3}}\fi%
-                \if at PJLlang@enable at RU\expandafter\PassFirstToSecond\expandafter{\csname#2nameRU\endcsname}{\newtheorem*{#2RU#3}}\fi%
-            }{%
-                \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}}%
-                }%
-                %---------------------------------------------------------------
-                \if at PJLlang@enable at EN\CreateTheoremNumberedLikeAliasCounter{#2}{EN}{#3}\fi%
-                \if at PJLlang@enable at FR\CreateTheoremNumberedLikeAliasCounter{#2}{FR}{#3}\fi%
-                \if at PJLlang@enable at DE\CreateTheoremNumberedLikeAliasCounter{#2}{DE}{#3}\fi%
-                \if at PJLlang@enable at IT\CreateTheoremNumberedLikeAliasCounter{#2}{IT}{#3}\fi%
-                \if at PJLlang@enable at PT\CreateTheoremNumberedLikeAliasCounter{#2}{PT}{#3}\fi%
-                \if at PJLlang@enable at BR\CreateTheoremNumberedLikeAliasCounter{#2}{BR}{#3}\fi%
-                \if at PJLlang@enable at ES\CreateTheoremNumberedLikeAliasCounter{#2}{ES}{#3}\fi%
-                \if at PJLlang@enable at CN\CreateTheoremNumberedLikeAliasCounter{#2}{CN}{#3}\fi%
-                \if at PJLlang@enable at TC\CreateTheoremNumberedLikeAliasCounter{#2}{TC}{#3}\fi%
-                \if at PJLlang@enable at JP\CreateTheoremNumberedLikeAliasCounter{#2}{JP}{#3}\fi%
-                \if at PJLlang@enable at RU\CreateTheoremNumberedLikeAliasCounter{#2}{RU}{#3}\fi%
-                %---------------------------------------------------------------
-            }%
-            \NewDocumentEnvironment{#2#3}{}
-                {\csname#2\csname\languagename ABBR\endcsname#3\endcsname}%
-                {\csname end#2\csname\languagename ABBR\endcsname#3\endcsname}%
-        }%
-    }%
-    \IfValueTF{#7}{%
-        \NameTheorem{#2}{#7}%
-    }{}%
-}%
-\NewDocumentCommand{\CreateTheoremNumberedLikeAliasCounter}{mmm}{%
-    \newaliascnt{#1#2#3}{#1#3}%
-%     \newtheorem{#1#2#3}[{#1#2#3}]{\csname#1name#2\endcsname}%
-    \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}{\newtheorem{#1#2#3}[{#1#2#3}]}%
-    \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}%
-    \ifcsname cref@#1#2#3 at name\endcsname\else%
-        \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}%
-        {%
-            \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}%
-            {\crefname{#1#2#3}}%
-        }%
-    \fi%
-    \ifcsname Cref@#1#2#3 at name\endcsname\else%
-        \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}%
-        {%
-            \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}%
-            {\Crefname{#1#2#3}}%
-        }%
-    \fi%
-}%
-\fi
-
-% See https://tex.stackexchange.com/a/610604
-\ExplSyntaxOn
-
-% Helper-macros/scratch-macros
-%-----------------------------
-\cs_new:Nn  \PJLthm_exchange_i_iii_ii:nnn  { #1 {#3} {#2} }
-\cs_new:Nn  \__PJLthm_languageprefix:  {}
-\cs_new:Nn  \__PJLthm_countername:  {}
-
-% Message-management:
-%--------------------
-\msg_new:nnnn {PJLthm}
-              {Undefined Language Dependent Specification Class}
-              {\token_to_str:N \CreateTheorem :\ Value\ `\tl_to_str:n{#2}'\ for\ invalid\ key\ `#1'.} 
-              {Providing\ Language-dependent\ specifications\ for\ element\ `#1'\ is\ currently\ not\ implemented.}
-
-% Nested key=value-interface by means of package l3keys:
-%-------------------------------------------------------
-% (l3keys is similar to pgfkeys.)
-% The outer level of key=value-specifications, i.e.,   <language-ID>={...},
-% is processed via  \keyval_parse:nnn  which was added tpo expl3 in 2020/12/19.
-% The inner level of key=value-specifications,
-%   i.e., the single keys whose values are to be specified dependant on the language,
-%   i.e., the "..."-content of the outer lever's {...},
-% is processed via  \keys_set:nn  .
-% The keys for the inner level are defined via  \keys_define:nn .
-
-\NewDocumentCommand \CreateTheoremSetKeys { mm } {
-% #1 = name of counter
-% #2 = keyval-list of language-specifications
-  \cs_set:Nn \__PJLthm_countername: {#1}
-  \keyval_parse:nnn { \PJLthm_exchange_i_iii_ii:nnn { \PJLthm_setlanguagespecificparameters:nn } {} } 
-                    { \PJLthm_setlanguagespecificparameters:nn }
-                    { #2 }
-}
-
-\cs_new_protected:Nn \PJLthm_setlanguagespecificparameters:nn {
-% #1 = language-prefix
-% #2 = key-val-list for language whose prefix is language-prefix
-  \cs_set:Nx \__PJLthm_languageprefix: {\StrToABBR{#1}}
-  \exp_args:No \tl_if_empty:nTF {\__PJLthm_languageprefix:} 
-    { \msg_error:nn { PJLthm }
-                    { No~language~"\exp_not:n{#1}"~defined }
-    }%
-    {%
-        \keys_set:nn { PJLthm } { #2 } 
-    }%
-}%
-
-\keys_define:nn { PJLthm } {
-  crefname.code:n  = \cs_if_exist:NTF \crefname  {
-                        \ifbool{@PJLthm at regionalref}{
-                            \exp_args:Nx \PJLthm at setcrefinnername{PJL\__PJLthm_countername: \__PJLthm_languageprefix: }#1
-                            \exp_args:Nx \PJLthm at setcrefname{PJL\__PJLthm_countername: }
-                        }{
-                            \exp_args:Nx \crefname {\__PJLthm_countername: \__PJLthm_languageprefix: }#1
-                        }
-                     }{},
-  crefname.value_required:n = true,
-  Crefname.code:n  = \cs_if_exist:NTF \Crefname  {
-                        \ifbool{@PJLthm at regionalref}{
-                            \exp_args:Nx \PJLthm at setCrefinnername{PJL\__PJLthm_countername: \__PJLthm_languageprefix: }#1
-                            \exp_args:Nx \PJLthm at setCrefname{PJL\__PJLthm_countername: }
-                        }{
-                            \exp_args:Nx \Crefname {\__PJLthm_countername: \__PJLthm_languageprefix: }#1
-                        }
-                     }{},
-  Crefname.value_required:n = true,
-  name.code:n  = \exp_args:Nx \cs_set:cpn {\__PJLthm_countername: name \__PJLthm_languageprefix:} {#1},
-  name.value_required:n = true,
-  autorefname.code:n  = \exp_args:Nx \cs_set:cpn  {\__PJLthm_countername: \__PJLthm_languageprefix: autorefname} {#1},
-  autorefname.value_required:n = true,
-  theoremheading.code:n= \exp_args:Nx \cs_set:cpn  {\__PJLthm_countername: \__PJLthm_languageprefix: heading} {#1},
-  theoremheading.value_required:n = true,
-  the.code:n= \exp_args:Nx \cs_set:cpn  {the \__PJLthm_countername: \__PJLthm_languageprefix: } {#1},
-  the.value_required:n = true,
-  %
-  % Define keys for more Language Dependent Specification Classes.
-  %
-  unknown.code:n = \msg_error:nnxx {PJLthm} 
-                                   {Undefined Language Dependent Specification Class}
-                                   {\exp_args:No \exp_not:n \l_keys_key_str}
-                                   {\exp_not:n{#1}},
-}
-
-\ExplSyntaxOff
-
-% Some command for regionalref mode
-\newcommand{\PJLthm at setcrefinnername}[3]{%
-    \expandafter\def\csname PJLthm at cref@#1 at name\endcsname{#2}%
-    \expandafter\def\csname PJLthm at cref@#1 at name@plural\endcsname{#3}%
-}
-\newcommand{\PJLthm at setCrefinnername}[3]{%
-    \expandafter\def\csname PJLthm at Cref@#1 at name\endcsname{#2}%
-    \expandafter\def\csname PJLthm at Cref@#1 at name@plural\endcsname{#3}%
-}
-
-\newcommand{\PJLthm at setcrefname}[1]{%
-    \crefname{#1}%
-        {\csname PJLthm at cref@#1\csname\languagename ABBR\endcsname @name\endcsname}%
-        {\csname PJLthm at cref@#1\csname\languagename ABBR\endcsname @name at plural\endcsname}%
-}
-\newcommand{\PJLthm at setCrefname}[1]{%
-    \Crefname{#1}%
-        {\csname PJLthm at Cref@#1\csname\languagename ABBR\endcsname @name\endcsname}%
-        {\csname PJLthm at Cref@#1\csname\languagename ABBR\endcsname @name at plural\endcsname}%
-}
-
-%# 设置定理类环境名称
-%# Set the names of theorem-like environments
-\ifbool{@PJLthm at complexname}{
-    \NameTheorem{theorem}{
-        EN = {
-            name = {Theorem},
-            crefname = {theorem}{theorems},
-            Crefname = {Theorem}{Theorems},
-        },
-        FR = {
-            name = {Théorème},
-            crefname = {\crefthemark{le} théorème}{\crefthemark{les} théorèmes},
-            Crefname = {Le théorème}{Les théorèmes},
-        },
-        DE = {
-            name = {Satz},
-            crefname = {Satz}{Sätze},
-            Crefname = {Satz}{Sätze},
-        },
-        IT = {
-            name = {Teorema},
-            crefname = {\crefthemark{il} teorema}{\crefthemark{i} teoremi},
-            Crefname = {Il teorema}{I teoremi},
-        },
-        PT = {
-            name = {Teorema},
-            crefname = {\crefthemark{o} teorema}{\crefthemark{os} teoremas},
-            Crefname = {O teorema}{Os teoremas},
-        },
-        BR = {
-            name = {Teorema},
-            crefname = {\crefthemark{o} teorema}{\crefthemark{os} teoremas},
-            Crefname = {O teorema}{Os teoremas},
-        },
-        ES = {
-            name = {Teorema},
-            crefname = {\crefthemark{el} teorema}{los teoremas},
-            Crefname = {El teorema}{Los teoremas},
-        },
-        CN = {
-            name = {定理},
-            crefname = {定理}{定理},
-            Crefname = {定理}{定理},
-        },
-        TC = {
-            name = {定理},
-            crefname = {定理}{定理},
-            Crefname = {定理}{定理},
-        },
-        JP = {
-            name = {定理},
-            crefname = {定理}{定理},
-            Crefname = {定理}{定理},
-        },
-        RU = {
-            name = {Теорема},
-            crefname = {теорема}{теоремы},
-            Crefname = {Теорема}{Теоремы},
-        },
-    }
-    \NameTheorem{lemma}{
-        EN = {
-            name = {Lemma},
-            crefname = {lemma}{Lemmas},
-            Crefname = {Lemma}{Lemmas},
-        },
-        FR = {
-            name = {Lemme},
-            crefname = {\crefthemark{le} lemme}{\crefthemark{les} lemmes},
-            Crefname = {Le lemme}{Les lemmes},
-        },
-        DE = {
-            name = {Lemma},
-            crefname = {Lemma}{Lemmata},
-            Crefname = {Lemma}{Lemmata},
-        },
-        IT = {
-            name = {Lemma},
-            crefname = {\crefthemark{il} lemma}{\crefthemark{i} lemmi},
-            Crefname = {Il lemma}{I lemmi},
-        },
-        PT = {
-            name = {Lema},
-            crefname = {\crefthemark{o} lema}{\crefthemark{os} lemas},
-            Crefname = {O lema}{Os lemas},
-        },
-        BR = {
-            name = {Lema},
-            crefname = {\crefthemark{o} lema}{\crefthemark{os} lemas},
-            Crefname = {O lema}{Os lemas},
-        },
-        ES = {
-            name = {Lema},
-            crefname = {\crefthemark{el} lema}{las lemas},
-            Crefname = {El lema}{Las lemas},
-        },
-        CN = {
-            name = {引理},
-            crefname = {引理}{引理},
-            Crefname = {引理}{引理},
-        },
-        TC = {
-            name = {引理},
-            crefname = {引理}{引理},
-            Crefname = {引理}{引理},
-        },
-        JP = {
-            name = {補題},
-            crefname = {補題}{補題},
-            Crefname = {補題}{補題},
-        },
-        RU = {
-            name = {Лемма},
-            crefname = {лемма}{леммы},
-            Crefname = {Лемма}{Леммы},
-        },
-    }
-    \NameTheorem{proposition}{
-        EN = {
-            name = {Proposition},
-            crefname = {proposition}{propositions},
-            Crefname = {Proposition}{Propositions},
-        },
-        FR = {
-            name = {Proposition},
-            crefname = {\crefthemark{la} proposition}{\crefthemark{les} propositions},
-            Crefname = {La proposition}{Les propositions},
-        },
-        DE = {
-            name = {Proposition},
-            crefname = {Proposition}{Propositionen},
-            Crefname = {Proposition}{Propositionen},
-        },
-        IT = {
-            name = {Proposizione},
-            crefname = {\crefthemark{la} proposizione}{\crefthemark{le} proposte},
-            Crefname = {La proposizione}{Le proposte},
-        },
-        PT = {
-            name = {Proposição},
-            crefname = {\crefthemark{a} proposição}{\crefthemark{as} proposições},
-            Crefname = {A proposição}{As proposições},
-        },
-        BR = {
-            name = {Proposição},
-            crefname = {\crefthemark{a} proposição}{\crefthemark{as} proposições},
-            Crefname = {A proposição}{As proposições},
-        },
-        ES = {
-            name = {Proposición},
-            crefname = {la proposición}{las proposiciones},
-            Crefname = {La proposición}{Las proposiciones},
-        },
-        CN = {
-            name = {命题},
-            crefname = {命题}{命题},
-            Crefname = {命题}{命题},
-        },
-        TC = {
-            name = {命題},
-            crefname = {命題}{命題},
-            Crefname = {命題}{命題},
-        },
-        JP = {
-            name = {命題},
-            crefname = {命題}{命題},
-            Crefname = {命題}{命題},
-        },
-        RU = {
-            name = {Предложение},
-            crefname = {предложение}{предложения},
-            Crefname = {Предложение}{Предложения},
-        },
-    }
-    \NameTheorem{corollary}{
-        EN = {
-            name = {Corollary},
-            crefname = {corollary}{corollaries},
-            Crefname = {Corollary}{Corollaries},
-        },
-        FR = {
-            name = {Corollaire},
-            crefname = {\crefthemark{le} corollaire}{\crefthemark{les} corollaires},
-            Crefname = {Le corollaire}{Les corollaires},
-        },
-        DE = {
-            name = {Korollar},
-            crefname = {Korollar}{Korollare},
-            Crefname = {Korollar}{Korollare},
-        },
-        IT = {
-            name = {Corollario},
-            crefname = {\crefthemark{il} corollario}{\crefthemark{i} corollari},
-            Crefname = {Il corollario}{I corollari},
-        },
-        PT = {
-            name = {Corolário},
-            crefname = {\crefthemark{o} corolário}{\crefthemark{os} corolários},
-            Crefname = {O corolário}{Os corolários},
-        },
-        BR = {
-            name = {Corolário},
-            crefname = {\crefthemark{o} corolário}{\crefthemark{os} corolários},
-            Crefname = {O corolário}{Os corolários},
-        },
-        ES = {
-            name = {Corolario},
-            crefname = {\crefthemark{el} corolario}{los corolarios},
-            Crefname = {El corolario}{Los corolarios},
-        },
-        CN = {
-            name = {推论},
-            crefname = {推论}{推论},
-            Crefname = {推论}{推论},
-        },
-        TC = {
-            name = {推論},
-            crefname = {推論}{推論},
-            Crefname = {推論}{推論},
-        },
-        JP = {
-            name = {系},
-            crefname = {系}{系},
-            Crefname = {系}{系},
-        },
-        RU = {
-            name = {Следствие},
-            crefname = {следствие}{следствия},
-            Crefname = {Следствие}{Следствия},
-        },
-    }
-    \NameTheorem{property}{
-        EN = {
-            name = {Property},
-            crefname = {property}{properties},
-            Crefname = {Property}{Properties},
-        },
-        FR = {
-            name = {Propriété},
-            crefname = {\crefthemark{la} propriété}{\crefthemark{les} propriétés},
-            Crefname = {La propriété}{Les propriétés},
-        },
-        DE = {
-            name = {Eigenschaft},
-            crefname = {Eigenschaft}{Eigenschaften},
-            Crefname = {Eigenschaft}{Eigenschaften},
-        },
-        IT = {
-            name = {Proprietà},
-            crefname = {\crefthemark{la} proprietà}{\crefthemark{le} proprietà},
-            Crefname = {La proprietà}{Le proprietà},
-        },
-        PT = {
-            name = {Propriedade},
-            crefname = {\crefthemark{a} propriedade}{\crefthemark{as} propriedades},
-            Crefname = {A propriedade}{As propriedades},
-        },
-        BR = {
-            name = {Propriedade},
-            crefname = {\crefthemark{a} propriedade}{\crefthemark{as} propriedades},
-            Crefname = {A propriedade}{As propriedades},
-        },
-        ES = {
-            name = {Propiedad},
-            crefname = {la propiedad}{las propiedades},
-            Crefname = {La propiedad}{Las propiedades},
-        },
-        CN = {
-            name = {性质},
-            crefname = {性质}{性质},
-            Crefname = {性质}{性质},
-        },
-        TC = {
-            name = {性質},
-            crefname = {性質}{性質},
-            Crefname = {性質}{性質},
-        },
-        JP = {
-            name = {性質},
-            crefname = {性質}{性質},
-            Crefname = {性質}{性質},
-        },
-        RU = {
-            name = {Имущество},
-            crefname = {имущество}{имущества},
-            Crefname = {Имущество}{Имущества},
-        },
-    }
-    \NameTheorem{fact}{
-        EN = {
-            name = {Fact},
-            crefname = {fact}{facts},
-            Crefname = {Fact}{Facts},
-        },
-        FR = {
-            name = {Fait},
-            crefname = {\crefthemark{le} fait}{\crefthemark{les} faits},
-            Crefname = {Le fait}{Les faits},
-        },
-        DE = {
-            name = {Fakt},
-            crefname = {Fakt}{Fakten},
-            Crefname = {Fakt}{Fakten},
-        },
-        IT = {
-            name = {Fatto},
-            crefname = {\crefthemark{il} fatto}{\crefthemark{i} fatti},
-            Crefname = {Il fatto}{I fatti},
-        },
-        PT = {
-            name = {Facto},
-            crefname = {\crefthemark{o} facto}{\crefthemark{os} factos},
-            Crefname = {O facto}{Os factos},
-        },
-        BR = {
-            name = {Fato},
-            crefname = {\crefthemark{o} fato}{\crefthemark{os} fatos},
-            Crefname = {O fato}{Os fatos},
-        },
-        ES = {
-            name = {Hecho},
-            crefname = {\crefthemark{el} hecho}{los hechos},
-            Crefname = {El hecho}{Los hechos},
-        },
-        CN = {
-            name = {事实},
-            crefname = {事实}{事实},
-            Crefname = {事实}{事实},
-        },
-        TC = {
-            name = {事實},
-            crefname = {事實}{事實},
-            Crefname = {事實}{事實},
-        },
-        JP = {
-            name = {事実},
-            crefname = {事実}{事実},
-            Crefname = {事実}{事実},
-        },
-        RU = {
-            name = {Факт},
-            crefname = {факт}{факты},
-            Crefname = {Факт}{Факты},
-        },
-    }
-    \NameTheorem{conjecture}{
-        EN = {
-            name = {Conjecture},
-            crefname = {conjecture}{conjectures},
-            Crefname = {Conjecture}{Conjectures},
-        },
-        FR = {
-            name = {Conjecture},
-            crefname = {\crefthemark{la} conjecture}{\crefthemark{les} conjectures},
-            Crefname = {La conjecture}{Les conjectures},
-        },
-        DE = {
-            name = {Vermutung},
-            crefname = {Vermutung}{Vermutungen},
-            Crefname = {Vermutung}{Vermutungen},
-        },
-        IT = {
-            name = {Congettura},
-            crefname = {\crefthemark{la} congettura}{\crefthemark{le} congetture},
-            Crefname = {La congettura}{Le congetture},
-        },
-        PT = {
-            name = {Conjetura},
-            crefname = {\crefthemark{a} conjetura}{\crefthemark{as} conjeturas},
-            Crefname = {A conjetura}{As conjeturas},
-        },
-        BR = {
-            name = {Conjectura},
-            crefname = {\crefthemark{a} conjectura}{\crefthemark{as} conjecturas},
-            Crefname = {A conjectura}{As conjecturas},
-        },
-        ES = {
-            name = {Conjetura},
-            crefname = {la conjetura}{las conjeturas},
-            Crefname = {La conjetura}{Las conjeturas},
-        },
-        CN = {
-            name = {猜想},
-            crefname = {猜想}{猜想},
-            Crefname = {猜想}{猜想},
-        },
-        TC = {
-            name = {猜想},
-            crefname = {猜想}{猜想},
-            Crefname = {猜想}{猜想},
-        },
-        JP = {
-            name = {予想},
-            crefname = {予想}{予想},
-            Crefname = {予想}{予想},
-        },
-        RU = {
-            name = {Гипотеза},
-            crefname = {гипотеза}{гипотезы},
-            Crefname = {Гипотеза}{Гипотезы},
-        },
-    }
-    \NameTheorem{definition}{
-        EN = {
-            name = {Definition},
-            crefname = {definition}{definitions},
-            Crefname = {Definition}{Definitions},
-        },
-        FR = {
-            name = {Définition},
-            crefname = {\crefthemark{la} définition}{\crefthemark{les} définitions},
-            Crefname = {La définition}{Les définitions},
-        },
-        DE = {
-            name = {Definition},
-            crefname = {Definition}{Definitionen},
-            Crefname = {Definition}{Definitionen},
-        },
-        IT = {
-            name = {Definizione},
-            crefname = {\crefthemark{la} definizione}{\crefthemark{le} definizioni},
-            Crefname = {La definizione}{Le definizioni},
-        },
-        PT = {
-            name = {Definição},
-            crefname = {\crefthemark{a} definição}{\crefthemark{as} definições},
-            Crefname = {A definição}{As definições},
-        },
-        BR = {
-            name = {Definição},
-            crefname = {\crefthemark{a} definição}{\crefthemark{as} definições},
-            Crefname = {A definição}{As definições},
-        },
-        ES = {
-            name = {Definición},
-            crefname = {la definición}{las definiciones},
-            Crefname = {La definición}{Las definiciones},
-        },
-        CN = {
-            name = {定义},
-            crefname = {定义}{定义},
-            Crefname = {定义}{定义},
-        },
-        TC = {
-            name = {定義},
-            crefname = {定義}{定義},
-            Crefname = {定義}{定義},
-        },
-        JP = {
-            name = {定義},
-            crefname = {定義}{定義},
-            Crefname = {定義}{定義},
-        },
-        RU = {
-            name = {Определение},
-            crefname = {определение}{определения},
-            Crefname = {Определение}{Определения},
-        },
-    }
-    \NameTheorem{axiom}{
-        EN = {
-            name = {Axiom},
-            crefname = {axiom}{axioms},
-            Crefname = {Axiom}{Axioms},
-        },
-        FR = {
-            name = {Axiome},
-            crefname = {\crefthemark{l'}axiome}{\crefthemark{les} axiomes},
-            Crefname = {L'axiome}{Les axiomes},
-        },
-        DE = {
-            name = {Axiom},
-            crefname = {Axiom}{Axiome},
-            Crefname = {Axiom}{Axiome},
-        },
-        IT = {
-            name = {Assioma},
-            crefname = {\crefthemark{l'}assioma}{\crefthemark{gli} assiomi},
-            Crefname = {L'assioma}{Gli assiomi},
-        },
-        PT = {
-            name = {Axioma},
-            crefname = {\crefthemark{o} axioma}{\crefthemark{os} axiomas},
-            Crefname = {O axioma}{Os axiomas},
-        },
-        BR = {
-            name = {Axioma},
-            crefname = {\crefthemark{o} axioma}{\crefthemark{os} axiomas},
-            Crefname = {O axioma}{Os axiomas},
-        },
-        ES = {
-            name = {Axioma},
-            crefname = {\crefthemark{el} axioma}{los axiomas},
-            Crefname = {El axioma}{Los axiomas},
-        },
-        CN = {
-            name = {公理},
-            crefname = {公理}{公理},
-            Crefname = {公理}{公理},
-        },
-        TC = {
-            name = {公理},
-            crefname = {公理}{公理},
-            Crefname = {公理}{公理},
-        },
-        JP = {
-            name = {公理},
-            crefname = {公理}{公理},
-            Crefname = {公理}{公理},
-        },
-        RU = {
-            name = {Аксиома},
-            crefname = {аксиома}{аксиомы},
-            Crefname = {Аксиома}{Аксиомы},
-        },
-    }
-    \NameTheorem{assumption}{
-        EN = {
-            name = {Assumption},
-            crefname = {assumption}{assumptions},
-            Crefname = {Assumption}{Assumptions},
-        },
-        FR = {
-            name = {Supposition},
-            crefname = {\crefthemark{la} supposition}{\crefthemark{les} suppositions},
-            Crefname = {La supposition}{Les suppositions},
-        },
-        DE = {
-            name = {Annahme},
-            crefname = {Annahme}{Annahmen},
-            Crefname = {Annahme}{Annahmen},
-        },
-        IT = {
-            name = {Supposizione},
-            crefname = {\crefthemark{la} supposizione}{\crefthemark{le} supposizioni},
-            Crefname = {La supposizione}{Le supposizioni},
-        },
-        PT = {
-            name = {Suposição},
-            crefname = {\crefthemark{a} suposição}{\crefthemark{as} suposições},
-            Crefname = {A suposição}{As suposições},
-        },
-        BR = {
-            name = {Suposição},
-            crefname = {\crefthemark{a} suposição}{\crefthemark{as} suposições},
-            Crefname = {A suposição}{As suposições},
-        },
-        ES = {
-            name = {Suposición},
-            crefname = {la suposición}{las suposiciones},
-            Crefname = {La suposición}{Las suposiciones},
-        },
-        CN = {
-            name = {假定},
-            crefname = {假定}{假定},
-            Crefname = {假定}{假定},
-        },
-        TC = {
-            name = {假定},
-            crefname = {假定}{假定},
-            Crefname = {假定}{假定},
-        },
-        JP = {
-            name = {仮定},
-            crefname = {仮定}{仮定},
-            Crefname = {仮定}{仮定},
-        },
-        RU = {
-            name = {Предположение},
-            crefname = {предположение}{предположения},
-            Crefname = {Предположение}{Предположения},
-        },
-    }
-    \NameTheorem{convention}{
-        EN = {
-            name = {Convention},
-            crefname = {convention}{conventions},
-            Crefname = {Convention}{Conventions},
-        },
-        FR = {
-            name = {Convention},
-            crefname = {\crefthemark{la} convention}{\crefthemark{les} conventions},
-            Crefname = {La convention}{Les conventions},
-        },
-        DE = {
-            name = {Konvention},
-            crefname = {Konvention}{Konventionen},
-            Crefname = {Konvention}{Konventionen},
-        },
-        IT = {
-            name = {Convenzione},
-            crefname = {\crefthemark{la} convenzione}{\crefthemark{le} convenzioni},
-            Crefname = {La convenzione}{Le convenzioni},
-        },
-        PT = {
-            name = {Convenção},
-            crefname = {\crefthemark{a} convenção}{\crefthemark{as} convenções},
-            Crefname = {A convenção}{As convenções},
-        },
-        BR = {
-            name = {Convenção},
-            crefname = {\crefthemark{a} convenção}{\crefthemark{as} convenções},
-            Crefname = {A convenção}{As convenções},
-        },
-        ES = {
-            name = {Convención},
-            crefname = {la convención}{las convenciones},
-            Crefname = {La convención}{Las convenciones},
-        },
-        CN = {
-            name = {约定},
-            crefname = {约定}{约定},
-            Crefname = {约定}{约定},
-        },
-        TC = {
-            name = {約定},
-            crefname = {約定}{約定},
-            Crefname = {約定}{約定},
-        },
-        JP = {
-            name = {慣例},
-            crefname = {慣例}{慣例},
-            Crefname = {慣例}{慣例},
-        },
-        RU = {
-            name = {Конвенция},
-            crefname = {конвенция}{конвенции},
-            Crefname = {Конвенция}{Конвенции},
-        },
-    }
-    \NameTheorem{hypothesis}{
-        EN = {
-            name = {Hypothesis},
-            crefname = {hypothesis}{hypotheses},
-            Crefname = {Hypothesis}{Hypotheses},
-        },
-        FR = {
-            name = {Hypothèse},
-            crefname = {\crefthemark{l'}hypothèse}{\crefthemark{les} hypothèses},
-            Crefname = {L'hypothèse}{Les hypothèses},
-        },
-        DE = {
-            name = {Hypothese},
-            crefname = {Hypothese}{Hypothesen},
-            Crefname = {Hypothese}{Hypothesen},
-        },
-        IT = {
-            name = {Ipotesi},
-            crefname = {\crefthemark{l'}ipotesi}{\crefthemark{le} ipotesi},
-            Crefname = {L'ipotesi}{Le ipotesi},
-        },
-        PT = {
-            name = {Hipótese},
-            crefname = {\crefthemark{a} hipótese}{\crefthemark{as} hipóteses},
-            Crefname = {A hipótese}{As hipóteses},
-        },
-        BR = {
-            name = {Hipótese},
-            crefname = {\crefthemark{a} hipótese}{\crefthemark{as} hipóteses},
-            Crefname = {A hipótese}{As hipóteses},
-        },
-        ES = {
-            name = {Hipótesis},
-            crefname = {la hipótesis}{las hipótesis},
-            Crefname = {La hipótesis}{Las hipótesis},
-        },
-        CN = {
-            name = {假设},
-            crefname = {假设}{假设},
-            Crefname = {假设}{假设},
-        },
-        TC = {
-            name = {假設},
-            crefname = {假設}{假設},
-            Crefname = {假設}{假設},
-        },
-        JP = {
-            name = {仮設},
-            crefname = {仮設}{仮設},
-            Crefname = {仮設}{仮設},
-        },
-        RU = {
-            name = {Гипотеза},
-            crefname = {гипотеза}{гипотезы},
-            Crefname = {Гипотеза}{Гипотезы},
-        },
-    }
-    \NameTheorem{notation}{
-        EN = {
-            name = {Notation},
-            crefname = {notation}{notations},
-            Crefname = {Notation}{Notations},
-        },
-        FR = {
-            name = {Notation},
-            crefname = {\crefthemark{la} notation}{\crefthemark{les} notations},
-            Crefname = {La notation}{Les notations},
-        },
-        DE = {
-            name = {Notation},
-            crefname = {Notation}{Notationen},
-            Crefname = {Notation}{Notationen},
-        },
-        IT = {
-            name = {Notazione},
-            crefname = {\crefthemark{la} notazione}{\crefthemark{le} notazioni},
-            Crefname = {La notazione}{Le notazioni},
-        },
-        PT = {
-            name = {Notação},
-            crefname = {\crefthemark{a} notação}{\crefthemark{as} notações},
-            Crefname = {A notação}{As notações},
-        },
-        BR = {
-            name = {Notação},
-            crefname = {\crefthemark{a} notação}{\crefthemark{as} notações},
-            Crefname = {A notação}{As notações},
-        },
-        ES = {
-            name = {Notación},
-            crefname = {la notación}{las notaciones},
-            Crefname = {La notación}{Las notaciones},
-        },
-        CN = {
-            name = {记号},
-            crefname = {记号}{记号},
-            Crefname = {记号}{记号},
-        },
-        TC = {
-            name = {記號},
-            crefname = {記號}{記號},
-            Crefname = {記號}{記號},
-        },
-        JP = {
-            name = {記法},
-            crefname = {記法}{記法},
-            Crefname = {記法}{記法},
-        },
-        RU = {
-            name = {Нотация},
-            crefname = {нотация}{нотации},
-            Crefname = {Нотация}{Нотации},
-        },
-    }
-    \NameTheorem{example}{
-        EN = {
-            name = {Example},
-            crefname = {example}{examples},
-            Crefname = {Example}{Examples},
-        },
-        FR = {
-            name = {Exemple},
-            crefname = {\crefthemark{l'}example}{\crefthemark{les} examples},
-            Crefname = {L'example}{Les examples},
-        },
-        DE = {
-            name = {Beispiel},
-            crefname = {Beispiel}{Beispiele},
-            Crefname = {Beispiel}{Beispiele},
-        },
-        IT = {
-            name = {Esempio},
-            crefname = {\crefthemark{l'}esempio}{\crefthemark{gli} esempi},
-            Crefname = {L'esempio}{Gli esempi},
-        },
-        PT = {
-            name = {Exemplo},
-            crefname = {\crefthemark{o} exemplo}{\crefthemark{os} exemplos},
-            Crefname = {O exemplo}{Os exemplos},
-        },
-        BR = {
-            name = {Exemplo},
-            crefname = {\crefthemark{o} exemplo}{\crefthemark{os} exemplos},
-            Crefname = {O exemplo}{Os exemplos},
-        },
-        ES = {
-            name = {Ejemplo},
-            crefname = {\crefthemark{el} ejemplo}{los ejemplos},
-            Crefname = {El ejemplo}{Los ejemplos},
-        },
-        CN = {
-            name = {例},
-            crefname = {例}{例},
-            Crefname = {例}{例},
-        },
-        TC = {
-            name = {例},
-            crefname = {例}{例},
-            Crefname = {例}{例},
-        },
-        JP = {
-            name = {例},
-            crefname = {例}{例},
-            Crefname = {例}{例},
-        },
-        RU = {
-            name = {Пример},
-            crefname = {пример}{примеры},
-            Crefname = {Пример}{Примеры},
-        },
-    }
-    \NameTheorem{problem}{
-        EN = {
-            name = {Problem},
-            crefname = {problem}{problems},
-            Crefname = {Problem}{Problems},
-        },
-        FR = {
-            name = {Problème},
-            crefname = {\crefthemark{le} problème}{\crefthemark{les} problèmes},
-            Crefname = {Le problème}{Les problèmes},
-        },
-        DE = {
-            name = {Problem},
-            crefname = {Problem}{Probleme},
-            Crefname = {Problem}{Probleme},
-        },
-        IT = {
-            name = {Problema},
-            crefname = {\crefthemark{il} problema}{\crefthemark{i} problemi},
-            Crefname = {Il problema}{I problemi},
-        },
-        PT = {
-            name = {Problema},
-            crefname = {\crefthemark{o} problema}{\crefthemark{os} problemas},
-            Crefname = {O problema}{Os problemas},
-        },
-        BR = {
-            name = {Problema},
-            crefname = {\crefthemark{o} problema}{\crefthemark{os} problemas},
-            Crefname = {O problema}{Os problemas},
-        },
-        ES = {
-            name = {Problema},
-            crefname = {\crefthemark{el} problema}{los problemas},
-            Crefname = {El problema}{Los problemas},
-        },
-        CN = {
-            name = {问题},
-            crefname = {问题}{问题},
-            Crefname = {问题}{问题},
-        },
-        TC = {
-            name = {問題},
-            crefname = {問題}{問題},
-            Crefname = {問題}{問題},
-        },
-        JP = {
-            name = {問題},
-            crefname = {問題}{問題},
-            Crefname = {問題}{問題},
-        },
-        RU = {
-            name = {Проблема},
-            crefname = {проблема}{проблемы},
-            Crefname = {Проблема}{Проблемы},
-        },
-    }
-    \NameTheorem{question}{
-        EN = {
-            name = {Question},
-            crefname = {question}{questions},
-            Crefname = {Question}{Questions},
-        },
-        FR = {
-            name = {Question},
-            crefname = {\crefthemark{la} question}{\crefthemark{les} questions},
-            Crefname = {La question}{Les questions},
-        },
-        DE = {
-            name = {Frage},
-            crefname = {Frage}{Fragen},
-            Crefname = {Frage}{Fragen},
-        },
-        IT = {
-            name = {Domanda},
-            crefname = {\crefthemark{la} domanda}{\crefthemark{le} domande},
-            Crefname = {La domanda}{Le domande},
-        },
-        PT = {
-            name = {Pergunta},
-            crefname = {\crefthemark{a} pergunta}{\crefthemark{as} perguntas},
-            Crefname = {A pergunta}{As perguntas},
-        },
-        BR = {
-            name = {Pergunta},
-            crefname = {\crefthemark{a} pergunta}{\crefthemark{as} perguntas},
-            Crefname = {A pergunta}{As perguntas},
-        },
-        ES = {
-            name = {Pregunta},
-            crefname = {la pregunta}{las preguntas},
-            Crefname = {La pregunta}{Las preguntas},
-        },
-        CN = {
-            name = {问题},
-            crefname = {问题}{问题},
-            Crefname = {问题}{问题},
-        },
-        TC = {
-            name = {問題},
-            crefname = {問題}{問題},
-            Crefname = {問題}{問題},
-        },
-        JP = {
-            name = {問題},
-            crefname = {問題}{問題},
-            Crefname = {問題}{問題},
-        },
-        RU = {
-            name = {Вопрос},
-            crefname = {вопрос}{вопросы},
-            Crefname = {Вопрос}{Вопросы},
-        },
-    }
-    \NameTheorem{exercise}{
-        EN = {
-            name = {Exercise},
-            crefname = {exercise}{exercises},
-            Crefname = {Exercise}{Exercises},
-        },
-        FR = {
-            name = {Exercice},
-            crefname = {\crefthemark{l'}exercice}{\crefthemark{les} exercices},
-            Crefname = {L'exercice}{Les exercices},
-        },
-        DE = {
-            name = {Übung},
-            crefname = {Übung}{Übungen},
-            Crefname = {Übung}{Übungen},
-        },
-        IT = {
-            name = {Esercizio},
-            crefname = {\crefthemark{l'}esercizio}{\crefthemark{gli} esercizi},
-            Crefname = {L'esercizio}{Gli esercizi},
-        },
-        PT = {
-            name = {Exercício},
-            crefname = {\crefthemark{o} exercício}{\crefthemark{os} exercícios},
-            Crefname = {O exercício}{Os exercícios},
-        },
-        BR = {
-            name = {Exercício},
-            crefname = {\crefthemark{o} exercício}{\crefthemark{os} exercícios},
-            Crefname = {O exercício}{Os exercícios},
-        },
-        ES = {
-            name = {Ejercicio},
-            crefname = {\crefthemark{el} ejercicio}{los ejercicios},
-            Crefname = {El ejercicio}{Los ejercicios},
-        },
-        CN = {
-            name = {练习},
-            crefname = {练习}{练习},
-            Crefname = {练习}{练习},
-        },
-        TC = {
-            name = {練習},
-            crefname = {練習}{練習},
-            Crefname = {練習}{練習},
-        },
-        JP = {
-            name = {練習},
-            crefname = {練習}{練習},
-            Crefname = {練習}{練習},
-        },
-        RU = {
-            name = {Упражнение},
-            crefname = {упражнение}{упражнения},
-            Crefname = {Упражнение}{Упражнения},
-        },
-    }
-    \NameTheorem{remark}{
-        EN = {
-            name = {Remark},
-            crefname = {remark}{remarks},
-            Crefname = {Remark}{Remarks},
-        },
-        FR = {
-            name = {Remarque},
-            crefname = {\crefthemark{la} remarque}{\crefthemark{les} remarques},
-            Crefname = {La remarque}{Les remarques},
-        },
-        DE = {
-            name = {Bemerkung},
-            crefname = {Bemerkung}{Bemerkungen},
-            Crefname = {Bemerkung}{Bemerkungen},
-        },
-        IT = {
-            name = {Commento},
-            crefname = {\crefthemark{il} commento}{\crefthemark{i} commenti},
-            Crefname = {Il commento}{I commenti},
-        },
-        PT = {
-            name = {Comentário},
-            crefname = {\crefthemark{o} comentário}{\crefthemark{os} comentários},
-            Crefname = {O comentário}{Os comentários},
-        },
-        BR = {
-            name = {Comentário},
-            crefname = {\crefthemark{o} comentário}{\crefthemark{os} comentários},
-            Crefname = {O comentário}{Os comentários},
-        },
-        ES = {
-            name = {Comentario},
-            crefname = {\crefthemark{el} comentario}{los comentarios},
-            Crefname = {El comentario}{Los comentarios},
-        },
-        CN = {
-            name = {备注},
-            crefname = {备注}{备注},
-            Crefname = {备注}{备注},
-        },
-        TC = {
-            name = {備註},
-            crefname = {備註}{備註},
-            Crefname = {備註}{備註},
-        },
-        JP = {
-            name = {注釈},
-            crefname = {注釈}{注釈},
-            Crefname = {注釈}{注釈},
-        },
-        RU = {
-            name = {Замечание},
-            crefname = {замечание}{замечания},
-            Crefname = {Замечание}{Замечания},
-        },
-    }
-    \NameTheorem{observation}{
-        EN = {
-            name = {Observation},
-            crefname = {observation}{observations},
-            Crefname = {Observation}{Observations},
-        },
-        FR = {
-            name = {Observation},
-            crefname = {\crefthemark{la} observation}{\crefthemark{les} observations},
-            Crefname = {La observation}{Les observations},
-        },
-        DE = {
-            name = {Beobachtung},
-            crefname = {Beobachtung}{Beobachtungen},
-            Crefname = {Beobachtung}{Beobachtungen},
-        },
-        IT = {
-            name = {Osservazione},
-            crefname = {\crefthemark{l'}osservazione}{\crefthemark{le} osservazioni},
-            Crefname = {L'osservazione}{Le osservazioni},
-        },
-        PT = {
-            name = {Observação},
-            crefname = {\crefthemark{a} observação}{\crefthemark{as} observações},
-            Crefname = {A observação}{As observações},
-        },
-        BR = {
-            name = {Observação},
-            crefname = {\crefthemark{a} observação}{\crefthemark{as} observações},
-            Crefname = {A observação}{As observações},
-        },
-        ES = {
-            name = {Observación},
-            crefname = {la observación}{las observaciones},
-            Crefname = {La observación}{Las observaciones},
-        },
-        CN = {
-            name = {观察},
-            crefname = {观察}{观察},
-            Crefname = {观察}{观察},
-        },
-        TC = {
-            name = {觀察},
-            crefname = {觀察}{觀察},
-            Crefname = {觀察}{觀察},
-        },
-        JP = {
-            name = {観察},
-            crefname = {観察}{観察},
-            Crefname = {観察}{観察},
-        },
-        RU = {
-            name = {Наблюдение},
-            crefname = {наблюдение}{наблюдения},
-            Crefname = {Наблюдение}{Наблюдения},
-        },
-    }
-    \NameTheorem{definition-proposition}{
-        EN = {
-            name = {\definitionnameEN-\propositionnameEN},
-            crefname = {definition-proposition}{definitions-propositions},
-            Crefname = {Definition-proposition}{Definitions-propositions},
-        },
-        FR = {
-            name = {\definitionnameFR-\propositionnameFR},
-            crefname = {\crefthemark{la} définition-proposition}{\crefthemark{les} définitions-propositions},
-            Crefname = {La définition-proposition}{Les définitions-propositions},
-        },
-        DE = {
-            name = {\definitionnameDE-\propositionnameDE},
-            crefname = {Definition-Proposition}{Definitionen-Propositionen},
-            Crefname = {Definition-Proposition}{Definitionen-Propositionen},
-        },
-        IT = {
-            name = {\definitionnameIT-\propositionnameIT},
-            crefname = {\crefthemark{la} definizione-proposizione}{\crefthemark{le} definizioni-proposte},
-            Crefname = {La definizione-proposizione}{Le definizioni-proposte},
-        },
-        PT = {
-            name = {\definitionnamePT-\propositionnamePT},
-            crefname = {\crefthemark{a} definição-proposição}{\crefthemark{as} definições-proposições},
-            Crefname = {A definição-proposição}{As definições-proposições},
-        },
-        BR = {
-            name = {\definitionnameBR-\propositionnameBR},
-            crefname = {\crefthemark{a} definição-proposição}{\crefthemark{as} definições-proposições},
-            Crefname = {A definição-proposição}{As definições-proposições},
-        },
-        ES = {
-            name = {\definitionnameES-\propositionnameES},
-            crefname = {la definición-proposición}{las definiciones-proposiciones},
-            Crefname = {La definición-proposición}{Las definiciones-proposiciones},
-        },
-        CN = {
-            name = {\definitionnameCN-\propositionnameCN},
-            crefname = {\definitionnameCN-\propositionnameCN}{\definitionnameCN-\propositionnameCN},
-            Crefname = {\definitionnameCN-\propositionnameCN}{\definitionnameCN-\propositionnameCN},
-        },
-        TC = {
-            name = {\definitionnameTC-\propositionnameTC},
-            crefname = {\definitionnameTC-\propositionnameTC}{\definitionnameTC-\propositionnameTC},
-            Crefname = {\definitionnameTC-\propositionnameTC}{\definitionnameTC-\propositionnameTC},
-        },
-        JP = {
-            name = {\definitionnameJP-\propositionnameJP},
-            crefname = {\definitionnameJP-\propositionnameJP}{\definitionnameJP-\propositionnameJP},
-            Crefname = {\definitionnameJP-\propositionnameJP}{\definitionnameJP-\propositionnameJP},
-        },
-        RU = {
-            name = {\definitionnameRU-\propositionnameRU},
-            crefname = {определение-предложение}{определения-предложения},
-            Crefname = {Определение-предложение}{Определения-предложение},
-        },
-    }
-    \NameTheorem{definition-theorem}{
-        EN = {
-            name = {\definitionnameEN-\theoremnameEN},
-            crefname = {definition-theorem}{definitions-theorems},
-            Crefname = {Definition-theorem}{Definitions-theorems},
-        },
-        FR = {
-            name = {\definitionnameFR-\theoremnameFR},
-            crefname = {\crefthemark{la} définition-théorème}{\crefthemark{les} définitions-théorèmes},
-            Crefname = {La définition-théorème}{Les définitions-théorèmes},
-        },
-        DE = {
-            name = {\definitionnameDE-\theoremnameDE},
-            crefname = {Definition-Satz}{Definitionen-Sätze},
-            Crefname = {Definition-Satz}{Definitionen-Sätze},
-        },
-        IT = {
-            name = {\definitionnameIT-\theoremnameIT},
-            crefname = {\crefthemark{la} definizione-teorema}{\crefthemark{le} definizioni-teoremi},
-            Crefname = {La definizione-teorema}{Le definizioni-teoremi},
-        },
-        PT = {
-            name = {\definitionnamePT-\theoremnamePT},
-            crefname = {\crefthemark{a} definição-teorema}{\crefthemark{as} definições-teoremas},
-            Crefname = {A definição-teorema}{As definições-teoremas},
-        },
-        BR = {
-            name = {\definitionnameBR-\theoremnameBR},
-            crefname = {\crefthemark{a} definição-teorema}{\crefthemark{as} definições-teoremas},
-            Crefname = {A definição-teorema}{As definições-teoremas},
-        },
-        ES = {
-            name = {\definitionnameES-\theoremnameES},
-            crefname = {la definición-teorema}{las definiciones-teoremas},
-            Crefname = {La definición-teorema}{Las definiciones-teoremas},
-        },
-        CN = {
-            name = {\definitionnameCN-\theoremnameCN},
-            crefname = {\definitionnameCN-\theoremnameCN}{\definitionnameCN-\theoremnameCN},
-            Crefname = {\definitionnameCN-\theoremnameCN}{\definitionnameCN-\theoremnameCN},
-        },
-        TC = {
-            name = {\definitionnameTC-\theoremnameTC},
-            crefname = {\definitionnameTC-\theoremnameTC}{\definitionnameTC-\theoremnameTC},
-            Crefname = {\definitionnameTC-\theoremnameTC}{\definitionnameTC-\theoremnameTC},
-        },
-        JP = {
-            name = {\definitionnameJP-\theoremnameJP},
-            crefname = {\definitionnameJP-\theoremnameJP}{\definitionnameJP-\theoremnameJP},
-            Crefname = {\definitionnameJP-\theoremnameJP}{\definitionnameJP-\theoremnameJP},
-        },
-        RU = {
-            name = {\definitionnameRU-\theoremnameRU},
-            crefname = {определение-теорема}{определения-теоремы},
-            Crefname = {Определение-теорема}{Определения-теорема},
-        },
-    }
-}{
-%# 英文定理名称
-%# 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}}
-    \def\observationnameEN{{Observation}}
-    \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}}
-    \def\observationnameFR{{Observation}}
-    \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}}
-    \def\observationnameDE{{Beobachtung}}
-    \expandafter\def\csname definition-propositionnameDE\endcsname{\definitionnameDE-\propositionnameDE}
-    \expandafter\def\csname definition-theoremnameDE\endcsname{\definitionnameDE-\theoremnameDE}
-
-%# 意大利语定理名称
-%# Italian theorems names
-    \def\theoremnameIT{{Teorema}}
-    \def\lemmanameIT{{Lemma}}
-    \def\propositionnameIT{{Proposizione}}
-    \def\corollarynameIT{{Corollario}}
-    \def\propertynameIT{{Proprietà}}
-    \def\factnameIT{{Fatto}}
-    \def\conjecturenameIT{{Congettura}}
-    \def\definitionnameIT{{Definizione}}
-    \def\axiomnameIT{{Assioma}}
-    \def\assumptionnameIT{{Supposizione}}
-    \def\conventionnameIT{{Convenzione}}
-    \def\hypothesisnameIT{{Ipotesi}}
-    \def\notationnameIT{{Notazione}}
-    \def\examplenameIT{{Esempio}}
-    \def\problemnameIT{{Problema}}
-    \def\questionnameIT{{Domanda}}
-    \def\exercisenameIT{{Esercizio}}
-    \def\remarknameIT{{Commento}}
-    \def\observationnameIT{{Osservazione}}
-    \expandafter\def\csname definition-propositionnameIT\endcsname{\definitionnameIT-\propositionnameIT}
-    \expandafter\def\csname definition-theoremnameIT\endcsname{\definitionnameIT-\theoremnameIT}
-
-%# 葡萄牙语定理名称
-%# Portuguese theorems names
-    \def\theoremnamePT{{Teorema}}
-    \def\lemmanamePT{{Lema}}
-    \def\propositionnamePT{{Proposição}}
-    \def\corollarynamePT{{Corolário}}
-    \def\propertynamePT{{Propriedade}}
-    \def\factnamePT{{Facto}}
-    \def\conjecturenamePT{{Conjetura}}
-    \def\definitionnamePT{{Definição}}
-    \def\axiomnamePT{{Axioma}}
-    \def\assumptionnamePT{{Suposição}}
-    \def\conventionnamePT{{Convenção}}
-    \def\hypothesisnamePT{{Hipótese}}
-    \def\notationnamePT{{Notação}}
-    \def\examplenamePT{{Exemplo}}
-    \def\problemnamePT{{Problema}}
-    \def\questionnamePT{{Pergunta}}
-    \def\exercisenamePT{{Exercício}}
-    \def\remarknamePT{{Comentário}}
-    \def\observationnamePT{{Observação}}
-    \expandafter\def\csname definition-propositionnamePT\endcsname{\definitionnamePT-\propositionnamePT}
-    \expandafter\def\csname definition-theoremnamePT\endcsname{\definitionnamePT-\theoremnamePT}
-
-%# 巴西葡萄牙语定理名称
-%# Brazilian theorems names
-    \def\theoremnameBR{{Teorema}}
-    \def\lemmanameBR{{Lema}}
-    \def\propositionnameBR{{Proposição}}
-    \def\corollarynameBR{{Corolário}}
-    \def\propertynameBR{{Propriedade}}
-    \def\factnameBR{{Fato}}
-    \def\conjecturenameBR{{Conjectura}}
-    \def\definitionnameBR{{Definição}}
-    \def\axiomnameBR{{Axioma}}
-    \def\assumptionnameBR{{Suposição}}
-    \def\conventionnameBR{{Convenção}}
-    \def\hypothesisnameBR{{Hipótese}}
-    \def\notationnameBR{{Notação}}
-    \def\examplenameBR{{Exemplo}}
-    \def\problemnameBR{{Problema}}
-    \def\questionnameBR{{Pergunta}}
-    \def\exercisenameBR{{Exercício}}
-    \def\remarknameBR{{Comentário}}
-    \def\observationnameBR{{Observação}}
-    \expandafter\def\csname definition-propositionnameBR\endcsname{\definitionnameBR-\propositionnameBR}
-    \expandafter\def\csname definition-theoremnameBR\endcsname{\definitionnameBR-\theoremnameBR}
-
-%# 西班牙语定理名称
-%# Spanish theorems names
-    \def\theoremnameES{{Teorema}}
-    \def\lemmanameES{{Lema}}
-    \def\propositionnameES{{Proposición}}
-    \def\corollarynameES{{Corolario}}
-    \def\propertynameES{{Propiedad}}
-    \def\factnameES{{Hecho}}
-    \def\conjecturenameES{{Conjetura}}
-    \def\definitionnameES{{Definición}}
-    \def\axiomnameES{{Axioma}}
-    \def\assumptionnameES{{Suposición}}
-    \def\conventionnameES{{Convención}}
-    \def\hypothesisnameES{{Hipótesis}}
-    \def\notationnameES{{Notación}}
-    \def\examplenameES{{Ejemplo}}
-    \def\problemnameES{{Problema}}
-    \def\questionnameES{{Pregunta}}
-    \def\exercisenameES{{Ejercicio}}
-    \def\remarknameES{{Comentario}}
-    \def\observationnameES{{Observación}}
-    \expandafter\def\csname definition-propositionnameES\endcsname{\definitionnameES-\propositionnameES}
-    \expandafter\def\csname definition-theoremnameES\endcsname{\definitionnameES-\theoremnameES}
-
-%# 中文定理名称
-%# 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{{备注}}
-    \def\observationnameCN{{观察}}
-    \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{{備註}}
-    \def\observationnameTC{{觀察}}
-    \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{{注釈}}
-    \def\observationnameJP{{観察}}
-    \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{{Замечание}} % Замеча́ние
-    \def\observationnameRU{{Наблюдение}} % Наблюде́ние
-    \expandafter\def\csname definition-propositionnameRU\endcsname{\definitionnameRU-\propositionnameRU}
-    \expandafter\def\csname definition-theoremnameRU\endcsname{\definitionnameRU-\theoremnameRU}
-}
-
-%# 判断最高级别的标题是 section 还是 chapter
-%# Detect the highest level of title: section or chapter?
-\newif\ifPJLthm at IsBook
-\ifdefined\c at chapter\PJLthm at IsBooktrue\else\PJLthm at IsBookfalse\fi
-\ifbool{PJLthm at IsBook}{
-    \newaliascnt{PJLthm at highest}{chapter}
-}{
-    \newaliascnt{PJLthm at highest}{section}
-}
-%# 按照 thmnum 决定定理类环境如何编号
-%# Number the theorem-like environment with respect to thmnum
-\NewDocumentCommand{\CreateTheorem at thmnum}{m}{
-    \expandafter\ifstrempty\expandafter{\@PJLthm at thmnum}{
-        \CreateTheorem{#1}<PJLthm at highest>
-    }{
-        \expandafter\ifstrequal\expandafter{\@PJLthm at thmnum}{PJL at thmnum@default}{
-            \CreateTheorem{#1}
-        }{
-            \CreateTheorem{#1}<\@PJLthm at thmnum>
-        }
-    }
-}
-
-%# 建立定理类环境
-%# Setup theorem-like environments
-\def\PJLthm at definethms{
-\if at PJLthm@nothms\else
-\if at PJLthm@nothmnum
-\CreateTheorem*{theorem}
-\CreateTheorem*{lemma}
-\CreateTheorem*{proposition}
-\CreateTheorem*{corollary}
-\CreateTheorem*{definition-proposition}
-\CreateTheorem*{definition-theorem}
-\CreateTheorem*{property}
-\CreateTheorem*{fact}
-\CreateTheorem*{conjecture}
-\else
-\CreateTheorem at thmnum{theorem}
-\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]
-\fi
-\CreateTheorem*{theorem*}
-\CreateTheorem*{lemma*}
-\CreateTheorem*{proposition*}
-\CreateTheorem*{corollary*}
-\CreateTheorem*{definition-proposition*}
-\CreateTheorem*{definition-theorem*}
-\CreateTheorem*{property*}
-\CreateTheorem*{fact*}
-\CreateTheorem*{conjecture*}
-
-\theoremstyle{definition}
-\if at PJLthm@nothmnum
-\CreateTheorem*{definition}
-\CreateTheorem*{axiom}
-\CreateTheorem*{assumption}
-\CreateTheorem*{convention}
-\CreateTheorem*{hypothesis}
-\CreateTheorem*{notation}
-\CreateTheorem*{example}
-\CreateTheorem*{problem}
-\CreateTheorem*{question}
-\CreateTheorem*{exercise}
-\else
-\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]
-\fi
-\CreateTheorem*{definition*}
-\CreateTheorem*{axiom*}
-\CreateTheorem*{assumption*}
-\CreateTheorem*{convention*}
-\CreateTheorem*{hypothesis*}
-\CreateTheorem*{notation*}
-\CreateTheorem*{example*}
-\CreateTheorem*{problem*}
-\CreateTheorem*{question*}
-\CreateTheorem*{exercise*}
-
-\theoremstyle{remark}
-\if at PJLthm@nothmnum
-\CreateTheorem*{remark}
-\CreateTheorem*{observation}
-\else
-\CreateTheorem at thmnum{remark}
-\CreateTheorem at thmnum{observation}
-\fi
-\CreateTheorem*{remark*}
-\CreateTheorem*{observation*}
-
-\theoremstyle{definition}
-\fi
-
-%# 按照 thmnum 决定公式如何编号
-%# Number the equations with respect to thmnum
-\expandafter\ifstrempty\expandafter{\@PJLthm at thmnum}{
-% thmnum is not used.
-    \numberwithin{equation}{PJLthm at highest}
-}{
-    \expandafter\ifstrequal\expandafter{\@PJLthm at thmnum}{PJL at thmnum@default}{
-% thmnum is used, with no value.
-    }{
-% thmnum is used, with value \@PJLthm at thmnum.
-        \numberwithin{equation}{\@PJLthm at thmnum}
-    }
-}
-
-} % End of \PJLthm at definethms
-
-\if at PJLthm@delaythms
-    \AtEndPreamble{\PJLthm at definethms}
-\else
-    \PJLthm at definethms
-\fi
-
-%# 一些 cref 的本地化
-%# Some localization of cref
-\gappto{\PJLlang at langconfig@CN}{%
-    \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{\PJLlang at langconfig@TC}{%
-    \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{\PJLlang at langconfig@JP}{%
-    \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{\PJLlang at langconfig@RU}{%
-    \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~}%
-}
-\gappto{\PJLlang at langconfig@PT}{%
-    \crefname{equation}{eq.}{eqs.}%
-    \crefname{figure}{fig.}{figs.}%
-    \crefname{table}{tabela}{tabelas}%
-    \crefname{appendix}{apêndice}{apêndices}%
-    \Crefname{equation}{Eq.}{Eqs.}%
-    \Crefname{figure}{Fig.}{Figs.}%
-    \Crefname{table}{Tabela}{Tabelas}%
-    \Crefname{appendix}{Apêndice}{Apêndices}%
-    \def\crefpairconjunction{ e\nobreakspace}%
-    \def\crefmiddleconjunction{, }%
-    \def\creflastconjunction{ e\nobreakspace}%
-    \def\crefpairgroupconjunction{ e\nobreakspace}%
-    \def\crefmiddlegroupconjunction{, }%
-    \def\creflastgroupconjunction{ e\nobreakspace}%
-    \def\crefrangeconjunction{ a\nobreakspace}%
-}
-%</PJLthm>
-%
-%<*ProjLib>
-%# 这段代码定义了宏包中的选项。
-%# This code defines the options in the package.
-\SetupKeyvalOptions{
-    family = @ProjLib,
-    prefix = @ProjLib@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{author}
-\DeclareBoolOption[false]{amsfashion}
-\DeclareBoolOption[false]{nothms}
-\DeclareBoolOption[false]{delaythms}
-\DeclareBoolOption[false]{nothmnum}
-\DeclareStringOption{thmnum}[PJL at thmnum@default]
-\DeclareBoolOption[true]{regionalref}
-\DeclareBoolOption[false]{originalref}
-\DeclareBoolOption[true]{complexname}
-\DeclareBoolOption[false]{simplename}
-\DeclareBoolOption[false]{useosf}
-\DeclareBoolOption[false]{lmodern}
-\DeclareBoolOption[false]{palatino}
-\DeclareBoolOption[false]{times}
-\DeclareBoolOption[false]{garamond}
-\DeclareBoolOption[false]{noto}
-\DeclareBoolOption[false]{biolinum}
-%# 处理选项
-%# Process options
-\ProcessKeyvalOptions*\relax
-
-%# 下面的代码设定了选项之间的关系
-%# The following code sets the relationship between options
-\if at ProjLib@originalref
-    \@ProjLib at regionalreffalse
-\fi
-\if at ProjLib@simplename
-    \@ProjLib at complexnamefalse
-\fi
-\if at ProjLib@draft
-    \@ProjLib at fasttrue
-\fi
-
-%# 向组件传递一些参数
-%# Pass some options to the components
-\if at ProjLib@fast
-    \PassOptionsToPackage{fast}{PJLdate}
-    \PassOptionsToPackage{fast}{PJLdraft}
-    \PassOptionsToPackage{fast}{PJLlogo}
-    \PassOptionsToPackage{fast}{PJLthm}
-\fi
-\if at ProjLib@nothms
-    \PassOptionsToPackage{nothms}{PJLthm}
-\fi
-\if at ProjLib@delaythms
-    \PassOptionsToPackage{delaythms}{PJLthm}
-\fi
-\if at ProjLib@nothmnum
-    \PassOptionsToPackage{nothmnum}{PJLthm}
-\fi
-\expandafter\ifstrempty\expandafter{\@ProjLib at thmnum}{}{
-    \expandafter\ifstrequal\expandafter{\@ProjLib at thmnum}{PJL at thmnum@default}{
-        \PassOptionsToPackage{thmnum}{PJLthm}
-    }{
-        \PassOptionsToPackage{thmnum=\@ProjLib at thmnum}{PJLthm}
-    }
-}
-\if at ProjLib@regionalref\else
-    \PassOptionsToPackage{originalref}{PJLthm}
-\fi
-\if at ProjLib@complexname\else
-    \PassOptionsToPackage{simplename}{PJLthm}
-\fi
-
-%# 加载不默认载入的组件
-%# Load those components not by default loaded
-\if at ProjLib@amsfashion
-    \PassOptionsToPackage{amsfashion}{PJLauthor}
-    \RequirePackage{PJLauthor}
-\fi
-\if at ProjLib@author
-    \RequirePackage{PJLauthor}
-\fi
-%# 加载组件
-%# Load the components
-\RequirePackage{PJLdate}
-\RequirePackage{PJLdraft}
-\RequirePackage{PJLlogo}
-\RequirePackage{PJLmath}
-\RequirePackage{PJLpaper}
-\RequirePackage{PJLthm}
-
-%# 配置字体选项
-%# Configure the font options below
-%
-% \PJL at font@alreadyset should contain the current font name
-% A message can then be shown as: Font "(font name)" has been set
-\ifdefined\PJL at font@alreadyset\else
-
-\if at ProjLib@lmodern
-    \RequirePackage{amssymb}
-    \if at ProjLib@useosf
-        \RequirePackage{cfr-lm}
-    \else
-        \RequirePackage{lmodern}
-    \fi
-    \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if at ProjLib@palatino
-    % \RequirePackage{amssymb}
-    \RequirePackage{mathpazo}
-    \PassOptionsToPackage{defaultsups}{newpxtext}
-    \RequirePackage{newpxtext}
-    % \RequirePackage{newpxmath}
-    \let\openbox\relax
-    \PJLsetlinespacing{\setstretch{1.07}}
-    \if at ProjLib@useosf\useosf\fi
-\fi
-
-\if at ProjLib@times
-    % \RequirePackage{amssymb}
-    \PassOptionsToPackage{defaultsups}{newtxtext}
-    \RequirePackage{newtxtext}
-    \RequirePackage{newtxmath}
-    \let\openbox\relax
-    \PJLsetlinespacing{\setstretch{1.00}}
-    \if at ProjLib@useosf\useosf\fi
-\fi
-
-\if at ProjLib@garamond
-    % \RequirePackage{amssymb}
-    \if at ProjLib@useosf\else
-        \PassOptionsToPackage{lining}{ebgaramond}
-    \fi
-    \RequirePackage{ebgaramond-maths}
-    \RequirePackage{ebgaramond}
-    % \RequirePackage{garamondlibre}
-    \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if at ProjLib@noto
-    \if at ProjLib@useosf
-        \PassOptionsToPackage{oldstyle}{notomath}
-    \fi
-    \RequirePackage{anyfontsize}
-    \RequirePackage{notomath}
-    \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if at ProjLib@biolinum
-    % \RequirePackage{amssymb}
-    % \RequirePackage{mathpazo}
-    % \RequirePackage[sansmath]{libertinust1math}
-    \ifPDFTeX
-        \if at ProjLib@useosf
-            \PassOptionsToPackage{osf}{biolinum}
-        \fi
-        \RequirePackage{biolinum}
-        \renewcommand*\familydefault{\biolinum at family}
-    \else
-        \PassOptionsToPackage{no-math}{fontspec}
-        \RequirePackage{fontspec}
-        \setmainfont{LinBiolinum_R.otf}[
-            BoldFont       = LinBiolinum_RB.otf ,
-            ItalicFont     = LinBiolinum_RI.otf ,
-            BoldItalicFont = LinBiolinum_RBO.otf,
-            \if at ProjLib@useosf Numbers = OldStyle\fi ]
-    \fi
-    \PJLsetlinespacing{\setstretch{1.05}}
-    \RequirePackage[italic,defaultmathsizes]{mathastext}
-\fi
-
-%# 结束字体选项的配置
-%# End of the configuration of font options
-\fi
-
-%# 使用 microtype 优化排版细节
-%# Use `microtype` to get details better
-\RequirePackage{microtype}
-%</ProjLib>
-
-\endinput
\ No newline at end of file

Deleted: branches/branch2021.final/Master/texmf-dist/source/latex/projlib/ProjLib.ins
===================================================================
--- branches/branch2021.final/Master/texmf-dist/source/latex/projlib/ProjLib.ins	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/texmf-dist/source/latex/projlib/ProjLib.ins	2022-03-10 21:25:27 UTC (rev 62601)
@@ -1,72 +0,0 @@
-%%
-%% 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
-%%
-
-\input docstrip.tex
-\keepsilent
-\askforoverwritefalse
-
-\begingroup
-\catcode`\^^M=\active%
-\obeyspaces%
-\gdef\copyright{%
-\ds at heading% This is file... generated with the docstrip utility.
-
-Copyright (C) 2021 by Jinwen XU
-
-This is part of the ProjLib Toolkit.
-}%
-\gdef\lppllicense{%
-
-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.
-}%
-\endgroup
-
-\def\mypreamble{\copyright\lppllicense}
-\usepreamble\mypreamble
-
-\generate{\file{ProjLib.sty}{\from{ProjLib.dtx}{ProjLib}}}
-\generate{\file{PJLauthor.sty}{\from{ProjLib.dtx}{PJLauthor}}}
-\generate{\file{PJLdate.sty}{\from{ProjLib.dtx}{PJLdate}}}
-\generate{\file{PJLdraft.sty}{\from{ProjLib.dtx}{PJLdraft}}}
-\generate{\file{PJLlang.sty}{\from{ProjLib.dtx}{PJLlang}}}
-\generate{\file{PJLlogo.sty}{\from{ProjLib.dtx}{PJLlogo}}}
-\generate{\file{PJLmath.sty}{\from{ProjLib.dtx}{PJLmath}}}
-\generate{\file{PJLpaper.sty}{\from{ProjLib.dtx}{PJLpaper}}}
-\generate{\file{PJLthm.sty}{\from{ProjLib.dtx}{PJLthm}}}
-
-\obeyspaces
-\Msg{*************************************************************}
-\Msg{*                                                           *}
-\Msg{* To finish the installation you have to move the following *}
-\Msg{* files into a directory searched by TeX:                   *}
-\Msg{*                                                           *}
-\Msg{*     ProjLib.sty                                           *}
-\Msg{*     PJLauthor.sty                                         *}
-\Msg{*     PJLdate.sty                                           *}
-\Msg{*     PJLdraft.sty                                          *}
-\Msg{*     PJLlang.sty                                           *}
-\Msg{*     PJLlogo.sty                                           *}
-\Msg{*     PJLmath.sty                                           *}
-\Msg{*     PJLpaper.sty                                          *}
-\Msg{*     PJLthm.sty                                            *}
-\Msg{*                                                           *}
-\Msg{* Happy TeXing!                                             *}
-\Msg{*                                                           *}
-\Msg{*************************************************************}
-
-\endbatchfile

Deleted: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLauthor.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLauthor.sty	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLauthor.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -1,245 +0,0 @@
-%%
-%% This is file `PJLauthor.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{PJLauthor}
-    [2021/12/16 Enhanced author information block]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
-    family = @PJLauthor,
-    prefix = @PJLauthor@,
-}
-\DeclareBoolOption[false]{amsfashion}
-\ProcessKeyvalOptions*\relax
-
-\ifdefined\subjclass\endinput\fi
-
-%%================================
-%% Font and style
-%%================================
-\def\PJLauthor at font@author{\normalsize\normalfont\scshape}
-\def\PJLauthor at font@address{\small\normalfont\itshape}
-\def\PJLauthor at font@curraddr{\small\normalfont\itshape}
-\def\PJLauthor at font@email{\small\normalfont\ttfamily}
-
-%%================================
-%% Lengths
-%%================================
-\newlength{\PJLauthor at length@innersep}
-\setlength{\PJLauthor at length@innersep}{.3\baselineskip}
-\newlength{\PJLauthor at length@sep}
-\setlength{\PJLauthor at length@sep}{.5\baselineskip}
-\newlength{\PJLauthor at length@aftersep}
-\setlength{\PJLauthor at length@aftersep}{.3\baselineskip}
-
-%%================================
-%% The macros
-%%================================
-\newif\if at PJLauthor@affilon
-\renewcommand*{\author}[1]{%
-    \gappto\@author{\phantom{A}\\[-\baselineskip]%
-    \vspace{\PJLauthor at length@sep}%
-    \PJLauthor at font@author{#1}\\\phantom{}
-    \@PJLauthor at affilonfalse}}
-\providecommand*{\address}[1]{%
-    \gappto\@author{\phantom{A}\\[-\baselineskip]%
-        \if at PJLauthor@affilon\else%
-            \vspace{\PJLauthor at length@innersep}%
-        \fi%
-        \@PJLauthor at affilontrue%
-        \PJLauthor at font@address{#1}\\\phantom{}}%
-}
-\providecommand*{\curraddr}[1]{%
-    \gappto\@author{\phantom{A}\\[-\baselineskip]%
-        \if at PJLauthor@affilon\else%
-            \vspace{\PJLauthor at length@innersep}%
-        \fi%
-        \@PJLauthor at affilontrue%
-        \PJLauthor at font@curraddr{#1}\\\phantom{}}%
-}
-\providecommand*{\email}[1]{%
-    \gappto\@author{\phantom{A}\\[-\baselineskip]%
-        \if at PJLauthor@affilon\else%
-            \vspace{\PJLauthor at length@innersep}%
-        \fi%
-        \@PJLauthor at affilontrue%
-        \PJLauthor at font@email{#1}\\\phantom{}}%
-}
-
-%%================================
-%% Adjustment
-%%================================
-\patchcmd{\@maketitle}{\begin{tabular}[t]{c}}{}{}{}
-\patchcmd{\@maketitle}{\end{tabular}}{}{}{}
-\def\@author{}
-\pretocmd{\@maketitle}{%
-    \pretocmd{\@author}{\vspace{-\PJLauthor at length@sep}}{}{\FAIL}%
-    \apptocmd{\@author}{%
-        \vspace{-\baselineskip}%
-        \if at PJLauthor@affilon%
-            \vspace{\PJLauthor at length@aftersep}%
-        \fi%
-    }{}{\FAIL}%
-}{}{\FAIL}
-
-\ifbool{@PJLauthor at amsfashion}{
-
-\RequirePackage{PJLlang}
-\RequirePackage{calc}
-
-\providecommand{\conditionalbfseries}{\bfseries}
-
-\def\keywordsnameEN{\textsc{Key words and phrases}}
-\def\keywordsnameFR{\textsc{Mots et phrases clés}}
-\def\keywordsnameDE{\textsc{Schlüsselwörter und Phrasen}}
-\def\keywordsnameIT{\textsc{Parole e frasi chiave}}
-\def\keywordsnamePT{\textsc{Palavras e frases chave}}
-\def\keywordsnameBR{\textsc{Palavras e frases chave}}
-\def\keywordsnameES{\textsc{Palabras y frases clave}}
-\def\keywordsnameCN{关键词}
-\def\keywordsnameTC{關鍵詞}
-\def\keywordsnameJP{キーワード}
-\def\keywordsnameRU{Ключевые слова и фразы}
-
-\def\PJL at keywords{}
-\providecommand*{\keywords}[1]{\def\PJL at keywords{#1}}
-
-\def\PJL at dedicatory{}
-\providecommand*{\dedicatory}[1]{\def\PJL at dedicatory{#1}}
-
-\AtEndPreamble{
-\let\footnotemark at PJLoriginal\footnotemark%
-\let\footnotemark\relax%
-\let\thanks at PJLoriginal\thanks%
-\newlength\PJL at starlength
-\setlength{\PJL at starlength}{\widthof{*}}
-\newcommand*{\PJL at prethanks}[1]{\thanks at PJLoriginal{\hspace*{-\PJL at starlength}#1}}
-\renewcommand*{\thanks}[1]{%
-    \ifx#1\@empty\else%
-        \apptocmd{\@title}{%
-            \thanks at PJLoriginal{\hspace*{-\PJL at starlength}#1}%
-        }{}{\FAIL}%
-    \fi}
-\let\author at PJLoriginal\author
-\renewcommand{\author}[1]{%
-    \author at PJLoriginal{%
-        \let\footnotemark\footnotemark at PJLoriginal%
-        \let\thanks\thanks at PJLoriginal%
-        #1%
-        \let\footnotemark\relax%
-    }%
-}
-}
-
-\let\abstract at PJLoriginal\abstract%
-\let\endabstract at PJLoriginal\endabstract%
-\newif\if at PJLauthor@maketitle\@PJLauthor at maketitlefalse
-\newif\if at PJLauthor@absbefore\@PJLauthor at absbeforefalse
-\RequirePackage{fancyvrb}
-\providecommand*\protected at iwrite[3]{%
-  \begingroup
-  \let\thepage\relax
-  #2%
-  \let\protect\@unexpandable at protect
-  \edef\reserved at a{\immediate\write#1{#3}}\reserved at a
-  \endgroup
-  \if at nobreak\ifvmode\nobreak\fi\fi
-}
-\patchcmd{\FVB at VerbatimOut}
-  {\immediate\write\FV at OutFile}
-  {\protected at iwrite\FV at OutFile{}}
-  {}{}
-\renewenvironment{abstract}{%
-    \VerbatimOut{\jobname.pjlabs}%
-}{
-    \endVerbatimOut%
-    \if at PJLauthor@maketitle%
-        \begin{abstract at PJLoriginal}%
-            \input{\jobname.pjlabs}%
-        \end{abstract at PJLoriginal}%
-        % \ifx\PJL at keywords\@empty\else%
-        %     \par\smallskip\noindent{\conditionalbfseries\csname keywordsname\csname\languagename ABBR\endcsname\endcsname.}~\PJL at keywords%
-        % \fi%
-    \else%
-        \global\@PJLauthor at absbeforetrue%
-    \fi%
-}
-
-\AtEndPreamble{%
-\patchcmd{\@maketitle}{\@date}{%
-    \ifx\@date\@empty\vspace{-2\baselineskip}%
-    \else\@date\fi%
-    \ifx\PJL at dedicatory\@empty\else%
-        \ifx\@date\@empty\vspace{2\baselineskip}\fi%
-        \par\vspace{-\parskip}\bigskip%
-        {\itshape\PJL at dedicatory}%
-        \ifx\@date\@empty%
-            \vspace{-1.7\baselineskip}%
-            \vspace{-\parskip}%
-        \fi%
-    \fi%
-}{}{\FAIL}
-\pretocmd{\maketitle}{%
-    \ifx\PJL at keywords\@empty\else%
-    \PJL at prethanks{{\protect\conditionalbfseries%
-    \csname keywordsname\csname\languagename ABBR\endcsname\endcsname.}%
-    ~\PJL at keywords}%
-    \fi}{}{\FAIL}
-\apptocmd{\maketitle}{%
-    \if at PJLauthor@absbefore%
-        \begin{abstract at PJLoriginal}%
-            \input{\jobname.pjlabs}%
-            % \ifx\PJL at keywords\@empty\else%
-            %     \par\smallskip\noindent{\conditionalbfseries\csname keywordsname\csname\languagename ABBR\endcsname\endcsname.}~\PJL at keywords%
-            % \fi%
-        \end{abstract at PJLoriginal}%
-    \fi%
-    \global\let\address\relax
-    \global\let\curraddr\relax
-    \global\let\email\relax
-    \global\let\dedicatory\relax
-    \global\let\keywords\relax
-    \global\@PJLauthor at maketitletrue
-}{}{\FAIL}
-}
-
-\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 at 2020\endcsname
-    }{%
-        \expandafter\let\expandafter\subjclassname\csname subjclassname@#1\endcsname
-    }%
-    \PJL at prethanks{{\itshape\subjclassname.}\enspace\@subjclass{}.}
-}
-\@namedef{subjclassname at 1991}{%
-  \textup{1991} Mathematics Subject Classification}
-\@namedef{subjclassname at 2000}{%
-  \textup{2000} Mathematics Subject Classification}
-\@namedef{subjclassname at 2010}{%
-  \textup{2010} Mathematics Subject Classification}
-\@namedef{subjclassname at 2020}{%
-  \textup{2020} Mathematics Subject Classification}
-
-}
-
-\endinput
-%%
-%% End of file `PJLauthor.sty'.

Deleted: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLdate.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLdate.sty	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLdate.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -1,74 +0,0 @@
-%%
-%% This is file `PJLdate.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{PJLdate}
-    [2021/12/16 Convert yyyy-mm-dd to normal datetime format]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
-    family = @PJLdate,
-    prefix = @PJLdate@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\ProcessKeyvalOptions*\relax
-\if at PJLdate@draft
-    \@PJLdate at fasttrue
-\fi
-\DeclareDocumentCommand{\TheDate}{}{\PJLdate}
-\DeclareDocumentCommand{\PLdate}{}{\PJLdate}
-\if at PJLdate@fast\let\PJLdate\relax\endinput\fi
-
-\RequirePackage{PJLlang}
-
-\robustify\@latex at warning@no at line
-
-\RequirePackage{silence}
-\WarningFilter*{datetime2}{Date-Time Language Module}
-\PassOptionsToPackage{fr-FR,en-US}{datetime2}
-\RequirePackage{datetime2}
-\RequirePackage{zhnumber}
-
-\let\@DTMdate at PJLoriginal\@DTMdate
-\gappto{\PJLlang at langconfig@common}{%
-    \let\@DTMdate\@DTMdate at PJLoriginal%
-}
-\gappto{\PJLlang at langconfig@CN}{%
-    \renewcommand*{\@DTMdate}[1]{%
-    \expandafter\@dtm at parsedate#1\@dtm at endparsedate%
-    \zhdate{\@dtm at year/\@dtm at month/\@dtm at day}%
-    }%
-}
-\gappto{\PJLlang at langconfig@TC}{%
-    \renewcommand*{\@DTMdate}[1]{%
-    \expandafter\@dtm at parsedate#1\@dtm at endparsedate%
-    \zhdate{\@dtm at year/\@dtm at month/\@dtm at day}%
-    }%
-}
-\gappto{\PJLlang at langconfig@JP}{%
-    \renewcommand*{\@DTMdate}[1]{%
-    \expandafter\@dtm at parsedate#1\@dtm at endparsedate%
-    \zhdate{\@dtm at year/\@dtm at month/\@dtm at day}%
-    }%
-}
-
-\providecommand*{\PJLdate}[1]{\DTMdate{#1}}
-
-\endinput
-%%
-%% End of file `PJLdate.sty'.

Deleted: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLdraft.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLdraft.sty	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLdraft.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -1,104 +0,0 @@
-%%
-%% This is file `PJLdraft.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{PJLdraft}
-    [2021/12/16 Some useful macros for the draft stage]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
-    family = @PJLdraft,
-    prefix = @PJLdraft@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\ProcessKeyvalOptions*\relax
-\if at PJLdraft@draft
-    \@PJLdraft at fasttrue
-\fi
-
-\RequirePackage{PJLlang}
-\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\dnfTextIT{Per essere finito}
-\def\needgraphTextIT{Manca un'immagine qui}
-\def\dnfTextPT{Não terminou}
-\def\needgraphTextPT{Precisa de uma foto aqui}
-\def\dnfTextBR{Não terminou}
-\def\needgraphTextBR{Precisa de uma foto aqui}
-\def\dnfTextES{Estar terminado}
-\def\needgraphTextES{Falta una imagen aquí}
-\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 at PJLdraft@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}%
-}
-
-\endinput
-%%
-%% End of file `PJLdraft.sty'.

Deleted: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLlang.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLlang.sty	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLlang.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -1,358 +0,0 @@
-%%
-%% 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/12/16 Multi-language configuration]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{%
-    family = @PJLlang,
-    prefix = @PJLlang@
-}
-\DeclareBoolOption[false]{polyglossia}
-
-\newif\if at PJLlang@enable at all\@PJLlang at enable@alltrue
-\newif\if at PJLlang@enable at EN\@PJLlang at enable@ENfalse
-\newif\if at PJLlang@enable at FR\@PJLlang at enable@FRfalse
-\newif\if at PJLlang@enable at DE\@PJLlang at enable@DEfalse
-\newif\if at PJLlang@enable at IT\@PJLlang at enable@ITfalse
-\newif\if at PJLlang@enable at PT\@PJLlang at enable@PTfalse
-\newif\if at PJLlang@enable at BR\@PJLlang at enable@BRfalse
-\newif\if at PJLlang@enable at ES\@PJLlang at enable@ESfalse
-\newif\if at PJLlang@enable at CN\@PJLlang at enable@CNfalse
-\newif\if at PJLlang@enable at TC\@PJLlang at enable@TCfalse
-\newif\if at PJLlang@enable at JP\@PJLlang at enable@JPfalse
-\newif\if at PJLlang@enable at RU\@PJLlang at enable@RUfalse
-\def\PJLlang at babeloptions{}
-\DeclareVoidOption{EN}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}\gpreto{\PJLlang at babeloptions}{,english}}
-\DeclareVoidOption{english}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}\gpreto{\PJLlang at babeloptions}{,english}}
-\DeclareVoidOption{English}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}\gpreto{\PJLlang at babeloptions}{,english}}
-\DeclareVoidOption{FR}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}\gpreto{\PJLlang at babeloptions}{,french}}
-\DeclareVoidOption{french}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}\gpreto{\PJLlang at babeloptions}{,french}}
-\DeclareVoidOption{French}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}\gpreto{\PJLlang at babeloptions}{,french}}
-\DeclareVoidOption{DE}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}\gpreto{\PJLlang at babeloptions}{,ngerman}}
-\DeclareVoidOption{german}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}\gpreto{\PJLlang at babeloptions}{,ngerman}}
-\DeclareVoidOption{ngerman}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}\gpreto{\PJLlang at babeloptions}{,ngerman}}
-\DeclareVoidOption{German}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}\gpreto{\PJLlang at babeloptions}{,ngerman}}
-\DeclareVoidOption{IT}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}\gpreto{\PJLlang at babeloptions}{,italian}}
-\DeclareVoidOption{italian}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}\gpreto{\PJLlang at babeloptions}{,italian}}
-\DeclareVoidOption{Italian}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}\gpreto{\PJLlang at babeloptions}{,italian}}
-\DeclareVoidOption{PT}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}\gpreto{\PJLlang at babeloptions}{,portuguese}}
-\DeclareVoidOption{portuguese}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}\gpreto{\PJLlang at babeloptions}{,portuguese}}
-\DeclareVoidOption{Portuguese}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}\gpreto{\PJLlang at babeloptions}{,portuguese}}
-\DeclareVoidOption{BR}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}\gpreto{\PJLlang at babeloptions}{,brazilian}}
-\DeclareVoidOption{brazilian}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}\gpreto{\PJLlang at babeloptions}{,brazilian}}
-\DeclareVoidOption{Brazilian}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}\gpreto{\PJLlang at babeloptions}{,brazilian}}
-\DeclareVoidOption{ES}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}\gpreto{\PJLlang at babeloptions}{,spanish}}
-\DeclareVoidOption{spanish}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}\gpreto{\PJLlang at babeloptions}{,spanish}}
-\DeclareVoidOption{Spanish}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}\gpreto{\PJLlang at babeloptions}{,spanish}}
-\DeclareVoidOption{CN}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{chinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{Chinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{schinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{SChinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{simplifiedchinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{SimplifiedChinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
-\DeclareVoidOption{TC}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
-\DeclareVoidOption{tchinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
-\DeclareVoidOption{TChinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
-\DeclareVoidOption{traditionalchinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
-\DeclareVoidOption{TraditionalChinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
-\DeclareVoidOption{JP}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}\gpreto{\PJLlang at babeloptions}{,japanese}}
-\DeclareVoidOption{japanese}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}\gpreto{\PJLlang at babeloptions}{,japanese}}
-\DeclareVoidOption{Japanese}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}\gpreto{\PJLlang at babeloptions}{,japanese}}
-\DeclareVoidOption{RU}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}\gpreto{\PJLlang at babeloptions}{,russian}}
-\DeclareVoidOption{russian}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}\gpreto{\PJLlang at babeloptions}{,russian}}
-\DeclareVoidOption{Russian}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}\gpreto{\PJLlang at babeloptions}{,russian}}
-\ProcessKeyvalOptions*\relax
-
-\ExplSyntaxOn
-\cs_new_protected:cpn { @clearglobaloption } #1
- {
-  \clist_remove_all:cn { @classoptionslist } { #1 }
- }
-\ExplSyntaxOff
-
-\@clearglobaloption{chinese}
-\@clearglobaloption{Chinese}
-
-\providecommand{\PJLlang at mainlang}{EN}
-
-\if at PJLlang@enable at all
-    \@PJLlang at enable@ENtrue
-    \@PJLlang at enable@FRtrue
-    \@PJLlang at enable@DEtrue
-    \@PJLlang at enable@ITtrue
-    \@PJLlang at enable@PTtrue
-    \@PJLlang at enable@BRtrue
-    \@PJLlang at enable@EStrue
-    \@PJLlang at enable@CNtrue
-    \@PJLlang at enable@TCtrue
-    \@PJLlang at enable@JPtrue
-    \@PJLlang at 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\schineseABBR{CN}
-\newcommand\tchineseABBR{TC}
-\newcommand\japaneseABBR{JP}
-\newcommand\russianABBR{RU}
-
-\ExplSyntaxOn
-\NewExpandableDocumentCommand{\StrToABBR}{m}
- {
-  \str_case_e:nn { \str_foldcase:n { #1 } }
-   {
-        {cn}                    {CN}
-        {chinese}               {CN}
-        {schinese}              {CN}
-        {simplifiedchinese}     {CN}
-        {tc}                    {TC}
-        {tchinese}              {TC}
-        {traditionalchinese}    {TC}
-        {jp}                    {JP}
-        {japanese}              {JP}
-        {en}                    {EN}
-        {english}               {EN}
-        {fr}                    {FR}
-        {french}                {FR}
-        {de}                    {DE}
-        {ngerman}               {DE}
-        {it}                    {IT}
-        {italian}               {IT}
-        {pt}                    {PT}
-        {portuguese}            {PT}
-        {br}                    {BR}
-        {brazilian}             {BR}
-        {es}                    {ES}
-        {spanish}               {ES}
-        {german}                {DE}
-        {ru}                    {RU}
-        {russian}               {RU}
-   }
- }
-
-\NewExpandableDocumentCommand{\StrToTYPE}{m}
- {
-  \str_case_e:nn { \str_foldcase:n { #1 } }
-   {
-        {cn}                    {CJK}
-        {chinese}               {CJK}
-        {schinese}              {CJK}
-        {simplifiedchinese}     {CJK}
-        {tc}                    {CJK}
-        {tchinese}              {CJK}
-        {traditionalchinese}    {CJK}
-        {jp}                    {CJK}
-        {japanese}              {CJK}
-        {en}                    {Latin}
-        {english}               {Latin}
-        {fr}                    {Latin}
-        {french}                {Latin}
-        {de}                    {Latin}
-        {ngerman}               {Latin}
-        {it}                    {Latin}
-        {italian}               {Latin}
-        {pt}                    {Latin}
-        {portuguese}            {Latin}
-        {br}                    {Latin}
-        {brazilian}             {Latin}
-        {es}                    {Latin}
-        {spanish}               {Latin}
-        {german}                {Latin}
-        {ru}                    {Latin}
-        {russian}               {Latin}
-   }
- }
-\ExplSyntaxOff
-
-\RequirePackage{iftex}
-\ifPDFTeX
-\RequirePackage[T1]{fontenc}
-\RequirePackage{inputenc}
-\fi
-
-\if at 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 at PJLlang@enable at 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 at babeloptions}{babel}
-    \fi
-    \PassOptionsToPackage{italian,brazilian,spanish,ngerman,french,english}{cleveref}
-    \RequirePackage{babel}
-    \if at PJLlang@enable at FR
-        \frenchsetup{PartNameFull=false}
-    \fi
-    \if at PJLlang@enable at PT
-        \let\PJL at babelord\ord
-        \let\ord\relax
-        \AtBeginDocument{
-            \@ifundefined{ord}{}
-            {
-                \let\PJL at userord\ord
-                \let\ord\relax
-                \newcommand{\ord}{%
-                    \ifmmode\expandafter\PJL at userord\else\expandafter\PJL at babelord\fi%
-                }
-            }
-        }
-    \fi
-
-    \babelprovide{schinese}
-    \babelprovide{tchinese}
-\fi
-
-\let\today at PJLoriginal\today
-\newcommand{\PJLlang at langconfig@common}{%
-    \ifdefined\DTMtoday%
-        \let\today\DTMtoday%
-    \else%
-        \let\today\today at PJLoriginal%
-    \fi%
-}
-
-\newcommand{\PJLlang at langconfig@CN}{%
-    \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}{schinese}%
-}
-\newcommand{\PJLlang at langconfig@TC}{%
-    \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 at langconfig@JP}{%
-    \selectlanguage{japanese}%
-}
-\newcommand{\PJLlang at langconfig@EN}{%
-    \selectlanguage{english}%
-}
-\newcommand{\PJLlang at langconfig@FR}{%
-    \selectlanguage{french}%
-    \def\frenchpartname{Partie}%
-}
-\newcommand{\PJLlang at langconfig@DE}{%
-    \selectlanguage{ngerman}%
-}
-\newcommand{\PJLlang at langconfig@IT}{%
-    \selectlanguage{italian}%
-}
-\newcommand{\PJLlang at langconfig@PT}{%
-    \selectlanguage{portuguese}%
-}
-\newcommand{\PJLlang at langconfig@BR}{%
-    \selectlanguage{brazilian}%
-}
-\newcommand{\PJLlang at langconfig@ES}{%
-    \selectlanguage{spanish}%
-}
-\newcommand{\PJLlang at langconfig@RU}{%
-    \selectlanguage{russian}%
-}
-
-\NewDocumentCommand\AddLanguageSetting{d()m}{%
-\IfNoValueTF{#1}%
-    {\gappto{\PJLlang at langconfig@common}{#2}}%
-    {\expandafter\gappto\expandafter{\csname PJLlang at langconfig@\StrToABBR{#1}\endcsname}{#2}}%
-}
-
-\RequirePackage{setspace}
-\def\PJL at config@linespacing{\setstretch{1.00}}
-\def\PJL at config@CJKlinespacing{\onehalfspacing}
-\newcommand{\PJLsetlinespacing}[1]{\renewcommand{\PJL at config@linespacing}{#1}}
-\newcommand{\PJLsetCJKlinespacing}[1]{\renewcommand{\PJL at config@CJKlinespacing}{#1}}
-\@ifclassloaded{beamer}{
-    \def\PJL at config@parindent{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{0em}}}
-    \def\PJL at config@CJKparindent{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{0em}}}
-}{
-    \def\PJL at config@parindent{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{1.5em}}}
-    \def\PJL at config@CJKparindent{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{2em}}}
-}
-\newcommand{\PJLsetparindent}[1]{\renewcommand{\PJL at config@parindent}{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{#1}}}}
-\newcommand{\PJLsetCJKparindent}[1]{\renewcommand{\PJL at config@CJKparindent}{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{#1}}}}
-\def\PJL at config@CJK{\PJL at config@CJKlinespacing\PJL at config@CJKparindent}
-\def\PJL at config@Latin{\PJL at config@linespacing\PJL at config@parindent}
-\NewDocumentCommand{\UseLanguageCORE}{m}{%
-    \PJLlang at langconfig@common%
-    \csname PJL at config@\StrToTYPE{#1}\endcsname%
-    \csname PJLlang at langconfig@\StrToABBR{#1}\endcsname%
-}
-\NewDocumentCommand{\UseLanguage}{m}{%
-    \ifx\@onlypreamble\@notprerr%
-        \UseLanguageCORE{#1}%
-    \else%
-        \AfterEndPreamble{\UseLanguageCORE{#1}}%
-    \fi%
-}
-\NewDocumentCommand{\UseOtherLanguage}{mm}{%
-\begingroup\begingroup%
-    \PJLlang at langconfig@common%
-    \csname PJLlang at langconfig@\StrToABBR{#1}\endcsname%
-    #2%
-\endgroup\endgroup%
-}
-
-\expandafter\UseLanguage\expandafter{\PJLlang at mainlang}
-
-\endinput
-%%
-%% End of file `PJLlang.sty'.

Deleted: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLlogo.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLlogo.sty	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLlogo.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -1,72 +0,0 @@
-%%
-%% This is file `PJLlogo.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{PJLlogo}
-    [2021/12/16 The ProjLib logo]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
-    family = @PJLlogo,
-    prefix = @PJLlogo@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\ProcessKeyvalOptions*\relax
-\if at PJLlogo@draft
-    \@PJLlogo at fasttrue
-\fi
-\if at PJLlogo@fast\def\ProjLib{{\normalfont ProjLib}}\endinput\fi
-
-\RequirePackage{xcolor}
-\RequirePackage{graphicx}
-\ifdefined\fontspec
-  \newfontface{\PJLlogo at font}{LinBiolinum_R.otf}
-\else
-  \RequirePackage[T1]{fontenc}
-  \newcommand{\PJLlogo at font}{\fontfamily{LinuxBiolinumT-TLF}\selectfont}
-\fi
-
-\newcommand{\PJLSigmaJ}{%
-  \vbox{\offinterlineskip
-    \ialign{%
-      \hfil##\hfil\cr
-      \hidewidth\hskip0.15ex\scalebox{0.4}{\rotatebox{-10}{\usefont{U}{zeur}{b}{n}\symbol{"06}}}\hidewidth\cr
-      \noalign{\kern0.15ex}
-      \j\cr
-    }%
-  }%
-}
-
-\newcommand{\ProjLib at generic}[1]{%
-  \begingroup
-  \normalfont\PJLlogo at font
-  \textcolor{blue!60!cyan}{P}%
-  \textcolor{blue!45!cyan}{r}%
-  \textcolor{blue!30!cyan}{o}%
-  \textcolor{green!70!black}{#1}%
-  \textcolor{red!20!yellow}{L}%
-  \textcolor{red!40!yellow}{i}%
-  \textcolor{red!60!yellow}{b}%
-  \endgroup
-}
-\DeclareRobustCommand*{\ProjLib}{\ProjLib at generic{\PJLSigmaJ}}
-\DeclareRobustCommand*{\ProjLibText}{\ProjLib at generic{j}}
-
-\endinput
-%%
-%% End of file `PJLlogo.sty'.

Deleted: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLmath.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLmath.sty	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLmath.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -1,315 +0,0 @@
-%%
-%% This is file `PJLmath.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{PJLmath}
-    [2021/12/16 Useful math macros and shortcuts]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\RequirePackage{mathtools}
-\RequirePackage{mathrsfs}
-\@ifpackageloaded{unicode-math}{}{\RequirePackage{amssymb}}
-
-%%================================
-%% Shorthands
-%%================================
-\providecommand{\N}{\ensuremath{\mathbb{N}}}
-\providecommand{\Z}{\ensuremath{\mathbb{Z}}}
-\providecommand{\Q}{\ensuremath{\mathbb{Q}}}
-\providecommand{\R}{\ensuremath{\mathbb{R}}}
-\providecommand{\C}{\ensuremath{\mathbb{C}}}
-\providecommand{\F}{\ensuremath{\mathbb{F}}}
-\providecommand{\A}{\ensuremath{\mathbb{A}}}
-
-\providecommand{\bb}[1]{\ensuremath{\mathbb{#1}}}
-\providecommand{\bbA}{\ensuremath{\mathbb{A}}}
-\providecommand{\bbB}{\ensuremath{\mathbb{B}}}
-\providecommand{\bbC}{\ensuremath{\mathbb{C}}}
-\providecommand{\bbD}{\ensuremath{\mathbb{D}}}
-\providecommand{\bbE}{\ensuremath{\mathbb{E}}}
-\providecommand{\bbF}{\ensuremath{\mathbb{F}}}
-\providecommand{\bbG}{\ensuremath{\mathbb{G}}}
-\providecommand{\bbH}{\ensuremath{\mathbb{H}}}
-\providecommand{\bbI}{\ensuremath{\mathbb{I}}}
-\providecommand{\bbJ}{\ensuremath{\mathbb{J}}}
-\providecommand{\bbK}{\ensuremath{\mathbb{K}}}
-\providecommand{\bbL}{\ensuremath{\mathbb{L}}}
-\providecommand{\bbM}{\ensuremath{\mathbb{M}}}
-\providecommand{\bbN}{\ensuremath{\mathbb{N}}}
-\providecommand{\bbO}{\ensuremath{\mathbb{O}}}
-\providecommand{\bbP}{\ensuremath{\mathbb{P}}}
-\providecommand{\bbQ}{\ensuremath{\mathbb{Q}}}
-\providecommand{\bbR}{\ensuremath{\mathbb{R}}}
-\providecommand{\bbS}{\ensuremath{\mathbb{S}}}
-\providecommand{\bbT}{\ensuremath{\mathbb{T}}}
-\providecommand{\bbU}{\ensuremath{\mathbb{U}}}
-\providecommand{\bbV}{\ensuremath{\mathbb{V}}}
-\providecommand{\bbW}{\ensuremath{\mathbb{W}}}
-\providecommand{\bbX}{\ensuremath{\mathbb{X}}}
-\providecommand{\bbY}{\ensuremath{\mathbb{Y}}}
-\providecommand{\bbZ}{\ensuremath{\mathbb{Z}}}
-
-\providecommand{\mc}[1]{\ensuremath{\mathcal{#1}}}
-\providecommand{\mcA}{\ensuremath{\mathcal{A}}}
-\providecommand{\mcB}{\ensuremath{\mathcal{B}}}
-\providecommand{\mcC}{\ensuremath{\mathcal{C}}}
-\providecommand{\mcD}{\ensuremath{\mathcal{D}}}
-\providecommand{\mcE}{\ensuremath{\mathcal{E}}}
-\providecommand{\mcF}{\ensuremath{\mathcal{F}}}
-\providecommand{\mcG}{\ensuremath{\mathcal{G}}}
-\providecommand{\mcH}{\ensuremath{\mathcal{H}}}
-\providecommand{\mcI}{\ensuremath{\mathcal{I}}}
-\providecommand{\mcJ}{\ensuremath{\mathcal{J}}}
-\providecommand{\mcK}{\ensuremath{\mathcal{K}}}
-\providecommand{\mcL}{\ensuremath{\mathcal{L}}}
-\providecommand{\mcM}{\ensuremath{\mathcal{M}}}
-\providecommand{\mcN}{\ensuremath{\mathcal{N}}}
-\providecommand{\mcO}{\ensuremath{\mathcal{O}}}
-\providecommand{\mcP}{\ensuremath{\mathcal{P}}}
-\providecommand{\mcQ}{\ensuremath{\mathcal{Q}}}
-\providecommand{\mcR}{\ensuremath{\mathcal{R}}}
-\providecommand{\mcS}{\ensuremath{\mathcal{S}}}
-\providecommand{\mcT}{\ensuremath{\mathcal{T}}}
-\providecommand{\mcU}{\ensuremath{\mathcal{U}}}
-\providecommand{\mcV}{\ensuremath{\mathcal{V}}}
-\providecommand{\mcW}{\ensuremath{\mathcal{W}}}
-\providecommand{\mcX}{\ensuremath{\mathcal{X}}}
-\providecommand{\mcY}{\ensuremath{\mathcal{Y}}}
-\providecommand{\mcZ}{\ensuremath{\mathcal{Z}}}
-
-\providecommand{\cal}[1]{\ensuremath{\mathcal{#1}}}
-\providecommand{\calA}{\ensuremath{\mathcal{A}}}
-\providecommand{\calB}{\ensuremath{\mathcal{B}}}
-\providecommand{\calC}{\ensuremath{\mathcal{C}}}
-\providecommand{\calD}{\ensuremath{\mathcal{D}}}
-\providecommand{\calE}{\ensuremath{\mathcal{E}}}
-\providecommand{\calF}{\ensuremath{\mathcal{F}}}
-\providecommand{\calG}{\ensuremath{\mathcal{G}}}
-\providecommand{\calH}{\ensuremath{\mathcal{H}}}
-\providecommand{\calI}{\ensuremath{\mathcal{I}}}
-\providecommand{\calJ}{\ensuremath{\mathcal{J}}}
-\providecommand{\calK}{\ensuremath{\mathcal{K}}}
-\providecommand{\calL}{\ensuremath{\mathcal{L}}}
-\providecommand{\calM}{\ensuremath{\mathcal{M}}}
-\providecommand{\calN}{\ensuremath{\mathcal{N}}}
-\providecommand{\calO}{\ensuremath{\mathcal{O}}}
-\providecommand{\calP}{\ensuremath{\mathcal{P}}}
-\providecommand{\calQ}{\ensuremath{\mathcal{Q}}}
-\providecommand{\calR}{\ensuremath{\mathcal{R}}}
-\providecommand{\calS}{\ensuremath{\mathcal{S}}}
-\providecommand{\calT}{\ensuremath{\mathcal{T}}}
-\providecommand{\calU}{\ensuremath{\mathcal{U}}}
-\providecommand{\calV}{\ensuremath{\mathcal{V}}}
-\providecommand{\calW}{\ensuremath{\mathcal{W}}}
-\providecommand{\calX}{\ensuremath{\mathcal{X}}}
-\providecommand{\calY}{\ensuremath{\mathcal{Y}}}
-\providecommand{\calZ}{\ensuremath{\mathcal{Z}}}
-
-\providecommand{\mf}[1]{\ensuremath{\mathfrak{#1}}}
-\providecommand{\mfa}{\ensuremath{\mathfrak{a}}}
-\providecommand{\mfb}{\ensuremath{\mathfrak{b}}}
-\providecommand{\mfc}{\ensuremath{\mathfrak{c}}}
-\providecommand{\mfd}{\ensuremath{\mathfrak{d}}}
-\providecommand{\mfe}{\ensuremath{\mathfrak{e}}}
-\providecommand{\mff}{\ensuremath{\mathfrak{f}}}
-\providecommand{\mfg}{\ensuremath{\mathfrak{g}}}
-\providecommand{\mfh}{\ensuremath{\mathfrak{h}}}
-\providecommand{\mfi}{\ensuremath{\mathfrak{i}}}
-\providecommand{\mfj}{\ensuremath{\mathfrak{j}}}
-\providecommand{\mfk}{\ensuremath{\mathfrak{k}}}
-\providecommand{\mfl}{\ensuremath{\mathfrak{l}}}
-\providecommand{\mfm}{\ensuremath{\mathfrak{m}}}
-\providecommand{\mfn}{\ensuremath{\mathfrak{n}}}
-\providecommand{\mfo}{\ensuremath{\mathfrak{o}}}
-\providecommand{\mfp}{\ensuremath{\mathfrak{p}}}
-\providecommand{\mfq}{\ensuremath{\mathfrak{q}}}
-\providecommand{\mfr}{\ensuremath{\mathfrak{r}}}
-\providecommand{\mfs}{\ensuremath{\mathfrak{s}}}
-\providecommand{\mft}{\ensuremath{\mathfrak{t}}}
-\providecommand{\mfu}{\ensuremath{\mathfrak{u}}}
-\providecommand{\mfv}{\ensuremath{\mathfrak{v}}}
-\providecommand{\mfw}{\ensuremath{\mathfrak{w}}}
-\providecommand{\mfx}{\ensuremath{\mathfrak{x}}}
-\providecommand{\mfy}{\ensuremath{\mathfrak{y}}}
-\providecommand{\mfz}{\ensuremath{\mathfrak{z}}}
-\providecommand{\mfA}{\ensuremath{\mathfrak{A}}}
-\providecommand{\mfB}{\ensuremath{\mathfrak{B}}}
-\providecommand{\mfC}{\ensuremath{\mathfrak{C}}}
-\providecommand{\mfD}{\ensuremath{\mathfrak{D}}}
-\providecommand{\mfE}{\ensuremath{\mathfrak{E}}}
-\providecommand{\mfF}{\ensuremath{\mathfrak{F}}}
-\providecommand{\mfG}{\ensuremath{\mathfrak{G}}}
-\providecommand{\mfH}{\ensuremath{\mathfrak{H}}}
-\providecommand{\mfI}{\ensuremath{\mathfrak{I}}}
-\providecommand{\mfJ}{\ensuremath{\mathfrak{J}}}
-\providecommand{\mfK}{\ensuremath{\mathfrak{K}}}
-\providecommand{\mfL}{\ensuremath{\mathfrak{L}}}
-\providecommand{\mfM}{\ensuremath{\mathfrak{M}}}
-\providecommand{\mfN}{\ensuremath{\mathfrak{N}}}
-\providecommand{\mfO}{\ensuremath{\mathfrak{O}}}
-\providecommand{\mfP}{\ensuremath{\mathfrak{P}}}
-\providecommand{\mfQ}{\ensuremath{\mathfrak{Q}}}
-\providecommand{\mfR}{\ensuremath{\mathfrak{R}}}
-\providecommand{\mfS}{\ensuremath{\mathfrak{S}}}
-\providecommand{\mfT}{\ensuremath{\mathfrak{T}}}
-\providecommand{\mfU}{\ensuremath{\mathfrak{U}}}
-\providecommand{\mfV}{\ensuremath{\mathfrak{V}}}
-\providecommand{\mfW}{\ensuremath{\mathfrak{W}}}
-\providecommand{\mfX}{\ensuremath{\mathfrak{X}}}
-\providecommand{\mfY}{\ensuremath{\mathfrak{Y}}}
-\providecommand{\mfZ}{\ensuremath{\mathfrak{Z}}}
-
-\providecommand{\frak}[1]{\ensuremath{\mathfrak{#1}}}
-\providecommand{\fraka}{\ensuremath{\mathfrak{a}}}
-\providecommand{\frakb}{\ensuremath{\mathfrak{b}}}
-\providecommand{\frakc}{\ensuremath{\mathfrak{c}}}
-\providecommand{\frakd}{\ensuremath{\mathfrak{d}}}
-\providecommand{\frake}{\ensuremath{\mathfrak{e}}}
-\providecommand{\frakf}{\ensuremath{\mathfrak{f}}}
-\providecommand{\frakg}{\ensuremath{\mathfrak{g}}}
-\providecommand{\frakh}{\ensuremath{\mathfrak{h}}}
-\providecommand{\fraki}{\ensuremath{\mathfrak{i}}}
-\providecommand{\frakj}{\ensuremath{\mathfrak{j}}}
-\providecommand{\frakk}{\ensuremath{\mathfrak{k}}}
-\providecommand{\frakl}{\ensuremath{\mathfrak{l}}}
-\providecommand{\frakm}{\ensuremath{\mathfrak{m}}}
-\providecommand{\frakn}{\ensuremath{\mathfrak{n}}}
-\providecommand{\frako}{\ensuremath{\mathfrak{o}}}
-\providecommand{\frakp}{\ensuremath{\mathfrak{p}}}
-\providecommand{\frakq}{\ensuremath{\mathfrak{q}}}
-\providecommand{\frakr}{\ensuremath{\mathfrak{r}}}
-\providecommand{\fraks}{\ensuremath{\mathfrak{s}}}
-\providecommand{\frakt}{\ensuremath{\mathfrak{t}}}
-\providecommand{\fraku}{\ensuremath{\mathfrak{u}}}
-\providecommand{\frakv}{\ensuremath{\mathfrak{v}}}
-\providecommand{\frakw}{\ensuremath{\mathfrak{w}}}
-\providecommand{\frakx}{\ensuremath{\mathfrak{x}}}
-\providecommand{\fraky}{\ensuremath{\mathfrak{y}}}
-\providecommand{\frakz}{\ensuremath{\mathfrak{z}}}
-\providecommand{\frakA}{\ensuremath{\mathfrak{A}}}
-\providecommand{\frakB}{\ensuremath{\mathfrak{B}}}
-\providecommand{\frakC}{\ensuremath{\mathfrak{C}}}
-\providecommand{\frakD}{\ensuremath{\mathfrak{D}}}
-\providecommand{\frakE}{\ensuremath{\mathfrak{E}}}
-\providecommand{\frakF}{\ensuremath{\mathfrak{F}}}
-\providecommand{\frakG}{\ensuremath{\mathfrak{G}}}
-\providecommand{\frakH}{\ensuremath{\mathfrak{H}}}
-\providecommand{\frakI}{\ensuremath{\mathfrak{I}}}
-\providecommand{\frakJ}{\ensuremath{\mathfrak{J}}}
-\providecommand{\frakK}{\ensuremath{\mathfrak{K}}}
-\providecommand{\frakL}{\ensuremath{\mathfrak{L}}}
-\providecommand{\frakM}{\ensuremath{\mathfrak{M}}}
-\providecommand{\frakN}{\ensuremath{\mathfrak{N}}}
-\providecommand{\frakO}{\ensuremath{\mathfrak{O}}}
-\providecommand{\frakP}{\ensuremath{\mathfrak{P}}}
-\providecommand{\frakQ}{\ensuremath{\mathfrak{Q}}}
-\providecommand{\frakR}{\ensuremath{\mathfrak{R}}}
-\providecommand{\frakS}{\ensuremath{\mathfrak{S}}}
-\providecommand{\frakT}{\ensuremath{\mathfrak{T}}}
-\providecommand{\frakU}{\ensuremath{\mathfrak{U}}}
-\providecommand{\frakV}{\ensuremath{\mathfrak{V}}}
-\providecommand{\frakW}{\ensuremath{\mathfrak{W}}}
-\providecommand{\frakX}{\ensuremath{\mathfrak{X}}}
-\providecommand{\frakY}{\ensuremath{\mathfrak{Y}}}
-\providecommand{\frakZ}{\ensuremath{\mathfrak{Z}}}
-
-\providecommand{\ms}[1]{\ensuremath{\mathscr{#1}}}
-\providecommand{\msA}{\ensuremath{\mathscr{A}}}
-\providecommand{\msB}{\ensuremath{\mathscr{B}}}
-\providecommand{\msC}{\ensuremath{\mathscr{C}}}
-\providecommand{\msD}{\ensuremath{\mathscr{D}}}
-\providecommand{\msE}{\ensuremath{\mathscr{E}}}
-\providecommand{\msF}{\ensuremath{\mathscr{F}}}
-\providecommand{\msG}{\ensuremath{\mathscr{G}}}
-\providecommand{\msH}{\ensuremath{\mathscr{H}}}
-\providecommand{\msI}{\ensuremath{\mathscr{I}}}
-\providecommand{\msJ}{\ensuremath{\mathscr{J}}}
-\providecommand{\msK}{\ensuremath{\mathscr{K}}}
-\providecommand{\msL}{\ensuremath{\mathscr{L}}}
-\providecommand{\msM}{\ensuremath{\mathscr{M}}}
-\providecommand{\msN}{\ensuremath{\mathscr{N}}}
-\providecommand{\msO}{\ensuremath{\mathscr{O}}}
-\providecommand{\msP}{\ensuremath{\mathscr{P}}}
-\providecommand{\msQ}{\ensuremath{\mathscr{Q}}}
-\providecommand{\msR}{\ensuremath{\mathscr{R}}}
-\providecommand{\msS}{\ensuremath{\mathscr{S}}}
-\providecommand{\msT}{\ensuremath{\mathscr{T}}}
-\providecommand{\msU}{\ensuremath{\mathscr{U}}}
-\providecommand{\msV}{\ensuremath{\mathscr{V}}}
-\providecommand{\msW}{\ensuremath{\mathscr{W}}}
-\providecommand{\msX}{\ensuremath{\mathscr{X}}}
-\providecommand{\msY}{\ensuremath{\mathscr{Y}}}
-\providecommand{\msZ}{\ensuremath{\mathscr{Z}}}
-
-\providecommand{\scr}[1]{\ensuremath{\mathscr{#1}}}
-\providecommand{\scrA}{\ensuremath{\mathscr{A}}}
-\providecommand{\scrB}{\ensuremath{\mathscr{B}}}
-\providecommand{\scrC}{\ensuremath{\mathscr{C}}}
-\providecommand{\scrD}{\ensuremath{\mathscr{D}}}
-\providecommand{\scrE}{\ensuremath{\mathscr{E}}}
-\providecommand{\scrF}{\ensuremath{\mathscr{F}}}
-\providecommand{\scrG}{\ensuremath{\mathscr{G}}}
-\providecommand{\scrH}{\ensuremath{\mathscr{H}}}
-\providecommand{\scrI}{\ensuremath{\mathscr{I}}}
-\providecommand{\scrJ}{\ensuremath{\mathscr{J}}}
-\providecommand{\scrK}{\ensuremath{\mathscr{K}}}
-\providecommand{\scrL}{\ensuremath{\mathscr{L}}}
-\providecommand{\scrM}{\ensuremath{\mathscr{M}}}
-\providecommand{\scrN}{\ensuremath{\mathscr{N}}}
-\providecommand{\scrO}{\ensuremath{\mathscr{O}}}
-\providecommand{\scrP}{\ensuremath{\mathscr{P}}}
-\providecommand{\scrQ}{\ensuremath{\mathscr{Q}}}
-\providecommand{\scrR}{\ensuremath{\mathscr{R}}}
-\providecommand{\scrS}{\ensuremath{\mathscr{S}}}
-\providecommand{\scrT}{\ensuremath{\mathscr{T}}}
-\providecommand{\scrU}{\ensuremath{\mathscr{U}}}
-\providecommand{\scrV}{\ensuremath{\mathscr{V}}}
-\providecommand{\scrW}{\ensuremath{\mathscr{W}}}
-\providecommand{\scrX}{\ensuremath{\mathscr{X}}}
-\providecommand{\scrY}{\ensuremath{\mathscr{Y}}}
-\providecommand{\scrZ}{\ensuremath{\mathscr{Z}}}
-
-%%================================
-%% General symbols
-%%================================
-\providecommand{\abs}[1]{\lvert#1\rvert}
-\providecommand{\norm}[1]{\lVert#1\rVert}
-
-\providecommand*{\injection}{\ensuremath{\hookrightarrow}}
-\providecommand*{\surjection}{\ensuremath{\twoheadrightarrow}}
-\providecommand*{\bijection}{\ensuremath{\xrightarrow{\sim}}}
-
-%%================================
-%% Symbols for number theory
-%%================================
-\ifdefined\@@pmod\else
-\let\@@pmod\pmod
-\DeclareRobustCommand{\pmod}{\@ifstar\@pmods\@@pmod}
-\def\@pmods#1{\mkern4mu({\operator at font mod}\mkern 6mu#1)}
-\fi
-
-\providecommand{\genlegendre}[4]{%
-  \genfrac{(}{)}{}{#1}{#3}{#4}%
-  \if\relax\detokenize{#2}\relax\else_{\!#2}\fi%
-}
-\providecommand{\legendre}[3][]{\genlegendre{}{#1}{#2}{#3}}
-\providecommand{\dlegendre}[3][]{\genlegendre{0}{#1}{#2}{#3}}
-\providecommand{\tlegendre}[3][]{\genlegendre{1}{#1}{#2}{#3}}
-
-\endinput
-%%
-%% End of file `PJLmath.sty'.

Deleted: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLpaper.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLpaper.sty	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLpaper.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -1,96 +0,0 @@
-%%
-%% This is file `PJLpaper.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{PJLpaper}
-    [2021/12/16 Paper style configuration]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\RequirePackage{ifthen}
-
-\SetupKeyvalOptions{%
-    family = @PJLpaper,
-    prefix = @PJLpaper@,
-    setkeys=\kvsetkeys
-}
-
-\DeclareStringOption[normal]{paperstyle}
-\DeclareVoidOption{yellowpaper}{\kvsetkeys{@PJLpaper}{paperstyle=yellow}}
-\DeclareVoidOption{darkpaper}{\kvsetkeys{@PJLpaper}{paperstyle=dark}}
-\DeclareVoidOption{nordpaper}{\kvsetkeys{@PJLpaper}{paperstyle=nord}}
-\DeclareBoolOption[false]{preview}
-\ProcessKeyvalOptions*\relax
-
-%%================================
-%% Preview mode
-%%================================
-\ifdefined\PJLnoPreview\else%
-    \if at PJLpaper@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{\@PJLpaper at paperstyle}{yellow}}
-{
-    \definecolor{paper}{RGB}{247,246,233}
-}
-{\relax}
-
-\ifthenelse{\equal{\@PJLpaper at paperstyle}{dark}}
-{
-    \definecolor{paper}{RGB}{30,30,30}
-    \definecolor{maintext}{RGB}{207,207,207}
-}
-{\relax}
-
-\ifthenelse{\equal{\@PJLpaper at paperstyle}{nord}}
-{
-    \definecolor{paper}{RGB}{46,52,64}
-    \definecolor{maintext}{RGB}{214,220,230}
-}
-{\relax}
-
-\newcommand{\PJLglobalcolor}[1]{%
-    \color{#1}\global\let\default at color\current at color
-}
-
-\pagecolor{paper}
-\PJLglobalcolor{maintext}
-\AtEndPreamble{
-\ifdefined\tcbset%
-    \tcbset{colupper=maintext,collower=maintext}
-\fi
-}
-
-\endinput
-%%
-%% End of file `PJLpaper.sty'.

Deleted: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLthm.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLthm.sty	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/PJLthm.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -1,2019 +0,0 @@
-%%
-%% This is file `PJLthm.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{PJLthm}
-    [2021/12/16 Theorem setup and configuration]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{%
-    family = @PJLthm,
-    prefix = @PJLthm@
-}
-\DeclareBoolOption[false]{nothms}
-\DeclareBoolOption[false]{delaythms}
-\DeclareBoolOption[false]{nothmnum}
-\DeclareStringOption{thmnum}[PJL at thmnum@default]
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[true]{regionalref}
-\DeclareBoolOption[false]{originalref}
-\DeclareBoolOption[true]{complexname}
-\DeclareBoolOption[false]{simplename}
-\ProcessKeyvalOptions*\relax
-\if at PJLthm@originalref
-    \@PJLthm at regionalreffalse
-\fi
-\if at PJLthm@simplename
-    \@PJLthm at complexnamefalse
-\fi
-\if at PJLthm@draft
-    \@PJLthm at fasttrue
-\fi
-\if at PJLthm@fast
-    \@PJLthm at regionalreftrue
-\fi
-
-\@ifclassloaded{beamer}{%
-    \RequirePackage{silence}
-    \WarningFilter{cleveref}{hyperref package loaded with implicit=false option}
-    \@PJLthm at nothmnumtrue%
-    \if at PJLthm@nothms\else%
-        \let\theorem\relax
-        \let\lemma\relax
-        \let\corollary\relax
-        \let\definition\relax
-        \let\fact\relax
-        \let\example\relax
-        \let\problem\relax
-    \fi
-}{}
-
-\RequirePackage{PJLlang}
-\RequirePackage{amsmath,amsthm}
-\RequirePackage{aliascnt}
-\PassOptionsToPackage{nameinlink}{cleveref}
-\RequirePackage{crefthe}
-
-\RequirePackage{xparse}
-\RequirePackage{xstring}
-\NewDocumentCommand{\NameTheorem}{omm}{%
-    \protected at edef\PJLthm at temp{#2}%
-    \expandafter\IfEndWith\expandafter{\PJLthm at temp}{*}{%
-        \expandafter\StrGobbleRight\expandafter{\PJLthm at temp}{1}[\PJLthm at temp]%
-    }{}%
-    \IfSubStr{\detokenize{#3}}{=}{% key-value mode
-        \IfValueTF{#1}{%
-            \CreateTheoremSetKeys{\PJLthm at temp}{#1={#3}}%
-        }{%
-            \CreateTheoremSetKeys{\PJLthm at temp}{#3}%
-        }%
-    }{% simple mode
-        \IfValueTF{#1}{%
-            \expandafter\def\csname\PJLthm at temp name\StrToABBR{#1}\endcsname{#3}%
-        }{%
-            \expandafter\def\csname\PJLthm at temp nameEN\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameFR\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameDE\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameIT\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp namePT\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameBR\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameES\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameCN\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameTC\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameJP\endcsname{#3}%
-            \expandafter\def\csname\PJLthm at temp nameRU\endcsname{#3}%
-        }%
-    }%
-}
-
-\newcommand\PassFirstToSecond[2]{#2{#1}}%
-\NewDocumentCommand{\CreateTheorem}{sm}{%
-    \begingroup
-    \protected at edef\PJLthm at temp{#2}%
-    \expandafter\IfEndWith\expandafter{\PJLthm at temp}{*}{%
-        \expandafter\StrGobbleRight\expandafter{\PJLthm at temp}{1}[\PJLthm at temp]%
-        \PassFirstToSecond{*}%
-    }{%
-        \PassFirstToSecond{}%
-    }%
-    {\expandafter\PassFirstToSecond%
-        \expandafter{\PJLthm at temp}{\endgroup\InnerCreateTheorem{#1}}}%
-}%
-\if at PJLthm@regionalref
-\NewDocumentCommand{\InnerCreateTheorem}{mmmod<>d()g}{%
-    \IfBooleanTF{#1}{%
-        \IfValueTF{#4}
-            {\@firstoftwo}
-            {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}%
-    }{%
-        \IfValueTF{#4}
-            {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{
-            \@secondoftwo}
-    }%
-    {%
-        \GenericError{}%
-        {\string\CreateTheorem\space syntax error\on at 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*{#2#3}{\csname#2name\csname\languagename ABBR\endcsname\endcsname}
-            }{%
-                \IfValueTF{#5}{%
-                    \newtheorem{PJL#2#3}{\csname#2name\csname\languagename ABBR\endcsname\endcsname}[#5]%
-                    \newaliascnt{#2#3}{PJL#2#3}%
-                }{%
-                    \IfValueTF{#4}{%
-                            \newtheorem{PJL#2#3}[#4]{\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
-                        }{%
-                            \newtheorem{PJL#2#3}{\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
-                            \newaliascnt{#2#3}{PJL#2#3}%
-                        }%
-                }%
-                \ifcsname cref at PJL#2#3 at name\endcsname\else%
-                    \crefname{PJL#2#3}%
-                        {\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
-                        {\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
-                \fi%
-                \ifcsname Cref at PJL#2#3 at name\endcsname\else%
-                    \Crefname{PJL#2#3}%
-                        {\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
-                        {\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
-                \fi%
-                \NewDocumentEnvironment{#2#3}{}
-                    {\begin{PJL#2#3}}
-                    {\end{PJL#2#3}}
-            }%
-        }%
-    }%
-    \IfValueTF{#7}{%
-        \NameTheorem{#2}{#7}%
-    }{}%
-}%
-\else
-\NewDocumentCommand{\InnerCreateTheorem}{mmmod<>d()g}{%
-    \IfBooleanTF{#1}{%
-        \IfValueTF{#4}
-            {\@firstoftwo}
-            {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}%
-    }{%
-        \IfValueTF{#4}
-            {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{
-            \@secondoftwo}
-    }%
-    {%
-        \GenericError{}%
-        {\string\CreateTheorem\space syntax error\on at line}{%
-        You cannot call the starred variant with optional argument,\MessageBreak
-        nor call the unstarred variant with several optional arguments.}%
-        {%
-            Allowed usage:\MessageBreak\MessageBreak
-            \CreateTheorem*{(name of environment)}\MessageBreak
-            \CreateTheorem{(name of environment)}\MessageBreak
-            \CreateTheorem{(name of environment)}[(numbered like)]\MessageBreak
-            \CreateTheorem{(name of environment)}<(numbered within)>\MessageBreak
-            \CreateTheorem{(name of environment)}((existed environment))\MessageBreak
-        }%
-    }{%
-        \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}{%
-                \if at PJLlang@enable at EN\expandafter\PassFirstToSecond\expandafter{\csname#2nameEN\endcsname}{\newtheorem*{#2EN#3}}\fi%
-                \if at PJLlang@enable at FR\expandafter\PassFirstToSecond\expandafter{\csname#2nameFR\endcsname}{\newtheorem*{#2FR#3}}\fi%
-                \if at PJLlang@enable at DE\expandafter\PassFirstToSecond\expandafter{\csname#2nameDE\endcsname}{\newtheorem*{#2DE#3}}\fi%
-                \if at PJLlang@enable at IT\expandafter\PassFirstToSecond\expandafter{\csname#2nameIT\endcsname}{\newtheorem*{#2IT#3}}\fi%
-                \if at PJLlang@enable at PT\expandafter\PassFirstToSecond\expandafter{\csname#2namePT\endcsname}{\newtheorem*{#2PT#3}}\fi%
-                \if at PJLlang@enable at BR\expandafter\PassFirstToSecond\expandafter{\csname#2nameBR\endcsname}{\newtheorem*{#2BR#3}}\fi%
-                \if at PJLlang@enable at ES\expandafter\PassFirstToSecond\expandafter{\csname#2nameES\endcsname}{\newtheorem*{#2ES#3}}\fi%
-                \if at PJLlang@enable at CN\expandafter\PassFirstToSecond\expandafter{\csname#2nameCN\endcsname}{\newtheorem*{#2CN#3}}\fi%
-                \if at PJLlang@enable at TC\expandafter\PassFirstToSecond\expandafter{\csname#2nameTC\endcsname}{\newtheorem*{#2TC#3}}\fi%
-                \if at PJLlang@enable at JP\expandafter\PassFirstToSecond\expandafter{\csname#2nameJP\endcsname}{\newtheorem*{#2JP#3}}\fi%
-                \if at PJLlang@enable at RU\expandafter\PassFirstToSecond\expandafter{\csname#2nameRU\endcsname}{\newtheorem*{#2RU#3}}\fi%
-            }{%
-                \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}}%
-                }%
-                %---------------------------------------------------------------
-                \if at PJLlang@enable at EN\CreateTheoremNumberedLikeAliasCounter{#2}{EN}{#3}\fi%
-                \if at PJLlang@enable at FR\CreateTheoremNumberedLikeAliasCounter{#2}{FR}{#3}\fi%
-                \if at PJLlang@enable at DE\CreateTheoremNumberedLikeAliasCounter{#2}{DE}{#3}\fi%
-                \if at PJLlang@enable at IT\CreateTheoremNumberedLikeAliasCounter{#2}{IT}{#3}\fi%
-                \if at PJLlang@enable at PT\CreateTheoremNumberedLikeAliasCounter{#2}{PT}{#3}\fi%
-                \if at PJLlang@enable at BR\CreateTheoremNumberedLikeAliasCounter{#2}{BR}{#3}\fi%
-                \if at PJLlang@enable at ES\CreateTheoremNumberedLikeAliasCounter{#2}{ES}{#3}\fi%
-                \if at PJLlang@enable at CN\CreateTheoremNumberedLikeAliasCounter{#2}{CN}{#3}\fi%
-                \if at PJLlang@enable at TC\CreateTheoremNumberedLikeAliasCounter{#2}{TC}{#3}\fi%
-                \if at PJLlang@enable at JP\CreateTheoremNumberedLikeAliasCounter{#2}{JP}{#3}\fi%
-                \if at PJLlang@enable at RU\CreateTheoremNumberedLikeAliasCounter{#2}{RU}{#3}\fi%
-                %---------------------------------------------------------------
-            }%
-            \NewDocumentEnvironment{#2#3}{}
-                {\csname#2\csname\languagename ABBR\endcsname#3\endcsname}%
-                {\csname end#2\csname\languagename ABBR\endcsname#3\endcsname}%
-        }%
-    }%
-    \IfValueTF{#7}{%
-        \NameTheorem{#2}{#7}%
-    }{}%
-}%
-\NewDocumentCommand{\CreateTheoremNumberedLikeAliasCounter}{mmm}{%
-    \newaliascnt{#1#2#3}{#1#3}%
-    \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}{\newtheorem{#1#2#3}[{#1#2#3}]}%
-    \aliascntresetthe{#1#2#3}%
-    \ifcsname cref@#1#2#3 at name\endcsname\else%
-        \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}%
-        {%
-            \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}%
-            {\crefname{#1#2#3}}%
-        }%
-    \fi%
-    \ifcsname Cref@#1#2#3 at name\endcsname\else%
-        \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}%
-        {%
-            \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}%
-            {\Crefname{#1#2#3}}%
-        }%
-    \fi%
-}%
-\fi
-
-\ExplSyntaxOn
-
-\cs_new:Nn  \PJLthm_exchange_i_iii_ii:nnn  { #1 {#3} {#2} }
-\cs_new:Nn  \__PJLthm_languageprefix:  {}
-\cs_new:Nn  \__PJLthm_countername:  {}
-
-\msg_new:nnnn {PJLthm}
-              {Undefined Language Dependent Specification Class}
-              {\token_to_str:N \CreateTheorem :\ Value\ `\tl_to_str:n{#2}'\ for\ invalid\ key\ `#1'.}
-              {Providing\ Language-dependent\ specifications\ for\ element\ `#1'\ is\ currently\ not\ implemented.}
-
-
-\NewDocumentCommand \CreateTheoremSetKeys { mm } {
-  \cs_set:Nn \__PJLthm_countername: {#1}
-  \keyval_parse:nnn { \PJLthm_exchange_i_iii_ii:nnn { \PJLthm_setlanguagespecificparameters:nn } {} }
-                    { \PJLthm_setlanguagespecificparameters:nn }
-                    { #2 }
-}
-
-\cs_new_protected:Nn \PJLthm_setlanguagespecificparameters:nn {
-  \cs_set:Nx \__PJLthm_languageprefix: {\StrToABBR{#1}}
-  \exp_args:No \tl_if_empty:nTF {\__PJLthm_languageprefix:}
-    { \msg_error:nn { PJLthm }
-                    { No~language~"\exp_not:n{#1}"~defined }
-    }%
-    {%
-        \keys_set:nn { PJLthm } { #2 }
-    }%
-}%
-
-\keys_define:nn { PJLthm } {
-  crefname.code:n  = \cs_if_exist:NTF \crefname  {
-                        \ifbool{@PJLthm at regionalref}{
-                            \exp_args:Nx \PJLthm at setcrefinnername{PJL\__PJLthm_countername: \__PJLthm_languageprefix: }#1
-                            \exp_args:Nx \PJLthm at setcrefname{PJL\__PJLthm_countername: }
-                        }{
-                            \exp_args:Nx \crefname {\__PJLthm_countername: \__PJLthm_languageprefix: }#1
-                        }
-                     }{},
-  crefname.value_required:n = true,
-  Crefname.code:n  = \cs_if_exist:NTF \Crefname  {
-                        \ifbool{@PJLthm at regionalref}{
-                            \exp_args:Nx \PJLthm at setCrefinnername{PJL\__PJLthm_countername: \__PJLthm_languageprefix: }#1
-                            \exp_args:Nx \PJLthm at setCrefname{PJL\__PJLthm_countername: }
-                        }{
-                            \exp_args:Nx \Crefname {\__PJLthm_countername: \__PJLthm_languageprefix: }#1
-                        }
-                     }{},
-  Crefname.value_required:n = true,
-  name.code:n  = \exp_args:Nx \cs_set:cpn {\__PJLthm_countername: name \__PJLthm_languageprefix:} {#1},
-  name.value_required:n = true,
-  autorefname.code:n  = \exp_args:Nx \cs_set:cpn  {\__PJLthm_countername: \__PJLthm_languageprefix: autorefname} {#1},
-  autorefname.value_required:n = true,
-  theoremheading.code:n= \exp_args:Nx \cs_set:cpn  {\__PJLthm_countername: \__PJLthm_languageprefix: heading} {#1},
-  theoremheading.value_required:n = true,
-  the.code:n= \exp_args:Nx \cs_set:cpn  {the \__PJLthm_countername: \__PJLthm_languageprefix: } {#1},
-  the.value_required:n = true,
-  %
-  % Define keys for more Language Dependent Specification Classes.
-  %
-  unknown.code:n = \msg_error:nnxx {PJLthm}
-                                   {Undefined Language Dependent Specification Class}
-                                   {\exp_args:No \exp_not:n \l_keys_key_str}
-                                   {\exp_not:n{#1}},
-}
-
-\ExplSyntaxOff
-
-\newcommand{\PJLthm at setcrefinnername}[3]{%
-    \expandafter\def\csname PJLthm at cref@#1 at name\endcsname{#2}%
-    \expandafter\def\csname PJLthm at cref@#1 at name@plural\endcsname{#3}%
-}
-\newcommand{\PJLthm at setCrefinnername}[3]{%
-    \expandafter\def\csname PJLthm at Cref@#1 at name\endcsname{#2}%
-    \expandafter\def\csname PJLthm at Cref@#1 at name@plural\endcsname{#3}%
-}
-
-\newcommand{\PJLthm at setcrefname}[1]{%
-    \crefname{#1}%
-        {\csname PJLthm at cref@#1\csname\languagename ABBR\endcsname @name\endcsname}%
-        {\csname PJLthm at cref@#1\csname\languagename ABBR\endcsname @name at plural\endcsname}%
-}
-\newcommand{\PJLthm at setCrefname}[1]{%
-    \Crefname{#1}%
-        {\csname PJLthm at Cref@#1\csname\languagename ABBR\endcsname @name\endcsname}%
-        {\csname PJLthm at Cref@#1\csname\languagename ABBR\endcsname @name at plural\endcsname}%
-}
-
-\ifbool{@PJLthm at complexname}{
-    \NameTheorem{theorem}{
-        EN = {
-            name = {Theorem},
-            crefname = {theorem}{theorems},
-            Crefname = {Theorem}{Theorems},
-        },
-        FR = {
-            name = {Théorème},
-            crefname = {\crefthemark{le} théorème}{\crefthemark{les} théorèmes},
-            Crefname = {Le théorème}{Les théorèmes},
-        },
-        DE = {
-            name = {Satz},
-            crefname = {Satz}{Sätze},
-            Crefname = {Satz}{Sätze},
-        },
-        IT = {
-            name = {Teorema},
-            crefname = {\crefthemark{il} teorema}{\crefthemark{i} teoremi},
-            Crefname = {Il teorema}{I teoremi},
-        },
-        PT = {
-            name = {Teorema},
-            crefname = {\crefthemark{o} teorema}{\crefthemark{os} teoremas},
-            Crefname = {O teorema}{Os teoremas},
-        },
-        BR = {
-            name = {Teorema},
-            crefname = {\crefthemark{o} teorema}{\crefthemark{os} teoremas},
-            Crefname = {O teorema}{Os teoremas},
-        },
-        ES = {
-            name = {Teorema},
-            crefname = {\crefthemark{el} teorema}{los teoremas},
-            Crefname = {El teorema}{Los teoremas},
-        },
-        CN = {
-            name = {定理},
-            crefname = {定理}{定理},
-            Crefname = {定理}{定理},
-        },
-        TC = {
-            name = {定理},
-            crefname = {定理}{定理},
-            Crefname = {定理}{定理},
-        },
-        JP = {
-            name = {定理},
-            crefname = {定理}{定理},
-            Crefname = {定理}{定理},
-        },
-        RU = {
-            name = {Теорема},
-            crefname = {теорема}{теоремы},
-            Crefname = {Теорема}{Теоремы},
-        },
-    }
-    \NameTheorem{lemma}{
-        EN = {
-            name = {Lemma},
-            crefname = {lemma}{Lemmas},
-            Crefname = {Lemma}{Lemmas},
-        },
-        FR = {
-            name = {Lemme},
-            crefname = {\crefthemark{le} lemme}{\crefthemark{les} lemmes},
-            Crefname = {Le lemme}{Les lemmes},
-        },
-        DE = {
-            name = {Lemma},
-            crefname = {Lemma}{Lemmata},
-            Crefname = {Lemma}{Lemmata},
-        },
-        IT = {
-            name = {Lemma},
-            crefname = {\crefthemark{il} lemma}{\crefthemark{i} lemmi},
-            Crefname = {Il lemma}{I lemmi},
-        },
-        PT = {
-            name = {Lema},
-            crefname = {\crefthemark{o} lema}{\crefthemark{os} lemas},
-            Crefname = {O lema}{Os lemas},
-        },
-        BR = {
-            name = {Lema},
-            crefname = {\crefthemark{o} lema}{\crefthemark{os} lemas},
-            Crefname = {O lema}{Os lemas},
-        },
-        ES = {
-            name = {Lema},
-            crefname = {\crefthemark{el} lema}{las lemas},
-            Crefname = {El lema}{Las lemas},
-        },
-        CN = {
-            name = {引理},
-            crefname = {引理}{引理},
-            Crefname = {引理}{引理},
-        },
-        TC = {
-            name = {引理},
-            crefname = {引理}{引理},
-            Crefname = {引理}{引理},
-        },
-        JP = {
-            name = {補題},
-            crefname = {補題}{補題},
-            Crefname = {補題}{補題},
-        },
-        RU = {
-            name = {Лемма},
-            crefname = {лемма}{леммы},
-            Crefname = {Лемма}{Леммы},
-        },
-    }
-    \NameTheorem{proposition}{
-        EN = {
-            name = {Proposition},
-            crefname = {proposition}{propositions},
-            Crefname = {Proposition}{Propositions},
-        },
-        FR = {
-            name = {Proposition},
-            crefname = {\crefthemark{la} proposition}{\crefthemark{les} propositions},
-            Crefname = {La proposition}{Les propositions},
-        },
-        DE = {
-            name = {Proposition},
-            crefname = {Proposition}{Propositionen},
-            Crefname = {Proposition}{Propositionen},
-        },
-        IT = {
-            name = {Proposizione},
-            crefname = {\crefthemark{la} proposizione}{\crefthemark{le} proposte},
-            Crefname = {La proposizione}{Le proposte},
-        },
-        PT = {
-            name = {Proposição},
-            crefname = {\crefthemark{a} proposição}{\crefthemark{as} proposições},
-            Crefname = {A proposição}{As proposições},
-        },
-        BR = {
-            name = {Proposição},
-            crefname = {\crefthemark{a} proposição}{\crefthemark{as} proposições},
-            Crefname = {A proposição}{As proposições},
-        },
-        ES = {
-            name = {Proposición},
-            crefname = {la proposición}{las proposiciones},
-            Crefname = {La proposición}{Las proposiciones},
-        },
-        CN = {
-            name = {命题},
-            crefname = {命题}{命题},
-            Crefname = {命题}{命题},
-        },
-        TC = {
-            name = {命題},
-            crefname = {命題}{命題},
-            Crefname = {命題}{命題},
-        },
-        JP = {
-            name = {命題},
-            crefname = {命題}{命題},
-            Crefname = {命題}{命題},
-        },
-        RU = {
-            name = {Предложение},
-            crefname = {предложение}{предложения},
-            Crefname = {Предложение}{Предложения},
-        },
-    }
-    \NameTheorem{corollary}{
-        EN = {
-            name = {Corollary},
-            crefname = {corollary}{corollaries},
-            Crefname = {Corollary}{Corollaries},
-        },
-        FR = {
-            name = {Corollaire},
-            crefname = {\crefthemark{le} corollaire}{\crefthemark{les} corollaires},
-            Crefname = {Le corollaire}{Les corollaires},
-        },
-        DE = {
-            name = {Korollar},
-            crefname = {Korollar}{Korollare},
-            Crefname = {Korollar}{Korollare},
-        },
-        IT = {
-            name = {Corollario},
-            crefname = {\crefthemark{il} corollario}{\crefthemark{i} corollari},
-            Crefname = {Il corollario}{I corollari},
-        },
-        PT = {
-            name = {Corolário},
-            crefname = {\crefthemark{o} corolário}{\crefthemark{os} corolários},
-            Crefname = {O corolário}{Os corolários},
-        },
-        BR = {
-            name = {Corolário},
-            crefname = {\crefthemark{o} corolário}{\crefthemark{os} corolários},
-            Crefname = {O corolário}{Os corolários},
-        },
-        ES = {
-            name = {Corolario},
-            crefname = {\crefthemark{el} corolario}{los corolarios},
-            Crefname = {El corolario}{Los corolarios},
-        },
-        CN = {
-            name = {推论},
-            crefname = {推论}{推论},
-            Crefname = {推论}{推论},
-        },
-        TC = {
-            name = {推論},
-            crefname = {推論}{推論},
-            Crefname = {推論}{推論},
-        },
-        JP = {
-            name = {系},
-            crefname = {系}{系},
-            Crefname = {系}{系},
-        },
-        RU = {
-            name = {Следствие},
-            crefname = {следствие}{следствия},
-            Crefname = {Следствие}{Следствия},
-        },
-    }
-    \NameTheorem{property}{
-        EN = {
-            name = {Property},
-            crefname = {property}{properties},
-            Crefname = {Property}{Properties},
-        },
-        FR = {
-            name = {Propriété},
-            crefname = {\crefthemark{la} propriété}{\crefthemark{les} propriétés},
-            Crefname = {La propriété}{Les propriétés},
-        },
-        DE = {
-            name = {Eigenschaft},
-            crefname = {Eigenschaft}{Eigenschaften},
-            Crefname = {Eigenschaft}{Eigenschaften},
-        },
-        IT = {
-            name = {Proprietà},
-            crefname = {\crefthemark{la} proprietà}{\crefthemark{le} proprietà},
-            Crefname = {La proprietà}{Le proprietà},
-        },
-        PT = {
-            name = {Propriedade},
-            crefname = {\crefthemark{a} propriedade}{\crefthemark{as} propriedades},
-            Crefname = {A propriedade}{As propriedades},
-        },
-        BR = {
-            name = {Propriedade},
-            crefname = {\crefthemark{a} propriedade}{\crefthemark{as} propriedades},
-            Crefname = {A propriedade}{As propriedades},
-        },
-        ES = {
-            name = {Propiedad},
-            crefname = {la propiedad}{las propiedades},
-            Crefname = {La propiedad}{Las propiedades},
-        },
-        CN = {
-            name = {性质},
-            crefname = {性质}{性质},
-            Crefname = {性质}{性质},
-        },
-        TC = {
-            name = {性質},
-            crefname = {性質}{性質},
-            Crefname = {性質}{性質},
-        },
-        JP = {
-            name = {性質},
-            crefname = {性質}{性質},
-            Crefname = {性質}{性質},
-        },
-        RU = {
-            name = {Имущество},
-            crefname = {имущество}{имущества},
-            Crefname = {Имущество}{Имущества},
-        },
-    }
-    \NameTheorem{fact}{
-        EN = {
-            name = {Fact},
-            crefname = {fact}{facts},
-            Crefname = {Fact}{Facts},
-        },
-        FR = {
-            name = {Fait},
-            crefname = {\crefthemark{le} fait}{\crefthemark{les} faits},
-            Crefname = {Le fait}{Les faits},
-        },
-        DE = {
-            name = {Fakt},
-            crefname = {Fakt}{Fakten},
-            Crefname = {Fakt}{Fakten},
-        },
-        IT = {
-            name = {Fatto},
-            crefname = {\crefthemark{il} fatto}{\crefthemark{i} fatti},
-            Crefname = {Il fatto}{I fatti},
-        },
-        PT = {
-            name = {Facto},
-            crefname = {\crefthemark{o} facto}{\crefthemark{os} factos},
-            Crefname = {O facto}{Os factos},
-        },
-        BR = {
-            name = {Fato},
-            crefname = {\crefthemark{o} fato}{\crefthemark{os} fatos},
-            Crefname = {O fato}{Os fatos},
-        },
-        ES = {
-            name = {Hecho},
-            crefname = {\crefthemark{el} hecho}{los hechos},
-            Crefname = {El hecho}{Los hechos},
-        },
-        CN = {
-            name = {事实},
-            crefname = {事实}{事实},
-            Crefname = {事实}{事实},
-        },
-        TC = {
-            name = {事實},
-            crefname = {事實}{事實},
-            Crefname = {事實}{事實},
-        },
-        JP = {
-            name = {事実},
-            crefname = {事実}{事実},
-            Crefname = {事実}{事実},
-        },
-        RU = {
-            name = {Факт},
-            crefname = {факт}{факты},
-            Crefname = {Факт}{Факты},
-        },
-    }
-    \NameTheorem{conjecture}{
-        EN = {
-            name = {Conjecture},
-            crefname = {conjecture}{conjectures},
-            Crefname = {Conjecture}{Conjectures},
-        },
-        FR = {
-            name = {Conjecture},
-            crefname = {\crefthemark{la} conjecture}{\crefthemark{les} conjectures},
-            Crefname = {La conjecture}{Les conjectures},
-        },
-        DE = {
-            name = {Vermutung},
-            crefname = {Vermutung}{Vermutungen},
-            Crefname = {Vermutung}{Vermutungen},
-        },
-        IT = {
-            name = {Congettura},
-            crefname = {\crefthemark{la} congettura}{\crefthemark{le} congetture},
-            Crefname = {La congettura}{Le congetture},
-        },
-        PT = {
-            name = {Conjetura},
-            crefname = {\crefthemark{a} conjetura}{\crefthemark{as} conjeturas},
-            Crefname = {A conjetura}{As conjeturas},
-        },
-        BR = {
-            name = {Conjectura},
-            crefname = {\crefthemark{a} conjectura}{\crefthemark{as} conjecturas},
-            Crefname = {A conjectura}{As conjecturas},
-        },
-        ES = {
-            name = {Conjetura},
-            crefname = {la conjetura}{las conjeturas},
-            Crefname = {La conjetura}{Las conjeturas},
-        },
-        CN = {
-            name = {猜想},
-            crefname = {猜想}{猜想},
-            Crefname = {猜想}{猜想},
-        },
-        TC = {
-            name = {猜想},
-            crefname = {猜想}{猜想},
-            Crefname = {猜想}{猜想},
-        },
-        JP = {
-            name = {予想},
-            crefname = {予想}{予想},
-            Crefname = {予想}{予想},
-        },
-        RU = {
-            name = {Гипотеза},
-            crefname = {гипотеза}{гипотезы},
-            Crefname = {Гипотеза}{Гипотезы},
-        },
-    }
-    \NameTheorem{definition}{
-        EN = {
-            name = {Definition},
-            crefname = {definition}{definitions},
-            Crefname = {Definition}{Definitions},
-        },
-        FR = {
-            name = {Définition},
-            crefname = {\crefthemark{la} définition}{\crefthemark{les} définitions},
-            Crefname = {La définition}{Les définitions},
-        },
-        DE = {
-            name = {Definition},
-            crefname = {Definition}{Definitionen},
-            Crefname = {Definition}{Definitionen},
-        },
-        IT = {
-            name = {Definizione},
-            crefname = {\crefthemark{la} definizione}{\crefthemark{le} definizioni},
-            Crefname = {La definizione}{Le definizioni},
-        },
-        PT = {
-            name = {Definição},
-            crefname = {\crefthemark{a} definição}{\crefthemark{as} definições},
-            Crefname = {A definição}{As definições},
-        },
-        BR = {
-            name = {Definição},
-            crefname = {\crefthemark{a} definição}{\crefthemark{as} definições},
-            Crefname = {A definição}{As definições},
-        },
-        ES = {
-            name = {Definición},
-            crefname = {la definición}{las definiciones},
-            Crefname = {La definición}{Las definiciones},
-        },
-        CN = {
-            name = {定义},
-            crefname = {定义}{定义},
-            Crefname = {定义}{定义},
-        },
-        TC = {
-            name = {定義},
-            crefname = {定義}{定義},
-            Crefname = {定義}{定義},
-        },
-        JP = {
-            name = {定義},
-            crefname = {定義}{定義},
-            Crefname = {定義}{定義},
-        },
-        RU = {
-            name = {Определение},
-            crefname = {определение}{определения},
-            Crefname = {Определение}{Определения},
-        },
-    }
-    \NameTheorem{axiom}{
-        EN = {
-            name = {Axiom},
-            crefname = {axiom}{axioms},
-            Crefname = {Axiom}{Axioms},
-        },
-        FR = {
-            name = {Axiome},
-            crefname = {\crefthemark{l'}axiome}{\crefthemark{les} axiomes},
-            Crefname = {L'axiome}{Les axiomes},
-        },
-        DE = {
-            name = {Axiom},
-            crefname = {Axiom}{Axiome},
-            Crefname = {Axiom}{Axiome},
-        },
-        IT = {
-            name = {Assioma},
-            crefname = {\crefthemark{l'}assioma}{\crefthemark{gli} assiomi},
-            Crefname = {L'assioma}{Gli assiomi},
-        },
-        PT = {
-            name = {Axioma},
-            crefname = {\crefthemark{o} axioma}{\crefthemark{os} axiomas},
-            Crefname = {O axioma}{Os axiomas},
-        },
-        BR = {
-            name = {Axioma},
-            crefname = {\crefthemark{o} axioma}{\crefthemark{os} axiomas},
-            Crefname = {O axioma}{Os axiomas},
-        },
-        ES = {
-            name = {Axioma},
-            crefname = {\crefthemark{el} axioma}{los axiomas},
-            Crefname = {El axioma}{Los axiomas},
-        },
-        CN = {
-            name = {公理},
-            crefname = {公理}{公理},
-            Crefname = {公理}{公理},
-        },
-        TC = {
-            name = {公理},
-            crefname = {公理}{公理},
-            Crefname = {公理}{公理},
-        },
-        JP = {
-            name = {公理},
-            crefname = {公理}{公理},
-            Crefname = {公理}{公理},
-        },
-        RU = {
-            name = {Аксиома},
-            crefname = {аксиома}{аксиомы},
-            Crefname = {Аксиома}{Аксиомы},
-        },
-    }
-    \NameTheorem{assumption}{
-        EN = {
-            name = {Assumption},
-            crefname = {assumption}{assumptions},
-            Crefname = {Assumption}{Assumptions},
-        },
-        FR = {
-            name = {Supposition},
-            crefname = {\crefthemark{la} supposition}{\crefthemark{les} suppositions},
-            Crefname = {La supposition}{Les suppositions},
-        },
-        DE = {
-            name = {Annahme},
-            crefname = {Annahme}{Annahmen},
-            Crefname = {Annahme}{Annahmen},
-        },
-        IT = {
-            name = {Supposizione},
-            crefname = {\crefthemark{la} supposizione}{\crefthemark{le} supposizioni},
-            Crefname = {La supposizione}{Le supposizioni},
-        },
-        PT = {
-            name = {Suposição},
-            crefname = {\crefthemark{a} suposição}{\crefthemark{as} suposições},
-            Crefname = {A suposição}{As suposições},
-        },
-        BR = {
-            name = {Suposição},
-            crefname = {\crefthemark{a} suposição}{\crefthemark{as} suposições},
-            Crefname = {A suposição}{As suposições},
-        },
-        ES = {
-            name = {Suposición},
-            crefname = {la suposición}{las suposiciones},
-            Crefname = {La suposición}{Las suposiciones},
-        },
-        CN = {
-            name = {假定},
-            crefname = {假定}{假定},
-            Crefname = {假定}{假定},
-        },
-        TC = {
-            name = {假定},
-            crefname = {假定}{假定},
-            Crefname = {假定}{假定},
-        },
-        JP = {
-            name = {仮定},
-            crefname = {仮定}{仮定},
-            Crefname = {仮定}{仮定},
-        },
-        RU = {
-            name = {Предположение},
-            crefname = {предположение}{предположения},
-            Crefname = {Предположение}{Предположения},
-        },
-    }
-    \NameTheorem{convention}{
-        EN = {
-            name = {Convention},
-            crefname = {convention}{conventions},
-            Crefname = {Convention}{Conventions},
-        },
-        FR = {
-            name = {Convention},
-            crefname = {\crefthemark{la} convention}{\crefthemark{les} conventions},
-            Crefname = {La convention}{Les conventions},
-        },
-        DE = {
-            name = {Konvention},
-            crefname = {Konvention}{Konventionen},
-            Crefname = {Konvention}{Konventionen},
-        },
-        IT = {
-            name = {Convenzione},
-            crefname = {\crefthemark{la} convenzione}{\crefthemark{le} convenzioni},
-            Crefname = {La convenzione}{Le convenzioni},
-        },
-        PT = {
-            name = {Convenção},
-            crefname = {\crefthemark{a} convenção}{\crefthemark{as} convenções},
-            Crefname = {A convenção}{As convenções},
-        },
-        BR = {
-            name = {Convenção},
-            crefname = {\crefthemark{a} convenção}{\crefthemark{as} convenções},
-            Crefname = {A convenção}{As convenções},
-        },
-        ES = {
-            name = {Convención},
-            crefname = {la convención}{las convenciones},
-            Crefname = {La convención}{Las convenciones},
-        },
-        CN = {
-            name = {约定},
-            crefname = {约定}{约定},
-            Crefname = {约定}{约定},
-        },
-        TC = {
-            name = {約定},
-            crefname = {約定}{約定},
-            Crefname = {約定}{約定},
-        },
-        JP = {
-            name = {慣例},
-            crefname = {慣例}{慣例},
-            Crefname = {慣例}{慣例},
-        },
-        RU = {
-            name = {Конвенция},
-            crefname = {конвенция}{конвенции},
-            Crefname = {Конвенция}{Конвенции},
-        },
-    }
-    \NameTheorem{hypothesis}{
-        EN = {
-            name = {Hypothesis},
-            crefname = {hypothesis}{hypotheses},
-            Crefname = {Hypothesis}{Hypotheses},
-        },
-        FR = {
-            name = {Hypothèse},
-            crefname = {\crefthemark{l'}hypothèse}{\crefthemark{les} hypothèses},
-            Crefname = {L'hypothèse}{Les hypothèses},
-        },
-        DE = {
-            name = {Hypothese},
-            crefname = {Hypothese}{Hypothesen},
-            Crefname = {Hypothese}{Hypothesen},
-        },
-        IT = {
-            name = {Ipotesi},
-            crefname = {\crefthemark{l'}ipotesi}{\crefthemark{le} ipotesi},
-            Crefname = {L'ipotesi}{Le ipotesi},
-        },
-        PT = {
-            name = {Hipótese},
-            crefname = {\crefthemark{a} hipótese}{\crefthemark{as} hipóteses},
-            Crefname = {A hipótese}{As hipóteses},
-        },
-        BR = {
-            name = {Hipótese},
-            crefname = {\crefthemark{a} hipótese}{\crefthemark{as} hipóteses},
-            Crefname = {A hipótese}{As hipóteses},
-        },
-        ES = {
-            name = {Hipótesis},
-            crefname = {la hipótesis}{las hipótesis},
-            Crefname = {La hipótesis}{Las hipótesis},
-        },
-        CN = {
-            name = {假设},
-            crefname = {假设}{假设},
-            Crefname = {假设}{假设},
-        },
-        TC = {
-            name = {假設},
-            crefname = {假設}{假設},
-            Crefname = {假設}{假設},
-        },
-        JP = {
-            name = {仮設},
-            crefname = {仮設}{仮設},
-            Crefname = {仮設}{仮設},
-        },
-        RU = {
-            name = {Гипотеза},
-            crefname = {гипотеза}{гипотезы},
-            Crefname = {Гипотеза}{Гипотезы},
-        },
-    }
-    \NameTheorem{notation}{
-        EN = {
-            name = {Notation},
-            crefname = {notation}{notations},
-            Crefname = {Notation}{Notations},
-        },
-        FR = {
-            name = {Notation},
-            crefname = {\crefthemark{la} notation}{\crefthemark{les} notations},
-            Crefname = {La notation}{Les notations},
-        },
-        DE = {
-            name = {Notation},
-            crefname = {Notation}{Notationen},
-            Crefname = {Notation}{Notationen},
-        },
-        IT = {
-            name = {Notazione},
-            crefname = {\crefthemark{la} notazione}{\crefthemark{le} notazioni},
-            Crefname = {La notazione}{Le notazioni},
-        },
-        PT = {
-            name = {Notação},
-            crefname = {\crefthemark{a} notação}{\crefthemark{as} notações},
-            Crefname = {A notação}{As notações},
-        },
-        BR = {
-            name = {Notação},
-            crefname = {\crefthemark{a} notação}{\crefthemark{as} notações},
-            Crefname = {A notação}{As notações},
-        },
-        ES = {
-            name = {Notación},
-            crefname = {la notación}{las notaciones},
-            Crefname = {La notación}{Las notaciones},
-        },
-        CN = {
-            name = {记号},
-            crefname = {记号}{记号},
-            Crefname = {记号}{记号},
-        },
-        TC = {
-            name = {記號},
-            crefname = {記號}{記號},
-            Crefname = {記號}{記號},
-        },
-        JP = {
-            name = {記法},
-            crefname = {記法}{記法},
-            Crefname = {記法}{記法},
-        },
-        RU = {
-            name = {Нотация},
-            crefname = {нотация}{нотации},
-            Crefname = {Нотация}{Нотации},
-        },
-    }
-    \NameTheorem{example}{
-        EN = {
-            name = {Example},
-            crefname = {example}{examples},
-            Crefname = {Example}{Examples},
-        },
-        FR = {
-            name = {Exemple},
-            crefname = {\crefthemark{l'}example}{\crefthemark{les} examples},
-            Crefname = {L'example}{Les examples},
-        },
-        DE = {
-            name = {Beispiel},
-            crefname = {Beispiel}{Beispiele},
-            Crefname = {Beispiel}{Beispiele},
-        },
-        IT = {
-            name = {Esempio},
-            crefname = {\crefthemark{l'}esempio}{\crefthemark{gli} esempi},
-            Crefname = {L'esempio}{Gli esempi},
-        },
-        PT = {
-            name = {Exemplo},
-            crefname = {\crefthemark{o} exemplo}{\crefthemark{os} exemplos},
-            Crefname = {O exemplo}{Os exemplos},
-        },
-        BR = {
-            name = {Exemplo},
-            crefname = {\crefthemark{o} exemplo}{\crefthemark{os} exemplos},
-            Crefname = {O exemplo}{Os exemplos},
-        },
-        ES = {
-            name = {Ejemplo},
-            crefname = {\crefthemark{el} ejemplo}{los ejemplos},
-            Crefname = {El ejemplo}{Los ejemplos},
-        },
-        CN = {
-            name = {例},
-            crefname = {例}{例},
-            Crefname = {例}{例},
-        },
-        TC = {
-            name = {例},
-            crefname = {例}{例},
-            Crefname = {例}{例},
-        },
-        JP = {
-            name = {例},
-            crefname = {例}{例},
-            Crefname = {例}{例},
-        },
-        RU = {
-            name = {Пример},
-            crefname = {пример}{примеры},
-            Crefname = {Пример}{Примеры},
-        },
-    }
-    \NameTheorem{problem}{
-        EN = {
-            name = {Problem},
-            crefname = {problem}{problems},
-            Crefname = {Problem}{Problems},
-        },
-        FR = {
-            name = {Problème},
-            crefname = {\crefthemark{le} problème}{\crefthemark{les} problèmes},
-            Crefname = {Le problème}{Les problèmes},
-        },
-        DE = {
-            name = {Problem},
-            crefname = {Problem}{Probleme},
-            Crefname = {Problem}{Probleme},
-        },
-        IT = {
-            name = {Problema},
-            crefname = {\crefthemark{il} problema}{\crefthemark{i} problemi},
-            Crefname = {Il problema}{I problemi},
-        },
-        PT = {
-            name = {Problema},
-            crefname = {\crefthemark{o} problema}{\crefthemark{os} problemas},
-            Crefname = {O problema}{Os problemas},
-        },
-        BR = {
-            name = {Problema},
-            crefname = {\crefthemark{o} problema}{\crefthemark{os} problemas},
-            Crefname = {O problema}{Os problemas},
-        },
-        ES = {
-            name = {Problema},
-            crefname = {\crefthemark{el} problema}{los problemas},
-            Crefname = {El problema}{Los problemas},
-        },
-        CN = {
-            name = {问题},
-            crefname = {问题}{问题},
-            Crefname = {问题}{问题},
-        },
-        TC = {
-            name = {問題},
-            crefname = {問題}{問題},
-            Crefname = {問題}{問題},
-        },
-        JP = {
-            name = {問題},
-            crefname = {問題}{問題},
-            Crefname = {問題}{問題},
-        },
-        RU = {
-            name = {Проблема},
-            crefname = {проблема}{проблемы},
-            Crefname = {Проблема}{Проблемы},
-        },
-    }
-    \NameTheorem{question}{
-        EN = {
-            name = {Question},
-            crefname = {question}{questions},
-            Crefname = {Question}{Questions},
-        },
-        FR = {
-            name = {Question},
-            crefname = {\crefthemark{la} question}{\crefthemark{les} questions},
-            Crefname = {La question}{Les questions},
-        },
-        DE = {
-            name = {Frage},
-            crefname = {Frage}{Fragen},
-            Crefname = {Frage}{Fragen},
-        },
-        IT = {
-            name = {Domanda},
-            crefname = {\crefthemark{la} domanda}{\crefthemark{le} domande},
-            Crefname = {La domanda}{Le domande},
-        },
-        PT = {
-            name = {Pergunta},
-            crefname = {\crefthemark{a} pergunta}{\crefthemark{as} perguntas},
-            Crefname = {A pergunta}{As perguntas},
-        },
-        BR = {
-            name = {Pergunta},
-            crefname = {\crefthemark{a} pergunta}{\crefthemark{as} perguntas},
-            Crefname = {A pergunta}{As perguntas},
-        },
-        ES = {
-            name = {Pregunta},
-            crefname = {la pregunta}{las preguntas},
-            Crefname = {La pregunta}{Las preguntas},
-        },
-        CN = {
-            name = {问题},
-            crefname = {问题}{问题},
-            Crefname = {问题}{问题},
-        },
-        TC = {
-            name = {問題},
-            crefname = {問題}{問題},
-            Crefname = {問題}{問題},
-        },
-        JP = {
-            name = {問題},
-            crefname = {問題}{問題},
-            Crefname = {問題}{問題},
-        },
-        RU = {
-            name = {Вопрос},
-            crefname = {вопрос}{вопросы},
-            Crefname = {Вопрос}{Вопросы},
-        },
-    }
-    \NameTheorem{exercise}{
-        EN = {
-            name = {Exercise},
-            crefname = {exercise}{exercises},
-            Crefname = {Exercise}{Exercises},
-        },
-        FR = {
-            name = {Exercice},
-            crefname = {\crefthemark{l'}exercice}{\crefthemark{les} exercices},
-            Crefname = {L'exercice}{Les exercices},
-        },
-        DE = {
-            name = {Übung},
-            crefname = {Übung}{Übungen},
-            Crefname = {Übung}{Übungen},
-        },
-        IT = {
-            name = {Esercizio},
-            crefname = {\crefthemark{l'}esercizio}{\crefthemark{gli} esercizi},
-            Crefname = {L'esercizio}{Gli esercizi},
-        },
-        PT = {
-            name = {Exercício},
-            crefname = {\crefthemark{o} exercício}{\crefthemark{os} exercícios},
-            Crefname = {O exercício}{Os exercícios},
-        },
-        BR = {
-            name = {Exercício},
-            crefname = {\crefthemark{o} exercício}{\crefthemark{os} exercícios},
-            Crefname = {O exercício}{Os exercícios},
-        },
-        ES = {
-            name = {Ejercicio},
-            crefname = {\crefthemark{el} ejercicio}{los ejercicios},
-            Crefname = {El ejercicio}{Los ejercicios},
-        },
-        CN = {
-            name = {练习},
-            crefname = {练习}{练习},
-            Crefname = {练习}{练习},
-        },
-        TC = {
-            name = {練習},
-            crefname = {練習}{練習},
-            Crefname = {練習}{練習},
-        },
-        JP = {
-            name = {練習},
-            crefname = {練習}{練習},
-            Crefname = {練習}{練習},
-        },
-        RU = {
-            name = {Упражнение},
-            crefname = {упражнение}{упражнения},
-            Crefname = {Упражнение}{Упражнения},
-        },
-    }
-    \NameTheorem{remark}{
-        EN = {
-            name = {Remark},
-            crefname = {remark}{remarks},
-            Crefname = {Remark}{Remarks},
-        },
-        FR = {
-            name = {Remarque},
-            crefname = {\crefthemark{la} remarque}{\crefthemark{les} remarques},
-            Crefname = {La remarque}{Les remarques},
-        },
-        DE = {
-            name = {Bemerkung},
-            crefname = {Bemerkung}{Bemerkungen},
-            Crefname = {Bemerkung}{Bemerkungen},
-        },
-        IT = {
-            name = {Commento},
-            crefname = {\crefthemark{il} commento}{\crefthemark{i} commenti},
-            Crefname = {Il commento}{I commenti},
-        },
-        PT = {
-            name = {Comentário},
-            crefname = {\crefthemark{o} comentário}{\crefthemark{os} comentários},
-            Crefname = {O comentário}{Os comentários},
-        },
-        BR = {
-            name = {Comentário},
-            crefname = {\crefthemark{o} comentário}{\crefthemark{os} comentários},
-            Crefname = {O comentário}{Os comentários},
-        },
-        ES = {
-            name = {Comentario},
-            crefname = {\crefthemark{el} comentario}{los comentarios},
-            Crefname = {El comentario}{Los comentarios},
-        },
-        CN = {
-            name = {备注},
-            crefname = {备注}{备注},
-            Crefname = {备注}{备注},
-        },
-        TC = {
-            name = {備註},
-            crefname = {備註}{備註},
-            Crefname = {備註}{備註},
-        },
-        JP = {
-            name = {注釈},
-            crefname = {注釈}{注釈},
-            Crefname = {注釈}{注釈},
-        },
-        RU = {
-            name = {Замечание},
-            crefname = {замечание}{замечания},
-            Crefname = {Замечание}{Замечания},
-        },
-    }
-    \NameTheorem{observation}{
-        EN = {
-            name = {Observation},
-            crefname = {observation}{observations},
-            Crefname = {Observation}{Observations},
-        },
-        FR = {
-            name = {Observation},
-            crefname = {\crefthemark{la} observation}{\crefthemark{les} observations},
-            Crefname = {La observation}{Les observations},
-        },
-        DE = {
-            name = {Beobachtung},
-            crefname = {Beobachtung}{Beobachtungen},
-            Crefname = {Beobachtung}{Beobachtungen},
-        },
-        IT = {
-            name = {Osservazione},
-            crefname = {\crefthemark{l'}osservazione}{\crefthemark{le} osservazioni},
-            Crefname = {L'osservazione}{Le osservazioni},
-        },
-        PT = {
-            name = {Observação},
-            crefname = {\crefthemark{a} observação}{\crefthemark{as} observações},
-            Crefname = {A observação}{As observações},
-        },
-        BR = {
-            name = {Observação},
-            crefname = {\crefthemark{a} observação}{\crefthemark{as} observações},
-            Crefname = {A observação}{As observações},
-        },
-        ES = {
-            name = {Observación},
-            crefname = {la observación}{las observaciones},
-            Crefname = {La observación}{Las observaciones},
-        },
-        CN = {
-            name = {观察},
-            crefname = {观察}{观察},
-            Crefname = {观察}{观察},
-        },
-        TC = {
-            name = {觀察},
-            crefname = {觀察}{觀察},
-            Crefname = {觀察}{觀察},
-        },
-        JP = {
-            name = {観察},
-            crefname = {観察}{観察},
-            Crefname = {観察}{観察},
-        },
-        RU = {
-            name = {Наблюдение},
-            crefname = {наблюдение}{наблюдения},
-            Crefname = {Наблюдение}{Наблюдения},
-        },
-    }
-    \NameTheorem{definition-proposition}{
-        EN = {
-            name = {\definitionnameEN-\propositionnameEN},
-            crefname = {definition-proposition}{definitions-propositions},
-            Crefname = {Definition-proposition}{Definitions-propositions},
-        },
-        FR = {
-            name = {\definitionnameFR-\propositionnameFR},
-            crefname = {\crefthemark{la} définition-proposition}{\crefthemark{les} définitions-propositions},
-            Crefname = {La définition-proposition}{Les définitions-propositions},
-        },
-        DE = {
-            name = {\definitionnameDE-\propositionnameDE},
-            crefname = {Definition-Proposition}{Definitionen-Propositionen},
-            Crefname = {Definition-Proposition}{Definitionen-Propositionen},
-        },
-        IT = {
-            name = {\definitionnameIT-\propositionnameIT},
-            crefname = {\crefthemark{la} definizione-proposizione}{\crefthemark{le} definizioni-proposte},
-            Crefname = {La definizione-proposizione}{Le definizioni-proposte},
-        },
-        PT = {
-            name = {\definitionnamePT-\propositionnamePT},
-            crefname = {\crefthemark{a} definição-proposição}{\crefthemark{as} definições-proposições},
-            Crefname = {A definição-proposição}{As definições-proposições},
-        },
-        BR = {
-            name = {\definitionnameBR-\propositionnameBR},
-            crefname = {\crefthemark{a} definição-proposição}{\crefthemark{as} definições-proposições},
-            Crefname = {A definição-proposição}{As definições-proposições},
-        },
-        ES = {
-            name = {\definitionnameES-\propositionnameES},
-            crefname = {la definición-proposición}{las definiciones-proposiciones},
-            Crefname = {La definición-proposición}{Las definiciones-proposiciones},
-        },
-        CN = {
-            name = {\definitionnameCN-\propositionnameCN},
-            crefname = {\definitionnameCN-\propositionnameCN}{\definitionnameCN-\propositionnameCN},
-            Crefname = {\definitionnameCN-\propositionnameCN}{\definitionnameCN-\propositionnameCN},
-        },
-        TC = {
-            name = {\definitionnameTC-\propositionnameTC},
-            crefname = {\definitionnameTC-\propositionnameTC}{\definitionnameTC-\propositionnameTC},
-            Crefname = {\definitionnameTC-\propositionnameTC}{\definitionnameTC-\propositionnameTC},
-        },
-        JP = {
-            name = {\definitionnameJP-\propositionnameJP},
-            crefname = {\definitionnameJP-\propositionnameJP}{\definitionnameJP-\propositionnameJP},
-            Crefname = {\definitionnameJP-\propositionnameJP}{\definitionnameJP-\propositionnameJP},
-        },
-        RU = {
-            name = {\definitionnameRU-\propositionnameRU},
-            crefname = {определение-предложение}{определения-предложения},
-            Crefname = {Определение-предложение}{Определения-предложение},
-        },
-    }
-    \NameTheorem{definition-theorem}{
-        EN = {
-            name = {\definitionnameEN-\theoremnameEN},
-            crefname = {definition-theorem}{definitions-theorems},
-            Crefname = {Definition-theorem}{Definitions-theorems},
-        },
-        FR = {
-            name = {\definitionnameFR-\theoremnameFR},
-            crefname = {\crefthemark{la} définition-théorème}{\crefthemark{les} définitions-théorèmes},
-            Crefname = {La définition-théorème}{Les définitions-théorèmes},
-        },
-        DE = {
-            name = {\definitionnameDE-\theoremnameDE},
-            crefname = {Definition-Satz}{Definitionen-Sätze},
-            Crefname = {Definition-Satz}{Definitionen-Sätze},
-        },
-        IT = {
-            name = {\definitionnameIT-\theoremnameIT},
-            crefname = {\crefthemark{la} definizione-teorema}{\crefthemark{le} definizioni-teoremi},
-            Crefname = {La definizione-teorema}{Le definizioni-teoremi},
-        },
-        PT = {
-            name = {\definitionnamePT-\theoremnamePT},
-            crefname = {\crefthemark{a} definição-teorema}{\crefthemark{as} definições-teoremas},
-            Crefname = {A definição-teorema}{As definições-teoremas},
-        },
-        BR = {
-            name = {\definitionnameBR-\theoremnameBR},
-            crefname = {\crefthemark{a} definição-teorema}{\crefthemark{as} definições-teoremas},
-            Crefname = {A definição-teorema}{As definições-teoremas},
-        },
-        ES = {
-            name = {\definitionnameES-\theoremnameES},
-            crefname = {la definición-teorema}{las definiciones-teoremas},
-            Crefname = {La definición-teorema}{Las definiciones-teoremas},
-        },
-        CN = {
-            name = {\definitionnameCN-\theoremnameCN},
-            crefname = {\definitionnameCN-\theoremnameCN}{\definitionnameCN-\theoremnameCN},
-            Crefname = {\definitionnameCN-\theoremnameCN}{\definitionnameCN-\theoremnameCN},
-        },
-        TC = {
-            name = {\definitionnameTC-\theoremnameTC},
-            crefname = {\definitionnameTC-\theoremnameTC}{\definitionnameTC-\theoremnameTC},
-            Crefname = {\definitionnameTC-\theoremnameTC}{\definitionnameTC-\theoremnameTC},
-        },
-        JP = {
-            name = {\definitionnameJP-\theoremnameJP},
-            crefname = {\definitionnameJP-\theoremnameJP}{\definitionnameJP-\theoremnameJP},
-            Crefname = {\definitionnameJP-\theoremnameJP}{\definitionnameJP-\theoremnameJP},
-        },
-        RU = {
-            name = {\definitionnameRU-\theoremnameRU},
-            crefname = {определение-теорема}{определения-теоремы},
-            Crefname = {Определение-теорема}{Определения-теорема},
-        },
-    }
-}{
-    \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}}
-    \def\observationnameEN{{Observation}}
-    \expandafter\def\csname definition-propositionnameEN\endcsname{\definitionnameEN-\propositionnameEN}
-    \expandafter\def\csname definition-theoremnameEN\endcsname{\definitionnameEN-\theoremnameEN}
-
-    \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}}
-    \def\observationnameFR{{Observation}}
-    \expandafter\def\csname definition-propositionnameFR\endcsname{\definitionnameFR-\propositionnameFR}
-    \expandafter\def\csname definition-theoremnameFR\endcsname{\definitionnameFR-\theoremnameFR}
-
-    \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}}
-    \def\observationnameDE{{Beobachtung}}
-    \expandafter\def\csname definition-propositionnameDE\endcsname{\definitionnameDE-\propositionnameDE}
-    \expandafter\def\csname definition-theoremnameDE\endcsname{\definitionnameDE-\theoremnameDE}
-
-    \def\theoremnameIT{{Teorema}}
-    \def\lemmanameIT{{Lemma}}
-    \def\propositionnameIT{{Proposizione}}
-    \def\corollarynameIT{{Corollario}}
-    \def\propertynameIT{{Proprietà}}
-    \def\factnameIT{{Fatto}}
-    \def\conjecturenameIT{{Congettura}}
-    \def\definitionnameIT{{Definizione}}
-    \def\axiomnameIT{{Assioma}}
-    \def\assumptionnameIT{{Supposizione}}
-    \def\conventionnameIT{{Convenzione}}
-    \def\hypothesisnameIT{{Ipotesi}}
-    \def\notationnameIT{{Notazione}}
-    \def\examplenameIT{{Esempio}}
-    \def\problemnameIT{{Problema}}
-    \def\questionnameIT{{Domanda}}
-    \def\exercisenameIT{{Esercizio}}
-    \def\remarknameIT{{Commento}}
-    \def\observationnameIT{{Osservazione}}
-    \expandafter\def\csname definition-propositionnameIT\endcsname{\definitionnameIT-\propositionnameIT}
-    \expandafter\def\csname definition-theoremnameIT\endcsname{\definitionnameIT-\theoremnameIT}
-
-    \def\theoremnamePT{{Teorema}}
-    \def\lemmanamePT{{Lema}}
-    \def\propositionnamePT{{Proposição}}
-    \def\corollarynamePT{{Corolário}}
-    \def\propertynamePT{{Propriedade}}
-    \def\factnamePT{{Facto}}
-    \def\conjecturenamePT{{Conjetura}}
-    \def\definitionnamePT{{Definição}}
-    \def\axiomnamePT{{Axioma}}
-    \def\assumptionnamePT{{Suposição}}
-    \def\conventionnamePT{{Convenção}}
-    \def\hypothesisnamePT{{Hipótese}}
-    \def\notationnamePT{{Notação}}
-    \def\examplenamePT{{Exemplo}}
-    \def\problemnamePT{{Problema}}
-    \def\questionnamePT{{Pergunta}}
-    \def\exercisenamePT{{Exercício}}
-    \def\remarknamePT{{Comentário}}
-    \def\observationnamePT{{Observação}}
-    \expandafter\def\csname definition-propositionnamePT\endcsname{\definitionnamePT-\propositionnamePT}
-    \expandafter\def\csname definition-theoremnamePT\endcsname{\definitionnamePT-\theoremnamePT}
-
-    \def\theoremnameBR{{Teorema}}
-    \def\lemmanameBR{{Lema}}
-    \def\propositionnameBR{{Proposição}}
-    \def\corollarynameBR{{Corolário}}
-    \def\propertynameBR{{Propriedade}}
-    \def\factnameBR{{Fato}}
-    \def\conjecturenameBR{{Conjectura}}
-    \def\definitionnameBR{{Definição}}
-    \def\axiomnameBR{{Axioma}}
-    \def\assumptionnameBR{{Suposição}}
-    \def\conventionnameBR{{Convenção}}
-    \def\hypothesisnameBR{{Hipótese}}
-    \def\notationnameBR{{Notação}}
-    \def\examplenameBR{{Exemplo}}
-    \def\problemnameBR{{Problema}}
-    \def\questionnameBR{{Pergunta}}
-    \def\exercisenameBR{{Exercício}}
-    \def\remarknameBR{{Comentário}}
-    \def\observationnameBR{{Observação}}
-    \expandafter\def\csname definition-propositionnameBR\endcsname{\definitionnameBR-\propositionnameBR}
-    \expandafter\def\csname definition-theoremnameBR\endcsname{\definitionnameBR-\theoremnameBR}
-
-    \def\theoremnameES{{Teorema}}
-    \def\lemmanameES{{Lema}}
-    \def\propositionnameES{{Proposición}}
-    \def\corollarynameES{{Corolario}}
-    \def\propertynameES{{Propiedad}}
-    \def\factnameES{{Hecho}}
-    \def\conjecturenameES{{Conjetura}}
-    \def\definitionnameES{{Definición}}
-    \def\axiomnameES{{Axioma}}
-    \def\assumptionnameES{{Suposición}}
-    \def\conventionnameES{{Convención}}
-    \def\hypothesisnameES{{Hipótesis}}
-    \def\notationnameES{{Notación}}
-    \def\examplenameES{{Ejemplo}}
-    \def\problemnameES{{Problema}}
-    \def\questionnameES{{Pregunta}}
-    \def\exercisenameES{{Ejercicio}}
-    \def\remarknameES{{Comentario}}
-    \def\observationnameES{{Observación}}
-    \expandafter\def\csname definition-propositionnameES\endcsname{\definitionnameES-\propositionnameES}
-    \expandafter\def\csname definition-theoremnameES\endcsname{\definitionnameES-\theoremnameES}
-
-    \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{{备注}}
-    \def\observationnameCN{{观察}}
-    \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{{備註}}
-    \def\observationnameTC{{觀察}}
-    \expandafter\def\csname definition-propositionnameTC\endcsname{\definitionnameTC-\propositionnameTC}
-    \expandafter\def\csname definition-theoremnameTC\endcsname{\definitionnameTC-\theoremnameTC}
-
-    \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{{注釈}}
-    \def\observationnameJP{{観察}}
-    \expandafter\def\csname definition-propositionnameJP\endcsname{\definitionnameJP-\propositionnameJP}
-    \expandafter\def\csname definition-theoremnameJP\endcsname{\definitionnameJP-\theoremnameJP}
-
-    \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{{Замечание}} % Замеча́ние
-    \def\observationnameRU{{Наблюдение}} % Наблюде́ние
-    \expandafter\def\csname definition-propositionnameRU\endcsname{\definitionnameRU-\propositionnameRU}
-    \expandafter\def\csname definition-theoremnameRU\endcsname{\definitionnameRU-\theoremnameRU}
-}
-
-\newif\ifPJLthm at IsBook
-\ifdefined\c at chapter\PJLthm at IsBooktrue\else\PJLthm at IsBookfalse\fi
-\ifbool{PJLthm at IsBook}{
-    \newaliascnt{PJLthm at highest}{chapter}
-}{
-    \newaliascnt{PJLthm at highest}{section}
-}
-\NewDocumentCommand{\CreateTheorem at thmnum}{m}{
-    \expandafter\ifstrempty\expandafter{\@PJLthm at thmnum}{
-        \CreateTheorem{#1}<PJLthm at highest>
-    }{
-        \expandafter\ifstrequal\expandafter{\@PJLthm at thmnum}{PJL at thmnum@default}{
-            \CreateTheorem{#1}
-        }{
-            \CreateTheorem{#1}<\@PJLthm at thmnum>
-        }
-    }
-}
-
-\def\PJLthm at definethms{
-\if at PJLthm@nothms\else
-\if at PJLthm@nothmnum
-\CreateTheorem*{theorem}
-\CreateTheorem*{lemma}
-\CreateTheorem*{proposition}
-\CreateTheorem*{corollary}
-\CreateTheorem*{definition-proposition}
-\CreateTheorem*{definition-theorem}
-\CreateTheorem*{property}
-\CreateTheorem*{fact}
-\CreateTheorem*{conjecture}
-\else
-\CreateTheorem at thmnum{theorem}
-\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]
-\fi
-\CreateTheorem*{theorem*}
-\CreateTheorem*{lemma*}
-\CreateTheorem*{proposition*}
-\CreateTheorem*{corollary*}
-\CreateTheorem*{definition-proposition*}
-\CreateTheorem*{definition-theorem*}
-\CreateTheorem*{property*}
-\CreateTheorem*{fact*}
-\CreateTheorem*{conjecture*}
-
-\theoremstyle{definition}
-\if at PJLthm@nothmnum
-\CreateTheorem*{definition}
-\CreateTheorem*{axiom}
-\CreateTheorem*{assumption}
-\CreateTheorem*{convention}
-\CreateTheorem*{hypothesis}
-\CreateTheorem*{notation}
-\CreateTheorem*{example}
-\CreateTheorem*{problem}
-\CreateTheorem*{question}
-\CreateTheorem*{exercise}
-\else
-\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]
-\fi
-\CreateTheorem*{definition*}
-\CreateTheorem*{axiom*}
-\CreateTheorem*{assumption*}
-\CreateTheorem*{convention*}
-\CreateTheorem*{hypothesis*}
-\CreateTheorem*{notation*}
-\CreateTheorem*{example*}
-\CreateTheorem*{problem*}
-\CreateTheorem*{question*}
-\CreateTheorem*{exercise*}
-
-\theoremstyle{remark}
-\if at PJLthm@nothmnum
-\CreateTheorem*{remark}
-\CreateTheorem*{observation}
-\else
-\CreateTheorem at thmnum{remark}
-\CreateTheorem at thmnum{observation}
-\fi
-\CreateTheorem*{remark*}
-\CreateTheorem*{observation*}
-
-\theoremstyle{definition}
-\fi
-
-\expandafter\ifstrempty\expandafter{\@PJLthm at thmnum}{
-    \numberwithin{equation}{PJLthm at highest}
-}{
-    \expandafter\ifstrequal\expandafter{\@PJLthm at thmnum}{PJL at thmnum@default}{
-    }{
-        \numberwithin{equation}{\@PJLthm at thmnum}
-    }
-}
-
-} % End of \PJLthm at definethms
-
-\if at PJLthm@delaythms
-    \AtEndPreamble{\PJLthm at definethms}
-\else
-    \PJLthm at definethms
-\fi
-
-\gappto{\PJLlang at langconfig@CN}{%
-    \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{\PJLlang at langconfig@TC}{%
-    \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{\PJLlang at langconfig@JP}{%
-    \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{\PJLlang at langconfig@RU}{%
-    \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~}%
-}
-\gappto{\PJLlang at langconfig@PT}{%
-    \crefname{equation}{eq.}{eqs.}%
-    \crefname{figure}{fig.}{figs.}%
-    \crefname{table}{tabela}{tabelas}%
-    \crefname{appendix}{apêndice}{apêndices}%
-    \Crefname{equation}{Eq.}{Eqs.}%
-    \Crefname{figure}{Fig.}{Figs.}%
-    \Crefname{table}{Tabela}{Tabelas}%
-    \Crefname{appendix}{Apêndice}{Apêndices}%
-    \def\crefpairconjunction{ e\nobreakspace}%
-    \def\crefmiddleconjunction{, }%
-    \def\creflastconjunction{ e\nobreakspace}%
-    \def\crefpairgroupconjunction{ e\nobreakspace}%
-    \def\crefmiddlegroupconjunction{, }%
-    \def\creflastgroupconjunction{ e\nobreakspace}%
-    \def\crefrangeconjunction{ a\nobreakspace}%
-}
-
-\endinput
-%%
-%% End of file `PJLthm.sty'.

Modified: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/ProjLib.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/ProjLib.sty	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/ProjLib.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -1,183 +1,38 @@
-%%
-%% This is file `ProjLib.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{ProjLib}
-    [2021/12/16 The collective interface of ProjLib toolkit]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
-    family = @ProjLib,
-    prefix = @ProjLib@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{author}
-\DeclareBoolOption[false]{amsfashion}
-\DeclareBoolOption[false]{nothms}
-\DeclareBoolOption[false]{delaythms}
-\DeclareBoolOption[false]{nothmnum}
-\DeclareStringOption{thmnum}[PJL at thmnum@default]
-\DeclareBoolOption[true]{regionalref}
-\DeclareBoolOption[false]{originalref}
-\DeclareBoolOption[true]{complexname}
-\DeclareBoolOption[false]{simplename}
-\DeclareBoolOption[false]{useosf}
-\DeclareBoolOption[false]{lmodern}
-\DeclareBoolOption[false]{palatino}
-\DeclareBoolOption[false]{times}
-\DeclareBoolOption[false]{garamond}
-\DeclareBoolOption[false]{noto}
-\DeclareBoolOption[false]{biolinum}
-\ProcessKeyvalOptions*\relax
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+  {ProjLib}
+  {2022/03/09} {}
+  {Collective interface of the ProjLib toolkit}
 
-\if at ProjLib@originalref
-    \@ProjLib at regionalreffalse
-\fi
-\if at ProjLib@simplename
-    \@ProjLib at complexnamefalse
-\fi
-\if at ProjLib@draft
-    \@ProjLib at fasttrue
-\fi
+\keys_define:nn { ProjLib }
+  {
+    , unknown .code:n = {
+                          \PassOptionsToPackage { \CurrentOption } { projlib-language }
+                          \PassOptionsToPackage { \CurrentOption } { projlib-author }
+                          \PassOptionsToPackage { \CurrentOption } { projlib-datetime }
+                          \PassOptionsToPackage { \CurrentOption } { projlib-draft }
+                          \PassOptionsToPackage { \CurrentOption } { projlib-font }
+                          \PassOptionsToPackage { \CurrentOption } { projlib-logo }
+                          \PassOptionsToPackage { \CurrentOption } { projlib-math }
+                          \PassOptionsToPackage { \CurrentOption } { projlib-paper }
+                          \PassOptionsToPackage { \CurrentOption } { projlib-theorem }
+                        }
+  }
+\ProcessKeysOptions { ProjLib }
 
-\if at ProjLib@fast
-    \PassOptionsToPackage{fast}{PJLdate}
-    \PassOptionsToPackage{fast}{PJLdraft}
-    \PassOptionsToPackage{fast}{PJLlogo}
-    \PassOptionsToPackage{fast}{PJLthm}
-\fi
-\if at ProjLib@nothms
-    \PassOptionsToPackage{nothms}{PJLthm}
-\fi
-\if at ProjLib@delaythms
-    \PassOptionsToPackage{delaythms}{PJLthm}
-\fi
-\if at ProjLib@nothmnum
-    \PassOptionsToPackage{nothmnum}{PJLthm}
-\fi
-\expandafter\ifstrempty\expandafter{\@ProjLib at thmnum}{}{
-    \expandafter\ifstrequal\expandafter{\@ProjLib at thmnum}{PJL at thmnum@default}{
-        \PassOptionsToPackage{thmnum}{PJLthm}
-    }{
-        \PassOptionsToPackage{thmnum=\@ProjLib at thmnum}{PJLthm}
-    }
-}
-\if at ProjLib@regionalref\else
-    \PassOptionsToPackage{originalref}{PJLthm}
-\fi
-\if at ProjLib@complexname\else
-    \PassOptionsToPackage{simplename}{PJLthm}
-\fi
+\RequirePackage { projlib-language }
 
-\if at ProjLib@amsfashion
-    \PassOptionsToPackage{amsfashion}{PJLauthor}
-    \RequirePackage{PJLauthor}
-\fi
-\if at ProjLib@author
-    \RequirePackage{PJLauthor}
-\fi
-\RequirePackage{PJLdate}
-\RequirePackage{PJLdraft}
-\RequirePackage{PJLlogo}
-\RequirePackage{PJLmath}
-\RequirePackage{PJLpaper}
-\RequirePackage{PJLthm}
+\RequirePackage { projlib-author }
+\RequirePackage { projlib-datetime }
+\RequirePackage { projlib-draft }
+\RequirePackage { projlib-font }
+\RequirePackage { projlib-logo }
+\RequirePackage { projlib-math }
+\RequirePackage { projlib-paper }
 
-\ifdefined\PJL at font@alreadyset\else
+\RequirePackage { projlib-theorem }
 
-\if at ProjLib@lmodern
-    \RequirePackage{amssymb}
-    \if at ProjLib@useosf
-        \RequirePackage{cfr-lm}
-    \else
-        \RequirePackage{lmodern}
-    \fi
-    \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if at ProjLib@palatino
-    % \RequirePackage{amssymb}
-    \RequirePackage{mathpazo}
-    \PassOptionsToPackage{defaultsups}{newpxtext}
-    \RequirePackage{newpxtext}
-    % \RequirePackage{newpxmath}
-    \let\openbox\relax
-    \PJLsetlinespacing{\setstretch{1.07}}
-    \if at ProjLib@useosf\useosf\fi
-\fi
-
-\if at ProjLib@times
-    % \RequirePackage{amssymb}
-    \PassOptionsToPackage{defaultsups}{newtxtext}
-    \RequirePackage{newtxtext}
-    \RequirePackage{newtxmath}
-    \let\openbox\relax
-    \PJLsetlinespacing{\setstretch{1.00}}
-    \if at ProjLib@useosf\useosf\fi
-\fi
-
-\if at ProjLib@garamond
-    % \RequirePackage{amssymb}
-    \if at ProjLib@useosf\else
-        \PassOptionsToPackage{lining}{ebgaramond}
-    \fi
-    \RequirePackage{ebgaramond-maths}
-    \RequirePackage{ebgaramond}
-    % \RequirePackage{garamondlibre}
-    \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if at ProjLib@noto
-    \if at ProjLib@useosf
-        \PassOptionsToPackage{oldstyle}{notomath}
-    \fi
-    \RequirePackage{anyfontsize}
-    \RequirePackage{notomath}
-    \PJLsetlinespacing{\setstretch{1.00}}
-\fi
-
-\if at ProjLib@biolinum
-    % \RequirePackage{amssymb}
-    % \RequirePackage{mathpazo}
-    % \RequirePackage[sansmath]{libertinust1math}
-    \ifPDFTeX
-        \if at ProjLib@useosf
-            \PassOptionsToPackage{osf}{biolinum}
-        \fi
-        \RequirePackage{biolinum}
-        \renewcommand*\familydefault{\biolinum at family}
-    \else
-        \PassOptionsToPackage{no-math}{fontspec}
-        \RequirePackage{fontspec}
-        \setmainfont{LinBiolinum_R.otf}[
-            BoldFont       = LinBiolinum_RB.otf ,
-            ItalicFont     = LinBiolinum_RI.otf ,
-            BoldItalicFont = LinBiolinum_RBO.otf,
-            \if at ProjLib@useosf Numbers = OldStyle\fi ]
-    \fi
-    \PJLsetlinespacing{\setstretch{1.05}}
-    \RequirePackage[italic,defaultmathsizes]{mathastext}
-\fi
-
-\fi
-
-\RequirePackage{microtype}
-
 \endinput
 %%
 %% End of file `ProjLib.sty'.

Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLauthor.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLauthor.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLauthor.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,245 @@
+%%
+%% This is file `PJLauthor.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{PJLauthor}
+    [2021/12/16 Enhanced author information block]
+\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
+\SetupKeyvalOptions{
+    family = @PJLauthor,
+    prefix = @PJLauthor@,
+}
+\DeclareBoolOption[false]{amsfashion}
+\ProcessKeyvalOptions*\relax
+
+\ifdefined\subjclass\endinput\fi
+
+%%================================
+%% Font and style
+%%================================
+\def\PJLauthor at font@author{\normalsize\normalfont\scshape}
+\def\PJLauthor at font@address{\small\normalfont\itshape}
+\def\PJLauthor at font@curraddr{\small\normalfont\itshape}
+\def\PJLauthor at font@email{\small\normalfont\ttfamily}
+
+%%================================
+%% Lengths
+%%================================
+\newlength{\PJLauthor at length@innersep}
+\setlength{\PJLauthor at length@innersep}{.3\baselineskip}
+\newlength{\PJLauthor at length@sep}
+\setlength{\PJLauthor at length@sep}{.5\baselineskip}
+\newlength{\PJLauthor at length@aftersep}
+\setlength{\PJLauthor at length@aftersep}{.3\baselineskip}
+
+%%================================
+%% The macros
+%%================================
+\newif\if at PJLauthor@affilon
+\renewcommand*{\author}[1]{%
+    \gappto\@author{\phantom{A}\\[-\baselineskip]%
+    \vspace{\PJLauthor at length@sep}%
+    \PJLauthor at font@author{#1}\\\phantom{}
+    \@PJLauthor at affilonfalse}}
+\providecommand*{\address}[1]{%
+    \gappto\@author{\phantom{A}\\[-\baselineskip]%
+        \if at PJLauthor@affilon\else%
+            \vspace{\PJLauthor at length@innersep}%
+        \fi%
+        \@PJLauthor at affilontrue%
+        \PJLauthor at font@address{#1}\\\phantom{}}%
+}
+\providecommand*{\curraddr}[1]{%
+    \gappto\@author{\phantom{A}\\[-\baselineskip]%
+        \if at PJLauthor@affilon\else%
+            \vspace{\PJLauthor at length@innersep}%
+        \fi%
+        \@PJLauthor at affilontrue%
+        \PJLauthor at font@curraddr{#1}\\\phantom{}}%
+}
+\providecommand*{\email}[1]{%
+    \gappto\@author{\phantom{A}\\[-\baselineskip]%
+        \if at PJLauthor@affilon\else%
+            \vspace{\PJLauthor at length@innersep}%
+        \fi%
+        \@PJLauthor at affilontrue%
+        \PJLauthor at font@email{#1}\\\phantom{}}%
+}
+
+%%================================
+%% Adjustment
+%%================================
+\patchcmd{\@maketitle}{\begin{tabular}[t]{c}}{}{}{}
+\patchcmd{\@maketitle}{\end{tabular}}{}{}{}
+\def\@author{}
+\pretocmd{\@maketitle}{%
+    \pretocmd{\@author}{\vspace{-\PJLauthor at length@sep}}{}{\FAIL}%
+    \apptocmd{\@author}{%
+        \vspace{-\baselineskip}%
+        \if at PJLauthor@affilon%
+            \vspace{\PJLauthor at length@aftersep}%
+        \fi%
+    }{}{\FAIL}%
+}{}{\FAIL}
+
+\ifbool{@PJLauthor at amsfashion}{
+
+\RequirePackage{PJLlang}
+\RequirePackage{calc}
+
+\providecommand{\conditionalbfseries}{\bfseries}
+
+\def\keywordsnameEN{\textsc{Key words and phrases}}
+\def\keywordsnameFR{\textsc{Mots et phrases clés}}
+\def\keywordsnameDE{\textsc{Schlüsselwörter und Phrasen}}
+\def\keywordsnameIT{\textsc{Parole e frasi chiave}}
+\def\keywordsnamePT{\textsc{Palavras e frases chave}}
+\def\keywordsnameBR{\textsc{Palavras e frases chave}}
+\def\keywordsnameES{\textsc{Palabras y frases clave}}
+\def\keywordsnameCN{关键词}
+\def\keywordsnameTC{關鍵詞}
+\def\keywordsnameJP{キーワード}
+\def\keywordsnameRU{Ключевые слова и фразы}
+
+\def\PJL at keywords{}
+\providecommand*{\keywords}[1]{\def\PJL at keywords{#1}}
+
+\def\PJL at dedicatory{}
+\providecommand*{\dedicatory}[1]{\def\PJL at dedicatory{#1}}
+
+\AtEndPreamble{
+\let\footnotemark at PJLoriginal\footnotemark%
+\let\footnotemark\relax%
+\let\thanks at PJLoriginal\thanks%
+\newlength\PJL at starlength
+\setlength{\PJL at starlength}{\widthof{*}}
+\newcommand*{\PJL at prethanks}[1]{\thanks at PJLoriginal{\hspace*{-\PJL at starlength}#1}}
+\renewcommand*{\thanks}[1]{%
+    \ifx#1\@empty\else%
+        \apptocmd{\@title}{%
+            \thanks at PJLoriginal{\hspace*{-\PJL at starlength}#1}%
+        }{}{\FAIL}%
+    \fi}
+\let\author at PJLoriginal\author
+\renewcommand{\author}[1]{%
+    \author at PJLoriginal{%
+        \let\footnotemark\footnotemark at PJLoriginal%
+        \let\thanks\thanks at PJLoriginal%
+        #1%
+        \let\footnotemark\relax%
+    }%
+}
+}
+
+\let\abstract at PJLoriginal\abstract%
+\let\endabstract at PJLoriginal\endabstract%
+\newif\if at PJLauthor@maketitle\@PJLauthor at maketitlefalse
+\newif\if at PJLauthor@absbefore\@PJLauthor at absbeforefalse
+\RequirePackage{fancyvrb}
+\providecommand*\protected at iwrite[3]{%
+  \begingroup
+  \let\thepage\relax
+  #2%
+  \let\protect\@unexpandable at protect
+  \edef\reserved at a{\immediate\write#1{#3}}\reserved at a
+  \endgroup
+  \if at nobreak\ifvmode\nobreak\fi\fi
+}
+\patchcmd{\FVB at VerbatimOut}
+  {\immediate\write\FV at OutFile}
+  {\protected at iwrite\FV at OutFile{}}
+  {}{}
+\renewenvironment{abstract}{%
+    \VerbatimOut{\jobname.pjlabs}%
+}{
+    \endVerbatimOut%
+    \if at PJLauthor@maketitle%
+        \begin{abstract at PJLoriginal}%
+            \input{\jobname.pjlabs}%
+        \end{abstract at PJLoriginal}%
+        % \ifx\PJL at keywords\@empty\else%
+        %     \par\smallskip\noindent{\conditionalbfseries\csname keywordsname\csname\languagename ABBR\endcsname\endcsname.}~\PJL at keywords%
+        % \fi%
+    \else%
+        \global\@PJLauthor at absbeforetrue%
+    \fi%
+}
+
+\AtEndPreamble{%
+\patchcmd{\@maketitle}{\@date}{%
+    \ifx\@date\@empty\vspace{-2\baselineskip}%
+    \else\@date\fi%
+    \ifx\PJL at dedicatory\@empty\else%
+        \ifx\@date\@empty\vspace{2\baselineskip}\fi%
+        \par\vspace{-\parskip}\bigskip%
+        {\itshape\PJL at dedicatory}%
+        \ifx\@date\@empty%
+            \vspace{-1.7\baselineskip}%
+            \vspace{-\parskip}%
+        \fi%
+    \fi%
+}{}{\FAIL}
+\pretocmd{\maketitle}{%
+    \ifx\PJL at keywords\@empty\else%
+    \PJL at prethanks{{\protect\conditionalbfseries%
+    \csname keywordsname\csname\languagename ABBR\endcsname\endcsname.}%
+    ~\PJL at keywords}%
+    \fi}{}{\FAIL}
+\apptocmd{\maketitle}{%
+    \if at PJLauthor@absbefore%
+        \begin{abstract at PJLoriginal}%
+            \input{\jobname.pjlabs}%
+            % \ifx\PJL at keywords\@empty\else%
+            %     \par\smallskip\noindent{\conditionalbfseries\csname keywordsname\csname\languagename ABBR\endcsname\endcsname.}~\PJL at keywords%
+            % \fi%
+        \end{abstract at PJLoriginal}%
+    \fi%
+    \global\let\address\relax
+    \global\let\curraddr\relax
+    \global\let\email\relax
+    \global\let\dedicatory\relax
+    \global\let\keywords\relax
+    \global\@PJLauthor at maketitletrue
+}{}{\FAIL}
+}
+
+\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 at 2020\endcsname
+    }{%
+        \expandafter\let\expandafter\subjclassname\csname subjclassname@#1\endcsname
+    }%
+    \PJL at prethanks{{\itshape\subjclassname.}\enspace\@subjclass{}.}
+}
+\@namedef{subjclassname at 1991}{%
+  \textup{1991} Mathematics Subject Classification}
+\@namedef{subjclassname at 2000}{%
+  \textup{2000} Mathematics Subject Classification}
+\@namedef{subjclassname at 2010}{%
+  \textup{2010} Mathematics Subject Classification}
+\@namedef{subjclassname at 2020}{%
+  \textup{2020} Mathematics Subject Classification}
+
+}
+
+\endinput
+%%
+%% End of file `PJLauthor.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLauthor.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLdate.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLdate.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLdate.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,74 @@
+%%
+%% This is file `PJLdate.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{PJLdate}
+    [2021/12/16 Convert yyyy-mm-dd to normal datetime format]
+\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
+\SetupKeyvalOptions{
+    family = @PJLdate,
+    prefix = @PJLdate@,
+}
+\DeclareBoolOption[false]{draft}
+\DeclareBoolOption[false]{fast}
+\ProcessKeyvalOptions*\relax
+\if at PJLdate@draft
+    \@PJLdate at fasttrue
+\fi
+\DeclareDocumentCommand{\TheDate}{}{\PJLdate}
+\DeclareDocumentCommand{\PLdate}{}{\PJLdate}
+\if at PJLdate@fast\let\PJLdate\relax\endinput\fi
+
+\RequirePackage{PJLlang}
+
+\robustify\@latex at warning@no at line
+
+\RequirePackage{silence}
+\WarningFilter*{datetime2}{Date-Time Language Module}
+\PassOptionsToPackage{fr-FR,en-US}{datetime2}
+\RequirePackage{datetime2}
+\RequirePackage{zhnumber}
+
+\let\@DTMdate at PJLoriginal\@DTMdate
+\gappto{\PJLlang at langconfig@common}{%
+    \let\@DTMdate\@DTMdate at PJLoriginal%
+}
+\gappto{\PJLlang at langconfig@CN}{%
+    \renewcommand*{\@DTMdate}[1]{%
+    \expandafter\@dtm at parsedate#1\@dtm at endparsedate%
+    \zhdate{\@dtm at year/\@dtm at month/\@dtm at day}%
+    }%
+}
+\gappto{\PJLlang at langconfig@TC}{%
+    \renewcommand*{\@DTMdate}[1]{%
+    \expandafter\@dtm at parsedate#1\@dtm at endparsedate%
+    \zhdate{\@dtm at year/\@dtm at month/\@dtm at day}%
+    }%
+}
+\gappto{\PJLlang at langconfig@JP}{%
+    \renewcommand*{\@DTMdate}[1]{%
+    \expandafter\@dtm at parsedate#1\@dtm at endparsedate%
+    \zhdate{\@dtm at year/\@dtm at month/\@dtm at day}%
+    }%
+}
+
+\providecommand*{\PJLdate}[1]{\DTMdate{#1}}
+
+\endinput
+%%
+%% End of file `PJLdate.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLdate.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLdraft.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLdraft.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLdraft.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,104 @@
+%%
+%% This is file `PJLdraft.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{PJLdraft}
+    [2021/12/16 Some useful macros for the draft stage]
+\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
+\SetupKeyvalOptions{
+    family = @PJLdraft,
+    prefix = @PJLdraft@,
+}
+\DeclareBoolOption[false]{draft}
+\DeclareBoolOption[false]{fast}
+\ProcessKeyvalOptions*\relax
+\if at PJLdraft@draft
+    \@PJLdraft at fasttrue
+\fi
+
+\RequirePackage{PJLlang}
+\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\dnfTextIT{Per essere finito}
+\def\needgraphTextIT{Manca un'immagine qui}
+\def\dnfTextPT{Não terminou}
+\def\needgraphTextPT{Precisa de uma foto aqui}
+\def\dnfTextBR{Não terminou}
+\def\needgraphTextBR{Precisa de uma foto aqui}
+\def\dnfTextES{Estar terminado}
+\def\needgraphTextES{Falta una imagen aquí}
+\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 at PJLdraft@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}%
+}
+
+\endinput
+%%
+%% End of file `PJLdraft.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLdraft.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLlang.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLlang.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLlang.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,358 @@
+%%
+%% 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/12/16 Multi-language configuration]
+\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
+\SetupKeyvalOptions{%
+    family = @PJLlang,
+    prefix = @PJLlang@
+}
+\DeclareBoolOption[false]{polyglossia}
+
+\newif\if at PJLlang@enable at all\@PJLlang at enable@alltrue
+\newif\if at PJLlang@enable at EN\@PJLlang at enable@ENfalse
+\newif\if at PJLlang@enable at FR\@PJLlang at enable@FRfalse
+\newif\if at PJLlang@enable at DE\@PJLlang at enable@DEfalse
+\newif\if at PJLlang@enable at IT\@PJLlang at enable@ITfalse
+\newif\if at PJLlang@enable at PT\@PJLlang at enable@PTfalse
+\newif\if at PJLlang@enable at BR\@PJLlang at enable@BRfalse
+\newif\if at PJLlang@enable at ES\@PJLlang at enable@ESfalse
+\newif\if at PJLlang@enable at CN\@PJLlang at enable@CNfalse
+\newif\if at PJLlang@enable at TC\@PJLlang at enable@TCfalse
+\newif\if at PJLlang@enable at JP\@PJLlang at enable@JPfalse
+\newif\if at PJLlang@enable at RU\@PJLlang at enable@RUfalse
+\def\PJLlang at babeloptions{}
+\DeclareVoidOption{EN}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}\gpreto{\PJLlang at babeloptions}{,english}}
+\DeclareVoidOption{english}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}\gpreto{\PJLlang at babeloptions}{,english}}
+\DeclareVoidOption{English}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}\gpreto{\PJLlang at babeloptions}{,english}}
+\DeclareVoidOption{FR}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}\gpreto{\PJLlang at babeloptions}{,french}}
+\DeclareVoidOption{french}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}\gpreto{\PJLlang at babeloptions}{,french}}
+\DeclareVoidOption{French}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}\gpreto{\PJLlang at babeloptions}{,french}}
+\DeclareVoidOption{DE}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}\gpreto{\PJLlang at babeloptions}{,ngerman}}
+\DeclareVoidOption{german}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}\gpreto{\PJLlang at babeloptions}{,ngerman}}
+\DeclareVoidOption{ngerman}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}\gpreto{\PJLlang at babeloptions}{,ngerman}}
+\DeclareVoidOption{German}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}\gpreto{\PJLlang at babeloptions}{,ngerman}}
+\DeclareVoidOption{IT}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}\gpreto{\PJLlang at babeloptions}{,italian}}
+\DeclareVoidOption{italian}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}\gpreto{\PJLlang at babeloptions}{,italian}}
+\DeclareVoidOption{Italian}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}\gpreto{\PJLlang at babeloptions}{,italian}}
+\DeclareVoidOption{PT}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}\gpreto{\PJLlang at babeloptions}{,portuguese}}
+\DeclareVoidOption{portuguese}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}\gpreto{\PJLlang at babeloptions}{,portuguese}}
+\DeclareVoidOption{Portuguese}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}\gpreto{\PJLlang at babeloptions}{,portuguese}}
+\DeclareVoidOption{BR}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}\gpreto{\PJLlang at babeloptions}{,brazilian}}
+\DeclareVoidOption{brazilian}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}\gpreto{\PJLlang at babeloptions}{,brazilian}}
+\DeclareVoidOption{Brazilian}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}\gpreto{\PJLlang at babeloptions}{,brazilian}}
+\DeclareVoidOption{ES}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}\gpreto{\PJLlang at babeloptions}{,spanish}}
+\DeclareVoidOption{spanish}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}\gpreto{\PJLlang at babeloptions}{,spanish}}
+\DeclareVoidOption{Spanish}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}\gpreto{\PJLlang at babeloptions}{,spanish}}
+\DeclareVoidOption{CN}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
+\DeclareVoidOption{chinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
+\DeclareVoidOption{Chinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
+\DeclareVoidOption{schinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
+\DeclareVoidOption{SChinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
+\DeclareVoidOption{simplifiedchinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
+\DeclareVoidOption{SimplifiedChinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@CNtrue\providecommand{\PJLlang at mainlang}{CN}}
+\DeclareVoidOption{TC}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
+\DeclareVoidOption{tchinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
+\DeclareVoidOption{TChinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
+\DeclareVoidOption{traditionalchinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
+\DeclareVoidOption{TraditionalChinese}{\@PJLlang at enable@allfalse\@PJLlang at enable@TCtrue\providecommand{\PJLlang at mainlang}{TC}}
+\DeclareVoidOption{JP}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}\gpreto{\PJLlang at babeloptions}{,japanese}}
+\DeclareVoidOption{japanese}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}\gpreto{\PJLlang at babeloptions}{,japanese}}
+\DeclareVoidOption{Japanese}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}\gpreto{\PJLlang at babeloptions}{,japanese}}
+\DeclareVoidOption{RU}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}\gpreto{\PJLlang at babeloptions}{,russian}}
+\DeclareVoidOption{russian}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}\gpreto{\PJLlang at babeloptions}{,russian}}
+\DeclareVoidOption{Russian}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}\gpreto{\PJLlang at babeloptions}{,russian}}
+\ProcessKeyvalOptions*\relax
+
+\ExplSyntaxOn
+\cs_new_protected:cpn { @clearglobaloption } #1
+ {
+  \clist_remove_all:cn { @classoptionslist } { #1 }
+ }
+\ExplSyntaxOff
+
+\@clearglobaloption{chinese}
+\@clearglobaloption{Chinese}
+
+\providecommand{\PJLlang at mainlang}{EN}
+
+\if at PJLlang@enable at all
+    \@PJLlang at enable@ENtrue
+    \@PJLlang at enable@FRtrue
+    \@PJLlang at enable@DEtrue
+    \@PJLlang at enable@ITtrue
+    \@PJLlang at enable@PTtrue
+    \@PJLlang at enable@BRtrue
+    \@PJLlang at enable@EStrue
+    \@PJLlang at enable@CNtrue
+    \@PJLlang at enable@TCtrue
+    \@PJLlang at enable@JPtrue
+    \@PJLlang at 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\schineseABBR{CN}
+\newcommand\tchineseABBR{TC}
+\newcommand\japaneseABBR{JP}
+\newcommand\russianABBR{RU}
+
+\ExplSyntaxOn
+\NewExpandableDocumentCommand{\StrToABBR}{m}
+ {
+  \str_case_e:nn { \str_foldcase:n { #1 } }
+   {
+        {cn}                    {CN}
+        {chinese}               {CN}
+        {schinese}              {CN}
+        {simplifiedchinese}     {CN}
+        {tc}                    {TC}
+        {tchinese}              {TC}
+        {traditionalchinese}    {TC}
+        {jp}                    {JP}
+        {japanese}              {JP}
+        {en}                    {EN}
+        {english}               {EN}
+        {fr}                    {FR}
+        {french}                {FR}
+        {de}                    {DE}
+        {ngerman}               {DE}
+        {it}                    {IT}
+        {italian}               {IT}
+        {pt}                    {PT}
+        {portuguese}            {PT}
+        {br}                    {BR}
+        {brazilian}             {BR}
+        {es}                    {ES}
+        {spanish}               {ES}
+        {german}                {DE}
+        {ru}                    {RU}
+        {russian}               {RU}
+   }
+ }
+
+\NewExpandableDocumentCommand{\StrToTYPE}{m}
+ {
+  \str_case_e:nn { \str_foldcase:n { #1 } }
+   {
+        {cn}                    {CJK}
+        {chinese}               {CJK}
+        {schinese}              {CJK}
+        {simplifiedchinese}     {CJK}
+        {tc}                    {CJK}
+        {tchinese}              {CJK}
+        {traditionalchinese}    {CJK}
+        {jp}                    {CJK}
+        {japanese}              {CJK}
+        {en}                    {Latin}
+        {english}               {Latin}
+        {fr}                    {Latin}
+        {french}                {Latin}
+        {de}                    {Latin}
+        {ngerman}               {Latin}
+        {it}                    {Latin}
+        {italian}               {Latin}
+        {pt}                    {Latin}
+        {portuguese}            {Latin}
+        {br}                    {Latin}
+        {brazilian}             {Latin}
+        {es}                    {Latin}
+        {spanish}               {Latin}
+        {german}                {Latin}
+        {ru}                    {Latin}
+        {russian}               {Latin}
+   }
+ }
+\ExplSyntaxOff
+
+\RequirePackage{iftex}
+\ifPDFTeX
+\RequirePackage[T1]{fontenc}
+\RequirePackage{inputenc}
+\fi
+
+\if at 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 at PJLlang@enable at 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 at babeloptions}{babel}
+    \fi
+    \PassOptionsToPackage{italian,brazilian,spanish,ngerman,french,english}{cleveref}
+    \RequirePackage{babel}
+    \if at PJLlang@enable at FR
+        \frenchsetup{PartNameFull=false}
+    \fi
+    \if at PJLlang@enable at PT
+        \let\PJL at babelord\ord
+        \let\ord\relax
+        \AtBeginDocument{
+            \@ifundefined{ord}{}
+            {
+                \let\PJL at userord\ord
+                \let\ord\relax
+                \newcommand{\ord}{%
+                    \ifmmode\expandafter\PJL at userord\else\expandafter\PJL at babelord\fi%
+                }
+            }
+        }
+    \fi
+
+    \babelprovide{schinese}
+    \babelprovide{tchinese}
+\fi
+
+\let\today at PJLoriginal\today
+\newcommand{\PJLlang at langconfig@common}{%
+    \ifdefined\DTMtoday%
+        \let\today\DTMtoday%
+    \else%
+        \let\today\today at PJLoriginal%
+    \fi%
+}
+
+\newcommand{\PJLlang at langconfig@CN}{%
+    \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}{schinese}%
+}
+\newcommand{\PJLlang at langconfig@TC}{%
+    \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 at langconfig@JP}{%
+    \selectlanguage{japanese}%
+}
+\newcommand{\PJLlang at langconfig@EN}{%
+    \selectlanguage{english}%
+}
+\newcommand{\PJLlang at langconfig@FR}{%
+    \selectlanguage{french}%
+    \def\frenchpartname{Partie}%
+}
+\newcommand{\PJLlang at langconfig@DE}{%
+    \selectlanguage{ngerman}%
+}
+\newcommand{\PJLlang at langconfig@IT}{%
+    \selectlanguage{italian}%
+}
+\newcommand{\PJLlang at langconfig@PT}{%
+    \selectlanguage{portuguese}%
+}
+\newcommand{\PJLlang at langconfig@BR}{%
+    \selectlanguage{brazilian}%
+}
+\newcommand{\PJLlang at langconfig@ES}{%
+    \selectlanguage{spanish}%
+}
+\newcommand{\PJLlang at langconfig@RU}{%
+    \selectlanguage{russian}%
+}
+
+\NewDocumentCommand\AddLanguageSetting{d()m}{%
+\IfNoValueTF{#1}%
+    {\gappto{\PJLlang at langconfig@common}{#2}}%
+    {\expandafter\gappto\expandafter{\csname PJLlang at langconfig@\StrToABBR{#1}\endcsname}{#2}}%
+}
+
+\RequirePackage{setspace}
+\def\PJL at config@linespacing{\setstretch{1.00}}
+\def\PJL at config@CJKlinespacing{\onehalfspacing}
+\newcommand{\PJLsetlinespacing}[1]{\renewcommand{\PJL at config@linespacing}{#1}}
+\newcommand{\PJLsetCJKlinespacing}[1]{\renewcommand{\PJL at config@CJKlinespacing}{#1}}
+\@ifclassloaded{beamer}{
+    \def\PJL at config@parindent{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{0em}}}
+    \def\PJL at config@CJKparindent{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{0em}}}
+}{
+    \def\PJL at config@parindent{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{1.5em}}}
+    \def\PJL at config@CJKparindent{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{2em}}}
+}
+\newcommand{\PJLsetparindent}[1]{\renewcommand{\PJL at config@parindent}{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{#1}}}}
+\newcommand{\PJLsetCJKparindent}[1]{\renewcommand{\PJL at config@CJKparindent}{\ltx at ifpackageloaded{parskip}{}{\setlength{\parindent}{#1}}}}
+\def\PJL at config@CJK{\PJL at config@CJKlinespacing\PJL at config@CJKparindent}
+\def\PJL at config@Latin{\PJL at config@linespacing\PJL at config@parindent}
+\NewDocumentCommand{\UseLanguageCORE}{m}{%
+    \PJLlang at langconfig@common%
+    \csname PJL at config@\StrToTYPE{#1}\endcsname%
+    \csname PJLlang at langconfig@\StrToABBR{#1}\endcsname%
+}
+\NewDocumentCommand{\UseLanguage}{m}{%
+    \ifx\@onlypreamble\@notprerr%
+        \UseLanguageCORE{#1}%
+    \else%
+        \AfterEndPreamble{\UseLanguageCORE{#1}}%
+    \fi%
+}
+\NewDocumentCommand{\UseOtherLanguage}{mm}{%
+\begingroup\begingroup%
+    \PJLlang at langconfig@common%
+    \csname PJLlang at langconfig@\StrToABBR{#1}\endcsname%
+    #2%
+\endgroup\endgroup%
+}
+
+\expandafter\UseLanguage\expandafter{\PJLlang at mainlang}
+
+\endinput
+%%
+%% End of file `PJLlang.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLlang.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLlogo.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLlogo.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLlogo.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,72 @@
+%%
+%% This is file `PJLlogo.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{PJLlogo}
+    [2021/12/16 The ProjLib logo]
+\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
+\SetupKeyvalOptions{
+    family = @PJLlogo,
+    prefix = @PJLlogo@,
+}
+\DeclareBoolOption[false]{draft}
+\DeclareBoolOption[false]{fast}
+\ProcessKeyvalOptions*\relax
+\if at PJLlogo@draft
+    \@PJLlogo at fasttrue
+\fi
+\if at PJLlogo@fast\def\ProjLib{{\normalfont ProjLib}}\endinput\fi
+
+\RequirePackage{xcolor}
+\RequirePackage{graphicx}
+\ifdefined\fontspec
+  \newfontface{\PJLlogo at font}{LinBiolinum_R.otf}
+\else
+  \RequirePackage[T1]{fontenc}
+  \newcommand{\PJLlogo at font}{\fontfamily{LinuxBiolinumT-TLF}\selectfont}
+\fi
+
+\newcommand{\PJLSigmaJ}{%
+  \vbox{\offinterlineskip
+    \ialign{%
+      \hfil##\hfil\cr
+      \hidewidth\hskip0.15ex\scalebox{0.4}{\rotatebox{-10}{\usefont{U}{zeur}{b}{n}\symbol{"06}}}\hidewidth\cr
+      \noalign{\kern0.15ex}
+      \j\cr
+    }%
+  }%
+}
+
+\newcommand{\ProjLib at generic}[1]{%
+  \begingroup
+  \normalfont\PJLlogo at font
+  \textcolor{blue!60!cyan}{P}%
+  \textcolor{blue!45!cyan}{r}%
+  \textcolor{blue!30!cyan}{o}%
+  \textcolor{green!70!black}{#1}%
+  \textcolor{red!20!yellow}{L}%
+  \textcolor{red!40!yellow}{i}%
+  \textcolor{red!60!yellow}{b}%
+  \endgroup
+}
+\DeclareRobustCommand*{\ProjLib}{\ProjLib at generic{\PJLSigmaJ}}
+\DeclareRobustCommand*{\ProjLibText}{\ProjLib at generic{j}}
+
+\endinput
+%%
+%% End of file `PJLlogo.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLlogo.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLmath.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLmath.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLmath.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,315 @@
+%%
+%% This is file `PJLmath.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{PJLmath}
+    [2021/12/16 Useful math macros and shortcuts]
+\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
+\RequirePackage{mathtools}
+\RequirePackage{mathrsfs}
+\@ifpackageloaded{unicode-math}{}{\RequirePackage{amssymb}}
+
+%%================================
+%% Shorthands
+%%================================
+\providecommand{\N}{\ensuremath{\mathbb{N}}}
+\providecommand{\Z}{\ensuremath{\mathbb{Z}}}
+\providecommand{\Q}{\ensuremath{\mathbb{Q}}}
+\providecommand{\R}{\ensuremath{\mathbb{R}}}
+\providecommand{\C}{\ensuremath{\mathbb{C}}}
+\providecommand{\F}{\ensuremath{\mathbb{F}}}
+\providecommand{\A}{\ensuremath{\mathbb{A}}}
+
+\providecommand{\bb}[1]{\ensuremath{\mathbb{#1}}}
+\providecommand{\bbA}{\ensuremath{\mathbb{A}}}
+\providecommand{\bbB}{\ensuremath{\mathbb{B}}}
+\providecommand{\bbC}{\ensuremath{\mathbb{C}}}
+\providecommand{\bbD}{\ensuremath{\mathbb{D}}}
+\providecommand{\bbE}{\ensuremath{\mathbb{E}}}
+\providecommand{\bbF}{\ensuremath{\mathbb{F}}}
+\providecommand{\bbG}{\ensuremath{\mathbb{G}}}
+\providecommand{\bbH}{\ensuremath{\mathbb{H}}}
+\providecommand{\bbI}{\ensuremath{\mathbb{I}}}
+\providecommand{\bbJ}{\ensuremath{\mathbb{J}}}
+\providecommand{\bbK}{\ensuremath{\mathbb{K}}}
+\providecommand{\bbL}{\ensuremath{\mathbb{L}}}
+\providecommand{\bbM}{\ensuremath{\mathbb{M}}}
+\providecommand{\bbN}{\ensuremath{\mathbb{N}}}
+\providecommand{\bbO}{\ensuremath{\mathbb{O}}}
+\providecommand{\bbP}{\ensuremath{\mathbb{P}}}
+\providecommand{\bbQ}{\ensuremath{\mathbb{Q}}}
+\providecommand{\bbR}{\ensuremath{\mathbb{R}}}
+\providecommand{\bbS}{\ensuremath{\mathbb{S}}}
+\providecommand{\bbT}{\ensuremath{\mathbb{T}}}
+\providecommand{\bbU}{\ensuremath{\mathbb{U}}}
+\providecommand{\bbV}{\ensuremath{\mathbb{V}}}
+\providecommand{\bbW}{\ensuremath{\mathbb{W}}}
+\providecommand{\bbX}{\ensuremath{\mathbb{X}}}
+\providecommand{\bbY}{\ensuremath{\mathbb{Y}}}
+\providecommand{\bbZ}{\ensuremath{\mathbb{Z}}}
+
+\providecommand{\mc}[1]{\ensuremath{\mathcal{#1}}}
+\providecommand{\mcA}{\ensuremath{\mathcal{A}}}
+\providecommand{\mcB}{\ensuremath{\mathcal{B}}}
+\providecommand{\mcC}{\ensuremath{\mathcal{C}}}
+\providecommand{\mcD}{\ensuremath{\mathcal{D}}}
+\providecommand{\mcE}{\ensuremath{\mathcal{E}}}
+\providecommand{\mcF}{\ensuremath{\mathcal{F}}}
+\providecommand{\mcG}{\ensuremath{\mathcal{G}}}
+\providecommand{\mcH}{\ensuremath{\mathcal{H}}}
+\providecommand{\mcI}{\ensuremath{\mathcal{I}}}
+\providecommand{\mcJ}{\ensuremath{\mathcal{J}}}
+\providecommand{\mcK}{\ensuremath{\mathcal{K}}}
+\providecommand{\mcL}{\ensuremath{\mathcal{L}}}
+\providecommand{\mcM}{\ensuremath{\mathcal{M}}}
+\providecommand{\mcN}{\ensuremath{\mathcal{N}}}
+\providecommand{\mcO}{\ensuremath{\mathcal{O}}}
+\providecommand{\mcP}{\ensuremath{\mathcal{P}}}
+\providecommand{\mcQ}{\ensuremath{\mathcal{Q}}}
+\providecommand{\mcR}{\ensuremath{\mathcal{R}}}
+\providecommand{\mcS}{\ensuremath{\mathcal{S}}}
+\providecommand{\mcT}{\ensuremath{\mathcal{T}}}
+\providecommand{\mcU}{\ensuremath{\mathcal{U}}}
+\providecommand{\mcV}{\ensuremath{\mathcal{V}}}
+\providecommand{\mcW}{\ensuremath{\mathcal{W}}}
+\providecommand{\mcX}{\ensuremath{\mathcal{X}}}
+\providecommand{\mcY}{\ensuremath{\mathcal{Y}}}
+\providecommand{\mcZ}{\ensuremath{\mathcal{Z}}}
+
+\providecommand{\cal}[1]{\ensuremath{\mathcal{#1}}}
+\providecommand{\calA}{\ensuremath{\mathcal{A}}}
+\providecommand{\calB}{\ensuremath{\mathcal{B}}}
+\providecommand{\calC}{\ensuremath{\mathcal{C}}}
+\providecommand{\calD}{\ensuremath{\mathcal{D}}}
+\providecommand{\calE}{\ensuremath{\mathcal{E}}}
+\providecommand{\calF}{\ensuremath{\mathcal{F}}}
+\providecommand{\calG}{\ensuremath{\mathcal{G}}}
+\providecommand{\calH}{\ensuremath{\mathcal{H}}}
+\providecommand{\calI}{\ensuremath{\mathcal{I}}}
+\providecommand{\calJ}{\ensuremath{\mathcal{J}}}
+\providecommand{\calK}{\ensuremath{\mathcal{K}}}
+\providecommand{\calL}{\ensuremath{\mathcal{L}}}
+\providecommand{\calM}{\ensuremath{\mathcal{M}}}
+\providecommand{\calN}{\ensuremath{\mathcal{N}}}
+\providecommand{\calO}{\ensuremath{\mathcal{O}}}
+\providecommand{\calP}{\ensuremath{\mathcal{P}}}
+\providecommand{\calQ}{\ensuremath{\mathcal{Q}}}
+\providecommand{\calR}{\ensuremath{\mathcal{R}}}
+\providecommand{\calS}{\ensuremath{\mathcal{S}}}
+\providecommand{\calT}{\ensuremath{\mathcal{T}}}
+\providecommand{\calU}{\ensuremath{\mathcal{U}}}
+\providecommand{\calV}{\ensuremath{\mathcal{V}}}
+\providecommand{\calW}{\ensuremath{\mathcal{W}}}
+\providecommand{\calX}{\ensuremath{\mathcal{X}}}
+\providecommand{\calY}{\ensuremath{\mathcal{Y}}}
+\providecommand{\calZ}{\ensuremath{\mathcal{Z}}}
+
+\providecommand{\mf}[1]{\ensuremath{\mathfrak{#1}}}
+\providecommand{\mfa}{\ensuremath{\mathfrak{a}}}
+\providecommand{\mfb}{\ensuremath{\mathfrak{b}}}
+\providecommand{\mfc}{\ensuremath{\mathfrak{c}}}
+\providecommand{\mfd}{\ensuremath{\mathfrak{d}}}
+\providecommand{\mfe}{\ensuremath{\mathfrak{e}}}
+\providecommand{\mff}{\ensuremath{\mathfrak{f}}}
+\providecommand{\mfg}{\ensuremath{\mathfrak{g}}}
+\providecommand{\mfh}{\ensuremath{\mathfrak{h}}}
+\providecommand{\mfi}{\ensuremath{\mathfrak{i}}}
+\providecommand{\mfj}{\ensuremath{\mathfrak{j}}}
+\providecommand{\mfk}{\ensuremath{\mathfrak{k}}}
+\providecommand{\mfl}{\ensuremath{\mathfrak{l}}}
+\providecommand{\mfm}{\ensuremath{\mathfrak{m}}}
+\providecommand{\mfn}{\ensuremath{\mathfrak{n}}}
+\providecommand{\mfo}{\ensuremath{\mathfrak{o}}}
+\providecommand{\mfp}{\ensuremath{\mathfrak{p}}}
+\providecommand{\mfq}{\ensuremath{\mathfrak{q}}}
+\providecommand{\mfr}{\ensuremath{\mathfrak{r}}}
+\providecommand{\mfs}{\ensuremath{\mathfrak{s}}}
+\providecommand{\mft}{\ensuremath{\mathfrak{t}}}
+\providecommand{\mfu}{\ensuremath{\mathfrak{u}}}
+\providecommand{\mfv}{\ensuremath{\mathfrak{v}}}
+\providecommand{\mfw}{\ensuremath{\mathfrak{w}}}
+\providecommand{\mfx}{\ensuremath{\mathfrak{x}}}
+\providecommand{\mfy}{\ensuremath{\mathfrak{y}}}
+\providecommand{\mfz}{\ensuremath{\mathfrak{z}}}
+\providecommand{\mfA}{\ensuremath{\mathfrak{A}}}
+\providecommand{\mfB}{\ensuremath{\mathfrak{B}}}
+\providecommand{\mfC}{\ensuremath{\mathfrak{C}}}
+\providecommand{\mfD}{\ensuremath{\mathfrak{D}}}
+\providecommand{\mfE}{\ensuremath{\mathfrak{E}}}
+\providecommand{\mfF}{\ensuremath{\mathfrak{F}}}
+\providecommand{\mfG}{\ensuremath{\mathfrak{G}}}
+\providecommand{\mfH}{\ensuremath{\mathfrak{H}}}
+\providecommand{\mfI}{\ensuremath{\mathfrak{I}}}
+\providecommand{\mfJ}{\ensuremath{\mathfrak{J}}}
+\providecommand{\mfK}{\ensuremath{\mathfrak{K}}}
+\providecommand{\mfL}{\ensuremath{\mathfrak{L}}}
+\providecommand{\mfM}{\ensuremath{\mathfrak{M}}}
+\providecommand{\mfN}{\ensuremath{\mathfrak{N}}}
+\providecommand{\mfO}{\ensuremath{\mathfrak{O}}}
+\providecommand{\mfP}{\ensuremath{\mathfrak{P}}}
+\providecommand{\mfQ}{\ensuremath{\mathfrak{Q}}}
+\providecommand{\mfR}{\ensuremath{\mathfrak{R}}}
+\providecommand{\mfS}{\ensuremath{\mathfrak{S}}}
+\providecommand{\mfT}{\ensuremath{\mathfrak{T}}}
+\providecommand{\mfU}{\ensuremath{\mathfrak{U}}}
+\providecommand{\mfV}{\ensuremath{\mathfrak{V}}}
+\providecommand{\mfW}{\ensuremath{\mathfrak{W}}}
+\providecommand{\mfX}{\ensuremath{\mathfrak{X}}}
+\providecommand{\mfY}{\ensuremath{\mathfrak{Y}}}
+\providecommand{\mfZ}{\ensuremath{\mathfrak{Z}}}
+
+\providecommand{\frak}[1]{\ensuremath{\mathfrak{#1}}}
+\providecommand{\fraka}{\ensuremath{\mathfrak{a}}}
+\providecommand{\frakb}{\ensuremath{\mathfrak{b}}}
+\providecommand{\frakc}{\ensuremath{\mathfrak{c}}}
+\providecommand{\frakd}{\ensuremath{\mathfrak{d}}}
+\providecommand{\frake}{\ensuremath{\mathfrak{e}}}
+\providecommand{\frakf}{\ensuremath{\mathfrak{f}}}
+\providecommand{\frakg}{\ensuremath{\mathfrak{g}}}
+\providecommand{\frakh}{\ensuremath{\mathfrak{h}}}
+\providecommand{\fraki}{\ensuremath{\mathfrak{i}}}
+\providecommand{\frakj}{\ensuremath{\mathfrak{j}}}
+\providecommand{\frakk}{\ensuremath{\mathfrak{k}}}
+\providecommand{\frakl}{\ensuremath{\mathfrak{l}}}
+\providecommand{\frakm}{\ensuremath{\mathfrak{m}}}
+\providecommand{\frakn}{\ensuremath{\mathfrak{n}}}
+\providecommand{\frako}{\ensuremath{\mathfrak{o}}}
+\providecommand{\frakp}{\ensuremath{\mathfrak{p}}}
+\providecommand{\frakq}{\ensuremath{\mathfrak{q}}}
+\providecommand{\frakr}{\ensuremath{\mathfrak{r}}}
+\providecommand{\fraks}{\ensuremath{\mathfrak{s}}}
+\providecommand{\frakt}{\ensuremath{\mathfrak{t}}}
+\providecommand{\fraku}{\ensuremath{\mathfrak{u}}}
+\providecommand{\frakv}{\ensuremath{\mathfrak{v}}}
+\providecommand{\frakw}{\ensuremath{\mathfrak{w}}}
+\providecommand{\frakx}{\ensuremath{\mathfrak{x}}}
+\providecommand{\fraky}{\ensuremath{\mathfrak{y}}}
+\providecommand{\frakz}{\ensuremath{\mathfrak{z}}}
+\providecommand{\frakA}{\ensuremath{\mathfrak{A}}}
+\providecommand{\frakB}{\ensuremath{\mathfrak{B}}}
+\providecommand{\frakC}{\ensuremath{\mathfrak{C}}}
+\providecommand{\frakD}{\ensuremath{\mathfrak{D}}}
+\providecommand{\frakE}{\ensuremath{\mathfrak{E}}}
+\providecommand{\frakF}{\ensuremath{\mathfrak{F}}}
+\providecommand{\frakG}{\ensuremath{\mathfrak{G}}}
+\providecommand{\frakH}{\ensuremath{\mathfrak{H}}}
+\providecommand{\frakI}{\ensuremath{\mathfrak{I}}}
+\providecommand{\frakJ}{\ensuremath{\mathfrak{J}}}
+\providecommand{\frakK}{\ensuremath{\mathfrak{K}}}
+\providecommand{\frakL}{\ensuremath{\mathfrak{L}}}
+\providecommand{\frakM}{\ensuremath{\mathfrak{M}}}
+\providecommand{\frakN}{\ensuremath{\mathfrak{N}}}
+\providecommand{\frakO}{\ensuremath{\mathfrak{O}}}
+\providecommand{\frakP}{\ensuremath{\mathfrak{P}}}
+\providecommand{\frakQ}{\ensuremath{\mathfrak{Q}}}
+\providecommand{\frakR}{\ensuremath{\mathfrak{R}}}
+\providecommand{\frakS}{\ensuremath{\mathfrak{S}}}
+\providecommand{\frakT}{\ensuremath{\mathfrak{T}}}
+\providecommand{\frakU}{\ensuremath{\mathfrak{U}}}
+\providecommand{\frakV}{\ensuremath{\mathfrak{V}}}
+\providecommand{\frakW}{\ensuremath{\mathfrak{W}}}
+\providecommand{\frakX}{\ensuremath{\mathfrak{X}}}
+\providecommand{\frakY}{\ensuremath{\mathfrak{Y}}}
+\providecommand{\frakZ}{\ensuremath{\mathfrak{Z}}}
+
+\providecommand{\ms}[1]{\ensuremath{\mathscr{#1}}}
+\providecommand{\msA}{\ensuremath{\mathscr{A}}}
+\providecommand{\msB}{\ensuremath{\mathscr{B}}}
+\providecommand{\msC}{\ensuremath{\mathscr{C}}}
+\providecommand{\msD}{\ensuremath{\mathscr{D}}}
+\providecommand{\msE}{\ensuremath{\mathscr{E}}}
+\providecommand{\msF}{\ensuremath{\mathscr{F}}}
+\providecommand{\msG}{\ensuremath{\mathscr{G}}}
+\providecommand{\msH}{\ensuremath{\mathscr{H}}}
+\providecommand{\msI}{\ensuremath{\mathscr{I}}}
+\providecommand{\msJ}{\ensuremath{\mathscr{J}}}
+\providecommand{\msK}{\ensuremath{\mathscr{K}}}
+\providecommand{\msL}{\ensuremath{\mathscr{L}}}
+\providecommand{\msM}{\ensuremath{\mathscr{M}}}
+\providecommand{\msN}{\ensuremath{\mathscr{N}}}
+\providecommand{\msO}{\ensuremath{\mathscr{O}}}
+\providecommand{\msP}{\ensuremath{\mathscr{P}}}
+\providecommand{\msQ}{\ensuremath{\mathscr{Q}}}
+\providecommand{\msR}{\ensuremath{\mathscr{R}}}
+\providecommand{\msS}{\ensuremath{\mathscr{S}}}
+\providecommand{\msT}{\ensuremath{\mathscr{T}}}
+\providecommand{\msU}{\ensuremath{\mathscr{U}}}
+\providecommand{\msV}{\ensuremath{\mathscr{V}}}
+\providecommand{\msW}{\ensuremath{\mathscr{W}}}
+\providecommand{\msX}{\ensuremath{\mathscr{X}}}
+\providecommand{\msY}{\ensuremath{\mathscr{Y}}}
+\providecommand{\msZ}{\ensuremath{\mathscr{Z}}}
+
+\providecommand{\scr}[1]{\ensuremath{\mathscr{#1}}}
+\providecommand{\scrA}{\ensuremath{\mathscr{A}}}
+\providecommand{\scrB}{\ensuremath{\mathscr{B}}}
+\providecommand{\scrC}{\ensuremath{\mathscr{C}}}
+\providecommand{\scrD}{\ensuremath{\mathscr{D}}}
+\providecommand{\scrE}{\ensuremath{\mathscr{E}}}
+\providecommand{\scrF}{\ensuremath{\mathscr{F}}}
+\providecommand{\scrG}{\ensuremath{\mathscr{G}}}
+\providecommand{\scrH}{\ensuremath{\mathscr{H}}}
+\providecommand{\scrI}{\ensuremath{\mathscr{I}}}
+\providecommand{\scrJ}{\ensuremath{\mathscr{J}}}
+\providecommand{\scrK}{\ensuremath{\mathscr{K}}}
+\providecommand{\scrL}{\ensuremath{\mathscr{L}}}
+\providecommand{\scrM}{\ensuremath{\mathscr{M}}}
+\providecommand{\scrN}{\ensuremath{\mathscr{N}}}
+\providecommand{\scrO}{\ensuremath{\mathscr{O}}}
+\providecommand{\scrP}{\ensuremath{\mathscr{P}}}
+\providecommand{\scrQ}{\ensuremath{\mathscr{Q}}}
+\providecommand{\scrR}{\ensuremath{\mathscr{R}}}
+\providecommand{\scrS}{\ensuremath{\mathscr{S}}}
+\providecommand{\scrT}{\ensuremath{\mathscr{T}}}
+\providecommand{\scrU}{\ensuremath{\mathscr{U}}}
+\providecommand{\scrV}{\ensuremath{\mathscr{V}}}
+\providecommand{\scrW}{\ensuremath{\mathscr{W}}}
+\providecommand{\scrX}{\ensuremath{\mathscr{X}}}
+\providecommand{\scrY}{\ensuremath{\mathscr{Y}}}
+\providecommand{\scrZ}{\ensuremath{\mathscr{Z}}}
+
+%%================================
+%% General symbols
+%%================================
+\providecommand{\abs}[1]{\lvert#1\rvert}
+\providecommand{\norm}[1]{\lVert#1\rVert}
+
+\providecommand*{\injection}{\ensuremath{\hookrightarrow}}
+\providecommand*{\surjection}{\ensuremath{\twoheadrightarrow}}
+\providecommand*{\bijection}{\ensuremath{\xrightarrow{\sim}}}
+
+%%================================
+%% Symbols for number theory
+%%================================
+\ifdefined\@@pmod\else
+\let\@@pmod\pmod
+\DeclareRobustCommand{\pmod}{\@ifstar\@pmods\@@pmod}
+\def\@pmods#1{\mkern4mu({\operator at font mod}\mkern 6mu#1)}
+\fi
+
+\providecommand{\genlegendre}[4]{%
+  \genfrac{(}{)}{}{#1}{#3}{#4}%
+  \if\relax\detokenize{#2}\relax\else_{\!#2}\fi%
+}
+\providecommand{\legendre}[3][]{\genlegendre{}{#1}{#2}{#3}}
+\providecommand{\dlegendre}[3][]{\genlegendre{0}{#1}{#2}{#3}}
+\providecommand{\tlegendre}[3][]{\genlegendre{1}{#1}{#2}{#3}}
+
+\endinput
+%%
+%% End of file `PJLmath.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLmath.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLpaper.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLpaper.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLpaper.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,96 @@
+%%
+%% This is file `PJLpaper.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{PJLpaper}
+    [2021/12/16 Paper style configuration]
+\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
+\RequirePackage{ifthen}
+
+\SetupKeyvalOptions{%
+    family = @PJLpaper,
+    prefix = @PJLpaper@,
+    setkeys=\kvsetkeys
+}
+
+\DeclareStringOption[normal]{paperstyle}
+\DeclareVoidOption{yellowpaper}{\kvsetkeys{@PJLpaper}{paperstyle=yellow}}
+\DeclareVoidOption{darkpaper}{\kvsetkeys{@PJLpaper}{paperstyle=dark}}
+\DeclareVoidOption{nordpaper}{\kvsetkeys{@PJLpaper}{paperstyle=nord}}
+\DeclareBoolOption[false]{preview}
+\ProcessKeyvalOptions*\relax
+
+%%================================
+%% Preview mode
+%%================================
+\ifdefined\PJLnoPreview\else%
+    \if at PJLpaper@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{\@PJLpaper at paperstyle}{yellow}}
+{
+    \definecolor{paper}{RGB}{247,246,233}
+}
+{\relax}
+
+\ifthenelse{\equal{\@PJLpaper at paperstyle}{dark}}
+{
+    \definecolor{paper}{RGB}{30,30,30}
+    \definecolor{maintext}{RGB}{207,207,207}
+}
+{\relax}
+
+\ifthenelse{\equal{\@PJLpaper at paperstyle}{nord}}
+{
+    \definecolor{paper}{RGB}{46,52,64}
+    \definecolor{maintext}{RGB}{214,220,230}
+}
+{\relax}
+
+\newcommand{\PJLglobalcolor}[1]{%
+    \color{#1}\global\let\default at color\current at color
+}
+
+\pagecolor{paper}
+\PJLglobalcolor{maintext}
+\AtEndPreamble{
+\ifdefined\tcbset%
+    \tcbset{colupper=maintext,collower=maintext}
+\fi
+}
+
+\endinput
+%%
+%% End of file `PJLpaper.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLpaper.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLthm.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLthm.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLthm.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,2019 @@
+%%
+%% This is file `PJLthm.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{PJLthm}
+    [2021/12/16 Theorem setup and configuration]
+\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
+\SetupKeyvalOptions{%
+    family = @PJLthm,
+    prefix = @PJLthm@
+}
+\DeclareBoolOption[false]{nothms}
+\DeclareBoolOption[false]{delaythms}
+\DeclareBoolOption[false]{nothmnum}
+\DeclareStringOption{thmnum}[PJL at thmnum@default]
+\DeclareBoolOption[false]{draft}
+\DeclareBoolOption[false]{fast}
+\DeclareBoolOption[true]{regionalref}
+\DeclareBoolOption[false]{originalref}
+\DeclareBoolOption[true]{complexname}
+\DeclareBoolOption[false]{simplename}
+\ProcessKeyvalOptions*\relax
+\if at PJLthm@originalref
+    \@PJLthm at regionalreffalse
+\fi
+\if at PJLthm@simplename
+    \@PJLthm at complexnamefalse
+\fi
+\if at PJLthm@draft
+    \@PJLthm at fasttrue
+\fi
+\if at PJLthm@fast
+    \@PJLthm at regionalreftrue
+\fi
+
+\@ifclassloaded{beamer}{%
+    \RequirePackage{silence}
+    \WarningFilter{cleveref}{hyperref package loaded with implicit=false option}
+    \@PJLthm at nothmnumtrue%
+    \if at PJLthm@nothms\else%
+        \let\theorem\relax
+        \let\lemma\relax
+        \let\corollary\relax
+        \let\definition\relax
+        \let\fact\relax
+        \let\example\relax
+        \let\problem\relax
+    \fi
+}{}
+
+\RequirePackage{PJLlang}
+\RequirePackage{amsmath,amsthm}
+\RequirePackage{aliascnt}
+\PassOptionsToPackage{nameinlink}{cleveref}
+\RequirePackage{crefthe}
+
+\RequirePackage{xparse}
+\RequirePackage{xstring}
+\NewDocumentCommand{\NameTheorem}{omm}{%
+    \protected at edef\PJLthm at temp{#2}%
+    \expandafter\IfEndWith\expandafter{\PJLthm at temp}{*}{%
+        \expandafter\StrGobbleRight\expandafter{\PJLthm at temp}{1}[\PJLthm at temp]%
+    }{}%
+    \IfSubStr{\detokenize{#3}}{=}{% key-value mode
+        \IfValueTF{#1}{%
+            \CreateTheoremSetKeys{\PJLthm at temp}{#1={#3}}%
+        }{%
+            \CreateTheoremSetKeys{\PJLthm at temp}{#3}%
+        }%
+    }{% simple mode
+        \IfValueTF{#1}{%
+            \expandafter\def\csname\PJLthm at temp name\StrToABBR{#1}\endcsname{#3}%
+        }{%
+            \expandafter\def\csname\PJLthm at temp nameEN\endcsname{#3}%
+            \expandafter\def\csname\PJLthm at temp nameFR\endcsname{#3}%
+            \expandafter\def\csname\PJLthm at temp nameDE\endcsname{#3}%
+            \expandafter\def\csname\PJLthm at temp nameIT\endcsname{#3}%
+            \expandafter\def\csname\PJLthm at temp namePT\endcsname{#3}%
+            \expandafter\def\csname\PJLthm at temp nameBR\endcsname{#3}%
+            \expandafter\def\csname\PJLthm at temp nameES\endcsname{#3}%
+            \expandafter\def\csname\PJLthm at temp nameCN\endcsname{#3}%
+            \expandafter\def\csname\PJLthm at temp nameTC\endcsname{#3}%
+            \expandafter\def\csname\PJLthm at temp nameJP\endcsname{#3}%
+            \expandafter\def\csname\PJLthm at temp nameRU\endcsname{#3}%
+        }%
+    }%
+}
+
+\newcommand\PassFirstToSecond[2]{#2{#1}}%
+\NewDocumentCommand{\CreateTheorem}{sm}{%
+    \begingroup
+    \protected at edef\PJLthm at temp{#2}%
+    \expandafter\IfEndWith\expandafter{\PJLthm at temp}{*}{%
+        \expandafter\StrGobbleRight\expandafter{\PJLthm at temp}{1}[\PJLthm at temp]%
+        \PassFirstToSecond{*}%
+    }{%
+        \PassFirstToSecond{}%
+    }%
+    {\expandafter\PassFirstToSecond%
+        \expandafter{\PJLthm at temp}{\endgroup\InnerCreateTheorem{#1}}}%
+}%
+\if at PJLthm@regionalref
+\NewDocumentCommand{\InnerCreateTheorem}{mmmod<>d()g}{%
+    \IfBooleanTF{#1}{%
+        \IfValueTF{#4}
+            {\@firstoftwo}
+            {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}%
+    }{%
+        \IfValueTF{#4}
+            {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{
+            \@secondoftwo}
+    }%
+    {%
+        \GenericError{}%
+        {\string\CreateTheorem\space syntax error\on at 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*{#2#3}{\csname#2name\csname\languagename ABBR\endcsname\endcsname}
+            }{%
+                \IfValueTF{#5}{%
+                    \newtheorem{PJL#2#3}{\csname#2name\csname\languagename ABBR\endcsname\endcsname}[#5]%
+                    \newaliascnt{#2#3}{PJL#2#3}%
+                }{%
+                    \IfValueTF{#4}{%
+                            \newtheorem{PJL#2#3}[#4]{\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
+                        }{%
+                            \newtheorem{PJL#2#3}{\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
+                            \newaliascnt{#2#3}{PJL#2#3}%
+                        }%
+                }%
+                \ifcsname cref at PJL#2#3 at name\endcsname\else%
+                    \crefname{PJL#2#3}%
+                        {\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
+                        {\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
+                \fi%
+                \ifcsname Cref at PJL#2#3 at name\endcsname\else%
+                    \Crefname{PJL#2#3}%
+                        {\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
+                        {\csname#2name\csname\languagename ABBR\endcsname\endcsname}%
+                \fi%
+                \NewDocumentEnvironment{#2#3}{}
+                    {\begin{PJL#2#3}}
+                    {\end{PJL#2#3}}
+            }%
+        }%
+    }%
+    \IfValueTF{#7}{%
+        \NameTheorem{#2}{#7}%
+    }{}%
+}%
+\else
+\NewDocumentCommand{\InnerCreateTheorem}{mmmod<>d()g}{%
+    \IfBooleanTF{#1}{%
+        \IfValueTF{#4}
+            {\@firstoftwo}
+            {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}%
+    }{%
+        \IfValueTF{#4}
+            {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{
+            \@secondoftwo}
+    }%
+    {%
+        \GenericError{}%
+        {\string\CreateTheorem\space syntax error\on at line}{%
+        You cannot call the starred variant with optional argument,\MessageBreak
+        nor call the unstarred variant with several optional arguments.}%
+        {%
+            Allowed usage:\MessageBreak\MessageBreak
+            \CreateTheorem*{(name of environment)}\MessageBreak
+            \CreateTheorem{(name of environment)}\MessageBreak
+            \CreateTheorem{(name of environment)}[(numbered like)]\MessageBreak
+            \CreateTheorem{(name of environment)}<(numbered within)>\MessageBreak
+            \CreateTheorem{(name of environment)}((existed environment))\MessageBreak
+        }%
+    }{%
+        \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}{%
+                \if at PJLlang@enable at EN\expandafter\PassFirstToSecond\expandafter{\csname#2nameEN\endcsname}{\newtheorem*{#2EN#3}}\fi%
+                \if at PJLlang@enable at FR\expandafter\PassFirstToSecond\expandafter{\csname#2nameFR\endcsname}{\newtheorem*{#2FR#3}}\fi%
+                \if at PJLlang@enable at DE\expandafter\PassFirstToSecond\expandafter{\csname#2nameDE\endcsname}{\newtheorem*{#2DE#3}}\fi%
+                \if at PJLlang@enable at IT\expandafter\PassFirstToSecond\expandafter{\csname#2nameIT\endcsname}{\newtheorem*{#2IT#3}}\fi%
+                \if at PJLlang@enable at PT\expandafter\PassFirstToSecond\expandafter{\csname#2namePT\endcsname}{\newtheorem*{#2PT#3}}\fi%
+                \if at PJLlang@enable at BR\expandafter\PassFirstToSecond\expandafter{\csname#2nameBR\endcsname}{\newtheorem*{#2BR#3}}\fi%
+                \if at PJLlang@enable at ES\expandafter\PassFirstToSecond\expandafter{\csname#2nameES\endcsname}{\newtheorem*{#2ES#3}}\fi%
+                \if at PJLlang@enable at CN\expandafter\PassFirstToSecond\expandafter{\csname#2nameCN\endcsname}{\newtheorem*{#2CN#3}}\fi%
+                \if at PJLlang@enable at TC\expandafter\PassFirstToSecond\expandafter{\csname#2nameTC\endcsname}{\newtheorem*{#2TC#3}}\fi%
+                \if at PJLlang@enable at JP\expandafter\PassFirstToSecond\expandafter{\csname#2nameJP\endcsname}{\newtheorem*{#2JP#3}}\fi%
+                \if at PJLlang@enable at RU\expandafter\PassFirstToSecond\expandafter{\csname#2nameRU\endcsname}{\newtheorem*{#2RU#3}}\fi%
+            }{%
+                \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}}%
+                }%
+                %---------------------------------------------------------------
+                \if at PJLlang@enable at EN\CreateTheoremNumberedLikeAliasCounter{#2}{EN}{#3}\fi%
+                \if at PJLlang@enable at FR\CreateTheoremNumberedLikeAliasCounter{#2}{FR}{#3}\fi%
+                \if at PJLlang@enable at DE\CreateTheoremNumberedLikeAliasCounter{#2}{DE}{#3}\fi%
+                \if at PJLlang@enable at IT\CreateTheoremNumberedLikeAliasCounter{#2}{IT}{#3}\fi%
+                \if at PJLlang@enable at PT\CreateTheoremNumberedLikeAliasCounter{#2}{PT}{#3}\fi%
+                \if at PJLlang@enable at BR\CreateTheoremNumberedLikeAliasCounter{#2}{BR}{#3}\fi%
+                \if at PJLlang@enable at ES\CreateTheoremNumberedLikeAliasCounter{#2}{ES}{#3}\fi%
+                \if at PJLlang@enable at CN\CreateTheoremNumberedLikeAliasCounter{#2}{CN}{#3}\fi%
+                \if at PJLlang@enable at TC\CreateTheoremNumberedLikeAliasCounter{#2}{TC}{#3}\fi%
+                \if at PJLlang@enable at JP\CreateTheoremNumberedLikeAliasCounter{#2}{JP}{#3}\fi%
+                \if at PJLlang@enable at RU\CreateTheoremNumberedLikeAliasCounter{#2}{RU}{#3}\fi%
+                %---------------------------------------------------------------
+            }%
+            \NewDocumentEnvironment{#2#3}{}
+                {\csname#2\csname\languagename ABBR\endcsname#3\endcsname}%
+                {\csname end#2\csname\languagename ABBR\endcsname#3\endcsname}%
+        }%
+    }%
+    \IfValueTF{#7}{%
+        \NameTheorem{#2}{#7}%
+    }{}%
+}%
+\NewDocumentCommand{\CreateTheoremNumberedLikeAliasCounter}{mmm}{%
+    \newaliascnt{#1#2#3}{#1#3}%
+    \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}{\newtheorem{#1#2#3}[{#1#2#3}]}%
+    \aliascntresetthe{#1#2#3}%
+    \ifcsname cref@#1#2#3 at name\endcsname\else%
+        \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}%
+        {%
+            \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}%
+            {\crefname{#1#2#3}}%
+        }%
+    \fi%
+    \ifcsname Cref@#1#2#3 at name\endcsname\else%
+        \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}%
+        {%
+            \expandafter\PassFirstToSecond\expandafter{\csname#1name#2\endcsname}%
+            {\Crefname{#1#2#3}}%
+        }%
+    \fi%
+}%
+\fi
+
+\ExplSyntaxOn
+
+\cs_new:Nn  \PJLthm_exchange_i_iii_ii:nnn  { #1 {#3} {#2} }
+\cs_new:Nn  \__PJLthm_languageprefix:  {}
+\cs_new:Nn  \__PJLthm_countername:  {}
+
+\msg_new:nnnn {PJLthm}
+              {Undefined Language Dependent Specification Class}
+              {\token_to_str:N \CreateTheorem :\ Value\ `\tl_to_str:n{#2}'\ for\ invalid\ key\ `#1'.}
+              {Providing\ Language-dependent\ specifications\ for\ element\ `#1'\ is\ currently\ not\ implemented.}
+
+
+\NewDocumentCommand \CreateTheoremSetKeys { mm } {
+  \cs_set:Nn \__PJLthm_countername: {#1}
+  \keyval_parse:nnn { \PJLthm_exchange_i_iii_ii:nnn { \PJLthm_setlanguagespecificparameters:nn } {} }
+                    { \PJLthm_setlanguagespecificparameters:nn }
+                    { #2 }
+}
+
+\cs_new_protected:Nn \PJLthm_setlanguagespecificparameters:nn {
+  \cs_set:Nx \__PJLthm_languageprefix: {\StrToABBR{#1}}
+  \exp_args:No \tl_if_empty:nTF {\__PJLthm_languageprefix:}
+    { \msg_error:nn { PJLthm }
+                    { No~language~"\exp_not:n{#1}"~defined }
+    }%
+    {%
+        \keys_set:nn { PJLthm } { #2 }
+    }%
+}%
+
+\keys_define:nn { PJLthm } {
+  crefname.code:n  = \cs_if_exist:NTF \crefname  {
+                        \ifbool{@PJLthm at regionalref}{
+                            \exp_args:Nx \PJLthm at setcrefinnername{PJL\__PJLthm_countername: \__PJLthm_languageprefix: }#1
+                            \exp_args:Nx \PJLthm at setcrefname{PJL\__PJLthm_countername: }
+                        }{
+                            \exp_args:Nx \crefname {\__PJLthm_countername: \__PJLthm_languageprefix: }#1
+                        }
+                     }{},
+  crefname.value_required:n = true,
+  Crefname.code:n  = \cs_if_exist:NTF \Crefname  {
+                        \ifbool{@PJLthm at regionalref}{
+                            \exp_args:Nx \PJLthm at setCrefinnername{PJL\__PJLthm_countername: \__PJLthm_languageprefix: }#1
+                            \exp_args:Nx \PJLthm at setCrefname{PJL\__PJLthm_countername: }
+                        }{
+                            \exp_args:Nx \Crefname {\__PJLthm_countername: \__PJLthm_languageprefix: }#1
+                        }
+                     }{},
+  Crefname.value_required:n = true,
+  name.code:n  = \exp_args:Nx \cs_set:cpn {\__PJLthm_countername: name \__PJLthm_languageprefix:} {#1},
+  name.value_required:n = true,
+  autorefname.code:n  = \exp_args:Nx \cs_set:cpn  {\__PJLthm_countername: \__PJLthm_languageprefix: autorefname} {#1},
+  autorefname.value_required:n = true,
+  theoremheading.code:n= \exp_args:Nx \cs_set:cpn  {\__PJLthm_countername: \__PJLthm_languageprefix: heading} {#1},
+  theoremheading.value_required:n = true,
+  the.code:n= \exp_args:Nx \cs_set:cpn  {the \__PJLthm_countername: \__PJLthm_languageprefix: } {#1},
+  the.value_required:n = true,
+  %
+  % Define keys for more Language Dependent Specification Classes.
+  %
+  unknown.code:n = \msg_error:nnxx {PJLthm}
+                                   {Undefined Language Dependent Specification Class}
+                                   {\exp_args:No \exp_not:n \l_keys_key_str}
+                                   {\exp_not:n{#1}},
+}
+
+\ExplSyntaxOff
+
+\newcommand{\PJLthm at setcrefinnername}[3]{%
+    \expandafter\def\csname PJLthm at cref@#1 at name\endcsname{#2}%
+    \expandafter\def\csname PJLthm at cref@#1 at name@plural\endcsname{#3}%
+}
+\newcommand{\PJLthm at setCrefinnername}[3]{%
+    \expandafter\def\csname PJLthm at Cref@#1 at name\endcsname{#2}%
+    \expandafter\def\csname PJLthm at Cref@#1 at name@plural\endcsname{#3}%
+}
+
+\newcommand{\PJLthm at setcrefname}[1]{%
+    \crefname{#1}%
+        {\csname PJLthm at cref@#1\csname\languagename ABBR\endcsname @name\endcsname}%
+        {\csname PJLthm at cref@#1\csname\languagename ABBR\endcsname @name at plural\endcsname}%
+}
+\newcommand{\PJLthm at setCrefname}[1]{%
+    \Crefname{#1}%
+        {\csname PJLthm at Cref@#1\csname\languagename ABBR\endcsname @name\endcsname}%
+        {\csname PJLthm at Cref@#1\csname\languagename ABBR\endcsname @name at plural\endcsname}%
+}
+
+\ifbool{@PJLthm at complexname}{
+    \NameTheorem{theorem}{
+        EN = {
+            name = {Theorem},
+            crefname = {theorem}{theorems},
+            Crefname = {Theorem}{Theorems},
+        },
+        FR = {
+            name = {Théorème},
+            crefname = {\crefthemark{le} théorème}{\crefthemark{les} théorèmes},
+            Crefname = {Le théorème}{Les théorèmes},
+        },
+        DE = {
+            name = {Satz},
+            crefname = {Satz}{Sätze},
+            Crefname = {Satz}{Sätze},
+        },
+        IT = {
+            name = {Teorema},
+            crefname = {\crefthemark{il} teorema}{\crefthemark{i} teoremi},
+            Crefname = {Il teorema}{I teoremi},
+        },
+        PT = {
+            name = {Teorema},
+            crefname = {\crefthemark{o} teorema}{\crefthemark{os} teoremas},
+            Crefname = {O teorema}{Os teoremas},
+        },
+        BR = {
+            name = {Teorema},
+            crefname = {\crefthemark{o} teorema}{\crefthemark{os} teoremas},
+            Crefname = {O teorema}{Os teoremas},
+        },
+        ES = {
+            name = {Teorema},
+            crefname = {\crefthemark{el} teorema}{los teoremas},
+            Crefname = {El teorema}{Los teoremas},
+        },
+        CN = {
+            name = {定理},
+            crefname = {定理}{定理},
+            Crefname = {定理}{定理},
+        },
+        TC = {
+            name = {定理},
+            crefname = {定理}{定理},
+            Crefname = {定理}{定理},
+        },
+        JP = {
+            name = {定理},
+            crefname = {定理}{定理},
+            Crefname = {定理}{定理},
+        },
+        RU = {
+            name = {Теорема},
+            crefname = {теорема}{теоремы},
+            Crefname = {Теорема}{Теоремы},
+        },
+    }
+    \NameTheorem{lemma}{
+        EN = {
+            name = {Lemma},
+            crefname = {lemma}{Lemmas},
+            Crefname = {Lemma}{Lemmas},
+        },
+        FR = {
+            name = {Lemme},
+            crefname = {\crefthemark{le} lemme}{\crefthemark{les} lemmes},
+            Crefname = {Le lemme}{Les lemmes},
+        },
+        DE = {
+            name = {Lemma},
+            crefname = {Lemma}{Lemmata},
+            Crefname = {Lemma}{Lemmata},
+        },
+        IT = {
+            name = {Lemma},
+            crefname = {\crefthemark{il} lemma}{\crefthemark{i} lemmi},
+            Crefname = {Il lemma}{I lemmi},
+        },
+        PT = {
+            name = {Lema},
+            crefname = {\crefthemark{o} lema}{\crefthemark{os} lemas},
+            Crefname = {O lema}{Os lemas},
+        },
+        BR = {
+            name = {Lema},
+            crefname = {\crefthemark{o} lema}{\crefthemark{os} lemas},
+            Crefname = {O lema}{Os lemas},
+        },
+        ES = {
+            name = {Lema},
+            crefname = {\crefthemark{el} lema}{las lemas},
+            Crefname = {El lema}{Las lemas},
+        },
+        CN = {
+            name = {引理},
+            crefname = {引理}{引理},
+            Crefname = {引理}{引理},
+        },
+        TC = {
+            name = {引理},
+            crefname = {引理}{引理},
+            Crefname = {引理}{引理},
+        },
+        JP = {
+            name = {補題},
+            crefname = {補題}{補題},
+            Crefname = {補題}{補題},
+        },
+        RU = {
+            name = {Лемма},
+            crefname = {лемма}{леммы},
+            Crefname = {Лемма}{Леммы},
+        },
+    }
+    \NameTheorem{proposition}{
+        EN = {
+            name = {Proposition},
+            crefname = {proposition}{propositions},
+            Crefname = {Proposition}{Propositions},
+        },
+        FR = {
+            name = {Proposition},
+            crefname = {\crefthemark{la} proposition}{\crefthemark{les} propositions},
+            Crefname = {La proposition}{Les propositions},
+        },
+        DE = {
+            name = {Proposition},
+            crefname = {Proposition}{Propositionen},
+            Crefname = {Proposition}{Propositionen},
+        },
+        IT = {
+            name = {Proposizione},
+            crefname = {\crefthemark{la} proposizione}{\crefthemark{le} proposte},
+            Crefname = {La proposizione}{Le proposte},
+        },
+        PT = {
+            name = {Proposição},
+            crefname = {\crefthemark{a} proposição}{\crefthemark{as} proposições},
+            Crefname = {A proposição}{As proposições},
+        },
+        BR = {
+            name = {Proposição},
+            crefname = {\crefthemark{a} proposição}{\crefthemark{as} proposições},
+            Crefname = {A proposição}{As proposições},
+        },
+        ES = {
+            name = {Proposición},
+            crefname = {la proposición}{las proposiciones},
+            Crefname = {La proposición}{Las proposiciones},
+        },
+        CN = {
+            name = {命题},
+            crefname = {命题}{命题},
+            Crefname = {命题}{命题},
+        },
+        TC = {
+            name = {命題},
+            crefname = {命題}{命題},
+            Crefname = {命題}{命題},
+        },
+        JP = {
+            name = {命題},
+            crefname = {命題}{命題},
+            Crefname = {命題}{命題},
+        },
+        RU = {
+            name = {Предложение},
+            crefname = {предложение}{предложения},
+            Crefname = {Предложение}{Предложения},
+        },
+    }
+    \NameTheorem{corollary}{
+        EN = {
+            name = {Corollary},
+            crefname = {corollary}{corollaries},
+            Crefname = {Corollary}{Corollaries},
+        },
+        FR = {
+            name = {Corollaire},
+            crefname = {\crefthemark{le} corollaire}{\crefthemark{les} corollaires},
+            Crefname = {Le corollaire}{Les corollaires},
+        },
+        DE = {
+            name = {Korollar},
+            crefname = {Korollar}{Korollare},
+            Crefname = {Korollar}{Korollare},
+        },
+        IT = {
+            name = {Corollario},
+            crefname = {\crefthemark{il} corollario}{\crefthemark{i} corollari},
+            Crefname = {Il corollario}{I corollari},
+        },
+        PT = {
+            name = {Corolário},
+            crefname = {\crefthemark{o} corolário}{\crefthemark{os} corolários},
+            Crefname = {O corolário}{Os corolários},
+        },
+        BR = {
+            name = {Corolário},
+            crefname = {\crefthemark{o} corolário}{\crefthemark{os} corolários},
+            Crefname = {O corolário}{Os corolários},
+        },
+        ES = {
+            name = {Corolario},
+            crefname = {\crefthemark{el} corolario}{los corolarios},
+            Crefname = {El corolario}{Los corolarios},
+        },
+        CN = {
+            name = {推论},
+            crefname = {推论}{推论},
+            Crefname = {推论}{推论},
+        },
+        TC = {
+            name = {推論},
+            crefname = {推論}{推論},
+            Crefname = {推論}{推論},
+        },
+        JP = {
+            name = {系},
+            crefname = {系}{系},
+            Crefname = {系}{系},
+        },
+        RU = {
+            name = {Следствие},
+            crefname = {следствие}{следствия},
+            Crefname = {Следствие}{Следствия},
+        },
+    }
+    \NameTheorem{property}{
+        EN = {
+            name = {Property},
+            crefname = {property}{properties},
+            Crefname = {Property}{Properties},
+        },
+        FR = {
+            name = {Propriété},
+            crefname = {\crefthemark{la} propriété}{\crefthemark{les} propriétés},
+            Crefname = {La propriété}{Les propriétés},
+        },
+        DE = {
+            name = {Eigenschaft},
+            crefname = {Eigenschaft}{Eigenschaften},
+            Crefname = {Eigenschaft}{Eigenschaften},
+        },
+        IT = {
+            name = {Proprietà},
+            crefname = {\crefthemark{la} proprietà}{\crefthemark{le} proprietà},
+            Crefname = {La proprietà}{Le proprietà},
+        },
+        PT = {
+            name = {Propriedade},
+            crefname = {\crefthemark{a} propriedade}{\crefthemark{as} propriedades},
+            Crefname = {A propriedade}{As propriedades},
+        },
+        BR = {
+            name = {Propriedade},
+            crefname = {\crefthemark{a} propriedade}{\crefthemark{as} propriedades},
+            Crefname = {A propriedade}{As propriedades},
+        },
+        ES = {
+            name = {Propiedad},
+            crefname = {la propiedad}{las propiedades},
+            Crefname = {La propiedad}{Las propiedades},
+        },
+        CN = {
+            name = {性质},
+            crefname = {性质}{性质},
+            Crefname = {性质}{性质},
+        },
+        TC = {
+            name = {性質},
+            crefname = {性質}{性質},
+            Crefname = {性質}{性質},
+        },
+        JP = {
+            name = {性質},
+            crefname = {性質}{性質},
+            Crefname = {性質}{性質},
+        },
+        RU = {
+            name = {Имущество},
+            crefname = {имущество}{имущества},
+            Crefname = {Имущество}{Имущества},
+        },
+    }
+    \NameTheorem{fact}{
+        EN = {
+            name = {Fact},
+            crefname = {fact}{facts},
+            Crefname = {Fact}{Facts},
+        },
+        FR = {
+            name = {Fait},
+            crefname = {\crefthemark{le} fait}{\crefthemark{les} faits},
+            Crefname = {Le fait}{Les faits},
+        },
+        DE = {
+            name = {Fakt},
+            crefname = {Fakt}{Fakten},
+            Crefname = {Fakt}{Fakten},
+        },
+        IT = {
+            name = {Fatto},
+            crefname = {\crefthemark{il} fatto}{\crefthemark{i} fatti},
+            Crefname = {Il fatto}{I fatti},
+        },
+        PT = {
+            name = {Facto},
+            crefname = {\crefthemark{o} facto}{\crefthemark{os} factos},
+            Crefname = {O facto}{Os factos},
+        },
+        BR = {
+            name = {Fato},
+            crefname = {\crefthemark{o} fato}{\crefthemark{os} fatos},
+            Crefname = {O fato}{Os fatos},
+        },
+        ES = {
+            name = {Hecho},
+            crefname = {\crefthemark{el} hecho}{los hechos},
+            Crefname = {El hecho}{Los hechos},
+        },
+        CN = {
+            name = {事实},
+            crefname = {事实}{事实},
+            Crefname = {事实}{事实},
+        },
+        TC = {
+            name = {事實},
+            crefname = {事實}{事實},
+            Crefname = {事實}{事實},
+        },
+        JP = {
+            name = {事実},
+            crefname = {事実}{事実},
+            Crefname = {事実}{事実},
+        },
+        RU = {
+            name = {Факт},
+            crefname = {факт}{факты},
+            Crefname = {Факт}{Факты},
+        },
+    }
+    \NameTheorem{conjecture}{
+        EN = {
+            name = {Conjecture},
+            crefname = {conjecture}{conjectures},
+            Crefname = {Conjecture}{Conjectures},
+        },
+        FR = {
+            name = {Conjecture},
+            crefname = {\crefthemark{la} conjecture}{\crefthemark{les} conjectures},
+            Crefname = {La conjecture}{Les conjectures},
+        },
+        DE = {
+            name = {Vermutung},
+            crefname = {Vermutung}{Vermutungen},
+            Crefname = {Vermutung}{Vermutungen},
+        },
+        IT = {
+            name = {Congettura},
+            crefname = {\crefthemark{la} congettura}{\crefthemark{le} congetture},
+            Crefname = {La congettura}{Le congetture},
+        },
+        PT = {
+            name = {Conjetura},
+            crefname = {\crefthemark{a} conjetura}{\crefthemark{as} conjeturas},
+            Crefname = {A conjetura}{As conjeturas},
+        },
+        BR = {
+            name = {Conjectura},
+            crefname = {\crefthemark{a} conjectura}{\crefthemark{as} conjecturas},
+            Crefname = {A conjectura}{As conjecturas},
+        },
+        ES = {
+            name = {Conjetura},
+            crefname = {la conjetura}{las conjeturas},
+            Crefname = {La conjetura}{Las conjeturas},
+        },
+        CN = {
+            name = {猜想},
+            crefname = {猜想}{猜想},
+            Crefname = {猜想}{猜想},
+        },
+        TC = {
+            name = {猜想},
+            crefname = {猜想}{猜想},
+            Crefname = {猜想}{猜想},
+        },
+        JP = {
+            name = {予想},
+            crefname = {予想}{予想},
+            Crefname = {予想}{予想},
+        },
+        RU = {
+            name = {Гипотеза},
+            crefname = {гипотеза}{гипотезы},
+            Crefname = {Гипотеза}{Гипотезы},
+        },
+    }
+    \NameTheorem{definition}{
+        EN = {
+            name = {Definition},
+            crefname = {definition}{definitions},
+            Crefname = {Definition}{Definitions},
+        },
+        FR = {
+            name = {Définition},
+            crefname = {\crefthemark{la} définition}{\crefthemark{les} définitions},
+            Crefname = {La définition}{Les définitions},
+        },
+        DE = {
+            name = {Definition},
+            crefname = {Definition}{Definitionen},
+            Crefname = {Definition}{Definitionen},
+        },
+        IT = {
+            name = {Definizione},
+            crefname = {\crefthemark{la} definizione}{\crefthemark{le} definizioni},
+            Crefname = {La definizione}{Le definizioni},
+        },
+        PT = {
+            name = {Definição},
+            crefname = {\crefthemark{a} definição}{\crefthemark{as} definições},
+            Crefname = {A definição}{As definições},
+        },
+        BR = {
+            name = {Definição},
+            crefname = {\crefthemark{a} definição}{\crefthemark{as} definições},
+            Crefname = {A definição}{As definições},
+        },
+        ES = {
+            name = {Definición},
+            crefname = {la definición}{las definiciones},
+            Crefname = {La definición}{Las definiciones},
+        },
+        CN = {
+            name = {定义},
+            crefname = {定义}{定义},
+            Crefname = {定义}{定义},
+        },
+        TC = {
+            name = {定義},
+            crefname = {定義}{定義},
+            Crefname = {定義}{定義},
+        },
+        JP = {
+            name = {定義},
+            crefname = {定義}{定義},
+            Crefname = {定義}{定義},
+        },
+        RU = {
+            name = {Определение},
+            crefname = {определение}{определения},
+            Crefname = {Определение}{Определения},
+        },
+    }
+    \NameTheorem{axiom}{
+        EN = {
+            name = {Axiom},
+            crefname = {axiom}{axioms},
+            Crefname = {Axiom}{Axioms},
+        },
+        FR = {
+            name = {Axiome},
+            crefname = {\crefthemark{l'}axiome}{\crefthemark{les} axiomes},
+            Crefname = {L'axiome}{Les axiomes},
+        },
+        DE = {
+            name = {Axiom},
+            crefname = {Axiom}{Axiome},
+            Crefname = {Axiom}{Axiome},
+        },
+        IT = {
+            name = {Assioma},
+            crefname = {\crefthemark{l'}assioma}{\crefthemark{gli} assiomi},
+            Crefname = {L'assioma}{Gli assiomi},
+        },
+        PT = {
+            name = {Axioma},
+            crefname = {\crefthemark{o} axioma}{\crefthemark{os} axiomas},
+            Crefname = {O axioma}{Os axiomas},
+        },
+        BR = {
+            name = {Axioma},
+            crefname = {\crefthemark{o} axioma}{\crefthemark{os} axiomas},
+            Crefname = {O axioma}{Os axiomas},
+        },
+        ES = {
+            name = {Axioma},
+            crefname = {\crefthemark{el} axioma}{los axiomas},
+            Crefname = {El axioma}{Los axiomas},
+        },
+        CN = {
+            name = {公理},
+            crefname = {公理}{公理},
+            Crefname = {公理}{公理},
+        },
+        TC = {
+            name = {公理},
+            crefname = {公理}{公理},
+            Crefname = {公理}{公理},
+        },
+        JP = {
+            name = {公理},
+            crefname = {公理}{公理},
+            Crefname = {公理}{公理},
+        },
+        RU = {
+            name = {Аксиома},
+            crefname = {аксиома}{аксиомы},
+            Crefname = {Аксиома}{Аксиомы},
+        },
+    }
+    \NameTheorem{assumption}{
+        EN = {
+            name = {Assumption},
+            crefname = {assumption}{assumptions},
+            Crefname = {Assumption}{Assumptions},
+        },
+        FR = {
+            name = {Supposition},
+            crefname = {\crefthemark{la} supposition}{\crefthemark{les} suppositions},
+            Crefname = {La supposition}{Les suppositions},
+        },
+        DE = {
+            name = {Annahme},
+            crefname = {Annahme}{Annahmen},
+            Crefname = {Annahme}{Annahmen},
+        },
+        IT = {
+            name = {Supposizione},
+            crefname = {\crefthemark{la} supposizione}{\crefthemark{le} supposizioni},
+            Crefname = {La supposizione}{Le supposizioni},
+        },
+        PT = {
+            name = {Suposição},
+            crefname = {\crefthemark{a} suposição}{\crefthemark{as} suposições},
+            Crefname = {A suposição}{As suposições},
+        },
+        BR = {
+            name = {Suposição},
+            crefname = {\crefthemark{a} suposição}{\crefthemark{as} suposições},
+            Crefname = {A suposição}{As suposições},
+        },
+        ES = {
+            name = {Suposición},
+            crefname = {la suposición}{las suposiciones},
+            Crefname = {La suposición}{Las suposiciones},
+        },
+        CN = {
+            name = {假定},
+            crefname = {假定}{假定},
+            Crefname = {假定}{假定},
+        },
+        TC = {
+            name = {假定},
+            crefname = {假定}{假定},
+            Crefname = {假定}{假定},
+        },
+        JP = {
+            name = {仮定},
+            crefname = {仮定}{仮定},
+            Crefname = {仮定}{仮定},
+        },
+        RU = {
+            name = {Предположение},
+            crefname = {предположение}{предположения},
+            Crefname = {Предположение}{Предположения},
+        },
+    }
+    \NameTheorem{convention}{
+        EN = {
+            name = {Convention},
+            crefname = {convention}{conventions},
+            Crefname = {Convention}{Conventions},
+        },
+        FR = {
+            name = {Convention},
+            crefname = {\crefthemark{la} convention}{\crefthemark{les} conventions},
+            Crefname = {La convention}{Les conventions},
+        },
+        DE = {
+            name = {Konvention},
+            crefname = {Konvention}{Konventionen},
+            Crefname = {Konvention}{Konventionen},
+        },
+        IT = {
+            name = {Convenzione},
+            crefname = {\crefthemark{la} convenzione}{\crefthemark{le} convenzioni},
+            Crefname = {La convenzione}{Le convenzioni},
+        },
+        PT = {
+            name = {Convenção},
+            crefname = {\crefthemark{a} convenção}{\crefthemark{as} convenções},
+            Crefname = {A convenção}{As convenções},
+        },
+        BR = {
+            name = {Convenção},
+            crefname = {\crefthemark{a} convenção}{\crefthemark{as} convenções},
+            Crefname = {A convenção}{As convenções},
+        },
+        ES = {
+            name = {Convención},
+            crefname = {la convención}{las convenciones},
+            Crefname = {La convención}{Las convenciones},
+        },
+        CN = {
+            name = {约定},
+            crefname = {约定}{约定},
+            Crefname = {约定}{约定},
+        },
+        TC = {
+            name = {約定},
+            crefname = {約定}{約定},
+            Crefname = {約定}{約定},
+        },
+        JP = {
+            name = {慣例},
+            crefname = {慣例}{慣例},
+            Crefname = {慣例}{慣例},
+        },
+        RU = {
+            name = {Конвенция},
+            crefname = {конвенция}{конвенции},
+            Crefname = {Конвенция}{Конвенции},
+        },
+    }
+    \NameTheorem{hypothesis}{
+        EN = {
+            name = {Hypothesis},
+            crefname = {hypothesis}{hypotheses},
+            Crefname = {Hypothesis}{Hypotheses},
+        },
+        FR = {
+            name = {Hypothèse},
+            crefname = {\crefthemark{l'}hypothèse}{\crefthemark{les} hypothèses},
+            Crefname = {L'hypothèse}{Les hypothèses},
+        },
+        DE = {
+            name = {Hypothese},
+            crefname = {Hypothese}{Hypothesen},
+            Crefname = {Hypothese}{Hypothesen},
+        },
+        IT = {
+            name = {Ipotesi},
+            crefname = {\crefthemark{l'}ipotesi}{\crefthemark{le} ipotesi},
+            Crefname = {L'ipotesi}{Le ipotesi},
+        },
+        PT = {
+            name = {Hipótese},
+            crefname = {\crefthemark{a} hipótese}{\crefthemark{as} hipóteses},
+            Crefname = {A hipótese}{As hipóteses},
+        },
+        BR = {
+            name = {Hipótese},
+            crefname = {\crefthemark{a} hipótese}{\crefthemark{as} hipóteses},
+            Crefname = {A hipótese}{As hipóteses},
+        },
+        ES = {
+            name = {Hipótesis},
+            crefname = {la hipótesis}{las hipótesis},
+            Crefname = {La hipótesis}{Las hipótesis},
+        },
+        CN = {
+            name = {假设},
+            crefname = {假设}{假设},
+            Crefname = {假设}{假设},
+        },
+        TC = {
+            name = {假設},
+            crefname = {假設}{假設},
+            Crefname = {假設}{假設},
+        },
+        JP = {
+            name = {仮設},
+            crefname = {仮設}{仮設},
+            Crefname = {仮設}{仮設},
+        },
+        RU = {
+            name = {Гипотеза},
+            crefname = {гипотеза}{гипотезы},
+            Crefname = {Гипотеза}{Гипотезы},
+        },
+    }
+    \NameTheorem{notation}{
+        EN = {
+            name = {Notation},
+            crefname = {notation}{notations},
+            Crefname = {Notation}{Notations},
+        },
+        FR = {
+            name = {Notation},
+            crefname = {\crefthemark{la} notation}{\crefthemark{les} notations},
+            Crefname = {La notation}{Les notations},
+        },
+        DE = {
+            name = {Notation},
+            crefname = {Notation}{Notationen},
+            Crefname = {Notation}{Notationen},
+        },
+        IT = {
+            name = {Notazione},
+            crefname = {\crefthemark{la} notazione}{\crefthemark{le} notazioni},
+            Crefname = {La notazione}{Le notazioni},
+        },
+        PT = {
+            name = {Notação},
+            crefname = {\crefthemark{a} notação}{\crefthemark{as} notações},
+            Crefname = {A notação}{As notações},
+        },
+        BR = {
+            name = {Notação},
+            crefname = {\crefthemark{a} notação}{\crefthemark{as} notações},
+            Crefname = {A notação}{As notações},
+        },
+        ES = {
+            name = {Notación},
+            crefname = {la notación}{las notaciones},
+            Crefname = {La notación}{Las notaciones},
+        },
+        CN = {
+            name = {记号},
+            crefname = {记号}{记号},
+            Crefname = {记号}{记号},
+        },
+        TC = {
+            name = {記號},
+            crefname = {記號}{記號},
+            Crefname = {記號}{記號},
+        },
+        JP = {
+            name = {記法},
+            crefname = {記法}{記法},
+            Crefname = {記法}{記法},
+        },
+        RU = {
+            name = {Нотация},
+            crefname = {нотация}{нотации},
+            Crefname = {Нотация}{Нотации},
+        },
+    }
+    \NameTheorem{example}{
+        EN = {
+            name = {Example},
+            crefname = {example}{examples},
+            Crefname = {Example}{Examples},
+        },
+        FR = {
+            name = {Exemple},
+            crefname = {\crefthemark{l'}example}{\crefthemark{les} examples},
+            Crefname = {L'example}{Les examples},
+        },
+        DE = {
+            name = {Beispiel},
+            crefname = {Beispiel}{Beispiele},
+            Crefname = {Beispiel}{Beispiele},
+        },
+        IT = {
+            name = {Esempio},
+            crefname = {\crefthemark{l'}esempio}{\crefthemark{gli} esempi},
+            Crefname = {L'esempio}{Gli esempi},
+        },
+        PT = {
+            name = {Exemplo},
+            crefname = {\crefthemark{o} exemplo}{\crefthemark{os} exemplos},
+            Crefname = {O exemplo}{Os exemplos},
+        },
+        BR = {
+            name = {Exemplo},
+            crefname = {\crefthemark{o} exemplo}{\crefthemark{os} exemplos},
+            Crefname = {O exemplo}{Os exemplos},
+        },
+        ES = {
+            name = {Ejemplo},
+            crefname = {\crefthemark{el} ejemplo}{los ejemplos},
+            Crefname = {El ejemplo}{Los ejemplos},
+        },
+        CN = {
+            name = {例},
+            crefname = {例}{例},
+            Crefname = {例}{例},
+        },
+        TC = {
+            name = {例},
+            crefname = {例}{例},
+            Crefname = {例}{例},
+        },
+        JP = {
+            name = {例},
+            crefname = {例}{例},
+            Crefname = {例}{例},
+        },
+        RU = {
+            name = {Пример},
+            crefname = {пример}{примеры},
+            Crefname = {Пример}{Примеры},
+        },
+    }
+    \NameTheorem{problem}{
+        EN = {
+            name = {Problem},
+            crefname = {problem}{problems},
+            Crefname = {Problem}{Problems},
+        },
+        FR = {
+            name = {Problème},
+            crefname = {\crefthemark{le} problème}{\crefthemark{les} problèmes},
+            Crefname = {Le problème}{Les problèmes},
+        },
+        DE = {
+            name = {Problem},
+            crefname = {Problem}{Probleme},
+            Crefname = {Problem}{Probleme},
+        },
+        IT = {
+            name = {Problema},
+            crefname = {\crefthemark{il} problema}{\crefthemark{i} problemi},
+            Crefname = {Il problema}{I problemi},
+        },
+        PT = {
+            name = {Problema},
+            crefname = {\crefthemark{o} problema}{\crefthemark{os} problemas},
+            Crefname = {O problema}{Os problemas},
+        },
+        BR = {
+            name = {Problema},
+            crefname = {\crefthemark{o} problema}{\crefthemark{os} problemas},
+            Crefname = {O problema}{Os problemas},
+        },
+        ES = {
+            name = {Problema},
+            crefname = {\crefthemark{el} problema}{los problemas},
+            Crefname = {El problema}{Los problemas},
+        },
+        CN = {
+            name = {问题},
+            crefname = {问题}{问题},
+            Crefname = {问题}{问题},
+        },
+        TC = {
+            name = {問題},
+            crefname = {問題}{問題},
+            Crefname = {問題}{問題},
+        },
+        JP = {
+            name = {問題},
+            crefname = {問題}{問題},
+            Crefname = {問題}{問題},
+        },
+        RU = {
+            name = {Проблема},
+            crefname = {проблема}{проблемы},
+            Crefname = {Проблема}{Проблемы},
+        },
+    }
+    \NameTheorem{question}{
+        EN = {
+            name = {Question},
+            crefname = {question}{questions},
+            Crefname = {Question}{Questions},
+        },
+        FR = {
+            name = {Question},
+            crefname = {\crefthemark{la} question}{\crefthemark{les} questions},
+            Crefname = {La question}{Les questions},
+        },
+        DE = {
+            name = {Frage},
+            crefname = {Frage}{Fragen},
+            Crefname = {Frage}{Fragen},
+        },
+        IT = {
+            name = {Domanda},
+            crefname = {\crefthemark{la} domanda}{\crefthemark{le} domande},
+            Crefname = {La domanda}{Le domande},
+        },
+        PT = {
+            name = {Pergunta},
+            crefname = {\crefthemark{a} pergunta}{\crefthemark{as} perguntas},
+            Crefname = {A pergunta}{As perguntas},
+        },
+        BR = {
+            name = {Pergunta},
+            crefname = {\crefthemark{a} pergunta}{\crefthemark{as} perguntas},
+            Crefname = {A pergunta}{As perguntas},
+        },
+        ES = {
+            name = {Pregunta},
+            crefname = {la pregunta}{las preguntas},
+            Crefname = {La pregunta}{Las preguntas},
+        },
+        CN = {
+            name = {问题},
+            crefname = {问题}{问题},
+            Crefname = {问题}{问题},
+        },
+        TC = {
+            name = {問題},
+            crefname = {問題}{問題},
+            Crefname = {問題}{問題},
+        },
+        JP = {
+            name = {問題},
+            crefname = {問題}{問題},
+            Crefname = {問題}{問題},
+        },
+        RU = {
+            name = {Вопрос},
+            crefname = {вопрос}{вопросы},
+            Crefname = {Вопрос}{Вопросы},
+        },
+    }
+    \NameTheorem{exercise}{
+        EN = {
+            name = {Exercise},
+            crefname = {exercise}{exercises},
+            Crefname = {Exercise}{Exercises},
+        },
+        FR = {
+            name = {Exercice},
+            crefname = {\crefthemark{l'}exercice}{\crefthemark{les} exercices},
+            Crefname = {L'exercice}{Les exercices},
+        },
+        DE = {
+            name = {Übung},
+            crefname = {Übung}{Übungen},
+            Crefname = {Übung}{Übungen},
+        },
+        IT = {
+            name = {Esercizio},
+            crefname = {\crefthemark{l'}esercizio}{\crefthemark{gli} esercizi},
+            Crefname = {L'esercizio}{Gli esercizi},
+        },
+        PT = {
+            name = {Exercício},
+            crefname = {\crefthemark{o} exercício}{\crefthemark{os} exercícios},
+            Crefname = {O exercício}{Os exercícios},
+        },
+        BR = {
+            name = {Exercício},
+            crefname = {\crefthemark{o} exercício}{\crefthemark{os} exercícios},
+            Crefname = {O exercício}{Os exercícios},
+        },
+        ES = {
+            name = {Ejercicio},
+            crefname = {\crefthemark{el} ejercicio}{los ejercicios},
+            Crefname = {El ejercicio}{Los ejercicios},
+        },
+        CN = {
+            name = {练习},
+            crefname = {练习}{练习},
+            Crefname = {练习}{练习},
+        },
+        TC = {
+            name = {練習},
+            crefname = {練習}{練習},
+            Crefname = {練習}{練習},
+        },
+        JP = {
+            name = {練習},
+            crefname = {練習}{練習},
+            Crefname = {練習}{練習},
+        },
+        RU = {
+            name = {Упражнение},
+            crefname = {упражнение}{упражнения},
+            Crefname = {Упражнение}{Упражнения},
+        },
+    }
+    \NameTheorem{remark}{
+        EN = {
+            name = {Remark},
+            crefname = {remark}{remarks},
+            Crefname = {Remark}{Remarks},
+        },
+        FR = {
+            name = {Remarque},
+            crefname = {\crefthemark{la} remarque}{\crefthemark{les} remarques},
+            Crefname = {La remarque}{Les remarques},
+        },
+        DE = {
+            name = {Bemerkung},
+            crefname = {Bemerkung}{Bemerkungen},
+            Crefname = {Bemerkung}{Bemerkungen},
+        },
+        IT = {
+            name = {Commento},
+            crefname = {\crefthemark{il} commento}{\crefthemark{i} commenti},
+            Crefname = {Il commento}{I commenti},
+        },
+        PT = {
+            name = {Comentário},
+            crefname = {\crefthemark{o} comentário}{\crefthemark{os} comentários},
+            Crefname = {O comentário}{Os comentários},
+        },
+        BR = {
+            name = {Comentário},
+            crefname = {\crefthemark{o} comentário}{\crefthemark{os} comentários},
+            Crefname = {O comentário}{Os comentários},
+        },
+        ES = {
+            name = {Comentario},
+            crefname = {\crefthemark{el} comentario}{los comentarios},
+            Crefname = {El comentario}{Los comentarios},
+        },
+        CN = {
+            name = {备注},
+            crefname = {备注}{备注},
+            Crefname = {备注}{备注},
+        },
+        TC = {
+            name = {備註},
+            crefname = {備註}{備註},
+            Crefname = {備註}{備註},
+        },
+        JP = {
+            name = {注釈},
+            crefname = {注釈}{注釈},
+            Crefname = {注釈}{注釈},
+        },
+        RU = {
+            name = {Замечание},
+            crefname = {замечание}{замечания},
+            Crefname = {Замечание}{Замечания},
+        },
+    }
+    \NameTheorem{observation}{
+        EN = {
+            name = {Observation},
+            crefname = {observation}{observations},
+            Crefname = {Observation}{Observations},
+        },
+        FR = {
+            name = {Observation},
+            crefname = {\crefthemark{la} observation}{\crefthemark{les} observations},
+            Crefname = {La observation}{Les observations},
+        },
+        DE = {
+            name = {Beobachtung},
+            crefname = {Beobachtung}{Beobachtungen},
+            Crefname = {Beobachtung}{Beobachtungen},
+        },
+        IT = {
+            name = {Osservazione},
+            crefname = {\crefthemark{l'}osservazione}{\crefthemark{le} osservazioni},
+            Crefname = {L'osservazione}{Le osservazioni},
+        },
+        PT = {
+            name = {Observação},
+            crefname = {\crefthemark{a} observação}{\crefthemark{as} observações},
+            Crefname = {A observação}{As observações},
+        },
+        BR = {
+            name = {Observação},
+            crefname = {\crefthemark{a} observação}{\crefthemark{as} observações},
+            Crefname = {A observação}{As observações},
+        },
+        ES = {
+            name = {Observación},
+            crefname = {la observación}{las observaciones},
+            Crefname = {La observación}{Las observaciones},
+        },
+        CN = {
+            name = {观察},
+            crefname = {观察}{观察},
+            Crefname = {观察}{观察},
+        },
+        TC = {
+            name = {觀察},
+            crefname = {觀察}{觀察},
+            Crefname = {觀察}{觀察},
+        },
+        JP = {
+            name = {観察},
+            crefname = {観察}{観察},
+            Crefname = {観察}{観察},
+        },
+        RU = {
+            name = {Наблюдение},
+            crefname = {наблюдение}{наблюдения},
+            Crefname = {Наблюдение}{Наблюдения},
+        },
+    }
+    \NameTheorem{definition-proposition}{
+        EN = {
+            name = {\definitionnameEN-\propositionnameEN},
+            crefname = {definition-proposition}{definitions-propositions},
+            Crefname = {Definition-proposition}{Definitions-propositions},
+        },
+        FR = {
+            name = {\definitionnameFR-\propositionnameFR},
+            crefname = {\crefthemark{la} définition-proposition}{\crefthemark{les} définitions-propositions},
+            Crefname = {La définition-proposition}{Les définitions-propositions},
+        },
+        DE = {
+            name = {\definitionnameDE-\propositionnameDE},
+            crefname = {Definition-Proposition}{Definitionen-Propositionen},
+            Crefname = {Definition-Proposition}{Definitionen-Propositionen},
+        },
+        IT = {
+            name = {\definitionnameIT-\propositionnameIT},
+            crefname = {\crefthemark{la} definizione-proposizione}{\crefthemark{le} definizioni-proposte},
+            Crefname = {La definizione-proposizione}{Le definizioni-proposte},
+        },
+        PT = {
+            name = {\definitionnamePT-\propositionnamePT},
+            crefname = {\crefthemark{a} definição-proposição}{\crefthemark{as} definições-proposições},
+            Crefname = {A definição-proposição}{As definições-proposições},
+        },
+        BR = {
+            name = {\definitionnameBR-\propositionnameBR},
+            crefname = {\crefthemark{a} definição-proposição}{\crefthemark{as} definições-proposições},
+            Crefname = {A definição-proposição}{As definições-proposições},
+        },
+        ES = {
+            name = {\definitionnameES-\propositionnameES},
+            crefname = {la definición-proposición}{las definiciones-proposiciones},
+            Crefname = {La definición-proposición}{Las definiciones-proposiciones},
+        },
+        CN = {
+            name = {\definitionnameCN-\propositionnameCN},
+            crefname = {\definitionnameCN-\propositionnameCN}{\definitionnameCN-\propositionnameCN},
+            Crefname = {\definitionnameCN-\propositionnameCN}{\definitionnameCN-\propositionnameCN},
+        },
+        TC = {
+            name = {\definitionnameTC-\propositionnameTC},
+            crefname = {\definitionnameTC-\propositionnameTC}{\definitionnameTC-\propositionnameTC},
+            Crefname = {\definitionnameTC-\propositionnameTC}{\definitionnameTC-\propositionnameTC},
+        },
+        JP = {
+            name = {\definitionnameJP-\propositionnameJP},
+            crefname = {\definitionnameJP-\propositionnameJP}{\definitionnameJP-\propositionnameJP},
+            Crefname = {\definitionnameJP-\propositionnameJP}{\definitionnameJP-\propositionnameJP},
+        },
+        RU = {
+            name = {\definitionnameRU-\propositionnameRU},
+            crefname = {определение-предложение}{определения-предложения},
+            Crefname = {Определение-предложение}{Определения-предложение},
+        },
+    }
+    \NameTheorem{definition-theorem}{
+        EN = {
+            name = {\definitionnameEN-\theoremnameEN},
+            crefname = {definition-theorem}{definitions-theorems},
+            Crefname = {Definition-theorem}{Definitions-theorems},
+        },
+        FR = {
+            name = {\definitionnameFR-\theoremnameFR},
+            crefname = {\crefthemark{la} définition-théorème}{\crefthemark{les} définitions-théorèmes},
+            Crefname = {La définition-théorème}{Les définitions-théorèmes},
+        },
+        DE = {
+            name = {\definitionnameDE-\theoremnameDE},
+            crefname = {Definition-Satz}{Definitionen-Sätze},
+            Crefname = {Definition-Satz}{Definitionen-Sätze},
+        },
+        IT = {
+            name = {\definitionnameIT-\theoremnameIT},
+            crefname = {\crefthemark{la} definizione-teorema}{\crefthemark{le} definizioni-teoremi},
+            Crefname = {La definizione-teorema}{Le definizioni-teoremi},
+        },
+        PT = {
+            name = {\definitionnamePT-\theoremnamePT},
+            crefname = {\crefthemark{a} definição-teorema}{\crefthemark{as} definições-teoremas},
+            Crefname = {A definição-teorema}{As definições-teoremas},
+        },
+        BR = {
+            name = {\definitionnameBR-\theoremnameBR},
+            crefname = {\crefthemark{a} definição-teorema}{\crefthemark{as} definições-teoremas},
+            Crefname = {A definição-teorema}{As definições-teoremas},
+        },
+        ES = {
+            name = {\definitionnameES-\theoremnameES},
+            crefname = {la definición-teorema}{las definiciones-teoremas},
+            Crefname = {La definición-teorema}{Las definiciones-teoremas},
+        },
+        CN = {
+            name = {\definitionnameCN-\theoremnameCN},
+            crefname = {\definitionnameCN-\theoremnameCN}{\definitionnameCN-\theoremnameCN},
+            Crefname = {\definitionnameCN-\theoremnameCN}{\definitionnameCN-\theoremnameCN},
+        },
+        TC = {
+            name = {\definitionnameTC-\theoremnameTC},
+            crefname = {\definitionnameTC-\theoremnameTC}{\definitionnameTC-\theoremnameTC},
+            Crefname = {\definitionnameTC-\theoremnameTC}{\definitionnameTC-\theoremnameTC},
+        },
+        JP = {
+            name = {\definitionnameJP-\theoremnameJP},
+            crefname = {\definitionnameJP-\theoremnameJP}{\definitionnameJP-\theoremnameJP},
+            Crefname = {\definitionnameJP-\theoremnameJP}{\definitionnameJP-\theoremnameJP},
+        },
+        RU = {
+            name = {\definitionnameRU-\theoremnameRU},
+            crefname = {определение-теорема}{определения-теоремы},
+            Crefname = {Определение-теорема}{Определения-теорема},
+        },
+    }
+}{
+    \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}}
+    \def\observationnameEN{{Observation}}
+    \expandafter\def\csname definition-propositionnameEN\endcsname{\definitionnameEN-\propositionnameEN}
+    \expandafter\def\csname definition-theoremnameEN\endcsname{\definitionnameEN-\theoremnameEN}
+
+    \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}}
+    \def\observationnameFR{{Observation}}
+    \expandafter\def\csname definition-propositionnameFR\endcsname{\definitionnameFR-\propositionnameFR}
+    \expandafter\def\csname definition-theoremnameFR\endcsname{\definitionnameFR-\theoremnameFR}
+
+    \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}}
+    \def\observationnameDE{{Beobachtung}}
+    \expandafter\def\csname definition-propositionnameDE\endcsname{\definitionnameDE-\propositionnameDE}
+    \expandafter\def\csname definition-theoremnameDE\endcsname{\definitionnameDE-\theoremnameDE}
+
+    \def\theoremnameIT{{Teorema}}
+    \def\lemmanameIT{{Lemma}}
+    \def\propositionnameIT{{Proposizione}}
+    \def\corollarynameIT{{Corollario}}
+    \def\propertynameIT{{Proprietà}}
+    \def\factnameIT{{Fatto}}
+    \def\conjecturenameIT{{Congettura}}
+    \def\definitionnameIT{{Definizione}}
+    \def\axiomnameIT{{Assioma}}
+    \def\assumptionnameIT{{Supposizione}}
+    \def\conventionnameIT{{Convenzione}}
+    \def\hypothesisnameIT{{Ipotesi}}
+    \def\notationnameIT{{Notazione}}
+    \def\examplenameIT{{Esempio}}
+    \def\problemnameIT{{Problema}}
+    \def\questionnameIT{{Domanda}}
+    \def\exercisenameIT{{Esercizio}}
+    \def\remarknameIT{{Commento}}
+    \def\observationnameIT{{Osservazione}}
+    \expandafter\def\csname definition-propositionnameIT\endcsname{\definitionnameIT-\propositionnameIT}
+    \expandafter\def\csname definition-theoremnameIT\endcsname{\definitionnameIT-\theoremnameIT}
+
+    \def\theoremnamePT{{Teorema}}
+    \def\lemmanamePT{{Lema}}
+    \def\propositionnamePT{{Proposição}}
+    \def\corollarynamePT{{Corolário}}
+    \def\propertynamePT{{Propriedade}}
+    \def\factnamePT{{Facto}}
+    \def\conjecturenamePT{{Conjetura}}
+    \def\definitionnamePT{{Definição}}
+    \def\axiomnamePT{{Axioma}}
+    \def\assumptionnamePT{{Suposição}}
+    \def\conventionnamePT{{Convenção}}
+    \def\hypothesisnamePT{{Hipótese}}
+    \def\notationnamePT{{Notação}}
+    \def\examplenamePT{{Exemplo}}
+    \def\problemnamePT{{Problema}}
+    \def\questionnamePT{{Pergunta}}
+    \def\exercisenamePT{{Exercício}}
+    \def\remarknamePT{{Comentário}}
+    \def\observationnamePT{{Observação}}
+    \expandafter\def\csname definition-propositionnamePT\endcsname{\definitionnamePT-\propositionnamePT}
+    \expandafter\def\csname definition-theoremnamePT\endcsname{\definitionnamePT-\theoremnamePT}
+
+    \def\theoremnameBR{{Teorema}}
+    \def\lemmanameBR{{Lema}}
+    \def\propositionnameBR{{Proposição}}
+    \def\corollarynameBR{{Corolário}}
+    \def\propertynameBR{{Propriedade}}
+    \def\factnameBR{{Fato}}
+    \def\conjecturenameBR{{Conjectura}}
+    \def\definitionnameBR{{Definição}}
+    \def\axiomnameBR{{Axioma}}
+    \def\assumptionnameBR{{Suposição}}
+    \def\conventionnameBR{{Convenção}}
+    \def\hypothesisnameBR{{Hipótese}}
+    \def\notationnameBR{{Notação}}
+    \def\examplenameBR{{Exemplo}}
+    \def\problemnameBR{{Problema}}
+    \def\questionnameBR{{Pergunta}}
+    \def\exercisenameBR{{Exercício}}
+    \def\remarknameBR{{Comentário}}
+    \def\observationnameBR{{Observação}}
+    \expandafter\def\csname definition-propositionnameBR\endcsname{\definitionnameBR-\propositionnameBR}
+    \expandafter\def\csname definition-theoremnameBR\endcsname{\definitionnameBR-\theoremnameBR}
+
+    \def\theoremnameES{{Teorema}}
+    \def\lemmanameES{{Lema}}
+    \def\propositionnameES{{Proposición}}
+    \def\corollarynameES{{Corolario}}
+    \def\propertynameES{{Propiedad}}
+    \def\factnameES{{Hecho}}
+    \def\conjecturenameES{{Conjetura}}
+    \def\definitionnameES{{Definición}}
+    \def\axiomnameES{{Axioma}}
+    \def\assumptionnameES{{Suposición}}
+    \def\conventionnameES{{Convención}}
+    \def\hypothesisnameES{{Hipótesis}}
+    \def\notationnameES{{Notación}}
+    \def\examplenameES{{Ejemplo}}
+    \def\problemnameES{{Problema}}
+    \def\questionnameES{{Pregunta}}
+    \def\exercisenameES{{Ejercicio}}
+    \def\remarknameES{{Comentario}}
+    \def\observationnameES{{Observación}}
+    \expandafter\def\csname definition-propositionnameES\endcsname{\definitionnameES-\propositionnameES}
+    \expandafter\def\csname definition-theoremnameES\endcsname{\definitionnameES-\theoremnameES}
+
+    \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{{备注}}
+    \def\observationnameCN{{观察}}
+    \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{{備註}}
+    \def\observationnameTC{{觀察}}
+    \expandafter\def\csname definition-propositionnameTC\endcsname{\definitionnameTC-\propositionnameTC}
+    \expandafter\def\csname definition-theoremnameTC\endcsname{\definitionnameTC-\theoremnameTC}
+
+    \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{{注釈}}
+    \def\observationnameJP{{観察}}
+    \expandafter\def\csname definition-propositionnameJP\endcsname{\definitionnameJP-\propositionnameJP}
+    \expandafter\def\csname definition-theoremnameJP\endcsname{\definitionnameJP-\theoremnameJP}
+
+    \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{{Замечание}} % Замеча́ние
+    \def\observationnameRU{{Наблюдение}} % Наблюде́ние
+    \expandafter\def\csname definition-propositionnameRU\endcsname{\definitionnameRU-\propositionnameRU}
+    \expandafter\def\csname definition-theoremnameRU\endcsname{\definitionnameRU-\theoremnameRU}
+}
+
+\newif\ifPJLthm at IsBook
+\ifdefined\c at chapter\PJLthm at IsBooktrue\else\PJLthm at IsBookfalse\fi
+\ifbool{PJLthm at IsBook}{
+    \newaliascnt{PJLthm at highest}{chapter}
+}{
+    \newaliascnt{PJLthm at highest}{section}
+}
+\NewDocumentCommand{\CreateTheorem at thmnum}{m}{
+    \expandafter\ifstrempty\expandafter{\@PJLthm at thmnum}{
+        \CreateTheorem{#1}<PJLthm at highest>
+    }{
+        \expandafter\ifstrequal\expandafter{\@PJLthm at thmnum}{PJL at thmnum@default}{
+            \CreateTheorem{#1}
+        }{
+            \CreateTheorem{#1}<\@PJLthm at thmnum>
+        }
+    }
+}
+
+\def\PJLthm at definethms{
+\if at PJLthm@nothms\else
+\if at PJLthm@nothmnum
+\CreateTheorem*{theorem}
+\CreateTheorem*{lemma}
+\CreateTheorem*{proposition}
+\CreateTheorem*{corollary}
+\CreateTheorem*{definition-proposition}
+\CreateTheorem*{definition-theorem}
+\CreateTheorem*{property}
+\CreateTheorem*{fact}
+\CreateTheorem*{conjecture}
+\else
+\CreateTheorem at thmnum{theorem}
+\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]
+\fi
+\CreateTheorem*{theorem*}
+\CreateTheorem*{lemma*}
+\CreateTheorem*{proposition*}
+\CreateTheorem*{corollary*}
+\CreateTheorem*{definition-proposition*}
+\CreateTheorem*{definition-theorem*}
+\CreateTheorem*{property*}
+\CreateTheorem*{fact*}
+\CreateTheorem*{conjecture*}
+
+\theoremstyle{definition}
+\if at PJLthm@nothmnum
+\CreateTheorem*{definition}
+\CreateTheorem*{axiom}
+\CreateTheorem*{assumption}
+\CreateTheorem*{convention}
+\CreateTheorem*{hypothesis}
+\CreateTheorem*{notation}
+\CreateTheorem*{example}
+\CreateTheorem*{problem}
+\CreateTheorem*{question}
+\CreateTheorem*{exercise}
+\else
+\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]
+\fi
+\CreateTheorem*{definition*}
+\CreateTheorem*{axiom*}
+\CreateTheorem*{assumption*}
+\CreateTheorem*{convention*}
+\CreateTheorem*{hypothesis*}
+\CreateTheorem*{notation*}
+\CreateTheorem*{example*}
+\CreateTheorem*{problem*}
+\CreateTheorem*{question*}
+\CreateTheorem*{exercise*}
+
+\theoremstyle{remark}
+\if at PJLthm@nothmnum
+\CreateTheorem*{remark}
+\CreateTheorem*{observation}
+\else
+\CreateTheorem at thmnum{remark}
+\CreateTheorem at thmnum{observation}
+\fi
+\CreateTheorem*{remark*}
+\CreateTheorem*{observation*}
+
+\theoremstyle{definition}
+\fi
+
+\expandafter\ifstrempty\expandafter{\@PJLthm at thmnum}{
+    \numberwithin{equation}{PJLthm at highest}
+}{
+    \expandafter\ifstrequal\expandafter{\@PJLthm at thmnum}{PJL at thmnum@default}{
+    }{
+        \numberwithin{equation}{\@PJLthm at thmnum}
+    }
+}
+
+} % End of \PJLthm at definethms
+
+\if at PJLthm@delaythms
+    \AtEndPreamble{\PJLthm at definethms}
+\else
+    \PJLthm at definethms
+\fi
+
+\gappto{\PJLlang at langconfig@CN}{%
+    \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{\PJLlang at langconfig@TC}{%
+    \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{\PJLlang at langconfig@JP}{%
+    \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{\PJLlang at langconfig@RU}{%
+    \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~}%
+}
+\gappto{\PJLlang at langconfig@PT}{%
+    \crefname{equation}{eq.}{eqs.}%
+    \crefname{figure}{fig.}{figs.}%
+    \crefname{table}{tabela}{tabelas}%
+    \crefname{appendix}{apêndice}{apêndices}%
+    \Crefname{equation}{Eq.}{Eqs.}%
+    \Crefname{figure}{Fig.}{Figs.}%
+    \Crefname{table}{Tabela}{Tabelas}%
+    \Crefname{appendix}{Apêndice}{Apêndices}%
+    \def\crefpairconjunction{ e\nobreakspace}%
+    \def\crefmiddleconjunction{, }%
+    \def\creflastconjunction{ e\nobreakspace}%
+    \def\crefpairgroupconjunction{ e\nobreakspace}%
+    \def\crefmiddlegroupconjunction{, }%
+    \def\creflastgroupconjunction{ e\nobreakspace}%
+    \def\crefrangeconjunction{ a\nobreakspace}%
+}
+
+\endinput
+%%
+%% End of file `PJLthm.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLthm.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLtoolkit.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLtoolkit.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLtoolkit.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,184 @@
+%%
+%% This is file `ProjLib.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{PJLtoolkit}
+    [2021/12/16 The collective interface of ProjLib toolkit]
+\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
+\SetupKeyvalOptions{
+    family = @ProjLib,
+    prefix = @ProjLib@,
+}
+\DeclareBoolOption[false]{draft}
+\DeclareBoolOption[false]{fast}
+\DeclareBoolOption[false]{author}
+\DeclareBoolOption[false]{amsfashion}
+\DeclareBoolOption[false]{nothms}
+\DeclareBoolOption[false]{delaythms}
+\DeclareBoolOption[false]{nothmnum}
+\DeclareStringOption{thmnum}[PJL at thmnum@default]
+\DeclareBoolOption[true]{regionalref}
+\DeclareBoolOption[false]{originalref}
+\DeclareBoolOption[true]{complexname}
+\DeclareBoolOption[false]{simplename}
+\DeclareBoolOption[false]{useosf}
+\DeclareBoolOption[false]{lmodern}
+\DeclareBoolOption[false]{palatino}
+\DeclareBoolOption[false]{times}
+\DeclareBoolOption[false]{garamond}
+\DeclareBoolOption[false]{noto}
+\DeclareBoolOption[false]{biolinum}
+\ProcessKeyvalOptions*\relax
+
+\if at ProjLib@originalref
+    \@ProjLib at regionalreffalse
+\fi
+\if at ProjLib@simplename
+    \@ProjLib at complexnamefalse
+\fi
+\if at ProjLib@draft
+    \@ProjLib at fasttrue
+\fi
+
+\if at ProjLib@fast
+    \PassOptionsToPackage{fast}{PJLdate}
+    \PassOptionsToPackage{fast}{PJLdraft}
+    \PassOptionsToPackage{fast}{PJLlogo}
+    \PassOptionsToPackage{fast}{PJLthm}
+\fi
+\if at ProjLib@nothms
+    \PassOptionsToPackage{nothms}{PJLthm}
+\fi
+\if at ProjLib@delaythms
+    \PassOptionsToPackage{delaythms}{PJLthm}
+\fi
+\if at ProjLib@nothmnum
+    \PassOptionsToPackage{nothmnum}{PJLthm}
+\fi
+\expandafter\ifstrempty\expandafter{\@ProjLib at thmnum}{}{
+    \expandafter\ifstrequal\expandafter{\@ProjLib at thmnum}{PJL at thmnum@default}{
+        \PassOptionsToPackage{thmnum}{PJLthm}
+    }{
+        \PassOptionsToPackage{thmnum=\@ProjLib at thmnum}{PJLthm}
+    }
+}
+\if at ProjLib@regionalref\else
+    \PassOptionsToPackage{originalref}{PJLthm}
+\fi
+\if at ProjLib@complexname\else
+    \PassOptionsToPackage{simplename}{PJLthm}
+\fi
+
+\if at ProjLib@amsfashion
+    \PassOptionsToPackage{amsfashion}{PJLauthor}
+    \RequirePackage{PJLauthor}
+\fi
+\if at ProjLib@author
+    \RequirePackage{PJLauthor}
+\fi
+\RequirePackage{PJLdate}
+\RequirePackage{PJLdraft}
+\RequirePackage{PJLlogo}
+\RequirePackage{PJLmath}
+\RequirePackage{PJLpaper}
+\RequirePackage{PJLthm}
+
+\ifdefined\PJL at font@alreadyset\else
+
+\if at ProjLib@lmodern
+    \RequirePackage{amssymb}
+    \if at ProjLib@useosf
+        \RequirePackage{cfr-lm}
+    \else
+        \RequirePackage{lmodern}
+    \fi
+    \PJLsetlinespacing{\setstretch{1.00}}
+\fi
+
+\if at ProjLib@palatino
+    % \RequirePackage{amssymb}
+    \RequirePackage{mathpazo}
+    \PassOptionsToPackage{defaultsups}{newpxtext}
+    \RequirePackage{newpxtext}
+    % \RequirePackage{newpxmath}
+    \let\openbox\relax
+    \PJLsetlinespacing{\setstretch{1.07}}
+    \if at ProjLib@useosf\useosf\fi
+\fi
+
+\if at ProjLib@times
+    % \RequirePackage{amssymb}
+    \PassOptionsToPackage{defaultsups}{newtxtext}
+    \RequirePackage{newtxtext}
+    \RequirePackage{newtxmath}
+    \let\openbox\relax
+    \PJLsetlinespacing{\setstretch{1.00}}
+    \if at ProjLib@useosf\useosf\fi
+\fi
+
+\if at ProjLib@garamond
+    % \RequirePackage{amssymb}
+    \if at ProjLib@useosf\else
+        \PassOptionsToPackage{lining}{ebgaramond}
+    \fi
+    \RequirePackage{ebgaramond-maths}
+    \RequirePackage{ebgaramond}
+    % \RequirePackage{garamondlibre}
+    \PJLsetlinespacing{\setstretch{1.00}}
+\fi
+
+\if at ProjLib@noto
+    \if at ProjLib@useosf
+        \PassOptionsToPackage{oldstyle}{notomath}
+    \fi
+    \RequirePackage{anyfontsize}
+    \RequirePackage{notomath}
+    \PJLsetlinespacing{\setstretch{1.00}}
+\fi
+
+\if at ProjLib@biolinum
+    % \RequirePackage{amssymb}
+    % \RequirePackage{mathpazo}
+    % \RequirePackage[sansmath]{libertinust1math}
+    \ifPDFTeX
+        \if at ProjLib@useosf
+            \PassOptionsToPackage{osf}{biolinum}
+        \fi
+        \RequirePackage{biolinum}
+        \renewcommand*\familydefault{\biolinum at family}
+    \else
+        \PassOptionsToPackage{no-math}{fontspec}
+        \RequirePackage{fontspec}
+        \setmainfont{LinBiolinum_R.otf}[
+            BoldFont       = LinBiolinum_RB.otf ,
+            ItalicFont     = LinBiolinum_RI.otf ,
+            BoldItalicFont = LinBiolinum_RBO.otf,
+            \if at ProjLib@useosf Numbers = OldStyle\fi ]
+    \fi
+    \PJLsetlinespacing{\setstretch{1.05}}
+    \RequirePackage[italic,defaultmathsizes]{mathastext}
+\fi
+
+\fi
+
+\WarningFilter{microtype}{Unable}
+\RequirePackage{microtype}
+
+\endinput
+%%
+%% End of file `ProjLib.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/old-modules/PJLtoolkit.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-author.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-author.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-author.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,313 @@
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+  {projlib-author}
+  {2022/03/09} {}
+  {Enhanced author information block}
+
+\keys_define:nn { projlib-author }
+  {
+    , ams-fashion .bool_set:N = \l__projlib_author_amsfashion_bool
+    , ams-fashion .initial:n  = { false }
+    , ams~fashion .bool_set:N = \l__projlib_author_amsfashion_bool
+    , ams fashion .bool_set:N = \l__projlib_author_amsfashion_bool
+    , unknown     .code:n     = {}
+  }
+\ProcessKeysOptions { projlib-author }
+
+\cs_if_exist:NT \subjclass { \endinput }
+
+\tl_new:N   \g__projlib_author_font_author_tl
+\tl_new:N   \g__projlib_author_font_address_tl
+\tl_new:N   \g__projlib_author_font_curraddr_tl
+\tl_new:N   \g__projlib_author_font_email_tl
+
+\tl_gset:Nn \g__projlib_author_font_author_tl      { \normalsize \normalfont \scshape }
+\tl_gset:Nn \g__projlib_author_font_address_tl     { \small \normalfont \itshape }
+\tl_gset:Nn \g__projlib_author_font_curraddr_tl    { \small \normalfont \itshape }
+\tl_gset:Nn \g__projlib_author_font_email_tl       { \small \normalfont \ttfamily }
+
+\dim_new:N  \g__projlib_author_length_innersep_dim
+\dim_new:N  \g__projlib_author_length_sep_dim
+\dim_new:N  \g__projlib_author_length_aftersep_dim
+
+\dim_set:Nn \g__projlib_author_length_innersep_dim { 0.3 \baselineskip }
+\dim_set:Nn \g__projlib_author_length_sep_dim      { 0.5 \baselineskip }
+\dim_set:Nn \g__projlib_author_length_aftersep_dim { 0.3 \baselineskip }
+
+
+\bool_new:N \g__projlib_author_affil_already_exist_bool
+
+\NewCommandCopy \projlib_author_backup_author:w \author
+\RenewDocumentCommand \author { m }
+  {
+    \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
+      {
+        \phantom {A} \\[-\baselineskip]
+        \skip_vertical:n { \g__projlib_author_length_sep_dim }
+        { \g__projlib_author_font_author_tl #1 }
+        \bool_set_false:N \g__projlib_author_affil_already_exist_bool
+        \\ \phantom {}
+      }
+  }
+
+\ProvideDocumentCommand \address { m }
+  {
+    \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
+      {
+        \phantom {A} \\[-\baselineskip]
+        \bool_if:NF \g__projlib_author_affil_already_exist_bool
+          {
+            \skip_vertical:n { \g__projlib_author_length_innersep_dim }
+          }
+        \bool_set_true:N \g__projlib_author_affil_already_exist_bool
+        { \g__projlib_author_font_address_tl #1 }
+        \\ \phantom {}
+      }
+  }
+
+\ProvideDocumentCommand \curraddr { m }
+  {
+    \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
+      {
+        \phantom {A} \\[-\baselineskip]
+        \bool_if:NF \g__projlib_author_affil_already_exist_bool
+          {
+            \skip_vertical:n { \g__projlib_author_length_innersep_dim }
+          }
+        \bool_set_true:N \g__projlib_author_affil_already_exist_bool
+        { \g__projlib_author_font_curraddr_tl #1 }
+        \\ \phantom {}
+      }
+  }
+
+\ProvideDocumentCommand \email { m }
+  {
+    \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
+      {
+        \phantom {A} \\[-\baselineskip]
+        \bool_if:NF \g__projlib_author_affil_already_exist_bool
+          {
+            \skip_vertical:n { \g__projlib_author_length_innersep_dim }
+          }
+        \bool_set_true:N \g__projlib_author_affil_already_exist_bool
+        { \g__projlib_author_font_email_tl #1 }
+        \\ \phantom {}
+      }
+  }
+
+\RequirePackage { regexpatch }
+
+\xpatchcmd { \@maketitle } { \begin{tabular}[t]{c} } {} {} { \FAIL }
+\xpatchcmd { \@maketitle } { \end{tabular} } {} {} { \FAIL }
+
+\tl_set:cn {@author} {}
+
+\hook_gput_code:nnn { cmd/@maketitle/before } { projlib-author }
+  {
+    \hook_gput_code:nnn { cmd/@author/before } { projlib-author }
+      {
+        \skip_vertical:n { - \g__projlib_author_length_sep_dim }
+      }
+    \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
+      {
+        \skip_vertical:n { - \baselineskip }
+        \bool_if:NT \g__projlib_author_affil_already_exist_bool
+          {
+            \skip_vertical:n { \g__projlib_author_length_aftersep_dim }
+          }
+      }
+  }
+
+\bool_if:NT \l__projlib_author_amsfashion_bool
+  {
+    \RequirePackage{ projlib-language }
+
+    \tl_new:N   \g_projlib_author_keywordsname_style_tl
+    \tl_gset:Nn \g_projlib_author_keywordsname_style_tl {}
+
+    \projlib_langauge_define_multilingual_text:Nn \keywordsname
+      {
+        EN = \textsc{Key~words~and~phrases}         ,
+        FR = \textsc{Mots~et~phrases~clés}          ,
+        DE = \textsc{Schlüsselwörter~und~Phrasen}   ,
+        IT = \textsc{Parole~e~frasi~chiave}         ,
+        PT = \textsc{Palavras~e~frases~chave}       ,
+        BR = \textsc{Palavras~e~frases~chave}       ,
+        ES = \textsc{Palabras~y~frases~clave}       ,
+        CN = 关键词                                 ,
+        TC = 關鍵詞                                 ,
+        JP = キーワード                             ,
+        RU = Ключевые~слова~и~фразы                 ,
+      }
+
+    \tl_new:N \g__projlib_author_keywords_tl
+    \NewDocumentCommand \keywords { m }
+      {
+        \tl_gset:Nn \g__projlib_author_keywords_tl { #1 }
+      }
+
+    \tl_new:N \g__projlib_author_dedicatory_tl
+    \NewDocumentCommand \dedicatory { m }
+      {
+        \tl_gset:Nn \g__projlib_author_dedicatory_tl { #1 }
+      }
+
+    \hook_gput_code:nnn { begindocument/before } { projlib-author }
+      {
+        \NewCommandCopy \projlib_author_backup_footnotemark: \footnotemark
+        \tl_gset:Nn \footnotemark {}
+
+        \NewCommandCopy \projlib_author_backup_thanks:w \thanks
+        \cs_undefine:N \thanks
+
+        % measure the width of "*"
+        \hbox_set:Nn \l_tmpa_box { * }
+        \dim_const:Nn \c__projlib_author_length_width_of_asterisk_dim { \box_wd:N \l_tmpa_box }
+
+        \cs_new_nopar:Nn \projlib_author_pre_thanks:n
+          {
+            \projlib_author_backup_thanks:w
+              {
+                \skip_horizontal:n { - \c__projlib_author_length_width_of_asterisk_dim }
+                #1
+              }
+          }
+
+        \NewDocumentCommand \thanks { m }
+          {
+            \tl_if_blank:eF { #1 }
+              {
+                \hook_gput_code:nnn { cmd/@title/after } { projlib-author }
+                  {
+                    \projlib_author_pre_thanks:n { #1 }
+                  }
+              }
+          }
+
+        \NewCommandCopy \projlib_author_backup_my_author:w \author
+        \RenewDocumentCommand \author { m }
+          {
+            \projlib_author_backup_my_author:w
+              {
+                \RenewCommandCopy \footnotemark \projlib_author_backup_footnotemark:
+                \RenewCommandCopy \thanks \projlib_author_backup_thanks:w
+                #1
+                \cs_undefine:N \footnotemark
+              }
+          }
+      }
+
+    \NewCommandCopy \projlib_author_backup_abstract: \abstract
+    \NewCommandCopy \projlib_author_backup_endabstract: \endabstract
+    \cs_undefine:N \abstract
+    \cs_undefine:N \endabstract
+
+    \bool_new:N \g__projlib_author_already_maketitle_bool
+    \bool_gset_false:N \g__projlib_author_already_maketitle_bool
+    \bool_new:N \g__projlib_author_abstract_before_maketitle_bool
+    \bool_gset_false:N \g__projlib_author_abstract_before_maketitle_bool
+
+    \RequirePackage{ scontents }
+    \newenvsc{abstract}[store-env=projlib-author-abstract,print-env=false]
+
+    \hook_gput_code:nnn { env/abstract/after } { projlib-author }
+      {
+        \bool_if:NTF \g__projlib_author_already_maketitle_bool
+          {
+            \projlib_author_backup_abstract:
+              \getstored{projlib-author-abstract}
+            \projlib_author_backup_endabstract:
+          }
+          {
+            \bool_gset_true:N \g__projlib_author_abstract_before_maketitle_bool
+          }
+      }
+
+    \hook_gput_code:nnn { begindocument/before } { projlib-author }
+      {
+        \makeatletter
+        \xpatchcmd { \@maketitle } { \@date }
+          {
+            \tl_if_blank:eTF { \@date } { \skip_vertical:n { -2 \baselineskip } } { \@date }
+            \tl_if_blank:eF { \g__projlib_author_dedicatory_tl }
+              {
+                \tl_if_blank:eT { \@date } { \skip_vertical:n { 2 \baselineskip } }
+                \par
+                \skip_vertical:n { -\parskip }
+                \skip_vertical:n { \baselineskip }
+                \textit{ \g__projlib_author_dedicatory_tl }
+                \tl_if_blank:eT { \@date }
+                  {
+                    \skip_vertical:n { -\parskip }
+                    \skip_vertical:n { \dim_eval:n { -1.7 \baselineskip } }
+                  }
+              }
+          } {} { \FAIL }
+        \makeatother
+
+        \hook_gput_code:nnn { cmd/maketitle/before } { projlib-author }
+          {
+            \tl_if_blank:eF { \g__projlib_author_keywords_tl }
+              {
+                \projlib_author_pre_thanks:n
+                  {
+                    \group_begin:
+                      \g_projlib_author_keywordsname_style_tl
+                      \keywordsname .
+                    \group_end:
+                    \c_space_tl
+                    \g__projlib_author_keywords_tl
+                  }
+              }
+          }
+
+        \hook_gput_code:nnn { cmd/maketitle/after } { projlib-author }
+          {
+            \bool_if:NT \g__projlib_author_abstract_before_maketitle_bool
+              {
+                \projlib_author_backup_abstract:
+                  \getstored{projlib-author-abstract}
+                \projlib_author_backup_endabstract:
+              }
+            \cs_undefine:N \address
+            \cs_undefine:N \curraddr
+            \cs_undefine:N \email
+            \cs_undefine:N \dedicatory
+            \cs_undefine:N \keywords
+            \bool_gset_true:N \g__projlib_author_already_maketitle_bool
+          }
+      }
+
+      \tl_new:N \l_projlib_author_subjclassname_tl
+      \tl_new:N \l_projlib_author_subjclass_tl
+      \msg_new:nnn { projlib-author }
+        { unknown-msc-edition }
+        { Unknown~edition~(#1)~of~Mathematics~Subject~Classification;~using~'2020' }
+      \NewDocumentCommand \subjclass { O{2020} m }
+        {
+          \tl_set:Nn \l_projlib_author_subjclass_tl { #2 }
+          \tl_if_exist:cTF { subjclassname_#1 }
+            {
+              \tl_set:Nn \l_projlib_author_subjclassname_tl { \tl_use:c { subjclassname_#1 } }
+            }
+            {
+              \msg_warning:nnn { projlib-author } { unknown-msc-edition } { #1 }
+              \tl_set:Nn \l_projlib_author_subjclassname_tl { \tl_use:c { subjclassname_2020 } }
+            }
+          \projlib_author_pre_thanks:n
+            {
+              \textit{ \l_projlib_author_subjclassname_tl . }
+              \enspace
+              \l_projlib_author_subjclass_tl .
+            }
+        }
+      \tl_const:cn { subjclassname_1991 } { \textup{1991}~Mathematics~Subject~Classification }
+      \tl_const:cn { subjclassname_2000 } { \textup{2000}~Mathematics~Subject~Classification }
+      \tl_const:cn { subjclassname_2010 } { \textup{2010}~Mathematics~Subject~Classification }
+      \tl_const:cn { subjclassname_2020 } { \textup{2020}~Mathematics~Subject~Classification }
+  }
+
+\endinput
+%%
+%% End of file `projlib-author.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-author.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,1649 @@
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+  {projlib-datetime}
+  {2022/03/03} {}
+  {Convert numeric date-time string to natural language}
+
+\tl_new:N   \g__projlib_datetime_input_format_tl
+\tl_gset:Nn \g__projlib_datetime_input_format_tl { year-month-day }
+
+\keys_define:nn { projlib-datetime }
+  {
+    , plain           .bool_set:N   = \l__projlib_datetime_plain_bool
+    , plain           .initial:n    = { false }
+    , year-month-day  .code:n       = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { year-month-day } }
+    , month-day-year  .code:n       = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { month-day-year } }
+    , day-month-year  .code:n       = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { day-month-year } }
+    , year-month      .code:n       = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { year-month-day } }
+    , month-day       .code:n       = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { year-month-day } }
+    , month-year      .code:n       = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { day-month-year } }
+    , day-month       .code:n       = { \tl_gset:Nn \g__projlib_datetime_input_format_tl { day-month-year } }
+    , unknown         .code:n       = {}
+  }
+\ProcessKeysOptions { projlib-datetime }
+
+\bool_if:NT \l__projlib_datetime_plain_bool
+  {
+    \hook_gput_code:nnn { begindocument/before } { projlib-datetime }
+      {
+        \cs_set:Nn \projlib_datetime_text_superscript:n { #1 }
+      }
+  }
+
+\tl_new:N \l__projlib_datetime_output_format_tl
+\keys_define:nn { projlib-datetime-command }
+  {
+    , year-month-day  .code:n       = { \tl_set:Nn \g__projlib_datetime_input_format_tl { year-month-day } }
+    , month-day-year  .code:n       = { \tl_set:Nn \g__projlib_datetime_input_format_tl { month-day-year } }
+    , day-month-year  .code:n       = { \tl_set:Nn \g__projlib_datetime_input_format_tl { day-month-year } }
+    , year-month      .code:n       = { \tl_set:Nn \g__projlib_datetime_input_format_tl { year-month-day } }
+    , month-day       .code:n       = { \tl_set:Nn \g__projlib_datetime_input_format_tl { year-month-day } }
+    , month-year      .code:n       = { \tl_set:Nn \g__projlib_datetime_input_format_tl { day-month-year } }
+    , day-month       .code:n       = { \tl_set:Nn \g__projlib_datetime_input_format_tl { day-month-year } }
+    , only-year-month .code:n       = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-year-month } }
+    , only-month-day  .code:n        = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-month-day } }
+    , only-year       .code:n        = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-year } }
+    , only-month      .code:n        = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-month } }
+    , only-day        .code:n        = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-day } }
+    , unknown         .code:n       = {}
+  }
+
+\msg_new:nnnn { projlib-datetime }
+  { non-supported-date-format }
+  { The~date~format~"#1"~is~not~supported. }
+  { The~only~formats~available~are~"year-month-day",~ "month-day-year"~and~"day-month-year". }
+
+\cs_new:Nn \projlib_datetime_set_input_format:n
+  {
+    \str_case:nnF { #1 }
+      {
+        { year-month-day } { \tl_gset:Nn \g__projlib_datetime_input_format_tl { year-month-day } }
+        { month-day-year } { \tl_gset:Nn \g__projlib_datetime_input_format_tl { month-day-year } }
+        { day-month-year } { \tl_gset:Nn \g__projlib_datetime_input_format_tl { day-month-year } }
+      }
+      {
+        \msg_error:nnn  { projlib-datetime } { non-supported-date-format } { #1 }
+      }
+  }
+
+\NewDocumentCommand \ProjLibSetDatetimeInputFormat { m }
+  {
+    \projlib_datetime_set_input_format:n { #1 }
+  }
+
+
+\seq_new:N \l__projlib_datetime_date_seq
+
+\cs_new_protected:Nn \projlib_datetime_text_superscript:n
+  {
+    \group_begin:
+      \small
+      \textsuperscript { #1 }
+    \group_end:
+  }
+
+
+\cs_new:Nn \__projlib_datetime_today:n
+  {
+    \str_case_e:nnF { \l__projlib_datetime_output_format_tl }
+        {
+          { only-year-month }
+            {
+              \cs_if_exist_use:c { projlib_datetime_display_year_month #1 _ \languagename :nn }
+                { \int_use:N \c_sys_year_int }
+                { \int_use:N \c_sys_month_int }
+            }
+          { only-month-day  }
+            {
+              \cs_if_exist_use:c { projlib_datetime_display_month_day #1 _ \languagename :nn }
+                { \int_use:N \c_sys_month_int }
+                { \int_use:N \c_sys_day_int }
+            }
+          { only-year       }
+            {
+              \cs_if_exist_use:cT { projlib_datetime_display_year #1 _ \languagename :n }
+                {
+                  { \int_use:N \c_sys_year_int }
+                }
+            }
+          { only-month      }
+            {
+              \cs_if_exist_use:cT { projlib_datetime_display_month #1 _ \languagename :n }
+                {
+                  { \int_use:N \c_sys_month_int }
+                }
+            }
+          { only-day        }
+            {
+              \cs_if_exist_use:cT { projlib_datetime_display_day #1 _ \languagename :n }
+                {
+                  { \int_use:N \c_sys_day_int }
+                }
+            }
+        }
+        {
+          \cs_if_exist_use:c { projlib_datetime_display_year_month_day #1 _ \languagename :nnn }
+            { \int_use:N \c_sys_year_int }
+            { \int_use:N \c_sys_month_int }
+            { \int_use:N \c_sys_day_int }
+        }
+  }
+
+\NewDocumentCommand \ProjLibtoday { O{} }
+  {
+    \group_begin:
+      \keys_set:nn { projlib-datetime-command } { #1 }
+      \__projlib_datetime_today:n {}
+    \group_end:
+  }
+
+\NewDocumentCommand \ProjLibToday { O{} }
+  {
+    \group_begin:
+      \keys_set:nn { projlib-datetime-command } { #1 }
+      \__projlib_datetime_today:n { _uppercase }
+    \group_end:
+  }
+
+\ProvideDocumentCommand \Thedate {} { \ProjLibdate }
+\ProvideDocumentCommand \TheDate {} { \ProjLibDate }
+
+
+\cs_new_protected:Nn \projlib_datetime_display_year_month_day:n
+  {
+    \__projlib_datetime_display_year_month_day:en { #1 } {}
+  }
+
+\cs_new_protected:Nn \projlib_datetime_display_year_month_day_uppercase:n
+  {
+    \__projlib_datetime_display_year_month_day:en { #1 } { _uppercase }
+  }
+
+\cs_new_protected:Nn \__projlib_datetime_display_year_month_day:nn
+  {
+    \regex_match:nnTF { \A \d{4}-\d{1,2}-\d{1,2} \Z } { #1 }
+      {
+        \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+        \cs_if_exist_use:c { projlib_datetime_display_year_month_day #2 _ \languagename :nnn }
+          { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % year
+          { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % month
+          { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 3 } } } % day
+      }
+      {
+        \regex_match:nnTF { \A \d{4}-\d{1,2} \Z } { #1 }
+          {
+            \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+            \cs_if_exist_use:c { projlib_datetime_display_year_month #2 _ \languagename :nn }
+              { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % year
+              { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % month
+          }
+          {
+            \regex_match:nnTF { \A \d{1,2}-\d{1,2} \Z } { #1 }
+              {
+                \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+                \cs_if_exist_use:c { projlib_datetime_display_month_day #2 _ \languagename :nn }
+                  { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % month
+                  { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % day
+              }
+              {
+                #1
+              }
+          }
+      }
+  }
+\cs_generate_variant:Nn \__projlib_datetime_display_year_month_day:nn { en }
+
+
+\cs_new_protected:Nn \projlib_datetime_display_month_day_year:n
+{
+  \__projlib_datetime_display_month_day_year:en { #1 } {}
+}
+
+\cs_new_protected:Nn \projlib_datetime_display_month_day_year_uppercase:n
+{
+  \__projlib_datetime_display_month_day_year:en { #1 } { _uppercase }
+}
+
+\cs_new_protected:Nn \__projlib_datetime_display_month_day_year:nn
+{
+  \regex_match:nnTF { \A \d{1,2}-\d{1,2}-\d{4} \Z } { #1 }
+    {
+      \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+      \cs_if_exist_use:c { projlib_datetime_display_month_day_year #2 _ \languagename :nnn }
+        { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 3 } } } % year
+        { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % month
+        { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % day
+    }
+    {
+      \regex_match:nnTF { \A \d{1,2}-\d{4} \Z } { #1 }
+        {
+          \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+          \cs_if_exist_use:c { projlib_datetime_display_year_month #2 _ \languagename :nn }
+            { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % year
+            { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % month
+        }
+        {
+          \regex_match:nnTF { \A \d{1,2}-\d{1,2} \Z } { #1 }
+            {
+              \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+              \cs_if_exist_use:c { projlib_datetime_display_month_day #2 _ \languagename :nn }
+                { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % month
+                { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % day
+            }
+            {
+              #1
+            }
+        }
+    }
+}
+\cs_generate_variant:Nn \__projlib_datetime_display_month_day_year:nn { en }
+
+
+\cs_new_protected:Nn \projlib_datetime_display_day_month_year:n
+{
+  \__projlib_datetime_display_day_month_year:en { #1 } {}
+}
+
+\cs_new_protected:Nn \projlib_datetime_display_day_month_year_uppercase:n
+{
+  \__projlib_datetime_display_day_month_year:en { #1 } { _uppercase }
+}
+
+\cs_new_protected:Nn \__projlib_datetime_display_day_month_year:nn
+{
+  \regex_match:nnTF { \A \d{1,2}-\d{1,2}-\d{4} \Z } { #1 }
+    {
+      \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+      \cs_if_exist_use:c { projlib_datetime_display_day_month_year #2 _ \languagename :nnn }
+        { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 3 } } } % year
+        { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % month
+        { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % day
+    }
+    {
+      \regex_match:nnTF { \A \d{1,2}-\d{4} \Z } { #1 }
+        {
+          \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+          \cs_if_exist_use:c { projlib_datetime_display_year_month #2 _ \languagename :nn }
+            { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % year
+            { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % month
+        }
+        {
+          \regex_match:nnTF { \A \d{1,2}-\d{1,2} \Z } { #1 }
+            {
+              \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+              \cs_if_exist_use:c { projlib_datetime_display_month_day #2 _ \languagename :nn }
+                { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } } % month
+                { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } } % day
+            }
+            {
+              #1
+            }
+        }
+    }
+}
+\cs_generate_variant:Nn \__projlib_datetime_display_day_month_year:nn { en }
+
+
+\cs_new_protected:Nn \__projlib_datetime_date_parse_year_month_day:n
+  {
+    \regex_match:nnTF { \A \d{4}-\d{1,2}(|-\d{1,2}) \Z } { #1 }
+      {
+        \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+      }
+      {
+        \regex_match:nnT { \A \d{1,2}-\d{1,2} \Z } { #1 }
+          {
+            \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+            \seq_put_left:Nn \l__projlib_datetime_date_seq {}
+          }
+      }
+  }
+
+\cs_new_protected:Nn \__projlib_datetime_date_parse_month_day_year:n
+  {
+    \regex_match:nnTF { \A \d{1,2}(|-\d{1,2})-\d{4} \Z } { #1 }
+      {
+        \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+        \seq_pop_right:NN \l__projlib_datetime_date_seq \l_tmpa_tl
+        \seq_put_left:NV \l__projlib_datetime_date_seq \l_tmpa_tl
+      }
+      {
+        \regex_match:nnT { \A \d{1,2}-\d{1,2} \Z } { #1 }
+          {
+            \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+            \seq_put_left:Nn \l__projlib_datetime_date_seq {}
+          }
+      }
+  }
+
+\cs_new_protected:Nn \__projlib_datetime_date_parse_day_month_year:n
+  {
+    \regex_match:nnTF { \A \d{1,2}(|-\d{1,2})-\d{4} \Z } { #1 }
+      {
+        \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+        \seq_reverse:N \l__projlib_datetime_date_seq
+      }
+      {
+        \regex_match:nnT { \A \d{1,2}-\d{1,2} \Z } { #1 }
+          {
+            \seq_set_split:Nnn \l__projlib_datetime_date_seq { - } { #1 }
+            \seq_reverse:N \l__projlib_datetime_date_seq
+            \seq_put_left:Nn \l__projlib_datetime_date_seq {}
+          }
+      }
+  }
+
+\cs_new:Nn \__projlib_datetime_input_format_to_str:
+  {
+    \str_case_e:nn { \g__projlib_datetime_input_format_tl }
+      {
+        { year-month-day } { year_month_day }
+        { month-day-year } { month_day_year }
+        { day-month-year } { day_month_year }
+      }
+  }
+
+\cs_new_protected:Nn \__projlib_datetime_display_date_according_to_format:nn
+  {
+    \cs_if_exist_use:c { __projlib_datetime_date_parse_ \__projlib_datetime_input_format_to_str: :n } { #1 }
+    \str_case_e:nnF { \l__projlib_datetime_output_format_tl }
+      {
+        { only-year-month }
+          {
+            \cs_if_exist_use:c { projlib_datetime_display_year_month #2 _ \languagename :nn }
+              { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } }
+              { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } }
+          }
+        { only-month-day  }
+          {
+            \cs_if_exist_use:c { projlib_datetime_display_month_day #2 _ \languagename :nn }
+              { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } }
+              { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 3 } } }
+          }
+        { only-year       }
+          {
+            \cs_if_exist_use:c { projlib_datetime_display_year #2 _ \languagename :n }
+              { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } }
+          }
+        { only-month      }
+          {
+            \cs_if_exist_use:c { projlib_datetime_display_month #2 _ \languagename :n }
+              { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } }
+          }
+        { only-day        }
+          {
+            \cs_if_exist_use:c { projlib_datetime_display_day #2 _ \languagename :n }
+              { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 3 } } }
+          }
+      }
+      {
+        \cs_if_exist_use:c { projlib_datetime_display_ \__projlib_datetime_input_format_to_str: #2 :n } { #1 }
+      }
+  }
+
+\NewDocumentCommand \ProjLibdate { O{} m }
+  {
+    \group_begin:
+      \keys_set:nn { projlib-datetime-command } { #1 }
+      \tl_set:Nn \l_tmpa_tl { #2 }
+      \regex_replace_all:nnN { \D } { - } \l_tmpa_tl
+      \__projlib_datetime_display_date_according_to_format:nn { \l_tmpa_tl } {}
+    \group_end:
+  }
+
+\NewDocumentCommand \ProjLibDate { O{} m }
+  {
+    \group_begin:
+      \keys_set:nn { projlib-datetime-command } { #1 }
+      \tl_set:Nn \l_tmpa_tl { #2 }
+      \regex_replace_all:nnN { \D } { - } \l_tmpa_tl
+      \__projlib_datetime_display_date_according_to_format:nn { \l_tmpa_tl } { _uppercase }
+    \group_end:
+  }
+
+
+\int_new:N \l__projlib_datetime_day_of_week_day_int
+\int_new:N \l__projlib_datetime_day_of_week_month_int
+\int_new:N \l__projlib_datetime_day_of_week_year_int
+\int_new:N \l__projlib_datetime_day_of_week_century_int
+\int_new:N \l__projlib_datetime_day_of_week_result_int
+\cs_new:Nn \__projlib_datetime_calculate_day_of_week_with_year_month_day:nnn
+  {
+    \int_set:Nn \l__projlib_datetime_day_of_week_day_int { #3 }
+    \int_compare:nNnTF { #2 } < { 3 }
+      {
+        \int_set:Nn \l__projlib_datetime_day_of_week_year_int { \int_eval:n { #1 - 1 } }
+      }
+      {
+        \int_set:Nn \l__projlib_datetime_day_of_week_year_int { #1 }
+      }
+    \int_set:Nn \l__projlib_datetime_day_of_week_century_int { \int_eval:n { \l__projlib_datetime_day_of_week_year_int / 100 } }
+    \int_set:Nn \l__projlib_datetime_day_of_week_year_int { \int_mod:nn { \l__projlib_datetime_day_of_week_year_int } { 100 } }
+    \int_set:Nn \l__projlib_datetime_day_of_week_month_int
+      {
+        \int_case:nnF { #2 }
+          {
+            {  1 } { 0 }
+            {  2 } { 3 }
+            {  3 } { 2 }
+            {  4 } { 5 }
+            {  5 } { 0 }
+            {  6 } { 3 }
+            {  7 } { 5 }
+            {  8 } { 1 }
+            {  9 } { 4 }
+            { 10 } { 6 }
+            { 11 } { 2 }
+            { 12 } { 4 }
+          }        { 0 }
+      }
+    \int_set:Nn \l__projlib_datetime_day_of_week_result_int
+      {
+        \int_eval:n
+          {
+              \l__projlib_datetime_day_of_week_day_int
+            + \l__projlib_datetime_day_of_week_month_int
+            +\l__projlib_datetime_day_of_week_year_int
+            + \int_div_truncate:nn { \l__projlib_datetime_day_of_week_year_int } { 4 }
+            + \int_div_truncate:nn { \l__projlib_datetime_day_of_week_century_int } { 4 }
+            - 2 * \l__projlib_datetime_day_of_week_century_int
+          }
+      }
+    \int_set:Nn \l__projlib_datetime_day_of_week_result_int
+      {
+        \int_mod:nn { \l__projlib_datetime_day_of_week_result_int } { 7 }
+      }
+    \int_compare:nNnT { \l__projlib_datetime_day_of_week_result_int } < { 1 }
+      {
+        \int_set:Nn \l__projlib_datetime_day_of_week_result_int
+          {
+            \int_eval:n { \l__projlib_datetime_day_of_week_result_int + 7 }
+          }
+      }
+  }
+
+
+\cs_new_protected:Nn \projlib_datetime_display_week:n
+  {
+    \__projlib_datetime_display_week_according_to_format:en { #1 } {}
+  }
+
+\cs_new_protected:Nn \projlib_datetime_display_week_uppercase:n
+  {
+    \__projlib_datetime_display_week_according_to_format:en { #1 } { _uppercase }
+  }
+
+\cs_new_protected:Nn \__projlib_datetime_display_week_according_to_format:nn
+  {
+    \projlib_datetime_calculate_week_according_to_format:n { #1 }
+    \cs_if_exist_use:c { projlib_datetime_display_week #2 _ \languagename :n } { \l__projlib_datetime_day_of_week_result_int }
+  }
+\cs_generate_variant:Nn \__projlib_datetime_display_week_according_to_format:nn { en }
+
+
+\cs_new_protected:Nn \projlib_datetime_calculate_week_according_to_format:n
+  {
+    \cs_if_exist_use:c { __projlib_datetime_date_parse_ \__projlib_datetime_input_format_to_str: :n } { #1 }
+    \__projlib_datetime_calculate_day_of_week_with_year_month_day:nnn
+      { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 1 } } }
+      { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 2 } } }
+      { \int_eval:n { \seq_item:Nn \l__projlib_datetime_date_seq { 3 } } }
+  }
+
+
+% For each language, there are 7 groups of functions:
+% 1) \projlib_datetime_display_year_month_day_<languagename>:nnn
+%    \projlib_datetime_display_year_month_day_uppercase_<languagename>:nnn
+% 2) \projlib_datetime_display_year_month_<languagename>:nn
+%    \projlib_datetime_display_year_month_uppercase_<languagename>:nn
+% 3) \projlib_datetime_display_month_day_<languagename>:nn
+%    \projlib_datetime_display_month_day_uppercase_<languagename>:nn
+% 4) \projlib_datetime_display_year_<languagename>:n
+%    \projlib_datetime_display_year_uppercase_<languagename>:n
+% 5) \projlib_datetime_display_month_<languagename>:n
+%    \projlib_datetime_display_month_uppercase_<languagename>:n
+% 6) \projlib_datetime_display_day_<languagename>:n
+%    \projlib_datetime_display_day_uppercase_<languagename>:n
+% 7) \projlib_datetime_display_week_<languagename>:n
+%    \projlib_datetime_display_week_uppercase_<languagename>:n
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_english:nnn
+  {
+    \projlib_datetime_display_month_day_english:nn { #2 } { #3 }
+    ,\nobreakspace
+    \projlib_datetime_display_year_english:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_english:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_english:nnn
+  {
+    \projlib_datetime_display_month_day_uppercase_english:nn { #2 } { #3 }
+    ,\nobreakspace
+    \projlib_datetime_display_year_english:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_english:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_english:nn
+  {
+    \projlib_datetime_display_month_english:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_english:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_english:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_uppercase_english:nn
+  {
+    \projlib_datetime_display_month_uppercase_english:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_english:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_english:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_english:nn
+  {
+    \projlib_datetime_display_month_english:n { #1 }
+    \nobreakspace
+    \projlib_datetime_display_day_english:n { #2 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_english:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_uppercase_english:nn
+  {
+    \projlib_datetime_display_month_uppercase_english:n { #1 }
+    \nobreakspace
+    \projlib_datetime_display_day_english:n { #2 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_english:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_english:n { #1 }
+\cs_new:Nn \projlib_datetime_display_year_uppercase_english:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_month_english:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { January   }
+        { 2 }  { February  }
+        { 3 }  { March     }
+        { 4 }  { April     }
+        { 5 }  { May       }
+        { 6 }  { June      }
+        { 7 }  { July      }
+        { 8 }  { August    }
+        { 9 }  { September }
+        { 10 } { October   }
+        { 11 } { November  }
+        { 12 } { December  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_month_uppercase_english:n
+  {
+    \projlib_datetime_display_month_english:n { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_day_english:n { #1 }
+\cs_new:Nn \projlib_datetime_display_day_uppercase_english:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_week_english:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Monday    }
+        { 2 }  { Tuesday   }
+        { 3 }  { Wednesday }
+        { 4 }  { Thursday  }
+        { 5 }  { Friday    }
+        { 6 }  { Saturday  }
+        { 7 }  { Sunday    }
+      } { ??? }
+  }
+
+\cs_new:Nn \projlib_datetime_display_week_uppercase_english:n
+  {
+    \projlib_datetime_display_week_english:n { #1 }
+  }
+
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_french:nnn
+  {
+    \projlib_datetime_display_month_day_french:nn { #2 } { #3 }
+    \nobreakspace
+    \projlib_datetime_display_year_french:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_french:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_french:nnn
+  {
+    \projlib_datetime_display_month_day_uppercase_french:nn { #2 } { #3 }
+    \nobreakspace
+    \projlib_datetime_display_year_french:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_french:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_french:nn
+  {
+    \projlib_datetime_display_month_french:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_french:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_french:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_uppercase_french:nn
+  {
+    \projlib_datetime_display_month_uppercase_french:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_french:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_french:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_french:nn
+  {
+    \projlib_datetime_display_day_french:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_month_french:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_french:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_uppercase_french:nn
+  {
+    \projlib_datetime_display_month_day_french:nn { #1 } { #2 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_french:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_french:n { #1 }
+\cs_new:Nn \projlib_datetime_display_year_uppercase_french:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_month_french:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { janvier   }
+        { 2 }  { février   }
+        { 3 }  { mars      }
+        { 4 }  { avril     }
+        { 5 }  { mai       }
+        { 6 }  { juin      }
+        { 7 }  { juillet   }
+        { 8 }  { août      }
+        { 9 }  { septembre }
+        { 10 } { octobre   }
+        { 11 } { novembre  }
+        { 12 } { décembre  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_month_uppercase_french:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Janvier   }
+        { 2 }  { Février   }
+        { 3 }  { Mars      }
+        { 4 }  { Avril     }
+        { 5 }  { Mai       }
+        { 6 }  { Juin      }
+        { 7 }  { Juillet   }
+        { 8 }  { Août      }
+        { 9 }  { Septembre }
+        { 10 } { Octobre   }
+        { 11 } { Novembre  }
+        { 12 } { Décembre  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_day_french:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 } { 1 \projlib_datetime_text_superscript:n { er } }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_day_uppercase_french:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 } { 1 \projlib_datetime_text_superscript:n { er } }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_week_french:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { lundi    }
+        { 2 }  { mardi    }
+        { 3 }  { mercredi }
+        { 4 }  { jeudi    }
+        { 5 }  { vendredi }
+        { 6 }  { samedi   }
+        { 7 }  { dimanche }
+      } { ??? }
+  }
+
+\cs_new:Nn \projlib_datetime_display_week_uppercase_french:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Lundi    }
+        { 2 }  { Mardi    }
+        { 3 }  { Mercredi }
+        { 4 }  { Jeudi    }
+        { 5 }  { Vendredi }
+        { 6 }  { Samedi   }
+        { 7 }  { Dimanche }
+      } { ??? }
+  }
+
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_ngerman:nnn
+  {
+    \projlib_datetime_display_month_day_ngerman:nn { #2 } { #3 }
+    \nobreakspace
+    \projlib_datetime_display_year_ngerman:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_ngerman:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_ngerman:nnn
+  {
+    \projlib_datetime_display_month_day_uppercase_ngerman:nn { #2 } { #3 }
+    \nobreakspace
+    \projlib_datetime_display_year_ngerman:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_ngerman:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_ngerman:nn
+  {
+    \projlib_datetime_display_month_ngerman:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_ngerman:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_ngerman:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_uppercase_ngerman:nn
+  {
+    \projlib_datetime_display_month_uppercase_ngerman:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_ngerman:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_ngerman:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_ngerman:nn
+  {
+    \projlib_datetime_display_day_ngerman:n { #2 }
+    .\nobreakspace
+    \projlib_datetime_display_month_ngerman:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_ngerman:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_uppercase_ngerman:nn
+  {
+    \projlib_datetime_display_month_day_ngerman:nn { #1 } { #2 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_ngerman:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_ngerman:n { #1 }
+\cs_new:Nn \projlib_datetime_display_year_uppercase_ngerman:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_month_ngerman:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Januar    }
+        { 2 }  { Februar   }
+        { 3 }  { März      }
+        { 4 }  { April     }
+        { 5 }  { Mai       }
+        { 6 }  { Juni      }
+        { 7 }  { Juli      }
+        { 8 }  { August    }
+        { 9 }  { September }
+        { 10 } { Oktober   }
+        { 11 } { November  }
+        { 12 } { Dezember  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_month_uppercase_ngerman:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Januar    }
+        { 2 }  { Februar   }
+        { 3 }  { März      }
+        { 4 }  { April     }
+        { 5 }  { Mai       }
+        { 6 }  { Juni      }
+        { 7 }  { Juli      }
+        { 8 }  { August    }
+        { 9 }  { September }
+        { 10 } { Oktober   }
+        { 11 } { November  }
+        { 12 } { Dezember  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_day_ngerman:n { #1 }
+\cs_new:Nn \projlib_datetime_display_day_uppercase_ngerman:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_week_ngerman:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Montag     }
+        { 2 }  { Dienstag   }
+        { 3 }  { Mittwoch   }
+        { 4 }  { Donnerstag }
+        { 5 }  { Freitag    }
+        { 6 }  { Samstag    }
+        { 7 }  { Sonntag    }
+      } { ??? }
+  }
+
+\cs_new:Nn \projlib_datetime_display_week_uppercase_ngerman:n
+  {
+    \projlib_datetime_display_week_ngerman:n { #1 }
+  }
+
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_italian:nnn
+  {
+    \projlib_datetime_display_month_day_italian:nn { #2 } { #3 }
+    \nobreakspace
+    \projlib_datetime_display_year_italian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_italian:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_italian:nnn
+  {
+    \projlib_datetime_display_month_day_uppercase_italian:nn { #2 } { #3 }
+    \nobreakspace
+    \projlib_datetime_display_year_italian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_italian:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_italian:nn
+  {
+    \projlib_datetime_display_month_italian:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_italian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_italian:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_uppercase_italian:nn
+  {
+    \projlib_datetime_display_month_uppercase_italian:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_italian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_italian:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_italian:nn
+  {
+    \projlib_datetime_display_day_italian:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_month_italian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_italian:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_uppercase_italian:nn
+  {
+    \projlib_datetime_display_month_day_italian:nn { #1 } { #2 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_italian:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_italian:n { #1 }
+\cs_new:Nn \projlib_datetime_display_year_uppercase_italian:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_month_italian:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { gennaio   }
+        { 2 }  { febbraio  }
+        { 3 }  { marzo     }
+        { 4 }  { aprile    }
+        { 5 }  { maggio    }
+        { 6 }  { giugno    }
+        { 7 }  { luglio    }
+        { 8 }  { agosto    }
+        { 9 }  { settembre }
+        { 10 } { ottobre   }
+        { 11 } { novembre  }
+        { 12 } { dicembre  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_month_uppercase_italian:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Gennaio   }
+        { 2 }  { Febbraio  }
+        { 3 }  { Marzo     }
+        { 4 }  { Aprile    }
+        { 5 }  { Maggio    }
+        { 6 }  { Giugno    }
+        { 7 }  { Luglio    }
+        { 8 }  { Agosto    }
+        { 9 }  { Settembre }
+        { 10 } { Ottobre   }
+        { 11 } { Novembre  }
+        { 12 } { Dicembre  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_day_italian:n { #1 }
+\cs_new:Nn \projlib_datetime_display_day_uppercase_italian:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_week_italian:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { lunedì     }
+        { 2 }  { martedì    }
+        { 3 }  { mercoledì  }
+        { 4 }  { giovedì    }
+        { 5 }  { venerdì    }
+        { 6 }  { sabato     }
+        { 7 }  { domenica   }
+      } { ??? }
+  }
+
+\cs_new:Nn \projlib_datetime_display_week_uppercase_italian:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Lunedì     }
+        { 2 }  { Martedì    }
+        { 3 }  { Mercoledì  }
+        { 4 }  { Giovedì    }
+        { 5 }  { Venerdì    }
+        { 6 }  { Sabato     }
+        { 7 }  { Domenica   }
+      } { ??? }
+  }
+
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_portuguese:nnn
+  {
+    \projlib_datetime_display_month_day_portuguese:nn { #2 } { #3 }
+    \nobreakspace de \nobreakspace
+    \projlib_datetime_display_year_portuguese:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_portuguese:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_portuguese:nnn
+  {
+    \projlib_datetime_display_month_day_uppercase_portuguese:nn { #2 } { #3 }
+    \nobreakspace de \nobreakspace
+    \projlib_datetime_display_year_portuguese:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_portuguese:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_portuguese:nn
+  {
+    \projlib_datetime_display_month_portuguese:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_portuguese:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_portuguese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_uppercase_portuguese:nn
+  {
+    \projlib_datetime_display_month_uppercase_portuguese:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_portuguese:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_portuguese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_portuguese:nn
+  {
+    \projlib_datetime_display_day_portuguese:n { #2 }
+    \nobreakspace de \nobreakspace
+    \projlib_datetime_display_month_uppercase_portuguese:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_portuguese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_uppercase_portuguese:nn
+  {
+    \projlib_datetime_display_month_day_portuguese:nn { #1 } { #2 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_portuguese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_portuguese:n { #1 }
+\cs_new:Nn \projlib_datetime_display_year_uppercase_portuguese:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_month_portuguese:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { janeiro   }
+        { 2 }  { fevereiro }
+        { 3 }  { março     }
+        { 4 }  { abril     }
+        { 5 }  { maio      }
+        { 6 }  { junho     }
+        { 7 }  { julho     }
+        { 8 }  { agosto    }
+        { 9 }  { setembro  }
+        { 10 } { outubro   }
+        { 11 } { novembro  }
+        { 12 } { dezembro  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_month_uppercase_portuguese:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Janeiro   }
+        { 2 }  { Fevereiro }
+        { 3 }  { Março     }
+        { 4 }  { Abril     }
+        { 5 }  { Maio      }
+        { 6 }  { Junho     }
+        { 7 }  { Julho     }
+        { 8 }  { Agosto    }
+        { 9 }  { Setembro  }
+        { 10 } { Outubro   }
+        { 11 } { Novembro  }
+        { 12 } { Dezembro  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_day_portuguese:n { #1 }
+\cs_new:Nn \projlib_datetime_display_day_uppercase_portuguese:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_week_portuguese:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { segunda-feira }
+        { 2 }  { terça-feira   }
+        { 3 }  { quarta-feira  }
+        { 4 }  { quinta-feira  }
+        { 5 }  { sexta-feira   }
+        { 6 }  { sábado        }
+        { 7 }  { domingo       }
+      } { ??? }
+  }
+
+\cs_new:Nn \projlib_datetime_display_week_uppercase_portuguese:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Segunda-feira }
+        { 2 }  { Terça-feira   }
+        { 3 }  { Quarta-feira  }
+        { 4 }  { Quinta-feira  }
+        { 5 }  { Sexta-feira   }
+        { 6 }  { Sábado        }
+        { 7 }  { Domingo       }
+      } { ??? }
+  }
+
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_brazilian:nnn
+  {
+    \projlib_datetime_display_month_day_brazilian:nn { #2 } { #3 }
+    \nobreakspace de \nobreakspace
+    \projlib_datetime_display_year_brazilian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_brazilian:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_brazilian:nnn
+  {
+    \projlib_datetime_display_month_day_uppercase_brazilian:nn { #2 } { #3 }
+    \nobreakspace de \nobreakspace
+    \projlib_datetime_display_year_brazilian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_brazilian:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_brazilian:nn
+  {
+    \projlib_datetime_display_month_brazilian:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_brazilian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_brazilian:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_uppercase_brazilian:nn
+  {
+    \projlib_datetime_display_month_uppercase_brazilian:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_brazilian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_brazilian:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_brazilian:nn
+  {
+    \projlib_datetime_display_day_brazilian:n { #2 }
+    \nobreakspace de \nobreakspace
+    \projlib_datetime_display_month_uppercase_brazilian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_brazilian:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_uppercase_brazilian:nn
+  {
+    \projlib_datetime_display_month_day_brazilian:nn { #1 } { #2 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_brazilian:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_brazilian:n { #1 }
+\cs_new:Nn \projlib_datetime_display_year_uppercase_brazilian:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_month_brazilian:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { janeiro   }
+        { 2 }  { fevereiro }
+        { 3 }  { março     }
+        { 4 }  { abril     }
+        { 5 }  { maio      }
+        { 6 }  { junho     }
+        { 7 }  { julho     }
+        { 8 }  { agosto    }
+        { 9 }  { setembro  }
+        { 10 } { outubro   }
+        { 11 } { novembro  }
+        { 12 } { dezembro  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_month_uppercase_brazilian:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Janeiro   }
+        { 2 }  { Fevereiro }
+        { 3 }  { Março     }
+        { 4 }  { Abril     }
+        { 5 }  { Maio      }
+        { 6 }  { Junho     }
+        { 7 }  { Julho     }
+        { 8 }  { Agosto    }
+        { 9 }  { Setembro  }
+        { 10 } { Outubro   }
+        { 11 } { Novembro  }
+        { 12 } { Dezembro  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_day_brazilian:n { #1 }
+\cs_new:Nn \projlib_datetime_display_day_uppercase_brazilian:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_week_brazilian:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { segunda-feira }
+        { 2 }  { terça-feira   }
+        { 3 }  { quarta-feira  }
+        { 4 }  { quinta-feira  }
+        { 5 }  { sexta-feira   }
+        { 6 }  { sábado        }
+        { 7 }  { domingo       }
+      } { ??? }
+  }
+
+\cs_new:Nn \projlib_datetime_display_week_uppercase_brazilian:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Segunda-feira }
+        { 2 }  { Terça-feira   }
+        { 3 }  { Quarta-feira  }
+        { 4 }  { Quinta-feira  }
+        { 5 }  { Sexta-feira   }
+        { 6 }  { Sábado        }
+        { 7 }  { Domingo       }
+      } { ??? }
+  }
+
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_spanish:nnn
+  {
+    \projlib_datetime_display_month_day_spanish:nn { #2 } { #3 }
+    \nobreakspace de \nobreakspace
+    \projlib_datetime_display_year_spanish:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_spanish:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_spanish:nnn
+  {
+    \projlib_datetime_display_month_day_uppercase_spanish:nn { #2 } { #3 }
+    \nobreakspace de \nobreakspace
+    \projlib_datetime_display_year_spanish:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_spanish:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_spanish:nn
+  {
+    \projlib_datetime_display_month_spanish:n { #2 }
+    \nobreakspace de \nobreakspace
+    \projlib_datetime_display_year_spanish:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_spanish:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_uppercase_spanish:nn
+  {
+    \projlib_datetime_display_month_uppercase_spanish:n { #2 }
+    \nobreakspace de \nobreakspace
+    \projlib_datetime_display_year_spanish:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_spanish:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_spanish:nn
+  {
+    \projlib_datetime_display_day_spanish:n { #2 }
+    \nobreakspace de \nobreakspace
+    \projlib_datetime_display_month_spanish:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_spanish:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_uppercase_spanish:nn
+  {
+    \projlib_datetime_display_month_day_spanish:nn { #1 } { #2 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_spanish:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_spanish:n { #1 }
+\cs_new:Nn \projlib_datetime_display_year_uppercase_spanish:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_month_spanish:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { enero      }
+        { 2 }  { febrero    }
+        { 3 }  { marzo      }
+        { 4 }  { abril      }
+        { 5 }  { mayo       }
+        { 6 }  { junio      }
+        { 7 }  { julio      }
+        { 8 }  { agosto     }
+        { 9 }  { septiembre }
+        { 10 } { octubre    }
+        { 11 } { noviembre  }
+        { 12 } { diciembre  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_month_uppercase_spanish:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Enero      }
+        { 2 }  { Febrero    }
+        { 3 }  { Marzo      }
+        { 4 }  { Abril      }
+        { 5 }  { Mayo       }
+        { 6 }  { Junio      }
+        { 7 }  { Julio      }
+        { 8 }  { Agosto     }
+        { 9 }  { Septiembre }
+        { 10 } { Octubre    }
+        { 11 } { Noviembre  }
+        { 12 } { Diciembre  }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_day_spanish:n { #1 }
+\cs_new:Nn \projlib_datetime_display_day_uppercase_spanish:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_week_spanish:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { lunes      }
+        { 2 }  { martes     }
+        { 3 }  { miércoles  }
+        { 4 }  { jueves     }
+        { 5 }  { viernes    }
+        { 6 }  { sábado     }
+        { 7 }  { domingo    }
+      } { ??? }
+  }
+
+\cs_new:Nn \projlib_datetime_display_week_uppercase_spanish:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Lunes      }
+        { 2 }  { Martes     }
+        { 3 }  { Miércoles  }
+        { 4 }  { Jueves     }
+        { 5 }  { Viernes    }
+        { 6 }  { Sábado     }
+        { 7 }  { Domingo    }
+      } { ??? }
+  }
+
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_schinese:nnn
+  {
+    #1 年 #2 月 #3 日
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_schinese:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_schinese:nnn
+  {
+    #1 年 #2 月 #3 日
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_schinese:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_schinese:nn
+  {
+    #1 年 #2 月
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_schinese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_uppercase_schinese:nn
+  {
+    #1 年 #2 月
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_schinese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_schinese:nn
+  {
+    #1 月 #2 日
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_schinese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_uppercase_schinese:nn
+  {
+    #1 月 #2 日
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_schinese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_schinese:n { #1 年 }
+\cs_new:Nn \projlib_datetime_display_year_uppercase_schinese:n { #1 年 }
+\cs_new:Nn \projlib_datetime_display_month_schinese:n { #1 月 }
+\cs_new:Nn \projlib_datetime_display_month_uppercase_schinese:n { #1 月 }
+\cs_new:Nn \projlib_datetime_display_day_schinese:n { #1 }
+\cs_new:Nn \projlib_datetime_display_day_uppercase_schinese:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_week_schinese:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { 星期一    }
+        { 2 }  { 星期二    }
+        { 3 }  { 星期三    }
+        { 4 }  { 星期四    }
+        { 5 }  { 星期五    }
+        { 6 }  { 星期六    }
+        { 7 }  { 星期日    }
+      } { ??? }
+  }
+
+\cs_new:Nn \projlib_datetime_display_week_uppercase_schinese:n
+  {
+    \projlib_datetime_display_week_schinese:n { #1 }
+  }
+
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_tchinese:nnn
+  {
+    #1 年 #2 月 #3 日
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_tchinese:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_tchinese:nnn
+  {
+    #1 年 #2 月 #3 日
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_tchinese:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_tchinese:nn
+  {
+    #1 年 #2 月
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_tchinese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_uppercase_tchinese:nn
+  {
+    #1 年 #2 月
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_tchinese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_tchinese:nn
+  {
+    #1 月 #2 日
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_tchinese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_uppercase_tchinese:nn
+  {
+    #1 月 #2 日
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_tchinese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_tchinese:n { #1 年 }
+\cs_new:Nn \projlib_datetime_display_year_uppercase_tchinese:n { #1 年 }
+\cs_new:Nn \projlib_datetime_display_month_tchinese:n { #1 月 }
+\cs_new:Nn \projlib_datetime_display_month_uppercase_tchinese:n { #1 月 }
+\cs_new:Nn \projlib_datetime_display_day_tchinese:n { #1 }
+\cs_new:Nn \projlib_datetime_display_day_uppercase_tchinese:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_week_tchinese:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { 星期一    }
+        { 2 }  { 星期二    }
+        { 3 }  { 星期三    }
+        { 4 }  { 星期四    }
+        { 5 }  { 星期五    }
+        { 6 }  { 星期六    }
+        { 7 }  { 星期日    }
+      } { ??? }
+  }
+
+\cs_new:Nn \projlib_datetime_display_week_uppercase_tchinese:n
+  {
+    \projlib_datetime_display_week_tchinese:n { #1 }
+  }
+
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_japanese:nnn
+  {
+    #1 年 #2 月 #3 日
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_japanese:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_japanese:nnn
+  {
+    #1 年 #2 月 #3 日
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_japanese:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_japanese:nn
+  {
+    #1 年 #2 月
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_japanese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_uppercase_japanese:nn
+  {
+    #1 年 #2 月
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_japanese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_japanese:nn
+  {
+    #1 月 #2 日
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_japanese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_uppercase_japanese:nn
+  {
+    #1 月 #2 日
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_japanese:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_japanese:n { #1 年 }
+\cs_new:Nn \projlib_datetime_display_year_uppercase_japanese:n { #1 年 }
+\cs_new:Nn \projlib_datetime_display_month_japanese:n { #1 月 }
+\cs_new:Nn \projlib_datetime_display_month_uppercase_japanese:n { #1 月 }
+\cs_new:Nn \projlib_datetime_display_day_japanese:n { #1 }
+\cs_new:Nn \projlib_datetime_display_day_uppercase_japanese:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_week_japanese:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { 月曜日    }
+        { 2 }  { 火曜日    }
+        { 3 }  { 水曜日    }
+        { 4 }  { 木曜日    }
+        { 5 }  { 金曜日    }
+        { 6 }  { 土曜日    }
+        { 7 }  { 日曜日    }
+      } { ??? }
+  }
+
+\cs_new:Nn \projlib_datetime_display_week_uppercase_japanese:n
+  {
+    \projlib_datetime_display_week_japanese:n { #1 }
+  }
+
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_russian:nnn
+  {
+    \projlib_datetime_display_month_day_russian:nn { #2 } { #3 }
+    \nobreakspace
+    \projlib_datetime_display_year_russian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_russian:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_day_uppercase_russian:nnn
+  {
+    \projlib_datetime_display_month_day_uppercase_russian:nn { #2 } { #3 }
+    \nobreakspace
+    \projlib_datetime_display_year_russian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_day_uppercase_russian:nnn { VVV, eee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_russian:nn
+  {
+    \projlib_datetime_display_month_russian:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_russian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_russian:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_month_uppercase_russian:nn
+  {
+    \projlib_datetime_display_month_uppercase_russian:n { #2 }
+    \nobreakspace
+    \projlib_datetime_display_year_russian:n { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_year_month_uppercase_russian:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_russian:nn
+  {
+    \projlib_datetime_display_day_russian:n { #2 }
+    \nobreakspace
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { января    }
+        { 2 }  { февраля   }
+        { 3 }  { марта     }
+        { 4 }  { апреля    }
+        { 5 }  { мая       }
+        { 6 }  { июня      }
+        { 7 }  { июля      }
+        { 8 }  { августа   }
+        { 9 }  { сентября  }
+        { 10 } { октября   }
+        { 11 } { ноября    }
+        { 12 } { декабря   }
+      } { #1 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_russian:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_month_day_uppercase_russian:nn
+  {
+    \projlib_datetime_display_month_day_russian:nn { #1 } { #2 }
+  }
+\cs_generate_variant:Nn \projlib_datetime_display_month_day_uppercase_russian:nn { VV, ee }
+
+\cs_new:Nn \projlib_datetime_display_year_russian:n { #1 ~ г. }
+\cs_new:Nn \projlib_datetime_display_year_uppercase_russian:n { #1 ~ г. }
+
+\cs_new:Nn \projlib_datetime_display_month_russian:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { январь    }
+        { 2 }  { февраль   }
+        { 3 }  { март      }
+        { 4 }  { апрель    }
+        { 5 }  { май       }
+        { 6 }  { июнь      }
+        { 7 }  { июль      }
+        { 8 }  { август    }
+        { 9 }  { сентябрь  }
+        { 10 } { октябрь   }
+        { 11 } { ноябрь    }
+        { 12 } { декабрь   }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_month_uppercase_russian:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Январь    }
+        { 2 }  { Февраль   }
+        { 3 }  { Март      }
+        { 4 }  { Апрель    }
+        { 5 }  { Май       }
+        { 6 }  { Июнь      }
+        { 7 }  { Июль      }
+        { 8 }  { Август    }
+        { 9 }  { Сентябрь  }
+        { 10 } { Октябрь   }
+        { 11 } { Ноябрь    }
+        { 12 } { Декабрь   }
+      } { #1 }
+  }
+
+\cs_new:Nn \projlib_datetime_display_day_russian:n { #1 }
+\cs_new:Nn \projlib_datetime_display_day_uppercase_russian:n { #1 }
+
+\cs_new:Nn \projlib_datetime_display_week_russian:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { понедельник }
+        { 2 }  { вторник     }
+        { 3 }  { среда       }
+        { 4 }  { четверг     }
+        { 5 }  { пятница     }
+        { 6 }  { суббота     }
+        { 7 }  { воскресенье }
+      } { ??? }
+  }
+\cs_new:Nn \projlib_datetime_display_week_uppercase_russian:n
+  {
+    \int_case:nnF { #1 }
+      {
+        { 1 }  { Понедельник }
+        { 2 }  { Вторник     }
+        { 3 }  { Среда       }
+        { 4 }  { Четверг     }
+        { 5 }  { Пятница     }
+        { 6 }  { Суббота     }
+        { 7 }  { Воскресенье }
+      } { ??? }
+  }
+
+\endinput
+%%
+%% End of file `projlib-datetime.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,140 @@
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+  {projlib-draft}
+  {2022/02/24} {}
+  {Useful commands during draft stage}
+
+\keys_define:nn { projlib-draft }
+  {
+    , draft   .bool_set:N   = \l__projlib_draft_fast_bool
+    , draft   .initial:n    = { false }
+    , fast    .bool_set:N   = \l__projlib_draft_fast_bool
+    , unknown .code:n       = {}
+  }
+\ProcessKeysOptions { projlib-draft }
+
+\RequirePackage { projlib-language }
+\RequirePackage { xcolor }
+
+\bool_if:NTF \l__projlib_draft_fast_bool
+  {
+    \NewDocumentCommand \projlib_draft_plain_box { O{-paper} m }
+      {
+        \group_begin:
+          \color { #1 }
+          \dim_set:Nn \fboxsep  { 1.5pt }
+          \dim_set:Nn \fboxrule { 1.5pt }
+          \fbox { #2 }
+        \group_end:
+      }
+  }
+  {
+    \PassOptionsToPackage { many } { tcolorbox }
+    \RequirePackage { tcolorbox }
+    \NewTCBox \projlib_draft_plain_box { O{-paper} }
+      {
+        enhanced~jigsaw, breakable,
+        on~line, arc = 1.2pt, outer~arc = 1pt,
+        colframe = #1, colupper = #1, opacityback = 0,
+        boxsep = 1pt, boxrule = 1.2pt,
+        left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,
+      }
+  }
+
+\projlib_langauge_define_multilingual_text:Nn \__dnf_text
+  {
+    EN = To\ be\ finished     ,
+    FR = Pas\ encore\ fini    ,
+    DE = Nicht\ beendet       ,
+    IT = Per\ essere\ finito  ,
+    PT = Não\ terminou        ,
+    BR = Não\ terminou        ,
+    ES = Estar\ terminado     ,
+    CN = 这里尚未完成         ,
+    TC = 這裡尚未完成         ,
+    JP = 終わってない         ,
+    RU = Не\ закончен         ,
+  }
+
+\projlib_langauge_define_multilingual_text:Nn \__dnf_report_text
+  {
+    EN = { Below\ is\ a\ list\ of\ outstanding\ items,
+           \ followed\ by\ the\ corresponding\ page\ numbers.         }     ,
+    FR = { Voici\ la\ liste\ des\ éléments\ en\ suspens,
+           \ suivie\ des\ numéros\ de\ page\ correspondants.          }     ,
+    DE = { Unten\ ist\ eine\ Liste\ der\ ausstehenden\ Posten,
+           \ gefolgt\ von\ den\ entsprechenden\ Seitenzahlen.         }     ,
+    IT = { Qui\ sotto\ c'è\ una\ lista\ di\ voci\ in\ sospeso,
+           \ seguita\ dai\ numeri\ di\ pagina\ corrispondenti.        }     ,
+    PT = { Abaixo\ está\ uma\ lista\ de\ itens\ pendentes,
+           \ seguida\ dos\ números\ de\ página\ correspondentes.      }     ,
+    BR = { Abaixo\ está\ uma\ lista\ de\ itens\ pendentes,
+           \ seguida\ dos\ números\ de\ página\ correspondentes.      }     ,
+    ES = { Aquí está\ la\ lista\ de\ elementos\ pendientes,
+           \ seguida\ de\ los\ números\ de\ página\ correspondientes. }     ,
+    CN = { 以下是未完成事项列表,括号内注明了对应的页码。             }     ,
+    TC = { 以下是未完成事項的列表,括號內註明了對應頁碼。             }     ,
+    JP = { 以下は、未解決の項目とそれに対応するページ番号の一覧です。 }     ,
+    RU = { Ниже\ приведен\ список\ невыполненных\ пунктов
+           \ с\ соответствующими\ номерами\ страниц\ в\ скобках.      }     ,
+  }
+
+\tl_new:c    { __dnf_font }
+\tl_gset:cn  { __dnf_font }        { \normalfont \ttfamily \bfseries \small }
+
+\definecolor { __dnf_color }       { RGB } {  21, 122,  20 }
+
+\newcounter  { __dnf_counter }
+
+\tl_new:N \g__projlib_draft_dnf_report_tl
+
+\NewDocumentCommand \dnf { d<> }
+  {
+    \noindent
+    \projlib_draft_plain_box [ __dnf_color ]
+      {
+        \stepcounter { __dnf_counter }
+        \__dnf_font
+        \__dnf_text
+        \c_space_tl
+        \# \the__dnf_counter
+        \IfNoValueF { #1 } { \, : ~ #1 }
+        \tl_gput_right:Nx \g__projlib_draft_dnf_report_tl
+          {
+            \# \,
+            \int_value:w \the__dnf_counter
+            \c_space_tl \c_space_tl
+            $\langle$
+            \skip_horizontal:n { 0.1em }
+            \cs_if_exist:cTF { hyperlink }
+              {
+                \exp_not:N \hyperlink { page.\thepage } { \thepage }
+              }
+              {
+                \thepage
+              }
+            \skip_horizontal:n { 0.1em }
+            $\rangle$
+            \c_space_tl
+            \IfNoValueF { #1 } { : ~ #1 }
+            \\
+          }
+      }
+  }
+
+\hook_gput_code:nnn { enddocument } { projlib-draft }
+  {
+    \tl_if_blank:VF \g__projlib_draft_dnf_report_tl
+      {
+        \clearpage \noindent
+        \color { __dnf_color }
+        \__dnf_font
+        \__dnf_report_text \\[0.75\baselineskip]
+        \g__projlib_draft_dnf_report_tl
+      }
+  }
+
+\endinput
+%%
+%% End of file `projlib-draft.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-font.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-font.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-font.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,144 @@
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+  {projlib-font}
+  {2022/03/01} {}
+  {Font selection and configuration}
+
+\keys_define:nn { projlib-font }
+  {
+    , useosf           .bool_set:N   = \l__projlib_font_useosf_bool
+    , useosf           .initial:n    = { false }
+    , old-style-figures.bool_set:N   = \l__projlib_font_useosf_bool
+    , old~style~figures.bool_set:N   = \l__projlib_font_useosf_bool
+    , old style figures.bool_set:N   = \l__projlib_font_useosf_bool
+    , lmodern          .bool_set:N   = \l__projlib_font_lmodern_bool
+    , lmodern          .initial:n    = { false }
+    , latin-modern     .bool_set:N   = \l__projlib_font_lmodern_bool
+    , latin~modern     .bool_set:N   = \l__projlib_font_lmodern_bool
+    , latin modern     .bool_set:N   = \l__projlib_font_lmodern_bool
+    , palatino         .bool_set:N   = \l__projlib_font_palatino_bool
+    , palatino         .initial:n    = { false }
+    , times            .bool_set:N   = \l__projlib_font_times_bool
+    , times            .initial:n    = { false }
+    , garamond         .bool_set:N   = \l__projlib_font_garamond_bool
+    , garamond         .initial:n    = { false }
+    , noto             .bool_set:N   = \l__projlib_font_noto_bool
+    , noto             .initial:n    = { false }
+    , biolinum         .bool_set:N   = \l__projlib_font_biolinum_bool
+    , biolinum         .initial:n    = { false }
+    , unknown          .code:n       = {}
+  }
+\ProcessKeysOptions { projlib-font }
+
+\RequirePackage { setspace }
+
+\cs_new:Nn \projlib_font_set_linespacing_latin:n
+  {
+    \cs_if_exist:NTF \projlib_language_set_linespacing_latin:n
+      {
+        \projlib_language_set_linespacing_latin:n { #1 }
+      }
+      {
+        #1
+      }
+  }
+
+\bool_if:NT \l__projlib_font_lmodern_bool
+  {
+    \RequirePackage { amssymb }
+    \bool_if:NTF \l__projlib_font_useosf_bool
+      {
+        \RequirePackage { cfr-lm }
+      }
+      {
+        \RequirePackage { lmodern }
+      }
+    \projlib_font_set_linespacing_latin:n { \setstretch { 1.00 } }
+  }
+
+\bool_if:NT \l__projlib_font_palatino_bool
+  {
+    \RequirePackage { mathpazo }
+    \PassOptionsToPackage { defaultsups } { newpxtext }
+    \RequirePackage { newpxtext }
+    \cs_undefine:c { openbox }
+    \projlib_font_set_linespacing_latin:n { \setstretch { 1.07 } }
+    \bool_if:NT \l__projlib_font_useosf_bool { \useosf }
+  }
+
+\bool_if:NT \l__projlib_font_times_bool
+  {
+    \PassOptionsToPackage { defaultsups } { newtxtext }
+    \RequirePackage { newtxtext }
+    \RequirePackage { newtxmath }
+    \cs_undefine:c { openbox }
+    \projlib_font_set_linespacing_latin:n { \setstretch { 1.00 } }
+    \bool_if:NT \l__projlib_font_useosf_bool { \useosf }
+  }
+
+\bool_if:NT \l__projlib_font_garamond_bool
+  {
+    \bool_if:NF \l__projlib_font_useosf_bool
+      {
+        \PassOptionsToPackage { lining } { ebgaramond }
+      }
+    \RequirePackage [ cmintegrals, cmbraces ] { newtxmath }
+    \cs_undefine:c { openbox }
+    \RequirePackage { ebgaramond-maths }
+    \RequirePackage { ebgaramond }
+    \projlib_font_set_linespacing_latin:n { \setstretch { 1.00 } }
+  }
+
+\bool_if:NT \l__projlib_font_noto_bool
+  {
+    \bool_if:NT \l__projlib_font_useosf_bool
+      {
+        \PassOptionsToPackage { oldstyle } { notomath }
+      }
+    \RequirePackage { anyfontsize }
+    \RequirePackage { notomath }
+    \projlib_font_set_linespacing_latin:n { \setstretch { 1.00 } }
+  }
+
+\bool_if:NT \l__projlib_font_biolinum_bool
+  {
+    \RequirePackage [ OT1 ] { eulervm }
+    \sys_if_engine_pdftex:TF
+      {
+        \bool_if:NT \l__projlib_font_useosf_bool
+          {
+            \PassOptionsToPackage { osf } { biolinum }
+          }
+          \RequirePackage { biolinum }
+          \tl_gset:Nn \familydefault { \biolinum at family }
+      }
+      {
+        \PassOptionsToPackage { no-math } { fontspec }
+        \RequirePackage { fontspec }
+        \bool_if:NTF \l__projlib_font_useosf_bool
+          {
+            \setmainfont { LinBiolinum_R.otf } [
+              BoldFont       = LinBiolinum_RB.otf  ,
+              ItalicFont     = LinBiolinum_RI.otf  ,
+              BoldItalicFont = LinBiolinum_RBO.otf ,
+              Numbers        = OldStyle            , ]
+          }
+          {
+            \setmainfont { LinBiolinum_R.otf } [
+              BoldFont       = LinBiolinum_RB.otf  ,
+              ItalicFont     = LinBiolinum_RI.otf  ,
+              BoldItalicFont = LinBiolinum_RBO.otf , ]
+          }
+      }
+    \projlib_font_set_linespacing_latin:n { \setstretch { 1.05 } }
+    \RequirePackage [ italic, defaultmathsizes ] { mathastext }
+  }
+
+\RequirePackage { silence }
+\WarningFilter { microtype } { Unable }
+\RequirePackage { microtype }
+
+\endinput
+%%
+%% End of file `projlib-font.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-font.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-language.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-language.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-language.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,512 @@
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+  {projlib-language}
+  {2022/03/09} {}
+  {Multi-language configuration}
+
+\clist_const:Nn \c__projlib_language_supported_clist
+  {
+    english     ,
+    french      ,
+    ngerman     ,
+    italian     ,
+    portuguese  ,
+    brazilian   ,
+    spanish     ,
+    schinese    ,
+    tchinese    ,
+    japanese    ,
+    russian     ,
+  }
+
+\clist_new:N \g__projlib_language_babel_option_clist
+
+\str_new:N \g__projlib_language_main_str
+
+\bool_new:N        \g__projlib_language_enabled_all_bool
+\bool_gset_true:N  \g__projlib_language_enabled_all_bool
+
+\clist_map_inline:Nn \c__projlib_language_supported_clist
+  {
+    \bool_new:c        { g__projlib_language_enabled_ #1 _bool }
+    \bool_gset_false:c { g__projlib_language_enabled_ #1 _bool }
+  }
+
+\cs_new:Nn \projlib_language_set_option_no_babel:n
+  {
+    \bool_gset_false:N \g__projlib_language_enabled_all_bool
+    \bool_gset_true:c { g__projlib_language_enabled_ #1 _bool }
+    \str_if_empty:NT \g__projlib_language_main_str
+      {
+        \str_gset:Nn \g__projlib_language_main_str { #1 }
+      }
+  }
+\cs_new:Nn \projlib_language_set_option:n
+  {
+    \projlib_language_set_option_no_babel:n { #1 }
+    \clist_gput_left:Nn \g__projlib_language_babel_option_clist { #1 }
+  }
+
+\keys_define:nn { projlib-language }
+  {
+    , EN                  .meta:n       = { english }
+    , english             .code:n       = { \projlib_language_set_option:n { english } }
+    , English             .meta:n       = { english }
+    , FR                  .meta:n       = { french }
+    , french              .code:n       = { \projlib_language_set_option:n { french } }
+    , French              .meta:n       = { french }
+    , DE                  .meta:n       = { ngerman }
+    , german              .meta:n       = { ngerman }
+    , ngerman             .code:n       = { \projlib_language_set_option:n { ngerman } }
+    , German              .meta:n       = { ngerman }
+    , IT                  .meta:n       = { italian }
+    , italian             .code:n       = { \projlib_language_set_option:n { italian } }
+    , Italian             .meta:n       = { italian }
+    , PT                  .meta:n       = { portuguese }
+    , portuguese          .code:n       = { \projlib_language_set_option:n { portuguese } }
+    , Portuguese          .meta:n       = { portuguese }
+    , BR                  .meta:n       = { brazilian }
+    , brazilian           .code:n       = { \projlib_language_set_option:n { brazilian } }
+    , Brazilian           .meta:n       = { brazilian }
+    , ES                  .meta:n       = { spanish }
+    , spanish             .code:n       = { \clist_gput_left:Nn \g__projlib_language_babel_option_clist { es-notilde, es-noquoting }
+                                            \projlib_language_set_option:n { spanish } }
+    , Spanish             .meta:n       = { spanish }
+    , CN                  .meta:n       = { schinese }
+    , chinese             .meta:n       = { schinese }
+    , schinese            .code:n       = { \projlib_language_set_option_no_babel:n { schinese } }
+    , simplified-chinese  .meta:n       = { schinese }
+    , simplified~chinese  .meta:n       = { schinese }
+    , simplified chinese  .meta:n       = { schinese }
+    , Chinese             .meta:n       = { schinese }
+    , SChinese            .meta:n       = { schinese }
+    , Simplified-Chinese  .meta:n       = { schinese }
+    , Simplified~Chinese  .meta:n       = { schinese }
+    , Simplified Chinese  .meta:n       = { schinese }
+    , TC                  .meta:n       = { tchinese }
+    , tchinese            .code:n       = { \projlib_language_set_option_no_babel:n { tchinese } }
+    , traditional-chinese .meta:n       = { tchinese }
+    , traditional~chinese .meta:n       = { tchinese }
+    , traditional chinese .meta:n       = { tchinese }
+    , TChinese            .meta:n       = { tchinese }
+    , Traditional-Chinese .meta:n       = { tchinese }
+    , Traditional~Chinese .meta:n       = { tchinese }
+    , Traditional Chinese .meta:n       = { tchinese }
+    , JP                  .meta:n       = { japanese }
+    , japanese            .code:n       = { \projlib_language_set_option:n { japanese } }
+    , Japanese            .meta:n       = { japanese }
+    , RU                  .meta:n       = { russian }
+    , russian             .code:n       = { \projlib_language_set_option:n { russian } }
+    , Russian             .meta:n       = { russian }
+    , unknown             .code:n       = {}
+  }
+\ProcessKeysOptions { projlib-language }
+
+\cs_new_protected:Nn \projlib_language_clear_global_option:n
+  {
+    \clist_remove_all:cn { @classoptionslist } { #1 }
+  }
+
+\projlib_language_clear_global_option:n { chinese }
+\projlib_language_clear_global_option:n { Chinese }
+
+\clist_gput_right:Nn \g__projlib_language_babel_option_clist { shorthands = off }
+
+\str_if_empty:NT \g__projlib_language_main_str
+  {
+    \str_gset:Nn \g__projlib_language_main_str { english }
+  }
+
+\bool_if:NT \g__projlib_language_enabled_all_bool
+  {
+    \clist_map_inline:Nn \c__projlib_language_supported_clist
+      {
+        \bool_gset_true:c { g__projlib_language_enabled_ #1 _bool }
+      }
+  }
+
+
+\cs_new:Nn \projlib_language_str_to_languagename:n
+  {
+    \str_case_e:nnF { \str_foldcase:n { #1 } }
+      {
+        { all                }    { common     }
+        { common             }    { common     }
+        { cn                 }    { schinese   }
+        { chinese            }    { schinese   }
+        { schinese           }    { schinese   }
+        { simplifiedchinese  }    { schinese   }
+        { simplified-chinese }    { schinese   }
+        { tc                 }    { tchinese   }
+        { tchinese           }    { tchinese   }
+        { traditionalchinese }    { tchinese   }
+        { traditional-chinese}    { tchinese   }
+        { jp                 }    { japanese   }
+        { japanese           }    { japanese   }
+        { en                 }    { english    }
+        { english            }    { english    }
+        { fr                 }    { french     }
+        { french             }    { french     }
+        { de                 }    { ngerman    }
+        { german             }    { ngerman    }
+        { ngerman            }    { ngerman    }
+        { it                 }    { italian    }
+        { italian            }    { italian    }
+        { pt                 }    { portuguese }
+        { portuguese         }    { portuguese }
+        { br                 }    { brazilian  }
+        { brazilian          }    { brazilian  }
+        { es                 }    { spanish    }
+        { spanish            }    { spanish    }
+        { ru                 }    { russian    }
+        { russian            }    { russian    }
+      }
+      { #1 }
+  }
+
+\cs_new:Nn \projlib_language_str_to_languagetype:n
+  {
+    \str_case_e:nn { \str_foldcase:n { #1 } }
+      {
+        { cn                 }    {  cjk  }
+        { chinese            }    {  cjk  }
+        { schinese           }    {  cjk  }
+        { simplifiedchinese  }    {  cjk  }
+        { simplified-chinese }    {  cjk  }
+        { tc                 }    {  cjk  }
+        { tchinese           }    {  cjk  }
+        { traditionalchinese }    {  cjk  }
+        { traditional-chinese}    {  cjk  }
+        { jp                 }    {  cjk  }
+        { japanese           }    {  cjk  }
+        { en                 }    { latin }
+        { english            }    { latin }
+        { fr                 }    { latin }
+        { french             }    { latin }
+        { de                 }    { latin }
+        { german             }    { latin }
+        { ngerman            }    { latin }
+        { it                 }    { latin }
+        { italian            }    { latin }
+        { pt                 }    { latin }
+        { portuguese         }    { latin }
+        { br                 }    { latin }
+        { brazilian          }    { latin }
+        { es                 }    { latin }
+        { spanish            }    { latin }
+        { ru                 }    { latin }
+        { russian            }    { latin }
+      }
+  }
+
+\sys_if_engine_pdftex:T
+  {
+    \RequirePackage [T1] { fontenc }
+  }
+
+\bool_if:NTF \g__projlib_language_enabled_all_bool
+  {
+    \sys_if_engine_pdftex:F
+      {
+        \PassOptionsToPackage { japanese, russian } { babel }
+      }
+    \PassOptionsToPackage { italian, portuguese, brazilian, spanish, es-notilde, es-noquoting, ngerman, french, english, shorthands = off } { babel }
+  }
+  {
+    \PassOptionsToPackage { \g__projlib_language_babel_option_clist } { babel }
+  }
+
+\PassOptionsToPackage { italian, brazilian, spanish, ngerman, french, english } { cleveref }
+\RequirePackage { babel }
+
+
+\bool_if:NT \g__projlib_language_enabled_french_bool
+  {
+    \frenchsetup { PartNameFull = false }
+  }
+
+\bool_if:NT \g__projlib_language_enabled_portuguese_bool
+  {
+    \NewCommandCopy \__projlib_language_babel_ord: \ord
+    \cs_undefine:N \ord
+    \hook_gput_code:nnn { begindocument } { projlib-language }
+      {
+        \cs_if_exist:NT \ord
+          {
+            \NewCommandCopy \__projlib_language_user_ord: \ord
+            \cs_set_protected:Npn \ord
+              {
+                \mode_if_math:TF
+                  { \__projlib_language_user_ord:  }
+                  { \__projlib_language_babel_ord: }
+              }
+          }
+      }
+  }
+
+\babelprovide { schinese }
+\babelprovide { tchinese }
+
+
+\NewCommandCopy \projlib_language_backup_today:n \today
+
+\tl_new:N \g_projlib_language_settings_common_tl
+\clist_map_inline:Nn \c__projlib_language_supported_clist
+  {
+    \tl_new:c { g_projlib_language_settings_ #1 _tl }
+  }
+
+\tl_gput_right:Nn \g_projlib_language_settings_common_tl
+  {
+    \cs_if_exist:NT \ProjLibToday
+      {
+        \RenewCommandCopy \today \ProjLibToday
+      }
+  }
+
+\tl_gput_right:Nn \g_projlib_language_settings_schinese_tl
+  {
+    \g_projlib_language_settings_common_tl
+    \tl_gset:Nn \languagename          { schinese }
+    \tl_gset:cn { abstractname   }     { 摘要     }
+    \tl_gset:cn { proofname      }     { 证明     }
+    \tl_gset:cn { contentsname   }     { 目录     }
+    \tl_gset:cn { listfigurename }     { 插图     }
+    \tl_gset:cn { listtablename  }     { 表格     }
+    \tl_gset:cn { figurename     }     { 图       }
+    \tl_gset:cn { tablename      }     { 表       }
+    \tl_gset:cn { indexname      }     { 索引     }
+    \tl_gset:cn { appendixname   }     { 附录     }
+    \tl_gset:cn { refname        }     { 参考文献 }
+    \tl_gset:cn { bibname        }     { 参考文献 }
+  }
+
+\tl_gput_right:Nn \g_projlib_language_settings_tchinese_tl
+  {
+    \g_projlib_language_settings_common_tl
+    \tl_gset:Nn \languagename          { tchinese }
+    \tl_gset:cn { abstractname   }     { 摘要     }
+    \tl_gset:cn { proofname      }     { 證明     }
+    \tl_gset:cn { contentsname   }     { 目錄     }
+    \tl_gset:cn { listfigurename }     { 插圖     }
+    \tl_gset:cn { listtablename  }     { 表格     }
+    \tl_gset:cn { figurename     }     { 圖       }
+    \tl_gset:cn { tablename      }     { 表       }
+    \tl_gset:cn { indexname      }     { 索引     }
+    \tl_gset:cn { appendixname   }     { 附錄     }
+    \tl_gset:cn { refname        }     { 參考文獻 }
+    \tl_gset:cn { bibname        }     { 參考文獻 }
+  }
+
+\tl_gput_right:Nn \g_projlib_language_settings_japanese_tl
+  {
+    \selectlanguage { japanese }
+    \g_projlib_language_settings_common_tl
+  }
+
+\tl_gput_right:Nn \g_projlib_language_settings_english_tl
+  {
+    \selectlanguage { english }
+    \g_projlib_language_settings_common_tl
+  }
+
+\tl_gput_right:Nn \g_projlib_language_settings_french_tl
+  {
+    \selectlanguage { french }
+    \g_projlib_language_settings_common_tl
+    \tl_gset:cn { frenchpartname } { Partie }
+  }
+
+\tl_gput_right:Nn \g_projlib_language_settings_ngerman_tl
+  {
+    \selectlanguage { ngerman }
+    \g_projlib_language_settings_common_tl
+  }
+
+\tl_gput_right:Nn \g_projlib_language_settings_italian_tl
+  {
+    \selectlanguage { italian }
+    \g_projlib_language_settings_common_tl
+  }
+
+\tl_gput_right:Nn \g_projlib_language_settings_portuguese_tl
+  {
+    \selectlanguage { portuguese }
+    \g_projlib_language_settings_common_tl
+  }
+
+\tl_gput_right:Nn \g_projlib_language_settings_brazilian_tl
+  {
+    \selectlanguage { brazilian }
+    \g_projlib_language_settings_common_tl
+  }
+
+\tl_gput_right:Nn \g_projlib_language_settings_spanish_tl
+  {
+    \selectlanguage { spanish }
+    \g_projlib_language_settings_common_tl
+  }
+
+\tl_gput_right:Nn \g_projlib_language_settings_russian_tl
+  {
+    \selectlanguage { russian }
+    \g_projlib_language_settings_common_tl
+  }
+
+\NewDocumentCommand \AddLanguageSetting { O{} m }
+  {
+    \IfNoValueTF { #1 }
+      {
+        \tl_gput_right:Nn \g_projlib_language_settings_common_tl { #2 }
+      }
+      {
+        \tl_gput_right:cn { g_projlib_language_settings_ \projlib_language_str_to_languagename:n { #1 } _tl } { #2 }
+      }
+  }
+
+
+\RequirePackage { setspace }
+
+\tl_new:N  \g_projlib_language_linespacing_latin_tl
+\tl_new:N  \g_projlib_language_linespacing_cjk_tl
+
+\tl_gset:Nn \g_projlib_language_linespacing_latin_tl
+  {
+    \setstretch { 1.00 }
+  }
+\tl_gset:Nn \g_projlib_language_linespacing_cjk_tl
+  {
+    \onehalfspacing
+  }
+
+\cs_new:Nn \projlib_language_set_linespacing_latin:n
+  {
+    \tl_gset:Nn \g_projlib_language_linespacing_latin_tl { #1 }
+  }
+\cs_new:Nn \projlib_language_set_linespacing_cjk:n
+  {
+    \tl_gset:Nn \g_projlib_language_linespacing_cjk_tl { #1 }
+  }
+
+\tl_new:N  \g_projlib_language_parindent_latin_tl
+\tl_new:N  \g_projlib_language_parindent_cjk_tl
+
+\@ifclassloaded{beamer}
+  {
+    \tl_gset:Nn \g_projlib_language_parindent_latin_tl
+      {
+        \dim_set:Nn \parindent { 0em }
+      }
+    \tl_gset:Nn \g_projlib_language_parindent_cjk_tl
+      {
+        \dim_set:Nn \parindent { 0em }
+      }
+  }
+  {
+    \tl_gset:Nn \g_projlib_language_parindent_latin_tl
+      {
+        \dim_set:Nn \parindent { 1.5em }
+      }
+    \tl_gset:Nn \g_projlib_language_parindent_cjk_tl
+      {
+        \dim_set:Nn \parindent { 2em }
+      }
+  }
+
+\hook_gput_code:nnn { begindocument } { projlib-language }
+  {
+    \@ifpackageloaded{parskip}
+      {
+        \tl_gset:Nn \g_projlib_language_parindent_latin_tl
+          {
+            \dim_set:Nn \parindent { 0em }
+          }
+        \tl_gset:Nn \g_projlib_language_parindent_cjk_tl
+          {
+            \dim_set:Nn \parindent { 0em }
+          }
+      } {}
+  }
+
+\cs_new:Nn \projlib_language_set_parindent_latin:n
+  {
+    \tl_gset:Nn \g_projlib_language_parindent_latin_tl { #1 }
+  }
+\cs_new:Nn \projlib_language_set_parindent_cjk:n
+  {
+    \tl_gset:Nn \g_projlib_language_parindent_cjk_tl { #1 }
+  }
+
+\NewDocumentCommand \ProjLibLanguageSet { m m m }
+  % #1 = the thing to set
+  % #2 = language or type
+  % #3 = the setting
+  {
+    \use:c { projlib_language_set_ #1 _ #2 :n } { #3 }
+  }
+
+
+\cs_new:Nn \projlib_language_use_language_pure:n
+  {
+    \tl_use:c { g_projlib_language_settings_ \projlib_language_str_to_languagename:n { #1 } _tl }
+  }
+\cs_generate_variant:Nn \projlib_language_use_language_pure:n { e }
+
+\cs_new:Nn \projlib_language_use_language:n
+  {
+    \projlib_language_use_language_pure:n { #1 }
+    \tl_use:c { g_projlib_language_linespacing_ \projlib_language_str_to_languagetype:n { #1 } _tl }
+    \tl_use:c { g_projlib_language_parindent_ \projlib_language_str_to_languagetype:n { #1 } _tl }
+  }
+\cs_generate_variant:Nn \projlib_language_use_language:n { e }
+
+\NewDocumentCommand \UseLanguage { m }
+  {
+    \hook_gput_code:nnn { begindocument } { projlib-language }
+      {
+        \projlib_language_use_language:e { #1 }
+      }
+  }
+\NewDocumentCommand \UseOtherLanguage { m m }
+  {
+    \group_begin:
+      \projlib_language_use_language_pure:e { #1 }
+      #2
+    \group_end:
+  }
+
+\UseLanguage { \g__projlib_language_main_str }
+
+
+\cs_new:Nn \projlib_langauge_define_multilingual_text:Nn
+  { % #1 = command name (with backslash)
+    % #2 = key-value name configuration
+    \keyval_parse:nnn
+      {}
+      { \__projlib_langauge_define_multilingual_text_do:nnn { \cs_to_str:N #1 } }
+      { #2 }
+    \tl_gset:Nn #1
+      {
+        \tl_use:c { \cs_to_str:N #1 _projlib_language_text_ \languagename }
+      }
+  }
+\cs_generate_variant:Nn \projlib_langauge_define_multilingual_text:Nn { cn }
+
+\cs_new:Nn \__projlib_langauge_define_multilingual_text_do:nnn
+  { % #1 = command name
+    % #2 = language name
+    % #3 = the text
+    \exp_args:Ne \tl_gset:cn { #1 _projlib_language_text_ \projlib_language_str_to_languagename:n { #2 } } { #3 }
+  }
+
+\NewDocumentCommand \DefineMultilingualText { m m }
+  % #1 = command name
+  % #2 = key-value name configuration
+  {
+    \projlib_langauge_define_multilingual_text:Nn #1 { #2 }
+  }
+
+\endinput
+%%
+%% End of file `projlib-language.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-language.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,100 @@
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+  {projlib-logo}
+  {2022/02/24} {}
+  {The ProjLib logo}
+
+\keys_define:nn { projlib-logo }
+  {
+    , draft   .bool_set:N   = \l__projlib_logo_fast_bool
+    , draft   .initial:n    = { false }
+    , fast    .bool_set:N   = \l__projlib_logo_fast_bool
+    , unknown .code:n       = {}
+  }
+\ProcessKeysOptions { projlib-logo }
+
+\bool_if:NT \l__projlib_logo_fast_bool
+  {
+    \DeclareRobustCommand * \ProjLib
+      {
+        \group_begin:
+          \normalfont ProjLib
+        \group_end:
+      }
+    \endinput
+  }
+
+\cs_if_exist:cTF { fontspec }
+  {
+    \newfontface \__projlib_logo_font: { LinBiolinum_R.otf }
+  }
+  {
+    \RequirePackage [T1] { fontenc }
+    \cs_gset:Nn \__projlib_logo_font:
+      { \fontfamily { LinuxBiolinumT-TLF } \selectfont }
+  }
+
+\tl_new:N   \g__projlib_logo_sigma_j_tl
+\tl_gset:Nn \g__projlib_logo_sigma_j_tl
+  {
+    \vbox:n
+      {
+        \offinterlineskip
+        \hbox_overlap_center:n
+          {
+            \skip_horizontal:n { 0.75ex }
+            \hbox_set:Nn    \l_tmpa_box { \usefont{U}{zeur}{b}{n} \symbol{"06} }
+            \box_rotate:Nn  \l_tmpa_box { -10 }
+            \box_scale:Nnn  \l_tmpa_box {.4} {.4}
+            \box_use:N      \l_tmpa_box
+          }
+        \skip_vertical:n { 0.15ex }
+        \hbox:n { \j }
+      }
+  }
+
+% \RequirePackage { xcolor }
+% \cs_new_protected:Nn \projlib_logo_generic:n
+%   {
+%     \group_begin:
+%       \normalfont
+%       \__projlib_logo_font:
+%       \textcolor { blue!55!cyan }       { P }
+%       \textcolor { blue!45!cyan }       { r }
+%       \textcolor { blue!30!cyan }       { o }
+%       \textcolor { green!70!black!70 }  { #1 }
+%       \textcolor { red!20!yellow }      { L }
+%       \textcolor { red!40!yellow }      { i }
+%       \textcolor { red!55!yellow }      { b }
+%     \group_end:
+%   }
+\cs_new_protected:Nn \projlib_logo_generic:n
+  {
+    \group_begin:
+      \normalfont
+      \__projlib_logo_font:
+      \color_group_begin:
+        \color_select:n { blue!60!cyan }      { P }
+        \color_select:n { blue!45!cyan }      { r }
+        \color_select:n { blue!30!cyan }      { o }
+        \color_select:n { green!70!black!70 } { #1 }
+        \color_select:n { red!20!yellow }     { L }
+        \color_select:n { red!40!yellow }     { i }
+        \color_select:n { red!60!yellow }     { b }
+      \color_group_end:
+    \group_end:
+  }
+
+\DeclareRobustCommand * \ProjLib
+  {
+    \projlib_logo_generic:n { \g__projlib_logo_sigma_j_tl }
+  }
+\DeclareRobustCommand * \ProjLibText
+  {
+    \projlib_logo_generic:n { j }
+  }
+
+\endinput
+%%
+%% End of file `projlib-logo.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-math.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-math.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-math.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,234 @@
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+  {projlib-math}
+  {2022/02/26} {}
+  {Efficient math setup}
+
+\keys_define:nn { projlib-math }
+  {
+    , unknown     .code:n     = {}
+  }
+\ProcessKeysOptions { projlib-math }
+
+\RequirePackage { mathtools }
+\RequirePackage { mathrsfs }
+\PassOptionsToPackage { warnings-off = { mathtools-colon, mathtools-overbracket } } { unicode-math }
+\@ifpackageloaded { unicode-math } {} { \RequirePackage { amssymb } }
+
+
+\msg_new:nnn { projlib-math }
+  { operator-not-define }
+  { The~math~operator~"\iow_char:N \\#1"~cannot~be~defined,~a~command~with~the~same~name~has~already~existed. }
+
+\keys_define:nn { projlib-math-operator }
+  {
+    , style        .tl_set:N     = \l__projlib_math_operator_style_tl
+    , unknown      .code:n       = {}
+  }
+
+\cs_new_protected:Nn \projlib_math_define_operator:nnn
+  % #1 = bool for star or empty
+  % #2 = list of operators
+  % #3 = the option
+  {
+    \tl_clear:N \l__projlib_math_operator_style_tl
+    \keys_set:nn { projlib-math-operator } { #3 }
+    \clist_map_inline:nn { #2 }
+      {
+        \str_if_in:nnTF { ##1 } { = }
+          {
+            \seq_set_split:Nnn \l_tmpa_seq { = } { ##1 }
+            \__projlib_math_define_operator:nee { #1 } { \seq_item:Nn \l_tmpa_seq { 1 } } { \seq_item:Nn \l_tmpa_seq { 2 } }
+          }
+          {
+            \__projlib_math_define_operator:nee { #1 } { ##1 } { ##1 }
+          }
+      }
+  }
+
+\cs_new_protected:Nn \__projlib_math_define_operator:nnn
+  % #1 = bool for star or empty
+  % #2 = the operator
+  % #3 = the content
+  {
+    \cs_if_exist:cTF { #2 }
+      {
+        \msg_warning:nnn  { projlib-math } { operator-not-define } { #2 }
+      }
+      {
+        \bool_if:NTF #1
+          {
+            \exp_args:Nnf \use:n
+              { \exp_args:Nnc \use:n { \DeclareMathOperator* } { #2 } }
+          }
+          {
+            \exp_args:Nnf \use:n
+              { \exp_args:Nc \DeclareMathOperator { #2 } }
+          }
+          % This is the f-argument of  \exp_args:Nnf :
+          {
+            \exp_args:NnV \use:nn
+              { \exp_stop_f: }
+              { \l__projlib_math_operator_style_tl } { #3 }
+          }
+      }
+  }
+\cs_generate_variant:Nn \__projlib_math_define_operator:nnn { nee }
+
+\NewDocumentCommand \DefineOperator { s O{} m O{} }
+  {
+    \tl_if_blank:nTF { #2 }
+      {
+        \projlib_math_define_operator:nnn { #1 } { #3 } { #4 }
+      }
+      {
+        \projlib_math_define_operator:nnn { #1 } { #3 } { #2 }
+      }
+  }
+
+
+\msg_new:nnn { projlib-math }
+  { shortcut-not-define }
+  { The~shortcut~"\iow_char:N \\#1"~cannot~be~defined,~a~command~with~the~same~name~has~already~existed. }
+
+\msg_new:nnn { projlib-math }
+  { shortcut-type-not-define }
+  { The~shortcut~type~"#1"~is~not~available,~a~command~with~the~same~name~has~already~existed. }
+
+\keys_define:nn { projlib-math-shortcut }
+  {
+    , prefix       .clist_set:N  = \l__projlib_math_shortcut_prefix_clist
+    , type         .tl_set:N     = \l__projlib_math_shortcut_type_tl
+    , style        .tl_set:N     = \l__projlib_math_shortcut_style_tl
+    , unknown      .code:n       = {}
+  }
+
+\cs_new_protected:Nn \projlib_math_define_shortcut:nnn
+  % #1 = bool for star or empty
+  % (currently the starred version is the same as normal version)
+  % #2 = list of shortcuts
+  % #3 = the option
+  {
+    \clist_clear:N \l__projlib_math_shortcut_prefix_clist
+    \tl_clear:N \l__projlib_math_shortcut_type_tl
+    \tl_clear:N \l__projlib_math_shortcut_style_tl
+    \keys_set:nn { projlib-math-shortcut } { #3 }
+    \tl_if_empty:NF \l__projlib_math_shortcut_type_tl
+      {
+        \cs_if_exist:cTF { \l__projlib_math_shortcut_type_tl }
+          {
+            \exp_args:Nne \use:n
+              { \msg_warning:nnn  { projlib-math } { shortcut-type-not-define } }
+              { \l__projlib_math_shortcut_type_tl }
+          }
+          {
+            \exp_args:Nno \use:n
+              {
+                \exp_args:Nc \NewDocumentCommand { \l__projlib_math_shortcut_type_tl } { m }
+              }
+              {
+                \l__projlib_math_shortcut_style_tl { ##1 }
+              }
+          }
+      }
+    \clist_map_inline:nn { #2 }
+      {
+        \str_if_in:nnTF { ##1 } { = }
+          {
+            \seq_set_split:Nnn \l_tmpa_seq { = } { ##1 }
+            \clist_if_empty:NTF \l__projlib_math_shortcut_prefix_clist
+              {
+                \__projlib_math_define_shortcut:ee { \seq_item:Nn \l_tmpa_seq { 1 } } { \seq_item:Nn \l_tmpa_seq { 2 } }
+              }
+              {
+                \clist_map_inline:Nn \l__projlib_math_shortcut_prefix_clist
+                  {
+                    \__projlib_math_define_shortcut:ee { ####1 \seq_item:Nn \l_tmpa_seq { 1 } } { \seq_item:Nn \l_tmpa_seq { 2 } }
+                  }
+              }
+          }
+          {
+            \clist_if_empty:NTF \l__projlib_math_shortcut_prefix_clist
+              {
+                \__projlib_math_define_shortcut:ee { ##1 } { ##1 }
+              }
+              {
+                \clist_map_inline:Nn \l__projlib_math_shortcut_prefix_clist
+                  {
+                    \__projlib_math_define_shortcut:ee { ####1 ##1 } { ##1 }
+                  }
+              }
+          }
+      }
+  }
+
+\cs_new_protected:Nn \__projlib_math_define_shortcut:nn
+  % #1 = command name
+  % #2 = the content
+  {
+    \cs_if_exist:cTF { #1 }
+      {
+        \msg_warning:nnn { projlib-math } { shortcut-type-not-define } { #1 }
+      }
+      {
+        \exp_args:Nno \use:n
+          { \exp_args:Nc \NewDocumentCommand { #1 } {} }
+          { \l__projlib_math_shortcut_style_tl { #2 } }
+      }
+  }
+\cs_generate_variant:Nn \__projlib_math_define_shortcut:nn { ee }
+
+\NewDocumentCommand \DefineShortcut { s O{} m O{} }
+  {
+    \tl_if_blank:nTF { #2 }
+      {
+        \projlib_math_define_shortcut:nnn { #1 } { #3 } { #4 }
+      }
+      {
+        \projlib_math_define_shortcut:nnn { #1 } { #3 } { #2 }
+      }
+  }
+
+%===============================
+% -- Some possible operators --
+%===============================
+% \DefineOperator { ord, card, car, disc }  [ style = \mathsf ]
+% \DefineOperator { id, Id, Ker, Image = Im } [ style = \mathsf ]
+% \DefineOperator { Orb, Stab, Fix } [ style = \mathsf ]
+% \DefineOperator { Hom, Aut, End, Mat } [ style = \mathsf ]
+% \DefineOperator { Spec, Spm, Ann } [ style = \mathsf ]
+% \DefineOperator*{ Lim, Max, Min } [ style = \mathsf ]
+
+%===============================
+% -- Some possible shortcuts --
+%===============================
+% \DefineShortcut [ type = category, style = \mathbf ]
+%   {
+%     Set, Grp, Ring, Top
+%   }
+% \DefineShortcut [ style = \mathbb ]
+%   {
+%     N, Z, Q, R, C, F, A
+%   }
+% \DefineShortcut [ prefix = bb, style = \mathbb ]
+%   {
+%     A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
+%   }
+% \DefineShortcut [ prefix = { mf, frak }, style = \mathfrak ]
+%   {
+%     A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z,
+%     a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z
+%   }
+% \DefineShortcut [ prefix = { mc, cal }, style = \mathcal ]
+%   {
+%     A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
+%   }
+% \DefineShortcut [ prefix = { ms, scr }, style = \mathscr ]
+%   {
+%     A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z
+%   }
+
+\endinput
+%%
+%% End of file `projlib-math.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-math.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,119 @@
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+  {projlib-paper}
+  {2022/03/09} {}
+  {Configuration of the paper style}
+
+\keys_define:nn { projlib-paper }
+  {
+    , preview-mode      .bool_set:N         = \l__projlib_paper_preview_bool
+    , preview-mode      .initial:n          = { false }
+    , paper-style       .tl_set:N           = \l__projlib_paper_paperstyle_tl
+    , paper-style       .initial:n          = { normal }
+    , paper-style       .value_required:n   = true
+    , paper~style       .tl_set:N           = \l__projlib_paper_paperstyle_tl
+    , paper style       .tl_set:N           = \l__projlib_paper_paperstyle_tl
+    , yellow-paper      .meta:n             = { paperstyle = yellow     }
+    , yellow~paper      .meta:n             = { paperstyle = yellow     }
+    , yellow paper      .meta:n             = { paperstyle = yellow     }
+    , parchment-paper   .meta:n             = { paperstyle = parchment  }
+    , parchment~paper   .meta:n             = { paperstyle = parchment  }
+    , parchment paper   .meta:n             = { paperstyle = parchment  }
+    , green-paper       .meta:n             = { paperstyle = green      }
+    , green~paper       .meta:n             = { paperstyle = green      }
+    , green paper       .meta:n             = { paperstyle = green      }
+    , light-gray-paper  .meta:n             = { paperstyle = lightgray  }
+    , light~gray~paper  .meta:n             = { paperstyle = lightgray  }
+    , light gray-paper  .meta:n             = { paperstyle = lightgray  }
+    , light gray~paper  .meta:n             = { paperstyle = lightgray  }
+    , light gray paper  .meta:n             = { paperstyle = lightgray  }
+    , gray-paper        .meta:n             = { paperstyle = gray       }
+    , gray~paper        .meta:n             = { paperstyle = gray       }
+    , gray paper        .meta:n             = { paperstyle = gray       }
+    , nord-paper        .meta:n             = { paperstyle = nord       }
+    , nord~paper        .meta:n             = { paperstyle = nord       }
+    , nord paper        .meta:n             = { paperstyle = nord       }
+    , dark-paper        .meta:n             = { paperstyle = dark       }
+    , dark~paper        .meta:n             = { paperstyle = dark       }
+    , dark paper        .meta:n             = { paperstyle = dark       }
+    , unknown           .code:n             = {}
+  }
+\ProcessKeysOptions { projlib-paper }
+
+\cs_new:Nn \projlib_paper_preview_disable:
+  {
+    \bool_set_false:c { l__projlib_paper_preview_bool }
+  }
+
+\hook_gput_code:nnn { begindocument/before } { projlib-paper }
+  {
+    \bool_if:NT \l__projlib_paper_preview_bool
+      {
+        \dim_set:Nn \paperwidth
+          {
+            \dim_eval:n { \textwidth * 21 / 20 }
+          }
+        \dim_set:Nn \paperheight
+          {
+            \dim_eval:n { ( \textheight + \headheight + \headsep + \footskip ) * 21 / 20 }
+          }
+        \dim_set:Nn \oddsidemargin
+          {
+            \dim_eval:n { ( \paperwidth - \textwidth ) / 2 - 1in }
+          }
+        \dim_set:Nn \evensidemargin
+          {
+            \dim_eval:n { ( \paperwidth - \textwidth ) / 2 - 1in }
+          }
+        \dim_set:Nn \topmargin
+          {
+            \dim_eval:n { ( \paperheight - \textheight - \headheight - \headsep - \footskip ) / 2 - 1in }
+          }
+      }
+  }
+
+\RequirePackage { xcolor }
+
+\definecolor { paper }     { RGB } { 255, 255, 255 }
+\definecolor { main-text } { RGB } {   0,   0,   0 }
+
+\str_case_e:nn { \l__projlib_paper_paperstyle_tl }
+  {
+    { yellow      } { \definecolor { paper }     { RGB } { 247, 246, 233 } }
+    { parchment   } { \definecolor { paper }     { RGB } { 224, 204, 160 } }
+    { green       } { \definecolor { paper }     { RGB } { 207, 231, 207 } }
+    { lightgray   } { \definecolor { paper }     { RGB } { 236, 239, 244 }
+                      \definecolor { main-text } { RGB } {  37,  41,  46 } }
+    { light-gray  } { \definecolor { paper }     { RGB } { 236, 239, 244 }
+                      \definecolor { main-text } { RGB } {  37,  41,  46 } }
+    { gray        } { \definecolor { paper }     { RGB } { 127, 130, 136 }
+                      \definecolor { main-text } { RGB } { 236, 239, 244 } }
+    { nord        } { \definecolor { paper }     { RGB } {  46,  52,  64 }
+                      \definecolor { main-text } { RGB } { 214, 220, 230 } }
+    { dark        } { \definecolor { paper }     { RGB } {  28,  29,  33 }
+                      \definecolor { main-text } { RGB } { 210, 213, 217 } }
+  }
+
+\cs_new:Nn \projlib_paper_set_page_color:n
+  {
+    \pagecolor { #1 }
+  }
+\cs_new:Nn \projlib_paper_set_text_color:n
+  {
+    \color { #1 }
+    \cs_gset_eq:cc { default at color } { current at color }
+  }
+
+\projlib_paper_set_page_color:n { paper }
+\projlib_paper_set_text_color:n { main-text }
+
+\hook_gput_code:nnn { begindocument/before } { projlib-paper }
+  {
+    \cs_if_exist:NT \tcbset
+      { \tcbset { colupper = main-text, collower = main-text } }
+  }
+
+\endinput
+%%
+%% End of file `projlib-paper.sty'.


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty
===================================================================
--- branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty	                        (rev 0)
+++ branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty	2022-03-10 21:25:27 UTC (rev 62601)
@@ -0,0 +1,1184 @@
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+  {projlib-theorem}
+  {2022/03/09} {}
+  {Configuration of theorem-like environments}
+
+\keys_define:nn { projlib-theorem }
+  {
+    , no-theorems           .bool_set:N         = \l__projlib_theorem_no_theorems_bool
+    , no-theorems           .initial:n          = { false }
+    , no~theorems           .bool_set:N         = \l__projlib_theorem_no_theorems_bool
+    , no theorems           .bool_set:N         = \l__projlib_theorem_no_theorems_bool
+    , nothms                .bool_set:N         = \l__projlib_theorem_no_theorems_bool
+    , no-theorem-numbering  .bool_set:N         = \l__projlib_theorem_no_theorem_numbering_bool
+    , no-theorem-numbering  .initial:n          = { false }
+    , no~theorem~numbering  .bool_set:N               = \l__projlib_theorem_no_theorem_numbering_bool
+    , no theorem numbering  .bool_set:N         = \l__projlib_theorem_no_theorem_numbering_bool
+    , nothmnum              .bool_set:N         = \l__projlib_theorem_no_theorem_numbering_bool
+    , theorem-numbering     .tl_set:N           = \l__projlib_theorem_theorem_numbering_tl
+    , theorem-numbering     .default:n          = { * }
+    , theorem~numbering     .tl_set:N           = \l__projlib_theorem_theorem_numbering_tl
+    , theorem~numbering     .default:n          = { * }
+    , theorem numbering     .tl_set:N           = \l__projlib_theorem_theorem_numbering_tl
+    , theorem numbering     .default:n          = { * }
+    , thmnum                .tl_set:N           = \l__projlib_theorem_theorem_numbering_tl
+    , thmnum                .default:n          = { * }
+    , complex-name          .bool_set:N         = \l__projlib_theorem_complexname_bool
+    , complex-name          .initial:n          = { true }
+    , complex~name          .bool_set:N         = \l__projlib_theorem_complexname_bool
+    , complex name          .bool_set:N         = \l__projlib_theorem_complexname_bool
+    , simple-name           .bool_set:N         = \l__projlib_theorem_simplename_bool
+    , simple-name           .initial:n          = { false }
+    , simple~name           .bool_set:N         = \l__projlib_theorem_simplename_bool
+    , simple name           .bool_set:N         = \l__projlib_theorem_simplename_bool
+    , no-preset-names       .bool_set_inverse:N = \l__projlib_theorem_presetname_bool
+    , no-preset-names       .initial:n          = { false }
+    , no~preset~names       .bool_set_inverse:N = \l__projlib_theorem_presetname_bool
+    , no preset names       .bool_set_inverse:N = \l__projlib_theorem_presetname_bool
+    , unknown               .code:n       = { \PassOptionsToPackage { \CurrentOption } { create-theorem } }
+  }
+\ProcessKeysOptions { projlib-theorem }
+
+\clist_const:Nn \c__projlib_theorem_supported_clist
+  {
+    assertion                 ,
+    assumption                ,
+    axiom                     ,
+    conclusion                ,
+    conjecture                ,
+    convention                ,
+    corollary                 ,
+    definition                ,
+    example                   ,
+    exercise                  ,
+    fact                      ,
+    hypothesis                ,
+    lemma                     ,
+    notation                  ,
+    observation               ,
+    postulate                 ,
+    problem                   ,
+    property                  ,
+    proposition               ,
+    question                  ,
+    remark                    ,
+    theorem                   ,
+  }
+
+\@ifclassloaded { beamer }
+  {
+    \RequirePackage { silence }
+    \WarningFilter { cleveref } { hyperref~package~loaded~with~implicit=false~option }
+    \bool_set_true:N \l__projlib_theorem_no_theorem_numbering_bool
+    \bool_if:NF \l__projlib_theorem_no_theorems_bool
+      {
+        \cs_undefine:c { theorem    }
+        \cs_undefine:c { lemma      }
+        \cs_undefine:c { corollary  }
+        \cs_undefine:c { definition }
+        \cs_undefine:c { fact       }
+        \cs_undefine:c { example    }
+        \cs_undefine:c { problem    }
+      }
+  } {}
+
+\RequirePackage { projlib-language }
+
+\bool_if:NF \l__projlib_theorem_complexname_bool
+  {
+    \PassOptionsToPackage { no preset names } { create-theorem }
+  }
+
+\RequirePackage { amsthm }
+\RequirePackage { create-theorem }
+
+
+\bool_if:NF \l__projlib_theorem_no_theorems_bool
+  {
+    \bool_if:NTF \l__projlib_theorem_no_theorem_numbering_bool
+      {
+        \exp_args:Nv \CreateTheorem { c__projlib_theorem_supported_clist } { numberless }
+      }
+      {
+        \tl_if_blank:eTF \l__projlib_theorem_theorem_numbering_tl
+          {
+            \cs_if_exist:cTF { c at chapter }
+              { % with \chapter
+                \CreateTheorem {theorem} { parent counter = chapter }
+              }
+              { % without \chapter
+                \CreateTheorem {theorem} { parent counter = section }
+              }
+          }
+          {
+            \tl_if_eq:NnTF \l__projlib_theorem_theorem_numbering_tl { * }
+              {
+                \CreateTheorem {theorem} { }
+              }
+              {
+                \CreateTheorem {theorem} { parent counter = \l__projlib_theorem_theorem_numbering_tl }
+              }
+          }
+
+        \exp_args:Nv \CreateTheorem { c__projlib_theorem_supported_clist } { shared counter = theorem, quiet }
+      }
+  }
+
+
+\AddLanguageSetting [ schinese ]
+  {
+    \crefname { equation } { 式 } { 式 }
+    \crefname { figure } { 图 } { 图 }
+    \crefname { table } { 表 } { 表 }
+    \crefname { appendix } { 附录 } { 附录 }
+    \Crefname { equation } { 式 } { 式 }
+    \Crefname { figure } { 图 } { 图 }
+    \Crefname { table } { 表 } { 表 }
+    \Crefname { appendix } { 附录 } { 附录 }
+    \tl_gset:Nn { \crefpairconjunction } { 、 }
+    \tl_gset:Nn { \crefmiddleconjunction } { 、 }
+    \tl_gset:Nn { \creflastconjunction } { \nobreakspace 和 \nobreakspace }
+    \tl_gset:Nn { \crefpairgroupconjunction } { \nobreakspace 和 \nobreakspace }
+    \tl_gset:Nn { \crefmiddlegroupconjunction } { 、 }
+    \tl_gset:Nn { \creflastgroupconjunction } { \nobreakspace 以及 \nobreakspace }
+    \tl_gset:Nn { \crefrangeconjunction } { ~ }
+  }
+
+\AddLanguageSetting [ tchinese ]
+  {
+    \crefname { equation } { 式 } { 式 }
+    \crefname { figure } { 圖 } { 圖 }
+    \crefname { table } { 表 } { 表 }
+    \crefname { appendix } { 附錄 } { 附錄 }
+    \Crefname { equation } { 式 } { 式 }
+    \Crefname { figure } { 圖 } { 圖 }
+    \Crefname { table } { 表 } { 表 }
+    \Crefname { appendix } { 附錄 } { 附錄 }
+    \tl_gset:Nn { \crefpairconjunction } { 、 }
+    \tl_gset:Nn { \crefmiddleconjunction } { 、 }
+    \tl_gset:Nn { \creflastconjunction } { \nobreakspace 與 \nobreakspace }
+    \tl_gset:Nn { \crefpairgroupconjunction } { \nobreakspace 與 \nobreakspace }
+    \tl_gset:Nn { \crefmiddlegroupconjunction } { 、 }
+    \tl_gset:Nn { \creflastgroupconjunction } { \nobreakspace 以及 \nobreakspace }
+    \tl_gset:Nn { \crefrangeconjunction } { ~ }
+  }
+
+\AddLanguageSetting [ japanese ]
+  {
+    \crefname { equation } { 式 } { 式 }
+    \crefname { figure } { 図 } { 図 }
+    \crefname { table } { 表 } { 表 }
+    \Crefname { appendix } { 付録 } { 付録 }
+    \Crefname { equation } { 式 } { 式 }
+    \Crefname { figure } { 図 } { 図 }
+    \Crefname { table } { 表 } { 表 }
+    \Crefname { appendix } { 付録 } { 付録 }
+    \tl_gset:Nn { \crefpairconjunction } { \nobreakspace と \nobreakspace }
+    \tl_gset:Nn { \crefmiddleconjunction } { \nobreakspace と \nobreakspace }
+    \tl_gset:Nn { \creflastconjunction } { \nobreakspace と \nobreakspace }
+    \tl_gset:Nn { \crefpairgroupconjunction } { \nobreakspace と \nobreakspace }
+    \tl_gset:Nn { \crefmiddlegroupconjunction } { \nobreakspace と \nobreakspace }
+    \tl_gset:Nn { \creflastgroupconjunction } { \nobreakspace 及び \nobreakspace }
+    \tl_gset:Nn { \crefrangeconjunction } { ~ }
+  }
+
+\AddLanguageSetting [ russian ]
+  {
+    \crefname { equation } { уравнение } { уравнения }
+    \crefname { figure } { рис. } { рис. }
+    \crefname { table } { таблица } { таблицы }
+    \crefname { appendix } { приложение } { приложения }
+    \Crefname { equation } { Уравнение } { Уравнения }
+    \Crefname { figure } { Рис. } { Рис. }
+    \Crefname { table } { Таблица } { Таблицы }
+    \Crefname { appendix } { Приложение } { Приложения }
+    \tl_gset:Nn { \crefpairconjunction } { \nobreakspace и \nobreakspace }
+    \tl_gset:Nn { \crefmiddleconjunction } { , \nobreakspace }
+    \tl_gset:Nn { \creflastconjunction } { \nobreakspace и \nobreakspace }
+    \tl_gset:Nn { \crefpairgroupconjunction } { \nobreakspace и \nobreakspace }
+    \tl_gset:Nn { \crefmiddlegroupconjunction } { , \nobreakspace  }
+    \tl_gset:Nn { \creflastgroupconjunction } { \nobreakspace и \nobreakspace }
+    \tl_gset:Nn { \crefrangeconjunction } { \nobreakspace \textasciitilde \nobreakspace }
+  }
+
+\AddLanguageSetting [ portuguese ]
+  {
+    \crefname { equation } { eq. } { eqs. }
+    \crefname { figure } { fig. } { figs. }
+    \crefname { table } { tabela } { tabelas }
+    \crefname { appendix } { apêndice } { apêndices }
+    \Crefname { equation } { Eq. } { Eqs. }
+    \Crefname { figure } { Fig. } { Figs. }
+    \Crefname { table } { Tabela } { Tabelas }
+    \Crefname { appendix } { Apêndice } { Apêndices }
+    \tl_gset:Nn { \crefpairconjunction } { \nobreakspace e \nobreakspace }
+    \tl_gset:Nn { \crefmiddleconjunction } { , \nobreakspace }
+    \tl_gset:Nn { \creflastconjunction } { \nobreakspace e \nobreakspace }
+    \tl_gset:Nn { \crefpairgroupconjunction } { \nobreakspace e \nobreakspace }
+    \tl_gset:Nn { \crefmiddlegroupconjunction } { , \nobreakspace }
+    \tl_gset:Nn { \creflastgroupconjunction } { \nobreakspace e \nobreakspace }
+    \tl_gset:Nn { \crefrangeconjunction } { \nobreakspace a \nobreakspace }
+  }
+
+
+\bool_if:NF \l__projlib_theorem_presetname_bool { \endinput }
+\bool_if:NT \l__projlib_theorem_complexname_bool { \endinput }
+
+
+\NameTheorem { assertion }
+  {
+    , heading =   {
+                    , english     = Assertion
+                    , french      = Assertion
+                    , ngerman     = Behauptung
+                    , italian     = Asserzione
+                    , portuguese  = Asserção
+                    , brazilian   = Asserção
+                    , spanish     = Aserción
+                    , schinese    = 断言
+                    , tchinese    = 斷言
+                    , japanese    = アサーション
+                    , russian     = Утверждение
+                  }
+    , crefname =  {
+                    , english     = {Assertion}{Assertion}
+                    , french      = [l']{Assertion}[les]{Assertion}
+                    , ngerman     = {Behauptung}{Behauptung}
+                    , italian     = [l']{Asserzione}[le]{Asserzione}
+                    , portuguese  = [a]{Asserção}[as]{Asserção}
+                    , brazilian   = [a]{Asserção}[as]{Asserção}
+                    , spanish     = [la]{Aserción}[las]{Aserción}
+                    , schinese    = {断言}{断言}
+                    , tchinese    = {斷言}{斷言}
+                    , japanese    = {アサーション}{アサーション}
+                    , russian     = {Утверждение}{Утверждение}
+                  }
+    , Crefname =  {
+                    , english     = {Assertion}{Assertion}
+                    , french      = [L']{Assertion}[Les]{Assertion}
+                    , ngerman     = {Behauptung}{Behauptung}
+                    , italian     = [L']{Asserzione}[Le]{Asserzione}
+                    , portuguese  = [A]{Asserção}[As]{Asserção}
+                    , brazilian   = [A]{Asserção}[As]{Asserção}
+                    , spanish     = [La]{Aserción}[Las]{Aserción}
+                    , schinese    = {断言}{断言}
+                    , tchinese    = {斷言}{斷言}
+                    , japanese    = {アサーション}{アサーション}
+                    , russian     = {Утверждение}{Утверждение}
+                  }
+  }
+
+\NameTheorem { assumption }
+  {
+    , heading =   {
+                    , english     = Assumption
+                    , french      = Supposition
+                    , ngerman     = Annahme
+                    , italian     = Supposizione
+                    , portuguese  = Suposição
+                    , brazilian   = Suposição
+                    , spanish     = Suposición
+                    , schinese    = 假定
+                    , tchinese    = 假定
+                    , japanese    = 仮定
+                    , russian     = Предположение
+                  }
+    , crefname =  {
+                    , english     = {Assumption}{Assumption}
+                    , french      = [la]{Supposition}[les]{Supposition}
+                    , ngerman     = {Annahme}{Annahme}
+                    , italian     = [la]{Supposizione}[le]{Supposizione}
+                    , portuguese  = [a]{Suposição}[as]{Suposição}
+                    , brazilian   = [a]{Suposição}[as]{Suposição}
+                    , spanish     = [la]{Suposición}[las]{Suposición}
+                    , schinese    = {假定}{假定}
+                    , tchinese    = {假定}{假定}
+                    , japanese    = {仮定}{仮定}
+                    , russian     = {Предположение}{Предположение}
+                  }
+    , Crefname =  {
+                    , english     = {Assumption}{Assumption}
+                    , french      = [La]{Supposition}[Les]{Supposition}
+                    , ngerman     = {Annahme}{Annahme}
+                    , italian     = [la]{Supposizione}[le]{Supposizione}
+                    , portuguese  = [A]{Suposição}[As]{Suposição}
+                    , brazilian   = [A]{Suposição}[As]{Suposição}
+                    , spanish     = [La]{Suposición}[Las]{Suposición}
+                    , schinese    = {假定}{假定}
+                    , tchinese    = {假定}{假定}
+                    , japanese    = {仮定}{仮定}
+                    , russian     = {Предположение}{Предположение}
+                  }
+  }
+
+\NameTheorem { axiom }
+  {
+    , heading =   {
+                    , english     = Axiom
+                    , french      = Axiome
+                    , ngerman     = Axiom
+                    , italian     = Assioma
+                    , portuguese  = Axioma
+                    , brazilian   = Axioma
+                    , spanish     = Axioma
+                    , schinese    = 公理
+                    , tchinese    = 公理
+                    , japanese    = 公理
+                    , russian     = Аксиома
+                  }
+    , crefname =  {
+                    , english     = {Axiom}{Axiom}
+                    , french      = [l']{Axiome}[les]{Axiome}
+                    , ngerman     = {Axiom}{Axiom}
+                    , italian     = [l']{Assioma}[gli]{Assioma}
+                    , portuguese  = [o]{Axioma}[os]{Axioma}
+                    , brazilian   = [o]{Axioma}[os]{Axioma}
+                    , spanish     = [el]{Axioma}[los]{Axioma}
+                    , schinese    = {公理}{公理}
+                    , tchinese    = {公理}{公理}
+                    , japanese    = {公理}{公理}
+                    , russian     = {Аксиома}{Аксиома}
+                  }
+    , Crefname =  {
+                    , english     = {Axiom}{Axiom}
+                    , french      = [L']{Axiome}[Les]{Axiome}
+                    , ngerman     = {Axiom}{Axiom}
+                    , italian     = [L']{Assioma}[Gli]{Assioma}
+                    , portuguese  = [O]{Axioma}[Os]{Axioma}
+                    , brazilian   = [O]{Axioma}[Os]{Axioma}
+                    , spanish     = [El]{Axioma}[Los]{Axioma}
+                    , schinese    = {公理}{公理}
+                    , tchinese    = {公理}{公理}
+                    , japanese    = {公理}{公理}
+                    , russian     = {Аксиома}{Аксиома}
+                  }
+  }
+
+\NameTheorem { conclusion }
+  {
+    , heading =   {
+                    , english     = Conclusion
+                    , french      = Conclusion
+                    , ngerman     = Schlussfolgerung
+                    , italian     = Conclusione
+                    , portuguese  = Conclusão
+                    , brazilian   = Conclusão
+                    , spanish     = Conclusión
+                    , schinese    = 结论
+                    , tchinese    = 結論
+                    , japanese    = 結論
+                    , russian     = Вывод
+                  }
+    , crefname =  {
+                    , english     = {Conclusion}{Conclusion}
+                    , french      = [la]{Conclusion}[Les]{Conclusion}
+                    , ngerman     = {Schlussfolgerung}{Schlussfolgerung}
+                    , italian     = [la]{Conclusione}[le]{Conclusione}
+                    , portuguese  = [a]{Conclusão}[as]{Conclusão}
+                    , brazilian   = [a]{Conclusão}[as]{Conclusão}
+                    , spanish     = [la]{Conclusión}[las]{Conclusión}
+                    , schinese    = {结论}{结论}
+                    , tchinese    = {結論}{結論}
+                    , japanese    = {結論}{結論}
+                    , russian     = {Вывод}{Вывод}
+                  }
+    , Crefname =  {
+                    , english     = {Conclusion}{Conclusion}
+                    , french      = [La]{Conclusion}[Les]{Conclusion}
+                    , ngerman     = {Schlussfolgerung}{Schlussfolgerung}
+                    , italian     = [La]{Conclusione}[Le]{Conclusione}
+                    , portuguese  = [A]{Conclusão}[As]{Conclusão}
+                    , brazilian   = [A]{Conclusão}[As]{Conclusão}
+                    , spanish     = [La]{Conclusión}[Las]{Conclusión}
+                    , schinese    = {结论}{结论}
+                    , tchinese    = {結論}{結論}
+                    , japanese    = {結論}{結論}
+                    , russian     = {Вывод}{Вывод}
+                  }
+  }
+
+\NameTheorem { conjecture }
+  {
+    , heading =   {
+                    , english     = Conjecture
+                    , french      = Conjecture
+                    , ngerman     = Vermutung
+                    , italian     = Congettura
+                    , portuguese  = Conjetura
+                    , brazilian   = Conjectura
+                    , spanish     = Conjetura
+                    , schinese    = 猜想
+                    , tchinese    = 猜想
+                    , japanese    = 予想
+                    , russian     = Гипотеза
+                  }
+    , crefname =  {
+                    , english     = {Conjecture}{Conjecture}
+                    , french      = [la]{Conjecture}[les]{Conjecture}
+                    , ngerman     = {Vermutung}{Vermutung}
+                    , italian     = [la]{Congettura}[le]{Congettura}
+                    , portuguese  = [a]{Conjetura}[as]{Conjetura}
+                    , brazilian   = [a]{Conjectura}[as]{Conjectura}
+                    , spanish     = [la]{Conjetura}[las]{Conjetura}
+                    , schinese    = {猜想}{猜想}
+                    , tchinese    = {猜想}{猜想}
+                    , japanese    = {予想}{予想}
+                    , russian     = {Гипотеза}{Гипотеза}
+                  }
+    , Crefname =  {
+                    , english     = {Conjecture}{Conjecture}
+                    , french      = [La]{Conjecture}[Les]{Conjecture}
+                    , ngerman     = {Vermutung}{Vermutung}
+                    , italian     = [La]{Congettura}[Le]{Congettura}
+                    , portuguese  = [A]{Conjetura}[As]{Conjetura}
+                    , brazilian   = [A]{Conjectura}[As]{Conjectura}
+                    , spanish     = [La]{Conjetura}[Las]{Conjetura}
+                    , schinese    = {猜想}{猜想}
+                    , tchinese    = {猜想}{猜想}
+                    , japanese    = {予想}{予想}
+                    , russian     = {Гипотеза}{Гипотеза}
+                  }
+  }
+
+\NameTheorem { convention }
+  {
+    , heading =   {
+                    , english     = Convention
+                    , french      = Convention
+                    , ngerman     = Konvention
+                    , italian     = Convenzione
+                    , portuguese  = Convenção
+                    , brazilian   = Convenção
+                    , spanish     = Convención
+                    , schinese    = 约定
+                    , tchinese    = 約定
+                    , japanese    = 慣例
+                    , russian     = Конвенция
+                  }
+    , crefname =  {
+                    , english     = {Convention}{Convention}
+                    , french      = [la]{Convention}[les]{Convention}
+                    , ngerman     = {Konvention}{Konvention}
+                    , italian     = [la]{Convenzione}[le]{Convenzione}
+                    , portuguese  = [a]{Convenção}[as]{Convenção}
+                    , brazilian   = [a]{Convenção}[as]{Convenção}
+                    , spanish     = [la]{Convención}[las]{Convención}
+                    , schinese    = {约定}{约定}
+                    , tchinese    = {約定}{約定}
+                    , japanese    = {慣例}{慣例}
+                    , russian     = {Конвенция}{Конвенция}
+                  }
+    , Crefname =  {
+                    , english     = {Convention}{Convention}
+                    , french      = [La]{Convention}[Les]{Convention}
+                    , ngerman     = {Konvention}{Konvention}
+                    , italian     = [La]{Convenzione}[Le]{Convenzione}
+                    , portuguese  = [A]{Convenção}[As]{Convenção}
+                    , brazilian   = [A]{Convenção}[As]{Convenção}
+                    , spanish     = [La]{Convención}[Las]{Convención}
+                    , schinese    = {约定}{约定}
+                    , tchinese    = {約定}{約定}
+                    , japanese    = {慣例}{慣例}
+                    , russian     = {Конвенция}{Конвенция}
+                  }
+  }
+
+\NameTheorem { corollary }
+  {
+    , heading =   {
+                    , english     = Corollary
+                    , french      = Corollaire
+                    , ngerman     = Korollar
+                    , italian     = Corollario
+                    , portuguese  = Corolário
+                    , brazilian   = Corolário
+                    , spanish     = Corolario
+                    , schinese    = 推论
+                    , tchinese    = 推論
+                    , japanese    = 系
+                    , russian     = Следствие
+                  }
+    , crefname =  {
+                    , english     = {Corollary}{Corollary}
+                    , french      = [le]{Corollaire}[les]{Corollaire}
+                    , ngerman     = {Korollar}{Korollar}
+                    , italian     = [il]{Corollario}[i]{Corollario}
+                    , portuguese  = [o]{Corolário}[os]{Corolário}
+                    , brazilian   = [o]{Corolário}[os]{Corolário}
+                    , spanish     = [el]{Corolario}[los]{Corolario}
+                    , schinese    = {推论}{推论}
+                    , tchinese    = {推論}{推論}
+                    , japanese    = {系}{系}
+                    , russian     = {Следствие}{Следствие}
+                  }
+    , Crefname =  {
+                    , english     = {Corollary}{Corollary}
+                    , french      = [Le]{Corollaire}[Les]{Corollaire}
+                    , ngerman     = {Korollar}{Korollar}
+                    , italian     = [Il]{Corollario}[I]{Corollario}
+                    , portuguese  = [O]{Corolário}[Os]{Corolário}
+                    , brazilian   = [O]{Corolário}[Os]{Corolário}
+                    , spanish     = [El]{Corolario}[Los]{Corolario}
+                    , schinese    = {推论}{推论}
+                    , tchinese    = {推論}{推論}
+                    , japanese    = {系}{系}
+                    , russian     = {Следствие}{Следствие}
+                  }
+  }
+
+\NameTheorem { definition }
+  {
+    , heading =   {
+                    , english     = Definition
+                    , french      = Définition
+                    , ngerman     = Definition
+                    , italian     = Definizione
+                    , portuguese  = Definição
+                    , brazilian   = Definição
+                    , spanish     = Definición
+                    , schinese    = 定义
+                    , tchinese    = 定義
+                    , japanese    = 定義
+                    , russian     = Определение
+                  }
+    , crefname =  {
+                    , english     = {Definition}{Definition}
+                    , french      = [la]{Définition}[les]{Définition}
+                    , ngerman     = {Definition}{Definition}
+                    , italian     = [la]{Definizione}[le]{Definizione}
+                    , portuguese  = [a]{Definição}[as]{Definição}
+                    , brazilian   = [a]{Definição}[as]{Definição}
+                    , spanish     = [la]{Definición}[las]{Definición}
+                    , schinese    = {定义}{定义}
+                    , tchinese    = {定義}{定義}
+                    , japanese    = {定義}{定義}
+                    , russian     = {Определение}{Определение}
+                  }
+    , Crefname =  {
+                    , english     = {Definition}{Definition}
+                    , french      = [La]{Définition}[Les]{Définition}
+                    , ngerman     = {Definition}{Definition}
+                    , italian     = [La]{Definizione}[Le]{Definizione}
+                    , portuguese  = [A]{Definição}[As]{Definição}
+                    , brazilian   = [A]{Definição}[As]{Definição}
+                    , spanish     = [La]{Definición}[Las]{Definición}
+                    , schinese    = {定义}{定义}
+                    , tchinese    = {定義}{定義}
+                    , japanese    = {定義}{定義}
+                    , russian     = {Определение}{Определение}
+                  }
+  }
+
+\NameTheorem { example }
+  {
+    , heading =   {
+                    , english     = Example
+                    , french      = Exemple
+                    , ngerman     = Beispiel
+                    , italian     = Esempio
+                    , portuguese  = Exemplo
+                    , brazilian   = Exemplo
+                    , spanish     = Ejemplo
+                    , schinese    = 例
+                    , tchinese    = 例
+                    , japanese    = 例
+                    , russian     = Пример
+                  }
+    , crefname =  {
+                    , english     = {Example}{Example}
+                    , french      = [l']{Example}[les]{Example}
+                    , ngerman     = {Beispiel}{Beispiel}
+                    , italian     = [l']{Esempio}[gli]{Esempio}
+                    , portuguese  = [o]{Exemplo}[os]{Exemplo}
+                    , brazilian   = [o]{Exemplo}[os]{Exemplo}
+                    , spanish     = [el]{Ejemplo}[los]{Ejemplo}
+                    , schinese    = {例}{例}
+                    , tchinese    = {例}{例}
+                    , japanese    = {例}{例}
+                    , russian     = {Пример}{Пример}
+                  }
+    , Crefname =  {
+                    , english     = {Example}{Example}
+                    , french      = [L']{Example}[Les]{Example}
+                    , ngerman     = {Beispiel}{Beispiel}
+                    , italian     = [L']{Esempio}[Gli]{Esempio}
+                    , portuguese  = [O]{Exemplo}[Os]{Exemplo}
+                    , brazilian   = [O]{Exemplo}[Os]{Exemplo}
+                    , spanish     = [El]{Ejemplo}[Los]{Ejemplo}
+                    , schinese    = {例}{例}
+                    , tchinese    = {例}{例}
+                    , japanese    = {例}{例}
+                    , russian     = {Пример}{Пример}
+                  }
+  }
+
+\NameTheorem { exercise }
+  {
+    , heading =   {
+                    , english     = Exercise
+                    , french      = Exercice
+                    , ngerman     = Übung
+                    , italian     = Esercizio
+                    , portuguese  = Exercício
+                    , brazilian   = Exercício
+                    , spanish     = Ejercicio
+                    , schinese    = 练习
+                    , tchinese    = 練習
+                    , japanese    = 練習
+                    , russian     = Упражнение
+                  }
+    , crefname =  {
+                    , english     = {Exercise}{Exercise}
+                    , french      = [l']{Exercice}[les]{Exercice}
+                    , ngerman     = {Übung}{Übung}
+                    , italian     = [l']{Esercizio}[gli]{Esercizio}
+                    , portuguese  = [o]{Exercício}[os]{Exercício}
+                    , brazilian   = [o]{Exercício}[os]{Exercício}
+                    , spanish     = [el]{Ejercicio}[los]{Ejercicio}
+                    , schinese    = {练习}{练习}
+                    , tchinese    = {練習}{練習}
+                    , japanese    = {練習}{練習}
+                    , russian     = {Упражнение}{Упражнение}
+                  }
+    , Crefname =  {
+                    , english     = {Exercise}{Exercise}
+                    , french      = [L']{Exercice}[Les]{Exercice}
+                    , ngerman     = {Übung}{Übung}
+                    , italian     = [L']{Esercizio}[Gli]{Esercizio}
+                    , portuguese  = [O]{Exercício}[Os]{Exercício}
+                    , brazilian   = [O]{Exercício}[Os]{Exercício}
+                    , spanish     = [El]{Ejercicio}[Los]{Ejercicio}
+                    , schinese    = {练习}{练习}
+                    , tchinese    = {練習}{練習}
+                    , japanese    = {練習}{練習}
+                    , russian     = {Упражнение}{Упражнение}
+                  }
+  }
+
+\NameTheorem { fact }
+  {
+    , heading =   {
+                    , english     = Fact
+                    , french      = Fait
+                    , ngerman     = Fakt
+                    , italian     = Fatto
+                    , portuguese  = Facto
+                    , brazilian   = Fato
+                    , spanish     = Hecho
+                    , schinese    = 事实
+                    , tchinese    = 事實
+                    , japanese    = 事実
+                    , russian     = Факт
+                  }
+    , crefname =  {
+                    , english     = {Fact}{Fact}
+                    , french      = [le]{Fait}[les]{Fait}
+                    , ngerman     = {Fakt}{Fakt}
+                    , italian     = [il]{Fatto}[i]{Fatto}
+                    , portuguese  = [o]{Facto}[os]{Facto}
+                    , brazilian   = [o]{Fato}[os]{Fato}
+                    , spanish     = [el]{Hecho}[los]{Hecho}
+                    , schinese    = {事实}{事实}
+                    , tchinese    = {事實}{事實}
+                    , japanese    = {事実}{事実}
+                    , russian     = {Факт}{Факт}
+                  }
+    , Crefname =  {
+                    , english     = {Fact}{Fact}
+                    , french      = [Le]{Fait}[Les]{Fait}
+                    , ngerman     = {Fakt}{Fakt}
+                    , italian     = [Il]{Fatto}[I]{Fatto}
+                    , portuguese  = [O]{Facto}[Os]{Facto}
+                    , brazilian   = [O]{Fato}[Os]{Fato}
+                    , spanish     = [El]{Hecho}[Los]{Hecho}
+                    , schinese    = {事实}{事实}
+                    , tchinese    = {事實}{事實}
+                    , japanese    = {事実}{事実}
+                    , russian     = {Факт}{Факт}
+                  }
+  }
+
+\NameTheorem { hypothesis }
+  {
+    , heading =   {
+                    , english     = Hypothesis
+                    , french      = Hypothèse
+                    , ngerman     = Hypothese
+                    , italian     = Ipotesi
+                    , portuguese  = Hipótese
+                    , brazilian   = Hipótese
+                    , spanish     = Hipótesis
+                    , schinese    = 假设
+                    , tchinese    = 假設
+                    , japanese    = 仮設
+                    , russian     = Гипотеза
+                  }
+    , crefname =  {
+                    , english     = {Hypothesis}{Hypothesis}
+                    , french      = [l']{Hypothèse}[les]{Hypothèse}
+                    , ngerman     = {Hypothese}{Hypothese}
+                    , italian     = [l']{Ipotesi}[le]{Ipotesi}
+                    , portuguese  = [a]{Hipótese}[as]{Hipótese}
+                    , brazilian   = [a]{Hipótese}[as]{Hipótese}
+                    , spanish     = [la]{Hipótesis}[las]{Hipótesis}
+                    , schinese    = {假设}{假设}
+                    , tchinese    = {假設}{假設}
+                    , japanese    = {仮設}{仮設}
+                    , russian     = {Гипотеза}{Гипотеза}
+                  }
+    , Crefname =  {
+                    , english     = {Hypothesis}{Hypothesis}
+                    , french      = [L']{Hypothèse}[Les]{Hypothèse}
+                    , ngerman     = {Hypothese}{Hypothese}
+                    , italian     = [L']{Ipotesi}[Le]{Ipotesi}
+                    , portuguese  = [A]{Hipótese}[As]{Hipótese}
+                    , brazilian   = [A]{Hipótese}[As]{Hipótese}
+                    , spanish     = [La]{Hipótesis}[Las]{Hipótesis}
+                    , schinese    = {假设}{假设}
+                    , tchinese    = {假設}{假設}
+                    , japanese    = {仮設}{仮設}
+                    , russian     = {Гипотеза}{Гипотеза}
+                  }
+  }
+
+\NameTheorem { lemma }
+  {
+    , heading   = {
+                    , english     = Lemma
+                    , french      = Lemme
+                    , ngerman     = Lemma
+                    , italian     = Lemma
+                    , portuguese  = Lema
+                    , brazilian   = Lema
+                    , spanish     = Lema
+                    , schinese    = 引理
+                    , tchinese    = 引理
+                    , japanese    = 補題
+                    , russian     = Лемма
+                  }
+    , crefname  = {
+                    , english     = {Lemma}{Lemma}
+                    , french      = [le]{Lemme}[les]{Lemme}
+                    , ngerman     = {Lemma}{Lemma}
+                    , italian     = [il]{Lemma}[i]{Lemma}
+                    , portuguese  = [o]{Lema}[os]{Lema}
+                    , brazilian   = [o]{Lema}[os]{Lema}
+                    , spanish     = [el]{Lema}[las]{Lema}
+                    , schinese    = {引理}{引理}
+                    , tchinese    = {引理}{引理}
+                    , japanese    = {補題}{補題}
+                    , russian     = {Лемма}{Лемма}
+                  }
+    , Crefname  = {
+                    , english     = {Lemma}{Lemma}
+                    , french      = [Le]{Lemme}[Les]{Lemme}
+                    , ngerman     = {Lemma}{Lemma}
+                    , italian     = [Il]{Lemma}[I]{Lemma}
+                    , portuguese  = [O]{Lema}[Os]{Lema}
+                    , brazilian   = [O]{Lema}[Os]{Lema}
+                    , spanish     = [el]{Lema}[las]{Lema}
+                    , schinese    = {引理}{引理}
+                    , tchinese    = {引理}{引理}
+                    , japanese    = {補題}{補題}
+                    , russian     = {Лемма}{Лемма}
+                  }
+  }
+
+\NameTheorem { notation }
+  {
+    , heading =   {
+                    , english     = Notation
+                    , french      = Notation
+                    , ngerman     = Notation
+                    , italian     = Notazione
+                    , portuguese  = Notação
+                    , brazilian   = Notação
+                    , spanish     = Notación
+                    , schinese    = 记号
+                    , tchinese    = 記號
+                    , japanese    = 記法
+                    , russian     = Нотация
+                  }
+    , crefname =  {
+                    , english     = {Notation}{Notation}
+                    , french      = [la]{Notation}[les]{Notation}
+                    , ngerman     = {Notation}{Notation}
+                    , italian     = [la]{Notazione}[le]{Notazione}
+                    , portuguese  = [a]{Notação}[as]{Notação}
+                    , brazilian   = [a]{Notação}[as]{Notação}
+                    , spanish     = [la]{Notación}[las]{Notación}
+                    , schinese    = {记号}{记号}
+                    , tchinese    = {記號}{記號}
+                    , japanese    = {記法}{記法}
+                    , russian     = {Нотация}{Нотация}
+                  }
+    , Crefname =  {
+                    , english     = {Notation}{Notation}
+                    , french      = [La]{Notation}[Les]{Notation}
+                    , ngerman     = {Notation}{Notation}
+                    , italian     = [La]{Notazione}[Le]{Notazione}
+                    , portuguese  = [A]{Notação}[As]{Notação}
+                    , brazilian   = [A]{Notação}[As]{Notação}
+                    , spanish     = [La]{Notación}[Las]{Notación}
+                    , schinese    = {记号}{记号}
+                    , tchinese    = {記號}{記號}
+                    , japanese    = {記法}{記法}
+                    , russian     = {Нотация}{Нотация}
+                  }
+  }
+
+\NameTheorem { observation }
+  {
+    , heading =   {
+                    , english     = Observation
+                    , french      = Observation
+                    , ngerman     = Beobachtung
+                    , italian     = Osservazione
+                    , portuguese  = Observação
+                    , brazilian   = Observação
+                    , spanish     = Observación
+                    , schinese    = 观察
+                    , tchinese    = 觀察
+                    , japanese    = 観察
+                    , russian     = Наблюдение
+                  }
+    , crefname =  {
+                    , english     = {Observation}{Observation}
+                    , french      = [la]{Observation}[les]{Observation}
+                    , ngerman     = {Beobachtung}{Beobachtung}
+                    , italian     = [l']{Osservazione}[le]{Osservazione}
+                    , portuguese  = [a]{Observação}[as]{Observação}
+                    , brazilian   = [a]{Observação}[as]{Observação}
+                    , spanish     = [la]{Observación}[las]{Observación}
+                    , schinese    = {观察}{观察}
+                    , tchinese    = {觀察}{觀察}
+                    , japanese    = {観察}{観察}
+                    , russian     = {Наблюдение}{Наблюдение}
+                  }
+    , Crefname =  {
+                    , english     = {Observation}{Observation}
+                    , french      = [La]{Observation}[Les]{Observation}
+                    , ngerman     = {Beobachtung}{Beobachtung}
+                    , italian     = [L']{Osservazione}[Le]{Osservazione}
+                    , portuguese  = [A]{Observação}[As]{Observação}
+                    , brazilian   = [A]{Observação}[As]{Observação}
+                    , spanish     = [La]{Observación}[Las]{Observación}
+                    , schinese    = {观察}{观察}
+                    , tchinese    = {觀察}{觀察}
+                    , japanese    = {観察}{観察}
+                    , russian     = {Наблюдение}{Наблюдение}
+                  }
+  }
+
+\NameTheorem { postulate }
+  {
+    , heading =   {
+                    , english     = Postulate
+                    , french      = Postulat
+                    , ngerman     = Postulat
+                    , italian     = Postulato
+                    , portuguese  = Postulado
+                    , brazilian   = Postulado
+                    , spanish     = Postulado
+                    , schinese    = 公设
+                    , tchinese    = 公設
+                    , japanese    = 公準
+                    , russian     = Постулат
+                  }
+    , crefname =  {
+                    , english     = {Postulate}{Postulate}
+                    , french      = [le]{Postulat}[les]{Postulat}
+                    , ngerman     = {Postulat}{Postulat}
+                    , italian     = [il]{Postulato}[i]{Postulato}
+                    , portuguese  = [o]{Postulado}[os]{Postulado}
+                    , brazilian   = [o]{Postulado}[os]{Postulado}
+                    , spanish     = [el]{Postulado}[los]{Postulado}
+                    , schinese    = {公设}{公设}
+                    , tchinese    = {公設}{公設}
+                    , japanese    = {公準}{公準}
+                    , russian     = {Постулат}{Постулат}
+                  }
+    , Crefname =  {
+                    , english     = {Postulate}{Postulate}
+                    , french      = [Le]{Postulat}[Les]{Postulat}
+                    , ngerman     = {Postulat}{Postulat}
+                    , italian     = [Il]{Postulato}[I]{Postulato}
+                    , portuguese  = [O]{Postulado}[Os]{Postulado}
+                    , brazilian   = [O]{Postulado}[Os]{Postulado}
+                    , spanish     = [El]{Postulado}[Los]{Postulado}
+                    , schinese    = {公设}{公设}
+                    , tchinese    = {公設}{公設}
+                    , japanese    = {公準}{公準}
+                    , russian     = {Постулат}{Постулат}
+                  }
+  }
+
+\NameTheorem { problem }
+  {
+    , heading =   {
+                    , english     = Problem
+                    , french      = Problème
+                    , ngerman     = Problem
+                    , italian     = Problema
+                    , portuguese  = Problema
+                    , brazilian   = Problema
+                    , spanish     = Problema
+                    , schinese    = 问题
+                    , tchinese    = 問題
+                    , japanese    = 問題
+                    , russian     = Проблема
+                  }
+    , crefname =  {
+                    , english     = {Problem}{Problem}
+                    , french      = [le]{Problème}[les]{Problème}
+                    , ngerman     = {Problem}{Problem}
+                    , italian     = [il]{Problema}[i]{Problema}
+                    , portuguese  = [o]{Problema}[os]{Problema}
+                    , brazilian   = [o]{Problema}[os]{Problema}
+                    , spanish     = [el]{Problema}[los]{Problema}
+                    , schinese    = {问题}{问题}
+                    , tchinese    = {問題}{問題}
+                    , japanese    = {問題}{問題}
+                    , russian     = {Проблема}{Проблема}
+                  }
+    , Crefname =  {
+                    , english     = {Problem}{Problem}
+                    , french      = [Le]{Problème}[Les]{Problème}
+                    , ngerman     = {Problem}{Problem}
+                    , italian     = [Il]{Problema}[I]{Problema}
+                    , portuguese  = [O]{Problema}[Os]{Problema}
+                    , brazilian   = [O]{Problema}[Os]{Problema}
+                    , spanish     = [El]{Problema}[Los]{Problema}
+                    , schinese    = {问题}{问题}
+                    , tchinese    = {問題}{問題}
+                    , japanese    = {問題}{問題}
+                    , russian     = {Проблема}{Проблема}
+                  }
+  }
+
+\NameTheorem { property }
+  {
+    , heading =   {
+                    , english     = Property
+                    , french      = Propriété
+                    , ngerman     = Eigenschaft
+                    , italian     = Proprietà
+                    , portuguese  = Propriedade
+                    , brazilian   = Propriedade
+                    , spanish     = Propiedad
+                    , schinese    = 性质
+                    , tchinese    = 性質
+                    , japanese    = 性質
+                    , russian     = Имущество
+                  }
+    , crefname =  {
+                    , english     = {Property}{Property}
+                    , french      = [la]{Propriété}[les]{Propriété}
+                    , ngerman     = {Eigenschaft}{Eigenschaft}
+                    , italian     = [la]{Proprietà}[le]{Proprietà}
+                    , portuguese  = [a]{Propriedade}[as]{Propriedade}
+                    , brazilian   = [a]{Propriedade}[as]{Propriedade}
+                    , spanish     = [la]{Propiedad}[las]{Propiedad}
+                    , schinese    = {性质}{性质}
+                    , tchinese    = {性質}{性質}
+                    , japanese    = {性質}{性質}
+                    , russian     = {Имущество}{Имущество}
+                  }
+    , Crefname =  {
+                    , english     = {Property}{Property}
+                    , french      = [La]{Propriété}[Les]{Propriété}
+                    , ngerman     = {Eigenschaft}{Eigenschaft}
+                    , italian     = [La]{Proprietà}[Le]{Proprietà}
+                    , portuguese  = [A]{Propriedade}[As]{Propriedade}
+                    , brazilian   = [A]{Propriedade}[As]{Propriedade}
+                    , spanish     = [La]{Propiedad}[Las]{Propiedad}
+                    , schinese    = {性质}{性质}
+                    , tchinese    = {性質}{性質}
+                    , japanese    = {性質}{性質}
+                    , russian     = {Имущество}{Имущество}
+                  }
+  }
+
+\NameTheorem { proposition }
+  {
+    , heading =   {
+                    , english     = Proposition
+                    , french      = Proposition
+                    , ngerman     = Proposition
+                    , italian     = Proposizione
+                    , portuguese  = Proposição
+                    , brazilian   = Proposição
+                    , spanish     = Proposición
+                    , schinese    = 命题
+                    , tchinese    = 命題
+                    , japanese    = 命題
+                    , russian     = Предложение
+                  }
+    , crefname =  {
+                    , english     = {Proposition}{Proposition}
+                    , french      = [la]{Proposition}[les]{Proposition}
+                    , ngerman     = {Proposition}{Proposition}
+                    , italian     = [la]{Proposizione}[le]{Proposizione}
+                    , portuguese  = [a]{Proposição}[as]{Proposição}
+                    , brazilian   = [a]{Proposição}[as]{Proposição}
+                    , spanish     = [la]{Proposición}[las]{Proposición}
+                    , schinese    = {命题}{命题}
+                    , tchinese    = {命題}{命題}
+                    , japanese    = {命題}{命題}
+                    , russian     = {Предложение}{Предложение}
+                  }
+    , Crefname =  {
+                    , english     = {Proposition}{Proposition}
+                    , french      = [La]{Proposition}[Les]{Proposition}
+                    , ngerman     = {Proposition}{Proposition}
+                    , italian     = [La]{Proposizione}[Le]{Proposizione}
+                    , portuguese  = [A]{Proposição}[As]{Proposição}
+                    , brazilian   = [A]{Proposição}[As]{Proposição}
+                    , spanish     = [La]{Proposición}[Las]{Proposición}
+                    , schinese    = {命题}{命题}
+                    , tchinese    = {命題}{命題}
+                    , japanese    = {命題}{命題}
+                    , russian     = {Предложение}{Предложение}
+                  }
+  }
+
+\NameTheorem { question }
+  {
+    , heading =   {
+                    , english     = Question
+                    , french      = Question
+                    , ngerman     = Frage
+                    , italian     = Domanda
+                    , portuguese  = Pergunta
+                    , brazilian   = Pergunta
+                    , spanish     = Pregunta
+                    , schinese    = 问题
+                    , tchinese    = 問題
+                    , japanese    = 問題
+                    , russian     = Вопрос
+                  }
+    , crefname =  {
+                    , english     = {Question}{Question}
+                    , french      = [la]{Question}[les]{Question}
+                    , ngerman     = {Frage}{Frage}
+                    , italian     = [la]{Domanda}[le]{Domanda}
+                    , portuguese  = [a]{Pergunta}[as]{Pergunta}
+                    , brazilian   = [a]{Pergunta}[as]{Pergunta}
+                    , spanish     = [la]{Pregunta}[las]{Pregunta}
+                    , schinese    = {问题}{问题}
+                    , tchinese    = {問題}{問題}
+                    , japanese    = {問題}{問題}
+                    , russian     = {Вопрос}{Вопрос}
+                  }
+    , Crefname =  {
+                    , english     = {Question}{Question}
+                    , french      = [La]{Question}[Les]{Question}
+                    , ngerman     = {Frage}{Frage}
+                    , italian     = [La]{Domanda}[Le]{Domanda}
+                    , portuguese  = [A]{Pergunta}[As]{Pergunta}
+                    , brazilian   = [A]{Pergunta}[As]{Pergunta}
+                    , spanish     = [La]{Pregunta}[Las]{Pregunta}
+                    , schinese    = {问题}{问题}
+                    , tchinese    = {問題}{問題}
+                    , japanese    = {問題}{問題}
+                    , russian     = {Вопрос}{Вопрос}
+                  }
+  }
+
+\NameTheorem { remark }
+  {
+    , heading =   {
+                    , english     = Remark
+                    , french      = Remarque
+                    , ngerman     = Bemerkung
+                    , italian     = Commento
+                    , portuguese  = Comentário
+                    , brazilian   = Comentário
+                    , spanish     = Comentario
+                    , schinese    = 备注
+                    , tchinese    = 備註
+                    , japanese    = 注釈
+                    , russian     = Замечание
+                  }
+    , crefname =  {
+                    , english     = {Remark}{Remark}
+                    , french      = [la]{Remarque}[les]{Remarque}
+                    , ngerman     = {Bemerkung}{Bemerkung}
+                    , italian     = [il]{Commento}[i]{Commento}
+                    , portuguese  = [o]{Comentário}[os]{Comentário}
+                    , brazilian   = [o]{Comentário}[os]{Comentário}
+                    , spanish     = [el]{Comentario}[los]{Comentario}
+                    , schinese    = {备注}{备注}
+                    , tchinese    = {備註}{備註}
+                    , japanese    = {注釈}{注釈}
+                    , russian     = {Замечание}{Замечание}
+                  }
+    , Crefname =  {
+                    , english     = {Remark}{Remark}
+                    , french      = [La]{Remarque}[Les]{Remarque}
+                    , ngerman     = {Bemerkung}{Bemerkung}
+                    , italian     = [Il]{Commento}[I]{Commento}
+                    , portuguese  = [O]{Comentário}[Os]{Comentário}
+                    , brazilian   = [O]{Comentário}[Os]{Comentário}
+                    , spanish     = [El]{Comentario}[Los]{Comentario}
+                    , schinese    = {备注}{备注}
+                    , tchinese    = {備註}{備註}
+                    , japanese    = {注釈}{注釈}
+                    , russian     = {Замечание}{Замечание}
+                  }
+  }
+
+\NameTheorem { theorem }
+  {
+    , heading =   {
+                    , english     = Theorem
+                    , french      = Théorème
+                    , ngerman     = Satz
+                    , italian     = Teorema
+                    , portuguese  = Teorema
+                    , brazilian   = Teorema
+                    , spanish     = Teorema
+                    , schinese    = 定理
+                    , tchinese    = 定理
+                    , japanese    = 定理
+                    , russian     = Теорема
+                  }
+    , crefname =  {
+                    , english     = {Theorem}{Theorem}
+                    , french      = [le]{Théorème}[les]{Théorème}
+                    , ngerman     = {Satz}{Satz}
+                    , italian     = [il]{Teorema}[i]{Teorema}
+                    , portuguese  = [o]{Teorema}[os]{Teorema}
+                    , brazilian   = [o]{Teorema}[os]{Teorema}
+                    , spanish     = [el]{Teorema}[los]{Teorema}
+                    , schinese    = {定理}{定理}
+                    , tchinese    = {定理}{定理}
+                    , japanese    = {定理}{定理}
+                    , russian     = {Теорема}{Теорема}
+                  }
+    , Crefname =  {
+                    , english     = {Theorem}{Theorem}
+                    , french      = [Le]{Théorème}[Les]{Théorème}
+                    , ngerman     = {Satz}{Satz}
+                    , italian     = [Il]{Teorema}[I]{Teorema}
+                    , portuguese  = [O]{Teorema}[Os]{Teorema}
+                    , brazilian   = [O]{Teorema}[Os]{Teorema}
+                    , spanish     = [El]{Teorema}[Los]{Teorema}
+                    , schinese    = {定理}{定理}
+                    , tchinese    = {定理}{定理}
+                    , japanese    = {定理}{定理}
+                    , russian     = {Теорема}{Теорема}
+                  }
+  }
+
+\endinput
+%%
+%% End of file `projlib-theorem.sty'.
+
+
+接下来:
+1. ✅ 定义 \SetTheorem,用于处理编号和名称样式的问题
+2. ✅ 定义 complexname 与 simplename
+3. ✅ 给出定理类环境的初始化,注意 no-theorem 与 no-theorem-numbering 等选项


Property changes on: branches/branch2021.final/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2021.final/Master/tlpkg/libexec/ctan2tds
===================================================================
--- branches/branch2021.final/Master/tlpkg/libexec/ctan2tds	2022-03-10 21:24:58 UTC (rev 62600)
+++ branches/branch2021.final/Master/tlpkg/libexec/ctan2tds	2022-03-10 21:25:27 UTC (rev 62601)
@@ -2226,6 +2226,7 @@
  'ppchtex',     'm.*tex|m.*sty',
  'present',     'present.tex',
  'presentations-en',    'NULL', # doc pkg
+ 'projlib',	'old-modules|' . $standardtex,
  'prosper',     '\.ps|\.eps|\.sty|\.cls',
  'pstricks',    'pst-*\.tex',
  'pstricks-examples',   'NULL',



More information about the tex-live-commits mailing list.