summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-02-22 03:04:08 +0000
committerNorbert Preining <norbert@preining.info>2024-02-22 03:04:08 +0000
commit286abb7dcd6c03d7edcd3d3435bb97448074c3cf (patch)
tree3685af864920886e709e60d4c0383f62d2af85fb /macros
parent2f56d3421e4663856409792eb5b08a2c57b38a8c (diff)
CTAN sync 202402220303
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/colorist/README.md4
-rw-r--r--macros/latex/contrib/colorist/colorart.cls4
-rw-r--r--macros/latex/contrib/colorist/colorbook.cls4
-rw-r--r--macros/latex/contrib/colorist/colorist-fancy.sty77
-rw-r--r--macros/latex/contrib/colorist/colorist.sty4
-rw-r--r--macros/latex/contrib/create-theorem/code/create-theorem-preset-names-plural.tex1487
-rw-r--r--macros/latex/contrib/create-theorem/code/create-theorem-preset-names.tex (renamed from macros/latex/contrib/create-theorem/create-theorem.sty)1298
-rw-r--r--macros/latex/contrib/create-theorem/code/create-theorem.sty1182
-rw-r--r--macros/latex/contrib/create-theorem/doc/create-theorem-doc.pdf (renamed from macros/latex/contrib/create-theorem/create-theorem-doc.pdf)bin88400 -> 88437 bytes
-rw-r--r--macros/latex/contrib/create-theorem/doc/create-theorem-doc.tex (renamed from macros/latex/contrib/create-theorem/create-theorem-doc.tex)4
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx25
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin602450 -> 604534 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex18
-rw-r--r--macros/latex/contrib/homework/README.md8
-rw-r--r--macros/latex/contrib/homework/homework-demo-cn.pdfbin83800 -> 90105 bytes
-rw-r--r--macros/latex/contrib/homework/homework-demo-cn.tex16
-rw-r--r--macros/latex/contrib/homework/homework-demo-de.pdfbin52524 -> 54480 bytes
-rw-r--r--macros/latex/contrib/homework/homework-demo-de.tex18
-rw-r--r--macros/latex/contrib/homework/homework-demo-en.pdfbin51255 -> 53000 bytes
-rw-r--r--macros/latex/contrib/homework/homework-demo-en.tex17
-rw-r--r--macros/latex/contrib/homework/homework-demo-es.pdfbin51865 -> 53245 bytes
-rw-r--r--macros/latex/contrib/homework/homework-demo-es.tex17
-rw-r--r--macros/latex/contrib/homework/homework-demo-fr.pdfbin51601 -> 53329 bytes
-rw-r--r--macros/latex/contrib/homework/homework-demo-fr.tex17
-rw-r--r--macros/latex/contrib/homework/homework-demo-jp.pdfbin86982 -> 92773 bytes
-rw-r--r--macros/latex/contrib/homework/homework-demo-jp.tex17
-rw-r--r--macros/latex/contrib/homework/homework-demo-tc.pdfbin90681 -> 98582 bytes
-rw-r--r--macros/latex/contrib/homework/homework-demo-tc.tex16
-rw-r--r--macros/latex/contrib/homework/homework-example-sheet-answer.pdfbin30103 -> 30235 bytes
-rw-r--r--macros/latex/contrib/homework/homework-example-sheet.pdfbin21936 -> 22123 bytes
-rw-r--r--macros/latex/contrib/homework/homework-example-sheet.tex4
-rw-r--r--macros/latex/contrib/homework/homework.cls25
-rw-r--r--macros/latex/contrib/listings/Makefile12
-rw-r--r--macros/latex/contrib/listings/listings-devel.pdfbin1454263 -> 1451811 bytes
-rw-r--r--macros/latex/contrib/listings/listings.dtx376
-rw-r--r--macros/latex/contrib/listings/listings.ins10
-rw-r--r--macros/latex/contrib/listings/listings.pdfbin1031323 -> 1026570 bytes
-rw-r--r--macros/latex/contrib/listings/lstdrvrs.dtx46
-rw-r--r--macros/latex/contrib/listings/lstdrvrs.pdfbin752443 -> 755742 bytes
-rw-r--r--macros/latex/contrib/minimalist/README.md4
-rw-r--r--macros/latex/contrib/minimalist/minimalist-classical.sty20
-rw-r--r--macros/latex/contrib/minimalist/minimalist-default.sty22
-rw-r--r--macros/latex/contrib/minimalist/minimalist-flow.sty20
-rw-r--r--macros/latex/contrib/minimalist/minimalist-plain.sty20
-rw-r--r--macros/latex/contrib/minimalist/minimalist-stream.sty35
-rw-r--r--macros/latex/contrib/minimalist/minimalist.sty4
-rw-r--r--macros/latex/contrib/minimalist/minimart.cls4
-rw-r--r--macros/latex/contrib/minimalist/minimbook.cls4
-rw-r--r--macros/latex/contrib/projlib/ProjLib.dtx1636
-rw-r--r--macros/latex/contrib/projlib/README.md4
-rw-r--r--macros/latex/contrib/ufrgscca/README.md8
-rw-r--r--macros/latex/contrib/ufrgscca/doc/ufrgscca.pdfbin590459 -> 592794 bytes
-rw-r--r--macros/latex/contrib/ufrgscca/doc/ufrgscca.tex26
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty24
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def2
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def2
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty149
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty54
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex2
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty26
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty26
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty70
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex204
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty26
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty26
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex2
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex11
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca.cls26
-rw-r--r--macros/luatex/latex/lua-placeholders/README.md1
-rw-r--r--macros/luatex/latex/lua-placeholders/doc/lua-placeholders-example/example.pdfbin67367 -> 66376 bytes
-rw-r--r--macros/luatex/latex/lua-placeholders/doc/lua-placeholders-example/example.tex2
-rw-r--r--macros/luatex/latex/lua-placeholders/doc/lua-placeholders-manual.pdfbin270175 -> 269309 bytes
-rw-r--r--macros/luatex/latex/lua-placeholders/doc/lua-placeholders-manual.tex2
-rw-r--r--macros/luatex/latex/lua-placeholders/scripts/lua-placeholders-parser.lua4
-rw-r--r--macros/luatex/latex/lua-placeholders/scripts/lua-placeholders-types.lua15
-rw-r--r--macros/luatex/latex/lua-placeholders/scripts/lua-placeholders.lua12
-rw-r--r--macros/luatex/latex/lua-placeholders/tex/lua-placeholders.sty2
-rw-r--r--macros/unicodetex/latex/beaulivre/README.md4
-rw-r--r--macros/unicodetex/latex/beaulivre/beaulivre.cls9
-rw-r--r--macros/unicodetex/latex/einfart/README.md4
-rw-r--r--macros/unicodetex/latex/einfart/einfart.cls9
-rw-r--r--macros/unicodetex/latex/lebhart/README.md4
-rw-r--r--macros/unicodetex/latex/lebhart/lebhart.cls9
-rw-r--r--macros/unicodetex/latex/simplivre/README.md4
-rw-r--r--macros/unicodetex/latex/simplivre/simplivre.cls9
85 files changed, 5405 insertions, 1848 deletions
diff --git a/macros/latex/contrib/colorist/README.md b/macros/latex/contrib/colorist/README.md
index 432754821b..3210da5799 100644
--- a/macros/latex/contrib/colorist/README.md
+++ b/macros/latex/contrib/colorist/README.md
@@ -1,8 +1,8 @@
-<!-- Copyright (C) 2021-2023 by Jinwen XU -->
+<!-- Copyright (C) 2021-2024 by Jinwen XU -->
# `colorist` bundle: write you documents in a colorful way
-> **New documentations are still being written. For now, only the core code is included in TeX Live 2023 (old documentations have been removed from the distribution).**
+> **New documentations are still being written. For now, only the core code is included in TeX Live 2024 and MiKTeX (old documentations have been removed from the distribution).**
## Introduction
diff --git a/macros/latex/contrib/colorist/colorart.cls b/macros/latex/contrib/colorist/colorart.cls
index 92341c30b7..dbea4b818c 100644
--- a/macros/latex/contrib/colorist/colorart.cls
+++ b/macros/latex/contrib/colorist/colorart.cls
@@ -2,7 +2,7 @@
%% This is file `colorist/colorart.cls',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the colorist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{colorart}
- {2023/10/01} {}
+ {2024/02/20} {}
{A colorful article style}
\tl_const:Nn \l__colorclass_base_class_tl { article }
diff --git a/macros/latex/contrib/colorist/colorbook.cls b/macros/latex/contrib/colorist/colorbook.cls
index 488999f335..4566530a3a 100644
--- a/macros/latex/contrib/colorist/colorbook.cls
+++ b/macros/latex/contrib/colorist/colorbook.cls
@@ -2,7 +2,7 @@
%% This is file `colorist/colorbook.cls',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the colorist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{colorbook}
- {2023/10/01} {}
+ {2024/02/20} {}
{A colorful book style}
\tl_const:Nn \l__colorclass_base_class_tl { book }
diff --git a/macros/latex/contrib/colorist/colorist-fancy.sty b/macros/latex/contrib/colorist/colorist-fancy.sty
index 20c48e44a8..0674eb014d 100644
--- a/macros/latex/contrib/colorist/colorist-fancy.sty
+++ b/macros/latex/contrib/colorist/colorist-fancy.sty
@@ -2,7 +2,7 @@
%% This is file `colorist/colorist-fancy.sty',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the colorist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{colorist-fancy}
- {2023/10/01} {}
+ {2024/02/20} {}
{The fancy style of colorist}
\IfPackageLoadedTF { colorist } {}
@@ -862,9 +862,11 @@ heading_suffix "}\n"
\PassOptionsToPackage
{
theorem style = {
- , remark = emphasis
- , observation = emphasis
- , theorem = basic-var, lemma = basic-var, proposition = basic-var, corollary = basic-var, property = basic-var, axiom = basic-var, construction = basic-var, theorem-with-name = basic-var
+ , remark = emphasis, observation = emphasis, commentary = emphasis, motivation = emphasis
+ , remarks = emphasis, observations = emphasis, commentaries = emphasis, motivations = emphasis
+ , theorem = basic-var, lemma = basic-var, proposition = basic-var, corollary = basic-var, property = basic-var, axiom = basic-var, construction = basic-var
+ , theorems = basic-var, lemmas = basic-var, propositions = basic-var, corollaries = basic-var, properties = basic-var, axioms = basic-var, constructions = basic-var
+ , theorem-with-name = basic-var
}
}
{ projlib-theorem }
@@ -875,28 +877,28 @@ heading_suffix "}\n"
\SetTheorem { proof, proof* } { qed-symbol = { \customqedsymbol } }
-\SetTheorem { theorem, lemma, proposition, corollary, property, axiom, construction, theorem-with-name }
+\SetTheorem { theorem, theorems, lemma, lemmas, proposition, propositions, corollary, corollaries, property, properties, axiom, axioms, construction, constructions, theorem-with-name }
{
name style = {
heading style = { \color{orange}\colorist_bfseries:\g_colorist_title_font_common_tl\textsc }
}
}
-\SetTheorem { definition, assumption, convention, hypothesis, notation }
+\SetTheorem { definition, definitions, assumption, assumptions, convention, conventions, hypothesis, hypotheses, notation, notations }
{
name style = {
heading style = { \color{forestgreen}\colorist_bfseries:\g_colorist_title_font_common_tl\textsc }
}
}
-\SetTheorem { application, claim, example, exercise, fact, problem, question, recall }
+\SetTheorem { application, applications, claim, claims, example, examples, fact, facts, recall, recalls, problem, problems, question, questions }
{
name style = {
heading style = { \color{main-text}\colorist_bfseries:\g_colorist_title_font_common_tl\textsc }
}
}
-\SetTheorem { conjecture }
+\SetTheorem { conjecture, conjectures }
{
name style = {
heading style = { \color{purple}\colorist_bfseries:\g_colorist_title_font_common_tl\textsc }
@@ -905,7 +907,7 @@ heading_suffix "}\n"
\bool_if:NF \l__projlib_theorem_complexname_bool
{
- \SetTheorem { theorem, lemma, proposition, corollary, property, axiom, construction, theorem-with-name }
+ \SetTheorem { theorem, theorems, lemma, lemmas, proposition, propositions, corollary, corollaries, property, properties, axiom, axioms, construction, constructions, theorem-with-name }
{
name style = {
, crefname style = { \color{orange}\colorist_bfseries:\g_colorist_title_font_common_tl\textsc }
@@ -914,7 +916,7 @@ heading_suffix "}\n"
}
}
- \SetTheorem { definition, assumption, convention, hypothesis, notation }
+ \SetTheorem { definition, definitions, assumption, assumptions, convention, conventions, hypothesis, hypotheses, notation, notations }
{
name style = {
, crefname style = { \color{forestgreen}\colorist_bfseries:\g_colorist_title_font_common_tl\textsc }
@@ -923,7 +925,7 @@ heading_suffix "}\n"
}
}
- \SetTheorem { application, claim, example, exercise, fact, problem, question, recall }
+ \SetTheorem { application, applications, claim, claims, example, examples, fact, facts, recall, recalls, problem, problems, question, questions }
{
name style = {
, crefname style = { \color{main-text}\colorist_bfseries:\g_colorist_title_font_common_tl\textsc }
@@ -932,7 +934,7 @@ heading_suffix "}\n"
}
}
- \SetTheorem { conjecture }
+ \SetTheorem { conjecture, conjectures }
{
name style = {
, crefname style = { \color{purple}\colorist_bfseries:\g_colorist_title_font_common_tl\textsc }
@@ -948,25 +950,28 @@ heading_suffix "}\n"
{
\renewcommand* { \marginnotevadjust } { #1 }
}
-\hook_gput_code:nnn { env/remark/begin } { colorist }
+\clist_map_inline:nn { remark, remark*, observation, observation*, commentary, commentary*, motivation, motivation* }
{
- \if@twoside\checkoddpage
- \ifoddpage\reversemarginpar\fi
- \else
- \reversemarginpar
- \fi
- \colorist_mpar_adjust:n {-.25em}
- \marginnote{
- \colorist_icon_ideabulb:w [0.3] {orange}
- \bool_if:NTF \l__colorist_is_book_bool
- {
- \hspace*{-.2em}
- }
- {
- \hspace*{-.5em}
+ \hook_gput_code:nnn { env/#1/begin } { colorist }
+ {
+ \if@twoside\checkoddpage
+ \ifoddpage\reversemarginpar\fi
+ \else
+ \reversemarginpar
+ \fi
+ \colorist_mpar_adjust:n {-.33em}
+ \marginnote{
+ \colorist_icon_ideabulb:w [0.3] {orange}
+ \bool_if:NTF \l__colorist_is_book_bool
+ {
+ \hspace*{-.2em}
+ }
+ {
+ \hspace*{-.5em}
+ }
}
- }
- \normalmarginpar
+ \normalmarginpar
+ }
}
\hook_gput_code:nnn { env/conjecture/begin } { colorist }
{
@@ -1047,7 +1052,7 @@ heading_suffix "}\n"
\tcolorboxenvironment { #1 } { #2 }
}
-\colorist_add_colorbox:nn { theorem, lemma, proposition, corollary, property, axiom, construction, definition-corollary, definition-proposition, definition-theorem, theorem-with-name }
+\colorist_add_colorbox:nn { theorem, theorems, lemma, lemmas, proposition, propositions, corollary, corollaries, property, properties, axiom, axioms, construction, constructions, definition-corollary, definition-proposition, definition-theorem, theorem-with-name }
{
enhanced~jigsaw, breakable, lines~before~break=3,
left=3.5mm, right=3.5mm,
@@ -1055,7 +1060,7 @@ heading_suffix "}\n"
opacityframe=0.9, colframe=orange, arc=.7mm
}
- \colorist_add_colorbox:nn { definition, assumption, convention, hypothesis, notation, corollary-definition, proposition-definition, theorem-definition }
+\colorist_add_colorbox:nn { definition, definitions, assumption, assumptions, convention, conventions, hypothesis, hypotheses, notation, notations, corollary-definition, proposition-definition, theorem-definition }
{
enhanced~jigsaw, breakable, lines~before~break=3,
left=4mm, right=4mm, top=1mm, bottom=1mm,
@@ -1063,14 +1068,14 @@ heading_suffix "}\n"
borderline~west={1.5mm}{0mm}{forestgreen}, arc=.7mm
}
-\colorist_add_colorbox:nn { application, claim, example, fact, recall }
+\colorist_add_colorbox:nn { application, applications, claim, claims, example, examples, fact, facts, recall, recalls }
{
enhanced~jigsaw, breakable, lines~before~break=3,
colback=main-text!5!paper,
boxrule=0pt, frame~hidden, arc=.7mm
}
-\colorist_add_colorbox:nn { conjecture }
+\colorist_add_colorbox:nn { conjecture, conjectures }
{
enhanced~jigsaw, breakable, lines~before~break=3,
left=3.5mm, right=3.5mm,
@@ -1078,14 +1083,14 @@ heading_suffix "}\n"
opacityframe=0.7, colframe=purple, arc=.7mm
}
-\colorist_add_colorbox:nn { problem }
+\colorist_add_colorbox:nn { problem, problems }
{
enhanced~jigsaw, breakable, lines~before~break=3,
colback=yellow!25!paper,
boxrule=0pt, frame~hidden, arc=.7mm
}
-\colorist_add_colorbox:nn { question, exercise, remark, observation }
+\colorist_add_colorbox:nn { question, questions, exercise, exercises, remark, remarks, observation, observations, commentary, commentaries, motivation, motivations }
{
enhanced~jigsaw, breakable, lines~before~break=3,
oversize,
diff --git a/macros/latex/contrib/colorist/colorist.sty b/macros/latex/contrib/colorist/colorist.sty
index eff7e3ec25..68044afbc8 100644
--- a/macros/latex/contrib/colorist/colorist.sty
+++ b/macros/latex/contrib/colorist/colorist.sty
@@ -2,7 +2,7 @@
%% This is file `colorist/colorist.sty',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the colorist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{colorist}
- {2023/10/01} {}
+ {2024/02/20} {}
{A colorful style for articles and books}
\keys_define:nn { colorist }
diff --git a/macros/latex/contrib/create-theorem/code/create-theorem-preset-names-plural.tex b/macros/latex/contrib/create-theorem/code/create-theorem-preset-names-plural.tex
new file mode 100644
index 0000000000..572ab51311
--- /dev/null
+++ b/macros/latex/contrib/create-theorem/code/create-theorem-preset-names-plural.tex
@@ -0,0 +1,1487 @@
+%=============================
+% --- Preset Names ---
+%=============================
+
+\NameTheorem { applications }
+ {
+ , heading = {
+ , english = Applications
+ , french = Applications
+ , ngerman = Anwendungen
+ , italian = Applicazioni
+ , portuguese = Aplicações
+ , brazilian = Aplicações
+ , spanish = Aplicaciones
+ , schinese = 应用
+ , tchinese = 應用
+ , japanese = 応用
+ , russian = Приложения
+ }
+ , crefname = {
+ , english = {applications}{applications}
+ , french = [les]{applications}[les]{applications}
+ , ngerman = { {Anwendungen}{Anwendungen}
+ , Nominativ = [die]{Anwendungen}[die]{Anwendungen}
+ , Genitiv = [der]{Anwendungen}[der]{Anwendungen}
+ , Dativ = [den]{Anwendungen}[den]{Anwendungen}
+ , Akkusativ = [die]{Anwendungen}[die]{Anwendungen}
+ }
+ , italian = [le]{applicazioni}[le]{applicazioni}
+ , portuguese = [as]{aplicações}[as]{aplicações}
+ , brazilian = [as]{aplicações}[as]{aplicações}
+ , spanish = [las]{aplicaciones}[las]{aplicaciones}
+ , schinese = {应用}{应用}
+ , tchinese = {應用}{應用}
+ , japanese = {応用}{応用}
+ , russian = {приложения}{приложения}
+ }
+ , Crefname = {
+ , english = {Applications}{Applications}
+ , french = [Les]{applications}[Les]{applications}
+ , ngerman = { {Anwendungen}{Anwendungen}
+ , Nominativ = [Die]{Anwendungen}[Die]{Anwendungen}
+ , Genitiv = [Der]{Anwendungen}[Der]{Anwendungen}
+ , Dativ = [Den]{Anwendungen}[Den]{Anwendungen}
+ , Akkusativ = [Die]{Anwendungen}[Die]{Anwendungen}
+ }
+ , italian = [Le]{applicazioni}[Le]{applicazioni}
+ , portuguese = [As]{aplicações}[As]{aplicações}
+ , brazilian = [As]{aplicações}[As]{aplicações}
+ , spanish = [Las]{aplicaciones}[Las]{aplicaciones}
+ , schinese = {应用}{应用}
+ , tchinese = {應用}{應用}
+ , japanese = {応用}{応用}
+ , russian = {Приложения}{Приложения}
+ }
+ }
+
+\NameTheorem { assertions }
+ {
+ , heading = {
+ , english = Assertions
+ , french = Assertions
+ , ngerman = Assertionen
+ , italian = Asserzioni
+ , portuguese = Asserções
+ , brazilian = Asserções
+ , spanish = Aserciones
+ , schinese = 断言
+ , tchinese = 斷言
+ , japanese = 断言
+ , russian = Утверждения
+ }
+ , crefname = {
+ , english = {assertions}{assertions}
+ , french = [les]{assertions}[les]{assertions}
+ , ngerman = { {Assertionen}{Assertionen}
+ , Nominativ = [die]{Assertionen}[die]{Assertionen}
+ , Genitiv = [der]{Assertionen}[der]{Assertionen}
+ , Dativ = [den]{Assertionen}[den]{Assertionen}
+ , Akkusativ = [die]{Assertionen}[die]{Assertionen}
+ }
+ , italian = [le]{asserzioni}[le]{asserzioni}
+ , portuguese = [as]{asserções}[as]{asserções}
+ , brazilian = [as]{asserções}[as]{asserções}
+ , spanish = [las]{aserciones}[las]{aserciones}
+ , schinese = {断言}{断言}
+ , tchinese = {斷言}{斷言}
+ , japanese = {断言}{断言}
+ , russian = {утверждения}{утверждения}
+ }
+ , Crefname = {
+ , english = {Assertions}{Assertions}
+ , french = [Les]{assertions}[Les]{assertions}
+ , ngerman = { {Assertionen}{Assertionen}
+ , Nominativ = [Die]{Assertionen}[Die]{Assertionen}
+ , Genitiv = [Der]{Assertionen}[Der]{Assertionen}
+ , Dativ = [Den]{Assertionen}[Den]{Assertionen}
+ , Akkusativ = [Die]{Assertionen}[Die]{Assertionen}
+ }
+ , italian = [Le]{asserzioni}[Le]{asserzioni}
+ , portuguese = [As]{asserções}[As]{asserções}
+ , brazilian = [As]{asserções}[As]{asserções}
+ , spanish = [Las]{aserciones}[Las]{aserciones}
+ , schinese = {断言}{断言}
+ , tchinese = {斷言}{斷言}
+ , japanese = {断言}{断言}
+ , russian = {Утверждения}{Утверждения}
+ }
+ }
+
+\NameTheorem { assumptions }
+ {
+ , heading = {
+ , english = Assumptions
+ , french = Suppositions
+ , ngerman = Annahmen
+ , italian = Supposizioni
+ , portuguese = Suposições
+ , brazilian = Suposições
+ , spanish = Suposiciones
+ , schinese = 假定
+ , tchinese = 假定
+ , japanese = 仮定
+ , russian = Предположения
+ }
+ , crefname = {
+ , english = {assumptions}{assumptions}
+ , french = [les]{suppositions}[les]{suppositions}
+ , ngerman = { {Annahmen}{Annahmen}
+ , Nominativ = [die]{Annahmen}[die]{Annahmen}
+ , Genitiv = [der]{Annahmen}[der]{Annahmen}
+ , Dativ = [den]{Annahmen}[den]{Annahmen}
+ , Akkusativ = [die]{Annahmen}[die]{Annahmen}
+ }
+ , italian = [le]{supposizioni}[le]{supposizioni}
+ , portuguese = [as]{suposições}[as]{suposições}
+ , brazilian = [as]{suposições}[as]{suposições}
+ , spanish = [las]{suposiciones}[las]{suposiciones}
+ , schinese = {假定}{假定}
+ , tchinese = {假定}{假定}
+ , japanese = {仮定}{仮定}
+ , russian = {предположения}{предположения}
+ }
+ , Crefname = {
+ , english = {Assumptions}{Assumptions}
+ , french = [Les]{suppositions}[Les]{suppositions}
+ , ngerman = { {Annahmen}{Annahmen}
+ , Nominativ = [Die]{Annahmen}[Die]{Annahmen}
+ , Genitiv = [Der]{Annahmen}[Der]{Annahmen}
+ , Dativ = [Den]{Annahmen}[Den]{Annahmen}
+ , Akkusativ = [Die]{Annahmen}[Die]{Annahmen}
+ }
+ , italian = [le]{supposizioni}[le]{supposizioni}
+ , portuguese = [As]{suposições}[As]{suposições}
+ , brazilian = [As]{suposições}[As]{suposições}
+ , spanish = [Las]{suposiciones}[Las]{suposiciones}
+ , schinese = {假定}{假定}
+ , tchinese = {假定}{假定}
+ , japanese = {仮定}{仮定}
+ , russian = {Предположения}{Предположения}
+ }
+ }
+
+\NameTheorem { axioms }
+ {
+ , heading = {
+ , english = Axioms
+ , french = Axiomes
+ , ngerman = Axiome
+ , italian = Assiomi
+ , portuguese = Axiomas
+ , brazilian = Axiomas
+ , spanish = Axiomas
+ , schinese = 公理
+ , tchinese = 公理
+ , japanese = 公理
+ , russian = Аксиомы
+ }
+ , crefname = {
+ , english = {axioms}{axioms}
+ , french = [les]{axiomes}[les]{axiomes}
+ , ngerman = { {Axiome}{Axiome}
+ , Nominativ = [die]{Axiome}[die]{Axiome}
+ , Genitiv = [der]{Axiome}[der]{Axiome}
+ , Dativ = [den]{Axiomen}[den]{Axiomen}
+ , Akkusativ = [die]{Axiome}[die]{Axiome}
+ }
+ , italian = [gli]{assiomi}[gli]{assiomi}
+ , portuguese = [os]{axiomas}[os]{axiomas}
+ , brazilian = [os]{axiomas}[os]{axiomas}
+ , spanish = [los]{axiomas}[los]{axiomas}
+ , schinese = {公理}{公理}
+ , tchinese = {公理}{公理}
+ , japanese = {公理}{公理}
+ , russian = {аксиомы}{аксиомы}
+ }
+ , Crefname = {
+ , english = {Axioms}{Axioms}
+ , french = [Les]{axiomes}[Les]{axiomes}
+ , ngerman = { {Axiome}{Axiome}
+ , Nominativ = [Die]{Axiome}[Die]{Axiome}
+ , Genitiv = [Der]{Axiome}[Der]{Axiome}
+ , Dativ = [Den]{Axiomen}[Den]{Axiomen}
+ , Akkusativ = [Die]{Axiome}[Die]{Axiome}
+ }
+ , italian = [Gli]{assiomi}[Gli]{assiomi}
+ , portuguese = [Os]{axiomas}[Os]{axiomas}
+ , brazilian = [Os]{axiomas}[Os]{axiomas}
+ , spanish = [Los]{axiomas}[Los]{axiomas}
+ , schinese = {公理}{公理}
+ , tchinese = {公理}{公理}
+ , japanese = {公理}{公理}
+ , russian = {Аксиомы}{Аксиомы}
+ }
+ }
+
+\NameTheorem { claims }
+ {
+ , heading = {
+ , english = Claims
+ , french = Affirmations
+ , ngerman = Behauptungen
+ , italian = Affermazioni
+ , portuguese = Afirmações
+ , brazilian = Afirmações
+ , spanish = Afirmaciones
+ , schinese = 断言
+ , tchinese = 斷言
+ , japanese = 断言
+ , russian = Утверждения
+ }
+ , crefname = {
+ , english = {claims}{claims}
+ , french = [les]{affirmations}[les]{affirmations}
+ , ngerman = { {Behauptungen}{Behauptungen}
+ , Nominativ = [die]{Behauptungen}[die]{Behauptungen}
+ , Genitiv = [der]{Behauptungen}[der]{Behauptungen}
+ , Dativ = [den]{Behauptungen}[den]{Behauptungen}
+ , Akkusativ = [die]{Behauptungen}[die]{Behauptungen}
+ }
+ , italian = [le]{affermazioni}[le]{affermazioni}
+ , portuguese = [as]{afirmações}[as]{afirmações}
+ , brazilian = [as]{afirmações}[as]{afirmações}
+ , spanish = [las]{afirmaciones}[las]{afirmaciones}
+ , schinese = {断言}{断言}
+ , tchinese = {斷言}{斷言}
+ , japanese = {断言}{断言}
+ , russian = {утверждения}{утверждения}
+ }
+ , Crefname = {
+ , english = {Claims}{Claims}
+ , french = [Les]{affirmations}[Les]{affirmations}
+ , ngerman = { {Behauptungen}{Behauptungen}
+ , Nominativ = [Die]{Behauptungen}[Die]{Behauptungen}
+ , Genitiv = [Der]{Behauptungen}[Der]{Behauptungen}
+ , Dativ = [Den]{Behauptungen}[Den]{Behauptungen}
+ , Akkusativ = [Die]{Behauptungen}[Die]{Behauptungen}
+ }
+ , italian = [Le]{affermazioni}[Le]{affermazioni}
+ , portuguese = [As]{afirmações}[As]{afirmações}
+ , brazilian = [As]{afirmações}[As]{afirmações}
+ , spanish = [Las]{afirmaciones}[Las]{afirmaciones}
+ , schinese = {断言}{断言}
+ , tchinese = {斷言}{斷言}
+ , japanese = {断言}{断言}
+ , russian = {Утверждения}{Утверждения}
+ }
+ }
+
+\NameTheorem { commentaries }
+ {
+ , heading = {
+ , english = Commentaries
+ , french = Commentaires
+ , ngerman = Kommentare
+ , italian = Commenti
+ , portuguese = Comentários
+ , brazilian = Comentários
+ , spanish = Comentarios
+ , schinese = 解说
+ , tchinese = 解說
+ , japanese = 解説
+ , russian = Комментарии
+ }
+ , crefname = {
+ , english = {commentaries}{commentaries}
+ , french = [les]{commentaires}[les]{commentaires}
+ , ngerman = { {Kommentare}{Kommentare}
+ , Nominativ = [die]{Kommentare}[die]{Kommentare}
+ , Genitiv = [der]{Kommentare}[der]{Kommentare}
+ , Dativ = [den]{Kommentaren}[den]{Kommentaren}
+ , Akkusativ = [die]{Kommentare}[die]{Kommentare}
+ }
+ , italian = [i]{commenti}[i]{commenti}
+ , portuguese = [os]{comentários}[os]{comentários}
+ , brazilian = [os]{comentários}[os]{comentários}
+ , spanish = [los]{comentarios}[los]{comentarios}
+ , schinese = {解说}{解说}
+ , tchinese = {解說}{解說}
+ , japanese = {解説}{解説}
+ , russian = {комментарии}{комментарии}
+ }
+ , Crefname = {
+ , english = {Commentaries}{Commentaries}
+ , french = [Les]{commentaires}[Les]{commentaires}
+ , ngerman = { {Kommentare}{Kommentare}
+ , Nominativ = [Die]{Kommentare}[Die]{Kommentare}
+ , Genitiv = [Der]{Kommentare}[Der]{Kommentare}
+ , Dativ = [Den]{Kommentaren}[Den]{Kommentaren}
+ , Akkusativ = [Die]{Kommentare}[Die]{Kommentare}
+ }
+ , italian = [I]{commenti}[I]{commenti}
+ , portuguese = [Os]{comentários}[Os]{comentários}
+ , brazilian = [Os]{comentários}[Os]{comentários}
+ , spanish = [Los]{comentarios}[Los]{comentarios}
+ , schinese = {解说}{解说}
+ , tchinese = {解說}{解說}
+ , japanese = {解説}{解説}
+ , russian = {Комментарии}{Комментарии}
+ }
+ }
+
+\NameTheorem { conclusions }
+ {
+ , heading = {
+ , english = Conclusions
+ , french = Conclusions
+ , ngerman = Schlussfolgerungen
+ , italian = Conclusioni
+ , portuguese = Conclusões
+ , brazilian = Conclusões
+ , spanish = Conclusiones
+ , schinese = 结论
+ , tchinese = 結論
+ , japanese = 結論
+ , russian = Выводы
+ }
+ , crefname = {
+ , english = {conclusions}{conclusions}
+ , french = [Les]{conclusions}[Les]{conclusions}
+ , ngerman = { {Schlussfolgerungen}{Schlussfolgerungen}
+ , Nominativ = [die]{Schlussfolgerungen}[die]{Schlussfolgerungen}
+ , Genitiv = [der]{Schlussfolgerungen}[der]{Schlussfolgerungen}
+ , Dativ = [den]{Schlussfolgerungen}[den]{Schlussfolgerungen}
+ , Akkusativ = [die]{Schlussfolgerungen}[die]{Schlussfolgerungen}
+ }
+ , italian = [le]{conclusioni}[le]{conclusioni}
+ , portuguese = [as]{conclusões}[as]{conclusões}
+ , brazilian = [as]{conclusões}[as]{conclusões}
+ , spanish = [las]{conclusiones}[las]{conclusiones}
+ , schinese = {结论}{结论}
+ , tchinese = {結論}{結論}
+ , japanese = {結論}{結論}
+ , russian = {выводы}{выводы}
+ }
+ , Crefname = {
+ , english = {Conclusions}{Conclusions}
+ , french = [Les]{conclusions}[Les]{conclusions}
+ , ngerman = { {Schlussfolgerungen}{Schlussfolgerungen}
+ , Nominativ = [Die]{Schlussfolgerungen}[Die]{Schlussfolgerungen}
+ , Genitiv = [Der]{Schlussfolgerungen}[Der]{Schlussfolgerungen}
+ , Dativ = [Den]{Schlussfolgerungen}[Den]{Schlussfolgerungen}
+ , Akkusativ = [Die]{Schlussfolgerungen}[Die]{Schlussfolgerungen}
+ }
+ , italian = [Le]{conclusioni}[Le]{conclusioni}
+ , portuguese = [As]{conclusões}[As]{conclusões}
+ , brazilian = [As]{conclusões}[As]{conclusões}
+ , spanish = [Las]{conclusiones}[Las]{conclusiones}
+ , schinese = {结论}{结论}
+ , tchinese = {結論}{結論}
+ , japanese = {結論}{結論}
+ , russian = {Выводы}{Выводы}
+ }
+ }
+
+\NameTheorem { conjectures }
+ {
+ , heading = {
+ , english = Conjectures
+ , french = Conjectures
+ , ngerman = Vermutungen
+ , italian = Congetture
+ , portuguese = Conjeturas
+ , brazilian = Conjecturas
+ , spanish = Conjeturas
+ , schinese = 猜想
+ , tchinese = 猜想
+ , japanese = 予想
+ , russian = Гипотезы
+ }
+ , crefname = {
+ , english = {conjectures}{conjectures}
+ , french = [les]{conjectures}[les]{conjectures}
+ , ngerman = { {Vermutungen}{Vermutungen}
+ , Nominativ = [die]{Vermutungen}[die]{Vermutungen}
+ , Genitiv = [der]{Vermutungen}[der]{Vermutungen}
+ , Dativ = [den]{Vermutungen}[den]{Vermutungen}
+ , Akkusativ = [die]{Vermutungen}[die]{Vermutungen}
+ }
+ , italian = [le]{congetture}[le]{congetture}
+ , portuguese = [as]{conjeturas}[as]{conjeturas}
+ , brazilian = [as]{conjecturas}[as]{conjecturas}
+ , spanish = [las]{conjeturas}[las]{conjeturas}
+ , schinese = {猜想}{猜想}
+ , tchinese = {猜想}{猜想}
+ , japanese = {予想}{予想}
+ , russian = {гипотезы}{гипотезы}
+ }
+ , Crefname = {
+ , english = {Conjectures}{Conjectures}
+ , french = [Les]{conjectures}[Les]{conjectures}
+ , ngerman = { {Vermutungen}{Vermutungen}
+ , Nominativ = [Die]{Vermutungen}[Die]{Vermutungen}
+ , Genitiv = [Der]{Vermutungen}[Der]{Vermutungen}
+ , Dativ = [Den]{Vermutungen}[Den]{Vermutungen}
+ , Akkusativ = [Die]{Vermutungen}[Die]{Vermutungen}
+ }
+ , italian = [Le]{congetture}[Le]{congetture}
+ , portuguese = [As]{conjeturas}[As]{conjeturas}
+ , brazilian = [As]{conjecturas}[As]{conjecturas}
+ , spanish = [Las]{conjeturas}[Las]{conjeturas}
+ , schinese = {猜想}{猜想}
+ , tchinese = {猜想}{猜想}
+ , japanese = {予想}{予想}
+ , russian = {Гипотезы}{Гипотезы}
+ }
+ }
+
+\NameTheorem { constructions }
+ {
+ , heading = {
+ , english = Constructions
+ , french = Constructions
+ , ngerman = Konstruktionen
+ , italian = Costruzioni
+ , portuguese = Construções
+ , brazilian = Construções
+ , spanish = Construcciones
+ , schinese = 构造
+ , tchinese = 構造
+ , japanese = 構造
+ , russian = Конструкции
+ }
+ , crefname = {
+ , english = {constructions}{constructions}
+ , french = [les]{constructions}[les]{constructions}
+ , ngerman = { {Konstruktionen}{Konstruktionen}
+ , Nominativ = [die]{Konstruktionen}[die]{Konstruktionen}
+ , Genitiv = [der]{Konstruktionen}[der]{Konstruktionen}
+ , Dativ = [den]{Konstruktionen}[den]{Konstruktionen}
+ , Akkusativ = [die]{Konstruktionen}[die]{Konstruktionen}
+ }
+ , italian = [le]{costruzioni}[le]{costruzioni}
+ , portuguese = [as]{construções}[as]{construções}
+ , brazilian = [as]{construções}[as]{construções}
+ , spanish = [las]{construcciones}[las]{construcciones}
+ , schinese = {构造}{构造}
+ , tchinese = {構造}{構造}
+ , japanese = {構造}{構造}
+ , russian = {конструкции}{конструкции}
+ }
+ , Crefname = {
+ , english = {Constructions}{Constructions}
+ , french = [Les]{constructions}[Les]{constructions}
+ , ngerman = { {Konstruktionen}{Konstruktionen}
+ , Nominativ = [Die]{Konstruktionen}[Die]{Konstruktionen}
+ , Genitiv = [Der]{Konstruktionen}[Der]{Konstruktionen}
+ , Dativ = [Den]{Konstruktionen}[Den]{Konstruktionen}
+ , Akkusativ = [Die]{Konstruktionen}[Die]{Konstruktionen}
+ }
+ , italian = [Le]{costruzioni}[Le]{costruzioni}
+ , portuguese = [As]{construções}[As]{construções}
+ , brazilian = [As]{construções}[As]{construções}
+ , spanish = [Las]{construcciones}[Las]{construcciones}
+ , schinese = {构造}{构造}
+ , tchinese = {構造}{構造}
+ , japanese = {構造}{構造}
+ , russian = {Конструкции}{Конструкции}
+ }
+ }
+
+\NameTheorem { conventions }
+ {
+ , heading = {
+ , english = Conventions
+ , french = Conventions
+ , ngerman = Konventionen
+ , italian = Convenzioni
+ , portuguese = Convenções
+ , brazilian = Convenções
+ , spanish = Convenciones
+ , schinese = 约定
+ , tchinese = 約定
+ , japanese = 慣例
+ , russian = Конвенции
+ }
+ , crefname = {
+ , english = {conventions}{conventions}
+ , french = [les]{conventions}[les]{conventions}
+ , ngerman = { {Konventionen}{Konventionen}
+ , Nominativ = [die]{Konventionen}[die]{Konventionen}
+ , Genitiv = [der]{Konventionen}[der]{Konventionen}
+ , Dativ = [den]{Konventionen}[den]{Konventionen}
+ , Akkusativ = [die]{Konventionen}[die]{Konventionen}
+ }
+ , italian = [le]{convenzioni}[le]{convenzioni}
+ , portuguese = [as]{convenções}[as]{convenções}
+ , brazilian = [as]{convenções}[as]{convenções}
+ , spanish = [las]{convenciones}[las]{convenciones}
+ , schinese = {约定}{约定}
+ , tchinese = {約定}{約定}
+ , japanese = {慣例}{慣例}
+ , russian = {конвенции}{конвенции}
+ }
+ , Crefname = {
+ , english = {Conventions}{Conventions}
+ , french = [Les]{conventions}[Les]{conventions}
+ , ngerman = { {Konventionen}{Konventionen}
+ , Nominativ = [Die]{Konventionen}[Die]{Konventionen}
+ , Genitiv = [Der]{Konventionen}[Der]{Konventionen}
+ , Dativ = [Den]{Konventionen}[Den]{Konventionen}
+ , Akkusativ = [Die]{Konventionen}[Die]{Konventionen}
+ }
+ , italian = [Le]{convenzioni}[Le]{convenzioni}
+ , portuguese = [As]{convenções}[As]{convenções}
+ , brazilian = [As]{convenções}[As]{convenções}
+ , spanish = [Las]{convenciones}[Las]{convenciones}
+ , schinese = {约定}{约定}
+ , tchinese = {約定}{約定}
+ , japanese = {慣例}{慣例}
+ , russian = {Конвенции}{Конвенции}
+ }
+ }
+
+\NameTheorem { corollaries }
+ {
+ , heading = {
+ , english = Corollaries
+ , french = Corollaires
+ , ngerman = Korollare
+ , italian = Corollari
+ , portuguese = Corolários
+ , brazilian = Corolários
+ , spanish = Corolarios
+ , schinese = 推论
+ , tchinese = 推論
+ , japanese = 系
+ , russian = Следствия
+ }
+ , crefname = {
+ , english = {corollaries}{corollaries}
+ , french = [les]{corollaires}[les]{corollaires}
+ , ngerman = { {Korollare}{Korollare}
+ , Nominativ = [die]{Korollare}[die]{Korollare}
+ , Genitiv = [der]{Korollare}[der]{Korollare}
+ , Dativ = [den]{Korollaren}[den]{Korollaren}
+ , Akkusativ = [die]{Korollare}[die]{Korollare}
+ }
+ , italian = [i]{corollari}[i]{corollari}
+ , portuguese = [os]{corolários}[os]{corolários}
+ , brazilian = [os]{corolários}[os]{corolários}
+ , spanish = [los]{corolarios}[los]{corolarios}
+ , schinese = {推论}{推论}
+ , tchinese = {推論}{推論}
+ , japanese = {系}{系}
+ , russian = {следствия}{следствия}
+ }
+ , Crefname = {
+ , english = {Corollaries}{Corollaries}
+ , french = [Les]{corollaires}[Les]{corollaires}
+ , ngerman = { {Korollare}{Korollare}
+ , Nominativ = [Die]{Korollare}[Die]{Korollare}
+ , Genitiv = [Der]{Korollare}[Der]{Korollare}
+ , Dativ = [Den]{Korollaren}[Den]{Korollaren}
+ , Akkusativ = [Die]{Korollare}[Die]{Korollare}
+ }
+ , italian = [I]{corollari}[I]{corollari}
+ , portuguese = [Os]{corolários}[Os]{corolários}
+ , brazilian = [Os]{corolários}[Os]{corolários}
+ , spanish = [Los]{corolarios}[Los]{corolarios}
+ , schinese = {推论}{推论}
+ , tchinese = {推論}{推論}
+ , japanese = {系}{系}
+ , russian = {Следствия}{Следствия}
+ }
+ }
+
+\NameTheorem { definitions }
+ {
+ , heading = {
+ , english = Definitions
+ , french = Définitions
+ , ngerman = Definitionen
+ , italian = Definizioni
+ , portuguese = Definições
+ , brazilian = Definições
+ , spanish = Definiciones
+ , schinese = 定义
+ , tchinese = 定義
+ , japanese = 定義
+ , russian = Определения
+ }
+ , crefname = {
+ , english = {definitions}{definitions}
+ , french = [les]{définitions}[les]{définitions}
+ , ngerman = { {Definitionen}{Definitionen}
+ , Nominativ = [die]{Definitionen}[die]{Definitionen}
+ , Genitiv = [der]{Definitionen}[der]{Definitionen}
+ , Dativ = [den]{Definitionen}[den]{Definitionen}
+ , Akkusativ = [die]{Definitionen}[die]{Definitionen}
+ }
+ , italian = [le]{definizioni}[le]{definizioni}
+ , portuguese = [as]{definições}[as]{definições}
+ , brazilian = [as]{definições}[as]{definições}
+ , spanish = [las]{definiciones}[las]{definiciones}
+ , schinese = {定义}{定义}
+ , tchinese = {定義}{定義}
+ , japanese = {定義}{定義}
+ , russian = {определения}{определения}
+ }
+ , Crefname = {
+ , english = {Definitions}{Definitions}
+ , french = [Les]{définitions}[Les]{définitions}
+ , ngerman = { {Definitionen}{Definitionen}
+ , Nominativ = [Die]{Definitionen}[Die]{Definitionen}
+ , Genitiv = [Der]{Definitionen}[Der]{Definitionen}
+ , Dativ = [Den]{Definitionen}[Den]{Definitionen}
+ , Akkusativ = [Die]{Definitionen}[Die]{Definitionen}
+ }
+ , italian = [Le]{definizioni}[Le]{definizioni}
+ , portuguese = [As]{definições}[As]{definições}
+ , brazilian = [As]{definições}[As]{definições}
+ , spanish = [Las]{definiciones}[Las]{definiciones}
+ , schinese = {定义}{定义}
+ , tchinese = {定義}{定義}
+ , japanese = {定義}{定義}
+ , russian = {Определения}{Определения}
+ }
+ }
+
+\NameTheorem { examples }
+ {
+ , heading = {
+ , english = Examples
+ , french = Exemples
+ , ngerman = Beispiele
+ , italian = Esempi
+ , portuguese = Exemplos
+ , brazilian = Exemplos
+ , spanish = Ejemplos
+ , schinese = 例
+ , tchinese = 例
+ , japanese = 例
+ , russian = Примеры
+ }
+ , crefname = {
+ , english = {examples}{examples}
+ , french = [les]{exemples}[les]{exemples}
+ , ngerman = { {Beispiele}{Beispiele}
+ , Nominativ = [die]{Beispiele}[die]{Beispiele}
+ , Genitiv = [der]{Beispiele}[der]{Beispiele}
+ , Dativ = [den]{Beispielen}[den]{Beispielen}
+ , Akkusativ = [die]{Beispiele}[die]{Beispiele}
+ }
+ , italian = [gli]{esempi}[gli]{esempi}
+ , portuguese = [os]{exemplos}[os]{exemplos}
+ , brazilian = [os]{exemplos}[os]{exemplos}
+ , spanish = [los]{ejemplos}[los]{ejemplos}
+ , schinese = {例}{例}
+ , tchinese = {例}{例}
+ , japanese = {例}{例}
+ , russian = {примеры}{примеры}
+ }
+ , Crefname = {
+ , english = {Examples}{Examples}
+ , french = [Les]{exemples}[Les]{exemples}
+ , ngerman = { {Beispiele}{Beispiele}
+ , Nominativ = [Die]{Beispiele}[Die]{Beispiele}
+ , Genitiv = [Der]{Beispiele}[Der]{Beispiele}
+ , Dativ = [Den]{Beispielen}[Den]{Beispielen}
+ , Akkusativ = [Die]{Beispiele}[Die]{Beispiele}
+ }
+ , italian = [Gli]{esempi}[Gli]{esempi}
+ , portuguese = [Os]{exemplos}[Os]{exemplos}
+ , brazilian = [Os]{exemplos}[Os]{exemplos}
+ , spanish = [Los]{ejemplos}[Los]{ejemplos}
+ , schinese = {例}{例}
+ , tchinese = {例}{例}
+ , japanese = {例}{例}
+ , russian = {Примеры}{Примеры}
+ }
+ }
+
+\NameTheorem { exercises }
+ {
+ , heading = {
+ , english = Exercises
+ , french = Exercices
+ , ngerman = ÜBungen
+ , italian = Esercizi
+ , portuguese = Exercícios
+ , brazilian = Exercícios
+ , spanish = Ejercicios
+ , schinese = 习题
+ , tchinese = 習題
+ , japanese = 練習
+ , russian = Упражнения
+ }
+ , crefname = {
+ , english = {exercises}{exercises}
+ , french = [les]{exercices}[les]{exercices}
+ , ngerman = { {Übungen}{Übungen}
+ , Nominativ = [die]{Übungen}[die]{Übungen}
+ , Genitiv = [der]{Übungen}[der]{Übungen}
+ , Dativ = [den]{Übungen}[den]{Übungen}
+ , Akkusativ = [die]{Übungen}[die]{Übungen}
+ }
+ , italian = [gli]{esercizi}[gli]{esercizi}
+ , portuguese = [os]{exercícios}[os]{exercícios}
+ , brazilian = [os]{exercícios}[os]{exercícios}
+ , spanish = [los]{ejercicios}[los]{ejercicios}
+ , schinese = {习题}{习题}
+ , tchinese = {習題}{習題}
+ , japanese = {練習}{練習}
+ , russian = {упражнения}{упражнения}
+ }
+ , Crefname = {
+ , english = {Exercises}{Exercises}
+ , french = [Les]{exercices}[Les]{exercices}
+ , ngerman = { {Übungen}{Übungen}
+ , Nominativ = [Die]{Übungen}[Die]{Übungen}
+ , Genitiv = [Der]{Übungen}[Der]{Übungen}
+ , Dativ = [Den]{Übungen}[Den]{Übungen}
+ , Akkusativ = [Die]{Übungen}[Die]{Übungen}
+ }
+ , italian = [Gli]{esercizi}[Gli]{esercizi}
+ , portuguese = [Os]{exercícios}[Os]{exercícios}
+ , brazilian = [Os]{exercícios}[Os]{exercícios}
+ , spanish = [Los]{ejercicios}[Los]{ejercicios}
+ , schinese = {习题}{习题}
+ , tchinese = {習題}{習題}
+ , japanese = {練習}{練習}
+ , russian = {Упражнения}{Упражнения}
+ }
+ }
+
+\NameTheorem { facts }
+ {
+ , heading = {
+ , english = Facts
+ , french = Faits
+ , ngerman = Tatsachen
+ , italian = Fatti
+ , portuguese = Factos
+ , brazilian = Fatos
+ , spanish = Hechos
+ , schinese = 事实
+ , tchinese = 事實
+ , japanese = 事実
+ , russian = Факты
+ }
+ , crefname = {
+ , english = {facts}{facts}
+ , french = [les]{faits}[les]{faits}
+ , ngerman = { {Tatsachen}{Tatsachen}
+ , Nominativ = [die]{Tatsachen}[die]{Tatsachen}
+ , Genitiv = [der]{Tatsachen}[der]{Tatsachen}
+ , Dativ = [den]{Tatsachen}[den]{Tatsachen}
+ , Akkusativ = [die]{Tatsachen}[die]{Tatsachen}
+ }
+ , italian = [i]{fatti}[i]{fatti}
+ , portuguese = [os]{factos}[os]{factos}
+ , brazilian = [os]{fatos}[os]{fatos}
+ , spanish = [los]{hechos}[los]{hechos}
+ , schinese = {事实}{事实}
+ , tchinese = {事實}{事實}
+ , japanese = {事実}{事実}
+ , russian = {факты}{факты}
+ }
+ , Crefname = {
+ , english = {Facts}{Facts}
+ , french = [Les]{faits}[Les]{faits}
+ , ngerman = { {Tatsachen}{Tatsachen}
+ , Nominativ = [Die]{Tatsachen}[Die]{Tatsachen}
+ , Genitiv = [Der]{Tatsachen}[Der]{Tatsachen}
+ , Dativ = [Den]{Tatsachen}[Den]{Tatsachen}
+ , Akkusativ = [Die]{Tatsachen}[Die]{Tatsachen}
+ }
+ , italian = [I]{fatti}[I]{fatti}
+ , portuguese = [Os]{factos}[Os]{factos}
+ , brazilian = [Os]{fatos}[Os]{fatos}
+ , spanish = [Los]{hechos}[Los]{hechos}
+ , schinese = {事实}{事实}
+ , tchinese = {事實}{事實}
+ , japanese = {事実}{事実}
+ , russian = {Факты}{Факты}
+ }
+ }
+
+\NameTheorem { hypotheses }
+ {
+ , heading = {
+ , english = Hypotheses
+ , french = Hypothèses
+ , ngerman = Hypothesen
+ , italian = Ipotesi
+ , portuguese = Hipóteses
+ , brazilian = Hipóteses
+ , spanish = Hipótesis
+ , schinese = 假设
+ , tchinese = 假設
+ , japanese = 仮設
+ , russian = Гипотезы
+ }
+ , crefname = {
+ , english = {hypotheses}{hypotheses}
+ , french = [les]{hypothèses}[les]{hypothèses}
+ , ngerman = { {Hypothesen}{Hypothesen}
+ , Nominativ = [die]{Hypothesen}[die]{Hypothesen}
+ , Genitiv = [der]{Hypothesen}[der]{Hypothesen}
+ , Dativ = [den]{Hypothesen}[den]{Hypothesen}
+ , Akkusativ = [die]{Hypothesen}[die]{Hypothesen}
+ }
+ , italian = [le]{ipotesi}[le]{ipotesi}
+ , portuguese = [as]{hipóteses}[as]{hipóteses}
+ , brazilian = [as]{hipóteses}[as]{hipóteses}
+ , spanish = [las]{hipótesis}[las]{hipótesis}
+ , schinese = {假设}{假设}
+ , tchinese = {假設}{假設}
+ , japanese = {仮設}{仮設}
+ , russian = {гипотезы}{гипотезы}
+ }
+ , Crefname = {
+ , english = {Hypotheses}{Hypotheses}
+ , french = [Les]{hypothèses}[Les]{hypothèses}
+ , ngerman = { {Hypothesen}{Hypothesen}
+ , Nominativ = [Die]{Hypothesen}[Die]{Hypothesen}
+ , Genitiv = [Der]{Hypothesen}[Der]{Hypothesen}
+ , Dativ = [Den]{Hypothesen}[Den]{Hypothesen}
+ , Akkusativ = [Die]{Hypothesen}[Die]{Hypothesen}
+ }
+ , italian = [Le]{ipotesi}[Le]{ipotesi}
+ , portuguese = [As]{hipóteses}[As]{hipóteses}
+ , brazilian = [As]{hipóteses}[As]{hipóteses}
+ , spanish = [Las]{hipótesis}[Las]{hipótesis}
+ , schinese = {假设}{假设}
+ , tchinese = {假設}{假設}
+ , japanese = {仮設}{仮設}
+ , russian = {Гипотезы}{Гипотезы}
+ }
+ }
+
+\NameTheorem { lemmas }
+ {
+ , heading = {
+ , english = Lemmas
+ , french = Lemmes
+ , ngerman = Lemmata
+ , italian = Lemmi
+ , portuguese = Lemas
+ , brazilian = Lemas
+ , spanish = Lemas
+ , schinese = 引理
+ , tchinese = 引理
+ , japanese = 補題
+ , russian = Леммы
+ }
+ , crefname = {
+ , english = {Lemmas}{Lemmas}
+ , french = [les]{lemmes}[les]{lemmes}
+ , ngerman = { {Lemmata}{Lemmata}
+ , Nominativ = [die]{Lemmata}[die]{Lemmata}
+ , Genitiv = [der]{Lemmata}[der]{Lemmata}
+ , Dativ = [den]{Lemmata}[den]{Lemmata}
+ , Akkusativ = [die]{Lemmata}[die]{Lemmata}
+ }
+ , italian = [i]{lemmi}[i]{lemmi}
+ , portuguese = [os]{lemas}[os]{lemas}
+ , brazilian = [os]{lemas}[os]{lemas}
+ , spanish = [las]{lemas}[las]{lemas}
+ , schinese = {引理}{引理}
+ , tchinese = {引理}{引理}
+ , japanese = {補題}{補題}
+ , russian = {леммы}{леммы}
+ }
+ , Crefname = {
+ , english = {Lemmas}{Lemmas}
+ , french = [Les]{lemmes}[Les]{lemmes}
+ , ngerman = { {Lemmata}{Lemmata}
+ , Nominativ = [Die]{Lemmata}[Die]{Lemmata}
+ , Genitiv = [Der]{Lemmata}[Der]{Lemmata}
+ , Dativ = [Den]{Lemmata}[Den]{Lemmata}
+ , Akkusativ = [Die]{Lemmata}[Die]{Lemmata}
+ }
+ , italian = [I]{lemmi}[I]{lemmi}
+ , portuguese = [Os]{lemas}[Os]{lemas}
+ , brazilian = [Os]{lemas}[Os]{lemas}
+ , spanish = [las]{lemas}[las]{lemas}
+ , schinese = {引理}{引理}
+ , tchinese = {引理}{引理}
+ , japanese = {補題}{補題}
+ , russian = {Леммы}{Леммы}
+ }
+ }
+
+\NameTheorem { motivations }
+ {
+ , heading = {
+ , english = Motivations
+ , french = Motivations
+ , ngerman = Motivationen
+ , italian = Motivazioni
+ , portuguese = Motivações
+ , brazilian = Motivações
+ , spanish = Motivaciones
+ , schinese = 动机
+ , tchinese = 動機
+ , japanese = 動機
+ , russian = Мотивации
+ }
+ , crefname = {
+ , english = {motivations}{motivations}
+ , french = [les]{motivations}[les]{motivations}
+ , ngerman = { {Motivationen}{Motivationen}
+ , Nominativ = [die]{Motivationen}[die]{Motivationen}
+ , Genitiv = [der]{Motivationen}[der]{Motivationen}
+ , Dativ = [den]{Motivationen}[den]{Motivationen}
+ , Akkusativ = [die]{Motivationen}[die]{Motivationen}
+ }
+ , italian = [le]{motivazioni}[le]{motivazioni}
+ , portuguese = [as]{motivações}[as]{motivações}
+ , brazilian = [as]{motivações}[as]{motivações}
+ , spanish = [las]{motivaciones}[las]{motivaciones}
+ , schinese = {动机}{动机}
+ , tchinese = {動機}{動機}
+ , japanese = {動機}{動機}
+ , russian = {мотивации}{мотивации}
+ }
+ , Crefname = {
+ , english = {Motivations}{Motivations}
+ , french = [Les]{motivations}[Les]{motivations}
+ , ngerman = { {Motivationen}{Motivationen}
+ , Nominativ = [Die]{Motivationen}[Die]{Motivationen}
+ , Genitiv = [Der]{Motivationen}[Der]{Motivationen}
+ , Dativ = [Den]{Motivationen}[Den]{Motivationen}
+ , Akkusativ = [Die]{Motivationen}[Die]{Motivationen}
+ }
+ , italian = [Le]{motivazioni}[Le]{motivazioni}
+ , portuguese = [As]{motivações}[As]{motivações}
+ , brazilian = [As]{motivações}[As]{motivações}
+ , spanish = [Las]{motivaciones}[Las]{motivaciones}
+ , schinese = {动机}{动机}
+ , tchinese = {動機}{動機}
+ , japanese = {動機}{動機}
+ , russian = {Мотивации}{Мотивации}
+ }
+ }
+
+\NameTheorem { notations }
+ {
+ , heading = {
+ , english = Notations
+ , french = Notations
+ , ngerman = Notationen
+ , italian = Notazioni
+ , portuguese = Notações
+ , brazilian = Notações
+ , spanish = Notaciones
+ , schinese = 记号
+ , tchinese = 記號
+ , japanese = 記法
+ , russian = Нотации
+ }
+ , crefname = {
+ , english = {notations}{notations}
+ , french = [les]{notations}[les]{notations}
+ , ngerman = { {Notationen}{Notationen}
+ , Nominativ = [die]{Notationen}[die]{Notationen}
+ , Genitiv = [der]{Notationen}[der]{Notationen}
+ , Dativ = [den]{Notationen}[den]{Notationen}
+ , Akkusativ = [die]{Notationen}[die]{Notationen}
+ }
+ , italian = [le]{notazioni}[le]{notazioni}
+ , portuguese = [as]{notações}[as]{notações}
+ , brazilian = [as]{notações}[as]{notações}
+ , spanish = [las]{notaciones}[las]{notaciones}
+ , schinese = {记号}{记号}
+ , tchinese = {記號}{記號}
+ , japanese = {記法}{記法}
+ , russian = {нотации}{нотации}
+ }
+ , Crefname = {
+ , english = {Notations}{Notations}
+ , french = [Les]{notations}[Les]{notations}
+ , ngerman = { {Notationen}{Notationen}
+ , Nominativ = [Die]{Notationen}[Die]{Notationen}
+ , Genitiv = [Der]{Notationen}[Der]{Notationen}
+ , Dativ = [Den]{Notationen}[Den]{Notationen}
+ , Akkusativ = [Die]{Notationen}[Die]{Notationen}
+ }
+ , italian = [Le]{notazioni}[Le]{notazioni}
+ , portuguese = [As]{notações}[As]{notações}
+ , brazilian = [As]{notações}[As]{notações}
+ , spanish = [Las]{notaciones}[Las]{notaciones}
+ , schinese = {记号}{记号}
+ , tchinese = {記號}{記號}
+ , japanese = {記法}{記法}
+ , russian = {Нотации}{Нотации}
+ }
+ }
+
+\NameTheorem { observations }
+ {
+ , heading = {
+ , english = Observations
+ , french = Observations
+ , ngerman = Beobachtungen
+ , italian = Osservazioni
+ , portuguese = Observações
+ , brazilian = Observações
+ , spanish = Observaciones
+ , schinese = 观察
+ , tchinese = 觀察
+ , japanese = 観察
+ , russian = Наблюдения
+ }
+ , crefname = {
+ , english = {observations}{observations}
+ , french = [les]{observations}[les]{observations}
+ , ngerman = { {Beobachtungen}{Beobachtungen}
+ , Nominativ = [die]{Beobachtungen}[die]{Beobachtungen}
+ , Genitiv = [der]{Beobachtungen}[der]{Beobachtungen}
+ , Dativ = [den]{Beobachtungen}[den]{Beobachtungen}
+ , Akkusativ = [die]{Beobachtungen}[die]{Beobachtungen}
+ }
+ , italian = [le]{osservazioni}[le]{osservazioni}
+ , portuguese = [as]{observações}[as]{observações}
+ , brazilian = [as]{observações}[as]{observações}
+ , spanish = [las]{observaciones}[las]{observaciones}
+ , schinese = {观察}{观察}
+ , tchinese = {觀察}{觀察}
+ , japanese = {観察}{観察}
+ , russian = {наблюдения}{наблюдения}
+ }
+ , Crefname = {
+ , english = {Observations}{Observations}
+ , french = [Les]{observations}[Les]{observations}
+ , ngerman = { {Beobachtungen}{Beobachtungen}
+ , Nominativ = [Die]{Beobachtungen}[Die]{Beobachtungen}
+ , Genitiv = [Der]{Beobachtungen}[Der]{Beobachtungen}
+ , Dativ = [Den]{Beobachtungen}[Den]{Beobachtungen}
+ , Akkusativ = [Die]{Beobachtungen}[Die]{Beobachtungen}
+ }
+ , italian = [Le]{osservazioni}[Le]{osservazioni}
+ , portuguese = [As]{observações}[As]{observações}
+ , brazilian = [As]{observações}[As]{observações}
+ , spanish = [Las]{observaciones}[Las]{observaciones}
+ , schinese = {观察}{观察}
+ , tchinese = {觀察}{觀察}
+ , japanese = {観察}{観察}
+ , russian = {Наблюдения}{Наблюдения}
+ }
+ }
+
+\NameTheorem { postulates }
+ {
+ , heading = {
+ , english = Postulates
+ , french = Postulats
+ , ngerman = Postulate
+ , italian = Postulati
+ , portuguese = Postulados
+ , brazilian = Postulados
+ , spanish = Postulados
+ , schinese = 公设
+ , tchinese = 公設
+ , japanese = 公準
+ , russian = Постулаты
+ }
+ , crefname = {
+ , english = {postulates}{postulates}
+ , french = [les]{postulats}[les]{postulats}
+ , ngerman = { {Postulate}{Postulate}
+ , Nominativ = [die]{Postulate}[die]{Postulate}
+ , Genitiv = [der]{Postulate}[der]{Postulate}
+ , Dativ = [den]{Postulaten}[den]{Postulaten}
+ , Akkusativ = [die]{Postulate}[die]{Postulate}
+ }
+ , italian = [i]{postulati}[i]{postulati}
+ , portuguese = [os]{postulados}[os]{postulados}
+ , brazilian = [os]{postulados}[os]{postulados}
+ , spanish = [los]{postulados}[los]{postulados}
+ , schinese = {公设}{公设}
+ , tchinese = {公設}{公設}
+ , japanese = {公準}{公準}
+ , russian = {постулаты}{постулаты}
+ }
+ , Crefname = {
+ , english = {Postulates}{Postulates}
+ , french = [Les]{postulats}[Les]{postulats}
+ , ngerman = { {Postulate}{Postulate}
+ , Nominativ = [Die]{Postulate}[Die]{Postulate}
+ , Genitiv = [Der]{Postulate}[Der]{Postulate}
+ , Dativ = [Den]{Postulaten}[Den]{Postulaten}
+ , Akkusativ = [Die]{Postulate}[Die]{Postulate}
+ }
+ , italian = [I]{postulati}[I]{postulati}
+ , portuguese = [Os]{postulados}[Os]{postulados}
+ , brazilian = [Os]{postulados}[Os]{postulados}
+ , spanish = [Los]{postulados}[Los]{postulados}
+ , schinese = {公设}{公设}
+ , tchinese = {公設}{公設}
+ , japanese = {公準}{公準}
+ , russian = {Постулаты}{Постулаты}
+ }
+ }
+
+\NameTheorem { problems }
+ {
+ , heading = {
+ , english = Problems
+ , french = Problèmes
+ , ngerman = Probleme
+ , italian = Problemi
+ , portuguese = Problemas
+ , brazilian = Problemas
+ , spanish = Problemas
+ , schinese = 问题
+ , tchinese = 問題
+ , japanese = 問題
+ , russian = Проблемы
+ }
+ , crefname = {
+ , english = {problems}{problems}
+ , french = [les]{problèmes}[les]{problèmes}
+ , ngerman = { {Probleme}{Probleme}
+ , Nominativ = [die]{Probleme}[die]{Probleme}
+ , Genitiv = [der]{Probleme}[der]{Probleme}
+ , Dativ = [den]{Problemen}[den]{Problemen}
+ , Akkusativ = [die]{Probleme}[die]{Probleme}
+ }
+ , italian = [i]{problemi}[i]{problemi}
+ , portuguese = [os]{problemas}[os]{problemas}
+ , brazilian = [os]{problemas}[os]{problemas}
+ , spanish = [los]{problemas}[los]{problemas}
+ , schinese = {问题}{问题}
+ , tchinese = {問題}{問題}
+ , japanese = {問題}{問題}
+ , russian = {проблемы}{проблемы}
+ }
+ , Crefname = {
+ , english = {Problems}{Problems}
+ , french = [Les]{problèmes}[Les]{problèmes}
+ , ngerman = { {Probleme}{Probleme}
+ , Nominativ = [Die]{Probleme}[Die]{Probleme}
+ , Genitiv = [Der]{Probleme}[Der]{Probleme}
+ , Dativ = [Den]{Problemen}[Den]{Problemen}
+ , Akkusativ = [Die]{Probleme}[Die]{Probleme}
+ }
+ , italian = [I]{problemi}[I]{problemi}
+ , portuguese = [Os]{problemas}[Os]{problemas}
+ , brazilian = [Os]{problemas}[Os]{problemas}
+ , spanish = [Los]{problemas}[Los]{problemas}
+ , schinese = {问题}{问题}
+ , tchinese = {問題}{問題}
+ , japanese = {問題}{問題}
+ , russian = {Проблемы}{Проблемы}
+ }
+ }
+
+\NameTheorem { properties }
+ {
+ , heading = {
+ , english = Properties
+ , french = Propriétés
+ , ngerman = Eigenschaften
+ , italian = Proprietà
+ , portuguese = Propriedades
+ , brazilian = Propriedades
+ , spanish = Propiedades
+ , schinese = 性质
+ , tchinese = 性質
+ , japanese = 性質
+ , russian = Имущества
+ }
+ , crefname = {
+ , english = {properties}{properties}
+ , french = [les]{propriétés}[les]{propriétés}
+ , ngerman = { {Eigenschaften}{Eigenschaften}
+ , Nominativ = [die]{Eigenschaften}[die]{Eigenschaften}
+ , Genitiv = [der]{Eigenschaften}[der]{Eigenschaften}
+ , Dativ = [den]{Eigenschaften}[den]{Eigenschaften}
+ , Akkusativ = [die]{Eigenschaften}[die]{Eigenschaften}
+ }
+ , italian = [le]{proprietà}[le]{proprietà}
+ , portuguese = [as]{propriedades}[as]{propriedades}
+ , brazilian = [as]{propriedades}[as]{propriedades}
+ , spanish = [las]{propiedades}[las]{propiedades}
+ , schinese = {性质}{性质}
+ , tchinese = {性質}{性質}
+ , japanese = {性質}{性質}
+ , russian = {имущества}{имущества}
+ }
+ , Crefname = {
+ , english = {Properties}{Properties}
+ , french = [Les]{propriétés}[Les]{propriétés}
+ , ngerman = { {Eigenschaften}{Eigenschaften}
+ , Nominativ = [Die]{Eigenschaften}[Die]{Eigenschaften}
+ , Genitiv = [Der]{Eigenschaften}[Der]{Eigenschaften}
+ , Dativ = [Den]{Eigenschaften}[Den]{Eigenschaften}
+ , Akkusativ = [Die]{Eigenschaften}[Die]{Eigenschaften}
+ }
+ , italian = [Le]{proprietà}[Le]{proprietà}
+ , portuguese = [As]{propriedades}[As]{propriedades}
+ , brazilian = [As]{propriedades}[As]{propriedades}
+ , spanish = [Las]{propiedades}[Las]{propiedades}
+ , schinese = {性质}{性质}
+ , tchinese = {性質}{性質}
+ , japanese = {性質}{性質}
+ , russian = {Имущества}{Имущества}
+ }
+ }
+
+\NameTheorem { propositions }
+ {
+ , heading = {
+ , english = Propositions
+ , french = Propositions
+ , ngerman = Propositionen
+ , italian = Proposte
+ , portuguese = Proposições
+ , brazilian = Proposições
+ , spanish = Proposiciones
+ , schinese = 命题
+ , tchinese = 命題
+ , japanese = 命題
+ , russian = Предложения
+ }
+ , crefname = {
+ , english = {propositions}{propositions}
+ , french = [les]{propositions}[les]{propositions}
+ , ngerman = { {Propositionen}{Propositionen}
+ , Nominativ = [die]{Propositionen}[die]{Propositionen}
+ , Genitiv = [der]{Propositionen}[der]{Propositionen}
+ , Dativ = [den]{Propositionen}[den]{Propositionen}
+ , Akkusativ = [die]{Propositionen}[die]{Propositionen}
+ }
+ , italian = [le]{proposte}[le]{proposte}
+ , portuguese = [as]{proposições}[as]{proposições}
+ , brazilian = [as]{proposições}[as]{proposições}
+ , spanish = [las]{proposiciones}[las]{proposiciones}
+ , schinese = {命题}{命题}
+ , tchinese = {命題}{命題}
+ , japanese = {命題}{命題}
+ , russian = {предложения}{предложения}
+ }
+ , Crefname = {
+ , english = {Propositions}{Propositions}
+ , french = [Les]{propositions}[Les]{propositions}
+ , ngerman = { {Propositionen}{Propositionen}
+ , Nominativ = [Die]{Propositionen}[Die]{Propositionen}
+ , Genitiv = [Der]{Propositionen}[Der]{Propositionen}
+ , Dativ = [Den]{Propositionen}[Den]{Propositionen}
+ , Akkusativ = [Die]{Propositionen}[Die]{Propositionen}
+ }
+ , italian = [Le]{proposte}[Le]{proposte}
+ , portuguese = [As]{proposições}[As]{proposições}
+ , brazilian = [As]{proposições}[As]{proposições}
+ , spanish = [Las]{proposiciones}[Las]{proposiciones}
+ , schinese = {命题}{命题}
+ , tchinese = {命題}{命題}
+ , japanese = {命題}{命題}
+ , russian = {Предложения}{Предложения}
+ }
+ }
+
+\NameTheorem { questions }
+ {
+ , heading = {
+ , english = Questions
+ , french = Questions
+ , ngerman = Fragen
+ , italian = Domande
+ , portuguese = Perguntas
+ , brazilian = Perguntas
+ , spanish = Preguntas
+ , schinese = 问题
+ , tchinese = 問題
+ , japanese = 問題
+ , russian = Вопросы
+ }
+ , crefname = {
+ , english = {questions}{questions}
+ , french = [les]{questions}[les]{questions}
+ , ngerman = { {Fragen}{Fragen}
+ , Nominativ = [die]{Fragen}[die]{Fragen}
+ , Genitiv = [der]{Fragen}[der]{Fragen}
+ , Dativ = [den]{Fragen}[den]{Fragen}
+ , Akkusativ = [die]{Fragen}[die]{Fragen}
+ }
+ , italian = [le]{domande}[le]{domande}
+ , portuguese = [as]{perguntas}[as]{perguntas}
+ , brazilian = [as]{perguntas}[as]{perguntas}
+ , spanish = [las]{preguntas}[las]{preguntas}
+ , schinese = {问题}{问题}
+ , tchinese = {問題}{問題}
+ , japanese = {問題}{問題}
+ , russian = {вопросы}{вопросы}
+ }
+ , Crefname = {
+ , english = {Questions}{Questions}
+ , french = [Les]{questions}[Les]{questions}
+ , ngerman = { {Fragen}{Fragen}
+ , Nominativ = [Die]{Fragen}[Die]{Fragen}
+ , Genitiv = [Der]{Fragen}[Der]{Fragen}
+ , Dativ = [Den]{Fragen}[Den]{Fragen}
+ , Akkusativ = [Die]{Fragen}[Die]{Fragen}
+ }
+ , italian = [Le]{domande}[Le]{domande}
+ , portuguese = [As]{perguntas}[As]{perguntas}
+ , brazilian = [As]{perguntas}[As]{perguntas}
+ , spanish = [Las]{preguntas}[Las]{preguntas}
+ , schinese = {问题}{问题}
+ , tchinese = {問題}{問題}
+ , japanese = {問題}{問題}
+ , russian = {Вопросы}{Вопросы}
+ }
+ }
+
+\NameTheorem { recalls }
+ {
+ , heading = {
+ , english = Recalls
+ , french = Rappels
+ , ngerman = Erinnerungen
+ , italian = Richiami
+ , portuguese = Recordações
+ , brazilian = Recordações
+ , spanish = Recuerdos
+ , schinese = 回顾
+ , tchinese = 回顧
+ , japanese = 回顧
+ , russian = Напоминания
+ }
+ , crefname = {
+ , english = {recalls}{recalls}
+ , french = [les]{rappels}[les]{rappels}
+ , ngerman = { {Erinnerungen}{Erinnerungen}
+ , Nominativ = [die]{Erinnerungen}[die]{Erinnerungen}
+ , Genitiv = [der]{Erinnerungen}[der]{Erinnerungen}
+ , Dativ = [den]{Erinnerungen}[den]{Erinnerungen}
+ , Akkusativ = [die]{Erinnerungen}[die]{Erinnerungen}
+ }
+ , italian = [i]{richiami}[i]{richiami}
+ , portuguese = [as]{recordações}[as]{recordações}
+ , brazilian = [as]{recordações}[as]{recordações}
+ , spanish = [los]{recuerdos}[los]{recuerdos}
+ , schinese = {回顾}{回顾}
+ , tchinese = {回顧}{回顧}
+ , japanese = {回顧}{回顧}
+ , russian = {напоминания}{напоминания}
+ }
+ , Crefname = {
+ , english = {Recalls}{Recalls}
+ , french = [Les]{rappels}[Les]{rappels}
+ , ngerman = { {Erinnerungen}{Erinnerungen}
+ , Nominativ = [Die]{Erinnerungen}[Die]{Erinnerungen}
+ , Genitiv = [Der]{Erinnerungen}[Der]{Erinnerungen}
+ , Dativ = [Den]{Erinnerungen}[Den]{Erinnerungen}
+ , Akkusativ = [Die]{Erinnerungen}[Die]{Erinnerungen}
+ }
+ , italian = [I]{richiami}[I]{richiami}
+ , portuguese = [As]{recordações}[As]{recordações}
+ , brazilian = [As]{recordações}[As]{recordações}
+ , spanish = [Los]{recuerdos}[Los]{recuerdos}
+ , schinese = {回顾}{回顾}
+ , tchinese = {回顧}{回顧}
+ , japanese = {回顧}{回顧}
+ , russian = {Напоминания}{Напоминания}
+ }
+ }
+
+\NameTheorem { remarks }
+ {
+ , heading = {
+ , english = Remarks
+ , french = Remarques
+ , ngerman = Bemerkungen
+ , italian = Commenti
+ , portuguese = Comentários
+ , brazilian = Comentários
+ , spanish = Comentarios
+ , schinese = 备注
+ , tchinese = 備註
+ , japanese = 注釈
+ , russian = Замечания
+ }
+ , crefname = {
+ , english = {remarks}{remarks}
+ , french = [les]{remarques}[les]{remarques}
+ , ngerman = { {Bemerkungen}{Bemerkungen}
+ , Nominativ = [die]{Bemerkungen}[die]{Bemerkungen}
+ , Genitiv = [der]{Bemerkungen}[der]{Bemerkungen}
+ , Dativ = [den]{Bemerkungen}[den]{Bemerkungen}
+ , Akkusativ = [die]{Bemerkungen}[die]{Bemerkungen}
+ }
+ , italian = [i]{commenti}[i]{commenti}
+ , portuguese = [os]{comentários}[os]{comentários}
+ , brazilian = [os]{comentários}[os]{comentários}
+ , spanish = [los]{comentarios}[los]{comentarios}
+ , schinese = {备注}{备注}
+ , tchinese = {備註}{備註}
+ , japanese = {注釈}{注釈}
+ , russian = {замечания}{замечания}
+ }
+ , Crefname = {
+ , english = {Remarks}{Remarks}
+ , french = [Les]{remarques}[Les]{remarques}
+ , ngerman = { {Bemerkungen}{Bemerkungen}
+ , Nominativ = [Die]{Bemerkungen}[Die]{Bemerkungen}
+ , Genitiv = [Der]{Bemerkungen}[Der]{Bemerkungen}
+ , Dativ = [Den]{Bemerkungen}[Den]{Bemerkungen}
+ , Akkusativ = [Die]{Bemerkungen}[Die]{Bemerkungen}
+ }
+ , italian = [I]{commenti}[I]{commenti}
+ , portuguese = [Os]{comentários}[Os]{comentários}
+ , brazilian = [Os]{comentários}[Os]{comentários}
+ , spanish = [Los]{comentarios}[Los]{comentarios}
+ , schinese = {备注}{备注}
+ , tchinese = {備註}{備註}
+ , japanese = {注釈}{注釈}
+ , russian = {Замечания}{Замечания}
+ }
+ }
+
+\NameTheorem { theorems }
+ {
+ , heading = {
+ , english = Theorems
+ , french = Théorèmes
+ , ngerman = Sätze
+ , italian = Teoremi
+ , portuguese = Teoremas
+ , brazilian = Teoremas
+ , spanish = Teoremas
+ , schinese = 定理
+ , tchinese = 定理
+ , japanese = 定理
+ , russian = Теоремы
+ }
+ , crefname = {
+ , english = {theorems}{theorems}
+ , french = [les]{théorèmes}[les]{théorèmes}
+ , ngerman = { {Sätze}{Sätze}
+ , Nominativ = [die]{Sätze}[die]{Sätze}
+ , Genitiv = [der]{Sätze}[der]{Sätze}
+ , Dativ = [den]{Sätzen}[den]{Sätzen}
+ , Akkusativ = [die]{Sätze}[die]{Sätze}
+ }
+ , italian = [i]{teoremi}[i]{teoremi}
+ , portuguese = [os]{teoremas}[os]{teoremas}
+ , brazilian = [os]{teoremas}[os]{teoremas}
+ , spanish = [los]{teoremas}[los]{teoremas}
+ , schinese = {定理}{定理}
+ , tchinese = {定理}{定理}
+ , japanese = {定理}{定理}
+ , russian = {теоремы}{теоремы}
+ }
+ , Crefname = {
+ , english = {Theorems}{Theorems}
+ , french = [Les]{théorèmes}[Les]{théorèmes}
+ , ngerman = { {Sätze}{Sätze}
+ , Nominativ = [Die]{Sätze}[Die]{Sätze}
+ , Genitiv = [Der]{Sätze}[Der]{Sätze}
+ , Dativ = [Den]{Sätzen}[Den]{Sätzen}
+ , Akkusativ = [Die]{Sätze}[Die]{Sätze}
+ }
+ , italian = [I]{teoremi}[I]{teoremi}
+ , portuguese = [Os]{teoremas}[Os]{teoremas}
+ , brazilian = [Os]{teoremas}[Os]{teoremas}
+ , spanish = [Los]{teoremas}[Los]{teoremas}
+ , schinese = {定理}{定理}
+ , tchinese = {定理}{定理}
+ , japanese = {定理}{定理}
+ , russian = {Теоремы}{Теоремы}
+ }
+ }
diff --git a/macros/latex/contrib/create-theorem/create-theorem.sty b/macros/latex/contrib/create-theorem/code/create-theorem-preset-names.tex
index d8e2ffbc35..9df9c0e274 100644
--- a/macros/latex/contrib/create-theorem/create-theorem.sty
+++ b/macros/latex/contrib/create-theorem/code/create-theorem-preset-names.tex
@@ -1,1179 +1,3 @@
-%%
-%% Copyright (C) 2021-2024 by Jinwen XU
-%% ------------------------------------
-%%
-%% This file 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
-%%
-\NeedsTeXFormat{LaTeX2e}[2022-06-01]
-\ProvidesExplPackage
- {create-theorem}
- {2024/02/20} {}
- {Initializing theorem-like environments with multilingual support}
-
-\keys_define:nn { create-theorem }
- {
- , name-as-context .bool_set:N = \l__crthm_regionalref_bool
- , name-as-context .initial:n = { true }
- , name~as~context .bool_set:N = \l__crthm_regionalref_bool
- , name as context .bool_set:N = \l__crthm_regionalref_bool
- , regionalref .bool_set:N = \l__crthm_regionalref_bool
- , name-as-is .bool_set_inverse:N = \l__crthm_regionalref_bool
- , name~as~is .bool_set_inverse:N = \l__crthm_regionalref_bool
- , name as is .bool_set_inverse:N = \l__crthm_regionalref_bool
- , originalref .bool_set_inverse:N = \l__crthm_regionalref_bool
- , name-in-link .bool_set:N = \l__crthm_nameinlink_bool
- , name-in-link .initial:n = { false }
- , name~in~link .bool_set:N = \l__crthm_nameinlink_bool
- , name in link .bool_set:N = \l__crthm_nameinlink_bool
- , no-preset-names .bool_set_inverse:N = \l__crthm_presetname_bool
- , no-preset-names .initial:n = { false }
- , no~preset~names .bool_set_inverse:N = \l__crthm_presetname_bool
- , no preset names .bool_set_inverse:N = \l__crthm_presetname_bool
- , unknown .code:n = {}
- }
-\ProcessKeyOptions [ create-theorem ]
-
-\msg_new:nnn { create-theorem }
- { no-backend }
- { A~backend~(such~as~"amsthm")~~is~needed~to~provide~the~commands~"\iow_char:N \\newtheorem(*)"~and~"\iow_char:N \\theoremstyle"~with~the~usual~behaviour. }
-\cs_if_exist:cF { theoremstyle }
- {
- \msg_error:nn { create-theorem } { no-backend }
- }
-
-\bool_if:NT \l__crthm_nameinlink_bool
- {
- \PassOptionsToPackage { nameinlink } { cleveref }
- }
-\RequirePackage { crefthe }
-\RequirePackage { amsfonts }
-
-\IfPackageLoadedTF { thmtools }
- {
- \cs_gset_eq:NN \crthm_newtheorem:w \thmt@original@newtheorem
- }
- {
- \cs_gset_eq:NN \crthm_newtheorem:w \newtheorem
- }
-
-
-% Users should consider appending their languages to this list as needed,
-% otherwise the naming functionality may not work in monolingual documents.
-\clist_new:N \g_crthm_supported_language_clist
-\clist_gset:Nn \g_crthm_supported_language_clist
- {
- english ,
- french ,
- ngerman ,
- italian ,
- portuguese ,
- brazilian ,
- spanish ,
- schinese ,
- tchinese ,
- japanese ,
- russian ,
- }
-
-\cs_new:Nn \crthm_add_to_language_list:n
- {
- \clist_gput_right:Nn \g_crthm_supported_language_clist { #1 }
- \clist_gremove_duplicates:N \g_crthm_supported_language_clist
- }
-
-\NewDocumentCommand \CreateTheoremAddLanguage { m }
- {
- \crthm_add_to_language_list:n { #1 }
- }
-
-
-\tl_new:N \l__crthm_current_env_tl
-
-\keys_define:nn { create-theorem-naming }
- {
- , heading .code:n = { \crthm_set_name_heading:en { \l__crthm_current_env_tl } { #1 } }
- , heading .value_required:n = true
- , crefname .code:n = { \crthm_set_name_crefname:en { \l__crthm_current_env_tl } { #1 } }
- , crefname .value_required:n = true
- , Crefname .code:n = { \crthm_set_name_Crefname:en { \l__crthm_current_env_tl } { #1 } }
- , Crefname .value_required:n = true
- , heading~style .code:n = { \crthm_set_name_style_heading:en { \l__crthm_current_env_tl } { #1 } }
- , heading~style .value_required:n = true
- , heading-style .meta:n = { heading~style = { #1 } }
- , heading-style .value_required:n = true
- , heading style .meta:n = { heading~style = { #1 } }
- , heading style .value_required:n = true
- , crefname~style .code:n = { \crthm_set_name_style_crefname:en { \l__crthm_current_env_tl } { #1 } }
- , crefname~style .value_required:n = true
- , crefname-style .meta:n = { crefname~style = { #1 } }
- , crefname-style .value_required:n = true
- , crefname style .meta:n = { crefname~style = { #1 } }
- , crefname style .value_required:n = true
- , Crefname~style .code:n = { \crthm_set_name_style_Crefname:en { \l__crthm_current_env_tl } { #1 } }
- , Crefname~style .value_required:n = true
- , Crefname-style .meta:n = { Crefname~style = { #1 } }
- , Crefname-style .value_required:n = true
- , Crefname style .meta:n = { Crefname~style = { #1 } }
- , Crefname style .value_required:n = true
- , numbering~style .code:n = { \crthm_set_name_style_numbering:en { \l__crthm_current_env_tl } { #1 } }
- , numbering~style .value_required:n = true
- , numbering-style .meta:n = { numbering~style = { #1 } }
- , numbering-style .value_required:n = true
- , numbering style .meta:n = { numbering~style = { #1 } }
- , numbering style .value_required:n = true
- , use~name .code:n = { \crthm_set_name_with_existed_names:en { \l__crthm_current_env_tl } { #1 } }
- , use~name .value_required:n = true
- , use-name .meta:n = { use~name = { #1 } }
- , use-name .value_required:n = true
- , use name .meta:n = { use~name = { #1 } }
- , use name .value_required:n = true
- , combined .meta:n = { use~name = { #1 } }
- , combined .value_required:n = true
- , unknown .code:n = {}
- }
-
-\cs_new:Nn \__crthm_set_generic:nnn
- {
- \str_if_in:nnTF { #2 } { = }
- {% key-value definition
- \keyval_parse:nnn
- {}
- { \use:c { __crthm_ #3 :nnn } { #1 } }
- { #2 }
- }
- {% simple definition
- \clist_map_inline:Nn \g_crthm_supported_language_clist
- {
- \use:c { __crthm_ #3 :nnn } { #1 } { ##1 } { #2 }
- }
- }
- }
-
-\cs_new:Nn \crthm_set_name_heading:nn
- % #1 = env name
- % #2 = the settings
- {
- \__crthm_set_generic:nnn { #1 } { #2 } { set_name_heading }
- }
-\cs_generate_variant:Nn \crthm_set_name_heading:nn { en }
-
-\cs_new:Nn \__crthm_set_name_heading:nnn
- % #1 = env name
- % #2 = language name
- % #3 = corresponding heading name
- {
- \tl_if_exist:cF { g_crthm_style_heading_ #1 _ #2 _tl }
- {
- \tl_new:c { g_crthm_style_heading_ #1 _ #2 _tl }
- }
- \tl_gset:cn { g_crthm_name_heading_ #1 _ #2 _tl } { \tl_use:c { g_crthm_style_heading_ #1 _ #2 _tl } { #3 } }
- }
-
-\cs_new:Nn \crthm_set_name_crefname:nn
- % #1 = env name
- % #2 = the settings
- {
- \crthm_set_name_crefname_generic:nnn { #1 } { #2 } { c }
- }
-\cs_generate_variant:Nn \crthm_set_name_crefname:nn { en }
-
-\cs_new:Nn \crthm_set_name_Crefname:nn
- % #1 = env name
- % #2 = the settings
- {
- \crthm_set_name_crefname_generic:nnn { #1 } { #2 } { C }
- }
-\cs_generate_variant:Nn \crthm_set_name_Crefname:nn { en }
-
-\cs_new:Nn \crthm_set_name_crefname_generic:nnn
- % #1 = env name
- % #2 = the settings
- % #3 = c or C
- {
- \__crthm_set_generic:nnn { #1 } { #2 } { set_name_ #3 refname }
- }
-
-\cs_new:Nn \__crthm_set_name_crefname:nnn
- % #1 = env name
- % #2 = language name
- % #3 = corresponding crefname {..}{..} or [..]{..}[..]{..}, or a set of crefnames for different variants
- {
- \str_if_in:nnTF { #3 } { = }
- {
- \crefthe_parse_variant:n { #3 }
- \crefthe_pass_variant_to:n { \__crthm_set_name_crefname_generic:w { #1 } { #2 } } { c }
- }
- {
- \__crthm_set_name_crefname_generic:w { #1 } { #2 } #3 { c }
- }
- }
-
-\cs_new:Nn \__crthm_set_name_Crefname:nnn
- % #1 = env name
- % #2 = language name
- % #3 = corresponding Crefname {..}{..} or [..]{..}[..]{..}, or a set of crefnames for different variants
- {
- \str_if_in:nnTF { #3 } { = }
- {
- \crefthe_parse_variant:n { #3 }
- \crefthe_pass_variant_to:n { \__crthm_set_name_crefname_generic:w { #1 } { #2 } } { C }
- }
- {
- \__crthm_set_name_crefname_generic:w { #1 } { #2 } #3 { C }
- }
- }
-
-\NewExpandableDocumentCommand \__crthm_set_name_crefname_generic:w { m m O{} m O{} m m }
- % #1 = env name
- % #2 = language name
- % #7 = c or C
- {
- % It is assumed that when #3 is empty, so is #5
- \tl_if_blank:eTF { #3 }
- {
- \tl_gset:cn { g_crthm_core_name_ #7 ref_article_singular_ #1 _ #2 _tl } { }
- \tl_gset:cn { g_crthm_core_name_ #7 ref_article_plural_ #1 _ #2 _tl } { }
- \tl_gset:cn { g_crthm_name_ #7 ref_article_singular_ #1 _ #2 _tl } { \nobreak \crefthemark { \crefthe_retrieve_space: } \nobreak }
- \tl_gset:cn { g_crthm_name_ #7 ref_article_plural_ #1 _ #2 _tl } { \nobreak \crefthemark { \crefthe_retrieve_space: } \nobreak }
- }
- {
- \tl_gset:cn { g_crthm_core_name_ #7 ref_article_singular_ #1 _ #2 _tl } { #3 }
- \tl_gset:cn { g_crthm_core_name_ #7 ref_article_plural_ #1 _ #2 _tl } { #5 }
- \tl_gset:cn { g_crthm_name_ #7 ref_article_singular_ #1 _ #2 _tl } { \crefthemark { #3 } }
- \tl_gset:cn { g_crthm_name_ #7 ref_article_plural_ #1 _ #2 _tl } { \crefthemark { #5 } }
- }
-
- \tl_if_exist:cF { g_crthm_style_ #7 refname_ #1 _ #2 _tl }
- {
- \tl_new:c { g_crthm_style_ #7 refname_ #1 _ #2 _tl }
- }
-
- \tl_if_blank:eTF { #4 }
- {
- \tl_gset:cn { g_crthm_name_ #7 ref_singular_ #1 _ #2 _tl } { \nobreak \crefthe_retrieve_space: \nobreak }
- }
- {
- \tl_gset:cn { g_crthm_name_ #7 ref_singular_ #1 _ #2 _tl } { \tl_use:c { g_crthm_style_ #7 refname_ #1 _ #2 _tl } { #4 } }
- }
-
- \tl_if_blank:eTF { #6 }
- {
- \tl_gset:cn { g_crthm_name_ #7 ref_plural_ #1 _ #2 _tl } { \nobreak \crefthe_retrieve_space: \nobreak }
- }
- {
- \tl_gset:cn { g_crthm_name_ #7 ref_plural_ #1 _ #2 _tl } { \tl_use:c { g_crthm_style_ #7 refname_ #1 _ #2 _tl } { #6 } }
- }
-
- \bool_if:NTF \l__crthm_regionalref_bool
- {% "regionalref" mode
- \use:c { __crthm_set_name_ #7 refname_do:nnn } { #1 _crthm_regional } { #1 } { \languagename }
- }
- {% "originalref" mode
- \tl_if_exist:cF { c@ #1 _crthm_original_ #2 }
- {
- \crthm_counter_alias:nn { #1 _crthm_original_ #2 } { #1 }
- \hook_gput_code:nnn { begindocument/before } { crthm }
- {
- \cs_set_eq:cc { the #1 _crthm_original_ #2 } { the #1 }
- }
- }
- \use:c { __crthm_set_name_ #7 refname_do:nnn } { #1 _crthm_original_ #2 } { #1 } { #2 }
- }
- }
-
-\cs_new:Nn \__crthm_set_name_crefname_do:nnn
- % #1 = counter name
- % #2 = env name
- % #3 = language name
- {
- \__crthm_set_name_crefname_do_generic:nnnn { #1 } { #2 } { #3 } { c }
- }
-
-\cs_new:Nn \__crthm_set_name_Crefname_do:nnn
- % #1 = counter name
- % #2 = env name
- % #3 = language name
- {
- \__crthm_set_name_crefname_do_generic:nnnn { #1 } { #2 } { #3 } { C }
- }
-
-\seq_new:N \g__crthm_format_already_set_seq
-
-\cs_new:Nn \__crthm_set_name_crefname_do_generic:nnnn
- % #1 = counter name
- % #2 = env name
- % #3 = language name
- % #4 = c or C
- {
- \tl_gset:cn { #4 ref@ #1 @name }
- {
- \tl_use:c { g_crthm_name_ #4 ref_article_singular_ #2 _ #3 _tl }
- \bool_if:NTF \g__crefthe_has_prep_bool
- {
- \tl_use:c { g_crthm_name_ cref_singular_ #2 _ #3 _tl }
- }
- {
- \tl_use:c { g_crthm_name_ #4 ref_singular_ #2 _ #3 _tl }
- }
- }
- \tl_gset:cn { #4 ref@ #1 @name@plural }
- { % Use the definite article of the original language,
- % with name's casing depends on the preposition and the article
- \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl }
- \bool_if:NTF \g__crefthe_has_prep_bool
- {
- \tl_use:c { g_crthm_name_ cref_plural_ #2 _ #3 _tl }
- }
- {
- \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl }
- }
- }
-
- \seq_if_in:NnF \g__crthm_format_already_set_seq { #2 _ #3 }
- {
- \@crefdefineallformats { #1 }
- \seq_gput_right:Nn \g__crthm_format_already_set_seq { #2 _ #3 }
- }
-
- \tl_if_exist:cF { g_crthm_number_style_ #2 _tl }
- {
- \tl_new:c { g_crthm_number_style_ #2 _tl }
- }
-
- % Redefine the cref formats so that definite articles are placed outside the hyperlinks
- \crthm_modify_format_according_to_nameinlink:nnn
- { \crthm_define_format_short_version:nnnn { #2 } { #4 ref@ #1 @format } }
- { \tl_use:c { g_crthm_name_ #4 ref_article_singular_ #2 _ #3 _tl } }
- {
- \bool_if:NTF \g__crefthe_has_prep_bool
- {
- \tl_use:c { g_crthm_name_ cref_singular_ #2 _ #3 _tl }
- }
- {
- \tl_use:c { g_crthm_name_ #4 ref_singular_ #2 _ #3 _tl }
- }
- }
- \crthm_modify_format_according_to_nameinlink:nnn
- { \crthm_define_format_short_version:nnnn { #2 } { #4 ref@ #1 @format@first } }
- { \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl } }
- {
- \bool_if:NTF \g__crefthe_has_prep_bool
- {
- \tl_use:c { g_crthm_name_ cref_plural_ #2 _ #3 _tl }
- }
- {
- \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl }
- }
- }
- \cs_set:cpn { #4 ref@ #1 @format@second } ##1##2##3
- {
- \crefpairconjunction
- \group_begin:
- \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
- \group_end:
- }
- \cs_set:cpn { #4 ref@ #1 @format@middle } ##1##2##3
- {
- \crefmiddleconjunction
- \group_begin:
- \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
- \group_end:
- }
- \cs_set:cpn { #4 ref@ #1 @format@last } ##1##2##3
- {
- \creflastconjunction
- \group_begin:
- \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
- \group_end:
- }
-
- \crthm_modify_format_according_to_nameinlink:nnn
- { \crthm_define_format_long_version:nnnn { #2 } { #4 refrange@ #1 @format } }
- { \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl } }
- {
- \bool_if:NTF \g__crefthe_has_prep_bool
- {
- \tl_use:c { g_crthm_name_ cref_plural_ #2 _ #3 _tl }
- }
- {
- \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl }
- }
- }
- \crthm_modify_format_according_to_nameinlink:nnn
- { \crthm_define_format_long_version:nnnn { #2 } { #4 refrange@ #1 @format@first } }
- { \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl } }
- {
- \bool_if:NTF \g__crefthe_has_prep_bool
- {
- \tl_use:c { g_crthm_name_ cref_plural_ #2 _ #3 _tl }
- }
- {
- \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl }
- }
- }
- \cs_set:cpn { #4 refrange@ #1 @format@second } ##1##2##3##4##5##6
- {
- \crefpairconjunction
- \group_begin:
- \crthm_format_long_generic:nnnnnn
- { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } }
- { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##2 } }
- { ##3 } { ##4 } { ##5 } { ##6 }
- \group_end:
- }
- \cs_set:cpn { #4 refrange@ #1 @format@middle } ##1##2##3##4##5##6
- {
- \crefmiddleconjunction
- \group_begin:
- \crthm_format_long_generic:nnnnnn
- { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } }
- { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##2 } }
- { ##3 } { ##4 } { ##5 } { ##6 }
- \group_end:
- }
- \cs_set:cpn { #4 refrange@ #1 @format@last } ##1##2##3##4##5##6
- {
- \creflastconjunction
- \group_begin:
- \crthm_format_long_generic:nnnnnn
- { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } }
- { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##2 } }
- { ##3 } { ##4 } { ##5 } { ##6 }
- \group_end:
- }
-
- % Redefine the labelcref formats to match the numbering format
- \cs_set:cpn { labelcref@ #1 @format } ##1##2##3
- {
- \group_begin:
- \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
- \group_end:
- }
- \cs_set_eq:cc { labelcref@ #1 @format@first } { labelcref@ #1 @format }
- \cs_set:cpn { labelcref@ #1 @format@second } ##1##2##3
- {
- \crefpairconjunction
- \group_begin:
- \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
- \group_end:
- }
- \cs_set:cpn { labelcref@ #1 @format@middle } ##1##2##3
- {
- \crefmiddleconjunction
- \group_begin:
- \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
- \group_end:
- }
- \cs_set:cpn { labelcref@ #1 @format@last } ##1##2##3
- {
- \creflastconjunction
- \group_begin:
- \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
- \group_end:
- }
-
- \crthm_define_format_long_version:nnnn { #2 } { labelcrefrange@ #1 @format } {} {}
- \crthm_define_format_long_version:nnnn { #2 } { labelcrefrange@ #1 @format@first } {} {}
- \cs_set:cpn { labelcrefrange@ #1 @format@second } ##1##2##3##4##5##6
- {
- \crefpairconjunction
- \group_begin:
- \crthm_format_long_generic:nnnnnn
- { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } }
- { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##2 } }
- { ##3 } { ##4 } { ##5 } { ##6 }
- \group_end:
- }
- \cs_set:cpn { labelcrefrange@ #1 @format@middle } ##1##2##3##4##5##6
- {
- \crefmiddleconjunction
- \group_begin:
- \crthm_format_long_generic:nnnnnn
- { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } }
- { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##2 } }
- { ##3 } { ##4 } { ##5 } { ##6 }
- \group_end:
- }
- \cs_set:cpn { labelcrefrange@ #1 @format@last } ##1##2##3##4##5##6
- {
- \creflastconjunction
- \group_begin:
- \crthm_format_long_generic:nnnnnn
- { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } }
- { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##2 } }
- { ##3 } { ##4 } { ##5 } { ##6 }
- \group_end:
- }
- }
-
-\cs_new:Nn \crthm_modify_format_according_to_nameinlink:nnn
- % #1 = the macro (and argument) to be used
- % #2 = content always before the hyperlink beginning mark
- % #3 = content before or after the hyperlink beginning mark, depending on whether nameinlink=true
- {
- \bool_if:NTF \l__crthm_nameinlink_bool
- {
- #1 { #2 } { #3 }
- }
- {
- #1 { #2 #3 \nobreakspace } { }
- }
- }
-
-\cs_new:Nn \crthm_define_format_short_version:nnnn
- % #1 = name of the environment
- % #2 = name of the format command
- % #3 = content before the hyperlink beginning mark
- % #4 = content after the hyperlink beginning mark
- {
- \cs_if_exist:cF { crthm_format_ #2 :nnn }
- {
- \cs_new:cn { crthm_format_ #2 :nnn }
- {
- { #3 } ##2 { #4 }
- \tl_if_blank:nF { #4 } { \nobreakspace }
- { \tl_use:c { g_crthm_number_style_ #1 _tl } { ##1 } } ##3
- }
- \cs_set_eq:cc { #2 } { crthm_format_ #2 :nnn }
- }
- }
-\cs_new:Nn \crthm_define_format_long_version:nnnn
- % #1 = name of the environment
- % #2 = name of the format command
- % #3 = content before the hyperlink beginning mark
- % #4 = content after the hyperlink beginning mark
- {
- \cs_if_exist:cF { crthm_format_ #2 :nnnnnn }
- {
- \cs_new:cn { crthm_format_ #2 :nnnnnn }
- {
- { #3 } ##3 { #4 }
- \tl_if_blank:nF { #4 } { \nobreakspace } \crefrangepreconjunction
- { \tl_use:c { g_crthm_number_style_ #1 _tl } { ##1 } }
- ##4 \crefrangeconjunction
- ##5 { \tl_use:c { g_crthm_number_style_ #1 _tl } { ##2 } } ##6
- \crefrangepostconjunction
- }
- \cs_set_eq:cc { #2 } { crthm_format_ #2 :nnnnnn }
- }
- }
-
-\cs_new:Nn \crthm_format_short_generic:nnn
- {
- #2 { #1 } #3
- }
-\cs_new:Nn \crthm_format_long_generic:nnnnnn
- {
- \crefrangepreconjunction
- #3 { #1 } #4
- \crefrangeconjunction
- #5 { #2 } #6
- \crefrangepostconjunction
- }
-
-
-\cs_new:Nn \crthm_set_name_style_heading:nn
- % #1 = env name
- % #2 = the settings
- {
- \__crthm_set_generic:nnn { #1 } { #2 } { set_name_style_heading }
- }
-\cs_generate_variant:Nn \crthm_set_name_style_heading:nn { en }
-
-\cs_new:Nn \__crthm_set_name_style_heading:nnn
- % #1 = env name
- % #2 = language name
- % #3 = corresponding heading style
- {
- \tl_gset:cn { g_crthm_style_heading_ #1 _ #2 _tl } { \normalfont #3 }
- }
-
-\cs_new:Nn \crthm_set_name_style_crefname:nn
- % #1 = env name
- % #2 = the settings
- {
- \__crthm_set_generic:nnn { #1 } { #2 } { set_name_style_crefname }
- }
-\cs_generate_variant:Nn \crthm_set_name_style_crefname:nn { en }
-
-\cs_new:Nn \__crthm_set_name_style_crefname:nnn
- % #1 = env name
- % #2 = language name
- % #3 = corresponding crefname style
- {
- \tl_gset:cn { g_crthm_style_crefname_ #1 _ #2 _tl } { \normalfont #3 }
- }
-
-\cs_new:Nn \crthm_set_name_style_Crefname:nn
- % #1 = env name
- % #2 = the settings
- {
- \__crthm_set_generic:nnn { #1 } { #2 } { set_name_style_Crefname }
- }
-\cs_generate_variant:Nn \crthm_set_name_style_Crefname:nn { en }
-
-\cs_new:Nn \__crthm_set_name_style_Crefname:nnn
- % #1 = env name
- % #2 = language name
- % #3 = corresponding Crefname style
- {
- \tl_gset:cn { g_crthm_style_Crefname_ #1 _ #2 _tl } { \normalfont #3 }
- }
-
-\cs_new:Nn \crthm_set_name_style_numbering:nn
- % #1 = env name
- % #2 = the settings
- {
- \__crthm_set_generic:nnn { #1 } { #2 } { set_name_style_numbering }
- }
-\cs_generate_variant:Nn \crthm_set_name_style_numbering:nn { en }
-
-\cs_new:Nn \__crthm_set_name_style_numbering:nnn
- % #1 = env name
- % #2 = language name
- % #3 = corresponding numbering style
- {
- \tl_gset:cn { g_crthm_number_style_ #1 _tl } { \normalfont #3 }
- }
-
-
-\tl_new:N \g_crthm_combined_name_sep_tl
-\tl_gset:Nn \g_crthm_combined_name_sep_tl { - }
-
-\cs_new:Nn \crthm_set_name_with_existed_names:nn
- % #1 = env name
- % #2 = list of existed environments
- {
- \clist_map_inline:Nn \g_crthm_supported_language_clist
- { % ##1 = language name
- \seq_gclear_new:c { g_crthm_name_heading_ #1 _ ##1 _seq }
- \seq_gclear_new:c { g_crthm_name_cref_article_singular_ #1 _ ##1 _seq }
- \seq_gclear_new:c { g_crthm_name_cref_article_plural_ #1 _ ##1 _seq }
- \seq_gclear_new:c { g_crthm_name_cref_singular_ #1 _ ##1 _seq }
- \seq_gclear_new:c { g_crthm_name_cref_plural_ #1 _ ##1 _seq }
- \seq_gclear_new:c { g_crthm_name_Cref_article_singular_ #1 _ ##1 _seq }
- \seq_gclear_new:c { g_crthm_name_Cref_article_plural_ #1 _ ##1 _seq }
- \seq_gclear_new:c { g_crthm_name_Cref_singular_ #1 _ ##1 _seq }
- \seq_gclear_new:c { g_crthm_name_Cref_plural_ #1 _ ##1 _seq }
- \bool_set_true:N \l_tmpa_bool
- \regex_split:nnN { \s* ; \s* } { #2 } { \l_tmpa_seq }
- \seq_map_inline:Nn \l_tmpa_seq
- { % ####1 = existed environments
- % Here we use the definite article of the last environment as that of the combined environment
- % Uncomment the lines below if you wish to use the definite article of the first environment
- % \bool_if:NT \l_tmpa_bool
- % {
- \tl_gset_eq:cc { g_crthm_saved_name_cref_article_singular_ #1 _ ##1 _tl } { g_crthm_core_name_cref_article_singular_ ####1 _ ##1 _tl }
- \tl_gset_eq:cc { g_crthm_saved_name_cref_article_plural_ #1 _ ##1 _tl } { g_crthm_core_name_cref_article_plural_ ####1 _ ##1 _tl }
- \tl_gset_eq:cc { g_crthm_saved_name_Cref_article_singular_ #1 _ ##1 _tl } { g_crthm_core_name_Cref_article_singular_ ####1 _ ##1 _tl }
- \tl_gset_eq:cc { g_crthm_saved_name_Cref_article_plural_ #1 _ ##1 _tl } { g_crthm_core_name_Cref_article_plural_ ####1 _ ##1 _tl }
- % \bool_set_false:N \l_tmpa_bool
- % }
- \seq_gput_right:cn { g_crthm_name_heading_ #1 _ ##1 _seq } { \tl_use:c { g_crthm_name_heading_ ####1 _ ##1 _tl } }
- \seq_gput_right:cn { g_crthm_name_cref_singular_ #1 _ ##1 _seq } { \tl_use:c { g_crthm_name_cref_singular_ ####1 _ ##1 _tl } }
- \seq_gput_right:cn { g_crthm_name_cref_plural_ #1 _ ##1 _seq } { \tl_use:c { g_crthm_name_cref_plural_ ####1 _ ##1 _tl } }
- \seq_gput_right:cn { g_crthm_name_Cref_singular_ #1 _ ##1 _seq } { \tl_use:c { g_crthm_name_Cref_singular_ ####1 _ ##1 _tl } }
- \seq_gput_right:cn { g_crthm_name_Cref_plural_ #1 _ ##1 _seq } { \tl_use:c { g_crthm_name_Cref_plural_ ####1 _ ##1 _tl } }
- % set the numbering style to be the same as the last environment
- \tl_gset_eq:cc { g_crthm_number_style_ #1 _tl } { g_crthm_number_style_ ####1 _tl }
- }
- % set heading name for the combined environment
- \tl_gset:cn { g_crthm_name_heading_ #1 _ ##1 _tl } { \seq_use:cn { g_crthm_name_heading_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
- % set crefname for the combined environment
- \tl_if_empty:cTF { g_crthm_saved_name_cref_article_singular_ #1 _ ##1 _tl }
- {
- \__crthm_set_name_crefname:nnn { #1 } { ##1 }
- {
- { \seq_use:cn { g_crthm_name_cref_singular_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
- { \seq_use:cn { g_crthm_name_cref_plural_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
- }
- }
- {
- \__crthm_set_name_crefname:nnn { #1 } { ##1 }
- {
- [ \tl_use:c { g_crthm_saved_name_cref_article_singular_ #1 _ ##1 _tl } ]
- { \seq_use:cn { g_crthm_name_cref_singular_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
- [ \tl_use:c { g_crthm_saved_name_cref_article_plural_ #1 _ ##1 _tl } ]
- { \seq_use:cn { g_crthm_name_cref_plural_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
- }
- }
- % set Crefname for the combined environment
- \tl_if_empty:cTF { g_crthm_saved_name_Cref_article_singular_ #1 _ ##1 _tl }
- {
- \__crthm_set_name_Crefname:nnn { #1 } { ##1 }
- {
- { \seq_use:cn { g_crthm_name_Cref_singular_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
- { \seq_use:cn { g_crthm_name_Cref_plural_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
- }
- }
- {
- \__crthm_set_name_Crefname:nnn { #1 } { ##1 }
- {
- [ \tl_use:c { g_crthm_saved_name_Cref_article_singular_ #1 _ ##1 _tl } ]
- { \seq_use:cn { g_crthm_name_Cref_singular_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
- [ \tl_use:c { g_crthm_saved_name_Cref_article_plural_ #1 _ ##1 _tl } ]
- { \seq_use:cn { g_crthm_name_Cref_plural_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
- }
- }
- }
- }
-\cs_generate_variant:Nn \crthm_set_name_with_existed_names:nn { en }
-
-
-\NewDocumentCommand \NameTheorem { m m }
- {
- \crthm_name_theorem:nn { #1 } { #2 }
- }
-
-\cs_new:Nn \crthm_name_theorem:nn
- {
- \tl_set:Nn \l__crthm_current_env_tl { #1 }
- \cs_if_exist:cF { c@ #1 }
- {
- \newcounter { #1 }
- }
- \keys_set:nn { create-theorem-naming } { #2 }
- }
-
-
-\tl_new:N \l__crthm_current_lang_tl
-
-\keys_define:nn { create-theorem-naming-per-language }
- {
- , heading .code:n = { \crthm_set_name_per_lang_heading:en { \l__crthm_current_lang_tl } { #1 } }
- , heading .value_required:n = true
- , crefname .code:n = { \crthm_set_name_per_lang_crefname:en { \l__crthm_current_lang_tl } { #1 } }
- , crefname .value_required:n = true
- , Crefname .code:n = { \crthm_set_name_per_lang_Crefname:en { \l__crthm_current_lang_tl } { #1 } }
- , Crefname .value_required:n = true
- , unknown .code:n = {}
- }
-
-\cs_new:Nn \crthm_set_name_per_lang_heading:nn
- % #1 = language name
- % #2 = the settings
- {
- \keyval_parse:nnn
- {}
- { \use:c { __crthm_set_name_per_lang_heading:nnn } { #1 } }
- { #2 }
- }
-\cs_generate_variant:Nn \crthm_set_name_per_lang_heading:nn { en }
-
-\cs_new:Nn \__crthm_set_name_per_lang_heading:nnn
- % #1 = language name
- % #2 = env name
- % #3 = corresponding heading name
- {
- \tl_if_exist:cF { g_crthm_style_heading_ #2 _ #1 _tl }
- {
- \tl_new:c { g_crthm_style_heading_ #2 _ #1 _tl }
- }
- \tl_gset:cn { g_crthm_name_heading_ #2 _ #1 _tl } { \tl_use:c { g_crthm_style_heading_ #2 _ #1 _tl } { #3 } }
- }
-
-\cs_new:Nn \crthm_set_name_per_lang_crefname:nn
- % #1 = language name
- % #2 = the settings
- {
- \crthm_set_name_per_lang_crefname_generic:nnn { #1 } { #2 } { c }
- }
-\cs_generate_variant:Nn \crthm_set_name_per_lang_crefname:nn { en }
-
-\cs_new:Nn \crthm_set_name_per_lang_Crefname:nn
- % #1 = language name
- % #2 = the settings
- {
- \crthm_set_name_per_lang_crefname_generic:nnn { #1 } { #2 } { C }
- }
-\cs_generate_variant:Nn \crthm_set_name_per_lang_Crefname:nn { en }
-
-\cs_new:Nn \crthm_set_name_per_lang_crefname_generic:nnn
- % #1 = language name
- % #2 = the settings
- % #3 = c or C
- {
- \keyval_parse:nnn
- {}
- { \use:c { __crthm_set_name_per_lang_ #3 refname:nnn } { #1 } }
- { #2 }
- }
-
-\cs_new:Nn \__crthm_set_name_per_lang_crefname:nnn
- % #1 = language name
- % #2 = env name
- % #3 = corresponding crefname {..}{..} or [..]{..}[..]{..}, or a set of crefnames for different variants
- {
- \str_if_in:nnTF { #3 } { = }
- {
- \crefthe_parse_variant:n { #3 }
- \crefthe_pass_variant_to:n { \__crthm_set_name_crefname_generic:w { #2 } { #1 } } { c }
- }
- {
- \__crthm_set_name_crefname_generic:w { #2 } { #1 } #3 { c }
- }
- }
-
-\cs_new:Nn \__crthm_set_name_per_lang_Crefname:nnn
- % #1 = language name
- % #2 = env name
- % #3 = corresponding Crefname {..}{..} or [..]{..}[..]{..}, or a set of crefnames for different variants
- {
- \str_if_in:nnTF { #3 } { = }
- {
- \crefthe_parse_variant:n { #3 }
- \crefthe_pass_variant_to:n { \__crthm_set_name_crefname_generic:w { #2 } { #1 } } { C }
- }
- {
- \__crthm_set_name_crefname_generic:w { #2 } { #1 } #3 { C }
- }
- }
-
-
-\NewDocumentCommand \NameTheorems { m m }
- {
- \crthm_name_theorems:nn { #1 } { #2 }
- }
-
-\cs_new:Nn \crthm_name_theorems:nn
- {
- \tl_set:Nn \l__crthm_current_lang_tl { #1 }
- \crthm_add_to_language_list:n { #1 }
- \keys_set:nn { create-theorem-naming-per-language } { #2 }
- }
-
-
-\tl_const:Nn \c__crthm_qedsymbol_tl { \Box }
-\bool_new:N \l__crthm_creating_qed_bool
-\tl_new:N \l__crthm_creating_qed_tl
-\bool_new:N \l__crthm_creating_apply_style_bool
-\tl_new:N \l__crthm_creating_apply_style_tl
-\bool_new:N \l__crthm_creating_numberless_bool
-\bool_new:N \l__crthm_creating_create_starred_bool
-\bool_new:N \l__crthm_creating_copy_existed_bool
-\tl_new:N \l__crthm_creating_copy_existed_tl
-\keys_define:nn { create-theorem-creating }
- {
- , name .code:n = { \exp_args:Ne \NameTheorem { \l__crthm_current_env_tl } { #1 } }
- , name .value_required:n = true
- , name~style .code:n = { \exp_args:Ne \NameTheorem { \l__crthm_current_env_tl } { #1 } }
- , name~style .value_required:n = true
- , name-style .meta:n = { name~style = { #1 } }
- , name-style .value_required:n = true
- , name style .meta:n = { name~style = { #1 } }
- , name style .value_required:n = true
- , use~name .code:n = { \exp_args:Ne \NameTheorem { \l__crthm_current_env_tl } { use~name = #1 } }
- , use~name .value_required:n = true
- , use-name .meta:n = { use~name = { #1 } }
- , use-name .value_required:n = true
- , use name .meta:n = { use~name = { #1 } }
- , use name .value_required:n = true
- , combined .meta:n = { use~name = { #1 } }
- , combined .value_required:n = true
- , style .code:n = { \bool_set_true:N \l__crthm_creating_apply_style_bool
- \tl_set:Nn \l__crthm_creating_apply_style_tl { #1 } }
- , style .value_required:n = true
- , apply~style .meta:n = { style = { #1 } }
- , apply~style .value_required:n = true
- , apply-style .meta:n = { style = { #1 } }
- , apply-style .value_required:n = true
- , apply style .meta:n = { style = { #1 } }
- , apply style .value_required:n = true
- , qed .code:n = { \bool_set_true:N \l__crthm_creating_qed_bool
- \tl_set:Nn \l__crthm_creating_qed_tl { #1 } }
- , qed .default:n = \c__crthm_qedsymbol_tl
- , qed~symbol .meta:n = { qed = #1 }
- , qed~symbol .default:n = \c__crthm_qedsymbol_tl
- , qed-symbol .meta:n = { qed = #1 }
- , qed-symbol .default:n = \c__crthm_qedsymbol_tl
- , qed symbol .meta:n = { qed = #1 }
- , qed symbol .default:n = \c__crthm_qedsymbol_tl
- , numberless .bool_set:N = \l__crthm_creating_numberless_bool
- , create~starred~version .bool_set:N = \l__crthm_creating_create_starred_bool
- , create-starred-version .meta:n = { create~starred~version }
- , create starred version .meta:n = { create~starred~version }
- , create~numberless~version .meta:n = { create~starred~version }
- , create-numberless-version .meta:n = { create~starred~version }
- , create numberless version .meta:n = { create~starred~version }
- , copy~existed .code:n = { \bool_set_true:N \l__crthm_creating_copy_existed_bool
- \tl_set:Nn \l__crthm_creating_copy_existed_tl { #1 } }
- , copy~existed .value_required:n = true
- , copy-existed .meta:n = { copy~existed = { #1 } }
- , copy-existed .value_required:n = true
- , copy existed .meta:n = { copy~existed = { #1 } }
- , copy existed .value_required:n = true
- , quiet .bool_set:N = \l__crthm_creating_quiet_bool
- , quiet .initial:n = { false }
- , unknown .code:n = {}
- }
-
-\keys_define:nn { create-theorem-creating / counter-management }
- {
- , parent~counter .code:n = { \crthm_counter_within:en { \l__crthm_current_env_tl } { #1 } }
- , parent~counter .value_required:n = true
- , parent-counter .meta:n = { parent~counter = { #1 } }
- , parent-counter .value_required:n = true
- , parent counter .meta:n = { parent~counter = { #1 } }
- , parent counter .value_required:n = true
- , number~within .meta:n = { parent~counter = { #1 } }
- , number~within .value_required:n = true
- , number-within .meta:n = { parent~counter = { #1 } }
- , number-within .value_required:n = true
- , number within .meta:n = { parent~counter = { #1 } }
- , number within .value_required:n = true
- , shared~counter .code:n = { \crthm_counter_alias:en { \l__crthm_current_env_tl } { #1 } }
- , shared~counter .value_required:n = true
- , shared-counter .meta:n = { shared~counter = { #1 } }
- , shared-counter .value_required:n = true
- , shared counter .meta:n = { shared~counter = { #1 } }
- , shared counter .value_required:n = true
- , number~like .meta:n = { shared~counter = { #1 } }
- , number~like .value_required:n = true
- , number-like .meta:n = { shared~counter = { #1 } }
- , number-like .value_required:n = true
- , number like .meta:n = { shared~counter = { #1 } }
- , number like .value_required:n = true
- , unknown .code:n = {}
- }
-
-
-\NewDocumentCommand \CreateTheorem { m m }
- {
- \clist_map_inline:nn { #1 }
- {
- \crthm_create_theorem:nn { ##1 } { #2 }
- }
- }
-
-\msg_new:nnn { create-theorem }
- { env-not-created }
- { The~theorem-like~environment~"#1"~cannot~be~created,~an~environment~with~the~same~name~has~already~existed. }
-
-\msg_new:nnn { create-theorem }
- { env-not-named }
- { The~theorem-like~environment~"#1"~cannot~be~created,~you~have~to~name~it~before~initialization. }
-
-\cs_new:Nn \crthm_create_theorem:nn
- % #1 = env name
- % #2 = options
- {
- \tl_set:Nn \l__crthm_current_env_tl { #1 }
- \bool_set_false:N \l__crthm_creating_apply_style_bool
- \bool_set_false:N \l__crthm_creating_numberless_bool
- \bool_set_false:N \l__crthm_creating_qed_bool
- \bool_set_false:N \l__crthm_creating_create_starred_bool
- \bool_set_false:N \l__crthm_creating_copy_existed_bool
- \keys_set:nn { create-theorem-creating } { #2 }
- \bool_if:NTF \l__crthm_creating_copy_existed_bool
- {
- \__crthm_copy_env:ee { \l__crthm_current_env_tl } { \l__crthm_creating_copy_existed_tl }
- \bool_if:NT \l__crthm_creating_create_starred_bool
- {
- \__crthm_copy_env:ee { \l__crthm_current_env_tl * } { \l__crthm_creating_copy_existed_tl * }
- }
- }
- {
- \cs_if_exist:cTF { #1 }
- {
- \bool_if:NF \l__crthm_creating_quiet_bool
- {
- \msg_warning:nnn { create-theorem } { env-not-created } { #1 }
- }
- }
- {
- \cs_if_exist:cTF { c@ #1 }
- {
- \IfPackageLoadedTF { ntheorem }
- {
- \bool_if:NT \l__crthm_creating_qed_bool
- {
- \theoremsymbol { \ensuremath { \l__crthm_creating_qed_tl } }
- }
- } {}
- \group_begin:
- \bool_if:NTF \l__crthm_creating_apply_style_bool
- {
- \exp_args:No \theoremstyle { \l__crthm_creating_apply_style_tl }
- }
- {
- \tl_if_exist:cT { c_crthm_theorem_style_preset_ #1 _tl }
- {
- \exp_args:Nv \theoremstyle { c_crthm_theorem_style_preset_ #1 _tl }
- }
- }
- \bool_if:NTF \l__crthm_creating_numberless_bool
- {
- \crthm_newtheorem:w*{ #1 _crthm_regional } { \tl_use:c { g_crthm_name_heading_ #1 _ \languagename _tl } }
- }
- {
- \crthm_newtheorem:w { #1 _crthm_regional } [#1] { \tl_use:c { g_crthm_name_heading_ #1 _ \languagename _tl } }
- }
- \bool_if:NT \l__crthm_creating_create_starred_bool
- {
- \crthm_newtheorem:w*{ #1 * } { \tl_use:c { g_crthm_name_heading_ #1 _ \languagename _tl } }
- }
- \group_end:
- \IfPackageLoadedTF { ntheorem }
- {
- \bool_if:NT \l__crthm_creating_qed_bool
- {
- \theoremsymbol { }
- }
- } {}
- \NewDocumentEnvironment { #1 } { O{} }
- % In "regionalref" mode, the counter received by the referencing system is "#1 _crthm_regional"
- % while in "originalref" mode, the counter received is "#1 _crthm_original_\languagename"
- {
- \tl_if_blank:nTF { ##1 }
- {
- \begin{ #1 _crthm_regional }
- }
- {
- \begin{ #1 _crthm_regional }[{##1}]
- }
- \bool_if:NF \l__crthm_regionalref_bool
- {
- \addtocounter { #1 _crthm_original_\languagename } { -1 }
- \refstepcounter { #1 _crthm_original_\languagename }
- }
- }
- {
- \end{ #1 _crthm_regional }
- }
- \keys_set:nn { create-theorem-creating / counter-management } { #2 }
-
- \IfPackageLoadedTF { amsthm }
- {
- \bool_if:NT \l__crthm_creating_qed_bool
- {
- \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl /begin } { crthm } { \cs_set:Npn \qedsymbol { \ensuremath { \l__crthm_creating_qed_tl } } \pushQED{\qed} }
- \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl /end } { crthm } { \popQED }
- \bool_if:NT \l__crthm_creating_create_starred_bool
- {
- \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl * /begin } { crthm } { \cs_set:Npn \qedsymbol { \ensuremath { \l__crthm_creating_qed_tl } } \pushQED{\qed} }
- \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl * /end } { crthm } { \popQED }
- }
- }
- } {}
- }
- {
- \msg_error:nnn { create-theorem } { env-not-named } { #1 }
- }
- }
- }
- }
-
-\cs_new:Nn \__crthm_copy_env:nn
- {
- \cs_set_eq:cc { #1 } { #2 }
- \cs_set_eq:cc { end #1 } { end #2 }
- }
-\cs_generate_variant:Nn \__crthm_copy_env:nn { ee }
-
-\cs_new:Nn \crthm_counter_within:nn
- {
- \counterwithin { #1 } { #2 }
- }
-\cs_generate_variant:Nn \crthm_counter_within:nn { en }
-
-\cs_new:Nn \crthm_counter_alias:nn
- {
- \cs_if_exist:cTF { c@ #2 }
- {
- \cs_gset_eq:cc { c@ #1 } { c@ #2 }
- \cs_gset_eq:cc { the #1 } { the #2 }
- \cs_gset_eq:cc { theH #1 } { theH #2 }
- \cs_gset_eq:cc { p@ #1 } { p@ #2 }
- \cs_gset_eq:cc { cl@ #1 } { cl@ #2 }
- }
- {
- \@nocounterr { #2 }
- }
- }
-\cs_generate_variant:Nn \crthm_counter_alias:nn { en }
-
-
-\keys_define:nn { create-theorem-setting }
- {
- , name .code:n = { \exp_args:Ne \NameTheorem { \l__crthm_current_env_tl } { #1 } }
- , name .value_required:n = true
- , name~style .code:n = { \exp_args:Ne \NameTheorem { \l__crthm_current_env_tl } { #1 } }
- , name~style .value_required:n = true
- , name-style .meta:n = { name~style = { #1 } }
- , name-style .value_required:n = true
- , name style .meta:n = { name~style = { #1 } }
- , name style .value_required:n = true
- , qed .code:n = {
- \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl /begin } { crthm } { \cs_set:Npn \qedsymbol { \ensuremath { #1 } } }
- }
- , qed .default:n = \c__crthm_qedsymbol_tl
- , qed~symbol .meta:n = { qed = #1 }
- , qed~symbol .default:n = \c__crthm_qedsymbol_tl
- , qed-symbol .meta:n = { qed = #1 }
- , qed-symbol .default:n = \c__crthm_qedsymbol_tl
- , qed symbol .meta:n = { qed = #1 }
- , qed symbol .default:n = \c__crthm_qedsymbol_tl
- , parent~counter .code:n = { \crthm_counter_within:en { \l__crthm_current_env_tl } { #1 } }
- , parent~counter .value_required:n = true
- , parent-counter .meta:n = { parent~counter = { #1 } }
- , parent-counter .value_required:n = true
- , parent counter .meta:n = { parent~counter = { #1 } }
- , parent counter .value_required:n = true
- , number~within .meta:n = { parent~counter = { #1 } }
- , number~within .value_required:n = true
- , number-within .meta:n = { parent~counter = { #1 } }
- , number-within .value_required:n = true
- , number within .meta:n = { parent~counter = { #1 } }
- , number within .value_required:n = true
- , shared~counter .code:n = { \crthm_counter_alias:en { \l__crthm_current_env_tl } { #1 } }
- , shared~counter .value_required:n = true
- , shared-counter .meta:n = { shared~counter = { #1 } }
- , shared-counter .value_required:n = true
- , shared counter .meta:n = { shared~counter = { #1 } }
- , shared counter .value_required:n = true
- , number~like .meta:n = { shared~counter = { #1 } }
- , number~like .value_required:n = true
- , number-like .meta:n = { shared~counter = { #1 } }
- , number-like .value_required:n = true
- , number like .meta:n = { shared~counter = { #1 } }
- , number like .value_required:n = true
- , unknown .code:n = {}
- }
-
-
-\NewDocumentCommand \SetTheorem { m m }
- {
- \clist_map_inline:nn { #1 }
- {
- \prop_if_in:NnTF \l_crthm_binding_prop { ##1 }
- {
- \prop_get:NnN \l_crthm_binding_prop { ##1 } \l__crthm_current_env_tl
- }
- {
- \tl_set:Nn \l__crthm_current_env_tl { ##1 }
- }
- \keys_set:nn { create-theorem-setting } { #2 }
- }
- }
-
-\prop_new:N \l_crthm_binding_prop
-\NewDocumentCommand \SetTheoremBinding { m m }
- {
- \clist_map_inline:nn { #1 }
- {
- \prop_put:Nxx \l_crthm_binding_prop { ##1 } { #2 }
- }
- }
-
-
-\bool_if:NF \l__crthm_presetname_bool { \endinput }
-
-
%=============================
% --- Preset Names ---
%=============================
@@ -1443,6 +267,59 @@
}
}
+\NameTheorem { commentary }
+ {
+ , heading = {
+ , english = Commentary
+ , french = Commentaire
+ , ngerman = Kommentar
+ , italian = Commento
+ , portuguese = Comentário
+ , brazilian = Comentário
+ , spanish = Comentario
+ , schinese = 解说
+ , tchinese = 解說
+ , japanese = 解説 % コメント
+ , russian = Комментарий
+ }
+ , crefname = {
+ , english = {commentary}{commentaries}
+ , french = [le]{commentaire}[les]{commentaires}
+ , ngerman = { {Kommentar}{Kommentare}
+ , Nominativ = [der]{Kommentar}[die]{Kommentare}
+ , Genitiv = [des]{Kommentars}[der]{Kommentare}
+ , Dativ = [dem]{Kommentar}[den]{Kommentaren}
+ , Akkusativ = [den]{Kommentar}[die]{Kommentare}
+ }
+ , italian = [il]{commento}[i]{commenti}
+ , portuguese = [o]{comentário}[os]{comentários}
+ , brazilian = [o]{comentário}[os]{comentários}
+ , spanish = [el]{comentario}[los]{comentarios}
+ , schinese = {解说}{解说}
+ , tchinese = {解說}{解說}
+ , japanese = {解説}{解説}
+ , russian = {комментарий}{комментарии}
+ }
+ , Crefname = {
+ , english = {Commentary}{Commentaries}
+ , french = [Le]{commentaire}[Les]{commentaires}
+ , ngerman = { {Kommentar}{Kommentare}
+ , Nominativ = [Der]{Kommentar}[Die]{Kommentare}
+ , Genitiv = [Des]{Kommentars}[Der]{Kommentare}
+ , Dativ = [Dem]{Kommentar}[Den]{Kommentaren}
+ , Akkusativ = [Den]{Kommentar}[Die]{Kommentare}
+ }
+ , italian = [Il]{commento}[I]{commenti}
+ , portuguese = [O]{comentário}[Os]{comentários}
+ , brazilian = [O]{comentário}[Os]{comentários}
+ , spanish = [El]{comentario}[Los]{comentarios}
+ , schinese = {解说}{解说}
+ , tchinese = {解說}{解說}
+ , japanese = {解説}{解説}
+ , russian = {Комментарий}{Комментарии}
+ }
+ }
+
\NameTheorem { conclusion }
{
, heading = {
@@ -1824,8 +701,8 @@
, portuguese = Exercício
, brazilian = Exercício
, spanish = Ejercicio
- , schinese = 练习
- , tchinese = 練習
+ , schinese = 习题
+ , tchinese = 習題
, japanese = 練習
, russian = Упражнение
}
@@ -1842,8 +719,8 @@
, portuguese = [o]{exercício}[os]{exercícios}
, brazilian = [o]{exercício}[os]{exercícios}
, spanish = [el]{ejercicio}[los]{ejercicios}
- , schinese = {练习}{练习}
- , tchinese = {練習}{練習}
+ , schinese = {习题}{习题}
+ , tchinese = {習題}{習題}
, japanese = {練習}{練習}
, russian = {упражнение}{упражнения}
}
@@ -1860,8 +737,8 @@
, portuguese = [O]{exercício}[Os]{exercícios}
, brazilian = [O]{exercício}[Os]{exercícios}
, spanish = [El]{ejercicio}[Los]{ejercicios}
- , schinese = {练习}{练习}
- , tchinese = {練習}{練習}
+ , schinese = {习题}{习题}
+ , tchinese = {習題}{習題}
, japanese = {練習}{練習}
, russian = {Упражнение}{Упражнения}
}
@@ -2026,6 +903,59 @@
}
}
+\NameTheorem { motivation }
+ {
+ , heading = {
+ , english = Motivation
+ , french = Motivation
+ , ngerman = Motivation
+ , italian = Motivazione
+ , portuguese = Motivação
+ , brazilian = Motivação
+ , spanish = Motivacion
+ , schinese = 动机
+ , tchinese = 動機
+ , japanese = 動機 % モチベーション
+ , russian = Мотивация
+ }
+ , crefname = {
+ , english = {motivation}{motivations}
+ , french = [la]{motivation}[les]{motivations}
+ , ngerman = { {Motivation}{Motivationen}
+ , Nominativ = [die]{Motivation}[die]{Motivationen}
+ , Genitiv = [der]{Motivation}[der]{Motivationen}
+ , Dativ = [der]{Motivation}[den]{Motivationen}
+ , Akkusativ = [die]{Motivation}[die]{Motivationen}
+ }
+ , italian = [la]{motivazione}[le]{motivazioni}
+ , portuguese = [a]{motivação}[as]{motivações}
+ , brazilian = [a]{motivação}[as]{motivações}
+ , spanish = [la]{motivacion}[las]{motivaciones}
+ , schinese = {动机}{动机}
+ , tchinese = {動機}{動機}
+ , japanese = {動機}{動機}
+ , russian = {мотивация}{мотивации}
+ }
+ , Crefname = {
+ , english = {Motivation}{Motivations}
+ , french = [La]{motivation}[Les]{motivations}
+ , ngerman = { {Motivation}{Motivationen}
+ , Nominativ = [Die]{Motivation}[Die]{Motivationen}
+ , Genitiv = [Der]{Motivation}[Der]{Motivationen}
+ , Dativ = [Der]{Motivation}[Den]{Motivationen}
+ , Akkusativ = [Die]{Motivation}[Die]{Motivationen}
+ }
+ , italian = [La]{motivazione}[Le]{motivazioni}
+ , portuguese = [A]{motivação}[As]{motivações}
+ , brazilian = [A]{motivação}[As]{motivações}
+ , spanish = [La]{motivacion}[Las]{motivaciones}
+ , schinese = {动机}{动机}
+ , tchinese = {動機}{動機}
+ , japanese = {動機}{動機}
+ , russian = {Мотивация}{Мотивации}
+ }
+ }
+
\NameTheorem { notation }
{
, heading = {
@@ -2563,7 +1493,3 @@
\NameTheorem { corollary-definition } { combined = { corollary ; definition } }
\NameTheorem { proposition-definition } { combined = { proposition ; definition } }
\NameTheorem { theorem-definition } { combined = { theorem ; definition } }
-
-\endinput
-%%
-%% End of file `create-theorem.sty'.
diff --git a/macros/latex/contrib/create-theorem/code/create-theorem.sty b/macros/latex/contrib/create-theorem/code/create-theorem.sty
new file mode 100644
index 0000000000..355e7a6211
--- /dev/null
+++ b/macros/latex/contrib/create-theorem/code/create-theorem.sty
@@ -0,0 +1,1182 @@
+%%
+%% Copyright (C) 2021-2024 by Jinwen XU
+%% ------------------------------------
+%%
+%% This file 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
+%%
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
+\ProvidesExplPackage
+ {create-theorem}
+ {2024/02/20a} {}
+ {Initializing theorem-like environments with multilingual support}
+
+\keys_define:nn { create-theorem }
+ {
+ , name-as-context .bool_set:N = \l__crthm_regionalref_bool
+ , name-as-context .initial:n = { true }
+ , name~as~context .bool_set:N = \l__crthm_regionalref_bool
+ , name as context .bool_set:N = \l__crthm_regionalref_bool
+ , regionalref .bool_set:N = \l__crthm_regionalref_bool
+ , name-as-is .bool_set_inverse:N = \l__crthm_regionalref_bool
+ , name~as~is .bool_set_inverse:N = \l__crthm_regionalref_bool
+ , name as is .bool_set_inverse:N = \l__crthm_regionalref_bool
+ , originalref .bool_set_inverse:N = \l__crthm_regionalref_bool
+ , name-in-link .bool_set:N = \l__crthm_nameinlink_bool
+ , name-in-link .initial:n = { false }
+ , name~in~link .bool_set:N = \l__crthm_nameinlink_bool
+ , name in link .bool_set:N = \l__crthm_nameinlink_bool
+ , no-preset-names .bool_set_inverse:N = \l__crthm_presetname_bool
+ , no-preset-names .initial:n = { false }
+ , no~preset~names .bool_set_inverse:N = \l__crthm_presetname_bool
+ , no preset names .bool_set_inverse:N = \l__crthm_presetname_bool
+ , unknown .code:n = {}
+ }
+\ProcessKeyOptions [ create-theorem ]
+
+\msg_new:nnn { create-theorem }
+ { no-backend }
+ { A~backend~(such~as~"amsthm")~~is~needed~to~provide~the~commands~"\iow_char:N \\newtheorem(*)"~and~"\iow_char:N \\theoremstyle"~with~the~usual~behaviour. }
+\cs_if_exist:cF { theoremstyle }
+ {
+ \msg_error:nn { create-theorem } { no-backend }
+ }
+
+\bool_if:NT \l__crthm_nameinlink_bool
+ {
+ \PassOptionsToPackage { nameinlink } { cleveref }
+ }
+\RequirePackage { crefthe }
+\RequirePackage { amsfonts }
+
+\IfPackageLoadedTF { thmtools }
+ {
+ \cs_gset_eq:NN \crthm_newtheorem:w \thmt@original@newtheorem
+ }
+ {
+ \cs_gset_eq:NN \crthm_newtheorem:w \newtheorem
+ }
+
+
+% Users should consider appending their languages to this list as needed,
+% otherwise the naming functionality may not work in monolingual documents.
+\clist_new:N \g_crthm_supported_language_clist
+\clist_gset:Nn \g_crthm_supported_language_clist
+ {
+ english ,
+ french ,
+ ngerman ,
+ italian ,
+ portuguese ,
+ brazilian ,
+ spanish ,
+ schinese ,
+ tchinese ,
+ japanese ,
+ russian ,
+ }
+
+\cs_new:Nn \crthm_add_to_language_list:n
+ {
+ \clist_gput_right:Nn \g_crthm_supported_language_clist { #1 }
+ \clist_gremove_duplicates:N \g_crthm_supported_language_clist
+ }
+
+\NewDocumentCommand \CreateTheoremAddLanguage { m }
+ {
+ \crthm_add_to_language_list:n { #1 }
+ }
+
+
+\tl_new:N \l__crthm_current_env_tl
+
+\keys_define:nn { create-theorem-naming }
+ {
+ , heading .code:n = { \crthm_set_name_heading:en { \l__crthm_current_env_tl } { #1 } }
+ , heading .value_required:n = true
+ , crefname .code:n = { \crthm_set_name_crefname:en { \l__crthm_current_env_tl } { #1 } }
+ , crefname .value_required:n = true
+ , Crefname .code:n = { \crthm_set_name_Crefname:en { \l__crthm_current_env_tl } { #1 } }
+ , Crefname .value_required:n = true
+ , heading~style .code:n = { \crthm_set_name_style_heading:en { \l__crthm_current_env_tl } { #1 } }
+ , heading~style .value_required:n = true
+ , heading-style .meta:n = { heading~style = { #1 } }
+ , heading-style .value_required:n = true
+ , heading style .meta:n = { heading~style = { #1 } }
+ , heading style .value_required:n = true
+ , crefname~style .code:n = { \crthm_set_name_style_crefname:en { \l__crthm_current_env_tl } { #1 } }
+ , crefname~style .value_required:n = true
+ , crefname-style .meta:n = { crefname~style = { #1 } }
+ , crefname-style .value_required:n = true
+ , crefname style .meta:n = { crefname~style = { #1 } }
+ , crefname style .value_required:n = true
+ , Crefname~style .code:n = { \crthm_set_name_style_Crefname:en { \l__crthm_current_env_tl } { #1 } }
+ , Crefname~style .value_required:n = true
+ , Crefname-style .meta:n = { Crefname~style = { #1 } }
+ , Crefname-style .value_required:n = true
+ , Crefname style .meta:n = { Crefname~style = { #1 } }
+ , Crefname style .value_required:n = true
+ , numbering~style .code:n = { \crthm_set_name_style_numbering:en { \l__crthm_current_env_tl } { #1 } }
+ , numbering~style .value_required:n = true
+ , numbering-style .meta:n = { numbering~style = { #1 } }
+ , numbering-style .value_required:n = true
+ , numbering style .meta:n = { numbering~style = { #1 } }
+ , numbering style .value_required:n = true
+ , use~name .code:n = { \crthm_set_name_with_existed_names:en { \l__crthm_current_env_tl } { #1 } }
+ , use~name .value_required:n = true
+ , use-name .meta:n = { use~name = { #1 } }
+ , use-name .value_required:n = true
+ , use name .meta:n = { use~name = { #1 } }
+ , use name .value_required:n = true
+ , combined .meta:n = { use~name = { #1 } }
+ , combined .value_required:n = true
+ , unknown .code:n = {}
+ }
+
+\cs_new:Nn \__crthm_set_generic:nnn
+ {
+ \str_if_in:nnTF { #2 } { = }
+ {% key-value definition
+ \keyval_parse:nnn
+ {}
+ { \use:c { __crthm_ #3 :nnn } { #1 } }
+ { #2 }
+ }
+ {% simple definition
+ \clist_map_inline:Nn \g_crthm_supported_language_clist
+ {
+ \use:c { __crthm_ #3 :nnn } { #1 } { ##1 } { #2 }
+ }
+ }
+ }
+
+\cs_new:Nn \crthm_set_name_heading:nn
+ % #1 = env name
+ % #2 = the settings
+ {
+ \__crthm_set_generic:nnn { #1 } { #2 } { set_name_heading }
+ }
+\cs_generate_variant:Nn \crthm_set_name_heading:nn { en }
+
+\cs_new:Nn \__crthm_set_name_heading:nnn
+ % #1 = env name
+ % #2 = language name
+ % #3 = corresponding heading name
+ {
+ \tl_if_exist:cF { g_crthm_style_heading_ #1 _ #2 _tl }
+ {
+ \tl_new:c { g_crthm_style_heading_ #1 _ #2 _tl }
+ }
+ \tl_gset:cn { g_crthm_name_heading_ #1 _ #2 _tl } { \tl_use:c { g_crthm_style_heading_ #1 _ #2 _tl } { #3 } }
+ }
+
+\cs_new:Nn \crthm_set_name_crefname:nn
+ % #1 = env name
+ % #2 = the settings
+ {
+ \crthm_set_name_crefname_generic:nnn { #1 } { #2 } { c }
+ }
+\cs_generate_variant:Nn \crthm_set_name_crefname:nn { en }
+
+\cs_new:Nn \crthm_set_name_Crefname:nn
+ % #1 = env name
+ % #2 = the settings
+ {
+ \crthm_set_name_crefname_generic:nnn { #1 } { #2 } { C }
+ }
+\cs_generate_variant:Nn \crthm_set_name_Crefname:nn { en }
+
+\cs_new:Nn \crthm_set_name_crefname_generic:nnn
+ % #1 = env name
+ % #2 = the settings
+ % #3 = c or C
+ {
+ \__crthm_set_generic:nnn { #1 } { #2 } { set_name_ #3 refname }
+ }
+
+\cs_new:Nn \__crthm_set_name_crefname:nnn
+ % #1 = env name
+ % #2 = language name
+ % #3 = corresponding crefname {..}{..} or [..]{..}[..]{..}, or a set of crefnames for different variants
+ {
+ \str_if_in:nnTF { #3 } { = }
+ {
+ \crefthe_parse_variant:n { #3 }
+ \crefthe_pass_variant_to:n { \__crthm_set_name_crefname_generic:w { #1 } { #2 } } { c }
+ }
+ {
+ \__crthm_set_name_crefname_generic:w { #1 } { #2 } #3 { c }
+ }
+ }
+
+\cs_new:Nn \__crthm_set_name_Crefname:nnn
+ % #1 = env name
+ % #2 = language name
+ % #3 = corresponding Crefname {..}{..} or [..]{..}[..]{..}, or a set of crefnames for different variants
+ {
+ \str_if_in:nnTF { #3 } { = }
+ {
+ \crefthe_parse_variant:n { #3 }
+ \crefthe_pass_variant_to:n { \__crthm_set_name_crefname_generic:w { #1 } { #2 } } { C }
+ }
+ {
+ \__crthm_set_name_crefname_generic:w { #1 } { #2 } #3 { C }
+ }
+ }
+
+\NewExpandableDocumentCommand \__crthm_set_name_crefname_generic:w { m m O{} m O{} m m }
+ % #1 = env name
+ % #2 = language name
+ % #7 = c or C
+ {
+ % It is assumed that when #3 is empty, so is #5
+ \tl_if_blank:eTF { #3 }
+ {
+ \tl_gset:cn { g_crthm_core_name_ #7 ref_article_singular_ #1 _ #2 _tl } { }
+ \tl_gset:cn { g_crthm_core_name_ #7 ref_article_plural_ #1 _ #2 _tl } { }
+ \tl_gset:cn { g_crthm_name_ #7 ref_article_singular_ #1 _ #2 _tl } { \nobreak \crefthemark { \crefthe_retrieve_space: } \nobreak }
+ \tl_gset:cn { g_crthm_name_ #7 ref_article_plural_ #1 _ #2 _tl } { \nobreak \crefthemark { \crefthe_retrieve_space: } \nobreak }
+ }
+ {
+ \tl_gset:cn { g_crthm_core_name_ #7 ref_article_singular_ #1 _ #2 _tl } { #3 }
+ \tl_gset:cn { g_crthm_core_name_ #7 ref_article_plural_ #1 _ #2 _tl } { #5 }
+ \tl_gset:cn { g_crthm_name_ #7 ref_article_singular_ #1 _ #2 _tl } { \crefthemark { #3 } }
+ \tl_gset:cn { g_crthm_name_ #7 ref_article_plural_ #1 _ #2 _tl } { \crefthemark { #5 } }
+ }
+
+ \tl_if_exist:cF { g_crthm_style_ #7 refname_ #1 _ #2 _tl }
+ {
+ \tl_new:c { g_crthm_style_ #7 refname_ #1 _ #2 _tl }
+ }
+
+ \tl_if_blank:eTF { #4 }
+ {
+ \tl_gset:cn { g_crthm_name_ #7 ref_singular_ #1 _ #2 _tl } { \nobreak \crefthe_retrieve_space: \nobreak }
+ }
+ {
+ \tl_gset:cn { g_crthm_name_ #7 ref_singular_ #1 _ #2 _tl } { \tl_use:c { g_crthm_style_ #7 refname_ #1 _ #2 _tl } { #4 } }
+ }
+
+ \tl_if_blank:eTF { #6 }
+ {
+ \tl_gset:cn { g_crthm_name_ #7 ref_plural_ #1 _ #2 _tl } { \nobreak \crefthe_retrieve_space: \nobreak }
+ }
+ {
+ \tl_gset:cn { g_crthm_name_ #7 ref_plural_ #1 _ #2 _tl } { \tl_use:c { g_crthm_style_ #7 refname_ #1 _ #2 _tl } { #6 } }
+ }
+
+ \bool_if:NTF \l__crthm_regionalref_bool
+ {% "regionalref" mode
+ \use:c { __crthm_set_name_ #7 refname_do:nnn } { #1 _crthm_regional } { #1 } { \languagename }
+ }
+ {% "originalref" mode
+ \tl_if_exist:cF { c@ #1 _crthm_original_ #2 }
+ {
+ \crthm_counter_alias:nn { #1 _crthm_original_ #2 } { #1 }
+ \hook_gput_code:nnn { begindocument/before } { crthm }
+ {
+ \cs_set_eq:cc { the #1 _crthm_original_ #2 } { the #1 }
+ }
+ }
+ \use:c { __crthm_set_name_ #7 refname_do:nnn } { #1 _crthm_original_ #2 } { #1 } { #2 }
+ }
+ }
+
+\cs_new:Nn \__crthm_set_name_crefname_do:nnn
+ % #1 = counter name
+ % #2 = env name
+ % #3 = language name
+ {
+ \__crthm_set_name_crefname_do_generic:nnnn { #1 } { #2 } { #3 } { c }
+ }
+
+\cs_new:Nn \__crthm_set_name_Crefname_do:nnn
+ % #1 = counter name
+ % #2 = env name
+ % #3 = language name
+ {
+ \__crthm_set_name_crefname_do_generic:nnnn { #1 } { #2 } { #3 } { C }
+ }
+
+\seq_new:N \g__crthm_format_already_set_seq
+
+\cs_new:Nn \__crthm_set_name_crefname_do_generic:nnnn
+ % #1 = counter name
+ % #2 = env name
+ % #3 = language name
+ % #4 = c or C
+ {
+ \tl_gset:cn { #4 ref@ #1 @name }
+ {
+ \tl_use:c { g_crthm_name_ #4 ref_article_singular_ #2 _ #3 _tl }
+ \bool_if:NTF \g__crefthe_has_prep_bool
+ {
+ \tl_use:c { g_crthm_name_ cref_singular_ #2 _ #3 _tl }
+ }
+ {
+ \tl_use:c { g_crthm_name_ #4 ref_singular_ #2 _ #3 _tl }
+ }
+ }
+ \tl_gset:cn { #4 ref@ #1 @name@plural }
+ { % Use the definite article of the original language,
+ % with name's casing depends on the preposition and the article
+ \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl }
+ \bool_if:NTF \g__crefthe_has_prep_bool
+ {
+ \tl_use:c { g_crthm_name_ cref_plural_ #2 _ #3 _tl }
+ }
+ {
+ \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl }
+ }
+ }
+
+ \seq_if_in:NnF \g__crthm_format_already_set_seq { #2 _ #3 }
+ {
+ \@crefdefineallformats { #1 }
+ \seq_gput_right:Nn \g__crthm_format_already_set_seq { #2 _ #3 }
+ }
+
+ \tl_if_exist:cF { g_crthm_number_style_ #2 _tl }
+ {
+ \tl_new:c { g_crthm_number_style_ #2 _tl }
+ }
+
+ % Redefine the cref formats so that definite articles are placed outside the hyperlinks
+ \crthm_modify_format_according_to_nameinlink:nnn
+ { \crthm_define_format_short_version:nnnn { #2 } { #4 ref@ #1 @format } }
+ { \tl_use:c { g_crthm_name_ #4 ref_article_singular_ #2 _ #3 _tl } }
+ {
+ \bool_if:NTF \g__crefthe_has_prep_bool
+ {
+ \tl_use:c { g_crthm_name_ cref_singular_ #2 _ #3 _tl }
+ }
+ {
+ \tl_use:c { g_crthm_name_ #4 ref_singular_ #2 _ #3 _tl }
+ }
+ }
+ \crthm_modify_format_according_to_nameinlink:nnn
+ { \crthm_define_format_short_version:nnnn { #2 } { #4 ref@ #1 @format@first } }
+ { \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl } }
+ {
+ \bool_if:NTF \g__crefthe_has_prep_bool
+ {
+ \tl_use:c { g_crthm_name_ cref_plural_ #2 _ #3 _tl }
+ }
+ {
+ \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl }
+ }
+ }
+ \cs_set:cpn { #4 ref@ #1 @format@second } ##1##2##3
+ {
+ \crefpairconjunction
+ \group_begin:
+ \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
+ \group_end:
+ }
+ \cs_set:cpn { #4 ref@ #1 @format@middle } ##1##2##3
+ {
+ \crefmiddleconjunction
+ \group_begin:
+ \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
+ \group_end:
+ }
+ \cs_set:cpn { #4 ref@ #1 @format@last } ##1##2##3
+ {
+ \creflastconjunction
+ \group_begin:
+ \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
+ \group_end:
+ }
+
+ \crthm_modify_format_according_to_nameinlink:nnn
+ { \crthm_define_format_long_version:nnnn { #2 } { #4 refrange@ #1 @format } }
+ { \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl } }
+ {
+ \bool_if:NTF \g__crefthe_has_prep_bool
+ {
+ \tl_use:c { g_crthm_name_ cref_plural_ #2 _ #3 _tl }
+ }
+ {
+ \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl }
+ }
+ }
+ \crthm_modify_format_according_to_nameinlink:nnn
+ { \crthm_define_format_long_version:nnnn { #2 } { #4 refrange@ #1 @format@first } }
+ { \tl_use:c { g_crthm_name_ #4 ref_article_plural_ #2 _ #3 _tl } }
+ {
+ \bool_if:NTF \g__crefthe_has_prep_bool
+ {
+ \tl_use:c { g_crthm_name_ cref_plural_ #2 _ #3 _tl }
+ }
+ {
+ \tl_use:c { g_crthm_name_ #4 ref_plural_ #2 _ #3 _tl }
+ }
+ }
+ \cs_set:cpn { #4 refrange@ #1 @format@second } ##1##2##3##4##5##6
+ {
+ \crefpairconjunction
+ \group_begin:
+ \crthm_format_long_generic:nnnnnn
+ { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } }
+ { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##2 } }
+ { ##3 } { ##4 } { ##5 } { ##6 }
+ \group_end:
+ }
+ \cs_set:cpn { #4 refrange@ #1 @format@middle } ##1##2##3##4##5##6
+ {
+ \crefmiddleconjunction
+ \group_begin:
+ \crthm_format_long_generic:nnnnnn
+ { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } }
+ { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##2 } }
+ { ##3 } { ##4 } { ##5 } { ##6 }
+ \group_end:
+ }
+ \cs_set:cpn { #4 refrange@ #1 @format@last } ##1##2##3##4##5##6
+ {
+ \creflastconjunction
+ \group_begin:
+ \crthm_format_long_generic:nnnnnn
+ { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } }
+ { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##2 } }
+ { ##3 } { ##4 } { ##5 } { ##6 }
+ \group_end:
+ }
+
+ % Redefine the labelcref formats to match the numbering format
+ \cs_set:cpn { labelcref@ #1 @format } ##1##2##3
+ {
+ \group_begin:
+ \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
+ \group_end:
+ }
+ \cs_set_eq:cc { labelcref@ #1 @format@first } { labelcref@ #1 @format }
+ \cs_set:cpn { labelcref@ #1 @format@second } ##1##2##3
+ {
+ \crefpairconjunction
+ \group_begin:
+ \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
+ \group_end:
+ }
+ \cs_set:cpn { labelcref@ #1 @format@middle } ##1##2##3
+ {
+ \crefmiddleconjunction
+ \group_begin:
+ \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
+ \group_end:
+ }
+ \cs_set:cpn { labelcref@ #1 @format@last } ##1##2##3
+ {
+ \creflastconjunction
+ \group_begin:
+ \crthm_format_short_generic:nnn { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } } { ##2 } { ##3 }
+ \group_end:
+ }
+
+ \crthm_define_format_long_version:nnnn { #2 } { labelcrefrange@ #1 @format } {} {}
+ \crthm_define_format_long_version:nnnn { #2 } { labelcrefrange@ #1 @format@first } {} {}
+ \cs_set:cpn { labelcrefrange@ #1 @format@second } ##1##2##3##4##5##6
+ {
+ \crefpairconjunction
+ \group_begin:
+ \crthm_format_long_generic:nnnnnn
+ { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } }
+ { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##2 } }
+ { ##3 } { ##4 } { ##5 } { ##6 }
+ \group_end:
+ }
+ \cs_set:cpn { labelcrefrange@ #1 @format@middle } ##1##2##3##4##5##6
+ {
+ \crefmiddleconjunction
+ \group_begin:
+ \crthm_format_long_generic:nnnnnn
+ { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } }
+ { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##2 } }
+ { ##3 } { ##4 } { ##5 } { ##6 }
+ \group_end:
+ }
+ \cs_set:cpn { labelcrefrange@ #1 @format@last } ##1##2##3##4##5##6
+ {
+ \creflastconjunction
+ \group_begin:
+ \crthm_format_long_generic:nnnnnn
+ { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##1 } }
+ { \tl_use:c { g_crthm_number_style_ #2 _tl } { ##2 } }
+ { ##3 } { ##4 } { ##5 } { ##6 }
+ \group_end:
+ }
+ }
+
+\cs_new:Nn \crthm_modify_format_according_to_nameinlink:nnn
+ % #1 = the macro (and argument) to be used
+ % #2 = content always before the hyperlink beginning mark
+ % #3 = content before or after the hyperlink beginning mark, depending on whether nameinlink=true
+ {
+ \bool_if:NTF \l__crthm_nameinlink_bool
+ {
+ #1 { #2 } { #3 }
+ }
+ {
+ #1 { #2 #3 \nobreakspace } { }
+ }
+ }
+
+\cs_new:Nn \crthm_define_format_short_version:nnnn
+ % #1 = name of the environment
+ % #2 = name of the format command
+ % #3 = content before the hyperlink beginning mark
+ % #4 = content after the hyperlink beginning mark
+ {
+ \cs_if_exist:cF { crthm_format_ #2 :nnn }
+ {
+ \cs_new:cn { crthm_format_ #2 :nnn }
+ {
+ { #3 } ##2 { #4 }
+ \tl_if_blank:nF { #4 } { \nobreakspace }
+ { \tl_use:c { g_crthm_number_style_ #1 _tl } { ##1 } } ##3
+ }
+ \cs_set_eq:cc { #2 } { crthm_format_ #2 :nnn }
+ }
+ }
+\cs_new:Nn \crthm_define_format_long_version:nnnn
+ % #1 = name of the environment
+ % #2 = name of the format command
+ % #3 = content before the hyperlink beginning mark
+ % #4 = content after the hyperlink beginning mark
+ {
+ \cs_if_exist:cF { crthm_format_ #2 :nnnnnn }
+ {
+ \cs_new:cn { crthm_format_ #2 :nnnnnn }
+ {
+ { #3 } ##3 { #4 }
+ \tl_if_blank:nF { #4 } { \nobreakspace } \crefrangepreconjunction
+ { \tl_use:c { g_crthm_number_style_ #1 _tl } { ##1 } }
+ ##4 \crefrangeconjunction
+ ##5 { \tl_use:c { g_crthm_number_style_ #1 _tl } { ##2 } } ##6
+ \crefrangepostconjunction
+ }
+ \cs_set_eq:cc { #2 } { crthm_format_ #2 :nnnnnn }
+ }
+ }
+
+\cs_new:Nn \crthm_format_short_generic:nnn
+ {
+ #2 { #1 } #3
+ }
+\cs_new:Nn \crthm_format_long_generic:nnnnnn
+ {
+ \crefrangepreconjunction
+ #3 { #1 } #4
+ \crefrangeconjunction
+ #5 { #2 } #6
+ \crefrangepostconjunction
+ }
+
+
+\cs_new:Nn \crthm_set_name_style_heading:nn
+ % #1 = env name
+ % #2 = the settings
+ {
+ \__crthm_set_generic:nnn { #1 } { #2 } { set_name_style_heading }
+ }
+\cs_generate_variant:Nn \crthm_set_name_style_heading:nn { en }
+
+\cs_new:Nn \__crthm_set_name_style_heading:nnn
+ % #1 = env name
+ % #2 = language name
+ % #3 = corresponding heading style
+ {
+ \tl_gset:cn { g_crthm_style_heading_ #1 _ #2 _tl } { \normalfont #3 }
+ }
+
+\cs_new:Nn \crthm_set_name_style_crefname:nn
+ % #1 = env name
+ % #2 = the settings
+ {
+ \__crthm_set_generic:nnn { #1 } { #2 } { set_name_style_crefname }
+ }
+\cs_generate_variant:Nn \crthm_set_name_style_crefname:nn { en }
+
+\cs_new:Nn \__crthm_set_name_style_crefname:nnn
+ % #1 = env name
+ % #2 = language name
+ % #3 = corresponding crefname style
+ {
+ \tl_gset:cn { g_crthm_style_crefname_ #1 _ #2 _tl } { \normalfont #3 }
+ }
+
+\cs_new:Nn \crthm_set_name_style_Crefname:nn
+ % #1 = env name
+ % #2 = the settings
+ {
+ \__crthm_set_generic:nnn { #1 } { #2 } { set_name_style_Crefname }
+ }
+\cs_generate_variant:Nn \crthm_set_name_style_Crefname:nn { en }
+
+\cs_new:Nn \__crthm_set_name_style_Crefname:nnn
+ % #1 = env name
+ % #2 = language name
+ % #3 = corresponding Crefname style
+ {
+ \tl_gset:cn { g_crthm_style_Crefname_ #1 _ #2 _tl } { \normalfont #3 }
+ }
+
+\cs_new:Nn \crthm_set_name_style_numbering:nn
+ % #1 = env name
+ % #2 = the settings
+ {
+ \__crthm_set_generic:nnn { #1 } { #2 } { set_name_style_numbering }
+ }
+\cs_generate_variant:Nn \crthm_set_name_style_numbering:nn { en }
+
+\cs_new:Nn \__crthm_set_name_style_numbering:nnn
+ % #1 = env name
+ % #2 = language name
+ % #3 = corresponding numbering style
+ {
+ \tl_gset:cn { g_crthm_number_style_ #1 _tl } { \normalfont #3 }
+ }
+
+
+\tl_new:N \g_crthm_combined_name_sep_tl
+\tl_gset:Nn \g_crthm_combined_name_sep_tl { - }
+
+\cs_new:Nn \crthm_set_name_with_existed_names:nn
+ % #1 = env name
+ % #2 = list of existed environments
+ {
+ \clist_map_inline:Nn \g_crthm_supported_language_clist
+ { % ##1 = language name
+ \seq_gclear_new:c { g_crthm_name_heading_ #1 _ ##1 _seq }
+ \seq_gclear_new:c { g_crthm_name_cref_article_singular_ #1 _ ##1 _seq }
+ \seq_gclear_new:c { g_crthm_name_cref_article_plural_ #1 _ ##1 _seq }
+ \seq_gclear_new:c { g_crthm_name_cref_singular_ #1 _ ##1 _seq }
+ \seq_gclear_new:c { g_crthm_name_cref_plural_ #1 _ ##1 _seq }
+ \seq_gclear_new:c { g_crthm_name_Cref_article_singular_ #1 _ ##1 _seq }
+ \seq_gclear_new:c { g_crthm_name_Cref_article_plural_ #1 _ ##1 _seq }
+ \seq_gclear_new:c { g_crthm_name_Cref_singular_ #1 _ ##1 _seq }
+ \seq_gclear_new:c { g_crthm_name_Cref_plural_ #1 _ ##1 _seq }
+ \bool_set_true:N \l_tmpa_bool
+ \regex_split:nnN { \s* ; \s* } { #2 } { \l_tmpa_seq }
+ \seq_map_inline:Nn \l_tmpa_seq
+ { % ####1 = existed environments
+ % Here we use the definite article of the last environment as that of the combined environment
+ % Uncomment the lines below if you wish to use the definite article of the first environment
+ % \bool_if:NT \l_tmpa_bool
+ % {
+ \tl_gset_eq:cc { g_crthm_saved_name_cref_article_singular_ #1 _ ##1 _tl } { g_crthm_core_name_cref_article_singular_ ####1 _ ##1 _tl }
+ \tl_gset_eq:cc { g_crthm_saved_name_cref_article_plural_ #1 _ ##1 _tl } { g_crthm_core_name_cref_article_plural_ ####1 _ ##1 _tl }
+ \tl_gset_eq:cc { g_crthm_saved_name_Cref_article_singular_ #1 _ ##1 _tl } { g_crthm_core_name_Cref_article_singular_ ####1 _ ##1 _tl }
+ \tl_gset_eq:cc { g_crthm_saved_name_Cref_article_plural_ #1 _ ##1 _tl } { g_crthm_core_name_Cref_article_plural_ ####1 _ ##1 _tl }
+ % \bool_set_false:N \l_tmpa_bool
+ % }
+ \seq_gput_right:cn { g_crthm_name_heading_ #1 _ ##1 _seq } { \tl_use:c { g_crthm_name_heading_ ####1 _ ##1 _tl } }
+ \seq_gput_right:cn { g_crthm_name_cref_singular_ #1 _ ##1 _seq } { \tl_use:c { g_crthm_name_cref_singular_ ####1 _ ##1 _tl } }
+ \seq_gput_right:cn { g_crthm_name_cref_plural_ #1 _ ##1 _seq } { \tl_use:c { g_crthm_name_cref_plural_ ####1 _ ##1 _tl } }
+ \seq_gput_right:cn { g_crthm_name_Cref_singular_ #1 _ ##1 _seq } { \tl_use:c { g_crthm_name_Cref_singular_ ####1 _ ##1 _tl } }
+ \seq_gput_right:cn { g_crthm_name_Cref_plural_ #1 _ ##1 _seq } { \tl_use:c { g_crthm_name_Cref_plural_ ####1 _ ##1 _tl } }
+ % set the numbering style to be the same as the last environment
+ \tl_gset_eq:cc { g_crthm_number_style_ #1 _tl } { g_crthm_number_style_ ####1 _tl }
+ }
+ % set heading name for the combined environment
+ \tl_gset:cn { g_crthm_name_heading_ #1 _ ##1 _tl } { \seq_use:cn { g_crthm_name_heading_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
+ % set crefname for the combined environment
+ \tl_if_empty:cTF { g_crthm_saved_name_cref_article_singular_ #1 _ ##1 _tl }
+ {
+ \__crthm_set_name_crefname:nnn { #1 } { ##1 }
+ {
+ { \seq_use:cn { g_crthm_name_cref_singular_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
+ { \seq_use:cn { g_crthm_name_cref_plural_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
+ }
+ }
+ {
+ \__crthm_set_name_crefname:nnn { #1 } { ##1 }
+ {
+ [ \tl_use:c { g_crthm_saved_name_cref_article_singular_ #1 _ ##1 _tl } ]
+ { \seq_use:cn { g_crthm_name_cref_singular_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
+ [ \tl_use:c { g_crthm_saved_name_cref_article_plural_ #1 _ ##1 _tl } ]
+ { \seq_use:cn { g_crthm_name_cref_plural_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
+ }
+ }
+ % set Crefname for the combined environment
+ \tl_if_empty:cTF { g_crthm_saved_name_Cref_article_singular_ #1 _ ##1 _tl }
+ {
+ \__crthm_set_name_Crefname:nnn { #1 } { ##1 }
+ {
+ { \seq_use:cn { g_crthm_name_Cref_singular_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
+ { \seq_use:cn { g_crthm_name_Cref_plural_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
+ }
+ }
+ {
+ \__crthm_set_name_Crefname:nnn { #1 } { ##1 }
+ {
+ [ \tl_use:c { g_crthm_saved_name_Cref_article_singular_ #1 _ ##1 _tl } ]
+ { \seq_use:cn { g_crthm_name_Cref_singular_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
+ [ \tl_use:c { g_crthm_saved_name_Cref_article_plural_ #1 _ ##1 _tl } ]
+ { \seq_use:cn { g_crthm_name_Cref_plural_ #1 _ ##1 _seq } { \g_crthm_combined_name_sep_tl } }
+ }
+ }
+ }
+ }
+\cs_generate_variant:Nn \crthm_set_name_with_existed_names:nn { en }
+
+
+\NewDocumentCommand \NameTheorem { m m }
+ {
+ \crthm_name_theorem:nn { #1 } { #2 }
+ }
+
+\cs_new:Nn \crthm_name_theorem:nn
+ {
+ \tl_set:Nn \l__crthm_current_env_tl { #1 }
+ \cs_if_exist:cF { c@ #1 }
+ {
+ \newcounter { #1 }
+ }
+ \keys_set:nn { create-theorem-naming } { #2 }
+ }
+
+
+\tl_new:N \l__crthm_current_lang_tl
+
+\keys_define:nn { create-theorem-naming-per-language }
+ {
+ , heading .code:n = { \crthm_set_name_per_lang_heading:en { \l__crthm_current_lang_tl } { #1 } }
+ , heading .value_required:n = true
+ , crefname .code:n = { \crthm_set_name_per_lang_crefname:en { \l__crthm_current_lang_tl } { #1 } }
+ , crefname .value_required:n = true
+ , Crefname .code:n = { \crthm_set_name_per_lang_Crefname:en { \l__crthm_current_lang_tl } { #1 } }
+ , Crefname .value_required:n = true
+ , unknown .code:n = {}
+ }
+
+\cs_new:Nn \crthm_set_name_per_lang_heading:nn
+ % #1 = language name
+ % #2 = the settings
+ {
+ \keyval_parse:nnn
+ {}
+ { \use:c { __crthm_set_name_per_lang_heading:nnn } { #1 } }
+ { #2 }
+ }
+\cs_generate_variant:Nn \crthm_set_name_per_lang_heading:nn { en }
+
+\cs_new:Nn \__crthm_set_name_per_lang_heading:nnn
+ % #1 = language name
+ % #2 = env name
+ % #3 = corresponding heading name
+ {
+ \tl_if_exist:cF { g_crthm_style_heading_ #2 _ #1 _tl }
+ {
+ \tl_new:c { g_crthm_style_heading_ #2 _ #1 _tl }
+ }
+ \tl_gset:cn { g_crthm_name_heading_ #2 _ #1 _tl } { \tl_use:c { g_crthm_style_heading_ #2 _ #1 _tl } { #3 } }
+ }
+
+\cs_new:Nn \crthm_set_name_per_lang_crefname:nn
+ % #1 = language name
+ % #2 = the settings
+ {
+ \crthm_set_name_per_lang_crefname_generic:nnn { #1 } { #2 } { c }
+ }
+\cs_generate_variant:Nn \crthm_set_name_per_lang_crefname:nn { en }
+
+\cs_new:Nn \crthm_set_name_per_lang_Crefname:nn
+ % #1 = language name
+ % #2 = the settings
+ {
+ \crthm_set_name_per_lang_crefname_generic:nnn { #1 } { #2 } { C }
+ }
+\cs_generate_variant:Nn \crthm_set_name_per_lang_Crefname:nn { en }
+
+\cs_new:Nn \crthm_set_name_per_lang_crefname_generic:nnn
+ % #1 = language name
+ % #2 = the settings
+ % #3 = c or C
+ {
+ \keyval_parse:nnn
+ {}
+ { \use:c { __crthm_set_name_per_lang_ #3 refname:nnn } { #1 } }
+ { #2 }
+ }
+
+\cs_new:Nn \__crthm_set_name_per_lang_crefname:nnn
+ % #1 = language name
+ % #2 = env name
+ % #3 = corresponding crefname {..}{..} or [..]{..}[..]{..}, or a set of crefnames for different variants
+ {
+ \str_if_in:nnTF { #3 } { = }
+ {
+ \crefthe_parse_variant:n { #3 }
+ \crefthe_pass_variant_to:n { \__crthm_set_name_crefname_generic:w { #2 } { #1 } } { c }
+ }
+ {
+ \__crthm_set_name_crefname_generic:w { #2 } { #1 } #3 { c }
+ }
+ }
+
+\cs_new:Nn \__crthm_set_name_per_lang_Crefname:nnn
+ % #1 = language name
+ % #2 = env name
+ % #3 = corresponding Crefname {..}{..} or [..]{..}[..]{..}, or a set of crefnames for different variants
+ {
+ \str_if_in:nnTF { #3 } { = }
+ {
+ \crefthe_parse_variant:n { #3 }
+ \crefthe_pass_variant_to:n { \__crthm_set_name_crefname_generic:w { #2 } { #1 } } { C }
+ }
+ {
+ \__crthm_set_name_crefname_generic:w { #2 } { #1 } #3 { C }
+ }
+ }
+
+
+\NewDocumentCommand \NameTheorems { m m }
+ {
+ \crthm_name_theorems:nn { #1 } { #2 }
+ }
+
+\cs_new:Nn \crthm_name_theorems:nn
+ {
+ \tl_set:Nn \l__crthm_current_lang_tl { #1 }
+ \crthm_add_to_language_list:n { #1 }
+ \keys_set:nn { create-theorem-naming-per-language } { #2 }
+ }
+
+
+\tl_const:Nn \c__crthm_qedsymbol_tl { \Box }
+\bool_new:N \l__crthm_creating_qed_bool
+\tl_new:N \l__crthm_creating_qed_tl
+\bool_new:N \l__crthm_creating_apply_style_bool
+\tl_new:N \l__crthm_creating_apply_style_tl
+\bool_new:N \l__crthm_creating_numberless_bool
+\bool_new:N \l__crthm_creating_create_starred_bool
+\bool_new:N \l__crthm_creating_copy_existed_bool
+\tl_new:N \l__crthm_creating_copy_existed_tl
+\keys_define:nn { create-theorem-creating }
+ {
+ , name .code:n = { \exp_args:Ne \NameTheorem { \l__crthm_current_env_tl } { #1 } }
+ , name .value_required:n = true
+ , name~style .code:n = { \exp_args:Ne \NameTheorem { \l__crthm_current_env_tl } { #1 } }
+ , name~style .value_required:n = true
+ , name-style .meta:n = { name~style = { #1 } }
+ , name-style .value_required:n = true
+ , name style .meta:n = { name~style = { #1 } }
+ , name style .value_required:n = true
+ , use~name .code:n = { \exp_args:Ne \NameTheorem { \l__crthm_current_env_tl } { use~name = #1 } }
+ , use~name .value_required:n = true
+ , use-name .meta:n = { use~name = { #1 } }
+ , use-name .value_required:n = true
+ , use name .meta:n = { use~name = { #1 } }
+ , use name .value_required:n = true
+ , combined .meta:n = { use~name = { #1 } }
+ , combined .value_required:n = true
+ , style .code:n = { \bool_set_true:N \l__crthm_creating_apply_style_bool
+ \tl_set:Nn \l__crthm_creating_apply_style_tl { #1 } }
+ , style .value_required:n = true
+ , apply~style .meta:n = { style = { #1 } }
+ , apply~style .value_required:n = true
+ , apply-style .meta:n = { style = { #1 } }
+ , apply-style .value_required:n = true
+ , apply style .meta:n = { style = { #1 } }
+ , apply style .value_required:n = true
+ , qed .code:n = { \bool_set_true:N \l__crthm_creating_qed_bool
+ \tl_set:Nn \l__crthm_creating_qed_tl { #1 } }
+ , qed .default:n = \c__crthm_qedsymbol_tl
+ , qed~symbol .meta:n = { qed = #1 }
+ , qed~symbol .default:n = \c__crthm_qedsymbol_tl
+ , qed-symbol .meta:n = { qed = #1 }
+ , qed-symbol .default:n = \c__crthm_qedsymbol_tl
+ , qed symbol .meta:n = { qed = #1 }
+ , qed symbol .default:n = \c__crthm_qedsymbol_tl
+ , numberless .bool_set:N = \l__crthm_creating_numberless_bool
+ , create~starred~version .bool_set:N = \l__crthm_creating_create_starred_bool
+ , create-starred-version .meta:n = { create~starred~version }
+ , create starred version .meta:n = { create~starred~version }
+ , create~numberless~version .meta:n = { create~starred~version }
+ , create-numberless-version .meta:n = { create~starred~version }
+ , create numberless version .meta:n = { create~starred~version }
+ , copy~existed .code:n = { \bool_set_true:N \l__crthm_creating_copy_existed_bool
+ \tl_set:Nn \l__crthm_creating_copy_existed_tl { #1 } }
+ , copy~existed .value_required:n = true
+ , copy-existed .meta:n = { copy~existed = { #1 } }
+ , copy-existed .value_required:n = true
+ , copy existed .meta:n = { copy~existed = { #1 } }
+ , copy existed .value_required:n = true
+ , quiet .bool_set:N = \l__crthm_creating_quiet_bool
+ , quiet .initial:n = { false }
+ , unknown .code:n = {}
+ }
+
+\keys_define:nn { create-theorem-creating / counter-management }
+ {
+ , parent~counter .code:n = { \crthm_counter_within:en { \l__crthm_current_env_tl } { #1 } }
+ , parent~counter .value_required:n = true
+ , parent-counter .meta:n = { parent~counter = { #1 } }
+ , parent-counter .value_required:n = true
+ , parent counter .meta:n = { parent~counter = { #1 } }
+ , parent counter .value_required:n = true
+ , number~within .meta:n = { parent~counter = { #1 } }
+ , number~within .value_required:n = true
+ , number-within .meta:n = { parent~counter = { #1 } }
+ , number-within .value_required:n = true
+ , number within .meta:n = { parent~counter = { #1 } }
+ , number within .value_required:n = true
+ , shared~counter .code:n = { \crthm_counter_alias:en { \l__crthm_current_env_tl } { #1 } }
+ , shared~counter .value_required:n = true
+ , shared-counter .meta:n = { shared~counter = { #1 } }
+ , shared-counter .value_required:n = true
+ , shared counter .meta:n = { shared~counter = { #1 } }
+ , shared counter .value_required:n = true
+ , number~like .meta:n = { shared~counter = { #1 } }
+ , number~like .value_required:n = true
+ , number-like .meta:n = { shared~counter = { #1 } }
+ , number-like .value_required:n = true
+ , number like .meta:n = { shared~counter = { #1 } }
+ , number like .value_required:n = true
+ , unknown .code:n = {}
+ }
+
+
+\NewDocumentCommand \CreateTheorem { m m }
+ {
+ \clist_map_inline:nn { #1 }
+ {
+ \crthm_create_theorem:nn { ##1 } { #2 }
+ }
+ }
+
+\msg_new:nnn { create-theorem }
+ { env-not-created }
+ { The~theorem-like~environment~"#1"~cannot~be~created,~an~environment~with~the~same~name~has~already~existed. }
+
+\msg_new:nnn { create-theorem }
+ { env-not-named }
+ { The~theorem-like~environment~"#1"~cannot~be~created,~you~have~to~name~it~before~initialization. }
+
+\cs_new:Nn \crthm_create_theorem:nn
+ % #1 = env name
+ % #2 = options
+ {
+ \tl_set:Nn \l__crthm_current_env_tl { #1 }
+ \bool_set_false:N \l__crthm_creating_apply_style_bool
+ \bool_set_false:N \l__crthm_creating_numberless_bool
+ \bool_set_false:N \l__crthm_creating_qed_bool
+ \bool_set_false:N \l__crthm_creating_create_starred_bool
+ \bool_set_false:N \l__crthm_creating_copy_existed_bool
+ \keys_set:nn { create-theorem-creating } { #2 }
+ \bool_if:NTF \l__crthm_creating_copy_existed_bool
+ {
+ \__crthm_copy_env:ee { \l__crthm_current_env_tl } { \l__crthm_creating_copy_existed_tl }
+ \bool_if:NT \l__crthm_creating_create_starred_bool
+ {
+ \__crthm_copy_env:ee { \l__crthm_current_env_tl * } { \l__crthm_creating_copy_existed_tl * }
+ }
+ }
+ {
+ \cs_if_exist:cTF { #1 }
+ {
+ \bool_if:NF \l__crthm_creating_quiet_bool
+ {
+ \msg_warning:nnn { create-theorem } { env-not-created } { #1 }
+ }
+ }
+ {
+ \cs_if_exist:cTF { c@ #1 }
+ {
+ \IfPackageLoadedTF { ntheorem }
+ {
+ \bool_if:NT \l__crthm_creating_qed_bool
+ {
+ \theoremsymbol { \ensuremath { \l__crthm_creating_qed_tl } }
+ }
+ } {}
+ \group_begin:
+ \bool_if:NTF \l__crthm_creating_apply_style_bool
+ {
+ \exp_args:No \theoremstyle { \l__crthm_creating_apply_style_tl }
+ }
+ {
+ \tl_if_exist:cT { c_crthm_theorem_style_preset_ #1 _tl }
+ {
+ \exp_args:Nv \theoremstyle { c_crthm_theorem_style_preset_ #1 _tl }
+ }
+ }
+ \bool_if:NTF \l__crthm_creating_numberless_bool
+ {
+ \crthm_newtheorem:w*{ #1 _crthm_regional } { \tl_use:c { g_crthm_name_heading_ #1 _ \languagename _tl } }
+ }
+ {
+ \crthm_newtheorem:w { #1 _crthm_regional } [#1] { \tl_use:c { g_crthm_name_heading_ #1 _ \languagename _tl } }
+ }
+ \bool_if:NT \l__crthm_creating_create_starred_bool
+ {
+ \crthm_newtheorem:w*{ #1 * } { \tl_use:c { g_crthm_name_heading_ #1 _ \languagename _tl } }
+ }
+ \group_end:
+ \IfPackageLoadedTF { ntheorem }
+ {
+ \bool_if:NT \l__crthm_creating_qed_bool
+ {
+ \theoremsymbol { }
+ }
+ } {}
+ \NewDocumentEnvironment { #1 } { O{} }
+ % In "regionalref" mode, the counter received by the referencing system is "#1 _crthm_regional"
+ % while in "originalref" mode, the counter received is "#1 _crthm_original_\languagename"
+ {
+ \tl_if_blank:nTF { ##1 }
+ {
+ \begin{ #1 _crthm_regional }
+ }
+ {
+ \begin{ #1 _crthm_regional }[{##1}]
+ }
+ \bool_if:NF \l__crthm_regionalref_bool
+ {
+ \addtocounter { #1 _crthm_original_\languagename } { -1 }
+ \refstepcounter { #1 _crthm_original_\languagename }
+ }
+ }
+ {
+ \end{ #1 _crthm_regional }
+ }
+ \keys_set:nn { create-theorem-creating / counter-management } { #2 }
+
+ \IfPackageLoadedTF { amsthm }
+ {
+ \bool_if:NT \l__crthm_creating_qed_bool
+ {
+ \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl /begin } { crthm } { \cs_set:Npn \qedsymbol { \ensuremath { \l__crthm_creating_qed_tl } } \pushQED{\qed} }
+ \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl /end } { crthm } { \popQED }
+ \bool_if:NT \l__crthm_creating_create_starred_bool
+ {
+ \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl * /begin } { crthm } { \cs_set:Npn \qedsymbol { \ensuremath { \l__crthm_creating_qed_tl } } \pushQED{\qed} }
+ \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl * /end } { crthm } { \popQED }
+ }
+ }
+ } {}
+ }
+ {
+ \msg_error:nnn { create-theorem } { env-not-named } { #1 }
+ }
+ }
+ }
+ }
+
+\cs_new:Nn \__crthm_copy_env:nn
+ {
+ \cs_set_eq:cc { #1 } { #2 }
+ \cs_set_eq:cc { end #1 } { end #2 }
+ }
+\cs_generate_variant:Nn \__crthm_copy_env:nn { ee }
+
+\cs_new:Nn \crthm_counter_within:nn
+ {
+ \counterwithin { #1 } { #2 }
+ }
+\cs_generate_variant:Nn \crthm_counter_within:nn { en }
+
+\cs_new:Nn \crthm_counter_alias:nn
+ {
+ \cs_if_exist:cTF { c@ #2 }
+ {
+ \cs_gset_eq:cc { c@ #1 } { c@ #2 }
+ \cs_gset_eq:cc { the #1 } { the #2 }
+ \cs_gset_eq:cc { theH #1 } { theH #2 }
+ \cs_gset_eq:cc { p@ #1 } { p@ #2 }
+ \cs_gset_eq:cc { cl@ #1 } { cl@ #2 }
+ }
+ {
+ \@nocounterr { #2 }
+ }
+ }
+\cs_generate_variant:Nn \crthm_counter_alias:nn { en }
+
+
+\keys_define:nn { create-theorem-setting }
+ {
+ , name .code:n = { \exp_args:Ne \NameTheorem { \l__crthm_current_env_tl } { #1 } }
+ , name .value_required:n = true
+ , name~style .code:n = { \exp_args:Ne \NameTheorem { \l__crthm_current_env_tl } { #1 } }
+ , name~style .value_required:n = true
+ , name-style .meta:n = { name~style = { #1 } }
+ , name-style .value_required:n = true
+ , name style .meta:n = { name~style = { #1 } }
+ , name style .value_required:n = true
+ , qed .code:n = {
+ \exp_args:Nx \hook_gput_code:nnn { env/ \l__crthm_current_env_tl /begin } { crthm } { \cs_set:Npn \qedsymbol { \ensuremath { #1 } } }
+ }
+ , qed .default:n = \c__crthm_qedsymbol_tl
+ , qed~symbol .meta:n = { qed = #1 }
+ , qed~symbol .default:n = \c__crthm_qedsymbol_tl
+ , qed-symbol .meta:n = { qed = #1 }
+ , qed-symbol .default:n = \c__crthm_qedsymbol_tl
+ , qed symbol .meta:n = { qed = #1 }
+ , qed symbol .default:n = \c__crthm_qedsymbol_tl
+ , parent~counter .code:n = { \crthm_counter_within:en { \l__crthm_current_env_tl } { #1 } }
+ , parent~counter .value_required:n = true
+ , parent-counter .meta:n = { parent~counter = { #1 } }
+ , parent-counter .value_required:n = true
+ , parent counter .meta:n = { parent~counter = { #1 } }
+ , parent counter .value_required:n = true
+ , number~within .meta:n = { parent~counter = { #1 } }
+ , number~within .value_required:n = true
+ , number-within .meta:n = { parent~counter = { #1 } }
+ , number-within .value_required:n = true
+ , number within .meta:n = { parent~counter = { #1 } }
+ , number within .value_required:n = true
+ , shared~counter .code:n = { \crthm_counter_alias:en { \l__crthm_current_env_tl } { #1 } }
+ , shared~counter .value_required:n = true
+ , shared-counter .meta:n = { shared~counter = { #1 } }
+ , shared-counter .value_required:n = true
+ , shared counter .meta:n = { shared~counter = { #1 } }
+ , shared counter .value_required:n = true
+ , number~like .meta:n = { shared~counter = { #1 } }
+ , number~like .value_required:n = true
+ , number-like .meta:n = { shared~counter = { #1 } }
+ , number-like .value_required:n = true
+ , number like .meta:n = { shared~counter = { #1 } }
+ , number like .value_required:n = true
+ , unknown .code:n = {}
+ }
+
+
+\NewDocumentCommand \SetTheorem { m m }
+ {
+ \clist_map_inline:nn { #1 }
+ {
+ \prop_if_in:NnTF \l_crthm_binding_prop { ##1 }
+ {
+ \prop_get:NnN \l_crthm_binding_prop { ##1 } \l__crthm_current_env_tl
+ }
+ {
+ \tl_set:Nn \l__crthm_current_env_tl { ##1 }
+ }
+ \keys_set:nn { create-theorem-setting } { #2 }
+ }
+ }
+
+\prop_new:N \l_crthm_binding_prop
+\NewDocumentCommand \SetTheoremBinding { m m }
+ {
+ \clist_map_inline:nn { #1 }
+ {
+ \prop_put:Nxx \l_crthm_binding_prop { ##1 } { #2 }
+ }
+ }
+
+
+\bool_if:NT \l__crthm_presetname_bool
+ {
+ \input { create-theorem-preset-names }
+ \input { create-theorem-preset-names-plural }
+ }
+
+\endinput
+%%
+%% End of file `create-theorem.sty'.
diff --git a/macros/latex/contrib/create-theorem/create-theorem-doc.pdf b/macros/latex/contrib/create-theorem/doc/create-theorem-doc.pdf
index 6534126f29..b62eea4455 100644
--- a/macros/latex/contrib/create-theorem/create-theorem-doc.pdf
+++ b/macros/latex/contrib/create-theorem/doc/create-theorem-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/create-theorem/create-theorem-doc.tex b/macros/latex/contrib/create-theorem/doc/create-theorem-doc.tex
index 888767dad7..532796dd52 100644
--- a/macros/latex/contrib/create-theorem/create-theorem-doc.tex
+++ b/macros/latex/contrib/create-theorem/doc/create-theorem-doc.tex
@@ -108,7 +108,7 @@
\begin{document}
\def\PackageVersion{2024/02/20}
-\def\PackageSubVersion{}
+\def\PackageSubVersion{a}
\title{\createtheorempackage{}\\\smallskip\itshape Initializing and configuring theorem-like environments, with multilingual support}
\author{Jinwen XU}
@@ -335,7 +335,7 @@ Supported keys are:
\end{itemize}
\begin{tip}
- The names for the following environments have been preset: \texttt{application}, \texttt{assertion}, \texttt{assumption}, \texttt{axiom}, \texttt{claim}, \texttt{conclusion}, \texttt{conjecture}, \texttt{construction}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{notation}, \texttt{observation}, \texttt{postulate}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{recall}, \texttt{remark} and \texttt{theorem}. If you are fine with the preset names, then there is no need to specify the key \textquote{\commandoption{name}} while creating them, otherwise you shall have to use the package option \textquote{\packageoption{no preset names}} to disable the presets and then define your own ones.
+ The names for the following environments (and their plural forms) have been preset: \texttt{application}, \texttt{assertion}, \texttt{assumption}, \texttt{axiom}, \texttt{claim}, \texttt{commentary}, \texttt{conclusion}, \texttt{conjecture}, \texttt{construction}, \texttt{convention}, \texttt{corollary}, \texttt{definition}, \texttt{example}, \texttt{exercise}, \texttt{fact}, \texttt{hypothesis}, \texttt{lemma}, \texttt{motivation}, \texttt{notation}, \texttt{observation}, \texttt{postulate}, \texttt{problem}, \texttt{property}, \texttt{proposition}, \texttt{question}, \texttt{recall}, \texttt{remark} and \texttt{theorem}. If you are fine with the preset names, then there is no need to specify the key \textquote{\commandoption{name}} while creating them, otherwise you shall have to use the package option \textquote{\packageoption{no preset names}} to disable the presets and then define your own ones.
\end{tip}
\medskip
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 873e0b11a4..1128cde18f 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -15,7 +15,7 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2021/11/15]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2024/02/20}{2024ah}
+\ProvidesExplClass{easybook}{2024/02/21}{2024ai}
{Easily typesetting Chinese theses or books}
\bool_set_false:N \l__eb_compile_draft_bool
@@ -297,7 +297,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2021/11/15]
\RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2024/02/20}{2024ah}
+\ProvidesExplPackage{easybase}{2024/02/21}{2024ai}
{Easily typesetting Chinese theses or books}
\cs_generate_variant:Nn \dim_set:Nn { NV }
@@ -1331,6 +1331,7 @@
\cs_new_protected:Npn \SetTocOuter #1
{ \keys_set:nn { eb/tocouter } {#1} }
\tl_new:N \eb@bitoc@title
+\bool_set_false:N \l__eb_toc_notitle_bool
\newbool{bitoc}
\cs_new:Npn \ebifbitoc { \ifbool{bitoc} }
\keys_define:nn { eb/tocouter }
@@ -1344,7 +1345,12 @@
},
section .meta:n = { level = \bisection* },
chapter .meta:n = { level = \bichapter* },
- none .code:n = { },
+ none .code:n =
+ {
+ \tl_set:Nn \eb@toc@title@level
+ { \par\use_none:nn }
+ \bool_set_true:N \l__eb_toc_notitle_bool
+ },
multoc .int_set:N = \l__eb_toc_columns_int,
multoc .default:n = 2,
multoc .initial:n = 1,
@@ -1477,11 +1483,14 @@
\group_begin:
\tl_set_eq:NN \eb@toc@title \contentsname
\tl_set_eq:NN \eb@bitoc@title \bicontentsname
- \tl_set:Nn \eb@toc@title@level
+ \bool_if:NF \l__eb_toc_notitle_bool
{
- \bool_if:NTF \l__eb_class_mode_book_bool
- { \chapter* }
- { \section* }
+ \tl_set:Nn \eb@toc@title@level
+ {
+ \bool_if:NTF \l__eb_class_mode_book_bool
+ { \chapter* }
+ { \section* }
+ }
}
\IfValueT{#3}{\keys_set:nn { eb/tocouter } {#3}}
\bool_if:NT \l__eb_toc_plan_cn_bool
@@ -2379,7 +2388,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2024/02/20}{2024ah}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2024/02/21}{2024ai}
{Customization of tcolorbox for easybook}
\cs_set_protected:Npn \addtotcbstyle #1#2
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index 234d82c590..9d8f968127 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index 5bf1cadc71..122dffdbf4 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -23,8 +23,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK使用手册,
- version = v2024ah,
- date = 2024/02/20,
+ version = v2024ai,
+ date = 2024/02/21,
authors = 瞿毅,
info = 简便地排版中文学位论文或书籍,
email = toquyi@163.com,
@@ -957,6 +957,12 @@
\tableofcontents[level = \chapter*]
\listoffigures[level = \bichapter,title = {图片索引,List of Figures}]
\end{ctexexam}
+ \opt{chapter}
+ 设置目录标题级别为 \code{chapter},与 \keyis{level}{\cs{bichapter}*} 等效。
+ \opt{section}
+ 设置目录标题级别为 \code{section},与 \keyis{level}{\cs{bisection}*} 等效。
+ \opt{none}
+ 不输出目录标题,与带星号参数的目录命令等效。
\keyval{multoc}{整数}\Default{2}
设置目录的排版栏数。\meta{整数} 代表目录栏数,不指定栏数的值则默认为双栏。
\kvsplit{title}{中文目录标题,英文目录标题}
@@ -978,8 +984,12 @@
\end{commands}
\keyval{format}{目录标题格式}
设置目录标题的格式,在标题级别为 \code{chapter} 或者 \cls*{article} 模式且标题级别为 \code{section} 时有效。
+ \keyval{aftername}{标签后代码}
+ 目录标题的标签与内容之间插入的代码,生效情形同上。
\keyval{aftertitle}{标题后代码}
- 目录标题文本之后插入的代码,生效情形同上。
+ 目录标题内容之后插入的代码,生效情形同上。
+ \keyval{break}{格式命令}
+ 控制章节标题与之前正文的分隔关系。一般用于设置是否在标题之前分页或者设置行间罚点,生效情形同上。
\keyval{pagestyle}{页面风格}\Default{empty}
目录标题所在页的页面格式,仅当目录以 \code{chapter} 级别输出时有效。除了上述选项还支持 \CTeX 键值列表路径 \module*{chapter} 或 \module*{section} 所有的章节标题样式选项。
\end{options}
@@ -1391,7 +1401,7 @@
\shortversion{v = 1.638,date = 2022/03/04,changes = 增加目录条目样式选项注册命令 \cs{RegisterTocName}。}
\shortversion{v = 1.644,date = 2022/03/10,changes = 增加浮动环境目录声明命令 \cs{DeclareFloatList} 配合 \pkg*{caption} 宏包。}
\shortversion{v = 1.682,date = 2022/05/01,changes = 将迷你页判断命令 \cs{notminipage} 改为被保护命令兼容 \pkg*{circledtext} 宏包。}
- \begin{version}[v = 2024ah,date = 2024/02/20]
+ \begin{version}[v = 2024ai,date = 2024/02/21]
\fixed
\item 修复图表等浮动环境题注目录中条目标签编号的计数器值显示错误问题。
\item 修复附录命令 \cs{appendix} 的可选参数设置英文目录中条目名字和编号失效的问题。
diff --git a/macros/latex/contrib/homework/README.md b/macros/latex/contrib/homework/README.md
index f423470c23..4014e4ef49 100644
--- a/macros/latex/contrib/homework/README.md
+++ b/macros/latex/contrib/homework/README.md
@@ -1,4 +1,4 @@
-<!-- Copyright (C) 2023 by Jinwen XU -->
+<!-- Copyright (C) 2023-2024 by Jinwen XU -->
# `homework`, a LaTeX class for writing your homework
@@ -17,7 +17,7 @@ The current document class is for writing homework or assignment. It has the fol
### How to install this package
-If you are using TeX Live 2024 or newer, or the most recent version of MikTeX, then this package should already be included, and you don't need to do anything.
+If you are using TeX Live 2024 or newer, or the most recent version of MiKTeX, then this package should already be included, and you don't need to do anything.
Otherwise, you need to check for package update to see if you can receive it. In case not, you can always go to [the CTAN page](https://ctan.org/pkg/homework) to download the `.zip` file with all related files included.
@@ -229,7 +229,9 @@ A new counter named `homework` is defined, which is shared by the environments `
Therefore, if you wish to manually change the numbering, you may directly access the value of the counter `homework`. Also, each theorem-type environment has its own counter, thus it would still work if you write `\setcounter{exercise}{10}`, but this would also affect the numbering of `problem` and `question`, so don't forget to reset the value as needed.
-If you wish them to be numbered separately, you may define new counters, say `problem-counter`, `question-counter` and `exercise-counter` via
+Alternatively, you may use the command `\ManualNumbering{⟨env⟩}{⟨number⟩}`. For example, `\ManualNumbering{exercise}{A.1.1}` will change the number of the next exercise to `A.1.1`, but after that the numbering shall go back to the normal one.
+
+If you wish these environments to be numbered separately, you may define new counters, say `problem-counter`, `question-counter` and `exercise-counter` via
```latex
\newcounter{problem-counter}
\newcounter{question-counter}
diff --git a/macros/latex/contrib/homework/homework-demo-cn.pdf b/macros/latex/contrib/homework/homework-demo-cn.pdf
index 7fe3b2a5da..688c0e5417 100644
--- a/macros/latex/contrib/homework/homework-demo-cn.pdf
+++ b/macros/latex/contrib/homework/homework-demo-cn.pdf
Binary files differ
diff --git a/macros/latex/contrib/homework/homework-demo-cn.tex b/macros/latex/contrib/homework/homework-demo-cn.tex
index d3a384464f..66db59d7be 100644
--- a/macros/latex/contrib/homework/homework-demo-cn.tex
+++ b/macros/latex/contrib/homework/homework-demo-cn.tex
@@ -23,7 +23,7 @@
\author{作者}
% \date{\today,地点}
% \date{\today[only-year-month],地点}
-\date{\TheDate{2023-12-25},地点}
+\date{\TheDate{2024-01-01},地点}
\begin{document}
@@ -75,7 +75,7 @@
\end{answer}
-\enlargethispage*{3\baselineskip}
+\enlargethispage*{\baselineskip}
\bigskip\textcolor{gray!55}{(或者如果你更喜欢传统的证明样式…)}
@@ -124,6 +124,18 @@
\end{problem}
+\bigskip\textcolor{gray!55}{(如果你希望手动编号一个习题…)}
+
+\ManualNumbering{exercise}{A.1.1}
+\begin{exercise}[一个手动编号的习题]
+ 使用 \cverb|\ManualNumbering| 以手动对某个习题进行编号。这个编号只会影响下一个被指定的环境。
+\end{exercise}
+
+\begin{exercise}
+ 之后编号便会恢复正常。
+\end{exercise}
+
+
\bigskip\textcolor{gray!55}{(如果你有暂时解决不出来的问题…)}
\DNF<一些描述>
diff --git a/macros/latex/contrib/homework/homework-demo-de.pdf b/macros/latex/contrib/homework/homework-demo-de.pdf
index babea3d748..c7fe34bb5d 100644
--- a/macros/latex/contrib/homework/homework-demo-de.pdf
+++ b/macros/latex/contrib/homework/homework-demo-de.pdf
Binary files differ
diff --git a/macros/latex/contrib/homework/homework-demo-de.tex b/macros/latex/contrib/homework/homework-demo-de.tex
index 4bd1e27e08..f5a8bd8a03 100644
--- a/macros/latex/contrib/homework/homework-demo-de.tex
+++ b/macros/latex/contrib/homework/homework-demo-de.tex
@@ -23,7 +23,7 @@
\author{Vorname NAME}
% \date{\today, der Standort}
% \date{\today[only-year-month], der Standort}
-\date{\TheDate{2023-12-25}, der Standort}
+\date{\TheDate{2024-01-01}, der Standort}
\begin{document}
@@ -75,9 +75,7 @@
\end{answer}
-\enlargethispage*{3\baselineskip}
-
-
+\enlargethispage{.5\baselineskip}
\bigskip\textcolor{gray!55}{(Wenn Sie den klassischen Proof-Stil bevorzugen ...)}
\begin{proof}
@@ -124,6 +122,18 @@
\end{problem}
+\bigskip\textcolor{gray!55}{(Wenn Sie die Übung manuell nummerieren möchten...)}
+
+\ManualNumbering{exercise}{A.1.1}
+\begin{exercise}[Eine Übung mit manuell festgelegter Nummerierung]
+ Verwenden Sie \cverb|\ManualNumbering| um die Nummerierung manuell festzulegen. Diese Nummerierung wird erst auf die nächste angegebene Umgebung angewendet.
+\end{exercise}
+
+\begin{exercise}
+ Zurück zur normalen Nummerierung.
+\end{exercise}
+
+
\bigskip\textcolor{gray!55}{(Wenn es eine Frage gibt, für die Sie im Moment keine Lösung finden können ...)}
\DNF<etwas Beschreibung>
diff --git a/macros/latex/contrib/homework/homework-demo-en.pdf b/macros/latex/contrib/homework/homework-demo-en.pdf
index 759e72359a..fd25fd5cf5 100644
--- a/macros/latex/contrib/homework/homework-demo-en.pdf
+++ b/macros/latex/contrib/homework/homework-demo-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/homework/homework-demo-en.tex b/macros/latex/contrib/homework/homework-demo-en.tex
index c41d49ba46..ef63ba7c27 100644
--- a/macros/latex/contrib/homework/homework-demo-en.tex
+++ b/macros/latex/contrib/homework/homework-demo-en.tex
@@ -20,7 +20,7 @@
\author{Author NAME}
% \date{\today, Location}
% \date{\today[only-year-month], Location}
-\date{\TheDate{2023-12-25}, Location}
+\date{\TheDate{2024-01-01}, Location}
\begin{document}
@@ -72,9 +72,6 @@
\end{answer}
-\enlargethispage*{\baselineskip}
-
-
\bigskip\textcolor{gray!55}{(If you prefer the classical proof style...)}
\begin{proof}
@@ -121,6 +118,18 @@
\end{problem}
+\bigskip\textcolor{gray!55}{(If you wish to number the exercise manually...)}
+
+\ManualNumbering{exercise}{A.1.1}
+\begin{exercise}[An exercise with custom numbering]
+ Use \cverb|\ManualNumbering| to manually set the numbering. This number will only be applied to the next specified environment.
+\end{exercise}
+
+\begin{exercise}
+ Back to normal numbering.
+\end{exercise}
+
+
\bigskip\textcolor{gray!55}{(If there is a question that you can't figure out how to solve at the moment...)}
\DNF<some description>
diff --git a/macros/latex/contrib/homework/homework-demo-es.pdf b/macros/latex/contrib/homework/homework-demo-es.pdf
index 74000d7714..338081b142 100644
--- a/macros/latex/contrib/homework/homework-demo-es.pdf
+++ b/macros/latex/contrib/homework/homework-demo-es.pdf
Binary files differ
diff --git a/macros/latex/contrib/homework/homework-demo-es.tex b/macros/latex/contrib/homework/homework-demo-es.tex
index dd670413eb..7cdf65cac5 100644
--- a/macros/latex/contrib/homework/homework-demo-es.tex
+++ b/macros/latex/contrib/homework/homework-demo-es.tex
@@ -23,7 +23,7 @@
\author{Nombre APELLIDO}
% \date{\today, Ubicación}
% \date{\today[only-year-month], Ubicación}
-\date{\TheDate{2023-12-25}, Ubicación}
+\date{\TheDate{2024-01-01}, Ubicación}
\begin{document}
@@ -75,9 +75,6 @@
\end{answer}
-\enlargethispage*{\baselineskip}
-
-
\bigskip\textcolor{gray!55}{(Si prefiere el estilo clásico de prueba...)}
\begin{proof}
@@ -124,6 +121,18 @@
\end{problem}
+\bigskip\textcolor{gray!55}{(Si desea numerar el ejercicio manualmente...)}
+
+\ManualNumbering{exercise}{A.1.1}
+\begin{exercise}[Un ejercicio con numeración especificada manualmente]
+ Utilice \cverb|\ManualNumbering| para configurar manualmente la numeración. Esta numeración sólo se aplicará al siguiente entorno especificado.
+\end{exercise}
+
+\begin{exercise}
+ Volver a la numeración normal.
+\end{exercise}
+
+
\bigskip\textcolor{gray!55}{(Si hay una pregunta que no sabe cómo resolver en este momento...)}
\DNF<alguna descripción>
diff --git a/macros/latex/contrib/homework/homework-demo-fr.pdf b/macros/latex/contrib/homework/homework-demo-fr.pdf
index 4ba306c271..b878009cb8 100644
--- a/macros/latex/contrib/homework/homework-demo-fr.pdf
+++ b/macros/latex/contrib/homework/homework-demo-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/homework/homework-demo-fr.tex b/macros/latex/contrib/homework/homework-demo-fr.tex
index 58f6677505..cde6ed054d 100644
--- a/macros/latex/contrib/homework/homework-demo-fr.tex
+++ b/macros/latex/contrib/homework/homework-demo-fr.tex
@@ -23,7 +23,7 @@
\author{Prénom NOM}
% \date{\today, Lieu}
% \date{\today[only-year-month], Lieu}
-\date{\TheDate{2023-12-25}, Lieu}
+\date{\TheDate{2024-01-01}, Lieu}
\begin{document}
@@ -75,9 +75,6 @@
\end{answer}
-\enlargethispage*{2\baselineskip}
-
-
\bigskip\textcolor{gray!55}{(Si vous préférez le style classique...)}
\begin{proof}
@@ -124,6 +121,18 @@
\end{problem}
+\bigskip\textcolor{gray!55}{(Si vous souhaitez numéroter l'exercice manuellement...)}
+
+\ManualNumbering{exercise}{A.1.1}
+\begin{exercise}[Un exercice avec une numérotation manuelle]
+ Utilisez \cverb|\ManualNumbering| pour configurer manuellement la numérotation. Cette numérotation ne sera appliquée qu'au prochain environnement spécifié.
+\end{exercise}
+
+\begin{exercise}
+ Retour à la numérotation normale.
+\end{exercise}
+
+
\bigskip\textcolor{gray!55}{(S'il y a une question que vous n'arrivez pas à résoudre pour le moment...)}
\DNF<la description>
diff --git a/macros/latex/contrib/homework/homework-demo-jp.pdf b/macros/latex/contrib/homework/homework-demo-jp.pdf
index 7b8a6ae7cb..c2e1a7d6ae 100644
--- a/macros/latex/contrib/homework/homework-demo-jp.pdf
+++ b/macros/latex/contrib/homework/homework-demo-jp.pdf
Binary files differ
diff --git a/macros/latex/contrib/homework/homework-demo-jp.tex b/macros/latex/contrib/homework/homework-demo-jp.tex
index 16e797f014..a58c04bfda 100644
--- a/macros/latex/contrib/homework/homework-demo-jp.tex
+++ b/macros/latex/contrib/homework/homework-demo-jp.tex
@@ -23,7 +23,7 @@
\author{著者名}
% \date{\today、所在地}
% \date{\today[only-year-month]、所在地}
-\date{\TheDate{2023-12-25}、所在地}
+\date{\TheDate{2024-01-01}、所在地}
\begin{document}
@@ -76,6 +76,9 @@
\end{answer}
+\enlargethispage*{2\baselineskip}
+
+
\bigskip\textcolor{gray!55}{(伝統的な証明スタイルがお好みなら…)}
\begin{proof}
@@ -122,6 +125,18 @@
\end{problem}
+\bigskip\textcolor{gray!55}{(練習に手動で番号を付けたい場合は…)}
+
+\ManualNumbering{exercise}{A.1.1}
+\begin{exercise}[手動で番号を付けた練習]
+ \cverb|\ManualNumbering| を使用して、手動で練習に番号を付けます。この番号付けは、次に指定された環境にのみ影響します。
+\end{exercise}
+
+\begin{exercise}
+ その後、番号付けは通常に戻ります。
+\end{exercise}
+
+
\bigskip\textcolor{gray!55}{(一時的に解決できない問題がある場合は…)}
\DNF<いくつかの説明>
diff --git a/macros/latex/contrib/homework/homework-demo-tc.pdf b/macros/latex/contrib/homework/homework-demo-tc.pdf
index de5ad59d7b..304988bf83 100644
--- a/macros/latex/contrib/homework/homework-demo-tc.pdf
+++ b/macros/latex/contrib/homework/homework-demo-tc.pdf
Binary files differ
diff --git a/macros/latex/contrib/homework/homework-demo-tc.tex b/macros/latex/contrib/homework/homework-demo-tc.tex
index 4779b43ef2..ba6362ff90 100644
--- a/macros/latex/contrib/homework/homework-demo-tc.tex
+++ b/macros/latex/contrib/homework/homework-demo-tc.tex
@@ -23,7 +23,7 @@
\author{作者}
% \date{\today,地點}
% \date{\today[only-year-month],地點}
-\date{\TheDate{2023-12-25},地點}
+\date{\TheDate{2024-01-01},地點}
\begin{document}
@@ -75,7 +75,7 @@
\end{answer}
-\enlargethispage*{3\baselineskip}
+\enlargethispage*{\baselineskip}
\bigskip\textcolor{gray!55}{(或者如果你更喜歡傳統的證明樣式…)}
@@ -124,6 +124,18 @@
\end{problem}
+\bigskip\textcolor{gray!55}{(如果你希望手動編號一個習題…)}
+
+\ManualNumbering{exercise}{A.1.1}
+\begin{exercise}[一個手動編號的習題]
+ 使用 \cverb|\ManualNumbering| 以手動對某個習題進行編號。 這個編號只會影響下一個被指定的環境。
+\end{exercise}
+
+\begin{exercise}
+ 之後編號便會恢復正常。
+\end{exercise}
+
+
\bigskip\textcolor{gray!55}{(如果你有暫時解決不出來的問題…)}
\DNF<一些描述>
diff --git a/macros/latex/contrib/homework/homework-example-sheet-answer.pdf b/macros/latex/contrib/homework/homework-example-sheet-answer.pdf
index 482094bf5d..95087bb856 100644
--- a/macros/latex/contrib/homework/homework-example-sheet-answer.pdf
+++ b/macros/latex/contrib/homework/homework-example-sheet-answer.pdf
Binary files differ
diff --git a/macros/latex/contrib/homework/homework-example-sheet.pdf b/macros/latex/contrib/homework/homework-example-sheet.pdf
index f73aace2fe..add807e9af 100644
--- a/macros/latex/contrib/homework/homework-example-sheet.pdf
+++ b/macros/latex/contrib/homework/homework-example-sheet.pdf
Binary files differ
diff --git a/macros/latex/contrib/homework/homework-example-sheet.tex b/macros/latex/contrib/homework/homework-example-sheet.tex
index 050898e251..6428b55400 100644
--- a/macros/latex/contrib/homework/homework-example-sheet.tex
+++ b/macros/latex/contrib/homework/homework-example-sheet.tex
@@ -20,7 +20,7 @@
\\
Course ID \& Course Name
\hfill
- Year 2023--24
+ Year 2024--25
}
\title{%
@@ -28,7 +28,7 @@
}
\author{}
\date{%
- % \TheDate{2023-12-25}
+ % \TheDate{2024-01-01}
}
diff --git a/macros/latex/contrib/homework/homework.cls b/macros/latex/contrib/homework/homework.cls
index 914ff614cf..576cd35453 100644
--- a/macros/latex/contrib/homework/homework.cls
+++ b/macros/latex/contrib/homework/homework.cls
@@ -1,6 +1,6 @@
%%
-%% Copyright (C) 2023 by Jinwen XU
-%% -------------------------------
+%% Copyright (C) 2023-2024 by Jinwen XU
+%% ------------------------------------
%%
%% This file may be distributed and/or modified under the conditions of
%% the LaTeX Project Public License, either version 1.3c of this license
@@ -12,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{homework}
- {2023/10/15a} {}
+ {2024/02/21} {}
{Document class for writing homework}
\keys_define:nn { homework }
@@ -289,7 +289,24 @@
\newcounter { homework }
\SetTheorem { problem, question, exercise } { shared counter = homework }
-\SetTheorem { definition, lemma, theorem, proposition, corollary, example, fact, remark, assertion, assumption, claim, conclusion, conjecture, construction, convention, notation, observation, property, recall } { number within = homework }
+\SetTheorem { definition, lemma, theorem, proposition, corollary, example, fact, remark, assertion, assumption, claim, commentary, conclusion, conjecture, construction, convention, hypothesis, motivation, notation, observation, postulate, property, recall } { number within = homework }
+\SetTheorem { definitions, lemmas, theorems, propositions, corollaries, examples, facts, remarks, assertions, assumptions, claims, commentaries, conclusions, conjectures, constructions, conventions, hypotheses, motivations, notations, observations, postulates, properties, recalls } { number within = homework }
+
+%%================================
+%% Custom numbering
+%%================================
+
+\tl_new:N \l__homework_counter_backup_tl
+\NewDocumentCommand \ManualNumbering { m m }
+ {
+ \addtocounter { #1 } { -1 }
+ \tl_set_eq:Nc \l__homework_counter_backup_tl { the #1 }
+ \tl_set:cn { the #1 } { #2 }
+ \hook_gput_next_code:nn { env/#1/after }
+ {
+ \tl_set_eq:cN { the #1 } \l__homework_counter_backup_tl
+ }
+ }
%%================================
%% Hide solution
diff --git a/macros/latex/contrib/listings/Makefile b/macros/latex/contrib/listings/Makefile
index 49750393d3..58c4c25478 100644
--- a/macros/latex/contrib/listings/Makefile
+++ b/macros/latex/contrib/listings/Makefile
@@ -2,10 +2,10 @@
#
# This file generates files required to use the listings package.
#
-# $Id$
+# Time-stamp: <2024-02-15 20:02:38 ax006ho>
#
# (c) 2007 Brooks Moses
-# (c) 2013-2018 Jobst Hoffmann
+# (c) 2013- Jobst Hoffmann
#
# This file is distributed under the terms of the LaTeX Project Public
# License from CTAN archives in directory macros/latex/base/lppl.txt.
@@ -36,7 +36,7 @@ DISTRIBUTION_FILES = ../$(PACKAGE)/$(PACKAGE).pdf \
../$(PACKAGE)/README \
../$(PACKAGE)/Makefile \
../$(PACKAGE)/lstdrvrs.dtx \
- ../$(PACKAGE)/lstdrvrs.pdf
+ ../$(PACKAGE)/lstdrvrs.pdf
PACKAGE_FILES = $(subst ../$(PACKAGE)/,,$(DISTRIBUTION_FILES))
STY_FILES = listings.cfg listings.sty lstmisc.sty \
lstlang0.sty lstlang1.sty lstlang2.sty
@@ -59,7 +59,7 @@ listings.sty: listings.ins listings.dtx lstdrvrs.dtx
$(TEX) $<
listings.pdf: listings.sty
- echo "\PassOptionsToClass{a4paper}{article}" > ltxdoc.cfg
+ echo "\PassOptionsToClass{a4paper}{ltxdoc}" > ltxdoc.cfg
$(LATEX) ${<:.sty=.dtx}
$(MAKEINDEX) -s gind.ist ${@:.pdf=}
$(LATEX) ${<:.sty=.dtx}
@@ -67,7 +67,7 @@ listings.pdf: listings.sty
rm -f ltxdoc.cfg
listings-devel.pdf: listings.sty
- echo "\PassOptionsToClass{a4paper}{article}" > ltxdoc.cfg
+ echo "\PassOptionsToClass{a4paper}{ltxdoc}" > ltxdoc.cfg
echo "\AtBeginDocument{\AlsoImplementation}" >> ltxdoc.cfg
$(LATEX) -jobname=${@:.pdf=} ${<:.sty=.dtx}
$(MAKEINDEX) -s gind.ist ${@:.pdf=}
@@ -76,7 +76,7 @@ listings-devel.pdf: listings.sty
rm -f ltxdoc.cfg
lstdrvrs.pdf: lstdrvrs.dtx
- echo "\PassOptionsToClass{a4paper}{article}" > ltxdoc.cfg
+ echo "\PassOptionsToClass{a4paper}{ltxdoc}" > ltxdoc.cfg
$(LATEX) ${<:.sty=.dtx}
$(MAKEINDEX) -s gind.ist lstdrvrs
$(LATEX) ${<:.sty=.dtx}
diff --git a/macros/latex/contrib/listings/listings-devel.pdf b/macros/latex/contrib/listings/listings-devel.pdf
index 4febb79f4e..77335799e1 100644
--- a/macros/latex/contrib/listings/listings-devel.pdf
+++ b/macros/latex/contrib/listings/listings-devel.pdf
Binary files differ
diff --git a/macros/latex/contrib/listings/listings.dtx b/macros/latex/contrib/listings/listings.dtx
index c507ab5fc1..c336295db5 100644
--- a/macros/latex/contrib/listings/listings.dtx
+++ b/macros/latex/contrib/listings/listings.dtx
@@ -40,10 +40,12 @@
\DisableCrossrefs
\OnlyDescription
-\usepackage{lstdoc,textcomp}
+\usepackage{lstdoc} % the basic support package for generating
+ % the documentation of this package
+\usepackage{textcomp} % needed for upquote apostrophes
\usepackage{mdframed} % frames for external files
\usepackage{moreverb} % writing external files
-\usepackage{xcolor} % because of colouring the background
+\usepackage{xcolor} % because of coloring the background
\makeindex
@@ -115,7 +117,7 @@
%^^A =============================================
%^^A
%\newbox\abstractbox
-%\setbox\abstractbox=\vbox{
+%\setbox\abstractbox=\vbox{%
% \begin{abstract}
% The \packagename{listings} package is a source code printer for \LaTeX.
% You can typeset stand alone files as well as listings with an environment
@@ -125,7 +127,7 @@
% language isn't already supported, you can make your own definition.
% \end{abstract}}
%
-% \title{\vspace*{-2\baselineskip}The \textsf{Listings} Package}
+% \title{\vspace*{-2\baselineskip}The \packagename{Listings} Package}
% \author{Copyright 1996--2004, Carsten Heinz%
% \\ Copyright 2006--2007, Brooks Moses
% \\ Copyright 2013--, Jobst Hoffmann
@@ -133,7 +135,7 @@
% Hoffmann became the maintainer of the \packagename{listings}
% package in 2013; see the Preface for details.}~ %
% \textless\lstemail\textgreater}
-% \date{2023/02/27\enspace\enspace Version 1.9\ \box\abstractbox}
+% \date{2024/02/21\enspace\enspace Version 1.10\ \box\abstractbox}
% \def\lstemail{\href{mailto:j.hoffmann@fh-aachen.de}{\texttt{j.hoffmann(at)fh-aachen.de}}}
% \ifhyper
% \hypersetup{pdftitle=The Listings Package,
@@ -2628,9 +2630,10 @@
% \item[1.1,false]
% \rkeyname{upquote}|=|\meta{\alternative{true,false}}\label{uoption:upquote}
%
-% determines whether the left and right quote are printed |`'| or
-% \texttt{\textasciigrave\textquotesingle}. This key requires the
-% \packagename{textcomp} package if true.
+% determines whether the left and right quote are printed |`'| (false) or
+% \texttt{\textasciigrave\textquotesingle} (true). This key requires the
+% \packagename{textcomp} package if true, for more information have a
+% look at page \pageref{sec:upquote}.
%
% \item[0.12,8] \rkeyname{tabsize}|=|\meta{number}
%
@@ -2790,8 +2793,12 @@
% \item[0.16] \rcmdname\lstlistoflistings
%
% prints a list of listings. Each entry is with descending priority
-% either the short caption, the caption, the file name or the name of the
-% listing, see also the key \keyname{name} in section \ref{rLineNumbers}.
+% either the short caption, the caption, the file name, or the name of
+% the listing, see also the key \keyname{name} in section
+% \ref{rLineNumbers}. From version v1.10 of this package on the list of
+% listings can be prepared by means of the \packagename{tocbasic} package
+% \cite[Chapter 15]{Kohm:scrguide}, for more information have a look at
+% page \pageref{sec:tocbasic}.
%
% \item[1.0] \rkeyname{nolol}|=|\meta{\alternative{true,false}}\syntaxor\rkeyname{nolol}
%
@@ -2811,7 +2818,7 @@
% simple way, something like |\small|, |\bfseries| or a combination
% of several commands. If there is a need for a complete
% customization of the label (justification, fonts, margins, \ldots),
-% one should use the \textsf{caption} package by A.~Sommerfeldt
+% one should use the \packagename{caption} package by A.~Sommerfeldt
% \cite{Sommerfeldt:caption}.
%
% \item[0.20,\arabic{lstlisting},data] \rcmdname\thelstlisting
@@ -3259,7 +3266,7 @@
% Expand that list yourself and mail me about new items.
%
%
-% \subsection{Interface to \textsf{fancyvrb}}
+% \subsection{Interface to \packagename{fancyvrb}}
%
% The \packagename{fancyvrb} package---fancy verbatims---from Timothy van Zandt
% provides macros for reading, writing and typesetting verbatim code. It has
@@ -3924,7 +3931,7 @@
% \end{TODO}
%
%
-% \subsection{\textsf{LGrind} definitions}\label{rLGrindDefinitions}
+% \subsection{\packagename{LGrind} definitions}\label{rLGrindDefinitions}
%
% Yes, it's a nasty idea to steal language definitions from other programs.
% Nevertheless, it's possible for the \packagename{LGrind} definition
@@ -4487,28 +4494,69 @@
% make pdf-devel\end{verbatim}
% gives the same result---it is called \texttt{listings-devel.pdf}.
%
+%
+% \subsubsection*{How to copy and paste from a document}
+% \label{sec:upquote}
+% If you want to provide a document containing listings formatted by this
+% package (\packagename{listings}) as source for copy and paste, you should
+% be sure to set the key |upquote| to |true| and have
+% |\usepackage{textcomp}| in the preamble of the document. Otherwise the
+% pair |`'| of curly quotation marks is associated with Unicode positions
+% U+2018 and U+2019 \cite{CovingtonMittelbachKuhn:upquote}. These
+% characters are seldom used as delimiters in modern programming languages.
+%
+%
+% \subsubsection*{How to change the layout of the list of listings}
+% \label{sec:tocbasic}
+% If you put the command |\lstlistoflistings| into your document, the list
+% of listings is automatically generated and printed at that point. If you
+% are using the standard \LaTeX{} classes the list is prepared by
+% |\addtocontents| commands or a variation, if you also load the package
+% \packagename{float}. In both cases the layout is the one defined by
+% L. Lamport.
+%
+% If you want to change the layout of this list, you can use the package
+% \packagename{tocbasic} as described in \cite[Chapter
+% 15.3]{Kohm:scrguide}. \packagename{tocbasic} is automatically loaded, if
+% you are using one of the KOMA classes.
+%
+%
% \makeatletter
%^^A \def\index@prologue{\section*{Index}\markboth{Index}{Index}}
% \def\index@prologue{\part{Index}\markboth{Index}{Index}}
% \makeatother
%^^A \StopEventually{\lstcheckreference\setcounter{IndexColumns}{2}\PrintIndex}
% \StopEventually{%
+% \nocite{MF23}
% \begin{thebibliography}{MDB01}
%
+% \bibitem[CMK12]{CovingtonMittelbachKuhn:upquote}
+% Michael A. Covington, Frank Mittelbach and Markus G. Kuhn.
+% \newblock{\packagename{upquote} -- upright-quote and grave-accent glyphs
+% in verbatim}, 2012.
+%
% \bibitem[DS13]{DanielSchubert:mdframed}
% Marco Daniel and Elke Schubert.
-% \newblock{The \textsf{mdframed} package}, 2013.
+% \newblock{The \packagename{mdframed} package}, 2013.
%
% \bibitem[Fai11]{Fairbairns:moreverb}
% Robin Fairbairns.
-% \newblock{The \textsf{moreverb} package}, 2011.
+% \newblock{The \packagename{moreverb} package}, 2011.
+%
+% \bibitem[Koh23]{Kohm:scrguide}
+% Markus Kohm.
+% \newblock{KOMA-Script -- The Guide}, 2023.
+%
+% \bibitem[MF23]{MittelbachFischer:companion}
+% Frank Mittelbach and Ulrike Fischer.
+% \newblock{The \LaTeX-Companion} Part I and II, 2023.
%
% \bibitem[Mi04]{Mittelbach:companion}
% Frank Mittelbach, Michel Goossens, Johannes Braams,
% David P. Carlisle, and Chris Rowley.
% \newblock{The \LaTeX-Companion}, 2004.
%
-% \bibitem[Som11]{Sommerfeldt:captions}
+% \bibitem[Som11]{Sommerfeldt:caption}
% Axel Sommerfeldt.
% \newblock{Customizing captions of floating environments}, 2011.
% \end{thebibliography}
@@ -5930,7 +5978,7 @@
% \part{Implementation}
%
%
-% \CheckSum{12388}
+% \CheckSum{12409}
%^^A
%^^A Don't index TeX-primitives.
%^^A
@@ -6074,8 +6122,8 @@
% All files will have same date and version.
% \begin{macrocode}
%<*kernel|misc|doc>
-\def\filedate{2023/02/27}
-\def\fileversion{1.9}
+\def\filedate{2024/02/21}
+\def\fileversion{1.10}
%</kernel|misc|doc>
% \end{macrocode}
% What we need and who we are.
@@ -6102,13 +6150,13 @@
%<*misc>
\ProvidesFile{lstmisc.sty}
[\filedate\space\fileversion\space(Carsten Heinz)]
-\lst@CheckVersion\fileversion
+\lst@CheckVersion\fileversion%
{\typeout{^^J%
***^^J%
*** This file requires `listings.sty' version \fileversion.^^J%
- *** You have a serious problem, so I'm exiting ...^^J%
+ *** You have a serious problem, so I'm exiting...^^J%
***^^J}%
- \batchmode \@@end}
+ \batchmode\@@end}
%</misc>
% \end{macrocode}
% or by the dummy patch.
@@ -7205,7 +7253,7 @@
% \end{macro}
%
%
-% \subsection{Interfacing with \textsf{keyval}}
+% \subsection{Interfacing with \packagename{keyval}}
%
% The \packagename{keyval} package passes the value via the one and only
% paramater |#1| to the definition part of the key macro. The following
@@ -8155,7 +8203,7 @@
% \begin{macro}{\lst@DoNewLines}
% First we take care of |\lst@maxempty| and then of the remaining empty lines.
% \begin{macrocode}
-\def\lst@DoNewLines{
+\def\lst@DoNewLines{%
\@whilenum\lst@newlines>\lst@maxempty \do
{\lst@ifpreservenumber
\lsthk@OnEmptyLine
@@ -8885,6 +8933,7 @@
\lst@ProcessOther {"5C}{\lst@ttfamily{\char92}\textbackslash}
\lst@ProcessOther {"5E}\textasciicircum
\lst@ProcessLetter{"5F}{\lst@ttfamily{\char95}\textunderscore}
+ % or \char"5F
\lst@ProcessOther {"60}{\lst@ifupquote \textasciigrave
\else \char96\relax \fi}
\lst@ProcessOther {"7B}{\lst@ttfamily{\char123}\textbraceleft}
@@ -10622,7 +10671,7 @@
% Same as |\lst@CDefX| but we both make |#1| active and assign a new catcode.
% \begin{macrocode}
\gdef\lst@ActiveCDefX#1{\lst@ActiveCDefX@#1}
-\gdef\lst@ActiveCDefX@#1#2#3{
+\gdef\lst@ActiveCDefX@#1#2#3{%
\catcode`#1\active\lccode`\~=`#1%
\lowercase{\lst@CDefIt~}{#2}{#3}{}}
% \end{macrocode}
@@ -13226,7 +13275,7 @@
% of background color to the left of the margin is now drawn before the left
% side of the frame is drawn, so that they overlap correctly in Acrobat.
%
-% \begin{macro}{\lst@frameMakeVBox}
+% \begin{macro}{\lst@frameMakeBoxV}
% \begin{macrocode}
\gdef\lst@frameMakeBoxV#1#2#3{%
\setbox#1\hbox{%
@@ -13711,6 +13760,7 @@
%
%
% \section{Typesetting a listing}
+% \label{sec:typesetting-listing}
%
% \begingroup
% \begin{macrocode}
@@ -13743,7 +13793,22 @@
% \end{lstkey}
% \end{lstkey}
% \end{lstkey}
+%
+% \begin{lstkey}{nolol}
+% is just another key with an obvious meaning here. We'll use it below,
+% of course.
+% \begin{macrocode}
+\lst@Key{nolol}{false}[t]{\lstKV@SetIf{#1}\lst@ifnolol}
+\def\lst@nololtrue{\let\lst@ifnolol\iftrue}
+\let\lst@ifnolol\iffalse % init
+% \end{macrocode}
+% \end{lstkey}
% \end{macro}
+%
+%
+% \subsection{Dealing with lineranges}
+% \label{sec:lineranges}
+%
% The following code is just copied from the current development version, and
% from the |lstpatch.sty| file that Carsten left in version 1.3b for doing
% line ranges with numbers and range markers. It uses some more keys:
@@ -13794,7 +13859,7 @@
% \end{macrocode}
% Splitting the comma separated list of pairs is done by
% \begin{macrocode}
-\def\lst@GLI#1,#2\@nil{%
+\def\lst@GLI#1,#2\@nil{% GLI: get line interval
% \end{macrocode}
% The list is split into two parts: the first element (\#1) of the list and
% the rest of the list (\#2) which is stored in |\lst@linerange| to be
@@ -13911,21 +13976,23 @@
% \begin{macrocode}
\def\lst@DefRangeB#1#2{\lst@DefRangeB@#1#2}
\def\lst@DefRangeB@#1#2#3#4{%
- \lst@CDef{#1{#2}{#3}}#4{}%
- {\lst@ifincluderangemarker
- \lst@LeaveMode
- \let#1#4%
- \lst@DefRangeEnd
- \lst@InitLstNumber
- \else
- \@tempcnta\lst@lineno \advance\@tempcnta\@ne
- \edef\lst@firstline{\the\@tempcnta\relax}%
- \gdef\lst@OnceAtEOL{\let#1#4\lst@DefRangeEnd}%
- \lst@InitLstNumber
- \fi
- \global\let\lst@DefRange\lst@DefRangeEnd
- \lst@CArgEmpty}%
- \@empty}
+ \lst@CDef{#1{#2}{#3}}#4{}{%
+ \lst@ifincluderangemarker
+ \lst@LeaveMode
+ \let#1#4%
+ \lst@DefRangeEnd
+ \lst@InitLstNumber
+ \else
+ \@tempcnta\lst@lineno \advance\@tempcnta\@ne
+ \edef\lst@firstline{\the\@tempcnta\relax}%
+ \gdef\lst@OnceAtEOL{\let#1#4\lst@DefRangeEnd}%
+ \lst@InitLstNumber
+ \fi
+ \global\let\lst@DefRange\lst@DefRangeEnd
+ \lst@CArgEmpty%
+ }%
+ \@empty%
+}
% \end{macrocode}
% \end{macro}
%
@@ -13935,33 +14002,34 @@
% feature does not work with firstnumber}.
% \begin{macrocode}
\def\lstpatch@labels{%
-\gdef\lst@SetFirstNumber{%
+ \gdef\lst@SetFirstNumber{%
\ifx\lst@firstnumber\@undefined
\@tempcnta 0\csname\@lst no@\lst@intname\endcsname\relax
\ifnum\@tempcnta=\z@ \else
\lst@nololtrue
\advance\@tempcnta\lst@advancenumber
\edef\lst@firstnumber{\the\@tempcnta\relax}%
- \fi
- \fi}%
+ \fi%
+ \fi%
+ }%
}
\def\lst@InitLstNumber{%
- \global\c@lstnumber\lst@firstnumber
- \global\advance\c@lstnumber\lst@advancenumber
- \global\advance\c@lstnumber-\lst@advancelstnum
- \ifx \lst@firstnumber\c@lstnumber
- \global\advance\c@lstnumber-\lst@advancelstnum
- \fi%
+ \global\c@lstnumber\lst@firstnumber
+ \global\advance\c@lstnumber\lst@advancenumber
+ \global\advance\c@lstnumber-\lst@advancelstnum
+ \ifx \lst@firstnumber\c@lstnumber
+ \global\advance\c@lstnumber-\lst@advancelstnum
+ \fi%
% \end{macrocode}
% \lsthelper{Byron~K.~Boulton}{2013/11/21}{line numbers off by one}
% reported, that the line numbers are off by one, if they are displayed when
% a linerange is given by patterns and |includerangemarker=false| is
% set. Adding this test corrects this behaviour.
% \begin{macrocode}
- \lst@ifincluderangemarker\else%
- \global\advance\c@lstnumber by 1%
- \fi%
- }
+ \lst@ifincluderangemarker\else%
+ \global\advance\c@lstnumber by 1%
+ \fi%
+}
% \end{macrocode}
%
% The end-marker is defined if and only if it's not empty. The definition is
@@ -13970,28 +14038,28 @@
% version of |\lst@MProcessListing| above.
% \begin{macrocode}
\def\lst@DefRangeEnd{%
- \ifx\lst@rangeend\@empty\else
- \expandafter\lst@CArgX\lst@rangeend\relax\lst@DefRangeE
- \fi}
+ \ifx\lst@rangeend\@empty\else
+ \expandafter\lst@CArgX\lst@rangeend\relax\lst@DefRangeE
+ \fi}
\def\lst@DefRangeE#1#2{\lst@DefRangeE@#1#2}
\def\lst@DefRangeE@#1#2#3#4{%
- \lst@CDef{#1#2{#3}}#4{}%
- {\let#1#4%
- \edef\lst@lastline{\the\lst@lineno\relax}%
- \lst@DefRangeE@@}%
- \@empty}
+ \lst@CDef{#1#2{#3}}#4{}%
+ {\let#1#4%
+ \edef\lst@lastline{\the\lst@lineno\relax}%
+ \lst@DefRangeE@@}%
+ \@empty}
\def\lst@DefRangeE@@#1\@empty{%
- \lst@ifincluderangemarker
- #1\lst@XPrintToken
- \fi
- \lst@LeaveModeToPmode
- \lst@BeginDropInput{\lst@Pmode}}
+ \lst@ifincluderangemarker
+ #1\lst@XPrintToken
+ \fi
+ \lst@LeaveModeToPmode
+ \lst@BeginDropInput{\lst@Pmode}}
\def\lst@LeaveModeToPmode{%
- \ifnum\lst@mode=\lst@Pmode
- \expandafter\lsthk@EndGroup
- \else
- \expandafter\egroup\expandafter\lst@LeaveModeToPmode
- \fi}
+ \ifnum\lst@mode=\lst@Pmode
+ \expandafter\lsthk@EndGroup
+ \else
+ \expandafter\egroup\expandafter\lst@LeaveModeToPmode
+ \fi}
% \end{macrocode}
%
% Sometimes it is good to have two or more excerpts of one program numbered
@@ -14056,15 +14124,6 @@
\fi\fi}
% \end{macrocode}
%
-% \begin{lstkey}{nolol}
-% is just a key here. We'll use it below, of course.
-% \begin{macrocode}
-\lst@Key{nolol}{false}[t]{\lstKV@SetIf{#1}\lst@ifnolol}
-\def\lst@nololtrue{\let\lst@ifnolol\iftrue}
-\let\lst@ifnolol\iffalse % init
-% \end{macrocode}
-% \end{lstkey}
-%
%
% \subsection{Floats, boxes and captions}
%
@@ -14114,7 +14173,7 @@
% the counter should be reset at each chapter before the counter is defined,
% using the |numberbychapter| key.
% \begin{macrocode}
-\AtBeginDocument{
+\AtBeginDocument{%
\@ifundefined{thechapter}{\let\lst@ifnumberbychapter\iffalse}{}
\lst@ifnumberbychapter
\newcounter{lstlisting}[chapter]
@@ -14182,6 +14241,13 @@
\ifx\lst@@caption\@empty\else~\thelstlisting\fi}%
}
% \end{macrocode}
+% Hardcoding the extension makes it hard to use a different one, e.g., for the
+% appendix. \lsthelper{Markus Kohm}{2023/09/05}{extended listings also
+% actively supporting tocbasic} suggested to define and use |\ext@lstlisting|
+% instead.
+% \begin{macrocode}
+\def\ext@lstlisting{lol}
+% \end{macrocode}
% Captions are set only for display style listings -- thanks to
% \lsthelper{Peter~L\"offler}{2004/04/24}{pdfTeX warning (dest): name{figure.1}
% has been referenced but does not exist} for reporting the bug and to
@@ -14215,11 +14281,11 @@
\ifx\lst@caption\@empty
\ifx\lst@intname\@empty \else \def\lst@temp{ }%
\ifx\lst@intname\lst@temp \else
- \addcontentsline{lol}{lstlisting}\lst@name
+ \addcontentsline{\ext@lstlisting}{lstlisting}\lst@name
\fi\fi
\fi
\else
- \addcontentsline{lol}{lstlisting}%
+ \addcontentsline{\ext@lstlisting}{lstlisting}%
{\protect\numberline{\thelstlisting}\lst@@caption}%
\fi
\fi
@@ -14269,8 +14335,10 @@
% Axel proposed the first definition. The other two are default definitions.
% They may be adjusted to make \packagename{listings} compatible with other
% packages and classes.
+% Markus proposed to also define |\@captype|, so his
+% |\raggedlstlistingcaption| could be used.
% \begin{macrocode}
-\def\lst@makecaption{\@makecaption}
+\def\lst@makecaption{\def\@captype{lstlisting}\@makecaption}
\def\lst@maketitle{\@makecaption\lst@title@dropdelim}
\def\lst@title@dropdelim#1{\ignorespaces}
% \end{macrocode}
@@ -14599,20 +14667,20 @@
% interval to input or not.
% \begin{macrocode}
\def\lst@MProcessListing{%
- \lst@XPrintToken \lst@EOLUpdate \lsthk@InitVarsBOL
- \global\advance\lst@lineno\@ne
- \ifnum \lst@lineno>\lst@lastline
- \lst@ifdropinput \lst@LeaveMode \fi
- \ifx\lst@linerange\@empty
- \expandafter\expandafter\expandafter\lst@EndProcessListing
- \else
- \lst@interrange
- \lst@GetLineInterval
- \expandafter\expandafter\expandafter\lst@SkipToFirst
- \fi
- \else
- \expandafter\lst@BOLGobble
- \fi}
+ \lst@XPrintToken \lst@EOLUpdate \lsthk@InitVarsBOL
+ \global\advance\lst@lineno\@ne
+ \ifnum \lst@lineno>\lst@lastline
+ \lst@ifdropinput \lst@LeaveMode \fi
+ \ifx\lst@linerange\@empty
+ \expandafter\expandafter\expandafter\lst@EndProcessListing
+ \else
+ \lst@interrange
+ \lst@GetLineInterval
+ \expandafter\expandafter\expandafter\lst@SkipToFirst
+ \fi
+ \else
+ \expandafter\lst@BOLGobble
+ \fi}
% \end{macrocode}
% \end{macro}
%
@@ -14745,16 +14813,18 @@
% \begin{macrocode}
\lst@UserCommand\lstlistoflistings{\bgroup
\let\contentsname\lstlistlistingname
- \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{lol}}%
+ \let\lst@temp\@starttoc
+ \def\@starttoc##1{\lst@temp{\ext@lstlisting}}%
\tableofcontents \egroup}
% \end{macrocode}
-% For KOMA-script classes, we define it a la KOMA thanks to a bug report by
+% For \packagename{KOMA}-script classes, we define it a la \packagename{KOMA}
+% thanks to a bug report by
% \lsthelper{Tino~Langer}{2003/11/01}{koma-script's listsleft option does not
% affect lol}. \lsthelper{Markus~Kohm}{2006/08/12}{koma-script support is
% broken} suggested a much-improved version of this, which also works with
% the \packagename{float} package. The following few comments are from Markus.
%
-% Make use of |\float@listhead| if defined (e.g. using float or KOMA-Script)
+% Make use of |\float@listhead| if defined (e.g. using float)
% \begin{macrocode}
\@ifundefined{float@listhead}{}{%
\renewcommand*{\lstlistoflistings}{%
@@ -14775,7 +14845,7 @@
% needed), |\parfillskip| to 0pt plus 1fil (should be!).
% \begin{macrocode}
\parskip\z@\parindent\z@\parfillskip \z@ \@plus 1fil%
- \@starttoc{lol}%
+ \@starttoc{\ext@lstlisting}%
% \end{macrocode}
% Switch back to twocolumn (see above).
% \begin{macrocode}
@@ -14786,6 +14856,16 @@
}%
}
% \end{macrocode}
+% Make use of package tocbasic if loaded:
+% \begin{macrocode}
+\AtBeginDocument{%
+ \@ifpackageloaded{tocbasic}{%
+ \addtotoclist[float]{\ext@lstlisting}%
+ \renewcommand*{\lstlistoflistings}{\listoftoc[{\lstlistlistingname}]{lol}}%
+ \DeclareTOCStyleEntry[level=1,numwidth=2.3em,indent=1.5em]{default}{lstlisting}%
+ }{}%
+}
+% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\float@addtolists}
@@ -14804,12 +14884,15 @@
% to Markus for the advice.
% \begin{macrocode}
\AtBeginDocument{%
- \@ifundefined{float@addtolists}%
- {\gdef\float@addtolists#1{\addtocontents{lol}{#1}}}%
- {\let\orig@float@addtolists\float@addtolists
- \gdef\float@addtolists#1{%
- \addtocontents{lol}{#1}%
- \orig@float@addtolists{#1}}}%
+ \@ifundefined{KOMAClassName}{%
+ \@ifundefined{float@addtolists}{%
+ \gdef\float@addtolists#1{\addtocontents{\ext@lstlisting}{#1}}%
+ }{%
+ \let\orig@float@addtolists\float@addtolists
+ \gdef\float@addtolists#1{%
+ \addtocontents{\ext@lstlisting}{#1}%
+ \orig@float@addtolists{#1}}}%
+ }{}%
}%
% \end{macrocode}
% \end{macro}
@@ -14851,16 +14934,16 @@
% \ref{uListingsArguments} on \pageref{uListingsArguments} and proposed
% another solution which in turn broke the code needed by Luc:
%\begin{verbatim}
-% % \renewcommand\lstinline[1][]{%
-% % \leavevmode\bgroup % \hbox\bgroup --> \bgroup
-% % \def\lst@boxpos{b}%
-% % \lsthk@PreSet\lstset{flexiblecolumns,#1}%
-% % \lsthk@TextStyle
-% % \ifnum\iffalse{\fi`}=\z@\fi
-% % \@ifnextchar\bgroup{%
-% % \ifnum`{=\z@}\fi%
-% % \afterassignment\lst@InlineG \let\@let@token}{%
-% % \ifnum`{=\z@}\fi\lstinline@}}
+% \renewcommand\lstinline[1][]{%
+% \leavevmode\bgroup % \hbox\bgroup --> \bgroup
+% \def\lst@boxpos{b}%
+% \lsthk@PreSet\lstset{flexiblecolumns,#1}%
+% \lsthk@TextStyle
+% \ifnum\iffalse{\fi`}=\z@\fi
+% \@ifnextchar\bgroup{%
+% \ifnum`{=\z@}\fi%
+% \afterassignment\lst@InlineG \let\@let@token}{%
+% \ifnum`{=\z@}\fi\lstinline@}}
%\end{verbatim}
% So finally the old code comes back and the people, who need a
% |\lstinline| with braces, should use the workaround from section
@@ -15449,23 +15532,24 @@
% This is a derivation of \LaTeX's |\@xargdef|. We expand the submacro's name,
% use |\gdef| instead of |\def|, and hard code a kind of |\@protected@testopt|.
% \begin{macrocode}
-\def\lstenv@xargdef#1{
- \expandafter\lstenv@xargdef@\csname\string#1\endcsname#1}
+\def\lstenv@xargdef#1{%
+ \expandafter\lstenv@xargdef@\csname\string#1\endcsname#1}
\def\lstenv@xargdef@#1#2[#3][#4]#5{%
\@ifdefinable#2{%
- \gdef#2{%
- \ifx\protect\@typeset@protect
- \expandafter\lstenv@testopt
- \else
- \@x@protect#2%
- \fi
- #1%
- {#4}}%
- \@yargdef
- #1%
- \tw@
- {#3}%
- {#5}}}
+ \gdef#2{%
+ \ifx\protect\@typeset@protect
+ \expandafter\lstenv@testopt
+ \else
+ \@x@protect#2%
+ \fi
+ #1%
+ {#4}}%
+ \@yargdef%
+ #1%
+ \tw@%
+ {#3}%
+ {#5}}%
+}
% \end{macrocode}
% \end{macro}
%
@@ -15763,7 +15847,7 @@
% \end{macro}
%
%
-% \subsection{Extensions to \textsf{doc}}
+% \subsection{Extensions to \packagename{doc}}
%
% \begin{macro}{\m@cro@}
% We need a slight modification of \packagename{doc}'s internal macro.
@@ -16453,7 +16537,7 @@
% \end{aspect}
%
%
-% \subsection{\textsf{fancyvrb}}
+% \subsection{\packagename{fancyvrb}}
%
% \lsthelper{Denis~Girou}{1998/07/26}{fancyvrb} asked whether
% \packagename{fancyvrb} and \packagename{listings} could work together.
@@ -16711,7 +16795,7 @@
% \endgroup
%
%
-% \subsection{\textsf{LGrind}}
+% \subsection{\packagename{LGrind}}
%
% \begin{aspect}{lgrind}
% \begin{macro}{\lst@LGGetNames}
@@ -16969,7 +17053,7 @@
% \end{aspect}
%
%
-% \subsection{\textsf{hyperref}}
+% \subsection{\packagename{hyperref}}
%
% \begin{aspect}{hyper}
% \begin{macrocode}
@@ -17074,10 +17158,10 @@
% is wrong. So we reset the catcodes to the correct values before loading
% the files:
% \begin{macrocode}
+%<info>\lst@ReportAllocs
\lst@RestoreCatcodes%
\InputIfFileExists{listings.cfg}{}{}
\InputIfFileExists{lstlocal.cfg}{}{}
-%<info>\lst@ReportAllocs
% \end{macrocode}
% \begin{macrocode}
%</kernel>
@@ -17204,10 +17288,22 @@
% \item the configuration files |listings.cfg| and |lstlocal.cfg| are read
% with the correct catcode
% \item some documentation and layout enhancements.
+% \item[1.10] from 2024/02/15 on
+% \item usage of |tocbasic| if loaded to improve compatibility with
+% KOMA-Script and also enhance functionality.
% \end{itemize}
% \endgroup
%
%
% \Finale
%
+% \begin{macrocode}
+%<*dev/null>
+% \end{macrocode}
+%%% Local Variables:
+%%% ispell-local-dictionary: "english"
+%%% End:
+% \begin{macrocode}
+%<*dev/null>
+% \end{macrocode}
\endinput
diff --git a/macros/latex/contrib/listings/listings.ins b/macros/latex/contrib/listings/listings.ins
index aa451ee768..e869c3695b 100644
--- a/macros/latex/contrib/listings/listings.ins
+++ b/macros/latex/contrib/listings/listings.ins
@@ -22,12 +22,22 @@
%
% generate base package
%
+% the following guards for the conditional inclusion of code are defined:
+% - 0.21: code valid before version 0.21
+% - config: code used for producing the listings.cfg file
+% - doc: code used for producing the lstdoc.cfg file
+% - driver: code used for producing the documentation of listings.dtx
+% - info: additional informational code for the development of listings.dtx
+% - install: code used for producing the lstdrvrs.ins file
+% - kernel: the main code of the listings.sty
+% - patch: code used for producing the at the moment unused lstpatch.sty file
\generate{
\file{listings.sty}{\from{listings.dtx}{kernel}}
\file{lstmisc.sty}{\from{listings.dtx}{misc,0.21}}
\file{lstdoc.sty}{\from{listings.dtx}{doc}}
\file{lstdrvrs.ins}{\from{lstdrvrs.dtx}{install}}
\file{listings.cfg}{\from{lstdrvrs.dtx}{config}}
+ \file{lstpatch.sty}{\from{listings.dtx}{patch}}
\file{ltxdoc.cfg}{\from{listings.dtx}{ltx}}
}
%
diff --git a/macros/latex/contrib/listings/listings.pdf b/macros/latex/contrib/listings/listings.pdf
index bf8ad68ce9..6c0b7ece78 100644
--- a/macros/latex/contrib/listings/listings.pdf
+++ b/macros/latex/contrib/listings/listings.pdf
Binary files differ
diff --git a/macros/latex/contrib/listings/lstdrvrs.dtx b/macros/latex/contrib/listings/lstdrvrs.dtx
index 1d2f4cc5a2..02dc1ea88a 100644
--- a/macros/latex/contrib/listings/lstdrvrs.dtx
+++ b/macros/latex/contrib/listings/lstdrvrs.dtx
@@ -1,6 +1,6 @@
% \iffalse
%
-% $Id$
+% Time-stamp: <2024-02-17 18:25:08 ax006ho>
%
%<*driver>
\documentclass{ltxdoc}
@@ -33,7 +33,7 @@
% \title{Language, Style and Format drivers\\ for \textsf{Listings}\\
% {\large by Carsten Heinz and individual authors:}}
% \author{\InputIfFileExists{lstdrvrs.tmp}{}{}}
-% \date{2023/02/27\enspace\enspace Version 1.9\ \box\abstractbox}
+% \date{2024/02/21\enspace\enspace Version 1.10\ \box\abstractbox}
%
% \ifhyper
% \hypersetup{pdftitle={Language, Style and Format drivers for the
@@ -137,7 +137,7 @@
% \endgroup
% We mainly define default dialects.
% \begin{macrocode}
-\ProvidesFile{listings.cfg}[2023/02/27 1.9 listings configuration]
+\ProvidesFile{listings.cfg}[2024/02/21 1.10 listings configuration]
\def\lstlanguagefiles
{lstlang0.sty,lstlang1.sty,lstlang2.sty,lstlang3.sty}
\lstset{defaultdialect=[R/3 6.10]ABAP,
@@ -184,7 +184,7 @@
%<+hansl-prf>\ProvidesFile{listings-hansl.prf}
%<+lua-prf>\ProvidesFile{listings-lua.prf}
%<+python-prf>\ProvidesFile{listings-python.prf}
-%<-config> [2023/02/27 1.9 listings language file]
+%<-config> [2024/02/21 1.10 listings language file]
% \end{macrocode}
%
%
@@ -1743,7 +1743,13 @@
CO_MAX, CO_MIN, CO_SUM, CO_REDUCE, ATOMIC_ADD, ATOMIC_AND, ATOMIC_OR,
ATOMIC_XOR, ATOMIC_FETCH_ADD, ATOMIC_FETCH_AND, ATOMIC_FETCH_OR,
ATOMIC_FETCH_XOR, ATOMIC_FETCH_CAS, IEEE_GET_MODES, IEEE_SET_MODES,
- IEEE_FMA, IEEE_SIGNBIT, IEEE_INT, IEEE_REM, IEEE_MAX_NUM, IEEE_MAX_NUM_MAG, IEEE_MIN_NUM, IEEE_MAX_NUM_MAG, IEEE_NEXT_DOWN, IEEE_NEXT_UP, IEEE_SUPPORT_DATATYPE, IEEE_QUIET_EQ, IEEE_QUIET_GE, IEEE_QUIET_GT, IEEE_QUIET_LE, IEEE_QUIET_LT, IEEE_QUIET_NE, IEEE_SIGNALING_EQ, IEEE_SIGNALING_GE, IEEE_SIGNALING_GT, IEEE_SIGNALING_LE, IEEE_SIGNALING_LT, IEEE_SIGNALING_NE}%
+ IEEE_FMA, IEEE_SIGNBIT, IEEE_INT, IEEE_REM, IEEE_MAX_NUM,
+ IEEE_MAX_NUM_MAG,
+ IEEE_MIN_NUM, IEEE_MAX_NUM_MAG, IEEE_NEXT_DOWN, IEEE_NEXT_UP,
+ IEEE_SUPPORT_DATATYPE, IEEE_QUIET_EQ, IEEE_QUIET_GE, IEEE_QUIET_GT,
+ IEEE_QUIET_LE, IEEE_QUIET_LT, IEEE_QUIET_NE, IEEE_SIGNALING_EQ,
+ IEEE_SIGNALING_GE, IEEE_SIGNALING_GT, IEEE_SIGNALING_LE,
+ IEEE_SIGNALING_LT, IEEE_SIGNALING_NE}%
}%
% \end{macrocode}
%
@@ -7917,11 +7923,11 @@ morecomment=[l]!%
%% classic rexx listings definition
%% by Patrick TJ McPhee <ptjm@interlog.com>
%%
-\lst@definelanguage{Rexx}
- {morekeywords={address,arg,call,do,drop,else,end,exit,if,iterate,%
- interpret,leave,nop,numeric,options,otherwise,parse,%
- procedure,pull,push,queue,return,say,signal,then,to,%
- trace,when},%
+\lst@definelanguage{Rexx}{%
+ morekeywords={address,arg,call,do,drop,else,end,exit,if,interpret,%
+ iterate,leave,nop,numeric,options,otherwise,parse,%
+ procedure,pull,push,queue,return,say,select,signal,then,%
+ to,trace,when},%
sensitive=false,%
morecomment=[n]{/*}{*/},%
morestring=[d]{'},%
@@ -7953,18 +7959,18 @@ morecomment=[l]!%
external,for,form,fuzz,halt,labels,intermediates,negative,normal,novalue,%
on,off,results,scan,scientific,select,source,stream,syntax,until,upper,%
value,var,version,while,with},%
- ndkeywords={abbrev,abs,address,bitand,bitor,bitxor,center,centre,%
+ morekeywords=[2]{abbrev,abs,address,bitand,bitor,bitxor,center,centre,%
compare,copies,c2d,c2x,datatype,date,delstr,delword,diag,diagrc,%
d2c,d2x,errortext,externals,find,format,index,insert,justify,%
- lastpos,left,length,linesize,max,min,overlay,pos,queued,random,%
- reverse,rigth,sign,sourceline,space,storage,strip,substr,subword,%
- symbol,time,translate,trunc,userid,value,verify,word,wordindex,%
- wordlength,words,xrange,x2c,x2d},%
+ lastpos,left,length,linein,lineout,lines,linesize,max,min,overlay,%
+ pos,queued,random,reverse,rigth,sign,sourceline,space,storage,%
+ strip,substr,subword,symbol,time,translate,trunc,userid,value,verify,%
+ word,wordindex,wordlength,words,xrange,x2c,x2d},%
+ morekeywords=[3]{result,rc,self,sigl,super},%
sensitive=false,%
morestring=[d]",%
morestring=[d]',%
morecomment=[s]{/*}{*/},%
- alsoletter={:},%
}[keywords,comments,strings]%
% \end{macrocode}
% \begin{macrocode}
@@ -7983,8 +7989,12 @@ morecomment=[l]!%
%%
%% ooREXX keywords (http://www.oorexx.org/)
\lst@definelanguage[]{OORexx}[VM/XA]{Rexx}{%
- morekeywords={::class, ::method, ::attribute},%
-}
+ morekeywords={::annotate, ::attribute, ::class, ::constant, ::method,%
+ ::options, ::requires, ::resource, ::routine,%
+ forward, guard, local, loop, raise, strict,%
+ },%
+ alsoletter={:},%
+}[keywords,comments,strings]
% \end{macrocode}
% \begin{macrocode}
%</lang2>
diff --git a/macros/latex/contrib/listings/lstdrvrs.pdf b/macros/latex/contrib/listings/lstdrvrs.pdf
index 2bf416063a..c0a320d095 100644
--- a/macros/latex/contrib/listings/lstdrvrs.pdf
+++ b/macros/latex/contrib/listings/lstdrvrs.pdf
Binary files differ
diff --git a/macros/latex/contrib/minimalist/README.md b/macros/latex/contrib/minimalist/README.md
index 2d12534ec5..93ddc3fadc 100644
--- a/macros/latex/contrib/minimalist/README.md
+++ b/macros/latex/contrib/minimalist/README.md
@@ -1,8 +1,8 @@
-<!-- Copyright (C) 2021-2023 by Jinwen XU -->
+<!-- Copyright (C) 2021-2024 by Jinwen XU -->
# `minimalist` bundle: write you documents in a simple and clear way
-> **New documentations are still being written. For now, only the core code is included in TeX Live 2023 (old documentations have been removed from the distribution).**
+> **New documentations are still being written. For now, only the core code is included in TeX Live 2024 and MiKTeX (old documentations have been removed from the distribution).**
## Introduction
diff --git a/macros/latex/contrib/minimalist/minimalist-classical.sty b/macros/latex/contrib/minimalist/minimalist-classical.sty
index e904900066..9b0dc1f76e 100644
--- a/macros/latex/contrib/minimalist/minimalist-classical.sty
+++ b/macros/latex/contrib/minimalist/minimalist-classical.sty
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimalist-classical.sty',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{minimalist-classical}
- {2023/10/15} {}
+ {2024/02/20} {}
{The "classical" style of minimalist}
\IfPackageLoadedTF { minimalist } {}
@@ -807,7 +807,10 @@ heading_suffix "}\n"
\theoremstyle{simple}
-\def\@endtheorem{\popQED\endtrivlist\@endpefalse}
+\bool_if:NT \l__minimalist_theorem_with_qed_bool
+ {
+ \def\@endtheorem{\popQED\endtrivlist\@endpefalse}
+ }
\newcommand{\customqedsymbol}{
\makebox[1em]{\color{.!27!paper}\rule[-0.1em]{.95em}{.95em}}}
@@ -816,7 +819,7 @@ heading_suffix "}\n"
%% Special treatments for the Q.E.D. symbol
\def\noQED{\let\popQED\relax}
\let\noqed\noQED
-\def\proofless{\let\qedsymbol\customqedsymbol\let\simpleqedsymbol\customqedsymbol}
+\def\proofless{\pushQED{\qed}}
\bool_if:NTF \l__minimalist_fast_bool
{
@@ -848,7 +851,14 @@ heading_suffix "}\n"
}
-\PassOptionsToPackage { theorem-style = { theorem = simple-var, lemma = simple-var, proposition = simple-var, corollary = simple-var, property = simple-var, axiom = simple-var, construction = simple-var, theorem-with-name = simple-var } } { projlib-theorem }
+\PassOptionsToPackage
+ {
+ theorem-style = {
+ theorem = simple-var, lemma = simple-var, proposition = simple-var, corollary = simple-var, property = simple-var, axiom = simple-var, construction = simple-var,
+ theorems = simple-var, lemmas = simple-var, propositions = simple-var, corollaries = simple-var, properties = simple-var, axioms = simple-var, constructions = simple-var,
+ theorem-with-name = simple-var,
+ }
+ } { projlib-theorem }
\RequirePackage { projlib-theorem }
diff --git a/macros/latex/contrib/minimalist/minimalist-default.sty b/macros/latex/contrib/minimalist/minimalist-default.sty
index 5215ba81fb..32d64df661 100644
--- a/macros/latex/contrib/minimalist/minimalist-default.sty
+++ b/macros/latex/contrib/minimalist/minimalist-default.sty
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimalist-default.sty',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{minimalist-default}
- {2023/10/15} {}
+ {2024/02/20} {}
{The default style of minimalist}
\IfPackageLoadedTF { minimalist } {}
@@ -441,7 +441,7 @@
\titleformat{\section}
{\LocallyStopLineNumbers
\g_minimalist_title_font_section_tl\centering}
- {\raisebox{-.02\baselineskip}{\large \minimalist_apply_title_numbering_style:n { \thesection } }}{1em}
+ {\raisebox{-.125ex}{\large \minimalist_apply_title_numbering_style:n { \thesection } }}{1em}
{#1}
[\ResumeLineNumbers]
@@ -818,7 +818,10 @@ heading_suffix "}\n"
\theoremstyle{simple}
-\def\@endtheorem{\popQED\endtrivlist\@endpefalse}
+\bool_if:NT \l__minimalist_theorem_with_qed_bool
+ {
+ \def\@endtheorem{\popQED\endtrivlist\@endpefalse}
+ }
\newcommand{\customqedsymbol}{
\makebox[1em]{\color{.!27!paper}\rule[-0.1em]{.95em}{.95em}}}
@@ -827,7 +830,7 @@ heading_suffix "}\n"
%% Special treatments for the Q.E.D. symbol
\def\noQED{\let\popQED\relax}
\let\noqed\noQED
-\def\proofless{\let\qedsymbol\customqedsymbol\let\simpleqedsymbol\customqedsymbol}
+\def\proofless{\pushQED{\qed}}
\bool_if:NTF \l__minimalist_fast_bool
{
@@ -859,7 +862,14 @@ heading_suffix "}\n"
}
-\PassOptionsToPackage { theorem-style = { theorem = simple-var, lemma = simple-var, proposition = simple-var, corollary = simple-var, property = simple-var, axiom = simple-var, construction = simple-var, theorem-with-name = simple-var } } { projlib-theorem }
+\PassOptionsToPackage
+ {
+ theorem-style = {
+ theorem = simple-var, lemma = simple-var, proposition = simple-var, corollary = simple-var, property = simple-var, axiom = simple-var, construction = simple-var,
+ theorems = simple-var, lemmas = simple-var, propositions = simple-var, corollaries = simple-var, properties = simple-var, axioms = simple-var, constructions = simple-var,
+ theorem-with-name = simple-var,
+ }
+ } { projlib-theorem }
\RequirePackage { projlib-theorem }
diff --git a/macros/latex/contrib/minimalist/minimalist-flow.sty b/macros/latex/contrib/minimalist/minimalist-flow.sty
index 0ccde12e6e..671ceef5c2 100644
--- a/macros/latex/contrib/minimalist/minimalist-flow.sty
+++ b/macros/latex/contrib/minimalist/minimalist-flow.sty
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimalist-flow.sty',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{minimalist-flow}
- {2023/10/15} {}
+ {2024/02/20} {}
{The "flow" style of minimalist}
\IfPackageLoadedTF { minimalist } {}
@@ -823,7 +823,10 @@ heading_suffix "}\n"
\theoremstyle{simple}
-\def\@endtheorem{\popQED\endtrivlist\@endpefalse}
+\bool_if:NT \l__minimalist_theorem_with_qed_bool
+ {
+ \def\@endtheorem{\popQED\endtrivlist\@endpefalse}
+ }
\newcommand{\customqedsymbol}{
\makebox[1em]{\color{.!27!paper}\rule[-0.1em]{.95em}{.95em}}}
@@ -832,7 +835,7 @@ heading_suffix "}\n"
%% Special treatments for the Q.E.D. symbol
\def\noQED{\let\popQED\relax}
\let\noqed\noQED
-\def\proofless{\let\qedsymbol\customqedsymbol\let\simpleqedsymbol\customqedsymbol}
+\def\proofless{\pushQED{\qed}}
\bool_if:NTF \l__minimalist_fast_bool
{
@@ -864,7 +867,14 @@ heading_suffix "}\n"
}
-\PassOptionsToPackage { theorem-style = { theorem = simple-var, lemma = simple-var, proposition = simple-var, corollary = simple-var, property = simple-var, axiom = simple-var, construction = simple-var, theorem-with-name = simple-var } } { projlib-theorem }
+\PassOptionsToPackage
+ {
+ theorem-style = {
+ theorem = simple-var, lemma = simple-var, proposition = simple-var, corollary = simple-var, property = simple-var, axiom = simple-var, construction = simple-var,
+ theorems = simple-var, lemmas = simple-var, propositions = simple-var, corollaries = simple-var, properties = simple-var, axioms = simple-var, constructions = simple-var,
+ theorem-with-name = simple-var,
+ }
+ } { projlib-theorem }
\RequirePackage { projlib-theorem }
diff --git a/macros/latex/contrib/minimalist/minimalist-plain.sty b/macros/latex/contrib/minimalist/minimalist-plain.sty
index fd4503c74f..577f4b24e1 100644
--- a/macros/latex/contrib/minimalist/minimalist-plain.sty
+++ b/macros/latex/contrib/minimalist/minimalist-plain.sty
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimalist-plain.sty',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{minimalist-plain}
- {2023/10/15} {}
+ {2024/02/20} {}
{The "plain" style of minimalist}
\IfPackageLoadedTF { minimalist } {}
@@ -792,7 +792,10 @@ heading_suffix "}\n"
\theoremstyle{simple}
-\def\@endtheorem{\popQED\endtrivlist\@endpefalse}
+\bool_if:NT \l__minimalist_theorem_with_qed_bool
+ {
+ \def\@endtheorem{\popQED\endtrivlist\@endpefalse}
+ }
\newcommand{\customqedsymbol}{
\makebox[1em]{\color{.!27!paper}\rule[-0.1em]{.95em}{.95em}}}
@@ -801,7 +804,7 @@ heading_suffix "}\n"
%% Special treatments for the Q.E.D. symbol
\def\noQED{\let\popQED\relax}
\let\noqed\noQED
-\def\proofless{\let\qedsymbol\customqedsymbol\let\simpleqedsymbol\customqedsymbol}
+\def\proofless{\pushQED{\qed}}
\bool_if:NTF \l__minimalist_fast_bool
{
@@ -833,7 +836,14 @@ heading_suffix "}\n"
}
-\PassOptionsToPackage { theorem-style = { theorem = simple-var, lemma = simple-var, proposition = simple-var, corollary = simple-var, property = simple-var, axiom = simple-var, construction = simple-var, theorem-with-name = simple-var } } { projlib-theorem }
+\PassOptionsToPackage
+ {
+ theorem-style = {
+ theorem = simple-var, lemma = simple-var, proposition = simple-var, corollary = simple-var, property = simple-var, axiom = simple-var, construction = simple-var,
+ theorems = simple-var, lemmas = simple-var, propositions = simple-var, corollaries = simple-var, properties = simple-var, axioms = simple-var, constructions = simple-var,
+ theorem-with-name = simple-var,
+ }
+ } { projlib-theorem }
\RequirePackage { projlib-theorem }
diff --git a/macros/latex/contrib/minimalist/minimalist-stream.sty b/macros/latex/contrib/minimalist/minimalist-stream.sty
index 84843f52cc..cef220e623 100644
--- a/macros/latex/contrib/minimalist/minimalist-stream.sty
+++ b/macros/latex/contrib/minimalist/minimalist-stream.sty
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimalist-stream.sty',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{minimalist-stream}
- {2023/10/15} {}
+ {2024/02/20} {}
{The "stream" style of minimalist}
\IfPackageLoadedTF { minimalist } {}
@@ -929,7 +929,10 @@ heading_suffix "}\n"
. \hspace{.5em}
}
-\def\@endtheorem{\popQED\endtrivlist\@endpefalse}
+\bool_if:NT \l__minimalist_theorem_with_qed_bool
+ {
+ \def\@endtheorem{\popQED\endtrivlist\@endpefalse}
+ }
\newcommand{\customqedsymbol}{
\makebox[1em]{\color{.!27!paper}\rule[-0.1em]{.95em}{.95em}}}
@@ -938,7 +941,7 @@ heading_suffix "}\n"
%% Special treatments for the Q.E.D. symbol
\def\noQED{\let\popQED\relax}
\let\noqed\noQED
-\def\proofless{\let\qedsymbol\customqedsymbol\let\simpleqedsymbol\customqedsymbol}
+\def\proofless{\pushQED{\qed}}
\bool_if:NTF \l__minimalist_fast_bool
{
@@ -972,12 +975,28 @@ heading_suffix "}\n"
\bool_if:NTF \l__minimalist_theorem_in_new_line_bool
{
- \PassOptionsToPackage { theorem-style = { remark = simple-inline, proof = proof,
- theorem = simple-newline-var, lemma = simple-newline-var, proposition = simple-newline-var, corollary = simple-newline-var, property = simple-newline-var, axiom = simple-newline-var, construction = simple-newline-var, theorem-with-name = simple-newline-var } } { projlib-theorem }
+ \PassOptionsToPackage
+ {
+ theorem-style = {
+ proof = proof,
+ remark = simple-inline, remarks = simple-inline,
+ theorem = simple-newline-var, lemma = simple-newline-var, proposition = simple-newline-var, corollary = simple-newline-var, property = simple-newline-var, axiom = simple-newline-var, construction = simple-newline-var,
+ theorems = simple-newline-var, lemmas = simple-newline-var, propositions = simple-newline-var, corollaries = simple-newline-var, properties = simple-newline-var, axioms = simple-newline-var, constructions = simple-newline-var,
+ theorem-with-name = simple-newline-var,
+ }
+ } { projlib-theorem }
}
{
- \PassOptionsToPackage { theorem-style = { remark = simple-inline, proof = proof,
- theorem = simple-inline-var, lemma = simple-inline-var, proposition = simple-inline-var, corollary = simple-inline-var, property = simple-inline-var, axiom = simple-inline-var, construction = simple-inline-var, theorem-with-name = simple-inline-var } } { projlib-theorem }
+ \PassOptionsToPackage
+ {
+ theorem-style = {
+ proof = proof,
+ remark = simple-inline, remarks = simple-inline,
+ theorem = simple-inline-var, lemma = simple-inline-var, proposition = simple-inline-var, corollary = simple-inline-var, property = simple-inline-var, axiom = simple-inline-var, construction = simple-inline-var,
+ theorems = simple-inline-var, lemmas = simple-inline-var, propositions = simple-inline-var, corollaries = simple-inline-var, properties = simple-inline-var, axioms = simple-inline-var, constructions = simple-inline-var,
+ theorem-with-name = simple-inline-var,
+ }
+ } { projlib-theorem }
}
\RequirePackage { projlib-theorem }
diff --git a/macros/latex/contrib/minimalist/minimalist.sty b/macros/latex/contrib/minimalist/minimalist.sty
index be9916100d..9b50bd5349 100644
--- a/macros/latex/contrib/minimalist/minimalist.sty
+++ b/macros/latex/contrib/minimalist/minimalist.sty
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimalist.sty',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{minimalist}
- {2023/10/15} {}
+ {2024/02/20} {}
{A simple and clear style for articles and books}
\keys_define:nn { minimalist }
diff --git a/macros/latex/contrib/minimalist/minimart.cls b/macros/latex/contrib/minimalist/minimart.cls
index e55e748b9b..f208d3ccd6 100644
--- a/macros/latex/contrib/minimalist/minimart.cls
+++ b/macros/latex/contrib/minimalist/minimart.cls
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimart.cls',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{minimart}
- {2023/10/15} {}
+ {2024/02/20} {}
{A simple and clear article style}
\tl_const:Nn \l__minimclass_base_class_tl { article }
diff --git a/macros/latex/contrib/minimalist/minimbook.cls b/macros/latex/contrib/minimalist/minimbook.cls
index 005fb29fc7..c36dc2b239 100644
--- a/macros/latex/contrib/minimalist/minimbook.cls
+++ b/macros/latex/contrib/minimalist/minimbook.cls
@@ -2,7 +2,7 @@
%% This is file `minimalist/minimbook.cls',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{minimbook}
- {2023/10/15} {}
+ {2024/02/20} {}
{A simple and clear book style}
\tl_const:Nn \l__minimclass_base_class_tl { book }
diff --git a/macros/latex/contrib/projlib/ProjLib.dtx b/macros/latex/contrib/projlib/ProjLib.dtx
index 1172d3e4ad..1f4cceb73e 100644
--- a/macros/latex/contrib/projlib/ProjLib.dtx
+++ b/macros/latex/contrib/projlib/ProjLib.dtx
@@ -19,84 +19,84 @@
%<*ProjLib>
\ProvidesExplPackage
{ProjLib}
- {2024/02/03} {}
+ {2024/02/20} {}
{Collective interface of the ProjLib toolkit}
%</ProjLib>
%
%<*projlib-author>
\ProvidesExplPackage
{projlib-author}
- {2024/02/03} {}
+ {2024/02/20} {}
{Enhanced author information block}
%</projlib-author>
%
%<*projlib-datetime>
\ProvidesExplPackage
{projlib-datetime}
- {2024/02/03} {}
+ {2024/02/20} {}
{Convert numeric date-time string to natural language}
%</projlib-datetime>
%
%<*projlib-draft>
\ProvidesExplPackage
{projlib-draft}
- {2024/02/03} {}
+ {2024/02/20} {}
{Useful commands during draft stage}
%</projlib-draft>
%
%<*projlib-font>
\ProvidesExplPackage
{projlib-font}
- {2024/02/03} {}
+ {2024/02/20} {}
{Font selection and configuration}
%</projlib-font>
%
%<*projlib-language>
\ProvidesExplPackage
{projlib-language}
- {2024/02/03} {}
+ {2024/02/20} {}
{Multi-language configuration}
%</projlib-language>
%
%<*projlib-logo>
\ProvidesExplPackage
{projlib-logo}
- {2024/02/03} {}
+ {2024/02/20} {}
{The ProjLib logo}
%</projlib-logo>
%
%<*projlib-math>
\ProvidesExplPackage
{projlib-math}
- {2024/02/03} {}
+ {2024/02/20} {}
{Efficient math setup}
%</projlib-math>
%
%<*projlib-paper>
\ProvidesExplPackage
{projlib-paper}
- {2024/02/03} {}
+ {2024/02/20} {}
{Configuration of the paper style}
%</projlib-paper>
%
%<*projlib-text>
\ProvidesExplPackage
{projlib-text}
- {2024/02/03} {}
+ {2024/02/20} {}
{Text-related commands}
%</projlib-text>
%
%<*projlib-theorem>
\ProvidesExplPackage
{projlib-theorem}
- {2024/02/03} {}
+ {2024/02/20} {}
{Configuration of theorem-like environments}
%</projlib-theorem>
%
%<*projlib-titlepage>
\ProvidesExplPackage
{projlib-titlepage}
- {2024/02/03} {}
+ {2024/02/20} {}
{Interface for title page rendering}
%</projlib-titlepage>
@@ -3938,6 +3938,7 @@
assumption ,
axiom ,
claim ,
+ commentary ,
conclusion ,
conjecture ,
construction ,
@@ -3949,6 +3950,7 @@
fact ,
hypothesis ,
lemma ,
+ motivation ,
notation ,
observation ,
postulate ,
@@ -3965,6 +3967,34 @@
corollary-definition ,
proposition-definition ,
theorem-definition ,
+ applications ,
+ assertions ,
+ assumptions ,
+ axioms ,
+ claims ,
+ commentaries ,
+ conclusions ,
+ conjectures ,
+ constructions ,
+ conventions ,
+ corollaries ,
+ definitions ,
+ examples ,
+ exercises ,
+ facts ,
+ hypotheses ,
+ lemmas ,
+ motivations ,
+ notations ,
+ observations ,
+ postulates ,
+ problems ,
+ properties ,
+ propositions ,
+ questions ,
+ recalls ,
+ remarks ,
+ theorems ,
}
\@ifclassloaded { beamer }
@@ -4512,6 +4542,49 @@
}
}
+\NameTheorem { commentary }
+ {
+ , heading = {
+ , english = Commentary
+ , french = Commentaire
+ , ngerman = Kommentar
+ , italian = Commento
+ , portuguese = Comentário
+ , brazilian = Comentário
+ , spanish = Comentario
+ , schinese = 解说
+ , tchinese = 解說
+ , japanese = 解説 % コメント
+ , russian = Комментарий
+ }
+ , crefname = {
+ , english = {Commentary}{Commentary}
+ , french = [la]{Commentaire}[les]{Commentaire}
+ , ngerman = {Kommentar}{Kommentar}
+ , italian = [il]{Commento}[i]{Commento}
+ , portuguese = [o]{Comentário}[os]{Comentário}
+ , brazilian = [o]{Comentário}[os]{Comentário}
+ , spanish = [el]{Comentario}[los]{Comentario}
+ , schinese = {解说}{解说}
+ , tchinese = {解說}{解說}
+ , japanese = {解説}{解説}
+ , russian = {Комментарий}{Комментарий}
+ }
+ , Crefname = {
+ , english = {Commentary}{Commentary}
+ , french = [La]{Commentaire}[Les]{Commentaire}
+ , ngerman = {Kommentar}{Kommentar}
+ , italian = [Il]{Commento}[I]{Commento}
+ , portuguese = [O]{Comentário}[Os]{Comentário}
+ , brazilian = [O]{Comentário}[Os]{Comentário}
+ , spanish = [El]{Comentario}[Los]{Comentario}
+ , schinese = {解说}{解说}
+ , tchinese = {解說}{解說}
+ , japanese = {解説}{解説}
+ , russian = {Комментарий}{Комментарий}
+ }
+ }
+
\NameTheorem { conclusion }
{
, heading = {
@@ -4823,8 +4896,8 @@
, portuguese = Exercício
, brazilian = Exercício
, spanish = Ejercicio
- , schinese = 练习
- , tchinese = 練習
+ , schinese = 习题
+ , tchinese = 習題
, japanese = 練習
, russian = Упражнение
}
@@ -4836,8 +4909,8 @@
, portuguese = [o]{Exercício}[os]{Exercício}
, brazilian = [o]{Exercício}[os]{Exercício}
, spanish = [el]{Ejercicio}[los]{Ejercicio}
- , schinese = {练习}{练习}
- , tchinese = {練習}{練習}
+ , schinese = {习题}{习题}
+ , tchinese = {習題}{習題}
, japanese = {練習}{練習}
, russian = {Упражнение}{Упражнение}
}
@@ -4849,8 +4922,8 @@
, portuguese = [O]{Exercício}[Os]{Exercício}
, brazilian = [O]{Exercício}[Os]{Exercício}
, spanish = [El]{Ejercicio}[Los]{Ejercicio}
- , schinese = {练习}{练习}
- , tchinese = {練習}{練習}
+ , schinese = {习题}{习题}
+ , tchinese = {習題}{習題}
, japanese = {練習}{練習}
, russian = {Упражнение}{Упражнение}
}
@@ -4985,6 +5058,49 @@
}
}
+\NameTheorem { motivation }
+ {
+ , heading = {
+ , english = Motivation
+ , french = Motivation
+ , ngerman = Motivation
+ , italian = Motivazione
+ , portuguese = Motivação
+ , brazilian = Motivação
+ , spanish = Motivacion
+ , schinese = 动机
+ , tchinese = 動機
+ , japanese = 動機 % モチベーション
+ , russian = Мотивация
+ }
+ , crefname = {
+ , english = {Motivation}{Motivation}
+ , french = [la]{Motivation}[les]{Motivation}
+ , ngerman = {Motivation}{Motivation}
+ , italian = [la]{Motivazione}[le]{Motivazione}
+ , portuguese = [a]{Motivação}[as]{Motivação}
+ , brazilian = [a]{Motivação}[as]{Motivação}
+ , spanish = [la]{Motivacion}[las]{Motivacion}
+ , schinese = {动机}{动机}
+ , tchinese = {動機}{動機}
+ , japanese = {動機}{動機}
+ , russian = {Мотивация}{Мотивация}
+ }
+ , Crefname = {
+ , english = {Motivation}{Motivation}
+ , french = [La]{Motivation}[Les]{Motivation}
+ , ngerman = {Motivation}{Motivation}
+ , italian = [La]{Motivazione}[Le]{Motivazione}
+ , portuguese = [A]{Motivação}[As]{Motivação}
+ , brazilian = [A]{Motivação}[As]{Motivação}
+ , spanish = [La]{Motivacion}[Las]{Motivacion}
+ , schinese = {动机}{动机}
+ , tchinese = {動機}{動機}
+ , japanese = {動機}{動機}
+ , russian = {Мотивация}{Мотивация}
+ }
+ }
+
\NameTheorem { notation }
{
, heading = {
@@ -5422,6 +5538,1490 @@
\NameTheorem { corollary-definition } { combined = { corollary ; definition } }
\NameTheorem { proposition-definition } { combined = { proposition ; definition } }
\NameTheorem { theorem-definition } { combined = { theorem ; definition } }
+
+\NameTheorem { applications }
+ {
+ , heading = {
+ , english = Applications
+ , french = Applications
+ , ngerman = Anwendungen
+ , italian = Applicazioni
+ , portuguese = Aplicações
+ , brazilian = Aplicações
+ , spanish = Aplicaciones
+ , schinese = 应用
+ , tchinese = 應用
+ , japanese = 応用
+ , russian = Приложения
+ }
+ , crefname = {
+ , english = {Applications}{Applications}
+ , french = [les]{Applications}[les]{Applications}
+ , ngerman = { {Anwendungen}{Anwendungen}
+ , Nominativ = [die]{Anwendungen}[die]{Anwendungen}
+ , Genitiv = [der]{Anwendungen}[der]{Anwendungen}
+ , Dativ = [den]{Anwendungen}[den]{Anwendungen}
+ , Akkusativ = [die]{Anwendungen}[die]{Anwendungen}
+ }
+ , italian = [le]{Applicazioni}[le]{Applicazioni}
+ , portuguese = [as]{Aplicações}[as]{Aplicações}
+ , brazilian = [as]{Aplicações}[as]{Aplicações}
+ , spanish = [las]{Aplicaciones}[las]{Aplicaciones}
+ , schinese = {应用}{应用}
+ , tchinese = {應用}{應用}
+ , japanese = {応用}{応用}
+ , russian = {Приложения}{Приложения}
+ }
+ , Crefname = {
+ , english = {Applications}{Applications}
+ , french = [Les]{Applications}[Les]{Applications}
+ , ngerman = { {Anwendungen}{Anwendungen}
+ , Nominativ = [Die]{Anwendungen}[Die]{Anwendungen}
+ , Genitiv = [Der]{Anwendungen}[Der]{Anwendungen}
+ , Dativ = [Den]{Anwendungen}[Den]{Anwendungen}
+ , Akkusativ = [Die]{Anwendungen}[Die]{Anwendungen}
+ }
+ , italian = [Le]{Applicazioni}[Le]{Applicazioni}
+ , portuguese = [As]{Aplicações}[As]{Aplicações}
+ , brazilian = [As]{Aplicações}[As]{Aplicações}
+ , spanish = [Las]{Aplicaciones}[Las]{Aplicaciones}
+ , schinese = {应用}{应用}
+ , tchinese = {應用}{應用}
+ , japanese = {応用}{応用}
+ , russian = {Приложения}{Приложения}
+ }
+ }
+
+\NameTheorem { assertions }
+ {
+ , heading = {
+ , english = Assertions
+ , french = Assertions
+ , ngerman = Assertionen
+ , italian = Asserzioni
+ , portuguese = Asserções
+ , brazilian = Asserções
+ , spanish = Aserciones
+ , schinese = 断言
+ , tchinese = 斷言
+ , japanese = 断言
+ , russian = Утверждения
+ }
+ , crefname = {
+ , english = {Assertions}{Assertions}
+ , french = [les]{Assertions}[les]{Assertions}
+ , ngerman = { {Assertionen}{Assertionen}
+ , Nominativ = [die]{Assertionen}[die]{Assertionen}
+ , Genitiv = [der]{Assertionen}[der]{Assertionen}
+ , Dativ = [den]{Assertionen}[den]{Assertionen}
+ , Akkusativ = [die]{Assertionen}[die]{Assertionen}
+ }
+ , italian = [le]{Asserzioni}[le]{Asserzioni}
+ , portuguese = [as]{Asserções}[as]{Asserções}
+ , brazilian = [as]{Asserções}[as]{Asserções}
+ , spanish = [las]{Aserciones}[las]{Aserciones}
+ , schinese = {断言}{断言}
+ , tchinese = {斷言}{斷言}
+ , japanese = {断言}{断言}
+ , russian = {Утверждения}{Утверждения}
+ }
+ , Crefname = {
+ , english = {Assertions}{Assertions}
+ , french = [Les]{Assertions}[Les]{Assertions}
+ , ngerman = { {Assertionen}{Assertionen}
+ , Nominativ = [Die]{Assertionen}[Die]{Assertionen}
+ , Genitiv = [Der]{Assertionen}[Der]{Assertionen}
+ , Dativ = [Den]{Assertionen}[Den]{Assertionen}
+ , Akkusativ = [Die]{Assertionen}[Die]{Assertionen}
+ }
+ , italian = [Le]{Asserzioni}[Le]{Asserzioni}
+ , portuguese = [As]{Asserções}[As]{Asserções}
+ , brazilian = [As]{Asserções}[As]{Asserções}
+ , spanish = [Las]{Aserciones}[Las]{Aserciones}
+ , schinese = {断言}{断言}
+ , tchinese = {斷言}{斷言}
+ , japanese = {断言}{断言}
+ , russian = {Утверждения}{Утверждения}
+ }
+ }
+
+\NameTheorem { assumptions }
+ {
+ , heading = {
+ , english = Assumptions
+ , french = Suppositions
+ , ngerman = Annahmen
+ , italian = Supposizioni
+ , portuguese = Suposições
+ , brazilian = Suposições
+ , spanish = Suposiciones
+ , schinese = 假定
+ , tchinese = 假定
+ , japanese = 仮定
+ , russian = Предположения
+ }
+ , crefname = {
+ , english = {Assumptions}{Assumptions}
+ , french = [les]{Suppositions}[les]{Suppositions}
+ , ngerman = { {Annahmen}{Annahmen}
+ , Nominativ = [die]{Annahmen}[die]{Annahmen}
+ , Genitiv = [der]{Annahmen}[der]{Annahmen}
+ , Dativ = [den]{Annahmen}[den]{Annahmen}
+ , Akkusativ = [die]{Annahmen}[die]{Annahmen}
+ }
+ , italian = [le]{Supposizioni}[le]{Supposizioni}
+ , portuguese = [as]{Suposições}[as]{Suposições}
+ , brazilian = [as]{Suposições}[as]{Suposições}
+ , spanish = [las]{Suposiciones}[las]{Suposiciones}
+ , schinese = {假定}{假定}
+ , tchinese = {假定}{假定}
+ , japanese = {仮定}{仮定}
+ , russian = {Предположения}{Предположения}
+ }
+ , Crefname = {
+ , english = {Assumptions}{Assumptions}
+ , french = [Les]{Suppositions}[Les]{Suppositions}
+ , ngerman = { {Annahmen}{Annahmen}
+ , Nominativ = [Die]{Annahmen}[Die]{Annahmen}
+ , Genitiv = [Der]{Annahmen}[Der]{Annahmen}
+ , Dativ = [Den]{Annahmen}[Den]{Annahmen}
+ , Akkusativ = [Die]{Annahmen}[Die]{Annahmen}
+ }
+ , italian = [le]{Supposizioni}[le]{Supposizioni}
+ , portuguese = [As]{Suposições}[As]{Suposições}
+ , brazilian = [As]{Suposições}[As]{Suposições}
+ , spanish = [Las]{Suposiciones}[Las]{Suposiciones}
+ , schinese = {假定}{假定}
+ , tchinese = {假定}{假定}
+ , japanese = {仮定}{仮定}
+ , russian = {Предположения}{Предположения}
+ }
+ }
+
+\NameTheorem { axioms }
+ {
+ , heading = {
+ , english = Axioms
+ , french = Axiomes
+ , ngerman = Axiome
+ , italian = Assiomi
+ , portuguese = Axiomas
+ , brazilian = Axiomas
+ , spanish = Axiomas
+ , schinese = 公理
+ , tchinese = 公理
+ , japanese = 公理
+ , russian = Аксиомы
+ }
+ , crefname = {
+ , english = {Axioms}{Axioms}
+ , french = [les]{Axiomes}[les]{Axiomes}
+ , ngerman = { {Axiome}{Axiome}
+ , Nominativ = [die]{Axiome}[die]{Axiome}
+ , Genitiv = [der]{Axiome}[der]{Axiome}
+ , Dativ = [den]{Axiomen}[den]{Axiomen}
+ , Akkusativ = [die]{Axiome}[die]{Axiome}
+ }
+ , italian = [gli]{Assiomi}[gli]{Assiomi}
+ , portuguese = [os]{Axiomas}[os]{Axiomas}
+ , brazilian = [os]{Axiomas}[os]{Axiomas}
+ , spanish = [los]{Axiomas}[los]{Axiomas}
+ , schinese = {公理}{公理}
+ , tchinese = {公理}{公理}
+ , japanese = {公理}{公理}
+ , russian = {Аксиомы}{Аксиомы}
+ }
+ , Crefname = {
+ , english = {Axioms}{Axioms}
+ , french = [Les]{Axiomes}[Les]{Axiomes}
+ , ngerman = { {Axiome}{Axiome}
+ , Nominativ = [Die]{Axiome}[Die]{Axiome}
+ , Genitiv = [Der]{Axiome}[Der]{Axiome}
+ , Dativ = [Den]{Axiomen}[Den]{Axiomen}
+ , Akkusativ = [Die]{Axiome}[Die]{Axiome}
+ }
+ , italian = [Gli]{Assiomi}[Gli]{Assiomi}
+ , portuguese = [Os]{Axiomas}[Os]{Axiomas}
+ , brazilian = [Os]{Axiomas}[Os]{Axiomas}
+ , spanish = [Los]{Axiomas}[Los]{Axiomas}
+ , schinese = {公理}{公理}
+ , tchinese = {公理}{公理}
+ , japanese = {公理}{公理}
+ , russian = {Аксиомы}{Аксиомы}
+ }
+ }
+
+\NameTheorem { claims }
+ {
+ , heading = {
+ , english = Claims
+ , french = Affirmations
+ , ngerman = Behauptungen
+ , italian = Affermazioni
+ , portuguese = Afirmações
+ , brazilian = Afirmações
+ , spanish = Afirmaciones
+ , schinese = 断言
+ , tchinese = 斷言
+ , japanese = 断言
+ , russian = Утверждения
+ }
+ , crefname = {
+ , english = {Claims}{Claims}
+ , french = [les]{Affirmations}[les]{Affirmations}
+ , ngerman = { {Behauptungen}{Behauptungen}
+ , Nominativ = [die]{Behauptungen}[die]{Behauptungen}
+ , Genitiv = [der]{Behauptungen}[der]{Behauptungen}
+ , Dativ = [den]{Behauptungen}[den]{Behauptungen}
+ , Akkusativ = [die]{Behauptungen}[die]{Behauptungen}
+ }
+ , italian = [le]{Affermazioni}[le]{Affermazioni}
+ , portuguese = [as]{Afirmações}[as]{Afirmações}
+ , brazilian = [as]{Afirmações}[as]{Afirmações}
+ , spanish = [las]{Afirmaciones}[las]{Afirmaciones}
+ , schinese = {断言}{断言}
+ , tchinese = {斷言}{斷言}
+ , japanese = {断言}{断言}
+ , russian = {Утверждения}{Утверждения}
+ }
+ , Crefname = {
+ , english = {Claims}{Claims}
+ , french = [Les]{Affirmations}[Les]{Affirmations}
+ , ngerman = { {Behauptungen}{Behauptungen}
+ , Nominativ = [Die]{Behauptungen}[Die]{Behauptungen}
+ , Genitiv = [Der]{Behauptungen}[Der]{Behauptungen}
+ , Dativ = [Den]{Behauptungen}[Den]{Behauptungen}
+ , Akkusativ = [Die]{Behauptungen}[Die]{Behauptungen}
+ }
+ , italian = [Le]{Affermazioni}[Le]{Affermazioni}
+ , portuguese = [As]{Afirmações}[As]{Afirmações}
+ , brazilian = [As]{Afirmações}[As]{Afirmações}
+ , spanish = [Las]{Afirmaciones}[Las]{Afirmaciones}
+ , schinese = {断言}{断言}
+ , tchinese = {斷言}{斷言}
+ , japanese = {断言}{断言}
+ , russian = {Утверждения}{Утверждения}
+ }
+ }
+
+\NameTheorem { commentaries }
+ {
+ , heading = {
+ , english = Commentaries
+ , french = Commentaires
+ , ngerman = Kommentare
+ , italian = Commenti
+ , portuguese = Comentários
+ , brazilian = Comentários
+ , spanish = Comentarios
+ , schinese = 解说
+ , tchinese = 解說
+ , japanese = 解説
+ , russian = Комментарии
+ }
+ , crefname = {
+ , english = {Commentaries}{Commentaries}
+ , french = [les]{Commentaires}[les]{Commentaires}
+ , ngerman = { {Kommentare}{Kommentare}
+ , Nominativ = [die]{Kommentare}[die]{Kommentare}
+ , Genitiv = [der]{Kommentare}[der]{Kommentare}
+ , Dativ = [den]{Kommentaren}[den]{Kommentaren}
+ , Akkusativ = [die]{Kommentare}[die]{Kommentare}
+ }
+ , italian = [i]{Commenti}[i]{Commenti}
+ , portuguese = [os]{Comentários}[os]{Comentários}
+ , brazilian = [os]{Comentários}[os]{Comentários}
+ , spanish = [los]{Comentarios}[los]{Comentarios}
+ , schinese = {解说}{解说}
+ , tchinese = {解說}{解說}
+ , japanese = {解説}{解説}
+ , russian = {Комментарии}{Комментарии}
+ }
+ , Crefname = {
+ , english = {Commentaries}{Commentaries}
+ , french = [Les]{Commentaires}[Les]{Commentaires}
+ , ngerman = { {Kommentare}{Kommentare}
+ , Nominativ = [Die]{Kommentare}[Die]{Kommentare}
+ , Genitiv = [Der]{Kommentare}[Der]{Kommentare}
+ , Dativ = [Den]{Kommentaren}[Den]{Kommentaren}
+ , Akkusativ = [Die]{Kommentare}[Die]{Kommentare}
+ }
+ , italian = [I]{Commenti}[I]{Commenti}
+ , portuguese = [Os]{Comentários}[Os]{Comentários}
+ , brazilian = [Os]{Comentários}[Os]{Comentários}
+ , spanish = [Los]{Comentarios}[Los]{Comentarios}
+ , schinese = {解说}{解说}
+ , tchinese = {解說}{解說}
+ , japanese = {解説}{解説}
+ , russian = {Комментарии}{Комментарии}
+ }
+ }
+
+\NameTheorem { conclusions }
+ {
+ , heading = {
+ , english = Conclusions
+ , french = Conclusions
+ , ngerman = Schlussfolgerungen
+ , italian = Conclusioni
+ , portuguese = Conclusões
+ , brazilian = Conclusões
+ , spanish = Conclusiones
+ , schinese = 结论
+ , tchinese = 結論
+ , japanese = 結論
+ , russian = Выводы
+ }
+ , crefname = {
+ , english = {Conclusions}{Conclusions}
+ , french = [Les]{Conclusions}[Les]{Conclusions}
+ , ngerman = { {Schlussfolgerungen}{Schlussfolgerungen}
+ , Nominativ = [die]{Schlussfolgerungen}[die]{Schlussfolgerungen}
+ , Genitiv = [der]{Schlussfolgerungen}[der]{Schlussfolgerungen}
+ , Dativ = [den]{Schlussfolgerungen}[den]{Schlussfolgerungen}
+ , Akkusativ = [die]{Schlussfolgerungen}[die]{Schlussfolgerungen}
+ }
+ , italian = [le]{Conclusioni}[le]{Conclusioni}
+ , portuguese = [as]{Conclusões}[as]{Conclusões}
+ , brazilian = [as]{Conclusões}[as]{Conclusões}
+ , spanish = [las]{Conclusiones}[las]{Conclusiones}
+ , schinese = {结论}{结论}
+ , tchinese = {結論}{結論}
+ , japanese = {結論}{結論}
+ , russian = {Выводы}{Выводы}
+ }
+ , Crefname = {
+ , english = {Conclusions}{Conclusions}
+ , french = [Les]{Conclusions}[Les]{Conclusions}
+ , ngerman = { {Schlussfolgerungen}{Schlussfolgerungen}
+ , Nominativ = [Die]{Schlussfolgerungen}[Die]{Schlussfolgerungen}
+ , Genitiv = [Der]{Schlussfolgerungen}[Der]{Schlussfolgerungen}
+ , Dativ = [Den]{Schlussfolgerungen}[Den]{Schlussfolgerungen}
+ , Akkusativ = [Die]{Schlussfolgerungen}[Die]{Schlussfolgerungen}
+ }
+ , italian = [Le]{Conclusioni}[Le]{Conclusioni}
+ , portuguese = [As]{Conclusões}[As]{Conclusões}
+ , brazilian = [As]{Conclusões}[As]{Conclusões}
+ , spanish = [Las]{Conclusiones}[Las]{Conclusiones}
+ , schinese = {结论}{结论}
+ , tchinese = {結論}{結論}
+ , japanese = {結論}{結論}
+ , russian = {Выводы}{Выводы}
+ }
+ }
+
+\NameTheorem { conjectures }
+ {
+ , heading = {
+ , english = Conjectures
+ , french = Conjectures
+ , ngerman = Vermutungen
+ , italian = Congetture
+ , portuguese = Conjeturas
+ , brazilian = Conjecturas
+ , spanish = Conjeturas
+ , schinese = 猜想
+ , tchinese = 猜想
+ , japanese = 予想
+ , russian = Гипотезы
+ }
+ , crefname = {
+ , english = {Conjectures}{Conjectures}
+ , french = [les]{Conjectures}[les]{Conjectures}
+ , ngerman = { {Vermutungen}{Vermutungen}
+ , Nominativ = [die]{Vermutungen}[die]{Vermutungen}
+ , Genitiv = [der]{Vermutungen}[der]{Vermutungen}
+ , Dativ = [den]{Vermutungen}[den]{Vermutungen}
+ , Akkusativ = [die]{Vermutungen}[die]{Vermutungen}
+ }
+ , italian = [le]{Congetture}[le]{Congetture}
+ , portuguese = [as]{Conjeturas}[as]{Conjeturas}
+ , brazilian = [as]{Conjecturas}[as]{Conjecturas}
+ , spanish = [las]{Conjeturas}[las]{Conjeturas}
+ , schinese = {猜想}{猜想}
+ , tchinese = {猜想}{猜想}
+ , japanese = {予想}{予想}
+ , russian = {Гипотезы}{Гипотезы}
+ }
+ , Crefname = {
+ , english = {Conjectures}{Conjectures}
+ , french = [Les]{Conjectures}[Les]{Conjectures}
+ , ngerman = { {Vermutungen}{Vermutungen}
+ , Nominativ = [Die]{Vermutungen}[Die]{Vermutungen}
+ , Genitiv = [Der]{Vermutungen}[Der]{Vermutungen}
+ , Dativ = [Den]{Vermutungen}[Den]{Vermutungen}
+ , Akkusativ = [Die]{Vermutungen}[Die]{Vermutungen}
+ }
+ , italian = [Le]{Congetture}[Le]{Congetture}
+ , portuguese = [As]{Conjeturas}[As]{Conjeturas}
+ , brazilian = [As]{Conjecturas}[As]{Conjecturas}
+ , spanish = [Las]{Conjeturas}[Las]{Conjeturas}
+ , schinese = {猜想}{猜想}
+ , tchinese = {猜想}{猜想}
+ , japanese = {予想}{予想}
+ , russian = {Гипотезы}{Гипотезы}
+ }
+ }
+
+\NameTheorem { constructions }
+ {
+ , heading = {
+ , english = Constructions
+ , french = Constructions
+ , ngerman = Konstruktionen
+ , italian = Costruzioni
+ , portuguese = Construções
+ , brazilian = Construções
+ , spanish = Construcciones
+ , schinese = 构造
+ , tchinese = 構造
+ , japanese = 構造
+ , russian = Конструкции
+ }
+ , crefname = {
+ , english = {Constructions}{Constructions}
+ , french = [les]{Constructions}[les]{Constructions}
+ , ngerman = { {Konstruktionen}{Konstruktionen}
+ , Nominativ = [die]{Konstruktionen}[die]{Konstruktionen}
+ , Genitiv = [der]{Konstruktionen}[der]{Konstruktionen}
+ , Dativ = [den]{Konstruktionen}[den]{Konstruktionen}
+ , Akkusativ = [die]{Konstruktionen}[die]{Konstruktionen}
+ }
+ , italian = [le]{Costruzioni}[le]{Costruzioni}
+ , portuguese = [as]{Construções}[as]{Construções}
+ , brazilian = [as]{Construções}[as]{Construções}
+ , spanish = [las]{Construcciones}[las]{Construcciones}
+ , schinese = {构造}{构造}
+ , tchinese = {構造}{構造}
+ , japanese = {構造}{構造}
+ , russian = {Конструкции}{Конструкции}
+ }
+ , Crefname = {
+ , english = {Constructions}{Constructions}
+ , french = [Les]{Constructions}[Les]{Constructions}
+ , ngerman = { {Konstruktionen}{Konstruktionen}
+ , Nominativ = [Die]{Konstruktionen}[Die]{Konstruktionen}
+ , Genitiv = [Der]{Konstruktionen}[Der]{Konstruktionen}
+ , Dativ = [Den]{Konstruktionen}[Den]{Konstruktionen}
+ , Akkusativ = [Die]{Konstruktionen}[Die]{Konstruktionen}
+ }
+ , italian = [Le]{Costruzioni}[Le]{Costruzioni}
+ , portuguese = [As]{Construções}[As]{Construções}
+ , brazilian = [As]{Construções}[As]{Construções}
+ , spanish = [Las]{Construcciones}[Las]{Construcciones}
+ , schinese = {构造}{构造}
+ , tchinese = {構造}{構造}
+ , japanese = {構造}{構造}
+ , russian = {Конструкции}{Конструкции}
+ }
+ }
+
+\NameTheorem { conventions }
+ {
+ , heading = {
+ , english = Conventions
+ , french = Conventions
+ , ngerman = Konventionen
+ , italian = Convenzioni
+ , portuguese = Convenções
+ , brazilian = Convenções
+ , spanish = Convenciones
+ , schinese = 约定
+ , tchinese = 約定
+ , japanese = 慣例
+ , russian = Конвенции
+ }
+ , crefname = {
+ , english = {Conventions}{Conventions}
+ , french = [les]{Conventions}[les]{Conventions}
+ , ngerman = { {Konventionen}{Konventionen}
+ , Nominativ = [die]{Konventionen}[die]{Konventionen}
+ , Genitiv = [der]{Konventionen}[der]{Konventionen}
+ , Dativ = [den]{Konventionen}[den]{Konventionen}
+ , Akkusativ = [die]{Konventionen}[die]{Konventionen}
+ }
+ , italian = [le]{Convenzioni}[le]{Convenzioni}
+ , portuguese = [as]{Convenções}[as]{Convenções}
+ , brazilian = [as]{Convenções}[as]{Convenções}
+ , spanish = [las]{Convenciones}[las]{Convenciones}
+ , schinese = {约定}{约定}
+ , tchinese = {約定}{約定}
+ , japanese = {慣例}{慣例}
+ , russian = {Конвенции}{Конвенции}
+ }
+ , Crefname = {
+ , english = {Conventions}{Conventions}
+ , french = [Les]{Conventions}[Les]{Conventions}
+ , ngerman = { {Konventionen}{Konventionen}
+ , Nominativ = [Die]{Konventionen}[Die]{Konventionen}
+ , Genitiv = [Der]{Konventionen}[Der]{Konventionen}
+ , Dativ = [Den]{Konventionen}[Den]{Konventionen}
+ , Akkusativ = [Die]{Konventionen}[Die]{Konventionen}
+ }
+ , italian = [Le]{Convenzioni}[Le]{Convenzioni}
+ , portuguese = [As]{Convenções}[As]{Convenções}
+ , brazilian = [As]{Convenções}[As]{Convenções}
+ , spanish = [Las]{Convenciones}[Las]{Convenciones}
+ , schinese = {约定}{约定}
+ , tchinese = {約定}{約定}
+ , japanese = {慣例}{慣例}
+ , russian = {Конвенции}{Конвенции}
+ }
+ }
+
+\NameTheorem { corollaries }
+ {
+ , heading = {
+ , english = Corollaries
+ , french = Corollaires
+ , ngerman = Korollare
+ , italian = Corollari
+ , portuguese = Corolários
+ , brazilian = Corolários
+ , spanish = Corolarios
+ , schinese = 推论
+ , tchinese = 推論
+ , japanese = 系
+ , russian = Следствия
+ }
+ , crefname = {
+ , english = {Corollaries}{Corollaries}
+ , french = [les]{Corollaires}[les]{Corollaires}
+ , ngerman = { {Korollare}{Korollare}
+ , Nominativ = [die]{Korollare}[die]{Korollare}
+ , Genitiv = [der]{Korollare}[der]{Korollare}
+ , Dativ = [den]{Korollaren}[den]{Korollaren}
+ , Akkusativ = [die]{Korollare}[die]{Korollare}
+ }
+ , italian = [i]{Corollari}[i]{Corollari}
+ , portuguese = [os]{Corolários}[os]{Corolários}
+ , brazilian = [os]{Corolários}[os]{Corolários}
+ , spanish = [los]{Corolarios}[los]{Corolarios}
+ , schinese = {推论}{推论}
+ , tchinese = {推論}{推論}
+ , japanese = {系}{系}
+ , russian = {Следствия}{Следствия}
+ }
+ , Crefname = {
+ , english = {Corollaries}{Corollaries}
+ , french = [Les]{Corollaires}[Les]{Corollaires}
+ , ngerman = { {Korollare}{Korollare}
+ , Nominativ = [Die]{Korollare}[Die]{Korollare}
+ , Genitiv = [Der]{Korollare}[Der]{Korollare}
+ , Dativ = [Den]{Korollaren}[Den]{Korollaren}
+ , Akkusativ = [Die]{Korollare}[Die]{Korollare}
+ }
+ , italian = [I]{Corollari}[I]{Corollari}
+ , portuguese = [Os]{Corolários}[Os]{Corolários}
+ , brazilian = [Os]{Corolários}[Os]{Corolários}
+ , spanish = [Los]{Corolarios}[Los]{Corolarios}
+ , schinese = {推论}{推论}
+ , tchinese = {推論}{推論}
+ , japanese = {系}{系}
+ , russian = {Следствия}{Следствия}
+ }
+ }
+
+\NameTheorem { definitions }
+ {
+ , heading = {
+ , english = Definitions
+ , french = Définitions
+ , ngerman = Definitionen
+ , italian = Definizioni
+ , portuguese = Definições
+ , brazilian = Definições
+ , spanish = Definiciones
+ , schinese = 定义
+ , tchinese = 定義
+ , japanese = 定義
+ , russian = Определения
+ }
+ , crefname = {
+ , english = {Definitions}{Definitions}
+ , french = [les]{Définitions}[les]{Définitions}
+ , ngerman = { {Definitionen}{Definitionen}
+ , Nominativ = [die]{Definitionen}[die]{Definitionen}
+ , Genitiv = [der]{Definitionen}[der]{Definitionen}
+ , Dativ = [den]{Definitionen}[den]{Definitionen}
+ , Akkusativ = [die]{Definitionen}[die]{Definitionen}
+ }
+ , italian = [le]{Definizioni}[le]{Definizioni}
+ , portuguese = [as]{Definições}[as]{Definições}
+ , brazilian = [as]{Definições}[as]{Definições}
+ , spanish = [las]{Definiciones}[las]{Definiciones}
+ , schinese = {定义}{定义}
+ , tchinese = {定義}{定義}
+ , japanese = {定義}{定義}
+ , russian = {Определения}{Определения}
+ }
+ , Crefname = {
+ , english = {Definitions}{Definitions}
+ , french = [Les]{Définitions}[Les]{Définitions}
+ , ngerman = { {Definitionen}{Definitionen}
+ , Nominativ = [Die]{Definitionen}[Die]{Definitionen}
+ , Genitiv = [Der]{Definitionen}[Der]{Definitionen}
+ , Dativ = [Den]{Definitionen}[Den]{Definitionen}
+ , Akkusativ = [Die]{Definitionen}[Die]{Definitionen}
+ }
+ , italian = [Le]{Definizioni}[Le]{Definizioni}
+ , portuguese = [As]{Definições}[As]{Definições}
+ , brazilian = [As]{Definições}[As]{Definições}
+ , spanish = [Las]{Definiciones}[Las]{Definiciones}
+ , schinese = {定义}{定义}
+ , tchinese = {定義}{定義}
+ , japanese = {定義}{定義}
+ , russian = {Определения}{Определения}
+ }
+ }
+
+\NameTheorem { examples }
+ {
+ , heading = {
+ , english = Examples
+ , french = Exemples
+ , ngerman = Beispiele
+ , italian = Esempi
+ , portuguese = Exemplos
+ , brazilian = Exemplos
+ , spanish = Ejemplos
+ , schinese = 例
+ , tchinese = 例
+ , japanese = 例
+ , russian = Примеры
+ }
+ , crefname = {
+ , english = {Examples}{Examples}
+ , french = [les]{Exemples}[les]{Exemples}
+ , ngerman = { {Beispiele}{Beispiele}
+ , Nominativ = [die]{Beispiele}[die]{Beispiele}
+ , Genitiv = [der]{Beispiele}[der]{Beispiele}
+ , Dativ = [den]{Beispielen}[den]{Beispielen}
+ , Akkusativ = [die]{Beispiele}[die]{Beispiele}
+ }
+ , italian = [gli]{Esempi}[gli]{Esempi}
+ , portuguese = [os]{Exemplos}[os]{Exemplos}
+ , brazilian = [os]{Exemplos}[os]{Exemplos}
+ , spanish = [los]{Ejemplos}[los]{Ejemplos}
+ , schinese = {例}{例}
+ , tchinese = {例}{例}
+ , japanese = {例}{例}
+ , russian = {Примеры}{Примеры}
+ }
+ , Crefname = {
+ , english = {Examples}{Examples}
+ , french = [Les]{Exemples}[Les]{Exemples}
+ , ngerman = { {Beispiele}{Beispiele}
+ , Nominativ = [Die]{Beispiele}[Die]{Beispiele}
+ , Genitiv = [Der]{Beispiele}[Der]{Beispiele}
+ , Dativ = [Den]{Beispielen}[Den]{Beispielen}
+ , Akkusativ = [Die]{Beispiele}[Die]{Beispiele}
+ }
+ , italian = [Gli]{Esempi}[Gli]{Esempi}
+ , portuguese = [Os]{Exemplos}[Os]{Exemplos}
+ , brazilian = [Os]{Exemplos}[Os]{Exemplos}
+ , spanish = [Los]{Ejemplos}[Los]{Ejemplos}
+ , schinese = {例}{例}
+ , tchinese = {例}{例}
+ , japanese = {例}{例}
+ , russian = {Примеры}{Примеры}
+ }
+ }
+
+\NameTheorem { exercises }
+ {
+ , heading = {
+ , english = Exercises
+ , french = Exercices
+ , ngerman = ÜBungen
+ , italian = Esercizi
+ , portuguese = Exercícios
+ , brazilian = Exercícios
+ , spanish = Ejercicios
+ , schinese = 习题
+ , tchinese = 習題
+ , japanese = 練習
+ , russian = Упражнения
+ }
+ , crefname = {
+ , english = {Exercises}{Exercises}
+ , french = [les]{Exercices}[les]{Exercices}
+ , ngerman = { {Übungen}{Übungen}
+ , Nominativ = [die]{Übungen}[die]{Übungen}
+ , Genitiv = [der]{Übungen}[der]{Übungen}
+ , Dativ = [den]{Übungen}[den]{Übungen}
+ , Akkusativ = [die]{Übungen}[die]{Übungen}
+ }
+ , italian = [gli]{Esercizi}[gli]{Esercizi}
+ , portuguese = [os]{Exercícios}[os]{Exercícios}
+ , brazilian = [os]{Exercícios}[os]{Exercícios}
+ , spanish = [los]{Ejercicios}[los]{Ejercicios}
+ , schinese = {习题}{习题}
+ , tchinese = {習題}{習題}
+ , japanese = {練習}{練習}
+ , russian = {Упражнения}{Упражнения}
+ }
+ , Crefname = {
+ , english = {Exercises}{Exercises}
+ , french = [Les]{Exercices}[Les]{Exercices}
+ , ngerman = { {Übungen}{Übungen}
+ , Nominativ = [Die]{Übungen}[Die]{Übungen}
+ , Genitiv = [Der]{Übungen}[Der]{Übungen}
+ , Dativ = [Den]{Übungen}[Den]{Übungen}
+ , Akkusativ = [Die]{Übungen}[Die]{Übungen}
+ }
+ , italian = [Gli]{Esercizi}[Gli]{Esercizi}
+ , portuguese = [Os]{Exercícios}[Os]{Exercícios}
+ , brazilian = [Os]{Exercícios}[Os]{Exercícios}
+ , spanish = [Los]{Ejercicios}[Los]{Ejercicios}
+ , schinese = {习题}{习题}
+ , tchinese = {習題}{習題}
+ , japanese = {練習}{練習}
+ , russian = {Упражнения}{Упражнения}
+ }
+ }
+
+\NameTheorem { facts }
+ {
+ , heading = {
+ , english = Facts
+ , french = Faits
+ , ngerman = Tatsachen
+ , italian = Fatti
+ , portuguese = Factos
+ , brazilian = Fatos
+ , spanish = Hechos
+ , schinese = 事实
+ , tchinese = 事實
+ , japanese = 事実
+ , russian = Факты
+ }
+ , crefname = {
+ , english = {Facts}{Facts}
+ , french = [les]{Faits}[les]{Faits}
+ , ngerman = { {Tatsachen}{Tatsachen}
+ , Nominativ = [die]{Tatsachen}[die]{Tatsachen}
+ , Genitiv = [der]{Tatsachen}[der]{Tatsachen}
+ , Dativ = [den]{Tatsachen}[den]{Tatsachen}
+ , Akkusativ = [die]{Tatsachen}[die]{Tatsachen}
+ }
+ , italian = [i]{Fatti}[i]{Fatti}
+ , portuguese = [os]{Factos}[os]{Factos}
+ , brazilian = [os]{Fatos}[os]{Fatos}
+ , spanish = [los]{Hechos}[los]{Hechos}
+ , schinese = {事实}{事实}
+ , tchinese = {事實}{事實}
+ , japanese = {事実}{事実}
+ , russian = {Факты}{Факты}
+ }
+ , Crefname = {
+ , english = {Facts}{Facts}
+ , french = [Les]{Faits}[Les]{Faits}
+ , ngerman = { {Tatsachen}{Tatsachen}
+ , Nominativ = [Die]{Tatsachen}[Die]{Tatsachen}
+ , Genitiv = [Der]{Tatsachen}[Der]{Tatsachen}
+ , Dativ = [Den]{Tatsachen}[Den]{Tatsachen}
+ , Akkusativ = [Die]{Tatsachen}[Die]{Tatsachen}
+ }
+ , italian = [I]{Fatti}[I]{Fatti}
+ , portuguese = [Os]{Factos}[Os]{Factos}
+ , brazilian = [Os]{Fatos}[Os]{Fatos}
+ , spanish = [Los]{Hechos}[Los]{Hechos}
+ , schinese = {事实}{事实}
+ , tchinese = {事實}{事實}
+ , japanese = {事実}{事実}
+ , russian = {Факты}{Факты}
+ }
+ }
+
+\NameTheorem { hypotheses }
+ {
+ , heading = {
+ , english = Hypotheses
+ , french = Hypothèses
+ , ngerman = Hypothesen
+ , italian = Ipotesi
+ , portuguese = Hipóteses
+ , brazilian = Hipóteses
+ , spanish = Hipótesis
+ , schinese = 假设
+ , tchinese = 假設
+ , japanese = 仮設
+ , russian = Гипотезы
+ }
+ , crefname = {
+ , english = {Hypotheses}{Hypotheses}
+ , french = [les]{Hypothèses}[les]{Hypothèses}
+ , ngerman = { {Hypothesen}{Hypothesen}
+ , Nominativ = [die]{Hypothesen}[die]{Hypothesen}
+ , Genitiv = [der]{Hypothesen}[der]{Hypothesen}
+ , Dativ = [den]{Hypothesen}[den]{Hypothesen}
+ , Akkusativ = [die]{Hypothesen}[die]{Hypothesen}
+ }
+ , italian = [le]{Ipotesi}[le]{Ipotesi}
+ , portuguese = [as]{Hipóteses}[as]{Hipóteses}
+ , brazilian = [as]{Hipóteses}[as]{Hipóteses}
+ , spanish = [las]{Hipótesis}[las]{Hipótesis}
+ , schinese = {假设}{假设}
+ , tchinese = {假設}{假設}
+ , japanese = {仮設}{仮設}
+ , russian = {Гипотезы}{Гипотезы}
+ }
+ , Crefname = {
+ , english = {Hypotheses}{Hypotheses}
+ , french = [Les]{Hypothèses}[Les]{Hypothèses}
+ , ngerman = { {Hypothesen}{Hypothesen}
+ , Nominativ = [Die]{Hypothesen}[Die]{Hypothesen}
+ , Genitiv = [Der]{Hypothesen}[Der]{Hypothesen}
+ , Dativ = [Den]{Hypothesen}[Den]{Hypothesen}
+ , Akkusativ = [Die]{Hypothesen}[Die]{Hypothesen}
+ }
+ , italian = [Le]{Ipotesi}[Le]{Ipotesi}
+ , portuguese = [As]{Hipóteses}[As]{Hipóteses}
+ , brazilian = [As]{Hipóteses}[As]{Hipóteses}
+ , spanish = [Las]{Hipótesis}[Las]{Hipótesis}
+ , schinese = {假设}{假设}
+ , tchinese = {假設}{假設}
+ , japanese = {仮設}{仮設}
+ , russian = {Гипотезы}{Гипотезы}
+ }
+ }
+
+\NameTheorem { lemmas }
+ {
+ , heading = {
+ , english = Lemmas
+ , french = Lemmes
+ , ngerman = Lemmata
+ , italian = Lemmi
+ , portuguese = Lemas
+ , brazilian = Lemas
+ , spanish = Lemas
+ , schinese = 引理
+ , tchinese = 引理
+ , japanese = 補題
+ , russian = Леммы
+ }
+ , crefname = {
+ , english = {Lemmas}{Lemmas}
+ , french = [les]{Lemmes}[les]{Lemmes}
+ , ngerman = { {Lemmata}{Lemmata}
+ , Nominativ = [die]{Lemmata}[die]{Lemmata}
+ , Genitiv = [der]{Lemmata}[der]{Lemmata}
+ , Dativ = [den]{Lemmata}[den]{Lemmata}
+ , Akkusativ = [die]{Lemmata}[die]{Lemmata}
+ }
+ , italian = [i]{Lemmi}[i]{Lemmi}
+ , portuguese = [os]{Lemas}[os]{Lemas}
+ , brazilian = [os]{Lemas}[os]{Lemas}
+ , spanish = [las]{Lemas}[las]{Lemas}
+ , schinese = {引理}{引理}
+ , tchinese = {引理}{引理}
+ , japanese = {補題}{補題}
+ , russian = {Леммы}{Леммы}
+ }
+ , Crefname = {
+ , english = {Lemmas}{Lemmas}
+ , french = [Les]{Lemmes}[Les]{Lemmes}
+ , ngerman = { {Lemmata}{Lemmata}
+ , Nominativ = [Die]{Lemmata}[Die]{Lemmata}
+ , Genitiv = [Der]{Lemmata}[Der]{Lemmata}
+ , Dativ = [Den]{Lemmata}[Den]{Lemmata}
+ , Akkusativ = [Die]{Lemmata}[Die]{Lemmata}
+ }
+ , italian = [I]{Lemmi}[I]{Lemmi}
+ , portuguese = [Os]{Lemas}[Os]{Lemas}
+ , brazilian = [Os]{Lemas}[Os]{Lemas}
+ , spanish = [las]{Lemas}[las]{Lemas}
+ , schinese = {引理}{引理}
+ , tchinese = {引理}{引理}
+ , japanese = {補題}{補題}
+ , russian = {Леммы}{Леммы}
+ }
+ }
+
+\NameTheorem { motivations }
+ {
+ , heading = {
+ , english = Motivations
+ , french = Motivations
+ , ngerman = Motivationen
+ , italian = Motivazioni
+ , portuguese = Motivações
+ , brazilian = Motivações
+ , spanish = Motivaciones
+ , schinese = 动机
+ , tchinese = 動機
+ , japanese = 動機
+ , russian = Мотивации
+ }
+ , crefname = {
+ , english = {Motivations}{Motivations}
+ , french = [les]{Motivations}[les]{Motivations}
+ , ngerman = { {Motivationen}{Motivationen}
+ , Nominativ = [die]{Motivationen}[die]{Motivationen}
+ , Genitiv = [der]{Motivationen}[der]{Motivationen}
+ , Dativ = [den]{Motivationen}[den]{Motivationen}
+ , Akkusativ = [die]{Motivationen}[die]{Motivationen}
+ }
+ , italian = [le]{Motivazioni}[le]{Motivazioni}
+ , portuguese = [as]{Motivações}[as]{Motivações}
+ , brazilian = [as]{Motivações}[as]{Motivações}
+ , spanish = [las]{Motivaciones}[las]{Motivaciones}
+ , schinese = {动机}{动机}
+ , tchinese = {動機}{動機}
+ , japanese = {動機}{動機}
+ , russian = {Мотивации}{Мотивации}
+ }
+ , Crefname = {
+ , english = {Motivations}{Motivations}
+ , french = [Les]{Motivations}[Les]{Motivations}
+ , ngerman = { {Motivationen}{Motivationen}
+ , Nominativ = [Die]{Motivationen}[Die]{Motivationen}
+ , Genitiv = [Der]{Motivationen}[Der]{Motivationen}
+ , Dativ = [Den]{Motivationen}[Den]{Motivationen}
+ , Akkusativ = [Die]{Motivationen}[Die]{Motivationen}
+ }
+ , italian = [Le]{Motivazioni}[Le]{Motivazioni}
+ , portuguese = [As]{Motivações}[As]{Motivações}
+ , brazilian = [As]{Motivações}[As]{Motivações}
+ , spanish = [Las]{Motivaciones}[Las]{Motivaciones}
+ , schinese = {动机}{动机}
+ , tchinese = {動機}{動機}
+ , japanese = {動機}{動機}
+ , russian = {Мотивации}{Мотивации}
+ }
+ }
+
+\NameTheorem { notations }
+ {
+ , heading = {
+ , english = Notations
+ , french = Notations
+ , ngerman = Notationen
+ , italian = Notazioni
+ , portuguese = Notações
+ , brazilian = Notações
+ , spanish = Notaciones
+ , schinese = 记号
+ , tchinese = 記號
+ , japanese = 記法
+ , russian = Нотации
+ }
+ , crefname = {
+ , english = {Notations}{Notations}
+ , french = [les]{Notations}[les]{Notations}
+ , ngerman = { {Notationen}{Notationen}
+ , Nominativ = [die]{Notationen}[die]{Notationen}
+ , Genitiv = [der]{Notationen}[der]{Notationen}
+ , Dativ = [den]{Notationen}[den]{Notationen}
+ , Akkusativ = [die]{Notationen}[die]{Notationen}
+ }
+ , italian = [le]{Notazioni}[le]{Notazioni}
+ , portuguese = [as]{Notações}[as]{Notações}
+ , brazilian = [as]{Notações}[as]{Notações}
+ , spanish = [las]{Notaciones}[las]{Notaciones}
+ , schinese = {记号}{记号}
+ , tchinese = {記號}{記號}
+ , japanese = {記法}{記法}
+ , russian = {Нотации}{Нотации}
+ }
+ , Crefname = {
+ , english = {Notations}{Notations}
+ , french = [Les]{Notations}[Les]{Notations}
+ , ngerman = { {Notationen}{Notationen}
+ , Nominativ = [Die]{Notationen}[Die]{Notationen}
+ , Genitiv = [Der]{Notationen}[Der]{Notationen}
+ , Dativ = [Den]{Notationen}[Den]{Notationen}
+ , Akkusativ = [Die]{Notationen}[Die]{Notationen}
+ }
+ , italian = [Le]{Notazioni}[Le]{Notazioni}
+ , portuguese = [As]{Notações}[As]{Notações}
+ , brazilian = [As]{Notações}[As]{Notações}
+ , spanish = [Las]{Notaciones}[Las]{Notaciones}
+ , schinese = {记号}{记号}
+ , tchinese = {記號}{記號}
+ , japanese = {記法}{記法}
+ , russian = {Нотации}{Нотации}
+ }
+ }
+
+\NameTheorem { observations }
+ {
+ , heading = {
+ , english = Observations
+ , french = Observations
+ , ngerman = Beobachtungen
+ , italian = Osservazioni
+ , portuguese = Observações
+ , brazilian = Observações
+ , spanish = Observaciones
+ , schinese = 观察
+ , tchinese = 觀察
+ , japanese = 観察
+ , russian = Наблюдения
+ }
+ , crefname = {
+ , english = {Observations}{Observations}
+ , french = [les]{Observations}[les]{Observations}
+ , ngerman = { {Beobachtungen}{Beobachtungen}
+ , Nominativ = [die]{Beobachtungen}[die]{Beobachtungen}
+ , Genitiv = [der]{Beobachtungen}[der]{Beobachtungen}
+ , Dativ = [den]{Beobachtungen}[den]{Beobachtungen}
+ , Akkusativ = [die]{Beobachtungen}[die]{Beobachtungen}
+ }
+ , italian = [le]{Osservazioni}[le]{Osservazioni}
+ , portuguese = [as]{Observações}[as]{Observações}
+ , brazilian = [as]{Observações}[as]{Observações}
+ , spanish = [las]{Observaciones}[las]{Observaciones}
+ , schinese = {观察}{观察}
+ , tchinese = {觀察}{觀察}
+ , japanese = {観察}{観察}
+ , russian = {Наблюдения}{Наблюдения}
+ }
+ , Crefname = {
+ , english = {Observations}{Observations}
+ , french = [Les]{Observations}[Les]{Observations}
+ , ngerman = { {Beobachtungen}{Beobachtungen}
+ , Nominativ = [Die]{Beobachtungen}[Die]{Beobachtungen}
+ , Genitiv = [Der]{Beobachtungen}[Der]{Beobachtungen}
+ , Dativ = [Den]{Beobachtungen}[Den]{Beobachtungen}
+ , Akkusativ = [Die]{Beobachtungen}[Die]{Beobachtungen}
+ }
+ , italian = [Le]{Osservazioni}[Le]{Osservazioni}
+ , portuguese = [As]{Observações}[As]{Observações}
+ , brazilian = [As]{Observações}[As]{Observações}
+ , spanish = [Las]{Observaciones}[Las]{Observaciones}
+ , schinese = {观察}{观察}
+ , tchinese = {觀察}{觀察}
+ , japanese = {観察}{観察}
+ , russian = {Наблюдения}{Наблюдения}
+ }
+ }
+
+\NameTheorem { postulates }
+ {
+ , heading = {
+ , english = Postulates
+ , french = Postulats
+ , ngerman = Postulate
+ , italian = Postulati
+ , portuguese = Postulados
+ , brazilian = Postulados
+ , spanish = Postulados
+ , schinese = 公设
+ , tchinese = 公設
+ , japanese = 公準
+ , russian = Постулаты
+ }
+ , crefname = {
+ , english = {Postulates}{Postulates}
+ , french = [les]{Postulats}[les]{Postulats}
+ , ngerman = { {Postulate}{Postulate}
+ , Nominativ = [die]{Postulate}[die]{Postulate}
+ , Genitiv = [der]{Postulate}[der]{Postulate}
+ , Dativ = [den]{Postulaten}[den]{Postulaten}
+ , Akkusativ = [die]{Postulate}[die]{Postulate}
+ }
+ , italian = [i]{Postulati}[i]{Postulati}
+ , portuguese = [os]{Postulados}[os]{Postulados}
+ , brazilian = [os]{Postulados}[os]{Postulados}
+ , spanish = [los]{Postulados}[los]{Postulados}
+ , schinese = {公设}{公设}
+ , tchinese = {公設}{公設}
+ , japanese = {公準}{公準}
+ , russian = {Постулаты}{Постулаты}
+ }
+ , Crefname = {
+ , english = {Postulates}{Postulates}
+ , french = [Les]{Postulats}[Les]{Postulats}
+ , ngerman = { {Postulate}{Postulate}
+ , Nominativ = [Die]{Postulate}[Die]{Postulate}
+ , Genitiv = [Der]{Postulate}[Der]{Postulate}
+ , Dativ = [Den]{Postulaten}[Den]{Postulaten}
+ , Akkusativ = [Die]{Postulate}[Die]{Postulate}
+ }
+ , italian = [I]{Postulati}[I]{Postulati}
+ , portuguese = [Os]{Postulados}[Os]{Postulados}
+ , brazilian = [Os]{Postulados}[Os]{Postulados}
+ , spanish = [Los]{Postulados}[Los]{Postulados}
+ , schinese = {公设}{公设}
+ , tchinese = {公設}{公設}
+ , japanese = {公準}{公準}
+ , russian = {Постулаты}{Постулаты}
+ }
+ }
+
+\NameTheorem { problems }
+ {
+ , heading = {
+ , english = Problems
+ , french = Problèmes
+ , ngerman = Probleme
+ , italian = Problemi
+ , portuguese = Problemas
+ , brazilian = Problemas
+ , spanish = Problemas
+ , schinese = 问题
+ , tchinese = 問題
+ , japanese = 問題
+ , russian = Проблемы
+ }
+ , crefname = {
+ , english = {Problems}{Problems}
+ , french = [les]{Problèmes}[les]{Problèmes}
+ , ngerman = { {Probleme}{Probleme}
+ , Nominativ = [die]{Probleme}[die]{Probleme}
+ , Genitiv = [der]{Probleme}[der]{Probleme}
+ , Dativ = [den]{Problemen}[den]{Problemen}
+ , Akkusativ = [die]{Probleme}[die]{Probleme}
+ }
+ , italian = [i]{Problemi}[i]{Problemi}
+ , portuguese = [os]{Problemas}[os]{Problemas}
+ , brazilian = [os]{Problemas}[os]{Problemas}
+ , spanish = [los]{Problemas}[los]{Problemas}
+ , schinese = {问题}{问题}
+ , tchinese = {問題}{問題}
+ , japanese = {問題}{問題}
+ , russian = {Проблемы}{Проблемы}
+ }
+ , Crefname = {
+ , english = {Problems}{Problems}
+ , french = [Les]{Problèmes}[Les]{Problèmes}
+ , ngerman = { {Probleme}{Probleme}
+ , Nominativ = [Die]{Probleme}[Die]{Probleme}
+ , Genitiv = [Der]{Probleme}[Der]{Probleme}
+ , Dativ = [Den]{Problemen}[Den]{Problemen}
+ , Akkusativ = [Die]{Probleme}[Die]{Probleme}
+ }
+ , italian = [I]{Problemi}[I]{Problemi}
+ , portuguese = [Os]{Problemas}[Os]{Problemas}
+ , brazilian = [Os]{Problemas}[Os]{Problemas}
+ , spanish = [Los]{Problemas}[Los]{Problemas}
+ , schinese = {问题}{问题}
+ , tchinese = {問題}{問題}
+ , japanese = {問題}{問題}
+ , russian = {Проблемы}{Проблемы}
+ }
+ }
+
+\NameTheorem { properties }
+ {
+ , heading = {
+ , english = Properties
+ , french = Propriétés
+ , ngerman = Eigenschaften
+ , italian = Proprietà
+ , portuguese = Propriedades
+ , brazilian = Propriedades
+ , spanish = Propiedades
+ , schinese = 性质
+ , tchinese = 性質
+ , japanese = 性質
+ , russian = Имущества
+ }
+ , crefname = {
+ , english = {Properties}{Properties}
+ , french = [les]{Propriétés}[les]{Propriétés}
+ , ngerman = { {Eigenschaften}{Eigenschaften}
+ , Nominativ = [die]{Eigenschaften}[die]{Eigenschaften}
+ , Genitiv = [der]{Eigenschaften}[der]{Eigenschaften}
+ , Dativ = [den]{Eigenschaften}[den]{Eigenschaften}
+ , Akkusativ = [die]{Eigenschaften}[die]{Eigenschaften}
+ }
+ , italian = [le]{Proprietà}[le]{Proprietà}
+ , portuguese = [as]{Propriedades}[as]{Propriedades}
+ , brazilian = [as]{Propriedades}[as]{Propriedades}
+ , spanish = [las]{Propiedades}[las]{Propiedades}
+ , schinese = {性质}{性质}
+ , tchinese = {性質}{性質}
+ , japanese = {性質}{性質}
+ , russian = {Имущества}{Имущества}
+ }
+ , Crefname = {
+ , english = {Properties}{Properties}
+ , french = [Les]{Propriétés}[Les]{Propriétés}
+ , ngerman = { {Eigenschaften}{Eigenschaften}
+ , Nominativ = [Die]{Eigenschaften}[Die]{Eigenschaften}
+ , Genitiv = [Der]{Eigenschaften}[Der]{Eigenschaften}
+ , Dativ = [Den]{Eigenschaften}[Den]{Eigenschaften}
+ , Akkusativ = [Die]{Eigenschaften}[Die]{Eigenschaften}
+ }
+ , italian = [Le]{Proprietà}[Le]{Proprietà}
+ , portuguese = [As]{Propriedades}[As]{Propriedades}
+ , brazilian = [As]{Propriedades}[As]{Propriedades}
+ , spanish = [Las]{Propiedades}[Las]{Propiedades}
+ , schinese = {性质}{性质}
+ , tchinese = {性質}{性質}
+ , japanese = {性質}{性質}
+ , russian = {Имущества}{Имущества}
+ }
+ }
+
+\NameTheorem { propositions }
+ {
+ , heading = {
+ , english = Propositions
+ , french = Propositions
+ , ngerman = Propositionen
+ , italian = Proposte
+ , portuguese = Proposições
+ , brazilian = Proposições
+ , spanish = Proposiciones
+ , schinese = 命题
+ , tchinese = 命題
+ , japanese = 命題
+ , russian = Предложения
+ }
+ , crefname = {
+ , english = {Propositions}{Propositions}
+ , french = [les]{Propositions}[les]{Propositions}
+ , ngerman = { {Propositionen}{Propositionen}
+ , Nominativ = [die]{Propositionen}[die]{Propositionen}
+ , Genitiv = [der]{Propositionen}[der]{Propositionen}
+ , Dativ = [den]{Propositionen}[den]{Propositionen}
+ , Akkusativ = [die]{Propositionen}[die]{Propositionen}
+ }
+ , italian = [le]{Proposte}[le]{Proposte}
+ , portuguese = [as]{Proposições}[as]{Proposições}
+ , brazilian = [as]{Proposições}[as]{Proposições}
+ , spanish = [las]{Proposiciones}[las]{Proposiciones}
+ , schinese = {命题}{命题}
+ , tchinese = {命題}{命題}
+ , japanese = {命題}{命題}
+ , russian = {Предложения}{Предложения}
+ }
+ , Crefname = {
+ , english = {Propositions}{Propositions}
+ , french = [Les]{Propositions}[Les]{Propositions}
+ , ngerman = { {Propositionen}{Propositionen}
+ , Nominativ = [Die]{Propositionen}[Die]{Propositionen}
+ , Genitiv = [Der]{Propositionen}[Der]{Propositionen}
+ , Dativ = [Den]{Propositionen}[Den]{Propositionen}
+ , Akkusativ = [Die]{Propositionen}[Die]{Propositionen}
+ }
+ , italian = [Le]{Proposte}[Le]{Proposte}
+ , portuguese = [As]{Proposições}[As]{Proposições}
+ , brazilian = [As]{Proposições}[As]{Proposições}
+ , spanish = [Las]{Proposiciones}[Las]{Proposiciones}
+ , schinese = {命题}{命题}
+ , tchinese = {命題}{命題}
+ , japanese = {命題}{命題}
+ , russian = {Предложения}{Предложения}
+ }
+ }
+
+\NameTheorem { questions }
+ {
+ , heading = {
+ , english = Questions
+ , french = Questions
+ , ngerman = Fragen
+ , italian = Domande
+ , portuguese = Perguntas
+ , brazilian = Perguntas
+ , spanish = Preguntas
+ , schinese = 问题
+ , tchinese = 問題
+ , japanese = 問題
+ , russian = Вопросы
+ }
+ , crefname = {
+ , english = {Questions}{Questions}
+ , french = [les]{Questions}[les]{Questions}
+ , ngerman = { {Fragen}{Fragen}
+ , Nominativ = [die]{Fragen}[die]{Fragen}
+ , Genitiv = [der]{Fragen}[der]{Fragen}
+ , Dativ = [den]{Fragen}[den]{Fragen}
+ , Akkusativ = [die]{Fragen}[die]{Fragen}
+ }
+ , italian = [le]{Domande}[le]{Domande}
+ , portuguese = [as]{Perguntas}[as]{Perguntas}
+ , brazilian = [as]{Perguntas}[as]{Perguntas}
+ , spanish = [las]{Preguntas}[las]{Preguntas}
+ , schinese = {问题}{问题}
+ , tchinese = {問題}{問題}
+ , japanese = {問題}{問題}
+ , russian = {Вопросы}{Вопросы}
+ }
+ , Crefname = {
+ , english = {Questions}{Questions}
+ , french = [Les]{Questions}[Les]{Questions}
+ , ngerman = { {Fragen}{Fragen}
+ , Nominativ = [Die]{Fragen}[Die]{Fragen}
+ , Genitiv = [Der]{Fragen}[Der]{Fragen}
+ , Dativ = [Den]{Fragen}[Den]{Fragen}
+ , Akkusativ = [Die]{Fragen}[Die]{Fragen}
+ }
+ , italian = [Le]{Domande}[Le]{Domande}
+ , portuguese = [As]{Perguntas}[As]{Perguntas}
+ , brazilian = [As]{Perguntas}[As]{Perguntas}
+ , spanish = [Las]{Preguntas}[Las]{Preguntas}
+ , schinese = {问题}{问题}
+ , tchinese = {問題}{問題}
+ , japanese = {問題}{問題}
+ , russian = {Вопросы}{Вопросы}
+ }
+ }
+
+\NameTheorem { recalls }
+ {
+ , heading = {
+ , english = Recalls
+ , french = Rappels
+ , ngerman = Erinnerungen
+ , italian = Richiami
+ , portuguese = Recordações
+ , brazilian = Recordações
+ , spanish = Recuerdos
+ , schinese = 回顾
+ , tchinese = 回顧
+ , japanese = 回顧
+ , russian = Напоминания
+ }
+ , crefname = {
+ , english = {Recalls}{Recalls}
+ , french = [les]{Rappels}[les]{Rappels}
+ , ngerman = { {Erinnerungen}{Erinnerungen}
+ , Nominativ = [die]{Erinnerungen}[die]{Erinnerungen}
+ , Genitiv = [der]{Erinnerungen}[der]{Erinnerungen}
+ , Dativ = [den]{Erinnerungen}[den]{Erinnerungen}
+ , Akkusativ = [die]{Erinnerungen}[die]{Erinnerungen}
+ }
+ , italian = [i]{Richiami}[i]{Richiami}
+ , portuguese = [as]{Recordações}[as]{Recordações}
+ , brazilian = [as]{Recordações}[as]{Recordações}
+ , spanish = [los]{Recuerdos}[los]{Recuerdos}
+ , schinese = {回顾}{回顾}
+ , tchinese = {回顧}{回顧}
+ , japanese = {回顧}{回顧}
+ , russian = {Напоминания}{Напоминания}
+ }
+ , Crefname = {
+ , english = {Recalls}{Recalls}
+ , french = [Les]{Rappels}[Les]{Rappels}
+ , ngerman = { {Erinnerungen}{Erinnerungen}
+ , Nominativ = [Die]{Erinnerungen}[Die]{Erinnerungen}
+ , Genitiv = [Der]{Erinnerungen}[Der]{Erinnerungen}
+ , Dativ = [Den]{Erinnerungen}[Den]{Erinnerungen}
+ , Akkusativ = [Die]{Erinnerungen}[Die]{Erinnerungen}
+ }
+ , italian = [I]{Richiami}[I]{Richiami}
+ , portuguese = [As]{Recordações}[As]{Recordações}
+ , brazilian = [As]{Recordações}[As]{Recordações}
+ , spanish = [Los]{Recuerdos}[Los]{Recuerdos}
+ , schinese = {回顾}{回顾}
+ , tchinese = {回顧}{回顧}
+ , japanese = {回顧}{回顧}
+ , russian = {Напоминания}{Напоминания}
+ }
+ }
+
+\NameTheorem { remarks }
+ {
+ , heading = {
+ , english = Remarks
+ , french = Remarques
+ , ngerman = Bemerkungen
+ , italian = Commenti
+ , portuguese = Comentários
+ , brazilian = Comentários
+ , spanish = Comentarios
+ , schinese = 备注
+ , tchinese = 備註
+ , japanese = 注釈
+ , russian = Замечания
+ }
+ , crefname = {
+ , english = {Remarks}{Remarks}
+ , french = [les]{Remarques}[les]{Remarques}
+ , ngerman = { {Bemerkungen}{Bemerkungen}
+ , Nominativ = [die]{Bemerkungen}[die]{Bemerkungen}
+ , Genitiv = [der]{Bemerkungen}[der]{Bemerkungen}
+ , Dativ = [den]{Bemerkungen}[den]{Bemerkungen}
+ , Akkusativ = [die]{Bemerkungen}[die]{Bemerkungen}
+ }
+ , italian = [i]{Commenti}[i]{Commenti}
+ , portuguese = [os]{Comentários}[os]{Comentários}
+ , brazilian = [os]{Comentários}[os]{Comentários}
+ , spanish = [los]{Comentarios}[los]{Comentarios}
+ , schinese = {备注}{备注}
+ , tchinese = {備註}{備註}
+ , japanese = {注釈}{注釈}
+ , russian = {Замечания}{Замечания}
+ }
+ , Crefname = {
+ , english = {Remarks}{Remarks}
+ , french = [Les]{Remarques}[Les]{Remarques}
+ , ngerman = { {Bemerkungen}{Bemerkungen}
+ , Nominativ = [Die]{Bemerkungen}[Die]{Bemerkungen}
+ , Genitiv = [Der]{Bemerkungen}[Der]{Bemerkungen}
+ , Dativ = [Den]{Bemerkungen}[Den]{Bemerkungen}
+ , Akkusativ = [Die]{Bemerkungen}[Die]{Bemerkungen}
+ }
+ , italian = [I]{Commenti}[I]{Commenti}
+ , portuguese = [Os]{Comentários}[Os]{Comentários}
+ , brazilian = [Os]{Comentários}[Os]{Comentários}
+ , spanish = [Los]{Comentarios}[Los]{Comentarios}
+ , schinese = {备注}{备注}
+ , tchinese = {備註}{備註}
+ , japanese = {注釈}{注釈}
+ , russian = {Замечания}{Замечания}
+ }
+ }
+
+\NameTheorem { theorems }
+ {
+ , heading = {
+ , english = Theorems
+ , french = Théorèmes
+ , ngerman = Sätze
+ , italian = Teoremi
+ , portuguese = Teoremas
+ , brazilian = Teoremas
+ , spanish = Teoremas
+ , schinese = 定理
+ , tchinese = 定理
+ , japanese = 定理
+ , russian = Теоремы
+ }
+ , crefname = {
+ , english = {Theorems}{Theorems}
+ , french = [les]{Théorèmes}[les]{Théorèmes}
+ , ngerman = { {Sätze}{Sätze}
+ , Nominativ = [die]{Sätze}[die]{Sätze}
+ , Genitiv = [der]{Sätze}[der]{Sätze}
+ , Dativ = [den]{Sätzen}[den]{Sätzen}
+ , Akkusativ = [die]{Sätze}[die]{Sätze}
+ }
+ , italian = [i]{Teoremi}[i]{Teoremi}
+ , portuguese = [os]{Teoremas}[os]{Teoremas}
+ , brazilian = [os]{Teoremas}[os]{Teoremas}
+ , spanish = [los]{Teoremas}[los]{Teoremas}
+ , schinese = {定理}{定理}
+ , tchinese = {定理}{定理}
+ , japanese = {定理}{定理}
+ , russian = {Теоремы}{Теоремы}
+ }
+ , Crefname = {
+ , english = {Theorems}{Theorems}
+ , french = [Les]{Théorèmes}[Les]{Théorèmes}
+ , ngerman = { {Sätze}{Sätze}
+ , Nominativ = [Die]{Sätze}[Die]{Sätze}
+ , Genitiv = [Der]{Sätze}[Der]{Sätze}
+ , Dativ = [Den]{Sätzen}[Den]{Sätzen}
+ , Akkusativ = [Die]{Sätze}[Die]{Sätze}
+ }
+ , italian = [I]{Teoremi}[I]{Teoremi}
+ , portuguese = [Os]{Teoremas}[Os]{Teoremas}
+ , brazilian = [Os]{Teoremas}[Os]{Teoremas}
+ , spanish = [Los]{Teoremas}[Los]{Teoremas}
+ , schinese = {定理}{定理}
+ , tchinese = {定理}{定理}
+ , japanese = {定理}{定理}
+ , russian = {Теоремы}{Теоремы}
+ }
+ }
%</projlib-theorem>
%
%<*projlib-titlepage>
diff --git a/macros/latex/contrib/projlib/README.md b/macros/latex/contrib/projlib/README.md
index f7f7c70dbe..1f231acdbc 100644
--- a/macros/latex/contrib/projlib/README.md
+++ b/macros/latex/contrib/projlib/README.md
@@ -5,9 +5,9 @@
# The `ProjLib` Toolkit
-> **This bundle is dated 2024/02/03.**
+> **This bundle is dated 2024/02/20.**
-> **New documentations are still being written. For now, only the core code is included in TeX Live 2023 (old documentations have been removed from the distribution).**
+> **New documentations are still being written. For now, only the core code is included in TeX Live 2024 and MiKTeX (old documentations have been removed from the distribution).**
## Introduction
diff --git a/macros/latex/contrib/ufrgscca/README.md b/macros/latex/contrib/ufrgscca/README.md
index 6c1eac798e..10781e740f 100644
--- a/macros/latex/contrib/ufrgscca/README.md
+++ b/macros/latex/contrib/ufrgscca/README.md
@@ -107,7 +107,13 @@ The Current Maintainer of this work is Alceu Frigeri
## Changelog
-* Version 2.3 (this)
+* Version 2.4/2.4a (this)
+ - a few typos (including [l3kernel prop check](https://github.com/latex3/latex3/issues/1460))
+ - extended \studentfate possible values (see documentation).
+ - \makeforms code cleanup. switching to \prop_get:NnNTF instead of \prop_item:Nn
+ - reports: some info adjustment
+
+* Version 2.3
- adjustments to report's cover
- added two student's list related commands \studentaddtolist and \sortstudentlist (-coord)
- some code clean up
diff --git a/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf b/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf
index 02ac40fc7c..9eca25075c 100644
--- a/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf
+++ b/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf
Binary files differ
diff --git a/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex b/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex
index 413f1fc7d6..e7a78b4fdd 100644
--- a/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex
+++ b/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex
@@ -15,7 +15,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -558,7 +558,7 @@ All data is stored in two main \tsobj[pack]{starray} defined as follow:
reviewer . struct {
first , last , name , institution , title , email , phone ,
article , Article , narticle , Narticle , carticle , Carticle ,
- pointA , pointB , pointC , pointD , grade , gradetype ,
+ pointA , pointB , pointC , pointD , grade , gradetype , flag-examreview ,
} ,
altreviewer . struct {
first , last , name , institution , title , email , phone ,
@@ -1052,7 +1052,7 @@ Those commands are only of use when using \tsobj[pkg]{ufrgscca-coord}. \tsmacro{
\end{codedescribe}
-\begin{codedescribe}[code,new=2023/11/18,update=2023/12/02]{\studentCase,\studentAdvCase,\studentCoadvCase,\studentDismissCase,\studentNewPageCase,\studentDistinctBoardCase}
+\begin{codedescribe}[code,new=2023/11/18,update=2023/12/02,update=2024/01/15]{\studentCase,\studentAdvCase,\studentCoadvCase,\studentDismissCase,\studentNewPageCase,\studentDistinctBoardCase,\studentReviewerCase}
\begin{codesyntax}%
\tsmacro{\studentCase}{if-A-B-C,if-D,if-Exam-C,if-Exam-D,if-FF}
\tsmacro{\studentAdvCase}{if-more-than-one,if-not}
@@ -1060,6 +1060,7 @@ Those commands are only of use when using \tsobj[pkg]{ufrgscca-coord}. \tsmacro{
\tsmacro{\studentDismissCase}{if-dismiss,if-not}
\tsmacro{\studentNewPageCase}{if-newpage,if-not}
\tsmacro{\studentDistinctBoardCase}{if-distinct,if-not}
+ \tsmacro{\studentReviewerCase}{if-marked,if-not}
\end{codesyntax}
These are a set of auxiliary conditionals, for instance, \tsobj{\StudentCase} will execute \emph{only one} of the \tsobj[meta]{if-} accordingly.
\end{codedescribe}
@@ -1175,12 +1176,15 @@ These are a set of auxiliary conditionals, for instance, \tsobj{\StudentCase} wi
%%%%
\paragraph{Student Specific Commands}\label{student-specific-commands}
-\begin{codedescribe}[code,update=2023/11/18]{\studentfate}
+\begin{codedescribe}[code,update=2023/11/18,update=2024/02/15]{\studentfate}
\begin{codesyntax}%
\tsmacro{\studentfate}[fate]{}
\end{codesyntax}
-This assigns the \tsobj[meta]{fate} of a student, for those cases that one cannot rely on the 'calculated one' (from examiners individual grades). \tsobj[meta]{fate} can be either C or D (in case a student got in exam), FF for those that haven't finished the work or 'Dismiss' for those that, for whatever reason, got dismissed. The default is 'do nothing' (no \tsobj[meta]{fate} assigned)
+This assigns the \tsobj[meta]{fate} of a student, for those cases that one cannot rely on the 'calculated one' (from examiners individual grades). \tsobj[meta]{fate} can be either \emph{exam} (if the student is in exam, but didn't got a grade yet) \emph{C} or \emph{D} (in case a student in exam got graded), \emph{FF} for those that haven't finished the work or \emph{dismiss} for those that, for whatever reason, got dismissed. The default is 'do nothing' (no \tsobj[meta]{fate} assigned)
\end{codedescribe}
+\begin{tsremark}
+(2024/02/15) In case some other, odd, value is assigned, this command will record as if the student is in 'exam', with the given grade \tsobj[oarg]{fate} marked in bold red.
+\end{tsremark}
\begin{codedescribe}[code,new=2023/12/04]{\studentaddtolist}
\begin{codesyntax}%
@@ -1243,11 +1247,11 @@ For example:
\tscode*[emph={distinctboard}]{d.distinct}
-\begin{codedescribe}[code,update=2023/11/18]{\examinergrades}
+\begin{codedescribe}[code,update=2023/11/18,update=2024/02/15]{\examinergrades}
\begin{codesyntax}%
- \tsmacro{\examinersgrades}{N1,N2,N3}\tsargs[oarg]{N4}
+ \tsmacro{\examinersgrades}{N1,N2,N3}\tsargs[oarg]{N4}\tsverb[oarg]{*}
\end{codesyntax}
-Quite obvious, this set the grades given by an examiner (the one defined by the 'last' \tsmacro{\examiner}{} before this.). In case \tsobj[oarg]{N4} is given it's assumed the TCC-I case, otherwise TCC-II.
+Quite obvious, this set the grades given by an examiner (the one defined by the 'last' \tsmacro{\examiner}{} before this.). In case \tsobj[oarg]{N4} is given it's assumed the TCC-I case, otherwise TCC-II. (update:2024/02/15) The 'star' at the end will mark said reviewer, in red, when generating a report.
\end{codedescribe}
@@ -1299,6 +1303,12 @@ By default, the list remains unchanged (no sort).
% \describe {checklist} { a students check list.}
\end{describelist}
+\begin{codedescribe}[code,new=2024/02/18]{\suppresschecklist}
+ \begin{codesyntax}%
+ \tsmacro{\suppresschecklist}{}
+ \end{codesyntax}
+ This will suppress the “student checklist” on the general report.
+\end{codedescribe}
\section{\tightul{ufrgscca-ppc} Package (extended documentation)}
This contains a set of auxiliary commands to keep track of many \emph{indicators} whilst writing a \emph{PPC document} (which is going to be evaluated based on said \emph{indicators}, though the track of those \emph{indicators} themselves shall not appear in the final version of it). Keep in mind, when considering the use of it: “it works as is” but it hasn't being properly debugged, and it might change “as needed locally”.
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
index 74988131c7..cc62a4bc4d 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-abnt}
- {2023/12/05}
- {2.3}
+ {2024/02/19}
+ {2.4a}
{UFRGS/CCA ABNT layout}
@@ -42,23 +42,15 @@
{
name .code:n = {ufrgscca-abnt} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2023/12/05},
- version .code:n = {2.3} ,
+ date .code:n = {2024/02/19},
+ version .code:n = {2.4a} ,
description .code:n = {UFRGS/CCA~ abnt~layout}
}
-\cs_if_exist:NF \__codedesc_pkg_info:nn
+\cs_if_exist:NF \PkgInfo
{
- \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
- { \keys_set:nn {#1 / pkg info}{#2} }
- }
-\cs_if_exist:NF \PkgInfo
- { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
-\cs_if_exist:NF \PkgDescription
- {
+ \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} }
\NewDocumentCommand \PkgDescription {m}
- {
- \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
- }
+ { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par }
}
%%%%%%%
%%% End of cut-n-paste
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def
index 204f0845c8..c94a4d44ab 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def
index 436950f70f..81648a69b8 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
index 612a5885c8..109029231e 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-coord}
- {2023/12/05}
- {2.3}
+ {2024/02/19}
+ {2.4a}
{UFRGS/CCA coord commands}
@@ -42,24 +42,16 @@
{
name .code:n = {ufrgscca-coord} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2023/12/05},
- version .code:n = {2.3} ,
+ date .code:n = {2024/02/19},
+ version .code:n = {2.4a} ,
description .code:n = {UFRGS/CCA~ coordination~ report~ commands}
}
-\cs_if_exist:NF \__codedesc_pkg_info:nn
+\cs_if_exist:NF \PkgInfo
{
- \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
- { \keys_set:nn {#1 / pkg info}{#2} }
- }
-\cs_if_exist:NF \PkgInfo
- { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
-\cs_if_exist:NF \PkgDescription
- {
+ \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} }
\NewDocumentCommand \PkgDescription {m}
- {
- \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
- }
- }
+ { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par }
+ }
%%%%%%%
%%% End of cut-n-paste
%%%%%%%
@@ -134,9 +126,9 @@
\starray_new:n {prof}
\starray_def_from_keyval:nn {prof}
{
- last = ,
- first = ,
- gender = ,
+ last = {},
+ first = {},
+ gender = {},
}
\NewDocumentCommand{\professor}{O{}mmmmO{}}
@@ -144,10 +136,10 @@
\starray_new_term:nn {prof}{#1}
\starray_set_from_keyval:nn {prof}
{
- last = {#2},
- first = {#3},
- email = {#4},
- phone = {#5},
+ last = {#2},
+ first = {#3},
+ email = {#4},
+ phone = {#5},
gender = {#6},
}
}
@@ -229,57 +221,77 @@
%
\NewDocumentCommand{\studentfate}{O{}}{%%
- \str_case:nnF {#1}
+ \tl_if_blank:nTF {#1}
{
- {C}
+ \emptytermifnone[3]{student.reviewer}[\starray_gset_prop:nnn {student}{flag-null}{\c_true_bool}]
+ \__ufrgscca_studentgrade:
+ }
+ {
+ \str_case:nnF {#1}
{
- \starray_gset_from_keyval:nn {student}
+ {C}
{
- grade = C ,
- flag-exam = \c_true_bool ,
- flag-graded = \c_true_bool ,
- flag-approved = \c_true_bool ,
+ \starray_gset_from_keyval:nn {student}
+ {
+ grade = C ,
+ flag-exam = \c_true_bool ,
+ flag-graded = \c_true_bool ,
+ flag-approved = \c_true_bool ,
+ }
}
- }
- {D}
- {
- \starray_gset_from_keyval:nn {student}
+ {D}
{
- grade = D ,
- flag-exam = \c_true_bool ,
- flag-graded = \c_true_bool ,
+ \starray_gset_from_keyval:nn {student}
+ {
+ grade = D ,
+ flag-exam = \c_true_bool ,
+ flag-graded = \c_true_bool ,
+ }
}
- }
- {FF}
- {
- \starray_gset_from_keyval:nn {student}
+ {exam}
{
- grade = FF ,
- flag-ff = \c_true_bool ,
- flag-graded = \c_true_bool ,
+ \starray_gset_from_keyval:nn {student}
+ {
+ grade = {\textcolor{red}{exame}} ,
+ flag-exam = \c_true_bool ,
+ flag-graded = \c_true_bool ,
+ }
}
- }
- {dismiss}
- {
- \starray_gset_from_keyval:nn {student}
+ {FF}
{
- flag-dismiss = \c_true_bool ,
- flag-graded = \c_true_bool ,
+ \starray_gset_from_keyval:nn {student}
+ {
+ grade = FF ,
+ flag-ff = \c_true_bool ,
+ flag-graded = \c_true_bool ,
+ }
+ }
+ {dismiss}
+ {
+ \starray_gset_from_keyval:nn {student}
+ {
+ flag-dismiss = \c_true_bool ,
+ flag-graded = \c_true_bool ,
+ }
+ }
+ {none}
+ {
+ \starray_gset_from_keyval:nn {student}
+ {
+ flag-dismiss = \c_true_bool ,
+ flag-graded = \c_true_bool ,
+ }
}
}
- {none}
- {
+ { %% in case of none of above...
\starray_gset_from_keyval:nn {student}
{
- flag-dismiss = \c_true_bool ,
+ grade = {\textcolor{red}{\textbf{#1}}} ,
+ flag-exam = \c_true_bool ,
flag-graded = \c_true_bool ,
- }
+ }
}
}
- { %% in case of none of above...
- \emptytermifnone[3]{student.reviewer}[\starray_gset_prop:nnn {student}{flag-null}{\c_true_bool}]
- \__ufrgscca_studentgrade:
- }
}%%
%
\tl_new:N \l__ufrgscca_tmpa_tl
@@ -464,6 +476,13 @@
}
}
+\NewDocumentCommand{\studentReviewerCase}{mmm}{
+ \starray_term_syntax:n{student.reviewer[#1]}
+ \bool_if:nTF {\starray_parsed_get_prop:n{flag-examreview}}
+ {#2}
+ {#3}
+}
+
\NewDocumentCommand{\studentDismissCase}{mm}{
\starray_term_syntax:n{student}
@@ -554,7 +573,7 @@
\cs_generate_variant:Nn \starray_gset_prop:nnn {nne}
-\NewDocumentCommand{\examinergrades}{mmmO{}}{
+\NewDocumentCommand{\examinergrades}{mmmO{}s}{
\tl_if_blank:nTF {#1}
{
\starray_gset_prop:nnn {student.reviewer}{grade}{0}
@@ -589,6 +608,8 @@
\fpeval{round((#1 * \UseConst{TCC-I.weightA} + #2 * \UseConst{TCC-I.weightB} + #3 * \UseConst{TCC-I.weightC} + #4 * \UseConst{TCC-I.weightD}) / ( \UseConst{TCC-I.weightA} + \UseConst{TCC-I.weightB} + \UseConst{TCC-I.weightC} + \UseConst{TCC-I.weightD}) , 2 , 1) }
}
}
+ \bool_if:nT {#5}
+ {\starray_gset_prop:nnn {student.reviewer}{flag-examreview}{\c_true_bool}}
}
}
@@ -840,8 +861,14 @@
\studentselect{##1}
&\\[-2ex]
~\multicolumn{#1}{l}{\textbf{\color{#4}\DataFields{student}{name}}}\\*
- \__ufrgscca_checktable_lines:nn {L1,L2,L3,L4,L5}{C1,C2,C3,C4,C5}\hline
+ \__ufrgscca_checktable_lines:nn {L1,L2,L3}{C1,C2,C3,C4,C5,C6}\hline
}
}
}
+
+\bool_new:N \l__ufrgscca_checklist_bool
+\bool_set_true:N \l__ufrgscca_checklist_bool
+\NewDocumentCommand{\suppresschecklist}{}{
+ \bool_set_false:N \l__ufrgscca_checklist_bool
+}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
index 475ce08a95..cc531e3156 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-core}
- {2023/12/05}
- {2.3}
+ {2024/02/19}
+ {2.4a}
{UFRGS/CCA core commands}
@@ -42,24 +42,16 @@
{
name .code:n = {ufrgscca-core} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2023/12/05},
- version .code:n = {2.3} ,
+ date .code:n = {2024/02/19},
+ version .code:n = {2.4a} ,
description .code:n = {UFRGS/CCA~core~commands/data}
}
-\cs_if_exist:NF \__codedesc_pkg_info:nn
+\cs_if_exist:NF \PkgInfo
{
- \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
- { \keys_set:nn {#1 / pkg info}{#2} }
- }
-\cs_if_exist:NF \PkgInfo
- { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
-\cs_if_exist:NF \PkgDescription
- {
+ \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} }
\NewDocumentCommand \PkgDescription {m}
- {
- \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
- }
- }
+ { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par }
+ }
%%%%%%%
%%% End of cut-n-paste
%%%%%%%
@@ -192,7 +184,8 @@
pointC = ,
pointD = ,
grade = 0 ,
- gradetype = ,
+ gradetype = ,
+ flag-examreview = \c_false_bool ,
} ,
altreviewer . struct = {
first = ,
@@ -280,9 +273,9 @@
\NewDocumentCommand{\NewActivity}{m} {
\starray_new_term:nn {activity}{#1}
\starray_new_term:nn {activity.coord}{}
- \starray_gset_prop:nnV {activity}{checkmarked}\c_empty_prop
- \starray_gset_prop:nnV {activity}{checkunmarked}\c_empty_prop
- \starray_gset_prop:nnV {activity}{checkref}\c_empty_prop
+ \starray_gset_prop:nnV {activity}{chkmarked}\c_empty_prop
+ \starray_gset_prop:nnV {activity}{chkunmarked}\c_empty_prop
+ \starray_gset_prop:nnV {activity}{chkref}\c_empty_prop
}
@@ -485,11 +478,22 @@
\cs_new_protected:Npn \__ufrgscca_set_prof:nnnnn #1#2#3#4#5
{
- \starray_gset_from_keyval:nn {student.#1}
+ \tl_if_blank:nTF {#2}
{
- last = {#3} ,
- first = {#4} ,
- name = {#2~#4~ #3} ,
+ \starray_gset_from_keyval:nn {student.#1}
+ {
+ last = {#3} ,
+ first = {#4} ,
+ name = {#4~ #3} ,
+ }
+ }
+ {
+ \starray_gset_from_keyval:nn {student.#1}
+ {
+ last = {#3} ,
+ first = {#4} ,
+ name = {#2~#4~ #3} ,
+ }
}
\__ufrgscca_setgender:nn {student.#1}{#5}
}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex
index e61c119748..72349eab9d 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
index 55aae54775..fa26df00a4 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-cover}
- {2023/12/05}
- {2.3}
+ {2024/02/19}
+ {2.4a}
{UFRGS/CCA cover commands}
@@ -42,24 +42,16 @@
{
name .code:n = {ufrgscca-cover} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2023/12/05},
- version .code:n = {2.3} ,
+ date .code:n = {2024/02/19},
+ version .code:n = {2.4a} ,
description .code:n = {UFRGS/CCA~ cover~pages}
}
-\cs_if_exist:NF \__codedesc_pkg_info:nn
+\cs_if_exist:NF \PkgInfo
{
- \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
- { \keys_set:nn {#1 / pkg info}{#2} }
- }
-\cs_if_exist:NF \PkgInfo
- { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
-\cs_if_exist:NF \PkgDescription
- {
+ \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} }
\NewDocumentCommand \PkgDescription {m}
- {
- \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
- }
- }
+ { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par }
+ }
%%%%%%%
%%% End of cut-n-paste
%%%%%%%
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
index 381e31c73b..2d05f2dd10 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-curr}
- {2023/12/05}
- {2.3}
+ {2024/02/19}
+ {2.4a}
{UFRGS/CCA curricula commands}
%%%%%%%
@@ -41,24 +41,16 @@
{
name .code:n = {ufrgscca-curr} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2023/12/05},
- version .code:n = {2.3} ,
+ date .code:n = {2024/02/19},
+ version .code:n = {2.4a} ,
description .code:n = {UFRGS/CCA~ curricula~ commands}
}
-\cs_if_exist:NF \__codedesc_pkg_info:nn
+\cs_if_exist:NF \PkgInfo
{
- \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
- { \keys_set:nn {#1 / pkg info}{#2} }
- }
-\cs_if_exist:NF \PkgInfo
- { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
-\cs_if_exist:NF \PkgDescription
- {
+ \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} }
\NewDocumentCommand \PkgDescription {m}
- {
- \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
- }
- }
+ { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par }
+ }
%%%%%%%
%%% End of cut-n-paste
%%%%%%%
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
index 62c966a938..7de2244182 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-forms}
- {2023/12/05}
- {2.3}
+ {2024/02/19}
+ {2.4a}
{UFRGS/CCA forms commands}
@@ -42,24 +42,16 @@
{
name .code:n = {ufrgscca-forms} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2023/12/05},
- version .code:n = {2.3} ,
+ date .code:n = {2024/02/19},
+ version .code:n = {2.4a} ,
description .code:n = {UFRGS/CCA~ forms~commands}
}
-\cs_if_exist:NF \__codedesc_pkg_info:nn
+\cs_if_exist:NF \PkgInfo
{
- \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
- { \keys_set:nn {#1 / pkg info}{#2} }
- }
-\cs_if_exist:NF \PkgInfo
- { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
-\cs_if_exist:NF \PkgDescription
- {
+ \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} }
\NewDocumentCommand \PkgDescription {m}
- {
- \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
- }
- }
+ { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par }
+ }
%%%%%%%
%%% End of cut-n-paste
%%%%%%%
@@ -196,24 +188,40 @@
{
\centering
{
- \UseTerm{cover.topbase}\\
- {\sc \prop_item:Nn \l__ufrgscca_forms_prop {#1.heading}}
+ \prop_get:NnNTF \l__ufrgscca_forms_prop {#1.top} \l_tmpa_tl
+ { \l_tmpa_tl }
+ { \UseTerm{cover.topbase}\\ }
+ \prop_get:NnNTF \l__ufrgscca_forms_prop {#1.heading} \l_tmpa_tl
+ { {\sc \l_tmpa_tl}\\[6mm] }
+ { \par\vspace{5mm} }
}
- }\\[7mm]
- {\bf \prop_item:Nn \l__ufrgscca_forms_prop {#1.title}}
- \prop_if_in:NnTF \l__ufrgscca_forms_prop {#1.footnote}
- {\footnote[1]{\prop_item:Nn \l__ufrgscca_forms_prop {#1.footnote}}}
- {}\\
+ }\par
+ \prop_get:NnNT \l__ufrgscca_forms_prop {#1.title} \l_tmpa_tl
+ {
+ \textbf{\l_tmpa_tl}
+ \prop_get:NnNT \l__ufrgscca_forms_prop {#1.footnote} \l_tmpa_tl
+ { \footnote[1]{\l_tmpa_tl} }
+ \\
+ }
\end{center}
%
- \vfill
- \prop_item:Nn \l__ufrgscca_forms_prop {#1.opening}
- \vfill
- \prop_item:Nn \l__ufrgscca_forms_prop {#1.body}
- \vfill
- \prop_item:Nn \l__ufrgscca_forms_prop {#1.closing}
+ \prop_get:NnNT \l__ufrgscca_forms_prop {#1.opening} \l_tmpa_tl
+ {
+ \vfill
+ \l_tmpa_tl
+ }
+ \prop_get:NnNT \l__ufrgscca_forms_prop {#1.body} \l_tmpa_tl
+ {
+ \vfill
+ \l_tmpa_tl
+ }
+ \prop_get:NnNT \l__ufrgscca_forms_prop {#1.closing} \l_tmpa_tl
+ {
+ \vfill
+ \l_tmpa_tl
+ }
\pagebreak
- }
+}
\NewDocumentCommand{\SignatureDate}{m}{
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex
index 6a3b6573c1..c8df3c2ce8 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -438,18 +438,21 @@ Nome do(a) Aluno(a) --- Email\\
\item \emptybox\ \textbf{Abordagem/Plano de Trabalho Proposto}. {\footnotesize(peso:2)}\\ {\footnotesize Considerar se a abordagem, plano de trabalho proposto, é adequada e factivel.}
\item \emptybox\ \textbf{Redação}. {\footnotesize(peso:1)}\\ {\footnotesize Considerar a qualidade do trabalho escrito apresentado.}
\item { O Trabalho Submetido}
- \begin{itemize}[tcc,nosep]
- \item[$\Box$] Está adequado, dispensando correções do texto.
- \item[$\Box$] Está adequado, sendo necessário correções, conforme anotações anexas.
- \item[$\Box$] Necessita ser revisto/re-escrito,\footnotemark[3] e:
- \begin{itemize}
- \item[$\Box$] basta a revisão final do texto pelo orientador,
- \item[$\Box$] revisarei o trabalho depois de corrigido.
- \end{itemize}
- \end{itemize}
+ \begin{enumerate}[tcc,nosep]
+ \item[$\Box$ a)] Está adequado,
+ \begin{enumerate}
+ \item[$\Box$ a.1)] dispensando correções do texto.
+ \item[$\Box$ a.2)] sendo necessário correções, conforme anotações anexas.
+ \end{enumerate}
+ \item[$\Box$ b)] Necessita ser revisto/re-escrito,\footnotemark[3] e:
+ \begin{enumerate}
+ \item[$\Box$ b.1)] basta a revisão final do texto pelo orientador,
+ \item[$\Box$ b.2)] revisarei o trabalho depois de corrigido.
+ \end{enumerate}
+ \end{enumerate}
\end{enumerate}
-Outras considerações, parecer (se necessário): \BlankLines{6}
+Outras considerações, parecer (se necessário): \BlankLines{5}
\footnotetext[2]{Use a escala: \begin{enumerate*}\item[0.]Péssimo \item[3.]Deficitário \item[6.]Bom \item[8.]Muito Bom \item[10.]Excelente \end{enumerate*}}%
\footnotetext[3]{Neste caso \DataFields{student}{article} alun\DataFields{student}{article} estará em EXAME e receberá conceito final C ou D, conforme revisão final do texto.}%
@@ -751,40 +754,46 @@ A nota (variando de zero a dez) atribuída por cada membro da banca examinadora
%%%
\SetForm{correctionsform-II}{body}{ \resizebox{0.9\textwidth}{!}{
-O texto submetido:
- \parbox[t]{.75\textwidth}{
- \begin{itemize}[tcc,nosep]
- \item[$\Box$] Está adequado, dispensando correções do texto.
- \item[$\Box$] Está adequado, sendo necessário correções, conforme a
- seguir (e anotações anexas).
- \begin{description}[tcc,noitemsep]
- \item[$\Box$] Ortográfica
- \item[$\Box$] Regras de Escrita
- \item[$\Box$] Equações
- \item[$\Box$] Resumo
- \item[$\Box$] Abstract
- \item[$\Box$] Índice
- \item[$\Box$] Introdução
- \item[$\Box$] Conclusões
- \item[$\Box$] Corpo do Trabalho
- \item[$\Box$] Resultados
- \item[$\Box$] Adicionar mais exemplos
- \item[$\Box$] Figuras
- \item[$\Box$] Tabelas
- \end{description}
- \item[$\Box$] Necessita ser revisto/re-escrito,\footnotemark[2] e:
- \begin{itemize}
- \item[$\Box$] basta a revisão final do texto pelo orientador,
- \item[$\Box$] revisarei o trabalho depois de corrigido.
- \end{itemize}
- \item[$\Box$] Outras considerações (se necessário): \\
- \begin{tabular}{p{0.7\textwidth}}
- ~\\\hline
- ~\\\hline
- ~\\\hline
- ~\\\hline
- \end{tabular}\\[-1mm]
- \end{itemize}} }
+ \parbox[t]{.9\textwidth}{
+ O texto submetido:
+
+ \begin{enumerate}[tcc,nosep]
+ \item[$\Box$ a)] Está adequado,
+ \begin{enumerate}
+ \item[$\Box$ a.1)] dispensando correções do texto.
+ \item[$\Box$ a.2)] sendo necessário correções, conforme a seguir (e anotações anexas).
+ \begin{description}[tcc,noitemsep]
+ \item[$\Box$] Ortográfica
+ \item[$\Box$] Regras de Escrita
+ \item[$\Box$] Equações
+ \item[$\Box$] Resumo
+ \item[$\Box$] Abstract
+ \item[$\Box$] Índice
+ \item[$\Box$] Introdução
+ \item[$\Box$] Conclusões
+ \item[$\Box$] Corpo do Trabalho
+ \item[$\Box$] Resultados
+ \item[$\Box$] Adicionar mais exemplos
+ \item[$\Box$] Figuras
+ \item[$\Box$] Tabelas
+ \end{description}
+ \end{enumerate}
+ \item[$\Box$ b)] Necessita ser revisto/re-escrito,\footnotemark[2] e:
+ \begin{itemize}
+ \item[$\Box$ b.1)] basta a revisão final do texto pelo orientador.
+ \item[$\Box$ b.2)] revisarei o trabalho depois de corrigido.
+ \end{itemize}
+ \item[]
+ \item[$\Box$] Outras considerações (se necessário): \\
+ \begin{tabular}{p{0.7\textwidth}}
+ ~\\\hline
+ ~\\\hline
+ ~\\\hline
+ ~\\\hline
+ \end{tabular}\\[-1mm]
+ \end{enumerate}
+}
+}
\footnotetext[2]{Neste caso \DataFields{student}{article} alun\DataFields{student}{article} estará em EXAME e receberá conceito final C ou D, conforme revisão final do texto.}
}
@@ -847,15 +856,15 @@ O texto submetido:
& \UseLabel{board} \\\hline%
\IfBooleanTF{#1}
{
- \multirow{4}={\DataFields{student}{name}} %
+ \multirow{3}={\DataFields{student}{name}} %
&\DataFields{student.reviewer[1]}{name}\\%
}%
{%
- \multirow{3}={\DataFields{student}{name}}%
+ \multirow{2}={\DataFields{student}{name}}%
}
&\DataFields{student.reviewer[2]}{name}\\%
- &\DataFields{student.reviewer[3]}{name}\\%
- & ~\\[-2.5ex]
+ &\DataFields{student.reviewer[3]}{name}\\[0.25ex]%
+% & ~\\[-2.5ex]
\multicolumn{2}{l}{\studentCoadvLabelCase} \\\hline%
\end{tabular}%
\end{center}%
@@ -894,7 +903,9 @@ O texto submetido:
}
\NewDocumentCommand{\ReviewerLine}{m}{%
- & \hspace{-0.4em}\DataFields{student.reviewer[#1]}{name}
+ \studentReviewerCase{#1}
+ {& \hspace{-0.4em}\textcolor{red}{\DataFields{student.reviewer[#1]}{name}}}
+ {& \hspace{-0.4em}\DataFields{student.reviewer[#1]}{name}}
& \DataFields{student.reviewer[#1]}{pointA} & \DataFields{student.reviewer[#1]}{pointB} & \DataFields{student.reviewer[#1]}{pointC}
& \DataFields{student.reviewer[#1]}{pointD} & \DataFields{student.reviewer[#1]}{grade} & %
}
@@ -902,14 +913,14 @@ O texto submetido:
\NewDocumentCommand{\studentLine}{s}{%
\IfBooleanTF{#1}%
{%
- \multirow{4}={\textbf{\DataFields{student}{name}}}
+ \multirow[c]{3}={\textbf{\DataFields{student}{name}}}%
\ReviewerLine{1}\\*
- }
+ }%
{%
- \multirow{3}={\textbf{\DataFields{student}{name}}}
- }
+ \multirow[c]{2}={\textbf{\DataFields{student}{name}}}%
+ }%
\ReviewerLine{2}\\*%
- \nopagebreak\ReviewerLine{3}\\[0.75ex]%
+ \ReviewerLine{3}\\*%[0.75ex]%
\multicolumn{6}{l}{\studentCoadvLabelCase} & \textbf{\DataFields{student}{gradeavrg}} & \textbf{\DataFields{student}{grade}}%\\ \hline%
}
@@ -917,10 +928,13 @@ O texto submetido:
\kill\nopagebreak\\[-2ex]%
\multicolumn{#1}{p{#2}}{\ \ \ \UseLabel{worktitle}: \DataFields{student}{worktitle}}\\*
\multicolumn{#1}{l}{\ \ \ (\UseLabel{Nproc}: \DataFields{student}{Nproc}) \UseLabel{student.ID}: \DataFields{student}{ID} / \DataFields{student}{email}}\\*
- \multicolumn{#1}{l}{\ \ \ \color{darkerblue}\UseLabel{advisor.email}: \DataFields{student.advisor}{email} \UseLabel{phone}: \DataFields{student.advisor}{phone}}\\*
- \multicolumn{#1}{l}{\ \ \ \color{darkerred}\UseLabel{board}: \DataFields{student.reviewer[1]}{email} / \DataFields{student.reviewer[2]}{email} / \DataFields{student.reviewer[3]}{email}}\\*
+%%% \multicolumn{#1}{l}{\ \ \ \color{darkerblue}\UseLabel{advisor.email}: \DataFields{student.advisor}{email} \UseLabel{phone}: \DataFields{student.advisor}{phone}}\\*
+%%% \multicolumn{#1}{p{#2}}{\ \ \ \color{darkerred}\UseLabel{board}: \DataFields{student.reviewer[1]}{email} (\DataFields{student.reviewer[1]}{phone}) / \DataFields{student.reviewer[2]}{email} (\DataFields{student.reviewer[2]}{phone}) / \DataFields{student.reviewer[3]}{email} (\DataFields{student.reviewer[3]}{phone})}\\*
+
+ \multicolumn{#1}{p{#2}}{{\ \ \ \color{darkerblue}\bf \DataFields{student.advisor}{email} (\DataFields{student.advisor}{phone})} ~~ - ~~
+ {\color{darkerred} \DataFields{student.reviewer[2]}{email} (\DataFields{student.reviewer[2]}{phone}) / \DataFields{student.reviewer[3]}{email} (\DataFields{student.reviewer[3]}{phone})}}\\*
- \multicolumn{#1}{l}{\ \ \ \UseLabel{remarks}: {\color{red}\textbf{\DataFields{student}{remarks}}}}%\\ \hline
+ \multicolumn{#1}{p{#2}}{\ \ \ \UseLabel{remarks}: {\color{red}\textbf{\DataFields{student}{remarks}}}}%\\ \hline
}
@@ -941,23 +955,23 @@ O texto submetido:
\studentCase%
{
- \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, tendo sido APROVAD\DataFields{student}{Article} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em]
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, tendo sido \textbf{APROVAD\DataFields{student}{Article}} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em]
\studentBoardGraded
}
{
- \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, tendo sido REAPROVAD\DataFields{student}{Article} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em]
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, tendo sido \textbf{REPROVAD\DataFields{student}{Article}} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em]
\studentBoardGraded
}
{
- \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi APROVAD\DataFields{student}{Article} com conceito final \DataFields{student}{grade}.\\[2em]
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi \textbf{APROVAD\DataFields{student}{Article}} com conceito final \textbf{\DataFields{student}{grade}}.\\[2em]
\studentBoard
}
{
- \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi REPROVAD\DataFields{student}{Article} com conceito final \DataFields{student}{grade}.\\[2em]
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ submeteu o trabalho intitulado \emph{\DataFields{student}{worktitle}}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi \textbf{REPROVAD\DataFields{student}{Article}} com conceito final \textbf{\DataFields{student}{grade}}.\\[2em]
\studentBoard
}
{
- \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ não concluiu o trabalho de conclusão de Curso tendo sido REPROVAD\DataFields{student}{Article} com conceito final \textbf{FF}.
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ não concluiu o trabalho de conclusão de Curso tendo sido \textbf{REPROVAD\DataFields{student}{Article}} com conceito final \textbf{FF}.
}
}
@@ -986,23 +1000,23 @@ O texto submetido:
\studentCase%
{
- \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-date}, tendo sido APROVAD\DataFields{student}{Article} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em]
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-date}, tendo sido \textbf{APROVAD\DataFields{student}{Article}} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em]
\studentBoardGraded*
}%
{
- \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-date}, tendo sido REAPROVAD\DataFields{student}{Article} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em]
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-date}, tendo sido \textbf{REPROVAD\DataFields{student}{Article}} com conceito final \textbf{\DataFields{student}{grade}}, conforme quadro de notas abaixo.\\[2em]
\studentBoardGraded*
}%
{
- \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-date}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi APROVAD\DataFields{student}{Article} com conceito final \DataFields{student}{grade}.\\[2em]
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-date}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi \textbf{APROVAD\DataFields{student}{Article}} com conceito final \textbf{\DataFields{student}{grade}}.\\[2em]
\studentBoard*
}%
{
- \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-date}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi REPROVAD\DataFields{student}{Article} com conceito final \DataFields{student}{grade}.\\[2em]
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ apresentou o trabalho intitulado \emph{\DataFields{student}{worktitle}}\ no dia \DataFields{student}{board-date}, não tendo sido considerad\DataFields{student}{article} apt\DataFields{student}{article} pela banca listada abaixo. Posto em exame, \DataFields{student}{article} mesm\DataFields{student}{article} foi \textbf{REPROVAD\DataFields{student}{Article}} com conceito final \textbf{\DataFields{student}{grade}}.\\[2em]
\studentBoard*
}%
{
- \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ não concluiu o trabalho de conclusão de Curso tendo sido REPROVAD\DataFields{student}{Article} com conceito final \textbf{FF}.
+ \DataFields{student}{Article} alun\DataFields{student}{article} \emph{\DataFields{student}{name}}\ não concluiu o trabalho de conclusão de Curso tendo sido \textbf{REPROVAD\DataFields{student}{Article}} com conceito final \textbf{FF}.
}
}
@@ -1022,12 +1036,17 @@ O texto submetido:
\ExplSyntaxOn
+\cs_new:Npn \__ufrgscca_hline:nnn #1#2#3 {\noalign{\vskip #1\vskip 0pt\hrule height #2\arrayrulewidth\vskip #3\vskip 0pt\penalty 10000}}
+\cs_new:Npn \__ufrgscca_hline:n #1 {\__ufrgscca_hline:nnn {-0.5ex}{#1}{0.25ex}}
+\cs_new:Npn \__ufrgscca_hline: {\__ufrgscca_hline:nnn {-0.5ex}{0.5}{0.25ex}}
+
\cs_new_protected:Npn \reportBody #1#2
{
\str_case:nn {#1}
{
{I}
{
+ \ActivitySelect{tccI}
\begin{longtable}
{
p{\UseConst{report.tabA}}@{\ }
@@ -1042,6 +1061,7 @@ O texto submetido:
}
{II}
{
+ \ActivitySelect{tccII}
\begin{longtable}
{
p{\UseConst{report.tabA}}@{\ }
@@ -1059,8 +1079,17 @@ O texto submetido:
\seq_map_inline:Nn \l__ufrgscca_baselist_graded_seq
{
\studentselect{##1}
- #2\\*\hline
- \studentExtLine{7}{\UseConst{report.tabMult.#1}}\\\hline
+ #2\\\hline
+ \studentExtLine{7}{\UseConst{report.tabMult.#1}}\\\hline
+ \bool_if:nT {\l__ufrgscca_checklist_bool}
+ {
+ \multicolumn{7}{l}
+ {
+ \begin{tabular}{llllll}
+ \__ufrgscca_checktable_lines:nn {L1,L2,L3}{C1,C2,C3,C4,C5,C6}
+ \end{tabular}
+ }\\\hline
+ }
}
\__ufrgscca_miss_case:nnnnn
{7} {report.tabMult.#1}
@@ -1079,7 +1108,7 @@ O texto submetido:
{
\seq_if_empty:NF #3
{
- &\\
+ &\\\pagebreak
\multicolumn{#1}{l}{\textbf{\color{#5}#4}}\\\hline
\seq_map_inline:Nn #3
{
@@ -1097,13 +1126,14 @@ O texto submetido:
%%%%%%%%%%%%%%%
%% report TCC - I
%%%%%%%%%%%%%%%
-\SetForm{report-I}{heading}{\UseTerm{title.tccI}}
-\SetForm{report-I}{title}{Relatório Acompanhamento - \UseTerm{semester}}
+\SetForm{report-I}{top}{}
+\SetForm{report-I}{heading}{\vspace*{-5ex}\UseTerm{title.tccI}~ - ~\textbf{\UseTerm{semester}}}
+%\SetForm{report-I}{title}{}
\SetForm{report-I}{opening}{}
%%%
\SetForm{report-I}{opening}{ %
- { \tiny
+ { \vspace*{-5ex}\tiny
\reportBody {I}{\studentLine}
}
}
@@ -1115,14 +1145,16 @@ O texto submetido:
%%%%%%%%%%%%%%%
%% report TCC - II
%%%%%%%%%%%%%%%
-\SetForm{report-II}{heading}{\UseTerm{title.tccII}}
-\SetForm{report-II}{title}{Relatório Acompanhamento - \UseTerm{semester}}
+\SetForm{report-II}{top}{}
+\SetForm{report-II}{heading}{\vspace*{-5ex}\UseTerm{title.tccII}~ - ~\textbf{\UseTerm{semester}}}
+%\SetForm{report-II}{title}{Relatório Acompanhamento - \UseTerm{semester}}
+%\SetForm{report-II}{title}{\vspace*{-2ex}\UseTerm{semester}}
\SetForm{report-II}{opening}{}
%%%
\SetForm{report-II}{opening}{ %
- { \tiny
+ { \vspace{-2ex}\tiny
\reportBody {II}{\studentLine*}
}
}
@@ -1145,10 +1177,10 @@ O texto submetido:
\SetForm{checklist-I}{opening}{ %
\ActivitySelect{tccI}
{ \scriptsize
- \begin{longtable}{lllll}%
- \CheckList{5}{graded}{Alunos~Com~ Conceito}[black]
- \CheckList{5}{ff}{Desistentes~ com~ conceito~ (2o ~ semestre)}[red]
- \CheckList{5}{dismiss}{Desistentes~ sem~ conceito~ (1o ~ semestre)}[magenta]
+ \begin{longtable}{llllll}%
+ \CheckList{6}{graded}{Alunos~Com~ Conceito}[black]
+ \CheckList{6}{ff}{Desistentes~ com~ conceito~ (2o ~ semestre)}[red]
+ \CheckList{6}{dismiss}{Desistentes~ sem~ conceito~ (1o ~ semestre)}[magenta]
\end{longtable}
}
~\vfill
@@ -1169,10 +1201,10 @@ O texto submetido:
\SetForm{checklist-II}{opening}{ %
\ActivitySelect{tccII}
{ \scriptsize
- \begin{longtable}{lllll}%
- \CheckList{5}{graded}{Alunos~Com~ Conceito}[black]
- \CheckList{5}{ff}{Desistentes~ com~ conceito~ (2o ~ semestre)}[red]
- \CheckList{5}{dismiss}{Desistentes~ sem~ conceito~ (1o ~ semestre)}[magenta]
+ \begin{longtable}{llllll}%
+ \CheckList{6}{graded}{Alunos~Com~ Conceito}[black]
+ \CheckList{6}{ff}{Desistentes~ com~ conceito~ (2o ~ semestre)}[red]
+ \CheckList{6}{dismiss}{Desistentes~ sem~ conceito~ (1o ~ semestre)}[magenta]
\end{longtable}
}
~\vfill
@@ -1224,7 +1256,7 @@ O texto submetido:
& \multirow{4}={ \DataFields{student}{board-time}\\[1mm]\DataFields{student}{board-local} }\\*
&& \DataFields{student.reviewer[2]}{name} \\*
&& \DataFields{student.reviewer[3]}{name} \\*
- && (\DataFields{student.altreviewer[1]}{name}) \\*
+ && ({\DataFields{student.altreviewer[1]}{name}}) \\*
\multicolumn{4}{p{\UseConst{board.tabAll}}}
{\textsc{Título:}\ \emph{\DataFields{student}{worktitle}}}\\\hline
}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
index 21f1473d18..8e075be0ca 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-lists}
- {2023/12/05}
- {2.3}
+ {2024/02/19}
+ {2.4a}
{UFRGS/CCA auxiliary lists commands}
@@ -42,24 +42,16 @@
{
name .code:n = {ufrgscca-lists} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2023/12/05} ,
- version .code:n = {2.3} ,
+ date .code:n = {2024/02/19} ,
+ version .code:n = {2.4a} ,
description .code:n = {UFRGS/CCA~Auxiliary~ lists~ commands}
}
-\cs_if_exist:NF \__codedesc_pkg_info:nn
+\cs_if_exist:NF \PkgInfo
{
- \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
- { \keys_set:nn {#1 / pkg info}{#2} }
- }
-\cs_if_exist:NF \PkgInfo
- { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
-\cs_if_exist:NF \PkgDescription
- {
+ \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} }
\NewDocumentCommand \PkgDescription {m}
- {
- \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
- }
- }
+ { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par }
+ }
%%%%%%%
%%% End of cut-n-paste
%%%%%%%
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
index 08bba41e21..57bb8926bf 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-ppc}
- {2023/12/05}
- {2.3}
+ {2024/02/19}
+ {2.4a}
{UFRGS/CCA PPC commands}
%%%%%%%
@@ -41,24 +41,16 @@
{
name .code:n = {ufrgscca-ppc} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2023/12/05},
- version .code:n = {2.3} ,
+ date .code:n = {2024/02/19},
+ version .code:n = {2.4a} ,
description .code:n = {UFRGS/CCA~ auxiliary~ PPC-related~ (indicators)~ commands}
}
-\cs_if_exist:NF \__codedesc_pkg_info:nn
+\cs_if_exist:NF \PkgInfo
{
- \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
- { \keys_set:nn {#1 / pkg info}{#2} }
- }
-\cs_if_exist:NF \PkgInfo
- { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
-\cs_if_exist:NF \PkgDescription
- {
+ \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} }
\NewDocumentCommand \PkgDescription {m}
- {
- \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
- }
- }
+ { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par }
+ }
%%%%%%%
%%% End of cut-n-paste
%%%%%%%
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex
index 0a5f9557b5..940f8491c0 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex
index f054d3473c..84effd20e6 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -61,10 +61,10 @@
\ActivitySetCoord{Nome Coordenador}
\ActivitySetCoordTitle{Coordenador\ActivityCoord[internship]{narticle} da Atividade de Ensino de\newline Estágio Supervisionado Obrigatório}
-\ActivitySelect{internship}
-\ActivitySet{Est.Ob.}{Estágio Supervisionado Não Obrigatório}
+\ActivitySelect{internship-opt}
+\ActivitySet{Est. Não Ob.}{Estágio Supervisionado Não Obrigatório}
\ActivitySetCoord{Nome Coordenador}
-\ActivitySetCoordTitle{Coordenador\ActivityCoord[internship]{narticle} da Atividade de Ensino de\newline Estágio Supervisionado Não Obrigatório}
+\ActivitySetCoordTitle{Coordenador\ActivityCoord[internship]{narticle} da Atividade de Ensino de\newline Estágio Supervisionado Obrigatório}
\SetTerms{%
@@ -226,6 +226,7 @@
phone = {ramal} ,
board = {Banca Examinadora} ,
board.member = {Membro da Banca} ,
+ board.acro = {Banca} ,
agree = {De Acordo} ,
Nproc = {SEI} ,
remarks = {remarks} ,
@@ -272,7 +273,7 @@
report.tabF = {8mm} ,
report.tabG = {12mm} ,
report.tabMult.II = {141mm} , % A+B+C+D+E+F+G
- report.tabMult.I = {156mm} , % A+B+C+D+E+F+G + Ex
+ report.tabMult.I = {141mm} , % A+B+C+D+E+F+G + Ex
}
\SetConsts{%
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
index 12a6cea359..a0f813deb5 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.3} {2023/12/05}
+%% This is version {2.4a} {2024/02/19}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplClass
{ufrgscca}
- {2023/12/05}
- {2.3}
+ {2024/02/19}
+ {2.4a}
{UFRGS/CCA class}
@@ -42,24 +42,16 @@
{
name .code:n = {ufrgscca} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2023/12/05},
- version .code:n = {2.3} ,
+ date .code:n = {2024/02/19},
+ version .code:n = {2.4a} ,
description .code:n = {UFRGS/CCA~a~report~based~class~bundle}
}
-\cs_if_exist:NF \__codedesc_pkg_info:nn
+\cs_if_exist:NF \PkgInfo
{
- \cs_new_protected:Npn \__codedesc_pkg_info:nn #1#2
- { \keys_set:nn {#1 / pkg info}{#2} }
- }
-\cs_if_exist:NF \PkgInfo
- { \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} } }
-\cs_if_exist:NF \PkgDescription
- {
+ \NewDocumentCommand \PkgInfo {mm} { \keys_set:nn {#1 / pkg info}{#2} }
\NewDocumentCommand \PkgDescription {m}
- {
- \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par
- }
- }
+ { \noindent Package~ \textbf{\PkgInfo{#1}{name}}~Version:~\PkgInfo{#1}{version}~ -~ \PkgInfo{#1}{date}\par \emph{\PkgInfo{#1}{description}}~\par }
+ }
%%%%%%%
%%% End of cut-n-paste
%%%%%%%
diff --git a/macros/luatex/latex/lua-placeholders/README.md b/macros/luatex/latex/lua-placeholders/README.md
index 9d2c9ef966..6859910816 100644
--- a/macros/luatex/latex/lua-placeholders/README.md
+++ b/macros/luatex/latex/lua-placeholders/README.md
@@ -1,4 +1,5 @@
# Lua(TeX) Placeholders
+![CTAN Version](https://img.shields.io/ctan/v/lua-placeholders)
A LaTeX package for specifying and inserting document placeholders with JSON or YAML formats.
diff --git a/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-example/example.pdf b/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-example/example.pdf
index 35fd39899f..979941c702 100644
--- a/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-example/example.pdf
+++ b/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-example/example.pdf
Binary files differ
diff --git a/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-example/example.tex b/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-example/example.tex
index 12d60b796d..21ed872646 100644
--- a/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-example/example.tex
+++ b/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-example/example.tex
@@ -19,7 +19,7 @@
\documentclass{article}
\usepackage{gitinfo-lua}
-\usepackage{../../tex/lua-placeholders}
+\usepackage{lua-placeholders}
\usepackage{listings}
\usepackage{amsmath}
\usepackage{calc}
diff --git a/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-manual.pdf b/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-manual.pdf
index 1a84db82dd..2054633991 100644
--- a/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-manual.pdf
+++ b/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-manual.pdf
Binary files differ
diff --git a/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-manual.tex b/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-manual.tex
index 4a7d885ea6..210270b939 100644
--- a/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-manual.tex
+++ b/macros/luatex/latex/lua-placeholders/doc/lua-placeholders-manual.tex
@@ -215,7 +215,7 @@
\clearpage
- \section{Changelog}
+ \section{Change Log}
\newcommand\commitline[3]{\item #1\ifx&#3&%
\else\\[1em]
#3\fi\\\hspace*{1em} — \printdate{#2}}
diff --git a/macros/luatex/latex/lua-placeholders/scripts/lua-placeholders-parser.lua b/macros/luatex/latex/lua-placeholders/scripts/lua-placeholders-parser.lua
index 3583c09a28..4a0304c463 100644
--- a/macros/luatex/latex/lua-placeholders/scripts/lua-placeholders-parser.lua
+++ b/macros/luatex/latex/lua-placeholders/scripts/lua-placeholders-parser.lua
@@ -32,7 +32,7 @@ end
local current_path = os.getenv('LUA_PATH')
if current_path then
texio.write_nl('Info: LUA path setup up correctly. Great job!')
-else
+elseif not tiny_found then
-- Set the LUA_PATH and LUA_CPATH using 'luarocks -lua-version <LuaLaTeX version> path'
texio.write_nl('Warning: No LUA_PATH set. Looking for LuaRocks installation...')
local handle = io.popen('luarocks --lua-version ' .. LUA_VERSION .. ' path')
@@ -60,6 +60,8 @@ else
else
tex.error('Error: could not open a shell. Is shell-escape turned on?')
end
+else
+ texio.write_nl('Warning: no LUA_PATH set.')
end
texio.write_nl('\n')
diff --git a/macros/luatex/latex/lua-placeholders/scripts/lua-placeholders-types.lua b/macros/luatex/latex/lua-placeholders/scripts/lua-placeholders-types.lua
index bb6abafdb1..d640de626c 100644
--- a/macros/luatex/latex/lua-placeholders/scripts/lua-placeholders-types.lua
+++ b/macros/luatex/latex/lua-placeholders/scripts/lua-placeholders-types.lua
@@ -104,13 +104,22 @@ str_param = base_param:new{
function str_param:new(key, _o)
local o = {
key = key,
- placeholder = _o.placeholder
+ placeholder = _o.placeholder,
+ default = _o.default
}
setmetatable(o, self)
self.__index = self
return o
end
+function str_param:val()
+ local value = self:raw_val()
+ if value then
+ local formatted, _ = string.gsub(value, '\n', ' ')
+ return formatted
+ end
+end
+
number_param = base_param:new{
type = 'number'
}
@@ -127,14 +136,14 @@ function number_param:new(key, _o)
end
function number_param:raw_val()
- if self.value or self.default then
+ if self.value ~= nil or self.default ~= nil then
return self.value or self.default
end
end
function number_param:val()
local val = self:raw_val()
- if val then
+ if val ~= nil then
if token.is_defined('numprint') then
return '\\numprint{' .. val .. '}'
else
diff --git a/macros/luatex/latex/lua-placeholders/scripts/lua-placeholders.lua b/macros/luatex/latex/lua-placeholders/scripts/lua-placeholders.lua
index 832e0106eb..24f0a6c5ca 100644
--- a/macros/luatex/latex/lua-placeholders/scripts/lua-placeholders.lua
+++ b/macros/luatex/latex/lua-placeholders/scripts/lua-placeholders.lua
@@ -23,9 +23,9 @@ if not modules then
end
modules.lua_placeholders = {
- version = "1.0.1",
- date = "2024/02/12",
- comment = 'Extended LaTeX Parameter Interface — for specifying and inserting document parameters',
+ version = "1.0.2",
+ date = "2024/02/21",
+ comment = 'Lua Placeholders — for specifying and inserting document parameters',
author = 'Erik Nijenhuis',
license = 'free'
}
@@ -200,7 +200,11 @@ function api.with_rows(key, namespace, csname)
texio.write_nl("Warning: no values set for " .. param.key)
local format = row_content
for col_key, col in pairs(param.columns) do
- format = format:gsub('\\' .. col_key, '{\\paramplaceholder{' .. (col.placeholder or col_key) .. '}}')
+ if col.default ~= nil then
+ format = format:gsub('\\' .. col_key, col:val())
+ else
+ format = format:gsub('\\' .. col_key, '{\\paramplaceholder{' .. (col.placeholder or col_key) .. '}}')
+ end
end
tex.print(format)
else
diff --git a/macros/luatex/latex/lua-placeholders/tex/lua-placeholders.sty b/macros/luatex/latex/lua-placeholders/tex/lua-placeholders.sty
index d467033c11..1d2a26f720 100644
--- a/macros/luatex/latex/lua-placeholders/tex/lua-placeholders.sty
+++ b/macros/luatex/latex/lua-placeholders/tex/lua-placeholders.sty
@@ -19,7 +19,7 @@
% lua-placeholders-parser.lua and lua-placeholders-types.lua
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lua-placeholders}[2024/02/12 1.0.1 Extended LaTeX Paramter Interface Package]
+\ProvidesPackage{lua-placeholders}[2024/02/21 1.0.2 Lua Placeholders Package]
\RequirePackage{ifthen}
\RequirePackage{luapackageloader}
diff --git a/macros/unicodetex/latex/beaulivre/README.md b/macros/unicodetex/latex/beaulivre/README.md
index 243c0ec3fe..9fedfc8ef4 100644
--- a/macros/unicodetex/latex/beaulivre/README.md
+++ b/macros/unicodetex/latex/beaulivre/README.md
@@ -1,8 +1,8 @@
-<!-- Copyright (C) 2021-2023 by Jinwen XU -->
+<!-- Copyright (C) 2021-2024 by Jinwen XU -->
# `beaulivre` : write you books in a colorful way
-> **New documentations are still being written. For now, only the core code is included in TeX Live 2023 (old documentations have been removed from the distribution).**
+> **New documentations are still being written. For now, only the core code is included in TeX Live 2024 and MiKTeX (old documentations have been removed from the distribution).**
`beaulivre` is a LaTeX class for typesetting books, which has a colorful design.
diff --git a/macros/unicodetex/latex/beaulivre/beaulivre.cls b/macros/unicodetex/latex/beaulivre/beaulivre.cls
index 7b7fae8298..680395a2e1 100644
--- a/macros/unicodetex/latex/beaulivre/beaulivre.cls
+++ b/macros/unicodetex/latex/beaulivre/beaulivre.cls
@@ -2,7 +2,7 @@
%% This is file `beaulivre/beaulivre.cls',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the colorist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{beaulivre}
- {2023/09/26} {}
+ {2024/02/20} {}
{A colorful book style}
\tl_const:Nn \l__colorclass_base_class_tl { book }
@@ -635,7 +635,7 @@
]
\setmathfont { texgyrepagella-math.otf }
[
- range = { `(, `) } ,
+ range = { `(, `), `/, \setminus } ,
Scale = 1.10
]
\setmathfont { texgyrepagella-math.otf }
@@ -664,6 +664,9 @@
\newcommand{\limstrut}{\vrule depth0.2ex width 0pt}
\renewcommand{\varprojlim}{\mathop{\underleftarrow{{\lim}\limstrut}}}
\renewcommand{\varinjlim}{\mathop{\underrightarrow{{\lim}\limstrut}}}
+
+ \let\setminus@old\setminus
+ \renewcommand*{\setminus}{\!\setminus@old\!}
}
% https://tex.stackexchange.com/a/647789
diff --git a/macros/unicodetex/latex/einfart/README.md b/macros/unicodetex/latex/einfart/README.md
index 9c56ae78a7..5cb65cbe21 100644
--- a/macros/unicodetex/latex/einfart/README.md
+++ b/macros/unicodetex/latex/einfart/README.md
@@ -1,8 +1,8 @@
-<!-- Copyright (C) 2021-2023 by Jinwen XU -->
+<!-- Copyright (C) 2021-2024 by Jinwen XU -->
# `einfart` : write you articles in a simple and clear way
-> **New documentations are still being written. For now, only the core code is included in TeX Live 2023 (old documentations have been removed from the distribution).**
+> **New documentations are still being written. For now, only the core code is included in TeX Live 2024 and MiKTeX (old documentations have been removed from the distribution).**
`einfart` is a LaTeX class for typesetting articles, which has a simple and clear design.
diff --git a/macros/unicodetex/latex/einfart/einfart.cls b/macros/unicodetex/latex/einfart/einfart.cls
index 7f3514badd..2146ce094d 100644
--- a/macros/unicodetex/latex/einfart/einfart.cls
+++ b/macros/unicodetex/latex/einfart/einfart.cls
@@ -2,7 +2,7 @@
%% This is file `einfart/einfart.cls',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{einfart}
- {2023/09/26} {}
+ {2024/02/20} {}
{A simple and clear article style}
\tl_const:Nn \l__minimclass_base_class_tl { article }
@@ -655,7 +655,7 @@
]
\setmathfont { texgyrepagella-math.otf }
[
- range = { `(, `) } ,
+ range = { `(, `), `/, \setminus } ,
Scale = 1.10
]
\setmathfont { texgyrepagella-math.otf }
@@ -684,6 +684,9 @@
\newcommand{\limstrut}{\vrule depth0.2ex width 0pt}
\renewcommand{\varprojlim}{\mathop{\underleftarrow{{\lim}\limstrut}}}
\renewcommand{\varinjlim}{\mathop{\underrightarrow{{\lim}\limstrut}}}
+
+ \let\setminus@old\setminus
+ \renewcommand*{\setminus}{\!\setminus@old\!}
}
% https://tex.stackexchange.com/a/647789
diff --git a/macros/unicodetex/latex/lebhart/README.md b/macros/unicodetex/latex/lebhart/README.md
index ed7bd0e2b1..0b7a117cbf 100644
--- a/macros/unicodetex/latex/lebhart/README.md
+++ b/macros/unicodetex/latex/lebhart/README.md
@@ -1,8 +1,8 @@
-<!-- Copyright (C) 2021-2023 by Jinwen XU -->
+<!-- Copyright (C) 2021-2024 by Jinwen XU -->
# `lebhart` : write you articles in a colorful way
-> **New documentations are still being written. For now, only the core code is included in TeX Live 2023 (old documentations have been removed from the distribution).**
+> **New documentations are still being written. For now, only the core code is included in TeX Live 2024 and MiKTeX (old documentations have been removed from the distribution).**
`lebhart` is a LaTeX class for typesetting articles, which has a colorful design.
diff --git a/macros/unicodetex/latex/lebhart/lebhart.cls b/macros/unicodetex/latex/lebhart/lebhart.cls
index d36b7718d1..73c306043d 100644
--- a/macros/unicodetex/latex/lebhart/lebhart.cls
+++ b/macros/unicodetex/latex/lebhart/lebhart.cls
@@ -2,7 +2,7 @@
%% This is file `lebhart/lebhart.cls',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the colorist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{lebhart}
- {2023/09/26} {}
+ {2024/02/20} {}
{A colorful article style}
\tl_const:Nn \l__colorclass_base_class_tl { article }
@@ -635,7 +635,7 @@
]
\setmathfont { texgyrepagella-math.otf }
[
- range = { `(, `) } ,
+ range = { `(, `), `/, \setminus } ,
Scale = 1.10
]
\setmathfont { texgyrepagella-math.otf }
@@ -664,6 +664,9 @@
\newcommand{\limstrut}{\vrule depth0.2ex width 0pt}
\renewcommand{\varprojlim}{\mathop{\underleftarrow{{\lim}\limstrut}}}
\renewcommand{\varinjlim}{\mathop{\underrightarrow{{\lim}\limstrut}}}
+
+ \let\setminus@old\setminus
+ \renewcommand*{\setminus}{\!\setminus@old\!}
}
% https://tex.stackexchange.com/a/647789
diff --git a/macros/unicodetex/latex/simplivre/README.md b/macros/unicodetex/latex/simplivre/README.md
index d4ecf7e948..bee36bec07 100644
--- a/macros/unicodetex/latex/simplivre/README.md
+++ b/macros/unicodetex/latex/simplivre/README.md
@@ -1,8 +1,8 @@
-<!-- Copyright (C) 2021-2023 by Jinwen XU -->
+<!-- Copyright (C) 2021-2024 by Jinwen XU -->
# `simplivre` : write you books in a simple and clear way
-> **New documentations are still being written. For now, only the core code is included in TeX Live 2023 (old documentations have been removed from the distribution).**
+> **New documentations are still being written. For now, only the core code is included in TeX Live 2024 and MiKTeX (old documentations have been removed from the distribution).**
`simplivre` is a LaTeX class for typesetting books, which has a simple and clear design.
diff --git a/macros/unicodetex/latex/simplivre/simplivre.cls b/macros/unicodetex/latex/simplivre/simplivre.cls
index 5bf6da66dd..43ed3e3f30 100644
--- a/macros/unicodetex/latex/simplivre/simplivre.cls
+++ b/macros/unicodetex/latex/simplivre/simplivre.cls
@@ -2,7 +2,7 @@
%% This is file `simplivre/simplivre.cls',
%% generated with the docstrip utility.
%%
-%% Copyright (C) 2021-2023 by Jinwen XU
+%% Copyright (C) 2021-2024 by Jinwen XU
%%
%% This is part of the minimalist class series.
%%
@@ -18,7 +18,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{simplivre}
- {2023/09/26} {}
+ {2024/02/20} {}
{A simple and clear book style}
\tl_const:Nn \l__minimclass_base_class_tl { book }
@@ -655,7 +655,7 @@
]
\setmathfont { texgyrepagella-math.otf }
[
- range = { `(, `) } ,
+ range = { `(, `), `/, \setminus } ,
Scale = 1.10
]
\setmathfont { texgyrepagella-math.otf }
@@ -684,6 +684,9 @@
\newcommand{\limstrut}{\vrule depth0.2ex width 0pt}
\renewcommand{\varprojlim}{\mathop{\underleftarrow{{\lim}\limstrut}}}
\renewcommand{\varinjlim}{\mathop{\underrightarrow{{\lim}\limstrut}}}
+
+ \let\setminus@old\setminus
+ \renewcommand*{\setminus}{\!\setminus@old\!}
}
% https://tex.stackexchange.com/a/647789