From c47535c840f22e8dc3cacd587723aaa9338193b3 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 17 Mar 2022 20:33:16 +0000 Subject: jxu (17mar22) (branch) git-svn-id: svn://tug.org/texlive/branches/branch2021.final@62770 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/einfart/README.md | 2 + Master/texmf-dist/doc/latex/minimalist/README.md | 8 +- Master/texmf-dist/doc/latex/projlib/README.md | 17 +- Master/texmf-dist/doc/latex/simplivre/README.md | 2 + Master/texmf-dist/source/latex/projlib/ProjLib.dtx | 209 ++-- Master/texmf-dist/tex/latex/einfart/einfart.cls | 1221 +++++++++++--------- .../tex/latex/minimalist/minimalist-classical.sty | 841 ++++++++++++++ .../tex/latex/minimalist/minimalist-plain.sty | 786 +++++++++++++ .../texmf-dist/tex/latex/minimalist/minimalist.sty | 972 ++-------------- .../texmf-dist/tex/latex/minimalist/minimart.cls | 371 +++--- .../texmf-dist/tex/latex/minimalist/minimbook.cls | 371 +++--- Master/texmf-dist/tex/latex/projlib/ProjLib.sty | 2 +- .../tex/latex/projlib/projlib-author.sty | 74 +- .../tex/latex/projlib/projlib-datetime.sty | 2 +- .../texmf-dist/tex/latex/projlib/projlib-draft.sty | 98 +- .../texmf-dist/tex/latex/projlib/projlib-font.sty | 2 +- .../tex/latex/projlib/projlib-language.sty | 6 +- .../texmf-dist/tex/latex/projlib/projlib-logo.sty | 2 +- .../texmf-dist/tex/latex/projlib/projlib-math.sty | 2 +- .../texmf-dist/tex/latex/projlib/projlib-paper.sty | 2 +- .../tex/latex/projlib/projlib-theorem.sty | 18 +- .../texmf-dist/tex/latex/simplivre/simplivre.cls | 1221 +++++++++++--------- 22 files changed, 3650 insertions(+), 2579 deletions(-) create mode 100644 Master/texmf-dist/tex/latex/minimalist/minimalist-classical.sty create mode 100644 Master/texmf-dist/tex/latex/minimalist/minimalist-plain.sty diff --git a/Master/texmf-dist/doc/latex/einfart/README.md b/Master/texmf-dist/doc/latex/einfart/README.md index 18ef21279f8..591c2285c8c 100644 --- a/Master/texmf-dist/doc/latex/einfart/README.md +++ b/Master/texmf-dist/doc/latex/einfart/README.md @@ -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. diff --git a/Master/texmf-dist/doc/latex/minimalist/README.md b/Master/texmf-dist/doc/latex/minimalist/README.md index 41144c57699..f22ee11664f 100644 --- a/Master/texmf-dist/doc/latex/minimalist/README.md +++ b/Master/texmf-dist/doc/latex/minimalist/README.md @@ -1,14 +1,18 @@ - + # `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 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 diff --git a/Master/texmf-dist/doc/latex/projlib/README.md b/Master/texmf-dist/doc/latex/projlib/README.md index b36f8f2437d..9922ad0b825 100644 --- a/Master/texmf-dist/doc/latex/projlib/README.md +++ b/Master/texmf-dist/doc/latex/projlib/README.md @@ -2,15 +2,11 @@ # ProjLib Toolkit -The bundle is dated 2022/03/11. - -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.** +The bundle is dated 2022/03/17 ## **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 current `ProjLib.sty` is the new `expl3` version, the old one has been renamed to `PJLtoolkit.sty`. +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 new modules are: - projlib-author @@ -23,14 +19,11 @@ The new modules are: - projlib-paper - projlib-theorem -When all these modules are finished, the documentation will be updated accordingly. - -Below is the content of the old README. +Below are 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 @@ The components include: - 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. - + - Provide some pre-defined font configuration > Since `PJLthm.sty` (and thus `ProjLib.sty`) uses `cleveref`, it should be loaded after `varioref` and `hyperref`. diff --git a/Master/texmf-dist/doc/latex/simplivre/README.md b/Master/texmf-dist/doc/latex/simplivre/README.md index 6ec7912598c..0bb13987977 100644 --- a/Master/texmf-dist/doc/latex/simplivre/README.md +++ b/Master/texmf-dist/doc/latex/simplivre/README.md @@ -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. diff --git a/Master/texmf-dist/source/latex/projlib/ProjLib.dtx b/Master/texmf-dist/source/latex/projlib/ProjLib.dtx index 39ba3ccd037..53a8117f7b6 100644 --- a/Master/texmf-dist/source/latex/projlib/ProjLib.dtx +++ b/Master/texmf-dist/source/latex/projlib/ProjLib.dtx @@ -20,70 +20,70 @@ %<*ProjLib> \ProvidesExplPackage {ProjLib} - {2022/03/11} {} + {2022/03/17} {} {Collective interface of the ProjLib toolkit} % % %<*projlib-author> \ProvidesExplPackage {projlib-author} - {2022/03/11} {} + {2022/03/17} {} {Enhanced author information block} % % %<*projlib-datetime> \ProvidesExplPackage {projlib-datetime} - {2022/03/11} {} + {2022/03/17} {} {Convert numeric date-time string to natural language} % % %<*projlib-draft> \ProvidesExplPackage {projlib-draft} - {2022/03/11} {} + {2022/03/17} {} {Useful commands during draft stage} % % %<*projlib-font> \ProvidesExplPackage {projlib-font} - {2022/03/11} {} + {2022/03/17} {} {Font selection and configuration} % % %<*projlib-language> \ProvidesExplPackage {projlib-language} - {2022/03/11} {} + {2022/03/17} {} {Multi-language configuration} % % %<*projlib-logo> \ProvidesExplPackage {projlib-logo} - {2022/03/11} {} + {2022/03/17} {} {The ProjLib logo} % % %<*projlib-math> \ProvidesExplPackage {projlib-math} - {2022/03/11} {} + {2022/03/17} {} {Efficient math setup} % % %<*projlib-paper> \ProvidesExplPackage {projlib-paper} - {2022/03/11} {} + {2022/03/17} {} {Configuration of the paper style} % % %<*projlib-theorem> \ProvidesExplPackage {projlib-theorem} - {2022/03/11} {} + {2022/03/17} {} {Configuration of theorem-like environments} % @@ -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,30 +2161,30 @@ \ с\ соответствующими\ номерами\ страниц\ в\ скобках. } , } -\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 \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-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,30 +3470,30 @@ { \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 { \cs_if_exist:cTF { c@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 } } } diff --git a/Master/texmf-dist/tex/latex/einfart/einfart.cls b/Master/texmf-dist/tex/latex/einfart/einfart.cls index 1be1a1d20ea..38fe5550d16 100644 --- a/Master/texmf-dist/tex/latex/einfart/einfart.cls +++ b/Master/texmf-dist/tex/latex/einfart/einfart.cls @@ -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@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@thmnum@default] - -\newif\if@minimclass@bfivepaper\@minimclass@bfivepaperfalse -\DeclareVoidOption{b5paper}{\@minimclass@bfivepapertrue} -\newif\if@minimclass@afourpaper\@minimclass@afourpaperfalse -\DeclareVoidOption{a4paper}{\@minimclass@afourpapertrue} - -\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass@baseclass}} -\ProcessKeyvalOptions*\relax -\LoadClass{\minimclass@baseclass} - -\if@minimclass@draft - \@minimclass@fasttrue -\fi -\if@minimclass@classical\else - \@minimclass@useindenttrue -\fi -\if@minimclass@lmodern - \@minimclass@customfonttrue -\fi -\if@minimclass@palatino - \@minimclass@customfonttrue -\fi -\if@minimclass@times - \@minimclass@customfonttrue -\fi -\if@minimclass@garamond - \@minimclass@customfonttrue -\fi -\if@minimclass@noto - \@minimclass@customfonttrue -\fi -\if@minimclass@biolinum - \@minimclass@customfonttrue -\fi +\RequirePackage{l3keys2e} +\ProvidesExplClass + {einfart} + {2022/03/17} {} + {A simple and clear article style} + +\tl_const:Nn \l__minimclass_base_class_tl { article } + + +\bool_new:N \l__minimclass_load_custom_font_file_bool +\bool_set_false:N \l__minimclass_load_custom_font_file_bool + +\bool_new:N \l__minimclass_load_custom_font_file_latin_bool +\bool_set_false:N \l__minimclass_load_custom_font_file_latin_bool + +\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 + } %%================================ -%% Page layout +%% 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@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@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@minimclass@fast - \PassOptionsToPackage{fast}{minimalist} - \RequirePackage{draftwatermark} - \DraftwatermarkOptions{text={\normalfont DRAFT},color=paper!95!-paper} -\fi -\if@minimclass@useindent - \RequirePackage{indentfirst} -\else - \AtEndPreamble{\RequirePackage{parskip}} -\fi -\RequirePackage{minimalist} +\RequirePackage { silence } +\WarningFilter { geometry } { Over-specification } + +\PassOptionsToPackage { heightrounded } { geometry } +\RequirePackage { geometry } + +\geometry + { + papersize = { 7in, 10in }, + total = { 5.535in, 8.300in }, + centering, + footnotesep = 2em plus 2pt minus 2pt, + } + +\bool_if:NT \l__minimclass_b_five_paper_bool + { + \geometry + { + b5paper, + total = { 5.535in, 8.160in }, + centering, + footnotesep = 2em plus 2pt minus 2pt, + } + } + +\bool_if:NT \l__minimclass_a_four_paper_bool + { + \geometry + { + a4paper, + total = { 6.500in, 9.685in }, + centering, + footnotesep = 2em plus 2pt minus 2pt, + } + } + +\bool_if:NT \l__minimclass_fast_bool + { + \PassOptionsToPackage { fast } { minimalist } + \RequirePackage { draftwatermark } + \DraftwatermarkOptions { text = { \normalfont DRAFT }, color = paper!97!-paper } + } + +\bool_if:NTF \l__minimclass_useindent_bool + { + \RequirePackage { indentfirst } + } + { + \hook_gput_code:nnn { begindocument/before } { minimclass } + { + \RequirePackage { parskip } + } + } + +\RequirePackage { minimalist } %%================================ -%% Fonts +%% Fonts %%================================ -\if@minimclass@customfont\else - \if@minimclass@fast - \RequirePackage{mathpazo} - \fi -\fi - -\PassOptionsToPackage{no-math,quiet}{fontspec} -\RequirePackage{fontspec} - -\IfFileExists{minimalist-font.tex}{ - \input{minimalist-font.tex} -}{ -\IfFontExistsTF{Palatino Linotype}{% - \setmainfont{Palatino Linotype} - [\if@minimclass@useosf Numbers = OldStyle\fi] -}{ - \setmainfont{TeXGyrePagellaX-Regular.otf}[ - BoldFont = TeXGyrePagellaX-Bold.otf , - ItalicFont = TeXGyrePagellaX-Italic.otf , - BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf, - \if@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 ] -} - -\PassOptionsToPackage{fontset=none,scheme=plain}{ctex} -\RequirePackage{ctex} - -\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} ] -} - -\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 ] -} - -\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} ] -} - -\if@PJLlang@enable@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 - -\if@PJLlang@enable@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 - -\if@PJLlang@enable@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 - -\WarningFilter{latexfont}{Font shape} -\WarningFilter{latexfont}{Some font} - -\def\CJKsffamily{} -\def\CJKttfamily{} - -\apptocmd{\sffamily}{\CJKsffamily}{}{\FAIL} -\apptocmd{\ttfamily}{\CJKttfamily}{}{\FAIL} - -\if@PJLlang@enable@CN -\gappto{\PJLlang@langconfig@CN}{% - \def\CJKsffamily{\CJKfamily{SCsans}}% - \def\CJKttfamily{\CJKfamily{SCmono}}% - \CJKfamily{SCmain}% -} -\fi - -\if@PJLlang@enable@TC -\gappto{\PJLlang@langconfig@TC}{% - \def\CJKsffamily{\CJKfamily{TCsans}}% - \def\CJKttfamily{\CJKfamily{TCmono}}% - \CJKfamily{TCmain}% -} -\fi - -\if@PJLlang@enable@JP -\gappto{\PJLlang@langconfig@JP}{% - \def\CJKsffamily{\CJKfamily{JPsans}}% - \def\CJKttfamily{\CJKfamily{JPmono}}% - \CJKfamily{JPmain}% -} -\fi - -\def\minimalist@titlefontshape{\CJKsffamily} -} - -\if@minimclass@customfont\else -\if@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} - -\AtBeginDocument{ -\let\mid@original\mid -\renewcommand{\mid}{\hspace{-.2em}\mid@original\hspace{-.2em}} -\let\nmid@original\nmid -\renewcommand{\nmid}{\hspace{-.2em}\nmid@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} -}} -} - -\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 - -\if@minimclass@lmodern - \RequirePackage{amssymb} - \if@minimclass@useosf - \RequirePackage{cfr-lm} - \else - \RequirePackage{lmodern} - \fi - \PJLsetlinespacing{\setstretch{1.00}} -\fi - -\if@minimclass@palatino - \RequirePackage{amssymb} - \RequirePackage{mathpazo} - \PassOptionsToPackage{defaultsups}{newpxtext} - \RequirePackage{newpxtext} - % \RequirePackage{newpxmath} - \let\openbox\relax - \PJLsetlinespacing{\setstretch{1.07}} - \if@minimclass@useosf\useosf\fi -\fi - -\if@minimclass@times - \RequirePackage{amssymb} - \PassOptionsToPackage{defaultsups}{newtxtext} - \RequirePackage{newtxtext} - \RequirePackage{newtxmath} - \let\openbox\relax - \PJLsetlinespacing{\setstretch{1.00}} - \if@minimclass@useosf\useosf\fi -\fi - -\if@minimclass@garamond - \RequirePackage{amssymb} - \if@minimclass@useosf\else - \PassOptionsToPackage{lining}{ebgaramond} - \fi - \RequirePackage{ebgaramond-maths} - \RequirePackage{ebgaramond} - % \RequirePackage{garamondlibre} - \PJLsetlinespacing{\setstretch{1.00}} -\fi - -\if@minimclass@noto - \RequirePackage{amssymb} - \if@minimclass@useosf - \PassOptionsToPackage{oldstyle}{notomath} - \fi - \RequirePackage{anyfontsize} - \RequirePackage{notomath} - \PJLsetlinespacing{\setstretch{1.00}} -\fi - -\if@minimclass@biolinum - \RequirePackage{amssymb} - % \RequirePackage{mathpazo} - % \RequirePackage[sansmath]{libertinust1math} - \ifPDFTeX - \if@minimclass@useosf - \PassOptionsToPackage{osf}{biolinum} - \fi - \RequirePackage{biolinum} - \renewcommand*\familydefault{\biolinum@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@minimclass@useosf Numbers = OldStyle\fi ] - \fi - \PJLsetlinespacing{\setstretch{1.05}} - \RequirePackage[italic,defaultmathsizes]{mathastext} -\fi - -\def\PJL@font@alreadyset{} - -\PassOptionsToPackage{verbose=silent}{microtype} -\RequirePackage{microtype} -\PassOptionsToPackage{all}{nowidow} -\RequirePackage{nowidow} -\RequirePackage{embrac} +\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 } + } + +\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 } } + } + +\__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 + { + \bool_if:NT \l__minimclass_fast_bool + { + \RequirePackage { mathpazo } + } + + \PassOptionsToPackage { no-math,quiet } { fontspec } + \RequirePackage { fontspec } + + \__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 , + ] + + \projlib_language_set_linespacing_latin:n { \setstretch { 1.07 } } + } + } + + \PassOptionsToPackage { fontset = none, scheme = plain } { ctex } + \RequirePackage { ctex } + + \__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 } , + ] + } + + \__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 , + ] + } + + \__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 } , + ] + } + + \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 } , + ] + } + } + + \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 } , + ] + } + } + + \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 } , + ] + } + } + + \cs_new:Nn \minimclass_cjk_sffamily: {} + \cs_new:Nn \minimclass_cjk_ttfamily: {} + + \hook_gput_code:nnn { cmd/sffamily/after } { minimclass } { \minimclass_cjk_sffamily: } + \hook_gput_code:nnn { cmd/ttfamily/after } { minimclass } { \minimclass_cjk_ttfamily: } + + \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 } + } + + \tl_gset:Nn \g_minimalist_title_font_common_tl { \minimclass_cjk_sffamily: } + } + + \__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 } + ] + + \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 } %%================================ -%% Graphics +%% Graphics %%================================ -\RequirePackage{graphicx} -\graphicspath{{images/}} -\RequirePackage{wrapfig} -\RequirePackage{float} -\RequirePackage{caption} -\captionsetup{font=small} - -%%================================ -%% Index -%%================================ -\AtEndPreamble{ -\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{} -\apptocmd{\printindex}{\ResumeLineNumbers}{}{} -} +\RequirePackage { graphicx } +\graphicspath { { images/ } } +\RequirePackage { wrapfig } +\RequirePackage { float } +\RequirePackage { caption } +\captionsetup { font = small } \endinput %% diff --git a/Master/texmf-dist/tex/latex/minimalist/minimalist-classical.sty b/Master/texmf-dist/tex/latex/minimalist/minimalist-classical.sty new file mode 100644 index 00000000000..0e366919ba8 --- /dev/null +++ b/Master/texmf-dist/tex/latex/minimalist/minimalist-classical.sty @@ -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@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@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@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@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@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@twoside\ifodd\c@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'. diff --git a/Master/texmf-dist/tex/latex/minimalist/minimalist-plain.sty b/Master/texmf-dist/tex/latex/minimalist/minimalist-plain.sty new file mode 100644 index 00000000000..2bc3cd69b05 --- /dev/null +++ b/Master/texmf-dist/tex/latex/minimalist/minimalist-plain.sty @@ -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@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@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@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@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@twoside\ifodd\c@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'. diff --git a/Master/texmf-dist/tex/latex/minimalist/minimalist.sty b/Master/texmf-dist/tex/latex/minimalist/minimalist.sty index 85a64926d67..176d5986e0a 100644 --- a/Master/texmf-dist/tex/latex/minimalist/minimalist.sty +++ b/Master/texmf-dist/tex/latex/minimalist/minimalist.sty @@ -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,906 +16,76 @@ %% 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@thmnum@default] -\DeclareBoolOption[true]{regionalref} -\DeclareBoolOption[false]{originalref} -\DeclareBoolOption[false]{allowbf} -\DeclareBoolOption[false]{classical} -\DeclareBoolOption[false]{runin} -\ProcessKeyvalOptions*\relax - -\if@minimalist@originalref - \@minimalist@regionalreffalse -\fi -\if@minimalist@draft - \@minimalist@fasttrue -\fi -\if@minimalist@puretext - \@minimalist@nothmstrue -\fi - -\if@minimalist@fast - \PassOptionsToPackage{fast}{PJLdraft} - \PassOptionsToPackage{fast}{PJLthm} -\fi -\expandafter\ifstrempty\expandafter{\@minimalist@thmnum}{}{ - \expandafter\ifstrequal\expandafter{\@minimalist@thmnum}{minimalist@thmnum@default}{ - \PassOptionsToPackage{thmnum}{PJLthm} - }{ - \PassOptionsToPackage{thmnum=\@minimalist@thmnum}{PJLthm} - } -} -\if@minimalist@regionalref\else - \PassOptionsToPackage{originalref}{PJLthm} -\fi - -\if@minimalist@allowbf - \newcommand{\conditionalbfseries}{\bfseries\colorlet{PJLtempcolor}{.}\color{PJLtempcolor!83!paper}} -\else - \newcommand{\conditionalbfseries}{} -\fi - -\newif\ifIsBook -\ifdefined\c@chapter\IsBooktrue\else\IsBookfalse\fi - -%%================================ -%% Title fonts -%%================================ -\RequirePackage{anyfontsize} - -\def\minimalist@titlefontshape{} - -\if@minimalist@classical -\newcommand{\partfont}{\conditionalbfseries\minimalist@titlefontshape} -\newcommand{\chapfont}{\conditionalbfseries\minimalist@titlefontshape} -\newcommand{\secfont}{\conditionalbfseries} -\newcommand{\subsecfont}{\conditionalbfseries} -\newcommand{\subsubsecfont}{\conditionalbfseries\itshape} -\else -\newcommand{\partfont}{\conditionalbfseries\minimalist@titlefontshape} -\newcommand{\chapfont}{\conditionalbfseries\minimalist@titlefontshape} -\newcommand{\secfont}{\conditionalbfseries\minimalist@titlefontshape} -\newcommand{\subsecfont}{\conditionalbfseries\minimalist@titlefontshape} -\newcommand{\subsubsecfont}{\conditionalbfseries\minimalist@titlefontshape} -\fi - -%%================================ -%% Paper configuration -%%================================ -\RequirePackage{PJLpaper} - -%%================================ -%% Footer -%%================================ -\RequirePackage{geometry} -\RequirePackage{fancyhdr} -\RequirePackage{extramarks} - -\AtEndPreamble{\fancyhfoffset{0pt}} - -\fancypagestyle{fancy}{ - \fancyhf{} - \if@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@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@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@twoside - \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{}} - \else - \renewcommand{\chaptermark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}} - \fi - \renewcommand*{\sectionmark}[1]{% - \markright{\sec@decochar~\arabic{section}~\sec@decochar~~~#1}} -}{ - \if@twoside - \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{}} - \else - \renewcommand*{\sectionmark}[1]{\markboth{\textsc{#1}}{\textsc{#1}}} - \fi -} -%%================================ -%% Languages and line spacing -%%================================ -\RequirePackage{PJLlang} -\PJLsetlinespacing{\setstretch{1.07}} -\PJLsetCJKlinespacing{\onehalfspacing} -\raggedbottom - -%%================================ -%% 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@langconfig@common}{% -\renewcommand{\partstring}{\MakeUppercase{{\partname~\protect\thepart}}}% -} -\gappto{\PJLlang@langconfig@CN}{% -\renewcommand{\partstring}{第~\thepart~部分}% -} -\gappto{\PJLlang@langconfig@TC}{% -\renewcommand{\partstring}{第~\thepart~部分}% -} -\gappto{\PJLlang@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@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@decochar{\raisebox{.03em}{\normalfont/}} -\titleformat{\section} - {\LocallyStopLineNumbers% - \secfont\centering}{}{0em} - {{\small\textcolor{maintext!27!paper}{\footnotesize\sec@decochar}% - \,\,\textcolor{maintext!90!paper}{\conditionalbfseries\arabic{section}}% - \,\,\textcolor{maintext!27!paper}{\footnotesize\sec@decochar}}\\ - \seculine{#1}} - [\ResumeLineNumbers] -\titleformat{name=\section,numberless} - {\LocallyStopLineNumbers% - % \phantomsection\addcontentsline{toc}{section}{#1}% - \secfont\centering}{}{0em} - {\seculine{#1}} - [\ResumeLineNumbers] -\else -\newcommand\sec@decochar{} -\titleformat{\section} - {\LocallyStopLineNumbers% - \secfont\centering} - {\thesection}{.75em} - {#1} - [\ResumeLineNumbers] -\fi - -%% Subsection -\if@minimalist@classical -\renewcommand\thesubsection{% - \ifnum\c@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@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@decochar}\,\textcolor{maintext!90!paper}{\thecontentslabel}\,\textcolor{maintext!27!paper}{\small\sec@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@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@langconfig@common}{\setlist[itemize,1]{label=\colorlet{currentcolor}{.}\textcolor{currentcolor!27!paper}{$\bullet$}}} -\gappto{\PJLlang@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@twoside\ifodd\c@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@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@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@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@definethms{ -\if@minimalist@nothms\else -\if@minimalist@nothmnum -\CreateTheorem*{theorem} -\CreateTheorem*{lemma} -\CreateTheorem*{proposition} -\CreateTheorem*{corollary} -\CreateTheorem*{definition-proposition} -\CreateTheorem*{definition-theorem} -\CreateTheorem*{property} -\CreateTheorem*{fact} -\CreateTheorem*{conjecture} -\else -\CreateTheorem@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@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@minimalist@nothmnum -\CreateTheorem*{remark} -\CreateTheorem*{observation} -\else -\CreateTheorem@thmnum{remark} -\CreateTheorem@thmnum{observation} -\fi -\CreateTheorem*{remark*} -\CreateTheorem*{observation*} -\fi -} - -\if@minimalist@delaythms - \AtEndPreamble{\minimalist@definethms} -\else - \minimalist@definethms -\fi - -\ifbool{IsBook}{}{% - -%%================================ -%% Title block style -%%================================ -\if@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@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@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@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@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} - -} +\RequirePackage{l3keys2e} +\ProvidesExplPackage + {minimalist} + {2022/03/17} {} + {A simple and clear style for articles and books} + +\keys_define:nn { minimalist } + { + , draft .bool_set:N = \l__minimalist_fast_bool + , draft .initial:n = { false } + , fast .bool_set:N = \l__minimalist_fast_bool + + , style .str_set:N = \l__minimalist_style_str + , style .initial:n = { plain } + , classical .meta:n = { style = classical } + + , 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 } + + , 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 + + , 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 } + +\bool_new:N \l__minimalist_is_book_bool +\cs_if_exist:cTF { c@chapter } + { + \bool_set_true:N \l__minimalist_is_book_bool + } + { + \bool_set_false:N \l__minimalist_is_book_bool + } + +%%================================ +%% Paper configuration +%%================================ +\RequirePackage { projlib-paper } + +%%================================ +%% Multi-language support +%%================================ +\RequirePackage { projlib-language } + +%%================================ +%% Loading the style +%%================================ +\exp_args:No \RequirePackage { minimalist- \l__minimalist_style_str } \endinput %% diff --git a/Master/texmf-dist/tex/latex/minimalist/minimart.cls b/Master/texmf-dist/tex/latex/minimalist/minimart.cls index e671b25d658..4fe51f5c4dc 100644 --- a/Master/texmf-dist/tex/latex/minimalist/minimart.cls +++ b/Master/texmf-dist/tex/latex/minimalist/minimart.cls @@ -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@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@thmnum@default] - -\newif\if@minimclass@bfivepaper\@minimclass@bfivepaperfalse -\DeclareVoidOption{b5paper}{\@minimclass@bfivepapertrue} -\newif\if@minimclass@afourpaper\@minimclass@afourpaperfalse -\DeclareVoidOption{a4paper}{\@minimclass@afourpapertrue} - -\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass@baseclass}} -\ProcessKeyvalOptions*\relax -\LoadClass{\minimclass@baseclass} - -\if@minimclass@draft - \@minimclass@fasttrue -\fi -\if@minimclass@classical\else - \@minimclass@useindenttrue -\fi -\if@minimclass@lmodern - \@minimclass@customfonttrue -\fi -\if@minimclass@palatino - \@minimclass@customfonttrue -\fi -\if@minimclass@times - \@minimclass@customfonttrue -\fi -\if@minimclass@garamond - \@minimclass@customfonttrue -\fi -\if@minimclass@noto - \@minimclass@customfonttrue -\fi -\if@minimclass@biolinum - \@minimclass@customfonttrue -\fi +\RequirePackage{l3keys2e} +\ProvidesExplClass + {minimart} + {2022/03/17} {} + {A simple and clear article style} + +\tl_const:Nn \l__minimclass_base_class_tl { article } + + +\bool_new:N \l__minimclass_load_custom_font_file_bool +\bool_set_false:N \l__minimclass_load_custom_font_file_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 } + } + , 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 + } %%================================ -%% Page layout +%% 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@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@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@minimclass@fast - \PassOptionsToPackage{fast}{minimalist} - \RequirePackage{draftwatermark} - \DraftwatermarkOptions{text={\normalfont DRAFT},color=paper!95!-paper} -\fi -\if@minimclass@useindent - \RequirePackage{indentfirst} -\else - \AtEndPreamble{\RequirePackage{parskip}} -\fi -\RequirePackage{minimalist} +\RequirePackage { silence } +\WarningFilter { geometry } { Over-specification } + +\PassOptionsToPackage { heightrounded } { geometry } +\RequirePackage { geometry } + +\geometry + { + papersize = { 7in, 10in }, + total = { 5.535in, 8.300in }, + centering, + footnotesep = 2em plus 2pt minus 2pt, + } + +\bool_if:NT \l__minimclass_b_five_paper_bool + { + \geometry + { + b5paper, + total = { 5.535in, 8.160in }, + centering, + footnotesep = 2em plus 2pt minus 2pt, + } + } + +\bool_if:NT \l__minimclass_a_four_paper_bool + { + \geometry + { + a4paper, + total = { 6.500in, 9.685in }, + centering, + footnotesep = 2em plus 2pt minus 2pt, + } + } + +\bool_if:NT \l__minimclass_fast_bool + { + \PassOptionsToPackage { fast } { minimalist } + \RequirePackage { draftwatermark } + \DraftwatermarkOptions { text = { \normalfont DRAFT }, color = paper!97!-paper } + } + +\bool_if:NTF \l__minimclass_useindent_bool + { + \RequirePackage { indentfirst } + } + { + \hook_gput_code:nnn { begindocument/before } { minimclass } + { + \RequirePackage { parskip } + } + } + +\RequirePackage { minimalist } %%================================ -%% Fonts +%% Fonts %%================================ -\RequirePackage{iftex} -\ifPDFTeX -\RequirePackage[T1]{fontenc} -\RequirePackage{inputenc} -\fi -\if@minimclass@customfont\else -\RequirePackage{mathpazo} -\RequirePackage{newpxtext} -\fi -\RequirePackage{amssymb} - -\if@minimclass@lmodern - \RequirePackage{amssymb} - \if@minimclass@useosf - \RequirePackage{cfr-lm} - \else - \RequirePackage{lmodern} - \fi - \PJLsetlinespacing{\setstretch{1.00}} -\fi - -\if@minimclass@palatino - \RequirePackage{amssymb} - \RequirePackage{mathpazo} - \PassOptionsToPackage{defaultsups}{newpxtext} - \RequirePackage{newpxtext} - % \RequirePackage{newpxmath} - \let\openbox\relax - \PJLsetlinespacing{\setstretch{1.07}} - \if@minimclass@useosf\useosf\fi -\fi - -\if@minimclass@times - \RequirePackage{amssymb} - \PassOptionsToPackage{defaultsups}{newtxtext} - \RequirePackage{newtxtext} - \RequirePackage{newtxmath} - \let\openbox\relax - \PJLsetlinespacing{\setstretch{1.00}} - \if@minimclass@useosf\useosf\fi -\fi - -\if@minimclass@garamond - \RequirePackage{amssymb} - \if@minimclass@useosf\else - \PassOptionsToPackage{lining}{ebgaramond} - \fi - \RequirePackage{ebgaramond-maths} - \RequirePackage{ebgaramond} - % \RequirePackage{garamondlibre} - \PJLsetlinespacing{\setstretch{1.00}} -\fi - -\if@minimclass@noto - \RequirePackage{amssymb} - \if@minimclass@useosf - \PassOptionsToPackage{oldstyle}{notomath} - \fi - \RequirePackage{anyfontsize} - \RequirePackage{notomath} - \PJLsetlinespacing{\setstretch{1.00}} -\fi - -\if@minimclass@biolinum - \RequirePackage{amssymb} - % \RequirePackage{mathpazo} - % \RequirePackage[sansmath]{libertinust1math} - \ifPDFTeX - \if@minimclass@useosf - \PassOptionsToPackage{osf}{biolinum} - \fi - \RequirePackage{biolinum} - \renewcommand*\familydefault{\biolinum@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@minimclass@useosf Numbers = OldStyle\fi ] - \fi - \PJLsetlinespacing{\setstretch{1.05}} - \RequirePackage[italic,defaultmathsizes]{mathastext} -\fi - -\def\PJL@font@alreadyset{} - -\PassOptionsToPackage{verbose=silent}{microtype} -\RequirePackage{microtype} -\PassOptionsToPackage{all}{nowidow} -\RequirePackage{nowidow} -\RequirePackage{embrac} +\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 } %%================================ -%% Graphics +%% Graphics %%================================ -\RequirePackage{graphicx} -\graphicspath{{images/}} -\RequirePackage{wrapfig} -\RequirePackage{float} -\RequirePackage{caption} -\captionsetup{font=small} - -%%================================ -%% Index -%%================================ -\AtEndPreamble{ -\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{} -\apptocmd{\printindex}{\ResumeLineNumbers}{}{} -} +\RequirePackage { graphicx } +\graphicspath { { images/ } } +\RequirePackage { wrapfig } +\RequirePackage { float } +\RequirePackage { caption } +\captionsetup { font = small } \endinput %% diff --git a/Master/texmf-dist/tex/latex/minimalist/minimbook.cls b/Master/texmf-dist/tex/latex/minimalist/minimbook.cls index 384451f8f1a..f346448d3ad 100644 --- a/Master/texmf-dist/tex/latex/minimalist/minimbook.cls +++ b/Master/texmf-dist/tex/latex/minimalist/minimbook.cls @@ -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@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@thmnum@default] - -\newif\if@minimclass@bfivepaper\@minimclass@bfivepaperfalse -\DeclareVoidOption{b5paper}{\@minimclass@bfivepapertrue} -\newif\if@minimclass@afourpaper\@minimclass@afourpaperfalse -\DeclareVoidOption{a4paper}{\@minimclass@afourpapertrue} - -\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass@baseclass}} -\ProcessKeyvalOptions*\relax -\LoadClass{\minimclass@baseclass} - -\if@minimclass@draft - \@minimclass@fasttrue -\fi -\if@minimclass@classical\else - \@minimclass@useindenttrue -\fi -\if@minimclass@lmodern - \@minimclass@customfonttrue -\fi -\if@minimclass@palatino - \@minimclass@customfonttrue -\fi -\if@minimclass@times - \@minimclass@customfonttrue -\fi -\if@minimclass@garamond - \@minimclass@customfonttrue -\fi -\if@minimclass@noto - \@minimclass@customfonttrue -\fi -\if@minimclass@biolinum - \@minimclass@customfonttrue -\fi +\RequirePackage{l3keys2e} +\ProvidesExplClass + {minimbook} + {2022/03/17} {} + {A simple and clear book style} + +\tl_const:Nn \l__minimclass_base_class_tl { book } + + +\bool_new:N \l__minimclass_load_custom_font_file_bool +\bool_set_false:N \l__minimclass_load_custom_font_file_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 } + } + , 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 + } %%================================ -%% Page layout +%% 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@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@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@minimclass@fast - \PassOptionsToPackage{fast}{minimalist} - \RequirePackage{draftwatermark} - \DraftwatermarkOptions{text={\normalfont DRAFT},color=paper!95!-paper} -\fi -\if@minimclass@useindent - \RequirePackage{indentfirst} -\else - \AtEndPreamble{\RequirePackage{parskip}} -\fi -\RequirePackage{minimalist} +\RequirePackage { silence } +\WarningFilter { geometry } { Over-specification } + +\PassOptionsToPackage { heightrounded } { geometry } +\RequirePackage { geometry } + +\geometry + { + papersize = { 7in, 10in }, + total = { 5.535in, 8.300in }, + centering, + footnotesep = 2em plus 2pt minus 2pt, + } + +\bool_if:NT \l__minimclass_b_five_paper_bool + { + \geometry + { + b5paper, + total = { 5.535in, 8.160in }, + centering, + footnotesep = 2em plus 2pt minus 2pt, + } + } + +\bool_if:NT \l__minimclass_a_four_paper_bool + { + \geometry + { + a4paper, + total = { 6.500in, 9.685in }, + centering, + footnotesep = 2em plus 2pt minus 2pt, + } + } + +\bool_if:NT \l__minimclass_fast_bool + { + \PassOptionsToPackage { fast } { minimalist } + \RequirePackage { draftwatermark } + \DraftwatermarkOptions { text = { \normalfont DRAFT }, color = paper!97!-paper } + } + +\bool_if:NTF \l__minimclass_useindent_bool + { + \RequirePackage { indentfirst } + } + { + \hook_gput_code:nnn { begindocument/before } { minimclass } + { + \RequirePackage { parskip } + } + } + +\RequirePackage { minimalist } %%================================ -%% Fonts +%% Fonts %%================================ -\RequirePackage{iftex} -\ifPDFTeX -\RequirePackage[T1]{fontenc} -\RequirePackage{inputenc} -\fi -\if@minimclass@customfont\else -\RequirePackage{mathpazo} -\RequirePackage{newpxtext} -\fi -\RequirePackage{amssymb} - -\if@minimclass@lmodern - \RequirePackage{amssymb} - \if@minimclass@useosf - \RequirePackage{cfr-lm} - \else - \RequirePackage{lmodern} - \fi - \PJLsetlinespacing{\setstretch{1.00}} -\fi - -\if@minimclass@palatino - \RequirePackage{amssymb} - \RequirePackage{mathpazo} - \PassOptionsToPackage{defaultsups}{newpxtext} - \RequirePackage{newpxtext} - % \RequirePackage{newpxmath} - \let\openbox\relax - \PJLsetlinespacing{\setstretch{1.07}} - \if@minimclass@useosf\useosf\fi -\fi - -\if@minimclass@times - \RequirePackage{amssymb} - \PassOptionsToPackage{defaultsups}{newtxtext} - \RequirePackage{newtxtext} - \RequirePackage{newtxmath} - \let\openbox\relax - \PJLsetlinespacing{\setstretch{1.00}} - \if@minimclass@useosf\useosf\fi -\fi - -\if@minimclass@garamond - \RequirePackage{amssymb} - \if@minimclass@useosf\else - \PassOptionsToPackage{lining}{ebgaramond} - \fi - \RequirePackage{ebgaramond-maths} - \RequirePackage{ebgaramond} - % \RequirePackage{garamondlibre} - \PJLsetlinespacing{\setstretch{1.00}} -\fi - -\if@minimclass@noto - \RequirePackage{amssymb} - \if@minimclass@useosf - \PassOptionsToPackage{oldstyle}{notomath} - \fi - \RequirePackage{anyfontsize} - \RequirePackage{notomath} - \PJLsetlinespacing{\setstretch{1.00}} -\fi - -\if@minimclass@biolinum - \RequirePackage{amssymb} - % \RequirePackage{mathpazo} - % \RequirePackage[sansmath]{libertinust1math} - \ifPDFTeX - \if@minimclass@useosf - \PassOptionsToPackage{osf}{biolinum} - \fi - \RequirePackage{biolinum} - \renewcommand*\familydefault{\biolinum@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@minimclass@useosf Numbers = OldStyle\fi ] - \fi - \PJLsetlinespacing{\setstretch{1.05}} - \RequirePackage[italic,defaultmathsizes]{mathastext} -\fi - -\def\PJL@font@alreadyset{} - -\PassOptionsToPackage{verbose=silent}{microtype} -\RequirePackage{microtype} -\PassOptionsToPackage{all}{nowidow} -\RequirePackage{nowidow} -\RequirePackage{embrac} +\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 } %%================================ -%% Graphics +%% Graphics %%================================ -\RequirePackage{graphicx} -\graphicspath{{images/}} -\RequirePackage{wrapfig} -\RequirePackage{float} -\RequirePackage{caption} -\captionsetup{font=small} - -%%================================ -%% Index -%%================================ -\AtEndPreamble{ -\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{} -\apptocmd{\printindex}{\ResumeLineNumbers}{}{} -} +\RequirePackage { graphicx } +\graphicspath { { images/ } } +\RequirePackage { wrapfig } +\RequirePackage { float } +\RequirePackage { caption } +\captionsetup { font = small } \endinput %% diff --git a/Master/texmf-dist/tex/latex/projlib/ProjLib.sty b/Master/texmf-dist/tex/latex/projlib/ProjLib.sty index cf262b3fe19..80741f79a12 100644 --- a/Master/texmf-dist/tex/latex/projlib/ProjLib.sty +++ b/Master/texmf-dist/tex/latex/projlib/ProjLib.sty @@ -19,7 +19,7 @@ \RequirePackage{l3keys2e} \ProvidesExplPackage {ProjLib} - {2022/03/11} {} + {2022/03/17} {} {Collective interface of the ProjLib toolkit} \keys_define:nn { ProjLib } diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-author.sty b/Master/texmf-dist/tex/latex/projlib/projlib-author.sty index e3929df4e51..b8f389a9270 100644 --- a/Master/texmf-dist/tex/latex/projlib/projlib-author.sty +++ b/Master/texmf-dist/tex/latex/projlib/projlib-author.sty @@ -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 diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty b/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty index aa182abe7c0..64ba9baf2a0 100644 --- a/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty +++ b/Master/texmf-dist/tex/latex/projlib/projlib-datetime.sty @@ -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 diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty b/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty index 9c9fd22e01b..02a2d884046 100644 --- a/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty +++ b/Master/texmf-dist/tex/latex/projlib/projlib-draft.sty @@ -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,30 +97,30 @@ \ с\ соответствующими\ номерами\ страниц\ в\ скобках. } , } -\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 \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'. diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-font.sty b/Master/texmf-dist/tex/latex/projlib/projlib-font.sty index 50ffb4258c2..136873b0462 100644 --- a/Master/texmf-dist/tex/latex/projlib/projlib-font.sty +++ b/Master/texmf-dist/tex/latex/projlib/projlib-font.sty @@ -19,7 +19,7 @@ \RequirePackage{l3keys2e} \ProvidesExplPackage {projlib-font} - {2022/03/11} {} + {2022/03/17} {} {Font selection and configuration} \keys_define:nn { projlib-font } diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-language.sty b/Master/texmf-dist/tex/latex/projlib/projlib-language.sty index df1df41fd72..37b73af2598 100644 --- a/Master/texmf-dist/tex/latex/projlib/projlib-language.sty +++ b/Master/texmf-dist/tex/latex/projlib/projlib-language.sty @@ -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 { diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty b/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty index ee59a9e5f43..2aec50e7db3 100644 --- a/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty +++ b/Master/texmf-dist/tex/latex/projlib/projlib-logo.sty @@ -19,7 +19,7 @@ \RequirePackage{l3keys2e} \ProvidesExplPackage {projlib-logo} - {2022/03/11} {} + {2022/03/17} {} {The ProjLib logo} \keys_define:nn { projlib-logo } diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-math.sty b/Master/texmf-dist/tex/latex/projlib/projlib-math.sty index 04d1f190bd4..b3b333c0cac 100644 --- a/Master/texmf-dist/tex/latex/projlib/projlib-math.sty +++ b/Master/texmf-dist/tex/latex/projlib/projlib-math.sty @@ -19,7 +19,7 @@ \RequirePackage{l3keys2e} \ProvidesExplPackage {projlib-math} - {2022/03/11} {} + {2022/03/17} {} {Efficient math setup} \keys_define:nn { projlib-math } diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty b/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty index 6835198f3a7..240426477b0 100644 --- a/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty +++ b/Master/texmf-dist/tex/latex/projlib/projlib-paper.sty @@ -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 } diff --git a/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty b/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty index 69d1ed3261d..8ef33efffcd 100644 --- a/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty +++ b/Master/texmf-dist/tex/latex/projlib/projlib-theorem.sty @@ -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,30 +112,30 @@ { \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 { \cs_if_exist:cTF { c@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 } } } diff --git a/Master/texmf-dist/tex/latex/simplivre/simplivre.cls b/Master/texmf-dist/tex/latex/simplivre/simplivre.cls index 0dfcb4a135e..7cac20b9ae2 100644 --- a/Master/texmf-dist/tex/latex/simplivre/simplivre.cls +++ b/Master/texmf-dist/tex/latex/simplivre/simplivre.cls @@ -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@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@thmnum@default] - -\newif\if@minimclass@bfivepaper\@minimclass@bfivepaperfalse -\DeclareVoidOption{b5paper}{\@minimclass@bfivepapertrue} -\newif\if@minimclass@afourpaper\@minimclass@afourpaperfalse -\DeclareVoidOption{a4paper}{\@minimclass@afourpapertrue} - -\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{\minimclass@baseclass}} -\ProcessKeyvalOptions*\relax -\LoadClass{\minimclass@baseclass} - -\if@minimclass@draft - \@minimclass@fasttrue -\fi -\if@minimclass@classical\else - \@minimclass@useindenttrue -\fi -\if@minimclass@lmodern - \@minimclass@customfonttrue -\fi -\if@minimclass@palatino - \@minimclass@customfonttrue -\fi -\if@minimclass@times - \@minimclass@customfonttrue -\fi -\if@minimclass@garamond - \@minimclass@customfonttrue -\fi -\if@minimclass@noto - \@minimclass@customfonttrue -\fi -\if@minimclass@biolinum - \@minimclass@customfonttrue -\fi +\RequirePackage{l3keys2e} +\ProvidesExplClass + {simplivre} + {2022/03/17} {} + {A simple and clear book style} + +\tl_const:Nn \l__minimclass_base_class_tl { book } + + +\bool_new:N \l__minimclass_load_custom_font_file_bool +\bool_set_false:N \l__minimclass_load_custom_font_file_bool + +\bool_new:N \l__minimclass_load_custom_font_file_latin_bool +\bool_set_false:N \l__minimclass_load_custom_font_file_latin_bool + +\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 + } %%================================ -%% Page layout +%% 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@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@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@minimclass@fast - \PassOptionsToPackage{fast}{minimalist} - \RequirePackage{draftwatermark} - \DraftwatermarkOptions{text={\normalfont DRAFT},color=paper!95!-paper} -\fi -\if@minimclass@useindent - \RequirePackage{indentfirst} -\else - \AtEndPreamble{\RequirePackage{parskip}} -\fi -\RequirePackage{minimalist} +\RequirePackage { silence } +\WarningFilter { geometry } { Over-specification } + +\PassOptionsToPackage { heightrounded } { geometry } +\RequirePackage { geometry } + +\geometry + { + papersize = { 7in, 10in }, + total = { 5.535in, 8.300in }, + centering, + footnotesep = 2em plus 2pt minus 2pt, + } + +\bool_if:NT \l__minimclass_b_five_paper_bool + { + \geometry + { + b5paper, + total = { 5.535in, 8.160in }, + centering, + footnotesep = 2em plus 2pt minus 2pt, + } + } + +\bool_if:NT \l__minimclass_a_four_paper_bool + { + \geometry + { + a4paper, + total = { 6.500in, 9.685in }, + centering, + footnotesep = 2em plus 2pt minus 2pt, + } + } + +\bool_if:NT \l__minimclass_fast_bool + { + \PassOptionsToPackage { fast } { minimalist } + \RequirePackage { draftwatermark } + \DraftwatermarkOptions { text = { \normalfont DRAFT }, color = paper!97!-paper } + } + +\bool_if:NTF \l__minimclass_useindent_bool + { + \RequirePackage { indentfirst } + } + { + \hook_gput_code:nnn { begindocument/before } { minimclass } + { + \RequirePackage { parskip } + } + } + +\RequirePackage { minimalist } %%================================ -%% Fonts +%% Fonts %%================================ -\if@minimclass@customfont\else - \if@minimclass@fast - \RequirePackage{mathpazo} - \fi -\fi - -\PassOptionsToPackage{no-math,quiet}{fontspec} -\RequirePackage{fontspec} - -\IfFileExists{minimalist-font.tex}{ - \input{minimalist-font.tex} -}{ -\IfFontExistsTF{Palatino Linotype}{% - \setmainfont{Palatino Linotype} - [\if@minimclass@useosf Numbers = OldStyle\fi] -}{ - \setmainfont{TeXGyrePagellaX-Regular.otf}[ - BoldFont = TeXGyrePagellaX-Bold.otf , - ItalicFont = TeXGyrePagellaX-Italic.otf , - BoldItalicFont = TeXGyrePagellaX-BoldItalic.otf, - \if@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 ] -} - -\PassOptionsToPackage{fontset=none,scheme=plain}{ctex} -\RequirePackage{ctex} - -\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} ] -} - -\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 ] -} - -\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} ] -} - -\if@PJLlang@enable@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 - -\if@PJLlang@enable@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 - -\if@PJLlang@enable@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 - -\WarningFilter{latexfont}{Font shape} -\WarningFilter{latexfont}{Some font} - -\def\CJKsffamily{} -\def\CJKttfamily{} - -\apptocmd{\sffamily}{\CJKsffamily}{}{\FAIL} -\apptocmd{\ttfamily}{\CJKttfamily}{}{\FAIL} - -\if@PJLlang@enable@CN -\gappto{\PJLlang@langconfig@CN}{% - \def\CJKsffamily{\CJKfamily{SCsans}}% - \def\CJKttfamily{\CJKfamily{SCmono}}% - \CJKfamily{SCmain}% -} -\fi - -\if@PJLlang@enable@TC -\gappto{\PJLlang@langconfig@TC}{% - \def\CJKsffamily{\CJKfamily{TCsans}}% - \def\CJKttfamily{\CJKfamily{TCmono}}% - \CJKfamily{TCmain}% -} -\fi - -\if@PJLlang@enable@JP -\gappto{\PJLlang@langconfig@JP}{% - \def\CJKsffamily{\CJKfamily{JPsans}}% - \def\CJKttfamily{\CJKfamily{JPmono}}% - \CJKfamily{JPmain}% -} -\fi - -\def\minimalist@titlefontshape{\CJKsffamily} -} - -\if@minimclass@customfont\else -\if@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} - -\AtBeginDocument{ -\let\mid@original\mid -\renewcommand{\mid}{\hspace{-.2em}\mid@original\hspace{-.2em}} -\let\nmid@original\nmid -\renewcommand{\nmid}{\hspace{-.2em}\nmid@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} -}} -} - -\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 - -\if@minimclass@lmodern - \RequirePackage{amssymb} - \if@minimclass@useosf - \RequirePackage{cfr-lm} - \else - \RequirePackage{lmodern} - \fi - \PJLsetlinespacing{\setstretch{1.00}} -\fi - -\if@minimclass@palatino - \RequirePackage{amssymb} - \RequirePackage{mathpazo} - \PassOptionsToPackage{defaultsups}{newpxtext} - \RequirePackage{newpxtext} - % \RequirePackage{newpxmath} - \let\openbox\relax - \PJLsetlinespacing{\setstretch{1.07}} - \if@minimclass@useosf\useosf\fi -\fi - -\if@minimclass@times - \RequirePackage{amssymb} - \PassOptionsToPackage{defaultsups}{newtxtext} - \RequirePackage{newtxtext} - \RequirePackage{newtxmath} - \let\openbox\relax - \PJLsetlinespacing{\setstretch{1.00}} - \if@minimclass@useosf\useosf\fi -\fi - -\if@minimclass@garamond - \RequirePackage{amssymb} - \if@minimclass@useosf\else - \PassOptionsToPackage{lining}{ebgaramond} - \fi - \RequirePackage{ebgaramond-maths} - \RequirePackage{ebgaramond} - % \RequirePackage{garamondlibre} - \PJLsetlinespacing{\setstretch{1.00}} -\fi - -\if@minimclass@noto - \RequirePackage{amssymb} - \if@minimclass@useosf - \PassOptionsToPackage{oldstyle}{notomath} - \fi - \RequirePackage{anyfontsize} - \RequirePackage{notomath} - \PJLsetlinespacing{\setstretch{1.00}} -\fi - -\if@minimclass@biolinum - \RequirePackage{amssymb} - % \RequirePackage{mathpazo} - % \RequirePackage[sansmath]{libertinust1math} - \ifPDFTeX - \if@minimclass@useosf - \PassOptionsToPackage{osf}{biolinum} - \fi - \RequirePackage{biolinum} - \renewcommand*\familydefault{\biolinum@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@minimclass@useosf Numbers = OldStyle\fi ] - \fi - \PJLsetlinespacing{\setstretch{1.05}} - \RequirePackage[italic,defaultmathsizes]{mathastext} -\fi - -\def\PJL@font@alreadyset{} - -\PassOptionsToPackage{verbose=silent}{microtype} -\RequirePackage{microtype} -\PassOptionsToPackage{all}{nowidow} -\RequirePackage{nowidow} -\RequirePackage{embrac} +\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 } + } + +\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 } } + } + +\__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 + { + \bool_if:NT \l__minimclass_fast_bool + { + \RequirePackage { mathpazo } + } + + \PassOptionsToPackage { no-math,quiet } { fontspec } + \RequirePackage { fontspec } + + \__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 , + ] + + \projlib_language_set_linespacing_latin:n { \setstretch { 1.07 } } + } + } + + \PassOptionsToPackage { fontset = none, scheme = plain } { ctex } + \RequirePackage { ctex } + + \__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 } , + ] + } + + \__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 , + ] + } + + \__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 } , + ] + } + + \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 } , + ] + } + } + + \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 } , + ] + } + } + + \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 } , + ] + } + } + + \cs_new:Nn \minimclass_cjk_sffamily: {} + \cs_new:Nn \minimclass_cjk_ttfamily: {} + + \hook_gput_code:nnn { cmd/sffamily/after } { minimclass } { \minimclass_cjk_sffamily: } + \hook_gput_code:nnn { cmd/ttfamily/after } { minimclass } { \minimclass_cjk_ttfamily: } + + \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 } + } + + \tl_gset:Nn \g_minimalist_title_font_common_tl { \minimclass_cjk_sffamily: } + } + + \__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 } + ] + + \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 } %%================================ -%% Graphics +%% Graphics %%================================ -\RequirePackage{graphicx} -\graphicspath{{images/}} -\RequirePackage{wrapfig} -\RequirePackage{float} -\RequirePackage{caption} -\captionsetup{font=small} - -%%================================ -%% Index -%%================================ -\AtEndPreamble{ -\pretocmd{\printindex}{\LocallyStopLineNumbers}{}{} -\apptocmd{\printindex}{\ResumeLineNumbers}{}{} -} +\RequirePackage { graphicx } +\graphicspath { { images/ } } +\RequirePackage { wrapfig } +\RequirePackage { float } +\RequirePackage { caption } +\captionsetup { font = small } \endinput %% -- cgit v1.2.3