From c5b0b7223927e0d1ed15233367e14940f33d044a Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Fri, 30 Jul 2021 20:15:57 +0000
Subject: projlib (30jul21)

git-svn-id: svn://tug.org/texlive/trunk@60118 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/source/latex/projlib/ProjLib.dtx | 592 +++++++++++----------
 1 file changed, 324 insertions(+), 268 deletions(-)

(limited to 'Master/texmf-dist/source/latex/projlib/ProjLib.dtx')

diff --git a/Master/texmf-dist/source/latex/projlib/ProjLib.dtx b/Master/texmf-dist/source/latex/projlib/ProjLib.dtx
index 59be20a95ba..583e08f3cbc 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/07/27 The collective interface of ProjLib toolkit]
+    [2021/07/30 The collective interface of ProjLib toolkit]
 %</ProjLib>
 %
 %<*PJLauthor>
 \ProvidesPackage{PJLauthor}
-    [2021/07/27 Enhanced author information block]
+    [2021/07/30 Enhanced author information block]
 %</PJLauthor>
 %
 %<*PJLdate>
 \ProvidesPackage{PJLdate}
-    [2021/07/27 Convert yyyy-mm-dd to normal datetime format]
+    [2021/07/30 Convert yyyy-mm-dd to normal datetime format]
 %</PJLdate>
 %
 %<*PJLdraft>
 \ProvidesPackage{PJLdraft}
-    [2021/07/27 Some useful macros for the draft stage]
+    [2021/07/30 Some useful macros for the draft stage]
 %</PJLdraft>
 %
 %<*PJLlang>
 \ProvidesPackage{PJLlang}
-    [2021/07/27 Multi-language configuration]
+    [2021/07/30 Multi-language configuration]
 %</PJLlang>
 %
 %<*PJLlogo>
 \ProvidesPackage{PJLlogo}
-    [2021/07/27 The ProjLib logo]
+    [2021/07/30 The ProjLib logo]
 %</PJLlogo>
 %
 %<*PJLmath>
 \ProvidesPackage{PJLmath}
-    [2021/07/27 Useful math macros and shortcuts]
+    [2021/07/30 Useful math macros and shortcuts]
 %</PJLmath>
 %
 %<*PJLpaper>
 \ProvidesPackage{PJLpaper}
-    [2021/07/27 Paper style configuration]
+    [2021/07/30 Paper style configuration]
 %</PJLpaper>
 %
 %<*PJLthm>
 \ProvidesPackage{PJLthm}
-    [2021/07/27 Theorem setup and configuration]
+    [2021/07/30 Theorem setup and configuration]
 %</PJLthm>
 %
 %# 下面两行引入宏包的代码是所有文件共用的。
@@ -1005,269 +1005,269 @@
 %%================================
 %# 常见代数结构的捷径
 %# Shortcuts for commonly used algebraic structures
-\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}}}
+\providecommand{\N}{\ensuremath{\mathbb{N}}}
+\providecommand{\Z}{\ensuremath{\mathbb{Z}}}
+\providecommand{\Q}{\ensuremath{\mathbb{Q}}}
+\providecommand{\R}{\ensuremath{\mathbb{R}}}
+\providecommand{\C}{\ensuremath{\mathbb{C}}}
+\providecommand{\F}{\ensuremath{\mathbb{F}}}
+\providecommand{\A}{\ensuremath{\mathbb{A}}}
 
 %# mathbb 的捷径
 %# Shortcuts for blackboard bold face
-\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}}}
+\providecommand{\bb}[1]{\ensuremath{\mathbb{#1}}}
+\providecommand{\bbA}{\ensuremath{\mathbb{A}}}
+\providecommand{\bbB}{\ensuremath{\mathbb{B}}}
+\providecommand{\bbC}{\ensuremath{\mathbb{C}}}
+\providecommand{\bbD}{\ensuremath{\mathbb{D}}}
+\providecommand{\bbE}{\ensuremath{\mathbb{E}}}
+\providecommand{\bbF}{\ensuremath{\mathbb{F}}}
+\providecommand{\bbG}{\ensuremath{\mathbb{G}}}
+\providecommand{\bbH}{\ensuremath{\mathbb{H}}}
+\providecommand{\bbI}{\ensuremath{\mathbb{I}}}
+\providecommand{\bbJ}{\ensuremath{\mathbb{J}}}
+\providecommand{\bbK}{\ensuremath{\mathbb{K}}}
+\providecommand{\bbL}{\ensuremath{\mathbb{L}}}
+\providecommand{\bbM}{\ensuremath{\mathbb{M}}}
+\providecommand{\bbN}{\ensuremath{\mathbb{N}}}
+\providecommand{\bbO}{\ensuremath{\mathbb{O}}}
+\providecommand{\bbP}{\ensuremath{\mathbb{P}}}
+\providecommand{\bbQ}{\ensuremath{\mathbb{Q}}}
+\providecommand{\bbR}{\ensuremath{\mathbb{R}}}
+\providecommand{\bbS}{\ensuremath{\mathbb{S}}}
+\providecommand{\bbT}{\ensuremath{\mathbb{T}}}
+\providecommand{\bbU}{\ensuremath{\mathbb{U}}}
+\providecommand{\bbV}{\ensuremath{\mathbb{V}}}
+\providecommand{\bbW}{\ensuremath{\mathbb{W}}}
+\providecommand{\bbX}{\ensuremath{\mathbb{X}}}
+\providecommand{\bbY}{\ensuremath{\mathbb{Y}}}
+\providecommand{\bbZ}{\ensuremath{\mathbb{Z}}}
 
 %# mathcal 的捷径
 %# Shortcuts for calligraphic shape
-\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}}}
+\providecommand{\mc}[1]{\ensuremath{\mathcal{#1}}}
+\providecommand{\mcA}{\ensuremath{\mathcal{A}}}
+\providecommand{\mcB}{\ensuremath{\mathcal{B}}}
+\providecommand{\mcC}{\ensuremath{\mathcal{C}}}
+\providecommand{\mcD}{\ensuremath{\mathcal{D}}}
+\providecommand{\mcE}{\ensuremath{\mathcal{E}}}
+\providecommand{\mcF}{\ensuremath{\mathcal{F}}}
+\providecommand{\mcG}{\ensuremath{\mathcal{G}}}
+\providecommand{\mcH}{\ensuremath{\mathcal{H}}}
+\providecommand{\mcI}{\ensuremath{\mathcal{I}}}
+\providecommand{\mcJ}{\ensuremath{\mathcal{J}}}
+\providecommand{\mcK}{\ensuremath{\mathcal{K}}}
+\providecommand{\mcL}{\ensuremath{\mathcal{L}}}
+\providecommand{\mcM}{\ensuremath{\mathcal{M}}}
+\providecommand{\mcN}{\ensuremath{\mathcal{N}}}
+\providecommand{\mcO}{\ensuremath{\mathcal{O}}}
+\providecommand{\mcP}{\ensuremath{\mathcal{P}}}
+\providecommand{\mcQ}{\ensuremath{\mathcal{Q}}}
+\providecommand{\mcR}{\ensuremath{\mathcal{R}}}
+\providecommand{\mcS}{\ensuremath{\mathcal{S}}}
+\providecommand{\mcT}{\ensuremath{\mathcal{T}}}
+\providecommand{\mcU}{\ensuremath{\mathcal{U}}}
+\providecommand{\mcV}{\ensuremath{\mathcal{V}}}
+\providecommand{\mcW}{\ensuremath{\mathcal{W}}}
+\providecommand{\mcX}{\ensuremath{\mathcal{X}}}
+\providecommand{\mcY}{\ensuremath{\mathcal{Y}}}
+\providecommand{\mcZ}{\ensuremath{\mathcal{Z}}}
+
+\providecommand{\cal}[1]{\ensuremath{\mathcal{#1}}}
+\providecommand{\calA}{\ensuremath{\mathcal{A}}}
+\providecommand{\calB}{\ensuremath{\mathcal{B}}}
+\providecommand{\calC}{\ensuremath{\mathcal{C}}}
+\providecommand{\calD}{\ensuremath{\mathcal{D}}}
+\providecommand{\calE}{\ensuremath{\mathcal{E}}}
+\providecommand{\calF}{\ensuremath{\mathcal{F}}}
+\providecommand{\calG}{\ensuremath{\mathcal{G}}}
+\providecommand{\calH}{\ensuremath{\mathcal{H}}}
+\providecommand{\calI}{\ensuremath{\mathcal{I}}}
+\providecommand{\calJ}{\ensuremath{\mathcal{J}}}
+\providecommand{\calK}{\ensuremath{\mathcal{K}}}
+\providecommand{\calL}{\ensuremath{\mathcal{L}}}
+\providecommand{\calM}{\ensuremath{\mathcal{M}}}
+\providecommand{\calN}{\ensuremath{\mathcal{N}}}
+\providecommand{\calO}{\ensuremath{\mathcal{O}}}
+\providecommand{\calP}{\ensuremath{\mathcal{P}}}
+\providecommand{\calQ}{\ensuremath{\mathcal{Q}}}
+\providecommand{\calR}{\ensuremath{\mathcal{R}}}
+\providecommand{\calS}{\ensuremath{\mathcal{S}}}
+\providecommand{\calT}{\ensuremath{\mathcal{T}}}
+\providecommand{\calU}{\ensuremath{\mathcal{U}}}
+\providecommand{\calV}{\ensuremath{\mathcal{V}}}
+\providecommand{\calW}{\ensuremath{\mathcal{W}}}
+\providecommand{\calX}{\ensuremath{\mathcal{X}}}
+\providecommand{\calY}{\ensuremath{\mathcal{Y}}}
+\providecommand{\calZ}{\ensuremath{\mathcal{Z}}}
 
 %# mathfrak 的捷径
 %# Shortcuts for Fraktur shape
-\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}}}
+\providecommand{\mf}[1]{\ensuremath{\mathfrak{#1}}}
+\providecommand{\mfa}{\ensuremath{\mathfrak{a}}}
+\providecommand{\mfb}{\ensuremath{\mathfrak{b}}}
+\providecommand{\mfc}{\ensuremath{\mathfrak{c}}}
+\providecommand{\mfd}{\ensuremath{\mathfrak{d}}}
+\providecommand{\mfe}{\ensuremath{\mathfrak{e}}}
+\providecommand{\mff}{\ensuremath{\mathfrak{f}}}
+\providecommand{\mfg}{\ensuremath{\mathfrak{g}}}
+\providecommand{\mfh}{\ensuremath{\mathfrak{h}}}
+\providecommand{\mfi}{\ensuremath{\mathfrak{i}}}
+\providecommand{\mfj}{\ensuremath{\mathfrak{j}}}
+\providecommand{\mfk}{\ensuremath{\mathfrak{k}}}
+\providecommand{\mfl}{\ensuremath{\mathfrak{l}}}
+\providecommand{\mfm}{\ensuremath{\mathfrak{m}}}
+\providecommand{\mfn}{\ensuremath{\mathfrak{n}}}
+\providecommand{\mfo}{\ensuremath{\mathfrak{o}}}
+\providecommand{\mfp}{\ensuremath{\mathfrak{p}}}
+\providecommand{\mfq}{\ensuremath{\mathfrak{q}}}
+\providecommand{\mfr}{\ensuremath{\mathfrak{r}}}
+\providecommand{\mfs}{\ensuremath{\mathfrak{s}}}
+\providecommand{\mft}{\ensuremath{\mathfrak{t}}}
+\providecommand{\mfu}{\ensuremath{\mathfrak{u}}}
+\providecommand{\mfv}{\ensuremath{\mathfrak{v}}}
+\providecommand{\mfw}{\ensuremath{\mathfrak{w}}}
+\providecommand{\mfx}{\ensuremath{\mathfrak{x}}}
+\providecommand{\mfy}{\ensuremath{\mathfrak{y}}}
+\providecommand{\mfz}{\ensuremath{\mathfrak{z}}}
+\providecommand{\mfA}{\ensuremath{\mathfrak{A}}}
+\providecommand{\mfB}{\ensuremath{\mathfrak{B}}}
+\providecommand{\mfC}{\ensuremath{\mathfrak{C}}}
+\providecommand{\mfD}{\ensuremath{\mathfrak{D}}}
+\providecommand{\mfE}{\ensuremath{\mathfrak{E}}}
+\providecommand{\mfF}{\ensuremath{\mathfrak{F}}}
+\providecommand{\mfG}{\ensuremath{\mathfrak{G}}}
+\providecommand{\mfH}{\ensuremath{\mathfrak{H}}}
+\providecommand{\mfI}{\ensuremath{\mathfrak{I}}}
+\providecommand{\mfJ}{\ensuremath{\mathfrak{J}}}
+\providecommand{\mfK}{\ensuremath{\mathfrak{K}}}
+\providecommand{\mfL}{\ensuremath{\mathfrak{L}}}
+\providecommand{\mfM}{\ensuremath{\mathfrak{M}}}
+\providecommand{\mfN}{\ensuremath{\mathfrak{N}}}
+\providecommand{\mfO}{\ensuremath{\mathfrak{O}}}
+\providecommand{\mfP}{\ensuremath{\mathfrak{P}}}
+\providecommand{\mfQ}{\ensuremath{\mathfrak{Q}}}
+\providecommand{\mfR}{\ensuremath{\mathfrak{R}}}
+\providecommand{\mfS}{\ensuremath{\mathfrak{S}}}
+\providecommand{\mfT}{\ensuremath{\mathfrak{T}}}
+\providecommand{\mfU}{\ensuremath{\mathfrak{U}}}
+\providecommand{\mfV}{\ensuremath{\mathfrak{V}}}
+\providecommand{\mfW}{\ensuremath{\mathfrak{W}}}
+\providecommand{\mfX}{\ensuremath{\mathfrak{X}}}
+\providecommand{\mfY}{\ensuremath{\mathfrak{Y}}}
+\providecommand{\mfZ}{\ensuremath{\mathfrak{Z}}}
+
+\providecommand{\frak}[1]{\ensuremath{\mathfrak{#1}}}
+\providecommand{\fraka}{\ensuremath{\mathfrak{a}}}
+\providecommand{\frakb}{\ensuremath{\mathfrak{b}}}
+\providecommand{\frakc}{\ensuremath{\mathfrak{c}}}
+\providecommand{\frakd}{\ensuremath{\mathfrak{d}}}
+\providecommand{\frake}{\ensuremath{\mathfrak{e}}}
+\providecommand{\frakf}{\ensuremath{\mathfrak{f}}}
+\providecommand{\frakg}{\ensuremath{\mathfrak{g}}}
+\providecommand{\frakh}{\ensuremath{\mathfrak{h}}}
+\providecommand{\fraki}{\ensuremath{\mathfrak{i}}}
+\providecommand{\frakj}{\ensuremath{\mathfrak{j}}}
+\providecommand{\frakk}{\ensuremath{\mathfrak{k}}}
+\providecommand{\frakl}{\ensuremath{\mathfrak{l}}}
+\providecommand{\frakm}{\ensuremath{\mathfrak{m}}}
+\providecommand{\frakn}{\ensuremath{\mathfrak{n}}}
+\providecommand{\frako}{\ensuremath{\mathfrak{o}}}
+\providecommand{\frakp}{\ensuremath{\mathfrak{p}}}
+\providecommand{\frakq}{\ensuremath{\mathfrak{q}}}
+\providecommand{\frakr}{\ensuremath{\mathfrak{r}}}
+\providecommand{\fraks}{\ensuremath{\mathfrak{s}}}
+\providecommand{\frakt}{\ensuremath{\mathfrak{t}}}
+\providecommand{\fraku}{\ensuremath{\mathfrak{u}}}
+\providecommand{\frakv}{\ensuremath{\mathfrak{v}}}
+\providecommand{\frakw}{\ensuremath{\mathfrak{w}}}
+\providecommand{\frakx}{\ensuremath{\mathfrak{x}}}
+\providecommand{\fraky}{\ensuremath{\mathfrak{y}}}
+\providecommand{\frakz}{\ensuremath{\mathfrak{z}}}
+\providecommand{\frakA}{\ensuremath{\mathfrak{A}}}
+\providecommand{\frakB}{\ensuremath{\mathfrak{B}}}
+\providecommand{\frakC}{\ensuremath{\mathfrak{C}}}
+\providecommand{\frakD}{\ensuremath{\mathfrak{D}}}
+\providecommand{\frakE}{\ensuremath{\mathfrak{E}}}
+\providecommand{\frakF}{\ensuremath{\mathfrak{F}}}
+\providecommand{\frakG}{\ensuremath{\mathfrak{G}}}
+\providecommand{\frakH}{\ensuremath{\mathfrak{H}}}
+\providecommand{\frakI}{\ensuremath{\mathfrak{I}}}
+\providecommand{\frakJ}{\ensuremath{\mathfrak{J}}}
+\providecommand{\frakK}{\ensuremath{\mathfrak{K}}}
+\providecommand{\frakL}{\ensuremath{\mathfrak{L}}}
+\providecommand{\frakM}{\ensuremath{\mathfrak{M}}}
+\providecommand{\frakN}{\ensuremath{\mathfrak{N}}}
+\providecommand{\frakO}{\ensuremath{\mathfrak{O}}}
+\providecommand{\frakP}{\ensuremath{\mathfrak{P}}}
+\providecommand{\frakQ}{\ensuremath{\mathfrak{Q}}}
+\providecommand{\frakR}{\ensuremath{\mathfrak{R}}}
+\providecommand{\frakS}{\ensuremath{\mathfrak{S}}}
+\providecommand{\frakT}{\ensuremath{\mathfrak{T}}}
+\providecommand{\frakU}{\ensuremath{\mathfrak{U}}}
+\providecommand{\frakV}{\ensuremath{\mathfrak{V}}}
+\providecommand{\frakW}{\ensuremath{\mathfrak{W}}}
+\providecommand{\frakX}{\ensuremath{\mathfrak{X}}}
+\providecommand{\frakY}{\ensuremath{\mathfrak{Y}}}
+\providecommand{\frakZ}{\ensuremath{\mathfrak{Z}}}
 
 %# mathscr 的捷径
 %# Shortcuts for script shape
-\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}}}
+\providecommand{\ms}[1]{\ensuremath{\mathscr{#1}}}
+\providecommand{\msA}{\ensuremath{\mathscr{A}}}
+\providecommand{\msB}{\ensuremath{\mathscr{B}}}
+\providecommand{\msC}{\ensuremath{\mathscr{C}}}
+\providecommand{\msD}{\ensuremath{\mathscr{D}}}
+\providecommand{\msE}{\ensuremath{\mathscr{E}}}
+\providecommand{\msF}{\ensuremath{\mathscr{F}}}
+\providecommand{\msG}{\ensuremath{\mathscr{G}}}
+\providecommand{\msH}{\ensuremath{\mathscr{H}}}
+\providecommand{\msI}{\ensuremath{\mathscr{I}}}
+\providecommand{\msJ}{\ensuremath{\mathscr{J}}}
+\providecommand{\msK}{\ensuremath{\mathscr{K}}}
+\providecommand{\msL}{\ensuremath{\mathscr{L}}}
+\providecommand{\msM}{\ensuremath{\mathscr{M}}}
+\providecommand{\msN}{\ensuremath{\mathscr{N}}}
+\providecommand{\msO}{\ensuremath{\mathscr{O}}}
+\providecommand{\msP}{\ensuremath{\mathscr{P}}}
+\providecommand{\msQ}{\ensuremath{\mathscr{Q}}}
+\providecommand{\msR}{\ensuremath{\mathscr{R}}}
+\providecommand{\msS}{\ensuremath{\mathscr{S}}}
+\providecommand{\msT}{\ensuremath{\mathscr{T}}}
+\providecommand{\msU}{\ensuremath{\mathscr{U}}}
+\providecommand{\msV}{\ensuremath{\mathscr{V}}}
+\providecommand{\msW}{\ensuremath{\mathscr{W}}}
+\providecommand{\msX}{\ensuremath{\mathscr{X}}}
+\providecommand{\msY}{\ensuremath{\mathscr{Y}}}
+\providecommand{\msZ}{\ensuremath{\mathscr{Z}}}
+
+\providecommand{\scr}[1]{\ensuremath{\mathscr{#1}}}
+\providecommand{\scrA}{\ensuremath{\mathscr{A}}}
+\providecommand{\scrB}{\ensuremath{\mathscr{B}}}
+\providecommand{\scrC}{\ensuremath{\mathscr{C}}}
+\providecommand{\scrD}{\ensuremath{\mathscr{D}}}
+\providecommand{\scrE}{\ensuremath{\mathscr{E}}}
+\providecommand{\scrF}{\ensuremath{\mathscr{F}}}
+\providecommand{\scrG}{\ensuremath{\mathscr{G}}}
+\providecommand{\scrH}{\ensuremath{\mathscr{H}}}
+\providecommand{\scrI}{\ensuremath{\mathscr{I}}}
+\providecommand{\scrJ}{\ensuremath{\mathscr{J}}}
+\providecommand{\scrK}{\ensuremath{\mathscr{K}}}
+\providecommand{\scrL}{\ensuremath{\mathscr{L}}}
+\providecommand{\scrM}{\ensuremath{\mathscr{M}}}
+\providecommand{\scrN}{\ensuremath{\mathscr{N}}}
+\providecommand{\scrO}{\ensuremath{\mathscr{O}}}
+\providecommand{\scrP}{\ensuremath{\mathscr{P}}}
+\providecommand{\scrQ}{\ensuremath{\mathscr{Q}}}
+\providecommand{\scrR}{\ensuremath{\mathscr{R}}}
+\providecommand{\scrS}{\ensuremath{\mathscr{S}}}
+\providecommand{\scrT}{\ensuremath{\mathscr{T}}}
+\providecommand{\scrU}{\ensuremath{\mathscr{U}}}
+\providecommand{\scrV}{\ensuremath{\mathscr{V}}}
+\providecommand{\scrW}{\ensuremath{\mathscr{W}}}
+\providecommand{\scrX}{\ensuremath{\mathscr{X}}}
+\providecommand{\scrY}{\ensuremath{\mathscr{Y}}}
+\providecommand{\scrZ}{\ensuremath{\mathscr{Z}}}
 
 %%================================
 %% General symbols
@@ -1393,18 +1393,25 @@
 %# 不编号定理类环境
 %# Do not number theorem-like environments
 \DeclareBoolOption[false]{nothmnum}
+%# 指定如何编号定理类环境
+%# Number theorem-like environments With ...
+\DeclareStringOption{thmnum}[PJL@thmnum@default]
 %# 草稿模式或快速模式
 %# Draft mode or fast mode
 \DeclareBoolOption[false]{draft}
 \DeclareBoolOption[false]{fast}
 %# 引用的名称将随当前语言的不同而改变
 %# Reference name will change with the current language
-\DeclareBoolOption[false]{regionalref}
+\DeclareBoolOption[true]{regionalref}
+\DeclareBoolOption[false]{originalref}
 %# 处理选项
 %# Process options
 \ProcessKeyvalOptions*\relax
 %# 下面的代码设定了选项之间的关系
 %# The following code sets the relationship between options
+\if@PJLthm@originalref
+    \@PJLthm@regionalreffalse
+\fi
 \if@PJLthm@draft
     \@PJLthm@fasttrue
 \fi
@@ -1952,8 +1959,22 @@
 }{
     \newaliascnt{PJLthm@highest}{section}
 }
+%# 按照 thmnum 决定定理类环境如何编号
+%# Number the theorem-like environment with respect to thmnum
+\NewDocumentCommand{\CreateTheorem@thmnum}{m}{
+    \expandafter\ifstrempty\expandafter{\@PJLthm@thmnum}{
+        \CreateTheorem{#1}<PJLthm@highest>
+    }{
+        \expandafter\ifstrequal\expandafter{\@PJLthm@thmnum}{PJL@thmnum@default}{
+            \CreateTheorem{#1}
+        }{
+            \CreateTheorem{#1}<\@PJLthm@thmnum>
+        }
+    }
+}
 %# 建立定理类环境
 %# Setup theorem-like environments
+\AtEndPreamble{
 \if@PJLthm@nothms\else
 \if@PJLthm@nothmnum
 \CreateTheorem*{theorem}
@@ -1966,7 +1987,7 @@
 \CreateTheorem*{fact}
 \CreateTheorem*{conjecture}
 \else
-\CreateTheorem{theorem}<PJLthm@highest>
+\CreateTheorem@thmnum{theorem}
 \CreateTheorem{lemma}[theorem]
 \CreateTheorem{proposition}[theorem]
 \CreateTheorem{corollary}[theorem]
@@ -2026,14 +2047,27 @@
 \CreateTheorem*{remark}
 \CreateTheorem*{observation}
 \else
-\CreateTheorem{remark}<PJLthm@highest>
-\CreateTheorem{observation}<PJLthm@highest>
+\CreateTheorem@thmnum{remark}
+\CreateTheorem@thmnum{observation}
 \fi
 \CreateTheorem*{remark*}
 \CreateTheorem*{observation*}
 \fi
+}
 
-\numberwithin{equation}{PJLthm@highest}
+%# 按照 thmnum 决定公式如何编号
+%# Number the equations with respect to thmnum
+\expandafter\ifstrempty\expandafter{\@PJLthm@thmnum}{
+% thmnum is not used.
+    \numberwithin{equation}{PJLthm@highest}
+}{
+    \expandafter\ifstrequal\expandafter{\@PJLthm@thmnum}{PJL@thmnum@default}{
+% thmnum is used, with no value.
+    }{
+% thmnum is used, with value \@PJLthm@thmnum.
+        \numberwithin{equation}{\@PJLthm@thmnum}
+    }
+}
 
 %# 一些 cref 的本地化
 %# Some localization of cref
@@ -2137,11 +2171,14 @@
 \DeclareBoolOption[false]{amsfashion}
 \DeclareBoolOption[false]{nothms}
 \DeclareBoolOption[false]{nothmnum}
-\DeclareBoolOption[false]{regionalref}
+\DeclareStringOption{thmnum}[PJL@thmnum@default]
+\DeclareBoolOption[true]{regionalref}
+\DeclareBoolOption[false]{originalref}
 \DeclareBoolOption[false]{useosf}
 \DeclareBoolOption[false]{palatino}
 \DeclareBoolOption[false]{times}
 \DeclareBoolOption[false]{garamond}
+\DeclareBoolOption[false]{noto}
 \DeclareBoolOption[false]{biolinum}
 %# 处理选项
 %# Process options
@@ -2149,6 +2186,9 @@
 
 %# 下面的代码设定了选项之间的关系
 %# The following code sets the relationship between options
+\if@ProjLib@originalref
+    \@ProjLib@regionalreffalse
+\fi
 \if@ProjLib@draft
     \@ProjLib@fasttrue
 \fi
@@ -2167,8 +2207,15 @@
 \if@ProjLib@nothmnum
     \PassOptionsToPackage{nothmnum}{PJLthm}
 \fi
-\if@ProjLib@regionalref
-    \PassOptionsToPackage{regionalref}{PJLthm}
+\expandafter\ifstrempty\expandafter{\@ProjLib@thmnum}{}{
+    \expandafter\ifstrequal\expandafter{\@ProjLib@thmnum}{PJL@thmnum@default}{
+        \PassOptionsToPackage{thmnum}{PJLthm}
+    }{
+        \PassOptionsToPackage{thmnum=\@ProjLib@thmnum}{PJLthm}
+    }
+}
+\if@ProjLib@regionalref\else
+    \PassOptionsToPackage{originalref}{PJLthm}
 \fi
 
 %# 加载不默认载入的组件
@@ -2228,6 +2275,15 @@
     \PJLsetlinespacing{\setstretch{1.00}}
 \fi
 
+\if@ProjLib@noto
+    \if@ProjLib@useosf
+        \PassOptionsToPackage{oldstyle}{notomath}
+    \fi
+    \RequirePackage{anyfontsize}
+    \RequirePackage{notomath}
+    \PJLsetlinespacing{\setstretch{1.00}}
+\fi
+
 \if@ProjLib@biolinum
     % \RequirePackage{amssymb}
     % \RequirePackage{mathpazo}
-- 
cgit v1.2.3

