summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r--Master/texmf-dist/source/latex/projlib/ProjLib-doc.dtx49
-rw-r--r--Master/texmf-dist/source/latex/projlib/ProjLib.dtx287
2 files changed, 157 insertions, 179 deletions
diff --git a/Master/texmf-dist/source/latex/projlib/ProjLib-doc.dtx b/Master/texmf-dist/source/latex/projlib/ProjLib-doc.dtx
index c228578a01b..8c54844a7f2 100644
--- a/Master/texmf-dist/source/latex/projlib/ProjLib-doc.dtx
+++ b/Master/texmf-dist/source/latex/projlib/ProjLib-doc.dtx
@@ -90,7 +90,6 @@
%% Names
%%================================
\providecommand{\ProjLibPackage}{\mbox{\textsf{ProjLib}}}
-\providecommand{\PJLtoolkit}{\mbox{\textsf{PJLtoolkit}}}
\providecommand{\PJLauthor}{\mbox{\textsf{PJLauthor}}}
\providecommand{\PJLdatePackage}{\mbox{\textsf{PJLdate}}}
\providecommand{\PJLdraft}{\mbox{\textsf{PJLdraft}}}
@@ -108,7 +107,7 @@
%<*ProjLib-doc-cn>
\title{\ProjLib{} 工具集\\[.3\baselineskip]\normalsize 使用指南}
\author{许锦文}
-\thanks{对应版本.~~\texttt{\ProjLib{}~2021/08/07a}}
+\thanks{对应版本.~~\texttt{\ProjLib{}~2021/08/11}}
\email{\href{mailto:ProjLib@outlook.com}{ProjLib@outlook.com}}
\date{2021年8月,北京}
%</ProjLib-doc-cn>
@@ -116,7 +115,7 @@
%<*ProjLib-doc-en>
\title{\ProjLib{}~\,Toolkit\\[.3\baselineskip]\normalsize User Manual}
\author{Jinwen XU}
-\thanks{Corresponding to: \texttt{\ProjLib{}~2021/08/07a}}
+\thanks{Corresponding to: \texttt{\ProjLib{}~2021/08/11}}
\email{\href{mailto:ProjLib@outlook.com}{ProjLib@outlook.com}}
\date{August 2021, Beijing}
%</ProjLib-doc-en>
@@ -124,7 +123,7 @@
%<*ProjLib-doc-fr>
\title{La boîte à outils~\,\ProjLib{}\\[.3\baselineskip]\normalsize Manuel d'utilisation}
\author{Jinwen XU}
-\thanks{Correspondant à : \texttt{\ProjLib{}~2021/08/07a}}
+\thanks{Correspondant à : \texttt{\ProjLib{}~2021/08/11}}
\email{\href{mailto:ProjLib@outlook.com}{ProjLib@outlook.com}}
\date{Août 2021, à Pékin}
%</ProjLib-doc-fr>
@@ -600,7 +599,7 @@ Les environnements de type théorème couramment utilisés ont été prédéfini
\item 字体选项。顾名思义,会加载相应名称的字体。
\item \texttt{useosf} 选项用来启用“旧式”数字。
\end{itemize}
- \item \texttt{nothms}、\texttt{nothmnum}、\texttt{thmnum} 或 \texttt{thmnum=}\meta{counter}、\texttt{regionalref}、\texttt{originalref}
+ \item \texttt{nothms}、\texttt{delaythms}、\texttt{nothmnum}、\texttt{thmnum} 或 \texttt{thmnum=}\meta{counter}、\texttt{regionalref}、\texttt{originalref}
\begin{itemize}
\item 来自用于设置定理类环境的组件 \PJLthm{} 的选项,详细信息请参阅有关这一宏包的小节。
\end{itemize}
@@ -630,7 +629,7 @@ Les environnements de type théorème couramment utilisés ont été prédéfini
\item Font options. As the names suggest, font with corresponding name will be loaded.
\item The \texttt{useosf} option is used to enable the old-style figures.
\end{itemize}
- \item \texttt{nothms}, \texttt{nothmnum}, \texttt{thmnum} or \texttt{thmnum=}\meta{counter}, \texttt{regionalref}, \texttt{originalref}
+ \item \texttt{nothms}, \texttt{delaythms}, \texttt{nothmnum}, \texttt{thmnum} or \texttt{thmnum=}\meta{counter}, \texttt{regionalref}, \texttt{originalref}
\begin{itemize}
\item Options from the component \PJLthm{} used for setting theorem-like environments, please refer to the section on this package for details.
\end{itemize}
@@ -660,7 +659,7 @@ In addition, there are also some options of the components that should be passed
\item Options de police. Comme les noms l'indiquent, la police avec le nom correspondant sera utilisée.
\item L'option \texttt{useosf} est pour activer les chiffres à l'ancienne.
\end{itemize}
- \item \texttt{nothms}, \texttt{nothmnum}, \texttt{thmnum} ou \texttt{thmnum=}\meta{counter}, \texttt{regionalref}, \texttt{originalref}
+ \item \texttt{nothms}, \texttt{delaythms}, \texttt{nothmnum}, \texttt{thmnum} ou \texttt{thmnum=}\meta{counter}, \texttt{regionalref}, \texttt{originalref}
\begin{itemize}
\item Options du composant \PJLthm{} utilisé pour définir des environnements de type théorème, veuillez vous référer à la section sur ce package pour plus de détails.
\end{itemize}
@@ -697,11 +696,11 @@ De plus, il existe également certaines options des composants qui doivent être
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
-\subsection{Main function}
+\subsection{Main functions}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
-\subsection{Fonction principale}
+\subsection{Fonctions principales}
%</ProjLib-doc-fr>
%<*ProjLib-doc-cn>
@@ -958,9 +957,13 @@ Par exemple, \lstinline|\AddLanguageSetting(German){\color{orange}}| peut rendre
\begin{itemize}
\item 不设定定理类环境。如果你希望使用自己的定理样式,可以使用这一选项。
\end{itemize}
+ \item \texttt{delaythms}
+ \begin{itemize}
+ \item 将定理类环境设定推迟到导言结尾。如果你希望定理类环境跟随自定义计数器编号,则应考虑这一选项。
+ \end{itemize}
\item \texttt{nothmnum}、\texttt{thmnum} 或 \texttt{thmnum=}\meta{counter}
\begin{itemize}
- \item 使定理类环境均不编号 / 按照 1、2、3 顺序编号 / 在 \meta{counter} 内编号。其中 \meta{counter} 应该是自带的计数器 (如 \texttt{subsection}) 或在导言部分自定义的计数器。在没有使用任何选项的情况下将按照 \texttt{chapter} (书) 或 \texttt{section} (文章) 编号。
+ \item 使定理类环境均不编号 / 按照 1、2、3 顺序编号 / 在 \meta{counter} 内编号。其中 \meta{counter} 应该是自带的计数器 (如 \texttt{subsection}) 或在导言部分自定义的计数器 (在启用 \texttt{delaythms} 选项的情况下)。在没有使用任何选项的情况下将按照 \texttt{chapter} (书) 或 \texttt{section} (文章) 编号。
\end{itemize}
\item \texttt{regionalref}、\texttt{originalref}
\begin{itemize}
@@ -995,6 +998,7 @@ Par exemple, \lstinline|\AddLanguageSetting(German){\color{orange}}| peut rendre
\vspace{-.15\baselineskip}%
其中,\meta{language name} 可参阅关于 \PJLlang{} 的小节。当不指定 \meta{language name}时,则会将该名称设置为所有支持语言下的名称。另外,带星号与不带星号的同名环境共用一个名称,因此 \lstinline|\NameTheorem{envname*}{...}| 与 \lstinline|\NameTheorem{envname}{...}| 效果相同。
+\bigskip
然后用下面五种方式之一定义这一环境:
\begin{itemize}
\item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
@@ -1041,6 +1045,7 @@ Par exemple, \lstinline|\AddLanguageSetting(German){\color{orange}}| peut rendre
\CreateTheorem*{proofidea*}
\CreateTheorem{proofidea}<subsection>
\end{code}
+\clearpage\noindent
可以分别定义不编号的环境 \lstinline|proofidea*| 和编号的环境 \lstinline|proofidea| (在 subsection 内编号),它们支持在简体中文语境中使用,效果如下所示 (具体样式与所在的文档类有关) :
\begin{proofidea*}
@@ -1063,9 +1068,13 @@ Par exemple, \lstinline|\AddLanguageSetting(German){\color{orange}}| peut rendre
\begin{itemize}
\item Theorem-like environments will not be defined. You may use this option if you wish to apply your own theorem styles.
\end{itemize}
+ \item \texttt{delaythms}
+ \begin{itemize}
+ \item Defer the definition of theorem-like environments to the end of the preamble. Use this option if you want the theorem-like environments to be numbered within a custom counter.
+ \end{itemize}
\item \texttt{nothmnum}, \texttt{thmnum} or \texttt{thmnum=}\meta{counter}
\begin{itemize}
- \item Theorem-like environments will not be numbered / numbered in order 1, 2, 3... / numbered within \meta{counter}. Here, \meta{counter} should be a built-in counter (such as \texttt{subsection}) or a custom counter defined in the preamble. If no option is used, they will be numbered within \texttt{chapter} (book) or \texttt{section} (article).
+ \item Theorem-like environments will not be numbered / numbered in order 1, 2, 3... / numbered within \meta{counter}. Here, \meta{counter} should be a built-in counter (such as \texttt{subsection}) or a custom counter defined in the preamble (with the option \texttt{delaythms} enabled). If no option is used, they will be numbered within \texttt{chapter} (book) or \texttt{section} (article).
\end{itemize}
\item \texttt{regionalref}, \texttt{originalref}
\begin{itemize}
@@ -1170,9 +1179,13 @@ defines an unnumbered environment \lstinline|proofidea*| and a numbered environm
\begin{itemize}
\item Les environnements de type théorème ne seront pas définis. Vous pouvez utiliser cette option si vous souhaitez appliquer vos propres styles de théorème.
\end{itemize}
+ \item \texttt{delaythms}
+ \begin{itemize}
+ \item Reportez la définition des environnements de type théorème à la fin du préambule. Utilisez cette option si vous souhaitez que les environnements soient numérotés dans un compteur personnalisé.
+ \end{itemize}
\item \texttt{nothmnum}, \texttt{thmnum} ou \texttt{thmnum=}\meta{counter}
\begin{itemize}
- \item Les environnements de type théorème ne seront pas numérotés / numérotés dans l'ordre 1, 2, 3... / numérotés dans \meta{counter}. Ici, \meta{counter} doit être un compteur intégré (tel que \texttt{subsection}) ou un compteur défini dans le préambule. Si aucune option n'est utilisée, ils seront numérotés dans \texttt{chapter} (livre) ou \texttt{section} (article).
+ \item Les environnements de type théorème ne seront pas numérotés / numérotés dans l'ordre 1, 2, 3... / numérotés dans \meta{counter}. Ici, \meta{counter} doit être un compteur intégré (tel que \texttt{subsection}) ou un compteur défini dans le préambule (avec l'option \texttt{delaythms} activée). Si aucune option n'est utilisée, ils seront numérotés dans \texttt{chapter} (livre) ou \texttt{section} (article).
\end{itemize}
\item \texttt{regionalref}, \texttt{originalref}
\begin{itemize}
@@ -1200,19 +1213,19 @@ Ensuite, créez cet environnement de l'une des cinq manières suivantes :
\begin{itemize}
\item \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}|
\begin{itemize}
- \item Définir un environnement non numéroté \meta{name of environment}
+ \item Définir un environnement \meta{name of environment} non numéroté
\end{itemize}
\item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}|
\begin{itemize}
- \item Définir un environnement numéroté \meta{name of environment}, numéroté dans l'ordre 1, 2, 3, \dots
+ \item Définir un environnement \meta{name of environment} numéroté dans l'ordre 1, 2, 3, \dots
\end{itemize}
\item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}[|\meta{numbered like}\lstinline|]|
\begin{itemize}
- \item Définir un environnement numéroté \meta{name of environment}, qui partage le compteur \meta{numbered like}
+ \item Définir un environnement \meta{name of environment} numéroté, qui partage le compteur \meta{numbered like}
\end{itemize}
\item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}<|\meta{numbered within}\lstinline|>|
\begin{itemize}
- \item Définir un environnement numéroté \meta{name of environment}, numéroté dans le compteur \meta{numbered within}
+ \item Définir un environnement \meta{name of environment} numéroté dans le compteur \meta{numbered within}
\end{itemize}
\item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
\lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
@@ -1261,11 +1274,11 @@ définit un environnement non numéroté \lstinline|proofidea*| et un environnem
%</ProjLib-doc-cn>
%
%<*ProjLib-doc-en>
-\subsection{Secondary function}
+\subsection{Secondary functions}
%</ProjLib-doc-en>
%
%<*ProjLib-doc-fr>
-\subsection{Fonction secondaire}
+\subsection{Fonctions secondaires}
%</ProjLib-doc-fr>
%<*ProjLib-doc-cn>
diff --git a/Master/texmf-dist/source/latex/projlib/ProjLib.dtx b/Master/texmf-dist/source/latex/projlib/ProjLib.dtx
index ee03498a476..930ff18847b 100644
--- a/Master/texmf-dist/source/latex/projlib/ProjLib.dtx
+++ b/Master/texmf-dist/source/latex/projlib/ProjLib.dtx
@@ -18,47 +18,47 @@
%
%<*ProjLib>
\ProvidesPackage{ProjLib}
- [2021/08/07a The collective interface of ProjLib toolkit]
+ [2021/08/11 The collective interface of ProjLib toolkit]
%</ProjLib>
%
%<*PJLauthor>
\ProvidesPackage{PJLauthor}
- [2021/08/07a Enhanced author information block]
+ [2021/08/11 Enhanced author information block]
%</PJLauthor>
%
%<*PJLdate>
\ProvidesPackage{PJLdate}
- [2021/08/07a Convert yyyy-mm-dd to normal datetime format]
+ [2021/08/11 Convert yyyy-mm-dd to normal datetime format]
%</PJLdate>
%
%<*PJLdraft>
\ProvidesPackage{PJLdraft}
- [2021/08/07a Some useful macros for the draft stage]
+ [2021/08/11 Some useful macros for the draft stage]
%</PJLdraft>
%
%<*PJLlang>
\ProvidesPackage{PJLlang}
- [2021/08/07a Multi-language configuration]
+ [2021/08/11 Multi-language configuration]
%</PJLlang>
%
%<*PJLlogo>
\ProvidesPackage{PJLlogo}
- [2021/08/07a The ProjLib logo]
+ [2021/08/11 The ProjLib logo]
%</PJLlogo>
%
%<*PJLmath>
\ProvidesPackage{PJLmath}
- [2021/08/07a Useful math macros and shortcuts]
+ [2021/08/11 Useful math macros and shortcuts]
%</PJLmath>
%
%<*PJLpaper>
\ProvidesPackage{PJLpaper}
- [2021/08/07a Paper style configuration]
+ [2021/08/11 Paper style configuration]
%</PJLpaper>
%
%<*PJLthm>
\ProvidesPackage{PJLthm}
- [2021/08/07a Theorem setup and configuration]
+ [2021/08/11 Theorem setup and configuration]
%</PJLthm>
%
%# 下面两行引入宏包的代码是所有文件共用的。
@@ -411,19 +411,19 @@
\gappto{\PJLlang@langconfig@common}{%
\let\@DTMdate\@DTMdate@PJLoriginal%
}
-\gappto{\PJLlang@langconfig@schinese}{%
+\gappto{\PJLlang@langconfig@CN}{%
\renewcommand*{\@DTMdate}[1]{%
\expandafter\@dtm@parsedate#1\@dtm@endparsedate%
\zhdate{\@dtm@year/\@dtm@month/\@dtm@day}%
}%
}
-\gappto{\PJLlang@langconfig@tchinese}{%
+\gappto{\PJLlang@langconfig@TC}{%
\renewcommand*{\@DTMdate}[1]{%
\expandafter\@dtm@parsedate#1\@dtm@endparsedate%
\zhdate{\@dtm@year/\@dtm@month/\@dtm@day}%
}%
}
-\gappto{\PJLlang@langconfig@japanese}{%
+\gappto{\PJLlang@langconfig@JP}{%
\renewcommand*{\@DTMdate}[1]{%
\expandafter\@dtm@parsedate#1\@dtm@endparsedate%
\zhdate{\@dtm@year/\@dtm@month/\@dtm@day}%
@@ -664,6 +664,77 @@
\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}
@@ -723,7 +794,7 @@
%# 各个语言的设置
%# The configuration for each language
-\newcommand{\PJLlang@langconfig@schinese}{%
+\newcommand{\PJLlang@langconfig@CN}{%
\def\abstractname{摘要}%
\def\proofname{证明}%
\def\contentsname{目录}%
@@ -738,7 +809,7 @@
\let\today\zhtoday%
\renewcommand{\languagename}{schinese}%
}
-\newcommand{\PJLlang@langconfig@tchinese}{%
+\newcommand{\PJLlang@langconfig@TC}{%
\def\abstractname{摘要}%
\def\proofname{證明}%
\def\contentsname{目錄}%
@@ -753,72 +824,42 @@
\let\today\zhtoday%
\renewcommand{\languagename}{tchinese}%
}
-\newcommand{\PJLlang@langconfig@japanese}{%
+\newcommand{\PJLlang@langconfig@JP}{%
\selectlanguage{japanese}%
}
-\newcommand{\PJLlang@langconfig@english}{%
+\newcommand{\PJLlang@langconfig@EN}{%
\selectlanguage{english}%
}
-\newcommand{\PJLlang@langconfig@french}{%
+\newcommand{\PJLlang@langconfig@FR}{%
\selectlanguage{french}%
% The line below is currently only needed for 'babel', but also works with 'polyglossia'
\def\frenchpartname{Partie}%
}
-\newcommand{\PJLlang@langconfig@german}{%
+\newcommand{\PJLlang@langconfig@DE}{%
\selectlanguage{ngerman}%
}
-\newcommand{\PJLlang@langconfig@italian}{%
+\newcommand{\PJLlang@langconfig@IT}{%
\selectlanguage{italian}%
}
-\newcommand{\PJLlang@langconfig@portuguese}{%
+\newcommand{\PJLlang@langconfig@PT}{%
\selectlanguage{portuguese}%
}
-\newcommand{\PJLlang@langconfig@brazilian}{%
+\newcommand{\PJLlang@langconfig@BR}{%
\selectlanguage{brazilian}%
}
-\newcommand{\PJLlang@langconfig@spanish}{%
+\newcommand{\PJLlang@langconfig@ES}{%
\selectlanguage{spanish}%
}
-\newcommand{\PJLlang@langconfig@russian}{%
+\newcommand{\PJLlang@langconfig@RU}{%
\selectlanguage{russian}%
}
%# 用于增加语言设置的用户指令 AddLanguageSetting
%# User command for adding language settings
-\RequirePackage{xstring}
\NewDocumentCommand\AddLanguageSetting{d()m}{%
\IfNoValueTF{#1}%
{\gappto{\PJLlang@langconfig@common}{#2}}%
- {%
- \lowercase{\IfStrEqCase{#1}}{%
- {cn}{\gappto{\PJLlang@langconfig@schinese}{#2}}%
- {chinese}{\gappto{\PJLlang@langconfig@schinese}{#2}}%
- {schinese}{\gappto{\PJLlang@langconfig@schinese}{#2}}%
- {simplifiedchinese}{\gappto{\PJLlang@langconfig@schinese}{#2}}%
- {tc}{\gappto{\PJLlang@langconfig@tchinese}{#2}}%
- {tchinese}{\gappto{\PJLlang@langconfig@tchinese}{#2}}%
- {traditionalchinese}{\gappto{\PJLlang@langconfig@tchinese}{#2}}%
- {jp}{\gappto{\PJLlang@langconfig@japanese}{#2}}%
- {japanese}{\gappto{\PJLlang@langconfig@japanese}{#2}}%
- {en}{\gappto{\PJLlang@langconfig@english}{#2}}%
- {english}{\gappto{\PJLlang@langconfig@english}{#2}}%
- {fr}{\gappto{\PJLlang@langconfig@french}{#2}}%
- {french}{\gappto{\PJLlang@langconfig@french}{#2}}%
- {de}{\gappto{\PJLlang@langconfig@german}{#2}}%
- {ngerman}{\gappto{\PJLlang@langconfig@german}{#2}}%
- {it}{\gappto{\PJLlang@langconfig@italian}{#2}}%
- {italian}{\gappto{\PJLlang@langconfig@italian}{#2}}%
- {pt}{\gappto{\PJLlang@langconfig@portuguese}{#2}}%
- {portuguese}{\gappto{\PJLlang@langconfig@portuguese}{#2}}%
- {br}{\gappto{\PJLlang@langconfig@brazilian}{#2}}%
- {brazilian}{\gappto{\PJLlang@langconfig@brazilian}{#2}}%
- {es}{\gappto{\PJLlang@langconfig@spanish}{#2}}%
- {spanish}{\gappto{\PJLlang@langconfig@spanish}{#2}}%
- {german}{\gappto{\PJLlang@langconfig@german}{#2}}%
- {ru}{\gappto{\PJLlang@langconfig@russian}{#2}}%
- {russian}{\gappto{\PJLlang@langconfig@russian}{#2}}%
- }%
- }%
+ {\expandafter\gappto\expandafter{\csname PJLlang@langconfig@\StrToABBR{#1}\endcsname}{#2}}%
}
\RequirePackage{setspace}
@@ -841,40 +882,14 @@
%
%# UseLanguage 的核心部分,只能在正文中使用
%# The core part of UseLanguage, can be used only in the main text, not preamble
-\newcommand{\UseLanguageCORE}[1]{%
+\NewDocumentCommand{\UseLanguageCORE}{m}{%
\PJLlang@langconfig@common%
- \lowercase{\IfStrEqCase{#1}}{%
- {cn}{\PJL@config@CJK\PJLlang@langconfig@schinese}%
- {chinese}{\PJL@config@CJK\PJLlang@langconfig@schinese}%
- {schinese}{\PJL@config@CJK\PJLlang@langconfig@schinese}%
- {simplifiedchinese}{\PJL@config@CJK\PJLlang@langconfig@schinese}%
- {tc}{\PJL@config@CJK\PJLlang@langconfig@tchinese}%
- {tchinese}{\PJL@config@CJK\PJLlang@langconfig@tchinese}%
- {traditionalchinese}{\PJL@config@CJK\PJLlang@langconfig@tchinese}%
- {jp}{\PJL@config@CJK\PJLlang@langconfig@japanese}%
- {japanese}{\PJL@config@CJK\PJLlang@langconfig@japanese}%
- {en}{\PJL@config@Latin\PJLlang@langconfig@english}%
- {english}{\PJL@config@Latin\PJLlang@langconfig@english}%
- {fr}{\PJL@config@Latin\PJLlang@langconfig@french}%
- {french}{\PJL@config@Latin\PJLlang@langconfig@french}%
- {de}{\PJL@config@Latin\PJLlang@langconfig@german}%
- {ngerman}{\PJL@config@Latin\PJLlang@langconfig@german}%
- {german}{\PJL@config@Latin\PJLlang@langconfig@german}%
- {it}{\PJL@config@Latin\PJLlang@langconfig@italian}%
- {italian}{\PJL@config@Latin\PJLlang@langconfig@italian}%
- {pt}{\PJL@config@Latin\PJLlang@langconfig@portuguese}%
- {portuguese}{\PJL@config@Latin\PJLlang@langconfig@portuguese}%
- {br}{\PJL@config@Latin\PJLlang@langconfig@brazilian}%
- {brazilian}{\PJL@config@Latin\PJLlang@langconfig@brazilian}%
- {es}{\PJL@config@Latin\PJLlang@langconfig@spanish}%
- {spanish}{\PJL@config@Latin\PJLlang@langconfig@spanish}%
- {ru}{\PJL@config@Latin\PJLlang@langconfig@russian}%
- {russian}{\PJL@config@Latin\PJLlang@langconfig@russian}%
- }%
+ \csname PJL@config@\StrToTYPE{#1}\endcsname%
+ \csname PJLlang@langconfig@\StrToABBR{#1}\endcsname%
}
%# 用于选定语言的 UseLanguage
%# Macro for selecting language
-\newcommand{\UseLanguage}[1]{%
+\NewDocumentCommand{\UseLanguage}{m}{%
\ifx\@onlypreamble\@notprerr%
\UseLanguageCORE{#1}%
\else%
@@ -883,56 +898,17 @@
}
%# 用于局部选定语言的 UseOtherLanguage
%# Macro for selecting language locally
-\newcommand{\UseOtherLanguage}[2]{%
+\NewDocumentCommand{\UseOtherLanguage}{mm}{%
\begingroup\begingroup%
\PJLlang@langconfig@common%
- \lowercase{\IfStrEqCase{#1}}{%
- {cn}{\PJLlang@langconfig@schinese}%
- {chinese}{\PJLlang@langconfig@schinese}%
- {schinese}{\PJLlang@langconfig@schinese}%
- {simplifiedchinese}{\PJLlang@langconfig@schinese}%
- {tc}{\PJLlang@langconfig@tchinese}%
- {tchinese}{\PJLlang@langconfig@tchinese}%
- {traditionalchinese}{\PJLlang@langconfig@tchinese}%
- {jp}{\PJLlang@langconfig@japanese}%
- {japanese}{\PJLlang@langconfig@japanese}%
- {en}{\PJLlang@langconfig@english}%
- {english}{\PJLlang@langconfig@english}%
- {fr}{\PJLlang@langconfig@french}%
- {french}{\PJLlang@langconfig@french}%
- {de}{\PJLlang@langconfig@german}%
- {ngerman}{\PJLlang@langconfig@german}%
- {german}{\PJLlang@langconfig@german}%
- {it}{\PJLlang@langconfig@italian}%
- {italian}{\PJLlang@langconfig@italian}%
- {pt}{\PJLlang@langconfig@portuguese}%
- {portuguese}{\PJLlang@langconfig@portuguese}%
- {br}{\PJLlang@langconfig@brazilian}%
- {brazilian}{\PJLlang@langconfig@brazilian}%
- {es}{\PJLlang@langconfig@spanish}%
- {spanish}{\PJLlang@langconfig@spanish}%
- {ru}{\PJLlang@langconfig@russian}%
- {russian}{\PJLlang@langconfig@russian}%
- }%
+ \csname PJLlang@langconfig@\StrToABBR{#1}\endcsname%
#2%
\endgroup\endgroup%
}
%# 运行默认语言的设置
%# Execute the configuration of the main language
-\IfStrEqCase{\PJLlang@mainlang}{%
- {EN}{\UseLanguage{EN}}%
- {FR}{\UseLanguage{FR}}%
- {DE}{\UseLanguage{DE}}%
- {IT}{\UseLanguage{IT}}%
- {PT}{\UseLanguage{PT}}%
- {BR}{\UseLanguage{BR}}%
- {ES}{\UseLanguage{ES}}%
- {CN}{\UseLanguage{CN}}%
- {TC}{\UseLanguage{TC}}%
- {JP}{\UseLanguage{JP}}%
- {RU}{\UseLanguage{RU}}%
-}
+\expandafter\UseLanguage\expandafter{\PJLlang@mainlang}
%</PJLlang>
%
%<*PJLlogo>
@@ -1393,6 +1369,9 @@
%# 不建立定理类环境
%# 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}
@@ -1436,34 +1415,8 @@
\expandafter\StrGobbleRight\expandafter{\PJLthm@temp}{1}[\PJLthm@temp]%
}{}%
\IfValueTF{#1}{%
- \lowercase{\IfStrEqCase{#1}}{%
- {cn}{\def\PJL@temp@abbr{CN}}%
- {chinese}{\def\PJL@temp@abbr{CN}}%
- {schinese}{\def\PJL@temp@abbr{CN}}%
- {simplifiedchinese}{\def\PJL@temp@abbr{CN}}%
- {tc}{\def\PJL@temp@abbr{TC}}%
- {tchinese}{\def\PJL@temp@abbr{TC}}%
- {traditionalchinese}{\def\PJL@temp@abbr{TC}}%
- {jp}{\def\PJL@temp@abbr{JP}}%
- {japanese}{\def\PJL@temp@abbr{JP}}%
- {en}{\def\PJL@temp@abbr{EN}}%
- {english}{\def\PJL@temp@abbr{EN}}%
- {fr}{\def\PJL@temp@abbr{FR}}%
- {french}{\def\PJL@temp@abbr{FR}}%
- {de}{\def\PJL@temp@abbr{DE}}%
- {ngerman}{\def\PJL@temp@abbr{DE}}%
- {german}{\def\PJL@temp@abbr{DE}}%
- {it}{\def\PJL@temp@abbr{IT}}%
- {italian}{\def\PJL@temp@abbr{IT}}%
- {pt}{\def\PJL@temp@abbr{PT}}%
- {portuguese}{\def\PJL@temp@abbr{PT}}%
- {br}{\def\PJL@temp@abbr{BR}}%
- {brazilian}{\def\PJL@temp@abbr{BR}}%
- {es}{\def\PJL@temp@abbr{ES}}%
- {spanish}{\def\PJL@temp@abbr{ES}}%
- {ru}{\def\PJL@temp@abbr{RU}}%
- {russian}{\def\PJL@temp@abbr{RU}}%
- }%
+ \expandafter\def\expandafter\PJL@temp@abbr\expandafter%
+ {\expandafter\StrToABBR\expandafter{#1}}%
\expandafter\def\csname\PJLthm@temp name\PJL@temp@abbr\endcsname{#3}%
}{%
\expandafter\def\csname\PJLthm@temp nameEN\endcsname{#3}%
@@ -1975,9 +1928,10 @@
}
}
}
+
%# 建立定理类环境
%# Setup theorem-like environments
-\AtEndPreamble{
+\def\PJLthm@definethms{
\if@PJLthm@nothms\else
\if@PJLthm@nothmnum
\CreateTheorem*{theorem}
@@ -2056,7 +2010,6 @@
\CreateTheorem*{remark*}
\CreateTheorem*{observation*}
\fi
-}
%# 按照 thmnum 决定公式如何编号
%# Number the equations with respect to thmnum
@@ -2072,9 +2025,17 @@
}
}
+} % End of \PJLthm@definethms
+
+\if@PJLthm@delaythms
+ \AtEndPreamble{\PJLthm@definethms}
+\else
+ \PJLthm@definethms
+\fi
+
%# 一些 cref 的本地化
%# Some localization of cref
-\gappto{\PJLlang@langconfig@schinese}{%
+\gappto{\PJLlang@langconfig@CN}{%
\crefname{equation}{式}{式}%
\crefname{figure}{图}{图}%
\crefname{table}{表}{表}%
@@ -2091,7 +2052,7 @@
\def\creflastgroupconjunction{~和~}%
\def\crefrangeconjunction{~}%
}
-\gappto{\PJLlang@langconfig@tchinese}{%
+\gappto{\PJLlang@langconfig@TC}{%
\crefname{equation}{式}{式}%
\crefname{figure}{圖}{圖}%
\crefname{table}{表}{表}%
@@ -2108,7 +2069,7 @@
\def\creflastgroupconjunction{~與~}%
\def\crefrangeconjunction{~}%
}
-\gappto{\PJLlang@langconfig@japanese}{%
+\gappto{\PJLlang@langconfig@JP}{%
\crefname{equation}{式}{式}%
\crefname{figure}{図}{図}%
\crefname{table}{表}{表}%
@@ -2125,7 +2086,7 @@
\def\creflastgroupconjunction{~と~}%
\def\crefrangeconjunction{〜}%
}
-\gappto{\PJLlang@langconfig@russian}{%
+\gappto{\PJLlang@langconfig@RU}{%
\crefname{equation}{уравнение}{уравнения}%
\crefname{figure}{рис.}{рис.}%
\crefname{table}{таблица}{таблицы}%
@@ -2142,7 +2103,7 @@
\def\creflastgroupconjunction{~и~}%
\def\crefrangeconjunction{~\textasciitilde~}%
}
-\gappto{\PJLlang@langconfig@portuguese}{%
+\gappto{\PJLlang@langconfig@PT}{%
\crefname{equation}{eq.}{eqs.}%
\crefname{figure}{fig.}{figs.}%
\crefname{table}{tabela}{tabelas}%
@@ -2173,6 +2134,7 @@
\DeclareBoolOption[false]{author}
\DeclareBoolOption[false]{amsfashion}
\DeclareBoolOption[false]{nothms}
+\DeclareBoolOption[false]{delaythms}
\DeclareBoolOption[false]{nothmnum}
\DeclareStringOption{thmnum}[PJL@thmnum@default]
\DeclareBoolOption[true]{regionalref}
@@ -2207,6 +2169,9 @@
\if@ProjLib@nothms
\PassOptionsToPackage{nothms}{PJLthm}
\fi
+\if@ProjLib@delaythms
+ \PassOptionsToPackage{delaythms}{PJLthm}
+\fi
\if@ProjLib@nothmnum
\PassOptionsToPackage{nothmnum}{PJLthm}
\fi