From 286abb7dcd6c03d7edcd3d3435bb97448074c3cf Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 22 Feb 2024 03:04:08 +0000 Subject: CTAN sync 202402220303 --- macros/latex/contrib/colorist/README.md | 4 +- macros/latex/contrib/colorist/colorart.cls | 4 +- macros/latex/contrib/colorist/colorbook.cls | 4 +- macros/latex/contrib/colorist/colorist-fancy.sty | 77 +- macros/latex/contrib/colorist/colorist.sty | 4 +- .../code/create-theorem-preset-names-plural.tex | 1487 +++++++++++ .../code/create-theorem-preset-names.tex | 1495 ++++++++++++ .../contrib/create-theorem/code/create-theorem.sty | 1182 +++++++++ .../contrib/create-theorem/create-theorem-doc.pdf | Bin 88400 -> 0 bytes .../contrib/create-theorem/create-theorem-doc.tex | 742 ------ .../contrib/create-theorem/create-theorem.sty | 2569 -------------------- .../create-theorem/doc/create-theorem-doc.pdf | Bin 0 -> 88437 bytes .../create-theorem/doc/create-theorem-doc.tex | 742 ++++++ macros/latex/contrib/easybook/easybook.dtx | 25 +- macros/latex/contrib/easybook/easybook.pdf | Bin 602450 -> 604534 bytes macros/latex/contrib/easybook/easybook.tex | 18 +- macros/latex/contrib/homework/README.md | 8 +- macros/latex/contrib/homework/homework-demo-cn.pdf | Bin 83800 -> 90105 bytes macros/latex/contrib/homework/homework-demo-cn.tex | 16 +- macros/latex/contrib/homework/homework-demo-de.pdf | Bin 52524 -> 54480 bytes macros/latex/contrib/homework/homework-demo-de.tex | 18 +- macros/latex/contrib/homework/homework-demo-en.pdf | Bin 51255 -> 53000 bytes macros/latex/contrib/homework/homework-demo-en.tex | 17 +- macros/latex/contrib/homework/homework-demo-es.pdf | Bin 51865 -> 53245 bytes macros/latex/contrib/homework/homework-demo-es.tex | 17 +- macros/latex/contrib/homework/homework-demo-fr.pdf | Bin 51601 -> 53329 bytes macros/latex/contrib/homework/homework-demo-fr.tex | 17 +- macros/latex/contrib/homework/homework-demo-jp.pdf | Bin 86982 -> 92773 bytes macros/latex/contrib/homework/homework-demo-jp.tex | 17 +- macros/latex/contrib/homework/homework-demo-tc.pdf | Bin 90681 -> 98582 bytes macros/latex/contrib/homework/homework-demo-tc.tex | 16 +- .../homework/homework-example-sheet-answer.pdf | Bin 30103 -> 30235 bytes .../contrib/homework/homework-example-sheet.pdf | Bin 21936 -> 22123 bytes .../contrib/homework/homework-example-sheet.tex | 4 +- macros/latex/contrib/homework/homework.cls | 25 +- macros/latex/contrib/listings/Makefile | 12 +- macros/latex/contrib/listings/listings-devel.pdf | Bin 1454263 -> 1451811 bytes macros/latex/contrib/listings/listings.dtx | 376 +-- macros/latex/contrib/listings/listings.ins | 10 + macros/latex/contrib/listings/listings.pdf | Bin 1031323 -> 1026570 bytes macros/latex/contrib/listings/lstdrvrs.dtx | 46 +- macros/latex/contrib/listings/lstdrvrs.pdf | Bin 752443 -> 755742 bytes macros/latex/contrib/minimalist/README.md | 4 +- .../contrib/minimalist/minimalist-classical.sty | 20 +- .../contrib/minimalist/minimalist-default.sty | 22 +- .../latex/contrib/minimalist/minimalist-flow.sty | 20 +- .../latex/contrib/minimalist/minimalist-plain.sty | 20 +- .../latex/contrib/minimalist/minimalist-stream.sty | 35 +- macros/latex/contrib/minimalist/minimalist.sty | 4 +- macros/latex/contrib/minimalist/minimart.cls | 4 +- macros/latex/contrib/minimalist/minimbook.cls | 4 +- macros/latex/contrib/projlib/ProjLib.dtx | 1636 ++++++++++++- macros/latex/contrib/projlib/README.md | 4 +- macros/latex/contrib/ufrgscca/README.md | 8 +- macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf | Bin 590459 -> 592794 bytes macros/latex/contrib/ufrgscca/doc/ufrgscca.tex | 26 +- .../latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty | 24 +- .../contrib/ufrgscca/latex/ufrgscca-base-en.def | 2 +- .../contrib/ufrgscca/latex/ufrgscca-base-ptBR.def | 2 +- .../contrib/ufrgscca/latex/ufrgscca-coord.sty | 149 +- .../latex/contrib/ufrgscca/latex/ufrgscca-core.sty | 54 +- .../contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex | 2 +- .../contrib/ufrgscca/latex/ufrgscca-cover.sty | 26 +- .../latex/contrib/ufrgscca/latex/ufrgscca-curr.sty | 26 +- .../contrib/ufrgscca/latex/ufrgscca-forms.sty | 70 +- .../contrib/ufrgscca/latex/ufrgscca-forms.tex | 204 +- .../contrib/ufrgscca/latex/ufrgscca-lists.sty | 26 +- .../latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty | 26 +- .../contrib/ufrgscca/latex/ufrgscca-terms-en.tex | 2 +- .../contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex | 11 +- macros/latex/contrib/ufrgscca/latex/ufrgscca.cls | 26 +- 71 files changed, 7469 insertions(+), 3940 deletions(-) create mode 100644 macros/latex/contrib/create-theorem/code/create-theorem-preset-names-plural.tex create mode 100644 macros/latex/contrib/create-theorem/code/create-theorem-preset-names.tex create mode 100644 macros/latex/contrib/create-theorem/code/create-theorem.sty delete mode 100644 macros/latex/contrib/create-theorem/create-theorem-doc.pdf delete mode 100644 macros/latex/contrib/create-theorem/create-theorem-doc.tex delete mode 100644 macros/latex/contrib/create-theorem/create-theorem.sty create mode 100644 macros/latex/contrib/create-theorem/doc/create-theorem-doc.pdf create mode 100644 macros/latex/contrib/create-theorem/doc/create-theorem-doc.tex (limited to 'macros/latex/contrib') 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 @@ - + # `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/code/create-theorem-preset-names.tex b/macros/latex/contrib/create-theorem/code/create-theorem-preset-names.tex new file mode 100644 index 0000000000..9df9c0e274 --- /dev/null +++ b/macros/latex/contrib/create-theorem/code/create-theorem-preset-names.tex @@ -0,0 +1,1495 @@ +%============================= +% --- Preset Names --- +%============================= + +\NameTheorem { application } + { + , heading = { + , english = Application + , french = Application + , ngerman = Anwendung + , italian = Applicazione + , portuguese = Aplicação + , brazilian = Aplicação + , spanish = Aplicación + , schinese = 应用 + , tchinese = 應用 + , japanese = 応用 + , russian = Применение + } + , crefname = { + , english = {application}{applications} + , french = [l']{application}[les]{applications} + , ngerman = { {Anwendung}{Anwendungen} + , Nominativ = [die]{Anwendung}[die]{Anwendungen} + , Genitiv = [der]{Anwendung}[der]{Anwendungen} + , Dativ = [der]{Anwendung}[den]{Anwendungen} + , Akkusativ = [die]{Anwendung}[die]{Anwendungen} + } + , italian = [l']{applicazione}[le]{applicazioni} + , portuguese = [a]{aplicação}[as]{aplicações} + , brazilian = [a]{aplicação}[as]{aplicações} + , spanish = [la]{aplicación}[las]{aplicaciones} + , schinese = {应用}{应用} + , tchinese = {應用}{應用} + , japanese = {応用}{応用} + , russian = {применение}{приложения} + } + , Crefname = { + , english = {Application}{Applications} + , french = [L']{application}[Les]{applications} + , ngerman = { {Anwendung}{Anwendungen} + , Nominativ = [Die]{Anwendung}[Die]{Anwendungen} + , Genitiv = [Der]{Anwendung}[Der]{Anwendungen} + , Dativ = [Der]{Anwendung}[Den]{Anwendungen} + , Akkusativ = [Die]{Anwendung}[Die]{Anwendungen} + } + , italian = [L']{applicazione}[Le]{applicazioni} + , portuguese = [A]{aplicação}[As]{aplicações} + , brazilian = [A]{aplicação}[As]{aplicações} + , spanish = [La]{aplicación}[Las]{aplicaciones} + , schinese = {应用}{应用} + , tchinese = {應用}{應用} + , japanese = {応用}{応用} + , russian = {Применение}{Приложения} + } + } + +\NameTheorem { assertion } + { + , heading = { + , english = Assertion + , french = Assertion + , ngerman = Assertion + , italian = Asserzione + , portuguese = Asserção + , brazilian = Asserção + , spanish = Aserción + , schinese = 断言 + , tchinese = 斷言 + , japanese = 断言 + , russian = Утверждение + } + , crefname = { + , english = {assertion}{assertions} + , french = [l']{assertion}[les]{assertions} + , ngerman = { {Assertion}{Assertionen} + , Nominativ = [die]{Assertion}[die]{Assertionen} + , Genitiv = [der]{Assertion}[der]{Assertionen} + , Dativ = [der]{Assertion}[den]{Assertionen} + , Akkusativ = [die]{Assertion}[die]{Assertionen} + } + , italian = [l']{asserzione}[le]{asserzioni} + , portuguese = [a]{asserção}[as]{asserções} + , brazilian = [a]{asserção}[as]{asserções} + , spanish = [la]{aserción}[las]{aserciones} + , schinese = {断言}{断言} + , tchinese = {斷言}{斷言} + , japanese = {断言}{断言} + , russian = {утверждение}{утверждения} + } + , Crefname = { + , english = {Assertion}{Assertions} + , french = [L']{assertion}[Les]{assertions} + , ngerman = { {Assertion}{Assertionen} + , Nominativ = [Die]{Assertion}[Die]{Assertionen} + , Genitiv = [Der]{Assertion}[Der]{Assertionen} + , Dativ = [Der]{Assertion}[Den]{Assertionen} + , Akkusativ = [Die]{Assertion}[Die]{Assertionen} + } + , italian = [L']{asserzione}[Le]{asserzioni} + , portuguese = [A]{asserção}[As]{asserções} + , brazilian = [A]{asserção}[As]{asserções} + , spanish = [La]{aserción}[Las]{aserciones} + , schinese = {断言}{断言} + , tchinese = {斷言}{斷言} + , japanese = {断言}{断言} + , russian = {Утверждение}{Утверждения} + } + } + +\NameTheorem { assumption } + { + , heading = { + , english = Assumption + , french = Supposition + , ngerman = Annahme + , italian = Supposizione + , portuguese = Suposição + , brazilian = Suposição + , spanish = Suposición + , schinese = 假定 + , tchinese = 假定 + , japanese = 仮定 + , russian = Предположение + } + , crefname = { + , english = {assumption}{assumptions} + , french = [la]{supposition}[les]{suppositions} + , ngerman = { {Annahme}{Annahmen} + , Nominativ = [die]{Annahme}[die]{Annahmen} + , Genitiv = [der]{Annahme}[der]{Annahmen} + , Dativ = [der]{Annahme}[den]{Annahmen} + , Akkusativ = [die]{Annahme}[die]{Annahmen} + } + , italian = [la]{supposizione}[le]{supposizioni} + , portuguese = [a]{suposição}[as]{suposições} + , brazilian = [a]{suposição}[as]{suposições} + , spanish = [la]{suposición}[las]{suposiciones} + , schinese = {假定}{假定} + , tchinese = {假定}{假定} + , japanese = {仮定}{仮定} + , russian = {предположение}{предположения} + } + , Crefname = { + , english = {Assumption}{Assumptions} + , french = [La]{supposition}[Les]{suppositions} + , ngerman = { {Annahme}{Annahmen} + , Nominativ = [Die]{Annahme}[Die]{Annahmen} + , Genitiv = [Der]{Annahme}[Der]{Annahmen} + , Dativ = [Der]{Annahme}[Den]{Annahmen} + , Akkusativ = [Die]{Annahme}[Die]{Annahmen} + } + , italian = [la]{supposizione}[le]{supposizioni} + , portuguese = [A]{suposição}[As]{suposições} + , brazilian = [A]{suposição}[As]{suposições} + , spanish = [La]{suposición}[Las]{suposiciones} + , schinese = {假定}{假定} + , tchinese = {假定}{假定} + , japanese = {仮定}{仮定} + , russian = {Предположение}{Предположения} + } + } + +\NameTheorem { axiom } + { + , heading = { + , english = Axiom + , french = Axiome + , ngerman = Axiom + , italian = Assioma + , portuguese = Axioma + , brazilian = Axioma + , spanish = Axioma + , schinese = 公理 + , tchinese = 公理 + , japanese = 公理 + , russian = Аксиома + } + , crefname = { + , english = {axiom}{axioms} + , french = [l']{axiome}[les]{axiomes} + , ngerman = { {Axiom}{Axiome} + , Nominativ = [das]{Axiom}[die]{Axiome} + , Genitiv = [des]{Axioms}[der]{Axiome} + , Dativ = [dem]{Axiom}[den]{Axiomen} + , Akkusativ = [das]{Axiom}[die]{Axiome} + } + , italian = [l']{assioma}[gli]{assiomi} + , portuguese = [o]{axioma}[os]{axiomas} + , brazilian = [o]{axioma}[os]{axiomas} + , spanish = [el]{axioma}[los]{axiomas} + , schinese = {公理}{公理} + , tchinese = {公理}{公理} + , japanese = {公理}{公理} + , russian = {аксиома}{аксиомы} + } + , Crefname = { + , english = {Axiom}{Axioms} + , french = [L']{axiome}[Les]{axiomes} + , ngerman = { {Axiom}{Axiome} + , Nominativ = [Das]{Axiom}[Die]{Axiome} + , Genitiv = [Des]{Axioms}[Der]{Axiome} + , Dativ = [Dem]{Axiom}[Den]{Axiomen} + , Akkusativ = [Das]{Axiom}[Die]{Axiome} + } + , italian = [L']{assioma}[Gli]{assiomi} + , portuguese = [O]{axioma}[Os]{axiomas} + , brazilian = [O]{axioma}[Os]{axiomas} + , spanish = [El]{axioma}[Los]{axiomas} + , schinese = {公理}{公理} + , tchinese = {公理}{公理} + , japanese = {公理}{公理} + , russian = {Аксиома}{Аксиомы} + } + } + +\NameTheorem { claim } + { + , heading = { + , english = Claim + , french = Affirmation + , ngerman = Behauptung + , italian = Affermazione + , portuguese = Afirmação + , brazilian = Afirmação + , spanish = Afirmación + , schinese = 断言 + , tchinese = 斷言 + , japanese = 断言 + , russian = Утверждение + } + , crefname = { + , english = {claim}{claims} + , french = [l']{affirmation}[les]{affirmations} + , ngerman = { {Behauptung}{Behauptungen} + , Nominativ = [die]{Behauptung}[die]{Behauptungen} + , Genitiv = [der]{Behauptung}[der]{Behauptungen} + , Dativ = [der]{Behauptung}[den]{Behauptungen} + , Akkusativ = [die]{Behauptung}[die]{Behauptungen} + } + , italian = [l']{affermazione}[le]{affermazioni} + , portuguese = [a]{afirmação}[as]{afirmações} + , brazilian = [a]{afirmação}[as]{afirmações} + , spanish = [la]{afirmación}[las]{afirmaciones} + , schinese = {断言}{断言} + , tchinese = {斷言}{斷言} + , japanese = {断言}{断言} + , russian = {утверждение}{утверждения} + } + , Crefname = { + , english = {Claim}{Claims} + , french = [L']{affirmation}[Les]{affirmations} + , ngerman = { {Behauptung}{Behauptungen} + , Nominativ = [Die]{Behauptung}[Die]{Behauptungen} + , Genitiv = [Der]{Behauptung}[Der]{Behauptungen} + , Dativ = [Der]{Behauptung}[Den]{Behauptungen} + , Akkusativ = [Die]{Behauptung}[Die]{Behauptungen} + } + , italian = [L']{affermazione}[Le]{affermazioni} + , portuguese = [A]{afirmação}[As]{afirmações} + , brazilian = [A]{afirmação}[As]{afirmações} + , spanish = [La]{afirmación}[Las]{afirmaciones} + , schinese = {断言}{断言} + , tchinese = {斷言}{斷言} + , japanese = {断言}{断言} + , russian = {Утверждение}{Утверждения} + } + } + +\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 = { + , english = Conclusion + , french = Conclusion + , ngerman = Schlussfolgerung + , italian = Conclusione + , portuguese = Conclusão + , brazilian = Conclusão + , spanish = Conclusión + , schinese = 结论 + , tchinese = 結論 + , japanese = 結論 + , russian = Вывод + } + , crefname = { + , english = {conclusion}{conclusions} + , french = [la]{conclusion}[Les]{conclusions} + , ngerman = { {Schlussfolgerung}{Schlussfolgerungen} + , Nominativ = [die]{Schlussfolgerung}[die]{Schlussfolgerungen} + , Genitiv = [der]{Schlussfolgerung}[der]{Schlussfolgerungen} + , Dativ = [der]{Schlussfolgerung}[den]{Schlussfolgerungen} + , Akkusativ = [die]{Schlussfolgerung}[die]{Schlussfolgerungen} + } + , italian = [la]{conclusione}[le]{conclusioni} + , portuguese = [a]{conclusão}[as]{conclusões} + , brazilian = [a]{conclusão}[as]{conclusões} + , spanish = [la]{conclusión}[las]{conclusiones} + , schinese = {结论}{结论} + , tchinese = {結論}{結論} + , japanese = {結論}{結論} + , russian = {вывод}{выводы} + } + , Crefname = { + , english = {Conclusion}{Conclusions} + , french = [La]{conclusion}[Les]{conclusions} + , ngerman = { {Schlussfolgerung}{Schlussfolgerungen} + , Nominativ = [Die]{Schlussfolgerung}[Die]{Schlussfolgerungen} + , Genitiv = [Der]{Schlussfolgerung}[Der]{Schlussfolgerungen} + , Dativ = [Der]{Schlussfolgerung}[Den]{Schlussfolgerungen} + , Akkusativ = [Die]{Schlussfolgerung}[Die]{Schlussfolgerungen} + } + , italian = [La]{conclusione}[Le]{conclusioni} + , portuguese = [A]{conclusão}[As]{conclusões} + , brazilian = [A]{conclusão}[As]{conclusões} + , spanish = [La]{conclusión}[Las]{conclusiones} + , schinese = {结论}{结论} + , tchinese = {結論}{結論} + , japanese = {結論}{結論} + , russian = {Вывод}{Выводы} + } + } + +\NameTheorem { conjecture } + { + , heading = { + , english = Conjecture + , french = Conjecture + , ngerman = Vermutung + , italian = Congettura + , portuguese = Conjetura + , brazilian = Conjectura + , spanish = Conjetura + , schinese = 猜想 + , tchinese = 猜想 + , japanese = 予想 + , russian = Гипотеза + } + , crefname = { + , english = {conjecture}{conjectures} + , french = [la]{conjecture}[les]{conjectures} + , ngerman = { {Vermutung}{Vermutungen} + , Nominativ = [die]{Vermutung}[die]{Vermutungen} + , Genitiv = [der]{Vermutung}[der]{Vermutungen} + , Dativ = [der]{Vermutung}[den]{Vermutungen} + , Akkusativ = [die]{Vermutung}[die]{Vermutungen} + } + , italian = [la]{congettura}[le]{congetture} + , portuguese = [a]{conjetura}[as]{conjeturas} + , brazilian = [a]{conjectura}[as]{conjecturas} + , spanish = [la]{conjetura}[las]{conjeturas} + , schinese = {猜想}{猜想} + , tchinese = {猜想}{猜想} + , japanese = {予想}{予想} + , russian = {гипотеза}{гипотезы} + } + , Crefname = { + , english = {Conjecture}{Conjectures} + , french = [La]{conjecture}[Les]{conjectures} + , ngerman = { {Vermutung}{Vermutungen} + , Nominativ = [Die]{Vermutung}[Die]{Vermutungen} + , Genitiv = [Der]{Vermutung}[Der]{Vermutungen} + , Dativ = [Der]{Vermutung}[Den]{Vermutungen} + , Akkusativ = [Die]{Vermutung}[Die]{Vermutungen} + } + , italian = [La]{congettura}[Le]{congetture} + , portuguese = [A]{conjetura}[As]{conjeturas} + , brazilian = [A]{conjectura}[As]{conjecturas} + , spanish = [La]{conjetura}[Las]{conjeturas} + , schinese = {猜想}{猜想} + , tchinese = {猜想}{猜想} + , japanese = {予想}{予想} + , russian = {Гипотеза}{Гипотезы} + } + } + +\NameTheorem { construction } + { + , heading = { + , english = Construction + , french = Construction + , ngerman = Konstruktion + , italian = Costruzione + , portuguese = Construção + , brazilian = Construção + , spanish = Construcción + , schinese = 构造 + , tchinese = 構造 + , japanese = 構造 + , russian = Конструкция + } + , crefname = { + , english = {construction}{constructions} + , french = [la]{construction}[les]{constructions} + , ngerman = { {Konstruktion}{Konstruktionen} + , Nominativ = [die]{Konstruktion}[die]{Konstruktionen} + , Genitiv = [der]{Konstruktion}[der]{Konstruktionen} + , Dativ = [der]{Konstruktion}[den]{Konstruktionen} + , Akkusativ = [die]{Konstruktion}[die]{Konstruktionen} + } + , italian = [la]{costruzione}[le]{costruzioni} + , portuguese = [a]{construção}[as]{construções} + , brazilian = [a]{construção}[as]{construções} + , spanish = [la]{construcción}[las]{construcciones} + , schinese = {构造}{构造} + , tchinese = {構造}{構造} + , japanese = {構造}{構造} + , russian = {конструкция}{конструкции} + } + , Crefname = { + , english = {Construction}{Constructions} + , french = [La]{construction}[Les]{constructions} + , ngerman = { {Konstruktion}{Konstruktionen} + , Nominativ = [Die]{Konstruktion}[Die]{Konstruktionen} + , Genitiv = [Der]{Konstruktion}[Der]{Konstruktionen} + , Dativ = [Der]{Konstruktion}[Den]{Konstruktionen} + , Akkusativ = [Die]{Konstruktion}[Die]{Konstruktionen} + } + , italian = [La]{costruzione}[Le]{costruzioni} + , portuguese = [A]{construção}[As]{construções} + , brazilian = [A]{construção}[As]{construções} + , spanish = [La]{construcción}[Las]{construcciones} + , schinese = {构造}{构造} + , tchinese = {構造}{構造} + , japanese = {構造}{構造} + , russian = {Конструкция}{Конструкции} + } + } + +\NameTheorem { convention } + { + , heading = { + , english = Convention + , french = Convention + , ngerman = Konvention + , italian = Convenzione + , portuguese = Convenção + , brazilian = Convenção + , spanish = Convención + , schinese = 约定 + , tchinese = 約定 + , japanese = 慣例 + , russian = Конвенция + } + , crefname = { + , english = {convention}{conventions} + , french = [la]{convention}[les]{conventions} + , ngerman = { {Konvention}{Konventionen} + , Nominativ = [die]{Konvention}[die]{Konventionen} + , Genitiv = [der]{Konvention}[der]{Konventionen} + , Dativ = [der]{Konvention}[den]{Konventionen} + , Akkusativ = [die]{Konvention}[die]{Konventionen} + } + , italian = [la]{convenzione}[le]{convenzioni} + , portuguese = [a]{convenção}[as]{convenções} + , brazilian = [a]{convenção}[as]{convenções} + , spanish = [la]{convención}[las]{convenciones} + , schinese = {约定}{约定} + , tchinese = {約定}{約定} + , japanese = {慣例}{慣例} + , russian = {конвенция}{конвенции} + } + , Crefname = { + , english = {Convention}{Conventions} + , french = [La]{convention}[Les]{conventions} + , ngerman = { {Konvention}{Konventionen} + , Nominativ = [Die]{Konvention}[Die]{Konventionen} + , Genitiv = [Der]{Konvention}[Der]{Konventionen} + , Dativ = [Der]{Konvention}[Den]{Konventionen} + , Akkusativ = [Die]{Konvention}[Die]{Konventionen} + } + , italian = [La]{convenzione}[Le]{convenzioni} + , portuguese = [A]{convenção}[As]{convenções} + , brazilian = [A]{convenção}[As]{convenções} + , spanish = [La]{convención}[Las]{convenciones} + , schinese = {约定}{约定} + , tchinese = {約定}{約定} + , japanese = {慣例}{慣例} + , russian = {Конвенция}{Конвенции} + } + } + +\NameTheorem { corollary } + { + , heading = { + , english = Corollary + , french = Corollaire + , ngerman = Korollar + , italian = Corollario + , portuguese = Corolário + , brazilian = Corolário + , spanish = Corolario + , schinese = 推论 + , tchinese = 推論 + , japanese = 系 + , russian = Следствие + } + , crefname = { + , english = {corollary}{corollaries} + , french = [le]{corollaire}[les]{corollaires} + , ngerman = { {Korollar}{Korollare} + , Nominativ = [das]{Korollar}[die]{Korollare} + , Genitiv = [des]{Korollars}[der]{Korollare} + , Dativ = [dem]{Korollar}[den]{Korollaren} + , Akkusativ = [das]{Korollar}[die]{Korollare} + } + , italian = [il]{corollario}[i]{corollari} + , portuguese = [o]{corolário}[os]{corolários} + , brazilian = [o]{corolário}[os]{corolários} + , spanish = [el]{corolario}[los]{corolarios} + , schinese = {推论}{推论} + , tchinese = {推論}{推論} + , japanese = {系}{系} + , russian = {следствие}{следствия} + } + , Crefname = { + , english = {Corollary}{Corollaries} + , french = [Le]{corollaire}[Les]{corollaires} + , ngerman = { {Korollar}{Korollare} + , Nominativ = [Das]{Korollar}[Die]{Korollare} + , Genitiv = [Des]{Korollars}[Der]{Korollare} + , Dativ = [Dem]{Korollar}[Den]{Korollaren} + , Akkusativ = [Das]{Korollar}[Die]{Korollare} + } + , italian = [Il]{corollario}[I]{corollari} + , portuguese = [O]{corolário}[Os]{corolários} + , brazilian = [O]{corolário}[Os]{corolários} + , spanish = [El]{corolario}[Los]{corolarios} + , schinese = {推论}{推论} + , tchinese = {推論}{推論} + , japanese = {系}{系} + , russian = {Следствие}{Следствия} + } + } + +\NameTheorem { definition } + { + , heading = { + , english = Definition + , french = Définition + , ngerman = Definition + , italian = Definizione + , portuguese = Definição + , brazilian = Definição + , spanish = Definición + , schinese = 定义 + , tchinese = 定義 + , japanese = 定義 + , russian = Определение + } + , crefname = { + , english = {definition}{definitions} + , french = [la]{définition}[les]{définitions} + , ngerman = { {Definition}{Definitionen} + , Nominativ = [die]{Definition}[die]{Definitionen} + , Genitiv = [der]{Definition}[der]{Definitionen} + , Dativ = [der]{Definition}[den]{Definitionen} + , Akkusativ = [die]{Definition}[die]{Definitionen} + } + , italian = [la]{definizione}[le]{definizioni} + , portuguese = [a]{definição}[as]{definições} + , brazilian = [a]{definição}[as]{definições} + , spanish = [la]{definición}[las]{definiciones} + , schinese = {定义}{定义} + , tchinese = {定義}{定義} + , japanese = {定義}{定義} + , russian = {определение}{определения} + } + , Crefname = { + , english = {Definition}{Definitions} + , french = [La]{définition}[Les]{définitions} + , ngerman = { {Definition}{Definitionen} + , Nominativ = [Die]{Definition}[Die]{Definitionen} + , Genitiv = [Der]{Definition}[Der]{Definitionen} + , Dativ = [Der]{Definition}[Den]{Definitionen} + , Akkusativ = [Die]{Definition}[Die]{Definitionen} + } + , italian = [La]{definizione}[Le]{definizioni} + , portuguese = [A]{definição}[As]{definições} + , brazilian = [A]{definição}[As]{definições} + , spanish = [La]{definición}[Las]{definiciones} + , schinese = {定义}{定义} + , tchinese = {定義}{定義} + , japanese = {定義}{定義} + , russian = {Определение}{Определения} + } + } + +\NameTheorem { example } + { + , heading = { + , english = Example + , french = Exemple + , ngerman = Beispiel + , italian = Esempio + , portuguese = Exemplo + , brazilian = Exemplo + , spanish = Ejemplo + , schinese = 例 + , tchinese = 例 + , japanese = 例 + , russian = Пример + } + , crefname = { + , english = {example}{examples} + , french = [l']{exemple}[les]{exemples} + , ngerman = { {Beispiel}{Beispiele} + , Nominativ = [das]{Beispiel}[die]{Beispiele} + , Genitiv = [des]{Beispiels}[der]{Beispiele} + , Dativ = [dem]{Beispiel}[den]{Beispielen} + , Akkusativ = [das]{Beispiel}[die]{Beispiele} + } + , italian = [l']{esempio}[gli]{esempi} + , portuguese = [o]{exemplo}[os]{exemplos} + , brazilian = [o]{exemplo}[os]{exemplos} + , spanish = [el]{ejemplo}[los]{ejemplos} + , schinese = {例}{例} + , tchinese = {例}{例} + , japanese = {例}{例} + , russian = {пример}{примеры} + } + , Crefname = { + , english = {Example}{Examples} + , french = [L']{exemple}[Les]{exemples} + , ngerman = { {Beispiel}{Beispiele} + , Nominativ = [Das]{Beispiel}[Die]{Beispiele} + , Genitiv = [Des]{Beispiels}[Der]{Beispiele} + , Dativ = [Dem]{Beispiel}[Den]{Beispielen} + , Akkusativ = [Das]{Beispiel}[Die]{Beispiele} + } + , italian = [L']{esempio}[Gli]{esempi} + , portuguese = [O]{exemplo}[Os]{exemplos} + , brazilian = [O]{exemplo}[Os]{exemplos} + , spanish = [El]{ejemplo}[Los]{ejemplos} + , schinese = {例}{例} + , tchinese = {例}{例} + , japanese = {例}{例} + , russian = {Пример}{Примеры} + } + } + +\NameTheorem { exercise } + { + , heading = { + , english = Exercise + , french = Exercice + , ngerman = Übung + , italian = Esercizio + , portuguese = Exercício + , brazilian = Exercício + , spanish = Ejercicio + , schinese = 习题 + , tchinese = 習題 + , japanese = 練習 + , russian = Упражнение + } + , crefname = { + , english = {exercise}{exercises} + , french = [l']{exercice}[les]{exercices} + , ngerman = { {Übung}{Übungen} + , Nominativ = [die]{Übung}[die]{Übungen} + , Genitiv = [der]{Übung}[der]{Übungen} + , Dativ = [der]{Übung}[den]{Übungen} + , Akkusativ = [die]{Übung}[die]{Übungen} + } + , italian = [l']{esercizio}[gli]{esercizi} + , portuguese = [o]{exercício}[os]{exercícios} + , brazilian = [o]{exercício}[os]{exercícios} + , spanish = [el]{ejercicio}[los]{ejercicios} + , schinese = {习题}{习题} + , tchinese = {習題}{習題} + , japanese = {練習}{練習} + , russian = {упражнение}{упражнения} + } + , Crefname = { + , english = {Exercise}{Exercises} + , french = [L']{exercice}[Les]{exercices} + , ngerman = { {Übung}{Übungen} + , Nominativ = [Die]{Übung}[Die]{Übungen} + , Genitiv = [Der]{Übung}[Der]{Übungen} + , Dativ = [Der]{Übung}[Den]{Übungen} + , Akkusativ = [Die]{Übung}[Die]{Übungen} + } + , italian = [L']{esercizio}[Gli]{esercizi} + , portuguese = [O]{exercício}[Os]{exercícios} + , brazilian = [O]{exercício}[Os]{exercícios} + , spanish = [El]{ejercicio}[Los]{ejercicios} + , schinese = {习题}{习题} + , tchinese = {習題}{習題} + , japanese = {練習}{練習} + , russian = {Упражнение}{Упражнения} + } + } + +\NameTheorem { fact } + { + , heading = { + , english = Fact + , french = Fait + , ngerman = Tatsache + , italian = Fatto + , portuguese = Facto + , brazilian = Fato + , spanish = Hecho + , schinese = 事实 + , tchinese = 事實 + , japanese = 事実 + , russian = Факт + } + , crefname = { + , english = {fact}{facts} + , french = [le]{fait}[les]{faits} + , ngerman = { {Tatsache}{Tatsachen} + , Nominativ = [die]{Tatsache}[die]{Tatsachen} + , Genitiv = [der]{Tatsache}[der]{Tatsachen} + , Dativ = [der]{Tatsache}[den]{Tatsachen} + , Akkusativ = [die]{Tatsache}[die]{Tatsachen} + } + , italian = [il]{fatto}[i]{fatti} + , portuguese = [o]{facto}[os]{factos} + , brazilian = [o]{fato}[os]{fatos} + , spanish = [el]{hecho}[los]{hechos} + , schinese = {事实}{事实} + , tchinese = {事實}{事實} + , japanese = {事実}{事実} + , russian = {факт}{факты} + } + , Crefname = { + , english = {Fact}{Facts} + , french = [Le]{fait}[Les]{faits} + , ngerman = { {Tatsache}{Tatsachen} + , Nominativ = [Die]{Tatsache}[Die]{Tatsachen} + , Genitiv = [Der]{Tatsache}[Der]{Tatsachen} + , Dativ = [Der]{Tatsache}[Den]{Tatsachen} + , Akkusativ = [Die]{Tatsache}[Die]{Tatsachen} + } + , italian = [Il]{fatto}[I]{fatti} + , portuguese = [O]{facto}[Os]{factos} + , brazilian = [O]{fato}[Os]{fatos} + , spanish = [El]{hecho}[Los]{hechos} + , schinese = {事实}{事实} + , tchinese = {事實}{事實} + , japanese = {事実}{事実} + , russian = {Факт}{Факты} + } + } + +\NameTheorem { hypothesis } + { + , heading = { + , english = Hypothesis + , french = Hypothèse + , ngerman = Hypothese + , italian = Ipotesi + , portuguese = Hipótese + , brazilian = Hipótese + , spanish = Hipótesis + , schinese = 假设 + , tchinese = 假設 + , japanese = 仮設 + , russian = Гипотеза + } + , crefname = { + , english = {hypothesis}{hypotheses} + , french = [l']{hypothèse}[les]{hypothèses} + , ngerman = { {Hypothese}{Hypothesen} + , Nominativ = [die]{Hypothese}[die]{Hypothesen} + , Genitiv = [der]{Hypothese}[der]{Hypothesen} + , Dativ = [der]{Hypothese}[den]{Hypothesen} + , Akkusativ = [die]{Hypothese}[die]{Hypothesen} + } + , italian = [l']{ipotesi}[le]{ipotesi} + , portuguese = [a]{hipótese}[as]{hipóteses} + , brazilian = [a]{hipótese}[as]{hipóteses} + , spanish = [la]{hipótesis}[las]{hipótesis} + , schinese = {假设}{假设} + , tchinese = {假設}{假設} + , japanese = {仮設}{仮設} + , russian = {гипотеза}{гипотезы} + } + , Crefname = { + , english = {Hypothesis}{Hypotheses} + , french = [L']{hypothèse}[Les]{hypothèses} + , ngerman = { {Hypothese}{Hypothesen} + , Nominativ = [Die]{Hypothese}[Die]{Hypothesen} + , Genitiv = [Der]{Hypothese}[Der]{Hypothesen} + , Dativ = [Der]{Hypothese}[Den]{Hypothesen} + , Akkusativ = [Die]{Hypothese}[Die]{Hypothesen} + } + , italian = [L']{ipotesi}[Le]{ipotesi} + , portuguese = [A]{hipótese}[As]{hipóteses} + , brazilian = [A]{hipótese}[As]{hipóteses} + , spanish = [La]{hipótesis}[Las]{hipótesis} + , schinese = {假设}{假设} + , tchinese = {假設}{假設} + , japanese = {仮設}{仮設} + , russian = {Гипотеза}{Гипотезы} + } + } + +\NameTheorem { lemma } + { + , heading = { + , english = Lemma + , french = Lemme + , ngerman = Lemma + , italian = Lemma + , portuguese = Lema + , brazilian = Lema + , spanish = Lema + , schinese = 引理 + , tchinese = 引理 + , japanese = 補題 + , russian = Лемма + } + , crefname = { + , english = {lemma}{Lemmas} + , french = [le]{lemme}[les]{lemmes} + , ngerman = { {Lemma}{Lemmata} + , Nominativ = [das]{Lemma}[die]{Lemmata} + , Genitiv = [des]{Lemmas}[der]{Lemmata} + , Dativ = [dem]{Lemma}[den]{Lemmata} + , Akkusativ = [das]{Lemma}[die]{Lemmata} + } + , italian = [il]{lemma}[i]{lemmi} + , portuguese = [o]{lema}[os]{lemas} + , brazilian = [o]{lema}[os]{lemas} + , spanish = [el]{lema}[las]{lemas} + , schinese = {引理}{引理} + , tchinese = {引理}{引理} + , japanese = {補題}{補題} + , russian = {лемма}{леммы} + } + , Crefname = { + , english = {Lemma}{Lemmas} + , french = [Le]{lemme}[Les]{lemmes} + , ngerman = { {Lemma}{Lemmata} + , Nominativ = [Das]{Lemma}[Die]{Lemmata} + , Genitiv = [Des]{Lemmas}[Der]{Lemmata} + , Dativ = [Dem]{Lemma}[Den]{Lemmata} + , Akkusativ = [Das]{Lemma}[Die]{Lemmata} + } + , italian = [Il]{lemma}[I]{lemmi} + , portuguese = [O]{lema}[Os]{lemas} + , brazilian = [O]{lema}[Os]{lemas} + , spanish = [el]{lema}[las]{lemas} + , schinese = {引理}{引理} + , tchinese = {引理}{引理} + , japanese = {補題}{補題} + , russian = {Лемма}{Леммы} + } + } + +\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 = { + , english = Notation + , french = Notation + , ngerman = Notation + , italian = Notazione + , portuguese = Notação + , brazilian = Notação + , spanish = Notación + , schinese = 记号 + , tchinese = 記號 + , japanese = 記法 + , russian = Нотация + } + , crefname = { + , english = {notation}{notations} + , french = [la]{notation}[les]{notations} + , ngerman = { {Notation}{Notationen} + , Nominativ = [die]{Notation}[die]{Notationen} + , Genitiv = [der]{Notation}[der]{Notationen} + , Dativ = [der]{Notation}[den]{Notationen} + , Akkusativ = [die]{Notation}[die]{Notationen} + } + , italian = [la]{notazione}[le]{notazioni} + , portuguese = [a]{notação}[as]{notações} + , brazilian = [a]{notação}[as]{notações} + , spanish = [la]{notación}[las]{notaciones} + , schinese = {记号}{记号} + , tchinese = {記號}{記號} + , japanese = {記法}{記法} + , russian = {нотация}{нотации} + } + , Crefname = { + , english = {Notation}{Notations} + , french = [La]{notation}[Les]{notations} + , ngerman = { {Notation}{Notationen} + , Nominativ = [Die]{Notation}[Die]{Notationen} + , Genitiv = [Der]{Notation}[Der]{Notationen} + , Dativ = [Der]{Notation}[Den]{Notationen} + , Akkusativ = [Die]{Notation}[Die]{Notationen} + } + , italian = [La]{notazione}[Le]{notazioni} + , portuguese = [A]{notação}[As]{notações} + , brazilian = [A]{notação}[As]{notações} + , spanish = [La]{notación}[Las]{notaciones} + , schinese = {记号}{记号} + , tchinese = {記號}{記號} + , japanese = {記法}{記法} + , russian = {Нотация}{Нотации} + } + } + +\NameTheorem { observation } + { + , heading = { + , english = Observation + , french = Observation + , ngerman = Beobachtung + , italian = Osservazione + , portuguese = Observação + , brazilian = Observação + , spanish = Observación + , schinese = 观察 + , tchinese = 觀察 + , japanese = 観察 + , russian = Наблюдение + } + , crefname = { + , english = {observation}{observations} + , french = [la]{observation}[les]{observations} + , ngerman = { {Beobachtung}{Beobachtungen} + , Nominativ = [die]{Beobachtung}[die]{Beobachtungen} + , Genitiv = [der]{Beobachtung}[der]{Beobachtungen} + , Dativ = [der]{Beobachtung}[den]{Beobachtungen} + , Akkusativ = [die]{Beobachtung}[die]{Beobachtungen} + } + , italian = [l']{osservazione}[le]{osservazioni} + , portuguese = [a]{observação}[as]{observações} + , brazilian = [a]{observação}[as]{observações} + , spanish = [la]{observación}[las]{observaciones} + , schinese = {观察}{观察} + , tchinese = {觀察}{觀察} + , japanese = {観察}{観察} + , russian = {наблюдение}{наблюдения} + } + , Crefname = { + , english = {Observation}{Observations} + , french = [La]{observation}[Les]{observations} + , ngerman = { {Beobachtung}{Beobachtungen} + , Nominativ = [Die]{Beobachtung}[Die]{Beobachtungen} + , Genitiv = [Der]{Beobachtung}[Der]{Beobachtungen} + , Dativ = [Der]{Beobachtung}[Den]{Beobachtungen} + , Akkusativ = [Die]{Beobachtung}[Die]{Beobachtungen} + } + , italian = [L']{osservazione}[Le]{osservazioni} + , portuguese = [A]{observação}[As]{observações} + , brazilian = [A]{observação}[As]{observações} + , spanish = [La]{observación}[Las]{observaciones} + , schinese = {观察}{观察} + , tchinese = {觀察}{觀察} + , japanese = {観察}{観察} + , russian = {Наблюдение}{Наблюдения} + } + } + +\NameTheorem { postulate } + { + , heading = { + , english = Postulate + , french = Postulat + , ngerman = Postulat + , italian = Postulato + , portuguese = Postulado + , brazilian = Postulado + , spanish = Postulado + , schinese = 公设 + , tchinese = 公設 + , japanese = 公準 + , russian = Постулат + } + , crefname = { + , english = {postulate}{postulates} + , french = [le]{postulat}[les]{postulats} + , ngerman = { {Postulat}{Postulate} + , Nominativ = [das]{Postulat}[die]{Postulate} + , Genitiv = [des]{Postulates}[der]{Postulate} + , Dativ = [dem]{Postulat}[den]{Postulaten} + , Akkusativ = [das]{Postulat}[die]{Postulate} + } + , italian = [il]{postulato}[i]{postulati} + , portuguese = [o]{postulado}[os]{postulados} + , brazilian = [o]{postulado}[os]{postulados} + , spanish = [el]{postulado}[los]{postulados} + , schinese = {公设}{公设} + , tchinese = {公設}{公設} + , japanese = {公準}{公準} + , russian = {постулат}{постулаты} + } + , Crefname = { + , english = {Postulate}{Postulates} + , french = [Le]{postulat}[Les]{postulats} + , ngerman = { {Postulat}{Postulate} + , Nominativ = [Das]{Postulat}[Die]{Postulate} + , Genitiv = [Des]{Postulates}[Der]{Postulate} + , Dativ = [Dem]{Postulat}[Den]{Postulaten} + , Akkusativ = [Das]{Postulat}[Die]{Postulate} + } + , italian = [Il]{postulato}[I]{postulati} + , portuguese = [O]{postulado}[Os]{postulados} + , brazilian = [O]{postulado}[Os]{postulados} + , spanish = [El]{postulado}[Los]{postulados} + , schinese = {公设}{公设} + , tchinese = {公設}{公設} + , japanese = {公準}{公準} + , russian = {Постулат}{Постулаты} + } + } + +\NameTheorem { problem } + { + , heading = { + , english = Problem + , french = Problème + , ngerman = Problem + , italian = Problema + , portuguese = Problema + , brazilian = Problema + , spanish = Problema + , schinese = 问题 + , tchinese = 問題 + , japanese = 問題 + , russian = Проблема + } + , crefname = { + , english = {problem}{problems} + , french = [le]{problème}[les]{problèmes} + , ngerman = { {Problem}{Probleme} + , Nominativ = [das]{Problem}[die]{Probleme} + , Genitiv = [des]{Problems}[der]{Probleme} + , Dativ = [dem]{Problem}[den]{Problemen} + , Akkusativ = [das]{Problem}[die]{Probleme} + } + , italian = [il]{problema}[i]{problemi} + , portuguese = [o]{problema}[os]{problemas} + , brazilian = [o]{problema}[os]{problemas} + , spanish = [el]{problema}[los]{problemas} + , schinese = {问题}{问题} + , tchinese = {問題}{問題} + , japanese = {問題}{問題} + , russian = {проблема}{проблемы} + } + , Crefname = { + , english = {Problem}{Problems} + , french = [Le]{problème}[Les]{problèmes} + , ngerman = { {Problem}{Probleme} + , Nominativ = [Das]{Problem}[Die]{Probleme} + , Genitiv = [Des]{Problems}[Der]{Probleme} + , Dativ = [Dem]{Problem}[Den]{Problemen} + , Akkusativ = [Das]{Problem}[Die]{Probleme} + } + , italian = [Il]{problema}[I]{problemi} + , portuguese = [O]{problema}[Os]{problemas} + , brazilian = [O]{problema}[Os]{problemas} + , spanish = [El]{problema}[Los]{problemas} + , schinese = {问题}{问题} + , tchinese = {問題}{問題} + , japanese = {問題}{問題} + , russian = {Проблема}{Проблемы} + } + } + +\NameTheorem { property } + { + , heading = { + , english = Property + , french = Propriété + , ngerman = Eigenschaft + , italian = Proprietà + , portuguese = Propriedade + , brazilian = Propriedade + , spanish = Propiedad + , schinese = 性质 + , tchinese = 性質 + , japanese = 性質 + , russian = Имущество + } + , crefname = { + , english = {property}{properties} + , french = [la]{propriété}[les]{propriétés} + , ngerman = { {Eigenschaft}{Eigenschaften} + , Nominativ = [die]{Eigenschaft}[die]{Eigenschaften} + , Genitiv = [der]{Eigenschaft}[der]{Eigenschaften} + , Dativ = [der]{Eigenschaft}[den]{Eigenschaften} + , Akkusativ = [die]{Eigenschaft}[die]{Eigenschaften} + } + , italian = [la]{proprietà}[le]{proprietà} + , portuguese = [a]{propriedade}[as]{propriedades} + , brazilian = [a]{propriedade}[as]{propriedades} + , spanish = [la]{propiedad}[las]{propiedades} + , schinese = {性质}{性质} + , tchinese = {性質}{性質} + , japanese = {性質}{性質} + , russian = {имущество}{имущества} + } + , Crefname = { + , english = {Property}{Properties} + , french = [La]{propriété}[Les]{propriétés} + , ngerman = { {Eigenschaft}{Eigenschaften} + , Nominativ = [Die]{Eigenschaft}[Die]{Eigenschaften} + , Genitiv = [Der]{Eigenschaft}[Der]{Eigenschaften} + , Dativ = [Der]{Eigenschaft}[Den]{Eigenschaften} + , Akkusativ = [Die]{Eigenschaft}[Die]{Eigenschaften} + } + , italian = [La]{proprietà}[Le]{proprietà} + , portuguese = [A]{propriedade}[As]{propriedades} + , brazilian = [A]{propriedade}[As]{propriedades} + , spanish = [La]{propiedad}[Las]{propiedades} + , schinese = {性质}{性质} + , tchinese = {性質}{性質} + , japanese = {性質}{性質} + , russian = {Имущество}{Имущества} + } + } + +\NameTheorem { proposition } + { + , heading = { + , english = Proposition + , french = Proposition + , ngerman = Proposition + , italian = Proposizione + , portuguese = Proposição + , brazilian = Proposição + , spanish = Proposición + , schinese = 命题 + , tchinese = 命題 + , japanese = 命題 + , russian = Предложение + } + , crefname = { + , english = {proposition}{propositions} + , french = [la]{proposition}[les]{propositions} + , ngerman = { {Proposition}{Propositionen} + , Nominativ = [die]{Proposition}[die]{Propositionen} + , Genitiv = [der]{Proposition}[der]{Propositionen} + , Dativ = [der]{Proposition}[den]{Propositionen} + , Akkusativ = [die]{Proposition}[die]{Propositionen} + } + , italian = [la]{proposizione}[le]{proposte} + , portuguese = [a]{proposição}[as]{proposições} + , brazilian = [a]{proposição}[as]{proposições} + , spanish = [la]{proposición}[las]{proposiciones} + , schinese = {命题}{命题} + , tchinese = {命題}{命題} + , japanese = {命題}{命題} + , russian = {предложение}{предложения} + } + , Crefname = { + , english = {Proposition}{Propositions} + , french = [La]{proposition}[Les]{propositions} + , ngerman = { {Proposition}{Propositionen} + , Nominativ = [Die]{Proposition}[Die]{Propositionen} + , Genitiv = [Der]{Proposition}[Der]{Propositionen} + , Dativ = [Der]{Proposition}[Den]{Propositionen} + , Akkusativ = [Die]{Proposition}[Die]{Propositionen} + } + , italian = [La]{proposizione}[Le]{proposte} + , portuguese = [A]{proposição}[As]{proposições} + , brazilian = [A]{proposição}[As]{proposições} + , spanish = [La]{proposición}[Las]{proposiciones} + , schinese = {命题}{命题} + , tchinese = {命題}{命題} + , japanese = {命題}{命題} + , russian = {Предложение}{Предложения} + } + } + +\NameTheorem { question } + { + , heading = { + , english = Question + , french = Question + , ngerman = Frage + , italian = Domanda + , portuguese = Pergunta + , brazilian = Pergunta + , spanish = Pregunta + , schinese = 问题 + , tchinese = 問題 + , japanese = 問題 + , russian = Вопрос + } + , crefname = { + , english = {question}{questions} + , french = [la]{question}[les]{questions} + , ngerman = { {Frage}{Fragen} + , Nominativ = [die]{Frage}[die]{Fragen} + , Genitiv = [der]{Frage}[der]{Fragen} + , Dativ = [der]{Frage}[den]{Fragen} + , Akkusativ = [die]{Frage}[die]{Fragen} + } + , italian = [la]{domanda}[le]{domande} + , portuguese = [a]{pergunta}[as]{perguntas} + , brazilian = [a]{pergunta}[as]{perguntas} + , spanish = [la]{pregunta}[las]{preguntas} + , schinese = {问题}{问题} + , tchinese = {問題}{問題} + , japanese = {問題}{問題} + , russian = {вопрос}{вопросы} + } + , Crefname = { + , english = {Question}{Questions} + , french = [La]{question}[Les]{questions} + , ngerman = { {Frage}{Fragen} + , Nominativ = [Die]{Frage}[Die]{Fragen} + , Genitiv = [Der]{Frage}[Der]{Fragen} + , Dativ = [Der]{Frage}[Den]{Fragen} + , Akkusativ = [Die]{Frage}[Die]{Fragen} + } + , italian = [La]{domanda}[Le]{domande} + , portuguese = [A]{pergunta}[As]{perguntas} + , brazilian = [A]{pergunta}[As]{perguntas} + , spanish = [La]{pregunta}[Las]{preguntas} + , schinese = {问题}{问题} + , tchinese = {問題}{問題} + , japanese = {問題}{問題} + , russian = {Вопрос}{Вопросы} + } + } + +\NameTheorem { recall } + { + , heading = { + , english = Recall + , french = Rappel + , ngerman = Erinnerung + , italian = Richiamo + , portuguese = Recordação + , brazilian = Recordação + , spanish = Recuerdo + , schinese = 回顾 + , tchinese = 回顧 + , japanese = 回顧 + , russian = Напоминание + } + , crefname = { + , english = {recall}{recalls} + , french = [le]{rappel}[les]{rappels} + , ngerman = { {Erinnerung}{Erinnerungen} + , Nominativ = [die]{Erinnerung}[die]{Erinnerungen} + , Genitiv = [der]{Erinnerung}[der]{Erinnerungen} + , Dativ = [der]{Erinnerung}[den]{Erinnerungen} + , Akkusativ = [die]{Erinnerung}[die]{Erinnerungen} + } + , italian = [il]{richiamo}[i]{richiami} + , portuguese = [a]{recordação}[as]{recordações} + , brazilian = [a]{recordação}[as]{recordações} + , spanish = [el]{recuerdo}[los]{recuerdos} + , schinese = {回顾}{回顾} + , tchinese = {回顧}{回顧} + , japanese = {回顧}{回顧} + , russian = {напоминание}{напоминания} + } + , Crefname = { + , english = {Recall}{Recalls} + , french = [Le]{rappel}[Les]{rappels} + , ngerman = { {Erinnerung}{Erinnerungen} + , Nominativ = [Die]{Erinnerung}[Die]{Erinnerungen} + , Genitiv = [Der]{Erinnerung}[Der]{Erinnerungen} + , Dativ = [Der]{Erinnerung}[Den]{Erinnerungen} + , Akkusativ = [Die]{Erinnerung}[Die]{Erinnerungen} + } + , italian = [Il]{richiamo}[I]{richiami} + , portuguese = [A]{recordação}[As]{recordações} + , brazilian = [A]{recordação}[As]{recordações} + , spanish = [El]{recuerdo}[Los]{recuerdos} + , schinese = {回顾}{回顾} + , tchinese = {回顧}{回顧} + , japanese = {回顧}{回顧} + , russian = {Напоминание}{Напоминания} + } + } + +\NameTheorem { remark } + { + , heading = { + , english = Remark + , french = Remarque + , ngerman = Bemerkung + , italian = Commento + , portuguese = Comentário + , brazilian = Comentário + , spanish = Comentario + , schinese = 备注 + , tchinese = 備註 + , japanese = 注釈 + , russian = Замечание + } + , crefname = { + , english = {remark}{remarks} + , french = [la]{remarque}[les]{remarques} + , ngerman = { {Bemerkung}{Bemerkungen} + , Nominativ = [die]{Bemerkung}[die]{Bemerkungen} + , Genitiv = [der]{Bemerkung}[der]{Bemerkungen} + , Dativ = [der]{Bemerkung}[den]{Bemerkungen} + , Akkusativ = [die]{Bemerkung}[die]{Bemerkungen} + } + , 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 = {Remark}{Remarks} + , french = [La]{remarque}[Les]{remarques} + , ngerman = { {Bemerkung}{Bemerkungen} + , Nominativ = [Die]{Bemerkung}[Die]{Bemerkungen} + , Genitiv = [Der]{Bemerkung}[Der]{Bemerkungen} + , Dativ = [Der]{Bemerkung}[Den]{Bemerkungen} + , Akkusativ = [Die]{Bemerkung}[Die]{Bemerkungen} + } + , 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 { theorem } + { + , heading = { + , english = Theorem + , french = Théorème + , ngerman = Satz + , italian = Teorema + , portuguese = Teorema + , brazilian = Teorema + , spanish = Teorema + , schinese = 定理 + , tchinese = 定理 + , japanese = 定理 + , russian = Теорема + } + , crefname = { + , english = {theorem}{theorems} + , french = [le]{théorème}[les]{théorèmes} + , ngerman = { {Satz}{Sätze} + , Nominativ = [der]{Satz}[die]{Sätze} + , Genitiv = [des]{Satzes}[der]{Sätze} + , Dativ = [dem]{Satz}[den]{Sätzen} + , Akkusativ = [den]{Satz}[die]{Sätze} + } + , italian = [il]{teorema}[i]{teoremi} + , portuguese = [o]{teorema}[os]{teoremas} + , brazilian = [o]{teorema}[os]{teoremas} + , spanish = [el]{teorema}[los]{teoremas} + , schinese = {定理}{定理} + , tchinese = {定理}{定理} + , japanese = {定理}{定理} + , russian = {теорема}{теоремы} + } + , Crefname = { + , english = {Theorem}{Theorems} + , french = [Le]{théorème}[Les]{théorèmes} + , ngerman = { {Satz}{Sätze} + , Nominativ = [Der]{Satz}[Die]{Sätze} + , Genitiv = [Des]{Satzes}[Der]{Sätze} + , Dativ = [Dem]{Satz}[Den]{Sätzen} + , Akkusativ = [Den]{Satz}[Die]{Sätze} + } + , italian = [Il]{teorema}[I]{teoremi} + , portuguese = [O]{teorema}[Os]{teoremas} + , brazilian = [O]{teorema}[Os]{teoremas} + , spanish = [El]{teorema}[Los]{teoremas} + , schinese = {定理}{定理} + , tchinese = {定理}{定理} + , japanese = {定理}{定理} + , russian = {Теорема}{Теоремы} + } + } + +\NameTheorem { definition-corollary } { combined = { definition ; corollary } } +\NameTheorem { definition-proposition } { combined = { definition ; proposition } } +\NameTheorem { definition-theorem } { combined = { definition ; theorem } } + +\NameTheorem { corollary-definition } { combined = { corollary ; definition } } +\NameTheorem { proposition-definition } { combined = { proposition ; definition } } +\NameTheorem { theorem-definition } { combined = { theorem ; definition } } 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/create-theorem-doc.pdf deleted file mode 100644 index 6534126f29..0000000000 Binary files a/macros/latex/contrib/create-theorem/create-theorem-doc.pdf and /dev/null differ diff --git a/macros/latex/contrib/create-theorem/create-theorem-doc.tex b/macros/latex/contrib/create-theorem/create-theorem-doc.tex deleted file mode 100644 index 888767dad7..0000000000 --- a/macros/latex/contrib/create-theorem/create-theorem-doc.tex +++ /dev/null @@ -1,742 +0,0 @@ -%! TEX program = xelatex -\documentclass[classical]{einfart} - -\usepackage{ProjLib} - -%%================================ -%% For typesetting code -%%================================ -\usepackage{listings} -\usepackage{xcolor} -\usepackage{setspace} -\definecolor{code-main}{RGB}{70,130,180} -\definecolor{code-expl3}{RGB}{240,50,60} -\definecolor{code-option}{RGB}{40,110,20} -\definecolor{code-keys}{RGB}{100,130,150} -\definecolor{code-comment}{RGB}{20,120,80} -\definecolor{code-background}{gray}{0.99} -\lstset{ - language = [LaTeX]TeX, - basicstyle = \ttfamily, - keywordstyle = \color{code-main}, - commentstyle = \color{code-comment}, - showstringspaces = false, - breaklines = true, - frame = lines, - backgroundcolor = \color{code-background}, - flexiblecolumns = true, - escapeinside = {(*}{*)}, - alsoletter = {_,:}, - % numbers = left, - % firstnumber = last, - numberstyle = \scriptsize\ttfamily, - stepnumber = 1, - numbersep = 5pt, -} -\newcommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$} -\lstset{% LaTeX2 commands - classoffset = 0, - texcsstyle =* \color{code-main}, - moretexcs = - { - ExplSyntaxOn,ExplSyntaxOff, - NewDocumentCommand,NewDocumentEnvironment, - cref,crefname, - Cref,Crefname, - crefformat, - crefthe,crefthename, - Crefthe,Crefthename, - crefthevariantname,Crefthevariantname, - crefthemark, - selectlanguage, - languagename, - theoremstyle, - proofname, - NameTheorem, - NameTheorems, - CreateTheorem, - SetTheorem, - SetTheoremBinding, - } -} -\lstset{% LaTeX3 commands - classoffset = 1, - texcsstyle =* \color{code-expl3}, - moretexcs = - { - tl_new:N, - tl_set:Nn, - cs_undefine:c, - } -} -\lstnewenvironment{code}{\setstretch{1.05}\LocallyStopLineNumbers}{\ResumeLineNumbers\vspace{-.3\baselineskip}\vspace{-.5\parskip}} -\lstnewenvironment{code*}{\setstretch{1.05}\lstset{numbers=left}\LocallyStopLineNumbers}{\ResumeLineNumbers\vspace{-.3\baselineskip}\vspace{-.5\parskip}} - -\newcommand{\packageoption}[1]{\texttt{\textcolor{code-option}{#1}}} -\newcommand{\commandoption}[1]{\texttt{\textcolor{code-keys}{#1}}} - -%%================================ -%% tip -%%================================ -\usepackage[many]{tcolorbox} -\newenvironment{tip}[1][Tip] - {% - \LocallyStopLineNumbers% - \begin{tcolorbox}[breakable, - enhanced, - width = \textwidth, - colback = paper, colbacktitle = paper, - colframe = gray!50, boxrule=0.2mm, - coltitle = black, - fonttitle = \sffamily, - attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=.5cm}, - boxed title style = {boxrule=0pt, colframe=paper}, - before skip = 3mm, - after skip = 3mm, - top = 2.5mm, - bottom = 1.5mm, - title={\scshape\sffamily #1}]% - } - {% - \end{tcolorbox}% - \ResumeLineNumbers% - } - - -\newcommand{\createtheorempackage}{\textsf{create-theorem}} - -\begin{document} - -\def\PackageVersion{2024/02/20} -\def\PackageSubVersion{} - -\title{\createtheorempackage{}\\\smallskip\itshape Initializing and configuring theorem-like environments, with multilingual support} -\author{Jinwen XU} -\thanks{Corresponding to: \texttt{\createtheorempackage{} \PackageVersion\PackageSubVersion}} -\date{\TheDate{\PackageVersion}[only-year-month], in Paris} - -\maketitle - -\begin{abstract} - \raggedleft - The package \createtheorempackage{} provides commands for naming, initializing and configuring theorem-like environments. All of these commands have key-value based interface and \\are especially useful in multi-language documents, allowing the easy declaration of \\theorem-like environments that can automatically adapt to the language settings. -\end{abstract} - -\vspace{-.5\baselineskip} - -% \section*{Before everything} - -% Make sure that the package \textsf{crefthe} is correctly installed. If you are using TeX Live 2022 or newer, or the newest version of MikTeX, then nothing needs to be worried. - -\section{How to load it} - -First, you need a backend to provide the command \lstinline|\newtheorem| with the usual behaviour, for example, \textsf{amsthm} or \textsf{ntheorem}. After that, you can simply load the current package with: - -\begin{code} -\usepackage[(*\meta{options}*)]{create-theorem} -\end{code} - -\begin{tip}[Attention] - Since \createtheorempackage{} uses \textsf{cleveref} internally, it should usually be placed near the last of your preamble --- notably, it needs to be loaded after \textsf{varioref} and \textsf{hyperref}. -\end{tip} - -\medskip -It has the following options: -\begin{itemize}[label=,leftmargin=1.25em,itemindent=-1.25em] - % \item \packageoption{draft} or \packageoption{fast} - % \begin{itemize} - % \item Fast mode. The functionality will be appropriately reduced to get faster compilation speed, recommended to use during the writing stage. - % \end{itemize} - \item \packageoption{name as context} - \begin{itemize} - \item When referencing, the resulted names shall correspond to the current context of your text. For example, the names shall be displayed in English when you are referencing a theorem-like environment in an English context, no matter in which linguistic context the target environment appeared. - \item This is the default behavior. - \item Synonymous names: \packageoption{name-as-context} \,$|$\, \packageoption{nameascontext} \,$|$\, \packageoption{regionalref} - \end{itemize} - \item \packageoption{name as is} - \begin{itemize} - \item When referencing, the resulted names shall correspond to the contexts in which the target environments appeared. For example, if the target environment is written in an English context, then its name shall always be displayed in English when referencing, regardless of the current linguistic context. - \item Synonymous names: \packageoption{name-as-is} \,$|$\, \packageoption{nameasis} \,$|$\, \packageoption{originalref} - \end{itemize} - \item \packageoption{name in link} - \begin{itemize} - \item Include the names in the hyperlinks when referencing. - \item Synonymous names: \packageoption{name-in-link} \,$|$\, \packageoption{nameinlink} - \end{itemize} - \item \packageoption{no preset names} - \begin{itemize} - \item Disable the preset names. Use this option if you want to define you own name set. - \item Synonymous names: \packageoption{no-preset-names} \,$|$\, \packageoption{nopresetnames} - \end{itemize} -\end{itemize} - -\clearpage - -\section{How to use it} - -\subsection[Naming theorem-like environments]{Naming theorem-like environments with \texttt{\textcolor{code-main}{\textbackslash NameTheorem}}} - -The syntax of \lstinline|\NameTheorem| is as follows: -\begin{code} -\NameTheorem{(*\meta{name of environment}*)}{(*\meta{key-value configuration}*)} -\end{code} - -Supported keys are: -\vspace{-.2\baselineskip} -\begin{itemize}[label=,leftmargin=1.25em,itemindent=-1.25em] - \item \commandoption{heading}\lstinline| = |\meta{configuration} - \begin{itemize} - \item The heading of the environment, where \meta{configuration} can be: - \begin{itemize} - \item a single string in monolingual documents: \commandoption{heading}\lstinline| = |\meta{string}; - \item a key-value name list in multilingual documents: -\begin{code} -(*\commandoption{heading}*) = { - (*\meta{language name}*) = (*\meta{string}*) - } -\end{code} - \end{itemize} - \end{itemize} - \item \commandoption{heading style}\lstinline| = |\meta{style} - \begin{itemize} - \item The style of the heading, you can specify the font, text style, color, etc. - \item Synonymous names: \commandoption{heading-style} \,$|$\, \commandoption{headingstyle} - \end{itemize} - \item \commandoption{crefname}\lstinline| = |\meta{configuration} - \begin{itemize} - \item The name for \lstinline|\cref| the environment, where \meta{configuration} can be: - \begin{itemize} - \item a single string in monolingual documents: \commandoption{crefname}\lstinline| = {name}{names}|; - \item a key-value name list in multilingual documents: -\begin{code} -(*\commandoption{crefname}*) = { - (*\meta{language name}*) = {(*\meta{singular name}*)}{(*\meta{plural name}*)} - } -\end{code} - \end{itemize} - \item Also supports the syntax of \lstinline|\crefthename|, thus you can assign names of the form: -\begin{code} -[(*\meta{singular definite article}*)]{(*\meta{singular name}*)}[(*\meta{plural definite article}*)]{(*\meta{plural name}*)} -\end{code} - This would be useful for languages like French, Italian, Spanish, etc. - \item Also supports the syntax of \lstinline|\crefthevariantname|, thus you can assign different set of names for different variants/declensions (the first line in the configuration is the default name set, which is used in case no variants is specified when referencing): -\begin{code} -(*\commandoption{crefname}*) = { - (*\meta{language name}*) = { [...]{...}[...]{...} - , (*\meta{variant 1}*) = [...]{...}[...]{...} - , (*\meta{variant 2}*) = [...]{...}[...]{...} - ... - } - } -\end{code} - This would be useful for languages like German, Russian, etc. - \end{itemize} - \item \commandoption{crefname style}\lstinline| = |\meta{style} - \begin{itemize} - \item The style of \textquote{crefname} when referencing, you may specify the font, text style, color, etc. - \item Synonymous names: \commandoption{crefname-style} \,$|$\, \commandoption{crefnamestyle} - \end{itemize} - \item \commandoption{Crefname}\lstinline| = |\meta{configuration} - \begin{itemize} - \item The name for \lstinline|\Cref| the environment, its syntax is the same as that of \commandoption{crefname}. - \item Also supports the syntax of \lstinline|\Crefthename| and \lstinline|\Crefthevariantname|. - \end{itemize} - \item \commandoption{Crefname style}\lstinline| = |\meta{style} - \begin{itemize} - \item The style of \textquote{Crefname} when referencing, you may specify the font, text style, color, etc. - \item Synonymous names: \commandoption{Crefname-style} \,$|$\, \commandoption{Crefnamestyle} - \end{itemize} - \item \commandoption{numbering style}\lstinline| = |\meta{style} - \begin{itemize} - \item The style of numbering in the reference, you can specify the font, text style, color, etc. - \item Synonymous names: \commandoption{numbering-style} \,$|$\, \commandoption{numberingstyle} - \end{itemize} - \item \commandoption{use name}\lstinline| = |\meta{list of existed environment(s) separated with semicolon \textquote{ ; }} - \begin{itemize} - \item Use the name(s) and style(s) of the given environment(s). If there are multiple ones specified, the result would be a string combining the names, separated with \textquote{\texttt{-}}. - \item The definite articles (if exist) are chosen to be that of the last given environment. - \item Synonymous names: \commandoption{combined} \,$|$\, \commandoption{use-name} \,$|$\, \commandoption{usename} - \end{itemize} -\end{itemize} - -\vspace{-.3\baselineskip} -\begin{tip} - You can also define the names within \lstinline|\CreateTheorem| while initializing the theorem-like environments. \lstinline|\NameTheorem| is especially useful for package or class authors who wish to preset suitable names (with styles) in their packages or classes. -\end{tip} - - -\subsection[Initializing theorem-like environments]{Initializing theorem-like environments with \texttt{\textcolor{code-main}{\textbackslash CreateTheorem}}} - -The syntax of \lstinline|\CreateTheorem| is as follows: -\begin{code} -\CreateTheorem{(*\meta{list of the name of environments}*)}{(*\meta{key-value configuration}*)} -\end{code} - -\begin{tip}[Attention] - When the \meta{key-value configuration} is empty, don't forget to include the second pair of curly brackets, for example, \lstinline|\CreateTheorem{theorem}{}|. -\end{tip} - -Supported keys are: -\vspace{-.2\baselineskip} -\begin{itemize}[label=,leftmargin=1.25em,itemindent=-1.25em] - \item \commandoption{name}\lstinline| = |\meta{configuration} \quad or \quad \commandoption{name style}\lstinline| = |\meta{configuration} - \begin{itemize} - \item Setting the names. Same as \lstinline|\NameTheorem{|\meta{name of environment}\lstinline|}{|\meta{configuration}\lstinline|}|. - \item Synonymous names: \commandoption{name-style} \,$|$\, \commandoption{namestyle} - \end{itemize} - \item \commandoption{use name}\lstinline| = |\meta{list of existed environment(s) separated with semicolon \textquote{ ; }} - \begin{itemize} - \item Using existed name(s). Same as in \lstinline|\NameTheorem|. - \item Synonymous names: \commandoption{combined} \,$|$\, \commandoption{use-name} \,$|$\, \commandoption{usename} - \end{itemize} - \item \commandoption{style}\lstinline| = |\meta{theorem style} - \begin{itemize} - \item Specifying the \lstinline|\theoremstyle| for the current environment. - \item Synonymous names: \commandoption{apply style} \,$|$\, \commandoption{apply-style} \,$|$\, \commandoption{applystyle} - \end{itemize} - \item \commandoption{qed} or \commandoption{qed}\lstinline| = |\meta{Q.E.D. symbol} - \begin{itemize} - \item Specifying the Q.E.D. symbol for the current environment. - \item Note that the Q.E.D. symbol has already been put in math mode. If you want regular text such as \textquote{Q.E.D.}, you need to write \commandoption{qed}\lstinline| = \mathrm{Q.E.D.}|. - \item If you are using \textsf{ntheorem} as the backend, then you need to load it with option \packageoption{thmmarks}. - \item Synonymous names: \commandoption{qed symbol} \,$|$\, \commandoption{qed-symbol} \,$|$\, \commandoption{qedsymbol} - \end{itemize} -\pagebreak - \item \commandoption{parent counter}\lstinline| = |\meta{parent counter} - \begin{itemize} - \item Specifying the \meta{parent counter} for the current environment, \emph{i.e.}, numbering will restart whenever that sectional level is encountered. - \item Synonymous names: \commandoption{parent-counter} \,$|$\, \commandoption{parentcounter} \,$|$\, \\\phantom{Synonymous names: }\commandoption{number within} \,$|$\, \commandoption{number-within} \,$|$\, \commandoption{numberwithin} - \end{itemize} - \item \commandoption{shared counter}\lstinline| = |\meta{shared counter} - \begin{itemize} - \item Specifying the \meta{shared counter} for the current environment, \emph{i.e.}, numbering will progress sequentially for all theorem-like environments using this counter. - \item Synonymous names: \commandoption{shared-counter} \,$|$\, \commandoption{sharedcounter} \,$|$\, \\\phantom{Synonymous names: }\commandoption{number like} \,$|$\, \commandoption{number-like} \,$|$\, \commandoption{numberlike} - \end{itemize} - \item \commandoption{numberless} - \begin{itemize} - \item Defining the current environment to be unnumbered. - \end{itemize} - \item \commandoption{create starred version} - \begin{itemize} - \item Defining a corresponding starred (unnumbered) version of the current environment. - \item It must be placed \emph{before} \commandoption{qed} if you want the starred version to have a Q.E.D symbol. - \item Synonymous names: \commandoption{create-starred-version} \,$|$\, \commandoption{createstarredversion} \,$|$\, \\\phantom{Synonymous names: }\commandoption{create numberless version} \,$|$\, \commandoption{create-numberless-version}~\,$|$\\\phantom{Synonymous names: }\commandoption{createnumberlessversion} - \end{itemize} - \item \commandoption{copy existed}\lstinline| = |\meta{existed environment} - \begin{itemize} - \item Defining the current environment to be the same as \meta{existed environment}. - \item This key is usually useful in the following two situations: - \begin{enumerate} - \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}{|\commandoption{copy \\existed} \lstinline|= theorem}|, one can then use the name \texttt{thm} to write theorems. - \item To remove the numbering of some environments. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}{|\commandoption{copy existed} \lstinline|= remark*}|. - \end{enumerate} - \item Synonymous names: \commandoption{copy-existed} \,$|$\, \commandoption{copyexisted} - \end{itemize} -\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. -\end{tip} - -\medskip - -Please note that, for the sake of generality, the environment \meta{env} and its starred relative \meta{env}\texttt{*} do \emph{not} share the same set of names when they are separately defined. However, with proper usage of \commandoption{create starred version} and \commandoption{copy existed}, you should already be able to produce all of the following combinations that shares the same set of names: 1$)$ numbered \meta{env}, numbered \meta{env}\texttt{*} ; 2$)$ numbered \meta{env}, unnumbered \meta{env}\texttt{*} ; 3$)$ unnumbered \meta{env}, numbered \meta{env}\texttt{*} ; and 4$)$ unnumbered \meta{env}, unnumbered \meta{env}\texttt{*}. I left it as an easy exercise for you ;-) -The answer can be found in section \labelcref{subsec:numbering}. - -\medskip -\subsection[Configuring theorem-like environments]{Configuring theorem-like environments with \texttt{\textcolor{code-main}{\textbackslash SetTheorem}}} - -The previous two commands are especially useful for package or class writers, while this one is more for the users. If you are not satisfied with preset name styles or numbering settings, then even after initializing the environments, you can still further configure them by means of \lstinline|\SetTheorem|, the syntax of which is as follows: - -\begin{code} -\SetTheorem{(*\meta{list of the name of environments}*)}{(*\meta{key-value configuration}*)} -\end{code} - -% \begin{tip} -% \lstinline|\SetTheorem| should only be used in the preamble of your document. -% \end{tip} - -Supported keys are: -\vspace{-.2\baselineskip} -\begin{itemize}[label=,leftmargin=1.25em,itemindent=-1.25em] - \item \commandoption{name}\lstinline| = |\meta{configuration} and \commandoption{name style}\lstinline| = |\meta{configuration} - \begin{itemize} - \item Same as \lstinline|\NameTheorem{|\meta{name of environment}\lstinline|}{|\meta{configuration}\lstinline|}|. - \item Note that this configuration can overwrite those already specified in \lstinline|\NameTheorem|. - \item Synonymous names: \commandoption{name-style} \,$|$\, \commandoption{namestyle} - \end{itemize} - \item \commandoption{qed}\lstinline| = |\meta{Q.E.D. symbol} - \begin{itemize} - \item Specifying the Q.E.D. symbol for the current environment. - \item Note that this configuration only works if you have already enabled the Q.E.D. symbol during the creating phase of the corresponding environment. - \item Synonymous names: \commandoption{qed symbol} \,$|$\, \commandoption{qed-symbol} \,$|$\, \commandoption{qedsymbol} - \end{itemize} - \item \commandoption{parent counter}\lstinline| = |\meta{parent counter} - \begin{itemize} - \item Specifying the \meta{parent counter} for the current environment, \emph{i.e.}, numbering will restart whenever that sectional level is encountered. - \item Note that this configuration can overwrite those already specified in \lstinline|\CreateTheorem|. - \item Synonymous names: \commandoption{parent-counter} \,$|$\, \commandoption{parentcounter} \,$|$\, \\\phantom{Synonymous names: }\commandoption{number within} \,$|$\, \commandoption{number-within} \,$|$\, \commandoption{numberwithin} - \end{itemize} - \item \commandoption{shared counter}\lstinline| = |\meta{shared counter} - \begin{itemize} - \item Specifying the \meta{shared counter} for the current environment, \emph{i.e.}, numbering will progress sequentially for all theorem-like environments using this counter. - \item Note that this configuration can overwrite those already specified in \lstinline|\CreateTheorem|. - \item Synonymous names: \commandoption{shared-counter} \,$|$\, \commandoption{sharedcounter} \,$|$\, \\\phantom{Synonymous names: }\commandoption{number like} \,$|$\, \commandoption{number-like} \,$|$\, \commandoption{numberlike} - \end{itemize} -\end{itemize} - -\medskip -In some cases, you may define an internal environment (for example, a generic version) first and then use it to define the final environment. You may wish to hide the internal names from the users so that they can use \lstinline|\SetTheorem| with the name of the final environments. This can be done with the following command: -\begin{code} -\SetTheoremBinding{(*\meta{list of the name of environments}*)}{(*\meta{the environment to bind with}*)} -\end{code} - - -\medskip -\subsection[Setting the names in external language configuration files]{Setting the names in external language configuration files with \texttt{\textcolor{code-main}{\textbackslash NameTheorems}}} - -The command \lstinline|\NameTheorem| introduced earlier is for defining the names of a given environment for each language, which is more natural to use within a real-life document. However, for package/class authors wishing to maintain their language configuration files, it would be more convenient to use the following \lstinline|\NameTheorems|, which assigns the names for a given language all at once, made it possible to preset the names inside external files. - -\enlargethispage*{\baselineskip} -The syntax of \lstinline|\NameTheorems| is as follows (please note that the \meta{language name} here should be consistent with \lstinline|\languagename|): -\begin{code} -\NameTheorems{(*\meta{language name}*)}{(*\meta{key-value configuration}*)} -\end{code} - -Supported keys are (notice that you \emph{cannot} set the styles via \lstinline|\NameTheorems|): -\vspace{-.2\baselineskip} -\begin{itemize}[label=,leftmargin=1.25em,itemindent=-1.25em] - \item \commandoption{heading}\lstinline| = |\meta{configuration} - \begin{itemize} - \item The headings of the environments, where \meta{configuration} is a key-value name list: -\begin{code} -(*\commandoption{heading}*) = { - (*\meta{name of environment}*) = (*\meta{string}*) - } -\end{code} - \end{itemize} - \item \commandoption{crefname}\lstinline| = |\meta{configuration} - \begin{itemize} - \item The names for \lstinline|\cref| the environments, where \meta{configuration} is a key-value name list: -\begin{code} -(*\commandoption{crefname}*) = { - (*\meta{name of environment}*) = {(*\meta{singular name}*)}{(*\meta{plural name}*)} - } -\end{code} - \item Also supports the syntax of \lstinline|\crefthename| and \lstinline|\crefthevariantname|.\\ - Please refer to the description of \lstinline|\NameTheorem| for more details. - \end{itemize} - \item \commandoption{Crefname}\lstinline| = |\meta{configuration} - \begin{itemize} - \item The names for \lstinline|\Cref| the environments, its syntax is the same as that of \commandoption{crefname}. - \item Also supports the syntax of \lstinline|\Crefthename| and \lstinline|\Crefthevariantname|.\\ - Please refer to the description of \lstinline|\NameTheorem| for more details. - \end{itemize} -\end{itemize} - - -\bigskip -\begin{center} - \itshape - If you're feeling confused, don't worry. Let's now take a look at some examples. -\end{center} - - -\section{Examples} - -\subsection{The environment {\normalfont\texttt{idea}}} - -First, let's getting familiar with these two commands by creating the environment {\normalfont\texttt{idea}}. - -\begin{code} -\NameTheorem{idea} - { - (*\commandoption{heading}*) = Idea, - (*\commandoption{crefname}*) = {idea}{ideas}, - (*\commandoption{Crefname}*) = {Idea}{Ideas}, - } -\CreateTheorem{idea}{ (*\commandoption{parent counter}*) = section } -\end{code} - -or to do it in one turn: - -\begin{code} -\CreateTheorem{idea} - { - (*\commandoption{name}*) = { - (*\commandoption{heading}*) = Idea, - (*\commandoption{crefname}*) = {idea}{ideas}, - (*\commandoption{Crefname}*) = {Idea}{Ideas}, - }, - (*\commandoption{parent counter}*) = section, - } -\end{code} - -\smallskip -This is not exciting at all. Now, let's say we are writing a trilingual note in English, French and German. (I shall omit the \lstinline|\NameTheorem| version and do it all at once in \lstinline|\CreateTheorem|.) - -\begin{code} -\CreateTheorem{idea} - { - (*\commandoption{name}*) = { - (*\commandoption{heading}*) = { english = Idea, - french = Idée, - ngerman = Idee, }, - (*\commandoption{crefname}*) = { english = {idea}{ideas}, - french = [l']{idée}[les]{idées}, - ngerman = { {Idee}{Idee} - , Nominativ = [die]{Idee}[die]{Ideen} - , Genitiv = [der]{Idee}[der]{Ideen} - , Dativ = [der]{Idee}[den]{Ideen} - , Akkusativ = [die]{Idee}[die]{Ideen} - } }, - (*\commandoption{Crefname}*) = { english = {Idea}{Ideas}, - french = [L']{idée}[Les]{idées}, - ngerman = { {Idee}{Idee} - , Nominativ = [Die]{Idee}[Die]{Ideen} - , Genitiv = [Der]{Idee}[Der]{Ideen} - , Dativ = [Der]{Idee}[Den]{Ideen} - , Akkusativ = [Die]{Idee}[Die]{Ideen} - } }, - }, - (*\commandoption{parent counter}*) = section, - } -\end{code} - -With this, if you use \lstinline|\selectlanguage{french}|, the {\normalfont\texttt{idea}} environment shall be automatically displayed as \textquote{Idée}. And if you \lstinline|\crefthe| it, the definite article and the name would show up properly just as expected. - -The same happens for German with \lstinline|\selectlanguage{ngerman}|, and when referencing an {\normalfont\texttt{idea}} environment, you may specify the declension as with \lstinline|\crefthe[|\meta{prep}\lstinline|,variant=Nominativ]{|\meta{label}\lstinline|}|, or simply with shortcut such as \lstinline|\crefthe[|\meta{prep}\lstinline|,nom.]{|\meta{label}\lstinline|}|. - -\begin{tip} - For more datailed usage of the referencing command \lstinline|\crefthe|, please refer to the documentation of the package \textsf{crefthe}. -\end{tip} - -\bigskip -Next we shall deal with the problem of numbering. Let's continue to use this environment {\normalfont\texttt{idea}} for demonstration --- suppose that we have already set the names with \lstinline|\NameTheorem|. - - -\medskip -\subsection{Let's play with numbering} -\label{subsec:numbering} - -Remember the exercise I left you in the previous section? Let's do it together now. - -\subsubsection{Numbered {\normalfont\texttt{idea}} and numbered {\normalfont\texttt{idea*}}} - -This is easy, \commandoption{copy existed} suffices: - -\begin{code} -\CreateTheorem{idea}{(*\commandoption{parent counter}*) = section} -\CreateTheorem{idea*}{(*\commandoption{copy existed}*) = idea} -\end{code} - -\subsubsection{Numbered {\normalfont\texttt{idea}} and unnumbered {\normalfont\texttt{idea*}}} - -This is the most common situation, \commandoption{create starred version} will do. - -\begin{code} -\CreateTheorem{idea} - { - (*\commandoption{parent counter}*) = section, - (*\commandoption{create starred version}*), - } -\end{code} - -\begin{tip}[Attention] - Please note that you cannot use \lstinline|\CreateTheorem{idea*}{|\commandoption{numberless}\lstinline|}| here, since we don't have the names defined for {\normalfont\texttt{idea*}}. -\end{tip} - -\subsubsection{Unnumbered {\normalfont\texttt{idea}} and numbered {\normalfont\texttt{idea*}}} - -This is a bit tricky: by default we can only create numbered {\normalfont\texttt{idea}} or unnumbered {\normalfont\texttt{idea*}}, and the question is how to switch them. We shall need an intermediary for this purpose. - -\begin{code} -\CreateTheorem{idea}{(*\commandoption{create starred version}*)} -\CreateTheorem{idea-temp}{(*\commandoption{copy existed}*) = idea*} -\CreateTheorem{idea*}{(*\commandoption{copy existed}*) = idea} -\CreateTheorem{idea}{(*\commandoption{copy existed}*) = idea-temp} -\end{code} - -\subsubsection{Unnumbered {\normalfont\texttt{idea}} and unnumbered {\normalfont\texttt{idea*}}} - -This is essentially the combination of the first two cases --- we need to create {\normalfont\texttt{idea*}} first and then copy it to {\normalfont\texttt{idea}}: - -\begin{code} -\CreateTheorem{idea}{(*\commandoption{create starred version}*)} -\CreateTheorem{idea}{(*\commandoption{copy existed}*) = idea*} -\end{code} - -\medskip -In each case, the two environments {\normalfont\texttt{idea}} and {\normalfont\texttt{idea*}} share the same set of names. - -\begin{tip}[Attention] - The sole purpose of this section is to demonstrate the feature of this package --- some combinations are not recommended to use in the actual documents. -\end{tip} - - -\subsection{The \emph{proofless} version --- theorems with a Q.E.D. symbol} - -Sometimes you may encounter a theorem without a proof, in which case you might want a Q.E.D. symbol when the theorem is finished. This can be easily achieved via: - -\begin{code} -\CreateTheorem { theorem } { (*\commandoption{create starred version}*) } -\CreateTheorem { theorem+ } { (*\commandoption{copy existed}*) = theorem, (*\commandoption{qed}*) } -\CreateTheorem { theorem+* } { (*\commandoption{copy existed}*) = theorem*, (*\commandoption{qed}*) } -\end{code} - -The code above defines two new environments \lstinline|theorem+| and \lstinline|theorem+*| in addition to \lstinline|theorem| and \lstinline|theorem*|. The \lstinline|+| version behaves exactly the same as the usual version, except that it has a Q.E.D. symbol. - -\subsection{Redefine the {\normalfont\texttt{proof}} environment} - -If you wish to have a {\normalfont\texttt{proof}} environment with a custom theorem style, or to have a numbered version {\normalfont\texttt{proof*}} of it, the following code could be helpful: - -\begin{code} -\ExplSyntaxOn - -\newcounter { proof } -\tl_new:N \l_mymodule_name_of_proof_tl -\CreateTheorem { proof_inner } - { - (*\commandoption{name}*) = { (*\commandoption{heading}*) = { \l_mymodule_name_of_proof_tl } }, - (*\commandoption{create-starred-version}*), - (*\commandoption{style}*) = remark, - (*\commandoption{qed}*), - (*\commandoption{shared-counter}*) = proof, - } - -\cs_undefine:c { proof } -\cs_undefine:c { endproof } -\NewDocumentEnvironment { proof } { O{\proofname} } - { - \tl_set:Nn \l_mymodule_name_of_proof_tl { #1 } - \begin { proof_inner* } - } - { - \end { proof_inner* } - } -\NewDocumentEnvironment { proof* } { O{\proofname} } - { - \tl_set:Nn \l_mymodule_name_of_proof_tl { #1 } - \begin { proof_inner } - } - { - \end { proof_inner } - } - -\SetTheoremBinding { proof } { proof_inner* } -\SetTheoremBinding { proof* } { proof_inner } - -\ExplSyntaxOff -\end{code} - -It defines an environment \lstinline|proof_inner| (with its starred variant) with theorem style \lstinline|remark| to mimic the default style (you are welcome to use your own style here), and with the name to be a variable which is latter used to define the actual environments \lstinline|proof| and \lstinline|proof*|. These two environments are defined in such a way that \lstinline|proof| is the usual unnumbered version and \lstinline|proof*| is the numbered version. The \lstinline|\SetTheoremBinding| lines are to ensure that user can directly write \lstinline|\SetTheorem{proof}| instead of \lstinline|\SetTheorem{proof_inner*}|. - -\begin{tip}[Attention] - The code above requires \textsf{amsthm}. If you are using \textsf{ntheorem} as the backend, then you need to load it with option \packageoption{amsthm}, and remove the \lstinline|\newcounter| line. -\end{tip} - -\medskip -\subsection{Advanced topic: setting the names in an external file} - -A typical configuration looks like this: - -\begin{code} -\NameTheorems { english } - { - , (*\commandoption{heading}*) = { - , theorem = Theorem - , proposition = Proposition - ... - } - , (*\commandoption{crefname}*) = { - , theorem = {theorem}{theorems} - , proposition = {proposition}{propositions} - ... - } - , (*\commandoption{Crefname}*) = { - , theorem = {Theorem}{Theorems} - , proposition = {Proposition}{Propositions} - ... - } - } -\end{code} - -Here is an example for French: - -\begin{code} -\NameTheorems { french } - { - , (*\commandoption{heading}*) = { - , theorem = Théorème - , proposition = Proposition - , example = Exemple - ... - } - , (*\commandoption{crefname}*) = { - , theorem = [le]{théorème}[les]{théorèmes} - , proposition = [la]{proposition}[les]{propositions} - , example = [l']{exemple}[les]{exemples} - ... - } - , (*\commandoption{Crefname}*) = { - , theorem = [Le]{théorème}[Les]{théorèmes} - , proposition = [La]{proposition}[Les]{propositions} - , example = [L']{exemple}[Les]{exemples} - ... - } - } -\end{code} - -And an example for German: - -\begin{code} -\NameTheorems { ngerman } - { - , (*\commandoption{heading}*) = { - , theorem = Satz - ... - } - , (*\commandoption{crefname}*) = { - , theorem = { {Satz}{Sätze} - , Nominativ = [der]{Satz}[die]{Sätze} - , Genitiv = [des]{Satzes}[der]{Sätze} - , Dativ = [dem]{Satz}[den]{Sätzen} - , Akkusativ = [den]{Satz}[die]{Sätze} - } - ... - } - , (*\commandoption{Crefname}*) = { - , theorem = { {Satz}{Sätze} - , Nominativ = [Der]{Satz}[Die]{Sätze} - , Genitiv = [Des]{Satzes}[Der]{Sätze} - , Dativ = [Dem]{Satz}[Den]{Sätzen} - , Akkusativ = [Den]{Satz}[Die]{Sätze} - } - ... - } - } -\end{code} - -\medskip -The configuration using \lstinline|\NameTheorems| is compatible with that using \lstinline|\NameTheorem| and there is no need to worry about duplicated definitions --- new settings will automatically overwrite the old ones. - - -\clearpage -\section{Known issues} - -\begin{itemize} - \item \createtheorempackage{} modifies some undocumented internal macros of \textsf{cleveref}, so the behavior might not be stable if \textsf{cleveref} gets updated one day. - \item The current naming mechanism for theorems essentially follows the syntax of \textsf{cleveref}. The configuration may look somewhat redundant. In a future version, a new mechanism is planed to be introduced, which would be similar to the method used by \textsf{zref-clever}. - \item It is current not possible to temporarily change the referencing type when referencing, which makes it difficult to reference a \textquote{\texttt{namedtheorem}}, or if you have both the singular and plural form of an environment, say \textquote{\texttt{example}} and \textquote{\texttt{examples}}, they would be referred to as two separate types. - \item The counter aliasing function is still not perfect, (sometimes) causing incorrect ordering in the result of \lstinline|\cref|. - \item There might be inaccuracies in the translation of those preset names. -\end{itemize} - -\medskip -If you run into any issues or have ideas for improvement, feel free to discuss on: -\begin{center} - \url{https://github.com/Jinwen-XU/create-theorem/issues} -\end{center} -or email me via \href{mailto:ProjLib@outlook.com}{\texttt{ProjLib@outlook.com}}. - -\end{document} diff --git a/macros/latex/contrib/create-theorem/create-theorem.sty b/macros/latex/contrib/create-theorem/create-theorem.sty deleted file mode 100644 index d8e2ffbc35..0000000000 --- a/macros/latex/contrib/create-theorem/create-theorem.sty +++ /dev/null @@ -1,2569 +0,0 @@ -%% -%% 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 --- -%============================= - -\NameTheorem { application } - { - , heading = { - , english = Application - , french = Application - , ngerman = Anwendung - , italian = Applicazione - , portuguese = Aplicação - , brazilian = Aplicação - , spanish = Aplicación - , schinese = 应用 - , tchinese = 應用 - , japanese = 応用 - , russian = Применение - } - , crefname = { - , english = {application}{applications} - , french = [l']{application}[les]{applications} - , ngerman = { {Anwendung}{Anwendungen} - , Nominativ = [die]{Anwendung}[die]{Anwendungen} - , Genitiv = [der]{Anwendung}[der]{Anwendungen} - , Dativ = [der]{Anwendung}[den]{Anwendungen} - , Akkusativ = [die]{Anwendung}[die]{Anwendungen} - } - , italian = [l']{applicazione}[le]{applicazioni} - , portuguese = [a]{aplicação}[as]{aplicações} - , brazilian = [a]{aplicação}[as]{aplicações} - , spanish = [la]{aplicación}[las]{aplicaciones} - , schinese = {应用}{应用} - , tchinese = {應用}{應用} - , japanese = {応用}{応用} - , russian = {применение}{приложения} - } - , Crefname = { - , english = {Application}{Applications} - , french = [L']{application}[Les]{applications} - , ngerman = { {Anwendung}{Anwendungen} - , Nominativ = [Die]{Anwendung}[Die]{Anwendungen} - , Genitiv = [Der]{Anwendung}[Der]{Anwendungen} - , Dativ = [Der]{Anwendung}[Den]{Anwendungen} - , Akkusativ = [Die]{Anwendung}[Die]{Anwendungen} - } - , italian = [L']{applicazione}[Le]{applicazioni} - , portuguese = [A]{aplicação}[As]{aplicações} - , brazilian = [A]{aplicação}[As]{aplicações} - , spanish = [La]{aplicación}[Las]{aplicaciones} - , schinese = {应用}{应用} - , tchinese = {應用}{應用} - , japanese = {応用}{応用} - , russian = {Применение}{Приложения} - } - } - -\NameTheorem { assertion } - { - , heading = { - , english = Assertion - , french = Assertion - , ngerman = Assertion - , italian = Asserzione - , portuguese = Asserção - , brazilian = Asserção - , spanish = Aserción - , schinese = 断言 - , tchinese = 斷言 - , japanese = 断言 - , russian = Утверждение - } - , crefname = { - , english = {assertion}{assertions} - , french = [l']{assertion}[les]{assertions} - , ngerman = { {Assertion}{Assertionen} - , Nominativ = [die]{Assertion}[die]{Assertionen} - , Genitiv = [der]{Assertion}[der]{Assertionen} - , Dativ = [der]{Assertion}[den]{Assertionen} - , Akkusativ = [die]{Assertion}[die]{Assertionen} - } - , italian = [l']{asserzione}[le]{asserzioni} - , portuguese = [a]{asserção}[as]{asserções} - , brazilian = [a]{asserção}[as]{asserções} - , spanish = [la]{aserción}[las]{aserciones} - , schinese = {断言}{断言} - , tchinese = {斷言}{斷言} - , japanese = {断言}{断言} - , russian = {утверждение}{утверждения} - } - , Crefname = { - , english = {Assertion}{Assertions} - , french = [L']{assertion}[Les]{assertions} - , ngerman = { {Assertion}{Assertionen} - , Nominativ = [Die]{Assertion}[Die]{Assertionen} - , Genitiv = [Der]{Assertion}[Der]{Assertionen} - , Dativ = [Der]{Assertion}[Den]{Assertionen} - , Akkusativ = [Die]{Assertion}[Die]{Assertionen} - } - , italian = [L']{asserzione}[Le]{asserzioni} - , portuguese = [A]{asserção}[As]{asserções} - , brazilian = [A]{asserção}[As]{asserções} - , spanish = [La]{aserción}[Las]{aserciones} - , schinese = {断言}{断言} - , tchinese = {斷言}{斷言} - , japanese = {断言}{断言} - , russian = {Утверждение}{Утверждения} - } - } - -\NameTheorem { assumption } - { - , heading = { - , english = Assumption - , french = Supposition - , ngerman = Annahme - , italian = Supposizione - , portuguese = Suposição - , brazilian = Suposição - , spanish = Suposición - , schinese = 假定 - , tchinese = 假定 - , japanese = 仮定 - , russian = Предположение - } - , crefname = { - , english = {assumption}{assumptions} - , french = [la]{supposition}[les]{suppositions} - , ngerman = { {Annahme}{Annahmen} - , Nominativ = [die]{Annahme}[die]{Annahmen} - , Genitiv = [der]{Annahme}[der]{Annahmen} - , Dativ = [der]{Annahme}[den]{Annahmen} - , Akkusativ = [die]{Annahme}[die]{Annahmen} - } - , italian = [la]{supposizione}[le]{supposizioni} - , portuguese = [a]{suposição}[as]{suposições} - , brazilian = [a]{suposição}[as]{suposições} - , spanish = [la]{suposición}[las]{suposiciones} - , schinese = {假定}{假定} - , tchinese = {假定}{假定} - , japanese = {仮定}{仮定} - , russian = {предположение}{предположения} - } - , Crefname = { - , english = {Assumption}{Assumptions} - , french = [La]{supposition}[Les]{suppositions} - , ngerman = { {Annahme}{Annahmen} - , Nominativ = [Die]{Annahme}[Die]{Annahmen} - , Genitiv = [Der]{Annahme}[Der]{Annahmen} - , Dativ = [Der]{Annahme}[Den]{Annahmen} - , Akkusativ = [Die]{Annahme}[Die]{Annahmen} - } - , italian = [la]{supposizione}[le]{supposizioni} - , portuguese = [A]{suposição}[As]{suposições} - , brazilian = [A]{suposição}[As]{suposições} - , spanish = [La]{suposición}[Las]{suposiciones} - , schinese = {假定}{假定} - , tchinese = {假定}{假定} - , japanese = {仮定}{仮定} - , russian = {Предположение}{Предположения} - } - } - -\NameTheorem { axiom } - { - , heading = { - , english = Axiom - , french = Axiome - , ngerman = Axiom - , italian = Assioma - , portuguese = Axioma - , brazilian = Axioma - , spanish = Axioma - , schinese = 公理 - , tchinese = 公理 - , japanese = 公理 - , russian = Аксиома - } - , crefname = { - , english = {axiom}{axioms} - , french = [l']{axiome}[les]{axiomes} - , ngerman = { {Axiom}{Axiome} - , Nominativ = [das]{Axiom}[die]{Axiome} - , Genitiv = [des]{Axioms}[der]{Axiome} - , Dativ = [dem]{Axiom}[den]{Axiomen} - , Akkusativ = [das]{Axiom}[die]{Axiome} - } - , italian = [l']{assioma}[gli]{assiomi} - , portuguese = [o]{axioma}[os]{axiomas} - , brazilian = [o]{axioma}[os]{axiomas} - , spanish = [el]{axioma}[los]{axiomas} - , schinese = {公理}{公理} - , tchinese = {公理}{公理} - , japanese = {公理}{公理} - , russian = {аксиома}{аксиомы} - } - , Crefname = { - , english = {Axiom}{Axioms} - , french = [L']{axiome}[Les]{axiomes} - , ngerman = { {Axiom}{Axiome} - , Nominativ = [Das]{Axiom}[Die]{Axiome} - , Genitiv = [Des]{Axioms}[Der]{Axiome} - , Dativ = [Dem]{Axiom}[Den]{Axiomen} - , Akkusativ = [Das]{Axiom}[Die]{Axiome} - } - , italian = [L']{assioma}[Gli]{assiomi} - , portuguese = [O]{axioma}[Os]{axiomas} - , brazilian = [O]{axioma}[Os]{axiomas} - , spanish = [El]{axioma}[Los]{axiomas} - , schinese = {公理}{公理} - , tchinese = {公理}{公理} - , japanese = {公理}{公理} - , russian = {Аксиома}{Аксиомы} - } - } - -\NameTheorem { claim } - { - , heading = { - , english = Claim - , french = Affirmation - , ngerman = Behauptung - , italian = Affermazione - , portuguese = Afirmação - , brazilian = Afirmação - , spanish = Afirmación - , schinese = 断言 - , tchinese = 斷言 - , japanese = 断言 - , russian = Утверждение - } - , crefname = { - , english = {claim}{claims} - , french = [l']{affirmation}[les]{affirmations} - , ngerman = { {Behauptung}{Behauptungen} - , Nominativ = [die]{Behauptung}[die]{Behauptungen} - , Genitiv = [der]{Behauptung}[der]{Behauptungen} - , Dativ = [der]{Behauptung}[den]{Behauptungen} - , Akkusativ = [die]{Behauptung}[die]{Behauptungen} - } - , italian = [l']{affermazione}[le]{affermazioni} - , portuguese = [a]{afirmação}[as]{afirmações} - , brazilian = [a]{afirmação}[as]{afirmações} - , spanish = [la]{afirmación}[las]{afirmaciones} - , schinese = {断言}{断言} - , tchinese = {斷言}{斷言} - , japanese = {断言}{断言} - , russian = {утверждение}{утверждения} - } - , Crefname = { - , english = {Claim}{Claims} - , french = [L']{affirmation}[Les]{affirmations} - , ngerman = { {Behauptung}{Behauptungen} - , Nominativ = [Die]{Behauptung}[Die]{Behauptungen} - , Genitiv = [Der]{Behauptung}[Der]{Behauptungen} - , Dativ = [Der]{Behauptung}[Den]{Behauptungen} - , Akkusativ = [Die]{Behauptung}[Die]{Behauptungen} - } - , italian = [L']{affermazione}[Le]{affermazioni} - , portuguese = [A]{afirmação}[As]{afirmações} - , brazilian = [A]{afirmação}[As]{afirmações} - , spanish = [La]{afirmación}[Las]{afirmaciones} - , schinese = {断言}{断言} - , tchinese = {斷言}{斷言} - , japanese = {断言}{断言} - , russian = {Утверждение}{Утверждения} - } - } - -\NameTheorem { conclusion } - { - , heading = { - , english = Conclusion - , french = Conclusion - , ngerman = Schlussfolgerung - , italian = Conclusione - , portuguese = Conclusão - , brazilian = Conclusão - , spanish = Conclusión - , schinese = 结论 - , tchinese = 結論 - , japanese = 結論 - , russian = Вывод - } - , crefname = { - , english = {conclusion}{conclusions} - , french = [la]{conclusion}[Les]{conclusions} - , ngerman = { {Schlussfolgerung}{Schlussfolgerungen} - , Nominativ = [die]{Schlussfolgerung}[die]{Schlussfolgerungen} - , Genitiv = [der]{Schlussfolgerung}[der]{Schlussfolgerungen} - , Dativ = [der]{Schlussfolgerung}[den]{Schlussfolgerungen} - , Akkusativ = [die]{Schlussfolgerung}[die]{Schlussfolgerungen} - } - , italian = [la]{conclusione}[le]{conclusioni} - , portuguese = [a]{conclusão}[as]{conclusões} - , brazilian = [a]{conclusão}[as]{conclusões} - , spanish = [la]{conclusión}[las]{conclusiones} - , schinese = {结论}{结论} - , tchinese = {結論}{結論} - , japanese = {結論}{結論} - , russian = {вывод}{выводы} - } - , Crefname = { - , english = {Conclusion}{Conclusions} - , french = [La]{conclusion}[Les]{conclusions} - , ngerman = { {Schlussfolgerung}{Schlussfolgerungen} - , Nominativ = [Die]{Schlussfolgerung}[Die]{Schlussfolgerungen} - , Genitiv = [Der]{Schlussfolgerung}[Der]{Schlussfolgerungen} - , Dativ = [Der]{Schlussfolgerung}[Den]{Schlussfolgerungen} - , Akkusativ = [Die]{Schlussfolgerung}[Die]{Schlussfolgerungen} - } - , italian = [La]{conclusione}[Le]{conclusioni} - , portuguese = [A]{conclusão}[As]{conclusões} - , brazilian = [A]{conclusão}[As]{conclusões} - , spanish = [La]{conclusión}[Las]{conclusiones} - , schinese = {结论}{结论} - , tchinese = {結論}{結論} - , japanese = {結論}{結論} - , russian = {Вывод}{Выводы} - } - } - -\NameTheorem { conjecture } - { - , heading = { - , english = Conjecture - , french = Conjecture - , ngerman = Vermutung - , italian = Congettura - , portuguese = Conjetura - , brazilian = Conjectura - , spanish = Conjetura - , schinese = 猜想 - , tchinese = 猜想 - , japanese = 予想 - , russian = Гипотеза - } - , crefname = { - , english = {conjecture}{conjectures} - , french = [la]{conjecture}[les]{conjectures} - , ngerman = { {Vermutung}{Vermutungen} - , Nominativ = [die]{Vermutung}[die]{Vermutungen} - , Genitiv = [der]{Vermutung}[der]{Vermutungen} - , Dativ = [der]{Vermutung}[den]{Vermutungen} - , Akkusativ = [die]{Vermutung}[die]{Vermutungen} - } - , italian = [la]{congettura}[le]{congetture} - , portuguese = [a]{conjetura}[as]{conjeturas} - , brazilian = [a]{conjectura}[as]{conjecturas} - , spanish = [la]{conjetura}[las]{conjeturas} - , schinese = {猜想}{猜想} - , tchinese = {猜想}{猜想} - , japanese = {予想}{予想} - , russian = {гипотеза}{гипотезы} - } - , Crefname = { - , english = {Conjecture}{Conjectures} - , french = [La]{conjecture}[Les]{conjectures} - , ngerman = { {Vermutung}{Vermutungen} - , Nominativ = [Die]{Vermutung}[Die]{Vermutungen} - , Genitiv = [Der]{Vermutung}[Der]{Vermutungen} - , Dativ = [Der]{Vermutung}[Den]{Vermutungen} - , Akkusativ = [Die]{Vermutung}[Die]{Vermutungen} - } - , italian = [La]{congettura}[Le]{congetture} - , portuguese = [A]{conjetura}[As]{conjeturas} - , brazilian = [A]{conjectura}[As]{conjecturas} - , spanish = [La]{conjetura}[Las]{conjeturas} - , schinese = {猜想}{猜想} - , tchinese = {猜想}{猜想} - , japanese = {予想}{予想} - , russian = {Гипотеза}{Гипотезы} - } - } - -\NameTheorem { construction } - { - , heading = { - , english = Construction - , french = Construction - , ngerman = Konstruktion - , italian = Costruzione - , portuguese = Construção - , brazilian = Construção - , spanish = Construcción - , schinese = 构造 - , tchinese = 構造 - , japanese = 構造 - , russian = Конструкция - } - , crefname = { - , english = {construction}{constructions} - , french = [la]{construction}[les]{constructions} - , ngerman = { {Konstruktion}{Konstruktionen} - , Nominativ = [die]{Konstruktion}[die]{Konstruktionen} - , Genitiv = [der]{Konstruktion}[der]{Konstruktionen} - , Dativ = [der]{Konstruktion}[den]{Konstruktionen} - , Akkusativ = [die]{Konstruktion}[die]{Konstruktionen} - } - , italian = [la]{costruzione}[le]{costruzioni} - , portuguese = [a]{construção}[as]{construções} - , brazilian = [a]{construção}[as]{construções} - , spanish = [la]{construcción}[las]{construcciones} - , schinese = {构造}{构造} - , tchinese = {構造}{構造} - , japanese = {構造}{構造} - , russian = {конструкция}{конструкции} - } - , Crefname = { - , english = {Construction}{Constructions} - , french = [La]{construction}[Les]{constructions} - , ngerman = { {Konstruktion}{Konstruktionen} - , Nominativ = [Die]{Konstruktion}[Die]{Konstruktionen} - , Genitiv = [Der]{Konstruktion}[Der]{Konstruktionen} - , Dativ = [Der]{Konstruktion}[Den]{Konstruktionen} - , Akkusativ = [Die]{Konstruktion}[Die]{Konstruktionen} - } - , italian = [La]{costruzione}[Le]{costruzioni} - , portuguese = [A]{construção}[As]{construções} - , brazilian = [A]{construção}[As]{construções} - , spanish = [La]{construcción}[Las]{construcciones} - , schinese = {构造}{构造} - , tchinese = {構造}{構造} - , japanese = {構造}{構造} - , russian = {Конструкция}{Конструкции} - } - } - -\NameTheorem { convention } - { - , heading = { - , english = Convention - , french = Convention - , ngerman = Konvention - , italian = Convenzione - , portuguese = Convenção - , brazilian = Convenção - , spanish = Convención - , schinese = 约定 - , tchinese = 約定 - , japanese = 慣例 - , russian = Конвенция - } - , crefname = { - , english = {convention}{conventions} - , french = [la]{convention}[les]{conventions} - , ngerman = { {Konvention}{Konventionen} - , Nominativ = [die]{Konvention}[die]{Konventionen} - , Genitiv = [der]{Konvention}[der]{Konventionen} - , Dativ = [der]{Konvention}[den]{Konventionen} - , Akkusativ = [die]{Konvention}[die]{Konventionen} - } - , italian = [la]{convenzione}[le]{convenzioni} - , portuguese = [a]{convenção}[as]{convenções} - , brazilian = [a]{convenção}[as]{convenções} - , spanish = [la]{convención}[las]{convenciones} - , schinese = {约定}{约定} - , tchinese = {約定}{約定} - , japanese = {慣例}{慣例} - , russian = {конвенция}{конвенции} - } - , Crefname = { - , english = {Convention}{Conventions} - , french = [La]{convention}[Les]{conventions} - , ngerman = { {Konvention}{Konventionen} - , Nominativ = [Die]{Konvention}[Die]{Konventionen} - , Genitiv = [Der]{Konvention}[Der]{Konventionen} - , Dativ = [Der]{Konvention}[Den]{Konventionen} - , Akkusativ = [Die]{Konvention}[Die]{Konventionen} - } - , italian = [La]{convenzione}[Le]{convenzioni} - , portuguese = [A]{convenção}[As]{convenções} - , brazilian = [A]{convenção}[As]{convenções} - , spanish = [La]{convención}[Las]{convenciones} - , schinese = {约定}{约定} - , tchinese = {約定}{約定} - , japanese = {慣例}{慣例} - , russian = {Конвенция}{Конвенции} - } - } - -\NameTheorem { corollary } - { - , heading = { - , english = Corollary - , french = Corollaire - , ngerman = Korollar - , italian = Corollario - , portuguese = Corolário - , brazilian = Corolário - , spanish = Corolario - , schinese = 推论 - , tchinese = 推論 - , japanese = 系 - , russian = Следствие - } - , crefname = { - , english = {corollary}{corollaries} - , french = [le]{corollaire}[les]{corollaires} - , ngerman = { {Korollar}{Korollare} - , Nominativ = [das]{Korollar}[die]{Korollare} - , Genitiv = [des]{Korollars}[der]{Korollare} - , Dativ = [dem]{Korollar}[den]{Korollaren} - , Akkusativ = [das]{Korollar}[die]{Korollare} - } - , italian = [il]{corollario}[i]{corollari} - , portuguese = [o]{corolário}[os]{corolários} - , brazilian = [o]{corolário}[os]{corolários} - , spanish = [el]{corolario}[los]{corolarios} - , schinese = {推论}{推论} - , tchinese = {推論}{推論} - , japanese = {系}{系} - , russian = {следствие}{следствия} - } - , Crefname = { - , english = {Corollary}{Corollaries} - , french = [Le]{corollaire}[Les]{corollaires} - , ngerman = { {Korollar}{Korollare} - , Nominativ = [Das]{Korollar}[Die]{Korollare} - , Genitiv = [Des]{Korollars}[Der]{Korollare} - , Dativ = [Dem]{Korollar}[Den]{Korollaren} - , Akkusativ = [Das]{Korollar}[Die]{Korollare} - } - , italian = [Il]{corollario}[I]{corollari} - , portuguese = [O]{corolário}[Os]{corolários} - , brazilian = [O]{corolário}[Os]{corolários} - , spanish = [El]{corolario}[Los]{corolarios} - , schinese = {推论}{推论} - , tchinese = {推論}{推論} - , japanese = {系}{系} - , russian = {Следствие}{Следствия} - } - } - -\NameTheorem { definition } - { - , heading = { - , english = Definition - , french = Définition - , ngerman = Definition - , italian = Definizione - , portuguese = Definição - , brazilian = Definição - , spanish = Definición - , schinese = 定义 - , tchinese = 定義 - , japanese = 定義 - , russian = Определение - } - , crefname = { - , english = {definition}{definitions} - , french = [la]{définition}[les]{définitions} - , ngerman = { {Definition}{Definitionen} - , Nominativ = [die]{Definition}[die]{Definitionen} - , Genitiv = [der]{Definition}[der]{Definitionen} - , Dativ = [der]{Definition}[den]{Definitionen} - , Akkusativ = [die]{Definition}[die]{Definitionen} - } - , italian = [la]{definizione}[le]{definizioni} - , portuguese = [a]{definição}[as]{definições} - , brazilian = [a]{definição}[as]{definições} - , spanish = [la]{definición}[las]{definiciones} - , schinese = {定义}{定义} - , tchinese = {定義}{定義} - , japanese = {定義}{定義} - , russian = {определение}{определения} - } - , Crefname = { - , english = {Definition}{Definitions} - , french = [La]{définition}[Les]{définitions} - , ngerman = { {Definition}{Definitionen} - , Nominativ = [Die]{Definition}[Die]{Definitionen} - , Genitiv = [Der]{Definition}[Der]{Definitionen} - , Dativ = [Der]{Definition}[Den]{Definitionen} - , Akkusativ = [Die]{Definition}[Die]{Definitionen} - } - , italian = [La]{definizione}[Le]{definizioni} - , portuguese = [A]{definição}[As]{definições} - , brazilian = [A]{definição}[As]{definições} - , spanish = [La]{definición}[Las]{definiciones} - , schinese = {定义}{定义} - , tchinese = {定義}{定義} - , japanese = {定義}{定義} - , russian = {Определение}{Определения} - } - } - -\NameTheorem { example } - { - , heading = { - , english = Example - , french = Exemple - , ngerman = Beispiel - , italian = Esempio - , portuguese = Exemplo - , brazilian = Exemplo - , spanish = Ejemplo - , schinese = 例 - , tchinese = 例 - , japanese = 例 - , russian = Пример - } - , crefname = { - , english = {example}{examples} - , french = [l']{exemple}[les]{exemples} - , ngerman = { {Beispiel}{Beispiele} - , Nominativ = [das]{Beispiel}[die]{Beispiele} - , Genitiv = [des]{Beispiels}[der]{Beispiele} - , Dativ = [dem]{Beispiel}[den]{Beispielen} - , Akkusativ = [das]{Beispiel}[die]{Beispiele} - } - , italian = [l']{esempio}[gli]{esempi} - , portuguese = [o]{exemplo}[os]{exemplos} - , brazilian = [o]{exemplo}[os]{exemplos} - , spanish = [el]{ejemplo}[los]{ejemplos} - , schinese = {例}{例} - , tchinese = {例}{例} - , japanese = {例}{例} - , russian = {пример}{примеры} - } - , Crefname = { - , english = {Example}{Examples} - , french = [L']{exemple}[Les]{exemples} - , ngerman = { {Beispiel}{Beispiele} - , Nominativ = [Das]{Beispiel}[Die]{Beispiele} - , Genitiv = [Des]{Beispiels}[Der]{Beispiele} - , Dativ = [Dem]{Beispiel}[Den]{Beispielen} - , Akkusativ = [Das]{Beispiel}[Die]{Beispiele} - } - , italian = [L']{esempio}[Gli]{esempi} - , portuguese = [O]{exemplo}[Os]{exemplos} - , brazilian = [O]{exemplo}[Os]{exemplos} - , spanish = [El]{ejemplo}[Los]{ejemplos} - , schinese = {例}{例} - , tchinese = {例}{例} - , japanese = {例}{例} - , russian = {Пример}{Примеры} - } - } - -\NameTheorem { exercise } - { - , heading = { - , english = Exercise - , french = Exercice - , ngerman = Übung - , italian = Esercizio - , portuguese = Exercício - , brazilian = Exercício - , spanish = Ejercicio - , schinese = 练习 - , tchinese = 練習 - , japanese = 練習 - , russian = Упражнение - } - , crefname = { - , english = {exercise}{exercises} - , french = [l']{exercice}[les]{exercices} - , ngerman = { {Übung}{Übungen} - , Nominativ = [die]{Übung}[die]{Übungen} - , Genitiv = [der]{Übung}[der]{Übungen} - , Dativ = [der]{Übung}[den]{Übungen} - , Akkusativ = [die]{Übung}[die]{Übungen} - } - , italian = [l']{esercizio}[gli]{esercizi} - , portuguese = [o]{exercício}[os]{exercícios} - , brazilian = [o]{exercício}[os]{exercícios} - , spanish = [el]{ejercicio}[los]{ejercicios} - , schinese = {练习}{练习} - , tchinese = {練習}{練習} - , japanese = {練習}{練習} - , russian = {упражнение}{упражнения} - } - , Crefname = { - , english = {Exercise}{Exercises} - , french = [L']{exercice}[Les]{exercices} - , ngerman = { {Übung}{Übungen} - , Nominativ = [Die]{Übung}[Die]{Übungen} - , Genitiv = [Der]{Übung}[Der]{Übungen} - , Dativ = [Der]{Übung}[Den]{Übungen} - , Akkusativ = [Die]{Übung}[Die]{Übungen} - } - , italian = [L']{esercizio}[Gli]{esercizi} - , portuguese = [O]{exercício}[Os]{exercícios} - , brazilian = [O]{exercício}[Os]{exercícios} - , spanish = [El]{ejercicio}[Los]{ejercicios} - , schinese = {练习}{练习} - , tchinese = {練習}{練習} - , japanese = {練習}{練習} - , russian = {Упражнение}{Упражнения} - } - } - -\NameTheorem { fact } - { - , heading = { - , english = Fact - , french = Fait - , ngerman = Tatsache - , italian = Fatto - , portuguese = Facto - , brazilian = Fato - , spanish = Hecho - , schinese = 事实 - , tchinese = 事實 - , japanese = 事実 - , russian = Факт - } - , crefname = { - , english = {fact}{facts} - , french = [le]{fait}[les]{faits} - , ngerman = { {Tatsache}{Tatsachen} - , Nominativ = [die]{Tatsache}[die]{Tatsachen} - , Genitiv = [der]{Tatsache}[der]{Tatsachen} - , Dativ = [der]{Tatsache}[den]{Tatsachen} - , Akkusativ = [die]{Tatsache}[die]{Tatsachen} - } - , italian = [il]{fatto}[i]{fatti} - , portuguese = [o]{facto}[os]{factos} - , brazilian = [o]{fato}[os]{fatos} - , spanish = [el]{hecho}[los]{hechos} - , schinese = {事实}{事实} - , tchinese = {事實}{事實} - , japanese = {事実}{事実} - , russian = {факт}{факты} - } - , Crefname = { - , english = {Fact}{Facts} - , french = [Le]{fait}[Les]{faits} - , ngerman = { {Tatsache}{Tatsachen} - , Nominativ = [Die]{Tatsache}[Die]{Tatsachen} - , Genitiv = [Der]{Tatsache}[Der]{Tatsachen} - , Dativ = [Der]{Tatsache}[Den]{Tatsachen} - , Akkusativ = [Die]{Tatsache}[Die]{Tatsachen} - } - , italian = [Il]{fatto}[I]{fatti} - , portuguese = [O]{facto}[Os]{factos} - , brazilian = [O]{fato}[Os]{fatos} - , spanish = [El]{hecho}[Los]{hechos} - , schinese = {事实}{事实} - , tchinese = {事實}{事實} - , japanese = {事実}{事実} - , russian = {Факт}{Факты} - } - } - -\NameTheorem { hypothesis } - { - , heading = { - , english = Hypothesis - , french = Hypothèse - , ngerman = Hypothese - , italian = Ipotesi - , portuguese = Hipótese - , brazilian = Hipótese - , spanish = Hipótesis - , schinese = 假设 - , tchinese = 假設 - , japanese = 仮設 - , russian = Гипотеза - } - , crefname = { - , english = {hypothesis}{hypotheses} - , french = [l']{hypothèse}[les]{hypothèses} - , ngerman = { {Hypothese}{Hypothesen} - , Nominativ = [die]{Hypothese}[die]{Hypothesen} - , Genitiv = [der]{Hypothese}[der]{Hypothesen} - , Dativ = [der]{Hypothese}[den]{Hypothesen} - , Akkusativ = [die]{Hypothese}[die]{Hypothesen} - } - , italian = [l']{ipotesi}[le]{ipotesi} - , portuguese = [a]{hipótese}[as]{hipóteses} - , brazilian = [a]{hipótese}[as]{hipóteses} - , spanish = [la]{hipótesis}[las]{hipótesis} - , schinese = {假设}{假设} - , tchinese = {假設}{假設} - , japanese = {仮設}{仮設} - , russian = {гипотеза}{гипотезы} - } - , Crefname = { - , english = {Hypothesis}{Hypotheses} - , french = [L']{hypothèse}[Les]{hypothèses} - , ngerman = { {Hypothese}{Hypothesen} - , Nominativ = [Die]{Hypothese}[Die]{Hypothesen} - , Genitiv = [Der]{Hypothese}[Der]{Hypothesen} - , Dativ = [Der]{Hypothese}[Den]{Hypothesen} - , Akkusativ = [Die]{Hypothese}[Die]{Hypothesen} - } - , italian = [L']{ipotesi}[Le]{ipotesi} - , portuguese = [A]{hipótese}[As]{hipóteses} - , brazilian = [A]{hipótese}[As]{hipóteses} - , spanish = [La]{hipótesis}[Las]{hipótesis} - , schinese = {假设}{假设} - , tchinese = {假設}{假設} - , japanese = {仮設}{仮設} - , russian = {Гипотеза}{Гипотезы} - } - } - -\NameTheorem { lemma } - { - , heading = { - , english = Lemma - , french = Lemme - , ngerman = Lemma - , italian = Lemma - , portuguese = Lema - , brazilian = Lema - , spanish = Lema - , schinese = 引理 - , tchinese = 引理 - , japanese = 補題 - , russian = Лемма - } - , crefname = { - , english = {lemma}{Lemmas} - , french = [le]{lemme}[les]{lemmes} - , ngerman = { {Lemma}{Lemmata} - , Nominativ = [das]{Lemma}[die]{Lemmata} - , Genitiv = [des]{Lemmas}[der]{Lemmata} - , Dativ = [dem]{Lemma}[den]{Lemmata} - , Akkusativ = [das]{Lemma}[die]{Lemmata} - } - , italian = [il]{lemma}[i]{lemmi} - , portuguese = [o]{lema}[os]{lemas} - , brazilian = [o]{lema}[os]{lemas} - , spanish = [el]{lema}[las]{lemas} - , schinese = {引理}{引理} - , tchinese = {引理}{引理} - , japanese = {補題}{補題} - , russian = {лемма}{леммы} - } - , Crefname = { - , english = {Lemma}{Lemmas} - , french = [Le]{lemme}[Les]{lemmes} - , ngerman = { {Lemma}{Lemmata} - , Nominativ = [Das]{Lemma}[Die]{Lemmata} - , Genitiv = [Des]{Lemmas}[Der]{Lemmata} - , Dativ = [Dem]{Lemma}[Den]{Lemmata} - , Akkusativ = [Das]{Lemma}[Die]{Lemmata} - } - , italian = [Il]{lemma}[I]{lemmi} - , portuguese = [O]{lema}[Os]{lemas} - , brazilian = [O]{lema}[Os]{lemas} - , spanish = [el]{lema}[las]{lemas} - , schinese = {引理}{引理} - , tchinese = {引理}{引理} - , japanese = {補題}{補題} - , russian = {Лемма}{Леммы} - } - } - -\NameTheorem { notation } - { - , heading = { - , english = Notation - , french = Notation - , ngerman = Notation - , italian = Notazione - , portuguese = Notação - , brazilian = Notação - , spanish = Notación - , schinese = 记号 - , tchinese = 記號 - , japanese = 記法 - , russian = Нотация - } - , crefname = { - , english = {notation}{notations} - , french = [la]{notation}[les]{notations} - , ngerman = { {Notation}{Notationen} - , Nominativ = [die]{Notation}[die]{Notationen} - , Genitiv = [der]{Notation}[der]{Notationen} - , Dativ = [der]{Notation}[den]{Notationen} - , Akkusativ = [die]{Notation}[die]{Notationen} - } - , italian = [la]{notazione}[le]{notazioni} - , portuguese = [a]{notação}[as]{notações} - , brazilian = [a]{notação}[as]{notações} - , spanish = [la]{notación}[las]{notaciones} - , schinese = {记号}{记号} - , tchinese = {記號}{記號} - , japanese = {記法}{記法} - , russian = {нотация}{нотации} - } - , Crefname = { - , english = {Notation}{Notations} - , french = [La]{notation}[Les]{notations} - , ngerman = { {Notation}{Notationen} - , Nominativ = [Die]{Notation}[Die]{Notationen} - , Genitiv = [Der]{Notation}[Der]{Notationen} - , Dativ = [Der]{Notation}[Den]{Notationen} - , Akkusativ = [Die]{Notation}[Die]{Notationen} - } - , italian = [La]{notazione}[Le]{notazioni} - , portuguese = [A]{notação}[As]{notações} - , brazilian = [A]{notação}[As]{notações} - , spanish = [La]{notación}[Las]{notaciones} - , schinese = {记号}{记号} - , tchinese = {記號}{記號} - , japanese = {記法}{記法} - , russian = {Нотация}{Нотации} - } - } - -\NameTheorem { observation } - { - , heading = { - , english = Observation - , french = Observation - , ngerman = Beobachtung - , italian = Osservazione - , portuguese = Observação - , brazilian = Observação - , spanish = Observación - , schinese = 观察 - , tchinese = 觀察 - , japanese = 観察 - , russian = Наблюдение - } - , crefname = { - , english = {observation}{observations} - , french = [la]{observation}[les]{observations} - , ngerman = { {Beobachtung}{Beobachtungen} - , Nominativ = [die]{Beobachtung}[die]{Beobachtungen} - , Genitiv = [der]{Beobachtung}[der]{Beobachtungen} - , Dativ = [der]{Beobachtung}[den]{Beobachtungen} - , Akkusativ = [die]{Beobachtung}[die]{Beobachtungen} - } - , italian = [l']{osservazione}[le]{osservazioni} - , portuguese = [a]{observação}[as]{observações} - , brazilian = [a]{observação}[as]{observações} - , spanish = [la]{observación}[las]{observaciones} - , schinese = {观察}{观察} - , tchinese = {觀察}{觀察} - , japanese = {観察}{観察} - , russian = {наблюдение}{наблюдения} - } - , Crefname = { - , english = {Observation}{Observations} - , french = [La]{observation}[Les]{observations} - , ngerman = { {Beobachtung}{Beobachtungen} - , Nominativ = [Die]{Beobachtung}[Die]{Beobachtungen} - , Genitiv = [Der]{Beobachtung}[Der]{Beobachtungen} - , Dativ = [Der]{Beobachtung}[Den]{Beobachtungen} - , Akkusativ = [Die]{Beobachtung}[Die]{Beobachtungen} - } - , italian = [L']{osservazione}[Le]{osservazioni} - , portuguese = [A]{observação}[As]{observações} - , brazilian = [A]{observação}[As]{observações} - , spanish = [La]{observación}[Las]{observaciones} - , schinese = {观察}{观察} - , tchinese = {觀察}{觀察} - , japanese = {観察}{観察} - , russian = {Наблюдение}{Наблюдения} - } - } - -\NameTheorem { postulate } - { - , heading = { - , english = Postulate - , french = Postulat - , ngerman = Postulat - , italian = Postulato - , portuguese = Postulado - , brazilian = Postulado - , spanish = Postulado - , schinese = 公设 - , tchinese = 公設 - , japanese = 公準 - , russian = Постулат - } - , crefname = { - , english = {postulate}{postulates} - , french = [le]{postulat}[les]{postulats} - , ngerman = { {Postulat}{Postulate} - , Nominativ = [das]{Postulat}[die]{Postulate} - , Genitiv = [des]{Postulates}[der]{Postulate} - , Dativ = [dem]{Postulat}[den]{Postulaten} - , Akkusativ = [das]{Postulat}[die]{Postulate} - } - , italian = [il]{postulato}[i]{postulati} - , portuguese = [o]{postulado}[os]{postulados} - , brazilian = [o]{postulado}[os]{postulados} - , spanish = [el]{postulado}[los]{postulados} - , schinese = {公设}{公设} - , tchinese = {公設}{公設} - , japanese = {公準}{公準} - , russian = {постулат}{постулаты} - } - , Crefname = { - , english = {Postulate}{Postulates} - , french = [Le]{postulat}[Les]{postulats} - , ngerman = { {Postulat}{Postulate} - , Nominativ = [Das]{Postulat}[Die]{Postulate} - , Genitiv = [Des]{Postulates}[Der]{Postulate} - , Dativ = [Dem]{Postulat}[Den]{Postulaten} - , Akkusativ = [Das]{Postulat}[Die]{Postulate} - } - , italian = [Il]{postulato}[I]{postulati} - , portuguese = [O]{postulado}[Os]{postulados} - , brazilian = [O]{postulado}[Os]{postulados} - , spanish = [El]{postulado}[Los]{postulados} - , schinese = {公设}{公设} - , tchinese = {公設}{公設} - , japanese = {公準}{公準} - , russian = {Постулат}{Постулаты} - } - } - -\NameTheorem { problem } - { - , heading = { - , english = Problem - , french = Problème - , ngerman = Problem - , italian = Problema - , portuguese = Problema - , brazilian = Problema - , spanish = Problema - , schinese = 问题 - , tchinese = 問題 - , japanese = 問題 - , russian = Проблема - } - , crefname = { - , english = {problem}{problems} - , french = [le]{problème}[les]{problèmes} - , ngerman = { {Problem}{Probleme} - , Nominativ = [das]{Problem}[die]{Probleme} - , Genitiv = [des]{Problems}[der]{Probleme} - , Dativ = [dem]{Problem}[den]{Problemen} - , Akkusativ = [das]{Problem}[die]{Probleme} - } - , italian = [il]{problema}[i]{problemi} - , portuguese = [o]{problema}[os]{problemas} - , brazilian = [o]{problema}[os]{problemas} - , spanish = [el]{problema}[los]{problemas} - , schinese = {问题}{问题} - , tchinese = {問題}{問題} - , japanese = {問題}{問題} - , russian = {проблема}{проблемы} - } - , Crefname = { - , english = {Problem}{Problems} - , french = [Le]{problème}[Les]{problèmes} - , ngerman = { {Problem}{Probleme} - , Nominativ = [Das]{Problem}[Die]{Probleme} - , Genitiv = [Des]{Problems}[Der]{Probleme} - , Dativ = [Dem]{Problem}[Den]{Problemen} - , Akkusativ = [Das]{Problem}[Die]{Probleme} - } - , italian = [Il]{problema}[I]{problemi} - , portuguese = [O]{problema}[Os]{problemas} - , brazilian = [O]{problema}[Os]{problemas} - , spanish = [El]{problema}[Los]{problemas} - , schinese = {问题}{问题} - , tchinese = {問題}{問題} - , japanese = {問題}{問題} - , russian = {Проблема}{Проблемы} - } - } - -\NameTheorem { property } - { - , heading = { - , english = Property - , french = Propriété - , ngerman = Eigenschaft - , italian = Proprietà - , portuguese = Propriedade - , brazilian = Propriedade - , spanish = Propiedad - , schinese = 性质 - , tchinese = 性質 - , japanese = 性質 - , russian = Имущество - } - , crefname = { - , english = {property}{properties} - , french = [la]{propriété}[les]{propriétés} - , ngerman = { {Eigenschaft}{Eigenschaften} - , Nominativ = [die]{Eigenschaft}[die]{Eigenschaften} - , Genitiv = [der]{Eigenschaft}[der]{Eigenschaften} - , Dativ = [der]{Eigenschaft}[den]{Eigenschaften} - , Akkusativ = [die]{Eigenschaft}[die]{Eigenschaften} - } - , italian = [la]{proprietà}[le]{proprietà} - , portuguese = [a]{propriedade}[as]{propriedades} - , brazilian = [a]{propriedade}[as]{propriedades} - , spanish = [la]{propiedad}[las]{propiedades} - , schinese = {性质}{性质} - , tchinese = {性質}{性質} - , japanese = {性質}{性質} - , russian = {имущество}{имущества} - } - , Crefname = { - , english = {Property}{Properties} - , french = [La]{propriété}[Les]{propriétés} - , ngerman = { {Eigenschaft}{Eigenschaften} - , Nominativ = [Die]{Eigenschaft}[Die]{Eigenschaften} - , Genitiv = [Der]{Eigenschaft}[Der]{Eigenschaften} - , Dativ = [Der]{Eigenschaft}[Den]{Eigenschaften} - , Akkusativ = [Die]{Eigenschaft}[Die]{Eigenschaften} - } - , italian = [La]{proprietà}[Le]{proprietà} - , portuguese = [A]{propriedade}[As]{propriedades} - , brazilian = [A]{propriedade}[As]{propriedades} - , spanish = [La]{propiedad}[Las]{propiedades} - , schinese = {性质}{性质} - , tchinese = {性質}{性質} - , japanese = {性質}{性質} - , russian = {Имущество}{Имущества} - } - } - -\NameTheorem { proposition } - { - , heading = { - , english = Proposition - , french = Proposition - , ngerman = Proposition - , italian = Proposizione - , portuguese = Proposição - , brazilian = Proposição - , spanish = Proposición - , schinese = 命题 - , tchinese = 命題 - , japanese = 命題 - , russian = Предложение - } - , crefname = { - , english = {proposition}{propositions} - , french = [la]{proposition}[les]{propositions} - , ngerman = { {Proposition}{Propositionen} - , Nominativ = [die]{Proposition}[die]{Propositionen} - , Genitiv = [der]{Proposition}[der]{Propositionen} - , Dativ = [der]{Proposition}[den]{Propositionen} - , Akkusativ = [die]{Proposition}[die]{Propositionen} - } - , italian = [la]{proposizione}[le]{proposte} - , portuguese = [a]{proposição}[as]{proposições} - , brazilian = [a]{proposição}[as]{proposições} - , spanish = [la]{proposición}[las]{proposiciones} - , schinese = {命题}{命题} - , tchinese = {命題}{命題} - , japanese = {命題}{命題} - , russian = {предложение}{предложения} - } - , Crefname = { - , english = {Proposition}{Propositions} - , french = [La]{proposition}[Les]{propositions} - , ngerman = { {Proposition}{Propositionen} - , Nominativ = [Die]{Proposition}[Die]{Propositionen} - , Genitiv = [Der]{Proposition}[Der]{Propositionen} - , Dativ = [Der]{Proposition}[Den]{Propositionen} - , Akkusativ = [Die]{Proposition}[Die]{Propositionen} - } - , italian = [La]{proposizione}[Le]{proposte} - , portuguese = [A]{proposição}[As]{proposições} - , brazilian = [A]{proposição}[As]{proposições} - , spanish = [La]{proposición}[Las]{proposiciones} - , schinese = {命题}{命题} - , tchinese = {命題}{命題} - , japanese = {命題}{命題} - , russian = {Предложение}{Предложения} - } - } - -\NameTheorem { question } - { - , heading = { - , english = Question - , french = Question - , ngerman = Frage - , italian = Domanda - , portuguese = Pergunta - , brazilian = Pergunta - , spanish = Pregunta - , schinese = 问题 - , tchinese = 問題 - , japanese = 問題 - , russian = Вопрос - } - , crefname = { - , english = {question}{questions} - , french = [la]{question}[les]{questions} - , ngerman = { {Frage}{Fragen} - , Nominativ = [die]{Frage}[die]{Fragen} - , Genitiv = [der]{Frage}[der]{Fragen} - , Dativ = [der]{Frage}[den]{Fragen} - , Akkusativ = [die]{Frage}[die]{Fragen} - } - , italian = [la]{domanda}[le]{domande} - , portuguese = [a]{pergunta}[as]{perguntas} - , brazilian = [a]{pergunta}[as]{perguntas} - , spanish = [la]{pregunta}[las]{preguntas} - , schinese = {问题}{问题} - , tchinese = {問題}{問題} - , japanese = {問題}{問題} - , russian = {вопрос}{вопросы} - } - , Crefname = { - , english = {Question}{Questions} - , french = [La]{question}[Les]{questions} - , ngerman = { {Frage}{Fragen} - , Nominativ = [Die]{Frage}[Die]{Fragen} - , Genitiv = [Der]{Frage}[Der]{Fragen} - , Dativ = [Der]{Frage}[Den]{Fragen} - , Akkusativ = [Die]{Frage}[Die]{Fragen} - } - , italian = [La]{domanda}[Le]{domande} - , portuguese = [A]{pergunta}[As]{perguntas} - , brazilian = [A]{pergunta}[As]{perguntas} - , spanish = [La]{pregunta}[Las]{preguntas} - , schinese = {问题}{问题} - , tchinese = {問題}{問題} - , japanese = {問題}{問題} - , russian = {Вопрос}{Вопросы} - } - } - -\NameTheorem { recall } - { - , heading = { - , english = Recall - , french = Rappel - , ngerman = Erinnerung - , italian = Richiamo - , portuguese = Recordação - , brazilian = Recordação - , spanish = Recuerdo - , schinese = 回顾 - , tchinese = 回顧 - , japanese = 回顧 - , russian = Напоминание - } - , crefname = { - , english = {recall}{recalls} - , french = [le]{rappel}[les]{rappels} - , ngerman = { {Erinnerung}{Erinnerungen} - , Nominativ = [die]{Erinnerung}[die]{Erinnerungen} - , Genitiv = [der]{Erinnerung}[der]{Erinnerungen} - , Dativ = [der]{Erinnerung}[den]{Erinnerungen} - , Akkusativ = [die]{Erinnerung}[die]{Erinnerungen} - } - , italian = [il]{richiamo}[i]{richiami} - , portuguese = [a]{recordação}[as]{recordações} - , brazilian = [a]{recordação}[as]{recordações} - , spanish = [el]{recuerdo}[los]{recuerdos} - , schinese = {回顾}{回顾} - , tchinese = {回顧}{回顧} - , japanese = {回顧}{回顧} - , russian = {напоминание}{напоминания} - } - , Crefname = { - , english = {Recall}{Recalls} - , french = [Le]{rappel}[Les]{rappels} - , ngerman = { {Erinnerung}{Erinnerungen} - , Nominativ = [Die]{Erinnerung}[Die]{Erinnerungen} - , Genitiv = [Der]{Erinnerung}[Der]{Erinnerungen} - , Dativ = [Der]{Erinnerung}[Den]{Erinnerungen} - , Akkusativ = [Die]{Erinnerung}[Die]{Erinnerungen} - } - , italian = [Il]{richiamo}[I]{richiami} - , portuguese = [A]{recordação}[As]{recordações} - , brazilian = [A]{recordação}[As]{recordações} - , spanish = [El]{recuerdo}[Los]{recuerdos} - , schinese = {回顾}{回顾} - , tchinese = {回顧}{回顧} - , japanese = {回顧}{回顧} - , russian = {Напоминание}{Напоминания} - } - } - -\NameTheorem { remark } - { - , heading = { - , english = Remark - , french = Remarque - , ngerman = Bemerkung - , italian = Commento - , portuguese = Comentário - , brazilian = Comentário - , spanish = Comentario - , schinese = 备注 - , tchinese = 備註 - , japanese = 注釈 - , russian = Замечание - } - , crefname = { - , english = {remark}{remarks} - , french = [la]{remarque}[les]{remarques} - , ngerman = { {Bemerkung}{Bemerkungen} - , Nominativ = [die]{Bemerkung}[die]{Bemerkungen} - , Genitiv = [der]{Bemerkung}[der]{Bemerkungen} - , Dativ = [der]{Bemerkung}[den]{Bemerkungen} - , Akkusativ = [die]{Bemerkung}[die]{Bemerkungen} - } - , 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 = {Remark}{Remarks} - , french = [La]{remarque}[Les]{remarques} - , ngerman = { {Bemerkung}{Bemerkungen} - , Nominativ = [Die]{Bemerkung}[Die]{Bemerkungen} - , Genitiv = [Der]{Bemerkung}[Der]{Bemerkungen} - , Dativ = [Der]{Bemerkung}[Den]{Bemerkungen} - , Akkusativ = [Die]{Bemerkung}[Die]{Bemerkungen} - } - , 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 { theorem } - { - , heading = { - , english = Theorem - , french = Théorème - , ngerman = Satz - , italian = Teorema - , portuguese = Teorema - , brazilian = Teorema - , spanish = Teorema - , schinese = 定理 - , tchinese = 定理 - , japanese = 定理 - , russian = Теорема - } - , crefname = { - , english = {theorem}{theorems} - , french = [le]{théorème}[les]{théorèmes} - , ngerman = { {Satz}{Sätze} - , Nominativ = [der]{Satz}[die]{Sätze} - , Genitiv = [des]{Satzes}[der]{Sätze} - , Dativ = [dem]{Satz}[den]{Sätzen} - , Akkusativ = [den]{Satz}[die]{Sätze} - } - , italian = [il]{teorema}[i]{teoremi} - , portuguese = [o]{teorema}[os]{teoremas} - , brazilian = [o]{teorema}[os]{teoremas} - , spanish = [el]{teorema}[los]{teoremas} - , schinese = {定理}{定理} - , tchinese = {定理}{定理} - , japanese = {定理}{定理} - , russian = {теорема}{теоремы} - } - , Crefname = { - , english = {Theorem}{Theorems} - , french = [Le]{théorème}[Les]{théorèmes} - , ngerman = { {Satz}{Sätze} - , Nominativ = [Der]{Satz}[Die]{Sätze} - , Genitiv = [Des]{Satzes}[Der]{Sätze} - , Dativ = [Dem]{Satz}[Den]{Sätzen} - , Akkusativ = [Den]{Satz}[Die]{Sätze} - } - , italian = [Il]{teorema}[I]{teoremi} - , portuguese = [O]{teorema}[Os]{teoremas} - , brazilian = [O]{teorema}[Os]{teoremas} - , spanish = [El]{teorema}[Los]{teoremas} - , schinese = {定理}{定理} - , tchinese = {定理}{定理} - , japanese = {定理}{定理} - , russian = {Теорема}{Теоремы} - } - } - -\NameTheorem { definition-corollary } { combined = { definition ; corollary } } -\NameTheorem { definition-proposition } { combined = { definition ; proposition } } -\NameTheorem { definition-theorem } { combined = { definition ; theorem } } - -\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/doc/create-theorem-doc.pdf b/macros/latex/contrib/create-theorem/doc/create-theorem-doc.pdf new file mode 100644 index 0000000000..b62eea4455 Binary files /dev/null and b/macros/latex/contrib/create-theorem/doc/create-theorem-doc.pdf differ diff --git a/macros/latex/contrib/create-theorem/doc/create-theorem-doc.tex b/macros/latex/contrib/create-theorem/doc/create-theorem-doc.tex new file mode 100644 index 0000000000..532796dd52 --- /dev/null +++ b/macros/latex/contrib/create-theorem/doc/create-theorem-doc.tex @@ -0,0 +1,742 @@ +%! TEX program = xelatex +\documentclass[classical]{einfart} + +\usepackage{ProjLib} + +%%================================ +%% For typesetting code +%%================================ +\usepackage{listings} +\usepackage{xcolor} +\usepackage{setspace} +\definecolor{code-main}{RGB}{70,130,180} +\definecolor{code-expl3}{RGB}{240,50,60} +\definecolor{code-option}{RGB}{40,110,20} +\definecolor{code-keys}{RGB}{100,130,150} +\definecolor{code-comment}{RGB}{20,120,80} +\definecolor{code-background}{gray}{0.99} +\lstset{ + language = [LaTeX]TeX, + basicstyle = \ttfamily, + keywordstyle = \color{code-main}, + commentstyle = \color{code-comment}, + showstringspaces = false, + breaklines = true, + frame = lines, + backgroundcolor = \color{code-background}, + flexiblecolumns = true, + escapeinside = {(*}{*)}, + alsoletter = {_,:}, + % numbers = left, + % firstnumber = last, + numberstyle = \scriptsize\ttfamily, + stepnumber = 1, + numbersep = 5pt, +} +\newcommand{\meta}[1]{$\langle${\normalfont\itshape#1}$\rangle$} +\lstset{% LaTeX2 commands + classoffset = 0, + texcsstyle =* \color{code-main}, + moretexcs = + { + ExplSyntaxOn,ExplSyntaxOff, + NewDocumentCommand,NewDocumentEnvironment, + cref,crefname, + Cref,Crefname, + crefformat, + crefthe,crefthename, + Crefthe,Crefthename, + crefthevariantname,Crefthevariantname, + crefthemark, + selectlanguage, + languagename, + theoremstyle, + proofname, + NameTheorem, + NameTheorems, + CreateTheorem, + SetTheorem, + SetTheoremBinding, + } +} +\lstset{% LaTeX3 commands + classoffset = 1, + texcsstyle =* \color{code-expl3}, + moretexcs = + { + tl_new:N, + tl_set:Nn, + cs_undefine:c, + } +} +\lstnewenvironment{code}{\setstretch{1.05}\LocallyStopLineNumbers}{\ResumeLineNumbers\vspace{-.3\baselineskip}\vspace{-.5\parskip}} +\lstnewenvironment{code*}{\setstretch{1.05}\lstset{numbers=left}\LocallyStopLineNumbers}{\ResumeLineNumbers\vspace{-.3\baselineskip}\vspace{-.5\parskip}} + +\newcommand{\packageoption}[1]{\texttt{\textcolor{code-option}{#1}}} +\newcommand{\commandoption}[1]{\texttt{\textcolor{code-keys}{#1}}} + +%%================================ +%% tip +%%================================ +\usepackage[many]{tcolorbox} +\newenvironment{tip}[1][Tip] + {% + \LocallyStopLineNumbers% + \begin{tcolorbox}[breakable, + enhanced, + width = \textwidth, + colback = paper, colbacktitle = paper, + colframe = gray!50, boxrule=0.2mm, + coltitle = black, + fonttitle = \sffamily, + attach boxed title to top left = {yshift=-\tcboxedtitleheight/2, xshift=.5cm}, + boxed title style = {boxrule=0pt, colframe=paper}, + before skip = 3mm, + after skip = 3mm, + top = 2.5mm, + bottom = 1.5mm, + title={\scshape\sffamily #1}]% + } + {% + \end{tcolorbox}% + \ResumeLineNumbers% + } + + +\newcommand{\createtheorempackage}{\textsf{create-theorem}} + +\begin{document} + +\def\PackageVersion{2024/02/20} +\def\PackageSubVersion{a} + +\title{\createtheorempackage{}\\\smallskip\itshape Initializing and configuring theorem-like environments, with multilingual support} +\author{Jinwen XU} +\thanks{Corresponding to: \texttt{\createtheorempackage{} \PackageVersion\PackageSubVersion}} +\date{\TheDate{\PackageVersion}[only-year-month], in Paris} + +\maketitle + +\begin{abstract} + \raggedleft + The package \createtheorempackage{} provides commands for naming, initializing and configuring theorem-like environments. All of these commands have key-value based interface and \\are especially useful in multi-language documents, allowing the easy declaration of \\theorem-like environments that can automatically adapt to the language settings. +\end{abstract} + +\vspace{-.5\baselineskip} + +% \section*{Before everything} + +% Make sure that the package \textsf{crefthe} is correctly installed. If you are using TeX Live 2022 or newer, or the newest version of MikTeX, then nothing needs to be worried. + +\section{How to load it} + +First, you need a backend to provide the command \lstinline|\newtheorem| with the usual behaviour, for example, \textsf{amsthm} or \textsf{ntheorem}. After that, you can simply load the current package with: + +\begin{code} +\usepackage[(*\meta{options}*)]{create-theorem} +\end{code} + +\begin{tip}[Attention] + Since \createtheorempackage{} uses \textsf{cleveref} internally, it should usually be placed near the last of your preamble --- notably, it needs to be loaded after \textsf{varioref} and \textsf{hyperref}. +\end{tip} + +\medskip +It has the following options: +\begin{itemize}[label=,leftmargin=1.25em,itemindent=-1.25em] + % \item \packageoption{draft} or \packageoption{fast} + % \begin{itemize} + % \item Fast mode. The functionality will be appropriately reduced to get faster compilation speed, recommended to use during the writing stage. + % \end{itemize} + \item \packageoption{name as context} + \begin{itemize} + \item When referencing, the resulted names shall correspond to the current context of your text. For example, the names shall be displayed in English when you are referencing a theorem-like environment in an English context, no matter in which linguistic context the target environment appeared. + \item This is the default behavior. + \item Synonymous names: \packageoption{name-as-context} \,$|$\, \packageoption{nameascontext} \,$|$\, \packageoption{regionalref} + \end{itemize} + \item \packageoption{name as is} + \begin{itemize} + \item When referencing, the resulted names shall correspond to the contexts in which the target environments appeared. For example, if the target environment is written in an English context, then its name shall always be displayed in English when referencing, regardless of the current linguistic context. + \item Synonymous names: \packageoption{name-as-is} \,$|$\, \packageoption{nameasis} \,$|$\, \packageoption{originalref} + \end{itemize} + \item \packageoption{name in link} + \begin{itemize} + \item Include the names in the hyperlinks when referencing. + \item Synonymous names: \packageoption{name-in-link} \,$|$\, \packageoption{nameinlink} + \end{itemize} + \item \packageoption{no preset names} + \begin{itemize} + \item Disable the preset names. Use this option if you want to define you own name set. + \item Synonymous names: \packageoption{no-preset-names} \,$|$\, \packageoption{nopresetnames} + \end{itemize} +\end{itemize} + +\clearpage + +\section{How to use it} + +\subsection[Naming theorem-like environments]{Naming theorem-like environments with \texttt{\textcolor{code-main}{\textbackslash NameTheorem}}} + +The syntax of \lstinline|\NameTheorem| is as follows: +\begin{code} +\NameTheorem{(*\meta{name of environment}*)}{(*\meta{key-value configuration}*)} +\end{code} + +Supported keys are: +\vspace{-.2\baselineskip} +\begin{itemize}[label=,leftmargin=1.25em,itemindent=-1.25em] + \item \commandoption{heading}\lstinline| = |\meta{configuration} + \begin{itemize} + \item The heading of the environment, where \meta{configuration} can be: + \begin{itemize} + \item a single string in monolingual documents: \commandoption{heading}\lstinline| = |\meta{string}; + \item a key-value name list in multilingual documents: +\begin{code} +(*\commandoption{heading}*) = { + (*\meta{language name}*) = (*\meta{string}*) + } +\end{code} + \end{itemize} + \end{itemize} + \item \commandoption{heading style}\lstinline| = |\meta{style} + \begin{itemize} + \item The style of the heading, you can specify the font, text style, color, etc. + \item Synonymous names: \commandoption{heading-style} \,$|$\, \commandoption{headingstyle} + \end{itemize} + \item \commandoption{crefname}\lstinline| = |\meta{configuration} + \begin{itemize} + \item The name for \lstinline|\cref| the environment, where \meta{configuration} can be: + \begin{itemize} + \item a single string in monolingual documents: \commandoption{crefname}\lstinline| = {name}{names}|; + \item a key-value name list in multilingual documents: +\begin{code} +(*\commandoption{crefname}*) = { + (*\meta{language name}*) = {(*\meta{singular name}*)}{(*\meta{plural name}*)} + } +\end{code} + \end{itemize} + \item Also supports the syntax of \lstinline|\crefthename|, thus you can assign names of the form: +\begin{code} +[(*\meta{singular definite article}*)]{(*\meta{singular name}*)}[(*\meta{plural definite article}*)]{(*\meta{plural name}*)} +\end{code} + This would be useful for languages like French, Italian, Spanish, etc. + \item Also supports the syntax of \lstinline|\crefthevariantname|, thus you can assign different set of names for different variants/declensions (the first line in the configuration is the default name set, which is used in case no variants is specified when referencing): +\begin{code} +(*\commandoption{crefname}*) = { + (*\meta{language name}*) = { [...]{...}[...]{...} + , (*\meta{variant 1}*) = [...]{...}[...]{...} + , (*\meta{variant 2}*) = [...]{...}[...]{...} + ... + } + } +\end{code} + This would be useful for languages like German, Russian, etc. + \end{itemize} + \item \commandoption{crefname style}\lstinline| = |\meta{style} + \begin{itemize} + \item The style of \textquote{crefname} when referencing, you may specify the font, text style, color, etc. + \item Synonymous names: \commandoption{crefname-style} \,$|$\, \commandoption{crefnamestyle} + \end{itemize} + \item \commandoption{Crefname}\lstinline| = |\meta{configuration} + \begin{itemize} + \item The name for \lstinline|\Cref| the environment, its syntax is the same as that of \commandoption{crefname}. + \item Also supports the syntax of \lstinline|\Crefthename| and \lstinline|\Crefthevariantname|. + \end{itemize} + \item \commandoption{Crefname style}\lstinline| = |\meta{style} + \begin{itemize} + \item The style of \textquote{Crefname} when referencing, you may specify the font, text style, color, etc. + \item Synonymous names: \commandoption{Crefname-style} \,$|$\, \commandoption{Crefnamestyle} + \end{itemize} + \item \commandoption{numbering style}\lstinline| = |\meta{style} + \begin{itemize} + \item The style of numbering in the reference, you can specify the font, text style, color, etc. + \item Synonymous names: \commandoption{numbering-style} \,$|$\, \commandoption{numberingstyle} + \end{itemize} + \item \commandoption{use name}\lstinline| = |\meta{list of existed environment(s) separated with semicolon \textquote{ ; }} + \begin{itemize} + \item Use the name(s) and style(s) of the given environment(s). If there are multiple ones specified, the result would be a string combining the names, separated with \textquote{\texttt{-}}. + \item The definite articles (if exist) are chosen to be that of the last given environment. + \item Synonymous names: \commandoption{combined} \,$|$\, \commandoption{use-name} \,$|$\, \commandoption{usename} + \end{itemize} +\end{itemize} + +\vspace{-.3\baselineskip} +\begin{tip} + You can also define the names within \lstinline|\CreateTheorem| while initializing the theorem-like environments. \lstinline|\NameTheorem| is especially useful for package or class authors who wish to preset suitable names (with styles) in their packages or classes. +\end{tip} + + +\subsection[Initializing theorem-like environments]{Initializing theorem-like environments with \texttt{\textcolor{code-main}{\textbackslash CreateTheorem}}} + +The syntax of \lstinline|\CreateTheorem| is as follows: +\begin{code} +\CreateTheorem{(*\meta{list of the name of environments}*)}{(*\meta{key-value configuration}*)} +\end{code} + +\begin{tip}[Attention] + When the \meta{key-value configuration} is empty, don't forget to include the second pair of curly brackets, for example, \lstinline|\CreateTheorem{theorem}{}|. +\end{tip} + +Supported keys are: +\vspace{-.2\baselineskip} +\begin{itemize}[label=,leftmargin=1.25em,itemindent=-1.25em] + \item \commandoption{name}\lstinline| = |\meta{configuration} \quad or \quad \commandoption{name style}\lstinline| = |\meta{configuration} + \begin{itemize} + \item Setting the names. Same as \lstinline|\NameTheorem{|\meta{name of environment}\lstinline|}{|\meta{configuration}\lstinline|}|. + \item Synonymous names: \commandoption{name-style} \,$|$\, \commandoption{namestyle} + \end{itemize} + \item \commandoption{use name}\lstinline| = |\meta{list of existed environment(s) separated with semicolon \textquote{ ; }} + \begin{itemize} + \item Using existed name(s). Same as in \lstinline|\NameTheorem|. + \item Synonymous names: \commandoption{combined} \,$|$\, \commandoption{use-name} \,$|$\, \commandoption{usename} + \end{itemize} + \item \commandoption{style}\lstinline| = |\meta{theorem style} + \begin{itemize} + \item Specifying the \lstinline|\theoremstyle| for the current environment. + \item Synonymous names: \commandoption{apply style} \,$|$\, \commandoption{apply-style} \,$|$\, \commandoption{applystyle} + \end{itemize} + \item \commandoption{qed} or \commandoption{qed}\lstinline| = |\meta{Q.E.D. symbol} + \begin{itemize} + \item Specifying the Q.E.D. symbol for the current environment. + \item Note that the Q.E.D. symbol has already been put in math mode. If you want regular text such as \textquote{Q.E.D.}, you need to write \commandoption{qed}\lstinline| = \mathrm{Q.E.D.}|. + \item If you are using \textsf{ntheorem} as the backend, then you need to load it with option \packageoption{thmmarks}. + \item Synonymous names: \commandoption{qed symbol} \,$|$\, \commandoption{qed-symbol} \,$|$\, \commandoption{qedsymbol} + \end{itemize} +\pagebreak + \item \commandoption{parent counter}\lstinline| = |\meta{parent counter} + \begin{itemize} + \item Specifying the \meta{parent counter} for the current environment, \emph{i.e.}, numbering will restart whenever that sectional level is encountered. + \item Synonymous names: \commandoption{parent-counter} \,$|$\, \commandoption{parentcounter} \,$|$\, \\\phantom{Synonymous names: }\commandoption{number within} \,$|$\, \commandoption{number-within} \,$|$\, \commandoption{numberwithin} + \end{itemize} + \item \commandoption{shared counter}\lstinline| = |\meta{shared counter} + \begin{itemize} + \item Specifying the \meta{shared counter} for the current environment, \emph{i.e.}, numbering will progress sequentially for all theorem-like environments using this counter. + \item Synonymous names: \commandoption{shared-counter} \,$|$\, \commandoption{sharedcounter} \,$|$\, \\\phantom{Synonymous names: }\commandoption{number like} \,$|$\, \commandoption{number-like} \,$|$\, \commandoption{numberlike} + \end{itemize} + \item \commandoption{numberless} + \begin{itemize} + \item Defining the current environment to be unnumbered. + \end{itemize} + \item \commandoption{create starred version} + \begin{itemize} + \item Defining a corresponding starred (unnumbered) version of the current environment. + \item It must be placed \emph{before} \commandoption{qed} if you want the starred version to have a Q.E.D symbol. + \item Synonymous names: \commandoption{create-starred-version} \,$|$\, \commandoption{createstarredversion} \,$|$\, \\\phantom{Synonymous names: }\commandoption{create numberless version} \,$|$\, \commandoption{create-numberless-version}~\,$|$\\\phantom{Synonymous names: }\commandoption{createnumberlessversion} + \end{itemize} + \item \commandoption{copy existed}\lstinline| = |\meta{existed environment} + \begin{itemize} + \item Defining the current environment to be the same as \meta{existed environment}. + \item This key is usually useful in the following two situations: + \begin{enumerate} + \item To use a more concise name. For example, with \lstinline|\CreateTheorem{thm}{|\commandoption{copy \\existed} \lstinline|= theorem}|, one can then use the name \texttt{thm} to write theorems. + \item To remove the numbering of some environments. For example, one can remove the numbering of the \texttt{remark} environment with \lstinline|\CreateTheorem{remark}{|\commandoption{copy existed} \lstinline|= remark*}|. + \end{enumerate} + \item Synonymous names: \commandoption{copy-existed} \,$|$\, \commandoption{copyexisted} + \end{itemize} +\end{itemize} + +\begin{tip} + 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 + +Please note that, for the sake of generality, the environment \meta{env} and its starred relative \meta{env}\texttt{*} do \emph{not} share the same set of names when they are separately defined. However, with proper usage of \commandoption{create starred version} and \commandoption{copy existed}, you should already be able to produce all of the following combinations that shares the same set of names: 1$)$ numbered \meta{env}, numbered \meta{env}\texttt{*} ; 2$)$ numbered \meta{env}, unnumbered \meta{env}\texttt{*} ; 3$)$ unnumbered \meta{env}, numbered \meta{env}\texttt{*} ; and 4$)$ unnumbered \meta{env}, unnumbered \meta{env}\texttt{*}. I left it as an easy exercise for you ;-) +The answer can be found in section \labelcref{subsec:numbering}. + +\medskip +\subsection[Configuring theorem-like environments]{Configuring theorem-like environments with \texttt{\textcolor{code-main}{\textbackslash SetTheorem}}} + +The previous two commands are especially useful for package or class writers, while this one is more for the users. If you are not satisfied with preset name styles or numbering settings, then even after initializing the environments, you can still further configure them by means of \lstinline|\SetTheorem|, the syntax of which is as follows: + +\begin{code} +\SetTheorem{(*\meta{list of the name of environments}*)}{(*\meta{key-value configuration}*)} +\end{code} + +% \begin{tip} +% \lstinline|\SetTheorem| should only be used in the preamble of your document. +% \end{tip} + +Supported keys are: +\vspace{-.2\baselineskip} +\begin{itemize}[label=,leftmargin=1.25em,itemindent=-1.25em] + \item \commandoption{name}\lstinline| = |\meta{configuration} and \commandoption{name style}\lstinline| = |\meta{configuration} + \begin{itemize} + \item Same as \lstinline|\NameTheorem{|\meta{name of environment}\lstinline|}{|\meta{configuration}\lstinline|}|. + \item Note that this configuration can overwrite those already specified in \lstinline|\NameTheorem|. + \item Synonymous names: \commandoption{name-style} \,$|$\, \commandoption{namestyle} + \end{itemize} + \item \commandoption{qed}\lstinline| = |\meta{Q.E.D. symbol} + \begin{itemize} + \item Specifying the Q.E.D. symbol for the current environment. + \item Note that this configuration only works if you have already enabled the Q.E.D. symbol during the creating phase of the corresponding environment. + \item Synonymous names: \commandoption{qed symbol} \,$|$\, \commandoption{qed-symbol} \,$|$\, \commandoption{qedsymbol} + \end{itemize} + \item \commandoption{parent counter}\lstinline| = |\meta{parent counter} + \begin{itemize} + \item Specifying the \meta{parent counter} for the current environment, \emph{i.e.}, numbering will restart whenever that sectional level is encountered. + \item Note that this configuration can overwrite those already specified in \lstinline|\CreateTheorem|. + \item Synonymous names: \commandoption{parent-counter} \,$|$\, \commandoption{parentcounter} \,$|$\, \\\phantom{Synonymous names: }\commandoption{number within} \,$|$\, \commandoption{number-within} \,$|$\, \commandoption{numberwithin} + \end{itemize} + \item \commandoption{shared counter}\lstinline| = |\meta{shared counter} + \begin{itemize} + \item Specifying the \meta{shared counter} for the current environment, \emph{i.e.}, numbering will progress sequentially for all theorem-like environments using this counter. + \item Note that this configuration can overwrite those already specified in \lstinline|\CreateTheorem|. + \item Synonymous names: \commandoption{shared-counter} \,$|$\, \commandoption{sharedcounter} \,$|$\, \\\phantom{Synonymous names: }\commandoption{number like} \,$|$\, \commandoption{number-like} \,$|$\, \commandoption{numberlike} + \end{itemize} +\end{itemize} + +\medskip +In some cases, you may define an internal environment (for example, a generic version) first and then use it to define the final environment. You may wish to hide the internal names from the users so that they can use \lstinline|\SetTheorem| with the name of the final environments. This can be done with the following command: +\begin{code} +\SetTheoremBinding{(*\meta{list of the name of environments}*)}{(*\meta{the environment to bind with}*)} +\end{code} + + +\medskip +\subsection[Setting the names in external language configuration files]{Setting the names in external language configuration files with \texttt{\textcolor{code-main}{\textbackslash NameTheorems}}} + +The command \lstinline|\NameTheorem| introduced earlier is for defining the names of a given environment for each language, which is more natural to use within a real-life document. However, for package/class authors wishing to maintain their language configuration files, it would be more convenient to use the following \lstinline|\NameTheorems|, which assigns the names for a given language all at once, made it possible to preset the names inside external files. + +\enlargethispage*{\baselineskip} +The syntax of \lstinline|\NameTheorems| is as follows (please note that the \meta{language name} here should be consistent with \lstinline|\languagename|): +\begin{code} +\NameTheorems{(*\meta{language name}*)}{(*\meta{key-value configuration}*)} +\end{code} + +Supported keys are (notice that you \emph{cannot} set the styles via \lstinline|\NameTheorems|): +\vspace{-.2\baselineskip} +\begin{itemize}[label=,leftmargin=1.25em,itemindent=-1.25em] + \item \commandoption{heading}\lstinline| = |\meta{configuration} + \begin{itemize} + \item The headings of the environments, where \meta{configuration} is a key-value name list: +\begin{code} +(*\commandoption{heading}*) = { + (*\meta{name of environment}*) = (*\meta{string}*) + } +\end{code} + \end{itemize} + \item \commandoption{crefname}\lstinline| = |\meta{configuration} + \begin{itemize} + \item The names for \lstinline|\cref| the environments, where \meta{configuration} is a key-value name list: +\begin{code} +(*\commandoption{crefname}*) = { + (*\meta{name of environment}*) = {(*\meta{singular name}*)}{(*\meta{plural name}*)} + } +\end{code} + \item Also supports the syntax of \lstinline|\crefthename| and \lstinline|\crefthevariantname|.\\ + Please refer to the description of \lstinline|\NameTheorem| for more details. + \end{itemize} + \item \commandoption{Crefname}\lstinline| = |\meta{configuration} + \begin{itemize} + \item The names for \lstinline|\Cref| the environments, its syntax is the same as that of \commandoption{crefname}. + \item Also supports the syntax of \lstinline|\Crefthename| and \lstinline|\Crefthevariantname|.\\ + Please refer to the description of \lstinline|\NameTheorem| for more details. + \end{itemize} +\end{itemize} + + +\bigskip +\begin{center} + \itshape + If you're feeling confused, don't worry. Let's now take a look at some examples. +\end{center} + + +\section{Examples} + +\subsection{The environment {\normalfont\texttt{idea}}} + +First, let's getting familiar with these two commands by creating the environment {\normalfont\texttt{idea}}. + +\begin{code} +\NameTheorem{idea} + { + (*\commandoption{heading}*) = Idea, + (*\commandoption{crefname}*) = {idea}{ideas}, + (*\commandoption{Crefname}*) = {Idea}{Ideas}, + } +\CreateTheorem{idea}{ (*\commandoption{parent counter}*) = section } +\end{code} + +or to do it in one turn: + +\begin{code} +\CreateTheorem{idea} + { + (*\commandoption{name}*) = { + (*\commandoption{heading}*) = Idea, + (*\commandoption{crefname}*) = {idea}{ideas}, + (*\commandoption{Crefname}*) = {Idea}{Ideas}, + }, + (*\commandoption{parent counter}*) = section, + } +\end{code} + +\smallskip +This is not exciting at all. Now, let's say we are writing a trilingual note in English, French and German. (I shall omit the \lstinline|\NameTheorem| version and do it all at once in \lstinline|\CreateTheorem|.) + +\begin{code} +\CreateTheorem{idea} + { + (*\commandoption{name}*) = { + (*\commandoption{heading}*) = { english = Idea, + french = Idée, + ngerman = Idee, }, + (*\commandoption{crefname}*) = { english = {idea}{ideas}, + french = [l']{idée}[les]{idées}, + ngerman = { {Idee}{Idee} + , Nominativ = [die]{Idee}[die]{Ideen} + , Genitiv = [der]{Idee}[der]{Ideen} + , Dativ = [der]{Idee}[den]{Ideen} + , Akkusativ = [die]{Idee}[die]{Ideen} + } }, + (*\commandoption{Crefname}*) = { english = {Idea}{Ideas}, + french = [L']{idée}[Les]{idées}, + ngerman = { {Idee}{Idee} + , Nominativ = [Die]{Idee}[Die]{Ideen} + , Genitiv = [Der]{Idee}[Der]{Ideen} + , Dativ = [Der]{Idee}[Den]{Ideen} + , Akkusativ = [Die]{Idee}[Die]{Ideen} + } }, + }, + (*\commandoption{parent counter}*) = section, + } +\end{code} + +With this, if you use \lstinline|\selectlanguage{french}|, the {\normalfont\texttt{idea}} environment shall be automatically displayed as \textquote{Idée}. And if you \lstinline|\crefthe| it, the definite article and the name would show up properly just as expected. + +The same happens for German with \lstinline|\selectlanguage{ngerman}|, and when referencing an {\normalfont\texttt{idea}} environment, you may specify the declension as with \lstinline|\crefthe[|\meta{prep}\lstinline|,variant=Nominativ]{|\meta{label}\lstinline|}|, or simply with shortcut such as \lstinline|\crefthe[|\meta{prep}\lstinline|,nom.]{|\meta{label}\lstinline|}|. + +\begin{tip} + For more datailed usage of the referencing command \lstinline|\crefthe|, please refer to the documentation of the package \textsf{crefthe}. +\end{tip} + +\bigskip +Next we shall deal with the problem of numbering. Let's continue to use this environment {\normalfont\texttt{idea}} for demonstration --- suppose that we have already set the names with \lstinline|\NameTheorem|. + + +\medskip +\subsection{Let's play with numbering} +\label{subsec:numbering} + +Remember the exercise I left you in the previous section? Let's do it together now. + +\subsubsection{Numbered {\normalfont\texttt{idea}} and numbered {\normalfont\texttt{idea*}}} + +This is easy, \commandoption{copy existed} suffices: + +\begin{code} +\CreateTheorem{idea}{(*\commandoption{parent counter}*) = section} +\CreateTheorem{idea*}{(*\commandoption{copy existed}*) = idea} +\end{code} + +\subsubsection{Numbered {\normalfont\texttt{idea}} and unnumbered {\normalfont\texttt{idea*}}} + +This is the most common situation, \commandoption{create starred version} will do. + +\begin{code} +\CreateTheorem{idea} + { + (*\commandoption{parent counter}*) = section, + (*\commandoption{create starred version}*), + } +\end{code} + +\begin{tip}[Attention] + Please note that you cannot use \lstinline|\CreateTheorem{idea*}{|\commandoption{numberless}\lstinline|}| here, since we don't have the names defined for {\normalfont\texttt{idea*}}. +\end{tip} + +\subsubsection{Unnumbered {\normalfont\texttt{idea}} and numbered {\normalfont\texttt{idea*}}} + +This is a bit tricky: by default we can only create numbered {\normalfont\texttt{idea}} or unnumbered {\normalfont\texttt{idea*}}, and the question is how to switch them. We shall need an intermediary for this purpose. + +\begin{code} +\CreateTheorem{idea}{(*\commandoption{create starred version}*)} +\CreateTheorem{idea-temp}{(*\commandoption{copy existed}*) = idea*} +\CreateTheorem{idea*}{(*\commandoption{copy existed}*) = idea} +\CreateTheorem{idea}{(*\commandoption{copy existed}*) = idea-temp} +\end{code} + +\subsubsection{Unnumbered {\normalfont\texttt{idea}} and unnumbered {\normalfont\texttt{idea*}}} + +This is essentially the combination of the first two cases --- we need to create {\normalfont\texttt{idea*}} first and then copy it to {\normalfont\texttt{idea}}: + +\begin{code} +\CreateTheorem{idea}{(*\commandoption{create starred version}*)} +\CreateTheorem{idea}{(*\commandoption{copy existed}*) = idea*} +\end{code} + +\medskip +In each case, the two environments {\normalfont\texttt{idea}} and {\normalfont\texttt{idea*}} share the same set of names. + +\begin{tip}[Attention] + The sole purpose of this section is to demonstrate the feature of this package --- some combinations are not recommended to use in the actual documents. +\end{tip} + + +\subsection{The \emph{proofless} version --- theorems with a Q.E.D. symbol} + +Sometimes you may encounter a theorem without a proof, in which case you might want a Q.E.D. symbol when the theorem is finished. This can be easily achieved via: + +\begin{code} +\CreateTheorem { theorem } { (*\commandoption{create starred version}*) } +\CreateTheorem { theorem+ } { (*\commandoption{copy existed}*) = theorem, (*\commandoption{qed}*) } +\CreateTheorem { theorem+* } { (*\commandoption{copy existed}*) = theorem*, (*\commandoption{qed}*) } +\end{code} + +The code above defines two new environments \lstinline|theorem+| and \lstinline|theorem+*| in addition to \lstinline|theorem| and \lstinline|theorem*|. The \lstinline|+| version behaves exactly the same as the usual version, except that it has a Q.E.D. symbol. + +\subsection{Redefine the {\normalfont\texttt{proof}} environment} + +If you wish to have a {\normalfont\texttt{proof}} environment with a custom theorem style, or to have a numbered version {\normalfont\texttt{proof*}} of it, the following code could be helpful: + +\begin{code} +\ExplSyntaxOn + +\newcounter { proof } +\tl_new:N \l_mymodule_name_of_proof_tl +\CreateTheorem { proof_inner } + { + (*\commandoption{name}*) = { (*\commandoption{heading}*) = { \l_mymodule_name_of_proof_tl } }, + (*\commandoption{create-starred-version}*), + (*\commandoption{style}*) = remark, + (*\commandoption{qed}*), + (*\commandoption{shared-counter}*) = proof, + } + +\cs_undefine:c { proof } +\cs_undefine:c { endproof } +\NewDocumentEnvironment { proof } { O{\proofname} } + { + \tl_set:Nn \l_mymodule_name_of_proof_tl { #1 } + \begin { proof_inner* } + } + { + \end { proof_inner* } + } +\NewDocumentEnvironment { proof* } { O{\proofname} } + { + \tl_set:Nn \l_mymodule_name_of_proof_tl { #1 } + \begin { proof_inner } + } + { + \end { proof_inner } + } + +\SetTheoremBinding { proof } { proof_inner* } +\SetTheoremBinding { proof* } { proof_inner } + +\ExplSyntaxOff +\end{code} + +It defines an environment \lstinline|proof_inner| (with its starred variant) with theorem style \lstinline|remark| to mimic the default style (you are welcome to use your own style here), and with the name to be a variable which is latter used to define the actual environments \lstinline|proof| and \lstinline|proof*|. These two environments are defined in such a way that \lstinline|proof| is the usual unnumbered version and \lstinline|proof*| is the numbered version. The \lstinline|\SetTheoremBinding| lines are to ensure that user can directly write \lstinline|\SetTheorem{proof}| instead of \lstinline|\SetTheorem{proof_inner*}|. + +\begin{tip}[Attention] + The code above requires \textsf{amsthm}. If you are using \textsf{ntheorem} as the backend, then you need to load it with option \packageoption{amsthm}, and remove the \lstinline|\newcounter| line. +\end{tip} + +\medskip +\subsection{Advanced topic: setting the names in an external file} + +A typical configuration looks like this: + +\begin{code} +\NameTheorems { english } + { + , (*\commandoption{heading}*) = { + , theorem = Theorem + , proposition = Proposition + ... + } + , (*\commandoption{crefname}*) = { + , theorem = {theorem}{theorems} + , proposition = {proposition}{propositions} + ... + } + , (*\commandoption{Crefname}*) = { + , theorem = {Theorem}{Theorems} + , proposition = {Proposition}{Propositions} + ... + } + } +\end{code} + +Here is an example for French: + +\begin{code} +\NameTheorems { french } + { + , (*\commandoption{heading}*) = { + , theorem = Théorème + , proposition = Proposition + , example = Exemple + ... + } + , (*\commandoption{crefname}*) = { + , theorem = [le]{théorème}[les]{théorèmes} + , proposition = [la]{proposition}[les]{propositions} + , example = [l']{exemple}[les]{exemples} + ... + } + , (*\commandoption{Crefname}*) = { + , theorem = [Le]{théorème}[Les]{théorèmes} + , proposition = [La]{proposition}[Les]{propositions} + , example = [L']{exemple}[Les]{exemples} + ... + } + } +\end{code} + +And an example for German: + +\begin{code} +\NameTheorems { ngerman } + { + , (*\commandoption{heading}*) = { + , theorem = Satz + ... + } + , (*\commandoption{crefname}*) = { + , theorem = { {Satz}{Sätze} + , Nominativ = [der]{Satz}[die]{Sätze} + , Genitiv = [des]{Satzes}[der]{Sätze} + , Dativ = [dem]{Satz}[den]{Sätzen} + , Akkusativ = [den]{Satz}[die]{Sätze} + } + ... + } + , (*\commandoption{Crefname}*) = { + , theorem = { {Satz}{Sätze} + , Nominativ = [Der]{Satz}[Die]{Sätze} + , Genitiv = [Des]{Satzes}[Der]{Sätze} + , Dativ = [Dem]{Satz}[Den]{Sätzen} + , Akkusativ = [Den]{Satz}[Die]{Sätze} + } + ... + } + } +\end{code} + +\medskip +The configuration using \lstinline|\NameTheorems| is compatible with that using \lstinline|\NameTheorem| and there is no need to worry about duplicated definitions --- new settings will automatically overwrite the old ones. + + +\clearpage +\section{Known issues} + +\begin{itemize} + \item \createtheorempackage{} modifies some undocumented internal macros of \textsf{cleveref}, so the behavior might not be stable if \textsf{cleveref} gets updated one day. + \item The current naming mechanism for theorems essentially follows the syntax of \textsf{cleveref}. The configuration may look somewhat redundant. In a future version, a new mechanism is planed to be introduced, which would be similar to the method used by \textsf{zref-clever}. + \item It is current not possible to temporarily change the referencing type when referencing, which makes it difficult to reference a \textquote{\texttt{namedtheorem}}, or if you have both the singular and plural form of an environment, say \textquote{\texttt{example}} and \textquote{\texttt{examples}}, they would be referred to as two separate types. + \item The counter aliasing function is still not perfect, (sometimes) causing incorrect ordering in the result of \lstinline|\cref|. + \item There might be inaccuracies in the translation of those preset names. +\end{itemize} + +\medskip +If you run into any issues or have ideas for improvement, feel free to discuss on: +\begin{center} + \url{https://github.com/Jinwen-XU/create-theorem/issues} +\end{center} +or email me via \href{mailto:ProjLib@outlook.com}{\texttt{ProjLib@outlook.com}}. + +\end{document} 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 @@ } % %<*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 Binary files a/macros/latex/contrib/easybook/easybook.pdf and b/macros/latex/contrib/easybook/easybook.pdf 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 @@ - + # `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 Binary files a/macros/latex/contrib/homework/homework-demo-cn.pdf and b/macros/latex/contrib/homework/homework-demo-cn.pdf 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 Binary files a/macros/latex/contrib/homework/homework-demo-de.pdf and b/macros/latex/contrib/homework/homework-demo-de.pdf 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 diff --git a/macros/latex/contrib/homework/homework-demo-en.pdf b/macros/latex/contrib/homework/homework-demo-en.pdf index 759e72359a..fd25fd5cf5 100644 Binary files a/macros/latex/contrib/homework/homework-demo-en.pdf and b/macros/latex/contrib/homework/homework-demo-en.pdf 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 diff --git a/macros/latex/contrib/homework/homework-demo-es.pdf b/macros/latex/contrib/homework/homework-demo-es.pdf index 74000d7714..338081b142 100644 Binary files a/macros/latex/contrib/homework/homework-demo-es.pdf and b/macros/latex/contrib/homework/homework-demo-es.pdf 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 diff --git a/macros/latex/contrib/homework/homework-demo-fr.pdf b/macros/latex/contrib/homework/homework-demo-fr.pdf index 4ba306c271..b878009cb8 100644 Binary files a/macros/latex/contrib/homework/homework-demo-fr.pdf and b/macros/latex/contrib/homework/homework-demo-fr.pdf 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 diff --git a/macros/latex/contrib/homework/homework-demo-jp.pdf b/macros/latex/contrib/homework/homework-demo-jp.pdf index 7b8a6ae7cb..c2e1a7d6ae 100644 Binary files a/macros/latex/contrib/homework/homework-demo-jp.pdf and b/macros/latex/contrib/homework/homework-demo-jp.pdf 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 Binary files a/macros/latex/contrib/homework/homework-demo-tc.pdf and b/macros/latex/contrib/homework/homework-demo-tc.pdf 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 Binary files a/macros/latex/contrib/homework/homework-example-sheet-answer.pdf and b/macros/latex/contrib/homework/homework-example-sheet-answer.pdf 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 Binary files a/macros/latex/contrib/homework/homework-example-sheet.pdf and b/macros/latex/contrib/homework/homework-example-sheet.pdf 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 Binary files a/macros/latex/contrib/listings/listings-devel.pdf and b/macros/latex/contrib/listings/listings-devel.pdf 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} % % \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} % % \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} +%\lst@ReportAllocs \lst@RestoreCatcodes% \InputIfFileExists{listings.cfg}{}{} \InputIfFileExists{lstlocal.cfg}{}{} -%\lst@ReportAllocs % \end{macrocode} % \begin{macrocode} % @@ -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 Binary files a/macros/latex/contrib/listings/listings.pdf and b/macros/latex/contrib/listings/listings.pdf 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 %% -\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} % diff --git a/macros/latex/contrib/listings/lstdrvrs.pdf b/macros/latex/contrib/listings/lstdrvrs.pdf index 2bf416063a..c0a320d095 100644 Binary files a/macros/latex/contrib/listings/lstdrvrs.pdf and b/macros/latex/contrib/listings/lstdrvrs.pdf 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 @@ - + # `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-author> \ProvidesExplPackage {projlib-author} - {2024/02/03} {} + {2024/02/20} {} {Enhanced author information block} % % %<*projlib-datetime> \ProvidesExplPackage {projlib-datetime} - {2024/02/03} {} + {2024/02/20} {} {Convert numeric date-time string to natural language} % % %<*projlib-draft> \ProvidesExplPackage {projlib-draft} - {2024/02/03} {} + {2024/02/20} {} {Useful commands during draft stage} % % %<*projlib-font> \ProvidesExplPackage {projlib-font} - {2024/02/03} {} + {2024/02/20} {} {Font selection and configuration} % % %<*projlib-language> \ProvidesExplPackage {projlib-language} - {2024/02/03} {} + {2024/02/20} {} {Multi-language configuration} % % %<*projlib-logo> \ProvidesExplPackage {projlib-logo} - {2024/02/03} {} + {2024/02/20} {} {The ProjLib logo} % % %<*projlib-math> \ProvidesExplPackage {projlib-math} - {2024/02/03} {} + {2024/02/20} {} {Efficient math setup} % % %<*projlib-paper> \ProvidesExplPackage {projlib-paper} - {2024/02/03} {} + {2024/02/20} {} {Configuration of the paper style} % % %<*projlib-text> \ProvidesExplPackage {projlib-text} - {2024/02/03} {} + {2024/02/20} {} {Text-related commands} % % %<*projlib-theorem> \ProvidesExplPackage {projlib-theorem} - {2024/02/03} {} + {2024/02/20} {} {Configuration of theorem-like environments} % % %<*projlib-titlepage> \ProvidesExplPackage {projlib-titlepage} - {2024/02/03} {} + {2024/02/20} {} {Interface for title page rendering} % @@ -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-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 Binary files a/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf and b/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf 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 %%%%%%% -- cgit v1.2.3