summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-04-05 03:01:24 +0000
committerNorbert Preining <norbert@preining.info>2022-04-05 03:01:24 +0000
commita4e931576165d0a4a143915f4725399272e06fee (patch)
treeef5b6d71c2223b9f58e61fbb25423d4042430198 /macros
parent7548e4d37c2aaefd32fe0a9bcd83f8e71326dde1 (diff)
CTAN sync 202204050301
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/colorist/colorart.cls3
-rw-r--r--macros/latex/contrib/colorist/colorbook.cls3
-rw-r--r--macros/latex/contrib/colorist/colorist-doc.pdfbin101019 -> 101825 bytes
-rw-r--r--macros/latex/contrib/colorist/colorist-doc.tex16
-rw-r--r--macros/latex/contrib/colorist/colorist-fancy.sty113
-rw-r--r--macros/latex/contrib/colorist/colorist.sty2
-rw-r--r--macros/latex/contrib/commonunicode/LICENSE21
-rw-r--r--macros/latex/contrib/commonunicode/README.md10
-rw-r--r--macros/latex/contrib/commonunicode/doc/commonunicode.pdfbin0 -> 576959 bytes
-rw-r--r--macros/latex/contrib/commonunicode/doc/commonunicode.tex30
-rw-r--r--macros/latex/contrib/commonunicode/latex/commonunicode.sty1016
-rw-r--r--macros/latex/contrib/minimalist/minimalist-classical.sty126
-rw-r--r--macros/latex/contrib/minimalist/minimalist-doc.pdfbin103651 -> 103703 bytes
-rw-r--r--macros/latex/contrib/minimalist/minimalist-doc.tex14
-rw-r--r--macros/latex/contrib/minimalist/minimalist-plain.sty142
-rw-r--r--macros/latex/contrib/minimalist/minimalist.sty20
-rw-r--r--macros/latex/contrib/minimalist/minimart.cls6
-rw-r--r--macros/latex/contrib/minimalist/minimbook.cls6
-rw-r--r--macros/latex/contrib/projlib/ProjLib.dtx200
-rw-r--r--macros/latex/contrib/projlib/README.md21
-rw-r--r--macros/latex/contrib/scontents/README.md47
-rw-r--r--macros/latex/contrib/scontents/scontents.dtx731
-rw-r--r--macros/latex/contrib/scontents/scontents.ins10
-rw-r--r--macros/latex/contrib/scontents/scontents.pdfbin373717 -> 385642 bytes
-rw-r--r--macros/latex/contrib/siunitx/CHANGELOG.md11
-rw-r--r--macros/latex/contrib/siunitx/siunitx-code.pdfbin608847 -> 608331 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx-number.dtx48
-rw-r--r--macros/latex/contrib/siunitx/siunitx.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx.pdfbin640391 -> 640392 bytes
-rw-r--r--macros/luatex/generic/luakeys/luakeys-debug.sty2
-rw-r--r--macros/luatex/generic/luakeys/luakeys-doc.pdfbin159798 -> 169502 bytes
-rw-r--r--macros/luatex/generic/luakeys/luakeys-doc.tex52
-rw-r--r--macros/luatex/generic/luakeys/luakeys.lua483
-rw-r--r--macros/luatex/generic/luakeys/luakeys.sty2
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.pdfbin317958 -> 320663 bytes
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.tex16
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre-doc-en.pdfbin208707 -> 208770 bytes
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre-doc-en.tex16
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre-doc-fr.pdfbin213506 -> 213759 bytes
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre-doc-fr.tex16
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre.cls3
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-cn.pdfbin246732 -> 248999 bytes
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-cn.tex14
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-en.pdfbin154292 -> 154480 bytes
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-en.tex14
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-fr.pdfbin160763 -> 160964 bytes
-rw-r--r--macros/unicodetex/latex/einfart/einfart-doc-fr.tex14
-rw-r--r--macros/unicodetex/latex/einfart/einfart.cls6
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart-doc-cn.pdfbin264079 -> 266431 bytes
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart-doc-cn.tex16
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart-doc-en.pdfbin146177 -> 146477 bytes
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart-doc-en.tex16
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart-doc-fr.pdfbin150569 -> 150602 bytes
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart-doc-fr.tex16
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart.cls3
-rw-r--r--macros/unicodetex/latex/nwafuthesis/README.md12
-rwxr-xr-x[-rw-r--r--]macros/unicodetex/latex/nwafuthesis/build-win.bat0
-rw-r--r--macros/unicodetex/latex/nwafuthesis/logo/workflow.pdfbin0 -> 33865 bytes
-rw-r--r--macros/unicodetex/latex/nwafuthesis/nwafuthesis-doc.dtx2
-rw-r--r--macros/unicodetex/latex/nwafuthesis/nwafuthesis.dtx222
-rw-r--r--macros/unicodetex/latex/nwafuthesis/nwafuthesis.pdfbin2276200 -> 2323852 bytes
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdfbin333063 -> 336010 bytes
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex14
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-en.pdfbin230296 -> 230392 bytes
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-en.tex14
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-fr.pdfbin231898 -> 231959 bytes
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre-doc-fr.tex14
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre.cls6
68 files changed, 2622 insertions, 949 deletions
diff --git a/macros/latex/contrib/colorist/colorart.cls b/macros/latex/contrib/colorist/colorart.cls
index fd6bc08f62..98e55b01ae 100644
--- a/macros/latex/contrib/colorist/colorart.cls
+++ b/macros/latex/contrib/colorist/colorart.cls
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplClass
{colorart}
- {2022/03/28} {}
+ {2022/04/03} {}
{A colorful article style}
\tl_const:Nn \l__colorclass_base_class_tl { article }
@@ -119,6 +119,7 @@
\RequirePackage { colorist }
+\raggedbottom
\hfuzz=2pt
\vfuzz=2pt
diff --git a/macros/latex/contrib/colorist/colorbook.cls b/macros/latex/contrib/colorist/colorbook.cls
index 07389ebc5c..9e43b291af 100644
--- a/macros/latex/contrib/colorist/colorbook.cls
+++ b/macros/latex/contrib/colorist/colorbook.cls
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplClass
{colorbook}
- {2022/03/28} {}
+ {2022/04/03} {}
{A colorful book style}
\tl_const:Nn \l__colorclass_base_class_tl { book }
@@ -119,6 +119,7 @@
\RequirePackage { colorist }
+\raggedbottom
\hfuzz=2pt
\vfuzz=2pt
diff --git a/macros/latex/contrib/colorist/colorist-doc.pdf b/macros/latex/contrib/colorist/colorist-doc.pdf
index e187bcbc51..9e0720ff4c 100644
--- a/macros/latex/contrib/colorist/colorist-doc.pdf
+++ b/macros/latex/contrib/colorist/colorist-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/colorist/colorist-doc.tex b/macros/latex/contrib/colorist/colorist-doc.tex
index 064648846c..5a1e6d3955 100644
--- a/macros/latex/contrib/colorist/colorist-doc.tex
+++ b/macros/latex/contrib/colorist/colorist-doc.tex
@@ -37,7 +37,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -91,7 +91,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\title{{\normalfont\bfseries\color{main-text}\colorist{}}\\write your articles or books in a colorful way}
\author{Jinwen XU}
@@ -104,7 +104,7 @@
\begin{abstract}
\colorist{} is a series of styles and classes for you to typeset your articles or books in a colorful manner. The original intention in designing this series was to write drafts and notes that look colorful yet not dazzling. With the help of the \ProjLib{} toolkit, also developed by the author, the classes provided here have multi-language support, preset theorem-like environments with clever reference support, and many other functionalities. Notably, using these classes, one can organize the author information in the \AmS{} fashion, makes it easy to switch to journal classes later for publication.
- Finally, this documentation is typeset using the \colorart{} class (with the option \texttt{allowbf}). You can think of it as a short introduction and demonstration.
+ Finally, this documentation is typeset using the \colorart{} class (with the option \texttt{use boldface}). You can think of it as a short introduction and demonstration.
\end{abstract}
@@ -175,7 +175,7 @@ Let's first look at a complete example of \colorart{} (the same works for \lebha
\maketitle
\begin{abstract}
- Ceci est un résumé. \dnf<(*\meta{some hint}*)>
+ Ceci est un résumé. \DNF<(*\meta{some hint}*)>
\end{abstract}
\begin{keyword}
AAA, BBB, CCC, DDD, EEE
@@ -267,7 +267,7 @@ In addition, you may also write in the \AmS{} fashion, i.e.:
\LevelThreeTitle{Draft marks}
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
When you have some places that have not yet been finished yet, you can mark them with this command, which is especially useful during the draft stage.
@@ -380,7 +380,7 @@ In the next section, we will go through the options available.
\begin{tip}
During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. When in \verb|fast| mode, there will be a watermark ``DRAFT'' to indicate that you are currently in the draft mode.
\end{tip}
- \item \texttt{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item Allow boldface. When this option is enabled, the main title, the titles of all levels and the names of theorem-like environments will be bolded.
\end{itemize}
@@ -530,9 +530,9 @@ For aesthetics, adjacent definitions will be connected together automatically:
\LevelTwoTitle{Draft mark}
-You can use \lstinline|\dnf| to mark the unfinished part. For example:
+You can use \lstinline|\DNF| to mark the unfinished part. For example:
\begin{itemize}
- \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
+ \item \lstinline|\DNF| or \lstinline|\DNF<...>|. The effect is: \DNF~ or \DNF<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\DNF} in French mode.
\end{itemize}
\LevelTwoTitle{Title, abstract and keywords}
diff --git a/macros/latex/contrib/colorist/colorist-fancy.sty b/macros/latex/contrib/colorist/colorist-fancy.sty
index cb625ce8ac..5f69f0857a 100644
--- a/macros/latex/contrib/colorist/colorist-fancy.sty
+++ b/macros/latex/contrib/colorist/colorist-fancy.sty
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{colorist-fancy}
- {2022/03/28} {}
+ {2022/04/03} {}
{The fancy style of colorist}
\@ifpackageloaded { colorist } {}
@@ -403,10 +403,10 @@
{
\titlecontents{chapter}
[2em] % i.e., 0em (part) + 2em
- {\addvspace{1pc}\normalfont\color{maintheme}\sffamily \colorist_bfseries: }
- {\contentslabel{2em}}
- {\scshape\hspace*{-2em}}
- {\titlerule*[10pt]{\parbox{3pt}{\hspace*{-.25pt}\textcolor{main-text!15!paper}{.}}}\color{maintheme}\contentspage}
+ {\addvspace{1pc} \color{maintheme} \normalfont \sffamily \colorist_bfseries: \scshape }
+ {\contentslabel[ \raisebox{-.03\baselineskip}{ \large \normalfont \sffamily \colorist_bfseries: \thecontentslabel } ]{2em}}
+ {\hspace*{-2em}}
+ {\titlerule*[10pt]{\parbox{3pt}{\hspace*{-.25pt}\textcolor{main-text!15!paper}{.}}}\color{maintheme}\normalfont\sffamily\contentspage}
\titlecontents{section}
[4em] % i.e., 2em (chapter) + 2em
{\addvspace{.3pc}\normalfont\color{maintheme}\sffamily}
@@ -429,10 +429,10 @@
{
\titlecontents{section}
[2em] % i.e., 0em (part) + 2em
- {\addvspace{.3pc}\normalfont\color{maintheme}\sffamily}
- {\contentslabel{1.75em}}
+ {\addvspace{.3pc} \color{maintheme} \normalfont \sffamily \scshape }
+ {\contentslabel[ { \normalfont \sffamily \thecontentslabel } ]{1.75em}}
{\hspace*{-1.75em}}
- {\titlerule*[10pt]{\parbox{3pt}{\textcolor{main-text!15!paper}{.}}}\color{maintheme}\contentspage}
+ {\titlerule*[10pt]{\parbox{3pt}{\textcolor{main-text!15!paper}{.}}}\color{maintheme}\normalfont\sffamily\contentspage}
\titlecontents{subsection}
[4.5em] % i.e., 2em (section) + 2.5em
{\addvspace{.15pc}\normalfont\sffamily}
@@ -479,8 +479,8 @@
, PT = Esta~página~foi~intencionalmente~deixada~em~branco
, BR = Esta~página~foi~intencionalmente~deixada~em~branco
, ES = Esta~página~se~ha~dejado~intencionadamente~en~blanco
- , CN = 此页为有意留为空白
- , TC = 此頁為有意留為空白
+ , CN = \ziju{0.2} 此页为有意留为空白
+ , TC = \ziju{0.2} 此頁為有意留為空白
, JP = このページは意図的に空白にしてあります
, RU = Эта~страница~намеренно~оставлена~пустой
}
@@ -492,12 +492,76 @@
\hook_gput_next_code:nn { shipout/background }
{
\put(0.5\paperwidth,-0.5\paperheight){
- \makebox[0pt]{\large\color{main-text!10!paper}\bl@nkpagetext}}
+ \makebox[0pt]{\large\color{main-text!10!paper}\g_colorist_title_font_common_tl\bl@nkpagetext}}
}
\null\newpage\fi\fi
}
%%================================
+%% Index
+%%================================
+\RequirePackage { imakeidx }
+\makeindex[intoc]
+
+\RequirePackage { silence }
+\ExplSyntaxOff
+\WarningFilter{latex}{Writing or overwriting file}
+\begin{filecontents*}[overwrite]{\jobname.mst}
+delim_0 "\\IndexDotfill " % Filler between section heading and page number
+delim_1 "\\IndexDotfill " % Filler between subsection heading and page number
+headings_flag 1
+heading_prefix "\\IndexHeading{"
+heading_suffix "}\n"
+\end{filecontents*}
+\ExplSyntaxOn
+
+\projlib_langauge_define_multilingual_text:Nn \index_symbols_name
+ {
+ , EN = Symbols
+ , FR = Symboles
+ , DE = Symbole
+ , IT = Simboli
+ , PT = Símbolos
+ , BR = Símbolos
+ , ES = Símbolos
+ , CN = 符号
+ , TC = 符號
+ , JP = 記号
+ , RU = Символы
+ }
+
+\newcommand*{\IndexDotfill}
+ {
+ \nobreakspace\nobreakspace
+ \titlerule*[.67em]{\textcolor{main-text!15!paper}{.}}
+ \nobreakspace\nobreakspace
+ }
+\newcommand*{\IndexHeading}[1]
+ {
+ \str_if_eq:nnTF { #1 } { Symbols }
+ { \tl_set:Nn \l_tmpa_tl { \index_symbols_name } }
+ { \tl_set:Nn \l_tmpa_tl { #1 } }
+ \tikz\node[
+ rounded~corners=5pt,
+ draw=maintheme,
+ fill=maintheme!10,
+ line~width=1pt,
+ inner~sep=5pt,
+ align=center,
+ font=\large\sffamily\colorist_bfseries:,
+ minimum~width=\linewidth-\pgflinewidth,
+ ] { \l_tmpa_tl };
+ \nopagebreak
+ \par
+ \vspace{.3\baselineskip}
+ }
+\renewcommand*{\indexspace}
+ {
+ \par
+ \vspace{2pc~plus~.5pc~minus~.3pc}
+ }
+
+%%================================
%% Draft mark
%%================================
\RequirePackage { projlib-draft }
@@ -505,8 +569,10 @@
%%================================
%% Icons
%%================================
-\RequirePackage{tikz}
-\newcommand{\ideabulb}[2][0.15]
+\RequirePackage { tikz }
+\NewDocumentCommand \colorist_icon_ideabulb:w { O{0.15} m }
+ % #1 = scale
+ % #2 = color
{
\scalebox{#1}{
\begin{tikzpicture}
@@ -523,7 +589,9 @@
\end{tikzpicture}}
}
-\newcommand{\questionmark}[2][0.15]
+\NewDocumentCommand \colorist_icon_questionmark:w { O{0.15} m }
+ % #1 = scale
+ % #2 = color
{
\scalebox{#1}{
\begin{tikzpicture}
@@ -607,12 +675,15 @@
{
\providecommand{\phantomsection}{}
\RequirePackage { url }
- \newcommand{\href}[2]{#2}
+ \providecommand{\href}[2]{#2}
+ \providecommand{\texorpdfstring}[2]{#1}
}
{
- \PassOptionsToPackage { hidelinks,linktoc=all } { hyperref }
- \RequirePackage { bookmark }
\RequirePackage { hyperref }
+ \RequirePackage { bookmark }
+ \hypersetup{ hidelinks, linktoc = all }
+ \bookmarksetup{ numbered }
+ \renewcommand\Hy@numberline[1]{#1.~}
}
@@ -811,7 +882,8 @@
\reversemarginpar
\fi
\mparadjust{-.25em}
- \marginnote{\ideabulb[0.3]{orange}
+ \marginnote{
+ \colorist_icon_ideabulb:w [0.3] {orange}
\bool_if:NTF \l__colorist_is_book_bool
{
\hspace*{-.2em}
@@ -830,7 +902,8 @@
\reversemarginpar
\fi
\mparadjust{-.25em}
- \marginnote{\questionmark[0.3]{purple}
+ \marginnote{
+ \colorist_icon_questionmark:w [0.3] {purple}
\bool_if:NTF \l__colorist_is_book_bool
{
\hspace*{-.2em}
@@ -1027,6 +1100,8 @@
\theoremstyle{simple}
+\hook_gput_code:nnn { env/quote/begin } { colorist } { \small }
+
%%================================
%% Title block style
%%================================
diff --git a/macros/latex/contrib/colorist/colorist.sty b/macros/latex/contrib/colorist/colorist.sty
index ad936a1081..1095910ca9 100644
--- a/macros/latex/contrib/colorist/colorist.sty
+++ b/macros/latex/contrib/colorist/colorist.sty
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{colorist}
- {2022/03/28} {}
+ {2022/04/03} {}
{A colorful style for articles and books}
\keys_define:nn { colorist }
diff --git a/macros/latex/contrib/commonunicode/LICENSE b/macros/latex/contrib/commonunicode/LICENSE
new file mode 100644
index 0000000000..4a910ee5ad
--- /dev/null
+++ b/macros/latex/contrib/commonunicode/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Pablo Pizarro R.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/macros/latex/contrib/commonunicode/README.md b/macros/latex/contrib/commonunicode/README.md
new file mode 100644
index 0000000000..677924922b
--- /dev/null
+++ b/macros/latex/contrib/commonunicode/README.md
@@ -0,0 +1,10 @@
+# common-unicode
+
+A latex package that contains a list of the common Unicode symbols, which lets to use them without the need for complex latex stuff.
+
+This package is distributed under the terms of the MIT License.
+
+Author
+------
+
+[Pablo Pizarro R.](https://ppizarror.com) | 2022
diff --git a/macros/latex/contrib/commonunicode/doc/commonunicode.pdf b/macros/latex/contrib/commonunicode/doc/commonunicode.pdf
new file mode 100644
index 0000000000..f678973899
--- /dev/null
+++ b/macros/latex/contrib/commonunicode/doc/commonunicode.pdf
Binary files differ
diff --git a/macros/latex/contrib/commonunicode/doc/commonunicode.tex b/macros/latex/contrib/commonunicode/doc/commonunicode.tex
new file mode 100644
index 0000000000..270d8aa454
--- /dev/null
+++ b/macros/latex/contrib/commonunicode/doc/commonunicode.tex
@@ -0,0 +1,30 @@
+\documentclass{article}
+\usepackage[T1]{fontenc}
+\usepackage{hyperref}
+\hypersetup{colorlinks}
+\usepackage{commonunicode}
+
+\title{The commonunicode package}
+\author{Pablo Pizarro R. @ \href{https://ppizarror.com/}{ppizarror.com}}
+
+\date{\csname ver@commonunicode.sty\endcsname}
+
+\begin{document}
+
+\maketitle
+\tableofcontents
+
+\section{Introduction}
+
+The common-unicode package allows you to insert unicode characters into any latex document without the need to use complex commands, 𝑠𝑢𝑐𝘩 𝑎𝑠 𝑡𝘩𝑖𝑠 𝑜𝑛𝑒. \\
+
+\noindent To use this package:
+
+\textbackslash\texttt{usepackage\{commonunicode\}} \\
+
+As there is thousands of different characters, you can provide new ones! Simply create a new issue on the \href{https://github.com/ppizarror/common-unicode}{Github common-unicode repo}.
+
+\section{List of added unicodes}
+\input{commonunicode_list}
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/commonunicode/latex/commonunicode.sty b/macros/latex/contrib/commonunicode/latex/commonunicode.sty
new file mode 100644
index 0000000000..90ad545169
--- /dev/null
+++ b/macros/latex/contrib/commonunicode/latex/commonunicode.sty
@@ -0,0 +1,1016 @@
+% Common-unicode package
+%
+% A latex package that contains a list of the common unicode symbols,
+% which lets to use them without the need of complex latex stuff.
+%
+% Author: Pablo Pizarro R. @ppizarror.com
+
+\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+\ProvidesPackage{commonunicode}[2022/04/03 v1.0.0]
+
+% Load packages
+\RequirePackage{amsfonts}
+\RequirePackage{amssymb}
+\RequirePackage{mathrsfs}
+\RequirePackage{mathtools}
+\RequirePackage{stmaryrd}
+\RequirePackage{wasysym}
+
+% Only load once (not needed in LaTeX, but does no harm).
+\csname COMMONUNICODE\string @loaded\endcsname
+\expandafter\let\csname COMMONUNICODE\string @loaded\endcsname\endinput
+
+% Greek letter definition
+\def\COMMONUNICODE@Alpha{A}
+\def\COMMONUNICODE@Beta{B}
+\def\COMMONUNICODE@Chi{X}
+\def\COMMONUNICODE@Epsilon{E}
+\def\COMMONUNICODE@Eta{H}
+\def\COMMONUNICODE@Iota{I}
+\def\COMMONUNICODE@Kappa{K}
+\def\COMMONUNICODE@Mu{M}
+\def\COMMONUNICODE@Nu{N}
+\def\COMMONUNICODE@Omicron{O}
+\def\COMMONUNICODE@omicron{o}
+\def\COMMONUNICODE@Rho{P}
+\def\COMMONUNICODE@Tau{T}
+\def\COMMONUNICODE@Zeta{Z}
+
+\def\COMMONUNICODE@LOCALunknownchar {\ensuremath{\mathrm{UNKNOWN\;CHAR}}}
+
+% Symbol definition
+\newsavebox{\@brxanglelr}
+\newcommand{\COMMONUNICODE@llangle}[1][]{\savebox{\@brxanglelr}{\(\m@th{#1\langle}\)}%
+ \mathopen{\copy\@brxanglelr\kern-0.5\wd\@brxanglelr\usebox{\@brxanglelr}}}
+\newcommand{\COMMONUNICODE@rrangle}[1][]{\savebox{\@brxanglelr}{\(\m@th{#1\rangle}\)}%
+ \mathclose{\copy\@brxanglelr\kern-0.5\wd\@brxanglelr\usebox{\@brxanglelr}}}
+
+% Create commands if not defined
+\ifx\DeclareUnicodeCharacter\undefined%
+\def\DeclareUnicodeCharacter#1#2{%
+ \def\tmp{#2}\uccode`\~="#1 \catcode"#1 \active%
+ \uppercase{\global\let~\tmp}%
+ \uccode`\~=0%
+}
+\fi%
+\newcommand\COMMONUNICODE@mapsfrom{\mathrel{\reflectbox{\ensuremath{\mapsto}}}}%
+
+% Setup unicode characters
+\ifdefined\DeclareUnicodeCharacter
+\DeclareUnicodeCharacter{000B}{~}
+\DeclareUnicodeCharacter{00A0}{~}
+\DeclareUnicodeCharacter{00A1}{\textexclamdown}
+\DeclareUnicodeCharacter{00A2}{\textcent}
+\DeclareUnicodeCharacter{00A3}{\pounds}
+\DeclareUnicodeCharacter{00A4}{\textcurrency}
+\DeclareUnicodeCharacter{00A5}{\textyen}
+\DeclareUnicodeCharacter{00A6}{\textbrokenbar}
+\DeclareUnicodeCharacter{00A7}{{\mathhexbox 278}}
+\DeclareUnicodeCharacter{00A8}{\"{ }}
+\DeclareUnicodeCharacter{00A9}{\copyright}
+\DeclareUnicodeCharacter{00AA}{\textordfeminine}
+\DeclareUnicodeCharacter{00AB}{\guillemotleft}
+\DeclareUnicodeCharacter{00AC}{\ensuremath{\neg}}
+\DeclareUnicodeCharacter{00AE}{\textregistered}
+\DeclareUnicodeCharacter{00AF}{\textasciimacron}
+\DeclareUnicodeCharacter{00B0}{\textsuperscript{o}}
+\DeclareUnicodeCharacter{00B1}{\ensuremath{\pm}}
+\DeclareUnicodeCharacter{00B2}{\textsuperscript{2}}
+\DeclareUnicodeCharacter{00B3}{\textsuperscript{3}}
+\DeclareUnicodeCharacter{00B5}{\textmu}
+\DeclareUnicodeCharacter{00B6}{{\mathhexbox 27B}}
+\DeclareUnicodeCharacter{00B7}{\ensuremath{\cdot}}
+\DeclareUnicodeCharacter{00B9}{\textsuperscript{1}}
+\DeclareUnicodeCharacter{00BA}{\textordmasculine}
+\DeclareUnicodeCharacter{00BB}{\guillemotright}
+\DeclareUnicodeCharacter{00BC}{\ensuremath{\frac{1}{4}}}
+\DeclareUnicodeCharacter{00BD}{\ensuremath{\frac{1}{2}}}
+\DeclareUnicodeCharacter{00BE}{\ensuremath{\frac{3}{4}}}
+\DeclareUnicodeCharacter{00BF}{\textquestiondown}
+\DeclareUnicodeCharacter{00D7}{\ensuremath{\times}}
+\DeclareUnicodeCharacter{00F7}{\ensuremath{\div}}
+\DeclareUnicodeCharacter{0131}{\ensuremath{\imath}}
+\DeclareUnicodeCharacter{02102}{\ensuremath{\mathbb{C}}}
+\DeclareUnicodeCharacter{0210D}{\ensuremath{\mathbb{H}}}
+\DeclareUnicodeCharacter{02115}{\ensuremath{\mathbb{N}}}
+\DeclareUnicodeCharacter{02119}{\ensuremath{\mathbb{P}}}
+\DeclareUnicodeCharacter{0211A}{\ensuremath{\mathbb{Q}}}
+\DeclareUnicodeCharacter{0211D}{\ensuremath{\mathbb{R}}}
+\DeclareUnicodeCharacter{02124}{\ensuremath{\mathbb{Z}}}
+\DeclareUnicodeCharacter{0237}{\ensuremath{\jmath}}
+\DeclareUnicodeCharacter{02B0}{\ensuremath{^h}}
+\DeclareUnicodeCharacter{02B2}{\ensuremath{^j}}
+\DeclareUnicodeCharacter{02B3}{\ensuremath{^r}}
+\DeclareUnicodeCharacter{02B7}{\ensuremath{^w}}
+\DeclareUnicodeCharacter{02B8}{\ensuremath{^y}}
+\DeclareUnicodeCharacter{02E1}{\ensuremath{^l}}
+\DeclareUnicodeCharacter{02E2}{\ensuremath{^s}}
+\DeclareUnicodeCharacter{02E3}{\ensuremath{^x}}
+\DeclareUnicodeCharacter{0302}{\ensuremath{\hat{\phantom{x}}}}
+\DeclareUnicodeCharacter{0308}{\ensuremath{\ddot{\phantom{x}}}}
+\DeclareUnicodeCharacter{0332}{\ensuremath{\underline{\phantom{x}}}}
+\DeclareUnicodeCharacter{0391}{\ensuremath{\COMMONUNICODE@Alpha}}
+\DeclareUnicodeCharacter{0392}{\ensuremath{\COMMONUNICODE@Beta}}
+\DeclareUnicodeCharacter{0393}{\ensuremath{\Gamma}}
+\DeclareUnicodeCharacter{0394}{\ensuremath{\Delta}}
+\DeclareUnicodeCharacter{0395}{\ensuremath{\COMMONUNICODE@Epsilon}}
+\DeclareUnicodeCharacter{0396}{\ensuremath{\COMMONUNICODE@Zeta}}
+\DeclareUnicodeCharacter{0397}{\ensuremath{\COMMONUNICODE@Eta}}
+\DeclareUnicodeCharacter{0398}{\ensuremath{\Theta}}
+\DeclareUnicodeCharacter{0399}{\COMMONUNICODE@Iota}
+\DeclareUnicodeCharacter{039A}{\COMMONUNICODE@Kappa}
+\DeclareUnicodeCharacter{039B}{\ensuremath{\Lambda}}
+\DeclareUnicodeCharacter{039C}{\COMMONUNICODE@Mu}
+\DeclareUnicodeCharacter{039D}{\COMMONUNICODE@Nu}
+\DeclareUnicodeCharacter{039E}{\ensuremath{\Xi}}
+\DeclareUnicodeCharacter{039F}{\COMMONUNICODE@Omicron}
+\DeclareUnicodeCharacter{03A0}{\ensuremath{\Pi}}
+\DeclareUnicodeCharacter{03A1}{\COMMONUNICODE@Rho}
+\DeclareUnicodeCharacter{03A3}{\ensuremath{\Sigma}}
+\DeclareUnicodeCharacter{03A4}{\COMMONUNICODE@Tau}
+\DeclareUnicodeCharacter{03A5}{\ensuremath{\Upsilon}}
+\DeclareUnicodeCharacter{03A6}{\ensuremath{\Phi}}
+\DeclareUnicodeCharacter{03A7}{\COMMONUNICODE@Chi}
+\DeclareUnicodeCharacter{03A8}{\ensuremath{\Psi}}
+\DeclareUnicodeCharacter{03A9}{\ensuremath{\Omega}}
+\DeclareUnicodeCharacter{03B1}{\ensuremath{\alpha}}
+\DeclareUnicodeCharacter{03B2}{\ensuremath{\beta}}
+\DeclareUnicodeCharacter{03B3}{\ensuremath{\gamma}}
+\DeclareUnicodeCharacter{03B4}{\ensuremath{\delta}}
+\DeclareUnicodeCharacter{03B5}{\ensuremath{\varepsilon}}
+\DeclareUnicodeCharacter{03B6}{\ensuremath{\zeta}}
+\DeclareUnicodeCharacter{03B7}{\ensuremath{\eta}}
+\DeclareUnicodeCharacter{03B8}{\ensuremath{\theta}}
+\DeclareUnicodeCharacter{03B9}{\ensuremath{\iota}}
+\DeclareUnicodeCharacter{03BA}{\ensuremath{\kappa}}
+\DeclareUnicodeCharacter{03BB}{\ensuremath{\lambda}}
+\DeclareUnicodeCharacter{03BC}{\ensuremath{\mu}}
+\DeclareUnicodeCharacter{03BD}{\ensuremath{\nu}}
+\DeclareUnicodeCharacter{03BE}{\ensuremath{\xi}}
+\DeclareUnicodeCharacter{03BF}{\COMMONUNICODE@omicron}
+\DeclareUnicodeCharacter{03C0}{\ensuremath{\pi}}
+\DeclareUnicodeCharacter{03C1}{\ensuremath{\rho}}
+\DeclareUnicodeCharacter{03C2}{\ensuremath{\varsigma}}
+\DeclareUnicodeCharacter{03C3}{\ensuremath{\sigma}}
+\DeclareUnicodeCharacter{03C4}{\ensuremath{\tau}}
+\DeclareUnicodeCharacter{03C5}{\ensuremath{\upsilon}}
+\DeclareUnicodeCharacter{03C6}{\ensuremath{\phi}}
+\DeclareUnicodeCharacter{03C7}{\ensuremath{\chi}}
+\DeclareUnicodeCharacter{03C8}{\ensuremath{\psi}}
+\DeclareUnicodeCharacter{03C9}{\ensuremath{\omega}}
+\DeclareUnicodeCharacter{03D0}{\ensuremath{\beta}}
+\DeclareUnicodeCharacter{03D1}{\ensuremath{\theta}}
+\DeclareUnicodeCharacter{03D5}{\ensuremath{\phi}}
+\DeclareUnicodeCharacter{03D6}{\ensuremath{\pi}}
+\DeclareUnicodeCharacter{03D8}{\ensuremath{Q}}
+\DeclareUnicodeCharacter{03D9}{\ensuremath{q}}
+\DeclareUnicodeCharacter{03DA}{\ensuremath{S}}
+\DeclareUnicodeCharacter{03DB}{\ensuremath{s}}
+\DeclareUnicodeCharacter{03DC}{\ensuremath{D}}
+\DeclareUnicodeCharacter{03DD}{\ensuremath{d}}
+\DeclareUnicodeCharacter{03DE}{\ensuremath{K}}
+\DeclareUnicodeCharacter{03DF}{\ensuremath{k}}
+\DeclareUnicodeCharacter{03E0}{\ensuremath{S}}
+\DeclareUnicodeCharacter{03E1}{\ensuremath{s}}
+\DeclareUnicodeCharacter{03F0}{\ensuremath{\varkappa}}
+\DeclareUnicodeCharacter{03F1}{\ensuremath{\rho}}
+\DeclareUnicodeCharacter{03F5}{\ensuremath{\epsilon}}
+\DeclareUnicodeCharacter{03F6}{\ensuremath{\backepsilon}}
+\DeclareUnicodeCharacter{041F}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{0432}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{0435}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{0438}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{043C}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{0440}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{0442}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{0BA8}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{0BBF}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{1100}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{11F9}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{1D2C}{\ensuremath{^A}}
+\DeclareUnicodeCharacter{1D2E}{\ensuremath{^B}}
+\DeclareUnicodeCharacter{1D30}{\ensuremath{^D}}
+\DeclareUnicodeCharacter{1D31}{\ensuremath{^E}}
+\DeclareUnicodeCharacter{1D33}{\ensuremath{^G}}
+\DeclareUnicodeCharacter{1D34}{\ensuremath{^H}}
+\DeclareUnicodeCharacter{1D35}{\ensuremath{^I}}
+\DeclareUnicodeCharacter{1D36}{\ensuremath{^J}}
+\DeclareUnicodeCharacter{1D37}{\ensuremath{^K}}
+\DeclareUnicodeCharacter{1D38}{\ensuremath{^L}}
+\DeclareUnicodeCharacter{1D39}{\ensuremath{^M}}
+\DeclareUnicodeCharacter{1D3A}{\ensuremath{^N}}
+\DeclareUnicodeCharacter{1D3C}{\ensuremath{^O}}
+\DeclareUnicodeCharacter{1D3E}{\ensuremath{^P}}
+\DeclareUnicodeCharacter{1D3F}{\ensuremath{^R}}
+\DeclareUnicodeCharacter{1D40}{\ensuremath{^T}}
+\DeclareUnicodeCharacter{1D400}{\ensuremath{\mathbf{A}}}
+\DeclareUnicodeCharacter{1D401}{\ensuremath{\mathbf{B}}}
+\DeclareUnicodeCharacter{1D402}{\ensuremath{\mathbf{C}}}
+\DeclareUnicodeCharacter{1D403}{\ensuremath{\mathbf{D}}}
+\DeclareUnicodeCharacter{1D404}{\ensuremath{\mathbf{E}}}
+\DeclareUnicodeCharacter{1D405}{\ensuremath{\mathbf{F}}}
+\DeclareUnicodeCharacter{1D406}{\ensuremath{\mathbf{G}}}
+\DeclareUnicodeCharacter{1D407}{\ensuremath{\mathbf{H}}}
+\DeclareUnicodeCharacter{1D408}{\ensuremath{\mathbf{I}}}
+\DeclareUnicodeCharacter{1D409}{\ensuremath{\mathbf{J}}}
+\DeclareUnicodeCharacter{1D40A}{\ensuremath{\mathbf{K}}}
+\DeclareUnicodeCharacter{1D40B}{\ensuremath{\mathbf{L}}}
+\DeclareUnicodeCharacter{1D40C}{\ensuremath{\mathbf{M}}}
+\DeclareUnicodeCharacter{1D40D}{\ensuremath{\mathbf{N}}}
+\DeclareUnicodeCharacter{1D40E}{\ensuremath{\mathbf{O}}}
+\DeclareUnicodeCharacter{1D40F}{\ensuremath{\mathbf{P}}}
+\DeclareUnicodeCharacter{1D41}{\ensuremath{^U}}
+\DeclareUnicodeCharacter{1D410}{\ensuremath{\mathbf{Q}}}
+\DeclareUnicodeCharacter{1D411}{\ensuremath{\mathbf{R}}}
+\DeclareUnicodeCharacter{1D412}{\ensuremath{\mathbf{S}}}
+\DeclareUnicodeCharacter{1D413}{\ensuremath{\mathbf{T}}}
+\DeclareUnicodeCharacter{1D414}{\ensuremath{\mathbf{U}}}
+\DeclareUnicodeCharacter{1D415}{\ensuremath{\mathbf{V}}}
+\DeclareUnicodeCharacter{1D416}{\ensuremath{\mathbf{W}}}
+\DeclareUnicodeCharacter{1D417}{\ensuremath{\mathbf{X}}}
+\DeclareUnicodeCharacter{1D418}{\ensuremath{\mathbf{Y}}}
+\DeclareUnicodeCharacter{1D419}{\ensuremath{\mathbf{Z}}}
+\DeclareUnicodeCharacter{1D41A}{\ensuremath{\mathbf{a}}}
+\DeclareUnicodeCharacter{1D41B}{\ensuremath{\mathbf{b}}}
+\DeclareUnicodeCharacter{1D41C}{\ensuremath{\mathbf{c}}}
+\DeclareUnicodeCharacter{1D41D}{\ensuremath{\mathbf{d}}}
+\DeclareUnicodeCharacter{1D41E}{\ensuremath{\mathbf{e}}}
+\DeclareUnicodeCharacter{1D41F}{\ensuremath{\mathbf{f}}}
+\DeclareUnicodeCharacter{1D42}{\ensuremath{^W}}
+\DeclareUnicodeCharacter{1D420}{\ensuremath{\mathbf{g}}}
+\DeclareUnicodeCharacter{1D421}{\ensuremath{\mathbf{h}}}
+\DeclareUnicodeCharacter{1D422}{\ensuremath{\mathbf{i}}}
+\DeclareUnicodeCharacter{1D423}{\ensuremath{\mathbf{j}}}
+\DeclareUnicodeCharacter{1D424}{\ensuremath{\mathbf{k}}}
+\DeclareUnicodeCharacter{1D425}{\ensuremath{\mathbf{l}}}
+\DeclareUnicodeCharacter{1D426}{\ensuremath{\mathbf{m}}}
+\DeclareUnicodeCharacter{1D427}{\ensuremath{\mathbf{n}}}
+\DeclareUnicodeCharacter{1D428}{\ensuremath{\mathbf{o}}}
+\DeclareUnicodeCharacter{1D429}{\ensuremath{\mathbf{p}}}
+\DeclareUnicodeCharacter{1D42A}{\ensuremath{\mathbf{q}}}
+\DeclareUnicodeCharacter{1D42B}{\ensuremath{\mathbf{r}}}
+\DeclareUnicodeCharacter{1D42C}{\ensuremath{\mathbf{s}}}
+\DeclareUnicodeCharacter{1D42D}{\ensuremath{\mathbf{t}}}
+\DeclareUnicodeCharacter{1D42E}{\ensuremath{\mathbf{u}}}
+\DeclareUnicodeCharacter{1D42F}{\ensuremath{\mathbf{v}}}
+\DeclareUnicodeCharacter{1D43}{\ensuremath{^a}}
+\DeclareUnicodeCharacter{1D430}{\ensuremath{\mathbf{w}}}
+\DeclareUnicodeCharacter{1D431}{\ensuremath{\mathbf{x}}}
+\DeclareUnicodeCharacter{1D432}{\ensuremath{\mathbf{y}}}
+\DeclareUnicodeCharacter{1D433}{\ensuremath{\mathbf{z}}}
+\DeclareUnicodeCharacter{1D434}{\ensuremath{\mathit{A}}}
+\DeclareUnicodeCharacter{1D435}{\ensuremath{\mathit{B}}}
+\DeclareUnicodeCharacter{1D436}{\ensuremath{\mathit{C}}}
+\DeclareUnicodeCharacter{1D437}{\ensuremath{\mathit{D}}}
+\DeclareUnicodeCharacter{1D438}{\ensuremath{\mathit{E}}}
+\DeclareUnicodeCharacter{1D439}{\ensuremath{\mathit{F}}}
+\DeclareUnicodeCharacter{1D43A}{\ensuremath{\mathit{G}}}
+\DeclareUnicodeCharacter{1D43B}{\ensuremath{\mathit{H}}}
+\DeclareUnicodeCharacter{1D43C}{\ensuremath{\mathit{I}}}
+\DeclareUnicodeCharacter{1D43D}{\ensuremath{\mathit{J}}}
+\DeclareUnicodeCharacter{1D43E}{\ensuremath{\mathit{K}}}
+\DeclareUnicodeCharacter{1D43F}{\ensuremath{\mathit{L}}}
+\DeclareUnicodeCharacter{1D440}{\ensuremath{\mathit{M}}}
+\DeclareUnicodeCharacter{1D441}{\ensuremath{\mathit{N}}}
+\DeclareUnicodeCharacter{1D442}{\ensuremath{\mathit{O}}}
+\DeclareUnicodeCharacter{1D443}{\ensuremath{\mathit{P}}}
+\DeclareUnicodeCharacter{1D444}{\ensuremath{\mathit{Q}}}
+\DeclareUnicodeCharacter{1D445}{\ensuremath{\mathit{R}}}
+\DeclareUnicodeCharacter{1D446}{\ensuremath{\mathit{S}}}
+\DeclareUnicodeCharacter{1D447}{\ensuremath{\mathit{T}}}
+\DeclareUnicodeCharacter{1D448}{\ensuremath{\mathit{U}}}
+\DeclareUnicodeCharacter{1D449}{\ensuremath{\mathit{V}}}
+\DeclareUnicodeCharacter{1D44A}{\ensuremath{\mathit{W}}}
+\DeclareUnicodeCharacter{1D44B}{\ensuremath{\mathit{X}}}
+\DeclareUnicodeCharacter{1D44C}{\ensuremath{\mathit{Y}}}
+\DeclareUnicodeCharacter{1D44D}{\ensuremath{\mathit{Z}}}
+\DeclareUnicodeCharacter{1D44E}{\ensuremath{\mathit{a}}}
+\DeclareUnicodeCharacter{1D44F}{\ensuremath{\mathit{b}}}
+\DeclareUnicodeCharacter{1D450}{\ensuremath{\mathit{c}}}
+\DeclareUnicodeCharacter{1D451}{\ensuremath{\mathit{d}}}
+\DeclareUnicodeCharacter{1D452}{\ensuremath{\mathit{e}}}
+\DeclareUnicodeCharacter{1D453}{\ensuremath{\mathit{f}}}
+\DeclareUnicodeCharacter{1D454}{\ensuremath{\mathit{g}}}
+\DeclareUnicodeCharacter{1D456}{\ensuremath{\mathit{i}}}
+\DeclareUnicodeCharacter{1D457}{\ensuremath{\mathit{j}}}
+\DeclareUnicodeCharacter{1D458}{\ensuremath{\mathit{k}}}
+\DeclareUnicodeCharacter{1D459}{\ensuremath{\mathit{l}}}
+\DeclareUnicodeCharacter{1D45A}{\ensuremath{\mathit{m}}}
+\DeclareUnicodeCharacter{1D45B}{\ensuremath{\mathit{n}}}
+\DeclareUnicodeCharacter{1D45C}{\ensuremath{\mathit{o}}}
+\DeclareUnicodeCharacter{1D45D}{\ensuremath{\mathit{p}}}
+\DeclareUnicodeCharacter{1D45E}{\ensuremath{\mathit{q}}}
+\DeclareUnicodeCharacter{1D45F}{\ensuremath{\mathit{r}}}
+\DeclareUnicodeCharacter{1D460}{\ensuremath{\mathit{s}}}
+\DeclareUnicodeCharacter{1D461}{\ensuremath{\mathit{t}}}
+\DeclareUnicodeCharacter{1D462}{\ensuremath{\mathit{u}}}
+\DeclareUnicodeCharacter{1D463}{\ensuremath{\mathit{v}}}
+\DeclareUnicodeCharacter{1D464}{\ensuremath{\mathit{w}}}
+\DeclareUnicodeCharacter{1D465}{\ensuremath{\mathit{x}}}
+\DeclareUnicodeCharacter{1D466}{\ensuremath{\mathit{y}}}
+\DeclareUnicodeCharacter{1D467}{\ensuremath{\mathit{z}}}
+\DeclareUnicodeCharacter{1D47}{\ensuremath{^b}}
+\DeclareUnicodeCharacter{1D48}{\ensuremath{^d}}
+\DeclareUnicodeCharacter{1D49}{\ensuremath{^e}}
+\DeclareUnicodeCharacter{1D49C}{\ensuremath{\mathscr{A}}}
+\DeclareUnicodeCharacter{1D49E}{\ensuremath{\mathscr{C}}}
+\DeclareUnicodeCharacter{1D49F}{\ensuremath{\mathscr{D}}}
+\DeclareUnicodeCharacter{1D4A2}{\ensuremath{\mathscr{G}}}
+\DeclareUnicodeCharacter{1D4A5}{\ensuremath{\mathscr{J}}}
+\DeclareUnicodeCharacter{1D4A6}{\ensuremath{\mathscr{K}}}
+\DeclareUnicodeCharacter{1D4A9}{\ensuremath{\mathscr{N}}}
+\DeclareUnicodeCharacter{1D4AA}{\ensuremath{\mathscr{O}}}
+\DeclareUnicodeCharacter{1D4AB}{\ensuremath{\mathscr{P}}}
+\DeclareUnicodeCharacter{1D4AC}{\ensuremath{\mathscr{Q}}}
+\DeclareUnicodeCharacter{1D4AE}{\ensuremath{\mathscr{S}}}
+\DeclareUnicodeCharacter{1D4AF}{\ensuremath{\mathscr{T}}}
+\DeclareUnicodeCharacter{1D4B0}{\ensuremath{\mathscr{U}}}
+\DeclareUnicodeCharacter{1D4B1}{\ensuremath{\mathscr{V}}}
+\DeclareUnicodeCharacter{1D4B2}{\ensuremath{\mathscr{W}}}
+\DeclareUnicodeCharacter{1D4B3}{\ensuremath{\mathscr{X}}}
+\DeclareUnicodeCharacter{1D4B4}{\ensuremath{\mathscr{Y}}}
+\DeclareUnicodeCharacter{1D4B5}{\ensuremath{\mathscr{Z}}}
+\DeclareUnicodeCharacter{1D4D}{\ensuremath{^g}}
+\DeclareUnicodeCharacter{1D4D0}{\ensuremath{\mathcal{A}}}
+\DeclareUnicodeCharacter{1D4D1}{\ensuremath{\mathcal{B}}}
+\DeclareUnicodeCharacter{1D4D2}{\ensuremath{\mathcal{C}}}
+\DeclareUnicodeCharacter{1D4D3}{\ensuremath{\mathcal{D}}}
+\DeclareUnicodeCharacter{1D4D4}{\ensuremath{\mathcal{E}}}
+\DeclareUnicodeCharacter{1D4D5}{\ensuremath{\mathcal{F}}}
+\DeclareUnicodeCharacter{1D4D6}{\ensuremath{\mathcal{G}}}
+\DeclareUnicodeCharacter{1D4D7}{\ensuremath{\mathcal{H}}}
+\DeclareUnicodeCharacter{1D4D8}{\ensuremath{\mathcal{I}}}
+\DeclareUnicodeCharacter{1D4D9}{\ensuremath{\mathcal{J}}}
+\DeclareUnicodeCharacter{1D4DA}{\ensuremath{\mathcal{K}}}
+\DeclareUnicodeCharacter{1D4DB}{\ensuremath{\mathcal{L}}}
+\DeclareUnicodeCharacter{1D4DC}{\ensuremath{\mathcal{M}}}
+\DeclareUnicodeCharacter{1D4DD}{\ensuremath{\mathcal{N}}}
+\DeclareUnicodeCharacter{1D4DE}{\ensuremath{\mathcal{O}}}
+\DeclareUnicodeCharacter{1D4DF}{\ensuremath{\mathcal{P}}}
+\DeclareUnicodeCharacter{1D4E0}{\ensuremath{\mathcal{Q}}}
+\DeclareUnicodeCharacter{1D4E1}{\ensuremath{\mathcal{R}}}
+\DeclareUnicodeCharacter{1D4E2}{\ensuremath{\mathcal{S}}}
+\DeclareUnicodeCharacter{1D4E3}{\ensuremath{\mathcal{T}}}
+\DeclareUnicodeCharacter{1D4E4}{\ensuremath{\mathcal{U}}}
+\DeclareUnicodeCharacter{1D4E5}{\ensuremath{\mathcal{V}}}
+\DeclareUnicodeCharacter{1D4E6}{\ensuremath{\mathcal{W}}}
+\DeclareUnicodeCharacter{1D4E7}{\ensuremath{\mathcal{X}}}
+\DeclareUnicodeCharacter{1D4E8}{\ensuremath{\mathcal{Y}}}
+\DeclareUnicodeCharacter{1D4E9}{\ensuremath{\mathcal{Z}}}
+\DeclareUnicodeCharacter{1D4F}{\ensuremath{^k}}
+\DeclareUnicodeCharacter{1D50}{\ensuremath{^m}}
+\DeclareUnicodeCharacter{1D504}{\ensuremath{\mathfrak{A}}}
+\DeclareUnicodeCharacter{1D505}{\ensuremath{\mathfrak{B}}}
+\DeclareUnicodeCharacter{1D507}{\ensuremath{\mathfrak{D}}}
+\DeclareUnicodeCharacter{1D508}{\ensuremath{\mathfrak{E}}}
+\DeclareUnicodeCharacter{1D509}{\ensuremath{\mathfrak{F}}}
+\DeclareUnicodeCharacter{1D50A}{\ensuremath{\mathfrak{G}}}
+\DeclareUnicodeCharacter{1D50D}{\ensuremath{\mathfrak{J}}}
+\DeclareUnicodeCharacter{1D50E}{\ensuremath{\mathfrak{K}}}
+\DeclareUnicodeCharacter{1D50F}{\ensuremath{\mathfrak{L}}}
+\DeclareUnicodeCharacter{1D510}{\ensuremath{\mathfrak{M}}}
+\DeclareUnicodeCharacter{1D511}{\ensuremath{\mathfrak{N}}}
+\DeclareUnicodeCharacter{1D512}{\ensuremath{\mathfrak{O}}}
+\DeclareUnicodeCharacter{1D513}{\ensuremath{\mathfrak{P}}}
+\DeclareUnicodeCharacter{1D514}{\ensuremath{\mathfrak{Q}}}
+\DeclareUnicodeCharacter{1D516}{\ensuremath{\mathfrak{S}}}
+\DeclareUnicodeCharacter{1D517}{\ensuremath{\mathfrak{T}}}
+\DeclareUnicodeCharacter{1D518}{\ensuremath{\mathfrak{U}}}
+\DeclareUnicodeCharacter{1D519}{\ensuremath{\mathfrak{V}}}
+\DeclareUnicodeCharacter{1D51A}{\ensuremath{\mathfrak{W}}}
+\DeclareUnicodeCharacter{1D51B}{\ensuremath{\mathfrak{X}}}
+\DeclareUnicodeCharacter{1D51C}{\ensuremath{\mathfrak{Y}}}
+\DeclareUnicodeCharacter{1D51E}{\ensuremath{\mathfrak{a}}}
+\DeclareUnicodeCharacter{1D51F}{\ensuremath{\mathfrak{b}}}
+\DeclareUnicodeCharacter{1D52}{\ensuremath{^o}}
+\DeclareUnicodeCharacter{1D520}{\ensuremath{\mathfrak{c}}}
+\DeclareUnicodeCharacter{1D521}{\ensuremath{\mathfrak{d}}}
+\DeclareUnicodeCharacter{1D522}{\ensuremath{\mathfrak{e}}}
+\DeclareUnicodeCharacter{1D523}{\ensuremath{\mathfrak{f}}}
+\DeclareUnicodeCharacter{1D524}{\ensuremath{\mathfrak{g}}}
+\DeclareUnicodeCharacter{1D525}{\ensuremath{\mathfrak{h}}}
+\DeclareUnicodeCharacter{1D526}{\ensuremath{\mathfrak{i}}}
+\DeclareUnicodeCharacter{1D527}{\ensuremath{\mathfrak{j}}}
+\DeclareUnicodeCharacter{1D528}{\ensuremath{\mathfrak{k}}}
+\DeclareUnicodeCharacter{1D529}{\ensuremath{\mathfrak{l}}}
+\DeclareUnicodeCharacter{1D52A}{\ensuremath{\mathfrak{m}}}
+\DeclareUnicodeCharacter{1D52B}{\ensuremath{\mathfrak{n}}}
+\DeclareUnicodeCharacter{1D52C}{\ensuremath{\mathfrak{o}}}
+\DeclareUnicodeCharacter{1D52D}{\ensuremath{\mathfrak{p}}}
+\DeclareUnicodeCharacter{1D52E}{\ensuremath{\mathfrak{q}}}
+\DeclareUnicodeCharacter{1D52F}{\ensuremath{\mathfrak{r}}}
+\DeclareUnicodeCharacter{1D530}{\ensuremath{\mathfrak{s}}}
+\DeclareUnicodeCharacter{1D531}{\ensuremath{\mathfrak{t}}}
+\DeclareUnicodeCharacter{1D532}{\ensuremath{\mathfrak{u}}}
+\DeclareUnicodeCharacter{1D533}{\ensuremath{\mathfrak{v}}}
+\DeclareUnicodeCharacter{1D534}{\ensuremath{\mathfrak{w}}}
+\DeclareUnicodeCharacter{1D535}{\ensuremath{\mathfrak{x}}}
+\DeclareUnicodeCharacter{1D536}{\ensuremath{\mathfrak{y}}}
+\DeclareUnicodeCharacter{1D537}{\ensuremath{\mathfrak{z}}}
+\DeclareUnicodeCharacter{1D538}{\ensuremath{\mathbb{A}}}
+\DeclareUnicodeCharacter{1D539}{\ensuremath{\mathbb{B}}}
+\DeclareUnicodeCharacter{1D53B}{\ensuremath{\mathbb{D}}}
+\DeclareUnicodeCharacter{1D53C}{\ensuremath{\mathbb{E}}}
+\DeclareUnicodeCharacter{1D53D}{\ensuremath{\mathbb{F}}}
+\DeclareUnicodeCharacter{1D53E}{\ensuremath{\mathbb{G}}}
+\DeclareUnicodeCharacter{1D540}{\ensuremath{\mathbb{I}}}
+\DeclareUnicodeCharacter{1D541}{\ensuremath{\mathbb{J}}}
+\DeclareUnicodeCharacter{1D542}{\ensuremath{\mathbb{K}}}
+\DeclareUnicodeCharacter{1D543}{\ensuremath{\mathbb{L}}}
+\DeclareUnicodeCharacter{1D544}{\ensuremath{\mathbb{M}}}
+\DeclareUnicodeCharacter{1D546}{\ensuremath{\mathbb{O}}}
+\DeclareUnicodeCharacter{1D54A}{\ensuremath{\mathbb{S}}}
+\DeclareUnicodeCharacter{1D54B}{\ensuremath{\mathbb{T}}}
+\DeclareUnicodeCharacter{1D54C}{\ensuremath{\mathbb{U}}}
+\DeclareUnicodeCharacter{1D54D}{\ensuremath{\mathbb{V}}}
+\DeclareUnicodeCharacter{1D54E}{\ensuremath{\mathbb{W}}}
+\DeclareUnicodeCharacter{1D54F}{\ensuremath{\mathbb{X}}}
+\DeclareUnicodeCharacter{1D550}{\ensuremath{\mathbb{Y}}}
+\DeclareUnicodeCharacter{1D552}{\ensuremath{\mathbb{a}}}
+\DeclareUnicodeCharacter{1D553}{\ensuremath{\mathbb{b}}}
+\DeclareUnicodeCharacter{1D554}{\ensuremath{\mathbb{c}}}
+\DeclareUnicodeCharacter{1D555}{\ensuremath{\mathbb{d}}}
+\DeclareUnicodeCharacter{1D556}{\ensuremath{\mathbb{e}}}
+\DeclareUnicodeCharacter{1D557}{\ensuremath{\mathbb{f}}}
+\DeclareUnicodeCharacter{1D558}{\ensuremath{\mathbb{g}}}
+\DeclareUnicodeCharacter{1D559}{\ensuremath{\mathbb{h}}}
+\DeclareUnicodeCharacter{1D55A}{\ensuremath{\mathbb{i}}}
+\DeclareUnicodeCharacter{1D55B}{\ensuremath{\mathbb{j}}}
+\DeclareUnicodeCharacter{1D55C}{\ensuremath{\mathbb{k}}}
+\DeclareUnicodeCharacter{1D55D}{\ensuremath{\mathbb{l}}}
+\DeclareUnicodeCharacter{1D55E}{\ensuremath{\mathbb{m}}}
+\DeclareUnicodeCharacter{1D55F}{\ensuremath{\mathbb{n}}}
+\DeclareUnicodeCharacter{1D56}{\ensuremath{^p}}
+\DeclareUnicodeCharacter{1D560}{\ensuremath{\mathbb{o}}}
+\DeclareUnicodeCharacter{1D561}{\ensuremath{\mathbb{p}}}
+\DeclareUnicodeCharacter{1D562}{\ensuremath{\mathbb{q}}}
+\DeclareUnicodeCharacter{1D563}{\ensuremath{\mathbb{r}}}
+\DeclareUnicodeCharacter{1D564}{\ensuremath{\mathbb{s}}}
+\DeclareUnicodeCharacter{1D565}{\ensuremath{\mathbb{t}}}
+\DeclareUnicodeCharacter{1D566}{\ensuremath{\mathbb{u}}}
+\DeclareUnicodeCharacter{1D567}{\ensuremath{\mathbb{v}}}
+\DeclareUnicodeCharacter{1D568}{\ensuremath{\mathbb{w}}}
+\DeclareUnicodeCharacter{1D569}{\ensuremath{\mathbb{x}}}
+\DeclareUnicodeCharacter{1D56A}{\ensuremath{\mathbb{y}}}
+\DeclareUnicodeCharacter{1D56B}{\ensuremath{\mathbb{z}}}
+\DeclareUnicodeCharacter{1D57}{\ensuremath{^t}}
+\DeclareUnicodeCharacter{1D58}{\ensuremath{^u}}
+\DeclareUnicodeCharacter{1D5B}{\ensuremath{^v}}
+\DeclareUnicodeCharacter{1D62}{\ensuremath{_i}}
+\DeclareUnicodeCharacter{1D629}{\ensuremath{\mathit{h}}}
+\DeclareUnicodeCharacter{1D63}{\ensuremath{_r}}
+\DeclareUnicodeCharacter{1D64}{\ensuremath{_u}}
+\DeclareUnicodeCharacter{1D65}{\ensuremath{_v}}
+\DeclareUnicodeCharacter{1D6E4}{\ensuremath{\Gamma}}
+\DeclareUnicodeCharacter{1D6E5}{\ensuremath{\Delta}}
+\DeclareUnicodeCharacter{1D6F1}{\ensuremath{\Pi}}
+\DeclareUnicodeCharacter{1D6F4}{\ensuremath{\Sigma}}
+\DeclareUnicodeCharacter{1D6FA}{\ensuremath{\Omega}}
+\DeclareUnicodeCharacter{1D6FC}{\ensuremath{\alpha}}
+\DeclareUnicodeCharacter{1D6FD}{\ensuremath{\beta}}
+\DeclareUnicodeCharacter{1D6FE}{\ensuremath{\gamma}}
+\DeclareUnicodeCharacter{1D6FF}{\ensuremath{\delta}}
+\DeclareUnicodeCharacter{1D700}{\ensuremath{\varepsilon}}
+\DeclareUnicodeCharacter{1D701}{\ensuremath{\zeta}}
+\DeclareUnicodeCharacter{1D702}{\ensuremath{\eta}}
+\DeclareUnicodeCharacter{1D703}{\ensuremath{\theta}}
+\DeclareUnicodeCharacter{1D704}{\ensuremath{\iota}}
+\DeclareUnicodeCharacter{1D705}{\ensuremath{\kappa}}
+\DeclareUnicodeCharacter{1D706}{\ensuremath{\lambda}}
+\DeclareUnicodeCharacter{1D707}{\ensuremath{\mu}}
+\DeclareUnicodeCharacter{1D708}{\ensuremath{\nu}}
+\DeclareUnicodeCharacter{1D709}{\ensuremath{\xi}}
+\DeclareUnicodeCharacter{1D70A}{\ensuremath{\COMMONUNICODE@omicron}}
+\DeclareUnicodeCharacter{1D70B}{\ensuremath{\pi}}
+\DeclareUnicodeCharacter{1D70C}{\ensuremath{\rho}}
+\DeclareUnicodeCharacter{1D70D}{\ensuremath{\varsigma}}
+\DeclareUnicodeCharacter{1D70E}{\ensuremath{\sigma}}
+\DeclareUnicodeCharacter{1D70F}{\ensuremath{\tau}}
+\DeclareUnicodeCharacter{1D710}{\ensuremath{\upsilon}}
+\DeclareUnicodeCharacter{1D711}{\ensuremath{\varphi}}
+\DeclareUnicodeCharacter{1D712}{\ensuremath{\chi}}
+\DeclareUnicodeCharacter{1D713}{\ensuremath{\psi}}
+\DeclareUnicodeCharacter{1D714}{\ensuremath{\omega}}
+\DeclareUnicodeCharacter{1D716}{\ensuremath{\epsilon}}
+\DeclareUnicodeCharacter{1D717}{\ensuremath{\vartheta}}
+\DeclareUnicodeCharacter{1D719}{\ensuremath{\phi}}
+\DeclareUnicodeCharacter{1D71A}{\ensuremath{\varrho}}
+\DeclareUnicodeCharacter{1D71B}{\ensuremath{\varpi}}
+\DeclareUnicodeCharacter{1D7D8}{\ensuremath{\mathbb{0}}}
+\DeclareUnicodeCharacter{1D7D9}{\ensuremath{\mathbb{1}}}
+\DeclareUnicodeCharacter{1D7DA}{\ensuremath{\mathbb{2}}}
+\DeclareUnicodeCharacter{1D7DB}{\ensuremath{\mathbb{3}}}
+\DeclareUnicodeCharacter{1D7DC}{\ensuremath{\mathbb{4}}}
+\DeclareUnicodeCharacter{1D7DD}{\ensuremath{\mathbb{5}}}
+\DeclareUnicodeCharacter{1D7DE}{\ensuremath{\mathbb{6}}}
+\DeclareUnicodeCharacter{1D7DF}{\ensuremath{\mathbb{7}}}
+\DeclareUnicodeCharacter{1D7E0}{\ensuremath{\mathbb{8}}}
+\DeclareUnicodeCharacter{1D7E1}{\ensuremath{\mathbb{9}}}
+\DeclareUnicodeCharacter{1D9C}{\ensuremath{^c}}
+\DeclareUnicodeCharacter{1DA0}{\ensuremath{^f}}
+\DeclareUnicodeCharacter{1DBB}{\ensuremath{^z}}
+\DeclareUnicodeCharacter{1F329}{\ensuremath{\lightning}}
+\DeclareUnicodeCharacter{2013}{--}
+\DeclareUnicodeCharacter{2014}{---}
+\DeclareUnicodeCharacter{2016}{\textbardbl}
+\DeclareUnicodeCharacter{2018}{\textquoteleft}
+\DeclareUnicodeCharacter{2019}{\textquoteright}
+\DeclareUnicodeCharacter{201A}{\quotesinglbase}
+\DeclareUnicodeCharacter{201C}{\textquotedblleft}
+\DeclareUnicodeCharacter{201D}{\textquotedblright}
+\DeclareUnicodeCharacter{201E}{\quotedblbase}
+\DeclareUnicodeCharacter{2020}{\ensuremath{\dagger}}
+\DeclareUnicodeCharacter{2021}{\ddag}
+\DeclareUnicodeCharacter{2022}{\ensuremath{\bullet}}
+\DeclareUnicodeCharacter{2023}{\ensuremath{\RHD}}
+\DeclareUnicodeCharacter{2026}{\ensuremath{\ldots}}
+\DeclareUnicodeCharacter{202F}{\,}
+\DeclareUnicodeCharacter{2030}{\textperthousand}
+\DeclareUnicodeCharacter{2031}{\textpertenthousand}
+\DeclareUnicodeCharacter{2032}{\ensuremath{\prime}}
+\DeclareUnicodeCharacter{2033}{\ensuremath{''}}
+\DeclareUnicodeCharacter{2034}{\ensuremath{'''}}
+\DeclareUnicodeCharacter{2035}{\ensuremath{\backprime}}
+\DeclareUnicodeCharacter{2038}{\ifmmode\widehat{}\else\textasciicircum\fi}
+\DeclareUnicodeCharacter{2039}{\guilsinglleft}
+\DeclareUnicodeCharacter{203A}{\guilsinglright}
+\DeclareUnicodeCharacter{203B}{\textreferencemark}
+\DeclareUnicodeCharacter{203C}{{!\kern -.5ex!}}
+\DeclareUnicodeCharacter{203D}{\textinterrobang}
+\DeclareUnicodeCharacter{203E}{\ensuremath{\overline{0}}}
+\DeclareUnicodeCharacter{2042}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2045}{\textlquill}
+\DeclareUnicodeCharacter{2046}{\textrquill}
+\DeclareUnicodeCharacter{2047}{{?\kern -.5ex?}}
+\DeclareUnicodeCharacter{2048}{{?\kern -.5ex!}}
+\DeclareUnicodeCharacter{2049}{{!\kern -.5ex?}}
+\DeclareUnicodeCharacter{2052}{\textdiscount}
+\DeclareUnicodeCharacter{2062}{{}}
+\DeclareUnicodeCharacter{2070}{\ensuremath{^0}}
+\DeclareUnicodeCharacter{2071}{\ensuremath{^i}}
+\DeclareUnicodeCharacter{2074}{\ensuremath{^4}}
+\DeclareUnicodeCharacter{2075}{\ensuremath{^5}}
+\DeclareUnicodeCharacter{2076}{\ensuremath{^6}}
+\DeclareUnicodeCharacter{2077}{\ensuremath{^7}}
+\DeclareUnicodeCharacter{2078}{\ensuremath{^8}}
+\DeclareUnicodeCharacter{2079}{\ensuremath{^9}}
+\DeclareUnicodeCharacter{207A}{\ensuremath{^+}}
+\DeclareUnicodeCharacter{207B}{\ensuremath{^-}}
+\DeclareUnicodeCharacter{207C}{\ensuremath{^=}}
+\DeclareUnicodeCharacter{207D}{\ensuremath{^(}}
+\DeclareUnicodeCharacter{207E}{\ensuremath{^)}}
+\DeclareUnicodeCharacter{207F}{\ensuremath{^n}}
+\DeclareUnicodeCharacter{2080}{\ensuremath{_0}}
+\DeclareUnicodeCharacter{2081}{\ensuremath{_1}}
+\DeclareUnicodeCharacter{2082}{\ensuremath{_2}}
+\DeclareUnicodeCharacter{2083}{\ensuremath{_3}}
+\DeclareUnicodeCharacter{2084}{\ensuremath{_4}}
+\DeclareUnicodeCharacter{2085}{\ensuremath{_5}}
+\DeclareUnicodeCharacter{2086}{\ensuremath{_6}}
+\DeclareUnicodeCharacter{2087}{\ensuremath{_7}}
+\DeclareUnicodeCharacter{2088}{\ensuremath{_8}}
+\DeclareUnicodeCharacter{2089}{\ensuremath{_9}}
+\DeclareUnicodeCharacter{208A}{\ensuremath{_+}}
+\DeclareUnicodeCharacter{208B}{\ensuremath{_-}}
+\DeclareUnicodeCharacter{208C}{\ensuremath{_=}}
+\DeclareUnicodeCharacter{208D}{\ensuremath{_(}}
+\DeclareUnicodeCharacter{208E}{\ensuremath{_)}}
+\DeclareUnicodeCharacter{2090}{\ensuremath{_a}}
+\DeclareUnicodeCharacter{2091}{\ensuremath{_e}}
+\DeclareUnicodeCharacter{2092}{\ensuremath{_o}}
+\DeclareUnicodeCharacter{2093}{\ensuremath{_x}}
+\DeclareUnicodeCharacter{2095}{\ensuremath{_h}}
+\DeclareUnicodeCharacter{2096}{\ensuremath{_k}}
+\DeclareUnicodeCharacter{2097}{\ensuremath{_l}}
+\DeclareUnicodeCharacter{2098}{\ensuremath{_m}}
+\DeclareUnicodeCharacter{2099}{\ensuremath{_n}}
+\DeclareUnicodeCharacter{209A}{\ensuremath{_p}}
+\DeclareUnicodeCharacter{209B}{\ensuremath{_s}}
+\DeclareUnicodeCharacter{209C}{\ensuremath{_t}}
+\DeclareUnicodeCharacter{20AC}{\euro}
+\DeclareUnicodeCharacter{2102}{\ensuremath{\mathbb{C}}}
+\DeclareUnicodeCharacter{2107}{\ensuremath{\mathbb{E}}}
+\DeclareUnicodeCharacter{210A}{\ensuremath{\mathcal g}}
+\DeclareUnicodeCharacter{210B}{\ensuremath{\mathcal H}}
+\DeclareUnicodeCharacter{210C}{\ensuremath{\mathfrak H}}
+\DeclareUnicodeCharacter{210D}{\ensuremath{\mathbb{H}}}
+\DeclareUnicodeCharacter{210E}{\ensuremath{\mathit{h}}}
+\DeclareUnicodeCharacter{210F}{\ensuremath{\hbar}}
+\DeclareUnicodeCharacter{2110}{\ensuremath{\mathcal I}}
+\DeclareUnicodeCharacter{2111}{\ensuremath{\Im}}
+\DeclareUnicodeCharacter{2112}{\ensuremath{\mathcal L}}
+\DeclareUnicodeCharacter{2113}{\ensuremath{\ell}}
+\DeclareUnicodeCharacter{2115}{\ensuremath{\mathbb{N}}}
+\DeclareUnicodeCharacter{2118}{\ensuremath{\wp}}
+\DeclareUnicodeCharacter{2119}{\ensuremath{\mathbb{P}}}
+\DeclareUnicodeCharacter{211A}{\ensuremath{\mathbb{Q}}}
+\DeclareUnicodeCharacter{211B}{\ensuremath{\mathscr{R}}}
+\DeclareUnicodeCharacter{211C}{\ensuremath{\Re}}
+\DeclareUnicodeCharacter{211D}{\ensuremath{\mathbb{R}}}
+\DeclareUnicodeCharacter{2122}{\texttrademark}
+\DeclareUnicodeCharacter{2124}{\ensuremath{\mathbb{Z}}}
+\DeclareUnicodeCharacter{2126}{\ensuremath{\Omega}}
+\DeclareUnicodeCharacter{2127}{\ensuremath{\mho}}
+\DeclareUnicodeCharacter{2128}{\ensuremath{\mathfrak Z}}
+\DeclareUnicodeCharacter{212A}{\ensuremath{\mathrm K}}
+\DeclareUnicodeCharacter{212B}{\ensuremath{\mathring{\mathrm A}}}
+\DeclareUnicodeCharacter{212C}{\ensuremath{\mathcal B}}
+\DeclareUnicodeCharacter{212D}{\ensuremath{\mathfrak C}}
+\DeclareUnicodeCharacter{212E}{\textestimated}
+\DeclareUnicodeCharacter{212F}{\ensuremath{\mathcal e}}
+\DeclareUnicodeCharacter{2130}{\ensuremath{\mathcal E}}
+\DeclareUnicodeCharacter{2131}{\ensuremath{\mathcal F}}
+\DeclareUnicodeCharacter{2132}{\ensuremath{\Finv}}
+\DeclareUnicodeCharacter{2133}{\ensuremath{\mathscr{M}}}
+\DeclareUnicodeCharacter{2135}{\ensuremath{\aleph}}
+\DeclareUnicodeCharacter{2136}{\ensuremath{\beth}}
+\DeclareUnicodeCharacter{2137}{\ensuremath{\gimel}}
+\DeclareUnicodeCharacter{2138}{\ensuremath{\daleth}}
+\DeclareUnicodeCharacter{213C}{\ensuremath{\mathbb{\pi}}}
+\DeclareUnicodeCharacter{213D}{\ensuremath{\mathbb{\gamma}}}
+\DeclareUnicodeCharacter{213E}{\ensuremath{\mathbb{\Pi}}}
+\DeclareUnicodeCharacter{213F}{\ensuremath{\mathbb{\Gamma}}}
+\DeclareUnicodeCharacter{2140}{\ensuremath{\mathbb{\Sigma}}}
+\DeclareUnicodeCharacter{2141}{\ensuremath{\Game}}
+\DeclareUnicodeCharacter{2144}{\ensuremath{Y}}
+\DeclareUnicodeCharacter{2146}{\ensuremath{\mathrm{d}}}
+\DeclareUnicodeCharacter{2148}{\ensuremath{\imath}}
+\DeclareUnicodeCharacter{2149}{\ensuremath{\jmath}}
+\DeclareUnicodeCharacter{214B}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2153}{\ensuremath{\frac{1}{3}}}
+\DeclareUnicodeCharacter{2154}{\ensuremath{\frac{2}{3}}}
+\DeclareUnicodeCharacter{2155}{\ensuremath{\frac{1}{5}}}
+\DeclareUnicodeCharacter{2156}{\ensuremath{\frac{2}{5}}}
+\DeclareUnicodeCharacter{2157}{\ensuremath{\frac{3}{5}}}
+\DeclareUnicodeCharacter{2158}{\ensuremath{\frac{4}{5}}}
+\DeclareUnicodeCharacter{2159}{\ensuremath{\frac{1}{6}}}
+\DeclareUnicodeCharacter{215A}{\ensuremath{\frac{5}{6}}}
+\DeclareUnicodeCharacter{215B}{\ensuremath{\frac{1}{8}}}
+\DeclareUnicodeCharacter{215D}{\ensuremath{\frac{5}{8}}}
+\DeclareUnicodeCharacter{215E}{\ensuremath{\frac{7}{8}}}
+\DeclareUnicodeCharacter{2190}{\ensuremath{\leftarrow}}
+\DeclareUnicodeCharacter{2191}{\ensuremath{\uparrow}}
+\DeclareUnicodeCharacter{2192}{\ensuremath{\rightarrow}}
+\DeclareUnicodeCharacter{2193}{\ensuremath{\downarrow}}
+\DeclareUnicodeCharacter{2194}{\ensuremath{\leftrightarrow}}
+\DeclareUnicodeCharacter{2195}{\ensuremath{\updownarrow}}
+\DeclareUnicodeCharacter{2196}{\ensuremath{\nwarrow}}
+\DeclareUnicodeCharacter{2197}{\ensuremath{\nearrow}}
+\DeclareUnicodeCharacter{2198}{\ensuremath{\searrow}}
+\DeclareUnicodeCharacter{2199}{\ensuremath{\swarrow}}
+\DeclareUnicodeCharacter{219A}{\ensuremath{\nleftarrow}}
+\DeclareUnicodeCharacter{219B}{\ensuremath{\nrightarrow}}
+\DeclareUnicodeCharacter{219E}{\ensuremath{\twoheadleftarrow}}
+\DeclareUnicodeCharacter{21A0}{\ensuremath{\twoheadrightarrow}}
+\DeclareUnicodeCharacter{21A2}{\ensuremath{\leftarrowtail}}
+\DeclareUnicodeCharacter{21A3}{\ensuremath{\rightarrowtail}}
+\DeclareUnicodeCharacter{21A4}{\ensuremath{\COMMONUNICODE@mapsfrom}}
+\DeclareUnicodeCharacter{21A6}{\ensuremath{\mapsto}}
+\DeclareUnicodeCharacter{21A9}{\ensuremath{\hookleftarrow}}
+\DeclareUnicodeCharacter{21AA}{\ensuremath{\hookrightarrow}}
+\DeclareUnicodeCharacter{21AB}{\ensuremath{\looparrowleft}}
+\DeclareUnicodeCharacter{21AC}{\ensuremath{\looparrowright}}
+\DeclareUnicodeCharacter{21AD}{\ensuremath{\leftrightsquigarrow}}
+\DeclareUnicodeCharacter{21AE}{\ensuremath{\nleftrightarrow}}
+\DeclareUnicodeCharacter{21AF}{\ensuremath{\lightning}}
+\DeclareUnicodeCharacter{21B0}{\ensuremath{\Lsh}}
+\DeclareUnicodeCharacter{21B1}{\ensuremath{\Rsh}}
+\DeclareUnicodeCharacter{21B6}{\ensuremath{\curvearrowleft}}
+\DeclareUnicodeCharacter{21B7}{\ensuremath{\curvearrowright}}
+\DeclareUnicodeCharacter{21BA}{\ensuremath{\circlearrowleft}}
+\DeclareUnicodeCharacter{21BB}{\ensuremath{\circlearrowright}}
+\DeclareUnicodeCharacter{21BC}{\ensuremath{\leftharpoonup}}
+\DeclareUnicodeCharacter{21BD}{\ensuremath{\leftharpoondown}}
+\DeclareUnicodeCharacter{21BE}{\ensuremath{\upharpoonright}}
+\DeclareUnicodeCharacter{21BF}{\ensuremath{\upharpoonleft}}
+\DeclareUnicodeCharacter{21C0}{\ensuremath{\rightharpoonup}}
+\DeclareUnicodeCharacter{21C1}{\ensuremath{\rightharpoondown}}
+\DeclareUnicodeCharacter{21C2}{\ensuremath{\downharpoonright}}
+\DeclareUnicodeCharacter{21C3}{\ensuremath{\downharpoonleft}}
+\DeclareUnicodeCharacter{21C4}{\ensuremath{\rightleftarrows}}
+\DeclareUnicodeCharacter{21C5}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{21C6}{\ensuremath{\leftrightarrows}}
+\DeclareUnicodeCharacter{21C7}{\ensuremath{\leftleftarrows}}
+\DeclareUnicodeCharacter{21C8}{\ensuremath{\upuparrows}}
+\DeclareUnicodeCharacter{21C9}{\ensuremath{\rightrightarrows}}
+\DeclareUnicodeCharacter{21CA}{\ensuremath{\downdownarrows}}
+\DeclareUnicodeCharacter{21CB}{\ensuremath{\leftrightharpoons}}
+\DeclareUnicodeCharacter{21CC}{\ensuremath{\rightleftharpoons}}
+\DeclareUnicodeCharacter{21CD}{\ensuremath{\nLeftarrow}}
+\DeclareUnicodeCharacter{21CE}{\ensuremath{\nLeftrightarrow}}
+\DeclareUnicodeCharacter{21CF}{\ensuremath{\nRightarrow}}
+\DeclareUnicodeCharacter{21D0}{\ensuremath{\Leftarrow}}
+\DeclareUnicodeCharacter{21D1}{\ensuremath{\Uparrow}}
+\DeclareUnicodeCharacter{21D2}{\ensuremath{\Rightarrow}}
+\DeclareUnicodeCharacter{21D3}{\ensuremath{\Downarrow}}
+\DeclareUnicodeCharacter{21D4}{\ensuremath{\Leftrightarrow}}
+\DeclareUnicodeCharacter{21D5}{\ensuremath{\Updownarrow}}
+\DeclareUnicodeCharacter{21D6}{\ensuremath{\nwarrow}}
+\DeclareUnicodeCharacter{21D7}{\ensuremath{\nearrow}}
+\DeclareUnicodeCharacter{21D8}{\ensuremath{\searrow}}
+\DeclareUnicodeCharacter{21D9}{\ensuremath{\swarrow}}
+\DeclareUnicodeCharacter{21DA}{\ensuremath{\Lleftarrow}}
+\DeclareUnicodeCharacter{21DB}{\ensuremath{\Rrightarrow}}
+\DeclareUnicodeCharacter{21DC}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{21DD}{\ensuremath{\rightsquigarrow}}
+\DeclareUnicodeCharacter{21E0}{\ensuremath{\dashleftarrow}}
+\DeclareUnicodeCharacter{21E2}{\ensuremath{\dashrightarrow}}
+\DeclareUnicodeCharacter{21E4}{\ensuremath{\Leftarrow}}
+\DeclareUnicodeCharacter{21E5}{\ensuremath{\Rightarrow}}
+\DeclareUnicodeCharacter{21F0}{\ensuremath{\mapsto}}
+\DeclareUnicodeCharacter{21FD}{\ensuremath{\leftarrow}}
+\DeclareUnicodeCharacter{21FE}{\ensuremath{\rightarrow}}
+\DeclareUnicodeCharacter{21FF}{\ensuremath{\leftrightarrow}}
+\DeclareUnicodeCharacter{2200}{\ensuremath{\forall}}
+\DeclareUnicodeCharacter{2201}{\ensuremath{\complement}}
+\DeclareUnicodeCharacter{2202}{\ensuremath{\partial}}
+\DeclareUnicodeCharacter{2203}{\ensuremath{\exists}}
+\DeclareUnicodeCharacter{2204}{\ensuremath{\not\exists}}
+\DeclareUnicodeCharacter{2205}{\ensuremath{\varnothing}}
+\DeclareUnicodeCharacter{2207}{\ensuremath{\nabla}}
+\DeclareUnicodeCharacter{2208}{\ensuremath{\in}}
+\DeclareUnicodeCharacter{2209}{\ensuremath{\notin}}
+\DeclareUnicodeCharacter{220B}{\ensuremath{\ni}}
+\DeclareUnicodeCharacter{220C}{\ensuremath{!\ni}}
+\DeclareUnicodeCharacter{220D}{\ensuremath{\bullet}}
+\DeclareUnicodeCharacter{220E}{{\tiny \ensuremath{\blacksquare}}}
+\DeclareUnicodeCharacter{220F}{\ensuremath{\prod}}
+\DeclareUnicodeCharacter{2210}{\ensuremath{\coprod}}
+\DeclareUnicodeCharacter{2211}{\ensuremath{\sum}}
+\DeclareUnicodeCharacter{2212}{-}
+\DeclareUnicodeCharacter{2213}{\ensuremath{\mp}}
+\DeclareUnicodeCharacter{2214}{\ensuremath{\dotplus}}
+\DeclareUnicodeCharacter{2215}{\ensuremath{/}}
+\DeclareUnicodeCharacter{2216}{\ensuremath{\smallsetminus}}
+\DeclareUnicodeCharacter{2217}{\ensuremath{\star}}
+\DeclareUnicodeCharacter{2218}{\ensuremath{\circ}}
+\DeclareUnicodeCharacter{2219}{\ensuremath{\bullet}}
+\DeclareUnicodeCharacter{221A}{\ensuremath{\sqrt{}}}
+\DeclareUnicodeCharacter{221B}{\ensuremath{\sqrt[3]{}}}
+\DeclareUnicodeCharacter{221C}{\ensuremath{\sqrt[4]{}}}
+\DeclareUnicodeCharacter{221D}{\ensuremath{\propto}}
+\DeclareUnicodeCharacter{221E}{\ensuremath{\infty}}
+\DeclareUnicodeCharacter{2220}{\ensuremath{\angle}}
+\DeclareUnicodeCharacter{2221}{\ensuremath{\measuredangle}}
+\DeclareUnicodeCharacter{2222}{\ensuremath{\sphericalangle}}
+\DeclareUnicodeCharacter{2223}{\ensuremath{\mid}}
+\DeclareUnicodeCharacter{2224}{\ensuremath{\nmid}}
+\DeclareUnicodeCharacter{2225}{\ensuremath{\parallel}}
+\DeclareUnicodeCharacter{2226}{\ensuremath{\nparallel}}
+\DeclareUnicodeCharacter{2227}{\ensuremath{\wedge}}
+\DeclareUnicodeCharacter{2228}{\ensuremath{\vee}}
+\DeclareUnicodeCharacter{2229}{\ensuremath{\cap}}
+\DeclareUnicodeCharacter{222A}{\ensuremath{\cup}}
+\DeclareUnicodeCharacter{222B}{\ensuremath{\int}}
+\DeclareUnicodeCharacter{222C}{\ensuremath{\iint}}
+\DeclareUnicodeCharacter{222D}{\ensuremath{\iiint}}
+\DeclareUnicodeCharacter{222E}{\ensuremath{\oint}}
+\DeclareUnicodeCharacter{222F}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2230}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2232}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2233}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2234}{\ensuremath{\therefore}}
+\DeclareUnicodeCharacter{2235}{\ensuremath{\because}}
+\DeclareUnicodeCharacter{2236}{:}
+\DeclareUnicodeCharacter{2237}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2238}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2239}{\ensuremath{\eqcolon}}
+\DeclareUnicodeCharacter{223C}{\ensuremath{\sim}}
+\DeclareUnicodeCharacter{223D}{\ensuremath{\backsim}}
+\DeclareUnicodeCharacter{223F}{\AC}
+\DeclareUnicodeCharacter{2240}{\ensuremath{\wr}}
+\DeclareUnicodeCharacter{2241}{\ensuremath{\nsim}}
+\DeclareUnicodeCharacter{2243}{\ensuremath{\simeq}}
+\DeclareUnicodeCharacter{2244}{\ensuremath{\not\simeq}}
+\DeclareUnicodeCharacter{2245}{\ensuremath{\cong}}
+\DeclareUnicodeCharacter{2247}{\ensuremath{\ncong}}
+\DeclareUnicodeCharacter{2248}{\ensuremath{\approx}}
+\DeclareUnicodeCharacter{2249}{\ensuremath{\not\approx}}
+\DeclareUnicodeCharacter{224A}{\ensuremath{\approxeq}}
+\DeclareUnicodeCharacter{224D}{\ensuremath{\asymp}}
+\DeclareUnicodeCharacter{224E}{\ensuremath{\Bumpeq}}
+\DeclareUnicodeCharacter{224F}{\ensuremath{\bumpeq}}
+\DeclareUnicodeCharacter{2250}{\ensuremath{\doteq}}
+\DeclareUnicodeCharacter{2251}{\ensuremath{\doteqdot}}
+\DeclareUnicodeCharacter{2252}{\ensuremath{\fallingdotseq}}
+\DeclareUnicodeCharacter{2253}{\ensuremath{\risingdotseq}}
+\DeclareUnicodeCharacter{2254}{\ensuremath{\coloneqq}}
+\DeclareUnicodeCharacter{2255}{\ensuremath{\eqqcolon}}
+\DeclareUnicodeCharacter{2256}{\ensuremath{\eqcirc}}
+\DeclareUnicodeCharacter{2257}{\ensuremath{\circeq}}
+\DeclareUnicodeCharacter{2258}{\ensuremath{\stackrel{\frown}{=}}}
+\DeclareUnicodeCharacter{2259}{\ensuremath{\stackrel{\wedge}{=}}}
+\DeclareUnicodeCharacter{225A}{\ensuremath{\stackrel{\vee}{=}}}
+\DeclareUnicodeCharacter{225B}{\ensuremath{\stackrel{\star}{=}}}
+\DeclareUnicodeCharacter{225C}{\ensuremath{\triangleq}}
+\DeclareUnicodeCharacter{225D}{\ensuremath{\stackrel{\text{\tiny def}}{=}}}
+\DeclareUnicodeCharacter{225F}{\ensuremath{\stackrel{\text{\tiny ?}}{=}}}
+\DeclareUnicodeCharacter{2260}{\ensuremath{\ne}}
+\DeclareUnicodeCharacter{2261}{\ensuremath{\equiv}}
+\DeclareUnicodeCharacter{2262}{\ensuremath{\not\equiv}}
+\DeclareUnicodeCharacter{2263}{\ensuremath{\stackrel{=}{=}}}
+\DeclareUnicodeCharacter{2264}{\ensuremath{\le}}
+\DeclareUnicodeCharacter{2265}{\ensuremath{\ge}}
+\DeclareUnicodeCharacter{2266}{\ensuremath{\leqq}}
+\DeclareUnicodeCharacter{2267}{\ensuremath{\geqq}}
+\DeclareUnicodeCharacter{2268}{\ensuremath{\lneqq}}
+\DeclareUnicodeCharacter{2269}{\ensuremath{\gneqq}}
+\DeclareUnicodeCharacter{226A}{\ensuremath{\ll}}
+\DeclareUnicodeCharacter{226B}{\ensuremath{\gg}}
+\DeclareUnicodeCharacter{226C}{\ensuremath{\between}}
+\DeclareUnicodeCharacter{226D}{\ensuremath{\not\asymp}}
+\DeclareUnicodeCharacter{226E}{\ensuremath{\nless}}
+\DeclareUnicodeCharacter{226F}{\ensuremath{\ngtr}}
+\DeclareUnicodeCharacter{2270}{\ensuremath{\nleq}}
+\DeclareUnicodeCharacter{2271}{\ensuremath{\ngeq}}
+\DeclareUnicodeCharacter{2272}{\ensuremath{\lesssim}}
+\DeclareUnicodeCharacter{2273}{\ensuremath{\gtrsim}}
+\DeclareUnicodeCharacter{2274}{\ensuremath{\not\lesssim}}
+\DeclareUnicodeCharacter{2275}{\ensuremath{\not\gtrsim}}
+\DeclareUnicodeCharacter{2276}{\ensuremath{\lessgtr}}
+\DeclareUnicodeCharacter{2277}{\ensuremath{\gtrless}}
+\DeclareUnicodeCharacter{2278}{\ensuremath{\not\lessgtr}}
+\DeclareUnicodeCharacter{2279}{\ensuremath{\not\gtrless}}
+\DeclareUnicodeCharacter{227A}{\ensuremath{\prec}}
+\DeclareUnicodeCharacter{227B}{\ensuremath{\succ}}
+\DeclareUnicodeCharacter{227C}{\ensuremath{\preccurlyeq}}
+\DeclareUnicodeCharacter{227D}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{227E}{\ensuremath{\precsim}}
+\DeclareUnicodeCharacter{227F}{\ensuremath{\succsim}}
+\DeclareUnicodeCharacter{2280}{\ensuremath{\nprec}}
+\DeclareUnicodeCharacter{2281}{\ensuremath{\nsucc}}
+\DeclareUnicodeCharacter{2282}{\ensuremath{\subset}}
+\DeclareUnicodeCharacter{2283}{\ensuremath{\supset}}
+\DeclareUnicodeCharacter{2284}{\ensuremath{\not\subset}}
+\DeclareUnicodeCharacter{2285}{\ensuremath{\not\supset}}
+\DeclareUnicodeCharacter{2286}{\ensuremath{\subseteq}}
+\DeclareUnicodeCharacter{2287}{\ensuremath{\supseteq}}
+\DeclareUnicodeCharacter{2288}{\ensuremath{\nsubseteq}}
+\DeclareUnicodeCharacter{2289}{\ensuremath{\nsupseteq}}
+\DeclareUnicodeCharacter{228A}{\ensuremath{\subsetneq}}
+\DeclareUnicodeCharacter{228B}{\ensuremath{\supsetneq}}
+\DeclareUnicodeCharacter{228E}{\ensuremath{\uplus}}
+\DeclareUnicodeCharacter{228F}{\ensuremath{\sqsubset}}
+\DeclareUnicodeCharacter{2290}{\ensuremath{\sqsupset}}
+\DeclareUnicodeCharacter{2291}{\ensuremath{\sqsubseteq}}
+\DeclareUnicodeCharacter{2292}{\ensuremath{\sqsupseteq}}
+\DeclareUnicodeCharacter{2293}{\ensuremath{\sqcap}}
+\DeclareUnicodeCharacter{2294}{\ensuremath{\sqcup}}
+\DeclareUnicodeCharacter{2295}{\ensuremath{\oplus}}
+\DeclareUnicodeCharacter{2296}{\ensuremath{\ominus}}
+\DeclareUnicodeCharacter{2297}{\ensuremath{\otimes}}
+\DeclareUnicodeCharacter{2298}{\ensuremath{\oslash}}
+\DeclareUnicodeCharacter{2299}{\ensuremath{\odot}}
+\DeclareUnicodeCharacter{229A}{\ensuremath{\circledcirc}}
+\DeclareUnicodeCharacter{229B}{\ensuremath{\circledast}}
+\DeclareUnicodeCharacter{229D}{\ensuremath{\circleddash}}
+\DeclareUnicodeCharacter{229E}{\ensuremath{\boxplus}}
+\DeclareUnicodeCharacter{229F}{\ensuremath{\boxminus}}
+\DeclareUnicodeCharacter{22A0}{\ensuremath{\boxtimes}}
+\DeclareUnicodeCharacter{22A1}{\ensuremath{\boxdot}}
+\DeclareUnicodeCharacter{22A2}{\ensuremath{\vdash}}
+\DeclareUnicodeCharacter{22A3}{\ensuremath{\dashv}}
+\DeclareUnicodeCharacter{22A4}{\ensuremath{\top}}
+\DeclareUnicodeCharacter{22A5}{\ensuremath{\bot}}
+\DeclareUnicodeCharacter{22A6}{\ensuremath{\vdash}}
+\DeclareUnicodeCharacter{22A7}{\ensuremath{\models}}
+\DeclareUnicodeCharacter{22A9}{\ensuremath{\Vdash}}
+\DeclareUnicodeCharacter{22AA}{\ensuremath{\Vvdash}}
+\DeclareUnicodeCharacter{22AB}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{22AC}{\ensuremath{\not\vdash}}
+\DeclareUnicodeCharacter{22AD}{\ensuremath{\not\vDash}}
+\DeclareUnicodeCharacter{22AE}{\ensuremath{\not\Vdash}}
+\DeclareUnicodeCharacter{22AF}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{22B2}{\ensuremath{\triangleleft}}
+\DeclareUnicodeCharacter{22B3}{\ensuremath{\triangleright}}
+\DeclareUnicodeCharacter{22B4}{\ensuremath{\unlhd}}
+\DeclareUnicodeCharacter{22B5}{\ensuremath{\unrhd}}
+\DeclareUnicodeCharacter{22B8}{\ensuremath{\multimap}}
+\DeclareUnicodeCharacter{22BA}{\ensuremath{\intercal}}
+\DeclareUnicodeCharacter{22BB}{\ensuremath{\veebar}}
+\DeclareUnicodeCharacter{22BC}{\ensuremath{\barwedge}}
+\DeclareUnicodeCharacter{22C0}{\ensuremath{\bigwedge}}
+\DeclareUnicodeCharacter{22C1}{\ensuremath{\bigvee}}
+\DeclareUnicodeCharacter{22C2}{\ensuremath{\bigcap}}
+\DeclareUnicodeCharacter{22C3}{\ensuremath{\bigcup}}
+\DeclareUnicodeCharacter{22C4}{\ensuremath{\diamond}}
+\DeclareUnicodeCharacter{22C5}{\ensuremath{\cdot}}
+\DeclareUnicodeCharacter{22C6}{\ensuremath{\star}}
+\DeclareUnicodeCharacter{22C7}{\ensuremath{\divideontimes}}
+\DeclareUnicodeCharacter{22C8}{\ensuremath{\bowtie}}
+\DeclareUnicodeCharacter{22C9}{\ensuremath{\ltimes}}
+\DeclareUnicodeCharacter{22CA}{\ensuremath{\rtimes}}
+\DeclareUnicodeCharacter{22CB}{\ensuremath{\leftthreetimes}}
+\DeclareUnicodeCharacter{22CC}{\ensuremath{\rightthreetimes}}
+\DeclareUnicodeCharacter{22CD}{\ensuremath{\backsimeq}}
+\DeclareUnicodeCharacter{22CE}{\ensuremath{\curlyvee}}
+\DeclareUnicodeCharacter{22CF}{\ensuremath{\curlywedge}}
+\DeclareUnicodeCharacter{22D0}{\ensuremath{\Subset}}
+\DeclareUnicodeCharacter{22D1}{\ensuremath{\Supset}}
+\DeclareUnicodeCharacter{22D2}{\ensuremath{\Cap}}
+\DeclareUnicodeCharacter{22D3}{\ensuremath{\Cup}}
+\DeclareUnicodeCharacter{22D4}{\ensuremath{\pitchfork}}
+\DeclareUnicodeCharacter{22D6}{\ensuremath{\lessdot}}
+\DeclareUnicodeCharacter{22D7}{\ensuremath{\gtrdot}}
+\DeclareUnicodeCharacter{22D8}{\ensuremath{\lll}}
+\DeclareUnicodeCharacter{22D9}{\ensuremath{\ggg}}
+\DeclareUnicodeCharacter{22DA}{\ensuremath{\lesseqgtr}}
+\DeclareUnicodeCharacter{22DB}{\ensuremath{\gtreqless}}
+\DeclareUnicodeCharacter{22DE}{\ensuremath{\curlyeqprec}}
+\DeclareUnicodeCharacter{22DF}{\ensuremath{\curlyeqsucc}}
+\DeclareUnicodeCharacter{22E0}{\ensuremath{\not\preceq}}
+\DeclareUnicodeCharacter{22E1}{\ensuremath{\not\succeq}}
+\DeclareUnicodeCharacter{22E2}{\ensuremath{\not\sqsubseteq}}
+\DeclareUnicodeCharacter{22E3}{\ensuremath{\not\sqsupseteq}}
+\DeclareUnicodeCharacter{22E4}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{22E5}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{22E6}{\ensuremath{\lnsim}}
+\DeclareUnicodeCharacter{22E7}{\ensuremath{\gnsim}}
+\DeclareUnicodeCharacter{22E8}{\ensuremath{\precnsim}}
+\DeclareUnicodeCharacter{22E9}{\ensuremath{\succnsim}}
+\DeclareUnicodeCharacter{22EA}{\ensuremath{\not\triangleleft}}
+\DeclareUnicodeCharacter{22EB}{\ensuremath{\not\triangleright}}
+\DeclareUnicodeCharacter{22EC}{\ensuremath{\not\trianglelefteq}}
+\DeclareUnicodeCharacter{22ED}{\ensuremath{\not\trianglerighteq}}
+\DeclareUnicodeCharacter{22EE}{\ensuremath{\vdots}}
+\DeclareUnicodeCharacter{22EF}{\ensuremath{\cdots}}
+\DeclareUnicodeCharacter{22F0}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{22F1}{\ensuremath{\ddots}}
+\DeclareUnicodeCharacter{2300}{\ensuremath{\diameter}}
+\DeclareUnicodeCharacter{2308}{\ensuremath{\lceil}}
+\DeclareUnicodeCharacter{2309}{\ensuremath{\rceil}}
+\DeclareUnicodeCharacter{230A}{\ensuremath{\lfloor}}
+\DeclareUnicodeCharacter{230B}{\ensuremath{\rfloor}}
+\DeclareUnicodeCharacter{2322}{\ensuremath{\frown}}
+\DeclareUnicodeCharacter{2323}{\ensuremath{\smile}}
+\DeclareUnicodeCharacter{2329}{\ensuremath{\langle}}
+\DeclareUnicodeCharacter{232A}{\ensuremath{\rangle}}
+\DeclareUnicodeCharacter{23CE}{\ensuremath{\hookleftarrow}}
+\DeclareUnicodeCharacter{2460}{\ensuremath{\text{1}}}
+\DeclareUnicodeCharacter{2461}{\ensuremath{\text{2}}}
+\DeclareUnicodeCharacter{2462}{\ensuremath{\text{3}}}
+\DeclareUnicodeCharacter{2463}{\ensuremath{\text{4}}}
+\DeclareUnicodeCharacter{2464}{\ensuremath{\text{5}}}
+\DeclareUnicodeCharacter{2465}{\ensuremath{\text{6}}}
+\DeclareUnicodeCharacter{2466}{\ensuremath{\text{7}}}
+\DeclareUnicodeCharacter{2467}{\ensuremath{\text{8}}}
+\DeclareUnicodeCharacter{2468}{\ensuremath{\text{9}}}
+\DeclareUnicodeCharacter{25A1}{\ensuremath{\square}}
+\DeclareUnicodeCharacter{25B3}{\ensuremath{\triangle}}
+\DeclareUnicodeCharacter{25C5}{\ensuremath{\triangleleft}}
+\DeclareUnicodeCharacter{2610}{\fbox{\ensuremath{\phantom{{\checkmark}}}}}
+\DeclareUnicodeCharacter{2611}{\fbox{\ensuremath{\checkmark}}}
+\DeclareUnicodeCharacter{2615}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2621}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2627}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2639}{\ensuremath{\frownie}}
+\DeclareUnicodeCharacter{263A}{\ensuremath{\smiley}}
+\DeclareUnicodeCharacter{2660}{\ensuremath{\spadesuit}}
+\DeclareUnicodeCharacter{2661}{\ensuremath{\heartsuit}}
+\DeclareUnicodeCharacter{2662}{\ensuremath{\diamondsuit}}
+\DeclareUnicodeCharacter{2663}{\ensuremath{\clubsuit}}
+\DeclareUnicodeCharacter{266D}{\ensuremath{\flat}}
+\DeclareUnicodeCharacter{266E}{\ensuremath{\natural}}
+\DeclareUnicodeCharacter{266F}{\ensuremath{\sharp}}
+\DeclareUnicodeCharacter{26A0}{\ensuremath{\lower .25ex\hbox{\Large $\triangle$\hskip -1.25ex}!\;\,}}
+\DeclareUnicodeCharacter{2713}{\ensuremath{\checkmark}}
+\DeclareUnicodeCharacter{27C2}{\ensuremath{\perp}}
+\DeclareUnicodeCharacter{27E6}{\ensuremath{[}}
+\DeclareUnicodeCharacter{27E7}{\ensuremath{]}}
+\DeclareUnicodeCharacter{27E8}{\ensuremath{\langle}}
+\DeclareUnicodeCharacter{27E9}{\ensuremath{\rangle}}
+\DeclareUnicodeCharacter{27EA}{\ensuremath{\COMMONUNICODE@llangle}}
+\DeclareUnicodeCharacter{27EB}{\ensuremath{\COMMONUNICODE@rrangle}}
+\DeclareUnicodeCharacter{27F5}{\ensuremath{\longleftarrow}}
+\DeclareUnicodeCharacter{27F6}{\ensuremath{\longrightarrow}}
+\DeclareUnicodeCharacter{2983}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2984}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2985}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2986}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2987}{\ensuremath{(}}
+\DeclareUnicodeCharacter{2988}{\ensuremath{)}}
+\DeclareUnicodeCharacter{29F5}{\ensuremath{\setminus}}
+\DeclareUnicodeCharacter{2A00}{\ensuremath{\bigodot}}
+\DeclareUnicodeCharacter{2A01}{\ensuremath{\bigoplus}}
+\DeclareUnicodeCharacter{2A02}{\ensuremath{\bigotimes}}
+\DeclareUnicodeCharacter{2A05}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2A06}{\ensuremath{\bigsqcup}}
+\DeclareUnicodeCharacter{2A0C}{\ensuremath{\iiiint}}
+\DeclareUnicodeCharacter{2A1D}{\ensuremath{\Join}}
+\DeclareUnicodeCharacter{2A3F}{\ensuremath{\amalg}}
+\DeclareUnicodeCharacter{2A7D}{\ensuremath{\leqslant}}
+\DeclareUnicodeCharacter{2A7E}{\ensuremath{\geqslant}}
+\DeclareUnicodeCharacter{2AA8}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2AA9}{\COMMONUNICODE@LOCALunknownchar}
+\DeclareUnicodeCharacter{2AAF}{\ensuremath{\preceq}}
+\DeclareUnicodeCharacter{2AB0}{\ensuremath{\succeq}}
+\DeclareUnicodeCharacter{2C7C}{\ensuremath{_j}}
+\DeclareUnicodeCharacter{2E18}{\textinterrobangdown}
+\DeclareUnicodeCharacter{301A}{\ensuremath{[}}
+\DeclareUnicodeCharacter{301B}{\ensuremath{]}}
+\DeclareUnicodeCharacter{33D1}{\ensuremath{\ln}}
+\DeclareUnicodeCharacter{33D2}{\ensuremath{\log}}
+\DeclareUnicodeCharacter{D7B0}{\COMMONUNICODE@LOCALunknownchar}
+\fi
+
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/minimalist/minimalist-classical.sty b/macros/latex/contrib/minimalist/minimalist-classical.sty
index 11b9b94ad3..8da62f16f6 100644
--- a/macros/latex/contrib/minimalist/minimalist-classical.sty
+++ b/macros/latex/contrib/minimalist/minimalist-classical.sty
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{minimalist-classical}
- {2022/03/28} {}
+ {2022/04/03} {}
{The classical style of minimalist}
\@ifpackageloaded { minimalist } {}
@@ -249,24 +249,6 @@
}
%%================================
-%% Line numbers
-%%================================
-\PassOptionsToPackage { pagewise,mathlines } { lineno }
-\RequirePackage { linenoamsmath }
-\renewcommand{\linenumberfont}{\ttfamily\color{main-text!7!paper}\footnotesize}
-\setlength{\linenumbersep}{1em}
-
-\newif\ifLNturnsON
-\def\LocallyStopLineNumbers{\LNturnsONfalse
- \ifLineNumbers\LNturnsONtrue\fi\nolinenumbers}
-\def\ResumeLineNumbers{\ifLNturnsON\linenumbers\fi}
-
-\hook_gput_code:nnn { cmd/tableofcontents/before } { minimalist } { \LocallyStopLineNumbers }
-\hook_gput_code:nnn { cmd/tableofcontents/after } { minimalist } { \ResumeLineNumbers }
-\hook_gput_code:nnn { env/bibliography/before } { minimalist } { \LocallyStopLineNumbers }
-\hook_gput_code:nnn { env/bibliography/after } { minimalist } { \ResumeLineNumbers }
-
-%%================================
%% Title format
%%================================
\RequirePackage [ explicit, newparttoc ] { titlesec }
@@ -274,7 +256,7 @@
\RequirePackage { ulem }
\cs_generate_variant:Nn \seq_set_split:Nnn { Nnx }
-\cs_new:Nn \minimalist_apply_title_numbering_style:N
+\cs_new:Nn \minimalist_apply_title_numbering_style:n
{
#1
}
@@ -459,7 +441,7 @@
\titlecontents{part}
[0em]
{\addvspace{1.5pc}\filcenter\normalfont}
- { \minimalist_apply_title_numbering_style:N { \thecontentslabel } \nopagebreak\\\nopagebreak\uppercase}
+ { \minimalist_apply_title_numbering_style:n { \thecontentslabel } \nopagebreak\\\nopagebreak\uppercase}
{}
{} % without page number
[\addvspace{.5pc}]
@@ -469,25 +451,25 @@
\titlecontents{chapter}
[2em] % i.e., 0em (part) + 2em
{\addvspace{.5pc}\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{2em}}
{\hspace*{-2em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
\titlecontents{section}
[4em] % i.e., 2em (chapter) + 2em
{\normalfont}
- {\contentslabel[\textcolor{main-text!27!paper}{\small\g_minimalist_section_decoration_char_tl}\,\textcolor{main-text!90!paper}{ \minimalist_apply_title_numbering_style:N { \thecontentslabel } }\,\textcolor{main-text!27!paper}{\small\g_minimalist_section_decoration_char_tl}]{2em}}
+ {\contentslabel[\textcolor{main-text!27!paper}{\small\g_minimalist_section_decoration_char_tl}\,\textcolor{main-text!90!paper}{ \minimalist_apply_title_numbering_style:n { \thecontentslabel } }\,\textcolor{main-text!27!paper}{\small\g_minimalist_section_decoration_char_tl}]{2em}}
{\hspace*{-2em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
\titlecontents{subsection}
[7em] % i.e., 4em (section) + 3em
{\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.75em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{2.75em}}
{\hspace*{-2.75em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
\titlecontents{subsubsection}
[9.5em] % i.e., 7em (subsection) + 3.5em
{\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{3.25em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{3.25em}}
{\hspace*{-3.25em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
}
@@ -495,19 +477,19 @@
\titlecontents{section}
[2em] % i.e., 0em (part) + 2em
{\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{1.75em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{1.75em}}
{\hspace*{-1.75em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
\titlecontents{subsection}
[4.5em] % i.e., 2em (section) + 2.5em
{\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.25em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{2.25em}}
{\hspace*{-2.25em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
\titlecontents{subsubsection}
[7.5em] % i.e., 4.5em (subsection) + 3em
{\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.75em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{2.75em}}
{\hspace*{-2.75em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
}
@@ -549,8 +531,8 @@
, PT = Esta~página~foi~intencionalmente~deixada~em~branco
, BR = Esta~página~foi~intencionalmente~deixada~em~branco
, ES = Esta~página~se~ha~dejado~intencionadamente~en~blanco
- , CN = 此页为有意留为空白
- , TC = 此頁為有意留為空白
+ , CN = \ziju{0.2} 此页为有意留为空白
+ , TC = \ziju{0.2} 此頁為有意留為空白
, JP = このページは意図的に空白にしてあります
, RU = Эта~страница~намеренно~оставлена~пустой
}
@@ -562,12 +544,73 @@
\hook_gput_next_code:nn { shipout/background }
{
\put(0.5\paperwidth,-0.5\paperheight){
- \makebox[0pt]{\large\color{main-text!10!paper}\bl@nkpagetext}}
+ \makebox[0pt]{\large\color{main-text!10!paper}\g_minimalist_title_font_common_tl\bl@nkpagetext}}
}
\null\newpage\fi\fi
}
%%================================
+%% Index
+%%================================
+\RequirePackage { imakeidx }
+\makeindex[intoc]
+
+\RequirePackage { silence }
+\ExplSyntaxOff
+\WarningFilter{latex}{Writing or overwriting file}
+\begin{filecontents*}[overwrite]{\jobname.mst}
+delim_0 "\\IndexDotfill " % Filler between section heading and page number
+delim_1 "\\IndexDotfill " % Filler between subsection heading and page number
+headings_flag 1
+heading_prefix "\\IndexHeading{"
+heading_suffix "}\n"
+\end{filecontents*}
+\ExplSyntaxOn
+
+\projlib_langauge_define_multilingual_text:Nn \index_symbols_name
+ {
+ , EN = Symbols
+ , FR = Symboles
+ , DE = Symbole
+ , IT = Simboli
+ , PT = Símbolos
+ , BR = Símbolos
+ , ES = Símbolos
+ , CN = 符号
+ , TC = 符號
+ , JP = 記号
+ , RU = Символы
+ }
+
+\newcommand*{\IndexDotfill}
+ {
+ \nobreakspace\nobreakspace
+ \titlerule*[.67em]{\textcolor{main-text!15!paper}{.}}
+ \nobreakspace\nobreakspace
+ }
+\newcommand*{\IndexHeading}[1]
+ {
+ \str_if_eq:nnTF { #1 } { Symbols }
+ { \tl_set:Nn \l_tmpa_tl { \index_symbols_name } }
+ { \tl_set:Nn \l_tmpa_tl { #1 } }
+ \centerline{ \g_minimalist_title_font_common_tl \minimalist_apply_title_numbering_style:n { \l_tmpa_tl } }
+ \nopagebreak
+ \par
+ \vspace{.3\baselineskip}
+ }
+\renewcommand*{\indexspace}
+ {
+ \par
+ \vspace{2pc~plus~.5pc~minus~.3pc}
+ }
+
+\hook_gput_code:nnn { begindocument/before } { minimalist }
+ {
+ \hook_gput_code:nnn { cmd/printindex/before } { minimalist } { \LocallyStopLineNumbers }
+ \hook_gput_code:nnn { cmd/printindex/after } { minimalist } { \ResumeLineNumbers }
+ }
+
+%%================================
%% Draft mark
%%================================
\RequirePackage { projlib-draft }
@@ -621,12 +664,15 @@
{
\providecommand{\phantomsection}{}
\RequirePackage { url }
- \newcommand{\href}[2]{#2}
+ \providecommand{\href}[2]{#2}
+ \providecommand{\texorpdfstring}[2]{#1}
}
{
- \PassOptionsToPackage { hidelinks,linktoc=all } { hyperref }
- \RequirePackage { bookmark }
\RequirePackage { hyperref }
+ \RequirePackage { bookmark }
+ \hypersetup{ hidelinks, linktoc = all }
+ \bookmarksetup{ numbered }
+ \renewcommand\Hy@numberline[1]{#1.~}
}
\RequirePackage { projlib-theorem }
@@ -784,8 +830,8 @@
top = 0pt, bottom = 0pt,
left = 0pt, right = 0pt,
boxrule = 0pt, boxsep = 0pt,
- before~skip = 1em+\parskip,
- after~skip = 1.2em+\parskip,
+ before~skip = \parskip+\topsep+.25\baselineskip,
+ after~skip = \parskip+\topsep+.25\baselineskip,
breakable, lines~before~break=3,
]
}
@@ -803,14 +849,6 @@
}
}
-%%================================
-%% Index
-%%================================
-\hook_gput_code:nnn { begindocument/before } { minimalist }
- {
- \hook_gput_code:nnn { cmd/printindex/before } { minimalist } { \LocallyStopLineNumbers }
- \hook_gput_code:nnn { cmd/printindex/after } { minimalist } { \ResumeLineNumbers }
- }
%%================================
%% Title block style
diff --git a/macros/latex/contrib/minimalist/minimalist-doc.pdf b/macros/latex/contrib/minimalist/minimalist-doc.pdf
index 4a834618d8..88711cb5f5 100644
--- a/macros/latex/contrib/minimalist/minimalist-doc.pdf
+++ b/macros/latex/contrib/minimalist/minimalist-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/minimalist/minimalist-doc.tex b/macros/latex/contrib/minimalist/minimalist-doc.tex
index 5ff51c62cc..04283f464e 100644
--- a/macros/latex/contrib/minimalist/minimalist-doc.tex
+++ b/macros/latex/contrib/minimalist/minimalist-doc.tex
@@ -38,7 +38,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -95,7 +95,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\title{\minimalist{}, write your articles or books in a simple and clear way}
\author{Jinwen XU}
@@ -179,7 +179,7 @@ Let's first look at a complete example of \minimart{} (the same works for \einfa
\maketitle
\begin{abstract}
- Ceci est un résumé. \dnf<(*\meta{some hint}*)>
+ Ceci est un résumé. \DNF<(*\meta{some hint}*)>
\end{abstract}
\begin{keyword}
AAA, BBB, CCC, DDD, EEE
@@ -276,7 +276,7 @@ In addition, you may also write in the \AmS{} fashion, i.e.:
\medskip
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
When you have some places that have not yet been finished yet, you can mark them with this command, which is especially useful during the draft stage.
@@ -381,7 +381,7 @@ In the next section, we will go through the options available.
\begin{tip}
During the draft stage, it is recommended to use the \verb|fast| option to speed up compilation. When in \verb|fast| mode, there will be a watermark ``DRAFT'' to indicate that you are currently in the draft mode.
\end{tip}
- \item \texttt{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item Allow boldface. When this option is enabled, the main title, the titles of all levels and the names of theorem-like environments will be bolded.
\end{itemize}
@@ -506,9 +506,9 @@ By default, when referenced, the name of the theorem matches the current context
\LevelTwoTitle{Draft mark}
-You can use \lstinline|\dnf| to mark the unfinished part. For example:
+You can use \lstinline|\DNF| to mark the unfinished part. For example:
\begin{itemize}
- \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
+ \item \lstinline|\DNF| or \lstinline|\DNF<...>|. The effect is: \DNF~ or \DNF<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\DNF} in French mode.
\end{itemize}
\LevelTwoTitle{Title, abstract and keywords}
diff --git a/macros/latex/contrib/minimalist/minimalist-plain.sty b/macros/latex/contrib/minimalist/minimalist-plain.sty
index 3481c630dc..736c26aa2f 100644
--- a/macros/latex/contrib/minimalist/minimalist-plain.sty
+++ b/macros/latex/contrib/minimalist/minimalist-plain.sty
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{minimalist-plain}
- {2022/03/28} {}
+ {2022/04/03} {}
{The plain style of minimalist}
\@ifpackageloaded { minimalist } {}
@@ -235,24 +235,6 @@
}
%%================================
-%% Line numbers
-%%================================
-\PassOptionsToPackage { pagewise,mathlines } { lineno }
-\RequirePackage { linenoamsmath }
-\renewcommand{\linenumberfont}{\ttfamily\color{main-text!7!paper}\footnotesize}
-\setlength{\linenumbersep}{1em}
-
-\newif\ifLNturnsON
-\def\LocallyStopLineNumbers{\LNturnsONfalse
- \ifLineNumbers\LNturnsONtrue\fi\nolinenumbers}
-\def\ResumeLineNumbers{\ifLNturnsON\linenumbers\fi}
-
-\hook_gput_code:nnn { cmd/tableofcontents/before } { minimalist } { \LocallyStopLineNumbers }
-\hook_gput_code:nnn { cmd/tableofcontents/after } { minimalist } { \ResumeLineNumbers }
-\hook_gput_code:nnn { env/bibliography/before } { minimalist } { \LocallyStopLineNumbers }
-\hook_gput_code:nnn { env/bibliography/after } { minimalist } { \ResumeLineNumbers }
-
-%%================================
%% Title format
%%================================
\RequirePackage [ explicit, newparttoc ] { titlesec }
@@ -260,11 +242,12 @@
\RequirePackage { ulem }
\cs_generate_variant:Nn \seq_set_split:Nnn { Nnx }
-\cs_new:Nn \minimalist_apply_title_numbering_style:N
+\cs_new:Nn \minimalist_apply_title_numbering_style:n
{
- \seq_set_split:Nnx \l_tmpa_seq { . } { #1 }
- \seq_set_map:NNn \l_tmpb_seq \l_tmpa_seq { \usefont{U}{zeur}{b}{n} ##1 }
- \textcolor{main-text!39!paper}{ \seq_use:Nn \l_tmpb_seq { $.$ } }
+ \tl_set:Nx \l_tmpa_tl { #1 }
+ \regex_replace_all:nnN { (\w) } { \c{textbf}{\1} } \l_tmpa_tl
+ \regex_replace_all:nnN { (\d) } { {\c{usefont}{U}{zeur}{b}{n}\1} } \l_tmpa_tl
+ \textcolor { main-text!39!paper } { \l_tmpa_tl }
}
\newcommand{\partstring}{\MakeUppercase{{\partname\nobreakspace\protect\thepart}}}
@@ -388,7 +371,7 @@
\titleformat{\section}
{\LocallyStopLineNumbers
\g_minimalist_title_font_section_tl\centering}
- {\raisebox{-.02\baselineskip}{\large \minimalist_apply_title_numbering_style:N { \thesection } }}{1em}
+ {\raisebox{-.02\baselineskip}{\large \minimalist_apply_title_numbering_style:n { \thesection } }}{1em}
{#1}
[\ResumeLineNumbers]
@@ -396,7 +379,7 @@
\titleformat{\subsection}
{\LocallyStopLineNumbers
\g_minimalist_title_font_subsection_tl}
- { \minimalist_apply_title_numbering_style:N { \thesubsection } }{.75em}
+ { \minimalist_apply_title_numbering_style:n { \thesubsection } }{.75em}
{#1}
[\ResumeLineNumbers]
@@ -405,14 +388,14 @@
{
\titleformat{\subsubsection}[runin]
{\g_minimalist_title_font_subsubsection_tl}
- { \minimalist_apply_title_numbering_style:N { \thesection } }{.5em}
+ { \minimalist_apply_title_numbering_style:n { \thesection } }{.5em}
{#1.}[\hspace*{.3em}]
}
{
\titleformat{\subsubsection}
{\LocallyStopLineNumbers
\g_minimalist_title_font_subsubsection_tl}
- { \minimalist_apply_title_numbering_style:N { \thesubsubsection } }{.5em}
+ { \minimalist_apply_title_numbering_style:n { \thesubsubsection } }{.5em}
{#1}
[\ResumeLineNumbers]
}
@@ -432,7 +415,7 @@
\titlecontents{part}
[0em]
{\addvspace{1.5pc}\filcenter\normalfont}
- { \minimalist_apply_title_numbering_style:N { \thecontentslabel } \nopagebreak\\\nopagebreak\uppercase}
+ { \minimalist_apply_title_numbering_style:n { \thecontentslabel } \nopagebreak\\\nopagebreak\uppercase}
{}
{} % without page number
[\addvspace{.5pc}]
@@ -442,25 +425,25 @@
\titlecontents{chapter}
[2em] % i.e., 0em (part) + 2em
{\addvspace{.5pc}\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{2em}}
{\hspace*{-2em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
\titlecontents{section}
[4em] % i.e., 2em (chapter) + 2em
{\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{2em}}
{\hspace*{-2em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
\titlecontents{subsection}
[7em] % i.e., 4em (section) + 3em
{\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.75em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{2.75em}}
{\hspace*{-2.75em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
\titlecontents{subsubsection}
[9.5em] % i.e., 7em (subsection) + 3.5em
{\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{3.25em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{3.25em}}
{\hspace*{-3.25em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
}
@@ -468,19 +451,19 @@
\titlecontents{section}
[2em] % i.e., 0em (part) + 2em
{\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{1.75em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{1.75em}}
{\hspace*{-1.75em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
\titlecontents{subsection}
[4.5em] % i.e., 2em (section) + 2.5em
{\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.25em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{2.25em}}
{\hspace*{-2.25em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
\titlecontents{subsubsection}
[7.5em] % i.e., 4.5em (subsection) + 3em
{\normalfont}
- {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.75em}}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:n { \thecontentslabel } ]{2.75em}}
{\hspace*{-2.75em}}
{\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
}
@@ -517,8 +500,8 @@
, PT = Esta~página~foi~intencionalmente~deixada~em~branco
, BR = Esta~página~foi~intencionalmente~deixada~em~branco
, ES = Esta~página~se~ha~dejado~intencionadamente~en~blanco
- , CN = 此页为有意留为空白
- , TC = 此頁為有意留為空白
+ , CN = \ziju{0.2} 此页为有意留为空白
+ , TC = \ziju{0.2} 此頁為有意留為空白
, JP = このページは意図的に空白にしてあります
, RU = Эта~страница~намеренно~оставлена~пустой
}
@@ -530,12 +513,73 @@
\hook_gput_next_code:nn { shipout/background }
{
\put(0.5\paperwidth,-0.5\paperheight){
- \makebox[0pt]{\large\color{main-text!10!paper}\bl@nkpagetext}}
+ \makebox[0pt]{\large\color{main-text!10!paper}\g_minimalist_title_font_common_tl\bl@nkpagetext}}
}
\null\newpage\fi\fi
}
%%================================
+%% Index
+%%================================
+\RequirePackage { imakeidx }
+\makeindex[intoc]
+
+\RequirePackage { silence }
+\ExplSyntaxOff
+\WarningFilter{latex}{Writing or overwriting file}
+\begin{filecontents*}[overwrite]{\jobname.mst}
+delim_0 "\\IndexDotfill " % Filler between section heading and page number
+delim_1 "\\IndexDotfill " % Filler between subsection heading and page number
+headings_flag 1
+heading_prefix "\\IndexHeading{"
+heading_suffix "}\n"
+\end{filecontents*}
+\ExplSyntaxOn
+
+\projlib_langauge_define_multilingual_text:Nn \index_symbols_name
+ {
+ , EN = Symbols
+ , FR = Symboles
+ , DE = Symbole
+ , IT = Simboli
+ , PT = Símbolos
+ , BR = Símbolos
+ , ES = Símbolos
+ , CN = 符号
+ , TC = 符號
+ , JP = 記号
+ , RU = Символы
+ }
+
+\newcommand*{\IndexDotfill}
+ {
+ \nobreakspace\nobreakspace
+ \titlerule*[.67em]{\textcolor{main-text!15!paper}{.}}
+ \nobreakspace\nobreakspace
+ }
+\newcommand*{\IndexHeading}[1]
+ {
+ \str_if_eq:nnTF { #1 } { Symbols }
+ { \tl_set:Nn \l_tmpa_tl { \index_symbols_name } }
+ { \tl_set:Nn \l_tmpa_tl { #1 } }
+ \centerline{ \g_minimalist_title_font_common_tl \minimalist_apply_title_numbering_style:n { \l_tmpa_tl } }
+ \nopagebreak
+ \par
+ \vspace{.3\baselineskip}
+ }
+\renewcommand*{\indexspace}
+ {
+ \par
+ \vspace{2pc~plus~.5pc~minus~.3pc}
+ }
+
+\hook_gput_code:nnn { begindocument/before } { minimalist }
+ {
+ \hook_gput_code:nnn { cmd/printindex/before } { minimalist } { \LocallyStopLineNumbers }
+ \hook_gput_code:nnn { cmd/printindex/after } { minimalist } { \ResumeLineNumbers }
+ }
+
+%%================================
%% Draft mark
%%================================
\RequirePackage { projlib-draft }
@@ -576,12 +620,15 @@
{
\providecommand{\phantomsection}{}
\RequirePackage { url }
- \newcommand{\href}[2]{#2}
+ \providecommand{\href}[2]{#2}
+ \providecommand{\texorpdfstring}[2]{#1}
}
{
- \PassOptionsToPackage { hidelinks,linktoc=all } { hyperref }
- \RequirePackage { bookmark }
\RequirePackage { hyperref }
+ \RequirePackage { bookmark }
+ \hypersetup{ hidelinks, linktoc = all }
+ \bookmarksetup{ numbered }
+ \renewcommand\Hy@numberline[1]{#1.~}
}
\RequirePackage { projlib-theorem }
@@ -739,8 +786,8 @@
top = 0pt, bottom = 0pt,
left = 0pt, right = 0pt,
boxrule = 0pt, boxsep = 0pt,
- before~skip = 1em+\parskip,
- after~skip = 1.2em+\parskip,
+ before~skip = \parskip+\topsep+.25\baselineskip,
+ after~skip = \parskip+\topsep+.25\baselineskip,
breakable, lines~before~break=3,
]
}
@@ -758,14 +805,7 @@
}
}
-%%================================
-%% Index
-%%================================
-\hook_gput_code:nnn { begindocument/before } { minimalist }
- {
- \hook_gput_code:nnn { cmd/printindex/before } { minimalist } { \LocallyStopLineNumbers }
- \hook_gput_code:nnn { cmd/printindex/after } { minimalist } { \ResumeLineNumbers }
- }
+\hook_gput_code:nnn { env/quote/begin } { minimalist } { \small }
%%================================
%% Title block style
diff --git a/macros/latex/contrib/minimalist/minimalist.sty b/macros/latex/contrib/minimalist/minimalist.sty
index 9a7a7fbd06..e8796eafdc 100644
--- a/macros/latex/contrib/minimalist/minimalist.sty
+++ b/macros/latex/contrib/minimalist/minimalist.sty
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{minimalist}
- {2022/03/28} {}
+ {2022/04/03} {}
{A simple and clear style for articles and books}
\keys_define:nn { minimalist }
@@ -73,6 +73,24 @@
}
%%================================
+%% Line numbers
+%%================================
+\PassOptionsToPackage { pagewise,mathlines } { lineno }
+\RequirePackage { linenoamsmath }
+\renewcommand{\linenumberfont}{\ttfamily\color{main-text!7!paper}\footnotesize}
+\setlength{\linenumbersep}{1em}
+
+\newif\ifLNturnsON
+\def\LocallyStopLineNumbers{\LNturnsONfalse
+ \ifLineNumbers\LNturnsONtrue\fi\nolinenumbers}
+\def\ResumeLineNumbers{\ifLNturnsON\linenumbers\fi}
+
+\hook_gput_code:nnn { cmd/tableofcontents/before } { minimalist } { \LocallyStopLineNumbers }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { minimalist } { \ResumeLineNumbers }
+\hook_gput_code:nnn { env/bibliography/before } { minimalist } { \LocallyStopLineNumbers }
+\hook_gput_code:nnn { env/bibliography/after } { minimalist } { \ResumeLineNumbers }
+
+%%================================
%% Paper configuration
%%================================
\RequirePackage { projlib-paper }
diff --git a/macros/latex/contrib/minimalist/minimart.cls b/macros/latex/contrib/minimalist/minimart.cls
index b9b2a86689..28af7fd1c3 100644
--- a/macros/latex/contrib/minimalist/minimart.cls
+++ b/macros/latex/contrib/minimalist/minimart.cls
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplClass
{minimart}
- {2022/03/28} {}
+ {2022/04/03} {}
{A simple and clear article style}
\tl_const:Nn \l__minimclass_base_class_tl { article }
@@ -140,6 +140,10 @@
\RequirePackage { minimalist }
+\raggedbottom
+\hfuzz=2pt
+\vfuzz=2pt
+
%%================================
%% Fonts
%%================================
diff --git a/macros/latex/contrib/minimalist/minimbook.cls b/macros/latex/contrib/minimalist/minimbook.cls
index 65c08a2fdc..c416799745 100644
--- a/macros/latex/contrib/minimalist/minimbook.cls
+++ b/macros/latex/contrib/minimalist/minimbook.cls
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplClass
{minimbook}
- {2022/03/28} {}
+ {2022/04/03} {}
{A simple and clear book style}
\tl_const:Nn \l__minimclass_base_class_tl { book }
@@ -140,6 +140,10 @@
\RequirePackage { minimalist }
+\raggedbottom
+\hfuzz=2pt
+\vfuzz=2pt
+
%%================================
%% Fonts
%%================================
diff --git a/macros/latex/contrib/projlib/ProjLib.dtx b/macros/latex/contrib/projlib/ProjLib.dtx
index dd0b2e393f..03de30a0d0 100644
--- a/macros/latex/contrib/projlib/ProjLib.dtx
+++ b/macros/latex/contrib/projlib/ProjLib.dtx
@@ -20,77 +20,77 @@
%<*ProjLib>
\ProvidesExplPackage
{ProjLib}
- {2022/03/28} {}
+ {2022/04/03} {}
{Collective interface of the ProjLib toolkit}
%</ProjLib>
%
%<*projlib-author>
\ProvidesExplPackage
{projlib-author}
- {2022/03/28} {}
+ {2022/04/03} {}
{Enhanced author information block}
%</projlib-author>
%
%<*projlib-datetime>
\ProvidesExplPackage
{projlib-datetime}
- {2022/03/28} {}
+ {2022/04/03} {}
{Convert numeric date-time string to natural language}
%</projlib-datetime>
%
%<*projlib-draft>
\ProvidesExplPackage
{projlib-draft}
- {2022/03/28} {}
+ {2022/04/03} {}
{Useful commands during draft stage}
%</projlib-draft>
%
%<*projlib-font>
\ProvidesExplPackage
{projlib-font}
- {2022/03/28} {}
+ {2022/04/03} {}
{Font selection and configuration}
%</projlib-font>
%
%<*projlib-language>
\ProvidesExplPackage
{projlib-language}
- {2022/03/28} {}
+ {2022/04/03} {}
{Multi-language configuration}
%</projlib-language>
%
%<*projlib-logo>
\ProvidesExplPackage
{projlib-logo}
- {2022/03/28} {}
+ {2022/04/03} {}
{The ProjLib logo}
%</projlib-logo>
%
%<*projlib-math>
\ProvidesExplPackage
{projlib-math}
- {2022/03/28} {}
+ {2022/04/03} {}
{Efficient math setup}
%</projlib-math>
%
%<*projlib-paper>
\ProvidesExplPackage
{projlib-paper}
- {2022/03/28} {}
+ {2022/04/03} {}
{Configuration of the paper style}
%</projlib-paper>
%
%<*projlib-theorem>
\ProvidesExplPackage
{projlib-theorem}
- {2022/03/28} {}
+ {2022/04/03} {}
{Configuration of theorem-like environments}
%</projlib-theorem>
%
%<*projlib-titlepage>
\ProvidesExplPackage
{projlib-titlepage}
- {2022/03/28} {}
+ {2022/04/03} {}
{Commands for rendering the title page}
%</projlib-titlepage>
@@ -499,10 +499,20 @@
, month-year .code:n = { \tl_set:Nn \g__projlib_datetime_input_format_tl { day-month-year } }
, day-month .code:n = { \tl_set:Nn \g__projlib_datetime_input_format_tl { day-month-year } }
, only-year-month .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-year-month } }
- , only-month-day .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-month-day } }
- , only-year .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-year } }
- , only-month .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-month } }
- , only-day .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-day } }
+ , only~year~month .meta:n = { only-year-month }
+ , only year month .meta:n = { only-year-month }
+ , only-month-day .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-month-day } }
+ , only~month~day .meta:n = { only-month-day }
+ , only month day .meta:n = { only-month-day }
+ , only-year .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-year } }
+ , only~year .meta:n = { only-year }
+ , only year .meta:n = { only-year }
+ , only-month .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-month } }
+ , only~month .meta:n = { only-month }
+ , only month .meta:n = { only-month }
+ , only-day .code:n = { \tl_set:Nn \l__projlib_datetime_output_format_tl { only-day } }
+ , only~day .meta:n = { only-day }
+ , only day .meta:n = { only-day }
, unknown .code:n = {}
}
@@ -2176,72 +2186,73 @@
}
-\projlib_langauge_define_multilingual_text:Nn \projlib_draft_dnf_text
+\projlib_langauge_define_multilingual_text:Nn \projlib_draft_DNF_text
{
- EN = To\ be\ finished ,
- FR = Pas\ encore\ fini ,
- DE = Nicht\ beendet ,
- IT = Per\ essere\ finito ,
- PT = Não\ terminou ,
- BR = Não\ terminou ,
- ES = Estar\ terminado ,
- CN = 这里尚未完成 ,
- TC = 這裡尚未完成 ,
- JP = 終わってない ,
- RU = Не\ закончен ,
+ EN = To ~ be ~ finished ,
+ FR = Pas ~ encore ~ fini ,
+ DE = Nicht ~ beendet ,
+ IT = Per ~ essere ~ finito ,
+ PT = Não ~ terminou ,
+ BR = Não ~ terminou ,
+ ES = Estar ~ terminado ,
+ CN = 这里尚未完成 ,
+ TC = 這裡尚未完成 ,
+ JP = 終わってない ,
+ RU = Не ~ закончен ,
}
-\projlib_langauge_define_multilingual_text:Nn \projlib_draft_dnf_report_text
+\projlib_langauge_define_multilingual_text:Nn \projlib_draft_DNF_report_text
{
- EN = { Below\ is\ a\ list\ of\ outstanding\ items,
- \ followed\ by\ the\ corresponding\ page\ numbers. } ,
- FR = { Voici\ la\ liste\ des\ éléments\ en\ suspens,
- \ suivie\ des\ numéros\ de\ page\ correspondants. } ,
- DE = { Unten\ ist\ eine\ Liste\ der\ ausstehenden\ Posten,
- \ gefolgt\ von\ den\ entsprechenden\ Seitenzahlen. } ,
- IT = { Qui\ sotto\ c'è\ una\ lista\ di\ voci\ in\ sospeso,
- \ seguita\ dai\ numeri\ di\ pagina\ corrispondenti. } ,
- PT = { Abaixo\ está\ uma\ lista\ de\ itens\ pendentes,
- \ seguida\ dos\ números\ de\ página\ correspondentes. } ,
- BR = { Abaixo\ está\ uma\ lista\ de\ itens\ pendentes,
- \ seguida\ dos\ números\ de\ página\ correspondentes. } ,
- ES = { Aquí está\ la\ lista\ de\ elementos\ pendientes,
- \ seguida\ de\ los\ números\ de\ página\ correspondientes. } ,
- CN = { 以下是未完成事项列表,括号内注明了对应的页码。 } ,
- TC = { 以下是未完成事項的列表,括號內註明了對應頁碼。 } ,
- JP = { 以下は、未解決の項目とそれに対応するページ番号の一覧です。 } ,
- RU = { Ниже\ приведен\ список\ невыполненных\ пунктов
- \ с\ соответствующими\ номерами\ страниц\ в\ скобках. } ,
+ EN = { Below ~ is ~ a ~ list ~ of ~ outstanding ~ items, ~
+ followed ~ by ~ the ~ corresponding ~ page ~ numbers. } ,
+ FR = { Voici ~ la ~ liste ~ des ~ éléments ~ en ~ suspens, ~
+ suivie ~ des ~ numéros ~ de ~ page ~ correspondants. } ,
+ DE = { Unten ~ ist ~ eine ~ Liste ~ der ~ ausstehenden ~ Posten, ~
+ gefolgt ~ von ~ den ~ entsprechenden ~ Seitenzahlen. } ,
+ IT = { Qui ~ sotto ~ c'è ~ una ~ lista ~ di ~ voci ~ in ~ sospeso, ~
+ seguita ~ dai ~ numeri ~ di ~ pagina ~ corrispondenti. } ,
+ PT = { Abaixo ~ está ~ uma ~ lista ~ de ~ itens ~ pendentes, ~
+ seguida ~ dos ~ números ~ de ~ página ~ correspondentes. } ,
+ BR = { Abaixo ~ está ~ uma ~ lista ~ de ~ itens ~ pendentes, ~
+ seguida ~ dos ~ números ~ de ~ página ~ correspondentes. } ,
+ ES = { Aquí está ~ la ~ lista ~ de ~ elementos ~ pendientes, ~
+ seguida ~ de ~ los ~ números ~ de ~ página ~ correspondientes. } ,
+ CN = { 以下是未完成事项列表,括号内注明了对应的页码。 } ,
+ TC = { 以下是未完成事項的列表,括號內註明了對應頁碼。 } ,
+ JP = { 以下は、未解決の項目とそれに対応するページ番号の一覧です。 } ,
+ RU = { Ниже ~ приведен ~ список ~ невыполненных ~ пунктов ~
+ с ~ соответствующими ~ номерами ~ страниц ~ в ~ скобках. } ,
}
-\tl_new:c { projlib_draft_dnf_font }
-\tl_gset:cn { projlib_draft_dnf_font } { \normalfont \ttfamily \bfseries \small }
+\tl_new:c { projlib_draft_DNF_font }
+\tl_gset:cn { projlib_draft_DNF_font } { \small \normalfont \bfseries \ttfamily \hyphenchar\font=`\-\spaceskip=.5em ~ plus ~ .5em\xspaceskip=.5em }
-\definecolor { projlib_draft_dnf_color } { RGB } { 21, 122, 20 }
+\definecolor { projlib_draft_DNF_color } { RGB } { 21, 122, 20 }
-\newcounter { projlib_draft_dnf_counter }
+\newcounter { projlib_draft_DNF_counter }
-\tl_new:N \g__projlib_draft_dnf_report_tl
+\tl_new:N \g__projlib_draft_DNF_report_tl
-\NewDocumentCommand \dnf { D<>{} }
+\NewDocumentCommand \DNF { D<>{} }
{
\noindent
\group_begin:
- \projlib_draft_dnf_font
- \stepcounter { projlib_draft_dnf_counter }
- \projlib_draft_plain_box:nn { projlib_draft_dnf_color }
+ \projlib_draft_DNF_font
+ \stepcounter { projlib_draft_DNF_counter }
+ \projlib_draft_plain_box:nn { projlib_draft_DNF_color }
{
- \projlib_draft_dnf_text
+ \projlib_draft_DNF_text
\nobreakspace
- \# \theprojlib_draft_dnf_counter
+ \# \theprojlib_draft_DNF_counter
\tl_if_blank:nF { #1 } { \, : ~ }
- #1
+ \tl_trim_spaces:n { #1 }
}
\group_end:
- \tl_gput_right:Nx \g__projlib_draft_dnf_report_tl
+ \tl_gput_right:Nx \g__projlib_draft_DNF_report_tl
{
+ \noindent
\# \,
- \int_value:w \theprojlib_draft_dnf_counter
+ \int_value:w \theprojlib_draft_DNF_counter
\c_space_tl \c_space_tl
$\langle$
\skip_horizontal:n { 0.1em }
@@ -2255,8 +2266,10 @@
\skip_horizontal:n { 0.1em }
$\rangle$
\nobreakspace
- \IfNoValueF { #1 } { : ~ }
- #1 \newline
+ \exp_not:n { \tl_if_blank:nF { #1 } { : ~ } }
+ \exp_not:n { \tl_trim_spaces:n { #1 } }
+ \par \skip_vertical:n { -\parskip }
+ \skip_vertical:n { .15\baselineskip }
}
}
@@ -2264,15 +2277,16 @@
{
\hook_gput_code:nnn { enddocument } { projlib-draft }
{
- \tl_if_blank:VF \g__projlib_draft_dnf_report_tl
+ \tl_if_blank:VF \g__projlib_draft_DNF_report_tl
{
\clearpage
- \pagestyle{empty}
+ \pagestyle { empty }
+ \color { projlib_draft_DNF_color }
\noindent
- \color { projlib_draft_dnf_color }
- \projlib_draft_dnf_font
- \projlib_draft_dnf_report_text \\[0.75\baselineskip]
- \g__projlib_draft_dnf_report_tl
+ \projlib_draft_DNF_font
+ \projlib_draft_DNF_report_text
+ \par \bigskip
+ \g__projlib_draft_DNF_report_tl
}
}
}
@@ -3018,7 +3032,7 @@
{ % #1 = command name (with backslash)
% #2 = key-value name configuration
\keyval_parse:nnn
- {}
+ { \use_none:n }
{ \__projlib_langauge_define_multilingual_text_do:nnn { \cs_to_str:N #1 } }
{ #2 }
\tl_gset:Nn #1
@@ -3041,6 +3055,14 @@
{
\projlib_langauge_define_multilingual_text:Nn #1 { #2 }
}
+
+
+\PassOptionsToPackage { autostyle } { csquotes }
+\RequirePackage { csquotes }
+
+\DeclareQuoteStyle { schinese } {“} {”} {‘} {’}
+\DeclareQuoteStyle { tchinese } {“} {”} {‘} {’}
+\DeclareQuoteStyle { japanese } {「} {」} {『} {』}
%</projlib-language>
%
%<*projlib-logo>
@@ -3379,6 +3401,42 @@
\projlib_math_define_shortcut:nnn { #1 } { #3 } { #2 }
}
}
+
+
+\cs_new:Nn \__projlib_math_list_of_symbols_entry:nnnn
+ % #1 = column one width
+ % #2 = column two width
+ % #3 = symbol
+ % #4 = description
+ {
+ \noindent
+ \begin { tabular } { p{#1} p{#2} }
+ \parbox [t] { #1 } { #3 } & \parbox [t] { #2 } { #4 }
+ \end { tabular }
+ \par
+ \skip_vertical:n { -\parskip }
+ }
+
+\cs_new:Nn \projlib_math_list_of_symbols:nnn
+ % #1 = column one width
+ % #2 = column two width
+ % #3 = key-val list
+ {
+ \keyval_parse:nnn
+ { \use_none:n }
+ { \__projlib_math_list_of_symbols_entry:nnnn { #1 } { #2 } }
+ { #3 }
+ }
+
+\NewDocumentCommand \ProjLibListOfSymbols { O{0.17\textwidth} O{0.75\textwidth} m }
+ {
+ \projlib_math_list_of_symbols:nnn { #1 } { #2 } { #3 }
+ }
+
+\ProvideDocumentCommand \ListOfSymbols { O{0.17\textwidth} O{0.75\textwidth} m }
+ {
+ \projlib_math_list_of_symbols:nnn { #1 } { #2 } { #3 }
+ }
%</projlib-math>
%
%<*projlib-paper>
@@ -3594,7 +3652,7 @@
\cs_generate_variant:Nn \keyval_parse:nnn { nno }
\keyval_parse:nno
- { }
+ { \use_none:n }
{ \projlib_theorem_preset_theorem_style:nn }
{ \l__projlib_theorem_theorem_style_tl }
diff --git a/macros/latex/contrib/projlib/README.md b/macros/latex/contrib/projlib/README.md
index 3e927c0fb5..ab478f4771 100644
--- a/macros/latex/contrib/projlib/README.md
+++ b/macros/latex/contrib/projlib/README.md
@@ -4,10 +4,10 @@
# The `ProjLib` Toolkit
-This bundle is dated 2022/03/28. Please note that the documentations are not yet up-to-date.
-
> **ProjLib** can be interpreted as "***Proj**ect **Lib**rary*" (in English), or as "***Proj**et **Lib**re*" (in French, meaning "*Free Project*").
+**This bundle is dated 2022/04/03. Please note that the documentations are not yet up-to-date.**
+
## Introduction
`ProjLib` is a collection of tools that help you write LaTeX document. With the main package `ProjLib` loaded (note that it is *case-sensitive*), you no longer need to manually configure the appropriate multilingual settings nor to set up the theorem-like environments. In addition, a series of auxiliary functionalities are introduced.
@@ -31,31 +31,32 @@ The modules include:
- `\thanks` can be written outside `\author`;
- The `abstract` environment can be placed before `\maketitle`.
1. module `datetime` - *Convert numeric date-time string to natural language*
- - Offering `\TheDate` and `\Thedate` to convert numeric date-time string to normal datetime format, with multi-language support (if the command names `\TheDate` or `\Thedate` are occupied, then one can switch to the longer version `\ProjLibDate` and `\ProjLibdate`).
- - Offering `\ProjLibToday` and `\ProjLibToday` (with the module `language` enabled, `\today` is redefined into `\ProjLibToday`, and thus supports the arguments like `only-year-month`).
+ - `\TheDate` and `\Thedate` for converting numeric date-time string to natural language, with multi-language support (if the command names `\TheDate` or `\Thedate` are occupied, then one can switch to the longer version `\ProjLibDate` and `\ProjLibdate`).
+ - `\ProjLibToday` and `\ProjLibToday` (with the module `language` enabled, `\today` is redefined into `\ProjLibToday`, and thus supports the arguments like `only-year-month`).
- Multiple input and output format available.
1. module `draft` - *Useful commands during draft stage*
- - Offering `\dnf` for marking unfinished part. In addition, a report of all unfinished places shall be printed at the last of your document.
+ - `\DNF` for marking unfinished part. In addition, a report of all unfinished places shall be printed at the last of your document.
1. module `font` - *Font selection and configuration*
- Supporting Palatino, Times, Garamond, Biolinum, Noto, etc.
1. module `language` - *Multi-language configuration*
- - Offering `\UseLanguage`, `\UseOtherLanguage` for selecting languages, and `\AddLanguageSetting` for adding language-specific settings.
- - Define multilingual text string with `\DefineMultilingualText`.
+ - `\UseLanguage`, `\UseOtherLanguage` for selecting languages, and `\AddLanguageSetting` for adding language-specific settings.
+ - `\DefineMultilingualText` for defining multilingual text strings.
- Currently support Chinese (simplified and traditional), English, French, German, Italien, Japanese, Portuguese (European and Brazilian), Russian and Spanish.
1. module `logo` - *The ProjLib logo*
- Draw the `ProjLib` logo in colorful or colorless fashion.
1. module `math` - *Efficient math setup*
- - Offering `\DefineOperator` and `\DefineShortcut` for setting up math macros efficiently
+ - `\DefineOperator` and `\DefineShortcut` for setting up math macros efficiently
+ - `\ListOfSymbols` for printing list of symboks
1. module `paper` - *Configuration of the paper style*
- Paper style configuration, with the themes `yellow`, `green`, `light gray`, `gray`, `dark`, etc.
1. module `theorem` - *Configuration of theorem-like environments*
- - Set up theorem-like environments based on the package `create-theorem`, and in particular, support options `name as is` and `name as context` for referencing names
+ - `\CreateTheorem`, `\SetTheorem` and more: setting up theorem-like environments based on the package `create-theorem`, and in particular, supporting the modes `name as is` and `name as context` for referencing names
- Support options `simple name` and `complex name` for referencing names
- Preset environments include: `assertion`, `assumption`, `axiom`, `conclusion`, `conjecture`, `convention`, `corollary`, `definition`, `definition-proposition`, `definition-theorem`, `example`, `exercise`, `fact`, `hypothesis`, `lemma`, `notation`, `observation`, `postulate`, `problem`, `property`, `proposition`, `question`, `remark`, `theorem`, and the corresponding unnumbered version with an asterisk `*` in the name.
1. module `titlepage` - *Commands for rendering the title page*
- Currently support two title page styles: `default` and `simple`.
-> Since module `theorem.sty` (and thus `ProjLib`) uses `cleveref`, it should be loaded after `varioref` and `hyperref`.
+> Since the module `theorem` uses `cleveref`, it should be loaded after `varioref` and `hyperref` (same for the main package `ProjLib`).
## How to get these files
You can get the `.sty` files mentioned above simply by compiling `ProjLib.ins`:
diff --git a/macros/latex/contrib/scontents/README.md b/macros/latex/contrib/scontents/README.md
index fe1c537bf1..95b0291960 100644
--- a/macros/latex/contrib/scontents/README.md
+++ b/macros/latex/contrib/scontents/README.md
@@ -1,42 +1,48 @@
## scontents — Stores LaTeX contents in memory or files
-- Version: 1.9
-- Date: 2020-01-21
-- Author: Pablo González
+
+Release v2.0 \[2022-04-04\]
## Description
+
This package allows to store `LaTeX` code, including _"verbatim"_, in <code>&lt;sequences&gt;</code>
using the `l3seq` module of `expl3`. The <code>&lt;stored content&gt;</code> can be used
as many times as desired in the document, additionally you can write to <code>&lt;external files&gt;</code>
or show it in <code>&lt;verbatim style&gt;</code>.
## Requirements
+
The package loads and depends on updated versions of:
- [expl3](https://ctan.org/pkg/expl3)
- [l3keys2e](https://ctan.org/pkg/l3keys2e)
-- [xparse](https://ctan.org/pkg/xparse)
## Installation
-The package `scontents` is present in `TeXLive` and `MiKTeX`, use the
+The package `scontents` is present in `TeX Live` and `MiKTeX`, use the
package manager to install.
-For manual installation, download `scontents.zip` and unzip it,
+For manual installation, download [scontents.zip](http://mirrors.ctan.org/macros/latex/contrib/scontents.zip) and unzip it,
then run:
+
```
-$ pdftex scontents.ins
+$ luatex scontents.ins
```
-and move all files to appropriate locations:
+
+Now the different files must be moved into the different directories in your
+installation `TDS` tree or in your `TEXMFHOME`:
+
```
- scontents.tex -> TDS:tex/generic/scontents/
- scontents-code.tex -> TDS:tex/generic/scontents/
- scontents.sty -> TDS:tex/latex/scontents/
- t-scontents.mkiv -> TDS:tex/context/third/scontents/
- scontents.pdf -> TDS:doc/latex/scontents/
- README.md -> TDS:doc/latex/scontents/
- scontents.dtx -> TDS:source/latex/scontents/
- scontents.ins -> TDS:source/latex/scontents/
+ scontents.tex -> TDS:tex/generic/scontents/scontents.tex
+ scontents-code.tex -> TDS:tex/generic/scontents/scontents-code.tex
+ scontents.sty -> TDS:tex/latex/scontents/scontents.sty
+ t-scontents.mkiv -> TDS:tex/context/third/scontents/t-scontents.mkiv
+ scontents.pdf -> TDS:doc/latex/scontents/scontents.pdf
+ scontents.dtx -> TDS:source/latex/scontents/scontents.dtx
+ scontents.ins -> TDS:source/latex/scontents/scontents.ins
```
-then run `mktexlsr`.
+
+then run `mktexlsr`. To produce the documentation with source code run `luatex scontents.ins` and
+`lualatex scontents.dtx` three times.
+
## Examples
The file <code>&lt;scontents.pdf&gt;</code> contains attached examples, which can be extracted
@@ -45,14 +51,21 @@ from the PDF viewer or from the command line by running:
```
$ pdfdetach -saveall scontents.pdf
```
+
and then you can use the excellent `arara` tool to compile them.
## License
+
The scontents package may be modified and distributed under the terms and
conditions of the [LaTeX Project Public License](https://www.latex-project.org/lppl/), version 1.3c or greater.
## Contents
+
- README.md (this file)
- scontents.pdf (documentation)
- scontents.dtx (master file that produced all files)
- scontents.ins (installer to extract all files)
+
+## Author and copyright
+
+Copyright 2019-2022 by Pablo González L.
diff --git a/macros/latex/contrib/scontents/scontents.dtx b/macros/latex/contrib/scontents/scontents.dtx
index f13db2db83..d82fec48c0 100644
--- a/macros/latex/contrib/scontents/scontents.dtx
+++ b/macros/latex/contrib/scontents/scontents.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2019-2020 by Pablo González L <pablgonz@educarchile.cl>
+% Copyright (C) 2019-2022 by Pablo González L <pablgonz@educarchile.cl>
%
% 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
@@ -32,23 +32,27 @@
% so that entries written to both streams end up in the same file.
\usepackage[english]{babel}
\usepackage[top=0.5in,bottom=0.3in,left=2in,right=0.7in,footskip=0.2in,headheight=1cm,headsep=0.27cm]{geometry}
-\usepackage[osf,mono=false,scale=0.95,llscaled=0.95]{libertine}
+\usepackage[osf,nomath,mono=false,ScaleSF=0.95,ScaleRM=0.95]{libertinus-otf}
+% Set Monospace font, fix 'quotes' in verbatim
+\usepackage{sourcecodepro}
+\defaultfontfeatures[\ttfamily]
+ {
+ Numbers = OldStyle,
+ Scale = 0.80,
+ Extension = .otf,
+ }
\setmonofont[
- Numbers = OldStyle,
- Scale = 0.80,
UprightFont = *-Regular,
ItalicFont = *-RegularIt,
BoldFont = *-Semibold,
BoldItalicFont = *-SemiboldIt,
- RawFeature = {+zero,+ss06},
- FontFace = {m}{sc}{LinBiolinum_R.otf},
- Extension = .otf]{SourceCodePro}
-\newfontfamily\sourcecodeprolight{SourceCodePro-Regular.otf}[
+ RawFeature = {+zero,+ss06}]{SourceCodePro}
+\newfontfamily\mysourcecodeprolight{SourceCodePro-Regular.otf}[
Scale = 0.80,FakeStretch =0.75,
FontFace = {m}{it}{Font =SourceCodePro-RegularIt.otf,Color=FF0000}]
\RenewDocumentCommand{\MacroLongFont}{}
{
- \sourcecodeprolight\small
+ \mysourcecodeprolight\small
}
% The character of visible space is now taken from Latin Modern Mono
% to prevent fonts in T1. The original definition for xetex/luatex is
@@ -69,12 +73,13 @@
\newfontfamily\fetamontotf{ffmw10.otf}[
Scale = 0.95,%
RawFeature = {+latn,+rand,+kern,+size},%
- FontFace = {bx}{n}{ffmw10.otf},
+ FontFace = {b}{n}{ffmw10.otf},% fix raplece font
]
\usepackage[svgnames]{xcolor}
\usepackage[sf,bf,compact,medium,pagestyles]{titlesec}
-\usepackage{lastpage,imakeidx,microtype,attachfile2}
-\usepackage{adjustbox,multicol,listings,accsupp,titletoc,hypdestopt}
+\usepackage{lastpage,microtype,attachfile2}
+\usepackage{adjustbox,multicol,listings,accsupp,titletoc}
+\usepackage{imakeidx}
\usepackage{scontents} % main
\usepackage[contents]{colordoc}
% \show\docCodelineNo
@@ -102,6 +107,21 @@
|catcode`| 12|gdef|sxmacro@code#1% \end{macrocode*}[|liii@xmacro@code[#1]|end[macrocode*]]
|endgroup
+% Patching colordoc.sty to work with doc v3 (TeX Live 2022 & lualatex-dev)
+\usepackage{etoolbox}
+\makeatletter
+\@ifpackagelater{doc}{2022-06-01}%
+ {\patchcmd\macro@finish
+ {\ifnot@excluded % \if
+ \edef\@tempa{\noexpand\SpecialIndex{\bslash\macro@namepart}}%
+ \@tempa \fi}%
+ {\maybe@index@macro \macro@namepart}
+ {}{\FAILED}%
+ \let\default@color\current@color
+ }%
+ {}
+\makeatother
+
\EnableCrossrefs
% \PageIndex % \CodelineIndex undoes what \PageIndex does
% \CodelineIndex tries to open another write stream for the index file. We don't
@@ -128,8 +148,8 @@
\ExplSyntaxOff
\indexsetup{level=\section,firstpagestyle=myheader,othercode=\pagestyle{myheader}}
-\makeindex[name=userdoc,options=-s gind.ist,columnsep=15pt,title={Index of Documentation}]
-\makeindex[options=-s gind.ist,columnsep=15pt,title={Index of Implementation}]
+\makeindex[name=userdoc,options={-q -s gind.ist},columnsep=15pt,title={Index of Documentation}]
+\makeindex[options={-q -s gind.ist},columnsep=15pt,title={Index of Implementation}]
% Now, after imakeidx opens the write stream for the index file, we copy
% the reference to \@indexfile:
\makeatletter
@@ -420,7 +440,7 @@
% Reserved words 6 (optcolor)
keywordstyle = [6]{\color{optcolor}},%
keywords = [6]{store-cmd,store-env,print-env,print-cmd,write-env,%
- start,stopt,wrapper,sep,step,before,after,write-out,%
+ start,stopt,wrapper,sep,step,before,after,write-out,write-cmd,%
overwrite,width-tab,force-eol,inner,outer,I,J,M,L,Ascheol},%
% Reserved words 7 (OrangeRed)
keywordstyle = [7]{\color{OrangeRed}},%
@@ -501,18 +521,18 @@
\lstMakeShortInline[language=scontents-doc,basicstyle=\ttfamily]§
% Get file info
-\GetFileInfo{\jobname.sty}
+\GetFileInfo{scontents.sty}
% Config hyperref
\hypersetup{
allcolors = linkcolor,
- colorlinks = true,%
- linktoc = all,%
- pdftitle = {.:: The scontents package --- \fileinfo{} ::.},%
+ colorlinks = true,
+ linktoc = all,
+ pdftitle = {.:: The scontents package --- \fileinfo{} ::.},
pdfauthor = {Pablo González L},
- pdfsubject = {Documentation for \fileversion{} [\filedate] },%
- pdfkeywords = {sequences, contents, external files, expl3, xparse, l3seq, store contents},
- bookmarksopenlevel = 1,%
+ pdfsubject = {Documentation for \fileversion{} [\filedate] },
+ pdfkeywords = {sequences, contents, external files, expl3, l3seq, store contents},
+ bookmarksopenlevel = 1
}
% Configuration titleps and titlesec
@@ -530,7 +550,7 @@
}
\setfoot{\rlap{\hskip\dimexpr-\oddsidemargin-1in\relax%
\parbox{1.93\paperwidth}{\hfil\thepage\,/\,\pageref{LastPage}}}}%
- {\parbox{\textwidth}{\raggedright \textcolor{gray}{\raisebox{-1pt}{\textcopyright}{}2019--2020 by Pablo González}}}%
+ {\parbox{\textwidth}{\raggedright \textcolor{gray}{\raisebox{-1pt}{\textcopyright}{}2019--2022 by Pablo González}}}%
{}%
\sethead{\llap{\raisebox{0.55cm}{\parbox{\dimexpr\oddsidemargin+1in\relax}{\makebox[0pt][l]{\hspace{15pt}\pkglogo\space\fileversion}}}}}
{\raisebox{0.55cm}{\parbox{\textwidth}{\hspace*{-\oddsidemargin}\centering\small\S.\thesection\space\sectiontitle}}}%
@@ -580,12 +600,12 @@
% \scalebox{1.57}{\pkglogo}\\[2pt]
% \Large
% \textsf{Stores \hologo{LaTeX}}{ \fetamontotf{contents} }\\[3pt]
-% \fileversion{} --- \filedate\thanks{
+% \fileversion \quad \filedate\thanks{
% This file describes a documentation for \fileversion, last revised
% \filedate.}\\[25pt]
% \author{
% \large
-% \raisebox{-1pt}{\textcopyright}{}2019--2020 by Pablo González\thanks{
+% \raisebox{-1pt}{\textcopyright}{}2019--2022 by Pablo González\thanks{
% E-mail: \textcolor{OrangeRed}{\textsf{\guillemotleft}}\email{pablgonz@educarchile.cl}\textcolor{OrangeRed}{\textsf{\guillemotright}}.
% }%
% }
@@ -610,12 +630,23 @@
%
% \setlength{\parskip}{3pt}
%
+% \section{Description of the package}
+%
+% \begin{scontents}[store-env=description, print-env=true]
+% The \mypkg*{scontents} package allows to \mymeta{store contents} in \mymeta{sequences}
+% or \mymeta{external files}. In some ways it is similar to the \mypkg{filecontentsdef}
+% package, with the difference in which the \mymeta{content} is stored. The idea behind
+% this package is to get an approach to \hologo{ConTeXt} \enquote{\emph{buffers}} by
+% making use \mymeta{sequences}.
+% \end{scontents}
+%
% \section{Motivation and Acknowledgments}
%
% In \hologo{LaTeX} there is no direct way to record content for later use, although
% you can do this using §\macros§, recording \mymeta[type=rm]{verbatim content} is a
-% problem, usually you can avoid this by creating external files or boxes. The
-% general idea of this package is to try to imitate this implementation
+% problem, usually you can avoid this by creating external files or boxes.
+%
+% The general idea of this package is to try to imitate this implementation
% \enquote{\emph{buffers}} that has \hologo{ConTeXt} which allows you to save content in
% memory, including \emph{verbatim}, to be used later. The package
% \mypkg{filecontentsdef} solves this problem and since \mypkg{expl3} has an
@@ -625,7 +656,7 @@
% Fran\c{c}ois Burnol} who was kind enough to take my requirements into account
% and add the \myenv{filecontentsdefmacro} environment. Also a special thanks to
% Phelype Oleinik who has collaborated and adapted a large part of the code and
-% all \hologo{LaTeX3} team for their great work and to the different members
+% all \hologo{LaTeX} team for their great work and to the different members
% of the \href{https://tex.stackexchange.com}{TeX-SX} community who have provided
% great answers and ideas. Here a note of the main ones:
%
@@ -641,6 +672,10 @@
% \item \href{https://tex.stackexchange.com/q/373647/7832}{Collect contents of an environment (that contains verbatim content)}
% \end{enumerate}
%
+% \thispagestyle{plain}
+% \newpage
+% \pagestyle{myheader}
+%
% \section{License and Requirements}
% \label{sec:licence}
%
@@ -649,30 +684,41 @@
% (\url{http://www.latex-project.org/lppl.txt}). The software has the status
% \enquote{maintained}.
%
-% \medskip
-%
-% The \mypkg*{scontents} package loads \mypkg{expl3}, \mypkg{xparse} and
+% The \mypkg*{scontents} package loads \mypkg{expl3} (minimum version 2020-02-08) and
% \mypkg{l3keys2e}. This package can be used with "plain", "context", "xelatex",
% "lualatex", "pdflatex" and the classical workflow §latex>dvips>ps2pdf§.
%
-% \thispagestyle{plain}
-%
-% \newpage
-%
-% \pagestyle{myheader}
-%
% \section{The \texttt{scontents} package}
% \label{sec:pkgscontents}
%
-% \subsection{Description of the package and load}
+% \subsection{Installation}
%
-% \begin{scontents}[store-env=description, print-env=true]
-% The \mypkg*{scontents} package allows to \mymeta{store contents} in \mymeta{sequences}
-% or \mymeta{external files}. In some ways it is similar to the \mypkg{filecontentsdef}
-% package, with the difference in which the \mymeta{content} is stored. The idea behind
-% this package is to get an approach to \hologo{ConTeXt} \enquote{\emph{buffers}} by
-% making use \mymeta{sequences}.
-% \end{scontents}
+% The package \mypkg*{scontents} is present in \hologo{TeX} Live and \hologo{MiKTeX},
+% use the package manager to install. For manual installation, download
+% \href{https://mirrors.ctan.org/macros/latex/contrib/scontents.zip}{scontents.zip}
+% and unzip it, run \lstinline[language=scontents-doc,basicstyle=\ttfamily]+luatex scontents.ins+
+% and move all files to appropriate locations, then run "mktexlsr". To produce the documentation
+% with source code run \lstinline[language=scontents-doc,basicstyle=\ttfamily]+luatex scontents.ins+ and
+% "lualatex scontents.dtx" three times.
+%
+% \iffalse
+%<*example>
+% \fi
+\begin{examplecode}[frame=single,language={}]
+ scontents.tex > TDS:tex/generic/scontents/
+ scontents-code.tex > TDS:tex/generic/scontents/
+ scontents.sty > TDS:tex/latex/scontents/
+ t-scontents.mkiv > TDS:tex/context/third/scontents/
+ scontents.pdf > TDS:doc/latex/scontents/
+ README.md > TDS:doc/latex/scontents/
+ scontents.dtx > TDS:source/latex/scontents/
+ scontents.ins > TDS:source/latex/scontents/
+\end{examplecode}
+% \iffalse
+%</example>
+% \fi
+%
+% \subsection{Loading and options}
%
% The package is loaded in the usual way:
%
@@ -731,10 +777,10 @@
%
% Some users use horizontal "TAB"s \enquote{\LKeyTab} from keyboard to indented the source
% code of the document and depending on the text editor used, some will use real "TAB"s
-% (\enquote{hard tabs}), others with \enquote{soft tabs}(\verb*| | or \verb*| |)
+% (\enquote{\emph{hard tabs}}), others with \enquote{\emph{soft tabs}}(\verb*| | or \verb*| |)
% or both.
%
-% At first glance it may seem the same, but the way in which "TAB"s (\enquote{hard tabs})
+% At first glance it may seem the same, but the way in which "TAB"s (\enquote{\emph{hard tabs}})
% are processed according to the context in which they are found within
% a file, both in \mymeta{reading}\footnote{Check the answer given by Ulrich Diez
% in \href{https://tex.stackexchange.com/a/508103/7832}{Keyboard TAB
@@ -746,7 +792,7 @@
% are treated as explicit spaces (in most contexts) and is the behavior when
% \mymeta{stored contents}, but when \mymeta{writing files} these are preserved.
%
-% With a \hologo{TeX}Live distribution, the "TAB" character is \enquote{printable}
+% With a \hologo{TeX} Live distribution, the "TAB" character is \enquote{\emph{printable}}
% for "latex", "pdflatex" and "lualatex", but if you use "xelatex" you
% must add the \texttt{\textcolor{optcolor}{-8bit}} option on the command
% line, otherwise you will get \hologo{TeX}-"TAB" (§^^I§) in the \mymeta{output file}.
@@ -796,7 +842,7 @@
% environment and the \mykey{store-cmd} key of the \ics*{Scontents} command. This key is
% only available as a package option or using \ics*{setupsc}.
%
-% \newpage
+% \medskip
%
% \keyexamp{overwrite}{true \textnormal{\textcolor{lightgray}{\textbar}} false}{false}
% Sets whether the \mymeta{files} generated by \mykey{write-out} and \mykey{write-env}
@@ -1198,7 +1244,6 @@ This text is in the outer environment (after nested).
% stored in the \mymarg{seq name}. The key \mykey{width-tab} is available for
% this command.
%
-%
% \subsection{The environment \env{verbatimsc}}
% \label{sec:verbatimsc}
%
@@ -1209,14 +1254,11 @@ This text is in the outer environment (after nested).
% contents.
% \end{function}
%
-% One consideration to keep in mind is that this is a \emph{representation}
-% of the \mymeta{stored content} in a \emph{verbatim} environment and not
-% a real \emph{verbatim} environment. The \mypkg{verbatim} package is not
-% compatible with the implementation of the \myenv*{verbatimsc} environment.
+% One consideration to keep in mind is that this is a \enquote{\emph{representation}}
+% of the \mymeta{stored content} in a \enquote{\emph{verbatim}} environment.
%
-%^^A \newpage
-%
-% The \myenv*{verbatimsc} environment can be customized in the following ways:
+% The \myenv*{verbatimsc} environment can be customized in the
+% following ways after loading the \mypkg*{scontents} package:
%
% Using the package \mypkg{fancyvrb}:
% \iffalse
@@ -1227,6 +1269,7 @@ This text is in the outer environment (after nested).
\let\verbatimsc\@undefined
\let\endverbatimsc\@undefined
\makeatother
+\usepackage{fancyvrb}
\DefineVerbatimEnvironment{verbatimsc}{Verbatim}{numbers=left}
\end{examplecode}
% \iffalse
@@ -1624,7 +1667,6 @@ This is from the verbatim environment:
% \textattachfile[color=linkcolor,print=false]{scexamp5.ltx}{\faFile*[regular]}.
% \lstinputlisting[language=scontents-doc,numbers=left]{scexamp5.ltx}
%
-%
% \subsubsection*{Example 6}
%
% \iffalse
@@ -1796,7 +1838,7 @@ and more.+
%<*example>
% \fi
\begin{scontents}[write-out=scexamp9.ltx]
-% arara: xelatex : {shell: true, options: [-8bit]}
+% arara: xelatex: {shell: true, options: [-8bit]}
% arara: clean: { extensions: [ aux, log] }
\documentclass{article}
\usepackage{scontents}
@@ -1852,7 +1894,6 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \newpage
%
-%
% \section{Change history}
% \label{sec:changes}
%
@@ -1864,11 +1905,18 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \setlist[itemize,1]{label=\textendash,wide=0.5em,nosep,noitemsep,leftmargin=10pt}
% \newlength\descrwidth
-% \settowidth{\descrwidth}{\textsf{v1.0, (ctan), 2019-07-30} }
+% \settowidth{\descrwidth}{\textsf{v1.0a, (ctan), 2019-07-30} }
%
% \begin{description}[font=\small\sffamily,wide=0pt,style=multiline,leftmargin=\descrwidth,nosep,noitemsep]
% \item [\fileversion{} (ctan), \filedate]
% \begin{itemize}
+% \item Adapting the |verbatimsc| environment (compatibility |verbatim| package).
+% \item Removed compatibility layer for older \hologo{LaTeX} releases.
+% \item Fix loader in \hologo{plainTeX} and \hologo{ConTeXt}.
+% \item Minor adjustments in the documentation.
+% \end{itemize}
+% \item [v1.9 (ctan), 2020-01-21]
+% \begin{itemize}
% \item Update and improvements in the internal code.
% \item Updating the generic code for |I/O| verification.
% \item Add |write-cmd| and |write-out| keys for |\Scontents*|.
@@ -1916,7 +1964,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \item Added |force-eol|, |verb-font| and |width-tab| keys.
% \item The extra space has been removed when you run |\getstored|.
% \item Internal code has been rewritten more efficiently.
-% \item Remove |\typestored|.
+% \item Remove starred argument for |\typestored|.
% \item Remove |filecontentsdef| dependency.
% \item Changing |\regex_replace_all:| for |\tl_replace_all:|.
% \end{itemize}
@@ -1948,15 +1996,15 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \def\section*#1{\stdsection{#1}}
%
% \begin{thebibliography}{9}
-% \bibitem{expl3} The \hologo{LaTeX3} Project. \enquote{The \textsf{expl3}
+% \bibitem{expl3} The \hologo{LaTeX} Project. \enquote{The \textsf{expl3}
% package}. Available from
% \textsc{ctan}, \url{https://www.ctan.org/pkg/expl3}, 2020.
%
-% \bibitem{xparse} The \hologo{LaTeX3} Project. \enquote{The \textsf{xparse}
+% \bibitem{xparse} The \hologo{LaTeX} Project. \enquote{The \textsf{xparse}
% package}. Available from
% \textsc{ctan}, \url{https://www.ctan.org/pkg/xparse}, 2020.
%
-% \bibitem{l3keys} The \hologo{LaTeX3} Project. \enquote{The \textsf{l3keys2e}
+% \bibitem{l3keys} The \hologo{LaTeX} Project. \enquote{The \textsf{l3keys2e}
% package}. Available from
% \textsc{ctan}, \url{https://www.ctan.org/pkg/l3keys2e}, 2020.
%
@@ -2005,38 +2053,30 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% Now we define some common macros to hold the package date and version:
% \begin{macrocode}
-%<loader>\def\ScontentsFileDate{2020-01-21}%
-%<core>\def\ScontentsCoreFileDate{2020-01-21}%
+%<loader>\def\ScontentsFileDate{2022-04-04}%
+%<core>\def\ScontentsCoreFileDate{2022-04-04}%
%<*loader>
-\def\ScontentsFileVersion{1.9}%
+\def\ScontentsFileVersion{2.0}%
\def\ScontentsFileDescription{Stores LaTeX contents in memory or files}%
% \end{macrocode}
%
% The \LaTeX{} loader is fairly simple: just load the dependencies, load the
% core code, and then set interfaces up.
%
-% We also check if the \pkg{verbatim} package is loaded and show a compatibility
-% warning.
% \begin{macrocode}
%<*latex>
-\RequirePackage{expl3,xparse,l3keys2e}[2019/05/28]
+\RequirePackage{l3keys2e}[2020/02/08]
\ProvidesExplPackage
{scontents} {\ScontentsFileDate} {\ScontentsFileVersion} {\ScontentsFileDescription}
-\@ifpackageloaded { verbatim }
- {
- \msg_set:nnn { scontents } { unsupported-verbatim }
- {
- The~implementation~of~the~'verbatimsc'~environment~used~by~
- \iow_char:N \\typestored~is~not~compatible~with~package~'verbatim'.~
- Review~the~documentation~and~redefine~the~'verbatimsc'~environment.
- }
- \msg_warning:nn { scontents } { unsupported-verbatim }
- } { }
%</latex>
% \end{macrocode}
-% The Plain and \hologo{ConTeXt} loaders are similar (probably because I don't
-% know how to make a proper \hologo{ConTeXt} module :-). We define a
-% \LaTeX{}-style §\ver@scontents.sty§ macro with version info (just in case):
+%
+% The \hologo{plainTeX} and \hologo{ConTeXt} loaders are similar
+% (probably because I don't know how to make a proper \hologo{ConTeXt}
+% module :-). We define a \LaTeX{}-style §\ver@scontents.sty§ macro with
+% version info (just in case) and add §\ExplSyntaxOn§ to be able to load
+% \pkg{xparse} later.
+%
% \begin{macrocode}
%<*!latex>
%<context>\writestatus{loading}{User Module scontents v\ScontentsFileVersion}
@@ -2049,8 +2089,8 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%</!latex>
% \end{macrocode}
%
-% In Plain, check that the package isn't being loaded twice (\LaTeX{} and
-% \hologo{ConTeXt} already defend against that):
+% In \hologo{plainTeX}, check that the package isn't being loaded twice
+% (\LaTeX{} and \hologo{ConTeXt} already defend against that):
% \begin{macrocode}
%<*plain>
\msg_gset:nnn { scontents } { already-loaded }
@@ -2064,14 +2104,18 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%</plain>
% \end{macrocode}
%
-% \begin{macro}{\g_@@_end_verbatimsc_tl,\c_@@_end_env_tl}
-% A token list to match when ending \env{verbatimsc} and \env{scontents}
-% environments.
+% \subsection{Definition of variables by format}
+%
+% We define and set variables that must be handled separately in order
+% to work properly with \hologo{plainTeX}, \hologo{ConTeXt} and \LaTeX.
+%
+% \begin{macro}{\g_@@_end_verbatimsc_tl}
+% A global token list \cs{g_@@_end_verbatimsc_tl} match when ending
+% \env{verbatimsc} environment.
%
% \begin{macrocode}
\tl_new:N \g_@@_end_verbatimsc_tl
-\tl_gset_rescan:Nnn
- \g_@@_end_verbatimsc_tl
+\tl_gset_rescan:Nnn \g_@@_end_verbatimsc_tl
{
\char_set_catcode_other:N \\
%<*latex>
@@ -2082,6 +2126,16 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%<latex> { \end{verbatimsc} }
%<plain> { \endverbatimsc }
%<context> { \stopverbatimsc }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\c_@@_end_env_tl,\l_@@_env_name_tl}
+% A token list \cs{c_@@_end_env_tl} match when ending environments
+% defined by \cs{newenvsc}, \cs{l_@@_env_name_tl} storing the name
+% of environments defined by \cs{newenvsc}.
+%
+% \begin{macrocode}
+\tl_new:N \l_@@_env_name_tl
\tl_const:Nx \c_@@_end_env_tl
{
\c_backslash_str
@@ -2099,13 +2153,15 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\file_input:n { scontents-code.tex }
% \end{macrocode}
%
-% Sometimes we need to detect the format from within a macro:
+% \begin{macro}{\@@_format_case:nnn}
+% Sometimes we need to detect the format from within a macro:
% \begin{macrocode}
\cs_new:Npn \@@_format_case:nnn #1 #2 #3
%<latex> {#1} % LaTeX
%<plain> {#2} % Plain/Generic
%<context> {#3} % ConTeXt
% \end{macrocode}
+% \end{macro}
%
% Checking that the package was loaded with the proper loader code. This code
% was copied from \texttt{expl3-code.tex}.
@@ -2156,10 +2212,45 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\next
% \end{macrocode}
%
-% \subsection{Definition of common keys}
+% \subsection{Definition of temporary variables}
+%
+% \begin{macro}{\l_@@_macro_tmp_tl,\l_@@_temp_tl,\g_@@_temp_tl,\l_@@_tmpa_int,
+% \l_@@_temp_bool}
+% The token list \cs{l_@@_macro_tmp_tl} is a temporary token list to
+% hold the contents of the macro/environment. \cs{l_@@_temp_tl},
+% \cs{g_@@_temp_tl}, \cs{l_@@_tmpa_int} and \cs{l_@@_temp_bool} are
+% generic temporary vars.
+% \begin{macrocode}
+\tl_new:N \l_@@_macro_tmp_tl
+\tl_new:N \l_@@_temp_tl
+\tl_new:N \g_@@_temp_tl
+\int_new:N \l_@@_tmpa_int
+\bool_new:N \l_@@_temp_bool
+% \end{macrocode}
+% \end{macro}
%
-% We create some common \mymeta{keys} that will be used by the options passed to
-% the package as well as by the environments and commands defined.
+% \subsection{Compatibility layer with \hologo{plainTeX} and \hologo{ConTeXt}}
+%
+% When loading the package outside of \LaTeX{} we can't usually use
+% \pkg{xparse}. However since \pkg{xparse} now \pkg{ltcmd} is part of
+% the \LaTeX{} kernel is loadable in any format.
+%
+% \begin{macrocode}
+%</core>
+%<*loader&!latex>
+\int_set:Nn \l_@@_tmpa_int { \char_value_catcode:n { `\@ } }
+\char_set_catcode_letter:N \@
+\file_input:n { xparse-generic.tex }
+\char_set_catcode:nn { `\@ } { \l_@@_tmpa_int }
+%</loader&!latex>
+%<*core>
+% \end{macrocode}
+%
+% \subsection{Definition of keys for the package}
+%
+% We create some common \mymeta{keys} that will be used by the options
+% passed to the package as well as by the environments and commands
+% defined.
%
% \begin{macrocode}
\keys_define:nn { scontents }
@@ -2198,74 +2289,78 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%<plain|context> { verb-font .initial:n = \tt }
% \end{macrocode}
%
-% In \LaTeX{} mode we load \mypkg{l3keys2e} process the \mymeta{keys} as options
-% passed on to the package, the package \pkg{l3keys2e} will verify the
-% \mymeta{keys} and will return an error when they are \emph{unknown}.
+% In \LaTeX{} mode we load \mypkg{l3keys2e} process the \mymeta{keys}
+% as options passed on to the package, the package \pkg{l3keys2e} will
+% verify the \mymeta{keys} and will return an error when they are
+% \emph{unknown}.
% \begin{macrocode}
%<latex>\ProcessKeysOptions { scontents }
%<*core>
% \end{macrocode}
%
-% \subsection{Internal variables}
+% \subsection{Internal variables and utility functions}
+%
+% \begin{macro}{\l_@@_fname_out_tl,\l_@@_every_line_env_tl,\l_@@_file_iow}
+% The token list \cs{l_@@_fname_out_tl} is used for store the name of
+% the \meta{output file}, when there's one. Its value is set by the
+% keys §write-env§, §write-out§ and §write-cmd§.
+%
+% The token list \cs{l_@@_every_line_env_tl} holds the contents of an
+% environment, \env{scontents} by default, as it's being read.
+% \cs{l_@@_file_iow} is an output stream for saving the contents of an
+% environment (or command) to a file.
%
-% Now we declare the internal variables we will use.
+% This variables is used by the function \cs{@@_file_tl_write_start:n}
+% (see \ref{the:environment:itself}).
%
-% \begin{macro}{\l_@@_macro_tmp_tl,\l_@@_fname_out_tl,\l_@@_temp_tl,
-% \l_@@_file_tl,\g_@@_temp_tl,\l_@@_foreach_name_seq_tl,
-% \l_@@_foreach_before_tl,\l_@@_foreach_after_tl}
-% \cs{l_@@_macro_tmp_tl} is a temporary token list to hold the contents
-% of the macro/environment, \cs{l_@@_fname_out_tl} is used as the name
-% of the output file, when there's one, \cs{l_@@_file_tl} holds the contents
-% of an environment as it's being read, and \cs{l_@@_temp_tl} and
-% \cs{g_@@_temp_tl} are generic temporary token lists.
+% \begin{macrocode}
+\tl_new:N \l_@@_fname_out_tl
+\tl_new:N \l_@@_every_line_env_tl
+\iow_new:N \l_@@_file_iow
+% \end{macrocode}
+% \end{macro}
%
+% \begin{macro}{\l_@@_foreach_name_seq_tl,\l_@@_foreach_before_tl,\l_@@_foreach_after_tl}
% \cs{l_@@_foreach_name_seq_tl} is the name assigned to the sequence on
% which the loop will be made, \cs{l_@@_foreach_before_tl} and \cs{l_@@_foreach_after_tl}
% are token lists in which the assigned material will be placed before
% and after the execution of the §\foreachsc§ loop.
%
% \begin{macrocode}
-\tl_new:N \l_@@_macro_tmp_tl
-\tl_new:N \l_@@_fname_out_tl
-\tl_new:N \l_@@_temp_tl
-\tl_new:N \l_@@_file_tl
-\tl_new:N \g_@@_temp_tl
\tl_new:N \l_@@_foreach_name_seq_tl
\tl_new:N \l_@@_foreach_before_tl
\tl_new:N \l_@@_foreach_after_tl
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\l_@@_seq_item_int,\l_@@_env_nesting_int,\l_@@_tmpa_int,
-% \l_@@_foreach_stop_int}
+% \begin{macro}{\l_@@_seq_item_int,\l_@@_env_nesting_int,\l_@@_foreach_stop_int}
% \cs{l_@@_seq_item_int} stores the index in the sequence of the item
-% requested to \cs{typestored} or \cs{meaningsc}. \cs{l_@@_env_nesting_int}
+% requested to §\typestored§ or §\meaningsc§. \cs{l_@@_env_nesting_int}
% stores the current nesting level of the \env{scontents} environment.
-% \cs{l_@@_foreach_stop_int} will save the value at which the §\foreachsc§
-% loop will stop.
+% \cs{l_@@_foreach_stop_int} will save the value at which the §\foreachsc§
+% loop will stop.
%
% \begin{macrocode}
\int_new:N \l_@@_foreach_stop_int
\int_new:N \l_@@_seq_item_int
\int_new:N \l_@@_env_nesting_int
-\int_new:N \l_@@_tmpa_int
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\l_@@_writing_bool,\l_@@_storing_bool}
+% \begin{macro}{\l_@@_writing_bool,\l_@@_storing_bool,\l_@@_writable_bool}
% The boolean \cs{l_@@_writing_bool} keeps track of whether we should write
% to a file, and \cs{l_@@_storing_bool} determines whether it is in write-only
-% mode when the §write-out§ option is used.
+% mode when the key §write-out§ is used.
%
% \begin{macrocode}
\bool_new:N \l_@@_writing_bool
\bool_set_false:N \l_@@_writing_bool
\bool_new:N \l_@@_storing_bool
\bool_set_true:N \l_@@_storing_bool
+\bool_new:N \l_@@_writable_bool
% \end{macrocode}
% \end{macro}
%
-%
% \begin{macro}{\l_@@_foreach_before_bool,\l_@@_foreach_after_bool,
% \l_@@_foreach_stop_bool,\l_@@_foreach_wrapper_bool}
% Boolean variables used by the §\foreachsc§ loop.
@@ -2279,7 +2374,6 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\bool_set_false:N \l_@@_foreach_stop_bool
\bool_new:N \l_@@_foreach_wrapper_bool
\bool_set_false:N \l_@@_foreach_wrapper_bool
-\bool_new:N \l_@@_writable_bool
% \end{macrocode}
% \end{macro}
%
@@ -2313,20 +2407,25 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\l_@@_file_iow}
-% An output stream for saving the contents of an environment to a file.
+% \begin{macro}{\l_@@_save_sf_int,\l_@@_save_skip}
+% Internal variables used by functions \cs{@@_bsphack:} and \cs{@@_esphack:}.
%
% \begin{macrocode}
-\iow_new:N \l_@@_file_iow
+\int_new:N \l_@@_save_sf_int
+\skip_new:N \l_@@_save_skip
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_rescan_tokens:n}
-% \cs{tl_rescan:nn} doesn't fit the needs of this package because
-% it does not allow catcode changes inside the argument, so verbatim
-% commands used inside one of \mypkg*{scontents}'s commands/environments
-% will not work. Here we create a private copy of \cs{tex_scantokens:D}
-% which will serve our purposes.
+% \begin{macro}{\@@_rescan_tokens:n,\@@_rescan_tokens:x,\@@_rescan_tokens:V}
+% The function \cs{tl_rescan:nn} provided by \pkg{expl3} doesn't fit
+% the needs of this package because it does not allow catcode changes
+% inside the argument, so verbatim commands used inside one of
+% \mypkg*{scontents}'s commands/environments will not work. Here we
+% create a private copy of \cs{tex_scantokens:D} which will serve our
+% purposes. See the answer by Ulrich Diez in
+% \href{https://tex.stackexchange.com/a/577183/7832}{How do use
+% \{<setup>\} in \textbackslash tl_set_rescan:Nnn to replace
+% \textbackslash scantokens?}
%
% \begin{macrocode}
\cs_new_protected:Npn \@@_rescan_tokens:n #1 { \tex_scantokens:D {#1} }
@@ -2345,7 +2444,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \begin{macro}[int]{\tl_remove_once:NV,\tl_replace_all:Nxx,
% \tl_replace_all:Nxn,\tl_replace_all:Nnx,\tl_if_empty:fTF}
-% Some nonstandard variants.
+% Some nonstandard kernel variants.
%
% \begin{macrocode}
\cs_generate_variant:Nn \tl_remove_once:Nn { NV }
@@ -2406,7 +2505,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\bool_set_true:N \l_@@_writing_bool
\tl_set:Nn \l_@@_fname_out_tl {#1}
},
- write-env .value_required:n = true,
+ write-cmd .value_required:n = true,
write-out .value_required:n = true,
print-cmd .meta:nn = { scontents } { print-cmd = #1 },
print-cmd .default:n = true,
@@ -2476,7 +2575,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \subsection{Handling undefined keys}
%
-% The \mymeta{keys} are stored in the token list variable \cs{l_keys_key_tl},
+% The \mymeta{keys} are stored in the token list variable \cs{l_keys_key_str},
% and the value (if any) is passed as an argument to each \mymeta{function}.
%
% \subsubsection{Undefined keys for environment \env{scontents}}
@@ -2490,7 +2589,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \begin{macrocode}
\cs_new_protected:Npn \@@_parse_environment_keys:n #1
- { \exp_args:NV \@@_parse_environment_keys:nn \l_keys_key_tl {#1} }
+ { \exp_args:NV \@@_parse_environment_keys:nn \l_keys_key_str {#1} }
\cs_new_protected:Npn \@@_parse_environment_keys:nn #1#2
{
\tl_if_blank:nTF {#2}
@@ -2511,7 +2610,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \begin{macrocode}
\cs_new_protected:Npn \@@_parse_command_keys:n #1
- { \exp_args:NV \@@_parse_command_keys:nn \l_keys_key_tl {#1} }
+ { \exp_args:NV \@@_parse_command_keys:nn \l_keys_key_str {#1} }
\cs_new_protected:Npn \@@_parse_command_keys:nn #1#2
{
\tl_if_blank:nTF {#2}
@@ -2538,7 +2637,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
{ \msg_error:nnnn { scontents } { for-key-value-unknown } {#1} {#2} }
}
\cs_new_protected:Npn \@@_parse_foreach_keys:n #1
- { \exp_args:NV \@@_parse_foreach_keys:nn \l_keys_key_tl {#1} }
+ { \exp_args:NV \@@_parse_foreach_keys:nn \l_keys_key_str {#1} }
% \end{macrocode}
% \end{macro}
%
@@ -2564,7 +2663,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \begin{macrocode}
\cs_new_protected:Npn \@@_parse_type_meaning_key:n #1
- { \exp_args:NV \@@_parse_type_meaning_key:nn \l_keys_key_tl {#1} }
+ { \exp_args:NV \@@_parse_type_meaning_key:nn \l_keys_key_str {#1} }
\cs_new_protected:Npn \@@_parse_type_meaning_key:nn #1#2
{
\tl_if_empty:fTF { \int_to_roman:n { -0 #1 } }
@@ -2582,123 +2681,15 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
-% \subsection{Compatibility layer with Plain}
-%
-% When loading the package outside of \LaTeX{} we can't usually use \pkg{xparse}.
-% However since \pkg{xparse} doesn't actually hold any dependency with \LaTeX{}
-% except for package-loading commands, we can emulate those commands (much like
-% in \pkg{miniltx}) so that \pkg{xparse} is loadable in any format.
-%
-% The bunch of macros below is adapted from the \LaTeX{} kernel (greatly simplified).
-% \begin{macrocode}
-%</core>
-%<*loader&!latex>
-\seq_new:N \l_@@_compat_seq
-\cs_new_protected:Npn \@@_compat_redefine:Npn #1
- {
- \seq_put_right:Nn \l_@@_compat_seq {#1}
- \cs_set_eq:cN { @@_saved_\cs_to_str:N #1: } #1
- \cs_new_protected:Npn #1
- }
-\cs_new_protected:Npn \@@_compat_restore:
- { \seq_map_function:NN \l_@@_compat_seq \@@_compat_restore:N }
-\cs_new_protected:Npn \@@_compat_restore:N #1
- {
- \cs_set_eq:Nc #1 { @@_saved_\cs_to_str:N #1: }
- \cs_undefine:c { @@_saved_\cs_to_str:N #1: }
- }
-\cs_generate_variant:Nn \@@_compat_redefine:Npn { c }
-\cs_new_protected:Npn \@@_optarg:nn #1 #2
- { \peek_charcode_ignore_spaces:NTF [ {#1} {#1[#2]} }
-\cs_new_protected:Npn \@@_stararg:nn #1 #2
- { \peek_charcode_remove_ignore_spaces:NTF * {#1} {#2} }
-\@@_compat_redefine:Npn \RequirePackage
- { \@@_optarg:nn { \@@_require_auxi:wn } { } }
-\cs_new_protected:Npn \@@_require_auxi:wn [#1] #2
- { \@@_optarg:nn { \@@_require_auxii:wnw [{#1}]{#2} } { } }
-\cs_new:Npn \@@_zap_space:ww #1~#2
- {
- #1 \if_meaning:w #2 \q_mark
- \exp_after:wN \use_none:n
- \else:
- \exp_after:wN \@@_zap_space:ww
- \fi: #2
- }
-\cs_new_protected:Npn \@@_require_auxii:wnw [#1] #2 [#3]
- {
- \tl_set:Nx \l_@@_temp_tl { \@@_zap_space:ww #2 ~ \q_mark }
- \clist_map_function:NN \l_@@_temp_tl \@@_require_auxiii:n
- }
-\cs_new_protected:Npn \@@_require_auxiii:n #1
- {
- \str_if_eq:eeF {expl3} {#1}
- { \msg_error:nnn { scontents } { invalid-package } {#1} }
- }
-\msg_new:nnn { scontents } { invalid-package }
- { Package~'#1'~invalid~in~scontents.~This~is~an~error~in~scontents. }
-\@@_compat_redefine:cpn { @ifpackagelater } #1
- { \exp_args:Nc \@@_package_later_aux:Nn { ver@#1.sty } }
-\cs_new_protected:Npn \@@_package_later_aux:Nn #1 #2
- {
- \int_compare:nNnTF
- { \exp_after:wN \@@_parse_version:w #1 //00 \q_mark } <
- { \exp_after:wN \@@_parse_version:w #2 //00 \q_mark }
- }
-\cs_new:Npn \@@_parse_version:w #1 { \@@_parse_version_auxi:w 0#1 }
-\cs_new:Npn \@@_parse_version_auxi:w #1/#2/#3#4#5 \q_mark
- { \@@_parse_version_auxii:w #1-#2-#3#4 \q_mark }
-\cs_new:Npn \@@_parse_version_auxii:w #1-#2-#3#4#5 \q_mark
- { \tl_if_blank:nF {#2} {#1} #2 #3 #4 }
-\@@_compat_redefine:Npn \ProvidesExplPackage #1 #2 #3 #4
- { \@@_provides_aux:nn {#1} { #2 \tl_if_empty:nF {#3} {#3~} #4 } }
-\cs_new_protected:Npn \@@_provides_aux:nn #1 #2
- {
- \tl_gset:cx { ver@#1.sty } {#2}
- \iow_log:n { Package~#1:~#2 }
- \ExplSyntaxOn
- }
-\@@_compat_redefine:Npn \DeclareOption
- { \@@_stararg:nn { \use_none:n } { \use_none:nn } }
-\@@_compat_redefine:Npn \ProcessOptions
- { \@@_stararg:nn { } { } }
-% \end{macrocode}
-%
-% Now that the compatibility layer is defined, we can finally load \pkg{xparse}.
-% \pkg{xparse} expects to be loaded with §\ExplSyntaxOff§ (not much harm would
-% be done otherwise, but just to be on the safe side).
-%
-% Within \pkg{xparse} a §\RequirePackage{expl3}§ is done. We can ignore that since
-% we have already loaded \pkg{expl3}. Next, a §\@ifpackagelater§ test is done:
-% we do that test too to ensure that \pkg{xparse} is compatible with the current
-% running version of \pkg{expl3}. The following §\ProvidesExplPackage§ simply
-% defines §\ver@xparse.sty§ for any other package that might uset it, and then
-% does §\ExplSyntaxOn§. At the end of the package, \pkg{xparse} parses (heh)
-% the package options. Since we don't have those in non-\LaTeX{} formats, they are
-% ignored. Okay, so load \pkg{xparse}:
-% \begin{macrocode}
-\int_set:Nn \l_@@_tmpa_int { \char_value_catcode:n { `\@ } }
-\char_set_catcode_letter:N \@
-\exp_after:wN
-\ExplSyntaxOff
-\file_input:n { xparse.sty }
-\ExplSyntaxOn
-\char_set_catcode:nn { `\@ } { \l_@@_tmpa_int }
-\@@_compat_restore:
-%</loader&!latex>
-%<*core>
-% \end{macrocode}
-% (actually we don't need to do §\ExplSyntaxOn§ there because we don't have
-% \LaTeX{}'s full package loading mechanism, so the \pkg{expl3} syntax remains
-% active after \pkg{xparse} is loaded, but it doesn't harm either).
-%
% \subsection{Programming of the sequences}
%
% The storage of the package is done using |seq| variables. Here we
% set up the macros that will manage the variables.
-% \begin{macro}{\@@_append_contents:nn}
-% \cs{@@_append_contents:nn} creates a seq variable if one didn't
-% exist and appends the contents in the argument to the right of the
-% sequence.
+%
+% \begin{macro}{\@@_append_contents:nn,\@@_append_contents:Vx}
+% The function \cs{@@_append_contents:nn} creates a |seq| variable if
+% one didn't exist and appends the contents in the argument to the
+% right of the sequence.
%
% \begin{macrocode}
\cs_new_protected:Npn \@@_append_contents:nn #1#2
@@ -2714,7 +2705,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macro}
%
% \begin{macro}{\@@_getfrom_seq:nn,\@@_getfrom_seq:nnn}
-% \cs{@@_getfrom_seq:nn} retrieves the saved item from the
+% The function \cs{@@_getfrom_seq:nn} retrieves the saved item from the
% sequence.
%
% \begin{macrocode}
@@ -2739,8 +2730,8 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_lastfrom_seq:n}
-% \cs{@@_lastfrom_seq:n} retrieves the last saved item from the
+% \begin{macro}{\@@_lastfrom_seq:n,\@@_lastfrom_seq:V}
+% The function \cs{@@_lastfrom_seq:n} retrieves the last saved item from the
% sequence when \cs{l_@@_print_env_bool} or \cs{l_@@_print_cmd_bool}
% is true.
%
@@ -2758,7 +2749,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macro}
%
% \begin{macro}{\@@_store_to_seq:NN}
-% The \cs{@@_store_to_seq:NN} writes the recorded contents
+% The function \cs{@@_store_to_seq:NN} writes the recorded contents
% in §#1§ to the log and stores it in §#2§.
%
% \begin{macrocode}
@@ -2770,7 +2761,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
-% \subsection{Construction of environment \env{scontents}}
+% \subsection{The command \cs{newenvsc} and environment \env{scontents}}
%
% In order to be able to define environments that behave similarly to
% \myenv{scontents}, we define a generic environment and make all other
@@ -2778,14 +2769,17 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \subsubsection{The command \cs{newenvsc}}
%
-% \begin{macro}{\newenvsc,\l_@@_env_name_tl,\@@_scontents_setenv:nn}
-% The \cs{newenvsc} command defines two functions \cs[no-index]{@@_\#1_env_begin:}
-% and \cs[no-index]{@@_\#1_env_end:}, which set the current environment's
-% default properties and then call the generic \cs{@@_env_generic_begin:} and
-% \cs{@@_env_generic_end:}.
+% \begin{macro}{\newenvsc,\@@_env_setting:nn,\@@_env_define:nnn}
+% The internal function \cs{@@_env_setting:nn} defines two
+% functions \cs[no-index]{@@_\#1_env_begin:} and
+% \cs[no-index]{@@_\#1_env_end:}, which set the current environment's
+% name in §#1§ and \cs{l_@@_env_name_tl} and default properties in §#2§
+% then call \cs{@@_setup_verb_processor:}, the generic
+% \cs{@@_env_generic_begin:} and \cs{@@_env_generic_end:}.
+%
+% Finally the function \cs{@@_env_define:nnn} will create the environments.
% \begin{macrocode}
-\tl_new:N \l_@@_env_name_tl
-\cs_new_protected:Npn \@@_scontents_setenv:nn #1 #2
+\cs_new_protected:Npn \@@_env_setting:nn #1 #2
{
\cs_new_protected:cpn { @@_#1_env_begin: }
{
@@ -2803,12 +2797,12 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
}
%</core>
%<*loader>
-\NewDocumentCommand { \newenvsc } { m O{} }
+\NewDocumentCommand \newenvsc { m O{} }
{
%<latex|plain> \cs_if_exist:cTF { #1 }
%<context> \cs_if_exist:cTF { start #1 }
{ \msg_error:nnn { scontents } { env-already-defined } {#1} }
- { \@@_scontents_setenv:nn {#1} {#2} }
+ { \@@_env_setting:nn {#1} {#2} }
}
\cs_new_protected:Npn \@@_env_define:nnn #1 #2 #3
{
@@ -2831,11 +2825,10 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \subsubsection{Generic definition of the environment}
%
-% \begin{macro}{
-% \@@_env_generic_begin:,
-% \@@_env_generic_begin:,
-% }
-% Now we define the generic environment \cs{@@_env_generic_begin:}
+% \begin{macro}{\@@_env_generic_begin:,\@@_env_generic_end:}
+%
+% Now we define the generic environment functions
+% \cs{@@_env_generic_begin:} and \cs{@@_env_generic_end:}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_env_generic_begin:
{
@@ -2846,7 +2839,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
{
\@@_stop_environment:
\@@_finish_storing:NNN \l_@@_macro_tmp_tl
- \l_@@_name_seq_env_tl \l_@@_print_env_bool
+ \l_@@_name_seq_env_tl \l_@@_print_env_bool
}
% \end{macrocode}
% \end{macro}
@@ -2860,7 +2853,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \startscontents,
% \stopscontents,
% }
-% Now defining the \myenv{scontents} environment should be easy:
+% Finaly defining the \myenv{scontents} environment should be easy :)
% \begin{macrocode}
%</core>
%<loader>\newenvsc{scontents}
@@ -2870,9 +2863,6 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \subsubsection{key val for environment}
%
-% Define a \myoarg{key \textnormal{\textcolor{gray}{=}} val} for
-% environment \env{scontents}
-%
% \begin{macro}{\@@_grab_optional:n,\@@_grab_optional:w}
% The macro \cs{@@_grab_optional:w} is called from the
% \env{scontents} environment with the tokens following the
@@ -2904,9 +2894,10 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macro}
%
% \subsubsection{The environment itself}
+% \label{the:environment:itself}
%
% \begin{macro}{\@@_start_environment:w,\@@_start_after_option:w,
-% \@@_check_line_process:xn,\@@_stop_environment:}
+% \@@_check_line_process:xn,\@@_stop_environment:}
% Here we make §^^I§, §^^L§ and §^^M§ active characters so that the end of
% line can be \enquote{seen} to be used as a delimiter, and \hologo{TeX} doesn't try to
% eliminate space-like characters.
@@ -2916,19 +2907,21 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% to do the heavy lifting. \cs{@@_grab_optional:w} processes the optional
% argument and calls \cs{@@_start_after_option:w}.
%
-% \cs{@@_start_after_option:w} also checks for trailing tokens after
-% the optional argument and issues an error if any.
+% The function \cs{@@_start_after_option:w} also checks for trailing
+% tokens after the optional argument and issues an error if any.
%
-% In all cases, \cs{@@_check_line_process:xn} ckecks that
+% In all cases, the function \cs{@@_check_line_process:xn} ckecks that
% everything past §\begin{scontents}§ is empty and then process
-% the environment. \cs{@@_check_line_process:xn} calls the
-% \cs{@@_file_tl_write_start:V} function, which will then read the contents
+% the environment.
+%
+% The function \cs{@@_check_line_process:xn} calls the function
+% \cs{@@_file_tl_write_start:V} which will then read the contents
% of the environment and optionally store them in a token list or write to
% an external file.
%
-% When that's done, \cs{@@_file_write_stop:N} does the cleanup. This part of
-% the code is inspired and adapted from the code of the package \pkg{xsimverb}
-% by Clemens Niederberger.
+% When that's done, the function \cs{@@_file_write_stop:N} does the
+% cleanup. This part of the code is inspired and adapted from the code of
+% the package \pkg{xsimverb} by Clemens Niederberger.
%
% \begin{macrocode}
\group_begin:
@@ -2966,8 +2959,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
{ \l_@@_storing_bool }
{ \tl_if_empty_p:N \l_@@_macro_tmp_tl }
{
- \msg_warning:nnx { scontents } { empty-environment }
- { \l_@@_env_name_tl }
+ \msg_warning:nnx { scontents } { empty-environment } { \l_@@_env_name_tl }
}
}
% \end{macrocode}
@@ -3005,7 +2997,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\iow_open:Nn \l_@@_file_iow {#1}
}
{ \bool_set_false:N \l_@@_writable_bool }
- \tl_clear:N \l_@@_file_tl
+ \tl_clear:N \l_@@_every_line_env_tl
\seq_map_function:NN \l_char_special_seq \char_set_catcode_other:N
\int_step_function:nnnN { 128 } { 1 } { 255 } \char_set_catcode_letter:n
\cs_set_protected:Npx \@@_ret:w ##1 ^^M
@@ -3087,7 +3079,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\bool_if:NT \l_@@_storing_bool
{
\tl_set:Nn \exp_not:N #1
- { \exp_args:NV \@@_remove_leading_nl:n \l_@@_file_tl }
+ { \exp_args:NV \@@_remove_leading_nl:n \l_@@_every_line_env_tl }
}
}
}
@@ -3111,20 +3103,17 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{
-% \@@_verb_processor_output:n,
-% \@@_verb_processor_output:x,
-% }
-% \cs{@@_verb_processor_output:n} does the output of each line read,
-% to a token list and to a file, depending on the booleans
-% \cs{l_@@_writing_bool} and \cs{l_@@_storing_bool}.
+% \begin{macro}{\@@_verb_processor_output:n,\@@_verb_processor_output:x}
+% The function \cs{@@_verb_processor_output:n} does the output of
+% each line read, to a token list and to a file, depending on the
+% booleans \cs{l_@@_writing_bool} and \cs{l_@@_storing_bool}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_verb_processor_output:n #1
{
\bool_if:NT \l_@@_writable_bool
{ \iow_now:Nn \l_@@_file_iow {#1} }
\bool_if:NT \l_@@_storing_bool
- { \tl_put_right:Nn \l_@@_file_tl { ^^J #1 } }
+ { \tl_put_right:Nn \l_@@_every_line_env_tl { ^^J #1 } }
}
\group_end:
\cs_generate_variant:Nn \@@_verb_processor_output:n { x }
@@ -3169,6 +3158,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
}
\cs_new:Npn \@@_use_none_delimit_by_q_stop:w #1 \q_@@_stop { }
% \end{macrocode}
+%
% In \LaTeX{}, environments start with §\begin{<env>}§, so checking if a
% string contains §\begin{scontents}§ is straightforward. Since no §}§ can
% appear inside §<env>§, then just a macro delimited by §}§ is enough.
@@ -3194,6 +3184,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\exp_not:N \q_@@_stop
}
% \end{macrocode}
+%
% In other formats, however, we don't have an \enquote{end anchor} to delimit the
% environment name, so a delimited macro won't help. We have to search for
% the entire environment command (usually §\scontents§ and §\startscontents§).
@@ -3263,11 +3254,14 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[int]{\verbatimsc,\endverbatimsc}
-% In Plain we emulate \LaTeX's \env{verbatim} environment.
+% \subsection{The environment \env{verbatimsc}}
+%
+% \begin{macro}[int]{\verbatimsc,\endverbatimsc,\@@_verbatimsc_aux:,
+% \@@_vobeyspaces:,\@@_xverb:,\@@_nolig_list:,\@@_xobeysp:}
+% In \hologo{plainTeX} we emulate \LaTeX's \env{verbatim} environment.
+%
% \begin{macrocode}
%<*plain>
-\bool_new:N \l_@@_temp_bool
\cs_new_protected:Npn \verbatimsc
{
\group_begin:
@@ -3279,9 +3273,9 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\cs_new_protected:Npn \@@_verbatimsc_aux:
{
\skip_vertical:N \parskip
- \int_set:Nn \parindent { 0pt }
+ \dim_zero:N \parindent
\skip_set:Nn \parfillskip { 0pt plus 1fil }
- \int_set:Nn \parskip { 0pt plus0pt minus0pt }
+ \skip_set:Nn \parskip { 0pt plus0pt minus0pt }
\tex_par:D
\bool_set_false:N \l_@@_temp_bool
\cs_set:Npn \par
@@ -3332,20 +3326,28 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
+%
+% \subsection{The command \cs{Scontents}}
+%
+% User command to \mymeta{stored content}, adapted from code by Ulrich
+% Diez in \href{https://tex.stackexchange.com/a/472044/7832}{Stringify
+% input - \textbackslash string on token list}
+% and code by user siracusa in
+% \href{https://tex.stackexchange.com/a/500281/7832}{Convert a macro from
+% Latex2e to expl3}
+%
% \begin{macro}{\@@_bsphack:,\@@_esphack:}
-% \pkg{xparse} also requires \LaTeX's §\dospecials§. In case it doesn't
-% exist (at the time \pkg{scontents} is loaded) we define §\dospecials§
-% to use the \cs{l_char_special_seq}.
+% We emulate §\@bsphack§ and §\@esphack§ for \hologo{plainTeX}.
+% This is necessary to prevent unwanted spaces when the §print-cmd§
+% key is false.
% \begin{macrocode}
%<*core>
-\int_new:N \l_@@_save_sf_int
-\dim_new:N \l_@@_save_skip_dim
\cs_new_protected:Npn \@@_bsphack:
{
\scan_stop:
\mode_if_horizontal:T
{
- \dim_set_eq:NN \l_@@_save_skip_dim \tex_lastskip:D
+ \skip_set_eq:NN \l_@@_save_skip \tex_lastskip:D
\int_set_eq:NN \l_@@_save_sf_int \tex_spacefactor:D
}
}
@@ -3355,9 +3357,9 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\mode_if_horizontal:T
{
\int_set_eq:NN \tex_spacefactor:D \l_@@_save_sf_int
- \dim_compare:nNnT { \l_@@_save_skip_dim } > { \c_zero_dim }
+ \dim_compare:nNnT { \l_@@_save_skip } > { \c_zero_skip }
{
- \dim_compare:nNnT { \tex_lastskip:D } = { \c_zero_dim }
+ \skip_if_eq:nnT { \tex_lastskip:D } { \c_zero_skip }
{
\nobreak
\skip_horizontal:n { \c_zero_skip }
@@ -3374,32 +3376,20 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
-% \subsection{The command \cs{Scontents}}
-%
-% User command to \mymeta{stored content}, adapted from
-% \url{https://tex.stackexchange.com/a/500281/7832}.
-%
% \begin{macro}{
% \Scontents,
-% \@@_norm_arg:n,
-% \@@_Scontents_auxi:N,
% \@@_Scontents_internal:nn,
+% \@@_norm_arg:n,
% \@@_verb_arg:w,
-% \@@_verb_arg_internal:n,
% }
-% The §\Scontents§ macro starts by parsing an optional argument and
-% then delegates to \cs{@@_verb_arg:w} or \cs{@@_norm_arg:n} depending whether
-% a star (§*§) argument is present.
-%
-% \cs{@@_norm_arg:n} grabs a normal argument, adds it to the |seq| varaible,
-% and optionally prints it.
-%
-% \cs{@@_verb_arg:w} grabs a verbatim argument using \pkg{xparse}'s |+v|
-% argument parser.
+% The §\Scontents§ command starts by parsing an optional argument to
+% the function \cs{@@_Scontents_internal:nn} then delegates to
+% \cs{@@_verb_arg:w} or \cs{@@_norm_arg:n} depending whether a star
+% (§*§) argument is present.
%
% \begin{macrocode}
%<*loader>
-\NewDocumentCommand { \Scontents }{ !s !O{} }
+\NewDocumentCommand \Scontents { !s !O{} }
{ \@@_Scontents_internal:nn {#1} {#2} }
%</loader>
%<*core>
@@ -3414,17 +3404,43 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
{ \@@_verb_arg:w }
{ \@@_norm_arg:n }
}
+% \end{macrocode}
+%
+% The function \cs{@@_norm_arg:n} grabs a normal argument, adds it to
+% the |seq| varaible and optionally prints it.
+%
+% \begin{macrocode}
\cs_new_protected:Npn \@@_norm_arg:n #1
{
\tl_set:Nn \l_@@_temp_tl {#1}
\@@_Scontents_finish:
}
+% \end{macrocode}
+%
+% The function \cs{@@_verb_arg:w} grabs a verbatim argument using
+% \pkg{xparse}'s |+v| argument parser.
+%
+% \begin{macrocode}
%</core>
%<*loader>
-\NewDocumentCommand { \@@_verb_arg:w } { +v }
+\NewDocumentCommand \@@_verb_arg:w { +v }
{ \@@_verb_arg_internal:n {#1} }
%</loader>
%<*core>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{
+% \@@_verb_arg_internal:n,
+% \@@_Scontents_finish:,
+% \@@_file_write_cmd:nn,
+% \@@_file_write_cmd:VV,
+% }
+%
+% The function \cs{@@_verb_arg_internal:n} replace all §\^^M§ by
+% §\^^J§ then adds it to the |seq| varaible.
+%
+% \begin{macrocode}
\cs_new_protected:Npn \@@_verb_arg_internal:n #1
{
\tl_set:Nn \l_@@_temp_tl {#1}
@@ -3434,8 +3450,10 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\cs_new_protected:Npn \@@_Scontents_finish:
{
\@@_file_write_cmd:VV \l_@@_fname_out_tl \l_@@_temp_tl
- \@@_finish_storing:NNN \l_@@_temp_tl
- \l_@@_name_seq_cmd_tl \l_@@_print_cmd_bool
+ \@@_finish_storing:NNN
+ \l_@@_temp_tl
+ \l_@@_name_seq_cmd_tl
+ \l_@@_print_cmd_bool
\use:x
{
\group_end:
@@ -3451,6 +3469,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\iow_close:N \l_@@_file_iow
}
}
+\cs_generate_variant:Nn \@@_file_write_cmd:nn { VV }
\prg_new_protected_conditional:Npnn \@@_file_if_writable:n #1 { T, F, TF }
{
\bool_if:NTF \l_@@_writing_bool
@@ -3474,20 +3493,19 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
}
{ \prg_return_false: }
}
-\cs_generate_variant:Nn \@@_file_write_cmd:nn { VV }
% \end{macrocode}
% \end{macro}
%
% \subsection{The command \cs{getstored}}
%
-% \begin{macro}{\getstored}
+% \begin{macro}{\getstored,\@@_getstored_internal:nn}
% User command §\getstored§ to extract \mymeta{stored content} in |seq|
% (robust).
%
% \begin{macrocode}
%</core>
%<*loader>
-\NewDocumentCommand { \getstored } { O{-1} m }
+\NewDocumentCommand \getstored { O{-1} m }
{ \@@_getstored_internal:nn {#1} {#2} }
%</loader>
%<*core>
@@ -3506,13 +3524,13 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \subsection{The command \cs{foreachsc}}
%
-% \begin{macro}{\foreachsc}
+% \begin{macro}{\foreachsc,\@@_foreachsc_internal:nn,\@@_foreach_add_body:n}
% User command §\foreachsc§ to loop over \mymeta{stored content} in |seq|.
%
% \begin{macrocode}
%</core>
%<*loader>
-\NewDocumentCommand { \foreachsc } { o m }
+\NewDocumentCommand \foreachsc { o m }
{ \@@_foreachsc_internal:nn {#1} {#2} }
%</loader>
%<*core>
@@ -3561,14 +3579,15 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \subsection{The command \cs{typestored}}
%
-% \begin{macro}{\typestored,\@@_verb_print:N,\@@_xverb:w,verbatimsc}
+% \begin{macro}{\typestored,\@@_typestored_internal:nn,\@@_verb_print:N,
+% \@@_xverb:w}
% The §\typestored§ commands fetches a buffer from memory, prints it
% to the log file, and then calls \cs{@@_verb_print:N}.
%
% \begin{macrocode}
%</core>
%<*loader>
-\NewDocumentCommand { \typestored } { o m }
+\NewDocumentCommand \typestored { o m }
{ \@@_typestored_internal:nn {#1} {#2} }
%</loader>
%<*core>
@@ -3616,11 +3635,6 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\cs_set_eq:NN ^^M \@@_verb_print_EOL:
}
\group_end:
-% \end{macrocode}
-%
-% Finally, the §verbatimsc§ environment is defined.
-%
-% \begin{macrocode}
\cs_new_protected:Npn \@@_xverb:
{
\char_set_catcode_active:n { 9 }
@@ -3628,6 +3642,18 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\@@_xverb:w
}
%</core>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{verbatimsc,\startverbatimsc,\stopverbatimsc}
+% Finally the \hologo{LaTeX} and \hologo{ConTeXt} version of
+% §verbatimsc§ environment is defined.
+%
+% The macro §\endverbatim§ in the second argument of the §verbatimsc§
+% environment is only needed for compatibility with the \pkg{verbatim}
+% package.
+%
+% \begin{macrocode}
%<*loader>
%<*!context>
\use:x
@@ -3645,7 +3671,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
\cs_set_eq:cN { @xverbatim } \@@_xverb:
\verbatim
}
- { }
+ { \endverbatim }
%</latex>
%<context>\definetyping[verbatimsc]
%</loader>
@@ -3653,7 +3679,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macrocode}
% \end{macro}
%
-% \subsection{Some auxiliaries}
+% \subsubsection{Some auxiliaries functions}
%
% \begin{macro}{\@@_tabs_to_spaces:}
% In a verbatim context the |TAB| character is made active and set
@@ -3705,9 +3731,8 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \end{macro}
%
% \begin{macro}{
-% \@@_set_active_eq:NN,
-% \@@_make_control_chars_active:,
-% }
+% \@@_set_active_eq:NN, \@@_make_control_chars_active:,
+% \@@_plain_disable_outer_par:}
% Shortcut definitions for common catcode changes.
% The §^^L§ needs a special treatment in non-\LaTeX{} mode
% because in Plain\,\TeX{} it is an §\outer§ token.
@@ -3758,7 +3783,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \begin{macrocode}
%</core>
%<*loader>
-\NewDocumentCommand { \setupsc } { +m }
+\NewDocumentCommand \setupsc { +m }
{ \keys_set:nn { scontents } {#1} }
%</loader>
%<*core>
@@ -3767,13 +3792,13 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
%
% \subsection{The command \cs{meaningsc}}
%
-% \begin{macro}{\meaningsc}
+% \begin{macro}{\meaningsc,\@@_meaningsc_internal:nn,\@@_meaningsc:n}
% User command §\meaningsc§ to see content stored in |seq|.
%
% \begin{macrocode}
%</core>
%<*loader>
-\NewDocumentCommand { \meaningsc } { o m }
+\NewDocumentCommand \meaningsc { o m }
{ \@@_meaningsc_internal:nn {#1} {#2} }
%</loader>
%<*core>
@@ -3810,7 +3835,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \begin{macrocode}
%</core>
%<*loader>
-\NewExpandableDocumentCommand { \countsc } { m }
+\NewExpandableDocumentCommand \countsc { m }
{ \seq_count:c { g_@@_name_#1_seq } }
%</loader>
%<*core>
@@ -3826,7 +3851,7 @@ Read \Verb{\jobname.tsc} (shows TABs as red arrows):
% \begin{macrocode}
%</core>
%<*loader>
-\NewDocumentCommand { \cleanseqsc } { m }
+\NewDocumentCommand \cleanseqsc { m }
{ \seq_clear_new:c { g_@@_name_#1_seq } }
%</loader>
%<*core>
diff --git a/macros/latex/contrib/scontents/scontents.ins b/macros/latex/contrib/scontents/scontents.ins
index c5770ae484..32b3e52331 100644
--- a/macros/latex/contrib/scontents/scontents.ins
+++ b/macros/latex/contrib/scontents/scontents.ins
@@ -1,9 +1,9 @@
-\input l3docstrip.tex
+\input docstrip.tex
\keepsilent
\askforoverwritefalse
\declarepreamble\standard
-Copyright (C) 2019-2020 by Pablo González L <pablgonz@educarchile.cl>
+Copyright (C) 2019-2022 by Pablo González L <pablgonz@educarchile.cl>
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
@@ -33,11 +33,11 @@ and the derived files scontents.sty,
\declarepreamble\context
\string\module
[ file=t-scontents,
- version=1.9,
+ version=2.0,
title=\string\CONTEXT\ User Module,
subtitle=Storing Contents,
author=Pablo González,
- date=2020-01-21,
+ date=2022-04-04,
copyright=Pablo González,
email=pablgonz@educarchile.cl,
license=LPPL]
@@ -60,7 +60,7 @@ and the derived files scontents.sty,
\Msg{* To finish the installation you have to move the files into a }
\Msg{* directory searched by TeX. See README.md for instructions.}
\Msg{*}
-\Msg{* To produce the documentation with source code run xelatex }%
+\Msg{* To produce the documentation with source code run lualatex }%
\Msg{* thrice on file scontents.dtx }%
\Msg{*}
\Msg{* Happy TeXing!}
diff --git a/macros/latex/contrib/scontents/scontents.pdf b/macros/latex/contrib/scontents/scontents.pdf
index 4b5dfbc9c3..73255df198 100644
--- a/macros/latex/contrib/scontents/scontents.pdf
+++ b/macros/latex/contrib/scontents/scontents.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md
index 63b5abae99..cec77aae34 100644
--- a/macros/latex/contrib/siunitx/CHANGELOG.md
+++ b/macros/latex/contrib/siunitx/CHANGELOG.md
@@ -7,6 +7,14 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v3.0.50] - 2022-04-04
+
+### Fixed
+- Spacing of sign when using "output-exponent-marker" (see issue
+ [\#600](https://github.com/josephwright/siunitx/issues/600))
+- Behavior of "minimum-decimal-digits" with uncertainties (see issue
+ [\#601](https://github.com/josephwright/siunitx/issues/601))
+
## [v3.0.49] - 2022-02-15
### Added
@@ -1721,7 +1729,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Added
- First public testing release (as `si`)
-[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.49...HEAD
+[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.50...HEAD
+[v3.0.50]: https://github.com/josephwright/siunitx/compare/v3.0.49...v3.0.50
[v3.0.49]: https://github.com/josephwright/siunitx/compare/v3.0.48...v3.0.49
[v3.0.48]: https://github.com/josephwright/siunitx/compare/v3.0.47...v3.0.48
[v3.0.47]: https://github.com/josephwright/siunitx/compare/v3.0.46...v3.0.47
diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf
index 6537e87694..6b05035a14 100644
--- a/macros/latex/contrib/siunitx/siunitx-code.pdf
+++ b/macros/latex/contrib/siunitx/siunitx-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx-number.dtx b/macros/latex/contrib/siunitx/siunitx-number.dtx
index 19b505bc33..4f3708e706 100644
--- a/macros/latex/contrib/siunitx/siunitx-number.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-number.dtx
@@ -2112,9 +2112,9 @@
%
% \begin{macro}{\@@_digits:NN}
% \begin{macro}[EXP]{\@@_digits:nnnnnnn}
-% \begin{macro}[EXP]{\@@_digits:Nn}
% \begin{macro}[EXP]{\@@_digits:nn}
-% \begin{macro}[EXP]{\@@_digits_S:n}
+% \begin{macro}[EXP]{\@@_digits_uncert:nnn}
+% \begin{macro}[EXP]{\@@_digits_uncert_S:nn}
% Forcing a minimum number of digits in each part is quite easy. As
% the common case is that we don't do anything here, there is no real need
% to optimise the calculation (normally also numbers have only a few digits).
@@ -2128,31 +2128,37 @@
{
\exp_not:n { {#1} {#2} }
{
- \@@_digits:Nn \l_@@_min_integer_int {#3}
+ \@@_digits:nn \l_@@_min_integer_int {#3}
\exp_not:n {#3}
}
{
\exp_not:n {#4}
- \@@_digits:Nn \l_@@_min_decimal_int {#4}
+ \@@_digits:nn \l_@@_min_decimal_int {#4}
}
- { \tl_if_blank:nF {#5} { \@@_digits_uncert:nn #5 } }
+ { \tl_if_blank:nF {#5} { \@@_digits_uncert:nnn {#4} #5 } }
\exp_not:n { {#6} {#7} }
}
-\cs_new:Npn \@@_digits:Nn #1#2
+\cs_new:Npn \@@_digits:nn #1#2
{
\int_compare:nNnT
{ #1 - \tl_count:n {#2} } > 0
- { \prg_replicate:nn { #1 - \tl_count:n {#2} } { 0 } }
+ { \prg_replicate:nn { #1 - \tl_count:n {#2} } { 0 } }
}
-\cs_new:Npn \@@_digits_uncert:nn #1#2
+\cs_new:Npn \@@_digits_uncert:nnn #1#2#3
{
- { #1 }
- { \use:c { @@_digits_uncert_ #1 :n } {#2} }
+ { #2 }
+ { \use:c { @@_digits_uncert_ #2 :nn } {#1} {#3} }
}
-\cs_new:Npn \@@_digits_uncert_S:n #1
+\cs_new:Npn \@@_digits_uncert_S:nn #1#2
{
- \exp_not:n {#1}
- \@@_digits:Nn \l_@@_min_decimal_int {#1}
+ \exp_not:n {#2}
+ \@@_digits:nn
+ {
+ \int_max:nn
+ { 0 }
+ { \l_@@_min_decimal_int - \tl_count:n {#1} + 1 }
+ }
+ {#2}
}
% \end{macrocode}
% \end{macro}
@@ -3643,25 +3649,25 @@
\exp_not:n {#5}
\exp_not:V \l_@@_exponent_base_tl
^
- { \@@_output_exponent_auxiii:nn {#1} {#2} }
+ { \@@_output_exponent_auxiii:nnn { } {#1} {#2} }
}
\cs_new:Npn \@@_output_exponent_auxii:nnnnn #1#2#3#4#5
{
\exp_not:n {#5}
\exp_not:V \l_@@_output_exp_marker_tl
- \@@_output_exponent_auxiii:nn {#1} {#2}
+ \@@_output_exponent_auxiii:nnn { \mathord } {#1} {#2}
}
-\cs_new:Npn \@@_output_exponent_auxiii:nn #1#2
+\cs_new:Npn \@@_output_exponent_auxiii:nnn #1#2#3
{
- \tl_if_blank:nTF {#1}
+ \tl_if_blank:nTF {#2}
{
\bool_lazy_and:nnT
{ \l_@@_implicit_plus_bool }
- { ! \str_if_eq_p:nn {#2} { 0 } }
- { + }
+ { ! \str_if_eq_p:nn {#3} { 0 } }
+ { #1 + }
}
- { \exp_not:n {#1} }
- \@@_output_digits:nn { integer } {#2}
+ { \exp_not:n {#1#2} }
+ \@@_output_digits:nn { integer } {#3}
}
% \end{macrocode}
% A do-nothing marker used to allow shuffling of the output and so expandable
diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx
index 0bd7fa2a8a..d1de5e34da 100644
--- a/macros/latex/contrib/siunitx/siunitx.dtx
+++ b/macros/latex/contrib/siunitx/siunitx.dtx
@@ -121,7 +121,7 @@
%
% Identify the package and give the over all version information.
% \begin{macrocode}
-\ProvidesExplPackage {siunitx} {2022-02-15} {3.0.49}
+\ProvidesExplPackage {siunitx} {2022-04-04} {3.0.50}
{A comprehensive (SI) units package}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf
index d737b16cf8..f66535f7ea 100644
--- a/macros/latex/contrib/siunitx/siunitx.pdf
+++ b/macros/latex/contrib/siunitx/siunitx.pdf
Binary files differ
diff --git a/macros/luatex/generic/luakeys/luakeys-debug.sty b/macros/luatex/generic/luakeys/luakeys-debug.sty
index 56e3329ac4..83ae86b08b 100644
--- a/macros/luatex/generic/luakeys/luakeys-debug.sty
+++ b/macros/luatex/generic/luakeys/luakeys-debug.sty
@@ -17,6 +17,6 @@
% luakeys-debug.sty and luakeys-debug.tex.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luakeys-debug}[2021/12/31 v0.4 Debug package for luakeys.]
+\ProvidesPackage{luakeys-debug}[2022/04/04 v0.5 Debug package for luakeys.]
\input luakeys-debug.tex
diff --git a/macros/luatex/generic/luakeys/luakeys-doc.pdf b/macros/luatex/generic/luakeys/luakeys-doc.pdf
index 0f796cc12c..07f14d206b 100644
--- a/macros/luatex/generic/luakeys/luakeys-doc.pdf
+++ b/macros/luatex/generic/luakeys/luakeys-doc.pdf
Binary files differ
diff --git a/macros/luatex/generic/luakeys/luakeys-doc.tex b/macros/luatex/generic/luakeys/luakeys-doc.tex
index 99dfa6805b..3f7d1b0ea1 100644
--- a/macros/luatex/generic/luakeys/luakeys-doc.tex
+++ b/macros/luatex/generic/luakeys/luakeys-doc.tex
@@ -30,7 +30,7 @@
\url{josef@friedrich.rocks}\\%
\href{https://github.com/Josef-Friedrich/luakeys}{github.com/Josef-Friedrich/luakeys}%
}
-\date{v0.4 from 2021/12/31}
+\date{v0.5 from 2022/04/04}
\maketitle
@@ -526,16 +526,34 @@ In plain \TeX:
\end{minted}
\noindent
-The function can be called with a options table. This two options are
-supported.
+The function can be called with an options table. This options are
+supported:
\begin{minted}{lua}
local result = parse('one,two,three', {
convert_dimensions = false,
- unpack_single_array_value = false
+ unpack_single_array_value = false,
+ standalone_as_true = false,
+ converter = function(key, value, depth, current_table, root_table)
+ return key, value
+ end,
+ case_insensitive_keys = false,
})
\end{minted}
+\noindent
+The options can also be set globally using the exported table
+|default_options|:
+
+\begin{minted}{lua}
+luakeys.parse('dim=1cm') -- {dim = 1864679}
+luakeys.default_options.convert_dimensions = false
+-- or:
+-- local defaults = luakeys.default_options
+-- defaults.convert_dimensions = false
+luakeys.parse('dim=1cm') -- {dim = '1cm'}
+\end{minted}
+
%%
%
%%
@@ -695,6 +713,26 @@ An example of how to use the command in \LaTeX:
\clearpage
+\subsection{luakeys.tex}
+
+\inputminted[linenos=true]{latex}{luakeys.tex}
+
+%%
+%
+%%
+
+\clearpage
+
+\subsection{luakeys.tex}
+
+\inputminted[linenos=true]{latex}{luakeys.tex}
+
+%%
+%
+%%
+
+\clearpage
+
\subsection{luakeys-debug.tex}
\inputminted[linenos=true]{latex}{luakeys-debug.tex}
@@ -726,6 +764,12 @@ An example of how to use the command in \LaTeX:
* Parser: Remove support from Lua numbers with exponents (for example '5e+20')
* Switch the Lua testing framework to busted
}
+\changes{v0.5}{2022/04/04}{
+* Add possibility to change options globally
+* New option: standalone\_as\_true
+* Add a recursive converter callback / hook to process the parse tree
+* New option: case\_insensitive\_keys
+}
\pagebreak
\PrintChanges
\pagebreak
diff --git a/macros/luatex/generic/luakeys/luakeys.lua b/macros/luatex/generic/luakeys/luakeys.lua
index c5f51fcfad..c5ccf6b01d 100644
--- a/macros/luatex/generic/luakeys/luakeys.lua
+++ b/macros/luatex/generic/luakeys/luakeys.lua
@@ -50,8 +50,89 @@ if not tex then
end
end
---- A table to store parsed key-value results.
-local result_store = {}
+--- Option handling
+-- @section
+
+--- This table stores all allowed option keys.
+local option_keys = {
+ 'convert_dimensions',
+ 'unpack_single_array_values',
+ 'standalone_as_true',
+ 'converter',
+ 'case_insensitive_keys'
+}
+
+--- The default options.
+local default_options = {
+ convert_dimensions = true,
+ unpack_single_array_values = true,
+ standalone_as_true = false,
+}
+
+local function throw_error(message)
+ if type(tex.error) == 'function' then
+ tex.error(message)
+ else
+ error(message)
+ end
+end
+
+--- Convert a key so that it can be written as a table field without
+-- quotes and square brackets (for example `one 2` becomes `one_2`).
+-- The key can then reference values from a table using dot notation.
+-- (`table["one 2"]` becomes `table.one_2`).
+--
+-- @tparam string key The key to be converted.
+--
+-- @treturn string The converted key.
+local function luafy_key(key)
+ return key:gsub('[^%w]+', '_')
+end
+
+--- Convert all keys in a table to strings containig only alphanumeric
+-- characters and underscores.
+--
+-- @param raw_options Some raw options.
+--
+-- @treturn table Returns always a table. If the input value is not a
+-- an empty table is returned.
+local function luafy_options(raw_options)
+ if type(raw_options) ~= 'table' then
+ raw_options = {}
+ end
+ local options = {}
+ for key, value in pairs(raw_options) do
+ options[luafy_key(key)] = value
+ end
+ return options
+end
+
+--- All option keys can be written with underscores or with spaces as
+-- separators.
+-- For the LaTeX version of the macro
+-- `\luakeysdebug[options]{kv-string}`.
+--
+-- @tparam table options_raw Options in a raw format. The table may be
+-- empty or some keys are not set.
+--
+-- @treturn table
+local function normalize_parse_options (options_raw)
+ options_raw = luafy_options(options_raw)
+ local options = {}
+
+ for _, option_name in ipairs(option_keys) do
+ if options_raw[option_name] ~= nil then
+ options[option_name] = options_raw[option_name]
+ else
+ options[option_name] = default_options[option_name]
+ end
+ end
+
+ return options
+end
+
+--- Parser / Lpeg related
+-- @section
--- Generate the PEG parser using Lpeg.
--
@@ -244,27 +325,55 @@ local function get_table_size(value)
end
--- Unpack a single valued array table like `{ 'one' }` into `one` or
--- `{ 1 }` into `into`.
+-- `{ 1 }` into `1`.
--
-- @treturn If the value is a array like table with one non table typed
-- value in it, the unpacked value, else the unchanged input.
-local function unpack_single_valued_array_table(value)
+local function unpack_single_valued_array_table(value, options)
if
type(value) == 'table' and
get_array_size(value) == 1 and
get_table_size(value) == 1 and
type(value[1]) ~= 'table'
then
- return value[1]
+ if type(value[1]) == 'string' and options.standalone_as_true then
+ return value
+ else
+ return value[1]
+ end
end
return value
end
---- This normalization tasks are performed on the raw input table coming
--- directly from the PEG parser:
+local function visit_parse_tree(parse_tree, callback_func)
+ if type(parse_tree) ~= 'table' then
+ throw_error('Parse tree has to be a table')
+ end
+ local function visit_parse_tree_recursive(root_table, current_table, result, depth, callback_func)
+ for key, value in pairs(current_table) do
+ if type(value) == 'table' then
+ value = visit_parse_tree_recursive(root_table, value, {}, depth + 1, callback_func)
+ end
+
+ key, value = callback_func(key, value, depth, current_table, root_table)
+
+ if key ~= nil and value ~= nil then
+ result[key] = value
+ end
+ end
+ if next(result) ~= nil then
+ return result
+ end
+ end
+
+ return visit_parse_tree_recursive(parse_tree, parse_tree, {}, 1, callback_func)
+end
+
+--- Normalize the result tables of the LPeg parser. This normalization
+-- tasks are performed on the raw input table coming directly from the
+-- PEG parser:
--
--- 1. Trim all strings: ` text \n` into `text`
--- 2. Unpack all single valued array like tables: `{ 'text' }` into
+-- * Unpack all single valued array like tables: `{ 'text' }` into
-- `text`
--
-- @tparam table raw The raw input table coming directly from the PEG
@@ -278,7 +387,7 @@ local function normalize(raw, options)
local function normalize_recursive(raw, result, options)
for key, value in pairs(raw) do
if options.unpack_single_array_values then
- value = unpack_single_valued_array_table(value)
+ value = unpack_single_valued_array_table(value, options)
end
if type(value) == 'table' then
result[key] = normalize_recursive(value, {}, options)
@@ -288,7 +397,132 @@ local function normalize(raw, options)
end
return result
end
- return normalize_recursive(raw, {}, options)
+ raw = normalize_recursive(raw, {}, options)
+
+ if options.standalone_as_true then
+ raw = visit_parse_tree(raw, function (key, value)
+ if type(key) == 'number' and type(value) == 'string' then
+ return value, true
+ end
+ return key, value
+ end)
+ end
+
+ if options.case_insensitive_keys then
+ raw = visit_parse_tree(raw, function (key, value)
+ if type(key) == 'string' then
+ return key:lower(), value
+ end
+ return key, value
+ end)
+ end
+
+ return raw
+end
+
+--- Parse a LaTeX/TeX style key-value string into a Lua table. With
+-- this function you should be able to parse key-value strings like
+-- this example:
+--
+-- show,
+-- hide,
+-- key with spaces = String without quotes,
+-- string="String with double quotes: ,{}=",
+-- dimension = 1cm,
+-- number = -1.2,
+-- list = {one,two,three},
+-- key value list = {one=one,two=two,three=three},
+-- nested key = {
+-- nested key 2= {
+-- key = value,
+-- },
+-- },
+--
+-- The string above results in this Lua table:
+--
+-- {
+-- 'show',
+-- 'hide',
+-- ['key with spaces'] = 'String without quotes',
+-- string = 'String with double quotes: ,{}=',
+-- dimension = 1864679,
+-- number = -1.2,
+-- list = {'one', 'two', 'three'},
+-- key value list = {
+-- one = 'one',
+-- three = 'three',
+-- two = 'two'
+-- },
+-- ['nested key'] = {
+-- ['nested key 2'] = {
+-- key = 'value'
+-- }
+-- },
+-- }
+--
+-- @tparam string kv_string A string in the TeX/LaTeX style key-value
+-- format as described above.
+--
+-- @tparam table options A table containing
+-- settings: `convert_dimensions`, `unpack_single_array_values`, `standalone_as_true`, `converter`
+--
+-- @treturn table A hopefully properly parsed table you can do
+-- something useful with.
+local function parse (kv_string, options)
+ if kv_string == nil then
+ return {}
+ end
+ options = normalize_parse_options(options)
+
+ local parser = generate_parser(options)
+ local parse_tree = parser:match(kv_string)
+
+ if options.converter ~= nil and type(options.converter) == 'function' then
+ parse_tree = visit_parse_tree(parse_tree, options.converter)
+ end
+ return normalize(parse_tree, options)
+end
+
+--- Convert back to strings
+-- @section
+
+--- The function `render(tbl)` reverses the function
+-- `parse(kv_string)`. It takes a Lua table and converts this table
+-- into a key-value string. The resulting string usually has a
+-- different order as the input table. In Lua only tables with
+-- 1-based consecutive integer keys (a.k.a. array tables) can be
+-- parsed in order.
+--
+-- @tparam table tbl A table to be converted into a key-value string.
+--
+-- @treturn string A key-value string that can be passed to a TeX
+-- macro.
+local function render (tbl)
+ local function render_inner(tbl)
+ local output = {}
+ local function add(text)
+ table.insert(output, text)
+ end
+ for key, value in pairs(tbl) do
+ if (key and type(key) == 'string') then
+ if (type(value) == 'table') then
+ if (next(value)) then
+ add(key .. '={')
+ add(render_inner(value))
+ add('},')
+ else
+ add(key .. '={},')
+ end
+ else
+ add(key .. '=' .. tostring(value) .. ',')
+ end
+ else
+ add(tostring(value) .. ',')
+ end
+ end
+ return table.concat(output)
+ end
+ return render_inner(tbl)
end
--- The function `stringify(tbl, for_tex)` converts a Lua table into a
@@ -371,171 +605,84 @@ local function stringify(input, for_tex)
return start_bracket .. line_break .. stringify_inner(input, 1) .. line_break .. end_bracket
end
---- For the LaTeX version of the macro
--- `\luakeysdebug[options]{kv-string}`.
+--- The function `pretty_print(tbl)` pretty prints a Lua table to standard
+-- output (stdout). It is a utility function that can be used to
+-- debug and inspect the resulting Lua table of the function
+-- `parse`. You have to compile your TeX document in a console to
+-- see the terminal output.
--
--- @tparam table options_raw Options in a raw format. The table may be
--- empty or some keys are not set.
---
--- @treturn table
-local function normalize_parse_options (options_raw)
- if options_raw == nil then
- options_raw = {}
- end
- local options = {}
-
- if options_raw['unpack single array values'] ~= nil then
- options['unpack_single_array_values'] = options_raw['unpack single array values']
- end
+-- @tparam table tbl A table to be printed to standard output for
+-- debugging purposes.
+local function pretty_print(tbl)
+ print(stringify(tbl, false))
+end
- if options_raw['convert dimensions'] ~= nil then
- options['convert_dimensions'] = options_raw['convert dimensions']
- end
+--- Store results
+-- @section
- if options.convert_dimensions == nil then
- options.convert_dimensions = true
- end
+--- A table to store parsed key-value results.
+local result_store = {}
- if options.unpack_single_array_values == nil then
- options.unpack_single_array_values = true
- end
+--- The function `save(identifier, result): void` saves a result (a
+-- table from a previous run of `parse`) under an identifier.
+-- Therefore, it is not necessary to pollute the global namespace to
+-- store results for the later usage.
+--
+-- @tparam string identifier The identifier under which the result is
+-- saved.
+--
+-- @tparam table result A result to be stored and that was created by
+-- the key-value parser.
+local function save(identifier, result)
+ result_store[identifier] = result
+end
- return options
+--- The function `get(identifier): table` retrieves a saved result
+-- from the result store.
+--
+-- @tparam string identifier The identifier under which the result was
+-- saved.
+local function get(identifier)
+ -- if result_store[identifier] == nil then
+ -- throw_error('No stored result was found for the identifier \'' .. identifier .. '\'')
+ -- end
+ return result_store[identifier]
end
-return {
+--- Exports
+-- @section
+
+local export = {
+ --- @see default_options
+ default_options = default_options,
+
+ --- @see stringify
stringify = stringify,
- --- Parse a LaTeX/TeX style key-value string into a Lua table. With
- -- this function you should be able to parse key-value strings like
- -- this example:
- --
- -- show,
- -- hide,
- -- key with spaces = String without quotes,
- -- string="String with double quotes: ,{}=",
- -- dimension = 1cm,
- -- number = -1.2,
- -- list = {one,two,three},
- -- key value list = {one=one,two=two,three=three},
- -- nested key = {
- -- nested key 2= {
- -- key = value,
- -- },
- -- },
- --
- -- The string above results in this Lua table:
- --
- -- {
- -- 'show',
- -- 'hide',
- -- ['key with spaces'] = 'String without quotes',
- -- string = 'String with double quotes: ,{}=',
- -- dimension = 1864679,
- -- number = -1.2,
- -- list = {'one', 'two', 'three'},
- -- key value list = {
- -- one = 'one',
- -- three = 'three',
- -- two = 'two'
- -- },
- -- ['nested key'] = {
- -- ['nested key 2'] = {
- -- key = 'value'
- -- }
- -- },
- -- }
- --
- -- @tparam string kv_string A string in the TeX/LaTeX style key-value
- -- format as described above.
- --
- -- @tparam table options A table containing
- -- settings: `convert_dimensions` `unpack_single_array_values`
- --
- -- @treturn table A hopefully properly parsed table you can do
- -- something useful with.
- parse = function (kv_string, options)
- if kv_string == nil then
- return {}
- end
- options = normalize_parse_options(options)
-
- local parser = generate_parser(options)
- return normalize(parser:match(kv_string), options)
- end,
-
- --- The function `render(tbl)` reverses the function
- -- `parse(kv_string)`. It takes a Lua table and converts this table
- -- into a key-value string. The resulting string usually has a
- -- different order as the input table. In Lua only tables with
- -- 1-based consecutive integer keys (a.k.a. array tables) can be
- -- parsed in order.
- --
- -- @tparam table tbl A table to be converted into a key-value string.
- --
- -- @treturn string A key-value string that can be passed to a TeX
- -- macro.
- render = function (tbl)
- local function render_inner(tbl)
- local output = {}
- local function add(text)
- table.insert(output, text)
- end
- for key, value in pairs(tbl) do
- if (key and type(key) == 'string') then
- if (type(value) == 'table') then
- if (next(value)) then
- add(key .. '={')
- add(render_inner(value))
- add('},')
- else
- add(key .. '={},')
- end
- else
- add(key .. '=' .. tostring(value) .. ',')
- end
- else
- add(tostring(value) .. ',')
- end
- end
- return table.concat(output)
- end
- return render_inner(tbl)
- end,
-
- --- The function `print(tbl)` pretty prints a Lua table to standard
- -- output (stdout). It is a utility function that can be used to
- -- debug and inspect the resulting Lua table of the function
- -- `parse`. You have to compile your TeX document in a console to
- -- see the terminal output.
- --
- -- @tparam table tbl A table to be printed to standard output for
- -- debugging purposes.
- print = function(tbl)
- print(stringify(tbl, false))
- end,
-
- --- The function `save(identifier, result): void` saves a result (a
- -- table from a previous run of `parse`) under an identifier.
- -- Therefore, it is not necessary to pollute the global namespace to
- -- store results for the later usage.
- --
- -- @tparam string identifier The identifier under which the result is
- -- saved.
- --
- -- @tparam table result A result to be stored and that was created by
- -- the key-value parser.
- save = function(identifier, result)
- result_store[identifier] = result
- end,
-
- --- The function `get(identifier): table` retrieves a saved result
- -- from the result store.
- --
- -- @tparam string identifier The identifier under which the result was
- -- saved.
- get = function(identifier)
- return result_store[identifier]
- end,
+ --- @see parse
+ parse = parse,
+
+ --- @see render
+ render = render,
+
+ --- @see pretty_print
+ print = pretty_print,
+ --- @see save
+ save = save,
+
+ --- @see get
+ get = get,
}
+
+-- http://olivinelabs.com/busted/#private
+if _TEST then
+ export.luafy_key = luafy_key
+ export.luafy_options = luafy_options
+ export.normalize = normalize
+ export.normalize_parse_options = normalize_parse_options
+ export.unpack_single_valued_array_table = unpack_single_valued_array_table
+ export.visit_parse_tree = visit_parse_tree
+end
+
+return export
diff --git a/macros/luatex/generic/luakeys/luakeys.sty b/macros/luatex/generic/luakeys/luakeys.sty
index 31d56854f3..2cf22b837a 100644
--- a/macros/luatex/generic/luakeys/luakeys.sty
+++ b/macros/luatex/generic/luakeys/luakeys.sty
@@ -17,5 +17,5 @@
% luakeys-debug.sty and luakeys-debug.tex.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luakeys}[2021/12/31 v0.4 Parsing key-value options using Lua.]
+\ProvidesPackage{luakeys}[2022/04/04 v0.5 Parsing key-value options using Lua.]
\directlua{luakeys = require('luakeys')}
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.pdf b/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.pdf
index e5c6359089..5a1335922a 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.pdf
+++ b/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.tex b/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.tex
index 39819feb11..d33c948560 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.tex
+++ b/macros/unicodetex/latex/beaulivre/beaulivre-doc-cn.tex
@@ -37,7 +37,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -91,7 +91,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\frontmatter
@@ -113,7 +113,7 @@
\beaulivre{} 支持英语、法语、德语、意大利语、葡萄牙语、巴西葡萄牙语、西班牙语、简体中文、繁体中文、日文、俄文,并且同一篇文档中这些语言可以很好地协调。由于采用了自定义字体,需要用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎进行编译。
-这篇说明文档即是用 \beaulivre{} 排版的 (使用了参数 \texttt{allowbf}),你可以把它看作一份简短的说明与演示。
+这篇说明文档即是用 \beaulivre{} 排版的 (使用了参数 \texttt{use boldface}),你可以把它看作一份简短的说明与演示。
\bigskip
\begin{tip}
@@ -187,7 +187,7 @@
\section{(*\meta{section title}*)}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\begin{theorem}\label{thm:abc}
Ceci est un théorème.
@@ -226,7 +226,7 @@ Référence du théorème: \cref{thm:abc}
\LevelThreeTitle{未完成标记}
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
当你有一些地方尚未完成的时候,可以用这条指令标记出来,它在草稿阶段格外有用。
@@ -289,7 +289,7 @@ Référence du théorème: \cref{thm:abc}
\item 字体选项。顾名思义,会加载相应名称的字体。
\item \texttt{useosf} 选项用来启用“旧式”数字。
\end{itemize}
- \item \texttt{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item 允许加粗。启用这一选项时,题目、各级标题、定理类环境名称会被加粗。
\end{itemize}
@@ -436,9 +436,9 @@ Référence du théorème: \cref{thm:abc}
\LevelTwoTitle{未完成标记}
-你可以通过 \lstinline|\dnf| 来标记尚未完成的部分。例如:
+你可以通过 \lstinline|\DNF| 来标记尚未完成的部分。例如:
\begin{itemize}
- \item \lstinline|\dnf| 或 \lstinline|\dnf<...>|。效果为:\dnf~或 \dnf<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\dnf}。
+ \item \lstinline|\DNF| 或 \lstinline|\DNF<...>|。效果为:\DNF~或 \DNF<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\DNF}。
\end{itemize}
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.pdf b/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.pdf
index 50a11df329..8de496a03e 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.pdf
+++ b/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.tex b/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.tex
index 790879cf5d..8b674f7985 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.tex
+++ b/macros/unicodetex/latex/beaulivre/beaulivre-doc-en.tex
@@ -37,7 +37,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -91,7 +91,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\frontmatter
@@ -113,7 +113,7 @@
\beaulivre{} has multi-language support, including Chinese (simplified and traditional), English, French, German, Italian, Japanese, Portuguese (European and Brazilian), Russian and Spanish. These languages can be switched seamlessly in a single document. Due to the usage of custom fonts, \lebhart{} requires \hologo{XeLaTeX} or \hologo{LuaLaTeX} to compile.
-This documentation is typeset using \beaulivre{} (with the option \texttt{allowbf}). You can think of it as a short introduction and demonstration.
+This documentation is typeset using \beaulivre{} (with the option \texttt{use boldface}). You can think of it as a short introduction and demonstration.
\bigskip
\begin{tip}
@@ -187,7 +187,7 @@ Let's first look at a complete document.
\section{(*\meta{section title}*)}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\begin{theorem}\label{thm:abc}
Ceci est un théorème.
@@ -227,7 +227,7 @@ For detailed description of this command and more related commands, please refer
\LevelThreeTitle{Draft marks}
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
When you have some places that have not yet been finished yet, you can mark them with this command, which is especially useful during the draft stage.
@@ -290,7 +290,7 @@ In addition, Source Code Pro is used as the English sans serif font, New Compute
\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{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item Allow boldface. When this option is enabled, the main title, the titles of all levels and the names of theorem-like environments will be bolded.
\end{itemize}
@@ -432,9 +432,9 @@ For aesthetics, adjacent definitions will be connected together automatically:
% \clearpage
\LevelTwoTitle{Draft mark}
-You can use \lstinline|\dnf| to mark the unfinished part. For example:
+You can use \lstinline|\DNF| to mark the unfinished part. For example:
\begin{itemize}
- \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
+ \item \lstinline|\DNF| or \lstinline|\DNF<...>|. The effect is: \DNF~ or \DNF<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\DNF} in French mode.
\end{itemize}
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre-doc-fr.pdf b/macros/unicodetex/latex/beaulivre/beaulivre-doc-fr.pdf
index c57f8cebc8..1bd8eebfd4 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre-doc-fr.pdf
+++ b/macros/unicodetex/latex/beaulivre/beaulivre-doc-fr.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre-doc-fr.tex b/macros/unicodetex/latex/beaulivre/beaulivre-doc-fr.tex
index 0c8439d562..e1b2e630b0 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre-doc-fr.tex
+++ b/macros/unicodetex/latex/beaulivre/beaulivre-doc-fr.tex
@@ -37,7 +37,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -91,7 +91,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\frontmatter
@@ -113,7 +113,7 @@
\beaulivre{} prend en charge plusieurs langues, notamment le chinois (simplifié et traditionnel), l'anglais, le français, l'allemand, l'italien, le japonais, le portugais (européen et brésilien), le russe et l'espagnol. Ces langues peuvent être commutées de manière transparente dans un seul document. En raison de l'utilisation de polices personnalisées, \beaulivre{} demande soit \hologo{XeLaTeX} soit \hologo{LuaLaTeX} pour la compilation.
-Cette documentation est composée à l'aide de \beaulivre{} (avec l'option \texttt{allowbf}). Vous pouvez le considérer comme une courte introduction et une démonstration.
+Cette documentation est composée à l'aide de \beaulivre{} (avec l'option \texttt{use boldface}). Vous pouvez le considérer comme une courte introduction et une démonstration.
\bigskip
\begin{tip}
@@ -188,7 +188,7 @@ Regardons d'abord un document complet.
\section{(*\meta{section title}*)}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\begin{theorem}\label{thm:abc}
Ceci est un théorème.
@@ -227,7 +227,7 @@ Pour une description détaillée de cette commande et d'autres commandes associ
\LevelThreeTitle{Marques de brouillon}
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
Lorsque vous avez des endroits qui ne sont pas encore finis, vous pouvez les marquer avec cette commande, ce qui est particulièrement utile lors de la phase de brouillon.
@@ -290,7 +290,7 @@ De plus, Source Code Pro est utilisé comme police anglaise sans empattement, Ne
\item Options de police. Comme son nom l'indique, la police avec le nom correspondant sera utilisée.
\item L'option \texttt{useosf} est pour activer les chiffres à l'ancienne.
\end{itemize}
- \item \texttt{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item Afficher les titres en gras. Lorsque cette option est utilisée, le titre principal, les titres de tous les niveaux et les noms des environnements de type théorème seront en gras.
\end{itemize}
@@ -428,9 +428,9 @@ Pour l'esthétique, les définitions adjacentes seront reliées entre elles auto
\LevelTwoTitle{Draft mark}
-Vous pouvez utiliser \lstinline|\dnf| pour marquer la partie inachevée. Par example :
+Vous pouvez utiliser \lstinline|\DNF| pour marquer la partie inachevée. Par example :
\begin{itemize}
- \item \lstinline|\dnf| ou \lstinline|\dnf<...>|. L'effet est : \dnf~ ou \dnf<...>. \\Le texte à l'intérieur changera en fonction de la langue actuelle. Par exemple, il sera affiché sous la forme \UseOtherLanguage{English}{\dnf} en mode anglais.
+ \item \lstinline|\DNF| ou \lstinline|\DNF<...>|. L'effet est : \DNF~ ou \DNF<...>. \\Le texte à l'intérieur changera en fonction de la langue actuelle. Par exemple, il sera affiché sous la forme \UseOtherLanguage{English}{\DNF} en mode anglais.
\end{itemize}
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre.cls b/macros/unicodetex/latex/beaulivre/beaulivre.cls
index b56b03e2b9..7a7ba60d6d 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre.cls
+++ b/macros/unicodetex/latex/beaulivre/beaulivre.cls
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplClass
{beaulivre}
- {2022/03/28} {}
+ {2022/04/03} {}
{A colorful book style}
\tl_const:Nn \l__colorclass_base_class_tl { book }
@@ -180,6 +180,7 @@
\RequirePackage { colorist }
+\raggedbottom
\hfuzz=2pt
\vfuzz=2pt
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-cn.pdf b/macros/unicodetex/latex/einfart/einfart-doc-cn.pdf
index 9496bb9c42..248a122a8c 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-cn.pdf
+++ b/macros/unicodetex/latex/einfart/einfart-doc-cn.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-cn.tex b/macros/unicodetex/latex/einfart/einfart-doc-cn.tex
index eac43ce78a..8338f4c417 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-cn.tex
+++ b/macros/unicodetex/latex/einfart/einfart-doc-cn.tex
@@ -38,7 +38,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -95,7 +95,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\title{\einfart{},以极简主义风格排版你的文章}
\author{许锦文}
@@ -163,7 +163,7 @@
\maketitle
\begin{abstract}
- Ceci est un résumé. \dnf<(*\meta{some hint}*)>
+ Ceci est un résumé. \DNF<(*\meta{some hint}*)>
\end{abstract}
\begin{keyword}
AAA, BBB, CCC, DDD, EEE
@@ -257,7 +257,7 @@ Référence du théorème: \cref{thm:abc}
\medskip
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
当你有一些地方尚未完成的时候,可以用这条指令标记出来,它在草稿阶段格外有用。
@@ -334,7 +334,7 @@ Référence du théorème: \cref{thm:abc}
\item 字体选项。顾名思义,会加载相应名称的字体。
\item \texttt{useosf} 选项用来启用“旧式”数字。
\end{itemize}
- \item \texttt{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item 允许加粗。启用这一选项时,题目、各级标题、定理类环境名称会被加粗。
\end{itemize}
@@ -449,9 +449,9 @@ Référence du théorème: \cref{thm:abc}
\LevelTwoTitle{未完成标记}
-你可以通过 \lstinline|\dnf| 来标记尚未完成的部分。例如:
+你可以通过 \lstinline|\DNF| 来标记尚未完成的部分。例如:
\begin{itemize}
- \item \lstinline|\dnf| 或 \lstinline|\dnf<...>|。效果为:\dnf~或 \dnf<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\dnf}。
+ \item \lstinline|\DNF| 或 \lstinline|\DNF<...>|。效果为:\DNF~或 \DNF<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\DNF}。
\end{itemize}
\LevelTwoTitle{文章标题、摘要与关键词}
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-en.pdf b/macros/unicodetex/latex/einfart/einfart-doc-en.pdf
index 64be68fff9..8a0aa6c4db 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-en.pdf
+++ b/macros/unicodetex/latex/einfart/einfart-doc-en.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-en.tex b/macros/unicodetex/latex/einfart/einfart-doc-en.tex
index 03e6b6056f..43fc9cebbb 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-en.tex
+++ b/macros/unicodetex/latex/einfart/einfart-doc-en.tex
@@ -38,7 +38,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -95,7 +95,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\title{\einfart{}, write your articles in a simple and clear way}
\author{Jinwen XU}
@@ -163,7 +163,7 @@ Let's first look at a complete document.
\maketitle
\begin{abstract}
- Ceci est un résumé. \dnf<(*\meta{some hint}*)>
+ Ceci est un résumé. \DNF<(*\meta{some hint}*)>
\end{abstract}
\begin{keyword}
AAA, BBB, CCC, DDD, EEE
@@ -258,7 +258,7 @@ In addition, you may also write in the \AmS{} fashion, i.e.:
\medskip
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
When you have some places that have not yet been finished yet, you can mark them with this command, which is especially useful during the draft stage.
@@ -335,7 +335,7 @@ In addition, Source Code Pro is used as the English sans serif font, New Compute
\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{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item Allow boldface. When this option is enabled, the main title, the titles of all levels and the names of theorem-like environments will be bolded.
\end{itemize}
@@ -446,9 +446,9 @@ By default, when referenced, the name of the theorem matches the current context
\LevelTwoTitle{Draft mark}
-You can use \lstinline|\dnf| to mark the unfinished part. For example:
+You can use \lstinline|\DNF| to mark the unfinished part. For example:
\begin{itemize}
- \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
+ \item \lstinline|\DNF| or \lstinline|\DNF<...>|. The effect is: \DNF~ or \DNF<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\DNF} in French mode.
\end{itemize}
\LevelTwoTitle{Title, abstract and keywords}
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-fr.pdf b/macros/unicodetex/latex/einfart/einfart-doc-fr.pdf
index 16dc2c0b41..f22cd43c74 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-fr.pdf
+++ b/macros/unicodetex/latex/einfart/einfart-doc-fr.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/einfart/einfart-doc-fr.tex b/macros/unicodetex/latex/einfart/einfart-doc-fr.tex
index 126ad83f68..ca40ea64b6 100644
--- a/macros/unicodetex/latex/einfart/einfart-doc-fr.tex
+++ b/macros/unicodetex/latex/einfart/einfart-doc-fr.tex
@@ -38,7 +38,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -95,7 +95,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\title{\einfart{}, écrivez vos articles de manière simple et claire}
\author{Jinwen XU}
@@ -164,7 +164,7 @@ Regardons d'abord un document complet.
\maketitle
\begin{abstract}
- Ceci est un résumé. \dnf<(*\meta{some hint}*)>
+ Ceci est un résumé. \DNF<(*\meta{some hint}*)>
\end{abstract}
\begin{keyword}
AAA, BBB, CCC, DDD, EEE
@@ -258,7 +258,7 @@ De plus, vous pouvez également écrire à la manière \AmS{}, c'est-à-dire :
\medskip
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
Lorsque vous avez des endroits qui ne sont pas encore finis, vous pouvez les marquer avec cette commande, ce qui est particulièrement utile lors de la phase de brouillon.
@@ -334,7 +334,7 @@ De plus, Source Code Pro est utilisé comme police anglaise sans empattement, Ne
\item Options de police. Comme son nom l'indique, la police avec le nom correspondant sera utilisée.
\item L'option \texttt{useosf} est pour activer les chiffres à l'ancienne.
\end{itemize}
- \item \texttt{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item Afficher les titres en gras. Lorsque cette option est utilisée, le titre principal, les titres de tous les niveaux et les noms des environnements de type théorème seront en gras.
\end{itemize}
@@ -443,9 +443,9 @@ Par défaut, lors du référencement, le nom du théorème correspond au context
\LevelTwoTitle{Draft mark}
-Vous pouvez utiliser \lstinline|\dnf| pour marquer la partie inachevée. Par example :
+Vous pouvez utiliser \lstinline|\DNF| pour marquer la partie inachevée. Par example :
\begin{itemize}
- \item \lstinline|\dnf| ou \lstinline|\dnf<...>|. L'effet est : \dnf~ ou \dnf<...>. \\Le texte à l'intérieur changera en fonction de la langue actuelle. Par exemple, il sera affiché sous la forme \UseOtherLanguage{English}{\dnf} en mode anglais.
+ \item \lstinline|\DNF| ou \lstinline|\DNF<...>|. L'effet est : \DNF~ ou \DNF<...>. \\Le texte à l'intérieur changera en fonction de la langue actuelle. Par exemple, il sera affiché sous la forme \UseOtherLanguage{English}{\DNF} en mode anglais.
\end{itemize}
\LevelTwoTitle{Titre, résumé et mots-clés}
diff --git a/macros/unicodetex/latex/einfart/einfart.cls b/macros/unicodetex/latex/einfart/einfart.cls
index c56165e6b9..ab1be42047 100644
--- a/macros/unicodetex/latex/einfart/einfart.cls
+++ b/macros/unicodetex/latex/einfart/einfart.cls
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplClass
{einfart}
- {2022/03/28} {}
+ {2022/04/03} {}
{A simple and clear article style}
\tl_const:Nn \l__minimclass_base_class_tl { article }
@@ -201,6 +201,10 @@
\RequirePackage { minimalist }
+\raggedbottom
+\hfuzz=2pt
+\vfuzz=2pt
+
%%================================
%% Fonts
%%================================
diff --git a/macros/unicodetex/latex/lebhart/lebhart-doc-cn.pdf b/macros/unicodetex/latex/lebhart/lebhart-doc-cn.pdf
index fb99a6d618..fbc8a1cc54 100644
--- a/macros/unicodetex/latex/lebhart/lebhart-doc-cn.pdf
+++ b/macros/unicodetex/latex/lebhart/lebhart-doc-cn.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/lebhart/lebhart-doc-cn.tex b/macros/unicodetex/latex/lebhart/lebhart-doc-cn.tex
index 9b80d1283e..7b5b014c2e 100644
--- a/macros/unicodetex/latex/lebhart/lebhart-doc-cn.tex
+++ b/macros/unicodetex/latex/lebhart/lebhart-doc-cn.tex
@@ -37,7 +37,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -91,7 +91,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\title{{\normalfont\bfseries\color{main-text}\lebhart{}}\\以多彩的方式排版你的文章}
\author{许锦文}
@@ -106,7 +106,7 @@
\lebhart{} 支持英语、法语、德语、意大利语、葡萄牙语、巴西葡萄牙语、西班牙语、简体中文、繁体中文、日文、俄文,并且同一篇文档中这些语言可以很好地协调。由于采用了自定义字体,需要用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 引擎进行编译。
- 这篇说明文档即是用 \lebhart{} 排版的 (使用了参数 \texttt{allowbf}),你可以把它看作一份简短的说明与演示。
+ 这篇说明文档即是用 \lebhart{} 排版的 (使用了参数 \texttt{use boldface}),你可以把它看作一份简短的说明与演示。
\end{abstract}
@@ -159,7 +159,7 @@
\maketitle
\begin{abstract}
- Ceci est un résumé. \dnf<(*\meta{some hint}*)>
+ Ceci est un résumé. \DNF<(*\meta{some hint}*)>
\end{abstract}
\begin{keyword}
AAA, BBB, CCC, DDD, EEE
@@ -250,7 +250,7 @@ Référence du théorème: \cref{thm:abc}
\LevelThreeTitle{未完成标记}
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
当你有一些地方尚未完成的时候,可以用这条指令标记出来,它在草稿阶段格外有用。
@@ -335,7 +335,7 @@ Référence du théorème: \cref{thm:abc}
\item 字体选项。顾名思义,会加载相应名称的字体。
\item \texttt{useosf} 选项用来启用“旧式”数字。
\end{itemize}
- \item \texttt{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item 允许加粗。启用这一选项时,题目、各级标题、定理类环境名称会被加粗。
\end{itemize}
@@ -479,9 +479,9 @@ Référence du théorème: \cref{thm:abc}
\LevelTwoTitle{未完成标记}
-你可以通过 \lstinline|\dnf| 来标记尚未完成的部分。例如:
+你可以通过 \lstinline|\DNF| 来标记尚未完成的部分。例如:
\begin{itemize}
- \item \lstinline|\dnf| 或 \lstinline|\dnf<...>|。效果为:\dnf~或 \dnf<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\dnf}。
+ \item \lstinline|\DNF| 或 \lstinline|\DNF<...>|。效果为:\DNF~或 \DNF<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\DNF}。
\end{itemize}
\LevelTwoTitle{文章标题、摘要与关键词}
diff --git a/macros/unicodetex/latex/lebhart/lebhart-doc-en.pdf b/macros/unicodetex/latex/lebhart/lebhart-doc-en.pdf
index 41a71f9dea..12dfd4d9cd 100644
--- a/macros/unicodetex/latex/lebhart/lebhart-doc-en.pdf
+++ b/macros/unicodetex/latex/lebhart/lebhart-doc-en.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/lebhart/lebhart-doc-en.tex b/macros/unicodetex/latex/lebhart/lebhart-doc-en.tex
index 540f300b0c..b9de98ea01 100644
--- a/macros/unicodetex/latex/lebhart/lebhart-doc-en.tex
+++ b/macros/unicodetex/latex/lebhart/lebhart-doc-en.tex
@@ -37,7 +37,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -91,7 +91,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\title{{\normalfont\bfseries\color{main-text}\lebhart{}}\\write your articles in a colorful way}
\author{Jinwen XU}
@@ -106,7 +106,7 @@
\lebhart{} has multi-language support, including Chinese (simplified and traditional), English, French, German, Italian, Japanese, Portuguese (European and Brazilian), Russian and Spanish. These languages can be switched seamlessly in a single document. Due to the usage of custom fonts, \lebhart{} requires \hologo{XeLaTeX} or \hologo{LuaLaTeX} to compile.
- This documentation is typeset using \lebhart{} (with the option \texttt{allowbf}). You can think of it as a short introduction and demonstration.
+ This documentation is typeset using \lebhart{} (with the option \texttt{use boldface}). You can think of it as a short introduction and demonstration.
\end{abstract}
@@ -159,7 +159,7 @@ Let's first look at a complete document.
\maketitle
\begin{abstract}
- Ceci est un résumé. \dnf<(*\meta{some hint}*)>
+ Ceci est un résumé. \DNF<(*\meta{some hint}*)>
\end{abstract}
\begin{keyword}
AAA, BBB, CCC, DDD, EEE
@@ -250,7 +250,7 @@ In addition, you may also write in the \AmS{} fashion, i.e.:
\LevelThreeTitle{Draft marks}
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
When you have some places that have not yet been finished yet, you can mark them with this command, which is especially useful during the draft stage.
@@ -334,7 +334,7 @@ In addition, Source Code Pro is used as the English sans serif font, New Compute
\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{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item Allow boldface. When this option is enabled, the main title, the titles of all levels and the names of theorem-like environments will be bolded.
\end{itemize}
@@ -473,9 +473,9 @@ For aesthetics, adjacent definitions will be connected together automatically:
\LevelTwoTitle{Draft mark}
-You can use \lstinline|\dnf| to mark the unfinished part. For example:
+You can use \lstinline|\DNF| to mark the unfinished part. For example:
\begin{itemize}
- \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
+ \item \lstinline|\DNF| or \lstinline|\DNF<...>|. The effect is: \DNF~ or \DNF<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\DNF} in French mode.
\end{itemize}
\LevelTwoTitle{Title, abstract and keywords}
diff --git a/macros/unicodetex/latex/lebhart/lebhart-doc-fr.pdf b/macros/unicodetex/latex/lebhart/lebhart-doc-fr.pdf
index 8f5006b150..0d6d5ed374 100644
--- a/macros/unicodetex/latex/lebhart/lebhart-doc-fr.pdf
+++ b/macros/unicodetex/latex/lebhart/lebhart-doc-fr.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/lebhart/lebhart-doc-fr.tex b/macros/unicodetex/latex/lebhart/lebhart-doc-fr.tex
index 402d05b32c..fa5a1e40e4 100644
--- a/macros/unicodetex/latex/lebhart/lebhart-doc-fr.tex
+++ b/macros/unicodetex/latex/lebhart/lebhart-doc-fr.tex
@@ -37,7 +37,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,needgraph,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -91,7 +91,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\title{{\normalfont\bfseries\color{main-text}\lebhart{}}\\écrivez vos articles de manière colorée}
\author{Jinwen XU}
@@ -106,7 +106,7 @@
\lebhart{} prend en charge plusieurs langues, notamment le chinois (simplifié et traditionnel), l'anglais, le français, l'allemand, l'italien, le japonais, le portugais (européen et brésilien), le russe et l'espagnol. Ces langues peuvent être commutées de manière transparente dans un seul document. En raison de l'utilisation de polices personnalisées, \lebhart{} demande soit \hologo{XeLaTeX} soit \hologo{LuaLaTeX} pour la compilation.
- Cette documentation est composée à l'aide de \lebhart{} (avec l'option \texttt{allowbf}). Vous pouvez le considérer comme une courte introduction et une démonstration.
+ Cette documentation est composée à l'aide de \lebhart{} (avec l'option \texttt{use boldface}). Vous pouvez le considérer comme une courte introduction et une démonstration.
\end{abstract}
@@ -160,7 +160,7 @@ Regardons d'abord un document complet.
\maketitle
\begin{abstract}
- Ceci est un résumé. \dnf<(*\meta{some hint}*)>
+ Ceci est un résumé. \DNF<(*\meta{some hint}*)>
\end{abstract}
\begin{keyword}
AAA, BBB, CCC, DDD, EEE
@@ -251,7 +251,7 @@ De plus, vous pouvez également écrire à la manière \AmS{}, c'est-à-dire :
\LevelThreeTitle{Marques de brouillon}
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
Lorsque vous avez des endroits qui ne sont pas encore finis, vous pouvez les marquer avec cette commande, ce qui est particulièrement utile lors de la phase de brouillon.
@@ -335,7 +335,7 @@ De plus, Source Code Pro est utilisé comme police anglaise sans empattement, Ne
\item Options de police. Comme son nom l'indique, la police avec le nom correspondant sera utilisée.
\item L'option \texttt{useosf} est pour activer les chiffres à l'ancienne.
\end{itemize}
- \item \texttt{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item Afficher les titres en gras. Lorsque cette option est utilisée, le titre principal, les titres de tous les niveaux et les noms des environnements de type théorème seront en gras.
\end{itemize}
@@ -472,9 +472,9 @@ Pour l'esthétique, les définitions adjacentes seront reliées entre elles auto
\LevelTwoTitle{Draft mark}
-Vous pouvez utiliser \lstinline|\dnf| pour marquer la partie inachevée. Par example :
+Vous pouvez utiliser \lstinline|\DNF| pour marquer la partie inachevée. Par example :
\begin{itemize}
- \item \lstinline|\dnf| ou \lstinline|\dnf<...>|. L'effet est : \dnf~ ou \dnf<...>. \\Le texte à l'intérieur changera en fonction de la langue actuelle. Par exemple, il sera affiché sous la forme \UseOtherLanguage{English}{\dnf} en mode anglais.
+ \item \lstinline|\DNF| ou \lstinline|\DNF<...>|. L'effet est : \DNF~ ou \DNF<...>. \\Le texte à l'intérieur changera en fonction de la langue actuelle. Par exemple, il sera affiché sous la forme \UseOtherLanguage{English}{\DNF} en mode anglais.
\end{itemize}
\LevelTwoTitle{Titre, résumé et mots-clés}
diff --git a/macros/unicodetex/latex/lebhart/lebhart.cls b/macros/unicodetex/latex/lebhart/lebhart.cls
index 956a4a9c43..314e8dff23 100644
--- a/macros/unicodetex/latex/lebhart/lebhart.cls
+++ b/macros/unicodetex/latex/lebhart/lebhart.cls
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplClass
{lebhart}
- {2022/03/28} {}
+ {2022/04/03} {}
{A colorful article style}
\tl_const:Nn \l__colorclass_base_class_tl { article }
@@ -180,6 +180,7 @@
\RequirePackage { colorist }
+\raggedbottom
\hfuzz=2pt
\vfuzz=2pt
diff --git a/macros/unicodetex/latex/nwafuthesis/README.md b/macros/unicodetex/latex/nwafuthesis/README.md
index 0d1d0d0a36..c1faa1af66 100644
--- a/macros/unicodetex/latex/nwafuthesis/README.md
+++ b/macros/unicodetex/latex/nwafuthesis/README.md
@@ -1,7 +1,7 @@
-## The nwafuthesis Class
-LaTeX thesis template for Northwest A&F University, China, v1.10
+The nwafuthesis Class
+LaTeX thesis template for Northwest A&F University, China, v1.11
-## Overview
+Overview
This template supports doctoral or master dissertion and undergraduate thesis in Chinese. With the help of modern LaTeX3 technology, nwafuthesis aims to create a simple interface, a normative format, as well as a hackable class for the users.
At present, nwafuthesis only supports XeTeX and LuaTEX engines. nwafuthesis only allows UTF-8 encoding.
@@ -10,7 +10,7 @@ The documentation can be found in nwafuthesis.pdf (in Chinese).
Gitee re­pos­i­tory: https://gitee.com/nwafu_nan/nwafuthesis-l3.
-## Installation
+Installation
To install nwafuthesis, you can use one of the following methods:
If you are running TeX Live or MikTeX, the simplest way is to use that distribution's package manager.
@@ -24,10 +24,10 @@ For permanent installation, you may move the following files into a directory wh
nwafuthesis.cls
Do not forget to update the filename database afterwards.
-## Contributing
+Contributing
Issues and pull requests are always welcome.
-## License
+License
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.
Copyright (C) 2017–2022 by Nan Geng <nangeng@nwafu.edu.cn>.
diff --git a/macros/unicodetex/latex/nwafuthesis/build-win.bat b/macros/unicodetex/latex/nwafuthesis/build-win.bat
index e8f223950b..e8f223950b 100644..100755
--- a/macros/unicodetex/latex/nwafuthesis/build-win.bat
+++ b/macros/unicodetex/latex/nwafuthesis/build-win.bat
diff --git a/macros/unicodetex/latex/nwafuthesis/logo/workflow.pdf b/macros/unicodetex/latex/nwafuthesis/logo/workflow.pdf
new file mode 100644
index 0000000000..a44c1ea945
--- /dev/null
+++ b/macros/unicodetex/latex/nwafuthesis/logo/workflow.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/nwafuthesis/nwafuthesis-doc.dtx b/macros/unicodetex/latex/nwafuthesis/nwafuthesis-doc.dtx
index ded7e6aa8f..22ae9f6d9d 100644
--- a/macros/unicodetex/latex/nwafuthesis/nwafuthesis-doc.dtx
+++ b/macros/unicodetex/latex/nwafuthesis/nwafuthesis-doc.dtx
@@ -93,7 +93,7 @@
% 载入宏包和文档类。
% \begin{macrocode}
\LoadClass[a4paper, full]{l3doc}
-\RequirePackage[UTF8, heading, sub3section]{ctex}
+\RequirePackage[heading, sub3section]{ctex}
% \end{macrocode}
% 与 \pkg{hypdoc}(由 \cls{l3doc} 调用)冲突,导致脚注超链接
% 无法正常跳转。暂时禁用。
diff --git a/macros/unicodetex/latex/nwafuthesis/nwafuthesis.dtx b/macros/unicodetex/latex/nwafuthesis/nwafuthesis.dtx
index 37bb596074..100a1cc039 100644
--- a/macros/unicodetex/latex/nwafuthesis/nwafuthesis.dtx
+++ b/macros/unicodetex/latex/nwafuthesis/nwafuthesis.dtx
@@ -110,7 +110,7 @@
%<class|doc>\NeedsTeXFormat{LaTeX2e}
%<class|doc>\RequirePackage{expl3}
%<*!(driver|install)>
-%<!readme>\GetIdInfo $Id: nwafuthesis.dtx 1.10 2022-03-17 Nan Geng <nangeng@nwafu.edu.cn> $
+%<!readme>\GetIdInfo $Id: nwafuthesis.dtx 1.11 2022-04-03 Nan Geng <nangeng@nwafu.edu.cn> $
%<class> {Thesis template for Northwest A\&F University}
%<class>\ProvidesExplClass{\ExplFileName}
%<definition> {Definition file for nwafuthesis}
@@ -143,7 +143,7 @@
\textbf{\nwafuthesis: 西北农林科技大学学位论文
\xpinyin[font=\sffamily,format=\color{MaterialIndigo800}]{模}{mu2}板}}}
\author{耿楠}
-\date{\today\quad v1.10%
+\date{\today\quad v1.11%
\thanks{\url{https://gitee.com/nwafu_nan/nwafuthesis-l3}.}}
\begin{document}
@@ -242,9 +242,9 @@
%
% \subsection*{\LaTeX{} 入门}
%
-% 本文档并非是一份 \LaTeX{} 零基础教程。如果是完完全全的新手,
+% 本文档并非一份 \LaTeX{} 零基础教程。如果是完完全全的新手,
% 建议先阅读相关入门文档,如刘海洋编著的《\LaTeX{} 入门》
-% \scite{刘海洋2013latex入门} 第一章,或大名鼎鼎的“\pkg{lshort}”
+% \scite{刘海洋2013latex入门} ,或大名鼎鼎的“\pkg{lshort}”
% \scite{lshort} 及其中文翻译版 \scite{lshort-zh-cn}。当然,
% 网络上诸如耿楠录制的\LaTeX{}教学系列视频等入门教程多如牛毛,
% 可以自行选取学习。
@@ -254,22 +254,47 @@
% 本文采用不同字体表示不同内容。无衬线字体表示宏包名称,如
% \pkg{xeCJK} 宏包、\cls{nwafuthesis} 文档类等;等宽字体表示代码或
% 文件名,如 \cs{nwafuset} 命令、\env{abstract} 环境、\TeX{} 文档
-% \file{thesis.tex} 等;带有尖括号的楷体(或西文斜体)表示命令参数,
-% 如 \meta{模板选项}、\meta{English title} 等。在使用时,不必输入参数两侧
+% \file{main.tex} 等;带有尖括号的楷体(或西文斜体)表示命令参数,
+% 如 \meta{模板选项}、\meta{English title} 等。使用时,不必输入参数两侧
% 的尖括号。示例代码进行了语法高亮处理,以方便阅读。
%
% 在用户手册中,带有蓝色侧边线的为 \LaTeX{} 代码,而带有粉色侧边线
-% 的则为电脑命令行代码,请注意区分。模板提供的选项、命令、环境等,
-% 均用横线框起,同时给出使用语法和相关说明。
-%
-% 手册中的代码实现部分主要面向对 \LaTeX{} 宏包开发感兴趣的用户。
-% 如果有任何改进意见或者功能需求,欢迎前往 Gitee 仓库提交issue。
+% 的则为命令行代码,请注意区分。模板提供的选项、命令、环境等,
+% 均用横线框起,同时给出语法和相关说明。
%
+% 手册中代码实现部分主要面向对 \LaTeX{} 模板开发感兴趣的用户。
% 文档的最后还提供了版本历史和代码索引,以供查阅。
%
% \section{安装}
%
-% \changes{v1.00}{2021/08/05}{修改安装说明,提交ctan。}
+% \subsection{模板工作流}
+%
+% 使用{\nwafuthesis}模板排版学位论文的工作流如图\ref{fig:workflow}所示。
+%
+% \begin{figure}[!htb]
+% \centering
+% \includegraphics[width=0.85\textwidth]{logo/workflow}
+% \caption{模板工作流}
+% \label{fig:workflow}
+% \end{figure}
+%
+% 作为普通用户,仅需要通过{\LaTeX}发行版安装和更新模板,完成安装后,即可使用%
+% \verb|\documentclass{nwafuthesis}|载入该模板进行工作了。作为普通用户,
+% 强烈建议只关心学位论文内容,通过与导师的反复沟通修改与完善论文内容即可。
+% 关于学位论文排版格式问题应该交由开发者根据根据相关学校%
+% \emph{指南/规范}进行设计和调整。开发者完成模板开发及功能完善后,会上传到
+% CTAN(\url{www.ctan.org}),然后模板会被部署于{\LaTeX}发行版,此时普通
+% 用户仅需要通过{\LaTeX}发行版的管理工具更新模板即可得到更新后的模板,
+% 模板更新再次编译学位论文即可按最新的格式要求完成排版。
+%
+% 关于{\nwafuthesis}模板的使用的详细说明,一方面可以通过阅读其使用说明书和
+% 写作样例进行学习,另一方面也可以参阅耿楠在B站发布的教学视频%
+% \url{https://www.bilibili.com/video/BV1tY4y1q7RT#reply107826496032}进行学习。
+%
+% 如果有任何改进意见或者功能需求,欢迎前往 Gitee 仓库提交issue。
+% {\nwafuthesis}模板的源代码托管于\url{https://gitee.com/nwafu_nan/nwafuthesis-l3},
+% 欢迎大家多提 issue/PR,以便进一步完善和美化我校学位论文\LaTeX{}模板。
+%
% \subsection{获取 \cls{nwafuthesis}}
%
% \subsubsection{标准安装}
@@ -1330,6 +1355,13 @@
% \cs{dateen} 命令用于输出英文格式的当前月,年。
% \end{function}
%
+% \begin{function}[added=2022-04-04]{\fakebold}
+% \begin{nwafusyntax}[deletetexcs={\fakebold},morekeywords={\fakebold}]
+% \fakebold(*\oarg{加粗系数}\marg{文字内容}*)
+% \end{nwafusyntax}
+% 使用PDF literal通过缩放笔画实现的伪粗命令。
+% \end{function}
+%
% \begin{function}[added=2021-05-12,updated=2021-5-28]{\makecoveri,
% \makecoverii,\makecoveriii, \makecoveriv,
% \makecoverv,\makecovervi,\makecovervii}
@@ -1394,17 +1426,6 @@
% \cs{makefront}命令自动排版。
% \end{function}
%
-% \begin{function}[added=2021-05-29]{\frontmatter,\frontmatter*}
-% \begin{nwafusyntax}[deletetexcs={\frontmatter,\frontmatter*},
-% morekeywords={\frontmatter,\frontmatter*}]
-% \frontmatter(*\oarg{编号格式|(Roman)}*)
-% \frontmatter*(*\oarg{编号格式|(Roman)}*)
-% \end{nwafusyntax}
-% \cs{frontmatter} 为前置区命令,章标题不编号,
-% 页码可设置为例如 \opt{roman}、\opt{Alph} 等格式,
-% 带有星号的命令 \cs{frontmatter*} 不使用清双页命令 \tn{cleardoublepage}。
-% \end{function}
-%
% \begin{function}[added=2021-05-12]{\cleardoublepage}
% \begin{nwafusyntax}[deletetexcs={\cleardoublepage},morekeywords={\cleardoublepage}]
% \cleardoublepage(*\oarg{页面风格|(empty)}*)
@@ -1628,6 +1649,8 @@
% marginpar = 2.25 in
% }
%
+% \changes{v1.11}{2022/04/03}{取消本科黑体加粗。}
+%
% \section{实现细节}
%
% 本模板使用 \LaTeX3 语法编写,依赖 \pkg{expl3} 环境,
@@ -1832,6 +1855,27 @@
% \end{macrocode}
% \end{macro}
%
+% \changes{v1.11}{2022/04/03}{添加PDF literal实现的伪粗命令。}
+%
+% \begin{macro}{\@@_fake_bold:nn,\fakebold}
+% 利用PDF literal实现的伪粗命令。
+% 参考\url{https://zhuanlan.zhihu.com/p/60262200}实现。
+% \#1 加粗系数
+% \#2 加粗内容
+% \begin{macrocode}
+\cs_new:Npn \@@_fake_bold:nn #1#2
+ {
+ \special{pdf:code~q~2~Tr~0~G~#1~w}%
+ #2%
+ \special{pdf:code~Q}%
+ }
+\NewDocumentCommand \fakebold {O{0.2} m }
+ {
+ \@@_fake_bold:nn { #1 }{ #2 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \changes{v1.10}{2022/03/17}{统一使用 \LaTeX{} 2020/10/01 新钩子机制。}
%
% \begin{macro}{\@@_gadd_ltxhook:nn}
@@ -3432,6 +3476,8 @@
\pagestyle { fancy }
% \end{macrocode}
%
+% \changes{v1.11}{2022/04/02}{删除本科生目录页眉,并修正单面模式目录页眉。}
+%
% \begin{macro}{\frontmatter,\mainmatter}
% 重定义 \tn{frontmatter}和\tn{frontmatter},
% 以根据学校要求定制摘要、目录、主要符号对照表等前置部分的页眉页脚。
@@ -3457,13 +3503,13 @@
% \begin{macrocode}
\bool_if:NTF \g_@@_twoside_bool
{
-% \end{macrocode}
-% 奇数页页眉
-% \begin{macrocode}
- \nwafuhead[OC]{\small \nouppercase{ \leftmark } }
\int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
{
% \end{macrocode}
+% 研究生奇数页页眉
+% \begin{macrocode}
+ \nwafuhead[OC]{\small \nouppercase{ \leftmark } }
+% \end{macrocode}
% 研究生偶数页页眉
% \begin{macrocode}
\nwafuhead[EC]{\small \nouppercase{
@@ -3473,17 +3519,22 @@
}
}{
% \end{macrocode}
-% 本科生偶数页页眉
+% 本科生目录无页眉
% \begin{macrocode}
- \nwafuhead[EC]{\small \nouppercase{ \leftmark } }
+ \renewcommand{\headrulewidth}{0.0pt}
}
}{
% \end{macrocode}
-% 单面模式,奇偶页设成一样
+% 单面模式,研究生奇偶页设成一样,本科生无页眉
% \begin{macrocode}
- \nwafuhead [ C ]
+ \int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
{
- \small \nouppercase { \l_@@_header_center_mark_tl }
+ \nwafuhead [ C ]
+ {
+ \small \nouppercase { \l_@@_header_center_mark_tl }
+ }
+ }{
+ \renewcommand{\headrulewidth}{0.0pt}
}
}
\nwafufoot[C]{\small\thepage}
@@ -3525,12 +3576,14 @@
% \end{macrocode}
% 本科生偶数页页眉
% \begin{macrocode}
+ \renewcommand{\headrulewidth}{0.4pt}
\nwafuhead[EC]{\small \nouppercase{ \l__@@_info_title_tl } }
}
}{
% \end{macrocode}
% 单面模式
% \begin{macrocode}
+ \renewcommand{\headrulewidth}{0.4pt}
\nwafuhead [ C ]
{
\int_if_odd:nTF \c@page
@@ -3770,6 +3823,8 @@
%
% \subsection{章节标题设置}
%
+% \changes{v1.11}{2022/04/02}{修订本科生subsubsection编号两端括号为中文全角括号。}
+%
% |\keys_set:nn{ctex}| 实际相当于调用 \cs{ctexset}。
%
% 设置章(chapter)、节(section)与小节(sub-section)标题样式。
@@ -3832,7 +3887,7 @@
\bool_if:NT \l_@@_withchap_bool {章} },
number = \@@_arabic:n { chapter },
aftername = \hspace*{\ccwd},
- format = \zihao{3} \normalfont \nwafu@hei \bfseries \centering,
+ format = \zihao{3} \normalfont \nwafu@hei \centering,
beforeskip = 0.25\baselineskip,
afterskip = 0.65\baselineskip,
fixskip = true
@@ -3840,7 +3895,7 @@
section =
{
aftername = \hspace*{0.5\ccwd},
- format = \zihao{4} \normalfont \nwafu@hei \bfseries \raggedright,
+ format = \zihao{4} \normalfont \nwafu@hei \raggedright,
beforeskip = 0.60\baselineskip,
afterskip = 0.65\baselineskip,
fixskip = true,
@@ -3849,7 +3904,7 @@
subsection =
{
aftername = \hspace*{0.5\ccwd},
- format = \zihao{-4} \normalfont \nwafu@hei \bfseries,
+ format = \zihao{-4} \normalfont \nwafu@hei ,
beforeskip = 0.60\baselineskip,
afterskip = 0.65\baselineskip,
fixskip = true,
@@ -3858,8 +3913,8 @@
},
subsubsection =
{
- name = {(,)},
- aftername = \hspace*{0.5\ccwd},
+ name = {(,)},
+ aftername = \hspace*{0.0pt},
number = \@@_arabic:n { subsubsection },
format = \zihao{-4} \normalfont,
beforeskip = 0.60\baselineskip,
@@ -4394,8 +4449,8 @@
% \begin{macrocode}
\DeclareCaptionLabelSeparator{ccwd}{\hspace{0.5\ccwd}}
\DeclareCaptionLabelFormat{parens}{\bothIfFirst{#1}{~}(#2)}
-\DeclareCaptionFont{nwafu@table@font}{\sffamily\small}
-\DeclareCaptionFont{nwafu@figure@font}{\sffamily\small}
+\DeclareCaptionFont{nwafu@table@font}{\nwafu@hei\small}
+\DeclareCaptionFont{nwafu@figure@font}{\nwafu@hei\small}
\DeclareCaptionFont{nwafu@subtable@font}{\small}
\DeclareCaptionFont{nwafu@subfigure@font}{\small}
% \end{macrocode}
@@ -5073,6 +5128,8 @@
% \end{macrocode}
% \end{macro}
%
+% \changes{v1.11}{2022/04/03}{利用PDF literal添加本科楷体伪粗。}
+%
% \begin{macro}{\@@_cover_type:}
% 论文类型。
% \begin{macrocode}
@@ -5097,13 +5154,20 @@
% \begin{macrocode}
\@@_get_text_width:NV \l__@@_tmpa_dim \l__@@_info_grade_tl
\@@_center_box:Vn \l__@@_tmpa_dim { \l__@@_info_grade_tl }
- \@@_spread_box:nn { 0.50 \textwidth }{
- 届
- \l_@@_tmpa_tl
% \end{macrocode}
-% 本科的论文或设计。
+% 利用PDF literal伪粗显示楷体。
% \begin{macrocode}
- \clist_item:Nn \c__@@_bachelor_type_clist { \l__@@_info_bachelor_type_int }
+ \@@_fake_bold:nn {0.20}
+ {
+ \@@_spread_box:nn { 0.50 \textwidth }
+ {
+ 届
+ \l_@@_tmpa_tl
+% \end{macrocode}
+% 本科的论文或设计选择。
+% \begin{macrocode}
+ \clist_item:Nn \c__@@_bachelor_type_clist { \l__@@_info_bachelor_type_int }
+ }
}
}
}
@@ -6162,13 +6226,12 @@
logo / bottom-skip = -30 pt,% plus 0.3 fill,
logo / align = center,
type / content = \@@_cover_type:,
- type / format = \bfseries\nwafu@kai\zihao { 1 },
+ type / format = \nwafu@kai\zihao { 1 },
type / bottom-skip = -20 pt plus 0.3 fill,
type / align = center,
- title / content =
- \@@_fixed_width_center_box:nn
- { 0.9 \textwidth } { \l_@@_info_title_tl },
- title / format = \nwafu@hei \bfseries\zihao { 2 },
+ title / content = \@@_fixed_width_center_box:nn
+ { 0.9 \textwidth } { \l_@@_info_title_tl },
+ title / format = \nwafu@hei \zihao { 2 },
title / bottom-skip = 80 pt plus 0.3 fill,
title / align = center,
info / content = \@@_cover_info:,
@@ -6510,6 +6573,8 @@
% \end{macrocode}
% \end{macro}
%
+% \changes{v1.11}{2022/04/02}{修复摘要后的所有页面尺寸。}
+%
% \begin{macro}{\makefront}
% 排版摘要、目录等前料。
% \begin{macrocode}
@@ -6518,6 +6583,18 @@
\int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
{
% \end{macrocode}
+% 恢复研究生页面尺寸
+% \begin{macrocode}
+ \newgeometry{
+ top = 3.1cm,
+ bottom = 3.3cm,
+ left = 2.6cm,
+ right = 2.6cm,
+ headheight = 0.8cm,
+ headsep = 0.7cm,
+ footskip = 1.4cm,
+ }
+% \end{macrocode}
% 研究生,\cs{frontmatter}命令用于设置页眉页脚,页码格式
% 并于奇数页起排。
% \begin{macrocode}
@@ -6549,7 +6626,6 @@
% \end{macrocode}
% 排版主要符号对照表,需要在奇数页起排。
% \begin{macrocode}
- % \frontmatter
\tl_if_empty:NF \l_@@_notation_file_tl
{
% \end{macrocode}
@@ -6561,6 +6637,18 @@
}
}{
% \end{macrocode}
+% 恢复本科生页面尺寸
+% \begin{macrocode}
+ \newgeometry{
+ top = 3.14cm,
+ bottom = 3.80cm,
+ left = 2.45cm,
+ right = 2.45cm,
+ headheight = 0.80cm,
+ headsep = 0.63cm,
+ footskip = 2.30cm,
+ }
+% \end{macrocode}
% 本科生,无页眉页脚
% \begin{macrocode}
\cleardoublepage
@@ -6680,7 +6768,7 @@
%
% 目录格式设置,研究生与本科生需设置不同参数
% \begin{macrocode}
-\tl_set:Nn \@@_toc_chapter_format_tl { \addvspace{1pt}\nwafu@hei \bfseries }
+\tl_set:Nn \@@_toc_chapter_format_tl { \addvspace{1pt}\nwafu@hei }
\tl_set:Nn \@@_toc_chapter_indent_tl {0pc}
\tl_set:Nn \@@_toc_chapter_rule_tl {\tocrule{$\cdot$}}
\tl_set:Nn \@@_toc_chapter_numsep_tl {0.5\ccwd}
@@ -6945,9 +7033,10 @@
\@@_chapter:V \c_@@_name_abstract_tl
}{
\par \mode_leave_vertical: \par
- \begin{center}\nwafu@hei\bfseries\zihao{3}\l_@@_info_title_tl\end{center}
+ \begin{center}\nwafu@hei\zihao{3}\l_@@_info_title_tl\end{center}
}
}
+\cs_set_eq:NN \my_uppercase:n \uppercase
\cs_new_protected:Npn \@@_abstract_en_begin:
{
\int_compare:nNnTF { \g_@@_thesis_type_int } < { 3 }
@@ -6955,7 +7044,10 @@
\@@_chapter:n \c_@@_name_abstract_en_tl
}{
\par \mode_leave_vertical: \par
- \begin{center}\bfseries\zihao{3}\l_@@_info_title_en_tl\end{center}
+ \begin{center}\bfseries\zihao{3}
+ % \exp_args:Nx \my_uppercase:n {\l_@@_info_title_en_tl}
+ \l_@@_info_title_en_tl
+ \end{center}
}
}
% \end{macrocode}
@@ -7157,7 +7249,14 @@
% \end{macrocode}
% 参考文献引用与著录样式。
% \begin{macrocode}
- \@@_pass_options_to_biblatex:n { style = gb7714-NWAFU }
+ \@@_pass_options_to_biblatex:n { style = gb7714-NWAFU,
+ sortlocale=zh__pinyin, gbtype=false,
+ maxbibnames=99, maxcitenames=2, mincitenames=1,
+ gbpub=false, uniquename=false, uniquelist=false,
+ gbnamefmt=lowercase,
+ doi=false, isbn=false,
+ gbfieldtype=true, gbpunctin=false,
+ }
% \end{macrocode}
% 其它参数。
% \begin{macrocode}
@@ -7214,6 +7313,8 @@
}
% \end{macrocode}
%
+% \changes{v1.11}{2022/04/02}{修订本科生enumerate编号两端括号为中文全角括号。}
+%
% \subsection{\env{enumerate}列表环境设置}
%
% \begin{macrocode}
@@ -7224,10 +7325,10 @@
{ bullet } { \textbullet },
{ endash } { \normalfont\bfseries\textendash },
{ asterisk } { \textasteriskcentered },
- { arabic } { (\arabic*) },
- { alph } { (\alph*) },
- { roman } { (\roman*) },
- { alph } { (\alph*) },
+ { arabic } { (\arabic*) },
+ { alph } { (\alph*) },
+ { roman } { (\roman*) },
+ { alph } { (\alph*) },
{ roman } { \roman*. },
{ outline } { \upshape\ding{111} }
}
@@ -7238,9 +7339,10 @@
\setlist
{
nosep,
- leftmargin = *,
+ leftmargin = *,
labelindent = \dimexpr\parindent+0pt\relax,
- wide=\parindent,
+ labelsep = 0pt,
+ wide = \parindent,
}
\setlist[itemize,1]{label = bullet}
\setlist[itemize,2]{label = endash}
diff --git a/macros/unicodetex/latex/nwafuthesis/nwafuthesis.pdf b/macros/unicodetex/latex/nwafuthesis/nwafuthesis.pdf
index 17858a0099..5fdeb65580 100644
--- a/macros/unicodetex/latex/nwafuthesis/nwafuthesis.pdf
+++ b/macros/unicodetex/latex/nwafuthesis/nwafuthesis.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdf b/macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdf
index 0ffa265fed..23c6001784 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdf
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-cn.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex b/macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex
index c3fece3e59..4121fadf9e 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-cn.tex
@@ -38,7 +38,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -95,7 +95,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\frontmatter
\LocallyStopLineNumbers
@@ -194,7 +194,7 @@
\section{(*\meta{section title}*)}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\begin{theorem}\label{thm:abc}
Ceci est un théorème.
@@ -236,7 +236,7 @@ Référence du théorème: \cref{thm:abc}
\medskip
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
当你有一些地方尚未完成的时候,可以用这条指令标记出来,它在草稿阶段格外有用。
@@ -300,7 +300,7 @@ Référence du théorème: \cref{thm:abc}
\item 字体选项。顾名思义,会加载相应名称的字体。
\item \texttt{useosf} 选项用来启用“旧式”数字。
\end{itemize}
- \item \texttt{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item 允许加粗。启用这一选项时,题目、各级标题、定理类环境名称会被加粗。
\end{itemize}
@@ -417,9 +417,9 @@ Référence du théorème: \cref{thm:abc}
\LevelTwoTitle{未完成标记}
-你可以通过 \lstinline|\dnf| 来标记尚未完成的部分。例如:
+你可以通过 \lstinline|\DNF| 来标记尚未完成的部分。例如:
\begin{itemize}
- \item \lstinline|\dnf| 或 \lstinline|\dnf<...>|。效果为:\dnf~或 \dnf<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\dnf}。
+ \item \lstinline|\DNF| 或 \lstinline|\DNF<...>|。效果为:\DNF~或 \DNF<...>。\\其提示文字与当前语言相对应,例如,在法语模式下将会显示为 \UseOtherLanguage{French}{\DNF}。
\end{itemize}
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-en.pdf b/macros/unicodetex/latex/simplivre/simplivre-doc-en.pdf
index ff4ee07f77..0b2522cc78 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-en.pdf
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-en.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-en.tex b/macros/unicodetex/latex/simplivre/simplivre-doc-en.tex
index 997cdc3e54..e54d796b84 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-en.tex
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-en.tex
@@ -38,7 +38,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -95,7 +95,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\LocallyStopLineNumbers
@@ -195,7 +195,7 @@ Let's first look at a complete document.
\section{(*\meta{section title}*)}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\begin{theorem}\label{thm:abc}
Ceci est un théorème.
@@ -238,7 +238,7 @@ For detailed description of this command and more related commands, please refer
\medskip
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
When you have some places that have not yet been finished yet, you can mark them with this command, which is especially useful during the draft stage.
@@ -302,7 +302,7 @@ In addition, Source Code Pro is used as the English sans serif font, New Compute
\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{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item Allow boldface. When this option is enabled, the main title, the titles of all levels and the names of theorem-like environments will be bolded.
\end{itemize}
@@ -415,9 +415,9 @@ By default, when referenced, the name of the theorem matches the current context
\LevelTwoTitle{Draft mark}
-You can use \lstinline|\dnf| to mark the unfinished part. For example:
+You can use \lstinline|\DNF| to mark the unfinished part. For example:
\begin{itemize}
- \item \lstinline|\dnf| or \lstinline|\dnf<...>|. The effect is: \dnf~ or \dnf<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\dnf} in French mode.
+ \item \lstinline|\DNF| or \lstinline|\DNF<...>|. The effect is: \DNF~ or \DNF<...>. \\The prompt text changes according to the current language. For example, it will be displayed as \UseOtherLanguage{French}{\DNF} in French mode.
\end{itemize}
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-fr.pdf b/macros/unicodetex/latex/simplivre/simplivre-doc-fr.pdf
index c0cb64b901..3e3fe8b650 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-fr.pdf
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-fr.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/simplivre/simplivre-doc-fr.tex b/macros/unicodetex/latex/simplivre/simplivre-doc-fr.tex
index 94407ff1fa..f75a5e8179 100644
--- a/macros/unicodetex/latex/simplivre/simplivre-doc-fr.tex
+++ b/macros/unicodetex/latex/simplivre/simplivre-doc-fr.tex
@@ -38,7 +38,7 @@
\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
\lstset{moretexcs=%
{linenumbers,nolinenumbers,part,parttext,chapter,section,subsection,subsubsection,frontmatter,mainmatter,backmatter,tableofcontents,href,
- color,NameTheorem,CreateTheorem,cref,dnf,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
+ color,NameTheorem,CreateTheorem,cref,DNF,UseLanguage,UseOtherLanguage,AddLanguageSetting,maketitle,address,curraddr,email,keywords,subjclass,thanks,dedicatory,TheDate,ProjLib,qedhere
}
}
\lstnewenvironment{code}%
@@ -95,7 +95,7 @@
%%================================
\begin{document}
-\def\PackageVersion{2022/03/28}
+\def\PackageVersion{2022/04/03}
\frontmatter
\LocallyStopLineNumbers
@@ -195,7 +195,7 @@ Regardons d'abord un document complet.
\section{(*\meta{section title}*)}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\begin{theorem}\label{thm:abc}
Ceci est un théorème.
@@ -237,7 +237,7 @@ Pour une description détaillée de cette commande et d'autres commandes associ
\medskip
\begin{code}
-\dnf<(*\meta{some hint}*)>
+\DNF<(*\meta{some hint}*)>
\end{code}
Lorsque vous avez des endroits qui ne sont pas encore finis, vous pouvez les marquer avec cette commande, ce qui est particulièrement utile lors de la phase de brouillon.
@@ -300,7 +300,7 @@ De plus, Source Code Pro est utilisé comme police anglaise sans empattement, Ne
\item Options de police. Comme son nom l'indique, la police avec le nom correspondant sera utilisée.
\item L'option \texttt{useosf} est pour activer les chiffres à l'ancienne.
\end{itemize}
- \item \texttt{allowbf}
+ \item \texttt{use boldface}
\begin{itemize}
\item Afficher les titres en gras. Lorsque cette option est utilisée, le titre principal, les titres de tous les niveaux et les noms des environnements de type théorème seront en gras.
\end{itemize}
@@ -411,9 +411,9 @@ Par défaut, lors du référencement, le nom du théorème correspond au context
\LevelTwoTitle{Draft mark}
-Vous pouvez utiliser \lstinline|\dnf| pour marquer la partie inachevée. Par example :
+Vous pouvez utiliser \lstinline|\DNF| pour marquer la partie inachevée. Par example :
\begin{itemize}
- \item \lstinline|\dnf| ou \lstinline|\dnf<...>|. L'effet est : \dnf~ ou \dnf<...>. \\Le texte à l'intérieur changera en fonction de la langue actuelle. Par exemple, il sera affiché sous la forme \UseOtherLanguage{English}{\dnf} en mode anglais.
+ \item \lstinline|\DNF| ou \lstinline|\DNF<...>|. L'effet est : \DNF~ ou \DNF<...>. \\Le texte à l'intérieur changera en fonction de la langue actuelle. Par exemple, il sera affiché sous la forme \UseOtherLanguage{English}{\DNF} en mode anglais.
\end{itemize}
diff --git a/macros/unicodetex/latex/simplivre/simplivre.cls b/macros/unicodetex/latex/simplivre/simplivre.cls
index 7056e45b17..7dd6f4b592 100644
--- a/macros/unicodetex/latex/simplivre/simplivre.cls
+++ b/macros/unicodetex/latex/simplivre/simplivre.cls
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplClass
{simplivre}
- {2022/03/28} {}
+ {2022/04/03} {}
{A simple and clear book style}
\tl_const:Nn \l__minimclass_base_class_tl { book }
@@ -201,6 +201,10 @@
\RequirePackage { minimalist }
+\raggedbottom
+\hfuzz=2pt
+\vfuzz=2pt
+
%%================================
%% Fonts
%%================================