summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/projlib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-03-18 03:01:39 +0000
committerNorbert Preining <norbert@preining.info>2022-03-18 03:01:39 +0000
commita892f739b50b6ddc5321c834017cdcbc42a3f056 (patch)
treeea36345421ed45471d9ec79ff9288cbc9437a718 /macros/latex/contrib/projlib
parent8208f204439f3a899e43187857e3f9c86d4ebb7c (diff)
CTAN sync 202203180301
Diffstat (limited to 'macros/latex/contrib/projlib')
-rw-r--r--macros/latex/contrib/projlib/ProjLib.dtx209
-rw-r--r--macros/latex/contrib/projlib/README.md17
2 files changed, 142 insertions, 84 deletions
diff --git a/macros/latex/contrib/projlib/ProjLib.dtx b/macros/latex/contrib/projlib/ProjLib.dtx
index 39ba3ccd03..53a8117f7b 100644
--- a/macros/latex/contrib/projlib/ProjLib.dtx
+++ b/macros/latex/contrib/projlib/ProjLib.dtx
@@ -20,70 +20,70 @@
%<*ProjLib>
\ProvidesExplPackage
{ProjLib}
- {2022/03/11} {}
+ {2022/03/17} {}
{Collective interface of the ProjLib toolkit}
%</ProjLib>
%
%<*projlib-author>
\ProvidesExplPackage
{projlib-author}
- {2022/03/11} {}
+ {2022/03/17} {}
{Enhanced author information block}
%</projlib-author>
%
%<*projlib-datetime>
\ProvidesExplPackage
{projlib-datetime}
- {2022/03/11} {}
+ {2022/03/17} {}
{Convert numeric date-time string to natural language}
%</projlib-datetime>
%
%<*projlib-draft>
\ProvidesExplPackage
{projlib-draft}
- {2022/03/11} {}
+ {2022/03/17} {}
{Useful commands during draft stage}
%</projlib-draft>
%
%<*projlib-font>
\ProvidesExplPackage
{projlib-font}
- {2022/03/11} {}
+ {2022/03/17} {}
{Font selection and configuration}
%</projlib-font>
%
%<*projlib-language>
\ProvidesExplPackage
{projlib-language}
- {2022/03/11} {}
+ {2022/03/17} {}
{Multi-language configuration}
%</projlib-language>
%
%<*projlib-logo>
\ProvidesExplPackage
{projlib-logo}
- {2022/03/11} {}
+ {2022/03/17} {}
{The ProjLib logo}
%</projlib-logo>
%
%<*projlib-math>
\ProvidesExplPackage
{projlib-math}
- {2022/03/11} {}
+ {2022/03/17} {}
{Efficient math setup}
%</projlib-math>
%
%<*projlib-paper>
\ProvidesExplPackage
{projlib-paper}
- {2022/03/11} {}
+ {2022/03/17} {}
{Configuration of the paper style}
%</projlib-paper>
%
%<*projlib-theorem>
\ProvidesExplPackage
{projlib-theorem}
- {2022/03/11} {}
+ {2022/03/17} {}
{Configuration of theorem-like environments}
%</projlib-theorem>
@@ -149,11 +149,13 @@
\cs_if_exist:NT \subjclass { \endinput }
\tl_new:N \g__projlib_author_font_author_tl
+\tl_new:N \g__projlib_author_font_institute_tl
\tl_new:N \g__projlib_author_font_address_tl
\tl_new:N \g__projlib_author_font_curraddr_tl
\tl_new:N \g__projlib_author_font_email_tl
\tl_gset:Nn \g__projlib_author_font_author_tl { \normalsize \normalfont \scshape }
+\tl_gset:Nn \g__projlib_author_font_institute_tl { \small \normalfont }
\tl_gset:Nn \g__projlib_author_font_address_tl { \small \normalfont \itshape }
\tl_gset:Nn \g__projlib_author_font_curraddr_tl { \small \normalfont \itshape }
\tl_gset:Nn \g__projlib_author_font_email_tl { \small \normalfont \ttfamily }
@@ -182,56 +184,49 @@
}
}
-\ProvideDocumentCommand \address { m }
+\cs_new_protected:Nn \projlib_author_affil_generic:nn
+ % #1 = the item
+ % #2 = the text
{
\hook_gput_code:nnn { cmd/@author/after } { projlib-author }
{
- \phantom {A} \\[-\baselineskip]
+ \phantom {A} \\[-.85\baselineskip]
\bool_if:NF \g__projlib_author_affil_already_exist_bool
{
\skip_vertical:n { \g__projlib_author_length_innersep_dim }
}
\bool_set_true:N \g__projlib_author_affil_already_exist_bool
- { \g__projlib_author_font_address_tl #1 }
+ { \use:c { g__projlib_author_font_ #1 _tl } #2 }
\\ \phantom {}
}
}
+\ProvideDocumentCommand \institute { m }
+ {
+ \projlib_author_affil_generic:nn { institute } { #1 }
+ }
+
+\ProvideDocumentCommand \address { m }
+ {
+ \projlib_author_affil_generic:nn { address } { #1 }
+ }
+
\ProvideDocumentCommand \curraddr { m }
{
- \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
- {
- \phantom {A} \\[-\baselineskip]
- \bool_if:NF \g__projlib_author_affil_already_exist_bool
- {
- \skip_vertical:n { \g__projlib_author_length_innersep_dim }
- }
- \bool_set_true:N \g__projlib_author_affil_already_exist_bool
- { \g__projlib_author_font_curraddr_tl #1 }
- \\ \phantom {}
- }
+ \projlib_author_affil_generic:nn { curraddr } { #1 }
}
\ProvideDocumentCommand \email { m }
{
- \hook_gput_code:nnn { cmd/@author/after } { projlib-author }
- {
- \phantom {A} \\[-\baselineskip]
- \bool_if:NF \g__projlib_author_affil_already_exist_bool
- {
- \skip_vertical:n { \g__projlib_author_length_innersep_dim }
- }
- \bool_set_true:N \g__projlib_author_affil_already_exist_bool
- { \g__projlib_author_font_email_tl #1 }
- \\ \phantom {}
- }
+ \projlib_author_affil_generic:nn { email } { #1 }
}
\RequirePackage { regexpatch }
-\xpatchcmd { \@maketitle } { \begin{tabular}[t]{c} } {} {
- \xpatchcmd { \@maketitle } { \end{tabular} } {} {} {}
-} {}
+\xpatchcmd { \@maketitle } { \begin{tabular}[t]{c} } {}
+ {
+ \xpatchcmd { \@maketitle } { \end{tabular} } {} {} {}
+ } {}
\tl_set:cn {@author} {}
@@ -256,17 +251,17 @@
\RequirePackage{ projlib-language }
\tl_new:N \g_projlib_author_keywordsname_style_tl
- \tl_gset:Nn \g_projlib_author_keywordsname_style_tl {}
+ \tl_gset:Nn \g_projlib_author_keywordsname_style_tl { \itshape }
\projlib_langauge_define_multilingual_text:Nn \keywordsname
{
- EN = \textsc{Key~words~and~phrases} ,
- FR = \textsc{Mots~et~phrases~clés} ,
- DE = \textsc{Schlüsselwörter~und~Phrasen} ,
- IT = \textsc{Parole~e~frasi~chiave} ,
- PT = \textsc{Palavras~e~frases~chave} ,
- BR = \textsc{Palavras~e~frases~chave} ,
- ES = \textsc{Palabras~y~frases~clave} ,
+ EN = Key~words~and~phrases ,
+ FR = Mots~et~phrases~clés ,
+ DE = Schlüsselwörter~und~Phrasen ,
+ IT = Parole~e~frasi~chiave ,
+ PT = Palavras~e~frases~chave ,
+ BR = Palavras~e~frases~chave ,
+ ES = Palabras~y~frases~clave ,
CN = 关键词 ,
TC = 關鍵詞 ,
JP = キーワード ,
@@ -348,9 +343,11 @@
{
\bool_if:NTF \g__projlib_author_already_maketitle_bool
{
+ \group_begin:
\projlib_author_backup_abstract:
\getstored{projlib-author-abstract}
\projlib_author_backup_endabstract:
+ \group_end:
}
{
\bool_gset_true:N \g__projlib_author_abstract_before_maketitle_bool
@@ -399,10 +396,13 @@
{
\bool_if:NT \g__projlib_author_abstract_before_maketitle_bool
{
+ \group_begin:
\projlib_author_backup_abstract:
\getstored{projlib-author-abstract}
\projlib_author_backup_endabstract:
+ \group_end:
}
+ \cs_undefine:N \institute
\cs_undefine:N \address
\cs_undefine:N \curraddr
\cs_undefine:N \email
@@ -2123,7 +2123,7 @@
}
}
-\projlib_langauge_define_multilingual_text:Nn \__dnf_text
+\projlib_langauge_define_multilingual_text:Nn \__projlib_draft_dnf_text
{
EN = To\ be\ finished ,
FR = Pas\ encore\ fini ,
@@ -2138,7 +2138,7 @@
RU = Не\ закончен ,
}
-\projlib_langauge_define_multilingual_text:Nn \__dnf_report_text
+\projlib_langauge_define_multilingual_text:Nn \__projlib_draft_dnf_report_text
{
EN = { Below\ is\ a\ list\ of\ outstanding\ items,
\ followed\ by\ the\ corresponding\ page\ numbers. } ,
@@ -2161,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-draft>
%
%<*projlib-font>
@@ -2803,7 +2868,7 @@
\tl_new:N \g_projlib_language_parindent_latin_tl
\tl_new:N \g_projlib_language_parindent_cjk_tl
-\@ifclassloaded{beamer}
+\@ifclassloaded { beamer }
{
\tl_gset:Nn \g_projlib_language_parindent_latin_tl
{
@@ -2827,7 +2892,7 @@
\hook_gput_code:nnn { begindocument } { projlib-language }
{
- \@ifpackageloaded{parskip}
+ \@ifpackageloaded { parskip }
{
\tl_gset:Nn \g_projlib_language_parindent_latin_tl
{
@@ -3319,7 +3384,7 @@
, nothms .bool_set:N = \l__projlib_theorem_no_theorems_bool
, no-theorem-numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, no-theorem-numbering .initial:n = { false }
- , no~theorem~numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
+ , no~theorem~numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, no theorem numbering .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, nothmnum .bool_set:N = \l__projlib_theorem_no_theorem_numbering_bool
, theorem-numbering .tl_set:N = \l__projlib_theorem_theorem_numbering_tl
@@ -3341,7 +3406,7 @@
, no-preset-names .initial:n = { false }
, no~preset~names .bool_set_inverse:N = \l__projlib_theorem_presetname_bool
, no preset names .bool_set_inverse:N = \l__projlib_theorem_presetname_bool
- , unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { create-theorem } }
+ , unknown .code:n = { \PassOptionsToPackage { \CurrentOption } { create-theorem } }
}
\ProcessKeysOptions { projlib-theorem }
@@ -3405,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/macros/latex/contrib/projlib/README.md b/macros/latex/contrib/projlib/README.md
index b36f8f2437..9922ad0b82 100644
--- a/macros/latex/contrib/projlib/README.md
+++ b/macros/latex/contrib/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.
-<!-- 1. `PJLtoolkit.sty` (this is the internal name of the `ProjLib` package)
+1. `PJLtoolkit.sty` (this is the internal name of the `ProjLib` package)
- A collective interface of ProjLib Toolkit, loading all the packages above
- - Provide some pre-defined font configuration -->
+ - Provide some pre-defined font configuration
> Since `PJLthm.sty` (and thus `ProjLib.sty`) uses `cleveref`, it should be loaded after `varioref` and `hyperref`.