texlive[62769] Master/texmf-dist: jxu (17mar22)
commits+karl at tug.org
commits+karl at tug.org
Thu Mar 17 21:32:09 CET 2022
Revision: 62769
http://tug.org/svn/texlive?view=revision&revision=62769
Author: karl
Date: 2022-03-17 21:32:09 +0100 (Thu, 17 Mar 2022)
Log Message:
-----------
jxu (17mar22)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/einfart/README.md
trunk/Master/texmf-dist/doc/latex/minimalist/README.md
trunk/Master/texmf-dist/doc/latex/projlib/README.md
trunk/Master/texmf-dist/doc/latex/simplivre/README.md
trunk/Master/texmf-dist/source/latex/projlib/ProjLib.dtx
trunk/Master/texmf-dist/tex/latex/einfart/einfart.cls
trunk/Master/texmf-dist/tex/latex/minimalist/minimalist.sty
trunk/Master/texmf-dist/tex/latex/minimalist/minimart.cls
trunk/Master/texmf-dist/tex/latex/minimalist/minimbook.cls
trunk/Master/texmf-dist/tex/latex/projlib/ProjLib.sty
trunk/Master/texmf-dist/tex/latex/projlib/projlib-author.sty
trunk/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty
trunk/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty
trunk/Master/texmf-dist/tex/latex/projlib/projlib-font.sty
trunk/Master/texmf-dist/tex/latex/projlib/projlib-language.sty
trunk/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty
trunk/Master/texmf-dist/tex/latex/projlib/projlib-math.sty
trunk/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty
trunk/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty
trunk/Master/texmf-dist/tex/latex/simplivre/simplivre.cls
Added Paths:
-----------
trunk/Master/texmf-dist/tex/latex/minimalist/minimalist-classical.sty
trunk/Master/texmf-dist/tex/latex/minimalist/minimalist-plain.sty
Modified: trunk/Master/texmf-dist/doc/latex/einfart/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/einfart/README.md 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/doc/latex/einfart/README.md 2022-03-17 20:32:09 UTC (rev 62769)
@@ -2,6 +2,8 @@
# `einfart` : write you articles in a simple and clear way
+**The current document class have been rewritten with `expl3`. Please note that the documentations are not yet up-to-date. The syntax of some commands have been changed since the last version, especially the declaration of theorem-like environments by `\CreateTheorem`. For the moment, you can refer to the documentation of the package `create-theorem`.**
+
`einfart` is a LaTeX class for typesetting articles, which has a simple and
clear design.
Modified: trunk/Master/texmf-dist/doc/latex/minimalist/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/minimalist/README.md 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/doc/latex/minimalist/README.md 2022-03-17 20:32:09 UTC (rev 62769)
@@ -1,7 +1,9 @@
-<!-- Copyright (C) 2021 by Jinwen XU -->
+<!-- Copyright (C) 2021-2022 by Jinwen XU -->
# `minimalist` bundle: write you documents in a simple and clear way
+**The whole series have been rewritten with `expl3`. Please note that the documentations are not yet up-to-date. The syntax of some commands have been changed since the last version, especially the declaration of theorem-like environments by `\CreateTheorem`. For the moment, you can refer to the documentation of the package `create-theorem`.**
+
## Introduction
`minimalist` is a collection of styles and classes that helps you typesetting articles and books
@@ -8,7 +10,9 @@
with a simple and clear design. It mainly consists of two parts.
- Main part:
- - `minimalist.sty` : the main style
+ - `minimalist.sty` : interface of the main style
+ - `minimalist-plain.sty` : the plain style
+ - `minimalist-classical.sty` : the classical style
- `minimart.cls` : class for typesetting articles
- `minimbook.cls` : class for typesetting books
Modified: trunk/Master/texmf-dist/doc/latex/projlib/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/projlib/README.md 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/doc/latex/projlib/README.md 2022-03-17 20:32:09 UTC (rev 62769)
@@ -2,16 +2,12 @@
# ProjLib Toolkit
-The bundle is dated 2022/03/11.
+The bundle is dated 2022/03/17
-Old modules are still dated 2021/12/16 and will *not* be modified. **When all the new modules and the corresponding documentations are finished, old files shall be removed from this bundle.**
-
## **Important note**
-The whole project is being rewritten with `expl3`. The new modules are basically finished but are not yet documented. They have the names with prefix "projlib-", and they are in many ways better and more powerful than their predecessors. Most importantly, they are not compatible with the old modules, so they cannot appear at the same time in the same document, which, unfortunately, means that (for now) they cannot be used in classes like `einfart` or `lebhart`, etc.
+The whole project is being rewritten with `expl3`. The new modules are basically finished but are not yet documented. They have the names with prefix "projlib-", and they are in many ways better and more powerful than their predecessors. The most important thing to be noticed is that these new modules are not compatible with the old ones, and thus they cannot appear simultaneously in the same document, which, unfortunately, means that (for now) they cannot be used in classes like `lebhart`, `beaulivre` (these are the classes with which the author produced the old documentations), etc.
-The current `ProjLib.sty` is the new `expl3` version, the old one has been renamed to `PJLtoolkit.sty`.
-
The new modules are:
- projlib-author
- projlib-datetime
@@ -23,14 +19,11 @@
- projlib-paper
- projlib-theorem
-When all these modules are finished, the documentation will be updated accordingly.
+Below are the old README.
-Below is the content of the old README.
-
---
> **ProjLib** can be interpreted as "***Proj**ect **Lib**rary*" (in English), or as "***Proj**et **Lib**re*" (in French).
-> Personally, I prefer the later one.
## Introduction
@@ -69,9 +62,9 @@
- Theorem setup and configuration
- Offers a macro `\CreateTheorem` for creating theorem-like environments with multi-language support
- Preset environments include: `assumption`, `axiom`, `conjecture`, `convention`, `corollary`, `definition`, `definition-proposition`, `definition-theorem`, `example`, `exercise`, `fact`, `hypothesis`, `lemma`, `notation`, `observation`, `problem`, `property`, `proposition`, `question`, `remark`, `theorem`, and the corresponding unnumbered version with an asterisk `*` in the name.
-<!-- 1. `PJLtoolkit.sty` (this is the internal name of the `ProjLib` package)
+1. `PJLtoolkit.sty` (this is the internal name of the `ProjLib` package)
- A collective interface of ProjLib Toolkit, loading all the packages above
- - Provide some pre-defined font configuration -->
+ - Provide some pre-defined font configuration
> Since `PJLthm.sty` (and thus `ProjLib.sty`) uses `cleveref`, it should be loaded after `varioref` and `hyperref`.
Modified: trunk/Master/texmf-dist/doc/latex/simplivre/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/simplivre/README.md 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/doc/latex/simplivre/README.md 2022-03-17 20:32:09 UTC (rev 62769)
@@ -2,6 +2,8 @@
# `simplivre` : write you books in a simple and clear way
+**The current document class have been rewritten with `expl3`. Please note that the documentations are not yet up-to-date. The syntax of some commands have been changed since the last version, especially the declaration of theorem-like environments by `\CreateTheorem`. For the moment, you can refer to the documentation of the package `create-theorem`.**
+
`simplivre` is a LaTeX class for typesetting books, which has a simple and clear
design.
Modified: trunk/Master/texmf-dist/source/latex/projlib/ProjLib.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/projlib/ProjLib.dtx 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/source/latex/projlib/ProjLib.dtx 2022-03-17 20:32:09 UTC (rev 62769)
@@ -20,7 +20,7 @@
%<*ProjLib>
\ProvidesExplPackage
{ProjLib}
- {2022/03/11} {}
+ {2022/03/17} {}
{Collective interface of the ProjLib toolkit}
%</ProjLib>
%
@@ -27,7 +27,7 @@
%<*projlib-author>
\ProvidesExplPackage
{projlib-author}
- {2022/03/11} {}
+ {2022/03/17} {}
{Enhanced author information block}
%</projlib-author>
%
@@ -34,7 +34,7 @@
%<*projlib-datetime>
\ProvidesExplPackage
{projlib-datetime}
- {2022/03/11} {}
+ {2022/03/17} {}
{Convert numeric date-time string to natural language}
%</projlib-datetime>
%
@@ -41,7 +41,7 @@
%<*projlib-draft>
\ProvidesExplPackage
{projlib-draft}
- {2022/03/11} {}
+ {2022/03/17} {}
{Useful commands during draft stage}
%</projlib-draft>
%
@@ -48,7 +48,7 @@
%<*projlib-font>
\ProvidesExplPackage
{projlib-font}
- {2022/03/11} {}
+ {2022/03/17} {}
{Font selection and configuration}
%</projlib-font>
%
@@ -55,7 +55,7 @@
%<*projlib-language>
\ProvidesExplPackage
{projlib-language}
- {2022/03/11} {}
+ {2022/03/17} {}
{Multi-language configuration}
%</projlib-language>
%
@@ -62,7 +62,7 @@
%<*projlib-logo>
\ProvidesExplPackage
{projlib-logo}
- {2022/03/11} {}
+ {2022/03/17} {}
{The ProjLib logo}
%</projlib-logo>
%
@@ -69,7 +69,7 @@
%<*projlib-math>
\ProvidesExplPackage
{projlib-math}
- {2022/03/11} {}
+ {2022/03/17} {}
{Efficient math setup}
%</projlib-math>
%
@@ -76,7 +76,7 @@
%<*projlib-paper>
\ProvidesExplPackage
{projlib-paper}
- {2022/03/11} {}
+ {2022/03/17} {}
{Configuration of the paper style}
%</projlib-paper>
%
@@ -83,7 +83,7 @@
%<*projlib-theorem>
\ProvidesExplPackage
{projlib-theorem}
- {2022/03/11} {}
+ {2022/03/17} {}
{Configuration of theorem-like environments}
%</projlib-theorem>
@@ -149,11 +149,13 @@
\cs_if_exist:NT \subjclass { \endinput }
\tl_new:N \g__projlib_author_font_author_tl
+\tl_new:N \g__projlib_author_font_institute_tl
\tl_new:N \g__projlib_author_font_address_tl
\tl_new:N \g__projlib_author_font_curraddr_tl
\tl_new:N \g__projlib_author_font_email_tl
\tl_gset:Nn \g__projlib_author_font_author_tl { \normalsize \normalfont \scshape }
+\tl_gset:Nn \g__projlib_author_font_institute_tl { \small \normalfont }
\tl_gset:Nn \g__projlib_author_font_address_tl { \small \normalfont \itshape }
\tl_gset:Nn \g__projlib_author_font_curraddr_tl { \small \normalfont \itshape }
\tl_gset:Nn \g__projlib_author_font_email_tl { \small \normalfont \ttfamily }
@@ -182,56 +184,49 @@
}
}
-\ProvideDocumentCommand \address { m }
+\cs_new_protected:Nn \projlib_author_affil_generic:nn
+ % #1 = the item
+ % #2 = the text
{
\hook_gput_code:nnn { cmd/@author/after } { projlib-author }
{
- \phantom {A} \\[-\baselineskip]
+ \phantom {A} \\[-.85\baselineskip]
\bool_if:NF \g__projlib_author_affil_already_exist_bool
{
\skip_vertical:n { \g__projlib_author_length_innersep_dim }
}
\bool_set_true:N \g__projlib_author_affil_already_exist_bool
- { \g__projlib_author_font_address_tl #1 }
+ { \use:c { g__projlib_author_font_ #1 _tl } #2 }
\\ \phantom {}
}
}
+\ProvideDocumentCommand \institute { m }
+ {
+ \projlib_author_affil_generic:nn { institute } { #1 }
+ }
+
+\ProvideDocumentCommand \address { m }
+ {
+ \projlib_author_affil_generic:nn { address } { #1 }
+ }
+
\ProvideDocumentCommand \curraddr { m }
{
- \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
- {
- \phantom {A} \\[-\baselineskip]
- \bool_if:NF \g__projlib_author_affil_already_exist_bool
- {
- \skip_vertical:n { \g__projlib_author_length_innersep_dim }
- }
- \bool_set_true:N \g__projlib_author_affil_already_exist_bool
- { \g__projlib_author_font_curraddr_tl #1 }
- \\ \phantom {}
- }
+ \projlib_author_affil_generic:nn { curraddr } { #1 }
}
\ProvideDocumentCommand \email { m }
{
- \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
- {
- \phantom {A} \\[-\baselineskip]
- \bool_if:NF \g__projlib_author_affil_already_exist_bool
- {
- \skip_vertical:n { \g__projlib_author_length_innersep_dim }
- }
- \bool_set_true:N \g__projlib_author_affil_already_exist_bool
- { \g__projlib_author_font_email_tl #1 }
- \\ \phantom {}
- }
+ \projlib_author_affil_generic:nn { email } { #1 }
}
\RequirePackage { regexpatch }
-\xpatchcmd { \@maketitle } { \begin{tabular}[t]{c} } {} {
- \xpatchcmd { \@maketitle } { \end{tabular} } {} {} {}
-} {}
+\xpatchcmd { \@maketitle } { \begin{tabular}[t]{c} } {}
+ {
+ \xpatchcmd { \@maketitle } { \end{tabular} } {} {} {}
+ } {}
\tl_set:cn {@author} {}
@@ -256,17 +251,17 @@
\RequirePackage{ projlib-language }
\tl_new:N \g_projlib_author_keywordsname_style_tl
- \tl_gset:Nn \g_projlib_author_keywordsname_style_tl {}
+ \tl_gset:Nn \g_projlib_author_keywordsname_style_tl { \itshape }
\projlib_langauge_define_multilingual_text:Nn \keywordsname
{
- EN = \textsc{Key~words~and~phrases} ,
- FR = \textsc{Mots~et~phrases~clés} ,
- DE = \textsc{Schlüsselwörter~und~Phrasen} ,
- IT = \textsc{Parole~e~frasi~chiave} ,
- PT = \textsc{Palavras~e~frases~chave} ,
- BR = \textsc{Palavras~e~frases~chave} ,
- ES = \textsc{Palabras~y~frases~clave} ,
+ EN = Key~words~and~phrases ,
+ FR = Mots~et~phrases~clés ,
+ DE = Schlüsselwörter~und~Phrasen ,
+ IT = Parole~e~frasi~chiave ,
+ PT = Palavras~e~frases~chave ,
+ BR = Palavras~e~frases~chave ,
+ ES = Palabras~y~frases~clave ,
CN = 关键词 ,
TC = 關鍵詞 ,
JP = キーワード ,
@@ -348,9 +343,11 @@
{
\bool_if:NTF \g__projlib_author_already_maketitle_bool
{
+ \group_begin:
\projlib_author_backup_abstract:
\getstored{projlib-author-abstract}
\projlib_author_backup_endabstract:
+ \group_end:
}
{
\bool_gset_true:N \g__projlib_author_abstract_before_maketitle_bool
@@ -399,10 +396,13 @@
{
\bool_if:NT \g__projlib_author_abstract_before_maketitle_bool
{
+ \group_begin:
\projlib_author_backup_abstract:
\getstored{projlib-author-abstract}
\projlib_author_backup_endabstract:
+ \group_end:
}
+ \cs_undefine:N \institute
\cs_undefine:N \address
\cs_undefine:N \curraddr
\cs_undefine:N \email
@@ -2123,7 +2123,7 @@
}
}
-\projlib_langauge_define_multilingual_text:Nn \__dnf_text
+\projlib_langauge_define_multilingual_text:Nn \__projlib_draft_dnf_text
{
EN = To\ be\ finished ,
FR = Pas\ encore\ fini ,
@@ -2138,7 +2138,7 @@
RU = Не\ закончен ,
}
-\projlib_langauge_define_multilingual_text:Nn \__dnf_report_text
+\projlib_langauge_define_multilingual_text:Nn \__projlib_draft_dnf_report_text
{
EN = { Below\ is\ a\ list\ of\ outstanding\ items,
\ followed\ by\ the\ corresponding\ page\ numbers. } ,
@@ -2161,12 +2161,12 @@
\ с\ соответствующими\ номерами\ страниц\ в\ скобках. } ,
}
-\tl_new:c { __dnf_font }
-\tl_gset:cn { __dnf_font } { \normalfont \ttfamily \bfseries \small }
+\tl_new:c { __projlib_draft_dnf_font }
+\tl_gset:cn { __projlib_draft_dnf_font } { \normalfont \ttfamily \bfseries \small }
-\definecolor { __dnf_color } { RGB } { 21, 122, 20 }
+\definecolor { __projlib_draft_dnf_color } { RGB } { 21, 122, 20 }
-\newcounter { __dnf_counter }
+\newcounter { __projlib_draft_dnf_counter }
\tl_new:N \g__projlib_draft_dnf_report_tl
@@ -2173,18 +2173,18 @@
\NewDocumentCommand \dnf { d<> }
{
\noindent
- \projlib_draft_plain_box [ __dnf_color ]
+ \projlib_draft_plain_box [ __projlib_draft_dnf_color ]
{
- \stepcounter { __dnf_counter }
- \__dnf_font
- \__dnf_text
+ \stepcounter { __projlib_draft_dnf_counter }
+ \__projlib_draft_dnf_font
+ \__projlib_draft_dnf_text
\c_space_tl
- \# \the__dnf_counter
+ \# \the__projlib_draft_dnf_counter
\IfNoValueF { #1 } { \, : ~ #1 }
\tl_gput_right:Nx \g__projlib_draft_dnf_report_tl
{
\# \,
- \int_value:w \the__dnf_counter
+ \int_value:w \the__projlib_draft_dnf_counter
\c_space_tl \c_space_tl
$\langle$
\skip_horizontal:n { 0.1em }
@@ -2208,13 +2208,78 @@
{
\tl_if_blank:VF \g__projlib_draft_dnf_report_tl
{
- \clearpage \noindent
- \color { __dnf_color }
- \__dnf_font
- \__dnf_report_text \\[0.75\baselineskip]
+ \clearpage
+ \pagestyle{empty}
+ \noindent
+ \color { __projlib_draft_dnf_color }
+ \__projlib_draft_dnf_font
+ \__projlib_draft_dnf_report_text \\[0.75\baselineskip]
\g__projlib_draft_dnf_report_tl
}
}
+
+
+\projlib_langauge_define_multilingual_text:Nn \__projlib_draft_blind_text_tl
+ {
+ , EN = {
+ Hello,~here~is~some~text~without~a~meaning.~This~text~should~show~what~a~printed~text~will~look~like~at~this~place.~If~you~read~this~text,~you~will~get~no~information.~Really?~Is~there~no~information?~Is~there~a~difference~between~this~text~and~some~nonsense~like~``Huardest~gefburn''?~Not~at~all!~A~blind~text~like~this~gives~you~information~about~the~selected~font,~how~the~letters~are~written~and~an~impression~of~the~look.~This~text~should~contain~all~letters~of~the~alphabet~and~it~should~be~written~in~of~the~original~language.~There~is~no~need~for~special~content,~but~the~length~of~words~should~match~the~language.
+ }
+ , FR = {
+ Bonjour,~voici~un~texte~sans~signification.~Ce~texte~doit~montrer~à~quoi~ressemble~un~texte~imprimé~à~cet~endroit.~Si~vous~lisez~ce~texte,~vous~n'obtiendrez~aucune~information.~Vraiment~?~Il~n'y~a~aucune~information~?~Y~a-t-il~une~différence~entre~ce~texte~et~une~absurdité~comme~«~Huardest~gefburn~»~?~Pas~du~tout~!~Un~texte~aveugle~comme~celui-ci~vous~donne~des~informations~sur~la~police~choisie,~la~façon~dont~les~lettres~sont~écrites~et~une~impression~de~l'apparence.~Ce~texte~doit~contenir~toutes~les~lettres~de~l'alphabet~et~être~écrit~dans~la~langue~d'origine.~Il~n'est~pas~nécessaire~de~prévoir~un~contenu~spécial,~mais~la~longueur~des~mots~doit~correspondre~à~la~langue.
+ }
+ , DE = {
+ Hallo,~hier~ist~ein~Text~ohne~Bedeutung.~Dieser~Text~soll~zeigen,~wie~ein~gedruckter~Text~an~dieser~Stelle~aussehen~wird.~Wenn~Sie~diesen~Text~lesen,~werden~Sie~keine~Informationen~erhalten.~Wirklich?~Gibt~es~keine~Informationen?~Gibt~es~einen~Unterschied~zwischen~diesem~Text~und~irgendeinem~Blödsinn~wie~``Huardest~gefburn''?~Ganz~und~gar~nicht!~Ein~solcher~Blindtext~gibt~Ihnen~Informationen~über~die~gewählte~Schriftart,~wie~die~Buchstaben~geschrieben~sind~und~einen~Eindruck~vom~Aussehen.~Dieser~Text~sollte~alle~Buchstaben~des~Alphabets~enthalten~und~in~der~Originalsprache~geschrieben~sein.~Es~ist~kein~besonderer~Inhalt~erforderlich,~aber~die~Länge~der~Wörter~sollte~der~Sprache~entsprechen.
+ }
+ , IT = {
+ Ciao,~qui~c'è~un~drafto~senza~significato.~Questo~drafto~dovrebbe~mostrare~come~sarà~un~drafto~stampato~in~questo~posto.~Se~leggete~questo~drafto,~non~otterrete~alcuna~informazione.~Davvero?~Non~c'è~nessuna~informazione?~C'è~una~differenza~tra~questo~drafto~e~qualche~sciocchezza~come~``Huardest~gefburn''?~Niente~affatto!~Un~drafto~cieco~come~questo~ti~dà~informazioni~sul~font~selezionato,~su~come~sono~scritte~le~lettere~e~un'impressione~dell'aspetto.~Questo~drafto~dovrebbe~contenere~tutte~le~lettere~dell'alfabeto~e~dovrebbe~essere~scritto~nella~lingua~originale.~Non~c'è~bisogno~di~contenuti~speciali,~ma~la~lunghezza~delle~parole~dovrebbe~corrispondere~alla~lingua.
+ }
+ , PT = {
+ Olá,~aqui~está~um~texto~sem~significado.~Este~texto~deve~mostrar~como~será~um~texto~impresso~neste~local.~Se~ler~este~texto,~não~obterá~qualquer~informação.~A~sério?~Não~há~informação?~Há~alguma~diferença~entre~este~texto~e~alguns~disparates~como~"Huardest~gefburn"?~De~modo~algum!~Um~texto~cego~como~este~dá-lhe~informações~sobre~a~fonte~seleccionada,~como~as~letras~são~escritas~e~uma~impressão~do~aspecto.~Este~texto~deve~conter~todas~as~letras~do~alfabeto~e~deve~ser~escrito~na~língua~original.~Não~há~necessidade~de~conteúdo~especial,~mas~o~tamanho~das~palavras~deve~corresponder~à~língua.
+ }
+ , BR = {
+ Olá,~aqui~está~um~texto~sem~sentido.~Este~texto~deve~mostrar~como~será~um~texto~impresso~neste~lugar.~Se~você~ler~este~texto,~você~não~obterá~nenhuma~informação.~É~mesmo?~Não~há~nenhuma~informação?~Há~alguma~diferença~entre~este~texto~e~alguns~disparates~como~"Huardest~gefburn"?~De~jeito~nenhum!~Um~texto~cego~como~este~lhe~dá~informações~sobre~a~fonte~selecionada,~como~as~letras~são~escritas~e~uma~impressão~da~aparência.~Este~texto~deve~conter~todas~as~letras~do~alfabeto~e~deve~ser~escrito~no~idioma~original.~Não~há~necessidade~de~conteúdo~especial,~mas~o~tamanho~das~palavras~deve~corresponder~ao~idioma.
+ }
+ , ES = {
+ Hola,~aquí~hay~un~texto~sin~significado.~Este~texto~debe~mostrar~cómo~se~verá~un~texto~impreso~en~este~lugar.~Si~lees~este~texto,~no~obtendrás~ninguna~información.~¿En~serio?~¿No~hay~información?~¿Hay~alguna~diferencia~entre~este~texto~y~alguna~tontería~como~``Huardest~gefburn''?~¡Para~nada!~Un~texto~oculto~como~este~le~brinda~información~sobre~la~fuente~seleccionada,~cómo~se~escriben~las~letras~y~una~impresión~de~la~apariencia.~Este~texto~debe~contener~todas~las~letras~del~alfabeto~y~debe~estar~escrito~en~el~idioma~original.~No~hay~necesidad~de~contenido~especial,~pero~la~longitud~de~las~palabras~debe~coincidir~con~el~idioma.
+ }
+ , CN = {
+ 你好,这里有一些没有意义的文字。 此文本应显示打印文本在此位置的外观。 如果你阅读这段文字,你将不会得到任何信息。 真的没有信息吗? 这段文字和诸如 “劳仑衣普桑,认至将指点效则机,最你更枝” 或者 “想极整月正进好志次回总般,段然取向使张规军证回,世市总李率英茄持伴” 之类的废话有区别吗? 一点都没有! 这样的一段文本会给你提供关于所选字体的信息、字母的书写方式以及对外观的印象。 该文本应包含字母表中的所有字母,并且应使用原始语言编写。 不需要特别的内容,但字长要与语言相匹配。
+ }
+ , TC = {
+ 你好,這裡有一些沒有意義的文字。此文本應顯示打印文本在此位置的外觀。如果你閱讀這段文字,你將不會得到任何信息。真的沒有信息嗎?這段文字和諸如 “勞崙衣普桑,認至將指點效則機,最你更枝” 或者 “想極整月正進好志次回總般,段然取向使張規軍證回,世市總李率英茄持伴” 之類的廢話有區別嗎?一點都沒有!這樣的一段文本會給你提供關於所選字體的信息、字母的書寫方式以及對外觀的印象。該文本應包含字母表中的所有字母,並且應使用原始語言編寫。不需要特別的內容,但字長要與語言相匹配。
+ }
+ , JP = {
+ こんにちは、ここに意味のないテキストがあります。 このテキストは、この場所で印刷されたテキストがどのように見えるかを示す必要があります。 このテキストを読んでも、情報は得られません。 本当に? 情報はありませんか? このテキストと「アでニンはすミ」のようなナンセンスとの間に違いはありますか? 全くない! このようなブラインドテキストは、選択したフォント、文字の書き方、外観の印象に関する情報を提供します。 このテキストにはアルファベットのすべての文字が含まれている必要があり、元の言語で書かれている必要があります。 特別なコンテンツは必要ありませんが、単語の長さは言語と一致している必要があります。
+ }
+ , RU = {
+ Здравствуйте,~вот~какой-то~текст~без~смысла.~Этот~текст~должен~показывать,~как~будет~выглядеть~печатный~текст~в~этом~месте.~Если~вы~прочитаете~этот~текст,~вы~не~получите~никакой~информации.~Действительно?~Нет~информации?~Есть~ли~разница~между~этим~текстом~и~какой-то~чепухой~вроде~``Бзостачщв~дрероих''?~Нисколько!~Слепой~текст,~подобный~этому,~дает~вам~информацию~о~выбранном~шрифте,~о~том,~как~написаны~буквы,~и~о~впечатлении~от~внешнего~вида.~Этот~текст~должен~содержать~все~буквы~алфавита~и~должен~быть~написан~на~языке~оригинала.~В~специальном~содержании~нет~необходимости,~но~длина~слов~должна~соответствовать~языку.
+ }
+ }
+
+\cs_new:Nn \projlib_draft_blind_text:n
+ {
+ \int_set:Nn \l_tmpa_int { #1 }
+ \int_do_until:nNnn { \l_tmpa_int } = { 0 }
+ {
+ \__projlib_draft_blind_text_tl
+ \c_space_tl
+ \int_add:Nn \l_tmpa_int { -1 }
+ }
+ }
+
+\hook_gput_code:nnn { begindocument/before } { projlib-draft }
+ {
+ \ProvideDocumentCommand \blindtext { O{} }
+ {
+ \tl_if_blank:nTF { #1 }
+ {
+ \__projlib_draft_blind_text_tl
+ }
+ {
+ \projlib_draft_blind_text:n { #1 }
+ }
+ }
+ }
%</projlib-draft>
%
%<*projlib-font>
@@ -2803,7 +2868,7 @@
\tl_new:N \g_projlib_language_parindent_latin_tl
\tl_new:N \g_projlib_language_parindent_cjk_tl
-\@ifclassloaded{beamer}
+\@ifclassloaded { beamer }
{
\tl_gset:Nn \g_projlib_language_parindent_latin_tl
{
@@ -2827,7 +2892,7 @@
\hook_gput_code:nnn { begindocument } { projlib-language }
{
- \@ifpackageloaded{parskip}
+ \@ifpackageloaded { parskip }
{
\tl_gset:Nn \g_projlib_language_parindent_latin_tl
{
@@ -3319,7 +3384,7 @@
, nothms .bool_set:N = \l__projlib_theorem_no_theorems_bool
, no-theorem-numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, no-theorem-numbering .initial:n = { false }
- , no~theorem~numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
+ , no~theorem~numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, no theorem numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, nothmnum .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, theorem-numbering .tl_set:N = \l__projlib_theorem_theorem_numbering_tl
@@ -3341,7 +3406,7 @@
, no-preset-names .initial:n = { false }
, no~preset~names .bool_set_inverse:N = \l__projlib_theorem_presetname_bool
, no preset names .bool_set_inverse:N = \l__projlib_theorem_presetname_bool
- , unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { create-theorem } }
+ , unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { create-theorem } }
}
\ProcessKeysOptions { projlib-theorem }
@@ -3405,7 +3470,7 @@
{
\bool_if:NTF \l__projlib_theorem_no_theorem_numbering_bool
{
- \exp_args:Nv \CreateTheorem { c_projlib_theorem_supported_clist } { numberless }
+ \exp_args:Nv \CreateTheorem { c_projlib_theorem_supported_clist } { numberless, create starred version }
}
{
\tl_if_blank:eTF \l__projlib_theorem_theorem_numbering_tl
@@ -3412,23 +3477,23 @@
{
\cs_if_exist:cTF { c at chapter }
{ % with \chapter
- \CreateTheorem {theorem} { parent counter = chapter }
+ \CreateTheorem {theorem} { parent counter = chapter, create starred version }
}
{ % without \chapter
- \CreateTheorem {theorem} { parent counter = section }
+ \CreateTheorem {theorem} { parent counter = section, create starred version }
}
}
{
\tl_if_eq:NnTF \l__projlib_theorem_theorem_numbering_tl { * }
{
- \CreateTheorem {theorem} { }
+ \CreateTheorem {theorem} { create starred version }
}
{
- \CreateTheorem {theorem} { parent counter = \l__projlib_theorem_theorem_numbering_tl }
+ \CreateTheorem {theorem} { parent counter = \l__projlib_theorem_theorem_numbering_tl, create starred version }
}
}
- \exp_args:Nv \CreateTheorem { c_projlib_theorem_supported_clist } { shared counter = theorem, quiet }
+ \exp_args:Nv \CreateTheorem { c_projlib_theorem_supported_clist } { shared counter = theorem, create starred version, quiet }
}
}
Modified: trunk/Master/texmf-dist/tex/latex/einfart/einfart.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/einfart/einfart.cls 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/einfart/einfart.cls 2022-03-17 20:32:09 UTC (rev 62769)
@@ -2,7 +2,7 @@
%% This is file `einfart/einfart.cls',
%% generated with the docstrip utility.
-%% Copyright (C) 2021 by Jinwen XU
+%% Copyright (C) 2021-2022 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -16,564 +16,685 @@
%% 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
-\ProvidesClass{einfart}
- [2021/12/16 A simple and clear article style]
-\def\minimclass at baseclass{article}
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
- family = @minimclass,
- prefix = @minimclass@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{classical}
-\DeclareBoolOption[false]{useindent}
-\DeclareBoolOption[false]{useosf}
-\DeclareBoolOption[false]{lmodern}
-\DeclareBoolOption[false]{palatino}
-\DeclareBoolOption[false]{times}
-\DeclareBoolOption[false]{garamond}
-\DeclareBoolOption[false]{noto}
-\DeclareBoolOption[false]{biolinum}
-\DeclareBoolOption[false]{customfont}
-\DeclareStringOption{thmnum}[PJL at thmnum@default]
+\RequirePackage{l3keys2e}
+\ProvidesExplClass
+ {einfart}
+ {2022/03/17} {}
+ {A simple and clear article style}
-\newif\if at minimclass@bfivepaper\@minimclass at bfivepaperfalse
-\DeclareVoidOption{b5paper}{\@minimclass at bfivepapertrue}
-\newif\if at minimclass@afourpaper\@minimclass at afourpaperfalse
-\DeclareVoidOption{a4paper}{\@minimclass at afourpapertrue}
+\tl_const:Nn \l__minimclass_base_class_tl { article }
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass at baseclass}}
-\ProcessKeyvalOptions*\relax
-\LoadClass{\minimclass at baseclass}
-\if at minimclass@draft
- \@minimclass at fasttrue
-\fi
-\if at minimclass@classical\else
- \@minimclass at useindenttrue
-\fi
-\if at minimclass@lmodern
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@palatino
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@times
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@garamond
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@noto
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@biolinum
- \@minimclass at customfonttrue
-\fi
+\bool_new:N \l__minimclass_load_custom_font_file_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_bool
-%%================================
-%% Page layout
-%%================================
-\RequirePackage{silence}
-\WarningFilter{geometry}{Over-specification in}
-\RequirePackage[heightrounded]{geometry}
-\geometry{
- papersize={7in,10in},
- % total={40em,60em},
- total={5.535in,8.300in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\if at minimclass@bfivepaper
-\geometry{
- b5paper,
- % total={40em,59em},
- total={5.535in,8.160in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-\if at minimclass@afourpaper
-\geometry{
- a4paper,
- % total={47em,70em},
- total={6.500in,9.685in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
+\bool_new:N \l__minimclass_load_custom_font_file_latin_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_latin_bool
-\if at minimclass@fast
- \PassOptionsToPackage{fast}{minimalist}
- \RequirePackage{draftwatermark}
- \DraftwatermarkOptions{text={\normalfont DRAFT},color=paper!95!-paper}
-\fi
-\if at minimclass@useindent
- \RequirePackage{indentfirst}
-\else
- \AtEndPreamble{\RequirePackage{parskip}}
-\fi
-\RequirePackage{minimalist}
+\bool_new:N \l__minimclass_load_custom_font_file_cjk_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_cjk_bool
+\bool_new:N \l__minimclass_load_custom_font_file_math_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_math_bool
+
+\keys_define:nn { minimclass }
+ {
+ , draft .bool_set:N = \l__minimclass_fast_bool
+ , draft .initial:n = { false }
+ , fast .bool_set:N = \l__minimclass_fast_bool
+
+ , classical .bool_set:N = \l__minimclass_classical_bool
+ , classical .initial:n = { false }
+
+ , use indent .bool_set:N = \l__minimclass_useindent_bool
+ , use indent .initial:n = { true }
+ , use~indent .bool_set:N = \l__minimclass_useindent_bool
+ , use-indent .bool_set:N = \l__minimclass_useindent_bool
+
+ , load custom font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { minimalist.font.latin }
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { minimalist.font.cjk }
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { minimalist.font.math }
+ }
+ , load custom font file .default:n = { minimalist.font }
+ , load~custom~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load~custom~font~file .default:n = { minimalist.font }
+ , load-custom-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load-custom-font-file .default:n = { minimalist.font }
+
+ , load custom latin font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { #1 }
+ }
+ , load custom latin font file .default:n = { minimalist.font.latin }
+ , load~custom~latin~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { #1 }
+ }
+ , load~custom~latin~font~file .default:n = { minimalist.font.latin }
+ , load-custom-latin-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { #1 }
+ }
+ , load-custom-latin-font-file .default:n = { minimalist.font.latin }
+
+ , load custom cjk font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { #1 }
+ }
+ , load custom cjk font file .default:n = { minimalist.font.cjk }
+ , load~custom~cjk~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { #1 }
+ }
+ , load~custom~cjk~font~file .default:n = { minimalist.font.cjk }
+ , load-custom-cjk-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { #1 }
+ }
+ , load-custom-cjk-font-file .default:n = { minimalist.font.cjk }
+
+ , load custom math font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { #1 }
+ }
+ , load custom math font file .default:n = { minimalist.font.math }
+ , load~custom~math~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { #1 }
+ }
+ , load~custom~math~font~file .default:n = { minimalist.font.math }
+ , load-custom-math-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { #1 }
+ }
+ , load-custom-math-font-file .default:n = { minimalist.font.math }
+
+ , a4paper .bool_set:N = \l__minimclass_a_four_paper_bool
+ , a4paper .initial:n = { false }
+ , b5paper .bool_set:N = \l__minimclass_b_five_paper_bool
+ , b5paper .initial:n = { false }
+
+ , 11pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+ , 12pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+
+ , unknown .code:n = {
+ \PassOptionsToPackage { \CurrentOption } { minimalist }
+ }
+ }
+\ProcessKeysOptions { minimclass }
+
+\LoadClass{\l__minimclass_base_class_tl}
+
+\bool_if:NT \l__minimclass_classical_bool
+ {
+ \bool_set_false:N \l__minimclass_useindent_bool
+ }
+
%%================================
-%% Fonts
+%% Page layout
%%================================
-\if at minimclass@customfont\else
- \if at minimclass@fast
- \RequirePackage{mathpazo}
- \fi
-\fi
+\RequirePackage { silence }
+\WarningFilter { geometry } { Over-specification }
-\PassOptionsToPackage{no-math,quiet}{fontspec}
-\RequirePackage{fontspec}
+\PassOptionsToPackage { heightrounded } { geometry }
+\RequirePackage { geometry }
-\IfFileExists{minimalist-font.tex}{
- \input{minimalist-font.tex}
-}{
-\IfFontExistsTF{Palatino Linotype}{%
- \setmainfont{Palatino Linotype}
- [\if at minimclass@useosf Numbers = OldStyle\fi]
-}{
- \setmainfont{TeXGyrePagellaX-Regular.otf}[
- BoldFont = TeXGyrePagellaX-Bold.otf ,
- ItalicFont = TeXGyrePagellaX-Italic.otf ,
- BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf,
- \if at minimclass@useosf Numbers = OldStyle\fi ]
-}
- \setsansfont{SourceSansPro-Regular.otf}[
- Scale = MatchLowercase ,
- BoldFont = SourceSansPro-Bold.otf ,
- ItalicFont = SourceSansPro-RegularIt.otf ,
- BoldItalicFont = SourceSansPro-BoldIt.otf ]
- \setmonofont{NewCMMono10-Regular.otf}[
- Scale = 1.05 ,
- BoldFont = NewCMMono10-Bold.otf ,
- ItalicFont = NewCMMono10-Italic.otf ,
- BoldItalicFont = NewCMMono10-BoldOblique.otf ]
-}
+\geometry
+ {
+ papersize = { 7in, 10in },
+ total = { 5.535in, 8.300in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
-\PassOptionsToPackage{fontset=none,scheme=plain}{ctex}
-\RequirePackage{ctex}
+\bool_if:NT \l__minimclass_b_five_paper_bool
+ {
+ \geometry
+ {
+ b5paper,
+ total = { 5.535in, 8.160in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
-\IfFileExists{minimalist-font.cjk.tex}{
- \input{minimalist-font.cjk.tex}
-}{
-\IfFontExistsTF{SourceHanSerifSC-Regular}{%
- \setCJKmainfont{SourceHanSerifSC-Regular}[
- BoldFont = SourceHanSerifSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerifSC-Bold ]
-}{
- \setCJKmainfont{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
+\bool_if:NT \l__minimclass_a_four_paper_bool
+ {
+ \geometry
+ {
+ a4paper,
+ total = { 6.500in, 9.685in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
-\IfFontExistsTF{SourceHanSansSC-Regular}{%
- \setCJKsansfont{SourceHanSansSC-Regular}[
- BoldFont = SourceHanSansSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSansSC-Bold ]
-}{
- \setCJKsansfont{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
+\bool_if:NT \l__minimclass_fast_bool
+ {
+ \PassOptionsToPackage { fast } { minimalist }
+ \RequirePackage { draftwatermark }
+ \DraftwatermarkOptions { text = { \normalfont DRAFT }, color = paper!97!-paper }
+ }
-\IfFontExistsTF{SourceHanMonoSC-Regular}{%
- \setCJKmonofont{SourceHanMonoSC-Regular}[
- BoldFont = SourceHanMonoSC-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMonoSC-Medium ]
-}{
- \setCJKmonofont{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
+\bool_if:NTF \l__minimclass_useindent_bool
+ {
+ \RequirePackage { indentfirst }
+ }
+ {
+ \hook_gput_code:nnn { begindocument/before } { minimclass }
+ {
+ \RequirePackage { parskip }
+ }
+ }
-\if at PJLlang@enable at CN
-\IfFontExistsTF{SourceHanSerifSC-Regular}{%
- \setCJKfamilyfont{SCmain}{SourceHanSerifSC-Regular}[
- BoldFont = SourceHanSerifSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerifSC-Bold ]
-}{
- \setCJKfamilyfont{SCmain}{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\IfFontExistsTF{SourceHanSansSC-Regular}{%
- \setCJKfamilyfont{SCsans}{SourceHanSansSC-Regular}[
- BoldFont = SourceHanSansSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSansSC-Bold ]
-}{
- \setCJKfamilyfont{SCsans}{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-\IfFontExistsTF{SourceHanMonoSC-Regular}{%
- \setCJKfamilyfont{SCmono}{SourceHanMonoSC-Regular}[
- BoldFont = SourceHanMonoSC-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMonoSC-Medium ]
-}{
- \setCJKfamilyfont{SCmono}{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\fi
+\RequirePackage { minimalist }
-\if at PJLlang@enable at TC
-\IfFontExistsTF{SourceHanSerifTC-Regular}{%
- \setCJKfamilyfont{TCmain}{SourceHanSerifTC-Regular}[
- BoldFont = SourceHanSerifTC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerifTC-Bold ]
-}{
- \setCJKfamilyfont{TCmain}{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\IfFontExistsTF{SourceHanSansTC-Regular}{%
- \setCJKfamilyfont{TCsans}{SourceHanSansTC-Regular}[
- BoldFont = SourceHanSansTC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSansTC-Bold ]
-}{
- \setCJKfamilyfont{TCsans}{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-\IfFontExistsTF{SourceHanMonoTC-Regular}{%
- \setCJKfamilyfont{TCmono}{SourceHanMonoTC-Regular}[
- BoldFont = SourceHanMonoTC-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMonoTC-Medium ]
-}{
- \setCJKfamilyfont{TCmono}{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\fi
+%%================================
+%% Fonts
+%%================================
+\WarningFilter { latexfont } { Font~shape }
+\WarningFilter { latexfont } { Some~font }
-\if at PJLlang@enable at JP
-\IfFontExistsTF{SourceHanSerif-Regular}{%
- \setCJKfamilyfont{JPmain}{SourceHanSerif-Regular}[
- BoldFont = SourceHanSerif-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerif-Bold ]
-}{
- \setCJKfamilyfont{JPmain}{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\IfFontExistsTF{SourceHanSans-Regular}{%
- \setCJKfamilyfont{JPsans}{SourceHanSans-Regular}[
- BoldFont = SourceHanSans-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSans-Bold ]
-}{
- \setCJKfamilyfont{JPsans}{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-\IfFontExistsTF{SourceHanMono-Regular}{%
- \setCJKfamilyfont{JPmono}{SourceHanMono-Regular}[
- BoldFont = SourceHanMono-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMono-Medium ]
-}{
- \setCJKfamilyfont{JPmono}{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\fi
+\cs_new_protected:Nn \__minimclass_load_file_or_config:Nnn
+ {
+ \bool_if:NT #1
+ {
+ \exp_args:Nx \file_if_exist:nT { #2 }
+ {
+ \exp_args:Nx \file_input:n { #2 }
+ \use_none:nn
+ }
+ }
+ \use:n { #3 }
+ }
-\WarningFilter{latexfont}{Font shape}
-\WarningFilter{latexfont}{Some font}
+\cs_new_protected:Nn \__minimclass_if_font_exist:nnn
+ {
+ \bool_if:NTF \l__minimclass_fast_bool
+ { #3 }
+ { \fontspec_font_if_exist:nTF { #1 } { #2 } { #3 } }
+ }
-\def\CJKsffamily{}
-\def\CJKttfamily{}
+\__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_bool { \l__minimclass_custom_font_file_str }
+ {
+ \RequirePackage { projlib-font }
-\apptocmd{\sffamily}{\CJKsffamily}{}{\FAIL}
-\apptocmd{\ttfamily}{\CJKttfamily}{}{\FAIL}
+ \bool_if:NF \g_projlib_font_already_set_bool
+ {
+ \bool_if:NT \l__minimclass_fast_bool
+ {
+ \RequirePackage { mathpazo }
+ }
-\if at PJLlang@enable at CN
-\gappto{\PJLlang at langconfig@CN}{%
- \def\CJKsffamily{\CJKfamily{SCsans}}%
- \def\CJKttfamily{\CJKfamily{SCmono}}%
- \CJKfamily{SCmain}%
-}
-\fi
+ \PassOptionsToPackage { no-math,quiet } { fontspec }
+ \RequirePackage { fontspec }
-\if at PJLlang@enable at TC
-\gappto{\PJLlang at langconfig@TC}{%
- \def\CJKsffamily{\CJKfamily{TCsans}}%
- \def\CJKttfamily{\CJKfamily{TCmono}}%
- \CJKfamily{TCmain}%
-}
-\fi
+ \__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_latin_bool { \l__minimclass_custom_font_file_latin_str }
+ {
+ \__minimclass_if_font_exist:nnn { Palatino~Linotype }
+ {
+ \bool_if:NTF \l__projlib_font_useosf_bool
+ {
+ \setmainfont { Palatino~Linotype } [ Numbers = OldStyle ]
+ }
+ {
+ \setmainfont { Palatino~Linotype }
+ }
+ }
+ {
+ \bool_if:NTF \l__projlib_font_useosf_bool
+ {
+ \setmainfont { TeXGyrePagellaX-Regular.otf }
+ [
+ BoldFont = TeXGyrePagellaX-Bold.otf ,
+ ItalicFont = TeXGyrePagellaX-Italic.otf ,
+ BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf ,
+ Numbers = OldStyle ,
+ ]
+ }
+ {
+ \setmainfont { TeXGyrePagellaX-Regular.otf }
+ [
+ BoldFont = TeXGyrePagellaX-Bold.otf ,
+ ItalicFont = TeXGyrePagellaX-Italic.otf ,
+ BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf ,
+ ]
+ }
+ }
+ \setsansfont { SourceSansPro-Regular.otf }
+ [
+ Scale = MatchLowercase ,
+ BoldFont = SourceSansPro-Bold.otf ,
+ ItalicFont = SourceSansPro-RegularIt.otf ,
+ BoldItalicFont = SourceSansPro-BoldIt.otf ,
+ ]
+ \setmonofont { NewCMMono10-Regular.otf }
+ [
+ Scale = 1.05 ,
+ BoldFont = NewCMMono10-Bold.otf ,
+ ItalicFont = NewCMMono10-Italic.otf ,
+ BoldItalicFont = NewCMMono10-BoldOblique.otf ,
+ ]
-\if at PJLlang@enable at JP
-\gappto{\PJLlang at langconfig@JP}{%
- \def\CJKsffamily{\CJKfamily{JPsans}}%
- \def\CJKttfamily{\CJKfamily{JPmono}}%
- \CJKfamily{JPmain}%
-}
-\fi
+ \projlib_language_set_linespacing_latin:n { \setstretch { 1.07 } }
+ }
+ }
-\def\minimalist at titlefontshape{\CJKsffamily}
-}
+ \PassOptionsToPackage { fontset = none, scheme = plain } { ctex }
+ \RequirePackage { ctex }
-\if at minimclass@customfont\else
-\if at minimclass@fast
-\RequirePackage{amssymb}
-\else
-\PassOptionsToPackage
- {warnings-off={mathtools-colon,mathtools-overbracket}}{unicode-math}
-\RequirePackage{unicode-math}
-\unimathsetup{math-style=ISO, partial=upright, nabla=upright}
-\setmathfont{Asana-Math.otf}
-\IfFontExistsTF{Neo Euler}{%
-\setmathfont[range={up/{Latin,latin,Greek,greek},
- bfup/{Latin,latin,Greek,greek},
- cal, bfcal, frak, bffrak,
- `(,`),`[,`],`\{,`\},`:,`=,\ne,\equiv,`/,\backslash,
- \in,\notin,\ni,\subset,\supset,\subseteq,\supseteq,
- \rightarrow,\leftarrow,\mapsto,\hookrightarrow,\hookleftarrow,
- \sum,\prod,\coprod,
- \sqrt,\int,\iint,\iiint,\oint},
- script-features={},
- sscript-features={},
- Scale = 1.05,
- ]{Neo Euler}
-}{}
-\setmathfont[range={\leq,\geq,\ll,\gg,\lll,\ggg,\leqslant,\geqslant},
- Scale = 0.95,
- ]{latinmodern-math.otf}
-\setmathfont[range={up/num, bfup/num}
- ]{texgyrepagella-math.otf}
+ \__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_cjk_bool { \l__minimclass_custom_font_file_cjk_str }
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerifSC-Regular }
+ {
+ \setCJKmainfont { SourceHanSerifSC-Regular }
+ [
+ BoldFont = SourceHanSerifSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerifSC-Bold ,
+ ]
+ }
+ {
+ \setCJKmainfont { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
-\AtBeginDocument{
-\let\mid at original\mid
-\renewcommand{\mid}{\hspace{-.2em}\mid at original\hspace{-.2em}}
-\let\nmid at original\nmid
-\renewcommand{\nmid}{\hspace{-.2em}\nmid at original\hspace{-.2em}}
-\renewcommand{\frac}[2]{\genfrac{}{}{}{}{
- \mathchoice
- {\raisebox{-.15em}{$\displaystyle #1$}}
- {\raisebox{-.15em}{$\textstyle #1$}}
- {\raisebox{-.08em}{$\scriptstyle #1$}}
- {\scriptscriptstyle #1}
-}{
- \mathchoice
- {\raisebox{.08em}{$\displaystyle #2$}}
- {\raisebox{.08em}{$\textstyle #2$}}
- {\raisebox{.05em}{$\scriptstyle #2$}}
- {\scriptscriptstyle #2}
-}}
-}
+ \__minimclass_if_font_exist:nnn { SourceHanSansSC-Regular }
+ {
+ \setCJKsansfont{SourceHanSansSC-Regular}
+ [
+ BoldFont = SourceHanSansSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSansSC-Bold ,
+ ]
+ }
+ {
+ \setCJKsansfont { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
-\RequirePackage{tikz-cd}
-\newbox\xratbelow
-\newbox\xratabove
-\renewcommand{\xrightarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [->, baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) -- node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xleftarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [<-, baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) -- node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xleftrightarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [<->, baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) -- node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xhookrightarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/hookrightarrow] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xhookleftarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/hookleftarrow] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xmapsto}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/mapsto] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\newcommand{\xlongequal}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/equal] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\AtBeginDocument{
-\renewcommand{\twoheadrightarrow}{%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/twoheadrightarrow] (.8em,0) ;}}
-\renewcommand{\twoheadleftarrow}{%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/twoheadleftarrow] (.8em,0) ;}}
-}
-\fi
-\fi
+ \__minimclass_if_font_exist:nnn { SourceHanMonoSC-Regular }
+ {
+ \setCJKmonofont { SourceHanMonoSC-Regular }
+ [
+ BoldFont = SourceHanMonoSC-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMonoSC-Medium ,
+ ]
+ }
+ {
+ \setCJKmonofont { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
-\if at minimclass@lmodern
- \RequirePackage{amssymb}
- \if at minimclass@useosf
- \RequirePackage{cfr-lm}
- \else
- \RequirePackage{lmodern}
- \fi
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
+ \bool_if:NT \g__projlib_language_enabled_schinese_bool
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerifSC-Regular }
+ {
+ \setCJKfamilyfont { SCmain } { SourceHanSerifSC-Regular }
+ [
+ BoldFont = SourceHanSerifSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerifSC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { SCmain } { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanSansSC-Regular }
+ {
+ \setCJKfamilyfont { SCsans } { SourceHanSansSC-Regular }
+ [
+ BoldFont = SourceHanSansSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSansSC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { SCsans } { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanMonoSC-Regular }
+ {
+ \setCJKfamilyfont { SCmono } { SourceHanMonoSC-Regular }
+ [
+ BoldFont = SourceHanMonoSC-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMonoSC-Medium ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { SCmono } { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ }
-\if at minimclass@palatino
- \RequirePackage{amssymb}
- \RequirePackage{mathpazo}
- \PassOptionsToPackage{defaultsups}{newpxtext}
- \RequirePackage{newpxtext}
- % \RequirePackage{newpxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.07}}
- \if at minimclass@useosf\useosf\fi
-\fi
+ \bool_if:NT \g__projlib_language_enabled_tchinese_bool
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerifTC-Regular }
+ {
+ \setCJKfamilyfont { TCmain } { SourceHanSerifTC-Regular }
+ [
+ BoldFont = SourceHanSerifTC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerifTC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { TCmain } { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanSansTC-Regular }
+ {
+ \setCJKfamilyfont { TCsans } { SourceHanSansTC-Regular }
+ [
+ BoldFont = SourceHanSansTC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSansTC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { TCsans } { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanMonoTC-Regular }
+ {
+ \setCJKfamilyfont { TCmono } { SourceHanMonoTC-Regular }
+ [
+ BoldFont = SourceHanMonoTC-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMonoTC-Medium ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { TCmono } { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ }
-\if at minimclass@times
- \RequirePackage{amssymb}
- \PassOptionsToPackage{defaultsups}{newtxtext}
- \RequirePackage{newtxtext}
- \RequirePackage{newtxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.00}}
- \if at minimclass@useosf\useosf\fi
-\fi
+ \bool_if:NT \g__projlib_language_enabled_japanese_bool
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerif-Regular }
+ {
+ \setCJKfamilyfont { JPmain } { SourceHanSerif-Regular }
+ [
+ BoldFont = SourceHanSerif-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerif-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { JPmain } { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanSans-Regular }
+ {
+ \setCJKfamilyfont { JPsans } { SourceHanSans-Regular }
+ [
+ BoldFont = SourceHanSans-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSans-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { JPsans } { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanMono-Regular }
+ {
+ \setCJKfamilyfont { JPmono } { SourceHanMono-Regular }
+ [
+ BoldFont = SourceHanMono-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMono-Medium ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { JPmono } { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ }
-\if at minimclass@garamond
- \RequirePackage{amssymb}
- \if at minimclass@useosf\else
- \PassOptionsToPackage{lining}{ebgaramond}
- \fi
- \RequirePackage{ebgaramond-maths}
- \RequirePackage{ebgaramond}
- % \RequirePackage{garamondlibre}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
+ \cs_new:Nn \minimclass_cjk_sffamily: {}
+ \cs_new:Nn \minimclass_cjk_ttfamily: {}
-\if at minimclass@noto
- \RequirePackage{amssymb}
- \if at minimclass@useosf
- \PassOptionsToPackage{oldstyle}{notomath}
- \fi
- \RequirePackage{anyfontsize}
- \RequirePackage{notomath}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
+ \hook_gput_code:nnn { cmd/sffamily/after } { minimclass } { \minimclass_cjk_sffamily: }
+ \hook_gput_code:nnn { cmd/ttfamily/after } { minimclass } { \minimclass_cjk_ttfamily: }
-\if at minimclass@biolinum
- \RequirePackage{amssymb}
- % \RequirePackage{mathpazo}
- % \RequirePackage[sansmath]{libertinust1math}
- \ifPDFTeX
- \if at minimclass@useosf
- \PassOptionsToPackage{osf}{biolinum}
- \fi
- \RequirePackage{biolinum}
- \renewcommand*\familydefault{\biolinum at family}
- \else
- \PassOptionsToPackage{no-math}{fontspec}
- \RequirePackage{fontspec}
- \setmainfont{LinBiolinum_R.otf}[
- BoldFont = LinBiolinum_RB.otf ,
- ItalicFont = LinBiolinum_RI.otf ,
- BoldItalicFont = LinBiolinum_RBO.otf,
- \if at minimclass@useosf Numbers = OldStyle\fi ]
- \fi
- \PJLsetlinespacing{\setstretch{1.05}}
- \RequirePackage[italic,defaultmathsizes]{mathastext}
-\fi
+ \AddLanguageSetting [schinese]
+ {
+ \cs_set:Nn \minimclass_cjk_sffamily: { \CJKfamily { SCsans } }
+ \cs_set:Nn \minimclass_cjk_ttfamily: { \CJKfamily { SCmono } }
+ \CJKfamily { SCmain }
+ }
+ \AddLanguageSetting [tchinese]
+ {
+ \cs_set:Nn \minimclass_cjk_sffamily: { \CJKfamily { TCsans } }
+ \cs_set:Nn \minimclass_cjk_ttfamily: { \CJKfamily { TCmono } }
+ \CJKfamily { TCmain }
+ }
+ \AddLanguageSetting [japanese]
+ {
+ \cs_set:Nn \minimclass_cjk_sffamily: { \CJKfamily { JPsans } }
+ \cs_set:Nn \minimclass_cjk_ttfamily: { \CJKfamily { JPmono } }
+ \CJKfamily { JPmain }
+ }
-\def\PJL at font@alreadyset{}
+ \tl_gset:Nn \g_minimalist_title_font_common_tl { \minimclass_cjk_sffamily: }
+ }
-\PassOptionsToPackage{verbose=silent}{microtype}
-\RequirePackage{microtype}
-\PassOptionsToPackage{all}{nowidow}
-\RequirePackage{nowidow}
-\RequirePackage{embrac}
+ \__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_math_bool { \l__minimclass_custom_font_file_math_str }
+ {
+ \bool_if:NF \g_projlib_font_already_set_bool
+ {
+ \bool_if:NTF \l__minimclass_fast_bool
+ {
+ \RequirePackage { amssymb }
+ }
+ {
+ \PassOptionsToPackage { warnings-off = { mathtools-colon, mathtools-overbracket } } { unicode-math }
+ \RequirePackage { unicode-math }
+ \unimathsetup { math-style = ISO, partial = upright, nabla = upright }
+ \setmathfont { Asana-Math.otf }
+ \__minimclass_if_font_exist:nnn { Neo~Euler }
+ {
+ \setmathfont { Neo~Euler }
+ [
+ range = { up / { Latin, latin, Greek, greek },
+ bfup / { Latin, latin, Greek, greek },
+ cal, bfcal, frak, bffrak,
+ `(, `), `[, `], `\{, `\}, `:, `=, \ne, \equiv, `/, \backslash,
+ \in, \notin, \ni, \subset, \supset, \subseteq, \supseteq,
+ \rightarrow, \leftarrow, \leftrightarrow,
+ \longleftarrow, \longrightarrow, \longleftrightarrow,
+ \Leftarrow, \Rightarrow, \Leftrightarrow,
+ \Longleftarrow, \Longrightarrow, \Longleftrightarrow,
+ \nrightarrow, \nleftarrow, \nleftrightarrow,
+ \nLeftarrow, \nRightarrow, \nLeftrightarrow,
+ \mapsto, \hookrightarrow, \hookleftarrow,
+ \leftharpoonup, \rightharpoonup, \leftharpoondown, \rightharpoondown,
+ \rightleftharpoons, \leftrightharpoons,
+ \sum, \prod, \coprod,
+ \sqrt, \int, \iint, \iiint, \oint
+ },
+ script-features = {},
+ sscript-features = {},
+ Scale = 1.05,
+ ]
+ }{}
+ \setmathfont { latinmodern-math.otf }
+ [
+ range = { \leq, \geq, \ll, \gg, \lll, \ggg, \leqslant, \geqslant },
+ Scale = 0.95,
+ ]
+ \setmathfont { texgyrepagella-math.otf }
+ [
+ range = { up / num, bfup / num }
+ ]
-%%================================
-%% Graphics
-%%================================
-\RequirePackage{graphicx}
-\graphicspath{{images/}}
-\RequirePackage{wrapfig}
-\RequirePackage{float}
-\RequirePackage{caption}
-\captionsetup{font=small}
+ \hook_gput_code:nnn { begindocument } { minimclass }
+ {
+ \NewCommandCopy \minimclass_backup_mid: \mid
+ \RenewDocumentCommand \mid {}
+ { \skip_horizontal:n {-.15em} \minimclass_backup_mid: \skip_horizontal:n {-.15em} }
+ \NewCommandCopy \minimclass_backup_nmid: \nmid
+ \RenewDocumentCommand \nmid {}
+ { \skip_horizontal:n {-.15em} \minimclass_backup_nmid: \skip_horizontal:n {-.15em} }
+ }
+ \RequirePackage { tikz-cd }
+
+ \box_new:N \l__minimclass_xarrows_above_box
+ \box_new:N \l__minimclass_xarrows_below_box
+ \dim_new:N \l__minimclass_xarrows_length_dim
+ \cs_new_protected:Nn \minimclass_xarrows_generic:nnnn
+ % #3 = option of \tikz
+ % #4 = edge of \draw
+ {
+ \hbox_set:Nn \l__minimclass_xarrows_below_box { \ensuremath { \scriptstyle #1 } }
+ \hbox_set:Nn \l__minimclass_xarrows_above_box { \ensuremath { \scriptstyle #2 } }
+ \dim_set:Nn \l__minimclass_xarrows_length_dim
+ { \dim_eval:n { \dim_max:nn { \box_wd:N \l__minimclass_xarrows_below_box } { \box_wd:N \l__minimclass_xarrows_above_box } + .8em } }
+ \mathrel
+ {
+ \tikz [ #3, baseline = -.55ex, every~node/.style = { inner~sep = 0pt } ]
+ \draw (0,0) #4
+ node [ below = 3pt ] { \box_use:N \l__minimclass_xarrows_below_box }
+ node [ above = 2pt ] { \box_use:N \l__minimclass_xarrows_above_box }
+ ( \l__minimclass_xarrows_length_dim ,0) ;
+ }
+ }
+
+ \RenewDocumentCommand \xrightarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } { -> } { -- }
+ }
+ \RenewDocumentCommand \xleftarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } { <- } { -- }
+ }
+ \RenewDocumentCommand \xleftrightarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } { <-> } { -- }
+ }
+ \RenewDocumentCommand \xhookrightarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/hookrightarrow ] }
+ }
+ \RenewDocumentCommand \xhookleftarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/hookleftarrow ] }
+ }
+ \RenewDocumentCommand \xmapsto { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/mapsto ] }
+ }
+ \NewDocumentCommand \xlongequal { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/equal ] }
+ }
+ \hook_gput_code:nnn { begindocument/end } { minimclass }
+ {
+ \RenewDocumentCommand \twoheadrightarrow {}
+ {
+ \minimclass_xarrows_generic:nnnn { \,\, } {} {} { edge [ commutative~diagrams/twoheadrightarrow ] }
+ }
+ \RenewDocumentCommand \twoheadleftarrow {}
+ {
+ \minimclass_xarrows_generic:nnnn { \,\, } {} {} { edge [ commutative~diagrams/twoheadleftarrow ] }
+ }
+ }
+ }
+ }
+ }
+ }
+
+\PassOptionsToPackage { all } { nowidow }
+\RequirePackage { nowidow }
+\RequirePackage { embrac }
+
%%================================
-%% Index
+%% Graphics
%%================================
-\AtEndPreamble{
-\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{}
-\apptocmd{\printindex}{\ResumeLineNumbers}{}{}
-}
+\RequirePackage { graphicx }
+\graphicspath { { images/ } }
+\RequirePackage { wrapfig }
+\RequirePackage { float }
+\RequirePackage { caption }
+\captionsetup { font = small }
\endinput
%%
Added: trunk/Master/texmf-dist/tex/latex/minimalist/minimalist-classical.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/minimalist/minimalist-classical.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/minimalist/minimalist-classical.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -0,0 +1,841 @@
+%%
+%% This is file `minimalist/minimalist-classical.sty',
+%% generated with the docstrip utility.
+
+%% Copyright (C) 2021-2022 by Jinwen XU
+%%
+%% This is part of the minimalist class series.
+%%
+%% This work may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License, either version 1.3c of this license or (at
+%% your option) any later version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+ {minimalist-classical}
+ {2022/03/17} {}
+ {The classical style of minimalist}
+
+\@ifpackageloaded { minimalist } {}
+ {
+ \msg_new:nnn { \@currname }
+ { minimalist-not-loaded }
+ { "#1"~is~an~internal~style~of~"minimalist".~To~use~it,~you~must~load~the~package~"minimalist"~first. }
+ \msg_warning:nnx { \@currname } { minimalist-not-loaded } { \@currname }
+ \endinput
+ }
+
+%%================================
+%% Title fonts
+%%================================
+\RequirePackage { anyfontsize }
+
+\bool_if:NTF \l__minimalist_use_boldface_bool
+ {
+ \cs_new:Nn \minimalist_bfseries: { \bfseries \colorlet{minimalist-temp-color}{.} \color{minimalist-temp-color!70!paper} }
+ }
+ {
+ \cs_new:Nn \minimalist_bfseries: {}
+ }
+
+\tl_new:N \g_minimalist_title_font_common_tl
+
+\tl_new:N \g_minimalist_title_font_part_tl
+\tl_new:N \g_minimalist_title_font_chapter_tl
+\tl_new:N \g_minimalist_title_font_section_tl
+\tl_new:N \g_minimalist_title_font_subsection_tl
+\tl_new:N \g_minimalist_title_font_subsubsection_tl
+\tl_new:N \g_minimalist_title_font_paragraph_tl
+
+\tl_gset:Nn \g_minimalist_title_font_part_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl }
+\tl_gset:Nn \g_minimalist_title_font_chapter_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl }
+\tl_gset:Nn \g_minimalist_title_font_section_tl { \minimalist_bfseries: }
+\tl_gset:Nn \g_minimalist_title_font_subsection_tl { \minimalist_bfseries: }
+\tl_gset:Nn \g_minimalist_title_font_subsubsection_tl { \minimalist_bfseries: \itshape }
+\tl_gset:Nn \g_minimalist_title_font_paragraph_tl { \minimalist_bfseries: \scshape }
+
+\bool_if:NF \l__minimalist_fast_bool
+ {
+ \RequirePackage { tikz }
+ \ExplSyntaxOff
+ \usetikzlibrary{calc,shadings}
+ \ExplSyntaxOn
+ \RequirePackage { tikzpagenodes } % For `current page text area`
+ }
+
+\bool_if:NTF \l__minimalist_fast_bool
+ {
+ \tl_const:Nn \l_minimalist_sep_bar { $|$ }
+ }
+ {
+ \tl_const:Nn \l_minimalist_sep_bar
+ {
+ \skip_horizontal:n { .1em }
+ \tikz[baseline=.125em] \draw[line~width=.9pt] (0,0) -- (0,.9em);
+ \skip_horizontal:n { .1em }
+ }
+ }
+
+%%================================
+%% Footer
+%%================================
+\RequirePackage { geometry }
+\RequirePackage { fancyhdr }
+\RequirePackage { extramarks }
+
+\hook_gput_code:nnn { begindocument/before } { minimalist }
+ {
+ \fancyhfoffset { 0pt }
+ }
+
+\tl_new:N \l_minimalist_leftmark_tl
+\tl_new:N \l_minimalist_rightmark_tl
+
+\tl_set:Nn \l_minimalist_leftmark_tl
+ {
+ \begin{minipage}[t]{.833\textwidth}
+ \lastleftmark
+ \end{minipage}
+ }
+\tl_set:Nn \l_minimalist_rightmark_tl
+ {
+ \begin{minipage}[t]{.833\textwidth}
+ \filleft
+ \lastrightmark
+ \end{minipage}
+ }
+
+\fancypagestyle { fancy }
+ {
+ \fancyhf{}
+ \if at twoside
+ \fancyfoot[RO]{\small\textcolor{main-text!30!paper}{ \l_minimalist_rightmark_tl }
+ \nobreakspace\nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fancyfoot[LE]{\small\leavevmode\llap{\thepage
+ \nobreakspace\nobreakspace\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }}
+ \nobreakspace\nobreakspace\textcolor{main-text!30!paper}{ \l_minimalist_leftmark_tl }}
+ \else
+ \fancyfoot[R]{\small\textcolor{main-text!30!paper}{ \l_minimalist_rightmark_tl }
+ \nobreakspace\nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+ }
+\pagestyle{fancy}
+
+\fancypagestyle { plain }
+ {
+ \fancyhf{}
+ \if at twoside
+ \fancyfoot[RO]{\small
+ \nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fancyfoot[LE]{\small\leavevmode\llap{\thepage
+ \nobreakspace\nobreakspace\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }}}
+ \else
+ \fancyfoot[R]{\small
+ \nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+ }
+
+\bool_if:NTF \l__minimalist_is_book_bool
+ {
+ \bool_if:NTF \l__minimalist_fast_bool
+ {
+ \newcommand{ \minimalist_draw_help_line: }{}
+ }
+ {
+ \newcommand{ \minimalist_draw_help_line: }{
+ \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=main-text,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=main-text,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}
+ }
+ }
+ \fancypagestyle{part}{
+ \fancyhf{}
+ \renewcommand{\headrulewidth}{0pt}
+ \fancyhead[C]{ \minimalist_draw_help_line: }
+ }
+ \addtolength{\headheight}{20pt}
+ \addtolength{\topmargin}{-20pt}
+ \if at twoside
+ \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{}}
+ \else
+ \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
+ \fi
+ \renewcommand*{\sectionmark}[1]{
+ \markright{\g_minimalist_section_decoration_char_tl\nobreakspace\arabic{section}\nobreakspace\g_minimalist_section_decoration_char_tl\nobreakspace\nobreakspace\nobreakspace#1}}
+ }
+ {
+ \if at twoside
+ \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{}}
+ \else
+ \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
+ \fi
+ }
+
+%%================================
+%% Line numbers
+%%================================
+\PassOptionsToPackage { pagewise,mathlines } { lineno }
+\RequirePackage { linenoamsmath }
+\renewcommand{\linenumberfont}{\ttfamily\color{main-text!7!paper}\footnotesize}
+\setlength{\linenumbersep}{1em}
+
+\newif\ifLNturnsON
+\def\LocallyStopLineNumbers{\LNturnsONfalse
+ \ifLineNumbers\LNturnsONtrue\fi\nolinenumbers}
+\def\ResumeLineNumbers{\ifLNturnsON\linenumbers\fi}
+
+\hook_gput_code:nnn { cmd/tableofcontents/before } { minimalist } { \LocallyStopLineNumbers }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { minimalist } { \ResumeLineNumbers }
+\hook_gput_code:nnn { env/bibliography/before } { minimalist } { \LocallyStopLineNumbers }
+\hook_gput_code:nnn { env/bibliography/after } { minimalist } { \ResumeLineNumbers }
+
+%%================================
+%% Title format
+%%================================
+\RequirePackage [ explicit, newparttoc ] { titlesec }
+\PassOptionsToPackage { normalem } { ulem }
+\RequirePackage { ulem }
+
+\cs_generate_variant:Nn \seq_set_split:Nnn { Nnx }
+\cs_new:Nn \minimalist_apply_title_numbering_style:N
+ {
+ #1
+ }
+
+\newcommand{\partstring}{\MakeUppercase{{\partname\nobreakspace\protect\thepart}}}
+
+\AddLanguageSetting
+ {
+ \renewcommand{\partstring}{\MakeUppercase{{\partname\nobreakspace\protect\thepart}}}
+ }
+\AddLanguageSetting [ schinese ]
+ {
+ \renewcommand{\partstring}{第 \nobreakspace\thepart\nobreakspace 部分}
+ }
+\AddLanguageSetting [ tchinese ]
+ {
+ \renewcommand{\partstring}{第 \nobreakspace\thepart\nobreakspace 部分}
+ }
+\AddLanguageSetting [ japanese ]
+ {
+ \renewcommand{\partstring}{第 \nobreakspace\thepart\nobreakspace 部}
+ }
+
+\bool_if:NTF \l__minimalist_is_book_bool
+ {
+ \setcounter{secnumdepth}{3}
+
+ %% Part
+ \titleclass{\part}{top} % make part like a chapter
+ \titleformat{\part}[display]
+ {\thispagestyle{part}
+ \LocallyStopLineNumbers
+ \g_minimalist_title_font_part_tl\filleft}
+ {\partstring}
+ {1em}
+ {\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+ \titleformat{name=\part,numberless}[display]
+ {\thispagestyle{part}
+ \LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{part}{#1}
+ \g_minimalist_title_font_part_tl\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{main-text!80!paper}\raggedleft#1
+ \end{minipage}
+ \end{flushright}
+ \ResumeLineNumbers
+ \vfill\vfill
+ \cleardoublepage
+ }
+
+ %% Chapter
+ \titleformat{\chapter}
+ {\thispagestyle{fancy}
+ \LocallyStopLineNumbers
+ \color{main-text!80!paper}\g_minimalist_title_font_chapter_tl\fontsize{16}{0}\selectfont}{}{0em}
+ {\rlap{\hspace*{-.5em}{\color{main-text!12!paper}
+ \fontsize{80}{0}\selectfont\raisebox{-7pt}{\thechapter}}}#1}
+ [\ResumeLineNumbers]
+ \titleformat{name=\chapter,numberless}
+ {\thispagestyle{fancy}
+ \LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{chapter}{#1}
+ \color{main-text!80!paper}\g_minimalist_title_font_chapter_tl\fontsize{16}{0}\selectfont}{}{0em}
+ {\rlap{\hspace*{-.5em}{\color{main-text!12!paper}
+ \fontsize{80}{0}\selectfont\normalfont\raisebox{-7pt}{*}}}#1}
+ [\ResumeLineNumbers]
+ }
+ {
+ %% Part
+ \titleformat{\part}[display]
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_part_tl\filleft}
+ {\partstring}
+ {.3em}
+ {\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+ \titleformat{name=\part,numberless}[display]
+ {\LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{part}{#1}
+ \g_minimalist_title_font_part_tl\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{main-text!80!paper}\raggedleft#1
+ \end{minipage}
+ \end{flushright}
+ \ResumeLineNumbers
+ }
+ }
+
+%% Section
+\renewcommand\thesection{\arabic{section}}
+\newcommand\seculine{\bgroup\markoverwith{\color{main-text!27!paper}
+ \rule[-0.9ex]{2pt}{.6pt}\hspace{-2pt}\rule[-1.2ex]{2pt}{.6pt}}\ULon}
+\bool_if:NTF \l__minimalist_fast_bool
+ {
+ \tl_gset:Nn \g_minimalist_section_decoration_char_tl { \raisebox{.03em}{\normalfont/} }
+ }
+ {
+ \tl_gset:Nn \g_minimalist_section_decoration_char_tl
+ {
+ \tikz[baseline=.125em] \draw[line~width=.9pt] (-.12em,0) -- (.12em,.9em);
+ }
+ }
+\titleformat{\section}
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_section_tl\centering}{}{0em}
+ {{\small\textcolor{main-text!27!paper}{\footnotesize \g_minimalist_section_decoration_char_tl }
+ \,\,\textcolor{main-text!90!paper}{\minimalist_bfseries:\arabic{section}}
+ \,\,\textcolor{main-text!27!paper}{\footnotesize \g_minimalist_section_decoration_char_tl }}\\
+ \seculine{#1}}
+ [\ResumeLineNumbers]
+\titleformat{name=\section,numberless}
+ {\LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{section}{#1}
+ \g_minimalist_title_font_section_tl\centering}{}{0em}
+ {\seculine{#1}}
+ [\ResumeLineNumbers]
+
+%% Subsection
+\renewcommand\thesubsection{
+ \ifnum\c at section=0\else\arabic{section}.\fi\arabic{subsection}}
+\newcommand\subseculine{\bgroup\markoverwith{\color{main-text!27!paper}
+ \rule[-1ex]{2pt}{.75pt}}\ULon}
+\titleformat{\subsection}
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_subsection_tl}{}{0em}
+ {\subseculine{\thesubsection\nobreakspace\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace #1}}
+ [\ResumeLineNumbers]
+\titleformat{name=\subsection,numberless}
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_subsection_tl}{}{0em}
+ {\subseculine{#1}}
+ [\ResumeLineNumbers]
+
+%% Subsubsection
+\bool_if:NTF \l__minimalist_runin_bool
+ {
+ \titleformat{\subsubsection}[runin]
+ {\color{main-text!70!paper}\g_minimalist_title_font_subsubsection_tl}
+ {\scalebox{0.9}{\thesubsubsection}}{.33em}
+ {#1.}[\hspace*{.3em}]
+ }
+ {
+ \titleformat{\subsubsection}
+ {\LocallyStopLineNumbers
+ \color{main-text!70!paper}\g_minimalist_title_font_subsubsection_tl}
+ {\scalebox{0.9}{\thesubsubsection}}{.33em}
+ {#1}
+ [\ResumeLineNumbers]
+ }
+
+%% Paragraph
+\titleformat{\paragraph}[runin]
+ { \g_minimalist_title_font_paragraph_tl }{\theparagraph}{1em}{#1}
+
+\titlespacing{\section}{0pt}{\baselineskip}{.6\baselineskip}
+\titlespacing{\subsection}{0pt}{.75\baselineskip}{.4\baselineskip}
+\titlespacing{\subsubsection}{0pt}{.5\baselineskip}{.3\baselineskip}
+
+%%================================
+%% ToC format
+%%================================
+\RequirePackage { titletoc }
+\titlecontents{part}
+ [0em]
+ {\addvspace{1.5pc}\filcenter\normalfont}
+ {\thecontentslabel\nopagebreak\\\nopagebreak\uppercase}
+ {}
+ {} % without page number
+ [\addvspace{.5pc}]
+
+\bool_if:NTF \l__minimalist_is_book_bool
+ {
+ \titlecontents{chapter}
+ [2em] % i.e., 0em (part) + 2em
+ {\addvspace{.5pc}\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2em}}
+ {\hspace*{-2em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{section}
+ [4em] % i.e., 2em (chapter) + 2em
+ {\normalfont}
+ {\contentslabel[\textcolor{main-text!27!paper}{\small\g_minimalist_section_decoration_char_tl}\,\textcolor{main-text!90!paper}{ \minimalist_apply_title_numbering_style:N { \thecontentslabel } }\,\textcolor{main-text!27!paper}{\small\g_minimalist_section_decoration_char_tl}]{2em}}
+ {\hspace*{-2em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsection}
+ [7em] % i.e., 4em (section) + 3em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.75em}}
+ {\hspace*{-2.75em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsubsection}
+ [9.5em] % i.e., 7em (subsection) + 3.5em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{3.25em}}
+ {\hspace*{-3.25em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ }
+ {
+ \titlecontents{section}
+ [2em] % i.e., 0em (part) + 2em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{1.75em}}
+ {\hspace*{-1.75em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsection}
+ [4.5em] % i.e., 2em (section) + 2.5em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.25em}}
+ {\hspace*{-2.25em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsubsection}
+ [7.5em] % i.e., 4.5em (subsection) + 3em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.75em}}
+ {\hspace*{-2.75em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ }
+
+%%================================
+%% Lists
+%%================================
+\RequirePackage { enumitem }
+\setlist{noitemsep}
+\setlist[enumerate]{labelsep=*, leftmargin=*}
+\setlist[enumerate,1]{label=\arabic*$)$,
+ ref = \arabic*$)$}
+\setlist[enumerate,2]{label=\emph{\roman*}$)$,
+ ref = \arabic{enumi}.\emph{\roman*}$)$}
+\setlist[enumerate,3]{label=\emph{\alph*}$)$,
+ ref = \arabic{enumi}.\emph{\roman{enumii}}.\emph{\alph*}$)$}
+\setlist[description]{font=\normalfont\minimalist_bfseries:}
+\newcommand\desculine{\colorlet{currentcolor}{.}\bgroup\markoverwith{\color{currentcolor!55!paper}
+ \rule[-.45ex]{2pt}{.75pt}}\ULon}
+\renewcommand{\descriptionlabel}[1]{
+ \hspace{\labelsep}\normalfont\desculine{#1}
+}
+
+\setlist[itemize]{leftmargin=*}
+\AddLanguageSetting { \setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{$\bullet$}} }
+\AddLanguageSetting [french] { \setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!55!paper}{---}} }
+\setlist[itemize,2]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{--}}
+\setlist[itemize,3]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{\texttt{*}}}
+
+%%================================
+%% Blank page
+%%================================
+\newcommand{\blinkpagetext}{This~page~is~intentionally~left~blank}
+\renewcommand{\cleardoublepage}{
+ \relax
+ \clearpage
+ \if at twoside\ifodd\c at page\relax\else
+ \thispagestyle{empty}
+ \hook_gput_next_code:nn { shipout/background }
+ {
+ \put(0.5\paperwidth,-0.5\paperheight){
+ \makebox[0pt]{\large\color{main-text!10!paper}\blinkpagetext}}
+ }
+ \null\newpage\fi\fi
+}
+
+%%================================
+%% Draft mark
+%%================================
+\RequirePackage { projlib-draft }
+
+%%================================
+%% Theorems
+%%================================
+\RequirePackage { mathtools }
+\RequirePackage { amsthm }
+
+\def\simpleqedsymbol{
+ \makebox[1em]{\rlap{\textcolor{main-text!12!paper}{\rule[-0.1em]{.95em}{.95em}}}{\kern.07em\raisebox{.07em}{\textcolor{paper}{\rule[-0.1em]{.81em}{.81em}}}\kern.07em}}}
+\bool_if:NTF \l__minimalist_theorem_in_new_line_bool
+ {
+ \newtheoremstyle{simple}
+ {.5\baselineskip}{.5\baselineskip}
+ {\normalfont}{}
+ {\normalfont}{}
+ {\newline}
+ { \global\let\qedsymbol\simpleqedsymbol
+ {\thmname{#1}\nobreakspace\thmnumber{#2}}
+ \thmnote{\hspace{.4em}\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\hspace{.4em}\color{main-text!50!paper}\ensuremath{(\text{#3})}}
+ \smallskip
+ \pushQED{\qed}
+ }
+ }
+ {
+ \newtheoremstyle{simple}
+ {.5\baselineskip}{.5\baselineskip}
+ {\normalfont}{}
+ {\normalfont}{}
+ {0pt}
+ { \global\let\qedsymbol\simpleqedsymbol
+ {\thmname{#1}\nobreakspace\thmnumber{#2}}\hspace{.4em}
+ \textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\hspace{.4em}
+ \color{main-text!50!paper}\thmnote{\ensuremath{(\text{#3})}\nobreakspace\nobreakspace}
+ \pushQED{\qed}
+ }
+ }
+\def\@endtheorem{\global\let\qedsymbol\simpleqedsymbol
+ \popQED\endtrivlist\@endpefalse
+ \global\let\qedsymbol\qedsymbolOriginal}
+
+\theoremstyle{simple}
+
+\renewcommand{\qedsymbol}{
+ \makebox[1em]{\color{main-text!27!paper}\rule[-0.1em]{.95em}{.95em}}}
+\let\qedsymbolOriginal\qedsymbol
+
+\bool_if:NTF \l__minimalist_fast_bool
+ {
+ \providecommand{\phantomsection}{}
+ \RequirePackage { url }
+ \newcommand{\href}[2]{#2}
+ }
+ {
+ \PassOptionsToPackage { hidelinks,linktoc=all } { hyperref }
+ \RequirePackage { bookmark }
+ \RequirePackage { hyperref }
+ }
+
+\RequirePackage { projlib-theorem }
+
+\bool_if:NF \l__projlib_theorem_complexname_bool
+ {
+ \exp_args:No \SetTheorem { \c_projlib_theorem_supported_clist }
+ {
+ name style = {
+ , heading style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , Crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , numbering style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ }
+ }
+
+ \SetTheorem { remark }
+ {
+ name style = {
+ , heading style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , numbering style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ }
+ }
+ }
+
+\bool_if:NF \l__minimalist_fast_bool
+ {
+ \bool_if:NT \l__minimalist_theorem_in_new_line_bool
+ {
+ \PassOptionsToPackage { many } { tcolorbox }
+ \RequirePackage { tcolorbox }
+ \cs_new_protected:Nn \minimclass_box_environment:n
+ {
+ \hook_gput_code:nnn { env/#1/before } { minimalist }
+ {
+ \LocallyStopLineNumbers
+ \begin { tcolorbox }
+ [
+ enhanced~jigsaw,
+ frame~hidden,
+ interior~hidden,
+ top = 0pt, bottom = 0pt,
+ left = 0pt, right = 0pt,
+ boxrule = 0pt, boxsep = 0pt,
+ before~skip = 1em+\parskip,
+ after~skip = 1.2em+\parskip,
+ breakable, lines~before~break=3,
+ ]
+ }
+ \hook_gput_code:nnn { env/#1/after } { minimalist }
+ {
+ \end { tcolorbox }
+ \ResumeLineNumbers
+ }
+ }
+ \exp_args:No \clist_map_inline:nn { \c_projlib_theorem_supported_clist }
+ {
+ \minimclass_box_environment:n { #1 }
+ \minimclass_box_environment:n { #1 * }
+ }
+ }
+ }
+
+%%================================
+%% Index
+%%================================
+\hook_gput_code:nnn { begindocument/before } { minimalist }
+{
+ \hook_gput_code:nnn { cmd/printindex/before } { minimalist } { \LocallyStopLineNumbers }
+ \hook_gput_code:nnn { cmd/printindex/after } { minimalist } { \ResumeLineNumbers }
+}
+
+\bool_if:NF \l__minimalist_is_book_bool {
+
+%%================================
+%% Title block style
+%%================================
+\renewcommand{\@maketitle}{
+ \LocallyStopLineNumbers
+ \noindent
+ {\textcolor{main-text!27!paper}{\rule{\textwidth}{0.75pt}}}
+ % \vspace{-\parskip}
+ \vspace{-.5\baselineskip}
+ \begin{flushright}
+ \let\footnote\thanks
+ {\minimalist_bfseries:\@title}\\\medskip
+ \color{main-text!80!paper}
+ {\small\scshape\@author}
+ \par\vspace{-\parskip}\vspace{2pt}
+ {\small\@date}
+ \end{flushright}
+ % \vspace{-\parskip}
+ \vspace{-.5\baselineskip}
+ \ifx\@date\@empty
+ \vspace{\baselineskip}
+ \vspace{1.2\parskip}
+ \else
+ \vspace{-.5\baselineskip}
+ \fi
+ {\textcolor{main-text!27!paper}{\rule{\textwidth}{0.75pt}}\par}
+ \ResumeLineNumbers
+}
+
+\hook_gput_code:nnn { cmd/maketitle/after } { minimalist } { \thispagestyle{fancy} }
+
+%%================================
+%% Abstract style
+%%================================
+\renewenvironment{abstract}
+ {
+ \LocallyStopLineNumbers
+ \begin{flushright}
+ { \g_minimalist_title_font_section_tl \scshape \small\abstractname}\par
+ \vspace{-\parskip}
+ \vspace{-.25\baselineskip}
+ \begin{minipage}[t]{.833\textwidth}
+ \vspace{0pt}
+ \color{main-text!80!paper}
+ \footnotesize
+ \parindent=2em
+ }
+ {
+ \end{minipage}
+ \end{flushright}
+ \bigskip
+ \ResumeLineNumbers
+ }
+
+%%================================
+%% Keyword environment
+%%================================
+\DefineMultilingualText { \keywordname }
+ {
+ EN = Keywords ,
+ FR = Mots~clés ,
+ DE = Schlüsselwörter ,
+ IT = Parole~chiave ,
+ PT = Palavras~chave ,
+ BR = Palavras~chave ,
+ ES = Palabras~clave ,
+ CN = 关键词 ,
+ TC = 關鍵詞 ,
+ JP = キーワード ,
+ RU = Ключевые~слова ,
+ }
+
+\newenvironment{keyword}{
+ \LocallyStopLineNumbers
+ \vspace{-.5\baselineskip}
+ \begin{flushright}
+ {\minimalist_bfseries:\scshape\small\keywordname}\par
+ \vspace{-\parskip}
+ \vspace{-.30\baselineskip}
+ \begin{minipage}[t]{.833\textwidth}
+ \vspace{0pt}
+ \color{main-text!80!paper}
+ \footnotesize
+ \parindent=2em
+ \raggedleft
+}{
+ \end{minipage}
+ \end{flushright}
+ \bigskip
+ \ResumeLineNumbers
+}
+
+%%================================
+%% Simulate features of amsart
+%%================================
+\PassOptionsToPackage { amsfashion } { projlib-author }
+\RequirePackage { projlib-author }
+
+}
+
+\endinput
+%%
+%% End of file `minimalist/minimalist-classical.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/minimalist/minimalist-classical.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/minimalist/minimalist-plain.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/minimalist/minimalist-plain.sty (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/minimalist/minimalist-plain.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -0,0 +1,786 @@
+%%
+%% This is file `minimalist/minimalist-plain.sty',
+%% generated with the docstrip utility.
+
+%% Copyright (C) 2021-2022 by Jinwen XU
+%%
+%% This is part of the minimalist class series.
+%%
+%% This work may be distributed and/or modified under the conditions of the
+%% LaTeX Project Public License, either version 1.3c of this license or (at
+%% your option) any later version. The latest version of this license is in
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of LaTeX version
+%% 2005/12/01 or later.
+%%
+\NeedsTeXFormat{LaTeX2e}[2020-10-01]
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+ {minimalist-plain}
+ {2022/03/17} {}
+ {The plain style of minimalist}
+
+\@ifpackageloaded { minimalist } {}
+ {
+ \msg_new:nnn { \@currname }
+ { minimalist-not-loaded }
+ { "#1"~is~an~internal~style~of~"minimalist".~To~use~it,~you~must~load~the~package~"minimalist"~first. }
+ \msg_warning:nnx { \@currname } { minimalist-not-loaded } { \@currname }
+ \endinput
+ }
+
+%%================================
+%% Title fonts
+%%================================
+\RequirePackage { anyfontsize }
+
+\bool_if:NTF \l__minimalist_use_boldface_bool
+ {
+ \cs_new:Nn \minimalist_bfseries: { \bfseries \colorlet{minimalist-temp-color}{.} \color{minimalist-temp-color!70!paper} }
+ }
+ {
+ \cs_new:Nn \minimalist_bfseries: {}
+ }
+
+\tl_new:N \g_minimalist_title_font_common_tl
+
+\tl_new:N \g_minimalist_title_font_part_tl
+\tl_new:N \g_minimalist_title_font_chapter_tl
+\tl_new:N \g_minimalist_title_font_section_tl
+\tl_new:N \g_minimalist_title_font_subsection_tl
+\tl_new:N \g_minimalist_title_font_subsubsection_tl
+\tl_new:N \g_minimalist_title_font_paragraph_tl
+
+\tl_gset:Nn \g_minimalist_title_font_part_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl }
+\tl_gset:Nn \g_minimalist_title_font_chapter_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl }
+\tl_gset:Nn \g_minimalist_title_font_section_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl \scshape }
+\tl_gset:Nn \g_minimalist_title_font_subsection_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl \scshape }
+\tl_gset:Nn \g_minimalist_title_font_subsubsection_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl }
+\tl_gset:Nn \g_minimalist_title_font_paragraph_tl { \minimalist_bfseries: \g_minimalist_title_font_common_tl \scshape }
+
+\bool_if:NF \l__minimalist_fast_bool
+ {
+ \RequirePackage { tikz }
+ \ExplSyntaxOff
+ \usetikzlibrary{calc,shadings}
+ \ExplSyntaxOn
+ \RequirePackage { tikzpagenodes } % For `current page text area`
+ }
+
+\bool_if:NTF \l__minimalist_fast_bool
+ {
+ \tl_const:Nn \l_minimalist_sep_bar { $|$ }
+ }
+ {
+ \tl_const:Nn \l_minimalist_sep_bar
+ {
+ \skip_horizontal:n { .1em }
+ \tikz[baseline=.125em] \draw[line~width=.9pt] (0,0) -- (0,.9em);
+ \skip_horizontal:n { .1em }
+ }
+ }
+
+%%================================
+%% Footer
+%%================================
+\RequirePackage { geometry }
+\RequirePackage { fancyhdr }
+\RequirePackage { extramarks }
+
+\hook_gput_code:nnn { begindocument/before } { minimalist }
+ {
+ \fancyhfoffset { 0pt }
+ }
+
+\tl_new:N \l_minimalist_leftmark_tl
+\tl_new:N \l_minimalist_rightmark_tl
+
+\tl_set:Nn \l_minimalist_leftmark_tl
+ {
+ \begin{minipage}[t]{.833\textwidth}
+ \lastleftmark
+ \end{minipage}
+ }
+\tl_set:Nn \l_minimalist_rightmark_tl
+ {
+ \begin{minipage}[t]{.833\textwidth}
+ \filleft
+ \lastrightmark
+ \end{minipage}
+ }
+
+\fancypagestyle { fancy }
+ {
+ \fancyhf{}
+ \if at twoside
+ \fancyfoot[RO]{\small\textcolor{main-text!30!paper}{ \l_minimalist_rightmark_tl }
+ \nobreakspace\nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fancyfoot[LE]{\small\leavevmode\llap{\thepage
+ \nobreakspace\nobreakspace\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }}
+ \nobreakspace\nobreakspace\textcolor{main-text!30!paper}{ \l_minimalist_leftmark_tl }}
+ \else
+ \fancyfoot[R]{\small\textcolor{main-text!30!paper}{ \l_minimalist_rightmark_tl }
+ \nobreakspace\nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+ }
+\pagestyle{fancy}
+
+\fancypagestyle { plain }
+ {
+ \fancyhf{}
+ \if at twoside
+ \fancyfoot[RO]{\small
+ \nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fancyfoot[LE]{\small\leavevmode\llap{\thepage
+ \nobreakspace\nobreakspace\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }}}
+ \else
+ \fancyfoot[R]{\small
+ \nobreakspace\rlap{\textcolor{main-text!27!paper}{ \l_minimalist_sep_bar }\nobreakspace\nobreakspace\thepage}}
+ \fi
+ \renewcommand{\headrulewidth}{0pt}
+ }
+
+\bool_if:NTF \l__minimalist_is_book_bool
+ {
+ \bool_if:NTF \l__minimalist_fast_bool
+ {
+ \newcommand{ \minimalist_draw_help_line: }{}
+ }
+ {
+ \newcommand{ \minimalist_draw_help_line: }{
+ \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=main-text,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=main-text,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}
+ }
+ }
+ \fancypagestyle{part}{
+ \fancyhf{}
+ \renewcommand{\headrulewidth}{0pt}
+ \fancyhead[C]{ \minimalist_draw_help_line: }
+ }
+ \addtolength{\headheight}{20pt}
+ \addtolength{\topmargin}{-20pt}
+ \if at twoside
+ \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{}}
+ \else
+ \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
+ \fi
+ \renewcommand*{\sectionmark}[1]{
+ \markright{\g_minimalist_section_decoration_char_tl\nobreakspace\arabic{section}\nobreakspace\g_minimalist_section_decoration_char_tl\nobreakspace\nobreakspace\nobreakspace#1}}
+ }
+ {
+ \if at twoside
+ \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{}}
+ \else
+ \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
+ \fi
+ }
+
+%%================================
+%% Line numbers
+%%================================
+\PassOptionsToPackage { pagewise,mathlines } { lineno }
+\RequirePackage { linenoamsmath }
+\renewcommand{\linenumberfont}{\ttfamily\color{main-text!7!paper}\footnotesize}
+\setlength{\linenumbersep}{1em}
+
+\newif\ifLNturnsON
+\def\LocallyStopLineNumbers{\LNturnsONfalse
+ \ifLineNumbers\LNturnsONtrue\fi\nolinenumbers}
+\def\ResumeLineNumbers{\ifLNturnsON\linenumbers\fi}
+
+\hook_gput_code:nnn { cmd/tableofcontents/before } { minimalist } { \LocallyStopLineNumbers }
+\hook_gput_code:nnn { cmd/tableofcontents/after } { minimalist } { \ResumeLineNumbers }
+\hook_gput_code:nnn { env/bibliography/before } { minimalist } { \LocallyStopLineNumbers }
+\hook_gput_code:nnn { env/bibliography/after } { minimalist } { \ResumeLineNumbers }
+
+%%================================
+%% Title format
+%%================================
+\RequirePackage [ explicit, newparttoc ] { titlesec }
+\PassOptionsToPackage { normalem } { ulem }
+\RequirePackage { ulem }
+
+\cs_generate_variant:Nn \seq_set_split:Nnn { Nnx }
+\cs_new:Nn \minimalist_apply_title_numbering_style:N
+ {
+ \seq_set_split:Nnx \l_tmpa_seq { . } { #1 }
+ \seq_set_map:NNn \l_tmpb_seq \l_tmpa_seq { \usefont{U}{zeur}{b}{n} ##1 }
+ \textcolor{main-text!39!paper}{ \seq_use:Nn \l_tmpb_seq { $.$ } }
+ }
+
+\newcommand{\partstring}{\MakeUppercase{{\partname\nobreakspace\protect\thepart}}}
+
+\AddLanguageSetting
+ {
+ \renewcommand{\partstring}{\MakeUppercase{{\partname\nobreakspace\protect\thepart}}}
+ }
+\AddLanguageSetting [ schinese ]
+ {
+ \renewcommand{\partstring}{第 \nobreakspace\thepart\nobreakspace 部分}
+ }
+\AddLanguageSetting [ tchinese ]
+ {
+ \renewcommand{\partstring}{第 \nobreakspace\thepart\nobreakspace 部分}
+ }
+\AddLanguageSetting [ japanese ]
+ {
+ \renewcommand{\partstring}{第 \nobreakspace\thepart\nobreakspace 部}
+ }
+
+\bool_if:NTF \l__minimalist_is_book_bool
+ {
+ \setcounter{secnumdepth}{3}
+
+ %% Part
+ \titleclass{\part}{top} % make part like a chapter
+ \titleformat{\part}[display]
+ {\thispagestyle{part}
+ \LocallyStopLineNumbers
+ \g_minimalist_title_font_part_tl\filleft}
+ {\partstring}
+ {1em}
+ {\fontsize{20}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+ \titleformat{name=\part,numberless}[display]
+ {\thispagestyle{part}
+ \LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{part}{#1}
+ \g_minimalist_title_font_part_tl\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{main-text!80!paper}\raggedleft#1
+ \end{minipage}
+ \end{flushright}
+ \ResumeLineNumbers
+ \vfill\vfill
+ \cleardoublepage
+ }
+
+ %% Chapter
+ \titleformat{\chapter}
+ {\thispagestyle{fancy}
+ \LocallyStopLineNumbers
+ \color{main-text!80!paper}\g_minimalist_title_font_chapter_tl\fontsize{16}{0}\selectfont}{}{0em}
+ {\rlap{\hspace*{-.5em}{\color{main-text!12!paper}
+ \fontsize{80}{0}\selectfont\raisebox{-7pt}{\thechapter}}}#1}
+ [\ResumeLineNumbers]
+ \titleformat{name=\chapter,numberless}
+ {\thispagestyle{fancy}
+ \LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{chapter}{#1}
+ \color{main-text!80!paper}\g_minimalist_title_font_chapter_tl\fontsize{16}{0}\selectfont}{}{0em}
+ {\rlap{\hspace*{-.5em}{\color{main-text!12!paper}
+ \fontsize{80}{0}\selectfont\normalfont\raisebox{-7pt}{*}}}#1}
+ [\ResumeLineNumbers]
+ }
+ {
+ %% Part
+ \titleformat{\part}[display]
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_part_tl\filleft}
+ {\partstring}
+ {.3em}
+ {\fontsize{16}{0}\selectfont\MakeUppercase{#1}}
+ [\ResumeLineNumbers]
+ \titleformat{name=\part,numberless}[display]
+ {\LocallyStopLineNumbers
+ % \phantomsection\addcontentsline{toc}{part}{#1}
+ \g_minimalist_title_font_part_tl\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{main-text!80!paper}\raggedleft#1
+ \end{minipage}
+ \end{flushright}
+ \ResumeLineNumbers
+ }
+ }
+
+%% Section
+\tl_gset:Nn \g_minimalist_section_decoration_char_tl {}
+\titleformat{\section}
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_section_tl\centering}
+ {\raisebox{-.02\baselineskip}{\large \minimalist_apply_title_numbering_style:N { \thesection } }}{1em}
+ {#1}
+ [\ResumeLineNumbers]
+
+%% Subsection
+\titleformat{\subsection}
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_subsection_tl}
+ { \minimalist_apply_title_numbering_style:N { \thesubsection } }{.75em}
+ {#1}
+ [\ResumeLineNumbers]
+
+%% Subsubsection
+\bool_if:NTF \l__minimalist_runin_bool
+ {
+ \titleformat{\subsubsection}[runin]
+ {\g_minimalist_title_font_subsubsection_tl}
+ { \minimalist_apply_title_numbering_style:N { \thesection } }{.5em}
+ {#1.}[\hspace*{.3em}]
+ }
+ {
+ \titleformat{\subsubsection}
+ {\LocallyStopLineNumbers
+ \g_minimalist_title_font_subsubsection_tl}
+ { \minimalist_apply_title_numbering_style:N { \thesubsubsection } }{.5em}
+ {#1}
+ [\ResumeLineNumbers]
+ }
+
+%% Paragraph
+\titleformat{\paragraph}[runin]
+ { \g_minimalist_title_font_paragraph_tl }{\theparagraph}{1em}{#1}
+
+\titlespacing{\section}{0pt}{\baselineskip}{.6\baselineskip}
+\titlespacing{\subsection}{0pt}{.75\baselineskip}{.4\baselineskip}
+\titlespacing{\subsubsection}{0pt}{.5\baselineskip}{.3\baselineskip}
+
+%%================================
+%% ToC format
+%%================================
+\RequirePackage { titletoc }
+\titlecontents{part}
+ [0em]
+ {\addvspace{1.5pc}\filcenter\normalfont}
+ {\thecontentslabel\nopagebreak\\\nopagebreak\uppercase}
+ {}
+ {} % without page number
+ [\addvspace{.5pc}]
+
+\bool_if:NTF \l__minimalist_is_book_bool
+ {
+ \titlecontents{chapter}
+ [2em] % i.e., 0em (part) + 2em
+ {\addvspace{.5pc}\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2em}}
+ {\hspace*{-2em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{section}
+ [4em] % i.e., 2em (chapter) + 2em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2em}}
+ {\hspace*{-2em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsection}
+ [7em] % i.e., 4em (section) + 3em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.75em}}
+ {\hspace*{-2.75em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsubsection}
+ [9.5em] % i.e., 7em (subsection) + 3.5em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{3.25em}}
+ {\hspace*{-3.25em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ }
+ {
+ \titlecontents{section}
+ [2em] % i.e., 0em (part) + 2em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{1.75em}}
+ {\hspace*{-1.75em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsection}
+ [4.5em] % i.e., 2em (section) + 2.5em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.25em}}
+ {\hspace*{-2.25em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ \titlecontents{subsubsection}
+ [7.5em] % i.e., 4.5em (subsection) + 3em
+ {\normalfont}
+ {\contentslabel[ \minimalist_apply_title_numbering_style:N { \thecontentslabel } ]{2.75em}}
+ {\hspace*{-2.75em}}
+ {\titlerule*[1em]{\textcolor{main-text!15!paper}{.}}\contentspage}
+ }
+
+%%================================
+%% Lists
+%%================================
+\RequirePackage { enumitem }
+\setlist{noitemsep}
+\setlist[enumerate]{labelsep=*, leftmargin=*}
+\setlist[enumerate,1]{label=\arabic*$)$,
+ ref = \arabic*$)$}
+\setlist[enumerate,2]{label=\emph{\roman*}$)$,
+ ref = \arabic{enumi}.\emph{\roman*}$)$}
+\setlist[enumerate,3]{label=\emph{\alph*}$)$,
+ ref = \arabic{enumi}.\emph{\roman{enumii}}.\emph{\alph*}$)$}
+\setlist[description]{font=\normalfont\minimalist_bfseries:}
+
+\setlist[itemize]{leftmargin=*}
+\AddLanguageSetting { \setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{$\bullet$}} }
+\AddLanguageSetting [french] { \setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!55!paper}{---}} }
+\setlist[itemize,2]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{--}}
+\setlist[itemize,3]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{\texttt{*}}}
+
+%%================================
+%% Blank page
+%%================================
+\newcommand{\blinkpagetext}{This~page~is~intentionally~left~blank}
+\renewcommand{\cleardoublepage}{
+ \relax
+ \clearpage
+ \if at twoside\ifodd\c at page\relax\else
+ \thispagestyle{empty}
+ \hook_gput_next_code:nn { shipout/background }
+ {
+ \put(0.5\paperwidth,-0.5\paperheight){
+ \makebox[0pt]{\large\color{main-text!10!paper}\blinkpagetext}}
+ }
+ \null\newpage\fi\fi
+}
+
+%%================================
+%% Draft mark
+%%================================
+\RequirePackage { projlib-draft }
+
+%%================================
+%% Theorems
+%%================================
+\RequirePackage { mathtools }
+\RequirePackage { amsthm }
+
+\bool_if:NTF \l__minimalist_theorem_in_new_line_bool
+ {
+ \newtheoremstyle{simple}
+ {}{}
+ {\normalfont}{}
+ {\normalfont}{}
+ {\newline}
+ {{\thmname{#1}\nobreakspace\thmnumber{#2}}
+ {\color{main-text!50!paper}\thmnote{\hspace{.4em}\ensuremath{(\text{#3})}}}\smallskip}
+ }
+ {
+ \newtheoremstyle{simple}
+ {}{}
+ {\normalfont}{}
+ {\normalfont}{}
+ {0pt}
+ {{\thmname{#1}\nobreakspace\thmnumber{#2}}
+ {\color{main-text!50!paper}\thmnote{\hspace{.4em}\ensuremath{(\text{#3})}}}\nobreakspace\nobreakspace{\normalfont\textcolor{main-text!27!paper}{---}}\nobreakspace\nobreakspace}
+ }
+
+\theoremstyle{simple}
+
+\renewcommand{\qedsymbol}{
+ \makebox[1em]{\color{main-text!27!paper}\rule[-0.1em]{.95em}{.95em}}}
+\let\qedsymbolOriginal\qedsymbol
+
+\bool_if:NTF \l__minimalist_fast_bool
+ {
+ \providecommand{\phantomsection}{}
+ \RequirePackage { url }
+ \newcommand{\href}[2]{#2}
+ }
+ {
+ \PassOptionsToPackage { hidelinks,linktoc=all } { hyperref }
+ \RequirePackage { bookmark }
+ \RequirePackage { hyperref }
+ }
+
+\RequirePackage { projlib-theorem }
+
+\bool_if:NF \l__projlib_theorem_complexname_bool
+ {
+ \exp_args:No \SetTheorem { \c_projlib_theorem_supported_clist }
+ {
+ name style = {
+ , heading style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , Crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textsc
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , numbering style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ }
+ }
+
+ \SetTheorem { remark }
+ {
+ name style = {
+ , heading style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , crefname style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl\textit
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ , numbering style = {
+ , english = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , french = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , ngerman = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , italian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , portuguese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , brazilian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , spanish = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , schinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , tchinese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , japanese = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ , russian = \minimalist_bfseries:\g_minimalist_title_font_common_tl
+ }
+ }
+ }
+ }
+
+\bool_if:NF \l__minimalist_fast_bool
+ {
+ \bool_if:NT \l__minimalist_theorem_in_new_line_bool
+ {
+ \PassOptionsToPackage { many } { tcolorbox }
+ \RequirePackage { tcolorbox }
+ \cs_new_protected:Nn \minimclass_box_environment:n
+ {
+ \hook_gput_code:nnn { env/#1/before } { minimalist }
+ {
+ \LocallyStopLineNumbers
+ \begin { tcolorbox }
+ [
+ enhanced~jigsaw,
+ frame~hidden,
+ interior~hidden,
+ top = 0pt, bottom = 0pt,
+ left = 0pt, right = 0pt,
+ boxrule = 0pt, boxsep = 0pt,
+ before~skip = 1em+\parskip,
+ after~skip = 1.2em+\parskip,
+ breakable, lines~before~break=3,
+ ]
+ }
+ \hook_gput_code:nnn { env/#1/after } { minimalist }
+ {
+ \end { tcolorbox }
+ \ResumeLineNumbers
+ }
+ }
+ \exp_args:No \clist_map_inline:nn { \c_projlib_theorem_supported_clist }
+ {
+ \minimclass_box_environment:n { #1 }
+ \minimclass_box_environment:n { #1 * }
+ }
+ }
+ }
+
+%%================================
+%% Index
+%%================================
+\hook_gput_code:nnn { begindocument/before } { minimalist }
+{
+ \hook_gput_code:nnn { cmd/printindex/before } { minimalist } { \LocallyStopLineNumbers }
+ \hook_gput_code:nnn { cmd/printindex/after } { minimalist } { \ResumeLineNumbers }
+}
+
+\bool_if:NF \l__minimalist_is_book_bool {
+
+%%================================
+%% Title block style
+%%================================
+\renewcommand{\@maketitle}{
+ \LocallyStopLineNumbers
+ \begin{center}
+ \let\footnote\thanks
+ {\minimalist_bfseries:\sffamily\scshape\Large\@title}\\\bigskip
+ \color{main-text!80!paper}
+ {\small\scshape\@author}
+ \par\smallskip\vspace{-\parskip}
+ {\small\@date}
+ \end{center}
+ \ifx\@date\@empty\medskip\fi
+ \medskip\par
+ \ResumeLineNumbers
+}
+
+\hook_gput_code:nnn { cmd/maketitle/after } { minimalist } { \thispagestyle{fancy} }
+
+%%================================
+%% Abstract style
+%%================================
+\renewenvironment{abstract}
+ {
+ \LocallyStopLineNumbers
+ \vspace{-.5\baselineskip}
+ \begin{center}
+ { \g_minimalist_title_font_section_tl \scshape \small\abstractname}\\
+ \vspace{-.3\baselineskip}
+ \begin{minipage}[t]{.833\textwidth}
+ \vspace{0pt}
+ \color{main-text!80!paper}
+ \footnotesize
+ \parindent=2em
+ }
+ {
+ \end{minipage}
+ \end{center}
+ \medskip
+ \ResumeLineNumbers
+ }
+
+%%================================
+%% Keyword environment
+%%================================
+\DefineMultilingualText { \keywordname }
+ {
+ EN = Keywords ,
+ FR = Mots~clés ,
+ DE = Schlüsselwörter ,
+ IT = Parole~chiave ,
+ PT = Palavras~chave ,
+ BR = Palavras~chave ,
+ ES = Palabras~clave ,
+ CN = 关键词 ,
+ TC = 關鍵詞 ,
+ JP = キーワード ,
+ RU = Ключевые~слова ,
+ }
+
+\newenvironment{keyword}{
+ \LocallyStopLineNumbers
+ \vspace{-.75\baselineskip}
+ \begin{center}
+ {\minimalist_bfseries:\scshape\small\keywordname}\\
+ \vspace{-.3\baselineskip}
+ \begin{minipage}[t]{.833\textwidth}
+ \vspace{0pt}
+ \color{main-text!80!paper}
+ \footnotesize
+ \parindent=2em
+ \begin{center}
+}{
+ \end{center}
+ \end{minipage}
+ \end{center}
+ \medskip
+ \ResumeLineNumbers
+}
+
+%%================================
+%% Simulate features of amsart
+%%================================
+\PassOptionsToPackage { amsfashion } { projlib-author }
+\RequirePackage { projlib-author }
+
+}
+
+\endinput
+%%
+%% End of file `minimalist/minimalist-plain.sty'.
Property changes on: trunk/Master/texmf-dist/tex/latex/minimalist/minimalist-plain.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/latex/minimalist/minimalist.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/minimalist/minimalist.sty 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/minimalist/minimalist.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimalist.sty',
%% generated with the docstrip utility.
-%% Copyright (C) 2021 by Jinwen XU
+%% Copyright (C) 2021-2022 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -16,907 +16,77 @@
%% 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
-\ProvidesPackage{minimalist}
- [2021/12/16 A simple and clear style for articles and books]
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{%
- family = @minimalist,
- prefix = @minimalist@
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{puretext}
-\DeclareBoolOption[false]{nothms}
-\DeclareBoolOption[false]{delaythms}
-\DeclareBoolOption[false]{nothmnum}
-\DeclareStringOption{thmnum}[minimalist at thmnum@default]
-\DeclareBoolOption[true]{regionalref}
-\DeclareBoolOption[false]{originalref}
-\DeclareBoolOption[false]{allowbf}
-\DeclareBoolOption[false]{classical}
-\DeclareBoolOption[false]{runin}
-\ProcessKeyvalOptions*\relax
+\RequirePackage{l3keys2e}
+\ProvidesExplPackage
+ {minimalist}
+ {2022/03/17} {}
+ {A simple and clear style for articles and books}
-\if at minimalist@originalref
- \@minimalist at regionalreffalse
-\fi
-\if at minimalist@draft
- \@minimalist at fasttrue
-\fi
-\if at minimalist@puretext
- \@minimalist at nothmstrue
-\fi
+\keys_define:nn { minimalist }
+ {
+ , draft .bool_set:N = \l__minimalist_fast_bool
+ , draft .initial:n = { false }
+ , fast .bool_set:N = \l__minimalist_fast_bool
-\if at minimalist@fast
- \PassOptionsToPackage{fast}{PJLdraft}
- \PassOptionsToPackage{fast}{PJLthm}
-\fi
-\expandafter\ifstrempty\expandafter{\@minimalist at thmnum}{}{
- \expandafter\ifstrequal\expandafter{\@minimalist at thmnum}{minimalist at thmnum@default}{
- \PassOptionsToPackage{thmnum}{PJLthm}
- }{
- \PassOptionsToPackage{thmnum=\@minimalist at thmnum}{PJLthm}
- }
-}
-\if at minimalist@regionalref\else
- \PassOptionsToPackage{originalref}{PJLthm}
-\fi
+ , style .str_set:N = \l__minimalist_style_str
+ , style .initial:n = { plain }
+ , classical .meta:n = { style = classical }
-\if at minimalist@allowbf
- \newcommand{\conditionalbfseries}{\bfseries\colorlet{PJLtempcolor}{.}\color{PJLtempcolor!83!paper}}
-\else
- \newcommand{\conditionalbfseries}{}
-\fi
+ , use-boldface .bool_set:N = \l__minimalist_use_boldface_bool
+ , use-boldface .initial:n = { false }
+ , use~boldface .bool_set:N = \l__minimalist_use_boldface_bool
+ , use boldface .bool_set:N = \l__minimalist_use_boldface_bool
+ , usebf .bool_set:N = \l__minimalist_use_boldface_bool
+ , allow-boldface .bool_set:N = \l__minimalist_use_boldface_bool
+ , allow~boldface .bool_set:N = \l__minimalist_use_boldface_bool
+ , allow boldface .bool_set:N = \l__minimalist_use_boldface_bool
+ , allowbf .bool_set:N = \l__minimalist_use_boldface_bool
+ , runin .bool_set:N = \l__minimalist_runin_bool
+ , runin .initial:n = { false }
-\newif\ifIsBook
-\ifdefined\c at chapter\IsBooktrue\else\IsBookfalse\fi
+ , theorem-in-new-line .bool_set:N = \l__minimalist_theorem_in_new_line_bool
+ , theorem-in-new-line .initial:n = { false }
+ , theorem~in~new~line .bool_set:N = \l__minimalist_theorem_in_new_line_bool
+ , theorem in new line .bool_set:N = \l__minimalist_theorem_in_new_line_bool
-%%================================
-%% Title fonts
-%%================================
-\RequirePackage{anyfontsize}
+ , unknown .code:n = {
+ \PassOptionsToPackage { \CurrentOption } { projlib-language }
+ \PassOptionsToPackage { \CurrentOption } { projlib-author }
+ \PassOptionsToPackage { \CurrentOption } { projlib-datetime }
+ \PassOptionsToPackage { \CurrentOption } { projlib-draft }
+ \PassOptionsToPackage { \CurrentOption } { projlib-font }
+ \PassOptionsToPackage { \CurrentOption } { projlib-logo }
+ \PassOptionsToPackage { \CurrentOption } { projlib-math }
+ \PassOptionsToPackage { \CurrentOption } { projlib-paper }
+ \PassOptionsToPackage { \CurrentOption } { projlib-theorem }
+ }
+ }
+\ProcessKeysOptions { minimalist }
-\def\minimalist at titlefontshape{}
+\bool_new:N \l__minimalist_is_book_bool
+\cs_if_exist:cTF { c at chapter }
+ {
+ \bool_set_true:N \l__minimalist_is_book_bool
+ }
+ {
+ \bool_set_false:N \l__minimalist_is_book_bool
+ }
-\if at minimalist@classical
-\newcommand{\partfont}{\conditionalbfseries\minimalist at titlefontshape}
-\newcommand{\chapfont}{\conditionalbfseries\minimalist at titlefontshape}
-\newcommand{\secfont}{\conditionalbfseries}
-\newcommand{\subsecfont}{\conditionalbfseries}
-\newcommand{\subsubsecfont}{\conditionalbfseries\itshape}
-\else
-\newcommand{\partfont}{\conditionalbfseries\minimalist at titlefontshape}
-\newcommand{\chapfont}{\conditionalbfseries\minimalist at titlefontshape}
-\newcommand{\secfont}{\conditionalbfseries\minimalist at titlefontshape}
-\newcommand{\subsecfont}{\conditionalbfseries\minimalist at titlefontshape}
-\newcommand{\subsubsecfont}{\conditionalbfseries\minimalist at titlefontshape}
-\fi
-
%%================================
-%% Paper configuration
+%% Paper configuration
%%================================
-\RequirePackage{PJLpaper}
+\RequirePackage { projlib-paper }
%%================================
-%% Footer
+%% Multi-language support
%%================================
-\RequirePackage{geometry}
-\RequirePackage{fancyhdr}
-\RequirePackage{extramarks}
+\RequirePackage { projlib-language }
-\AtEndPreamble{\fancyhfoffset{0pt}}
-
-\fancypagestyle{fancy}{
- \fancyhf{}
- \if at twoside
- \fancyfoot[RO]{\small\textcolor{maintext!30!paper}{\lastrightmark}%
- ~~\rlap{\textcolor{maintext!27!paper}{$|$}~~\thepage}}
- \fancyfoot[LE]{\small\leavevmode\llap{\thepage%
- ~~\textcolor{maintext!27!paper}{$|$}}%
- ~~\textcolor{maintext!30!paper}{\lastleftmark}}
- \else
- \fancyfoot[R]{\small\textcolor{maintext!30!paper}{\lastrightmark}%
- ~~\rlap{\textcolor{maintext!27!paper}{$|$}~~\thepage}}
- \fi
- \renewcommand{\headrulewidth}{0pt}
-}
-\pagestyle{fancy}
-
-\fancypagestyle{plain}{
- \fancyhf{}
- \if at twoside
- \fancyfoot[RO]{\small%
- ~\rlap{\textcolor{maintext!27!paper}{$|$}~~\thepage}}
- \fancyfoot[LE]{\small\leavevmode\llap{\thepage%
- ~~\textcolor{maintext!27!paper}{$|$}}}
- \else
- \fancyfoot[R]{\small%
- ~\rlap{\textcolor{maintext!27!paper}{$|$}~~\thepage}}
- \fi
- \renewcommand{\headrulewidth}{0pt}
-}
-\ifbool{IsBook}{
- \if at minimalist@fast
- \newcommand{\drawHelpLine}{}
- \else
- \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=maintext,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=maintext,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}%
- }
- \fi
- \fancypagestyle{part}{
- \fancyhf{}
- \renewcommand{\headrulewidth}{0pt}
- \fancyhead[C]{\drawHelpLine}
- }
- \addtolength{\headheight}{20pt}
- \addtolength{\topmargin}{-20pt}
- \if at twoside
- \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{}}
- \else
- \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
- \fi
- \renewcommand*{\sectionmark}[1]{%
- \markright{\sec at decochar~\arabic{section}~\sec at decochar~~~#1}}
-}{
- \if at twoside
- \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{}}
- \else
- \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}}
- \fi
-}
%%================================
-%% Languages and line spacing
+%% Loading the style
%%================================
-\RequirePackage{PJLlang}
-\PJLsetlinespacing{\setstretch{1.07}}
-\PJLsetCJKlinespacing{\onehalfspacing}
-\raggedbottom
+\exp_args:No \RequirePackage { minimalist- \l__minimalist_style_str }
-%%================================
-%% Line numbers
-%%================================
-\PassOptionsToPackage{pagewise,mathlines}{lineno}
-\RequirePackage{linenoamsmath}
-\renewcommand\linenumberfont{\ttfamily\color{maintext!7!paper}\footnotesize}
-\setlength\linenumbersep{1em}
-
-\newif\ifLNturnsON
-\def\LocallyStopLineNumbers{\LNturnsONfalse%
- \ifLineNumbers\LNturnsONtrue\fi\nolinenumbers}
-\def\ResumeLineNumbers{\ifLNturnsON\linenumbers\fi}
-
-\pretocmd{\tableofcontents}{\LocallyStopLineNumbers}{}{\FAIL}
-\apptocmd{\tableofcontents}{\ResumeLineNumbers}{}{\FAIL}
-\pretocmd{\thebibliography}{\LocallyStopLineNumbers}{}{\FAIL}
-\apptocmd{\endthebibliography}{\ResumeLineNumbers}{}{\FAIL}
-
-%%================================
-%% Title format
-%%================================
-\RequirePackage[explicit,newparttoc]{titlesec}
-\PassOptionsToPackage{normalem}{ulem}
-\RequirePackage{ulem}
-
-\newcommand{\partstring}{\MakeUppercase{{\partname~\protect\thepart}}}
-\gappto{\PJLlang at langconfig@common}{%
-\renewcommand{\partstring}{\MakeUppercase{{\partname~\protect\thepart}}}%
-}
-\gappto{\PJLlang at langconfig@CN}{%
-\renewcommand{\partstring}{第~\thepart~部分}%
-}
-\gappto{\PJLlang at langconfig@TC}{%
-\renewcommand{\partstring}{第~\thepart~部分}%
-}
-\gappto{\PJLlang at langconfig@JP}{%
-\renewcommand{\partstring}{第~\thepart~部}%
-}
-
-\ifbool{IsBook}{
- %% Part
- \titleclass{\part}{top} % make part like a chapter
- \titleformat{\part}[display]
- {\thispagestyle{part}%
- \LocallyStopLineNumbers%
- \partfont\filleft}
- {\partstring}
- {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{maintext!80!paper}\raggedleft#1%
- \end{minipage}%
- \end{flushright}%
- \ResumeLineNumbers%
- \vfill\vfill%
- \cleardoublepage%
- }
-
- %% Chapter
- \titleformat{\chapter}
- {\thispagestyle{fancy}%
- \LocallyStopLineNumbers%
- \color{maintext!80!paper}\chapfont\fontsize{16}{0}\selectfont}{}{0em}
- {\rlap{\hspace*{-.5em}{\color{maintext!12!paper}%
- \fontsize{80}{0}\selectfont\raisebox{-7pt}{\thechapter}}}#1}
- [\ResumeLineNumbers]
- \titleformat{name=\chapter,numberless}
- {\thispagestyle{fancy}%
- \LocallyStopLineNumbers%
- % \phantomsection\addcontentsline{toc}{chapter}{#1}%
- \color{maintext!80!paper}\chapfont\fontsize{16}{0}\selectfont}{}{0em}
- {\rlap{\hspace*{-.5em}{\color{maintext!12!paper}%
- \fontsize{80}{0}\selectfont\normalfont\raisebox{-7pt}{*}}}#1}
- [\ResumeLineNumbers]
-}{
- %% Part
- \titleformat{\part}[display]
- {\LocallyStopLineNumbers%
- \partfont\filleft}
- {\partstring}
- {.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{maintext!80!paper}\raggedleft#1%
- \end{minipage}%
- \end{flushright}%
- \ResumeLineNumbers%
- }
-}
-
-%% Section
-\if at minimalist@classical
-\renewcommand\thesection{\arabic{section}}
-\newcommand\seculine{\bgroup\markoverwith{\color{maintext!27!paper}%
- \rule[-0.9ex]{2pt}{.6pt}\hspace{-2pt}\rule[-1.2ex]{2pt}{.6pt}}\ULon}
-\newcommand\sec at decochar{\raisebox{.03em}{\normalfont/}}
-\titleformat{\section}
- {\LocallyStopLineNumbers%
- \secfont\centering}{}{0em}
- {{\small\textcolor{maintext!27!paper}{\footnotesize\sec at decochar}%
- \,\,\textcolor{maintext!90!paper}{\conditionalbfseries\arabic{section}}%
- \,\,\textcolor{maintext!27!paper}{\footnotesize\sec at decochar}}\\
- \seculine{#1}}
- [\ResumeLineNumbers]
-\titleformat{name=\section,numberless}
- {\LocallyStopLineNumbers%
- % \phantomsection\addcontentsline{toc}{section}{#1}%
- \secfont\centering}{}{0em}
- {\seculine{#1}}
- [\ResumeLineNumbers]
-\else
-\newcommand\sec at decochar{}
-\titleformat{\section}
- {\LocallyStopLineNumbers%
- \secfont\centering}
- {\thesection}{.75em}
- {#1}
- [\ResumeLineNumbers]
-\fi
-
-%% Subsection
-\if at minimalist@classical
-\renewcommand\thesubsection{%
- \ifnum\c at section=0\else\arabic{section}.\fi\arabic{subsection}}
-\newcommand\subseculine{\bgroup\markoverwith{\color{maintext!27!paper}%
- \rule[-1ex]{2pt}{.75pt}}\ULon}
-\titleformat{\subsection}
- {\LocallyStopLineNumbers%
- \subsecfont}{}{0em}
- {\subseculine{\thesubsection~\textcolor{maintext!27!paper}{$|$}~#1}}
- [\ResumeLineNumbers]
-\titleformat{name=\subsection,numberless}
- {\LocallyStopLineNumbers%
- \subsecfont}{}{0em}
- {\subseculine{#1}}
- [\ResumeLineNumbers]
-\else
-\titleformat{\subsection}
- {\LocallyStopLineNumbers%
- \subsecfont}
- {\thesubsection}{.75em}
- {#1}
- [\ResumeLineNumbers]
-\fi
-
-%% Subsubsection
-\if at minimalist@runin
-\titleformat{\subsubsection}[runin]
- {\color{maintext!70!paper}\subsubsecfont}{\thesubsubsection}{.5em}
- {#1.}[\hspace*{.3em}]
-\else
-\titleformat{\subsubsection}
- {\LocallyStopLineNumbers%
- \color{maintext!70!paper}\subsubsecfont}{\thesubsubsection}{.5em}
- {#1}
- [\ResumeLineNumbers]
-\fi
-
-%% Paragraph
-\titleformat{\paragraph}[runin]
- {\scshape}{\theparagraph}{1em}{#1}
-
-\titlespacing{\section}{0pt}{\baselineskip}{.6\baselineskip}
-\titlespacing{\subsection}{0pt}{.75\baselineskip}{.4\baselineskip}
-\titlespacing{\subsubsection}{0pt}{.5\baselineskip}{.2\baselineskip}
-
-%%================================
-%% ToC format
-%%================================
-\RequirePackage{titletoc}
-\titlecontents{part}
- [0em]
- {\addvspace{1.5pc}\filcenter\normalfont}
- {\thecontentslabel\nopagebreak\\\nopagebreak\uppercase}
- {}
- {} % without page number
- [\addvspace{.5pc}]
-\ifbool{IsBook}{
- \titlecontents{chapter}
- [2em] % i.e., 0em (part) + 2em
- {\addvspace{.5pc}\normalfont}
- {\contentslabel{2em}}
- {\hspace*{-2em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
- \titlecontents{section}
- [4em] % i.e., 2em (chapter) + 2em
- {\normalfont}
- {\contentslabel[\textcolor{maintext!27!paper}{\small\sec at decochar}\,\textcolor{maintext!90!paper}{\thecontentslabel}\,\textcolor{maintext!27!paper}{\small\sec at decochar}]{2em}}
- {\hspace*{-2em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
- \titlecontents{subsection}
- [6.5em] % i.e., 4em (section) + 2.5em
- {\normalfont}
- {\contentslabel{2.25em}}
- {\hspace*{-2.25em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
- \titlecontents{subsubsection}
- [8.5em] % i.e., 6.5em (subsection) + 3em
- {\normalfont}
- {\contentslabel{2.75em}}
- {\hspace*{-2.75em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
-}{
- \titlecontents{section}
- [2em] % i.e., 0em (part) + 2em
- {\normalfont}
- {\contentslabel{1.75em}}
- {\hspace*{-1.75em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
- \titlecontents{subsection}
- [4.5em] % i.e., 2em (section) + 2.5em
- {\normalfont}
- {\contentslabel{2.25em}}
- {\hspace*{-2.25em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
- \titlecontents{subsubsection}
- [7.5em] % i.e., 4.5em (subsection) + 3em
- {\normalfont}
- {\contentslabel{2.75em}}
- {\hspace*{-2.75em}}
- {\titlerule*[1em]{\textcolor{maintext!15!paper}{.}}\contentspage}
-}
-
-%%================================
-%% Lists
-%%================================
-\RequirePackage{enumitem}
-\setlist{noitemsep}
-\setlist[enumerate]{labelsep=*, leftmargin=*}
-\setlist[enumerate,1]{label=\arabic*$)$,
- ref = \arabic*$)$}
-\setlist[enumerate,2]{label=\emph{\roman*}$)$,
- ref = \arabic{enumi}.\emph{\roman*}$)$}
-\setlist[enumerate,3]{label=\emph{\alph*}$)$,
- ref = \arabic{enumi}.\emph{\roman{enumii}}.\emph{\alph*}$)$}
-\setlist[description]{font=\normalfont\conditionalbfseries}
-\if at minimalist@classical
-\newcommand\desculine{\colorlet{currentcolor}{.}\bgroup\markoverwith{\color{currentcolor!50!paper}%
- \rule[-.45ex]{2pt}{.75pt}}\ULon}
-\renewcommand{\descriptionlabel}[1]{%
- \hspace{\labelsep}\normalfont\desculine{#1}%
-}
-\fi
-
-\setlist[itemize]{leftmargin=*}
-\gappto{\PJLlang at langconfig@common}{\setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{$\bullet$}}}
-\gappto{\PJLlang at langconfig@FR}{\setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!50!paper}{---}}}
-\setlist[itemize,2]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{--}}
-\setlist[itemize,3]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{\texttt{*}}}
-
-%%================================
-%% Blank page
-%%================================
-\newcommand{\blinkpagetext}{This page is intentionally left blank}
-\renewcommand{\cleardoublepage}{\relax
- \clearpage
- \if at twoside\ifodd\c at page\relax\else
- \thispagestyle{empty}
- \AddToHookNext{shipout/background}
- {%
- \put(0.5\paperwidth,-0.5\paperheight){%
- \makebox[0pt]{\large\color{maintext!10!paper}\blinkpagetext}}}
- \null\newpage\fi\fi}
-
-%%================================
-%% Draft mark
-%%================================
-\RequirePackage{PJLdraft}
-
-%%================================
-%% Theorems
-%%================================
-\RequirePackage{mathtools}
-\RequirePackage{amsthm}
-\if at minimalist@classical
-\def\simpleqedsymbol{%
- \makebox[1em]{\rlap{\textcolor{maintext!12!paper}{\rule[-0.1em]{.95em}{.95em}}}{\kern.07em\raisebox{.07em}{\textcolor{paper}{\rule[-0.1em]{.81em}{.81em}}}\kern.07em}}}
-\newtheoremstyle{simple}%
- {}{}%
- {\normalfont}{}%
- {\normalfont}{}%
- {0pt}%
- {\global\let\qedsymbol\simpleqedsymbol%
- {\conditionalbfseries\thmname{#1}\thmnumber{ #2}}\hspace{.4em}%
- \textcolor{maintext!27!paper}{$|$}\hspace{.4em}%
- \color{maintext!50!paper}\thmnote{\ensuremath{(\text{#3})}~~}%
- \pushQED{\qed}%
- }
-\def\@endtheorem{\global\let\qedsymbol\simpleqedsymbol%
- \popQED\endtrivlist\@endpefalse
- \global\let\qedsymbol\qedsymbolOriginal}
-\else
- \newtheoremstyle{simple}%
- {}{}%
- {\normalfont}{}%
- {\normalfont}{}%
- {0pt}%
- {{\conditionalbfseries\minimalist at titlefontshape\thmname{#1}\thmnumber{ #2}}%
- {\color{maintext!50!paper}\thmnote{\hspace{.4em}\ensuremath{(\text{#3})}}}~~{\normalfont---}~~}
-\fi
-
-\renewcommand{\qedsymbol}{%
- \makebox[1em]{\color{maintext!27!paper}\rule[-0.1em]{.95em}{.95em}}}
-\let\qedsymbolOriginal\qedsymbol
-
-\if at minimalist@fast
- \providecommand{\phantomsection}{}
- \RequirePackage{url}
- \newcommand{\href}[2]{#2}
-\else
- \PassOptionsToPackage{hidelinks,linktoc=all}{hyperref}
- \RequirePackage{bookmark}
- \RequirePackage{hyperref}
-\fi
-
-\PassOptionsToPackage{nothms,simplename}{PJLthm}
-\RequirePackage{PJLthm}
-
-\pretocmd{\theoremnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanameEN}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynameEN}{\textsc}{}{\FAIL}
-\pretocmd{\propertynameEN}{\textsc}{}{\FAIL}
-\pretocmd{\factnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenameEN}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\notationnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\examplenameEN}{\textsc}{}{\FAIL}
-\pretocmd{\problemnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\questionnameEN}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenameEN}{\textsc}{}{\FAIL}
-\pretocmd{\remarknameEN}{\itshape}{}{\FAIL}
-\pretocmd{\observationnameEN}{\itshape}{}{\FAIL}
-
-\pretocmd{\theoremnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanameFR}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynameFR}{\textsc}{}{\FAIL}
-\pretocmd{\propertynameFR}{\textsc}{}{\FAIL}
-\pretocmd{\factnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenameFR}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\notationnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\examplenameFR}{\textsc}{}{\FAIL}
-\pretocmd{\problemnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\questionnameFR}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenameFR}{\textsc}{}{\FAIL}
-\pretocmd{\remarknameFR}{\itshape}{}{\FAIL}
-\pretocmd{\observationnameFR}{\itshape}{}{\FAIL}
-
-\pretocmd{\theoremnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanameDE}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynameDE}{\textsc}{}{\FAIL}
-\pretocmd{\propertynameDE}{\textsc}{}{\FAIL}
-\pretocmd{\factnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenameDE}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\notationnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\examplenameDE}{\textsc}{}{\FAIL}
-\pretocmd{\problemnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\questionnameDE}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenameDE}{\textsc}{}{\FAIL}
-\pretocmd{\remarknameDE}{\itshape}{}{\FAIL}
-\pretocmd{\observationnameDE}{\itshape}{}{\FAIL}
-
-\pretocmd{\theoremnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanameIT}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynameIT}{\textsc}{}{\FAIL}
-\pretocmd{\propertynameIT}{\textsc}{}{\FAIL}
-\pretocmd{\factnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenameIT}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\notationnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\examplenameIT}{\textsc}{}{\FAIL}
-\pretocmd{\problemnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\questionnameIT}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenameIT}{\textsc}{}{\FAIL}
-\pretocmd{\remarknameIT}{\itshape}{}{\FAIL}
-\pretocmd{\observationnameIT}{\itshape}{}{\FAIL}
-
-\pretocmd{\theoremnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanamePT}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynamePT}{\textsc}{}{\FAIL}
-\pretocmd{\propertynamePT}{\textsc}{}{\FAIL}
-\pretocmd{\factnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenamePT}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\notationnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\examplenamePT}{\textsc}{}{\FAIL}
-\pretocmd{\problemnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\questionnamePT}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenamePT}{\textsc}{}{\FAIL}
-\pretocmd{\remarknamePT}{\itshape}{}{\FAIL}
-\pretocmd{\observationnamePT}{\itshape}{}{\FAIL}
-
-\pretocmd{\theoremnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanameBR}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynameBR}{\textsc}{}{\FAIL}
-\pretocmd{\propertynameBR}{\textsc}{}{\FAIL}
-\pretocmd{\factnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenameBR}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\notationnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\examplenameBR}{\textsc}{}{\FAIL}
-\pretocmd{\problemnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\questionnameBR}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenameBR}{\textsc}{}{\FAIL}
-\pretocmd{\remarknameBR}{\itshape}{}{\FAIL}
-\pretocmd{\observationnameBR}{\itshape}{}{\FAIL}
-
-\pretocmd{\theoremnameES}{\textsc}{}{\FAIL}
-\pretocmd{\lemmanameES}{\textsc}{}{\FAIL}
-\pretocmd{\propositionnameES}{\textsc}{}{\FAIL}
-\pretocmd{\corollarynameES}{\textsc}{}{\FAIL}
-\pretocmd{\propertynameES}{\textsc}{}{\FAIL}
-\pretocmd{\factnameES}{\textsc}{}{\FAIL}
-\pretocmd{\conjecturenameES}{\textsc}{}{\FAIL}
-\pretocmd{\definitionnameES}{\textsc}{}{\FAIL}
-\pretocmd{\axiomnameES}{\textsc}{}{\FAIL}
-\pretocmd{\assumptionnameES}{\textsc}{}{\FAIL}
-\pretocmd{\conventionnameES}{\textsc}{}{\FAIL}
-\pretocmd{\hypothesisnameES}{\textsc}{}{\FAIL}
-\pretocmd{\notationnameES}{\textsc}{}{\FAIL}
-\pretocmd{\examplenameES}{\textsc}{}{\FAIL}
-\pretocmd{\problemnameES}{\textsc}{}{\FAIL}
-\pretocmd{\questionnameES}{\textsc}{}{\FAIL}
-\pretocmd{\exercisenameES}{\textsc}{}{\FAIL}
-\pretocmd{\remarknameES}{\itshape}{}{\FAIL}
-\pretocmd{\observationnameES}{\itshape}{}{\FAIL}
-
-
-\theoremstyle{simple}
-
-\def\minimalist at definethms{
-\if at minimalist@nothms\else
-\if at minimalist@nothmnum
-\CreateTheorem*{theorem}
-\CreateTheorem*{lemma}
-\CreateTheorem*{proposition}
-\CreateTheorem*{corollary}
-\CreateTheorem*{definition-proposition}
-\CreateTheorem*{definition-theorem}
-\CreateTheorem*{property}
-\CreateTheorem*{fact}
-\CreateTheorem*{conjecture}
-\else
-\CreateTheorem at thmnum{theorem}
-\CreateTheorem{lemma}[theorem]
-\CreateTheorem{proposition}[theorem]
-\CreateTheorem{corollary}[theorem]
-\CreateTheorem{definition-proposition}[theorem]
-\CreateTheorem{definition-theorem}[theorem]
-\CreateTheorem{property}[theorem]
-\CreateTheorem{fact}[theorem]
-\CreateTheorem{conjecture}[theorem]
-\fi
-\CreateTheorem*{theorem*}
-\CreateTheorem*{lemma*}
-\CreateTheorem*{proposition*}
-\CreateTheorem*{corollary*}
-\CreateTheorem*{definition-proposition*}
-\CreateTheorem*{definition-theorem*}
-\CreateTheorem*{property*}
-\CreateTheorem*{fact*}
-\CreateTheorem*{conjecture*}
-\if at minimalist@nothmnum
-\CreateTheorem*{definition}
-\CreateTheorem*{axiom}
-\CreateTheorem*{assumption}
-\CreateTheorem*{convention}
-\CreateTheorem*{hypothesis}
-\CreateTheorem*{notation}
-\CreateTheorem*{example}
-\CreateTheorem*{problem}
-\CreateTheorem*{question}
-\CreateTheorem*{exercise}
-\else
-\CreateTheorem{definition}[theorem]
-\CreateTheorem{axiom}[theorem]
-\CreateTheorem{assumption}[theorem]
-\CreateTheorem{convention}[theorem]
-\CreateTheorem{hypothesis}[theorem]
-\CreateTheorem{notation}[theorem]
-\CreateTheorem{example}[theorem]
-\CreateTheorem{problem}[theorem]
-\CreateTheorem{question}[theorem]
-\CreateTheorem{exercise}[theorem]
-\fi
-\CreateTheorem*{definition*}
-\CreateTheorem*{axiom*}
-\CreateTheorem*{assumption*}
-\CreateTheorem*{convention*}
-\CreateTheorem*{hypothesis*}
-\CreateTheorem*{notation*}
-\CreateTheorem*{example*}
-\CreateTheorem*{problem*}
-\CreateTheorem*{question*}
-\CreateTheorem*{exercise*}
-\if at minimalist@nothmnum
-\CreateTheorem*{remark}
-\CreateTheorem*{observation}
-\else
-\CreateTheorem at thmnum{remark}
-\CreateTheorem at thmnum{observation}
-\fi
-\CreateTheorem*{remark*}
-\CreateTheorem*{observation*}
-\fi
-}
-
-\if at minimalist@delaythms
- \AtEndPreamble{\minimalist at definethms}
-\else
- \minimalist at definethms
-\fi
-
-\ifbool{IsBook}{}{%
-
-%%================================
-%% Title block style
-%%================================
-\if at minimalist@classical
-\renewcommand{\@maketitle}{%
- \LocallyStopLineNumbers%
- \noindent%
- {\textcolor{maintext!27!paper}{\rule{\textwidth}{0.75pt}}}%
- % \vspace{-\parskip}%
- \vspace{-.5\baselineskip}%
- \begin{flushright}%
- \let\footnote\thanks%
- {\conditionalbfseries\@title}\\\medskip%
- \color{maintext!80!paper}%
- {\small\scshape\@author}%
- \par\vspace{-\parskip}\vspace{2pt}%
- {\small\@date}%
- \end{flushright}%
- % \vspace{-\parskip}%
- \vspace{-.5\baselineskip}%
- \ifx\@date\@empty%
- \vspace{\baselineskip}%
- \vspace{1.2\parskip}%
- \else%
- \vspace{-.5\baselineskip}%
- \fi%
- {\textcolor{maintext!27!paper}{\rule{\textwidth}{0.75pt}}\par}%
- \ResumeLineNumbers%
-}
-\else
-\renewcommand{\@maketitle}{%
- \LocallyStopLineNumbers%
- \begin{center}%
- \let\footnote\thanks%
- {\conditionalbfseries\minimalist at titlefontshape\large\@title}\\\bigskip%
- \color{maintext!80!paper}%
- {\small\scshape\@author}\\[2pt]%
- {\small\@date}%
- \end{center}%
- \ifx\@date\@empty\bigskip\fi%
- \bigskip\par%
- \ResumeLineNumbers%
-}
-\fi
-\apptocmd{\maketitle}{\thispagestyle{fancy}}{}{\FAIL}
-
-%%================================
-%% Abstract style
-%%================================
-\if at minimalist@classical
-\renewenvironment{abstract}{%
- \LocallyStopLineNumbers%
- \begin{flushright}%
- \textsc{\conditionalbfseries\small\abstractname}\par%
- \vspace{-\parskip}%
- \vspace{-.25\baselineskip}%
- \begin{minipage}[t]{.833\textwidth}%
- \vspace{0pt}%
- \color{maintext!80!paper}%
- \footnotesize%
- \parindent=2em
-}{%
- \end{minipage}%
- \end{flushright}%
- \bigskip%
- \ResumeLineNumbers%
-}
-\else
-\renewenvironment{abstract}{%
- \LocallyStopLineNumbers%
- \vspace{-\baselineskip}%
- \begin{center}%
- \textsc{\conditionalbfseries\minimalist at titlefontshape\small\abstractname}\\%
- \vspace{-.3\baselineskip}%
- \begin{minipage}[t]{.833\textwidth}%
- \vspace{0pt}%
- \color{maintext!80!paper}%
- \footnotesize%
- \parindent=2em
-}{%
- \end{minipage}%
- \end{center}%
- \medskip%
- \ResumeLineNumbers%
-}
-\fi
-
-%%================================
-%% Keyword environment
-%%================================
-\def\keywordnameEN{\textsc{Keywords}}
-\def\keywordnameFR{\textsc{Mots clés}}
-\def\keywordnameDE{\textsc{Schlüsselwörter}}
-\def\keywordnameCN{关键词}
-\def\keywordnameTC{關鍵詞}
-\def\keywordnameJP{キーワード}
-\def\keywordnameRU{Ключевые слова}
-
-\if at minimalist@classical
-\newenvironment{keyword}{%
- \LocallyStopLineNumbers%
- \vspace{-.5\baselineskip}%
- \begin{flushright}%
- {\conditionalbfseries\small\csname keywordname\csname\languagename ABBR\endcsname\endcsname}\par%
- \vspace{-\parskip}%
- \vspace{-.30\baselineskip}%
- \begin{minipage}[t]{.833\textwidth}%
- \vspace{0pt}%
- \color{maintext!80!paper}%
- \footnotesize%
- \parindent=2em
- \raggedleft%
-}{%
- \end{minipage}%
- \end{flushright}%
- \bigskip%
- \ResumeLineNumbers%
-}
-\else
-\newenvironment{keyword}{%
- \LocallyStopLineNumbers%
- \vspace{-.75\baselineskip}%
- \begin{center}%
- {\conditionalbfseries\small\csname keywordname\csname\languagename ABBR\endcsname\endcsname}\\%
- \vspace{-.3\baselineskip}%
- \begin{minipage}[t]{.833\textwidth}%
- \vspace{0pt}%
- \color{maintext!80!paper}%
- \footnotesize%
- \parindent=2em
- \begin{center}%
-}{%
- \end{center}%
- \end{minipage}%
- \end{center}%
- \medskip%
- \ResumeLineNumbers%
-}
-\fi
-
-%%================================
-%% Simulate features of amsart
-%%================================
-\PassOptionsToPackage{amsfashion}{PJLauthor}
-\RequirePackage{PJLauthor}
-
-}
-
\endinput
%%
%% End of file `minimalist/minimalist.sty'.
Modified: trunk/Master/texmf-dist/tex/latex/minimalist/minimart.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/minimalist/minimart.cls 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/minimalist/minimart.cls 2022-03-17 20:32:09 UTC (rev 62769)
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimart.cls',
%% generated with the docstrip utility.
-%% Copyright (C) 2021 by Jinwen XU
+%% Copyright (C) 2021-2022 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -16,224 +16,175 @@
%% 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
-\ProvidesClass{minimart}
- [2021/12/16 A simple and clear article style]
-\def\minimclass at baseclass{article}
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
- family = @minimclass,
- prefix = @minimclass@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{classical}
-\DeclareBoolOption[false]{useindent}
-\DeclareBoolOption[false]{useosf}
-\DeclareBoolOption[false]{lmodern}
-\DeclareBoolOption[false]{palatino}
-\DeclareBoolOption[false]{times}
-\DeclareBoolOption[false]{garamond}
-\DeclareBoolOption[false]{noto}
-\DeclareBoolOption[false]{biolinum}
-\DeclareBoolOption[false]{customfont}
-\DeclareStringOption{thmnum}[PJL at thmnum@default]
+\RequirePackage{l3keys2e}
+\ProvidesExplClass
+ {minimart}
+ {2022/03/17} {}
+ {A simple and clear article style}
-\newif\if at minimclass@bfivepaper\@minimclass at bfivepaperfalse
-\DeclareVoidOption{b5paper}{\@minimclass at bfivepapertrue}
-\newif\if at minimclass@afourpaper\@minimclass at afourpaperfalse
-\DeclareVoidOption{a4paper}{\@minimclass at afourpapertrue}
+\tl_const:Nn \l__minimclass_base_class_tl { article }
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass at baseclass}}
-\ProcessKeyvalOptions*\relax
-\LoadClass{\minimclass at baseclass}
-\if at minimclass@draft
- \@minimclass at fasttrue
-\fi
-\if at minimclass@classical\else
- \@minimclass at useindenttrue
-\fi
-\if at minimclass@lmodern
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@palatino
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@times
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@garamond
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@noto
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@biolinum
- \@minimclass at customfonttrue
-\fi
+\bool_new:N \l__minimclass_load_custom_font_file_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_bool
-%%================================
-%% Page layout
-%%================================
-\RequirePackage{silence}
-\WarningFilter{geometry}{Over-specification in}
-\RequirePackage[heightrounded]{geometry}
-\geometry{
- papersize={7in,10in},
- % total={40em,60em},
- total={5.535in,8.300in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\if at minimclass@bfivepaper
-\geometry{
- b5paper,
- % total={40em,59em},
- total={5.535in,8.160in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-\if at minimclass@afourpaper
-\geometry{
- a4paper,
- % total={47em,70em},
- total={6.500in,9.685in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-\if at minimclass@fast
- \PassOptionsToPackage{fast}{minimalist}
- \RequirePackage{draftwatermark}
- \DraftwatermarkOptions{text={\normalfont DRAFT},color=paper!95!-paper}
-\fi
-\if at minimclass@useindent
- \RequirePackage{indentfirst}
-\else
- \AtEndPreamble{\RequirePackage{parskip}}
-\fi
-\RequirePackage{minimalist}
+\keys_define:nn { minimclass }
+ {
+ , draft .bool_set:N = \l__minimclass_fast_bool
+ , draft .initial:n = { false }
+ , fast .bool_set:N = \l__minimclass_fast_bool
+ , classical .bool_set:N = \l__minimclass_classical_bool
+ , classical .initial:n = { false }
+
+ , use indent .bool_set:N = \l__minimclass_useindent_bool
+ , use indent .initial:n = { true }
+ , use~indent .bool_set:N = \l__minimclass_useindent_bool
+ , use-indent .bool_set:N = \l__minimclass_useindent_bool
+
+ , load custom font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load custom font file .default:n = { minimalist.font }
+ , load~custom~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load~custom~font~file .default:n = { minimalist.font }
+ , load-custom-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load-custom-font-file .default:n = { minimalist.font }
+
+
+ , a4paper .bool_set:N = \l__minimclass_a_four_paper_bool
+ , a4paper .initial:n = { false }
+ , b5paper .bool_set:N = \l__minimclass_b_five_paper_bool
+ , b5paper .initial:n = { false }
+
+ , 11pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+ , 12pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+
+ , unknown .code:n = {
+ \PassOptionsToPackage { \CurrentOption } { minimalist }
+ }
+ }
+\ProcessKeysOptions { minimclass }
+
+\LoadClass{\l__minimclass_base_class_tl}
+
+\bool_if:NT \l__minimclass_classical_bool
+ {
+ \bool_set_false:N \l__minimclass_useindent_bool
+ }
+
%%================================
-%% Fonts
+%% Page layout
%%================================
-\RequirePackage{iftex}
-\ifPDFTeX
-\RequirePackage[T1]{fontenc}
-\RequirePackage{inputenc}
-\fi
-\if at minimclass@customfont\else
-\RequirePackage{mathpazo}
-\RequirePackage{newpxtext}
-\fi
-\RequirePackage{amssymb}
+\RequirePackage { silence }
+\WarningFilter { geometry } { Over-specification }
-\if at minimclass@lmodern
- \RequirePackage{amssymb}
- \if at minimclass@useosf
- \RequirePackage{cfr-lm}
- \else
- \RequirePackage{lmodern}
- \fi
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
+\PassOptionsToPackage { heightrounded } { geometry }
+\RequirePackage { geometry }
-\if at minimclass@palatino
- \RequirePackage{amssymb}
- \RequirePackage{mathpazo}
- \PassOptionsToPackage{defaultsups}{newpxtext}
- \RequirePackage{newpxtext}
- % \RequirePackage{newpxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.07}}
- \if at minimclass@useosf\useosf\fi
-\fi
+\geometry
+ {
+ papersize = { 7in, 10in },
+ total = { 5.535in, 8.300in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
-\if at minimclass@times
- \RequirePackage{amssymb}
- \PassOptionsToPackage{defaultsups}{newtxtext}
- \RequirePackage{newtxtext}
- \RequirePackage{newtxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.00}}
- \if at minimclass@useosf\useosf\fi
-\fi
+\bool_if:NT \l__minimclass_b_five_paper_bool
+ {
+ \geometry
+ {
+ b5paper,
+ total = { 5.535in, 8.160in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
-\if at minimclass@garamond
- \RequirePackage{amssymb}
- \if at minimclass@useosf\else
- \PassOptionsToPackage{lining}{ebgaramond}
- \fi
- \RequirePackage{ebgaramond-maths}
- \RequirePackage{ebgaramond}
- % \RequirePackage{garamondlibre}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
+\bool_if:NT \l__minimclass_a_four_paper_bool
+ {
+ \geometry
+ {
+ a4paper,
+ total = { 6.500in, 9.685in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
-\if at minimclass@noto
- \RequirePackage{amssymb}
- \if at minimclass@useosf
- \PassOptionsToPackage{oldstyle}{notomath}
- \fi
- \RequirePackage{anyfontsize}
- \RequirePackage{notomath}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
+\bool_if:NT \l__minimclass_fast_bool
+ {
+ \PassOptionsToPackage { fast } { minimalist }
+ \RequirePackage { draftwatermark }
+ \DraftwatermarkOptions { text = { \normalfont DRAFT }, color = paper!97!-paper }
+ }
-\if at minimclass@biolinum
- \RequirePackage{amssymb}
- % \RequirePackage{mathpazo}
- % \RequirePackage[sansmath]{libertinust1math}
- \ifPDFTeX
- \if at minimclass@useosf
- \PassOptionsToPackage{osf}{biolinum}
- \fi
- \RequirePackage{biolinum}
- \renewcommand*\familydefault{\biolinum at family}
- \else
- \PassOptionsToPackage{no-math}{fontspec}
- \RequirePackage{fontspec}
- \setmainfont{LinBiolinum_R.otf}[
- BoldFont = LinBiolinum_RB.otf ,
- ItalicFont = LinBiolinum_RI.otf ,
- BoldItalicFont = LinBiolinum_RBO.otf,
- \if at minimclass@useosf Numbers = OldStyle\fi ]
- \fi
- \PJLsetlinespacing{\setstretch{1.05}}
- \RequirePackage[italic,defaultmathsizes]{mathastext}
-\fi
+\bool_if:NTF \l__minimclass_useindent_bool
+ {
+ \RequirePackage { indentfirst }
+ }
+ {
+ \hook_gput_code:nnn { begindocument/before } { minimclass }
+ {
+ \RequirePackage { parskip }
+ }
+ }
-\def\PJL at font@alreadyset{}
+\RequirePackage { minimalist }
-\PassOptionsToPackage{verbose=silent}{microtype}
-\RequirePackage{microtype}
-\PassOptionsToPackage{all}{nowidow}
-\RequirePackage{nowidow}
-\RequirePackage{embrac}
-
%%================================
-%% Graphics
+%% Fonts
%%================================
-\RequirePackage{graphicx}
-\graphicspath{{images/}}
-\RequirePackage{wrapfig}
-\RequirePackage{float}
-\RequirePackage{caption}
-\captionsetup{font=small}
+\WarningFilter { latexfont } { Font~shape }
+\WarningFilter { latexfont } { Some~font }
+\cs_new_protected:Nn \__minimclass_load_file_or_config:Nnn
+ {
+ \bool_if:NT #1
+ {
+ \exp_args:Nx \file_if_exist:nT { #2 }
+ {
+ \exp_args:Nx \file_input:n { #2 }
+ \use_none:nn
+ }
+ }
+ \use:n { #3 }
+ }
+
+
+\__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_bool { \l__minimclass_custom_font_file_str }
+ {
+ \RequirePackage { projlib-font }
+
+ \bool_if:NF \g_projlib_font_already_set_bool
+ {
+ \RequirePackage { mathpazo }
+ \RequirePackage { newpxtext }
+ \RequirePackage { amssymb }
+ }
+ }
+
+\PassOptionsToPackage { all } { nowidow }
+\RequirePackage { nowidow }
+\RequirePackage { embrac }
+
%%================================
-%% Index
+%% Graphics
%%================================
-\AtEndPreamble{
-\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{}
-\apptocmd{\printindex}{\ResumeLineNumbers}{}{}
-}
+\RequirePackage { graphicx }
+\graphicspath { { images/ } }
+\RequirePackage { wrapfig }
+\RequirePackage { float }
+\RequirePackage { caption }
+\captionsetup { font = small }
\endinput
%%
Modified: trunk/Master/texmf-dist/tex/latex/minimalist/minimbook.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/minimalist/minimbook.cls 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/minimalist/minimbook.cls 2022-03-17 20:32:09 UTC (rev 62769)
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimbook.cls',
%% generated with the docstrip utility.
-%% Copyright (C) 2021 by Jinwen XU
+%% Copyright (C) 2021-2022 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -16,224 +16,175 @@
%% 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
-\ProvidesClass{minimbook}
- [2021/12/16 A simple and clear book style]
-\def\minimclass at baseclass{book}
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
- family = @minimclass,
- prefix = @minimclass@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{classical}
-\DeclareBoolOption[false]{useindent}
-\DeclareBoolOption[false]{useosf}
-\DeclareBoolOption[false]{lmodern}
-\DeclareBoolOption[false]{palatino}
-\DeclareBoolOption[false]{times}
-\DeclareBoolOption[false]{garamond}
-\DeclareBoolOption[false]{noto}
-\DeclareBoolOption[false]{biolinum}
-\DeclareBoolOption[false]{customfont}
-\DeclareStringOption{thmnum}[PJL at thmnum@default]
+\RequirePackage{l3keys2e}
+\ProvidesExplClass
+ {minimbook}
+ {2022/03/17} {}
+ {A simple and clear book style}
-\newif\if at minimclass@bfivepaper\@minimclass at bfivepaperfalse
-\DeclareVoidOption{b5paper}{\@minimclass at bfivepapertrue}
-\newif\if at minimclass@afourpaper\@minimclass at afourpaperfalse
-\DeclareVoidOption{a4paper}{\@minimclass at afourpapertrue}
+\tl_const:Nn \l__minimclass_base_class_tl { book }
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass at baseclass}}
-\ProcessKeyvalOptions*\relax
-\LoadClass{\minimclass at baseclass}
-\if at minimclass@draft
- \@minimclass at fasttrue
-\fi
-\if at minimclass@classical\else
- \@minimclass at useindenttrue
-\fi
-\if at minimclass@lmodern
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@palatino
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@times
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@garamond
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@noto
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@biolinum
- \@minimclass at customfonttrue
-\fi
+\bool_new:N \l__minimclass_load_custom_font_file_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_bool
-%%================================
-%% Page layout
-%%================================
-\RequirePackage{silence}
-\WarningFilter{geometry}{Over-specification in}
-\RequirePackage[heightrounded]{geometry}
-\geometry{
- papersize={7in,10in},
- % total={40em,60em},
- total={5.535in,8.300in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\if at minimclass@bfivepaper
-\geometry{
- b5paper,
- % total={40em,59em},
- total={5.535in,8.160in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-\if at minimclass@afourpaper
-\geometry{
- a4paper,
- % total={47em,70em},
- total={6.500in,9.685in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-\if at minimclass@fast
- \PassOptionsToPackage{fast}{minimalist}
- \RequirePackage{draftwatermark}
- \DraftwatermarkOptions{text={\normalfont DRAFT},color=paper!95!-paper}
-\fi
-\if at minimclass@useindent
- \RequirePackage{indentfirst}
-\else
- \AtEndPreamble{\RequirePackage{parskip}}
-\fi
-\RequirePackage{minimalist}
+\keys_define:nn { minimclass }
+ {
+ , draft .bool_set:N = \l__minimclass_fast_bool
+ , draft .initial:n = { false }
+ , fast .bool_set:N = \l__minimclass_fast_bool
+ , classical .bool_set:N = \l__minimclass_classical_bool
+ , classical .initial:n = { false }
+
+ , use indent .bool_set:N = \l__minimclass_useindent_bool
+ , use indent .initial:n = { true }
+ , use~indent .bool_set:N = \l__minimclass_useindent_bool
+ , use-indent .bool_set:N = \l__minimclass_useindent_bool
+
+ , load custom font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load custom font file .default:n = { minimalist.font }
+ , load~custom~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load~custom~font~file .default:n = { minimalist.font }
+ , load-custom-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load-custom-font-file .default:n = { minimalist.font }
+
+
+ , a4paper .bool_set:N = \l__minimclass_a_four_paper_bool
+ , a4paper .initial:n = { false }
+ , b5paper .bool_set:N = \l__minimclass_b_five_paper_bool
+ , b5paper .initial:n = { false }
+
+ , 11pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+ , 12pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+
+ , unknown .code:n = {
+ \PassOptionsToPackage { \CurrentOption } { minimalist }
+ }
+ }
+\ProcessKeysOptions { minimclass }
+
+\LoadClass{\l__minimclass_base_class_tl}
+
+\bool_if:NT \l__minimclass_classical_bool
+ {
+ \bool_set_false:N \l__minimclass_useindent_bool
+ }
+
%%================================
-%% Fonts
+%% Page layout
%%================================
-\RequirePackage{iftex}
-\ifPDFTeX
-\RequirePackage[T1]{fontenc}
-\RequirePackage{inputenc}
-\fi
-\if at minimclass@customfont\else
-\RequirePackage{mathpazo}
-\RequirePackage{newpxtext}
-\fi
-\RequirePackage{amssymb}
+\RequirePackage { silence }
+\WarningFilter { geometry } { Over-specification }
-\if at minimclass@lmodern
- \RequirePackage{amssymb}
- \if at minimclass@useosf
- \RequirePackage{cfr-lm}
- \else
- \RequirePackage{lmodern}
- \fi
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
+\PassOptionsToPackage { heightrounded } { geometry }
+\RequirePackage { geometry }
-\if at minimclass@palatino
- \RequirePackage{amssymb}
- \RequirePackage{mathpazo}
- \PassOptionsToPackage{defaultsups}{newpxtext}
- \RequirePackage{newpxtext}
- % \RequirePackage{newpxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.07}}
- \if at minimclass@useosf\useosf\fi
-\fi
+\geometry
+ {
+ papersize = { 7in, 10in },
+ total = { 5.535in, 8.300in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
-\if at minimclass@times
- \RequirePackage{amssymb}
- \PassOptionsToPackage{defaultsups}{newtxtext}
- \RequirePackage{newtxtext}
- \RequirePackage{newtxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.00}}
- \if at minimclass@useosf\useosf\fi
-\fi
+\bool_if:NT \l__minimclass_b_five_paper_bool
+ {
+ \geometry
+ {
+ b5paper,
+ total = { 5.535in, 8.160in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
-\if at minimclass@garamond
- \RequirePackage{amssymb}
- \if at minimclass@useosf\else
- \PassOptionsToPackage{lining}{ebgaramond}
- \fi
- \RequirePackage{ebgaramond-maths}
- \RequirePackage{ebgaramond}
- % \RequirePackage{garamondlibre}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
+\bool_if:NT \l__minimclass_a_four_paper_bool
+ {
+ \geometry
+ {
+ a4paper,
+ total = { 6.500in, 9.685in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
-\if at minimclass@noto
- \RequirePackage{amssymb}
- \if at minimclass@useosf
- \PassOptionsToPackage{oldstyle}{notomath}
- \fi
- \RequirePackage{anyfontsize}
- \RequirePackage{notomath}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
+\bool_if:NT \l__minimclass_fast_bool
+ {
+ \PassOptionsToPackage { fast } { minimalist }
+ \RequirePackage { draftwatermark }
+ \DraftwatermarkOptions { text = { \normalfont DRAFT }, color = paper!97!-paper }
+ }
-\if at minimclass@biolinum
- \RequirePackage{amssymb}
- % \RequirePackage{mathpazo}
- % \RequirePackage[sansmath]{libertinust1math}
- \ifPDFTeX
- \if at minimclass@useosf
- \PassOptionsToPackage{osf}{biolinum}
- \fi
- \RequirePackage{biolinum}
- \renewcommand*\familydefault{\biolinum at family}
- \else
- \PassOptionsToPackage{no-math}{fontspec}
- \RequirePackage{fontspec}
- \setmainfont{LinBiolinum_R.otf}[
- BoldFont = LinBiolinum_RB.otf ,
- ItalicFont = LinBiolinum_RI.otf ,
- BoldItalicFont = LinBiolinum_RBO.otf,
- \if at minimclass@useosf Numbers = OldStyle\fi ]
- \fi
- \PJLsetlinespacing{\setstretch{1.05}}
- \RequirePackage[italic,defaultmathsizes]{mathastext}
-\fi
+\bool_if:NTF \l__minimclass_useindent_bool
+ {
+ \RequirePackage { indentfirst }
+ }
+ {
+ \hook_gput_code:nnn { begindocument/before } { minimclass }
+ {
+ \RequirePackage { parskip }
+ }
+ }
-\def\PJL at font@alreadyset{}
+\RequirePackage { minimalist }
-\PassOptionsToPackage{verbose=silent}{microtype}
-\RequirePackage{microtype}
-\PassOptionsToPackage{all}{nowidow}
-\RequirePackage{nowidow}
-\RequirePackage{embrac}
-
%%================================
-%% Graphics
+%% Fonts
%%================================
-\RequirePackage{graphicx}
-\graphicspath{{images/}}
-\RequirePackage{wrapfig}
-\RequirePackage{float}
-\RequirePackage{caption}
-\captionsetup{font=small}
+\WarningFilter { latexfont } { Font~shape }
+\WarningFilter { latexfont } { Some~font }
+\cs_new_protected:Nn \__minimclass_load_file_or_config:Nnn
+ {
+ \bool_if:NT #1
+ {
+ \exp_args:Nx \file_if_exist:nT { #2 }
+ {
+ \exp_args:Nx \file_input:n { #2 }
+ \use_none:nn
+ }
+ }
+ \use:n { #3 }
+ }
+
+
+\__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_bool { \l__minimclass_custom_font_file_str }
+ {
+ \RequirePackage { projlib-font }
+
+ \bool_if:NF \g_projlib_font_already_set_bool
+ {
+ \RequirePackage { mathpazo }
+ \RequirePackage { newpxtext }
+ \RequirePackage { amssymb }
+ }
+ }
+
+\PassOptionsToPackage { all } { nowidow }
+\RequirePackage { nowidow }
+\RequirePackage { embrac }
+
%%================================
-%% Index
+%% Graphics
%%================================
-\AtEndPreamble{
-\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{}
-\apptocmd{\printindex}{\ResumeLineNumbers}{}{}
-}
+\RequirePackage { graphicx }
+\graphicspath { { images/ } }
+\RequirePackage { wrapfig }
+\RequirePackage { float }
+\RequirePackage { caption }
+\captionsetup { font = small }
\endinput
%%
Modified: trunk/Master/texmf-dist/tex/latex/projlib/ProjLib.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/ProjLib.sty 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/projlib/ProjLib.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{ProjLib}
- {2022/03/11} {}
+ {2022/03/17} {}
{Collective interface of the ProjLib toolkit}
\keys_define:nn { ProjLib }
Modified: trunk/Master/texmf-dist/tex/latex/projlib/projlib-author.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/projlib-author.sty 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/projlib/projlib-author.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{projlib-author}
- {2022/03/11} {}
+ {2022/03/17} {}
{Enhanced author information block}
\keys_define:nn { projlib-author }
@@ -35,11 +35,13 @@
\cs_if_exist:NT \subjclass { \endinput }
\tl_new:N \g__projlib_author_font_author_tl
+\tl_new:N \g__projlib_author_font_institute_tl
\tl_new:N \g__projlib_author_font_address_tl
\tl_new:N \g__projlib_author_font_curraddr_tl
\tl_new:N \g__projlib_author_font_email_tl
\tl_gset:Nn \g__projlib_author_font_author_tl { \normalsize \normalfont \scshape }
+\tl_gset:Nn \g__projlib_author_font_institute_tl { \small \normalfont }
\tl_gset:Nn \g__projlib_author_font_address_tl { \small \normalfont \itshape }
\tl_gset:Nn \g__projlib_author_font_curraddr_tl { \small \normalfont \itshape }
\tl_gset:Nn \g__projlib_author_font_email_tl { \small \normalfont \ttfamily }
@@ -67,56 +69,49 @@
}
}
-\ProvideDocumentCommand \address { m }
+\cs_new_protected:Nn \projlib_author_affil_generic:nn
+ % #1 = the item
+ % #2 = the text
{
\hook_gput_code:nnn { cmd/@author/after } { projlib-author }
{
- \phantom {A} \\[-\baselineskip]
+ \phantom {A} \\[-.85\baselineskip]
\bool_if:NF \g__projlib_author_affil_already_exist_bool
{
\skip_vertical:n { \g__projlib_author_length_innersep_dim }
}
\bool_set_true:N \g__projlib_author_affil_already_exist_bool
- { \g__projlib_author_font_address_tl #1 }
+ { \use:c { g__projlib_author_font_ #1 _tl } #2 }
\\ \phantom {}
}
}
+\ProvideDocumentCommand \institute { m }
+ {
+ \projlib_author_affil_generic:nn { institute } { #1 }
+ }
+
+\ProvideDocumentCommand \address { m }
+ {
+ \projlib_author_affil_generic:nn { address } { #1 }
+ }
+
\ProvideDocumentCommand \curraddr { m }
{
- \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
- {
- \phantom {A} \\[-\baselineskip]
- \bool_if:NF \g__projlib_author_affil_already_exist_bool
- {
- \skip_vertical:n { \g__projlib_author_length_innersep_dim }
- }
- \bool_set_true:N \g__projlib_author_affil_already_exist_bool
- { \g__projlib_author_font_curraddr_tl #1 }
- \\ \phantom {}
- }
+ \projlib_author_affil_generic:nn { curraddr } { #1 }
}
\ProvideDocumentCommand \email { m }
{
- \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
- {
- \phantom {A} \\[-\baselineskip]
- \bool_if:NF \g__projlib_author_affil_already_exist_bool
- {
- \skip_vertical:n { \g__projlib_author_length_innersep_dim }
- }
- \bool_set_true:N \g__projlib_author_affil_already_exist_bool
- { \g__projlib_author_font_email_tl #1 }
- \\ \phantom {}
- }
+ \projlib_author_affil_generic:nn { email } { #1 }
}
\RequirePackage { regexpatch }
-\xpatchcmd { \@maketitle } { \begin{tabular}[t]{c} } {} {
- \xpatchcmd { \@maketitle } { \end{tabular} } {} {} {}
-} {}
+\xpatchcmd { \@maketitle } { \begin{tabular}[t]{c} } {}
+ {
+ \xpatchcmd { \@maketitle } { \end{tabular} } {} {} {}
+ } {}
\tl_set:cn {@author} {}
@@ -141,17 +136,17 @@
\RequirePackage{ projlib-language }
\tl_new:N \g_projlib_author_keywordsname_style_tl
- \tl_gset:Nn \g_projlib_author_keywordsname_style_tl {}
+ \tl_gset:Nn \g_projlib_author_keywordsname_style_tl { \itshape }
\projlib_langauge_define_multilingual_text:Nn \keywordsname
{
- EN = \textsc{Key~words~and~phrases} ,
- FR = \textsc{Mots~et~phrases~clés} ,
- DE = \textsc{Schlüsselwörter~und~Phrasen} ,
- IT = \textsc{Parole~e~frasi~chiave} ,
- PT = \textsc{Palavras~e~frases~chave} ,
- BR = \textsc{Palavras~e~frases~chave} ,
- ES = \textsc{Palabras~y~frases~clave} ,
+ EN = Key~words~and~phrases ,
+ FR = Mots~et~phrases~clés ,
+ DE = Schlüsselwörter~und~Phrasen ,
+ IT = Parole~e~frasi~chiave ,
+ PT = Palavras~e~frases~chave ,
+ BR = Palavras~e~frases~chave ,
+ ES = Palabras~y~frases~clave ,
CN = 关键词 ,
TC = 關鍵詞 ,
JP = キーワード ,
@@ -233,9 +228,11 @@
{
\bool_if:NTF \g__projlib_author_already_maketitle_bool
{
+ \group_begin:
\projlib_author_backup_abstract:
\getstored{projlib-author-abstract}
\projlib_author_backup_endabstract:
+ \group_end:
}
{
\bool_gset_true:N \g__projlib_author_abstract_before_maketitle_bool
@@ -284,10 +281,13 @@
{
\bool_if:NT \g__projlib_author_abstract_before_maketitle_bool
{
+ \group_begin:
\projlib_author_backup_abstract:
\getstored{projlib-author-abstract}
\projlib_author_backup_endabstract:
+ \group_end:
}
+ \cs_undefine:N \institute
\cs_undefine:N \address
\cs_undefine:N \curraddr
\cs_undefine:N \email
Modified: trunk/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{projlib-datetime}
- {2022/03/11} {}
+ {2022/03/17} {}
{Convert numeric date-time string to natural language}
\tl_new:N \g__projlib_datetime_input_format_tl
Modified: trunk/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{projlib-draft}
- {2022/03/11} {}
+ {2022/03/17} {}
{Useful commands during draft stage}
\keys_define:nn { projlib-draft }
@@ -59,7 +59,7 @@
}
}
-\projlib_langauge_define_multilingual_text:Nn \__dnf_text
+\projlib_langauge_define_multilingual_text:Nn \__projlib_draft_dnf_text
{
EN = To\ be\ finished ,
FR = Pas\ encore\ fini ,
@@ -74,7 +74,7 @@
RU = Не\ закончен ,
}
-\projlib_langauge_define_multilingual_text:Nn \__dnf_report_text
+\projlib_langauge_define_multilingual_text:Nn \__projlib_draft_dnf_report_text
{
EN = { Below\ is\ a\ list\ of\ outstanding\ items,
\ followed\ by\ the\ corresponding\ page\ numbers. } ,
@@ -97,12 +97,12 @@
\ с\ соответствующими\ номерами\ страниц\ в\ скобках. } ,
}
-\tl_new:c { __dnf_font }
-\tl_gset:cn { __dnf_font } { \normalfont \ttfamily \bfseries \small }
+\tl_new:c { __projlib_draft_dnf_font }
+\tl_gset:cn { __projlib_draft_dnf_font } { \normalfont \ttfamily \bfseries \small }
-\definecolor { __dnf_color } { RGB } { 21, 122, 20 }
+\definecolor { __projlib_draft_dnf_color } { RGB } { 21, 122, 20 }
-\newcounter { __dnf_counter }
+\newcounter { __projlib_draft_dnf_counter }
\tl_new:N \g__projlib_draft_dnf_report_tl
@@ -109,18 +109,18 @@
\NewDocumentCommand \dnf { d<> }
{
\noindent
- \projlib_draft_plain_box [ __dnf_color ]
+ \projlib_draft_plain_box [ __projlib_draft_dnf_color ]
{
- \stepcounter { __dnf_counter }
- \__dnf_font
- \__dnf_text
+ \stepcounter { __projlib_draft_dnf_counter }
+ \__projlib_draft_dnf_font
+ \__projlib_draft_dnf_text
\c_space_tl
- \# \the__dnf_counter
+ \# \the__projlib_draft_dnf_counter
\IfNoValueF { #1 } { \, : ~ #1 }
\tl_gput_right:Nx \g__projlib_draft_dnf_report_tl
{
\# \,
- \int_value:w \the__dnf_counter
+ \int_value:w \the__projlib_draft_dnf_counter
\c_space_tl \c_space_tl
$\langle$
\skip_horizontal:n { 0.1em }
@@ -144,14 +144,78 @@
{
\tl_if_blank:VF \g__projlib_draft_dnf_report_tl
{
- \clearpage \noindent
- \color { __dnf_color }
- \__dnf_font
- \__dnf_report_text \\[0.75\baselineskip]
+ \clearpage
+ \pagestyle{empty}
+ \noindent
+ \color { __projlib_draft_dnf_color }
+ \__projlib_draft_dnf_font
+ \__projlib_draft_dnf_report_text \\[0.75\baselineskip]
\g__projlib_draft_dnf_report_tl
}
}
+\projlib_langauge_define_multilingual_text:Nn \__projlib_draft_blind_text_tl
+ {
+ , EN = {
+ Hello,~here~is~some~text~without~a~meaning.~This~text~should~show~what~a~printed~text~will~look~like~at~this~place.~If~you~read~this~text,~you~will~get~no~information.~Really?~Is~there~no~information?~Is~there~a~difference~between~this~text~and~some~nonsense~like~``Huardest~gefburn''?~Not~at~all!~A~blind~text~like~this~gives~you~information~about~the~selected~font,~how~the~letters~are~written~and~an~impression~of~the~look.~This~text~should~contain~all~letters~of~the~alphabet~and~it~should~be~written~in~of~the~original~language.~There~is~no~need~for~special~content,~but~the~length~of~words~should~match~the~language.
+ }
+ , FR = {
+ Bonjour,~voici~un~texte~sans~signification.~Ce~texte~doit~montrer~à~quoi~ressemble~un~texte~imprimé~à~cet~endroit.~Si~vous~lisez~ce~texte,~vous~n'obtiendrez~aucune~information.~Vraiment~?~Il~n'y~a~aucune~information~?~Y~a-t-il~une~différence~entre~ce~texte~et~une~absurdité~comme~«~Huardest~gefburn~»~?~Pas~du~tout~!~Un~texte~aveugle~comme~celui-ci~vous~donne~des~informations~sur~la~police~choisie,~la~façon~dont~les~lettres~sont~écrites~et~une~impression~de~l'apparence.~Ce~texte~doit~contenir~toutes~les~lettres~de~l'alphabet~et~être~écrit~dans~la~langue~d'origine.~Il~n'est~pas~nécessaire~de~prévoir~un~contenu~spécial,~mais~la~longueur~des~mots~doit~correspondre~à~la~langue.
+ }
+ , DE = {
+ Hallo,~hier~ist~ein~Text~ohne~Bedeutung.~Dieser~Text~soll~zeigen,~wie~ein~gedruckter~Text~an~dieser~Stelle~aussehen~wird.~Wenn~Sie~diesen~Text~lesen,~werden~Sie~keine~Informationen~erhalten.~Wirklich?~Gibt~es~keine~Informationen?~Gibt~es~einen~Unterschied~zwischen~diesem~Text~und~irgendeinem~Blödsinn~wie~``Huardest~gefburn''?~Ganz~und~gar~nicht!~Ein~solcher~Blindtext~gibt~Ihnen~Informationen~über~die~gewählte~Schriftart,~wie~die~Buchstaben~geschrieben~sind~und~einen~Eindruck~vom~Aussehen.~Dieser~Text~sollte~alle~Buchstaben~des~Alphabets~enthalten~und~in~der~Originalsprache~geschrieben~sein.~Es~ist~kein~besonderer~Inhalt~erforderlich,~aber~die~Länge~der~Wörter~sollte~der~Sprache~entsprechen.
+ }
+ , IT = {
+ Ciao,~qui~c'è~un~drafto~senza~significato.~Questo~drafto~dovrebbe~mostrare~come~sarà~un~drafto~stampato~in~questo~posto.~Se~leggete~questo~drafto,~non~otterrete~alcuna~informazione.~Davvero?~Non~c'è~nessuna~informazione?~C'è~una~differenza~tra~questo~drafto~e~qualche~sciocchezza~come~``Huardest~gefburn''?~Niente~affatto!~Un~drafto~cieco~come~questo~ti~dà~informazioni~sul~font~selezionato,~su~come~sono~scritte~le~lettere~e~un'impressione~dell'aspetto.~Questo~drafto~dovrebbe~contenere~tutte~le~lettere~dell'alfabeto~e~dovrebbe~essere~scritto~nella~lingua~originale.~Non~c'è~bisogno~di~contenuti~speciali,~ma~la~lunghezza~delle~parole~dovrebbe~corrispondere~alla~lingua.
+ }
+ , PT = {
+ Olá,~aqui~está~um~texto~sem~significado.~Este~texto~deve~mostrar~como~será~um~texto~impresso~neste~local.~Se~ler~este~texto,~não~obterá~qualquer~informação.~A~sério?~Não~há~informação?~Há~alguma~diferença~entre~este~texto~e~alguns~disparates~como~"Huardest~gefburn"?~De~modo~algum!~Um~texto~cego~como~este~dá-lhe~informações~sobre~a~fonte~seleccionada,~como~as~letras~são~escritas~e~uma~impressão~do~aspecto.~Este~texto~deve~conter~todas~as~letras~do~alfabeto~e~deve~ser~escrito~na~língua~original.~Não~há~necessidade~de~conteúdo~especial,~mas~o~tamanho~das~palavras~deve~corresponder~à~língua.
+ }
+ , BR = {
+ Olá,~aqui~está~um~texto~sem~sentido.~Este~texto~deve~mostrar~como~será~um~texto~impresso~neste~lugar.~Se~você~ler~este~texto,~você~não~obterá~nenhuma~informação.~É~mesmo?~Não~há~nenhuma~informação?~Há~alguma~diferença~entre~este~texto~e~alguns~disparates~como~"Huardest~gefburn"?~De~jeito~nenhum!~Um~texto~cego~como~este~lhe~dá~informações~sobre~a~fonte~selecionada,~como~as~letras~são~escritas~e~uma~impressão~da~aparência.~Este~texto~deve~conter~todas~as~letras~do~alfabeto~e~deve~ser~escrito~no~idioma~original.~Não~há~necessidade~de~conteúdo~especial,~mas~o~tamanho~das~palavras~deve~corresponder~ao~idioma.
+ }
+ , ES = {
+ Hola,~aquí~hay~un~texto~sin~significado.~Este~texto~debe~mostrar~cómo~se~verá~un~texto~impreso~en~este~lugar.~Si~lees~este~texto,~no~obtendrás~ninguna~información.~¿En~serio?~¿No~hay~información?~¿Hay~alguna~diferencia~entre~este~texto~y~alguna~tontería~como~``Huardest~gefburn''?~¡Para~nada!~Un~texto~oculto~como~este~le~brinda~información~sobre~la~fuente~seleccionada,~cómo~se~escriben~las~letras~y~una~impresión~de~la~apariencia.~Este~texto~debe~contener~todas~las~letras~del~alfabeto~y~debe~estar~escrito~en~el~idioma~original.~No~hay~necesidad~de~contenido~especial,~pero~la~longitud~de~las~palabras~debe~coincidir~con~el~idioma.
+ }
+ , CN = {
+ 你好,这里有一些没有意义的文字。 此文本应显示打印文本在此位置的外观。 如果你阅读这段文字,你将不会得到任何信息。 真的没有信息吗? 这段文字和诸如 “劳仑衣普桑,认至将指点效则机,最你更枝” 或者 “想极整月正进好志次回总般,段然取向使张规军证回,世市总李率英茄持伴” 之类的废话有区别吗? 一点都没有! 这样的一段文本会给你提供关于所选字体的信息、字母的书写方式以及对外观的印象。 该文本应包含字母表中的所有字母,并且应使用原始语言编写。 不需要特别的内容,但字长要与语言相匹配。
+ }
+ , TC = {
+ 你好,這裡有一些沒有意義的文字。此文本應顯示打印文本在此位置的外觀。如果你閱讀這段文字,你將不會得到任何信息。真的沒有信息嗎?這段文字和諸如 “勞崙衣普桑,認至將指點效則機,最你更枝” 或者 “想極整月正進好志次回總般,段然取向使張規軍證回,世市總李率英茄持伴” 之類的廢話有區別嗎?一點都沒有!這樣的一段文本會給你提供關於所選字體的信息、字母的書寫方式以及對外觀的印象。該文本應包含字母表中的所有字母,並且應使用原始語言編寫。不需要特別的內容,但字長要與語言相匹配。
+ }
+ , JP = {
+ こんにちは、ここに意味のないテキストがあります。 このテキストは、この場所で印刷されたテキストがどのように見えるかを示す必要があります。 このテキストを読んでも、情報は得られません。 本当に? 情報はありませんか? このテキストと「アでニンはすミ」のようなナンセンスとの間に違いはありますか? 全くない! このようなブラインドテキストは、選択したフォント、文字の書き方、外観の印象に関する情報を提供します。 このテキストにはアルファベットのすべての文字が含まれている必要があり、元の言語で書かれている必要があります。 特別なコンテンツは必要ありませんが、単語の長さは言語と一致している必要があります。
+ }
+ , RU = {
+ Здравствуйте,~вот~какой-то~текст~без~смысла.~Этот~текст~должен~показывать,~как~будет~выглядеть~печатный~текст~в~этом~месте.~Если~вы~прочитаете~этот~текст,~вы~не~получите~никакой~информации.~Действительно?~Нет~информации?~Есть~ли~разница~между~этим~текстом~и~какой-то~чепухой~вроде~``Бзостачщв~дрероих''?~Нисколько!~Слепой~текст,~подобный~этому,~дает~вам~информацию~о~выбранном~шрифте,~о~том,~как~написаны~буквы,~и~о~впечатлении~от~внешнего~вида.~Этот~текст~должен~содержать~все~буквы~алфавита~и~должен~быть~написан~на~языке~оригинала.~В~специальном~содержании~нет~необходимости,~но~длина~слов~должна~соответствовать~языку.
+ }
+ }
+
+\cs_new:Nn \projlib_draft_blind_text:n
+ {
+ \int_set:Nn \l_tmpa_int { #1 }
+ \int_do_until:nNnn { \l_tmpa_int } = { 0 }
+ {
+ \__projlib_draft_blind_text_tl
+ \c_space_tl
+ \int_add:Nn \l_tmpa_int { -1 }
+ }
+ }
+
+\hook_gput_code:nnn { begindocument/before } { projlib-draft }
+ {
+ \ProvideDocumentCommand \blindtext { O{} }
+ {
+ \tl_if_blank:nTF { #1 }
+ {
+ \__projlib_draft_blind_text_tl
+ }
+ {
+ \projlib_draft_blind_text:n { #1 }
+ }
+ }
+ }
+
\endinput
%%
%% End of file `projlib-draft.sty'.
Modified: trunk/Master/texmf-dist/tex/latex/projlib/projlib-font.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/projlib-font.sty 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/projlib/projlib-font.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{projlib-font}
- {2022/03/11} {}
+ {2022/03/17} {}
{Font selection and configuration}
\keys_define:nn { projlib-font }
Modified: trunk/Master/texmf-dist/tex/latex/projlib/projlib-language.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/projlib-language.sty 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/projlib/projlib-language.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{projlib-language}
- {2022/03/11} {}
+ {2022/03/17} {}
{Multi-language configuration}
\clist_const:Nn \c__projlib_language_supported_clist
@@ -405,7 +405,7 @@
\tl_new:N \g_projlib_language_parindent_latin_tl
\tl_new:N \g_projlib_language_parindent_cjk_tl
-\@ifclassloaded{beamer}
+\@ifclassloaded { beamer }
{
\tl_gset:Nn \g_projlib_language_parindent_latin_tl
{
@@ -429,7 +429,7 @@
\hook_gput_code:nnn { begindocument } { projlib-language }
{
- \@ifpackageloaded{parskip}
+ \@ifpackageloaded { parskip }
{
\tl_gset:Nn \g_projlib_language_parindent_latin_tl
{
Modified: trunk/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{projlib-logo}
- {2022/03/11} {}
+ {2022/03/17} {}
{The ProjLib logo}
\keys_define:nn { projlib-logo }
Modified: trunk/Master/texmf-dist/tex/latex/projlib/projlib-math.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/projlib-math.sty 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/projlib/projlib-math.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{projlib-math}
- {2022/03/11} {}
+ {2022/03/17} {}
{Efficient math setup}
\keys_define:nn { projlib-math }
Modified: trunk/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{projlib-paper}
- {2022/03/11} {}
+ {2022/03/17} {}
{Configuration of the paper style}
\keys_define:nn { projlib-paper }
Modified: trunk/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty 2022-03-17 20:32:09 UTC (rev 62769)
@@ -19,7 +19,7 @@
\RequirePackage{l3keys2e}
\ProvidesExplPackage
{projlib-theorem}
- {2022/03/11} {}
+ {2022/03/17} {}
{Configuration of theorem-like environments}
\keys_define:nn { projlib-theorem }
@@ -31,7 +31,7 @@
, nothms .bool_set:N = \l__projlib_theorem_no_theorems_bool
, no-theorem-numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, no-theorem-numbering .initial:n = { false }
- , no~theorem~numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
+ , no~theorem~numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, no theorem numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, nothmnum .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, theorem-numbering .tl_set:N = \l__projlib_theorem_theorem_numbering_tl
@@ -53,7 +53,7 @@
, no-preset-names .initial:n = { false }
, no~preset~names .bool_set_inverse:N = \l__projlib_theorem_presetname_bool
, no preset names .bool_set_inverse:N = \l__projlib_theorem_presetname_bool
- , unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { create-theorem } }
+ , unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { create-theorem } }
}
\ProcessKeysOptions { projlib-theorem }
@@ -112,7 +112,7 @@
{
\bool_if:NTF \l__projlib_theorem_no_theorem_numbering_bool
{
- \exp_args:Nv \CreateTheorem { c_projlib_theorem_supported_clist } { numberless }
+ \exp_args:Nv \CreateTheorem { c_projlib_theorem_supported_clist } { numberless, create starred version }
}
{
\tl_if_blank:eTF \l__projlib_theorem_theorem_numbering_tl
@@ -119,23 +119,23 @@
{
\cs_if_exist:cTF { c at chapter }
{ % with \chapter
- \CreateTheorem {theorem} { parent counter = chapter }
+ \CreateTheorem {theorem} { parent counter = chapter, create starred version }
}
{ % without \chapter
- \CreateTheorem {theorem} { parent counter = section }
+ \CreateTheorem {theorem} { parent counter = section, create starred version }
}
}
{
\tl_if_eq:NnTF \l__projlib_theorem_theorem_numbering_tl { * }
{
- \CreateTheorem {theorem} { }
+ \CreateTheorem {theorem} { create starred version }
}
{
- \CreateTheorem {theorem} { parent counter = \l__projlib_theorem_theorem_numbering_tl }
+ \CreateTheorem {theorem} { parent counter = \l__projlib_theorem_theorem_numbering_tl, create starred version }
}
}
- \exp_args:Nv \CreateTheorem { c_projlib_theorem_supported_clist } { shared counter = theorem, quiet }
+ \exp_args:Nv \CreateTheorem { c_projlib_theorem_supported_clist } { shared counter = theorem, create starred version, quiet }
}
}
Modified: trunk/Master/texmf-dist/tex/latex/simplivre/simplivre.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/simplivre/simplivre.cls 2022-03-17 20:30:35 UTC (rev 62768)
+++ trunk/Master/texmf-dist/tex/latex/simplivre/simplivre.cls 2022-03-17 20:32:09 UTC (rev 62769)
@@ -2,7 +2,7 @@
%% This is file `simplivre/simplivre.cls',
%% generated with the docstrip utility.
-%% Copyright (C) 2021 by Jinwen XU
+%% Copyright (C) 2021-2022 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -16,564 +16,685 @@
%% 2005/12/01 or later.
%%
\NeedsTeXFormat{LaTeX2e}[2020-10-01]
-\ProvidesClass{simplivre}
- [2021/12/16 A simple and clear book style]
-\def\minimclass at baseclass{book}
-\RequirePackage{kvoptions}
-\RequirePackage{etoolbox}
-\SetupKeyvalOptions{
- family = @minimclass,
- prefix = @minimclass@,
-}
-\DeclareBoolOption[false]{draft}
-\DeclareBoolOption[false]{fast}
-\DeclareBoolOption[false]{classical}
-\DeclareBoolOption[false]{useindent}
-\DeclareBoolOption[false]{useosf}
-\DeclareBoolOption[false]{lmodern}
-\DeclareBoolOption[false]{palatino}
-\DeclareBoolOption[false]{times}
-\DeclareBoolOption[false]{garamond}
-\DeclareBoolOption[false]{noto}
-\DeclareBoolOption[false]{biolinum}
-\DeclareBoolOption[false]{customfont}
-\DeclareStringOption{thmnum}[PJL at thmnum@default]
+\RequirePackage{l3keys2e}
+\ProvidesExplClass
+ {simplivre}
+ {2022/03/17} {}
+ {A simple and clear book style}
-\newif\if at minimclass@bfivepaper\@minimclass at bfivepaperfalse
-\DeclareVoidOption{b5paper}{\@minimclass at bfivepapertrue}
-\newif\if at minimclass@afourpaper\@minimclass at afourpaperfalse
-\DeclareVoidOption{a4paper}{\@minimclass at afourpapertrue}
+\tl_const:Nn \l__minimclass_base_class_tl { book }
-\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass at baseclass}}
-\ProcessKeyvalOptions*\relax
-\LoadClass{\minimclass at baseclass}
-\if at minimclass@draft
- \@minimclass at fasttrue
-\fi
-\if at minimclass@classical\else
- \@minimclass at useindenttrue
-\fi
-\if at minimclass@lmodern
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@palatino
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@times
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@garamond
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@noto
- \@minimclass at customfonttrue
-\fi
-\if at minimclass@biolinum
- \@minimclass at customfonttrue
-\fi
+\bool_new:N \l__minimclass_load_custom_font_file_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_bool
-%%================================
-%% Page layout
-%%================================
-\RequirePackage{silence}
-\WarningFilter{geometry}{Over-specification in}
-\RequirePackage[heightrounded]{geometry}
-\geometry{
- papersize={7in,10in},
- % total={40em,60em},
- total={5.535in,8.300in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\if at minimclass@bfivepaper
-\geometry{
- b5paper,
- % total={40em,59em},
- total={5.535in,8.160in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
-\if at minimclass@afourpaper
-\geometry{
- a4paper,
- % total={47em,70em},
- total={6.500in,9.685in},
- hmarginratio=1:1,
- vmarginratio=1:1,
- footnotesep=2em plus 2pt minus 2pt,
-}
-\fi
+\bool_new:N \l__minimclass_load_custom_font_file_latin_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_latin_bool
-\if at minimclass@fast
- \PassOptionsToPackage{fast}{minimalist}
- \RequirePackage{draftwatermark}
- \DraftwatermarkOptions{text={\normalfont DRAFT},color=paper!95!-paper}
-\fi
-\if at minimclass@useindent
- \RequirePackage{indentfirst}
-\else
- \AtEndPreamble{\RequirePackage{parskip}}
-\fi
-\RequirePackage{minimalist}
+\bool_new:N \l__minimclass_load_custom_font_file_cjk_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_cjk_bool
+\bool_new:N \l__minimclass_load_custom_font_file_math_bool
+\bool_set_false:N \l__minimclass_load_custom_font_file_math_bool
+
+\keys_define:nn { minimclass }
+ {
+ , draft .bool_set:N = \l__minimclass_fast_bool
+ , draft .initial:n = { false }
+ , fast .bool_set:N = \l__minimclass_fast_bool
+
+ , classical .bool_set:N = \l__minimclass_classical_bool
+ , classical .initial:n = { false }
+
+ , use indent .bool_set:N = \l__minimclass_useindent_bool
+ , use indent .initial:n = { true }
+ , use~indent .bool_set:N = \l__minimclass_useindent_bool
+ , use-indent .bool_set:N = \l__minimclass_useindent_bool
+
+ , load custom font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { minimalist.font.latin }
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { minimalist.font.cjk }
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { minimalist.font.math }
+ }
+ , load custom font file .default:n = { minimalist.font }
+ , load~custom~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load~custom~font~file .default:n = { minimalist.font }
+ , load-custom-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_bool
+ \str_set:Nn \l__minimclass_custom_font_file_str { #1 }
+ }
+ , load-custom-font-file .default:n = { minimalist.font }
+
+ , load custom latin font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { #1 }
+ }
+ , load custom latin font file .default:n = { minimalist.font.latin }
+ , load~custom~latin~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { #1 }
+ }
+ , load~custom~latin~font~file .default:n = { minimalist.font.latin }
+ , load-custom-latin-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_latin_bool
+ \str_set:Nn \l__minimclass_custom_font_file_latin_str { #1 }
+ }
+ , load-custom-latin-font-file .default:n = { minimalist.font.latin }
+
+ , load custom cjk font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { #1 }
+ }
+ , load custom cjk font file .default:n = { minimalist.font.cjk }
+ , load~custom~cjk~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { #1 }
+ }
+ , load~custom~cjk~font~file .default:n = { minimalist.font.cjk }
+ , load-custom-cjk-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_cjk_bool
+ \str_set:Nn \l__minimclass_custom_font_file_cjk_str { #1 }
+ }
+ , load-custom-cjk-font-file .default:n = { minimalist.font.cjk }
+
+ , load custom math font file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { #1 }
+ }
+ , load custom math font file .default:n = { minimalist.font.math }
+ , load~custom~math~font~file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { #1 }
+ }
+ , load~custom~math~font~file .default:n = { minimalist.font.math }
+ , load-custom-math-font-file .code:n = {
+ \bool_set_true:N \l__minimclass_load_custom_font_file_math_bool
+ \str_set:Nn \l__minimclass_custom_font_file_math_str { #1 }
+ }
+ , load-custom-math-font-file .default:n = { minimalist.font.math }
+
+ , a4paper .bool_set:N = \l__minimclass_a_four_paper_bool
+ , a4paper .initial:n = { false }
+ , b5paper .bool_set:N = \l__minimclass_b_five_paper_bool
+ , b5paper .initial:n = { false }
+
+ , 11pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+ , 12pt .code:n = { \PassOptionsToClass { \CurrentOption } { \l__minimclass_base_class_tl } }
+
+ , unknown .code:n = {
+ \PassOptionsToPackage { \CurrentOption } { minimalist }
+ }
+ }
+\ProcessKeysOptions { minimclass }
+
+\LoadClass{\l__minimclass_base_class_tl}
+
+\bool_if:NT \l__minimclass_classical_bool
+ {
+ \bool_set_false:N \l__minimclass_useindent_bool
+ }
+
%%================================
-%% Fonts
+%% Page layout
%%================================
-\if at minimclass@customfont\else
- \if at minimclass@fast
- \RequirePackage{mathpazo}
- \fi
-\fi
+\RequirePackage { silence }
+\WarningFilter { geometry } { Over-specification }
-\PassOptionsToPackage{no-math,quiet}{fontspec}
-\RequirePackage{fontspec}
+\PassOptionsToPackage { heightrounded } { geometry }
+\RequirePackage { geometry }
-\IfFileExists{minimalist-font.tex}{
- \input{minimalist-font.tex}
-}{
-\IfFontExistsTF{Palatino Linotype}{%
- \setmainfont{Palatino Linotype}
- [\if at minimclass@useosf Numbers = OldStyle\fi]
-}{
- \setmainfont{TeXGyrePagellaX-Regular.otf}[
- BoldFont = TeXGyrePagellaX-Bold.otf ,
- ItalicFont = TeXGyrePagellaX-Italic.otf ,
- BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf,
- \if at minimclass@useosf Numbers = OldStyle\fi ]
-}
- \setsansfont{SourceSansPro-Regular.otf}[
- Scale = MatchLowercase ,
- BoldFont = SourceSansPro-Bold.otf ,
- ItalicFont = SourceSansPro-RegularIt.otf ,
- BoldItalicFont = SourceSansPro-BoldIt.otf ]
- \setmonofont{NewCMMono10-Regular.otf}[
- Scale = 1.05 ,
- BoldFont = NewCMMono10-Bold.otf ,
- ItalicFont = NewCMMono10-Italic.otf ,
- BoldItalicFont = NewCMMono10-BoldOblique.otf ]
-}
+\geometry
+ {
+ papersize = { 7in, 10in },
+ total = { 5.535in, 8.300in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
-\PassOptionsToPackage{fontset=none,scheme=plain}{ctex}
-\RequirePackage{ctex}
+\bool_if:NT \l__minimclass_b_five_paper_bool
+ {
+ \geometry
+ {
+ b5paper,
+ total = { 5.535in, 8.160in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
-\IfFileExists{minimalist-font.cjk.tex}{
- \input{minimalist-font.cjk.tex}
-}{
-\IfFontExistsTF{SourceHanSerifSC-Regular}{%
- \setCJKmainfont{SourceHanSerifSC-Regular}[
- BoldFont = SourceHanSerifSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerifSC-Bold ]
-}{
- \setCJKmainfont{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
+\bool_if:NT \l__minimclass_a_four_paper_bool
+ {
+ \geometry
+ {
+ a4paper,
+ total = { 6.500in, 9.685in },
+ centering,
+ footnotesep = 2em plus 2pt minus 2pt,
+ }
+ }
-\IfFontExistsTF{SourceHanSansSC-Regular}{%
- \setCJKsansfont{SourceHanSansSC-Regular}[
- BoldFont = SourceHanSansSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSansSC-Bold ]
-}{
- \setCJKsansfont{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
+\bool_if:NT \l__minimclass_fast_bool
+ {
+ \PassOptionsToPackage { fast } { minimalist }
+ \RequirePackage { draftwatermark }
+ \DraftwatermarkOptions { text = { \normalfont DRAFT }, color = paper!97!-paper }
+ }
-\IfFontExistsTF{SourceHanMonoSC-Regular}{%
- \setCJKmonofont{SourceHanMonoSC-Regular}[
- BoldFont = SourceHanMonoSC-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMonoSC-Medium ]
-}{
- \setCJKmonofont{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
+\bool_if:NTF \l__minimclass_useindent_bool
+ {
+ \RequirePackage { indentfirst }
+ }
+ {
+ \hook_gput_code:nnn { begindocument/before } { minimclass }
+ {
+ \RequirePackage { parskip }
+ }
+ }
-\if at PJLlang@enable at CN
-\IfFontExistsTF{SourceHanSerifSC-Regular}{%
- \setCJKfamilyfont{SCmain}{SourceHanSerifSC-Regular}[
- BoldFont = SourceHanSerifSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerifSC-Bold ]
-}{
- \setCJKfamilyfont{SCmain}{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\IfFontExistsTF{SourceHanSansSC-Regular}{%
- \setCJKfamilyfont{SCsans}{SourceHanSansSC-Regular}[
- BoldFont = SourceHanSansSC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSansSC-Bold ]
-}{
- \setCJKfamilyfont{SCsans}{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-\IfFontExistsTF{SourceHanMonoSC-Regular}{%
- \setCJKfamilyfont{SCmono}{SourceHanMonoSC-Regular}[
- BoldFont = SourceHanMonoSC-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMonoSC-Medium ]
-}{
- \setCJKfamilyfont{SCmono}{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\fi
+\RequirePackage { minimalist }
-\if at PJLlang@enable at TC
-\IfFontExistsTF{SourceHanSerifTC-Regular}{%
- \setCJKfamilyfont{TCmain}{SourceHanSerifTC-Regular}[
- BoldFont = SourceHanSerifTC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerifTC-Bold ]
-}{
- \setCJKfamilyfont{TCmain}{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\IfFontExistsTF{SourceHanSansTC-Regular}{%
- \setCJKfamilyfont{TCsans}{SourceHanSansTC-Regular}[
- BoldFont = SourceHanSansTC-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSansTC-Bold ]
-}{
- \setCJKfamilyfont{TCsans}{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-\IfFontExistsTF{SourceHanMonoTC-Regular}{%
- \setCJKfamilyfont{TCmono}{SourceHanMonoTC-Regular}[
- BoldFont = SourceHanMonoTC-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMonoTC-Medium ]
-}{
- \setCJKfamilyfont{TCmono}{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\fi
+%%================================
+%% Fonts
+%%================================
+\WarningFilter { latexfont } { Font~shape }
+\WarningFilter { latexfont } { Some~font }
-\if at PJLlang@enable at JP
-\IfFontExistsTF{SourceHanSerif-Regular}{%
- \setCJKfamilyfont{JPmain}{SourceHanSerif-Regular}[
- BoldFont = SourceHanSerif-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSerif-Bold ]
-}{
- \setCJKfamilyfont{JPmain}{FandolSong-Regular.otf}[
- BoldFont = FandolSong-Bold.otf ,
- ItalicFont = FandolKai-Regular.otf ,
- BoldItalicFont = FandolKai-Regular.otf ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\IfFontExistsTF{SourceHanSans-Regular}{%
- \setCJKfamilyfont{JPsans}{SourceHanSans-Regular}[
- BoldFont = SourceHanSans-Bold ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanSans-Bold ]
-}{
- \setCJKfamilyfont{JPsans}{FandolHei-Regular.otf}[
- BoldFont = FandolHei-Bold.otf ,
- ItalicFont = * ,
- BoldItalicFont = FandolHei-Bold.otf ]
-}
-\IfFontExistsTF{SourceHanMono-Regular}{%
- \setCJKfamilyfont{JPmono}{SourceHanMono-Regular}[
- BoldFont = SourceHanMono-Medium ,
- ItalicFont = * ,
- BoldItalicFont = SourceHanMono-Medium ]
-}{
- \setCJKfamilyfont{JPmono}{FandolFang-Regular.otf}[
- BoldFont = * ,
- BoldFeatures = {FakeBold=4} ,
- ItalicFont = * ,
- BoldItalicFont = * ,
- BoldItalicFeatures = {FakeBold=4} ]
-}
-\fi
+\cs_new_protected:Nn \__minimclass_load_file_or_config:Nnn
+ {
+ \bool_if:NT #1
+ {
+ \exp_args:Nx \file_if_exist:nT { #2 }
+ {
+ \exp_args:Nx \file_input:n { #2 }
+ \use_none:nn
+ }
+ }
+ \use:n { #3 }
+ }
-\WarningFilter{latexfont}{Font shape}
-\WarningFilter{latexfont}{Some font}
+\cs_new_protected:Nn \__minimclass_if_font_exist:nnn
+ {
+ \bool_if:NTF \l__minimclass_fast_bool
+ { #3 }
+ { \fontspec_font_if_exist:nTF { #1 } { #2 } { #3 } }
+ }
-\def\CJKsffamily{}
-\def\CJKttfamily{}
+\__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_bool { \l__minimclass_custom_font_file_str }
+ {
+ \RequirePackage { projlib-font }
-\apptocmd{\sffamily}{\CJKsffamily}{}{\FAIL}
-\apptocmd{\ttfamily}{\CJKttfamily}{}{\FAIL}
+ \bool_if:NF \g_projlib_font_already_set_bool
+ {
+ \bool_if:NT \l__minimclass_fast_bool
+ {
+ \RequirePackage { mathpazo }
+ }
-\if at PJLlang@enable at CN
-\gappto{\PJLlang at langconfig@CN}{%
- \def\CJKsffamily{\CJKfamily{SCsans}}%
- \def\CJKttfamily{\CJKfamily{SCmono}}%
- \CJKfamily{SCmain}%
-}
-\fi
+ \PassOptionsToPackage { no-math,quiet } { fontspec }
+ \RequirePackage { fontspec }
-\if at PJLlang@enable at TC
-\gappto{\PJLlang at langconfig@TC}{%
- \def\CJKsffamily{\CJKfamily{TCsans}}%
- \def\CJKttfamily{\CJKfamily{TCmono}}%
- \CJKfamily{TCmain}%
-}
-\fi
+ \__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_latin_bool { \l__minimclass_custom_font_file_latin_str }
+ {
+ \__minimclass_if_font_exist:nnn { Palatino~Linotype }
+ {
+ \bool_if:NTF \l__projlib_font_useosf_bool
+ {
+ \setmainfont { Palatino~Linotype } [ Numbers = OldStyle ]
+ }
+ {
+ \setmainfont { Palatino~Linotype }
+ }
+ }
+ {
+ \bool_if:NTF \l__projlib_font_useosf_bool
+ {
+ \setmainfont { TeXGyrePagellaX-Regular.otf }
+ [
+ BoldFont = TeXGyrePagellaX-Bold.otf ,
+ ItalicFont = TeXGyrePagellaX-Italic.otf ,
+ BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf ,
+ Numbers = OldStyle ,
+ ]
+ }
+ {
+ \setmainfont { TeXGyrePagellaX-Regular.otf }
+ [
+ BoldFont = TeXGyrePagellaX-Bold.otf ,
+ ItalicFont = TeXGyrePagellaX-Italic.otf ,
+ BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf ,
+ ]
+ }
+ }
+ \setsansfont { SourceSansPro-Regular.otf }
+ [
+ Scale = MatchLowercase ,
+ BoldFont = SourceSansPro-Bold.otf ,
+ ItalicFont = SourceSansPro-RegularIt.otf ,
+ BoldItalicFont = SourceSansPro-BoldIt.otf ,
+ ]
+ \setmonofont { NewCMMono10-Regular.otf }
+ [
+ Scale = 1.05 ,
+ BoldFont = NewCMMono10-Bold.otf ,
+ ItalicFont = NewCMMono10-Italic.otf ,
+ BoldItalicFont = NewCMMono10-BoldOblique.otf ,
+ ]
-\if at PJLlang@enable at JP
-\gappto{\PJLlang at langconfig@JP}{%
- \def\CJKsffamily{\CJKfamily{JPsans}}%
- \def\CJKttfamily{\CJKfamily{JPmono}}%
- \CJKfamily{JPmain}%
-}
-\fi
+ \projlib_language_set_linespacing_latin:n { \setstretch { 1.07 } }
+ }
+ }
-\def\minimalist at titlefontshape{\CJKsffamily}
-}
+ \PassOptionsToPackage { fontset = none, scheme = plain } { ctex }
+ \RequirePackage { ctex }
-\if at minimclass@customfont\else
-\if at minimclass@fast
-\RequirePackage{amssymb}
-\else
-\PassOptionsToPackage
- {warnings-off={mathtools-colon,mathtools-overbracket}}{unicode-math}
-\RequirePackage{unicode-math}
-\unimathsetup{math-style=ISO, partial=upright, nabla=upright}
-\setmathfont{Asana-Math.otf}
-\IfFontExistsTF{Neo Euler}{%
-\setmathfont[range={up/{Latin,latin,Greek,greek},
- bfup/{Latin,latin,Greek,greek},
- cal, bfcal, frak, bffrak,
- `(,`),`[,`],`\{,`\},`:,`=,\ne,\equiv,`/,\backslash,
- \in,\notin,\ni,\subset,\supset,\subseteq,\supseteq,
- \rightarrow,\leftarrow,\mapsto,\hookrightarrow,\hookleftarrow,
- \sum,\prod,\coprod,
- \sqrt,\int,\iint,\iiint,\oint},
- script-features={},
- sscript-features={},
- Scale = 1.05,
- ]{Neo Euler}
-}{}
-\setmathfont[range={\leq,\geq,\ll,\gg,\lll,\ggg,\leqslant,\geqslant},
- Scale = 0.95,
- ]{latinmodern-math.otf}
-\setmathfont[range={up/num, bfup/num}
- ]{texgyrepagella-math.otf}
+ \__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_cjk_bool { \l__minimclass_custom_font_file_cjk_str }
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerifSC-Regular }
+ {
+ \setCJKmainfont { SourceHanSerifSC-Regular }
+ [
+ BoldFont = SourceHanSerifSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerifSC-Bold ,
+ ]
+ }
+ {
+ \setCJKmainfont { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
-\AtBeginDocument{
-\let\mid at original\mid
-\renewcommand{\mid}{\hspace{-.2em}\mid at original\hspace{-.2em}}
-\let\nmid at original\nmid
-\renewcommand{\nmid}{\hspace{-.2em}\nmid at original\hspace{-.2em}}
-\renewcommand{\frac}[2]{\genfrac{}{}{}{}{
- \mathchoice
- {\raisebox{-.15em}{$\displaystyle #1$}}
- {\raisebox{-.15em}{$\textstyle #1$}}
- {\raisebox{-.08em}{$\scriptstyle #1$}}
- {\scriptscriptstyle #1}
-}{
- \mathchoice
- {\raisebox{.08em}{$\displaystyle #2$}}
- {\raisebox{.08em}{$\textstyle #2$}}
- {\raisebox{.05em}{$\scriptstyle #2$}}
- {\scriptscriptstyle #2}
-}}
-}
+ \__minimclass_if_font_exist:nnn { SourceHanSansSC-Regular }
+ {
+ \setCJKsansfont{SourceHanSansSC-Regular}
+ [
+ BoldFont = SourceHanSansSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSansSC-Bold ,
+ ]
+ }
+ {
+ \setCJKsansfont { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
-\RequirePackage{tikz-cd}
-\newbox\xratbelow
-\newbox\xratabove
-\renewcommand{\xrightarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [->, baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) -- node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xleftarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [<-, baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) -- node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xleftrightarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [<->, baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) -- node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xhookrightarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/hookrightarrow] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xhookleftarrow}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/hookleftarrow] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\renewcommand{\xmapsto}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/mapsto] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\newcommand{\xlongequal}[2][]{%
- \setbox\xratbelow=\hbox{\ensuremath{\scriptstyle #1}}%
- \setbox\xratabove=\hbox{\ensuremath{\scriptstyle #2}}%
- \pgfmathsetlengthmacro{\xratlen}{max(\wd\xratbelow, \wd\xratabove) + .8em}%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/equal] node[below=3pt] {\box\xratbelow}
- node[above=2pt] {\box\xratabove}
- (\xratlen,0) ;}}
-\AtBeginDocument{
-\renewcommand{\twoheadrightarrow}{%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/twoheadrightarrow] (.8em,0) ;}}
-\renewcommand{\twoheadleftarrow}{%
- \mathrel{\tikz [baseline=-.55ex, every node/.style={inner sep=0pt}]
- \draw (0,0) edge[commutative diagrams/twoheadleftarrow] (.8em,0) ;}}
-}
-\fi
-\fi
+ \__minimclass_if_font_exist:nnn { SourceHanMonoSC-Regular }
+ {
+ \setCJKmonofont { SourceHanMonoSC-Regular }
+ [
+ BoldFont = SourceHanMonoSC-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMonoSC-Medium ,
+ ]
+ }
+ {
+ \setCJKmonofont { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
-\if at minimclass@lmodern
- \RequirePackage{amssymb}
- \if at minimclass@useosf
- \RequirePackage{cfr-lm}
- \else
- \RequirePackage{lmodern}
- \fi
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
+ \bool_if:NT \g__projlib_language_enabled_schinese_bool
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerifSC-Regular }
+ {
+ \setCJKfamilyfont { SCmain } { SourceHanSerifSC-Regular }
+ [
+ BoldFont = SourceHanSerifSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerifSC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { SCmain } { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanSansSC-Regular }
+ {
+ \setCJKfamilyfont { SCsans } { SourceHanSansSC-Regular }
+ [
+ BoldFont = SourceHanSansSC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSansSC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { SCsans } { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanMonoSC-Regular }
+ {
+ \setCJKfamilyfont { SCmono } { SourceHanMonoSC-Regular }
+ [
+ BoldFont = SourceHanMonoSC-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMonoSC-Medium ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { SCmono } { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ }
-\if at minimclass@palatino
- \RequirePackage{amssymb}
- \RequirePackage{mathpazo}
- \PassOptionsToPackage{defaultsups}{newpxtext}
- \RequirePackage{newpxtext}
- % \RequirePackage{newpxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.07}}
- \if at minimclass@useosf\useosf\fi
-\fi
+ \bool_if:NT \g__projlib_language_enabled_tchinese_bool
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerifTC-Regular }
+ {
+ \setCJKfamilyfont { TCmain } { SourceHanSerifTC-Regular }
+ [
+ BoldFont = SourceHanSerifTC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerifTC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { TCmain } { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanSansTC-Regular }
+ {
+ \setCJKfamilyfont { TCsans } { SourceHanSansTC-Regular }
+ [
+ BoldFont = SourceHanSansTC-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSansTC-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { TCsans } { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanMonoTC-Regular }
+ {
+ \setCJKfamilyfont { TCmono } { SourceHanMonoTC-Regular }
+ [
+ BoldFont = SourceHanMonoTC-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMonoTC-Medium ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { TCmono } { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ }
-\if at minimclass@times
- \RequirePackage{amssymb}
- \PassOptionsToPackage{defaultsups}{newtxtext}
- \RequirePackage{newtxtext}
- \RequirePackage{newtxmath}
- \let\openbox\relax
- \PJLsetlinespacing{\setstretch{1.00}}
- \if at minimclass@useosf\useosf\fi
-\fi
+ \bool_if:NT \g__projlib_language_enabled_japanese_bool
+ {
+ \__minimclass_if_font_exist:nnn { SourceHanSerif-Regular }
+ {
+ \setCJKfamilyfont { JPmain } { SourceHanSerif-Regular }
+ [
+ BoldFont = SourceHanSerif-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSerif-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { JPmain } { FandolSong-Regular.otf }
+ [
+ BoldFont = FandolSong-Bold.otf ,
+ ItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFont = FandolKai-Regular.otf ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanSans-Regular }
+ {
+ \setCJKfamilyfont { JPsans } { SourceHanSans-Regular }
+ [
+ BoldFont = SourceHanSans-Bold ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanSans-Bold ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { JPsans } { FandolHei-Regular.otf }
+ [
+ BoldFont = FandolHei-Bold.otf ,
+ ItalicFont = * ,
+ BoldItalicFont = FandolHei-Bold.otf ,
+ ]
+ }
+ \__minimclass_if_font_exist:nnn { SourceHanMono-Regular }
+ {
+ \setCJKfamilyfont { JPmono } { SourceHanMono-Regular }
+ [
+ BoldFont = SourceHanMono-Medium ,
+ ItalicFont = * ,
+ BoldItalicFont = SourceHanMono-Medium ,
+ ]
+ }
+ {
+ \setCJKfamilyfont { JPmono } { FandolFang-Regular.otf }
+ [
+ BoldFont = * ,
+ BoldFeatures = { FakeBold = 4 } ,
+ ItalicFont = * ,
+ BoldItalicFont = * ,
+ BoldItalicFeatures = { FakeBold = 4 } ,
+ ]
+ }
+ }
-\if at minimclass@garamond
- \RequirePackage{amssymb}
- \if at minimclass@useosf\else
- \PassOptionsToPackage{lining}{ebgaramond}
- \fi
- \RequirePackage{ebgaramond-maths}
- \RequirePackage{ebgaramond}
- % \RequirePackage{garamondlibre}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
+ \cs_new:Nn \minimclass_cjk_sffamily: {}
+ \cs_new:Nn \minimclass_cjk_ttfamily: {}
-\if at minimclass@noto
- \RequirePackage{amssymb}
- \if at minimclass@useosf
- \PassOptionsToPackage{oldstyle}{notomath}
- \fi
- \RequirePackage{anyfontsize}
- \RequirePackage{notomath}
- \PJLsetlinespacing{\setstretch{1.00}}
-\fi
+ \hook_gput_code:nnn { cmd/sffamily/after } { minimclass } { \minimclass_cjk_sffamily: }
+ \hook_gput_code:nnn { cmd/ttfamily/after } { minimclass } { \minimclass_cjk_ttfamily: }
-\if at minimclass@biolinum
- \RequirePackage{amssymb}
- % \RequirePackage{mathpazo}
- % \RequirePackage[sansmath]{libertinust1math}
- \ifPDFTeX
- \if at minimclass@useosf
- \PassOptionsToPackage{osf}{biolinum}
- \fi
- \RequirePackage{biolinum}
- \renewcommand*\familydefault{\biolinum at family}
- \else
- \PassOptionsToPackage{no-math}{fontspec}
- \RequirePackage{fontspec}
- \setmainfont{LinBiolinum_R.otf}[
- BoldFont = LinBiolinum_RB.otf ,
- ItalicFont = LinBiolinum_RI.otf ,
- BoldItalicFont = LinBiolinum_RBO.otf,
- \if at minimclass@useosf Numbers = OldStyle\fi ]
- \fi
- \PJLsetlinespacing{\setstretch{1.05}}
- \RequirePackage[italic,defaultmathsizes]{mathastext}
-\fi
+ \AddLanguageSetting [schinese]
+ {
+ \cs_set:Nn \minimclass_cjk_sffamily: { \CJKfamily { SCsans } }
+ \cs_set:Nn \minimclass_cjk_ttfamily: { \CJKfamily { SCmono } }
+ \CJKfamily { SCmain }
+ }
+ \AddLanguageSetting [tchinese]
+ {
+ \cs_set:Nn \minimclass_cjk_sffamily: { \CJKfamily { TCsans } }
+ \cs_set:Nn \minimclass_cjk_ttfamily: { \CJKfamily { TCmono } }
+ \CJKfamily { TCmain }
+ }
+ \AddLanguageSetting [japanese]
+ {
+ \cs_set:Nn \minimclass_cjk_sffamily: { \CJKfamily { JPsans } }
+ \cs_set:Nn \minimclass_cjk_ttfamily: { \CJKfamily { JPmono } }
+ \CJKfamily { JPmain }
+ }
-\def\PJL at font@alreadyset{}
+ \tl_gset:Nn \g_minimalist_title_font_common_tl { \minimclass_cjk_sffamily: }
+ }
-\PassOptionsToPackage{verbose=silent}{microtype}
-\RequirePackage{microtype}
-\PassOptionsToPackage{all}{nowidow}
-\RequirePackage{nowidow}
-\RequirePackage{embrac}
+ \__minimclass_load_file_or_config:Nnn \l__minimclass_load_custom_font_file_math_bool { \l__minimclass_custom_font_file_math_str }
+ {
+ \bool_if:NF \g_projlib_font_already_set_bool
+ {
+ \bool_if:NTF \l__minimclass_fast_bool
+ {
+ \RequirePackage { amssymb }
+ }
+ {
+ \PassOptionsToPackage { warnings-off = { mathtools-colon, mathtools-overbracket } } { unicode-math }
+ \RequirePackage { unicode-math }
+ \unimathsetup { math-style = ISO, partial = upright, nabla = upright }
+ \setmathfont { Asana-Math.otf }
+ \__minimclass_if_font_exist:nnn { Neo~Euler }
+ {
+ \setmathfont { Neo~Euler }
+ [
+ range = { up / { Latin, latin, Greek, greek },
+ bfup / { Latin, latin, Greek, greek },
+ cal, bfcal, frak, bffrak,
+ `(, `), `[, `], `\{, `\}, `:, `=, \ne, \equiv, `/, \backslash,
+ \in, \notin, \ni, \subset, \supset, \subseteq, \supseteq,
+ \rightarrow, \leftarrow, \leftrightarrow,
+ \longleftarrow, \longrightarrow, \longleftrightarrow,
+ \Leftarrow, \Rightarrow, \Leftrightarrow,
+ \Longleftarrow, \Longrightarrow, \Longleftrightarrow,
+ \nrightarrow, \nleftarrow, \nleftrightarrow,
+ \nLeftarrow, \nRightarrow, \nLeftrightarrow,
+ \mapsto, \hookrightarrow, \hookleftarrow,
+ \leftharpoonup, \rightharpoonup, \leftharpoondown, \rightharpoondown,
+ \rightleftharpoons, \leftrightharpoons,
+ \sum, \prod, \coprod,
+ \sqrt, \int, \iint, \iiint, \oint
+ },
+ script-features = {},
+ sscript-features = {},
+ Scale = 1.05,
+ ]
+ }{}
+ \setmathfont { latinmodern-math.otf }
+ [
+ range = { \leq, \geq, \ll, \gg, \lll, \ggg, \leqslant, \geqslant },
+ Scale = 0.95,
+ ]
+ \setmathfont { texgyrepagella-math.otf }
+ [
+ range = { up / num, bfup / num }
+ ]
-%%================================
-%% Graphics
-%%================================
-\RequirePackage{graphicx}
-\graphicspath{{images/}}
-\RequirePackage{wrapfig}
-\RequirePackage{float}
-\RequirePackage{caption}
-\captionsetup{font=small}
+ \hook_gput_code:nnn { begindocument } { minimclass }
+ {
+ \NewCommandCopy \minimclass_backup_mid: \mid
+ \RenewDocumentCommand \mid {}
+ { \skip_horizontal:n {-.15em} \minimclass_backup_mid: \skip_horizontal:n {-.15em} }
+ \NewCommandCopy \minimclass_backup_nmid: \nmid
+ \RenewDocumentCommand \nmid {}
+ { \skip_horizontal:n {-.15em} \minimclass_backup_nmid: \skip_horizontal:n {-.15em} }
+ }
+ \RequirePackage { tikz-cd }
+
+ \box_new:N \l__minimclass_xarrows_above_box
+ \box_new:N \l__minimclass_xarrows_below_box
+ \dim_new:N \l__minimclass_xarrows_length_dim
+ \cs_new_protected:Nn \minimclass_xarrows_generic:nnnn
+ % #3 = option of \tikz
+ % #4 = edge of \draw
+ {
+ \hbox_set:Nn \l__minimclass_xarrows_below_box { \ensuremath { \scriptstyle #1 } }
+ \hbox_set:Nn \l__minimclass_xarrows_above_box { \ensuremath { \scriptstyle #2 } }
+ \dim_set:Nn \l__minimclass_xarrows_length_dim
+ { \dim_eval:n { \dim_max:nn { \box_wd:N \l__minimclass_xarrows_below_box } { \box_wd:N \l__minimclass_xarrows_above_box } + .8em } }
+ \mathrel
+ {
+ \tikz [ #3, baseline = -.55ex, every~node/.style = { inner~sep = 0pt } ]
+ \draw (0,0) #4
+ node [ below = 3pt ] { \box_use:N \l__minimclass_xarrows_below_box }
+ node [ above = 2pt ] { \box_use:N \l__minimclass_xarrows_above_box }
+ ( \l__minimclass_xarrows_length_dim ,0) ;
+ }
+ }
+
+ \RenewDocumentCommand \xrightarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } { -> } { -- }
+ }
+ \RenewDocumentCommand \xleftarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } { <- } { -- }
+ }
+ \RenewDocumentCommand \xleftrightarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } { <-> } { -- }
+ }
+ \RenewDocumentCommand \xhookrightarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/hookrightarrow ] }
+ }
+ \RenewDocumentCommand \xhookleftarrow { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/hookleftarrow ] }
+ }
+ \RenewDocumentCommand \xmapsto { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/mapsto ] }
+ }
+ \NewDocumentCommand \xlongequal { O{} m }
+ {
+ \minimclass_xarrows_generic:nnnn { #1 } { #2 } {} { edge [ commutative~diagrams/equal ] }
+ }
+ \hook_gput_code:nnn { begindocument/end } { minimclass }
+ {
+ \RenewDocumentCommand \twoheadrightarrow {}
+ {
+ \minimclass_xarrows_generic:nnnn { \,\, } {} {} { edge [ commutative~diagrams/twoheadrightarrow ] }
+ }
+ \RenewDocumentCommand \twoheadleftarrow {}
+ {
+ \minimclass_xarrows_generic:nnnn { \,\, } {} {} { edge [ commutative~diagrams/twoheadleftarrow ] }
+ }
+ }
+ }
+ }
+ }
+ }
+
+\PassOptionsToPackage { all } { nowidow }
+\RequirePackage { nowidow }
+\RequirePackage { embrac }
+
%%================================
-%% Index
+%% Graphics
%%================================
-\AtEndPreamble{
-\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{}
-\apptocmd{\printindex}{\ResumeLineNumbers}{}{}
-}
+\RequirePackage { graphicx }
+\graphicspath { { images/ } }
+\RequirePackage { wrapfig }
+\RequirePackage { float }
+\RequirePackage { caption }
+\captionsetup { font = small }
\endinput
%%
More information about the tex-live-commits
mailing list.