summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-03-12 03:00:41 +0000
committerNorbert Preining <norbert@preining.info>2021-03-12 03:00:41 +0000
commitcf09e33d4f54e872c7090def0ad41b06fb559cdb (patch)
tree45e43abe52fa306171e09b1c8375ce2cd808017a /macros
parent8379a45cf223651b1c06ebf5c680db900d83c6a5 (diff)
CTAN sync 202103120300
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/easybook/doc/chapter1.tex1
-rw-r--r--macros/latex/contrib/easybook/doc/easybook-demo.pdfbin290263 -> 288297 bytes
-rw-r--r--macros/latex/contrib/easybook/doc/easybook-demo.tex7
-rw-r--r--macros/latex/contrib/easybook/doc/easybook.pdfbin234637 -> 234688 bytes
-rw-r--r--macros/latex/contrib/easybook/doc/easybook.tex19
-rw-r--r--macros/latex/contrib/easybook/easybook.cls164
-rw-r--r--macros/latex/contrib/mindflow/LICENSE416
-rw-r--r--macros/latex/contrib/mindflow/README.md17
-rw-r--r--macros/latex/contrib/mindflow/mindflow.dtx98
-rw-r--r--macros/latex/contrib/mindflow/mindflow.pdfbin123615 -> 154231 bytes
-rw-r--r--macros/luatex/generic/luamplib/NEWS3
-rw-r--r--macros/luatex/generic/luamplib/luamplib.dtx35
-rw-r--r--macros/luatex/generic/luamplib/luamplib.pdfbin149233 -> 150094 bytes
-rw-r--r--macros/unicodetex/latex/colorist/LICENSE416
-rw-r--r--macros/unicodetex/latex/colorist/README.md23
-rw-r--r--macros/unicodetex/latex/colorist/colorist-doc-cn.pdfbin0 -> 166672 bytes
-rw-r--r--macros/unicodetex/latex/colorist/colorist-doc-cn.tex248
-rw-r--r--macros/unicodetex/latex/colorist/colorist-doc-en.pdfbin0 -> 121854 bytes
-rw-r--r--macros/unicodetex/latex/colorist/colorist-doc-en.tex248
-rw-r--r--macros/unicodetex/latex/colorist/colorist.dtx856
-rw-r--r--macros/unicodetex/latex/colorist/colorist.ins49
-rw-r--r--macros/unicodetex/latex/minimalist/LICENSE416
-rw-r--r--macros/unicodetex/latex/minimalist/README.md23
-rw-r--r--macros/unicodetex/latex/minimalist/minimalist-doc-cn.pdfbin0 -> 151329 bytes
-rw-r--r--macros/unicodetex/latex/minimalist/minimalist-doc-cn.tex245
-rw-r--r--macros/unicodetex/latex/minimalist/minimalist-doc-en.pdfbin0 -> 106178 bytes
-rw-r--r--macros/unicodetex/latex/minimalist/minimalist-doc-en.tex242
-rw-r--r--macros/unicodetex/latex/minimalist/minimalist.dtx858
-rw-r--r--macros/unicodetex/latex/minimalist/minimalist.ins49
29 files changed, 4293 insertions, 140 deletions
diff --git a/macros/latex/contrib/easybook/doc/chapter1.tex b/macros/latex/contrib/easybook/doc/chapter1.tex
index fa4dfb8869..d11d88a969 100644
--- a/macros/latex/contrib/easybook/doc/chapter1.tex
+++ b/macros/latex/contrib/easybook/doc/chapter1.tex
@@ -84,6 +84,7 @@
\item \zhlipsum[41-42][name = aspirin]
\begin{enumerate}
\item \zhlipsum*[42][name = aspirin]
+ \item \zhlipsum*[42][name = aspirin]
\end{enumerate}
\item \zhlipsum*[42][name = aspirin]
\end{enumerate}
diff --git a/macros/latex/contrib/easybook/doc/easybook-demo.pdf b/macros/latex/contrib/easybook/doc/easybook-demo.pdf
index 22cc5d8266..0d6441a9bf 100644
--- a/macros/latex/contrib/easybook/doc/easybook-demo.pdf
+++ b/macros/latex/contrib/easybook/doc/easybook-demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/doc/easybook-demo.tex b/macros/latex/contrib/easybook/doc/easybook-demo.tex
index 697baf76b9..15e6900f2b 100644
--- a/macros/latex/contrib/easybook/doc/easybook-demo.tex
+++ b/macros/latex/contrib/easybook/doc/easybook-demo.tex
@@ -94,11 +94,10 @@
\author
{
瞿毅\thanks{texeasybook@foxmail.com.} \\
- \git~\url{https://gitee.com/texl3/easybook}\thanks{Gitee为项目的主要发布地址。} \\
- \github~\url{https://github.com/texl3/easybook} \\
- \edge~\url{https://latexstudio.net}
+ \url{https://latexstudio.net} \\
+ \url{https://gitee.com/texl3/easybook}\thanks{Gitee为项目的主要发布地址。}
}
-\date{2021/03/10\hskip\ccwd\relax v1.23m}
+\date{2021/03/11\hskip\ccwd\relax v1.23n}
\frontmatter[roman]
\maketitle
diff --git a/macros/latex/contrib/easybook/doc/easybook.pdf b/macros/latex/contrib/easybook/doc/easybook.pdf
index 9809242c07..ec447ae802 100644
--- a/macros/latex/contrib/easybook/doc/easybook.pdf
+++ b/macros/latex/contrib/easybook/doc/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/doc/easybook.tex b/macros/latex/contrib/easybook/doc/easybook.tex
index 2db86a5b56..ba2df4076e 100644
--- a/macros/latex/contrib/easybook/doc/easybook.tex
+++ b/macros/latex/contrib/easybook/doc/easybook.tex
@@ -1,9 +1,8 @@
\documentclass{ctxdoc}
-\hypersetup{linkcolor = blue,urlcolor = blue}
\title{\sffamily easybook书籍文档类}
\author{瞿毅}
-\date{2021/03/10\hskip\ccwd\relax v1.23m\thanks{\url{https://gitee.com/texl3/easybook}}}
+\date{2021/03/11\hskip\ccwd\relax v1.23n\thanks{\url{https://gitee.com/texl3/easybook}}}
\begin{document}
\maketitle
@@ -98,7 +97,7 @@
\tn{frontmatter}\oarg{编号格式|(Roman)}
\tn{printindex}\oarg{索引名}
\end{syntax}
-\changes{v1.23m}{2021/02/20}{重新定义文档结构划分命令。}
+\changes{v1.23n}{2021/02/20}{重新定义文档结构划分命令。}
\tn{frontmatter} 为前言区命令,章标题不编号,页码可设置为例如 \opt{roman}、\opt{Alph} 等格式,带有星号的命令 \tn{frontmatter*} 不使用 \tn{cleardoublepage}。\tn{mainmatter} 为主文区命令,章标题正常编号且页码为从1开始计数的阿拉伯数字,\tn{mainmatter*} 命令不使用 \tn{cleardoublepage}。\tn{backmatter} 为后记区命令,页码格式与编号保持不变,章标题不编号。\tn{listoffigures} 命令输出图片目录,\tn{listoftables} 命令输出表格目录,\tn{listoflistings} 命令输出代码目录。
\end{function}
@@ -132,8 +131,8 @@
uppercase = <(true)|false>
\end{syntax}
\changes{v1.10}{2021/01/08}{更改颜色实现方式与选项名。}
-\changes{v1.23m}{2021/02/02}{noto风格的数学字体独立出来,可自定义设置。}
-\changes{v1.23m}{2021/02/09}{增加控制页面横线粗细的选项。}
+\changes{v1.23n}{2021/02/02}{noto风格的数学字体独立出来,可自定义设置。}
+\changes{v1.23n}{2021/02/09}{增加控制页面横线粗细的选项。}
\opt{style} 选项控制文章的风格。
\end{function}
@@ -190,7 +189,7 @@
footnote = <(1)>
\end{syntax}
\changes{v1.21}{2021/01/12}{增加脚注线间的距离选项。}
-\changes{v1.23m}{2021/02/09}{取消使用 \pkg{zhlineskip} 宏包设置数学间距。}
+\changes{v1.23n}{2021/02/09}{取消使用 \pkg{zhlineskip} 宏包设置数学间距。}
行距因子用于设置各种行距倍数,只能是浮点数,不能带有长度单位。\tn{ctexset} 原有的行距选项\opt{linespread}失效。各行距既可在导言区全局设置也可正文中设置对后面生效,行距的意义为
\end{function}
@@ -212,7 +211,7 @@
marginpart = <\tn{rmfamily}\tn{footnotesize}>
\end{syntax}
\changes{v1.10}{2021/01/08}{加入自定义非正文字体选项。}
-\changes{v1.23m}{2021/02/08}{修复使用 \tn{zihao} 命令设置字体失效的问题。}
+\changes{v1.23n}{2021/02/08}{修复使用 \tn{zihao} 命令设置字体失效的问题。}
\end{function}
\begin{optdesc}
@@ -233,7 +232,7 @@
\tn{printbibliography}\oarg{选项列表}
\end{syntax}
\changes{v1.21}{2021/01/11}{增加 \opt{bibset} 选项,可以使用 \hologo{BibTeX} 或 \hologo{biber} 编译参考文献。}
-\changes{v1.23m}{2021/02/23}{使用 \opt{bibset} 选项时可设置标注风格。}
+\changes{v1.23n}{2021/02/23}{使用 \opt{bibset} 选项时可设置标注风格。}
\end{function}
\begin{optdesc}
@@ -317,7 +316,7 @@
\end{syntax}
\changes{v1.21}{2021/01/11}{修复单面文档时页眉横线消失的问题。}
\changes{v1.21}{2021/01/13}{增加配置页眉页脚的选项。}
-\changes{v1.23m}{2021/03/08}{优化页眉页脚设置,增加 \opt{chap-mark} 和 \opt{sec-mark} 选项。}
+\changes{v1.23n}{2021/03/08}{优化页眉页脚设置,增加 \opt{chap-mark} 和 \opt{sec-mark} 选项。}
\opt{hdrset} 设置的命令由 \pkg{fancyhdr} 宏包提供支持,命令 \tn{easyhead} 和 \tn{easyfoot} 的含义与 \tn{fancyhead} 和 \tn{fancyfoot} 相同,它们用于 \opt{head-foot} 选项中,设置的是一个名为 \opt{fancy} 的页面风格。\pkg{fancyhdr} 将页眉页脚分成了左中右和奇数页(odd)、偶数页(even)共12个部分,可选参数中E、O代表偶数、奇数,L、C、R代表左、中、右部分。单面打印时,含有偶数的选项无效。
\begin{ctexexam}
\ctexset
@@ -438,7 +437,7 @@
\tn{item} <习题内容>
\tn{end}\marg{exercise}
\end{syntax}
-\changes{v1.23m}{2021/02/08}{增加准确的习题盒子标题目录锚点。}
+\changes{v1.23n}{2021/02/08}{增加准确的习题盒子标题目录锚点。}
习题环境 \opt{exercise} 的标题紧接上一节编号并加入目录与页眉,当使用星号环境时不进行编号。三个可选参数中颜色为自定义或 \pkg{xcolor} 包含的颜色名称,正文编号格式与小节 \ref{sort list} 排序列表相同,标题名默认为摘要,参数只能\textbf{从右往左}省略。
\begin{ctexexam}
\begin{exercise}[LightYellow][1.][习题]
diff --git a/macros/latex/contrib/easybook/easybook.cls b/macros/latex/contrib/easybook/easybook.cls
index 055b403aed..4405556f09 100644
--- a/macros/latex/contrib/easybook/easybook.cls
+++ b/macros/latex/contrib/easybook/easybook.cls
@@ -9,7 +9,7 @@
%% https://creativecommons.org/licenses/by/4.0/legalcode
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2021/03/10}{1.23m}{}
+\ProvidesExplClass{easybook}{2021/03/11}{1.23n}{}
\cs_generate_variant:Nn \keys_define:nn {nx}
\cs_generate_variant:Nn \int_to_arabic:n {v}
@@ -153,13 +153,11 @@
footmisc,setspace,
amsmath,amsthm,thmtools,cases,
chemformula,chemfig,siunitx,ulem,
- microtype,
- geometry,marginnote,
+ geometry,marginnote,nccfoots,
rotfloat,graphicx,
- nccfoots,tablefootnote,
fancyhdr,titletoc,
caption,bicaption,subcaption,
- zhlipsum,fontawesome,pifont,
+ microtype,zhlipsum,pifont,
tabularx,multirow,makecell,booktabs,
paralist,tasks,enumitem,
tcolorbox,
@@ -171,9 +169,6 @@
modifier = {by},
version = {4.0}
]{doclicense}
-\cs_new_eq:NN \github\faGithub
-\cs_new:Npn \git{\textcolor[HTML]{c71d23}{\faGit}}
-\cs_new:Npn \edge{\textcolor[HTML]{00c2ff}{\faEdge}}
\ctex_at_end_preamble:n
{
\bool_if:NT \l__notomath_bool
@@ -365,11 +360,13 @@
{
\markboth
{
- \bool_if:NT \l__uppercase_bool{\MakeUppercase}
- {\l__fancyhf_chap_mark_tl#1}
+ \bool_if:NTF \l__uppercase_bool
+ {\text_uppercase:n {\l__fancyhf_chap_mark_tl#1}}
+ {\text_titlecase_first:n {\l__fancyhf_chap_mark_tl#1}}
}{
- \bool_if:NT \l__uppercase_bool{\MakeUppercase}
- {\l__fancyhf_chap_mark_tl#1}
+ \bool_if:NTF \l__uppercase_bool
+ {\text_uppercase:n {\l__fancyhf_chap_mark_tl#1}}
+ {\text_titlecase_first:n {\l__fancyhf_chap_mark_tl#1}}
}
}
\l__fancyhf_content_tl
@@ -379,8 +376,9 @@
{
\markboth
{
- \bool_if:NT \l__uppercase_bool{\MakeUppercase}
- {\l__fancyhf_chap_mark_tl#1}
+ \bool_if:NTF \l__uppercase_bool
+ {\text_uppercase:n {\l__fancyhf_chap_mark_tl#1}}
+ {\text_titlecase_first:n {\l__fancyhf_chap_mark_tl#1}}
}{}
}
\l__fancyhf_content_tl
@@ -390,8 +388,9 @@
{
\markright
{
- \bool_if:NT \l__uppercase_bool{\MakeUppercase}
- {\l__fancyhf_sec_mark_tl#1}
+ \bool_if:NTF \l__uppercase_bool
+ {\text_uppercase:n {\l__fancyhf_sec_mark_tl#1}}
+ {\text_titlecase_first:n {\l__fancyhf_sec_mark_tl#1}}
}
}
\cs_gset:Npn \headrule
@@ -506,12 +505,22 @@
\bool_if:NTF \l__page_twoside_bool
{
\markboth
- {\bool_if:NT \l__uppercase_bool{\MakeUppercase}#1}
- {\bool_if:NT \l__uppercase_bool{\MakeUppercase}#1}
+ {
+ \bool_if:NTF \l__uppercase_bool
+ {\text_uppercase:n {#1}}
+ {\text_titlecase_first:n {#1}}
+ }{
+ \bool_if:NTF \l__uppercase_bool
+ {\text_uppercase:n {#1}}
+ {\text_titlecase_first:n {#1}}
+ }
}{
\markboth
- {\bool_if:NT \l__uppercase_bool{\MakeUppercase}#1}
- {}
+ {
+ \bool_if:NTF \l__uppercase_bool
+ {\text_uppercase:n {#1}}
+ {\text_titlecase_first:n {#1}}
+ }{}
}
}
\cs_new_protected:Npn \__title_mark_intoc:n #1
@@ -583,30 +592,22 @@
}
\cs_new:Npn \listoflistings
{
- \group_begin:
- \@ifundefined{@restonecoltrue}{}
- {
- \if@twocolumn
- \@restonecoltrue\onecolumn
- \bool_if:NT \l__multoc_bool{\twocolumn}
- \else
- \@restonecolfalse
- \bool_if:NT \l__multoc_bool{\twocolumn}
- \fi
- }
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \bool_if:NT \l__multoc_bool{\twocolumn}
+ \else
+ \@restonecolfalse
+ \bool_if:NT \l__multoc_bool{\twocolumn}
+ \fi
\__title_mark_intoc:n {\lstlistlistingname}
\dim_add:NV \l__toc_offset_dim\l__toc_listsoffset_dim
\vspace*{\dim_use:N \l__toc_offset_dim}
\@starttoc{lol}
- \@ifundefined{@restonecoltrue}{}
- {
- \if@restonecol
- \twocolumn
- \else
- \onecolumn
- \fi
- }
- \group_end:
+ \if@restonecol
+ \twocolumn
+ \else
+ \onecolumn
+ \fi
}
\makeindex[
@@ -626,44 +627,45 @@
{\@mkboth{\MakeUppercase\indexname}{\MakeUppercase\indexname}}
{\__markboth:n {\indexname}}
-\tl_new:N \l__table_font_tl
-\tl_new:N \l__figure_font_tl
-\tl_new:N \l__listing_font_tl
-\tl_new:N \l__footnote_font_tl
-\tl_new:N \l__marginpar_font_tl
+\tl_new:N \l__font_table_tl
+\tl_new:N \l__font_figure_tl
+\tl_new:N \l__font_listing_tl
+\tl_new:N \l__font_footnote_tl
+\tl_new:N \l__font_marginpar_tl
\__ctex_define:nn {elfont}
{
- table-cap .tl_set:N = \l__table_font_tl,
+ table-cap .tl_set:N = \l__font_table_tl,
table-cap .initial:n = \sffamily\small,
- figure-cap .tl_set:N = \l__figure_font_tl,
+ figure-cap .tl_set:N = \l__font_figure_tl,
figure-cap .initial:n = \sffamily\small,
- listing-cap .tl_set:N = \l__listing_font_tl,
+ listing-cap .tl_set:N = \l__font_listing_tl,
listing-cap .initial:n = \sffamily\small,
- footnote .tl_set:N = \l__footnote_font_tl,
+ footnote .tl_set:N = \l__font_footnote_tl,
footnote .initial:n = \rmfamily,
- marginpar .tl_set:N = \l__marginpar_font_tl,
+ marginpar .tl_set:N = \l__font_marginpar_tl,
marginpar .initial:n = \rmfamily\footnotesize
}
\DeclareCaptionLabelSeparator{ccwd}{\hspace{\ccwd}}
\DeclareCaptionLabelFormat{parens}{\bothIfFirst{#1}{~}(#2)}
-\DeclareCaptionFont{table@font}{\l__table_font_tl}
-\DeclareCaptionFont{figure@font}{\l__figure_font_tl}
-\DeclareCaptionFont{listing@font}{\l__listing_font_tl}
+\DeclareCaptionFont{table@font}{\l__font_table_tl}
+\DeclareCaptionFont{figure@font}{\l__font_figure_tl}
+\DeclareCaptionFont{listing@font}{\l__font_listing_tl}
\captionsetup
{
format = hang,
% figurewithin = section,
% tablewithin = section,
- font = {stretch = {\fp_use:N \l__caption_spread_fp}},
+ font = {stretch = {\fp_use:N \l__spread_caption_fp}},
labelfont = {color = ctex@frame},
labelsep = ccwd,
+ singlelinecheck = true,
belowskip = 0pt,aboveskip = 10pt
}
\captionsetup[table]{font += table@font}
\captionsetup[figure]{font += figure@font}
-\captionsetup[lstlisting]{singlelinecheck = false,font += listing@font}
+\captionsetup[lstlisting]{font += listing@font}
\captionsetup[subfigure]
{
labelformat = parens,
@@ -683,27 +685,27 @@
}
}
\AtBeginEnvironment{tabularx}
- {\exp_args:Nx \linespread{\fp_use:N \l__table_spread_fp}\selectfont\ignorespaces}
+ {\exp_args:Nx \linespread{\fp_use:N \l__spread_table_fp}\selectfont\ignorespaces}
\AtBeginEnvironment{tabular}
- {\exp_args:Nx \linespread{\fp_use:N \l__table_spread_fp}\selectfont\ignorespaces}
+ {\exp_args:Nx \linespread{\fp_use:N \l__spread_table_fp}\selectfont\ignorespaces}
-\fp_new:N \l__line_spread_fp
-\fp_new:N \l__table_spread_fp
-\fp_new:N \l__math_spread_fp
-\fp_new:N \l__caption_spread_fp
-\fp_new:N \l__footnote_spread_fp
+\fp_new:N \l__spread_line_fp
+\fp_new:N \l__spread_table_fp
+\fp_new:N \l__spread_math_fp
+\fp_new:N \l__spread_caption_fp
+\fp_new:N \l__spread_footnote_fp
\__ctex_define:nn {spread}
{
- line .fp_set:N = \l__line_spread_fp,
+ line .fp_set:N = \l__spread_line_fp,
line .initial:n = 1.3,
- table .fp_set:N = \l__table_spread_fp,
+ table .fp_set:N = \l__spread_table_fp,
table .initial:n = 1.05,
- math .fp_set:N = \l__math_spread_fp,
+ math .fp_set:N = \l__spread_math_fp,
math .initial:n = 1.05,
- caption .fp_set:N = \l__caption_spread_fp,
+ caption .fp_set:N = \l__spread_caption_fp,
caption .initial:n = 1,
- footnote .fp_set:N = \l__footnote_spread_fp,
+ footnote .fp_set:N = \l__spread_footnote_fp,
footnote .initial:n = 1
}
@@ -721,7 +723,7 @@
\cs_gset:Npn \bottomfraction{0.65}
\cs_gset:Npn \floatpagefraction{0.60}
\ctex_after_end_preamble:n
- {\exp_args:Nx \linespread{\fp_use:N \l__line_spread_fp}\selectfont}
+ {\exp_args:Nx \linespread{\fp_use:N \l__spread_line_fp}\selectfont}
\newcolumntype{L}{X}
\newcolumntype{C}{>{\centering\arraybackslash}X}
@@ -882,7 +884,7 @@
\cs_new_protected:Npn \l__math_restore:n #1
{
\AtBeginEnvironment{#1}
- {\linespread{\fp_use:N \l__math_spread_fp}\selectfont\ignorespaces}
+ {\linespread{\fp_use:N \l__spread_math_fp}\selectfont\ignorespaces}
}
\clist_map_inline:nn
{
@@ -893,16 +895,16 @@
}{\l__math_restore:n {#1}}
\__patch_cmd:Nnn \start@gather
{\collect@body}
- {\linespread{\fp_use:N \l__math_spread_fp}\selectfont\collect@body}
+ {\linespread{\fp_use:N \l__spread_math_fp}\selectfont\collect@body}
\__patch_cmd:Nnn \start@align
{\collect@body}
- {\linespread{\fp_use:N \l__math_spread_fp}\selectfont\collect@body}
+ {\linespread{\fp_use:N \l__spread_math_fp}\selectfont\collect@body}
\__patch_cmd:Nnn \start@multline
{\collect@body}
- {\linespread{\fp_use:N \l__math_spread_fp}\selectfont\collect@body}
+ {\linespread{\fp_use:N \l__spread_math_fp}\selectfont\collect@body}
\__patch_cmd:Nnn \gather@split
{\spread@equation}
- {\linespread{\fp_use:N \l__math_spread_fp}\selectfont\spread@equation}
+ {\linespread{\fp_use:N \l__spread_math_fp}\selectfont\spread@equation}
\ctex_after_end_preamble:n
{
\skip_set:Nn \abovedisplayskip{5pt plus 1pt minus 1pt}
@@ -1125,7 +1127,7 @@
\skip_set:Nn \footnotemargin{0.5\ccwd}
\group_begin:
\footnotesize
- \exp_args:Nx \linespread{\fp_use:N \l__footnote_spread_fp}\selectfont
+ \exp_args:Nx \linespread{\fp_use:N \l__spread_footnote_fp}\selectfont
\skip_gset:Nn \footnotesep{\ht\strutbox}
\group_end:
\cs_gset:Npn \hangfootparskip{0ex}
@@ -1151,13 +1153,13 @@
}
\__patch_cmd:Nnn \@footnotetext
{\reset@font}
- {\def\baselinestretch{\fp_use:N \l__footnote_spread_fp}\l__footnote_font_tl}
+ {\def\baselinestretch{\fp_use:N \l__spread_footnote_fp}\l__font_footnote_tl}
\__patch_cmd:Nnn \@mpfootnotetext
{\reset@font}
- {\def\baselinestretch{\fp_use:N \l__footnote_spread_fp}\l__footnote_font_tl}
+ {\def\baselinestretch{\fp_use:N \l__spread_footnote_fp}\l__font_footnote_tl}
\__patch_cmd:Nnn \@makefnmark
- {\normalfont}{\l__footnote_font_tl}
-\cs_gset:Npn \marginfont{\l__marginpar_font_tl}
+ {\normalfont}{\l__font_footnote_tl}
+\cs_gset:Npn \marginfont{\l__font_marginpar_tl}
\lstdefinestyle{mystyle}
{
@@ -1192,7 +1194,7 @@
% numbers = left,
numberstyle = \footnotesize,
abovecaptionskip = -1ex,
- belowcaptionskip = 1ex,
+ belowcaptionskip = 1.5ex,
aboveskip = 1.5ex plus .2ex minus .1ex,
belowskip = 0.55ex plus .2ex minus .1ex,
keepspaces = true,
@@ -1306,7 +1308,7 @@
listtablename = {表格索引},
abstractname = {摘\hspace{\ccwd}要},
lstlistlistingname = {代码索引},
- lstlistingname = {\faCode 代码}
+ lstlistingname = {代码}
}
\crefformat{equation}{#2式(#1)#3}
\crefformat{align}{#2式(#1)#3}
@@ -1328,7 +1330,7 @@
{
abstractname = {Abstract},
lstlistlistingname = {List~of~Listings},
- lstlistingname = {\faCode\space Code}
+ lstlistingname = {Code}
}
\crefformat{equation}{#2Equation~(#1)#3}
\crefformat{align}{#2Equation~(#1)#3}
diff --git a/macros/latex/contrib/mindflow/LICENSE b/macros/latex/contrib/mindflow/LICENSE
new file mode 100644
index 0000000000..2244313901
--- /dev/null
+++ b/macros/latex/contrib/mindflow/LICENSE
@@ -0,0 +1,416 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % http://www.latex-project.org/lppl.txt
+ % and version 1.3 or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
+
diff --git a/macros/latex/contrib/mindflow/README.md b/macros/latex/contrib/mindflow/README.md
index 1a62ed0956..728aa95efd 100644
--- a/macros/latex/contrib/mindflow/README.md
+++ b/macros/latex/contrib/mindflow/README.md
@@ -1,3 +1,11 @@
+<!-- Copyright (C) 2021 by Jinwen XU -->
+
+[Github](https://github.com/Jinwen-XU/mindflow) | [CTAN](https://ctan.org/pkg/mindflow) | [Download](https://github.com/Jinwen-XU/mindflow/releases)
+
+![License](https://img.shields.io/ctan/l/mindflow.svg) ![CTAN Version](https://img.shields.io/ctan/v/mindflow.svg) ![Github Version](https://img.shields.io/github/release/Jinwen-XU/mindflow.svg) ![Repo Size](https://img.shields.io/github/repo-size/Jinwen-XU/mindflow.svg)
+
+---
+
# The mindflow package
This package provides an environment that is separated from the main text and
@@ -5,11 +13,4 @@ has its own line numbers, for writing ideas or annotations.
# License
-This file may be distributed and/or modified under the conditions of the LaTeX
-Project Public License, either version 1.3 of this license or (at your option)
-any later version. The latest version of this license is in:
-
- http://www.latex-project.org/lppl.txt
-
-and version 1.3 or later is part of all distributions of LaTeX version
-2005/12/01 or later.
+This work is released under the LaTeX Project Public License, v1.3c or later.
diff --git a/macros/latex/contrib/mindflow/mindflow.dtx b/macros/latex/contrib/mindflow/mindflow.dtx
index 6f193ab5df..9f7e2adc98 100644
--- a/macros/latex/contrib/mindflow/mindflow.dtx
+++ b/macros/latex/contrib/mindflow/mindflow.dtx
@@ -21,19 +21,20 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{mindflow}
%<*package>
- [2021/03/09 Mindflow environment]
+ [2021/03/11 Mindflow environment]
%</package>
%
%<*driver>
\documentclass{article}
\usepackage{doc}
-\usepackage[a4paper,margin=1.8in]{geometry}
+\usepackage[a4paper,top=1.2in,bottom=1.2in,left=1.5in,right=1.2in]{geometry}
\usepackage{titling}
\setlength{\droptitle}{-.5in}
\usepackage[linenumber,rightmarker]{mindflow}
\usepackage{enumitem}
\setlist{noitemsep}
\usepackage{newpxtext}
+\usepackage{blindtext}
\usepackage{parskip}
\EnableCrossrefs
\CodelineIndex
@@ -44,7 +45,7 @@
%</driver>
% \fi
%
-% \CheckSum{0}
+% \CheckSum{119}
%
% \GetFileInfo{mindflow.dtx}
%
@@ -58,16 +59,22 @@
% \section{Introduction}
%
% The \textsf{mindflow} package provides you a way to write your ideas,
-% annotations or writing plans. For example (with option
+% annotations or writing plans.
+
+% For example (with option
% \verb|linenumber| and \verb|rightmarker|):
% \begin{mindflow}
% What to write next:
% \begin{itemize}
% \item usage;
% \item some internal macros;
+% \item an example maybe;
% \item the complete code.
% \end{itemize}
% \end{mindflow}
+% You can also add line numbers to the other part of your document in the usual way.
+% Line numbers within the \textsf{mindflow} environments are independent from
+% those of the main text.
%
% \section{Usage}
%
@@ -78,6 +85,7 @@
% \verb|linenumber| & Enable line numbers\\
% \verb|leftmarker| & Enable left marker, by default it is a ``\verb|*|''\\
% \verb|rightmarker| & Enable right marker, by default it is a ``\verb|*|''\\
+% \verb|incolumn| or \verb|twocolumn| & The separation line would fit in the column \\&(\emph{automatically applied in two-column documents})\\
% \verb|off| & Hide all the \verb|mindflow| environments
% \end{tabular}
%
@@ -91,13 +99,13 @@
%
% \section{Some technical details}
%
-% \DescribeMacro{\mindflowFont}
+% \DescribeMacro{\mindflowTextFont}
% \DescribeMacro{\mindflowNumFont}
% The font for texts and line numbers within the \verb|mindflow|
-% environments can be specified by redefining \verb|\mindflowFont| and
+% environments can be specified by redefining \verb|\mindflowTextFont| and
% \verb|\mindflowNumFont|. By default they are defined as:
% \begin{verbatim}
-% \newcommand{\mindflowFont}{\normalfont\footnotesize}
+% \newcommand{\mindflowTextFont}{\normalfont\footnotesize}
% \newcommand{\mindflowNumFont}{\normalfont\scriptsize\ttfamily}
% \end{verbatim}
% \DescribeMacro{\mindflowLeft}
@@ -106,9 +114,34 @@
% \verb|\mindflowLeft| and \verb|\mindflowRight|. Both have the default
% value as ``\verb|*|''.
%
-% And finally, the color of \verb|mindflow| environments is called
-% \verb|mindflow|. By default, it is the current text color with opacity
-% 30\%.
+% And finally, the color for texts and line numbers within the \verb|mindflow|
+% environments are called \verb|mindflowText| and \verb|mindflowNum|,
+% respectively. By default, they have the same color as the context, with
+% opacity 30\% and 8\%, respectively.
+
+% \section{An example}
+% With option \verb|linenumber, leftmarker, rightmarker| and the following settings:
+% \begin{verbatim}
+% \colorlet{mindflowText}{blue!50!cyan}
+% \colorlet{mindflowNum}{blue!50!cyan}
+% \renewcommand{\mindflowTextFont}{\footnotesize\sffamily}
+% \renewcommand{\mindflowNumFont}{\footnotesize\sffamily}
+% \renewcommand{\mindflowLeft}{\hspace{1em}\(\succ\)}
+% \renewcommand{\mindflowRight}{\(\prec\)}
+% \end{verbatim}
+% One gets:
+% \makeatletter
+% \@mindflow@leftmarkertrue
+% \makeatother
+% \colorlet{mindflowText}{blue!50!cyan}
+% \colorlet{mindflowNum}{blue!50!cyan}
+% \renewcommand{\mindflowTextFont}{\footnotesize\sffamily}
+% \renewcommand{\mindflowNumFont}{\footnotesize\sffamily}
+% \renewcommand{\mindflowLeft}{\hspace{1em}\(\succ\)}
+% \renewcommand{\mindflowRight}{\(\prec\)}
+% \begin{mindflow}
+% \blindtext
+% \end{mindflow}
%
% \StopEventually{}
%
@@ -125,31 +158,29 @@
\DeclareBoolOption[false]{leftmarker} % Left marker
\DeclareBoolOption[false]{rightmarker} % Right marker
\DeclareBoolOption[false]{linenumber} % Line numbers
+\DeclareBoolOption[false]{twocolumn} % Two column
+\DeclareBoolOption[false]{incolumn} % Separation line fits in the column
\ProcessKeyvalOptions*\relax
+\if@mindflow@twocolumn
+ \@mindflow@incolumntrue
+\fi
+
%%================================
%% Initialization
%%================================
-\newcommand{\mindflowFont}{\normalfont\footnotesize}
-\newcommand{\mindflowNumFont}{\normalfont\scriptsize\ttfamily}
-
\RequirePackage{lineno}
\RequirePackage{xcolor}
\colorlet{mfSavedColor}{.}
-\colorlet{mindflow}{mfSavedColor!30}
+\colorlet{mindflowText}{mfSavedColor!30}
+\colorlet{mindflowNum}{mfSavedColor!8}
-\newcommand{\mindflowLeft}{%
- \if@mindflow@leftmarker%
- {*}%
- \fi%
-}
-\newcommand{\mindflowRight}{%
- \if@mindflow@rightmarker%
- {*}%
- \fi%
-}
+\newcommand{\mindflowTextFont}{\normalfont\footnotesize}
+\newcommand{\mindflowNumFont}{\normalfont\scriptsize\ttfamily}
+\newcommand{\mindflowLeft}{*}
+\newcommand{\mindflowRight}{*}
%%================================
%% The mindflow environment
@@ -161,7 +192,11 @@
\LNturnsONfalse%
\ifLineNumbers\LNturnsONtrue\fi\nolinenumbers%
\par\noindent\nopagebreak%
- \makebox[\linewidth]{\rule{\paperwidth}{0.4pt}}%
+ \if@mindflow@incolumn%
+ \makebox[\linewidth]{\rule{\linewidth}{0.4pt}}%
+ \else%
+ \hspace*{-\paperwidth}\makebox[\linewidth]{\rule{4\paperwidth}{0.4pt}}%
+ \fi%
\nopagebreak\par%
\ifLNturnsON\linenumbers\fi%
}
@@ -181,15 +216,20 @@
\setcounter{linenumber}{\value{mfLN}}
\LNturnsONfalse%
\ifLineNumbers\LNturnsONtrue\fi\nolinenumbers%
- \mindflowFont\color{mindflow}%
+ \mindflowTextFont\color{mindflowText}%
\mfSepLine%
\linenumbers%
\renewcommand\makeLineNumber{%
- \hss\color{mindflow!25}%
+ \hss\color{mindflowNum}%
\if@mindflow@linenumber%
- \mindflowNumFont\LineNumber~%
+ \mindflowNumFont\LineNumber~%
+ \fi%
+ \if@mindflow@leftmarker%
+ \mindflowLeft\hspace{1em}%
+ \fi%
+ \if@mindflow@rightmarker%
+ \rlap{\hskip\textwidth\hspace{1em}\mindflowRight}%
\fi%
- \mindflowLeft\hspace{1em}\rlap{\hskip\textwidth\hspace{1em}\mindflowRight}%
}%
}
{%
diff --git a/macros/latex/contrib/mindflow/mindflow.pdf b/macros/latex/contrib/mindflow/mindflow.pdf
index 4489a85570..ba0e113416 100644
--- a/macros/latex/contrib/mindflow/mindflow.pdf
+++ b/macros/latex/contrib/mindflow/mindflow.pdf
Binary files differ
diff --git a/macros/luatex/generic/luamplib/NEWS b/macros/luatex/generic/luamplib/NEWS
index 4eed375513..a47ff79ff3 100644
--- a/macros/luatex/generic/luamplib/NEWS
+++ b/macros/luatex/generic/luamplib/NEWS
@@ -1,5 +1,8 @@
History of the luamplib package
+2021/03/11 2.20.7
+ * emegency patch for context metafun 2021-03-06
+
2020/12/30 2.20.6
* fix a bug regarding no figure output when luamplib.showlog is
true. (#91)
diff --git a/macros/luatex/generic/luamplib/luamplib.dtx b/macros/luatex/generic/luamplib/luamplib.dtx
index 12a9519dc8..dec028813f 100644
--- a/macros/luatex/generic/luamplib/luamplib.dtx
+++ b/macros/luatex/generic/luamplib/luamplib.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment -- by the way, this file contains UTF-8
%
-% Copyright (C) 2008-2020 by Hans Hagen, Taco Hoekwater, Elie Roux,
+% Copyright (C) 2008-2021 by Hans Hagen, Taco Hoekwater, Elie Roux,
% Manuel Pégourié-Gonnard, Philipp Gesang and Kim Dohyun.
% Currently maintained by the LuaLaTeX development team.
% Support: <lualatex-dev@tug.org>
@@ -85,7 +85,7 @@ See source file '\inFileName' for licencing and contact information.
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{luamplib.drv}%
- [2020/12/30 v2.20.6 Interface for using the mplib library]%
+ [2021/03/11 v2.20.7 Interface for using the mplib library]%
\documentclass{ltxdoc}
\usepackage{metalogo,multicol,mdwlist,fancyvrb,xspace}
\usepackage[x11names]{xcolor}
@@ -153,7 +153,7 @@ See source file '\inFileName' for licencing and contact information.
% \author{Hans Hagen, Taco Hoekwater, Elie Roux, Philipp Gesang and Kim Dohyun\\
% Maintainer: LuaLaTeX Maintainers ---
% Support: \email{lualatex-dev@tug.org}}
-% \date{2020/12/30 v2.20.6}
+% \date{2021/03/11 v2.20.7}
%
% \maketitle
%
@@ -407,8 +407,8 @@ See source file '\inFileName' for licencing and contact information.
luatexbase.provides_module {
name = "luamplib",
- version = "2.20.6",
- date = "2020/12/30",
+ version = "2.20.7",
+ date = "2021/03/11",
description = "Lua package to typeset Metapost with LuaTeX's MPLib.",
}
@@ -999,6 +999,21 @@ mp.mf_finish_saving_data = mp.mf_finish_saving_data or function() end
% \end{macrocode}
%
+% metafun 2021-03-09 changes crashes luamplib.
+% \begin{macrocode}
+catcodes = catcodes or {}
+local catcodes = catcodes
+catcodes.numbers = catcodes.numbers or {}
+catcodes.numbers.ctxcatcodes = catcodes.numbers.ctxcatcodes or "0"
+catcodes.numbers.texcatcodes = catcodes.numbers.texcatcodes or "0"
+catcodes.numbers.luacatcodes = catcodes.numbers.luacatcodes or "0"
+catcodes.numbers.notcatcodes = catcodes.numbers.notcatcodes or "0"
+catcodes.numbers.vrbcatcodes = catcodes.numbers.vrbcatcodes or "0"
+catcodes.numbers.prtcatcodes = catcodes.numbers.prtcatcodes or "0"
+catcodes.numbers.txtcatcodes = catcodes.numbers.txtcatcodes or "0"
+
+% \end{macrocode}
+%
% A function from \ConTeXt\ general.
% \begin{macrocode}
local function mpprint(buffer,...)
@@ -1034,8 +1049,12 @@ function luamplib.runscript (code)
function mp.print(...)
mpprint(buffer,...)
end
- f()
- return tableconcat(buffer,"")
+ local result = f()
+ buffer = tableconcat(buffer,"")
+ if buffer and buffer ~= "" then
+ return buffer
+ end
+ return result or ""
end
return ""
end
@@ -1959,7 +1978,7 @@ luamplib.colorconverter = colorconverter
\else
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{luamplib}
- [2020/12/30 v2.20.6 mplib package for LuaTeX]
+ [2021/03/11 v2.20.7 mplib package for LuaTeX]
\ifx\newluafunction\@undefined
\input ltluatex
\fi
diff --git a/macros/luatex/generic/luamplib/luamplib.pdf b/macros/luatex/generic/luamplib/luamplib.pdf
index 6b74341aa8..c6ed578cb8 100644
--- a/macros/luatex/generic/luamplib/luamplib.pdf
+++ b/macros/luatex/generic/luamplib/luamplib.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/colorist/LICENSE b/macros/unicodetex/latex/colorist/LICENSE
new file mode 100644
index 0000000000..2244313901
--- /dev/null
+++ b/macros/unicodetex/latex/colorist/LICENSE
@@ -0,0 +1,416 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % http://www.latex-project.org/lppl.txt
+ % and version 1.3 or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
+
diff --git a/macros/unicodetex/latex/colorist/README.md b/macros/unicodetex/latex/colorist/README.md
new file mode 100644
index 0000000000..f9d1477b39
--- /dev/null
+++ b/macros/unicodetex/latex/colorist/README.md
@@ -0,0 +1,23 @@
+<!-- Copyright (C) 2021 by Jinwen XU -->
+
+[Github](https://github.com/Jinwen-XU/colorist) | [CTAN](https://ctan.org/pkg/colorist) | [Download](https://github.com/Jinwen-XU/colorist/releases)
+
+![License](https://img.shields.io/ctan/l/colorist.svg) ![CTAN Version](https://img.shields.io/ctan/v/colorist.svg) ![Github Version](https://img.shields.io/github/release/Jinwen-XU/colorist.svg) ![Repo Size](https://img.shields.io/github/repo-size/Jinwen-XU/colorist.svg)
+
+---
+
+# The colorist class series
+
+This is a series of classes to typeset articles or books, with a colorful
+design. It contains:
+- lebhart.cls
+- lebhartfast.cls
+- beaulivre.cls
+- beaulivrefast.cls
+
+They have native support to English, French and Chinese typesetting. And they
+may compile with either XeLaTeX or LuaLaTeX.
+
+# License
+
+This work is released under the LaTeX Project Public License, v1.3c or later.
diff --git a/macros/unicodetex/latex/colorist/colorist-doc-cn.pdf b/macros/unicodetex/latex/colorist/colorist-doc-cn.pdf
new file mode 100644
index 0000000000..9f67494a2c
--- /dev/null
+++ b/macros/unicodetex/latex/colorist/colorist-doc-cn.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/colorist/colorist-doc-cn.tex b/macros/unicodetex/latex/colorist/colorist-doc-cn.tex
new file mode 100644
index 0000000000..d016ae9da5
--- /dev/null
+++ b/macros/unicodetex/latex/colorist/colorist-doc-cn.tex
@@ -0,0 +1,248 @@
+%! TEX program = xelatex
+\PassOptionsToPackage{dvipsnames}{xcolor}
+\documentclass{lebhart}
+
+\UseLanguage{Chinese}
+
+%%================================
+%% TeX logo 与 网址
+%%================================
+\usepackage{hologo}
+\usepackage{url}
+
+%%================================
+%% 排版代码
+%%================================
+\usepackage{listings}
+\definecolor{lightergray}{gray}{0.99}
+\lstset{language=[LaTeX]TeX,
+ keywordstyle=\color{RoyalBlue},
+ basicstyle=\ttfamily,
+ commentstyle=\color{ForestGreen}\ttfamily,
+ stringstyle=\rmfamily,
+ showstringspaces=false,
+ breaklines=true,
+ frame=lines,
+ backgroundcolor=\color{lightergray},
+ flexiblecolumns=true,
+ escapeinside={(*}{*)},
+ % numbers=left,
+ numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
+ firstnumber=last,
+}
+\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
+\lstset{morekeywords=%
+ {CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,
+ linenumbers,nolinenumbers,subsection,maketitle
+ }
+}
+\lstnewenvironment{code}%
+{\setkeys{lst}{columns=fullflexible,keepspaces=true}}{}
+
+\providecommand{\colorist}{\textsf{colorist}}
+\providecommand{\lebhart}{\textsf{lebhart}}
+\providecommand{\lebhartfast}{\textsf{lebhartfast}}
+\providecommand{\beaulivre}{\textsf{beaulivre}}
+\providecommand{\beaulivrefast}{\textsf{beaulivrefast}}
+
+%%================================
+%% 正文
+%%================================
+\begin{document}
+
+\title{\colorist{},多彩风格的文档类系列\thanks{对应版本. \texttt{\colorist{} 2021/03/11}}}
+\author{锦文}
+\date{2021年3月,北京}
+
+\maketitle
+
+\begin{abstract}
+ \colorist{}文档类系列包含用于排版文章的\lebhart{}、用于排版书的\beaulivre{},以及对应的两个fast版本。我设计这一系列的初衷是为了撰写草稿与笔记,使之多彩而不缭乱。
+
+ 这些文档类支持英文、法文、中文三种语言,并且同一篇文档中三种语言可以很好地协调。由于采用了自定义字体,需要采用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 进行编译。
+
+ 最后,这篇说明文档是用\lebhart{}排版的,你可以把它看作一份简短的说明与演示。
+\end{abstract}
+
+\begin{tcolorbox}[enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,boxrule=0pt,frame hidden]
+ 由于\colorist{}主体是从\textsf{minimalist}系列修改而来的,因而一些页面元素还未完全重新设计,特别是目录、part和chapter的样式。这些内容会在将来逐渐加入。
+\end{tcolorbox}
+
+\tableofcontents
+
+\section{关于这些文档类的名称与区别}
+\lebhart{}取自于德文的lebhaft (活泼),并取了artikel (文章)的前三个字母组合而成。
+
+\beaulivre{}取自于法文的beau (美丽),以及livre (书),由二者组合而成。
+
+\lebhartfast{}与\beaulivrefast{}是更快速但略微粗糙的\lebhart{}与\beaulivre{}。主要区别是:
+\begin{itemize}
+ \item 使用较为简单的数学字体设置;
+ \item 不使用hyperref;
+ \item 所有tcolorbox使用draft模式;
+ \item 使用polyglossia而不是babel来支持多语言。(使用polyglossia编译速度会略有提高,但目前对于中文的兼容不太完善,在它更加稳定后,将会考虑全面切换到polyglossia)
+\end{itemize}
+
+在文章的撰写阶段,建议使用fast版本以加快编译速度,改善写作时的流畅程度。在最后,可以把fast标记去除,从而得到正式的版本。
+
+\section{一些使用说明}
+
+\subsection{定理,以及引用}
+
+定义、定理等环境已经被预定义,可以直接使用,例如:
+
+\begin{code}
+ \begin{definition}[奇异物品] \label{def: strange} ...
+\end{code}
+
+将会生成
+\begin{definition}[奇异物品]\label{def: strange}
+ 这是奇异物品的定义。
+\end{definition}
+
+定理类环境的前后有一行左右的间距。在定义结束的时候会有一个符号来标记。
+
+引用时,可以直接使用智能引用 \lstinline|\cref{标签名称}|,例如:\lstinline|\cref{def: strange}| 会显示为:\cref{def: strange}。
+
+\bigskip
+下面是定理类环境的其他几种样式:
+
+\begin{theorem}
+ Theorem style: theorem, proposition, lemma, corollary
+\end{theorem}
+
+\begin{remark}
+ Remark style
+\end{remark}
+
+\begin{conjecture}
+ Conjecture style
+\end{conjecture}
+
+\begin{example*}
+ Example style: example, fact
+\end{example*}
+
+\begin{problem}
+ Problem style
+\end{problem}
+
+\subsection{定义新的定理型环境}
+
+首先定义这个环境在所用语言下的名称 \lstinline|\(name of environment)(language name)|,其中 \\\lstinline|(language name)| 是 \lstinline|EN|、\lstinline|FR|、\lstinline|CN| 等,然后用下面四种方式之一定义这一环境:
+\begin{itemize}
+ \item \lstinline|\CreateTheorem*{(name of environment)}|
+ \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
+ \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
+ \item \lstinline|\CreateTheorem{(name of environment)}|
+\end{itemize}
+
+\def\proofideanameCN{思路}
+\CreateTheorem*{proofidea}
+
+例如,
+
+\begin{code}
+ \def\proofideanameCN{思路}
+ \CreateTheorem*{proofidea}
+\end{code}
+可以定义不编号的环境 \lstinline|proofidea|,它支持在中文环境中使用,效果如下所示:
+
+\begin{proofidea}
+ ...
+\end{proofidea}
+
+\subsection{未完成标记}
+
+你可以通过 \lstinline|\dnf| 来标记尚未完成的部分。例如:
+\begin{itemize}
+ \item \lstinline|\dnf|: \quad \dnf
+ \item \lstinline|\dnf<还需加入…>|: \quad \dnf<还需加入…>
+\end{itemize}
+
+类似的,还有 \lstinline|\needgraph| :
+\begin{itemize}
+ \item \lstinline|\needgraph|: \needgraph
+ \item \lstinline|\needgraph<关于…>|: \needgraph<关于…>
+\end{itemize}
+
+\subsection{语言设置}
+可以随时使用 \lstinline|\UseLanguage{语言名称}| 更改语言,语言名称包括Chinese、English、French(首字母大小写随意,例如chinese亦可)。这样,各种指令和环境的效果也会随之变动。
+
+例如,使用 \lstinline|\UseLanguage{English}| 后,定理与未完成标记会显示为:
+
+\UseLanguage{English}
+\begin{theorem}[Useless]\label{thm}
+ Some theorem in English. \dnf
+\end{theorem}
+
+引用时,定理的名称总是与定理所在区域的语言匹配,例如,开头的定义在现在的英文模式下依然显示为中文:\cref{def: strange}和\cref{thm}。
+
+% \subsection{关于行号}
+% 行号可以随时开启和关闭。\lstinline|\linenumbers| 用来开启行号,\lstinline|\nolinenumbers| 用来关闭行号。标题、目录、索引等位置为了美观,不进行编号。
+
+\subsection{关于字体}
+\lebhart{}与\beaulivre{}使用Palatino Linotype作为英文字体,方正悠宋、悠黑简体作为中文字体,并部分使用了Neo Euler作为数学字体:
+\begin{itemize}
+ \item English main font. \textsf{English sans serif font}.
+ \item 中文主要字体,\textsf{中文无衬线字体}
+ \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+\end{itemize}
+
+其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。
+
+其他字体不是免费字体,需要自行购买使用(你可以在方正字库网站查询详细资料:\url{https://www.foundertype.com})。
+
+在没有安装相应的字体时,将采用TeXlive中自带的字体来代替,效果可能会有所折扣。
+
+\section{文档示例}
+
+\begin{minipage}{0.4\textwidth}
+\begin{code}
+%! TEX program = xelatex
+\documentclass{lebhartfast}
+
+\UseLanguage{French}
+
+\begin{document}
+
+\title{Titre}
+\author{Nom}
+\date{03 / 2021, Lieu}
+
+\maketitle
+
+%% Texte ici
+
+\end{document}
+\end{code}
+\end{minipage}
+%
+\hfill
+%
+\begin{minipage}{0.4\textwidth}
+\begin{code}
+%! TEX program = xelatex
+\documentclass{lebhartfast}
+
+\UseLanguage{Chinese}
+
+\begin{document}
+
+\title{标题}
+\author{姓名}
+\date{2021年3月,地点}
+
+\maketitle
+
+%% 正文部分
+
+\end{document}
+\end{code}
+\end{minipage}
+\par
+
+\bigskip
+(\lstinline|\UseLanguage| 既可以放在导言中,也可以放在正文部分,并且可以按照需要反复使用)
+
+\end{document}
diff --git a/macros/unicodetex/latex/colorist/colorist-doc-en.pdf b/macros/unicodetex/latex/colorist/colorist-doc-en.pdf
new file mode 100644
index 0000000000..1774dfa00f
--- /dev/null
+++ b/macros/unicodetex/latex/colorist/colorist-doc-en.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/colorist/colorist-doc-en.tex b/macros/unicodetex/latex/colorist/colorist-doc-en.tex
new file mode 100644
index 0000000000..3d6f46559d
--- /dev/null
+++ b/macros/unicodetex/latex/colorist/colorist-doc-en.tex
@@ -0,0 +1,248 @@
+%! TEX program = xelatex
+\PassOptionsToPackage{dvipsnames}{xcolor}
+\documentclass{lebhart}
+
+%%================================
+%% TeX logo and URL
+%%================================
+\usepackage{hologo}
+\usepackage{url}
+
+%%================================
+%% For typestting code
+%%================================
+\usepackage{listings}
+\definecolor{lightergray}{gray}{0.99}
+\lstset{language=[LaTeX]TeX,
+ keywordstyle=\color{RoyalBlue},
+ basicstyle=\ttfamily,
+ commentstyle=\color{ForestGreen}\ttfamily,
+ stringstyle=\rmfamily,
+ showstringspaces=false,
+ breaklines=true,
+ frame=lines,
+ backgroundcolor=\color{lightergray},
+ flexiblecolumns=true,
+ escapeinside={(*}{*)},
+ % numbers=left,
+ numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
+ firstnumber=last,
+}
+\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
+\lstset{morekeywords=%
+ {CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,
+ linenumbers,nolinenumbers,subsection,maketitle
+ }
+}
+\lstnewenvironment{code}%
+{\setkeys{lst}{columns=fullflexible,keepspaces=true}}{}
+
+\providecommand{\colorist}{\textsf{colorist}}
+\providecommand{\lebhart}{\textsf{lebhart}}
+\providecommand{\lebhartfast}{\textsf{lebhartfast}}
+\providecommand{\beaulivre}{\textsf{beaulivre}}
+\providecommand{\beaulivrefast}{\textsf{beaulivrefast}}
+
+%%================================
+%% Main text
+%%================================
+\begin{document}
+
+\title{\colorist{}, document-class series with colorful design\thanks{Corresponding to: \texttt{\colorist{} 2021/03/11}}}
+\author{Jinwen}
+\date{March 2021, Beijing}
+
+\maketitle
+
+\begin{abstract}
+ The \colorist{} class series includes \lebhart{} for typesetting articles, \beaulivre{} for typesetting books, and two corresponding fast versions. My original intention in designing this series is to write drafts and notes that look colorful yet not dazzling.
+
+ These document-classes support three languages: English, French, and Chinese, and these three languages can be switched seamlessly in a single document. Due to the usage of custom fonts, they need to be compiled with \hologo{XeLaTeX} or \hologo{LuaLaTeX}.
+
+ Finally, this documentation is typeset using \lebhart{}. You can think of it as a short introduction and demonstration.
+\end{abstract}
+
+\begin{tcolorbox}[enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,boxrule=0pt,frame hidden]
+ Since the main body of \colorist{} is modified from the \textsf{minimalist} series, some elements have not been completely redesigned yet, especially the TOC, part and chapter style. These will be added gradually in the future versions.
+\end{tcolorbox}
+
+\tableofcontents
+
+\section{On the naming and differences of these document-classes}
+\begin{itemize}
+ \item \lebhart{} is taken from German word ``lebhaft'' (``vividly''), combined with the first three letters of ``artikel'' (``article'').
+ \item \beaulivre{} is taken from French words ``beau'' (for ``beautiful'') and ``livre'' (for ``book'').
+\end{itemize}
+
+\lebhartfast{} and \beaulivrefast{} are faster but slightly rougher version of \lebhart{} and \beaulivre{}. The main differences are:
+\begin{itemize}
+ \item Use simpler math font configuration;
+ \item Do not use hyperref;
+ \item All color boxes use draft mode;
+ \item Use polyglossia instead of babel to support multiple languages. (Using polyglossia will increase the compilation speed slightly, but the current compatibility with Chinese is not perfect. When it becomes more stable, I will consider fully switching to polyglossia)
+\end{itemize}
+
+During the writing stage of your document, it is recommended to use the ``fast'' version to speed up compilation and improve the smoothness of your writing experience. At the end, you can remove the ``fast'' mark to get the final version.
+
+\section{Some instructions}
+
+\subsection{Theorem and reference}
+
+Environments such as definitions and theorems have been pre-defined and can be used directly, for example:
+
+\begin{code}
+ \begin{definition}[Strange things] \label{def: strange} ...
+\end{code}
+
+will produce
+\begin{definition}[Strange things]\label{def: strange}
+ This is the definition of some strange objects.
+\end{definition}
+
+There is approximately an one-line space before and after the theorem environment. There will be a symbol to mark the end of the environment.
+
+When referencing, you can directly use clever reference \lstinline|\cref{(label name)}|. For example, \lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
+
+\bigskip
+The following are several other styles of theorem-like environments:
+
+\begin{theorem}
+ Theorem style: theorem, proposition, lemma, corollary
+\end{theorem}
+
+\begin{remark}
+ Remark style
+\end{remark}
+
+\begin{conjecture}
+ Conjecture style
+\end{conjecture}
+
+\begin{example*}
+ Example style: example, fact
+\end{example*}
+
+\begin{problem}
+ Problem style
+\end{problem}
+
+\subsection{Define a new theorem-like environment}
+
+First define the name of this environment in the language used: \lstinline|\(name of environment)(language name)|. Where \lstinline|(language name)| can be \lstinline|EN|, \lstinline|FR|, \lstinline|CN|, etc., and then define this environment in one of the following four ways:
+\begin{itemize}
+ \item \lstinline|\CreateTheorem*{(name of environment)}|
+ \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
+ \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
+ \item \lstinline|\CreateTheorem{(name of environment)}|
+\end{itemize}
+
+\def\proofideanameEN{Idea}
+\CreateTheorem*{proofidea}
+
+For example,
+\begin{code}
+ \def\proofideanameEN{Idea}
+ \CreateTheorem*{proofidea}
+\end{code}
+defines an unnumbered environment \lstinline|proofidea|, which supports using in the English context, and the effect is as follows:
+
+\begin{proofidea}
+ ...
+\end{proofidea}
+
+\subsection{Draft mark}
+
+You can use \lstinline|\dnf| to mark the unfinished part. For example:
+\begin{itemize}
+ \item \lstinline|\dnf|: \quad \dnf
+ \item \lstinline|\dnf<Still need ...>|: \quad \dnf<Still need ...>
+\end{itemize}
+
+Similarly, there is \lstinline|\needgraph| :
+\begin{itemize}
+ \item \lstinline|\needgraph|: \needgraph
+ \item \lstinline|\needgraph<About ...>|: \needgraph<About ...>
+\end{itemize}
+
+\subsection{Language configuration}
+You can use \lstinline|\UseLanguage{(name of language))}| at any time to change the language, Language names include Chinese, English, French (the case of the first letter is arbitrary, for example, ``chinese'' is also acceptable). With this, the effects of various commands and environments will also change accordingly.
+
+For example, after using \lstinline|\UseLanguage{French}|, the theorem and the draft mark will be displayed as:
+
+\UseLanguage{French}
+\begin{theorem}[Inutile]\label{thm}
+ Un théorem en Français. \dnf
+\end{theorem}
+
+When referenced, the name of the theorem always matches the language of the region in which the theorem is located, for example, the definition of the beginning is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}。
+
+\UseLanguage{English}
+
+% \subsection{On the line numbers}
+% Line numbers can be turned on and off at any time. \lstinline|\linenumbers| is used to enable the line numbers, and \lstinline|\nolinenumbers| is used to disable them. For the sake of beauty, the title, table of contents, index and some other elements are not numbered.
+
+\subsection{On the fonts}
+\lebhart{} and \beaulivre{} use Palatino Linotype as the English font, FounderType's YouSong and YouHei Simplified as the Chinese fonts, and partially use Neo Euler as the mathematical font:
+\begin{itemize}
+ \item English main font. \textsf{English sans serif font}.
+ \item 中文主要字体,\textsf{中文无衬线字体}
+ \item Math demonstration: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+\end{itemize}
+
+Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}.
+
+Other fonts are not free, you need to purchase and use them on yourself (you can check the details on FounderType's website: \url{https://www.foundertype.com} ).
+
+When the corresponding font is not installed, the font that comes with TeXlive will be used instead, and the experience might be reduced.
+
+\section{Document templates}
+
+\begin{minipage}{0.4\textwidth}
+\begin{code}
+%! TEX program = xelatex
+\documentclass{lebhartfast}
+
+\UseLanguage{French}
+
+\begin{document}
+
+\title{Titre}
+\author{Nom}
+\date{03 / 2021, Lieu}
+
+\maketitle
+
+%% Texte ici
+
+\end{document}
+\end{code}
+\end{minipage}
+%
+\hfill
+%
+\begin{minipage}{0.4\textwidth}
+\begin{code}
+%! TEX program = xelatex
+\documentclass{lebhartfast}
+
+\UseLanguage{Chinese}
+
+\begin{document}
+
+\title{标题}
+\author{姓名}
+\date{2021年3月,地点}
+
+\maketitle
+
+%% 正文部分
+
+\end{document}
+\end{code}
+\end{minipage}
+\par
+
+\bigskip
+(\lstinline|\UseLanguage| can be placed either in the preamble or in the body part, and can be used repeatedly as needed)
+
+\end{document}
diff --git a/macros/unicodetex/latex/colorist/colorist.dtx b/macros/unicodetex/latex/colorist/colorist.dtx
new file mode 100644
index 0000000000..bf7bcf42a1
--- /dev/null
+++ b/macros/unicodetex/latex/colorist/colorist.dtx
@@ -0,0 +1,856 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2021 by Jinwen XU
+% -------------------------------
+%
+% This file may be distributed and/or modified under the conditions of the LaTeX
+% Project Public License, either version 1.3 of this license or (at your option)
+% any later version. The latest version of this license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3 or later is part of all distributions of LaTeX version
+% 2005/12/01 or later.
+%
+% \fi
+%
+%<*driver>
+\ProvidesFile{colorist.dtx}
+%</driver>
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+%<*lebhart>
+\ProvidesClass{lebhart}
+ [2021/03/11 A colorful article style]
+%</lebhart>
+%<*lebhartfast>
+\ProvidesClass{lebhartfast}
+ [2021/03/11 A faster but rougher version of lebhart]
+%</lebhartfast>
+%<*beaulivre>
+\ProvidesClass{beaulivre}
+ [2021/03/11 A colorful book style]
+%</beaulivre>
+%<*beaulivrefast>
+\ProvidesClass{beaulivrefast}
+ [2021/03/11 A faster but rougher version of beaulivre]
+%</beaulivrefast>
+
+%<*lebhart|lebhartfast>
+\DeclareOption*{%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions\relax
+\LoadClass{article}
+%</lebhart|lebhartfast>
+%<*beaulivre|beaulivrefast>
+\DeclareOption*{%
+ \PassOptionsToClass{\CurrentOption}{book}}
+\ProcessOptions\relax
+\LoadClass{book}
+%</beaulivre|beaulivrefast>
+
+\RequirePackage{etoolbox}
+
+%%================================
+%% Fonts
+%%================================
+\RequirePackage{anyfontsize}
+
+%% Title fonts
+\newcommand{\partfont}{\sffamily}
+%<beaulivre|beaulivrefast>\newcommand{\chapfont}{\sffamily}
+\newcommand{\secfont}{\sffamily}
+\newcommand{\subsecfont}{}
+%<*lebhartfast|beaulivrefast>
+
+%% Math fonts
+\RequirePackage{mathpazo}
+%</lebhartfast|beaulivrefast>
+
+%% English fonts
+\PassOptionsToPackage{no-math}{fontspec}
+\RequirePackage{fontspec}
+\IfFontExistsTF{Palatino Linotype}{%
+ \setmainfont{Palatino Linotype}
+}{
+ \setmainfont{texgyrepagella-regular.otf}[
+ BoldFont = texgyrepagella-bold.otf ,
+ ItalicFont = texgyrepagella-italic.otf ,
+ BoldItalicFont = texgyrepagella-bolditalic.otf ]
+}
+ \setsansfont{SourceSansPro-Regular.otf}[
+ Scale = MatchLowercase,
+ BoldFont = SourceSansPro-Bold.otf ,
+ ItalicFont = SourceSansPro-RegularIt.otf ,
+ BoldItalicFont = SourceSansPro-BoldIt.otf ]
+
+%% Chinese fonts
+\PassOptionsToPackage{fontset=none,scheme=plain}{ctex}
+\RequirePackage{ctex}
+\IfFontExistsTF{FZYouSongS 507R}{%
+ \setCJKmainfont{FZYouSongS 507R}[
+ BoldFont = FZYouSongS 509R ,
+ BoldFeatures = {FakeBold=2} ,
+ ItalicFont = * ,
+ BoldItalicFont = FZYouSongS 509R ,
+ BoldItalicFeatures = {FakeBold=2} ,
+ SmallCapsFont = * ]
+}{
+ \setCJKmainfont{FandolSong-Regular.otf}[
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = {FakeBold=4} ,
+ SmallCapsFont = * ]
+}
+\IfFontExistsTF{FZFSJW--GB1-0}{%
+ \setCJKmonofont{FZFSJW--GB1-0}[
+ BoldFont = * ,
+ BoldFeatures = {FakeBold=4} ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = {FakeBold=4} ,
+ SmallCapsFont = * ]
+}{
+ \setCJKmonofont{FandolFang-Regular.otf}[
+ BoldFont = * ,
+ BoldFeatures = {FakeBold=4} ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = {FakeBold=4} ,
+ SmallCapsFont = * ]
+}
+\IfFontExistsTF{FZYouHeiS 506L}{%
+ \setCJKsansfont{FZYouHeiS 506L}[
+ BoldFont = FZYouHeiS 509R,
+ ItalicFont = * ,
+ BoldItalicFont = FZYouHeiS 509R ,
+ SmallCapsFont = * ]
+}{
+ \setCJKsansfont{FandolHei-Regular.otf}[
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ SmallCapsFont = * ]
+}
+%<*lebhart|beaulivre>
+
+%% Math fonts
+\PassOptionsToPackage
+ {warnings-off={mathtools-colon,mathtools-overbracket}}{unicode-math}
+\RequirePackage{unicode-math}
+\unimathsetup{math-style=ISO}
+\setmathfont{Asana-Math.otf}
+\IfFontExistsTF{Neo Euler}{%
+\setmathfont{Neo Euler} % From https://tex.stackexchange.com/a/425887
+ [range={"0000-"0001,"0020-"007E,
+ "00A0,"00A7-"00A8,"00AC,"00AF,"00B1,"00B4-"00B5,"00B7,
+ "00D7,"00F7,
+ "0131,
+ "0237,"02C6-"02C7,"02D8-"02DA,"02DC,
+ "0300-"030C,"030F,"0311,"0323-"0325,"032E-"0332,"0338,
+ "0391-"0393,"0395-"03A1,"03A3-"03A8,"03B1-"03BB,
+ "03BD-"03C1,"03C3-"03C9,"03D1,"03D5-"03D6,"03F5,
+ "2016,"2018-"2019,"2021,"2026-"202C,"2032-"2037,"2044,
+ "2057,"20D6-"20D7,"20DB-"20DD,"20E1,"20EE-"20EF,
+ "210B-"210C,"210E-"2113,"2118,"211B-"211C,"2126-"2128,
+ "212C-"212D,"2130-"2131,"2133,"2135,"2190-"2199,
+ "21A4,"21A6,"21A9-"21AA,"21BC-"21CC,"21D0-"21D5,
+ "2200,"2202-"2209,"220B-"220C,"220F-"2213,"2215-"221E,
+ "2223,"2225,"2227-"222E,"2234-"2235,"2237-"223D,
+ "2240-"224C,"2260-"2269,"226E-"2279,"2282-"228B,"228E,
+ "2291-"2292,"2295-"2299,"22A2-"22A5,"22C0-"22C5,
+ "22DC-"22DD,"22EF,"22F0-"22F1,
+ "2308-"230B,"2320-"2321,"2329-"232A,"239B-"23AE,
+ "23DC-"23DF,
+ "27E8-"27E9,"27F5-"27FE,"2A0C,"2B1A,
+ "1D400-"1D433,"1D49C,"1D49E-"1D49F,"1D4A2,"1D4A5-"1D4A6,
+ "1D4A9-"1D4AC,"1D4AE-"1D4B5,"1D4D0-"1D4E9,"1D504-"1D505,
+ "1D507-"1D50A,"1D50D-"1D514,"1D516-"1D51C,"1D51E-"1D537,
+ "1D56C-"1D59F,"1D6A8-"1D6B8,"1D6BA-"1D6D2,"1D6D4-"1D6DD,
+ "1D6DF,"1D6E1,"1D7CE-"1D7D7 }]
+}{}
+%</lebhart|beaulivre>
+
+\RequirePackage{mathtools}
+\RequirePackage[verbose=silent]{microtype}
+
+%%================================
+%% Page layout
+%%================================
+\RequirePackage[heightrounded]{geometry}
+\geometry{
+ papersize={7in,10in},
+ total={40em,60em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+
+\RequirePackage{indentfirst}
+
+\RequirePackage{xcolor}
+\definecolor{paper}{RGB}{255,255,255}
+\definecolor{skyblue}{RGB}{60,120,234}
+\definecolor{steelblue}{RGB}{70,130,180}
+\definecolor{forestgreen}{RGB}{21,122,81}
+\definecolor{lightorange}{RGB}{255,185,88}
+\definecolor{lightskyblue}{RGB}{35,198,255}
+
+\RequirePackage{fancyhdr}
+\RequirePackage{extramarks}
+\fancypagestyle{fancy}{
+ \fancyhf{}
+ \if@twoside
+ \fancyfoot[RO]{\small\textcolor{black!30!paper}{\lastrightmark}%
+ ~~\rlap{\textcolor{gray!55!paper}{$|$}~~\thepage}}
+ \fancyfoot[LE]{\small\leavevmode\llap{\thepage%
+ ~~\textcolor{gray!55!paper}{$|$}}%
+ ~~\textcolor{black!30!paper}{\lastleftmark}}
+ \else
+ \fancyfoot[R]{\small\textcolor{black!30!paper}{\lastrightmark}%
+ ~~\rlap{\textcolor{gray!55!paper}{$|$}~~\thepage}}
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+}
+\pagestyle{fancy}
+
+\fancypagestyle{plain}{
+ \fancyhf{}
+ \if@twoside
+ \fancyfoot[RO]{\small%
+ ~\rlap{\textcolor{gray!55!paper}{$|$}~~\thepage}}
+ \fancyfoot[LE]{\small\leavevmode\llap{\thepage%
+ ~~\textcolor{gray!55!paper}{$|$}}}
+ \else
+ \fancyfoot[R]{\small%
+ ~\rlap{\textcolor{gray!55!paper}{$|$}~~\thepage}}
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+}
+
+%<*lebhart|lebhartfast>
+\if@twoside
+ \renewcommand*{\sectionmark}[1]{\markboth{\uppercase{#1}}{}}
+\else
+ \renewcommand*{\sectionmark}[1]{\markboth{\uppercase{#1}}{\uppercase{#1}}}
+\fi
+%</lebhart|lebhartfast>
+%<*beaulivre|beaulivrefast>
+\if@twoside
+ \renewcommand{\chaptermark}[1]{\markboth{\uppercase{#1}}{}}
+\else
+ \renewcommand{\chaptermark}[1]{\markboth{\uppercase{#1}}{\uppercase{#1}}}
+\fi
+\renewcommand*{\sectionmark}[1]{%
+ \markright{\raisebox{.03em}{\footnotesize/}%
+ ~\thesection~\raisebox{.03em}{\footnotesize/}~~~#1}}
+%</beaulivre|beaulivrefast>
+
+%%================================
+%% Line spacing
+%%================================
+\RequirePackage{setspace}
+\linespread{1.07}
+% To avoid `Underfull \vbox (badness 10000)`
+\raggedbottom
+
+%%================================
+%% Title format
+%%================================
+\RequirePackage[explicit,newparttoc]{titlesec}
+\PassOptionsToPackage{normalem}{ulem}
+\RequirePackage{ulem}
+
+%<*lebhart|lebhartfast>
+%% Part
+\titleformat{\part}[display]
+ {%
+ \partfont\filleft}
+ {\MakeUppercase{\partname~\protect\thepart}}
+ {.3em}
+ {\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
+\titleformat{name=\part,numberless}[display]
+ {% \phantomsection\addcontentsline{toc}{part}{#1}%
+ \partfont\filleft}
+ {\phantom{\MakeUppercase{\partname}}}
+ {.3em}
+ {\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
+%% Text after part
+\newcommand{\parttext}[1]{%
+ \begin{flushright}%
+ \begin{minipage}{0.833\textwidth}%
+ \color{black!80!paper}\raggedleft#1%
+ \end{minipage}%
+ \end{flushright}%
+}
+%</lebhart|lebhartfast>
+%<*beaulivre|beaulivrefast>
+%% Part
+\titleclass{\part}{top} % make part like a chapter
+\titleformat{\part}[display]
+ {\partfont\filleft}
+ {\MakeUppercase{\partname~\protect\thepart}}
+ {1em}
+ {\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
+\titleformat{name=\part,numberless}[display]
+ {% \phantomsection\addcontentsline{toc}{part}{#1}%
+ \partfont\filleft}
+ {\phantom{\MakeUppercase{\partname}}}
+ {1em}
+ {\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
+\titlespacing*{\part}{0pt}{5em}{6em}
+%% Text after part
+\newcommand{\parttext}[1]{%
+\vfill%
+%
+\begin{flushright}%
+ \begin{minipage}{0.833\textwidth}%
+ \color{black!80!paper}\raggedleft#1%
+ \end{minipage}%
+\end{flushright}%
+%
+\vfill\vfill%
+\cleardoublepage%
+}
+
+%% Chapter
+\titleformat{\chapter}
+ {\thispagestyle{fancy}%
+ \color{black!80!paper}\chapfont\fontsize{16}{0}\selectfont}{}{0em}
+ {\rlap{\hspace*{-.5em}{\color{gray!25!paper}%
+ \fontsize{80}{0}\selectfont\raisebox{-7pt}{\thechapter}}}#1}
+\titleformat{name=\chapter,numberless}
+ {\thispagestyle{fancy}% \phantomsection\addcontentsline{toc}{chapter}{#1}%
+ \color{black!80!paper}\chapfont\fontsize{16}{0}\selectfont}{}{0em}
+ {\rlap{\hspace*{-.5em}{\color{gray!25!paper}%
+ \fontsize{80}{0}\selectfont\normalfont\raisebox{-7pt}{*}}}#1}
+%</beaulivre|beaulivrefast>
+
+%% Section
+\titleformat{\section}
+ {\secfont\color{steelblue}}
+ {\thesection}{1em}{#1}
+ [{\titlerule[.75pt]}]
+
+%% Subsection
+\titleformat{\subsection}
+ {\subsecfont}{}{0em}
+ {\textsf{\thesubsection}~~\textcolor{gray!55!paper}{$|$}~~#1}
+\titleformat{name=\subsection,numberless}
+ {\subsecfont}{}{0em}
+ {#1}
+
+%%================================
+%% TOC format
+%%================================
+\RequirePackage{titletoc}
+\titlecontents{part}
+ [0em]
+ {\addvspace{1.5pc}\filcenter\partfont}
+ {\thecontentslabel\\\uppercase}
+ {}
+ {} % without page number
+ [\addvspace{.5pc}]
+%<*lebhart|lebhartfast>
+\titlecontents{section}
+ [2em] % i.e., 0em (part) + 2em
+ {\secfont}
+ {\contentslabel{1.75em}}
+ {\hspace*{-1.75em}}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+\titlecontents{subsection}
+ [5em] % i.e., 2em (section) + 3em
+ {\subsecfont}
+ {\contentslabel{2.75em}}
+ {\hspace*{-2.75em}}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+%</lebhart|lebhartfast>
+%<*beaulivre|beaulivrefast>
+\titlecontents{chapter}
+ [2em] % i.e., 0em (part) + 2em
+ {\addvspace{.5pc}\chapfont}
+ {\contentslabel{2em}}
+ {\hspace*{-2em}}
+ {\normalfont\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+\titlecontents{section}
+ [4em] % i.e., 2em (chapter) + 2em
+ {\secfont}
+ {\contentslabel{1.75em}}
+ {\hspace*{-1.75em}}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+\titlecontents{subsection}
+ [7em] % i.e., 4em (section) + 3em
+ {\subsecfont}
+ {\contentslabel{2.75em}}
+ {\hspace*{-2.75em}}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+%</beaulivre|beaulivrefast>
+
+%%================================
+%% Graphics
+%%================================
+\RequirePackage{graphicx}
+\graphicspath{{images/}}
+\RequirePackage{wrapfig}
+\RequirePackage{caption}
+
+%%================================
+%% Lists
+%%================================
+\RequirePackage{enumitem}
+\setlist{noitemsep,leftmargin=2em}
+\renewcommand\labelitemi{\color{gray!50}$\bullet$}
+
+%%================================
+%% Blank page
+%%================================
+\newcommand{\blinkpagetext}{This page is intentionally left blank}
+\renewcommand{\cleardoublepage}{\relax
+ \clearpage
+ \if@twoside\ifodd\c@page\relax\else
+ \thispagestyle{empty}
+ \newgeometry{centering}
+ \null\vfill
+ \centerline{\large\color{gray!20!paper}\blinkpagetext}
+ \vfill\restoregeometry\newpage\fi\fi}
+
+%%================================
+%% Index
+%%================================
+\RequirePackage{imakeidx}
+% switch off the line numbers of index
+\pretocmd{\printindex}{}{}{\FAIL}
+\apptocmd{\printindex}{}{}{\FAIL}
+
+%%================================
+%% Icons
+%%================================
+\RequirePackage{tikz}
+\newcommand{\ideabulb}[2][0.15]{%
+ \scalebox{#1}{%
+ \begin{tikzpicture}
+ \filldraw[draw=#2,fill=#2] (0,0) circle [radius=1cm];
+ \filldraw[draw=paper,fill=paper,rounded corners=0.8pt]
+ [rotate=20] (-0.26,-0.66) rectangle (-0.06,-0.6)
+ [xshift=-0.4mm,yshift=1mm] (-0.26,-0.66) rectangle (0.02,-0.6)
+ [xshift=0.4mm,yshift=1mm] (-0.26,-0.66) rectangle (-0.06,-0.6);
+ \draw[draw=paper,line width=0.7mm] (-0.18,-0.46)
+ .. controls (-0.18,-0.28) and (-0.28,-0.12) ..(-0.4,0.1)
+ .. controls (-0.55,0.4) and (-0.3,0.64) ..(0,0.64)
+ .. controls (0.3,0.64) and (0.55,0.4) ..(0.4,0.1)
+ .. controls (0.28,-0.12) and (0.18,-0.28) ..(0.18,-0.46);
+ \end{tikzpicture}}}
+
+\newcommand{\questionmark}[2][0.15]{%
+ \scalebox{#1}{%
+ \begin{tikzpicture}
+ \filldraw[draw=#2,fill=#2] (0,0) circle [radius=1cm];
+ \filldraw[paper,yshift=0.5mm,scale=0.9] (-0.4,0.1) circle [radius=0.77mm];
+ \draw[draw=paper,line width=1.5mm,yshift=0.5mm,scale=0.9] (-0.4,0.1)
+ .. controls (-0.55,0.4) and (-0.3,0.64) ..(0,0.64)
+ .. controls (0.3,0.64) and (0.55,0.4) ..(0.4,0.1)
+ .. controls (0.28,-0.12) and (0.05,-0.28) ..(0.05,-0.3)
+ .. controls (0,-0.36) and (0.0,-0.45) ..(0.0,-0.5);
+ \fill[fill=paper,rounded corners=0.6mm]
+ (-0.09,-0.75) rectangle (0.09,-0.53);
+ \end{tikzpicture}}}
+
+%%================================
+%% Theorems
+%%================================
+\RequirePackage{amsthm}
+\newtheoremstyle{simple}%
+ {}{}%
+ {\normalfont}{}%
+ {\normalfont}{}%
+ {0pt}%
+ {\thmname{\textsc{#1}}\thmnumber{ #2}\hspace{.4em}%
+ \textcolor{gray!55!paper}{$|$}\hspace{.4em}%
+ \color{gray}\thmnote{\ensuremath{(\text{#3})}~~}\pushQED{\qed}}
+\def\@endtheorem{\popQED\endtrivlist\@endpefalse }
+
+\renewcommand{\qedsymbol}{%
+ \makebox[1em]{\color{gray!55!paper}\rule[-0.1em]{.95em}{.95em}}}
+
+\newtheoremstyle{basic}
+ {0pt}{0pt}{\normalfont}{0pt}
+ {}{\;}{0.25em}
+ {\thmname{#1}~\thmnumber{\textup{#2}}
+ \thmnote{\normalfont\sffamily\color{black}~(#3)}}
+
+\newtheoremstyle{emphasis}
+ {0pt}{0pt}{\itshape}{0pt}{}{}{0pt}
+ {\thmnote{\normalfont\sffamily\color{black}#3\hspace*{0.25em}}}
+
+%<lebhart|beaulivre>\PassOptionsToPackage{hidelinks,linktoc=all}{hyperref}
+\RequirePackage{aliascnt}
+% To solve `Difference between bookmark levels is greater than one`
+%<lebhart|beaulivre>\RequirePackage{bookmark}
+%<lebhart|beaulivre>\RequirePackage{hyperref}
+\PassOptionsToPackage{nameinlink}{cleveref}
+\RequirePackage{cleveref}
+\crefdefaultlabelformat{#2#1#3~\aftergroup\ignorespaces}
+
+\newcommand\englishABBR{EN}
+\newcommand\frenchABBR{FR}
+\newcommand\chineseABBR{CN}
+
+%% Macro for creating theorems
+\RequirePackage{xstring}
+\newcommand\PassFirstToSecond[2]{#2{#1}}%
+\NewDocumentCommand{\CreateTheorem}{sm}{%
+ \begingroup
+ \protected@edef\temp{#2}%
+ \expandafter\IfEndWith\expandafter{\temp}{*}{%
+ \expandafter\StrGobbleRight\expandafter{\temp}{1}[\temp]%
+ \PassFirstToSecond{*}%
+ }{%
+ \PassFirstToSecond{}%
+ }%
+ {\expandafter\PassFirstToSecond%
+ \expandafter{\temp}{\endgroup\InnerCreateTheorem{#1}}}%
+}%
+\NewDocumentCommand{\InnerCreateTheorem}{mmmod<>}{% #1 = star or no star #2 = name of environment #3 = emptiness or star to append to name of environment #4 = numbered like #5 = numbered within
+ \IfBooleanTF{#1}{%
+ \IfValueTF{#4}
+ {\@firstoftwo}
+ {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}%
+ }{%
+ \IfValueTF{#4}
+ {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{
+ \@secondoftwo}
+ }%
+ {%
+ \GenericError{}%
+ {\string\CreateTheorem\space syntax error\on@line}{%
+ You cannot call the starred variant with optional argument,\MessageBreak
+ nor call the unstarred variant with several optional arguments.}%
+ {}%
+ }{%
+ \IfBooleanTF{#1}{%
+ \newtheorem*{#2EN#3}{\csname#2nameEN\endcsname}
+ \newtheorem*{#2FR#3}{\csname#2nameFR\endcsname}
+ \newtheorem*{#2CN#3}{\csname#2nameCN\endcsname}
+ }{%
+ \IfValueTF{#5}{%
+ \newcounter{#2#3}[{#5}]%
+ \expandafter\renewcommand\expandafter*%
+ \csname the#2#3\expandafter\endcsname%
+ \expandafter{\csname the#5\endcsname.\arabic{#2#3}}%
+ }{%
+ \IfValueTF{#4}
+ {\newaliascnt{#2#3}{#4}}
+ {\newcounter{#2#3}}%
+ }%
+ %-------------------------------------------------------------------
+ \CreateTheoremNumberedLikeAliasCounter{#2}{EN}{#3}%
+ \CreateTheoremNumberedLikeAliasCounter{#2}{FR}{#3}%
+ \CreateTheoremNumberedLikeAliasCounter{#2}{CN}{#3}%
+ %-------------------------------------------------------------------
+ }%
+ \NewDocumentEnvironment{#2#3}{}
+ {\csname#2\csname\languagename ABBR\endcsname#3\endcsname}%
+ {\csname end#2\csname\languagename ABBR\endcsname#3\endcsname}%
+ }%
+}%
+\NewDocumentCommand{\CreateTheoremNumberedLikeAliasCounter}{mmm}{%
+ \newaliascnt{#1#2#3}{#1#3}%
+ \newtheorem{#1#2#3}[{#1#2#3}]{\csname#1name#2\endcsname}%
+ \aliascntresetthe{#1#2#3}%
+ \crefname{#1#2#3}%
+ {\csname#1name#2\endcsname}%
+ {\csname#1name#2\endcsname}%
+}%
+
+%% English theorems names
+\def\theoremnameEN{\unskip~\sffamily\color{orange}\textsc{Theorem}}
+\def\lemmanameEN{\unskip~\sffamily\color{orange}\textsc{Lemma}}
+\def\propositionnameEN{\unskip~\sffamily\color{orange}\textsc{Proposition}}
+\def\corollarynameEN{\unskip~\sffamily\color{orange}\textsc{Corollary}}
+\def\factnameEN{\unskip~\sffamily\color{black}\textsc{Fact}}
+\def\conjecturenameEN{\unskip~\sffamily\color{purple}\textsc{Conjecture}}
+\def\definitionnameEN{\unskip~\sffamily\color{forestgreen}\textsc{Definition}}
+\def\examplenameEN{\unskip~\sffamily\color{black}\textsc{Example}}
+\def\problemnameEN{\unskip~\sffamily\color{black}\textsc{Problem}}
+\def\remarknameEN{\unskip~\sffamily\color{black}\textsc{Remark}}
+
+%% French theorems names
+\def\theoremnameFR{\unskip~\sffamily\color{orange}\textsc{Théorème}}
+\def\lemmanameFR{\unskip~\sffamily\color{orange}\textsc{Lemme}}
+\def\propositionnameFR{\unskip~\sffamily\color{orange}\textsc{Proposition}}
+\def\corollarynameFR{\unskip~\sffamily\color{orange}\textsc{Corollaire}}
+\def\factnameFR{\unskip~\sffamily\color{black}\textsc{Fait}}
+\def\conjecturenameFR{\unskip~\sffamily\color{purple}\textsc{Conjecture}}
+\def\definitionnameFR{\unskip~\sffamily\color{forestgreen}\textsc{Définition}}
+\def\examplenameFR{\unskip~\sffamily\color{black}\textsc{Exemple}}
+\def\problemnameFR{\unskip~\sffamily\color{black}\textsc{Problème}}
+\def\remarknameFR{\unskip~\sffamily\color{black}\textsc{Remarque}}
+
+%% Chinese theorems names
+\def\theoremnameCN{\sffamily\color{orange}定理}
+\def\lemmanameCN{\sffamily\color{orange}引理}
+\def\propositionnameCN{\sffamily\color{orange}命题}
+\def\corollarynameCN{\sffamily\color{orange}推论}
+\def\factnameCN{\sffamily\color{black}事实}
+\def\conjecturenameCN{\sffamily\color{purple}猜想}
+\def\definitionnameCN{\sffamily\color{forestgreen}定义}
+\def\examplenameCN{\sffamily\color{black}例}
+\def\problemnameCN{\sffamily\color{black}问题}
+\def\remarknameCN{\sffamily\color{black}备注}
+
+%% Theorem environments
+\theoremstyle{basic}
+%<lebhart|lebhartfast>\CreateTheorem{theorem}<section>
+%<beaulivre|beaulivrefast>\CreateTheorem{theorem}<chapter>
+\CreateTheorem{lemma}[theorem]
+\CreateTheorem{proposition}[theorem]
+\CreateTheorem{corollary}[theorem]
+\CreateTheorem{fact}[theorem]
+%<lebhart|lebhartfast>\CreateTheorem{conjecture}<section>
+%<beaulivre|beaulivrefast>\CreateTheorem{conjecture}<chapter>
+\CreateTheorem*{theorem*}
+\CreateTheorem*{lemma*}
+\CreateTheorem*{proposition*}
+\CreateTheorem*{corollary*}
+\CreateTheorem*{fact*}
+\CreateTheorem*{conjecture*}
+\CreateTheorem{definition}[theorem]
+%<lebhart|lebhartfast>\CreateTheorem{example}<section>
+%<beaulivre|beaulivrefast>\CreateTheorem{example}<chapter>
+%<lebhart|lebhartfast>\CreateTheorem{problem}<section>
+%<beaulivre|beaulivrefast>\CreateTheorem{problem}<chapter>
+\CreateTheorem*{definition*}
+\CreateTheorem*{example*}
+\CreateTheorem*{problem*}
+
+\theoremstyle{emphasis}
+%<lebhart|lebhartfast>\CreateTheorem{remark}<section>
+%<beaulivre|beaulivrefast>\CreateTheorem{remark}<chapter>
+\CreateTheorem*{remark*}
+
+\RequirePackage{marginnote}
+\newcommand{\mparadjust}[1]{\renewcommand*{\marginnotevadjust}{#1}}
+\apptocmd{\remark}{\reversemarginpar\mparadjust{-.3em}\marginnote{\ideabulb[0.3]{orange}}\normalmarginpar}{}{\FAIL}
+\apptocmd{\conjecture}{\reversemarginpar\mparadjust{-.3em}\marginnote{\questionmark[0.3]{purple}}\normalmarginpar}{}{\FAIL}
+
+\RequirePackage{iftex}
+\ifXeTeX
+\def\pgfsys@hboxsynced#1{%
+{%
+ \pgfsys@beginscope%
+ \setbox\pgf@hbox=\hbox{%
+ \hskip\pgf@pt@x%
+ \raise\pgf@pt@y\hbox{%
+ \pgf@pt@x=0pt%
+ \pgf@pt@y=0pt%
+ \special{pdf: content q}%
+ \pgflowlevelsynccm%
+ \pgfsys@invoke{q -1 0 0 -1 0 0 cm}%
+ \special{pdf: content -1 0 0 -1 0 0 cm q}
+ % translate to original coordinate system
+ \pgfsys@invoke{0 J [] 0 d}% reset line cap and dash
+ \wd#1=0pt%
+ \ht#1=0pt%
+ \dp#1=0pt%
+ \box#1%
+ \pgfsys@invoke{n Q Q Q}%
+ }%
+ \hss%
+ }%
+ \wd\pgf@hbox=0pt%
+ \ht\pgf@hbox=0pt%
+ \dp\pgf@hbox=0pt%
+ \pgfsys@hbox\pgf@hbox%
+ \pgfsys@endscope%
+}}
+\fi
+
+\theoremstyle{simple}% as the default style for user-defined environments
+
+\RequirePackage[many]{tcolorbox}
+%<lebhartfast|beaulivrefast>\tcbstartdraftmode
+\tcolorboxenvironment{theorem}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ colframe=orange}
+\tcolorboxenvironment{theorem*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ colframe=orange}
+\tcolorboxenvironment{lemma}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ colframe=orange}
+\tcolorboxenvironment{lemma*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ colframe=orange}
+\tcolorboxenvironment{proposition}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ colframe=orange}
+\tcolorboxenvironment{proposition*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ colframe=orange}
+\tcolorboxenvironment{corollary}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ colframe=orange}
+\tcolorboxenvironment{corollary*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ colframe=orange}
+
+\tcolorboxenvironment{fact}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=gray!10!paper,
+ boxrule=0pt,frame hidden}
+\tcolorboxenvironment{fact*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=gray!10!paper,
+ boxrule=0pt,frame hidden}
+
+\tcolorboxenvironment{conjecture}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ colframe=purple}
+\tcolorboxenvironment{conjecture*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=black!3!paper,
+ colframe=purple}
+
+\tcolorboxenvironment{definition}
+ {enhanced jigsaw,pad at break*=1mm,breakable,
+ colback=lightorange!10!paper,boxrule=0pt,frame hidden,
+ borderline west={1.5mm}{-1mm}{forestgreen}}
+\tcolorboxenvironment{definition*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,
+ colback=lightorange!10!paper,boxrule=0pt,frame hidden,
+ borderline west={1.5mm}{-1mm}{forestgreen}}
+
+\tcolorboxenvironment{example}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=gray!10!paper,
+ boxrule=0pt,frame hidden}
+\tcolorboxenvironment{example*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=gray!10!paper,
+ boxrule=0pt,frame hidden}
+
+\tcolorboxenvironment{problem}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,
+ boxrule=0pt,frame hidden}
+\tcolorboxenvironment{problem*}
+ {enhanced jigsaw,pad at break*=1mm,breakable,colback=yellow!25!paper,
+ boxrule=0pt,frame hidden}
+
+%%================================
+%% Language configuration
+%%================================
+%<*lebhart|beaulivre>
+\PassOptionsToPackage{french,english}{babel}
+\RequirePackage{babel}
+\frenchsetup{PartNameFull=false}
+%</lebhart|beaulivre>
+%<*lebhartfast|beaulivrefast>
+\RequirePackage{polyglossia}
+\setdefaultlanguage{english}
+\setotherlanguage[frenchpart=false]{french}
+%</lebhartfast|beaulivrefast>
+
+\newcommand{\colorist@langconfig@chinese}{%
+ \def\abstractname{摘要}%
+ \def\proofname{证明}%
+ \def\contentsname{目录}%
+ \def\listfigurename{插图}%
+ \def\listtablename{表格}%
+ \def\figurename{图}%
+ \def\tablename{表}%
+ \def\indexname{索引}%
+ \def\appendixname{附录}%
+ \def\bibname{参考文献}%
+ \renewcommand{\languagename}{chinese}%
+}
+\newcommand{\colorist@langconfig@english}{%
+ \selectlanguage{english}%
+}
+\newcommand{\colorist@langconfig@french}{%
+ \selectlanguage{french}%
+% The line below is only needed for 'babel'
+%<lebhart|beaulivre> \def\frenchpartname{Partie}%
+}
+
+\newcommand{\UseLanguageCORE}[1]{%
+ \ifstrequal{#1}{chinese}{\colorist@langconfig@chinese}{}%
+ \ifstrequal{#1}{Chinese}{\colorist@langconfig@chinese}{}%
+ \ifstrequal{#1}{english}{\colorist@langconfig@english}{}%
+ \ifstrequal{#1}{English}{\colorist@langconfig@english}{}%
+ \ifstrequal{#1}{french}{\colorist@langconfig@french}{}
+ \ifstrequal{#1}{French}{\colorist@langconfig@french}{}
+}
+\newcommand{\UseLanguage}[1]{%
+ \ifx\@onlypreamble\@notprerr%
+ \UseLanguageCORE{#1}%
+ \else%
+ \AfterEndPreamble{\UseLanguageCORE{#1}}%
+ \fi%
+}
+
+%%================================
+%% Draft mark
+%%================================
+\def\dnfFont{\ttfamily}
+\def\needgraphFont{\ttfamily}
+
+\def\dnfTextEN{To be finished here}
+\def\needgraphTextEN{A graph is needed here}
+\def\dnfTextFR{À terminer ici}
+\def\needgraphTextFR{Il manque encore un graphique ici}
+\def\dnfTextCN{这里的内容尚未完成}
+\def\needgraphTextCN{这里需要一张图片}
+
+\definecolor{dnfColor}{RGB}{21,122,20}
+\definecolor{needgraphColor}{RGB}{70,130,180}
+
+%<*lebhart|beaulivre>
+\PassOptionsToPackage{many}{tcolorbox}
+\RequirePackage{tcolorbox}
+\newtcbox{\plainBox}[1][-paper]{enhanced jigsaw,%
+ on line, arc = 1.2pt, outer arc = 1pt,breakable,%
+ colframe = #1,colupper=#1,opacityback=0,%
+ boxsep = 1pt,boxrule = 1.2pt,%
+ left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,%
+}
+%</lebhart|beaulivre>
+%<*lebhartfast|beaulivrefast>
+\newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
+ \setlength{\fboxsep}{1.5pt}%
+ \setlength{\fboxrule}{1.2pt}%
+ \fbox{#2}}}
+%</lebhartfast|beaulivrefast>
+
+\NewDocumentCommand{\dnf}{d<>}{%
+ \noindent\plainBox[dnfColor]%
+ {\normalfont\dnfFont\small%
+ \csname dnfText\csname\languagename ABBR\endcsname\endcsname%
+ \IfNoValueF{#1}{ : #1}}%
+}
+\NewDocumentCommand{\needgraph}{d<>}{%
+ \par%
+ \centerline{\plainBox[needgraphColor]%
+ {\normalfont\needgraphFont\small%
+ \csname needgraphText\csname\languagename ABBR\endcsname\endcsname%
+ \IfNoValueF{#1}{ : #1}}}%
+ \par%
+}
+%<*lebhart|lebhartfast>
+
+%%================================
+%% Title block style
+%%================================
+\renewcommand{\@maketitle}{%
+ \noindent%
+ {\textcolor{gray!55!paper}{\rule{\textwidth}{0.75pt}}}%
+ \vspace{-\parskip}%
+ \begin{center}%
+ {\large\@title}\\\medskip%
+ \color{black!80!paper}%
+ {\scshape\@author}\\\smallskip%
+ {\@date}%
+ \end{center}%
+ \vspace{-\parskip}%
+ \vspace{-.5\baselineskip}%
+ {\textcolor{gray!55!paper}{\rule{\textwidth}{0.75pt}}\par}%
+}
+\apptocmd{\maketitle}{\thispagestyle{fancy}}{}{\FAIL}
+\apptocmd{\abstract}{\color{black!80!paper}}{}{\FAIL}
+%</lebhart|lebhartfast>
+
+\endinput \ No newline at end of file
diff --git a/macros/unicodetex/latex/colorist/colorist.ins b/macros/unicodetex/latex/colorist/colorist.ins
new file mode 100644
index 0000000000..e10923ac2d
--- /dev/null
+++ b/macros/unicodetex/latex/colorist/colorist.ins
@@ -0,0 +1,49 @@
+%%
+%% Copyright (C) 2021 by Jinwen XU
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+
+\usedir{tex/latex/colorist}
+
+\preamble
+
+Copyright (C) 2021 by Jinwen XU
+
+This is part of the colorist class series.
+
+\endpreamble
+
+\generate{\file{lebhart.cls}{\from{colorist.dtx}{lebhart}}}
+\generate{\file{lebhartfast.cls}{\from{colorist.dtx}{lebhartfast}}}
+\generate{\file{beaulivre.cls}{\from{colorist.dtx}{beaulivre}}}
+\generate{\file{beaulivrefast.cls}{\from{colorist.dtx}{beaulivrefast}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* files into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* lebhart.cls *}
+\Msg{* lebhartfast.cls *}
+\Msg{* beaulivre.cls *}
+\Msg{* beaulivrefast.cls *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
diff --git a/macros/unicodetex/latex/minimalist/LICENSE b/macros/unicodetex/latex/minimalist/LICENSE
new file mode 100644
index 0000000000..2244313901
--- /dev/null
+++ b/macros/unicodetex/latex/minimalist/LICENSE
@@ -0,0 +1,416 @@
+The LaTeX Project Public License
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+
+LPPL Version 1.3c 2008-05-04
+
+Copyright 1999 2002-2008 LaTeX3 Project
+ Everyone is allowed to distribute verbatim copies of this
+ license document, but modification of it is not allowed.
+
+
+PREAMBLE
+========
+
+The LaTeX Project Public License (LPPL) is the primary license under
+which the LaTeX kernel and the base LaTeX packages are distributed.
+
+You may use this license for any work of which you hold the copyright
+and which you wish to distribute. This license may be particularly
+suitable if your work is TeX-related (such as a LaTeX package), but
+it is written in such a way that you can use it even if your work is
+unrelated to TeX.
+
+The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE',
+below, gives instructions, examples, and recommendations for authors
+who are considering distributing their works under this license.
+
+This license gives conditions under which a work may be distributed
+and modified, as well as conditions under which modified versions of
+that work may be distributed.
+
+We, the LaTeX3 Project, believe that the conditions below give you
+the freedom to make and distribute modified versions of your work
+that conform with whatever technical specifications you wish while
+maintaining the availability, integrity, and reliability of
+that work. If you do not see how to achieve your goal while
+meeting these conditions, then read the document `cfgguide.tex'
+and `modguide.tex' in the base LaTeX distribution for suggestions.
+
+
+DEFINITIONS
+===========
+
+In this license document the following terms are used:
+
+ `Work'
+ Any work being distributed under this License.
+
+ `Derived Work'
+ Any work that under any applicable law is derived from the Work.
+
+ `Modification'
+ Any procedure that produces a Derived Work under any applicable
+ law -- for example, the production of a file containing an
+ original file associated with the Work or a significant portion of
+ such a file, either verbatim or with modifications and/or
+ translated into another language.
+
+ `Modify'
+ To apply any procedure that produces a Derived Work under any
+ applicable law.
+
+ `Distribution'
+ Making copies of the Work available from one person to another, in
+ whole or in part. Distribution includes (but is not limited to)
+ making any electronic components of the Work accessible by
+ file transfer protocols such as FTP or HTTP or by shared file
+ systems such as Sun's Network File System (NFS).
+
+ `Compiled Work'
+ A version of the Work that has been processed into a form where it
+ is directly usable on a computer system. This processing may
+ include using installation facilities provided by the Work,
+ transformations of the Work, copying of components of the Work, or
+ other activities. Note that modification of any installation
+ facilities provided by the Work constitutes modification of the Work.
+
+ `Current Maintainer'
+ A person or persons nominated as such within the Work. If there is
+ no such explicit nomination then it is the `Copyright Holder' under
+ any applicable law.
+
+ `Base Interpreter'
+ A program or process that is normally needed for running or
+ interpreting a part or the whole of the Work.
+
+ A Base Interpreter may depend on external components but these
+ are not considered part of the Base Interpreter provided that each
+ external component clearly identifies itself whenever it is used
+ interactively. Unless explicitly specified when applying the
+ license to the Work, the only applicable Base Interpreter is a
+ `LaTeX-Format' or in the case of files belonging to the
+ `LaTeX-format' a program implementing the `TeX language'.
+
+
+
+CONDITIONS ON DISTRIBUTION AND MODIFICATION
+===========================================
+
+1. Activities other than distribution and/or modification of the Work
+are not covered by this license; they are outside its scope. In
+particular, the act of running the Work is not restricted and no
+requirements are made concerning any offers of support for the Work.
+
+2. You may distribute a complete, unmodified copy of the Work as you
+received it. Distribution of only part of the Work is considered
+modification of the Work, and no right to distribute such a Derived
+Work may be assumed under the terms of this clause.
+
+3. You may distribute a Compiled Work that has been generated from a
+complete, unmodified copy of the Work as distributed under Clause 2
+above, as long as that Compiled Work is distributed in such a way that
+the recipients may install the Compiled Work on their system exactly
+as it would have been installed if they generated a Compiled Work
+directly from the Work.
+
+4. If you are the Current Maintainer of the Work, you may, without
+restriction, modify the Work, thus creating a Derived Work. You may
+also distribute the Derived Work without restriction, including
+Compiled Works generated from the Derived Work. Derived Works
+distributed in this manner by the Current Maintainer are considered to
+be updated versions of the Work.
+
+5. If you are not the Current Maintainer of the Work, you may modify
+your copy of the Work, thus creating a Derived Work based on the Work,
+and compile this Derived Work, thus creating a Compiled Work based on
+the Derived Work.
+
+6. If you are not the Current Maintainer of the Work, you may
+distribute a Derived Work provided the following conditions are met
+for every component of the Work unless that component clearly states
+in the copyright notice that it is exempt from that condition. Only
+the Current Maintainer is allowed to add such statements of exemption
+to a component of the Work.
+
+ a. If a component of this Derived Work can be a direct replacement
+ for a component of the Work when that component is used with the
+ Base Interpreter, then, wherever this component of the Work
+ identifies itself to the user when used interactively with that
+ Base Interpreter, the replacement component of this Derived Work
+ clearly and unambiguously identifies itself as a modified version
+ of this component to the user when used interactively with that
+ Base Interpreter.
+
+ b. Every component of the Derived Work contains prominent notices
+ detailing the nature of the changes to that component, or a
+ prominent reference to another file that is distributed as part
+ of the Derived Work and that contains a complete and accurate log
+ of the changes.
+
+ c. No information in the Derived Work implies that any persons,
+ including (but not limited to) the authors of the original version
+ of the Work, provide any support, including (but not limited to)
+ the reporting and handling of errors, to recipients of the
+ Derived Work unless those persons have stated explicitly that
+ they do provide such support for the Derived Work.
+
+ d. You distribute at least one of the following with the Derived Work:
+
+ 1. A complete, unmodified copy of the Work;
+ if your distribution of a modified component is made by
+ offering access to copy the modified component from a
+ designated place, then offering equivalent access to copy
+ the Work from the same or some similar place meets this
+ condition, even though third parties are not compelled to
+ copy the Work along with the modified component;
+
+ 2. Information that is sufficient to obtain a complete,
+ unmodified copy of the Work.
+
+7. If you are not the Current Maintainer of the Work, you may
+distribute a Compiled Work generated from a Derived Work, as long as
+the Derived Work is distributed to all recipients of the Compiled
+Work, and as long as the conditions of Clause 6, above, are met with
+regard to the Derived Work.
+
+8. The conditions above are not intended to prohibit, and hence do not
+apply to, the modification, by any method, of any component so that it
+becomes identical to an updated version of that component of the Work as
+it is distributed by the Current Maintainer under Clause 4, above.
+
+9. Distribution of the Work or any Derived Work in an alternative
+format, where the Work or that Derived Work (in whole or in part) is
+then produced by applying some process to that format, does not relax or
+nullify any sections of this license as they pertain to the results of
+applying that process.
+
+10. a. A Derived Work may be distributed under a different license
+ provided that license itself honors the conditions listed in
+ Clause 6 above, in regard to the Work, though it does not have
+ to honor the rest of the conditions in this license.
+
+ b. If a Derived Work is distributed under a different license, that
+ Derived Work must provide sufficient documentation as part of
+ itself to allow each recipient of that Derived Work to honor the
+ restrictions in Clause 6 above, concerning changes from the Work.
+
+11. This license places no restrictions on works that are unrelated to
+the Work, nor does this license place any restrictions on aggregating
+such works with the Work by any means.
+
+12. Nothing in this license is intended to, or may be used to, prevent
+complete compliance by all parties with all applicable laws.
+
+
+NO WARRANTY
+===========
+
+There is no warranty for the Work. Except when otherwise stated in
+writing, the Copyright Holder provides the Work `as is', without
+warranty of any kind, either expressed or implied, including, but not
+limited to, the implied warranties of merchantability and fitness for a
+particular purpose. The entire risk as to the quality and performance
+of the Work is with you. Should the Work prove defective, you assume
+the cost of all necessary servicing, repair, or correction.
+
+In no event unless required by applicable law or agreed to in writing
+will The Copyright Holder, or any author named in the components of the
+Work, or any other party who may distribute and/or modify the Work as
+permitted above, be liable to you for damages, including any general,
+special, incidental or consequential damages arising out of any use of
+the Work or out of inability to use the Work (including, but not limited
+to, loss of data, data being rendered inaccurate, or losses sustained by
+anyone as a result of any failure of the Work to operate with any other
+programs), even if the Copyright Holder or said author or said other
+party has been advised of the possibility of such damages.
+
+
+MAINTENANCE OF THE WORK
+=======================
+
+The Work has the status `author-maintained' if the Copyright Holder
+explicitly and prominently states near the primary copyright notice in
+the Work that the Work can only be maintained by the Copyright Holder
+or simply that it is `author-maintained'.
+
+The Work has the status `maintained' if there is a Current Maintainer
+who has indicated in the Work that they are willing to receive error
+reports for the Work (for example, by supplying a valid e-mail
+address). It is not required for the Current Maintainer to acknowledge
+or act upon these error reports.
+
+The Work changes from status `maintained' to `unmaintained' if there
+is no Current Maintainer, or the person stated to be Current
+Maintainer of the work cannot be reached through the indicated means
+of communication for a period of six months, and there are no other
+significant signs of active maintenance.
+
+You can become the Current Maintainer of the Work by agreement with
+any existing Current Maintainer to take over this role.
+
+If the Work is unmaintained, you can become the Current Maintainer of
+the Work through the following steps:
+
+ 1. Make a reasonable attempt to trace the Current Maintainer (and
+ the Copyright Holder, if the two differ) through the means of
+ an Internet or similar search.
+
+ 2. If this search is successful, then enquire whether the Work
+ is still maintained.
+
+ a. If it is being maintained, then ask the Current Maintainer
+ to update their communication data within one month.
+
+ b. If the search is unsuccessful or no action to resume active
+ maintenance is taken by the Current Maintainer, then announce
+ within the pertinent community your intention to take over
+ maintenance. (If the Work is a LaTeX work, this could be
+ done, for example, by posting to comp.text.tex.)
+
+ 3a. If the Current Maintainer is reachable and agrees to pass
+ maintenance of the Work to you, then this takes effect
+ immediately upon announcement.
+
+ b. If the Current Maintainer is not reachable and the Copyright
+ Holder agrees that maintenance of the Work be passed to you,
+ then this takes effect immediately upon announcement.
+
+ 4. If you make an `intention announcement' as described in 2b. above
+ and after three months your intention is challenged neither by
+ the Current Maintainer nor by the Copyright Holder nor by other
+ people, then you may arrange for the Work to be changed so as
+ to name you as the (new) Current Maintainer.
+
+ 5. If the previously unreachable Current Maintainer becomes
+ reachable once more within three months of a change completed
+ under the terms of 3b) or 4), then that Current Maintainer must
+ become or remain the Current Maintainer upon request provided
+ they then update their communication data within one month.
+
+A change in the Current Maintainer does not, of itself, alter the fact
+that the Work is distributed under the LPPL license.
+
+If you become the Current Maintainer of the Work, you should
+immediately provide, within the Work, a prominent and unambiguous
+statement of your status as Current Maintainer. You should also
+announce your new status to the same pertinent community as
+in 2b) above.
+
+
+WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE
+======================================================
+
+This section contains important instructions, examples, and
+recommendations for authors who are considering distributing their
+works under this license. These authors are addressed as `you' in
+this section.
+
+Choosing This License or Another License
+----------------------------------------
+
+If for any part of your work you want or need to use *distribution*
+conditions that differ significantly from those in this license, then
+do not refer to this license anywhere in your work but, instead,
+distribute your work under a different license. You may use the text
+of this license as a model for your own license, but your license
+should not refer to the LPPL or otherwise give the impression that
+your work is distributed under the LPPL.
+
+The document `modguide.tex' in the base LaTeX distribution explains
+the motivation behind the conditions of this license. It explains,
+for example, why distributing LaTeX under the GNU General Public
+License (GPL) was considered inappropriate. Even if your work is
+unrelated to LaTeX, the discussion in `modguide.tex' may still be
+relevant, and authors intending to distribute their works under any
+license are encouraged to read it.
+
+A Recommendation on Modification Without Distribution
+-----------------------------------------------------
+
+It is wise never to modify a component of the Work, even for your own
+personal use, without also meeting the above conditions for
+distributing the modified component. While you might intend that such
+modifications will never be distributed, often this will happen by
+accident -- you may forget that you have modified that component; or
+it may not occur to you when allowing others to access the modified
+version that you are thus distributing it and violating the conditions
+of this license in ways that could have legal implications and, worse,
+cause problems for the community. It is therefore usually in your
+best interest to keep your copy of the Work identical with the public
+one. Many works provide ways to control the behavior of that work
+without altering any of its licensed components.
+
+How to Use This License
+-----------------------
+
+To use this license, place in each of the components of your work both
+an explicit copyright notice including your name and the year the work
+was authored and/or last substantially modified. Include also a
+statement that the distribution and/or modification of that
+component is constrained by the conditions in this license.
+
+Here is an example of such a notice and statement:
+
+ %% pig.dtx
+ %% Copyright 2005 M. Y. Name
+ %
+ % This work may be distributed and/or modified under the
+ % conditions of the LaTeX Project Public License, either version 1.3
+ % of this license or (at your option) any later version.
+ % The latest version of this license is in
+ % http://www.latex-project.org/lppl.txt
+ % and version 1.3 or later is part of all distributions of LaTeX
+ % version 2005/12/01 or later.
+ %
+ % This work has the LPPL maintenance status `maintained'.
+ %
+ % The Current Maintainer of this work is M. Y. Name.
+ %
+ % This work consists of the files pig.dtx and pig.ins
+ % and the derived file pig.sty.
+
+Given such a notice and statement in a file, the conditions
+given in this license document would apply, with the `Work' referring
+to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being
+generated from `pig.dtx' using `pig.ins'), the `Base Interpreter'
+referring to any `LaTeX-Format', and both `Copyright Holder' and
+`Current Maintainer' referring to the person `M. Y. Name'.
+
+If you do not want the Maintenance section of LPPL to apply to your
+Work, change `maintained' above into `author-maintained'.
+However, we recommend that you use `maintained', as the Maintenance
+section was added in order to ensure that your Work remains useful to
+the community even when you can no longer maintain and support it
+yourself.
+
+Derived Works That Are Not Replacements
+---------------------------------------
+
+Several clauses of the LPPL specify means to provide reliability and
+stability for the user community. They therefore concern themselves
+with the case that a Derived Work is intended to be used as a
+(compatible or incompatible) replacement of the original Work. If
+this is not the case (e.g., if a few lines of code are reused for a
+completely different task), then clauses 6b and 6d shall not apply.
+
+
+Important Recommendations
+-------------------------
+
+ Defining What Constitutes the Work
+
+ The LPPL requires that distributions of the Work contain all the
+ files of the Work. It is therefore important that you provide a
+ way for the licensee to determine which files constitute the Work.
+ This could, for example, be achieved by explicitly listing all the
+ files of the Work near the copyright notice of each file or by
+ using a line such as:
+
+ % This work consists of all files listed in manifest.txt.
+
+ in that place. In the absence of an unequivocal list it might be
+ impossible for the licensee to determine what is considered by you
+ to comprise the Work and, in such a case, the licensee would be
+ entitled to make reasonable conjectures as to which files comprise
+ the Work.
+
diff --git a/macros/unicodetex/latex/minimalist/README.md b/macros/unicodetex/latex/minimalist/README.md
new file mode 100644
index 0000000000..ab20559465
--- /dev/null
+++ b/macros/unicodetex/latex/minimalist/README.md
@@ -0,0 +1,23 @@
+<!-- Copyright (C) 2021 by Jinwen XU -->
+
+[Github](https://github.com/Jinwen-XU/minimalist) | [CTAN](https://ctan.org/pkg/minimalist) | [Download](https://github.com/Jinwen-XU/minimalist/releases)
+
+![License](https://img.shields.io/ctan/l/minimalist.svg) ![CTAN Version](https://img.shields.io/ctan/v/minimalist.svg) ![Github Version](https://img.shields.io/github/release/Jinwen-XU/minimalist.svg) ![Repo Size](https://img.shields.io/github/repo-size/Jinwen-XU/minimalist.svg)
+
+---
+
+# The minimalist class series
+
+This is a series of classes to typeset articles or books, with a simple and
+clear design. It contains:
+- einfart.cls
+- einfartfast.cls
+- simplivre.cls
+- simplivrefast.cls
+
+They have native support to English, French and Chinese typesetting. And they
+may compile with either XeLaTeX or LuaLaTeX.
+
+# License
+
+This work is released under the LaTeX Project Public License, v1.3c or later.
diff --git a/macros/unicodetex/latex/minimalist/minimalist-doc-cn.pdf b/macros/unicodetex/latex/minimalist/minimalist-doc-cn.pdf
new file mode 100644
index 0000000000..c99b83da8d
--- /dev/null
+++ b/macros/unicodetex/latex/minimalist/minimalist-doc-cn.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/minimalist/minimalist-doc-cn.tex b/macros/unicodetex/latex/minimalist/minimalist-doc-cn.tex
new file mode 100644
index 0000000000..9590de69a1
--- /dev/null
+++ b/macros/unicodetex/latex/minimalist/minimalist-doc-cn.tex
@@ -0,0 +1,245 @@
+%! TEX program = xelatex
+\PassOptionsToPackage{dvipsnames}{xcolor}
+\documentclass{einfart}
+
+\linenumbers % 开启行号
+\UseLanguage{Chinese}
+
+%%================================
+%% TeX logo 与 网址
+%%================================
+\usepackage{hologo}
+\usepackage{url}
+
+%%================================
+%% 排版代码
+%%================================
+\usepackage{listings}
+\definecolor{lightergray}{gray}{0.99}
+\lstset{language=[LaTeX]TeX,
+ keywordstyle=\color{RoyalBlue},
+ basicstyle=\ttfamily,
+ commentstyle=\color{ForestGreen}\ttfamily,
+ stringstyle=\rmfamily,
+ showstringspaces=false,
+ breaklines=true,
+ frame=leftline,
+ backgroundcolor=\color{lightergray},
+ flexiblecolumns=true,
+ escapeinside={(*}{*)},
+ % numbers=left,
+ numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
+ firstnumber=last,
+}
+\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
+\lstset{morekeywords=%
+ {CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,
+ linenumbers,nolinenumbers,subsection,maketitle
+ }
+}
+\lstnewenvironment{code}%
+{\LocallyStopLineNumbers%
+\setkeys{lst}{columns=fullflexible,keepspaces=true}%
+}
+{\ResumeLineNumbers}
+
+\providecommand{\minimalist}{\textsf{minimalist}}
+\providecommand{\einfart}{\textsf{einfart}}
+\providecommand{\einfartfast}{\textsf{einfartfast}}
+\providecommand{\simplivre}{\textsf{simplivre}}
+\providecommand{\simplivrefast}{\textsf{simplivrefast}}
+
+%%================================
+%% 正文
+%%================================
+\begin{document}
+
+\title{\minimalist{},极简主义风格的文档类系列\thanks{对应版本. \texttt{\minimalist{} 2021/03/11}}}
+\author{锦文}
+\date{2021年3月,北京}
+
+\maketitle
+
+\begin{abstract}
+ \minimalist{}文档类系列包含用于排版文章的\einfart{}、用于排版书的\simplivre{},以及对应的两个“fast”版本。我设计这一系列的初衷是为了撰写草稿与笔记,使之看上去简朴但不简陋。
+
+ 这些文档类支持英文、法文、中文三种语言,并且同一篇文档中三种语言可以很好地协调。由于采用了自定义字体,需要采用 \hologo{XeLaTeX} 或 \hologo{LuaLaTeX} 进行编译。
+
+ 最后,这篇说明文档是用\einfart{}排版的,你可以把它看作一份简短的说明与演示。
+\end{abstract}
+
+\tableofcontents
+
+\section{关于这些文档类的名称与区别}
+\einfart{}取自于德文的einfach (“简约”),并取了artikel (“文章”)的前三个字母组合而成。
+
+\simplivre{}取自于法文的simple (“简约”),以及livre (“书”),由二者组合而成。
+
+\einfartfast{}与\simplivrefast{}是更快速但略微粗糙的\einfart{}与\simplivre{},主要区别是:
+\begin{itemize}
+ \item 使用较为简单的数学字体设置;
+ \item 不使用hyperref;
+ \item 不使用tikz;
+ \item 使用polyglossia而不是babel来支持多语言。(使用polyglossia编译速度会略有提高,但目前对于中文的兼容不太完善,在它更加稳定后,将会考虑全面切换到polyglossia)
+\end{itemize}
+
+在文章的撰写阶段,建议使用fast版本以加快编译速度,改善写作时的流畅程度。在最后,可以把fast标记去除,从而得到正式的版本。
+
+\section{一些使用说明}
+
+正文部分每段的开头没有缩进,但每两段之间会有半行左右的间距。就像这样——
+
+这里是下一个自然段。
+
+\subsection{定理,以及引用}
+
+定义、定理等环境已经被预定义,可以直接使用,例如:
+
+\begin{code}
+ \begin{definition}[奇异物品] \label{def: strange} ...
+\end{code}
+
+将会生成
+\begin{definition}[奇异物品]\label{def: strange}
+ 这是奇异物品的定义。
+\end{definition}
+
+定理类环境的前后有一行左右的间距。在定义结束的时候会有一个符号来标记。
+
+引用时,可以直接使用智能引用 \lstinline|\cref{标签名称}|,例如:\lstinline|\cref{def: strange}| 会显示为:\cref{def: strange}。
+
+\subsection{定义新的定理型环境}
+
+首先定义这个环境在所用语言下的名称 \lstinline|\(name of environment)(language name)|,其中 \\\lstinline|(language name)| 是 \lstinline|EN|、\lstinline|FR|、\lstinline|CN| 等,然后用下面四种方式之一定义这一环境:
+\begin{itemize}
+ \item \lstinline|\CreateTheorem*{(name of environment)}|
+ \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
+ \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
+ \item \lstinline|\CreateTheorem{(name of environment)}|
+\end{itemize}
+
+\def\proofideanameCN{思路}
+\CreateTheorem*{proofidea}
+
+例如,
+
+\begin{code}
+ \def\proofideanameCN{思路}
+ \CreateTheorem*{proofidea}
+\end{code}
+可以定义不编号的环境 \lstinline|proofidea|,它支持在中文环境中使用,效果如下所示:
+
+\begin{proofidea}
+ ...
+\end{proofidea}
+
+\subsection{未完成标记}
+
+你可以通过 \lstinline|\dnf| 来标记尚未完成的部分。例如:
+\begin{itemize}
+ \item \lstinline|\dnf|: \quad \dnf
+ \item \lstinline|\dnf<还需加入…>|: \quad \dnf<还需加入…>
+\end{itemize}
+
+类似的,还有 \lstinline|\needgraph| :
+\begin{itemize}
+ \item \lstinline|\needgraph|: \needgraph
+ \item \lstinline|\needgraph<关于…>|: \needgraph<关于…>
+\end{itemize}
+
+\subsection{语言设置}
+可以随时使用 \lstinline|\UseLanguage{语言名称}| 更改语言,语言名称包括Chinese、English、French(首字母大小写随意,例如chinese亦可)。这样,各种指令和环境的效果也会随之变动。
+
+例如,使用 \lstinline|\UseLanguage{English}| 后,定理与未完成标记会显示为:
+
+\UseLanguage{English}
+\begin{theorem}[Useless]\label{thm}
+ Some theorem in English. \dnf
+\end{theorem}
+
+引用时,定理的名称总是与定理所在区域的语言匹配,例如,开头的定义在现在的英文模式下依然显示为中文:\cref{def: strange}和\cref{thm}。
+
+\UseLanguage{Chinese}
+
+\subsection{关于行号}
+行号可以随时开启和关闭。\lstinline|\linenumbers| 用来开启行号,\lstinline|\nolinenumbers| 用来关闭行号。标题、目录、索引等位置为了美观,不进行编号。
+
+\subsection{关于标题中的脚注}
+在 \lstinline|\section| 或 \lstinline|\subsection| 中,如果想使用脚注,只能:
+\begin{itemize}
+ \item 先写 \lstinline|\mbox{\protect\footnotemark}|,
+ \item 再在后面用 \lstinline|\footnotetext{...}|。
+\end{itemize}
+这是标题使用下划线装饰之后带来的一个缺点。
+
+\subsection{关于字体}
+einfart与simplivre使用Palatino Linotype作为英文字体,方正悠宋、悠黑简体作为中文字体,并部分使用了Neo Euler作为数学字体:
+\begin{itemize}
+ \item English main font. \textsf{English sans serif font}.
+ \item 中文主要字体,\textsf{中文无衬线字体}
+ \item 数学示例: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+\end{itemize}
+
+其中,Neo Euler可以在 \url{https://github.com/khaledhosny/euler-otf} 下载。
+
+其他字体不是免费字体,需要自行购买使用(你可以在方正字库网站查询详细资料:\url{https://www.foundertype.com})。
+
+在没有安装相应的字体时,将采用TeXlive中自带的字体来代替,效果可能会有所折扣。
+
+\section{文档示例}
+
+\singlespacing
+
+\LocallyStopLineNumbers
+\begin{minipage}{0.4\textwidth}
+\begin{code}
+%! TEX program = xelatex
+\documentclass{einfartfast}
+
+\linenumbers
+\UseLanguage{French}
+
+\begin{document}
+
+\title{Titre}
+\author{Nom}
+\date{03 / 2021, Lieu}
+
+\maketitle
+
+%% Texte ici
+
+\end{document}
+\end{code}
+\end{minipage}
+%
+\hfill
+%
+\begin{minipage}{0.4\textwidth}
+\begin{code}
+%! TEX program = xelatex
+\documentclass{einfartfast}
+
+\linenumbers
+\UseLanguage{Chinese}
+
+\begin{document}
+
+\title{标题}
+\author{姓名}
+\date{2021年3月,地点}
+
+\maketitle
+
+%% 正文部分
+
+\end{document}
+\end{code}
+\end{minipage}
+\par
+\ResumeLineNumbers
+
+\bigskip
+(\lstinline|\UseLanguage| 既可以放在导言中,也可以放在正文部分,并且可以按照需要反复使用)
+
+\end{document}
diff --git a/macros/unicodetex/latex/minimalist/minimalist-doc-en.pdf b/macros/unicodetex/latex/minimalist/minimalist-doc-en.pdf
new file mode 100644
index 0000000000..16ce7d6d96
--- /dev/null
+++ b/macros/unicodetex/latex/minimalist/minimalist-doc-en.pdf
Binary files differ
diff --git a/macros/unicodetex/latex/minimalist/minimalist-doc-en.tex b/macros/unicodetex/latex/minimalist/minimalist-doc-en.tex
new file mode 100644
index 0000000000..219c749f09
--- /dev/null
+++ b/macros/unicodetex/latex/minimalist/minimalist-doc-en.tex
@@ -0,0 +1,242 @@
+%! TEX program = xelatex
+\PassOptionsToPackage{dvipsnames}{xcolor}
+\documentclass{einfart}
+
+\linenumbers % Enable line numbers
+
+%%================================
+%% TeX logo and URL
+%%================================
+\usepackage{hologo}
+\usepackage{url}
+
+%%================================
+%% For typestting code
+%%================================
+\usepackage{listings}
+\definecolor{lightergray}{gray}{0.99}
+\lstset{language=[LaTeX]TeX,
+ keywordstyle=\color{RoyalBlue},
+ basicstyle=\ttfamily,
+ commentstyle=\color{ForestGreen}\ttfamily,
+ stringstyle=\rmfamily,
+ showstringspaces=false,
+ breaklines=true,
+ frame=leftline,
+ backgroundcolor=\color{lightergray},
+ flexiblecolumns=true,
+ escapeinside={(*}{*)},
+ % numbers=left,
+ numberstyle=\scriptsize, stepnumber=1, numbersep=5pt,
+ firstnumber=last,
+}
+\providecommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$}
+\lstset{morekeywords=%
+ {CreateTheorem,proofideanameCN,cref,dnf,needgraph,UseLanguage,
+ linenumbers,nolinenumbers,subsection,maketitle
+ }
+}
+\lstnewenvironment{code}%
+{\LocallyStopLineNumbers%
+\setkeys{lst}{columns=fullflexible,keepspaces=true}%
+}
+{\ResumeLineNumbers}
+
+\providecommand{\minimalist}{\textsf{minimalist}}
+\providecommand{\einfart}{\textsf{einfart}}
+\providecommand{\einfartfast}{\textsf{einfartfast}}
+\providecommand{\simplivre}{\textsf{simplivre}}
+\providecommand{\simplivrefast}{\textsf{simplivrefast}}
+
+%%================================
+%% Main text
+%%================================
+\begin{document}
+
+\title{\minimalist{}, document-class series with simple and clear design\thanks{Corresponding to: \texttt{\minimalist{} 2021/03/11}}}
+\author{Jinwen}
+\date{March 2021, Beijing}
+
+\maketitle
+
+\begin{abstract}
+ The \minimalist{} class series includes \einfart{} for typesetting articles, \simplivre{} for typesetting books, and two corresponding ``fast'' versions. My original intention in designing this series was to write drafts and notes that look simple but not shabby.
+
+ These document-classes support three languages: English, French, and Chinese, and these three languages can be switched seamlessly in a single document. Due to the usage of custom fonts, they need to be compiled with \hologo{XeLaTeX} or \hologo{LuaLaTeX}.
+
+ Finally, this documentation is typeset using \einfart{}. You can think of it as a short introduction and demonstration.
+\end{abstract}
+
+\tableofcontents
+
+\section{On the naming and differences of these document-classes}
+\einfart{} is taken from German word ``einfach'' (``simple''), combined with the first three letters of ``artikel'' (``article'').
+
+\simplivre{} is taken from French words ``simple'' and ``livre'' (for ``book'').
+
+\einfartfast{} and \simplivrefast{} are faster but slightly rougher version of \einfart{} and \simplivre{}. The main differences are:
+\begin{itemize}
+ \item Use simpler math font configuration;
+ \item Do not use hyperref;
+ \item Do not use tikz;
+ \item Use polyglossia instead of babel to support multiple languages. (Using polyglossia will increase the compilation speed slightly, but the current compatibility with Chinese is not perfect. When it becomes more stable, I will consider fully switching to polyglossia)
+\end{itemize}
+
+During the writing stage of your document, it is recommended to use the ``fast'' version to speed up compilation and improve the smoothness of your writing experience. At the end, you can remove the ``fast'' mark to get the final version.
+
+\section{Some instructions}
+
+There is no indentation at the beginning of each paragraph, but there will be a half-line space between each two paragraphs. like this ---
+
+Here is the next paragraph.
+
+\subsection{Theorem and reference}
+
+Environments such as definitions and theorems have been pre-defined and can be used directly, for example:
+
+\begin{code}
+ \begin{definition}[Strange things] \label{def: strange} ...
+\end{code}
+
+will produce
+\begin{definition}[Strange things]\label{def: strange}
+ This is the definition of some strange objects.
+\end{definition}
+
+There is approximately an one-line space before and after the theorem environment. There will be a symbol to mark the end of the environment.
+
+When referencing, you can directly use clever reference \lstinline|\cref{(label name)}|. For example, \lstinline|\cref{def: strange}| will be displayed as: \cref{def: strange}.
+
+\subsection{Define a new theorem-like environment}
+
+First define the name of this environment in the language used: \lstinline|\(name of environment)(language name)|. Where \lstinline|(language name)| can be \lstinline|EN|, \lstinline|FR|, \lstinline|CN|, etc., and then define this environment in one of the following four ways:
+\begin{itemize}
+ \item \lstinline|\CreateTheorem*{(name of environment)}|
+ \item \lstinline|\CreateTheorem{(name of environment)}[(numbered like)]|
+ \item \lstinline|\CreateTheorem{(name of environment)}<(numbered within)>|
+ \item \lstinline|\CreateTheorem{(name of environment)}|
+\end{itemize}
+
+\def\proofideanameEN{Idea}
+\CreateTheorem*{proofidea}
+
+For example,
+\begin{code}
+ \def\proofideanameEN{Idea}
+ \CreateTheorem*{proofidea}
+\end{code}
+defines an unnumbered environment \lstinline|proofidea|, which supports using in the English context, and the effect is as follows:
+
+\begin{proofidea}
+ ...
+\end{proofidea}
+
+\subsection{Draft mark}
+
+You can use \lstinline|\dnf| to mark the unfinished part. For example:
+\begin{itemize}
+ \item \lstinline|\dnf|: \quad \dnf
+ \item \lstinline|\dnf<Still need ...>|: \quad \dnf<Still need ...>
+\end{itemize}
+
+Similarly, there is \lstinline|\needgraph| :
+\begin{itemize}
+ \item \lstinline|\needgraph|: \needgraph
+ \item \lstinline|\needgraph<About ...>|: \needgraph<About ...>
+\end{itemize}
+
+\subsection{Language configuration}
+You can use \lstinline|\UseLanguage{(name of language))}| at any time to change the language, Language names include Chinese, English, French (the case of the first letter is arbitrary, for example, ``chinese'' is also acceptable). With this, the effects of various commands and environments will also change accordingly.
+
+For example, after using \lstinline|\UseLanguage{French}|, the theorem and the draft mark will be displayed as:
+
+\UseLanguage{French}
+\begin{theorem}[Inutile]\label{thm}
+ Un théorem en Français. \dnf
+\end{theorem}
+
+When referenced, the name of the theorem always matches the language of the region in which the theorem is located, for example, the definition of the beginning is still displayed in English in the current French mode: \cref{def: strange} and \cref{thm}。
+
+\UseLanguage{English}
+
+\subsection{On the line numbers}
+Line numbers can be turned on and off at any time. \lstinline|\linenumbers| is used to enable the line numbers, and \lstinline|\nolinenumbers| is used to disable them. For the sake of beauty, the title, table of contents, index and some other elements are not numbered.
+
+\subsection{On the footnotes in the title}
+In \lstinline|\section| or \lstinline|\subsection| , if you wish to add footnotes, you can only:
+\begin{itemize}
+ \item first write \lstinline|\mbox{\protect\footnotemark}|,
+ \item then add \lstinline|\footnotetext{...}| afterwards。
+\end{itemize}
+This is a disadvantage brought about by the underline decoration of the title.
+
+\subsection{On the fonts}
+\einfart{} and \simplivre{} use Palatino Linotype as the English font, FounderType's YouSong and YouHei Simplified as the Chinese fonts, and partially use Neo Euler as the mathematical font:
+\begin{itemize}
+ \item English main font. \textsf{English sans serif font}.
+ \item 中文主要字体,\textsf{中文无衬线字体}
+ \item Math demonstration: \( \alpha, \beta, \gamma, \delta, 1,2,3,4, a,b,c,d \), \[\mathrm{li}(x)\coloneqq \int_2^{\infty} \frac{1}{\log t}\,\mathrm{d}t \]
+\end{itemize}
+
+Among them, Neo Euler can be downloaded at \url{https://github.com/khaledhosny/euler-otf}.
+
+Other fonts are not free, you need to purchase and use them on yourself (you can check the details on FounderType's website: \url{https://www.foundertype.com} ).
+
+When the corresponding font is not installed, the font that comes with TeXlive will be used instead, and the experience might be reduced.
+
+\section{Document templates}
+
+\singlespacing
+\LocallyStopLineNumbers
+\begin{minipage}{0.4\textwidth}
+\begin{code}
+%! TEX program = xelatex
+\documentclass{einfartfast}
+
+\linenumbers
+\UseLanguage{French}
+
+\begin{document}
+
+\title{Titre}
+\author{Nom}
+\date{03 / 2021, Lieu}
+
+\maketitle
+
+%% Texte ici
+
+\end{document}
+\end{code}
+\end{minipage}
+%
+\hfill
+%
+\begin{minipage}{0.4\textwidth}
+\begin{code}
+%! TEX program = xelatex
+\documentclass{einfartfast}
+
+\linenumbers
+\UseLanguage{Chinese}
+
+\begin{document}
+
+\title{标题}
+\author{姓名}
+\date{2021年3月,地点}
+
+\maketitle
+
+%% 正文部分
+
+\end{document}
+\end{code}
+\end{minipage}
+\par
+\ResumeLineNumbers
+
+\bigskip
+(\lstinline|\UseLanguage| can be placed either in the preamble or in the body part, and can be used repeatedly as needed)
+
+\end{document}
diff --git a/macros/unicodetex/latex/minimalist/minimalist.dtx b/macros/unicodetex/latex/minimalist/minimalist.dtx
new file mode 100644
index 0000000000..916fdd5aab
--- /dev/null
+++ b/macros/unicodetex/latex/minimalist/minimalist.dtx
@@ -0,0 +1,858 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2021 by Jinwen XU
+% -------------------------------
+%
+% This file may be distributed and/or modified under the conditions of the LaTeX
+% Project Public License, either version 1.3 of this license or (at your option)
+% any later version. The latest version of this license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3 or later is part of all distributions of LaTeX version
+% 2005/12/01 or later.
+%
+% \fi
+%
+%<*driver>
+\ProvidesFile{minimalist.dtx}
+%</driver>
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+%<*einfart>
+\ProvidesClass{einfart}
+ [2021/03/11 A simple and clear article style]
+%</einfart>
+%<*einfartfast>
+\ProvidesClass{einfartfast}
+ [2021/03/11 A faster but rougher version of einfart]
+%</einfartfast>
+%<*simplivre>
+\ProvidesClass{simplivre}
+ [2021/03/11 A simple and clear book style]
+%</simplivre>
+%<*simplivrefast>
+\ProvidesClass{simplivrefast}
+ [2021/03/11 A faster but rougher version of simplivre]
+%</simplivrefast>
+
+%<*einfart|einfartfast>
+\DeclareOption*{%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions\relax
+\LoadClass{article}
+%</einfart|einfartfast>
+%<*simplivre|simplivrefast>
+\DeclareOption*{%
+ \PassOptionsToClass{\CurrentOption}{book}}
+\ProcessOptions\relax
+\LoadClass{book}
+%</simplivre|simplivrefast>
+
+\RequirePackage{etoolbox}
+
+%%================================
+%% Fonts
+%%================================
+\RequirePackage{anyfontsize}
+
+%% Title fonts
+\newcommand{\partfont}{\sffamily}
+%<simplivre|simplivrefast>\newcommand{\chapfont}{\sffamily}
+\newcommand{\secfont}{}
+\newcommand{\subsecfont}{}
+%<*einfartfast|simplivrefast>
+
+%% Math fonts
+\RequirePackage{mathpazo}
+%</einfartfast|simplivrefast>
+
+%% English fonts
+\PassOptionsToPackage{no-math}{fontspec}
+\RequirePackage{fontspec}
+\IfFontExistsTF{Palatino Linotype}{%
+ \setmainfont{Palatino Linotype}
+}{
+ \setmainfont{texgyrepagella-regular.otf}[
+ BoldFont = texgyrepagella-bold.otf ,
+ ItalicFont = texgyrepagella-italic.otf ,
+ BoldItalicFont = texgyrepagella-bolditalic.otf ]
+}
+ \setsansfont{SourceSansPro-Regular.otf}[
+ Scale = MatchLowercase,
+ BoldFont = SourceSansPro-Bold.otf ,
+ ItalicFont = SourceSansPro-RegularIt.otf ,
+ BoldItalicFont = SourceSansPro-BoldIt.otf ]
+
+%% Chinese fonts
+\PassOptionsToPackage{fontset=none,scheme=plain}{ctex}
+\RequirePackage{ctex}
+\IfFontExistsTF{FZYouSongS 507R}{%
+ \setCJKmainfont{FZYouSongS 507R}[
+ BoldFont = FZYouSongS 509R ,
+ BoldFeatures = {FakeBold=2} ,
+ ItalicFont = * ,
+ BoldItalicFont = FZYouSongS 509R ,
+ BoldItalicFeatures = {FakeBold=2} ,
+ SmallCapsFont = * ]
+}{
+ \setCJKmainfont{FandolSong-Regular.otf}[
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = {FakeBold=4} ,
+ SmallCapsFont = * ]
+}
+\IfFontExistsTF{FZYouSongS 507R}{%
+ \setCJKmonofont{FZYouSongS 507R}[
+ BoldFont = FZYouSongS 509R ,
+ BoldFeatures = {FakeBold=2} ,
+ ItalicFont = * ,
+ BoldItalicFont = FZYouSongS 509R ,
+ BoldItalicFeatures = {FakeBold=2} ,
+ SmallCapsFont = * ]
+}{
+ \setCJKmonofont{FandolFang-Regular.otf}[
+ BoldFont = * ,
+ BoldFeatures = {FakeBold=4} ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = {FakeBold=4} ,
+ SmallCapsFont = * ]
+}
+\IfFontExistsTF{FZYouHeiS 506L}{%
+ \setCJKsansfont{FZYouHeiS 506L}[
+ BoldFont = FZYouHeiS 509R,
+ ItalicFont = * ,
+ BoldItalicFont = FZYouHeiS 509R ,
+ SmallCapsFont = * ]
+}{
+ \setCJKsansfont{FandolHei-Regular.otf}[
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ SmallCapsFont = * ]
+}
+%<*einfart|simplivre>
+
+%% Math fonts
+\PassOptionsToPackage
+ {warnings-off={mathtools-colon,mathtools-overbracket}}{unicode-math}
+\RequirePackage{unicode-math}
+\unimathsetup{math-style=ISO}
+\setmathfont{Asana-Math.otf}
+\IfFontExistsTF{Neo Euler}{%
+\setmathfont{Neo Euler} % From https://tex.stackexchange.com/a/425887
+ [range={"0000-"0001,"0020-"007E,
+ "00A0,"00A7-"00A8,"00AC,"00AF,"00B1,"00B4-"00B5,"00B7,
+ "00D7,"00F7,
+ "0131,
+ "0237,"02C6-"02C7,"02D8-"02DA,"02DC,
+ "0300-"030C,"030F,"0311,"0323-"0325,"032E-"0332,"0338,
+ "0391-"0393,"0395-"03A1,"03A3-"03A8,"03B1-"03BB,
+ "03BD-"03C1,"03C3-"03C9,"03D1,"03D5-"03D6,"03F5,
+ "2016,"2018-"2019,"2021,"2026-"202C,"2032-"2037,"2044,
+ "2057,"20D6-"20D7,"20DB-"20DD,"20E1,"20EE-"20EF,
+ "210B-"210C,"210E-"2113,"2118,"211B-"211C,"2126-"2128,
+ "212C-"212D,"2130-"2131,"2133,"2135,"2190-"2199,
+ "21A4,"21A6,"21A9-"21AA,"21BC-"21CC,"21D0-"21D5,
+ "2200,"2202-"2209,"220B-"220C,"220F-"2213,"2215-"221E,
+ "2223,"2225,"2227-"222E,"2234-"2235,"2237-"223D,
+ "2240-"224C,"2260-"2269,"226E-"2279,"2282-"228B,"228E,
+ "2291-"2292,"2295-"2299,"22A2-"22A5,"22C0-"22C5,
+ "22DC-"22DD,"22EF,"22F0-"22F1,
+ "2308-"230B,"2320-"2321,"2329-"232A,"239B-"23AE,
+ "23DC-"23DF,
+ "27E8-"27E9,"27F5-"27FE,"2A0C,"2B1A,
+ "1D400-"1D433,"1D49C,"1D49E-"1D49F,"1D4A2,"1D4A5-"1D4A6,
+ "1D4A9-"1D4AC,"1D4AE-"1D4B5,"1D4D0-"1D4E9,"1D504-"1D505,
+ "1D507-"1D50A,"1D50D-"1D514,"1D516-"1D51C,"1D51E-"1D537,
+ "1D56C-"1D59F,"1D6A8-"1D6B8,"1D6BA-"1D6D2,"1D6D4-"1D6DD,
+ "1D6DF,"1D6E1,"1D7CE-"1D7D7 }]
+}{}
+%</einfart|simplivre>
+
+\RequirePackage[verbose=silent]{microtype}
+
+%%================================
+%% Page layout
+%%================================
+\RequirePackage[heightrounded]{geometry}
+\geometry{
+ papersize={7in,10in},
+ total={40em,60em},
+ hmarginratio=1:1,
+ vmarginratio=1:1,
+ footnotesep=2em plus 2pt minus 2pt,
+}
+
+\RequirePackage{xcolor}
+\definecolor{paper}{RGB}{255,255,255}
+%<*simplivre>
+
+\RequirePackage{tikz}
+\usetikzlibrary{calc,shadings}
+\RequirePackage{tikzpagenodes}% For `current page text area`
+\newcommand{\drawHelpLine}{%
+ \begin{tikzpicture}[remember picture,overlay]
+ \foreach\i in {0,1,...,5}{%
+ \fill[opacity=0.12-0.02*\i]
+ ($(current page text area.north east)
+ +(-\i*0.5em-.025em,-10pt+\i*1.1pt)$)
+ rectangle ($(current page text area.south east)
+ +(-\i*0.5em+.025em,10pt-\i*1.1pt)$);
+ \shade[top color=paper,bottom color=black,opacity=0.12-0.02*\i]
+ ($(current page text area.north east)
+ +(-\i*0.5em-.025em,2pt)$)
+ rectangle ($(current page text area.north east)
+ +(-\i*0.5em+.025em,-10pt+\i*1.1pt)$);
+ \shade[top color=black,bottom color=paper,opacity=0.12-0.02*\i]
+ ($(current page text area.south east)
+ +(-\i*0.5em-.025em,-2pt)$)
+ rectangle ($(current page text area.south east)
+ +(-\i*0.5em+.025em,10pt-\i*1.1pt)$);
+ }
+ \end{tikzpicture}%
+}
+%</simplivre>
+%<*simplivrefast>
+
+\newcommand{\drawHelpLine}{}
+%</simplivrefast>
+
+\RequirePackage{fancyhdr}
+\RequirePackage{extramarks}
+\fancypagestyle{fancy}{
+ \fancyhf{}
+ \if@twoside
+ \fancyfoot[RO]{\small\textcolor{black!30!paper}{\lastrightmark}%
+ ~~\rlap{\textcolor{gray!55!paper}{$|$}~~\thepage}}
+ \fancyfoot[LE]{\small\leavevmode\llap{\thepage%
+ ~~\textcolor{gray!55!paper}{$|$}}%
+ ~~\textcolor{black!30!paper}{\lastleftmark}}
+ \else
+ \fancyfoot[R]{\small\textcolor{black!30!paper}{\lastrightmark}%
+ ~~\rlap{\textcolor{gray!55!paper}{$|$}~~\thepage}}
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+}
+\pagestyle{fancy}
+
+\fancypagestyle{plain}{
+ \fancyhf{}
+ \if@twoside
+ \fancyfoot[RO]{\small%
+ ~\rlap{\textcolor{gray!55!paper}{$|$}~~\thepage}}
+ \fancyfoot[LE]{\small\leavevmode\llap{\thepage%
+ ~~\textcolor{gray!55!paper}{$|$}}}
+ \else
+ \fancyfoot[R]{\small%
+ ~\rlap{\textcolor{gray!55!paper}{$|$}~~\thepage}}
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+}
+
+%<*einfart|einfartfast>
+\if@twoside
+ \renewcommand*{\sectionmark}[1]{\markboth{\uppercase{#1}}{}}
+\else
+ \renewcommand*{\sectionmark}[1]{\markboth{\uppercase{#1}}{\uppercase{#1}}}
+\fi
+%</einfart|einfartfast>
+%<*simplivre|simplivrefast>
+\if@twoside
+ \renewcommand{\chaptermark}[1]{\markboth{\uppercase{#1}}{}}
+\else
+ \renewcommand{\chaptermark}[1]{\markboth{\uppercase{#1}}{\uppercase{#1}}}
+\fi
+\renewcommand*{\sectionmark}[1]{%
+ \markright{\raisebox{.03em}{\footnotesize/}%
+ ~\thesection~\raisebox{.03em}{\footnotesize/}~~~#1}}
+
+\fancypagestyle{part}{
+ \fancyhf{}
+ \renewcommand{\headrulewidth}{0pt}
+ \fancyhead[C]{\drawHelpLine}
+}
+
+\addtolength{\headheight}{20pt}
+\addtolength{\topmargin}{-20pt}
+%</simplivre|simplivrefast>
+
+%%================================
+%% Line spacing
+%%================================
+\RequirePackage{setspace}
+\onehalfspacing
+% To avoid `Underfull \vbox (badness 10000)`
+\raggedbottom
+
+\AtEndPreamble{\RequirePackage{parskip}}
+
+%%================================
+%% Line numbers
+%%================================
+\PassOptionsToPackage{pagewise,mathlines}{lineno}
+\RequirePackage{lineno}
+\renewcommand\linenumberfont{\ttfamily\color{gray!15!paper}\footnotesize}
+\setlength\linenumbersep{1em}
+
+\RequirePackage{mathtools}
+
+%% From https://tex.stackexchange.com/a/461192
+% Patch 'normal' math environments:
+\newcommand*\linenomathpatch[1]{%
+ \cspreto{#1}{\linenomath}%
+ \cspreto{#1*}{\linenomath}%
+ \cspreto{end#1}{\endlinenomath}%
+ \cspreto{end#1*}{\endlinenomath}%
+}
+% Patch AMS math environments:
+\newcommand*\linenomathpatchAMS[1]{%
+ \cspreto{#1}{\linenomathAMS}%
+ \cspreto{#1*}{\linenomathAMS}%
+ \csappto{end#1}{\endlinenomath}%
+ \csappto{end#1*}{\endlinenomath}%
+}
+% Define \linenomathAMS depending on whether 'mathlines' option is provided
+\expandafter\ifx\linenomath\linenomathWithnumbers
+ \let\linenomathAMS\linenomathWithnumbers
+% The following line gets rid of an extra line numbers at the bottom:
+ \patchcmd\linenomathAMS{\advance\postdisplaypenalty\linenopenalty}{}{}{}
+\else
+ \let\linenomathAMS\linenomathNonumbers
+\fi
+
+\linenomathpatch{equation}
+\linenomathpatchAMS{gather}
+\linenomathpatchAMS{multline}
+\linenomathpatchAMS{align}
+\linenomathpatchAMS{alignat}
+\linenomathpatchAMS{flalign}
+
+% record whether linenumber has turned on
+\newif\ifLNturnsON
+\def\LocallyStopLineNumbers{\LNturnsONfalse%
+ \ifLineNumbers\LNturnsONtrue\fi\nolinenumbers}
+\def\ResumeLineNumbers{\ifLNturnsON\linenumbers\fi}
+% switch off the line numbers of TOC
+\pretocmd{\tableofcontents}{\LocallyStopLineNumbers}{}{\FAIL}
+\apptocmd{\tableofcontents}{\ResumeLineNumbers}{}{\FAIL}
+% switch off the line numbers of bibliography
+\pretocmd{\thebibliography}{\LocallyStopLineNumbers}{}{\FAIL}
+\apptocmd{\endthebibliography}{\ResumeLineNumbers}{}{\FAIL}
+
+
+%%================================
+%% Title format
+%%================================
+\RequirePackage[explicit,newparttoc]{titlesec}
+\PassOptionsToPackage{normalem}{ulem}
+\RequirePackage{ulem}
+
+%<*einfart|einfartfast>
+%% Part
+\titleformat{\part}[display]
+ {\LocallyStopLineNumbers%
+ \partfont\filleft}
+ {\MakeUppercase{\partname~\protect\thepart}}
+ {.3em}
+ {\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+\titleformat{name=\part,numberless}[display]
+ {\LocallyStopLineNumbers%
+ % \phantomsection\addcontentsline{toc}{part}{#1}%
+ \partfont\filleft}
+ {\phantom{\MakeUppercase{\partname}}}
+ {.3em}
+ {\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+%% Text after part
+\newcommand{\parttext}[1]{%
+ \LocallyStopLineNumbers%
+ \begin{flushright}%
+ \begin{minipage}{0.833\textwidth}%
+ \color{black!80!paper}\raggedleft#1%
+ \end{minipage}%
+ \end{flushright}%
+ \ResumeLineNumbers%
+}
+%</einfart|einfartfast>
+%<*simplivre|simplivrefast>
+%% Part
+\titleclass{\part}{top} % make part like a chapter
+\titleformat{\part}[display]
+ {\thispagestyle{part}%
+ \LocallyStopLineNumbers%
+ \partfont\filleft}
+ {\MakeUppercase{\partname~\protect\thepart}}
+ {1em}
+ {\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+\titleformat{name=\part,numberless}[display]
+ {\thispagestyle{part}%
+ \LocallyStopLineNumbers%
+ % \phantomsection\addcontentsline{toc}{part}{#1}%
+ \partfont\filleft}
+ {\phantom{\MakeUppercase{\partname}}}
+ {1em}
+ {\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+\titlespacing*{\part}{0pt}{5em}{6em}
+%% Text after part
+\newcommand{\parttext}[1]{%
+\vfill%
+\LocallyStopLineNumbers%
+\begin{flushright}%
+ \begin{minipage}{0.833\textwidth}%
+ \color{black!80!paper}\raggedleft#1%
+ \end{minipage}%
+\end{flushright}%
+\ResumeLineNumbers%
+\vfill\vfill%
+\cleardoublepage%
+}
+
+%% Chapter
+\titleformat{\chapter}
+ {\thispagestyle{fancy}%
+ \LocallyStopLineNumbers%
+ \color{black!80!paper}\chapfont\fontsize{16}{0}\selectfont}{}{0em}
+ {\rlap{\hspace*{-.5em}{\color{gray!25!paper}%
+ \fontsize{80}{0}\selectfont\raisebox{-7pt}{\thechapter}}}#1}
+ [\ResumeLineNumbers]
+\titleformat{name=\chapter,numberless}
+ {\thispagestyle{fancy}%
+ \LocallyStopLineNumbers%
+ % \phantomsection\addcontentsline{toc}{chapter}{#1}%
+ \color{black!80!paper}\chapfont\fontsize{16}{0}\selectfont}{}{0em}
+ {\rlap{\hspace*{-.5em}{\color{gray!25!paper}%
+ \fontsize{80}{0}\selectfont\normalfont\raisebox{-7pt}{*}}}#1}
+ [\ResumeLineNumbers]
+%</simplivre|simplivrefast>
+
+%% Section
+\newcommand\seculine{\bgroup\markoverwith{\color{gray!55!paper}%
+ \rule[-0.9ex]{2pt}{.6pt}\hspace{-2pt}\rule[-1.2ex]{2pt}{.6pt}}\ULon}
+\renewcommand\thesection{\arabic{section}}
+\titleformat{\section}
+ {\LocallyStopLineNumbers%
+ \secfont\centering}{}{0em}
+ {{\small\textcolor{gray!55!paper}{\raisebox{.03em}{\footnotesize/}}%
+ \,\,\textcolor{black!80!paper}{\arabic{section}}%
+ \,\,\textcolor{gray!55!paper}{\raisebox{.03em}{\footnotesize/}}}\\
+ \seculine{#1}}
+ [\ResumeLineNumbers]
+\titleformat{name=\section,numberless}
+ {\LocallyStopLineNumbers%
+ % \phantomsection\addcontentsline{toc}{section}{#1}%
+ \secfont\centering}{}{0em}
+ {\seculine{#1}}
+ [\ResumeLineNumbers]
+
+%% Subsection
+\newcommand\subseculine{\bgroup\markoverwith{\color{gray!55!paper}%
+ \rule[-1ex]{2pt}{.75pt}}\ULon}
+\renewcommand\thesubsection{%
+ \ifnum\c@section=0\else\arabic{section}.\fi\arabic{subsection}}
+\titleformat{\subsection}
+ {\LocallyStopLineNumbers%
+ \subsecfont}{}{0em}
+ {\subseculine{\thesubsection~\textcolor{gray!55!paper}{$|$}~#1}}
+ [\ResumeLineNumbers]
+\titleformat{name=\subsection,numberless}
+ {\LocallyStopLineNumbers%
+ \subsecfont}{}{0em}
+ {\subseculine{#1}}
+ [\ResumeLineNumbers]
+
+%%================================
+%% TOC format
+%%================================
+\RequirePackage{titletoc}
+\titlecontents{part}
+ [0em]
+ {\addvspace{1.5pc}\filcenter\partfont}
+ {\thecontentslabel\\\uppercase}
+ {}
+ {} % without page number
+ [\addvspace{.5pc}]
+%<*einfart|einfartfast>
+\titlecontents{section}
+ [2em] % i.e., 0em (part) + 2em
+ {\secfont}
+ {\contentslabel{1.75em}}
+ {\hspace*{-1.75em}}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+\titlecontents{subsection}
+ [5em] % i.e., 2em (section) + 3em
+ {\subsecfont}
+ {\contentslabel{2.75em}}
+ {\hspace*{-2.75em}}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+%</einfart|einfartfast>
+%<*simplivre|simplivrefast>
+\titlecontents{chapter}
+ [2em] % i.e., 0em (part) + 2em
+ {\addvspace{.5pc}\chapfont}
+ {\contentslabel{2em}}
+ {\hspace*{-2em}}
+ {\normalfont\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+\titlecontents{section}
+ [4em] % i.e., 2em (chapter) + 2em
+ {\secfont}
+ {\contentslabel{1.75em}}
+ {\hspace*{-1.75em}}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+\titlecontents{subsection}
+ [7em] % i.e., 4em (section) + 3em
+ {\subsecfont}
+ {\contentslabel{2.75em}}
+ {\hspace*{-2.75em}}
+ {\titlerule*[1em]{\textcolor{gray!30!paper}{.}}\contentspage}
+%</simplivre|simplivrefast>
+
+%%================================
+%% Graphics
+%%================================
+\RequirePackage{graphicx}
+\graphicspath{{images/}}
+\RequirePackage{wrapfig}
+\RequirePackage{caption}
+
+%%================================
+%% Lists
+%%================================
+\RequirePackage{enumitem}
+\setlist{noitemsep,leftmargin=2em}
+\renewcommand\labelitemi{\color{gray!50}$\bullet$}
+
+%%================================
+%% Blank page
+%%================================
+\newcommand{\blinkpagetext}{This page is intentionally left blank}
+\renewcommand{\cleardoublepage}{\relax
+ \clearpage
+ \if@twoside\ifodd\c@page\relax\else
+ \thispagestyle{empty}
+ \newgeometry{centering}
+ \null\vfill
+ \centerline{\large\color{gray!20!paper}\blinkpagetext}
+ \vfill\restoregeometry\newpage\fi\fi}
+
+%%================================
+%% Index
+%%================================
+\RequirePackage{imakeidx}
+% switch off the line numbers of index
+\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{\FAIL}
+\apptocmd{\printindex}{\ResumeLineNumbers}{}{\FAIL}
+
+%%================================
+%% Theorems
+%%================================
+\RequirePackage{amsthm}
+\newtheoremstyle{simple}%
+ {}{}%
+ {\normalfont}{}%
+ {\normalfont}{}%
+ {0pt}%
+ {\thmname{\textsc{#1}}\thmnumber{ #2}\hspace{.4em}%
+ \textcolor{gray!55!paper}{$|$}\hspace{.4em}%
+ \color{gray}\thmnote{\ensuremath{(\text{#3})}~~}\pushQED{\qed}}
+\def\@endtheorem{\popQED\endtrivlist\@endpefalse }
+
+\renewcommand{\qedsymbol}{%
+ \makebox[1em]{\color{gray!55!paper}\rule[-0.1em]{.95em}{.95em}}}
+
+%<einfart|simplivre>\PassOptionsToPackage{hidelinks,linktoc=all}{hyperref}
+\RequirePackage{aliascnt}
+% To solve `Difference between bookmark levels is greater than one`
+%<einfart|simplivre>\RequirePackage{bookmark}
+%<einfart|simplivre>\RequirePackage{hyperref}
+\PassOptionsToPackage{nameinlink}{cleveref}
+\RequirePackage{cleveref}
+\crefdefaultlabelformat{#2#1#3~\aftergroup\ignorespaces}
+
+\newcommand\englishABBR{EN}
+\newcommand\frenchABBR{FR}
+\newcommand\chineseABBR{CN}
+
+%% Macro for creating theorems
+\RequirePackage{xstring}
+\newcommand\PassFirstToSecond[2]{#2{#1}}%
+\NewDocumentCommand{\CreateTheorem}{sm}{%
+ \begingroup
+ \protected@edef\temp{#2}%
+ \expandafter\IfEndWith\expandafter{\temp}{*}{%
+ \expandafter\StrGobbleRight\expandafter{\temp}{1}[\temp]%
+ \PassFirstToSecond{*}%
+ }{%
+ \PassFirstToSecond{}%
+ }%
+ {\expandafter\PassFirstToSecond%
+ \expandafter{\temp}{\endgroup\InnerCreateTheorem{#1}}}%
+}%
+\NewDocumentCommand{\InnerCreateTheorem}{mmmod<>}{%
+ % #1 = star or no star
+ % #2 = name of environment
+ % #3 = emptiness or star to append to name of environment
+ % #4 = numbered like
+ % #5 = numbered within
+ \IfBooleanTF{#1}{%
+ \IfValueTF{#4}
+ {\@firstoftwo}
+ {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}%
+ }{%
+ \IfValueTF{#4}
+ {\IfValueTF{#5}{\@firstoftwo}{\@secondoftwo}}{
+ \@secondoftwo}
+ }%
+ {%
+ \GenericError{}%
+ {\string\CreateTheorem\space syntax error\on@line}{%
+ You cannot call the starred variant with optional argument,\MessageBreak
+ nor call the unstarred variant with several optional arguments.}%
+ {}%
+ }{%
+ \IfBooleanTF{#1}{%
+ \newtheorem*{#2EN#3}{\csname#2nameEN\endcsname}
+ \newtheorem*{#2FR#3}{\csname#2nameFR\endcsname}
+ \newtheorem*{#2CN#3}{\csname#2nameCN\endcsname}
+ }{%
+ \IfValueTF{#5}{%
+ \newcounter{#2#3}[{#5}]%
+ \expandafter\renewcommand\expandafter*%
+ \csname the#2#3\expandafter\endcsname%
+ \expandafter{\csname the#5\endcsname.\arabic{#2#3}}%
+ }{%
+ \IfValueTF{#4}
+ {\newaliascnt{#2#3}{#4}}
+ {\newcounter{#2#3}}%
+ }%
+ %-------------------------------------------------------------------
+ \CreateTheoremNumberedLikeAliasCounter{#2}{EN}{#3}%
+ \CreateTheoremNumberedLikeAliasCounter{#2}{FR}{#3}%
+ \CreateTheoremNumberedLikeAliasCounter{#2}{CN}{#3}%
+ %-------------------------------------------------------------------
+ }%
+ \NewDocumentEnvironment{#2#3}{}
+ {\csname#2\csname\languagename ABBR\endcsname#3\endcsname}%
+ {\csname end#2\csname\languagename ABBR\endcsname#3\endcsname}%
+ }%
+}%
+\NewDocumentCommand{\CreateTheoremNumberedLikeAliasCounter}{mmm}{%
+ \newaliascnt{#1#2#3}{#1#3}%
+ \newtheorem{#1#2#3}[{#1#2#3}]{\csname#1name#2\endcsname}%
+ \aliascntresetthe{#1#2#3}%
+ \crefname{#1#2#3}%
+ {\csname#1name#2\endcsname}%
+ {\csname#1name#2\endcsname}%
+}%
+
+%% English theorems names
+\def\theoremnameEN{\unskip~\textsc{Theorem}}
+\def\lemmanameEN{\unskip~\textsc{Lemma}}
+\def\propositionnameEN{\unskip~\textsc{Proposition}}
+\def\corollarynameEN{\unskip~\textsc{Corollary}}
+\def\factnameEN{\unskip~\textsc{Fact}}
+\def\conjecturenameEN{\unskip~\textsc{Conjecture}}
+\def\definitionnameEN{\unskip~\textsc{Definition}}
+\def\examplenameEN{\unskip~\textsc{Example}}
+\def\problemnameEN{\unskip~\textsc{Problem}}
+\def\remarknameEN{\unskip~\textsc{Remark}}
+
+%% French theorems names
+\def\theoremnameFR{\unskip~\textsc{Théorème}}
+\def\lemmanameFR{\unskip~\textsc{Lemme}}
+\def\propositionnameFR{\unskip~\textsc{Proposition}}
+\def\corollarynameFR{\unskip~\textsc{Corollaire}}
+\def\factnameFR{\unskip~\textsc{Fait}}
+\def\conjecturenameFR{\unskip~\textsc{Conjecture}}
+\def\definitionnameFR{\unskip~\textsc{Définition}}
+\def\examplenameFR{\unskip~\textsc{Exemple}}
+\def\problemnameFR{\unskip~\textsc{Problème}}
+\def\remarknameFR{\unskip~\textsc{Remarque}}
+
+%% Chinese theorems names
+\def\theoremnameCN{定理}
+\def\lemmanameCN{引理}
+\def\propositionnameCN{命题}
+\def\corollarynameCN{推论}
+\def\factnameCN{事实}
+\def\conjecturenameCN{猜想}
+\def\definitionnameCN{定义}
+\def\examplenameCN{例}
+\def\problemnameCN{问题}
+\def\remarknameCN{备注}
+
+%% Theorem environments
+\theoremstyle{simple}
+%<einfart|einfartfast>\CreateTheorem{theorem}<section>
+%<simplivre|simplivrefast>\CreateTheorem{theorem}<chapter>
+\CreateTheorem{lemma}[theorem]
+\CreateTheorem{proposition}[theorem]
+\CreateTheorem{corollary}[theorem]
+\CreateTheorem{fact}[theorem]
+%<einfart|einfartfast>\CreateTheorem{conjecture}<section>
+%<simplivre|simplivrefast>\CreateTheorem{conjecture}<chapter>
+\CreateTheorem*{theorem*}
+\CreateTheorem*{lemma*}
+\CreateTheorem*{proposition*}
+\CreateTheorem*{corollary*}
+\CreateTheorem*{fact*}
+\CreateTheorem*{conjecture*}
+\CreateTheorem{definition}[theorem]
+%<einfart|einfartfast>\CreateTheorem{example}<section>
+%<simplivre|simplivrefast>\CreateTheorem{example}<chapter>
+%<einfart|einfartfast>\CreateTheorem{problem}<section>
+%<simplivre|simplivrefast>\CreateTheorem{problem}<chapter>
+\CreateTheorem*{definition*}
+\CreateTheorem*{example*}
+\CreateTheorem*{problem*}
+%<einfart|einfartfast>\CreateTheorem{remark}<section>
+%<simplivre|simplivrefast>\CreateTheorem{remark}<chapter>
+\CreateTheorem*{remark*}
+
+%%================================
+%% Language configuration
+%%================================
+%<*einfart|simplivre>
+\PassOptionsToPackage{french,english}{babel}
+\RequirePackage{babel}
+\frenchsetup{PartNameFull=false}
+%</einfart|simplivre>
+%<*einfartfast|simplivrefast>
+\RequirePackage{polyglossia}
+\setdefaultlanguage{english}
+\setotherlanguage[frenchpart=false]{french}
+%</einfartfast|simplivrefast>
+
+\newcommand{\minimalist@langconfig@chinese}{%
+ \def\abstractname{摘要}%
+ \def\proofname{证明}%
+ \def\contentsname{目录}%
+ \def\listfigurename{插图}%
+ \def\listtablename{表格}%
+ \def\figurename{图}%
+ \def\tablename{表}%
+ \def\indexname{索引}%
+ \def\appendixname{附录}%
+ \def\bibname{参考文献}%
+ \renewcommand{\languagename}{chinese}%
+}
+\newcommand{\minimalist@langconfig@english}{%
+ \selectlanguage{english}%
+}
+\newcommand{\minimalist@langconfig@french}{%
+ \selectlanguage{french}%
+% The line below is only needed for 'babel'
+%<einfart|simplivre> \def\frenchpartname{Partie}%
+}
+
+\newcommand{\UseLanguageCORE}[1]{%
+ \ifstrequal{#1}{chinese}{\minimalist@langconfig@chinese}{}%
+ \ifstrequal{#1}{Chinese}{\minimalist@langconfig@chinese}{}%
+ \ifstrequal{#1}{english}{\minimalist@langconfig@english}{}%
+ \ifstrequal{#1}{English}{\minimalist@langconfig@english}{}%
+ \ifstrequal{#1}{french}{\minimalist@langconfig@french}{}
+ \ifstrequal{#1}{French}{\minimalist@langconfig@french}{}
+}
+\newcommand{\UseLanguage}[1]{%
+ \ifx\@onlypreamble\@notprerr%
+ \UseLanguageCORE{#1}%
+ \else%
+ \AfterEndPreamble{\UseLanguageCORE{#1}}%
+ \fi%
+}
+
+%%================================
+%% Draft mark
+%%================================
+\def\dnfFont{\ttfamily}
+\def\needgraphFont{\ttfamily}
+
+\def\dnfTextEN{To be finished here}
+\def\needgraphTextEN{A graph is needed here}
+\def\dnfTextFR{À terminer ici}
+\def\needgraphTextFR{Il manque encore un graphique ici}
+\def\dnfTextCN{这里的内容尚未完成}
+\def\needgraphTextCN{这里需要一张图片}
+
+\definecolor{dnfColor}{RGB}{21,122,20}
+\definecolor{needgraphColor}{RGB}{70,130,180}
+
+%<*einfart|simplivre>
+\PassOptionsToPackage{many}{tcolorbox}
+\RequirePackage{tcolorbox}
+\newtcbox{\plainBox}[1][-paper]{enhanced jigsaw,%
+ on line, arc = 1.2pt, outer arc = 1pt,breakable,%
+ colframe = #1,colupper=#1,opacityback=0,%
+ boxsep = 1pt,boxrule = 1.2pt,%
+ left = 1pt, right = 1pt, top = 0pt, bottom = 0pt,%
+}
+%</einfart|simplivre>
+%<*einfartfast|simplivrefast>
+\newcommand{\plainBox}[2][-paper]{\textcolor{#1}{%
+ \setlength{\fboxsep}{1.5pt}%
+ \setlength{\fboxrule}{1.2pt}%
+ \fbox{#2}}}
+%</einfartfast|simplivrefast>
+
+\NewDocumentCommand{\dnf}{d<>}{%
+ \noindent\plainBox[dnfColor]%
+ {\normalfont\dnfFont\bfseries\small%
+ \csname dnfText\csname\languagename ABBR\endcsname\endcsname%
+ \IfNoValueF{#1}{ : #1}}%
+}
+\NewDocumentCommand{\needgraph}{d<>}{%
+ \par%
+ \centerline{\plainBox[needgraphColor]%
+ {\normalfont\needgraphFont\bfseries\small%
+ \csname needgraphText\csname\languagename ABBR\endcsname\endcsname%
+ \IfNoValueF{#1}{ : #1}}}%
+ \par%
+}
+%<*einfart|einfartfast>
+
+%%================================
+%% Title block style
+%%================================
+\renewcommand{\@maketitle}{%
+ \LocallyStopLineNumbers%
+ \noindent%
+ {\textcolor{gray!55!paper}{\rule{\textwidth}{0.75pt}}}%
+ \vspace{-\parskip}%
+ \begin{flushright}%
+ {\@title}\\\medskip%
+ \color{black!80!paper}%
+ {\small\scshape\@author}\\%
+ {\small\@date}%
+ \end{flushright}%
+ \vspace{-\parskip}%
+ \vspace{-.5\baselineskip}%
+ {\textcolor{gray!55!paper}{\rule{\textwidth}{0.75pt}}\par}%
+ \ResumeLineNumbers%
+}
+\apptocmd{\maketitle}{\thispagestyle{fancy}}{}{\FAIL}
+
+%%================================
+%% Abstract style
+%%================================
+\renewenvironment{abstract}{%
+ \LocallyStopLineNumbers%
+ \begin{flushright}%
+ \textsc{\small\abstractname}\par%
+ \vspace{-.75\baselineskip}%
+ \begin{minipage}[t]{.833\textwidth}%
+ \vspace{0pt}%
+ \color{black!80!paper}%
+ \footnotesize%
+ \parindent=2em
+}{%
+ \end{minipage}%
+ \end{flushright}%
+ \ResumeLineNumbers%
+}
+%</einfart|einfartfast>
+
+\endinput \ No newline at end of file
diff --git a/macros/unicodetex/latex/minimalist/minimalist.ins b/macros/unicodetex/latex/minimalist/minimalist.ins
new file mode 100644
index 0000000000..f83d3e67eb
--- /dev/null
+++ b/macros/unicodetex/latex/minimalist/minimalist.ins
@@ -0,0 +1,49 @@
+%%
+%% Copyright (C) 2021 by Jinwen XU
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3 of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3 or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+
+\usedir{tex/latex/minimalist}
+
+\preamble
+
+Copyright (C) 2021 by Jinwen XU
+
+This is part of the minimalist class series.
+
+\endpreamble
+
+\generate{\file{einfart.cls}{\from{minimalist.dtx}{einfart}}}
+\generate{\file{einfartfast.cls}{\from{minimalist.dtx}{einfartfast}}}
+\generate{\file{simplivre.cls}{\from{minimalist.dtx}{simplivre}}}
+\generate{\file{simplivrefast.cls}{\from{minimalist.dtx}{simplivrefast}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* files into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* einfart.cls *}
+\Msg{* einfartfast.cls *}
+\Msg{* simplivre.cls *}
+\Msg{* simplivrefast.cls *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile