diff options
Diffstat (limited to 'macros')
17 files changed, 605 insertions, 335 deletions
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx index 752a7341c4..11a4f89bb1 100644 --- a/macros/latex/contrib/easybook/easybook.dtx +++ b/macros/latex/contrib/easybook/easybook.dtx @@ -15,7 +15,7 @@ %<*class> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2021/12/16}{1.41X} +\ProvidesExplClass{easybook}{2021/12/18}{1.41Z} {Typeset Chinese theses or books} \bool_set_false:N \l__eb_compile_draft_bool @@ -307,7 +307,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e,etoolbox} -\ProvidesExplPackage{easybase}{2021/12/16}{1.41X} +\ProvidesExplPackage{easybase}{2021/12/18}{1.41Z} {Typeset Chinese theses or books} \cs_generate_variant:Nn \dim_set:Nn { NV } @@ -476,6 +476,7 @@ \cs_if_exist:NF \chapter { \newcounter{chapter} + \providebool{@mainmatter} \bool_set_false:N \l__eb_class_mode_book_bool \ctex_define:n { chapter/tocline .code:n = { } } } @@ -835,14 +836,14 @@ { \tl_set:Nn \l__eb_footnote_value_tl {#1} } } } -\cs_new_protected:Npn \eb_fnmate_shift_set:nnn #1#2#3 +\cs_new_protected:Npn \eb_fnmate_move_set:nnn #1#2#3 { \str_if_eq:nnTF {#1} { match } { - \tl_set:cv { l__eb_fn#2_#3shift_tl } - { l__spb_super_#3shift_dim } + \tl_set:cv { l__eb_fn#2_#3move_tl } + { l__spb_super_#3move_dim } } - { \tl_set:cn { l__eb_fn#2_#3shift_tl } {#1} } + { \tl_set:cn { l__eb_fn#2_#3move_tl } {#1} } } \cs_new_protected:Npn \eb_fnboth_format_set:nn #1#2 { @@ -882,12 +883,12 @@ footnotetype .value_required:n = true, footnotetype .initial:n = hang, - fnmark-vshift .code:n = \eb_fnmate_shift_set:nnn {#1} { mark } { v }, - fnmark-hshift .code:n = \eb_fnmate_shift_set:nnn {#1} { mark } { h }, - fntext-vshift .code:n = \eb_fnmate_shift_set:nnn {#1} { text } { v }, - fnmark-vshift .initial:n = 0pt, - fnmark-hshift .initial:n = 0pt, - fntext-vshift .initial:n = 0pt, + fnmark-vmove .code:n = \eb_fnmate_move_set:nnn {#1} { mark } { v }, + fnmark-hmove .code:n = \eb_fnmate_move_set:nnn {#1} { mark } { h }, + fntext-vmove .code:n = \eb_fnmate_move_set:nnn {#1} { text } { v }, + fnmark-vmove .initial:n = 0pt, + fnmark-hmove .initial:n = 0pt, + fntext-vmove .initial:n = 0pt, fnmark-num .choices:nn = { plain,pifont,pifont*,pifont-sans,pifont-sans* } @@ -1084,11 +1085,11 @@ \NewDocumentCommand{\eb@fnmate@super}{sm} { \IfBooleanTF{#1} - {\super{#2}[vshift = \l__eb_fntext_vshift_tl,nohshift]} + {\super{#2}[vmove = \l__eb_fntext_vmove_tl,nohmove]} { \super{\l__eb_fnmate_format_tl{#2}}[ - vshift = \l__eb_fnmark_vshift_tl, - hshift = \l__eb_fnmark_hshift_tl + vmove = \l__eb_fnmark_vmove_tl, + hmove = \l__eb_fnmark_hmove_tl ] } } @@ -2429,7 +2430,7 @@ } %</package> %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2021/12/16}{1.41X} +\ProvidesExplFile{eb-tcolorbox.cfg}{2021/12/18}{1.41Z} {Customization of tcolorbox for easybook} \cs_set_protected:Npn \setexercise #1 diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf Binary files differindex b29e98d230..1b725c2fc3 100644 --- a/macros/latex/contrib/easybook/easybook.pdf +++ b/macros/latex/contrib/easybook/easybook.pdf diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex index 3c36ea7846..6aaee09c14 100644 --- a/macros/latex/contrib/easybook/easybook.tex +++ b/macros/latex/contrib/easybook/easybook.tex @@ -20,8 +20,8 @@ name = easybook, color-scheme = blue, title = EASYBOOK 使用手册, - version = v1.41X, - date = 2021/12/16, + version = v1.41Z, + date = 2021/12/18, authors = 瞿毅, info = 排版简体中文学位论文和书籍, email = q1jx@foxmail.com, @@ -366,11 +366,11 @@ 同时输出上标和下标的命令,与简短命令 \cs{spb} 等效。 \end{commands} -关于这三个命令键值列表中共同的选项如下所示。如果 \option{vshift}、\option{hshift} 和 \option{cmd} 选项用于 \module*{style} 模块的全局设置,它们将根据前面最近一个命令的类型设定相应值。 +关于这三个命令键值列表中共同的选项如下所示。如果 \option{vmove}、\option{hmove} 和 \option{cmd} 选项用于 \module*{style} 模块的全局设置,它们将根据前面最近一个命令的类型设定相应值。 \begin{options} - \keyval-{vshift}{刚性长度}\Default{0pt} + \keyval-{vmove}{刚性长度}\Default{0pt} 上标或下标的垂直偏移。如果是上下标命令使用则代表上标和上标间的垂直距离 \option{vsep}。 - \keyval-{hshift}{刚性长度}\Default{0pt} + \keyval-{hmove}{刚性长度}\Default{0pt} 上标或下标的水平偏移。如果是上下标命令使用则代表上标和上标的共同偏移。 \keyval-{cmd}{格式命令}\Default 上标或下标的格式命令选项。最后一个命令可以带有一个参数,这个参数用于接受上标或下标。 @@ -459,27 +459,27 @@ \subsubsection{上下标全局设置} \label{subsubsec:super-sub-script} \begin{options} - \keyval-{spvshift}{刚性长度}\Default{0pt} + \keyval-{spvmove}{刚性长度}\Default{0pt} 上标命令 \cs{super} 对应的上标垂直偏移量。 - \keyval-{sphshift}{刚性长度}\Default{0pt} + \keyval-{sphmove}{刚性长度}\Default{0pt} 上标命令 \cs{super} 对应的上标水平偏移量。 - \keyval-{sbvshift}{刚性长度}\Default{0pt} + \keyval-{sbvmove}{刚性长度}\Default{0pt} 下标命令 \cs{sub} 对应的下标垂直偏移量。 - \keyval-{sbhshift}{刚性长度}\Default{0pt} + \keyval-{sbhmove}{刚性长度}\Default{0pt} 下标命令 \cs{sub} 对应的下标水平偏移量。 - \opt{nohshift}\Default! - 同时取消上标和下标的 \meta{水平偏移},与 \keyis-{sphshift}{0pt} 和 \keyis-{sbhshift}{0pt} 等效。 - \opt{novshift}\Default! - 同时取消上标和下标的 \meta{垂直偏移},与 \keyis-{spvshift}{0pt} 和 \keyis-{sbvshift}{0pt} 等效。 + \opt{nohmove}\Default! + 同时取消上标和下标的 \meta{水平偏移},与 \keyis-{sphmove}{0pt} 和 \keyis-{sbhmove}{0pt} 等效。 + \opt{novmove}\Default! + 同时取消上标和下标的 \meta{垂直偏移},与 \keyis-{spvmove}{0pt} 和 \keyis-{sbvmove}{0pt} 等效。 \keyval-{spcmd}{格式命令}\Default 上标命令 \cs{super} 对应的上标的格式命令。 \keyval-{sbcmd}{格式命令}\Default 下标命令 \cs{sub} 对应的下标的格式命令。 - \keyval-{spbhshift}{刚性长度}\Default{0pt} + \keyval-{spbhmove}{刚性长度}\Default{0pt} 上下标命令 \cs{supersub} 对应的上下标共同水平偏移量。 \kvsplit{spbcmd}{上标格式,下标格式}\Default 上下标命令 \cs{supersub} 对应的上下标格式命令。以英文逗号分隔为前后两个部分分别设置上下标格式,也可以只有前部分,表示上标的格式。 - \keyval-{vsep}{刚性长度}\Default{0.3ex} + \keyval-{vsep}{刚性长度}\Default{0.6ex} 上下标命令 \cs{supersub} 对应的上下标垂直距离。 \keychoice{halign}{l,c,r}\Default{l} 上下标命令 \cs{supersub} 对应的上下标水平对齐方式,有左 \code{l}、居中 \code{c} 和右 \code{r} 三种对齐方式。 @@ -792,12 +792,12 @@ 脚注内容标记编号的类型,用法与 \option{fnmark-num} 一样,所以脚注内容与正文标记编号类型\textbf{可以不同}。 \keychoice{fnmate-num}{plain,pifont,pifont*,pisans,pisans*,short num}\Default{plain} 同时设定脚注正文标记编号 \option{fnmark-num} 与脚注内容标记编号 \option{fntext-num} 的类型。目前脚注编号类型选项对于迷你页环境 \env*{minipage} 无效,其中的脚注保持默认英文字母的编号类型。 - \keychoice{fnmark-vshift}{fixed length,match}\Default{0pt} - 脚注正文标记的垂直偏移,可以设为刚性长度,或用 \code{match} 匹配 \option*{spvshift} 全局的值。 - \keychoice{fnmark-hshift}{fixed length,match}\Default{0pt} - 脚注正文标记的水平偏移,可以设为刚性长度,或用 \code{match} 匹配 \option*{sphshift} 全局的值。 - \keychoice{fntext-vshift}{fixed length,match}\Default{0pt} - 脚注内容标记的垂直偏移,可以设为刚性长度,或用 \code{match} 匹配 \option*{spvshift} 全局的值。 + \keychoice{fnmark-vmove}{fixed length,match}\Default{0pt} + 脚注正文标记的垂直偏移,可以设为刚性长度,或用 \code{match} 匹配 \option*{spvmove} 全局的值。 + \keychoice{fnmark-hmove}{fixed length,match}\Default{0pt} + 脚注正文标记的水平偏移,可以设为刚性长度,或用 \code{match} 匹配 \option*{sphmove} 全局的值。 + \keychoice{fntext-vmove}{fixed length,match}\Default{0pt} + 脚注内容标记的垂直偏移,可以设为刚性长度,或用 \code{match} 匹配 \option*{spvmove} 全局的值。 \keychoice{fnmate-form}{format code,match}\Default 默认脚注标记的格式,选项 \code{match} 可以匹配 \option*{spcmd} 全局的值。一般与 \keyis-{fnmate-num}{plain} 原生编号形式使用,例如用 \pkg*{circledsteps} 宏包的带圈符号命令 \cs*{Circled} 给脚注标记添加圆圈: \begin{ctexexam} diff --git a/macros/latex/contrib/schulmathematik/README b/macros/latex/contrib/schulmathematik/README index 8280ad13b6..1cc641870a 100644 --- a/macros/latex/contrib/schulmathematik/README +++ b/macros/latex/contrib/schulmathematik/README @@ -2,8 +2,8 @@ The schulmathematik bundle provides LaTeX commands and document classes for German-speaking teachers of mathematics and physics. Package author: K. Wehr -Version: 1.1 -Date: 13 March 2021 +Version: 1.2 +Date: 18 December 2021 The schulmathematik bundle is subject to the LaTeX Project Public License, version 1.3 or later. diff --git a/macros/latex/contrib/schulmathematik/schulma-ab.cls b/macros/latex/contrib/schulmathematik/schulma-ab.cls index 62a41ec033..cde79ed6d9 100644 --- a/macros/latex/contrib/schulmathematik/schulma-ab.cls +++ b/macros/latex/contrib/schulmathematik/schulma-ab.cls @@ -1,12 +1,8 @@ % schulmathematik bundle: document class schulma-ab -% Version 1.1 -% 13. März 2021 +% Version 1.2 +% 18. Dezember 2021 \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{schulma-ab}[2021-03-13 v1.1 Dokumentenklasse fuer Arbeitsblaetter] - -\RequirePackage{xparse} - -\ExplSyntaxOn +\ProvidesExplClass{schulma-ab}{2021-12-18}{1.2}{Dokumentenklasse fuer Arbeitsblaetter} \tl_new:N \g_schulma_ab_kurs_tl \tl_new:N \g_schulma_ab_thema_tl @@ -15,13 +11,27 @@ \str_new:N \g_schulma_ab_datum_str \str_new:N \g_schulma_ab_nummer_str -\bool_new:N \g_schulma_ab_afuenfquer_bool +\bool_new:N \g_schulma_ab_afuenf_bool +\bool_new:N \g_schulma_ab_querformat_bool \bool_new:N \g_schulma_ab_oesterreich_bool +\bool_new:N \g_schulma_ab_musterloesung_bool + +\DeclareOption {A4quer} + { + \bool_gset_true:N \g_schulma_ab_querformat_bool + } + +\DeclareOption {A5} + { + \PassOptionsToClass {a5paper} {scrartcl} + \bool_gset_true:N \g_schulma_ab_afuenf_bool + } \DeclareOption {A5quer} { \PassOptionsToClass {a5paper} {scrartcl} - \bool_gset_true:N \g_schulma_ab_afuenfquer_bool + \bool_gset_true:N \g_schulma_ab_afuenf_bool + \bool_gset_true:N \g_schulma_ab_querformat_bool } \DeclareOption {AT} @@ -29,6 +39,11 @@ \bool_gset_true:N \g_schulma_ab_oesterreich_bool } +\DeclareOption {Musterloesung} + { + \bool_gset_true:N \g_schulma_ab_musterloesung_bool + } + \DeclareOption* { \PassOptionsToClass {\CurrentOption} {scrartcl} @@ -80,10 +95,15 @@ \RequirePackage {tasks} \RequirePackage {enumitem} \RequirePackage {scrlayer-scrpage} +\RequirePackage {comment} -\bool_if:NTF \g_schulma_ab_afuenfquer_bool +\bool_if:NT \g_schulma_ab_querformat_bool { \KOMAoption {paper} {landscape} + } + +\bool_if:NTF \g_schulma_ab_afuenf_bool + { \KOMAoption {DIV} {11} } { @@ -254,4 +274,25 @@ \raisebox {-1,5mm} { \rule {#1} {0,4pt} } } -\ExplSyntaxOff +\NewDocumentEnvironment {Lsg} {s} +% Stern: Lösung beginnt mit einer Gleichung, kein Abstand erforderlich + { + \IfBooleanF {#1} { \par \medskip } + } + { + } + +\bool_if:NF \g_schulma_ab_musterloesung_bool + { + \excludecomment {Lsg} + } + +\NewDocumentCommand \NurAufgabe {+m} + { + \bool_if:NF \g_schulma_ab_musterloesung_bool {#1} + } + +\NewDocumentCommand \NurLoesung {+m} + { + \bool_if:NT \g_schulma_ab_musterloesung_bool {#1} + } diff --git a/macros/latex/contrib/schulmathematik/schulma-gutachten.cls b/macros/latex/contrib/schulmathematik/schulma-gutachten.cls index 6a39095671..3c38d75b9c 100644 --- a/macros/latex/contrib/schulmathematik/schulma-gutachten.cls +++ b/macros/latex/contrib/schulmathematik/schulma-gutachten.cls @@ -1,10 +1,8 @@ % schulmathematik bundle: document class schulma-gutachten -% Version 1.1 -% 13. März 2021 +% Version 1.2 +% 18. Dezember 2021 \NeedsTeXFormat{LaTeX2e} -\ProvidesExplClass{schulma-gutachten}{2021-03-13}{1.1}{Dokumentenklasse fuer Gutachten ueber schriftliche Abiturklausuren} - -\RequirePackage {xparse} +\ProvidesExplClass{schulma-gutachten}{2021-12-18}{1.2}{Dokumentenklasse fuer Gutachten ueber schriftliche Abiturklausuren} \bool_new:N \g_schulma_gutachten_bell_bool \bool_new:N \g_schulma_gutachten_oesterreich_bool @@ -284,7 +282,7 @@ \c_space_tl Bewertungseinheiten;~ dies~entspricht~ - \SI { \fp_to_decimal:N \l_schulma_gutachten_prozentsatz_fp } {\percent} + \qty { \fp_to_decimal:N \l_schulma_gutachten_prozentsatz_fp } {\percent} .~ \IfValueTF {#5} { diff --git a/macros/latex/contrib/schulmathematik/schulma-klausur.cls b/macros/latex/contrib/schulmathematik/schulma-klausur.cls index 0589aca012..9f74a2057b 100644 --- a/macros/latex/contrib/schulmathematik/schulma-klausur.cls +++ b/macros/latex/contrib/schulmathematik/schulma-klausur.cls @@ -1,10 +1,9 @@ % schulmathematik bundle: document class schulma-klausur -% Version 1.1 -% 13. März 2021 +% Version 1.2 +% 18. Dezember 2021 \NeedsTeXFormat{LaTeX2e} -\ProvidesExplClass{schulma-klausur}{2021-03-13}{1.1}{Dokumentenklasse fuer Klausuren} +\ProvidesExplClass{schulma-klausur}{2021-12-18}{1.2}{Dokumentenklasse fuer Klausuren} -\RequirePackage {xparse} \RequirePackage {etoolbox} \str_new:N \g_schulma_klausur_datum_str @@ -27,6 +26,7 @@ \bool_new:N \g_schulma_klausur_differenzenquotient_bool \bool_new:N \g_schulma_klausur_differentialquotient_bool \bool_new:N \g_schulma_klausur_musterloesung_bool +\bool_new:N \l_schulma_klausur_loesung_bool \int_new:N \g_schulma_klausur_anzahl_hilfen_int @@ -137,6 +137,9 @@ \newlength \Teilaufgabenabstand \setlength \Teilaufgabenabstand {4.5pt plus2pt minus1pt} +\RequirePackage {schulma} +\RequirePackage {schulma-physik} + \bool_if:NTF \g_schulma_klausur_musterloesung_bool { \LoadClass [t] {schulma-praes} @@ -188,11 +191,19 @@ \NewDocumentEnvironment {Teilaufgaben} { } { - \begin {list} { \stepcounter {Teilaufgabe} \alph {Teilaufgabe} ) } + \begin {list} + { + \FarbeAufgabe + \stepcounter {Teilaufgabe} + \alph {Teilaufgabe} ) + } { \setlength \topsep {\Teilaufgabenabstand} \setlength \itemsep {\Teilaufgabenabstand} - \FarbeAufgabe + \bool_if:NF \l_schulma_klausur_loesung_bool + { + \FarbeAufgabe + } } } { @@ -202,15 +213,12 @@ \NewDocumentEnvironment {Lsg} {s} % Stern: Lösung beginnt mit einer Gleichung, kein Abstand erforderlich { - \IfBooleanF {#1} - { - \par - \medskip - } - + \IfBooleanF {#1} { \par \medskip } + \bool_gset_true:N \l_schulma_klausur_loesung_bool \FarbeLoesung } { + \bool_gset_false:N \l_schulma_klausur_loesung_bool } \RenewDocumentCommand \Datum {m} @@ -341,6 +349,7 @@ \bool_if:NTF \g_schulma_klausur_afuenfquer_bool { + \KOMAoption {paper} {landscape} \RequirePackage [top=2.7cm, bottom=3cm, hmargin=2.5cm] {geometry} } { @@ -371,6 +380,8 @@ \settasks{before-skip=4.5pt plus2pt minus1pt} } +\RequirePackage {adjustbox} + \cs_new:Npn \schulma_klausur_notentabelle:n #1 { \clist_set:Nn \l_schulma_klausur_notenliste_clist {#1} @@ -427,10 +438,6 @@ \end {tabular} } -\RequirePackage {adjustbox} -\RequirePackage {schulma} -\RequirePackage {schulma-physik} - \bool_if:NTF \g_schulma_klausur_oesterreich_bool { \RequirePackage [naustrian] {babel} diff --git a/macros/latex/contrib/schulmathematik/schulma-komp.cls b/macros/latex/contrib/schulmathematik/schulma-komp.cls index b7cdd9e755..ff1a7362df 100644 --- a/macros/latex/contrib/schulmathematik/schulma-komp.cls +++ b/macros/latex/contrib/schulmathematik/schulma-komp.cls @@ -1,13 +1,12 @@ % schulmathematik bundle: document class schulma-komp -% Version 1.1 -% 13. März 2021 +% Version 1.2 +% 18. Dezember 2021 \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{schulma-komp}[2021-03-13 v1.1 Dokumentenklasse fuer Kompetenzlisten] -\ProcessOptions\relax +\ProvidesExplClass{schulma-komp}{2021-12-18}{1.2}{Dokumentenklasse fuer Kompetenzlisten} -\LoadClass{schulma-ab} +\ProcessOptions \relax -\ExplSyntaxOn +\LoadClass {schulma-ab} \dim_const:Nn \c_schulma_komp_abstand_dim {0.5em} \dim_new:N \g_schulma_komp_einrueckunga_dim @@ -87,5 +86,3 @@ \par \smallskip } - -\ExplSyntaxOff diff --git a/macros/latex/contrib/schulmathematik/schulma-mdlprf.cls b/macros/latex/contrib/schulmathematik/schulma-mdlprf.cls index 459d72fc11..a446fbd38a 100644 --- a/macros/latex/contrib/schulmathematik/schulma-mdlprf.cls +++ b/macros/latex/contrib/schulmathematik/schulma-mdlprf.cls @@ -1,10 +1,8 @@ % schulmathematik bundle: document class schulma-mdlprf -% Version 1.1 -% 13. März 2021 +% Version 1.2 +% 18. Dezember 2021 \NeedsTeXFormat{LaTeX2e} -\ProvidesExplClass{schulma-mdlprf}{2021-03-13}{1.1}{Dokumentenklasse fuer muendliche Abiturpruefungen} - -\RequirePackage {xparse} +\ProvidesExplClass{schulma-mdlprf}{2021-12-18}{1.2}{Dokumentenklasse fuer muendliche Abiturpruefungen} \bool_new:N \g_schulma_mdlprf_oesterreich_bool \bool_new:N \g_schulma_mdlprf_pruefer_weiblich_bool diff --git a/macros/latex/contrib/schulmathematik/schulma-physik.sty b/macros/latex/contrib/schulmathematik/schulma-physik.sty index bfd0e59103..3ce073aa2a 100644 --- a/macros/latex/contrib/schulmathematik/schulma-physik.sty +++ b/macros/latex/contrib/schulmathematik/schulma-physik.sty @@ -1,8 +1,7 @@ % schulmathematik bundle: package schulma-physik -% Version 1.1 -% 13. März 2021 -\RequirePackage{xparse} -\ProvidesExplPackage {schulma-physik} {2021-03-13} {1.1} {Befehle für die Schulphysik} +% Version 1.2 +% 18. Dezember 2021 +\ProvidesExplPackage{schulma-physik}{2021-12-18}{1.2}{Befehle für die Schulphysik} \RequirePackage [locale=DE] {siunitx} \RequirePackage {tikz} @@ -11,83 +10,230 @@ { \ensuremath { - \SI {#1} {#2} + \qty {#1} {#2} \; \widehat {=} \; - \SI {#3} {#4} + \qty {#3} {#4} } } -\NewDocumentCommand \tSI {m m} +\NewDocumentCommand \tqty {m m} { \ensuremath { \group_begin: \textstyle - \SI [ per-mode = fraction ] {#1} {#2} + \qty [ per-mode = fraction ] {#1} {#2} \group_end: } } -\NewDocumentCommand \tsi {m} +\cs_new_eq:NN \tSI \tqty + +\NewDocumentCommand \tunit {m} { \ensuremath { \group_begin: \textstyle - \si [ per-mode = fraction ] {#1} + \unit [ per-mode = fraction ] {#1} \group_end: } } +\cs_new_eq:NN \tsi \tunit + \NewDocumentCommand \Beschl {m} { - \tSI{#1}{\m\per\square\s} + \tqty {#1} { \m \per \square \s } } \NewDocumentCommand \Erdb { } { - \tSI{9,81}{\m\per\square\s} + \tqty {9,81} { \m \per \square \s } } \NewDocumentCommand \Ortsf { } { - \tSI{9,81}{\N\per\kg} + \tqty {9,81} { \N \per \kg } } \NewDocumentCommand \Elem { } { - \SI{1,60e-19}{\coulomb} + \qty {1,60e-19} {\coulomb} } \NewDocumentCommand \Elekm { } { - \SI{9,11e-31}{\kg} + \qty {9,11e-31} {\kg} } \NewDocumentCommand \Lichtg { } { - \SI{3,00e8}{\m\per\s} + \qty {3,00e8} { \m \per \s } } \NewDocumentCommand \Planck { } { - \SI{6,63e-34}{\J.\s} + \qty {6,63e-34} { \J . \s } } \NewDocumentCommand \EFK { } { - \SI{8,85e-12}{\A\s\per\V\per\m} + \qty {8,85e-12} { \A \s \per \V \per \m } } \NewDocumentCommand \MFK {s} { \IfBooleanTF {#1} { - \SI{1,26e-6}{\V\s\per\A\per\m} + \qty {1,26e-6} { \V \s \per \A \per \m } + } + { + \ensuremath + { + 4 \, \pi \cdot + \qty [ print-unity-mantissa = false ] { e-7 } { \V \s \per \A \per \m } + } + } + } + +\dim_const:Nn \c_schulma_physik_messschieber_l_skala_dim {15.2cm} +\dim_const:Nn \c_schulma_physik_messschieber_b_skala_dim {15mm} +\dim_const:Nn \c_schulma_physik_messschieber_l_schieber_dim {4cm} +\dim_const:Nn \c_schulma_physik_messschieber_b_schieber_dim {17mm} +\dim_const:Nn \c_schulma_physik_messschieber_l_fenster_dim {25mm} +\dim_const:Nn \c_schulma_physik_messschieber_b_fenster_dim {1cm} + +\NewDocumentCommand \Messschieber {m} + { + \begin {tikzpicture} [ font = \sffamily ] + % Hauptskala + \draw ( -1.6cm , -0.5 * \c_schulma_physik_messschieber_b_skala_dim + 0.5 * \c_schulma_physik_messschieber_b_fenster_dim ) + -- ++ ( \c_schulma_physik_messschieber_l_skala_dim , 0 ) node [ above~left ] { \small cm } + -- ++ ( 0 , \c_schulma_physik_messschieber_b_skala_dim ) + -- ++ ( - \c_schulma_physik_messschieber_l_skala_dim , 0) + -- cycle ; + \int_step_inline:nnn {0} {120} + { + \int_set:Nn \l_tmpa_int { \int_mod:nn {##1} {10} } + \int_compare:nNnTF {\l_tmpa_int} = {0} + { + \draw (##1*1mm,-1mm)--(##1*1mm,6mm) node [ left , xshift=2pt , yshift = -2pt ] + { \footnotesize \int_eval:n {##1/10} } ; + } + { + \int_compare:nNnTF {\l_tmpa_int} = {5} + { + \draw (##1*1mm,-1mm)--(##1*1mm,4.5mm); + } + { + \draw (##1*1mm,-1mm)--(##1*1mm,3mm); + } + } } + % Schieber + \draw [ fill = white , even~odd~rule ] + ( #1cm - 0.5 * \c_schulma_physik_messschieber_l_schieber_dim + 4.5mm , + -0.5 * \c_schulma_physik_messschieber_b_schieber_dim + 0.5 * \c_schulma_physik_messschieber_b_fenster_dim ) + rectangle ++ ( \c_schulma_physik_messschieber_l_schieber_dim , \c_schulma_physik_messschieber_b_schieber_dim ) + { [rounded~corners = 0.5 * \c_schulma_physik_messschieber_b_fenster_dim ] + ( #1cm - 0.5 * \c_schulma_physik_messschieber_l_fenster_dim + 4.5mm , 0 ) + rectangle ++ ( \c_schulma_physik_messschieber_l_fenster_dim , \c_schulma_physik_messschieber_b_fenster_dim ) } ; + % Noniusskala + \int_step_inline:nnn {0} {10} { - \ensuremath { 4\,\pi\cdot\SI{e-7}{\V\s\per\A\per\m} } + \int_set:Nn \l_tmpa_int { \int_mod:nn {##1} {10} } + \int_compare:nNnTF {\l_tmpa_int} = {0} + { + \draw ( #1cm + ##1 * 0.9mm , 0 ) -- ( #1cm + ##1 * 0.9mm , -1.6mm ) ; + } + { + \int_compare:nNnTF {\l_tmpa_int} = {5} + { + \draw ( #1cm + ##1 * 0.9mm , 0 ) -- ( #1cm + ##1 * 0.9mm , -1.3mm ) ; + } + { + \draw ( #1cm + ##1 * 0.9mm , 0 ) -- ( #1cm + ##1 * 0.9mm , -1mm ) ; + } + } } + \end{tikzpicture} + } + +\dim_new:N \l_schulma_physik_messschraube_massstab_dim +\dim_set:Nn \l_schulma_physik_messschraube_massstab_dim {2mm} +\dim_new:N \l_schulma_physik_messschraube_skalenstrich_y_dim +\dim_new:N \l_schulma_physik_messschraube_skalenstrich_deltay_dim +\int_new:N \l_schulma_physik_messschraube_skalenbeschriftung_int +\fp_new:N \l_schulma_physik_messschraube_hundertstelbruchteile_fp + +\NewDocumentCommand \Messschraube {m} + { + % nach: dexteritas, https://tex.stackexchange.com/questions/472876/how-to-draw-micrometer-scale-using-tikz + \begin{tikzpicture} [ font = \sffamily ] + % horizontale Skala + \draw [semithick] (0,0) -- ( #1 * \l_schulma_physik_messschraube_massstab_dim , 0 ) ; + \int_step_inline:nnn {0} { \fp_to_int:n {#1} + 2 } + { + \int_compare:nNnTF { \int_mod:nn {##1} {5} } = {0} + { + \draw [thick] ( ##1 * \l_schulma_physik_messschraube_massstab_dim , -0.5 ) -- ++ (0,0.65) node [above] { \small ##1 } ; + } + { + \draw ( ##1 * \l_schulma_physik_messschraube_massstab_dim , 0) -- ++ (0,-0.5) ; + } + } + \node [ above~right ] at (-5mm,-1cm) {\small mm} ; + % drehbare Skala + \fp_set:Nn \l_schulma_physik_messschraube_hundertstelbruchteile_fp { #1 * 100 - \fp_to_int:n { #1 * 100} } + \fill [white] ( #1 * \l_schulma_physik_messschraube_massstab_dim , 1cm ) -- ++ (8mm,5mm) -- ++ (0,-3cm) -- ++ (-8mm,5mm) -- cycle ; + \draw [thin] ( #1 * \l_schulma_physik_messschraube_massstab_dim , 1 ) -- ++ (0,-2cm) ; + \draw ( #1 * \l_schulma_physik_messschraube_massstab_dim , 1cm ) -- ++ (8mm,5mm) ; + \draw ( #1 * \l_schulma_physik_messschraube_massstab_dim , -1cm ) -- ++ (8mm,-5mm) ; + \int_step_inline:nnn {-17} {17} + { + \int_set:Nn \l_schulma_physik_messschraube_skalenbeschriftung_int + { + \int_mod:nn { \fp_to_int:n { #1 * 100 } + ##1 } {100} + } + \dim_set:Nn \l_schulma_physik_messschraube_skalenstrich_y_dim + { + \fp_eval:n { ( ##1 - \l_schulma_physik_messschraube_hundertstelbruchteile_fp ) / 18 } cm + } + \int_compare:nNnTF { \int_mod:nn {\l_schulma_physik_messschraube_skalenbeschriftung_int} {5} } = {0} + { + % langer Strich mit Zahl + \dim_set:Nn \l_schulma_physik_messschraube_skalenstrich_deltay_dim { 4.375mm * ##1/18 } + \int_compare:nNnTF {\l_schulma_physik_messschraube_skalenbeschriftung_int} < {10} + { + \draw ( #1 * \l_schulma_physik_messschraube_massstab_dim , \l_schulma_physik_messschraube_skalenstrich_y_dim ) + -- ++ ( 7mm , \l_schulma_physik_messschraube_skalenstrich_deltay_dim ) + node [right] { \footnotesize 0 \int_to_arabic:n {\l_schulma_physik_messschraube_skalenbeschriftung_int} } ; + } + { + \draw ( #1 * \l_schulma_physik_messschraube_massstab_dim , \l_schulma_physik_messschraube_skalenstrich_y_dim ) + -- ++ ( 7mm , \l_schulma_physik_messschraube_skalenstrich_deltay_dim ) + node [right] { \footnotesize \int_to_arabic:n {\l_schulma_physik_messschraube_skalenbeschriftung_int} } ; + } + } + { + % kurzer Strich + \dim_set:Nn \l_schulma_physik_messschraube_skalenstrich_deltay_dim { 2.5mm * ##1/18 } + \draw ( #1 * \l_schulma_physik_messschraube_massstab_dim , \l_schulma_physik_messschraube_skalenstrich_y_dim ) + -- ++ ( 4mm , \l_schulma_physik_messschraube_skalenstrich_deltay_dim ) ; + } + } + % oberer und unterer Rand + \draw (-5mm,1cm) -- ( #1 * \l_schulma_physik_messschraube_massstab_dim , 1cm ) ; + \draw (-5mm,-1cm) -- ( #1 * \l_schulma_physik_messschraube_massstab_dim , -1cm ) ; + \draw ( #1 * \l_schulma_physik_messschraube_massstab_dim + 8mm, 1.5cm ) -- ++ (2cm,0) ; + \draw ( #1 * \l_schulma_physik_messschraube_massstab_dim + 8mm, -1.5cm ) -- ++ (2cm,0) ; + % geschwungene Linien links und rechts + \draw (-5mm,-1cm) to [ out=130 , in=-130 ] (-5mm,0) to [ out=130 , in=-130 ] (-5mm,1cm) ; + \draw [very~thin] (-5mm,0) to [ out=50 , in=-50 ] (-5mm,1cm) ; + \draw ( #1 * \l_schulma_physik_messschraube_massstab_dim + 2.8cm , 1.5cm ) to [ out=-50 , in=50 ] ++ (0,-1.5cm) to [ out=-50 , in=50 ] ++ (0,-1.5cm) ; + \draw [very~thin] ( #1 * \l_schulma_physik_messschraube_massstab_dim + 2.8cm , 0 ) to [ out=130 , in=-130 ] ++ (0,1.5cm) ; + \end{tikzpicture} } \ExplSyntaxOff diff --git a/macros/latex/contrib/schulmathematik/schulma-praes.cls b/macros/latex/contrib/schulmathematik/schulma-praes.cls index bdb5e1238d..9d47606aee 100644 --- a/macros/latex/contrib/schulmathematik/schulma-praes.cls +++ b/macros/latex/contrib/schulmathematik/schulma-praes.cls @@ -1,10 +1,8 @@ % schulmathematik bundle: document class schulma-praes -% Version 1.1 -% 13. März 2021 +% Version 1.2 +% 18. Dezember 2021 \NeedsTeXFormat{LaTeX2e} -\ProvidesExplClass{schulma-praes}{2021-03-13}{1.1}{Dokumentenklasse fuer Bildschirmpraesentationen} - -\RequirePackage {xparse} +\ProvidesExplClass{schulma-praes}{2021-12-18}{1.2}{Dokumentenklasse fuer Bildschirmpraesentationen} \bool_new:N \g_schulma_praes_seitenzahlen_bool \bool_new:N \g_schulma_praes_druck_bool @@ -124,10 +122,10 @@ \bool_if:NTF \g_schulma_praes_zwei_folien_pro_seite_bool { - \pgfpagesuselayout {2~on~1} [a4paper, border~shrink = 7mm] + \pgfpagesuselayout {2~on~1} [a4paper, border~shrink = 8mm] } { - \pgfpagesuselayout {4~on~1} [a4paper, landscape, border~shrink = 7mm] + \pgfpagesuselayout {4~on~1} [a4paper, landscape, border~shrink = 8mm] } } diff --git a/macros/latex/contrib/schulmathematik/schulma.sty b/macros/latex/contrib/schulmathematik/schulma.sty index 3bc719c04a..139894f4b8 100644 --- a/macros/latex/contrib/schulmathematik/schulma.sty +++ b/macros/latex/contrib/schulmathematik/schulma.sty @@ -1,13 +1,12 @@ % schulmathematik bundle: package schulma -% Version 1.1 -% 13. März 2021 -\RequirePackage{xparse} -\ProvidesExplPackage {schulma} {2021-03-13} {1.1} {Befehle für die Schulmathematik} +% Version 1.2 +% 18. Dezember 2021 +\ProvidesExplPackage{schulma}{2021-12-18}{1.2}{Befehle für die Schulmathematik} -\RequirePackage[intlimits]{mathtools} -\RequirePackage{autoaligne} -\RequirePackage{icomma} -\RequirePackage{pgfplots} +\RequirePackage [intlimits] {mathtools} +\RequirePackage {autoaligne} +\RequirePackage {icomma}% verträgt sich nicht mit libertinus-otf +\RequirePackage {pgfplots} \ExplSyntaxOff \usetikzlibrary{shapes.misc} @@ -15,22 +14,23 @@ \pgfplotsset { - compat=newest, - axis~lines=middle, - label~style= + compat = newest , + axis~lines = middle , + label~style = { - font=\small + font = \small }, - ticklabel~style= + ticklabel~style = { - font=\footnotesize, - /pgf/number~format/use~comma + font = \footnotesize , + /pgf/number~format/use~comma , + /pgf/number~format/fixed }, - tick~style={thick}, - every~axis~plot/.append~style= + tick~style = {thick} , + scaled~ticks = false , + every~axis~plot/.append~style = { - semithick, - scaled~ticks=false + semithick } } @@ -38,22 +38,22 @@ { \tl_set:Nn \l_tmpa_tl { - xlabel={$x$},ylabel={$y$}, - minor~tick~num=1,minor~tick~length=0pt, - grid=both + xlabel = {$x$} , ylabel = {$y$} , + minor~tick~num = 1 , minor~tick~length = 0pt , + grid = both } - \begin{tikzpicture} - \IfValueTF{#1} + \begin {tikzpicture} + \IfValueTF {#1} { - \begin{axis}[\l_tmpa_tl,#1] + \begin {axis} [ \l_tmpa_tl , #1 ] } { - \begin{axis}[\l_tmpa_tl] + \begin {axis} [\l_tmpa_tl] } } { - \end{axis} - \end{tikzpicture} + \end {axis} + \end {tikzpicture} } \NewDocumentCommand \LGS {m} @@ -68,22 +68,38 @@ } } +\tl_new:N \g_schulma_eulersche_zahl_tl +\tl_new:N \g_schulma_differential_tl + +\AtBeginDocument + { + \tl_gset:Nx \g_schulma_eulersche_zahl_tl + { + \@ifpackageloaded {euler} {e} { \exp_not:N \mathrm {e} } + } + \tl_gset:Nx \g_schulma_differential_tl + { + \@ifpackageloaded {euler} {d} { \exp_not:N \mathrm {d} } + } + } + \NewDocumentCommand \ehoch {m} { - \mathrm{e}^{#1} + \g_schulma_eulersche_zahl_tl ^ {#1} } \NewDocumentCommand \diff {m} { - \mathrm{d}#1 + \g_schulma_differential_tl + #1 } \NewDocumentCommand \Pkt {o m m} { \ensuremath { - \IfValueT{#1}{#1} - \mathopen{} % Zusatzabstand entfernen + \IfValueT {#1} {#1} + \mathopen {} % Zusatzabstand entfernen \left( {#2} \, \middle| \, {#3} \right) } } @@ -92,8 +108,8 @@ { \ensuremath { - \IfValueT{#1}{#1} - \mathopen{} % Zusatzabstand entfernen + \IfValueT {#1} {#1} + \mathopen {} % Zusatzabstand entfernen \left( {#2} \, \middle| \, {#3} \, \middle| \, {#4} \right) } } @@ -102,9 +118,9 @@ { \ensuremath { - \begin{pmatrix} + \begin {pmatrix} #1 \\ #2 \\ #3 - \end{pmatrix} + \end {pmatrix} } } @@ -112,9 +128,9 @@ { \ensuremath { - \begin{pmatrix} + \begin {pmatrix} #1 \\[0,5ex] #2 \\[0,5ex] #3 - \end{pmatrix} + \end {pmatrix} } } @@ -129,10 +145,10 @@ { Kreuz/.style = { - cross~out, - draw, - minimum~size = 5pt, - inner~sep = 0pt, + cross~out , + draw , + minimum~size = 5pt , + inner~sep = 0pt , outer~sep = 0pt } } diff --git a/macros/latex/contrib/schulmathematik/schulmathematik.pdf b/macros/latex/contrib/schulmathematik/schulmathematik.pdf Binary files differindex c74144b617..d99796c55a 100644 --- a/macros/latex/contrib/schulmathematik/schulmathematik.pdf +++ b/macros/latex/contrib/schulmathematik/schulmathematik.pdf diff --git a/macros/latex/contrib/schulmathematik/schulmathematik.tex b/macros/latex/contrib/schulmathematik/schulmathematik.tex index 0963be38b9..f643c7d999 100644 --- a/macros/latex/contrib/schulmathematik/schulmathematik.tex +++ b/macros/latex/contrib/schulmathematik/schulmathematik.tex @@ -1,6 +1,6 @@ % Manual of the schulmathematik bundle -% Version 1.1 -% 13. März 2021 +% Version 1.2 +% 18. Dezember 2021 \documentclass{scrartcl} \usepackage[babelshorthands]{polyglossia} \usepackage{longtable} @@ -199,11 +199,6 @@ ehr } -\NewDocumentCommand \AutorEMailDomain {} - { - abgol - } - \NewDocumentCommand \Paket {m} { \textcolor {dgruen} { \textsf {#1} } @@ -333,6 +328,18 @@ \ExplSyntaxOff +\newcommand\LsgBeschreibungA{Innerhalb dieser Umgebung kann die Lösung einer + Aufgabe oder Teilaufgabe eingegeben werden. Sie erscheint nur in der + Musterlösung (d.\,h. bei Verwendung der Klassenoption \Option{Musterloesung}). + \par + Die Befehle \Befehl{begin\{Lsg\}} und \Befehl{end\{Lsg\}} müssen jeweils in + einer eigenen Zeile stehen und dürfen nicht eingerückt werden. Dies ist eine + Restriktion des Pakets \Paket{comment}.} + +\newcommand\LsgBeschreibungB{Falls die Lösung mit einer eingerückten Formel + beginnt, sollte die Sternvariante benutzt werden, um einen zu großen vertikalen + Abstand zwischen Aufgabe und Lösung zu vermeiden.} + \begin{document} \begin{center} @@ -348,7 +355,7 @@ Schulmathematik \medskip \large -Version 1.1 +Version 1.2 \medskip \normalsize @@ -358,12 +365,15 @@ Version 1.1 \large \textit{Paketautor} -\medskip +\smallskip \AutorVorname\ \AutorNachname -\normalsize +\bigskip +\textit{Fragen und Fehlermeldungen} + \smallskip -\texttt{\AutorNachname*@\AutorEMailDomain.de} +\normalsize +\url{https://codeberg.org/wehr/schulmathematik/issues} \end{center} \medskip @@ -403,9 +413,11 @@ Für \Paket{pgfplots} werden einige Voreinstellungen vorgenommen: \item \verb:compat=newest:, um unter Verzicht auf Abwärtskompatibilität die neueste Variante des Pakets zu verwenden \item \verb:axis lines=middle:, um durch den Ursprung verlaufende Koordinatenachsen anstelle eines Kastens um das ganze Koordinatensystem zu verwenden \item \verb:label style={font=\small}:, um die Beschriftung der Koordinatenachsen in leicht verkleinerter Schrift anzuzeigen -\item \verb:ticklabel style={font=\footnotesize,/pgf/number format/use comma}:, um die Skalen der Koordinatenachsen mit Zahlen in kleiner Schrift unter Verwendung eines Dezimalkommas anstelle eines Dezimalpunkts zu beschriften +\item \verb:ticklabel style={font=\footnotesize,/pgf/number format/use comma,:\\ +\verb:/pgf/number format/fixed}:, um die Skalen der Koordinatenachsen mit Zahlen in kleiner Schrift unter Verwendung eines Dezimalkommas anstelle eines Dezimalpunkts und möglichst ohne wissenschaftliche Zahlschreibweise zu beschriften \item \verb:tick style={thick}:, um deutlich sichtbare Skalenstriche zu erhalten -\item \verb:every axis plot/.append style={semithick,scaled ticks=false}:, um Funktionsgraphen etwas dicker darzustellen und alle Skalenstriche -- ohne eine Zehnerpotenz auszulagern -- mit der vollständigen Zahl zu beschriften +\item \verb:scaled ticks=false:, um alle Skalenstriche -- ohne eine Zehnerpotenz auszulagern -- mit der vollständigen Zahl zu beschriften +\item \verb:every axis plot/.append style={semithick}:, um Funktionsgraphen etwas dicker darzustellen \end{itemize} \Paketbeschreibung{shapes.misc} Diese TikZ-Bibliothek wird zur Definition des Knotentyps \Knotentyp{Kreuz} (s.\,u.) benötigt. @@ -473,7 +485,7 @@ Befehl zur Darstellung einer Funktionstermvariable eines grafikfähigen Taschenr \GTRY{1}[x^2-4] \end{sidebyside} \Knotentypbeschreibung{Kreuz} -Hierbei handelt es sich um einen TikZ-Knotentyp, der der Markierung von Punkten im Koordinatensystem dient. Voreingestellt ist eine Größe von \texttt{5pt} ($\approx\SI{1,8}{mm}$). Eine andere Größe kann mit Hilfe der TikZ-Option \texttt{minimum size} eingestellt werden. +Hierbei handelt es sich um einen TikZ-Knotentyp, der der Markierung von Punkten im Koordinatensystem dient. Voreingestellt ist eine Größe von \texttt{5pt} ($\approx\qty{1,8}{mm}$). Eine andere Größe kann mit Hilfe der TikZ-Option \texttt{minimum size} eingestellt werden. \begin{example} \begin{Kosy}[xmin=0,xmax=5.3,ymin=0,ymax=4.3,x=1cm,y=1cm] \node[Kreuz,label=above right:$A$] at (2,1) {}; @@ -494,8 +506,8 @@ Das Paket erlaubt eine typographisch korrekte Darstellung physikalischer Größe Details zur Syntax und weitere Einstellungsmöglichkeiten sind der \Paket{siunitx}-Anleitung zu entnehmen. \begin{sidebyside} - \SI{37,5}{N}\\ - \SI{7,25e6}{\m\per\s} + \qty{37,5}{N}\\ + \qty{7,25e6}{\m\per\s} \end{sidebyside} \Paketbeschreibung{tikz} Mit Hilfe dieses Pakets kann eine Vielfalt graphischer Darstellungen angefertigt werden. @@ -505,24 +517,34 @@ Diese TikZ-Bibliothek ermöglicht die Darstellung von Schaltbildern. \subsubsection*{Befehle} \begin{Liste} +\Befehlsbeschreibung{Messschieber}[\marg{Messwert}] +Gibt die Skala eines Messschiebers (auch Schieblehre genannt) mit dem angegebenen \meta{Messwert} aus. Der Messwert ist mit Dezimalpunkt in Zentimetern ohne die Einheit anzugeben. +\begin{example} + \Messschieber{4.73} +\end{example} +\Befehlsbeschreibung{Messschraube}[\marg{Messwert}] +Gibt die Skala einer Messschraube (auch Mikrometerschraube genannt) mit dem angegebenen \meta{Messwert} aus. Der Messwert ist mit Dezimalpunkt in Millimetern ohne die Einheit anzugeben. +\begin{sidebyside} + \Messschraube{6.18} +\end{sidebyside} \Befehlsbeschreibung{Massstab}[\marg{Zahl 1}\marg{Einheit 1}\marg{Zahl 2}\marg{Einheit 2}] Dient zur Definition eines Maßstabs. Für Zahlenwerte und Einheiten gilt die Syntax des \Paket{siunitx}-Pakets. \begin{sidebyside} \Massstab{1}{cm}{5}{N} \end{sidebyside} -\Befehlsbeschreibung{tSI}[\marg{Zahl}\marg{Einheit}] -Einheiten in Bruchschreibweise werden in eingerückten Formeln (\emph{displaystyle}) mit dem \verb:\SI:-Befehl aus dem Paket \Paket{siunitx} zu groß dargestellt. Der \Befehl{tSI}-Befehl stellt Einheiten immer als kleinen Bruch wie in nicht eingerückten Formeln (\emph{textstyle}) dar. +\Befehlsbeschreibung{tqty}[\marg{Zahl}\marg{Einheit}] +Einheiten in Bruchschreibweise werden in eingerückten Formeln (\emph{displaystyle}) mit dem \verb:\qty:-Befehl aus dem Paket \Paket{siunitx} zu groß dargestellt. Der \Befehl{tqty}-Befehl stellt Einheiten immer als kleinen Bruch wie in nicht eingerückten Formeln (\emph{textstyle}) dar. \begin{example} - \[v=\frac{s}{t}=\SI[per-mode=fraction]{25}{\m\per\s}\] - \[v=\frac{s}{t}=\tSI{25}{\m\per\s}\] + \[v=\frac{s}{t}=\qty[per-mode=fraction]{25}{\m\per\s}\] + \[v=\frac{s}{t}=\tqty{25}{\m\per\s}\] \end{example} -\Befehlsbeschreibung{tsi}[\marg{Einheit}] -Stellt eine Einheit in Bruchschreibweise als kleinen Bruch dar. Basiert auf dem \verb:\si:-Befehl aus dem Paket \Paket{siunitx}. +\Befehlsbeschreibung{tunit}[\marg{Einheit}] +Stellt eine Einheit in Bruchschreibweise als kleinen Bruch dar. Basiert auf dem \verb:\unit:-Befehl aus dem Paket \Paket{siunitx}. \begin{sidebyside} - \tsi{\N\per\cm} + \tunit{\N\per\cm} \end{sidebyside} \Befehlsbeschreibung{Beschl}[\marg{Zahl}] -Gibt eine Beschleunigung mit der Einheit \si[per-mode=symbol]{\m\per\square\s} in Bruchschreibweise aus. +Gibt eine Beschleunigung mit der Einheit \unit[per-mode=symbol]{\m\per\square\s} in Bruchschreibweise aus. \begin{sidebyside} \Beschl{4,2} \end{sidebyside} @@ -552,7 +574,7 @@ Gibt die auf drei gültige Stellen gerundete elektrische Feldkonstante aus. \EFK \end{sidebyside} \Befehlsbeschreibung{MFK}[\sarg] -Gibt den exakten Wert der magnetischen Feldkonstante aus. Die Sternvariante gibt den auf drei gültige Stellen gerundeten Wert aus. +Gibt den (fast) exakten Wert\footnote{Nach der Neudefinition der SI-Basiseinheiten von 2019 ist der Wert der magnetischen Feldkonstanten experimentell zu bestimmen und $\mu_0=\MFK$ gilt nicht mehr exakt.} der magnetischen Feldkonstante aus. Die Sternvariante gibt den auf drei gültige Stellen gerundeten Wert aus. \begin{sidebyside} \MFK\\ \MFK* @@ -623,9 +645,19 @@ Da die Nuklidschreibweise eher selten benötigt wird, wird dieses Paket nicht au \section{Dokumentenklassen} \subsection{Arbeitsblätter mit der Klasse \Klasse{schulma-ab}} -Die Dokumentenklasse für Arbeitsblatter basiert auf der KOMA-Script-Klasse \Klasse{scrartcl}. Diese wird mit der Option \Option{DIV=14} geladen, d.\,h. der linke und rechte Rand sind je \SI{2,25}{cm} breit. +Die Dokumentenklasse für Arbeitsblatter basiert auf der KOMA-Script-Klasse \Klasse{scrartcl}. Diese wird mit der Option \Option{DIV=14} geladen, d.\,h. der linke und rechte Rand sind im Hochformat A\,4 je \qty{2,25}{cm} breit. -Für Arbeitsblätter in A\,5 (Querformat) steht die Klassenoption \Option{A5quer} zur Verfügung. In diesem Fall wird \Option{DIV=11} gewählt, was horizontalen Rändern von ca. \SI{2,9}{cm} entspricht. +\subsubsection*{Klassenoptionen} +\begin{Liste} +\Optionsbeschreibung{A4quer} +Stellt das Querformat für die Seite ein. Die horizontalen Seitenränder sind in diesem Fall ca. \qty{3,2}{cm} groß. +\Optionsbeschreibung{A5} +Stellt die Papiergröße A\,5 im Hochformat ein. In diesem Fall wird die KOMA-Option \Option{DIV=11} gewählt, was horizontalen Rändern von ca. \qty{2,0}{cm} entspricht. +\Optionsbeschreibung{A5quer} +Stellt die Papiergröße A\,5 im Querformat ein. In diesem Fall wird die KOMA-Option \Option{DIV=11} gewählt, was horizontalen Rändern von ca. \qty{2,9}{cm} entspricht. +\Optionsbeschreibung{Musterloesung} +Gibt die Musterlösung der Aufgabe aus, die innerhalb der Umgebung \Umgebung{Lsg} (s.\,u.) eingegeben wurde. +\end{Liste} \subsubsection*{Geladene Pakete} \begin{Liste} @@ -745,6 +777,14 @@ Setzt eine Lücke mit der angegeben Breite innerhalb eines Lückentexts. Für L \begin{example} Der Atomkern besteht aus \Luecke{3,5cm} und \Luecke{3,5cm}. \end{example} +\Umgebungsbeschreibung{Lsg}[\sarg] +\LsgBeschreibungA + +\LsgBeschreibungB +\Befehlsbeschreibung{NurAufgabe}[\marg{Teil der Aufgabe}] +Der \meta{Teil der Aufgabe}, der Argument dieses Befehls ist, erscheint nicht in der Musterlösung. Dies ist nützlich für ergänzende Bearbeitungshinweise, die in der Musterlösung nicht benötigt werden, sowie für Abbildungen, die in der Musterlösung anders dargestellt werden sollen. Außerdem kann bei Bedarf der gesamte Aufgabentext mit Hilfe dieses Befehls für die Musterlösung ausgeblendet werden. +\Befehlsbeschreibung{NurLoesung}[\marg{Teil der Aufgabe}] +Der \meta{Teil der Aufgabe}, der Argument dieses Befehls ist, erscheint nur in der Musterlösung. Im Gegensatz zur Umgebung \Umgebung{Lsg} beginnt dieser Befehl keinen neuen Absatz. \end{Liste} \subsubsection*{Zähler} @@ -869,7 +909,7 @@ Erzeugt eine Bildschirmpräsentation mit der Musterlösung der Klausur, die inne \subsubsection*{Geladene Pakete} \begin{Liste} \Paketbeschreibung{geometry}[mit den Optionen \Option{hmargin=2.5cm} und \Option{top=2.7cm}] -Paket zur Einstellung der Seitenränder. Der linke und rechte Rand werden auf \SI{2,5}{cm} festgelegt. Der obere Rand wird auf \SI{2,7}{cm} vergrößert, damit er Platz für das Namensfeld bietet. +Paket zur Einstellung der Seitenränder. Der linke und rechte Rand werden auf \qty{2,5}{cm} festgelegt. Der obere Rand wird auf \qty{2,7}{cm} vergrößert, damit er Platz für das Namensfeld bietet. Bei Verwendung der Klassenoption \Option{A5quer} wird zusätzlich die Option \Option{bottom=3cm} gesetzt, um genügend Platz für die Seitenzahl zu schaffen. \Paketbeschreibung{scrlayer-scrpage} @@ -913,13 +953,11 @@ Für den Satz von Unteraufgaben empfiehlt sich die Umgebung \Umgebung{Teilaufgab \Umgebungsbeschreibung{Teilaufgaben} Umgebung, mit der mit Kleinbuchstaben nummerierte Teilaufgaben innerhalb einer Aufgabe gesetzt werden können. Jede Teilaufgabe wird mit dem Befehl \verb:\item: eingeleitet. Der Abstand der Aufgaben wird durch die Länge \Laenge{Teilaufgabenabstand} festgelegt. Die Nummerierung erfolgt mit Hilfe des Zählers \Zaehler{Teilaufgabe}. \Umgebungsbeschreibung{Lsg}[\sarg] -Innerhalb dieser Umgebung kann die Lösung einer Aufgabe oder Teilaufgabe eingegeben werden. Sie erscheint nur in der Musterlösung (d.\,h. bei Verwendung der Klassenoption \Option{Musterloesung}). - -Die Befehle \Befehl{begin\{Lsg\}} und \Befehl{end\{Lsg\}} müssen jeweils in einer eigenen Zeile stehen und dürfen nicht eingerückt werden. Dies ist eine Restriktion des Pakets \Paket{comment}. +\LsgBeschreibungA Die Lösung wird in einer anderen Farbe angezeigt als die Aufgabe. Die verwendeten Farben hängen vom gewählten \Klasse{beamer}-Thema ab, das mit dem Befehl \Befehl{usetheme} eingestellt werden kann (siehe \Klasse{beamer}-Anleitung). In der Voreinstellung wird der Aufgabentext blau und der Lösungstext schwarz ausgegeben. -Falls die Lösung mit einer eingerückten Formel beginnt, sollte die Sternvariante benutzt werden, um einen zu großen vertikalen Abstand zwischen Aufgabe und Lösung zu vermeiden. +\LsgBeschreibungB \Befehlsbeschreibung{FarbeAufgabe} Dient zur manuellen Umschaltung auf die Textfarbe der Aufgabe. \Befehlsbeschreibung{FarbeLoesung} @@ -1028,7 +1066,7 @@ Dient zur Verwendung des Namens des Prüf"|lings im Dativ innerhalb des Gutachte \subsection{Mündliche Abiturprüfungen mit der Klasse \Klasse{schulma-mdlprf}} Die Klasse für mündliche Abiturprüfungen ermöglicht die Erstellung von Aufgabenblättern mit Erwartungshorizonten für mündliche Abiturprüfungen. Prüfungen für mehrere Prüf"|linge können aus demselben Dokument erzeugt werden. -Die Klasse \Klasse{schulma-mdlprf} basiert auf der Dokumentenklasse \Klasse{scrartcl}. Diese wird mit der Option \Option{DIV=14} geladen, d.\,h. der linke und rechte Rand sind je \SI{2,25}{cm} breit. +Die Klasse \Klasse{schulma-mdlprf} basiert auf der Dokumentenklasse \Klasse{scrartcl}. Diese wird mit der Option \Option{DIV=14} geladen, d.\,h. der linke und rechte Rand sind je \qty{2,25}{cm} breit. \subsubsection*{Klassenoptionen} \begin{Liste} \Optionsbeschreibung{AT} @@ -1083,7 +1121,7 @@ Gibt eine einzelne Prüfung mit Erwartungshorizont aus. Das erste Argument gibt \addsec{Versionsprotokoll} \begin{description} \item[1.0] 16. Februar 2020 -\item[1.1] \today +\item[1.1] 13. März 2021 \begin{itemize} \item \textbf{\Paket{schulma}:} neuer Befehl \Befehl{GTRY} \item \textbf{\Paket{schulma-physik}:} neue Befehle \Befehl{EFK} und \Befehl{MFK} @@ -1095,6 +1133,22 @@ Der Klausurtitel und der Klausurteiltitel werden jetzt auch in der Musterlösung \item \textbf{\Klasse{schulma-gutachten}:} Korrektur der Fehlermeldung bei fehlendem \Befehl{Ort}-Befehl; Fehlerbehebung bei der KOMA-Option \Option{DIV} \item \textbf{\Klasse{schulma-mdlprf}:} Fehlerbehebung bei der KOMA-Option \Option{DIV} \end{itemize} +\item[1.2] \today +\begin{itemize} +\item \textbf{\Paket{schulma}:} Unterdrückung der wissenschaftlichen Zahlschreibweise bei der Skalenbeschriftung von \Paket{pgfplots}-Graphen durch die Option \texttt{ticklabel style=""\{/pgf/number format/fixed\}}; Korrektur der (bisher unwirksamen) \Paket{pgfplots}-Option \verb:scaled ticks=false: + +Bei Verwendung des \Paket{euler}-Pakets werden die Basis der e-Funktion mit dem Befehl \Befehl{ehoch} und das Differentialzeichen d mit dem Befehl \Befehl{diff} wie Variablen aus der Euler-Schrift gesetzt, da diese Schrift grundsätzlich aufrecht ist. +\item \textbf{\Paket{schulma-physik}:} neue Befehle \Befehl{Messschieber} und \Befehl{Messschraube} + +Das Paket wurde an die Version 3 des \Paket{siunitx}-Pakets angepasst, in welchem die Befehle \verb:\SI: und \verb:\si: durch \verb:\qty: und \verb:\unit: ersetzt wurden. Dementsprechend wurden die Befehle \Befehl{tSI} und \Befehl{tsi} in \Befehl{tqty} und \Befehl{tunit} umbenannt. Die alten Befehle bleiben vorerst erhalten. +\item \textbf{\Klasse{schulma-ab}:} neue Klassenoptionen \Option{A4quer} und \Option{A5}; Unterstützung von Musterlösungen mit Hilfe der Klassenoption \Option{Musterloesung}, der Umgebung \Umgebung{Lsg} sowie der Befehle \Befehl{NurAufgabe} und \Befehl{NurLoesung} wie in der Klasse \Klasse{schulma-klausur} +\item \textbf{\Klasse{schulma-klausur}:} veränderte Paketladereihenfolge, um die Option \Option{intlimits} des Pakets \Paket{mathtools} wirksam zu machen + +Bei Verwendung der Klassenoption \Option{A5quer} wird jetzt auch tatsächlich das Querformat eingestellt. + +Für die Musterlösung wird bei Verwendung der Umgebung \Umgebung{Teilaufgaben} innerhalb der Umgebung \Umgebung{Lsg} nur noch die Aufgabenmarke in Aufgabenfarbe angezeigt, der folgende Text dagegen in Lösungsfarbe. +\item \textbf{\Klasse{schulma-gutachten}:} Anpassung an die Version 3 des \Paket{siunitx}-Pakets +\end{itemize} \end{description} \end{document} diff --git a/macros/latex/contrib/spbmark/spbmark.pdf b/macros/latex/contrib/spbmark/spbmark.pdf Binary files differindex 0ba9784d34..07b2e984d4 100644 --- a/macros/latex/contrib/spbmark/spbmark.pdf +++ b/macros/latex/contrib/spbmark/spbmark.pdf diff --git a/macros/latex/contrib/spbmark/spbmark.sty b/macros/latex/contrib/spbmark/spbmark.sty index 72c6240a5f..465a035066 100644 --- a/macros/latex/contrib/spbmark/spbmark.sty +++ b/macros/latex/contrib/spbmark/spbmark.sty @@ -9,7 +9,7 @@ % https://creativecommons.org/licenses/by/4.0/legalcode \NeedsTeXFormat{LaTeX2e}[2018/12/31] \RequirePackage{xparse,l3keys2e} -\ProvidesExplPackage{spbmark}{2021/12/16}{1.2B} +\ProvidesExplPackage{spbmark}{2021/12/18}{1.2C} {Customize superscripts and subscripts} \cs_generate_variant:Nn \dim_max:nn { VV } @@ -40,8 +40,8 @@ \tl_new:N \l__spb_super_cmd_ii_tl \tl_new:N \l__spb_sub_cmd_ii_tl -\tl_new:N \g__spb_hshift_init_tl -\tl_new:N \g__spb_vshift_init_tl +\tl_new:N \g__spb_hmove_init_tl +\tl_new:N \g__spb_vmove_init_tl \tl_new:N \g__spb_cmd_init_tl \cs_new_protected:Npn \spb_local_case_init:nnnn #1#2#3#4 @@ -55,48 +55,58 @@ } \spb_define:n { - spvshift .dim_set:N = \l__spb_super_vshift_dim, - spvshift .initial:n = 0pt, - sphshift .dim_set:N = \l__spb_super_hshift_dim, - sphshift .initial:n = 0pt, - sbvshift .dim_set:N = \l__spb_sub_vshift_dim, - sbvshift .initial:n = 0pt, - sbhshift .dim_set:N = \l__spb_sub_hshift_dim, - sbhshift .initial:n = 0pt, - spbhshift .dim_set:N = \l__spb_supersub_hshift_dim, - spbhshift .initial:n = 0pt, - vshift .code:n = + spvmove .dim_set:N = \l__spb_super_vmove_dim, + spvmove .initial:n = 0pt, + sphmove .dim_set:N = \l__spb_super_hmove_dim, + sphmove .initial:n = 0pt, + sbvmove .dim_set:N = \l__spb_sub_vmove_dim, + sbvmove .initial:n = 0pt, + sbhmove .dim_set:N = \l__spb_sub_hmove_dim, + sbhmove .initial:n = 0pt, + spbhmove .dim_set:N = \l__spb_supersub_hmove_dim, + spbhmove .initial:n = 0pt, + vmove .code:n = { - \spb_local_case_init:nnnn { vshift } - { \dim_set:Nn \l__spb_super_vshift_dim {#1} } - { \dim_set:Nn \l__spb_sub_vshift_dim {#1} } + \spb_local_case_init:nnnn { vmove } + { \dim_set:Nn \l__spb_super_vmove_dim {#1} } + { \dim_set:Nn \l__spb_sub_vmove_dim {#1} } { \dim_set:Nn \l__spb_supersub_vsep_dim {#1} } }, - hshift .code:n = + hmove .code:n = { - \spb_local_case_init:nnnn { hshift } - { \dim_set:Nn \l__spb_super_hshift_dim {#1} } - { \dim_set:Nn \l__spb_sub_hshift_dim {#1} } - { \dim_set:Nn \l__spb_supersub_hshift_dim {#1} } + \spb_local_case_init:nnnn { hmove } + { \dim_set:Nn \l__spb_super_hmove_dim {#1} } + { \dim_set:Nn \l__spb_sub_hmove_dim {#1} } + { \dim_set:Nn \l__spb_supersub_hmove_dim {#1} } }, - nohshift .meta:n = { sphshift = 0pt,sbhshift = 0pt }, - novshift .meta:n = { spvshift = 0pt,sbvshift = 0pt }, - spcmd .tl_set:N = \l__spb_super_cmd_i_tl, - sbcmd .tl_set:N = \l__spb_sub_cmd_i_tl, - spbcmd .code:n = \spb_both_cmd_assign:n {#1}, - cmd .code:n = + nohmove .meta:n = { sphmove = 0pt,sbhmove = 0pt }, + novmove .meta:n = { spvmove = 0pt,sbvmove = 0pt }, + spcmd .tl_set:N = \l__spb_super_cmd_i_tl, + sbcmd .tl_set:N = \l__spb_sub_cmd_i_tl, + spbcmd .code:n = \spb@both@cmd@assign{#1}, + cmd .code:n = { \spb_local_case_init:nnnn { cmd } { \tl_set:Nn \l__spb_super_cmd_i_tl {#1} } { \tl_set:Nn \l__spb_sub_cmd_i_tl {#1} } - { \spb_both_cmd_assign:n {#1} } + { \spb@both@cmd@assign{#1} } }, - vsep .dim_set:N = \l__spb_supersub_vsep_dim, - vsep .initial:n = 0.3ex, - halign .tl_set:N = \l__spb_supersub_align_tl, - halign .initial:n = l, - mode .tl_set:N = \l__spb_mode_value_tl, - mode .initial:n = match + spcmd+ .code:n = \tl_put_right:Nn \l__spb_super_cmd_i_tl {#1}, + sbcmd+ .code:n = \tl_put_right:Nn \l__spb_sub_cmd_i_tl {#1}, + spbcmd+ .code:n = \spb@both@cmd@assign+{#1}, + cmd+ .code:n = + { + \spb_local_case_init:nnnn { cmd } + { \tl_put_right:Nn \l__spb_super_cmd_i_tl {#1} } + { \tl_put_right:Nn \l__spb_sub_cmd_i_tl {#1} } + { \spb@both@cmd@assign+{#1} } + }, + vsep .dim_set:N = \l__spb_supersub_vsep_dim, + vsep .initial:n = 0.6ex, + halign .tl_set:N = \l__spb_supersub_halign_tl, + halign .initial:n = l, + mode .tl_set:N = \l__spb_mode_value_tl, + mode .initial:n = match } \tl_set:Nn \l__spb_boxa_wd_tl { \box_wd:N \l_tmpa_box } @@ -111,7 +121,7 @@ { \box_move_down:nn {#1} { \box_use:N \l_tmpa_box } } \cs_new:Npn \spb_boxb_move_down:n #1 { \box_move_down:nn {#1} { \box_use:N \l_tmpb_box } } -\cs_new:Npn \spb_boxa_vshift:nn #1 +\cs_new:Npn \spb_boxa_vmove:nn #1 { \str_case:nn {#1} { @@ -121,12 +131,15 @@ } \cs_generate_variant:Nn \spb_boxa_move_up:n { V } \cs_generate_variant:Nn \spb_boxb_move_down:n { V } -\cs_new:Npn \spb_hbox_overlap_vshift:n #1 +\dim_new:N \l__spb_supersub_half_vsep_dim +\cs_new:Npn \spb_hbox_overlap_vmove:n #1 { + \dim_set:Nn \l__spb_supersub_half_vsep_dim + { \l__spb_supersub_vsep_dim/2 } \use:c { hbox_overlap_#1:n } - { \spb_boxa_move_up:V \l__spb_supersub_vsep_dim } + { \spb_boxa_move_up:V \l__spb_supersub_half_vsep_dim } \use:c { hbox_overlap_#1:n } - { \spb_boxb_move_down:V \l__spb_supersub_vsep_dim } + { \spb_boxb_move_down:V \l__spb_supersub_half_vsep_dim } } \cs_set_eq:NN \spb@textsuperscript@save \textsuperscript \cs_set_eq:NN \spb@textsubscript@save \textsubscript @@ -170,9 +183,13 @@ \tl_if_empty:nF {#1} { \box_set_ht:Nn \l_tmpb_box {#1} } \tl_if_novalue:nF {#2} { \box_set_dp:Nn \l_tmpb_box {#2} } } -\NewDocumentCommand{\spb_both_cmd_assign:n} - {>{\SplitArgument{1}{,}}m} - {\spb_supersub_both_cmd:nn #1} +\NewDocumentCommand{\spb@both@cmd@assign} + {t+>{\SplitArgument{1}{,}}m} + { + \IfBooleanTF{#1} + {\spb_supersub_both_addto_cmd:nn #2} + {\spb_supersub_both_cmd:nn #2} + } \cs_new_protected:Npn \spb_supersub_both_cmd:nn #1#2 { \tl_set:Nn \l__spb_super_cmd_ii_tl {#1} @@ -180,19 +197,31 @@ { \tl_clear:N \l__spb_sub_cmd_ii_tl } { \tl_set:Nn \l__spb_sub_cmd_ii_tl {#2} } } +\cs_new_protected:Npn \spb_supersub_both_addto_cmd:nn #1#2 + { + \tl_put_right:Nn \l__spb_super_cmd_ii_tl {#1} + \tl_if_novalue:nF {#2} { \tl_put_right:Nn \l__spb_sub_cmd_ii_tl {#2} } + } \cs_new_protected:Npn \spb_mode_switch:nnn #1#2#3 { \str_case:Vn \l__spb_mode_value_tl { - { math } {#1} - { text } {#2} - { match } {#3} + { math } + { \use:c { spb_math_print_store_#3:nn } {#1} {#2} } + { text } + { \use:c { spb_text_print_store_#3:nn } {#1} {#2} } + { match } + { + \mode_if_math:TF + { \use:c { spb_math_print_store_#3:nn } {#1} {#2} } + { \use:c { spb_text_print_store_#3:nn } {#1} {#2} } + } } } \cs_new_protected:Npn \spb_global_value_init:n #1 { - \tl_gset:Nn \g__spb_hshift_init_tl {#1} - \tl_gset:Nn \g__spb_vshift_init_tl {#1} + \tl_gset:Nn \g__spb_hmove_init_tl {#1} + \tl_gset:Nn \g__spb_vmove_init_tl {#1} \tl_gset:Nn \g__spb_cmd_init_tl {#1} } @@ -204,14 +233,7 @@ \group_begin: \spb_global_value_init:n {#1} \keys_set:nn { ctex/style } {##1,##4} - \spb_mode_switch:nnn - { \spb_math_print_store_i:nn {#1} {##3} } - { \spb_text_print_store_i:nn {#1} {##3} } - { - \mode_if_math:TF - { \spb_math_print_store_i:nn {#1} {##3} } - { \spb_text_print_store_i:nn {#1} {##3} } - } + \spb_mode_switch:nnn {#1} {##3} { i } \spb_content_hbox_set:n {#1} \spb_box_ht_dp_assign:nn ##2 \box_use:N \l_tmpa_box @@ -219,49 +241,36 @@ } } \cs_new_protected:Npn \spb_content_hbox_set:n #1 - { - \hbox_set:Nn \l_tmpa_box - { - \dim_compare:nNnTF { \dim_use:c { l__spb_#1_hshift_dim } } < { 0pt } - { - \hbox_overlap_left:n - { - \hbox_to_wd:nn - { \l__spb_boxa_wd_tl - \dim_use:c { l__spb_#1_hshift_dim } } - { - \spb_boxa_vshift:nn {#1} - { \dim_use:c { l__spb_#1_vshift_dim } }\hss - } - } - } - { - \hbox_to_wd:nn - { \l__spb_boxa_wd_tl + \dim_use:c { l__spb_#1_hshift_dim } } - { - \hss\spb_boxa_vshift:nn {#1} - { \dim_use:c { l__spb_#1_vshift_dim } } - } - } - } - } + { + \hbox_set:Nn \l_tmpa_box + { + \dim_compare:nNnTF { \dim_use:c { l__spb_#1_hmove_dim } } < { 0pt } + { + \hbox_overlap_left:n + { + \hbox_overlap_right:n + { \spb_boxa_vmove:nn {#1} { \dim_use:c { l__spb_#1_vmove_dim } } } + \skip_horizontal:n { -\dim_use:c { l__spb_#1_hmove_dim } } + } + } + { + \hbox_to_wd:nn + { \l__spb_boxa_wd_tl + \dim_use:c { l__spb_#1_hmove_dim } } + { \hss\spb_boxa_vmove:nn {#1} { \dim_use:c { l__spb_#1_vmove_dim } } } + } + } + } \clist_map_inline:nn { super,sub } { \spb_both_newcmd_map:n {#1} } -\cs_new:Npn \spb_supersub_hshift_if_negative:TF #1#2 - { \dim_compare:VNnTF \l__spb_supersub_hshift_dim < { 0pt } {#1} {#2} } +\cs_new:Npn \spb_supersub_hmove_if_negative:TF #1#2 + { \dim_compare:VNnTF \l__spb_supersub_hmove_dim < { 0pt } {#1} {#2} } \NewDocumentCommand{\supersub}{O{}mmO{}} { \group_begin: \spb_global_value_init:n { supersub } \keys_set:nn { ctex/style } {#1,#4} - \spb_mode_switch:nnn - { \spb_math_print_store_ii:nn {#2} {#3} } - { \spb_text_print_store_ii:nnnn {#2} {#3} } - { - \mode_if_math:TF - { \spb_math_print_store_ii:nn {#2} {#3} } - { \spb_text_print_store_ii:nn {#2} {#3} } - } - \str_case:VnF \l__spb_supersub_align_tl + \spb_mode_switch:nnn {#2} {#3} { ii } + \str_case:VnF \l__spb_supersub_halign_tl { { l } { \use_i:nnn } { c } { \use_ii:nnn } @@ -272,58 +281,55 @@ \use_i:nnn } { - \spb_supersub_hshift_if_negative:TF + \spb_supersub_hmove_if_negative:TF { \hbox_overlap_left:n { - \spb_hbox_overlap_vshift:n { right } - \skip_horizontal:n { -\l__spb_supersub_hshift_dim } + \spb_hbox_overlap_vmove:n { right } + \skip_horizontal:n { -\l__spb_supersub_hmove_dim } } } { \hbox:n { - \skip_horizontal:n { \l__spb_supersub_hshift_dim } - \spb_hbox_overlap_vshift:n { right } + \skip_horizontal:n { \l__spb_supersub_hmove_dim } + \spb_hbox_overlap_vmove:n { right } \skip_horizontal:n { \l__spb_box_max_wd_tl } } } } { - \spb_supersub_hshift_if_negative:TF + \spb_supersub_hmove_if_negative:TF { \hbox_overlap_left:n { - \spb_hbox_overlap_vshift:n { center } - \skip_horizontal:n - { \l__spb_box_max_wd_tl/2 - \l__spb_supersub_hshift_dim } + \spb_hbox_overlap_vmove:n { center } + \skip_horizontal:n { \l__spb_box_max_wd_tl/2 - \l__spb_supersub_hmove_dim } } } { \hbox:n { - \skip_horizontal:n - { \l__spb_box_max_wd_tl/2 + \l__spb_supersub_hshift_dim } - \spb_hbox_overlap_vshift:n { center } + \skip_horizontal:n { \l__spb_box_max_wd_tl/2 + \l__spb_supersub_hmove_dim } + \spb_hbox_overlap_vmove:n { center } \skip_horizontal:n { \l__spb_box_max_wd_tl/2 } } } } { - \spb_supersub_hshift_if_negative:TF + \spb_supersub_hmove_if_negative:TF { \hbox_overlap_left:n { - \spb_hbox_overlap_vshift:n { left } - \skip_horizontal:n { -\l__spb_supersub_hshift_dim } + \spb_hbox_overlap_vmove:n { left } + \skip_horizontal:n { -\l__spb_supersub_hmove_dim } } } { \hbox:n { - \skip_horizontal:n - { \l__spb_box_max_wd_tl + \l__spb_supersub_hshift_dim } - \spb_hbox_overlap_vshift:n { left } + \skip_horizontal:n { \l__spb_box_max_wd_tl + \l__spb_supersub_hmove_dim } + \spb_hbox_overlap_vmove:n { left } } } } diff --git a/macros/latex/contrib/spbmark/spbmark.tex b/macros/latex/contrib/spbmark/spbmark.tex index a8f74d041b..8f9ed7f08d 100644 --- a/macros/latex/contrib/spbmark/spbmark.tex +++ b/macros/latex/contrib/spbmark/spbmark.tex @@ -6,8 +6,8 @@ { package = spbmark, title = the spbmark package, - version = v1.2B, - date = 2021/12/16, + version = v1.2C, + date = 2021/12/18, authors = Qu Yi, info = Customize superscript and subscript, email = q1jx@foxmail.com, @@ -47,7 +47,7 @@ The following macro package options will redefine the scripts commands of the \L \keybool{math}\Default{false} \cs{sp} and \cs{sb} are equivalent to the \cs{super} and \cs{sub} commands. \keybool{foot}\Default{false} - The format of the footnote mark match the superscript offsets and format of the \cs{spbset} global setting. + The format of the footnote mark match the superscript move and format of the \cs{spbset} global setting. \opt{both}\Default! The values of \option{text} and \option{math} two options are \code{true} at the same time. \opt{all}\Default! @@ -71,14 +71,16 @@ There are currently three commands to set superscript and subscript. Their forma The optional parameter \splitmeta{height}{depth} generally does not need to be used. The \meta{height} and \meta{depth} are separated by commas. Only the front part indicates the \meta{height} of the superscript or subscript, and only the back part indicates the \meta{depth}. -The options common to \meta{kv list} of the three commands are as follows. They can be used in \meta{key-value list} for the \cs{spbset} command. If \option{vshift}, \option{hshift} and \option{cmd} are used in the \cs{spbset} command, it is set according to the type of the previous nearest command. +The options common to \meta{kv list} of the three commands are as follows. They can be used in \meta{key-value list} for the \cs{spbset} command. If \option{vmove}, \option{hmove} and \option{cmd} are used in the \cs{spbset} command, it is set according to the type of the previous nearest command. \begin{options} - \keyval{vshift}{fixed length}\Default{0pt} - Vertical shift of superscript or subscript. Represents the vertical distance \option{vsep} between superscript and subscript in the superscript and subscript commands. - \keyval{hshift}{fixed length}\Default{0pt} - Horizontal shift of superscript or subscript. Represents the common shift in the superscript and subscript commands. + \keyval{vmove}{fixed length}\Default{0pt} + Vertical move of superscript or subscript. Represents the vertical distance \option{vsep} between superscript and subscript in the superscript and subscript commands. + \keyval{hmove}{fixed length}\Default{0pt} + Horizontal move of superscript or subscript. Represents the common move in the superscript and subscript commands. \keyval{cmd}{format cmds}\Default - The format command of superscript or subscript. The last command can take a parameter, which accepts superscript or subscript. Represents the format of superscript and subscript in the superscript and subscript commands. + The format commands of superscript or subscript. The last command can take a parameter, which accepts superscript or subscript. Represents the format of superscript and subscript in the superscript and subscript commands. + \keyval{cmd+}{format cmds}\Default + Add code to the previous global superscript or subscript format commands. \keychoice{mode}{text,math,match}\Default{match} The mode of superscript or subscript output can be \code{text} or \code{math} mode. The \code{match} option automatically matches output modes according to the current mode. \end{options} @@ -92,56 +94,62 @@ The options common to \meta{kv list} of the three commands are as follows. They The following list of keys control the format both of superscript or subscript. \begin{options} - \keyval{spvshift}{fixed length}\Default{0pt} - Extra vertical shift of the superscript. - \keyval{sphshift}{fixed length}\Default{0pt} - Extra horizontal shift of the superscript. - \keyval{sbvshift}{fixed length}\Default{0pt} - Extra vertical shift of the subscript. - \keyval{sbhshift}{fixed length}\Default{0pt} - Extra horizontal shift of the subscript. - \opt{nohshift}\Default! - Cancel the horizontal offset of superscript and subscript at the same time. - \opt{novshift}\Default! - Cancel the vertical offset of superscript and subscript at the same time. + \keyval{spvmove}{fixed length}\Default{0pt} + Extra vertical move of the superscript. + \keyval{sphmove}{fixed length}\Default{0pt} + Extra horizontal move of the superscript. + \keyval{sbvmove}{fixed length}\Default{0pt} + Extra vertical move of the subscript. + \keyval{sbhmove}{fixed length}\Default{0pt} + Extra horizontal move of the subscript. + \opt{nohmove}\Default! + Cancel the horizontal move of superscript and subscript at the same time. + \opt{novmove}\Default! + Cancel the vertical move of superscript and subscript at the same time. \keyval{spcmd}{format cmds}\Default - Control the format of superscript, the last command in the code can take an argument, which is a superscript. + The format commands of superscript. The last command in the code can take an argument, which is a superscript. + \keyval{spcmd+}{format cmds}\Default + Add code to the previous global superscript format commands. \keyval{sbcmd}{format cmds}\Default - Control the format of subscript, the last command in the code can take an argument, which is a subscript. + The format commands of subscript. The last command in the code can take an argument, which is a subscript. + \keyval{sbcmd+}{format cmds}\Default + Add code to the previous global subcript format commands. \end{options} -If \option{sphshift} is positive, the superscript or subscript moves to the right, and if it is negative, it moves to the left. However, for superscript, if \option{spvshift} is positive, the superscript moves up, and if spvshift is negative, it moves down. For subscripts, if \option{spvshift} is positive, the subscript moves down, and if spvshift is negative, it moves up. +If \option{sphmove} is positive, the superscript or subscript moves to the right, and if it is negative, it moves to the left. However, for superscript, if \option{spvmove} is positive, the superscript moves up, and if spvmove is negative, it moves down. For subscripts, if \option{spvmove} is positive, the subscript moves down, and if spvmove is negative, it moves up. The following list of keys control the format of superscript and subscript. \begin{options} - \keyval{spbhshift}{fixed length}\Default{0pt} - Extra vertical shift of the superscript and the subscript. + \keyval{spbhmove}{fixed length}\Default{0pt} + Extra vertical move of the superscript and the subscript. \kvsplit{spbcmd}{super cmds}{sub cmds}\Default - Control the format of superscript or subscript. The first part is in superscript format, and the latter part is in subscript format. They are separated by commas, or only the first part exists. - \keyval{vsep}{fixed length}\Default{0.3ex} - The distance between superscript and subscript, its default value is \code{0.3ex}. + The format commands of superscript and subscript. The first part is in superscript format, and the latter part is in subscript format. They are separated by commas, or only the first part exists. + \kvsplit{spbcmd+}{super cmds}{sub cmds}\Default + Add code to the previous global superscript and subscript format commands. + \keyval{vsep}{fixed length}\Default{0.6ex} + The vertical distance between superscript and subscript. \keychoice{halign}{l,c,r}\Default{l} The alignment of superscript and subscript, which contains \code{l}, \code{c}, and \code{r} parameters respectively for left, center, and right alignment. \end{options} \section{Examples of use} -Here is a list of the three commands, please pay attention to the usage of optional parameters. Note when the horizontal offset is negative, the starting point is at the right end of the mark. +Here is a list of the three commands, please pay attention to the usage of optional parameters. Note when the horizontal move is negative, the starting point is at the right end of the mark. \begin{example} \spbset{spbcmd={\ttfamily,\color{blue}}} -A\super[vshift=0.2ex,hshift=0.2em,cmd=\textcolor{red}]{exam}B \\ +A\super[vmove=0.2ex,hmove=0.2em,cmd=\textcolor{red}]{exam}B \\ $A\sub[cmd=\mathsf,mode=math]{exam}B$ \\ -A\supersub[vsep=0.3ex,halign=c]{examsuper}{sub}B \\ -A\super{c}[vshift=5pt,hshift=-1.5pt]B\sub[vshift=5pt,hshift=-1pt]{d}AB +A\supersub[vsep=0.6ex,halign=c]{examsuper}{sub}B \\ +A\super{c}[vmove=5pt,hmove=-5.5pt]B\sub[vmove=5pt,hmove=-5pt]{d}AB \end{example} It can also be used with the \pkg*{siunitx} package to output superscript and subscript in the unit: \begin{example} -\unit[mode=math]{kg.m/s\super[vshift=-1pt]{2}} \\ -\qty[mode=text]{30}{A\supersub[hshift=1pt,cmd=\color{red}]{b}{c}} \\ -\spbset{sbhshift=2pt}\unit[mode=text]{A\sub{b}} +\unit[mode=math]{kg.m/s\super[vmove=-1pt]{2}} \\ +\qty[mode=text]{30}{A\supersub[hmove=1pt,cmd=\color{red}]{b}{c}} \\ +\spbset{sbhmove=2pt}\unit[mode=text]{A\sub{b}} \end{example} -\pkg*{spbmark} also patches the footer markers for standard document class and \cls*{KOMA-Script}. You can format the footer markers by redefining the \cs{fnmarkfont} command. Note that extra horizontal shift does not work with footnote markers. +\pkg*{spbmark} also patches the footer markers for standard document class and \cls*{KOMA-Script}. You can format the footer markers by redefining the \cs{fnmarkfont} command. Note that extra horizontal move does not work with footnote markers. \section{Developer commands} If you need to use the original definitions of \cs{textsuperscript}, \cs{textsubscript}, \cs{sp} and \cs{sb} after using the \option{text} or \option{math} option, then you can use the following commands: @@ -157,7 +165,7 @@ If you need to use the original definitions of \cs{textsuperscript}, \cs{textsub \end{commands} \section{Known issues} -At present, the vertical and horizontal offsets are effective for the unit commands in the \pkg*{siunitx} macro package. However, due to the special mechanism that the decimal point is not recognized correctly because it's converted to a space in the \cs*{unit} command, it's recommended to use \code{pt} as the unit of offset. +At present, the vertical and horizontal move are effective for the unit commands in the \pkg*{siunitx} macro package. However, due to the special mechanism that the decimal point is not recognized correctly because it's converted to a space in the \cs*{unit} command, it's recommended to use \code{pt} as the unit of move. \nocite{*} |