texlive[59644] Master/texmf-dist: projlib (19jun21)

commits+karl at tug.org commits+karl at tug.org
Sat Jun 19 22:45:42 CEST 2021


Revision: 59644
          http://tug.org/svn/texlive?view=revision&revision=59644
Author:   karl
Date:     2021-06-19 22:45:42 +0200 (Sat, 19 Jun 2021)
Log Message:
-----------
projlib (19jun21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/projlib/ProjLib-doc-cn.pdf
    trunk/Master/texmf-dist/doc/latex/projlib/ProjLib-doc-cn.tex
    trunk/Master/texmf-dist/doc/latex/projlib/ProjLib-doc-en.pdf
    trunk/Master/texmf-dist/doc/latex/projlib/ProjLib-doc-en.tex
    trunk/Master/texmf-dist/doc/latex/projlib/README.md
    trunk/Master/texmf-dist/source/latex/projlib/ProjLib.dtx
    trunk/Master/texmf-dist/source/latex/projlib/ProjLib.ins
    trunk/Master/texmf-dist/tex/latex/projlib/PJLamssim.sty
    trunk/Master/texmf-dist/tex/latex/projlib/PJLauthor.sty
    trunk/Master/texmf-dist/tex/latex/projlib/PJLdate.sty
    trunk/Master/texmf-dist/tex/latex/projlib/PJLdraft.sty
    trunk/Master/texmf-dist/tex/latex/projlib/PJLlang.sty
    trunk/Master/texmf-dist/tex/latex/projlib/PJLlogo.sty
    trunk/Master/texmf-dist/tex/latex/projlib/PJLpaper.sty
    trunk/Master/texmf-dist/tex/latex/projlib/PJLthm.sty
    trunk/Master/texmf-dist/tex/latex/projlib/PJLtoolkit.sty
    trunk/Master/texmf-dist/tex/latex/projlib/ProjLib.sty

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/latex/projlib/PJLmath.sty

Modified: trunk/Master/texmf-dist/doc/latex/projlib/ProjLib-doc-cn.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/projlib/ProjLib-doc-cn.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/projlib/ProjLib-doc-cn.tex	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/doc/latex/projlib/ProjLib-doc-cn.tex	2021-06-19 20:45:42 UTC (rev 59644)
@@ -1,5 +1,5 @@
 %! TEX program = xelatex
-\documentclass[allowbf,regionalref,puretext]{lebhart}
+\documentclass[Chinese,English,French,allowbf,puretext]{lebhart}
 
 %%================================
 %% 引入工具集
@@ -8,7 +8,7 @@
 \usepackage{longtable}  % breakable tables
 \usepackage{hologo}     % more TeX logo
 
-\UseLanguage{Chinese}
+% \UseLanguage{Chinese}
 
 %%================================
 %% 排版代码
@@ -32,7 +32,8 @@
 } 
 \providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
 \lstset{moretexcs=%
-    {color,NameTheorem,CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,PJLdate,ProjLib
+    {color,NameTheorem,CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,PJLdate,ProjLib,
+    mathfrak,mf,frak,mfA,mathbb,bb,N,Z,Q,R,C,F,A,mathcal,mc,cal,mathscr,ms,scr,
     }
 }
 \lstnewenvironment{code}% 
@@ -69,6 +70,7 @@
 \providecommand{\PJLdraft}{\textsf{PJLdraft}}
 \providecommand{\PJLlang}{\textsf{PJLlang}}
 \providecommand{\PJLlogo}{\textsf{PJLlogo}}
+\providecommand{\PJLmath}{\textsf{PJLmath}}
 \providecommand{\PJLpaper}{\textsf{PJLpaper}}
 \providecommand{\PJLthm}{\textsf{PJLthm}}
 
@@ -79,7 +81,7 @@
 
 \title{\ProjLib{} 工具集\\[.3\baselineskip]\normalsize 使用指南}
 \author{许锦文}
-\thanks{对应版本.~~\texttt{\ProjLib{}~2021/06/17}}
+\thanks{对应版本.~~\texttt{\ProjLib{}~2021/06/19}}
 \date{2021年6月,北京}
 
 \maketitle
@@ -113,11 +115,15 @@
         \begin{itemize}
             \item 快速模式。功能会适当缩减,但能够提高编译速度,建议在撰写阶段使用。
         \end{itemize}
-    \item \texttt{palatino}、\texttt{times}、\texttt{garamond}、\texttt{biolinum} $|$ \texttt{useosf}
+    \item \texttt{palatino}、\texttt{times}、\texttt{garamond}、\texttt{biolinum} ~$|$~ \texttt{useosf}
         \begin{itemize}
             \item 字体选项。顾名思义,会加载相应名称的字体。
             \item \texttt{useosf} 选项用来启用“旧式”数字。
         \end{itemize}
+    \item \texttt{nothms}、\texttt{nothmnum}、\texttt{regionalref}
+        \begin{itemize}
+            \item 来自 \PJLthm{} 的选项,详细信息请参阅有关这一宏包的小节。
+        \end{itemize}
     \item \texttt{author}
         \begin{itemize}
             \item 加载 \PJLauthor{}。关于其详细功能,请参阅有关这一宏包的小节。
@@ -126,12 +132,8 @@
         \begin{itemize}
             \item 加载 \PJLamssim{}。关于其详细功能,请参阅有关这一宏包的小节。
         \end{itemize}
-    \item \texttt{nothms}、\texttt{regionalref}
-        \begin{itemize}
-            \item 来自 \PJLthm{} 的选项,详细信息请参阅有关这一宏包的小节。
-        \end{itemize}
 \end{itemize}
-另外,还有一些组件的参数可以作为文档类的全局参数传递,例如 \PJLpaper{} 的 \texttt{paperstyle} 和 \texttt{preview} 等。详细信息可以参阅对应的小节。
+另外,还有一些组件的参数可以作为文档类的全局参数传递,例如 \texttt{EN} / \texttt{english} / \texttt{English}、\texttt{CN} / \texttt{chinese} / \texttt{Chinese} 等语言选项 (来自 \PJLlang{}),\texttt{paperstyle} 和 \texttt{preview} 等纸张选项 (来自 \PJLpaper{})。详细信息可以参阅对应的小节。
 
 \section{具体组件}
 
@@ -180,7 +182,17 @@
 
 \subsection{PJLlang}
 
-\PJLlang{} 提供了多语言支持,包括简体中文、繁体中文、英文、法文、德文、日文、俄文 (其中中文、日文、俄文需要相应的 \TeX{} 引擎与字体支持)。可以通过下列命令来选定语言:
+\PJLlang{} 提供了多语言支持,包括简体中文、繁体中文、英文、法文、德文、日文、俄文 (其中中文、日文、俄文需要相应的 \TeX{} 引擎与字体支持)。
+
+\medskip
+\PJLlang{} 提供语言选项,这些选项的名称有三种,分别是缩写(如 \texttt{EN})、小写(如 \texttt{english})、首字母大写(如 \texttt{English})。具体的选项名称可以参见下文的 \meta{language name}。其中,第一个指定的语言 \meta{first language} 会被作为默认语言,相当于在文档开头指定 \lstinline|\UseLanguage{|\meta{first language}\lstinline|}|。
+
+\begin{tip}
+    为了提高编译速度,建议使用语言选项,并将其作为全局参数传递。这样,只会对指定语言进行设置,节省了 \TeX{} 内存,从而能显著提高编译速度。
+\end{tip}
+
+\medskip
+在文档中,可以通过下列命令来选定语言:
 \begin{itemize}
     \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}|,用于指定语言,在其后将使用对应的语言设定。
     \begin{itemize}
@@ -192,6 +204,7 @@
     \end{itemize}
 \end{itemize}
 
+\medskip
 \meta{language name} 有下列选择 (不区分大小写,如 \texttt{French} 或 \texttt{french} 均可):
 \begin{itemize}\setstretch{1.15}
     \item 简体中文:\texttt{CN}、\texttt{Chinese}、\texttt{SChinese} 或 \texttt{SimplifiedChinese}
@@ -207,6 +220,7 @@
     \item 俄语:\texttt{RU} 或 \texttt{Russian}
 \end{itemize}
 
+\medskip
 另外,还可以通过下面的方式来填加相应语言的设置:
 \begin{itemize}
     \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
@@ -220,7 +234,7 @@
 \end{itemize}
 例如,\lstinline|\AddLanguageSetting(German){\color{orange}}| 可以让所有德语以橙色显示(当然,还需要再加上 \lstinline|\AddLanguageSetting{\color{black}}| 来修正其他语言的颜色)。
 
-
+\clearpage
 \subsection{PJLlogo}
 
 \PJLlogo{} 提供了 \lstinline|\ProjLib| 命令用于绘制 Logo,效果为:\ProjLib{}。它与普通的文字指令效果类似,可以用于不同的字号:
@@ -253,6 +267,53 @@
 \end{center}
 % \end{longtable}
 
+\subsection{PJLmath}
+
+\PJLmath{} 提供下列捷径:
+\begin{enumerate}[label=\roman*)]
+    \item \lstinline|\mathfrak{|$\cdot$\lstinline|}| $\longrightarrow$ \lstinline|\mf|$\cdot$ 或 \lstinline|\frak|$\cdot$。例如,\lstinline|\mfA| (或 \lstinline|\mf{A}|) 与 \lstinline|\mathfrak{A}| 效果相同. 这对大写、小写字母都有效:
+    \begin{align*}
+        \mfa\mfb\mfc\mfd\mfe\mff\mfg\mfh\mfi\mfj\mfk\mfl\mfm\mfn&\mfo\mfp\mfq\mfr\mfs\mft\mfu\mfv\mfw\mfx\mfy\mfz\\
+        \mfA\mfB\mfC\mfD\mfE\mfF\mfG\mfH\mfI\mfJ\mfK\mfL\mfM\mfN&\mfO\mfP\mfQ\mfR\mfS\mfT\mfU\mfV\mfW\mfX\mfY\mfZ
+    \end{align*}
+    \item \lstinline|\mathbb{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\bb|$\cdot$。这只针对大写字母或数字 \( 1 \).
+    \begin{equation*}
+        \bbA\bbB\bbC\bbD\bbE\bbF\bbG\bbH\bbI\bbJ\bbK\bbL\bbM\bbN\bbO\bbP\bbQ\bbR\bbS\bbT\bbU\bbV\bbW\bbX\bbY\bbZ\bb1
+    \end{equation*}
+    对于常见的代数结构有这些特殊命令:\lstinline|\N|, \lstinline|\Z|, \lstinline|\Q|, \lstinline|\R|, \lstinline|\C|, \lstinline|\F|, \lstinline|\A|.
+    \[
+        \N\Z\Q\R\C\F\A
+    \]
+    \item \lstinline|\mathcal{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\mc|$\cdot$ 或 \lstinline|\cal|$\cdot$。这只针对大写字母。
+    \begin{equation*}
+        \mcA\mcB\mcC\mcD\mcE\mcF\mcG\mcH\mcI\mcJ\mcK\mcL\mcM\mcN\mcO\mcP\mcQ\mcR\mcS\mcT\mcU\mcV\mcW\mcX\mcY\mcZ
+    \end{equation*}
+    \item \lstinline|\mathscr{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\ms|$\cdot$ 或 \lstinline|\scr|$\cdot$。这只针对大写字母。
+    \begin{equation*}
+        \msA\msB\msC\msD\msE\msF\msG\msH\msI\msJ\msK\msL\msM\msN\msO\msP\msQ\msR\msS\msT\msU\msV\msW\msX\msY\msZ
+    \end{equation*}
+\end{enumerate}
+
+% 另外,\PJLmath{} 还提供一些学科相关的命令。
+
+% \subsubsection{Number theory}
+
+% \begin{longtable}[l]{ p{3.5cm} p{5cm} p{5cm} }
+% \verb|\legendre| & \verb|\legendre{a}{p}| $\rightarrow \legendre{a}{p}$ & automatic sizing \\
+% & \verb|\legendre[z]{a}{p}| $\rightarrow \legendre[z]{a}{p}$ & \\
+% \verb|\tlegendre| & \verb|\tlegendre{a}{p}| $\rightarrow \tlegendre{a}{p}$ & text style \\
+% \verb|\dlegendre| & \verb|\dlegendre{a}{p}| $\rightarrow \dlegendre{a}{p}$ & display style \\
+% \end{longtable}
+
+% There's also a starred version of \verb|\pmod|, which eliminate the spacing before it:
+
+% \verb|a\pmod*{4}| $\rightarrow a\pmod*{4}$.
+
+% Compared with:
+
+% \verb|a\pmod{4}| $\rightarrow a\pmod{4}$.
+
+\clearpage
 \subsection{PJLpaper}
 
 \PJLpaper{} 主要用于调节纸张颜色。它支持下列选项:
@@ -282,6 +343,10 @@
     \begin{itemize}
         \item 不设定定理类环境。如果你希望使用自己的定理样式,可以使用这一选项。
     \end{itemize}
+    \item \texttt{nothmnum}
+    \begin{itemize}
+        \item 使定理类环境均不编号。
+    \end{itemize}
     \item \texttt{regionalref}
     \begin{itemize}
         \item 在智能引用时,定理类环境的名称随当前语言而变化(默认情况下,引用时会始终采用定理类环境所处语境下的名称;例如,在英文语境中书写的定理,即使稍后在中文语境下引用时,仍将显示为 Theorem)。在 \texttt{fast} 模式下,这一选项默认启用。

Modified: trunk/Master/texmf-dist/doc/latex/projlib/ProjLib-doc-en.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/projlib/ProjLib-doc-en.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/projlib/ProjLib-doc-en.tex	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/doc/latex/projlib/ProjLib-doc-en.tex	2021-06-19 20:45:42 UTC (rev 59644)
@@ -1,5 +1,5 @@
 %! TEX program = xelatex
-\documentclass[allowbf,regionalref,puretext]{lebhart}
+\documentclass[English,French,allowbf,regionalref,puretext]{lebhart}
 
 %%================================
 %% Import toolkit
@@ -30,7 +30,8 @@
 } 
 \providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
 \lstset{moretexcs=%
-    {color,NameTheorem,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,PJLdate,ProjLib
+    {color,NameTheorem,CreateTheorem,proofideanameEN,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,PLdate,PJLdate,ProjLib,
+    mathfrak,mf,frak,mfA,mathbb,bb,N,Z,Q,R,C,F,A,mathcal,mc,cal,mathscr,ms,scr,
     }
 }
 \lstnewenvironment{code}% 
@@ -67,6 +68,7 @@
 \providecommand{\PJLdraft}{\textsf{PJLdraft}}
 \providecommand{\PJLlang}{\textsf{PJLlang}}
 \providecommand{\PJLlogo}{\textsf{PJLlogo}}
+\providecommand{\PJLmath}{\textsf{PJLmath}}
 \providecommand{\PJLpaper}{\textsf{PJLpaper}}
 \providecommand{\PJLthm}{\textsf{PJLthm}}
 
@@ -77,7 +79,7 @@
 
 \title{\ProjLib{}~\,Toolkit\\[.3\baselineskip]\normalsize User Manual}
 \author{Jinwen Xu}
-\thanks{Corresponding to: \texttt{\ProjLib{}~2021/06/17}}
+\thanks{Corresponding to: \texttt{\ProjLib{}~2021/06/19}}
 \date{June 2021, Beijing}
 
 \maketitle
@@ -109,13 +111,17 @@
 \begin{itemize}
     \item \texttt{draft} or \texttt{fast}
         \begin{itemize}
-            \item Fast mode. The functionality is appropriately reduced to get faster compilation speed, recommended to use during the writing phase.
+            \item Fast mode. The functionality will be appropriately reduced to get faster compilation speed, recommended to use during the writing phase.
         \end{itemize}
-    \item \texttt{palatino}, \texttt{times}, \texttt{garamond}, \texttt{biolinum} $|$ \texttt{useosf}
+    \item \texttt{palatino}, \texttt{times}, \texttt{garamond}, \texttt{biolinum} ~$|$~ \texttt{useosf}
         \begin{itemize}
             \item Font options. As the name 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{regionalref}
+        \begin{itemize}
+            \item Options from \PJLthm{}, please refer to the section on this package for details.
+        \end{itemize}
     \item \texttt{author}
         \begin{itemize}
             \item Load \PJLauthor{}. For more information about its functionality, see the section on this package.
@@ -124,12 +130,8 @@
         \begin{itemize}
             \item Load \PJLamssim{}. For more information about its functionality, see the section on this package.
         \end{itemize}
-    \item \texttt{nothms}, \texttt{regionalref}
-        \begin{itemize}
-            \item Options from \PJLthm{}, please refer to the section on this package for details.
-        \end{itemize}
 \end{itemize}
-In addition, there are also some options of the components that can (and should) be passed as global options of the document class, such as \texttt{paperstyle} and \texttt{preview} of \PJLpaper{}. For more information, please refer to the corresponding section.
+In addition, there are also some options of the components that should be passed as global options of your document class, such as the language options \texttt{EN} / \texttt{english} / \texttt{English}, \texttt{FR} / \texttt{french} / \texttt{French} etc.\,of \PJLlang{}, \\and \texttt{paperstyle}, \texttt{preview} of \PJLpaper{}. For more information, please refer to the corresponding sections.
 
 \section{The components}
 
@@ -178,13 +180,24 @@
 
 \subsection{PJLlang}
 
-\PJLlang{} offers multi-language support, including simplified Chinese, traditional Chinese, English, French, German, Japanese, and Russian (among them, Chinese, Japanese, and Russian require appropriate \TeX{} engines and fonts to support). The language can be selected by the following macros:
+\PJLlang{} offers multi-language support, including simplified Chinese, traditional Chinese, English, French, German, Japanese, and Russian (among them, Chinese, Japanese, and Russian require appropriate \TeX{} engines and fonts to support). 
 
+\medskip
+\PJLlang{} provides language options. The names of these options have three types, which are abbreviations (such as \texttt{EN}), lowercase (such as \texttt{english}), and capital letters (such as \texttt{English}). For the option names of a specific language, please refer to \meta{language name} below. Among them, the first specified language \meta{first language} will be used as the default language, which is equivalent to specifying \lstinline|\UseLanguage{|\meta{first language}\lstinline|}| at the beginning of your document.
+
+\begin{tip}
+    It is recommended to use these language options and pass them as global options. In this way, only the specified language is set, thus saving the \TeX{} memory and significantly improving the compilation speed.
+\end{tip}
+
+\medskip
+The language can be selected by the following macros:
+
 \begin{itemize}
     \item \lstinline|\UseLanguage{|\meta{language name}\lstinline|}| is used to specify the language. The corresponding setting of the language will be applied after it. It can be used either in the preamble or in the main body. When no language is specified, ``English" is selected by default.
     \item \lstinline|\UseOtherLanguage{|\meta{language name}\lstinline|}{|\meta{content}\lstinline|}|, which uses the specified language settings to typeset \meta{content}. Compared with \lstinline|\UseLanguage|, it will not modify the line spacing, so line spacing would remain stable when CJK and Western texts are mixed.
 \end{itemize}
 
+\medskip
 \meta{language name} can be (it is not case sensitive, for example, \texttt{French} and \texttt{french} have the same effect):
 \begin{itemize}
     \item Simplified Chinese: \texttt{CN}, \texttt{Chinese}, \texttt{SChinese} or \texttt{SimplifiedChinese}
@@ -200,7 +213,7 @@
     \item Russian: \texttt{RU} or \texttt{Russian}
 \end{itemize}
 
-% \medskip
+\medskip
 In addition, you can also add new settings to selected language:
 \begin{itemize}
     \item \lstinline|\AddLanguageSetting{|\meta{settings}\lstinline|}|
@@ -214,7 +227,7 @@
 \end{itemize}
 For example, \lstinline|\AddLanguageSetting(German){\color{orange}}| can make all German text displayed in orange (of course, one then need to add \lstinline|\AddLanguageSetting{\color{black}}| in order to correct the color of the text in other languages).
 
-
+\clearpage
 \subsection{PJLlogo}
 
 \PJLlogo{} offers the \lstinline|\ProjLib| macro to draw the logo, which looks like \ProjLib{}. It is similar to ordinary text macros and can be used with different font size macros:
@@ -247,7 +260,34 @@
 \end{center}
 % \end{longtable}
 
-\clearpage
+\subsection{PJLmath}
+
+\PJLmath{} offers the following shortcuts:
+\begin{enumerate}[label=\roman*)]
+    \item \lstinline|\mathfrak{|$\cdot$\lstinline|}| $\longrightarrow$ \lstinline|\mf|$\cdot$ or \lstinline|\frak|$\cdot$ . For example, \lstinline|\mfA| (or \lstinline|\mf{A}|) has the same effect as \lstinline|\mathfrak{A}|. This works for both upper and lower case, producing:
+    \begin{align*}
+        \mfa\mfb\mfc\mfd\mfe\mff\mfg\mfh\mfi\mfj\mfk\mfl\mfm\mfn&\mfo\mfp\mfq\mfr\mfs\mft\mfu\mfv\mfw\mfx\mfy\mfz\\
+        \mfA\mfB\mfC\mfD\mfE\mfF\mfG\mfH\mfI\mfJ\mfK\mfL\mfM\mfN&\mfO\mfP\mfQ\mfR\mfS\mfT\mfU\mfV\mfW\mfX\mfY\mfZ
+    \end{align*}
+    \item \lstinline|\mathbb{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\bb|$\cdot$ . This only works for uppercase alphabet and the number \( 1 \).
+    \begin{equation*}
+        \bbA\bbB\bbC\bbD\bbE\bbF\bbG\bbH\bbI\bbJ\bbK\bbL\bbM\bbN\bbO\bbP\bbQ\bbR\bbS\bbT\bbU\bbV\bbW\bbX\bbY\bbZ\bb1
+    \end{equation*}
+    There are also special command for well-known algebraic structures: \lstinline|\N|, \lstinline|\Z|, \lstinline|\Q|, \lstinline|\R|, \lstinline|\C|, \lstinline|\F|, \lstinline|\A|.
+    \[
+        \N\Z\Q\R\C\F\A
+    \]
+    \item \lstinline|\mathcal{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\mc|$\cdot$ or \lstinline|\cal|$\cdot$ . This only works for uppercase alphabet.
+    \begin{equation*}
+        \mcA\mcB\mcC\mcD\mcE\mcF\mcG\mcH\mcI\mcJ\mcK\mcL\mcM\mcN\mcO\mcP\mcQ\mcR\mcS\mcT\mcU\mcV\mcW\mcX\mcY\mcZ
+    \end{equation*}
+    \item \lstinline|\mathscr{|$\cdot$\lstinline|}| \( \longrightarrow \) \lstinline|\ms|$\cdot$ or \lstinline|\scr|$\cdot$ . This only works for uppercase alphabet.
+    \begin{equation*}
+        \msA\msB\msC\msD\msE\msF\msG\msH\msI\msJ\msK\msL\msM\msN\msO\msP\msQ\msR\msS\msT\msU\msV\msW\msX\msY\msZ
+    \end{equation*}
+\end{enumerate}
+
+% \clearpage
 \subsection{PJLpaper}
 
 \PJLpaper{} is mainly used to adjust the paper color. It has the following options:
@@ -279,14 +319,19 @@
 \begin{itemize}
     \item \texttt{nothms}
     \begin{itemize}
-        \item The theorem-like environments will not be defined. You may use this option if you wish to apply your own theorem styles.
+        \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{nothmnum}
+    \begin{itemize}
+        \item Theorem-like environments will not be numbered.
+    \end{itemize}
     \item \texttt{regionalref}
     \begin{itemize}
-        \item When referencing, the name of the theorem-like environment changes with the current language (by default, the name will always remain the same; for example, when referencing a theorem written in the French context, even if one is currently in the English context, it will still be displayed as ``Théorème''). In \texttt{fast} mode, this option is automatically enabled.
+        \item When referencing, name of the theorem-like environment will change with the current language (by default, the name will always remain the same; for example, when referencing a theorem written in the French context, even if one is currently in the English context, it will still be displayed as ``Théorème''). In \texttt{fast} mode, this option is automatically enabled.
     \end{itemize}
 \end{itemize}
 
+\medskip
 Preset environments include: \texttt{assumption}, \texttt{axiom}, \texttt{conjecture}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{definition-proposition}, ~~\texttt{definition-theorem}, ~~\texttt{example}, ~~\texttt{exercise}, ~~\texttt{fact}, ~~\texttt{hypothesis}, ~~\texttt{lemma}, \\\texttt{notation}, \texttt{observation}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{remark}, \texttt{theorem}, and the corresponding unnumbered version with an asterisk \lstinline|*| in the name. The titles will change with the current language. For example, \texttt{theorem} will be displayed as ``Theorem" in English mode and ``Théorème" in French mode. For details on how to select a language, please refer to the section on \PJLlang{}.
 
 \begin{tip}
@@ -306,6 +351,7 @@
 % \begin{tip}
 %     If you want to define an environment with an asterisk \lstinline|*| after the name, you don't need to write an asterisk in the \meta{name of environment} above. See the example below.
 % \end{tip}
+\medskip
 If you need to define a new theorem-like environment, you must first define the name of the environment in the language to use:
 \begin{itemize}
     \item \lstinline|\NameTheorem[|\meta{language name}\lstinline|]{|\meta{name of environment}\lstinline|}{|\meta{name string}\lstinline|}|
@@ -312,7 +358,7 @@
 \end{itemize}
 For \meta{language name}, please refer to the section on \PJLlang{}. When \meta{language name} is not specified, the name will be set for all supported languages. In addition, environments with or without asterisk share the same name, therefore, \lstinline|\NameTheorem{envname*}{...}| has the same effect as \lstinline|\NameTheorem{envname}{...}| .
 
-\medskip
+\bigskip
 And then define this environment in one of following five ways:
 \vspace{-.3\baselineskip}
 \begin{itemize}
@@ -332,6 +378,7 @@
         \begin{itemize}
             \item Define a numbered environment \meta{name of environment}, numbered within the counter \meta{numbered within}
         \end{itemize}
+    \clearpage
     \item \lstinline|\CreateTheorem{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|\\
     \lstinline|\CreateTheorem*{|\meta{name of environment}\lstinline|}(|\meta{existed environment}\lstinline|)|
         \begin{itemize}
@@ -385,7 +432,7 @@
 \end{itemize}
 
 
-\medskip % \clearpage
+\clearpage
 \section{Usage example}
 
 \subsection{Standard classes}

Modified: trunk/Master/texmf-dist/doc/latex/projlib/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/projlib/README.md	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/doc/latex/projlib/README.md	2021-06-19 20:45:42 UTC (rev 59644)
@@ -24,6 +24,8 @@
     - Currently support Chinese (simplified and traditional), English, French, German, Italien, Japanese, Portuguese (European and Brazilian), Russian and Spanish
 1. `PJLlogo.sty`
     - Draw the ProjLib logo
+1. `PJLmath.sty`
+    - Useful math macros and shortcuts
 1. `PJLpaper.sty`
     - Paper style configuration: yellow theme, dark theme and nord theme
 1. `PJLthm.sty`

Modified: trunk/Master/texmf-dist/source/latex/projlib/ProjLib.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/projlib/ProjLib.dtx	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/source/latex/projlib/ProjLib.dtx	2021-06-19 20:45:42 UTC (rev 59644)
@@ -18,52 +18,57 @@
 %
 %<*ProjLib>
 \ProvidesPackage{ProjLib}
-    [2021/06/17 The collective interface of ProjLib toolkit]
+    [2021/06/19 The collective interface of ProjLib toolkit]
 %</ProjLib>
 %
 %<*PJLamssim>
 \ProvidesPackage{PJLamssim}
-    [2021/06/17 Simulate some features of amsart]
+    [2021/06/19 Simulate some features of amsart]
 %</PJLamssim>
 %
 %<*PJLauthor>
 \ProvidesPackage{PJLauthor}
-    [2021/06/17 Enhanced author information block]
+    [2021/06/19 Enhanced author information block]
 %</PJLauthor>
 %
 %<*PJLdate>
 \ProvidesPackage{PJLdate}
-    [2021/06/17 Convert yyyy-mm-dd to normal datetime format]
+    [2021/06/19 Convert yyyy-mm-dd to normal datetime format]
 %</PJLdate>
 %
 %<*PJLdraft>
 \ProvidesPackage{PJLdraft}
-    [2021/06/17 Some useful macros for the draft stage]
+    [2021/06/19 Some useful macros for the draft stage]
 %</PJLdraft>
 %
 %<*PJLlang>
 \ProvidesPackage{PJLlang}
-    [2021/06/17 Multi-language configuration]
+    [2021/06/19 Multi-language configuration]
 %</PJLlang>
 %
 %<*PJLlogo>
 \ProvidesPackage{PJLlogo}
-    [2021/06/17 The ProjLib logo]
+    [2021/06/19 The ProjLib logo]
 %</PJLlogo>
 %
+%<*PJLmath>
+\ProvidesPackage{PJLmath}
+    [2021/06/19 Useful math macros and shortcuts]
+%</PJLmath>
+%
 %<*PJLpaper>
 \ProvidesPackage{PJLpaper}
-    [2021/06/17 Paper style configuration]
+    [2021/06/19 Paper style configuration]
 %</PJLpaper>
 %
 %<*PJLthm>
 \ProvidesPackage{PJLthm}
-    [2021/06/17 Theorem setup and configuration]
+    [2021/06/19 Theorem setup and configuration]
 %</PJLthm>
 %
 %<*PJLtoolkit>
 \ProvidesPackage{PJLtoolkit}
-    [2021/06/17 Collective interface of ProjLib Toolkit]
+    [2021/06/19 Collective interface of ProjLib Toolkit]
 %</PJLtoolkit>
 %
 \RequirePackage{kvoptions}
@@ -453,8 +458,77 @@
     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
+\DeclareVoidOption{EN}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}}
+\DeclareVoidOption{english}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}}
+\DeclareVoidOption{English}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}}
+\DeclareVoidOption{FR}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}}
+\DeclareVoidOption{french}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}}
+\DeclareVoidOption{French}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}}
+\DeclareVoidOption{DE}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}}
+\DeclareVoidOption{german}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}}
+\DeclareVoidOption{ngerman}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}}
+\DeclareVoidOption{German}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}}
+\DeclareVoidOption{IT}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}}
+\DeclareVoidOption{italian}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}}
+\DeclareVoidOption{Italian}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}}
+\DeclareVoidOption{PT}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}}
+\DeclareVoidOption{portuguese}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}}
+\DeclareVoidOption{Portuguese}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}}
+\DeclareVoidOption{BR}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}}
+\DeclareVoidOption{brazilian}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}}
+\DeclareVoidOption{Brazilian}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}}
+\DeclareVoidOption{ES}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}}
+\DeclareVoidOption{spanish}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}}
+\DeclareVoidOption{Spanish}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}}
+\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}}
+\DeclareVoidOption{japanese}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}}
+\DeclareVoidOption{Japanese}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}}
+\DeclareVoidOption{RU}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}}
+\DeclareVoidOption{russian}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}}
+\DeclareVoidOption{Russian}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}}
 \ProcessKeyvalOptions*\relax
 
+\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}
@@ -690,7 +764,19 @@
 \endgroup%
 }
 
-\UseLanguage{English}
+\IfStrEqCase{\PJLlang at 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}}%
+}
 %</PJLlang>
 %
 %<*PJLlogo>
@@ -742,6 +828,288 @@
 \DeclareRobustCommand*{\ProjLibText}{\ProjLib at generic{j}}
 %</PJLlogo>
 %
+%<*PJLmath>
+\RequirePackage{mathtools}
+\RequirePackage{mathrsfs}
+\@ifpackageloaded{unicode-math}{}{\RequirePackage{amssymb}}
+
+%%================================
+%% Shorthands
+%%================================
+\def\N{\ensuremath{\mathbb{N}}}
+\def\Z{\ensuremath{\mathbb{Z}}}
+\def\Q{\ensuremath{\mathbb{Q}}}
+\def\R{\ensuremath{\mathbb{R}}}
+\def\C{\ensuremath{\mathbb{C}}}
+\def\F{\ensuremath{\mathbb{F}}}
+\def\A{\ensuremath{\mathbb{A}}}
+
+\def\bb#1{\ensuremath{\mathbb{#1}}}
+\def\bbA{\ensuremath{\mathbb{A}}}
+\def\bbB{\ensuremath{\mathbb{B}}}
+\def\bbC{\ensuremath{\mathbb{C}}}
+\def\bbD{\ensuremath{\mathbb{D}}}
+\def\bbE{\ensuremath{\mathbb{E}}}
+\def\bbF{\ensuremath{\mathbb{F}}}
+\def\bbG{\ensuremath{\mathbb{G}}}
+\def\bbH{\ensuremath{\mathbb{H}}}
+\def\bbI{\ensuremath{\mathbb{I}}}
+\def\bbJ{\ensuremath{\mathbb{J}}}
+\def\bbK{\ensuremath{\mathbb{K}}}
+\def\bbL{\ensuremath{\mathbb{L}}}
+\def\bbM{\ensuremath{\mathbb{M}}}
+\def\bbN{\ensuremath{\mathbb{N}}}
+\def\bbO{\ensuremath{\mathbb{O}}}
+\def\bbP{\ensuremath{\mathbb{P}}}
+\def\bbQ{\ensuremath{\mathbb{Q}}}
+\def\bbR{\ensuremath{\mathbb{R}}}
+\def\bbS{\ensuremath{\mathbb{S}}}
+\def\bbT{\ensuremath{\mathbb{T}}}
+\def\bbU{\ensuremath{\mathbb{U}}}
+\def\bbV{\ensuremath{\mathbb{V}}}
+\def\bbW{\ensuremath{\mathbb{W}}}
+\def\bbX{\ensuremath{\mathbb{X}}}
+\def\bbY{\ensuremath{\mathbb{Y}}}
+\def\bbZ{\ensuremath{\mathbb{Z}}}
+
+\def\mc#1{\ensuremath{\mathcal{#1}}}
+\def\mcA{\ensuremath{\mathcal{A}}}
+\def\mcB{\ensuremath{\mathcal{B}}}
+\def\mcC{\ensuremath{\mathcal{C}}}
+\def\mcD{\ensuremath{\mathcal{D}}}
+\def\mcE{\ensuremath{\mathcal{E}}}
+\def\mcF{\ensuremath{\mathcal{F}}}
+\def\mcG{\ensuremath{\mathcal{G}}}
+\def\mcH{\ensuremath{\mathcal{H}}}
+\def\mcI{\ensuremath{\mathcal{I}}}
+\def\mcJ{\ensuremath{\mathcal{J}}}
+\def\mcK{\ensuremath{\mathcal{K}}}
+\def\mcL{\ensuremath{\mathcal{L}}}
+\def\mcM{\ensuremath{\mathcal{M}}}
+\def\mcN{\ensuremath{\mathcal{N}}}
+\def\mcO{\ensuremath{\mathcal{O}}}
+\def\mcP{\ensuremath{\mathcal{P}}}
+\def\mcQ{\ensuremath{\mathcal{Q}}}
+\def\mcR{\ensuremath{\mathcal{R}}}
+\def\mcS{\ensuremath{\mathcal{S}}}
+\def\mcT{\ensuremath{\mathcal{T}}}
+\def\mcU{\ensuremath{\mathcal{U}}}
+\def\mcV{\ensuremath{\mathcal{V}}}
+\def\mcW{\ensuremath{\mathcal{W}}}
+\def\mcX{\ensuremath{\mathcal{X}}}
+\def\mcY{\ensuremath{\mathcal{Y}}}
+\def\mcZ{\ensuremath{\mathcal{Z}}}
+
+\def\cal#1{\ensuremath{\mathcal{#1}}}
+\def\calA{\ensuremath{\mathcal{A}}}
+\def\calB{\ensuremath{\mathcal{B}}}
+\def\calC{\ensuremath{\mathcal{C}}}
+\def\calD{\ensuremath{\mathcal{D}}}
+\def\calE{\ensuremath{\mathcal{E}}}
+\def\calF{\ensuremath{\mathcal{F}}}
+\def\calG{\ensuremath{\mathcal{G}}}
+\def\calH{\ensuremath{\mathcal{H}}}
+\def\calI{\ensuremath{\mathcal{I}}}
+\def\calJ{\ensuremath{\mathcal{J}}}
+\def\calK{\ensuremath{\mathcal{K}}}
+\def\calL{\ensuremath{\mathcal{L}}}
+\def\calM{\ensuremath{\mathcal{M}}}
+\def\calN{\ensuremath{\mathcal{N}}}
+\def\calO{\ensuremath{\mathcal{O}}}
+\def\calP{\ensuremath{\mathcal{P}}}
+\def\calQ{\ensuremath{\mathcal{Q}}}
+\def\calR{\ensuremath{\mathcal{R}}}
+\def\calS{\ensuremath{\mathcal{S}}}
+\def\calT{\ensuremath{\mathcal{T}}}
+\def\calU{\ensuremath{\mathcal{U}}}
+\def\calV{\ensuremath{\mathcal{V}}}
+\def\calW{\ensuremath{\mathcal{W}}}
+\def\calX{\ensuremath{\mathcal{X}}}
+\def\calY{\ensuremath{\mathcal{Y}}}
+\def\calZ{\ensuremath{\mathcal{Z}}}
+
+\def\mf#1{\ensuremath{\mathfrak{#1}}}
+\def\mfa{\ensuremath{\mathfrak{a}}}
+\def\mfb{\ensuremath{\mathfrak{b}}}
+\def\mfc{\ensuremath{\mathfrak{c}}}
+\def\mfd{\ensuremath{\mathfrak{d}}}
+\def\mfe{\ensuremath{\mathfrak{e}}}
+\def\mff{\ensuremath{\mathfrak{f}}}
+\def\mfg{\ensuremath{\mathfrak{g}}}
+\def\mfh{\ensuremath{\mathfrak{h}}}
+\def\mfi{\ensuremath{\mathfrak{i}}}
+\def\mfj{\ensuremath{\mathfrak{j}}}
+\def\mfk{\ensuremath{\mathfrak{k}}}
+\def\mfl{\ensuremath{\mathfrak{l}}}
+\def\mfm{\ensuremath{\mathfrak{m}}}
+\def\mfn{\ensuremath{\mathfrak{n}}}
+\def\mfo{\ensuremath{\mathfrak{o}}}
+\def\mfp{\ensuremath{\mathfrak{p}}}
+\def\mfq{\ensuremath{\mathfrak{q}}}
+\def\mfr{\ensuremath{\mathfrak{r}}}
+\def\mfs{\ensuremath{\mathfrak{s}}}
+\def\mft{\ensuremath{\mathfrak{t}}}
+\def\mfu{\ensuremath{\mathfrak{u}}}
+\def\mfv{\ensuremath{\mathfrak{v}}}
+\def\mfw{\ensuremath{\mathfrak{w}}}
+\def\mfx{\ensuremath{\mathfrak{x}}}
+\def\mfy{\ensuremath{\mathfrak{y}}}
+\def\mfz{\ensuremath{\mathfrak{z}}}
+\def\mfA{\ensuremath{\mathfrak{A}}}
+\def\mfB{\ensuremath{\mathfrak{B}}}
+\def\mfC{\ensuremath{\mathfrak{C}}}
+\def\mfD{\ensuremath{\mathfrak{D}}}
+\def\mfE{\ensuremath{\mathfrak{E}}}
+\def\mfF{\ensuremath{\mathfrak{F}}}
+\def\mfG{\ensuremath{\mathfrak{G}}}
+\def\mfH{\ensuremath{\mathfrak{H}}}
+\def\mfI{\ensuremath{\mathfrak{I}}}
+\def\mfJ{\ensuremath{\mathfrak{J}}}
+\def\mfK{\ensuremath{\mathfrak{K}}}
+\def\mfL{\ensuremath{\mathfrak{L}}}
+\def\mfM{\ensuremath{\mathfrak{M}}}
+\def\mfN{\ensuremath{\mathfrak{N}}}
+\def\mfO{\ensuremath{\mathfrak{O}}}
+\def\mfP{\ensuremath{\mathfrak{P}}}
+\def\mfQ{\ensuremath{\mathfrak{Q}}}
+\def\mfR{\ensuremath{\mathfrak{R}}}
+\def\mfS{\ensuremath{\mathfrak{S}}}
+\def\mfT{\ensuremath{\mathfrak{T}}}
+\def\mfU{\ensuremath{\mathfrak{U}}}
+\def\mfV{\ensuremath{\mathfrak{V}}}
+\def\mfW{\ensuremath{\mathfrak{W}}}
+\def\mfX{\ensuremath{\mathfrak{X}}}
+\def\mfY{\ensuremath{\mathfrak{Y}}}
+\def\mfZ{\ensuremath{\mathfrak{Z}}}
+
+\def\frak#1{\ensuremath{\mathfrak{#1}}}
+\def\fraka{\ensuremath{\mathfrak{a}}}
+\def\frakb{\ensuremath{\mathfrak{b}}}
+\def\frakc{\ensuremath{\mathfrak{c}}}
+\def\frakd{\ensuremath{\mathfrak{d}}}
+\def\frake{\ensuremath{\mathfrak{e}}}
+\def\frakf{\ensuremath{\mathfrak{f}}}
+\def\frakg{\ensuremath{\mathfrak{g}}}
+\def\frakh{\ensuremath{\mathfrak{h}}}
+\def\fraki{\ensuremath{\mathfrak{i}}}
+\def\frakj{\ensuremath{\mathfrak{j}}}
+\def\frakk{\ensuremath{\mathfrak{k}}}
+\def\frakl{\ensuremath{\mathfrak{l}}}
+\def\frakm{\ensuremath{\mathfrak{m}}}
+\def\frakn{\ensuremath{\mathfrak{n}}}
+\def\frako{\ensuremath{\mathfrak{o}}}
+\def\frakp{\ensuremath{\mathfrak{p}}}
+\def\frakq{\ensuremath{\mathfrak{q}}}
+\def\frakr{\ensuremath{\mathfrak{r}}}
+\def\fraks{\ensuremath{\mathfrak{s}}}
+\def\frakt{\ensuremath{\mathfrak{t}}}
+\def\fraku{\ensuremath{\mathfrak{u}}}
+\def\frakv{\ensuremath{\mathfrak{v}}}
+\def\frakw{\ensuremath{\mathfrak{w}}}
+\def\frakx{\ensuremath{\mathfrak{x}}}
+\def\fraky{\ensuremath{\mathfrak{y}}}
+\def\frakz{\ensuremath{\mathfrak{z}}}
+\def\frakA{\ensuremath{\mathfrak{A}}}
+\def\frakB{\ensuremath{\mathfrak{B}}}
+\def\frakC{\ensuremath{\mathfrak{C}}}
+\def\frakD{\ensuremath{\mathfrak{D}}}
+\def\frakE{\ensuremath{\mathfrak{E}}}
+\def\frakF{\ensuremath{\mathfrak{F}}}
+\def\frakG{\ensuremath{\mathfrak{G}}}
+\def\frakH{\ensuremath{\mathfrak{H}}}
+\def\frakI{\ensuremath{\mathfrak{I}}}
+\def\frakJ{\ensuremath{\mathfrak{J}}}
+\def\frakK{\ensuremath{\mathfrak{K}}}
+\def\frakL{\ensuremath{\mathfrak{L}}}
+\def\frakM{\ensuremath{\mathfrak{M}}}
+\def\frakN{\ensuremath{\mathfrak{N}}}
+\def\frakO{\ensuremath{\mathfrak{O}}}
+\def\frakP{\ensuremath{\mathfrak{P}}}
+\def\frakQ{\ensuremath{\mathfrak{Q}}}
+\def\frakR{\ensuremath{\mathfrak{R}}}
+\def\frakS{\ensuremath{\mathfrak{S}}}
+\def\frakT{\ensuremath{\mathfrak{T}}}
+\def\frakU{\ensuremath{\mathfrak{U}}}
+\def\frakV{\ensuremath{\mathfrak{V}}}
+\def\frakW{\ensuremath{\mathfrak{W}}}
+\def\frakX{\ensuremath{\mathfrak{X}}}
+\def\frakY{\ensuremath{\mathfrak{Y}}}
+\def\frakZ{\ensuremath{\mathfrak{Z}}}
+
+\def\ms#1{\ensuremath{\mathscr{#1}}}
+\def\msA{\ensuremath{\mathscr{A}}}
+\def\msB{\ensuremath{\mathscr{B}}}
+\def\msC{\ensuremath{\mathscr{C}}}
+\def\msD{\ensuremath{\mathscr{D}}}
+\def\msE{\ensuremath{\mathscr{E}}}
+\def\msF{\ensuremath{\mathscr{F}}}
+\def\msG{\ensuremath{\mathscr{G}}}
+\def\msH{\ensuremath{\mathscr{H}}}
+\def\msI{\ensuremath{\mathscr{I}}}
+\def\msJ{\ensuremath{\mathscr{J}}}
+\def\msK{\ensuremath{\mathscr{K}}}
+\def\msL{\ensuremath{\mathscr{L}}}
+\def\msM{\ensuremath{\mathscr{M}}}
+\def\msN{\ensuremath{\mathscr{N}}}
+\def\msO{\ensuremath{\mathscr{O}}}
+\def\msP{\ensuremath{\mathscr{P}}}
+\def\msQ{\ensuremath{\mathscr{Q}}}
+\def\msR{\ensuremath{\mathscr{R}}}
+\def\msS{\ensuremath{\mathscr{S}}}
+\def\msT{\ensuremath{\mathscr{T}}}
+\def\msU{\ensuremath{\mathscr{U}}}
+\def\msV{\ensuremath{\mathscr{V}}}
+\def\msW{\ensuremath{\mathscr{W}}}
+\def\msX{\ensuremath{\mathscr{X}}}
+\def\msY{\ensuremath{\mathscr{Y}}}
+\def\msZ{\ensuremath{\mathscr{Z}}}
+
+\def\scr#1{\ensuremath{\mathscr{#1}}}
+\def\scrA{\ensuremath{\mathscr{A}}}
+\def\scrB{\ensuremath{\mathscr{B}}}
+\def\scrC{\ensuremath{\mathscr{C}}}
+\def\scrD{\ensuremath{\mathscr{D}}}
+\def\scrE{\ensuremath{\mathscr{E}}}
+\def\scrF{\ensuremath{\mathscr{F}}}
+\def\scrG{\ensuremath{\mathscr{G}}}
+\def\scrH{\ensuremath{\mathscr{H}}}
+\def\scrI{\ensuremath{\mathscr{I}}}
+\def\scrJ{\ensuremath{\mathscr{J}}}
+\def\scrK{\ensuremath{\mathscr{K}}}
+\def\scrL{\ensuremath{\mathscr{L}}}
+\def\scrM{\ensuremath{\mathscr{M}}}
+\def\scrN{\ensuremath{\mathscr{N}}}
+\def\scrO{\ensuremath{\mathscr{O}}}
+\def\scrP{\ensuremath{\mathscr{P}}}
+\def\scrQ{\ensuremath{\mathscr{Q}}}
+\def\scrR{\ensuremath{\mathscr{R}}}
+\def\scrS{\ensuremath{\mathscr{S}}}
+\def\scrT{\ensuremath{\mathscr{T}}}
+\def\scrU{\ensuremath{\mathscr{U}}}
+\def\scrV{\ensuremath{\mathscr{V}}}
+\def\scrW{\ensuremath{\mathscr{W}}}
+\def\scrX{\ensuremath{\mathscr{X}}}
+\def\scrY{\ensuremath{\mathscr{Y}}}
+\def\scrZ{\ensuremath{\mathscr{Z}}}
+
+%%================================
+%% 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
+
+\newcommand{\genlegendre}[4]{%
+  \genfrac{(}{)}{}{#1}{#3}{#4}%
+  \if\relax\detokenize{#2}\relax\else_{\!#2}\fi%
+}
+\newcommand{\legendre}[3][]{\genlegendre{}{#1}{#2}{#3}}
+\newcommand{\dlegendre}[3][]{\genlegendre{0}{#1}{#2}{#3}}
+\newcommand{\tlegendre}[3][]{\genlegendre{1}{#1}{#2}{#3}}
+%</PJLmath>
+%
 %<*PJLpaper>
 \RequirePackage{ifthen}
 
@@ -822,6 +1190,7 @@
     prefix = @PJLthm@
 }
 \DeclareBoolOption[false]{nothms}
+\DeclareBoolOption[false]{nothmnum}
 \DeclareBoolOption[false]{draft}
 \DeclareBoolOption[false]{fast}
 \DeclareBoolOption[false]{regionalref}
@@ -1034,17 +1403,17 @@
 %                 \newtheorem*{#2TC#3}{\csname#2nameTC\endcsname}%
 %                 \newtheorem*{#2JP#3}{\csname#2nameJP\endcsname}%
 %                 \newtheorem*{#2RU#3}{\csname#2nameRU\endcsname}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameEN\endcsname}{\newtheorem*{#2EN#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameFR\endcsname}{\newtheorem*{#2FR#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameDE\endcsname}{\newtheorem*{#2DE#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameIT\endcsname}{\newtheorem*{#2IT#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2namePT\endcsname}{\newtheorem*{#2PT#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameBR\endcsname}{\newtheorem*{#2BR#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameES\endcsname}{\newtheorem*{#2ES#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameCN\endcsname}{\newtheorem*{#2CN#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameTC\endcsname}{\newtheorem*{#2TC#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameJP\endcsname}{\newtheorem*{#2JP#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameRU\endcsname}{\newtheorem*{#2RU#3}}%
+                \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}]%
@@ -1057,17 +1426,17 @@
                         {\newcounter{#2#3}}%
                 }%
                 %---------------------------------------------------------------
-                \CreateTheoremNumberedLikeAliasCounter{#2}{EN}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{FR}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{DE}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{IT}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{PT}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{BR}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{ES}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{CN}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{TC}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{JP}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{RU}{#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}{}
@@ -1361,6 +1730,17 @@
     \newaliascnt{PJLthm at highest}{section}
 }
 \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{theorem}<PJLthm at highest>
 \CreateTheorem{lemma}[theorem]
 \CreateTheorem{proposition}[theorem]
@@ -1370,6 +1750,7 @@
 \CreateTheorem{property}[theorem]
 \CreateTheorem{fact}[theorem]
 \CreateTheorem{conjecture}[theorem]
+\fi
 \CreateTheorem*{theorem*}
 \CreateTheorem*{lemma*}
 \CreateTheorem*{proposition*}
@@ -1381,6 +1762,18 @@
 \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]
@@ -1391,6 +1784,7 @@
 \CreateTheorem{problem}[theorem]
 \CreateTheorem{question}[theorem]
 \CreateTheorem{exercise}[theorem]
+\fi
 \CreateTheorem*{definition*}
 \CreateTheorem*{axiom*}
 \CreateTheorem*{assumption*}
@@ -1403,9 +1797,14 @@
 \CreateTheorem*{exercise*}
 
 \theoremstyle{remark}
+\if at PJLthm@nothmnum
+\CreateTheorem*{remark}
+\CreateTheorem*{observation}
+\else
 \CreateTheorem{remark}<PJLthm at highest>
+\CreateTheorem{observation}<PJLthm at highest>
+\fi
 \CreateTheorem*{remark*}
-\CreateTheorem{observation}<PJLthm at highest>
 \CreateTheorem*{observation*}
 \fi
 
@@ -1509,6 +1908,7 @@
 \DeclareBoolOption[false]{author}
 \DeclareBoolOption[false]{amssim}
 \DeclareBoolOption[false]{nothms}
+\DeclareBoolOption[false]{nothmnum}
 \DeclareBoolOption[false]{regionalref}
 \DeclareBoolOption[false]{useosf}
 \DeclareBoolOption[false]{palatino}
@@ -1528,6 +1928,9 @@
 \if at PJLtoolkit@nothms
     \PassOptionsToPackage{nothms}{PJLthm}
 \fi
+\if at PJLtoolkit@nothmnum
+    \PassOptionsToPackage{nothmnum}{PJLthm}
+\fi
 \if at PJLtoolkit@regionalref
     \PassOptionsToPackage{regionalref}{PJLthm}
 \fi
@@ -1541,6 +1944,7 @@
 \RequirePackage{PJLdate}
 \RequirePackage{PJLdraft}
 \RequirePackage{PJLlogo}
+\RequirePackage{PJLmath}
 \RequirePackage{PJLpaper}
 \RequirePackage{PJLthm}
 
@@ -1550,7 +1954,7 @@
 % \RequirePackage{inputenc}
 % \fi
 %
-\RequirePackage{mathtools}
+% \RequirePackage{mathtools}
 
 % \PJL at font@alreadyset should contain the current font name
 % A message can then be shown as: Font "(font name)" has been set
@@ -1557,7 +1961,7 @@
 \ifdefined\PJL at font@alreadyset\else
 
 \if at PJLtoolkit@palatino
-    \RequirePackage{amssymb}
+    % \RequirePackage{amssymb}
     \RequirePackage{mathpazo}
     \PassOptionsToPackage{defaultsups}{newpxtext}
     \RequirePackage{newpxtext}
@@ -1568,7 +1972,7 @@
 \fi
 
 \if at PJLtoolkit@times
-    \RequirePackage{amssymb}
+    % \RequirePackage{amssymb}
     \PassOptionsToPackage{defaultsups}{newtxtext}
     \RequirePackage{newtxtext}
     \RequirePackage{newtxmath}
@@ -1578,7 +1982,7 @@
 \fi
 
 \if at PJLtoolkit@garamond
-    \RequirePackage{amssymb}
+    % \RequirePackage{amssymb}
     \if at PJLtoolkit@useosf\else
         \PassOptionsToPackage{lining}{ebgaramond}
     \fi
@@ -1589,7 +1993,7 @@
 \fi
 
 \if at PJLtoolkit@biolinum
-    \RequirePackage{amssymb}
+    % \RequirePackage{amssymb}
     % \RequirePackage{mathpazo}
     % \RequirePackage[sansmath]{libertinust1math}
     \ifPDFTeX

Modified: trunk/Master/texmf-dist/source/latex/projlib/ProjLib.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/projlib/ProjLib.ins	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/source/latex/projlib/ProjLib.ins	2021-06-19 20:45:42 UTC (rev 59644)
@@ -46,6 +46,7 @@
 \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}}}
 \generate{\file{PJLtoolkit.sty}{\from{ProjLib.dtx}{PJLtoolkit}}}
@@ -63,6 +64,7 @@
 \Msg{*     PJLdraft.sty                                          *}
 \Msg{*     PJLlang.sty                                           *}
 \Msg{*     PJLlogo.sty                                           *}
+\Msg{*     PJLmath.sty                                           *}
 \Msg{*     PJLpaper.sty                                          *}
 \Msg{*     PJLthm.sty                                            *}
 \Msg{*     PJLtoolkit.sty                                        *}

Modified: trunk/Master/texmf-dist/tex/latex/projlib/PJLamssim.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/PJLamssim.sty	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/tex/latex/projlib/PJLamssim.sty	2021-06-19 20:45:42 UTC (rev 59644)
@@ -17,7 +17,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020-10-01]
 \ProvidesPackage{PJLamssim}
-    [2021/06/17 Simulate some features of amsart]
+    [2021/06/19 Simulate some features of amsart]
 \RequirePackage{kvoptions}
 \RequirePackage{etoolbox}
 \ifdefined\subjclass\endinput\fi

Modified: trunk/Master/texmf-dist/tex/latex/projlib/PJLauthor.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/PJLauthor.sty	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/tex/latex/projlib/PJLauthor.sty	2021-06-19 20:45:42 UTC (rev 59644)
@@ -17,7 +17,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020-10-01]
 \ProvidesPackage{PJLauthor}
-    [2021/06/17 Enhanced author information block]
+    [2021/06/19 Enhanced author information block]
 \RequirePackage{kvoptions}
 \RequirePackage{etoolbox}
 \ifdefined\subjclass\endinput\fi

Modified: trunk/Master/texmf-dist/tex/latex/projlib/PJLdate.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/PJLdate.sty	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/tex/latex/projlib/PJLdate.sty	2021-06-19 20:45:42 UTC (rev 59644)
@@ -17,7 +17,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020-10-01]
 \ProvidesPackage{PJLdate}
-    [2021/06/17 Convert yyyy-mm-dd to normal datetime format]
+    [2021/06/19 Convert yyyy-mm-dd to normal datetime format]
 \RequirePackage{kvoptions}
 \RequirePackage{etoolbox}
 \SetupKeyvalOptions{

Modified: trunk/Master/texmf-dist/tex/latex/projlib/PJLdraft.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/PJLdraft.sty	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/tex/latex/projlib/PJLdraft.sty	2021-06-19 20:45:42 UTC (rev 59644)
@@ -17,7 +17,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020-10-01]
 \ProvidesPackage{PJLdraft}
-    [2021/06/17 Some useful macros for the draft stage]
+    [2021/06/19 Some useful macros for the draft stage]
 \RequirePackage{kvoptions}
 \RequirePackage{etoolbox}
 \SetupKeyvalOptions{

Modified: trunk/Master/texmf-dist/tex/latex/projlib/PJLlang.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/PJLlang.sty	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/tex/latex/projlib/PJLlang.sty	2021-06-19 20:45:42 UTC (rev 59644)
@@ -17,7 +17,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020-10-01]
 \ProvidesPackage{PJLlang}
-    [2021/06/17 Multi-language configuration]
+    [2021/06/19 Multi-language configuration]
 \RequirePackage{kvoptions}
 \RequirePackage{etoolbox}
 \SetupKeyvalOptions{%
@@ -25,8 +25,77 @@
     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
+\DeclareVoidOption{EN}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}}
+\DeclareVoidOption{english}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}}
+\DeclareVoidOption{English}{\@PJLlang at enable@allfalse\@PJLlang at enable@ENtrue\providecommand{\PJLlang at mainlang}{EN}}
+\DeclareVoidOption{FR}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}}
+\DeclareVoidOption{french}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}}
+\DeclareVoidOption{French}{\@PJLlang at enable@allfalse\@PJLlang at enable@FRtrue\providecommand{\PJLlang at mainlang}{FR}}
+\DeclareVoidOption{DE}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}}
+\DeclareVoidOption{german}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}}
+\DeclareVoidOption{ngerman}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}}
+\DeclareVoidOption{German}{\@PJLlang at enable@allfalse\@PJLlang at enable@DEtrue\providecommand{\PJLlang at mainlang}{DE}}
+\DeclareVoidOption{IT}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}}
+\DeclareVoidOption{italian}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}}
+\DeclareVoidOption{Italian}{\@PJLlang at enable@allfalse\@PJLlang at enable@ITtrue\providecommand{\PJLlang at mainlang}{IT}}
+\DeclareVoidOption{PT}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}}
+\DeclareVoidOption{portuguese}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}}
+\DeclareVoidOption{Portuguese}{\@PJLlang at enable@allfalse\@PJLlang at enable@PTtrue\providecommand{\PJLlang at mainlang}{PT}}
+\DeclareVoidOption{BR}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}}
+\DeclareVoidOption{brazilian}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}}
+\DeclareVoidOption{Brazilian}{\@PJLlang at enable@allfalse\@PJLlang at enable@BRtrue\providecommand{\PJLlang at mainlang}{BR}}
+\DeclareVoidOption{ES}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}}
+\DeclareVoidOption{spanish}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}}
+\DeclareVoidOption{Spanish}{\@PJLlang at enable@allfalse\@PJLlang at enable@EStrue\providecommand{\PJLlang at mainlang}{ES}}
+\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}}
+\DeclareVoidOption{japanese}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}}
+\DeclareVoidOption{Japanese}{\@PJLlang at enable@allfalse\@PJLlang at enable@JPtrue\providecommand{\PJLlang at mainlang}{JP}}
+\DeclareVoidOption{RU}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}}
+\DeclareVoidOption{russian}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}}
+\DeclareVoidOption{Russian}{\@PJLlang at enable@allfalse\@PJLlang at enable@RUtrue\providecommand{\PJLlang at mainlang}{RU}}
 \ProcessKeyvalOptions*\relax
 
+\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}
@@ -256,7 +325,19 @@
 \endgroup%
 }
 
-\UseLanguage{English}
+\IfStrEqCase{\PJLlang at mainlang}{%
+    {EN}{\UseLanguage{EN}}%
+    {FR}{\UseLanguage{FR}}%
+    {DE}{\UseLanguage{DE}}%
+    {IT}{\UseLanguage{IT}}%
+    {PT}{\UseLanguage{PT}}%
+    {BR}{\UseLanguage{BR}}%
+    {ES}{\UseLanguage{ES}}%
+    {CN}{\UseLanguage{CN}}%
+    {TC}{\UseLanguage{TC}}%
+    {JP}{\UseLanguage{JP}}%
+    {RU}{\UseLanguage{RU}}%
+}
 
 \endinput
 %%

Modified: trunk/Master/texmf-dist/tex/latex/projlib/PJLlogo.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/PJLlogo.sty	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/tex/latex/projlib/PJLlogo.sty	2021-06-19 20:45:42 UTC (rev 59644)
@@ -17,7 +17,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020-10-01]
 \ProvidesPackage{PJLlogo}
-    [2021/06/17 The ProjLib logo]
+    [2021/06/19 The ProjLib logo]
 \RequirePackage{kvoptions}
 \RequirePackage{etoolbox}
 \SetupKeyvalOptions{

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


Property changes on: trunk/Master/texmf-dist/tex/latex/projlib/PJLmath.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/projlib/PJLpaper.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/PJLpaper.sty	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/tex/latex/projlib/PJLpaper.sty	2021-06-19 20:45:42 UTC (rev 59644)
@@ -17,7 +17,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020-10-01]
 \ProvidesPackage{PJLpaper}
-    [2021/06/17 Paper style configuration]
+    [2021/06/19 Paper style configuration]
 \RequirePackage{kvoptions}
 \RequirePackage{etoolbox}
 \RequirePackage{ifthen}

Modified: trunk/Master/texmf-dist/tex/latex/projlib/PJLthm.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/PJLthm.sty	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/tex/latex/projlib/PJLthm.sty	2021-06-19 20:45:42 UTC (rev 59644)
@@ -17,7 +17,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020-10-01]
 \ProvidesPackage{PJLthm}
-    [2021/06/17 Theorem setup and configuration]
+    [2021/06/19 Theorem setup and configuration]
 \RequirePackage{kvoptions}
 \RequirePackage{etoolbox}
 \SetupKeyvalOptions{%
@@ -25,6 +25,7 @@
     prefix = @PJLthm@
 }
 \DeclareBoolOption[false]{nothms}
+\DeclareBoolOption[false]{nothmnum}
 \DeclareBoolOption[false]{draft}
 \DeclareBoolOption[false]{fast}
 \DeclareBoolOption[false]{regionalref}
@@ -199,17 +200,17 @@
             }
         }{%
             \IfBooleanTF{#1}{%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameEN\endcsname}{\newtheorem*{#2EN#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameFR\endcsname}{\newtheorem*{#2FR#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameDE\endcsname}{\newtheorem*{#2DE#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameIT\endcsname}{\newtheorem*{#2IT#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2namePT\endcsname}{\newtheorem*{#2PT#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameBR\endcsname}{\newtheorem*{#2BR#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameES\endcsname}{\newtheorem*{#2ES#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameCN\endcsname}{\newtheorem*{#2CN#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameTC\endcsname}{\newtheorem*{#2TC#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameJP\endcsname}{\newtheorem*{#2JP#3}}%
-                \expandafter\PassFirstToSecond\expandafter{\csname#2nameRU\endcsname}{\newtheorem*{#2RU#3}}%
+                \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}]%
@@ -222,17 +223,17 @@
                         {\newcounter{#2#3}}%
                 }%
                 %---------------------------------------------------------------
-                \CreateTheoremNumberedLikeAliasCounter{#2}{EN}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{FR}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{DE}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{IT}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{PT}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{BR}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{ES}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{CN}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{TC}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{JP}{#3}%
-                \CreateTheoremNumberedLikeAliasCounter{#2}{RU}{#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}{}
@@ -519,6 +520,17 @@
     \newaliascnt{PJLthm at highest}{section}
 }
 \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{theorem}<PJLthm at highest>
 \CreateTheorem{lemma}[theorem]
 \CreateTheorem{proposition}[theorem]
@@ -528,6 +540,7 @@
 \CreateTheorem{property}[theorem]
 \CreateTheorem{fact}[theorem]
 \CreateTheorem{conjecture}[theorem]
+\fi
 \CreateTheorem*{theorem*}
 \CreateTheorem*{lemma*}
 \CreateTheorem*{proposition*}
@@ -539,6 +552,18 @@
 \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]
@@ -549,6 +574,7 @@
 \CreateTheorem{problem}[theorem]
 \CreateTheorem{question}[theorem]
 \CreateTheorem{exercise}[theorem]
+\fi
 \CreateTheorem*{definition*}
 \CreateTheorem*{axiom*}
 \CreateTheorem*{assumption*}
@@ -561,9 +587,14 @@
 \CreateTheorem*{exercise*}
 
 \theoremstyle{remark}
+\if at PJLthm@nothmnum
+\CreateTheorem*{remark}
+\CreateTheorem*{observation}
+\else
 \CreateTheorem{remark}<PJLthm at highest>
+\CreateTheorem{observation}<PJLthm at highest>
+\fi
 \CreateTheorem*{remark*}
-\CreateTheorem{observation}<PJLthm at highest>
 \CreateTheorem*{observation*}
 \fi
 

Modified: trunk/Master/texmf-dist/tex/latex/projlib/PJLtoolkit.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/PJLtoolkit.sty	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/tex/latex/projlib/PJLtoolkit.sty	2021-06-19 20:45:42 UTC (rev 59644)
@@ -17,7 +17,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020-10-01]
 \ProvidesPackage{PJLtoolkit}
-    [2021/06/17 Collective interface of ProjLib Toolkit]
+    [2021/06/19 Collective interface of ProjLib Toolkit]
 \RequirePackage{kvoptions}
 \RequirePackage{etoolbox}
 \SetupKeyvalOptions{
@@ -29,6 +29,7 @@
 \DeclareBoolOption[false]{author}
 \DeclareBoolOption[false]{amssim}
 \DeclareBoolOption[false]{nothms}
+\DeclareBoolOption[false]{nothmnum}
 \DeclareBoolOption[false]{regionalref}
 \DeclareBoolOption[false]{useosf}
 \DeclareBoolOption[false]{palatino}
@@ -48,6 +49,9 @@
 \if at PJLtoolkit@nothms
     \PassOptionsToPackage{nothms}{PJLthm}
 \fi
+\if at PJLtoolkit@nothmnum
+    \PassOptionsToPackage{nothmnum}{PJLthm}
+\fi
 \if at PJLtoolkit@regionalref
     \PassOptionsToPackage{regionalref}{PJLthm}
 \fi
@@ -61,15 +65,15 @@
 \RequirePackage{PJLdate}
 \RequirePackage{PJLdraft}
 \RequirePackage{PJLlogo}
+\RequirePackage{PJLmath}
 \RequirePackage{PJLpaper}
 \RequirePackage{PJLthm}
 
-\RequirePackage{mathtools}
 
 \ifdefined\PJL at font@alreadyset\else
 
 \if at PJLtoolkit@palatino
-    \RequirePackage{amssymb}
+    % \RequirePackage{amssymb}
     \RequirePackage{mathpazo}
     \PassOptionsToPackage{defaultsups}{newpxtext}
     \RequirePackage{newpxtext}
@@ -80,7 +84,7 @@
 \fi
 
 \if at PJLtoolkit@times
-    \RequirePackage{amssymb}
+    % \RequirePackage{amssymb}
     \PassOptionsToPackage{defaultsups}{newtxtext}
     \RequirePackage{newtxtext}
     \RequirePackage{newtxmath}
@@ -90,7 +94,7 @@
 \fi
 
 \if at PJLtoolkit@garamond
-    \RequirePackage{amssymb}
+    % \RequirePackage{amssymb}
     \if at PJLtoolkit@useosf\else
         \PassOptionsToPackage{lining}{ebgaramond}
     \fi
@@ -101,7 +105,7 @@
 \fi
 
 \if at PJLtoolkit@biolinum
-    \RequirePackage{amssymb}
+    % \RequirePackage{amssymb}
     % \RequirePackage{mathpazo}
     % \RequirePackage[sansmath]{libertinust1math}
     \ifPDFTeX

Modified: trunk/Master/texmf-dist/tex/latex/projlib/ProjLib.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/ProjLib.sty	2021-06-19 20:45:20 UTC (rev 59643)
+++ trunk/Master/texmf-dist/tex/latex/projlib/ProjLib.sty	2021-06-19 20:45:42 UTC (rev 59644)
@@ -17,7 +17,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}[2020-10-01]
 \ProvidesPackage{ProjLib}
-    [2021/06/17 The collective interface of ProjLib toolkit]
+    [2021/06/19 The collective interface of ProjLib toolkit]
 \RequirePackage{kvoptions}
 \RequirePackage{etoolbox}
 \SetupKeyvalOptions{
@@ -29,6 +29,7 @@
 \DeclareBoolOption[false]{author}
 \DeclareBoolOption[false]{amssim}
 \DeclareBoolOption[false]{nothms}
+\DeclareBoolOption[false]{nothmnum}
 \DeclareBoolOption[false]{regionalref}
 \DeclareBoolOption[false]{useosf}
 \DeclareBoolOption[false]{palatino}
@@ -48,6 +49,9 @@
 \if at PJLtoolkit@nothms
     \PassOptionsToPackage{nothms}{PJLthm}
 \fi
+\if at PJLtoolkit@nothmnum
+    \PassOptionsToPackage{nothmnum}{PJLthm}
+\fi
 \if at PJLtoolkit@regionalref
     \PassOptionsToPackage{regionalref}{PJLthm}
 \fi
@@ -61,15 +65,15 @@
 \RequirePackage{PJLdate}
 \RequirePackage{PJLdraft}
 \RequirePackage{PJLlogo}
+\RequirePackage{PJLmath}
 \RequirePackage{PJLpaper}
 \RequirePackage{PJLthm}
 
-\RequirePackage{mathtools}
 
 \ifdefined\PJL at font@alreadyset\else
 
 \if at PJLtoolkit@palatino
-    \RequirePackage{amssymb}
+    % \RequirePackage{amssymb}
     \RequirePackage{mathpazo}
     \PassOptionsToPackage{defaultsups}{newpxtext}
     \RequirePackage{newpxtext}
@@ -80,7 +84,7 @@
 \fi
 
 \if at PJLtoolkit@times
-    \RequirePackage{amssymb}
+    % \RequirePackage{amssymb}
     \PassOptionsToPackage{defaultsups}{newtxtext}
     \RequirePackage{newtxtext}
     \RequirePackage{newtxmath}
@@ -90,7 +94,7 @@
 \fi
 
 \if at PJLtoolkit@garamond
-    \RequirePackage{amssymb}
+    % \RequirePackage{amssymb}
     \if at PJLtoolkit@useosf\else
         \PassOptionsToPackage{lining}{ebgaramond}
     \fi
@@ -101,7 +105,7 @@
 \fi
 
 \if at PJLtoolkit@biolinum
-    \RequirePackage{amssymb}
+    % \RequirePackage{amssymb}
     % \RequirePackage{mathpazo}
     % \RequirePackage[sansmath]{libertinust1math}
     \ifPDFTeX



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