From c8d420dd46400927a8d328d2254c955895eaabce Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 9 Sep 2020 20:56:10 +0000 Subject: tuda-ci (9sep20) git-svn-id: svn://tug.org/texlive/trunk@56302 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/tuda-ci/tudaexercise.cls | 640 +++++++++++---------- 1 file changed, 324 insertions(+), 316 deletions(-) (limited to 'Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls') diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls index 6c27255e47c..7f7be57b7f0 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls @@ -1,4 +1,4 @@ -%% This is file `tudaexercise.cls' version 2.11 (2020/06/12), +%% This is file `tudaexercise.cls' version 3.00 (2020/09/08), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- @@ -26,114 +26,39 @@ %% %% ============================================================================ %% -\def\fileversion{2.11} -\def\filedate{2020/06/12} +\def\fileversion{3.00} +\def\filedate{2020/09/08} \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} \ProvidesExplClass{tudaexercise} - {\filedate}{\fileversion}{Exercise sheets and exams using TU Darmstadt's Coporate Desing (TUDa-CI)} + {\filedate}{\fileversion}{Exercise sheets and exams using TU Darmstadt's Corporate Desing (TUDa-CI)} \RequirePackage{l3keys2e} -\tl_new:N \g_TUDa_thesis_options_tl +\str_const:Nn \c__ptxcd_base_str {exercise} +\prop_new:N \g_ptxcd_clsopts_prop +\prop_new:N \g_ptxcd_unknown_clsopts_prop +\prop_gput:Nnn \g_ptxcd_clsopts_prop {captions} {nooneline} +\prop_gput:Nnn \g_ptxcd_clsopts_prop {parskip} {half-} -\prop_new:N \g_TUDa_clsopts_prop -\prop_new:N \g_TUDa_unknown_clsopts_prop -\prop_gput:Nnn \g_TUDa_clsopts_prop {captions} {nooneline} -\prop_gput:Nnn \g_TUDa_clsopts_prop {parskip} {half-} +\int_new:N \g_ptxcd_ruledheaders_int +\int_new:N \g_ptxcd_paper_int -\int_new:N \g_TUDa_ruledheaders_int -\int_new:N \g_TUDa_paper_int +\bool_new:N \g_ptxcd_geometry_bool +\bool_new:N \g_ptxcd_custommargins_bool +\bool_new:N \l_ptxcd_ex_solution_bool + +\bool_new:N \g_ptxcd_smalltitle_bool +\str_new:N \g_ptxcd_department_str %Message Declaration for option processing -\msg_new:nnn {TUDaExercise} {titlepage-option-disabled} { +\msg_new:nnn{tudaexercise} {titlepage-option-disabled} { You~set~the~titlepage~option~to~#1.\\ This option is not supported by tudaexercise.cls.\\ The~KOMA-Script~option~titlepage~is~forced~to~"false". } -\bool_new:N \g_TUDa_geometry_bool -\bool_new:N \g_TUDa_custommargins_bool -\bool_new:N \l_TUDa_ex_solution_bool - -\RequirePackage{environ} - -\def\solution{\TUDa_ex_solutionheader:} -\def\endsolution{} - -\cs_new:Nn \TUDa_setup_solution: { - \bool_if:NTF \l_TUDa_ex_solution_bool { - \def\solution{\TUDa_ex_solutionheader:} - \def\endsolution{} - }{ - \RenewEnviron{solution}{ - \if_false: - \BODY - \fi: - } - } -} - - -\bool_new:N \l_TUDa_ex_subtask_fallback_bool -\keys_define:nn {TUDa/subtask} { - credit .tl_set:N = \l_TUDa_ex_credit_tl, - credit .initial:n =, - points .int_set:N = \l_TUDa_ex_points_int, - points .initial:n = 0, - title .tl_set:N = \l_TUDa_ex_title_tl, - title .initial:n =, - unknown .code:n = \bool_set_true:N \l_TUDa_ex_subtask_fallback_bool \tl_clear:N \l_TUDa_ex_credit_tl \int_zero:N \l_TUDa_ex_points_int, -} - -\keys_define:nn {TUDa/exercise} { - solution .code:n = { - \bool_set_eq:Nc \l_TUDa_ex_solution_bool {c_#1_bool} - \TUDa_setup_solution: - }, - solution .initial:n = false, - solution .default:n = true, - compat .bool_gset:N = \g_TUDa_ex_compatibility_bool, - compatilibity .meta:n = {compat=#1}, - compatibility .default:n = true, - compat .initial:n = false, - credit .tl_set:N = \l_TUDa_ex_credit_tl, - credit .initial:n =, - points .int_set:N = \l_TUDa_ex_points_int, - points .initial:n = 0, -} - -\keys_define:nn {TUDa/exercise/headline} { - headline .code:n = { - \if@twoside - \keys_set:nn {TUDa/exercise/headline} {odd=#1,even=#1} - \else - \keys_set:nn {TUDa/exercise/headline} {oneside=#1} - \fi - }, -} - -\clist_map_inline:nn {odd, even, oneside} { - \tl_new:c {g_TUDa_ex_headline_#1_tl} - \keys_define:nn {TUDa/exercise/headline} { - #1 .choice:, - #1 / title-name-id .code:n = \tl_gset:cn {g_TUDa_ex_headline_#1_tl} { - \g_TUDa_shorttitle_tl\par - \StudentName\StudentID}, - #1 / title-name .code:n = \tl_gset:cn {g_TUDa_ex_headline_#1_tl} { - \g_TUDa_shorttitle_tl\par - \smallskip - \StudentName}, - #1 / title .code:n = \tl_gset:cn {g_TUDa_ex_headline_#1_tl} {\g_TUDa_shorttitle_tl}, - #1 / name-id .code:n = \tl_gset:cn {g_TUDa_ex_headline_#1_tl} {\StudentName\StudentID}, - #1 / name .code:n = \tl_gset:cn {g_TUDa_ex_headline_#1_tl} {\StudentName}, - #1 / unknown .code:n = \tl_gset:cn {g_TUDa_ex_headline_#1_tl} {##1} - } -} - -\bool_new:N \g_TUDa_smalltitle_bool - -\keys_define:nn {TUDa/pub} { +\keys_define:nn {ptxcd/exercise} { color .code:n = {\PassOptionsToPackage{color=#1}{tudacolors}}, accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}}, textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}}, @@ -142,58 +67,77 @@ color .initial:n = 0b, custommargins .choice:, custommargins / true .code:n ={ - \bool_gset_true:N \g_TUDa_custommargins_bool - \bool_gset_false:N \g_TUDa_geometry_bool + \bool_gset_true:N \g_ptxcd_custommargins_bool + \bool_gset_false:N \g_ptxcd_geometry_bool }, custommargins / false .code:n ={ - \bool_gset_false:N \g_TUDa_custommargins_bool - \bool_gset_true:N \g_TUDa_geometry_bool + \bool_gset_false:N \g_ptxcd_custommargins_bool + \bool_gset_true:N \g_ptxcd_geometry_bool }, custommargins / geometry .code:n = { - \bool_gset_true:N \g_TUDa_custommargins_bool - \bool_gset_true:N \g_TUDa_geometry_bool + \bool_gset_true:N \g_ptxcd_custommargins_bool + \bool_gset_true:N \g_ptxcd_geometry_bool }, custommargins .initial:n = false, custommargins .default:n = true, - fontsize .code:n = \prop_gput:Nnn \g_TUDa_clsopts_prop {fontsize} {#1}, + fontsize .code:n = \prop_gput:Nnn \g_ptxcd_clsopts_prop {fontsize} {#1}, fontsize .initial:n = {10pt}, - unknown .code:n = {\prop_gput:NVn \g_TUDa_unknown_clsopts_prop \l_keys_key_tl {#1}}, BCOR .code:n = \PassOptionsToPackage{bindingoffset=#1}{geometry}, bindingoffset .meta:n = {BCOR=#1}, - captions .code:n = {\prop_gput:Nnx \g_TUDa_clsopts_prop {captions} { - \use:n {\prop_item:Nn \g_TUDa_clsopts_prop {captions}}, #1} + captions .code:n = {\prop_gput:Nnx \g_ptxcd_clsopts_prop {captions} { + \use:n {\prop_item:Nn \g_ptxcd_clsopts_prop {captions}}, #1} }, - titlepage .code:n = {\msg_warning:nnn {TUDaPub} {titlepage-option-disabled} {#1}}, + titlepage .code:n = {\msg_warning:nnn {tudapub} {titlepage-option-disabled} {#1}}, paper .choices:nn = {a0,a1,a2,a3,a4,a5,a6}{ - \int_gset_eq:NN \g_TUDa_paper_int \l_keys_choice_int + \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules} \PassOptionsToPackage{paper=\l_keys_choice_tl}{typearea} \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry} }, paper .initial:n = a4, - logofile .tl_gset:N = \g_TUDa_logofile_tl, + logofile .tl_gset:N = \g_ptxcd_logofile_tl, logofile .initial:n = tuda_logo, - solution .meta:nn = {TUDa/exercise}{solution=#1}, - compat .meta:nn = {TUDa/exercise}{compat=#1}, - compatibility .meta:nn = {TUDa/exercise}{compat=#1}, + compat .bool_gset:N = \g_ptxcd_ex_compatibility_bool, + compat .initial:n = false, + compatilibity .meta:n = {compat=#1}, compatibility .default:n = true, - headontitle .bool_gset:N = \g_TUDa_headontitle_bool, + credit .tl_set:N = \l_ptxcd_ex_credit_tl, + credit .initial:n =, + headontitle .bool_gset:N = \g_ptxcd_headontitle_bool, headontitle .initial:n = false, headontitle .default:n =true, - colorback .bool_gset:N = \g_TUDa_colorback_bool, + colorback .bool_gset:N = \g_ptxcd_colorback_bool, colorback .default:n = true, colorback .initial:n = true, title .choice:, title / default .meta:n = {title=large}, - title / large .code:n = \bool_gset_false:N \g_TUDa_smalltitle_bool, - title / small .code:n = \bool_gset_true:N \g_TUDa_smalltitle_bool, + title / large .code:n = \bool_gset_false:N \g_ptxcd_smalltitle_bool, + title / small .code:n = \bool_gset_true:N \g_ptxcd_smalltitle_bool, title .initial:n = default, + department .choice:, + department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default}, + department / mecheng .code:n = { + \str_gset:Nn \g_ptxcd_department_str {mecheng} + \keys_set:nn {ptxcd/exercise}{colorback=false,departmentlogofile=tuda_maschinenbau_logo,color=Primary1} + }, + department .initial:n = default, + mecheng .meta:n = {department=mecheng}, + departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, + departmentlogofile .initial:n =, + match-task-subtask-syntax .bool_gset:N = \g_ptxcd_match_task_subtask_bool, + match-task-subtask-syntax .initial:n = false, + match-task-subtask-syntax .default:n = true, + solution .code:n = { + \bool_set_eq:Nc \l_ptxcd_ex_solution_bool {c_#1_bool} + \ptxcd_setup_solution: + }, + solution .default:n = true, + unknown .code:n = {\prop_gput:NVn \g_ptxcd_unknown_clsopts_prop \l_keys_key_tl {#1}}, } +\ProcessKeysOptions{ptxcd/exercise} -\ProcessKeysOptions{TUDa/pub} - -\prop_map_inline:Nn \g_TUDa_clsopts_prop { +\prop_map_inline:Nn \g_ptxcd_clsopts_prop { \tl_if_empty:nTF {#2} {\PassOptionsToClass {#1} {scrartcl}} { @@ -201,9 +145,76 @@ } } +\RequirePackage{environ} + +\def\solution{\ptxcd_ex_solutionheader:} +\def\endsolution{} + +\cs_new:Nn \ptxcd_setup_solution: { + \bool_if:NTF \l_ptxcd_ex_solution_bool { + \def\solution{\ptxcd_ex_solutionheader:} + \def\endsolution{} + }{ + \RenewEnviron{solution}{ + \if_false: + \BODY + \fi: + } + } +} + + +\bool_new:N \l_ptxcd_ex_subtask_fallback_bool + +\keys_define:nn {ptxcd/task}{ + points .int_set:N = \l_ptxcd_ex_points_int, + points .initial:n = 0, + credit .tl_set:N = \l_ptxcd_ex_credit_tl, + credit .initial:n =, + solution .meta:nn ={ptxcd/exercise}{solution=#1}, +} + +\keys_define:nn {ptxcd/subtask} { + credit .tl_set:N = \l_ptxcd_ex_credit_tl, + credit .initial:n =, + points .int_set:N = \l_ptxcd_ex_points_int, + points .initial:n = 0, + title .tl_set:N = \l_ptxcd_ex_title_tl, + title .initial:n =, + unknown .code:n = \bool_set_true:N \l_ptxcd_ex_subtask_fallback_bool \tl_clear:N \l_ptxcd_ex_credit_tl \int_zero:N \l_ptxcd_ex_points_int, +} + +\keys_define:nn {ptxcd/exercise/headline} { + headline .code:n = { + \if@twoside + \keys_set:nn {ptxcd/exercise/headline} {odd=#1,even=#1} + \else + \keys_set:nn {ptxcd/exercise/headline} {oneside=#1} + \fi + }, +} + +\clist_map_inline:nn {odd, even, oneside} { + \tl_new:c {g_ptxcd_ex_headline_#1_tl} + \keys_define:nn {ptxcd/exercise/headline} { + #1 .choice:, + #1 / title-name-id .code:n = \tl_gset:cn {g_ptxcd_ex_headline_#1_tl} { + \g_ptxcd_shorttitle_tl\par + \StudentName\StudentID}, + #1 / title-name .code:n = \tl_gset:cn {g_ptxcd_ex_headline_#1_tl} { + \g_ptxcd_shorttitle_tl\par + \smallskip + \StudentName}, + #1 / title .code:n = \tl_gset:cn {g_ptxcd_ex_headline_#1_tl} {\g_ptxcd_shorttitle_tl}, + #1 / name-id .code:n = \tl_gset:cn {g_ptxcd_ex_headline_#1_tl} {\StudentName\StudentID}, + #1 / name .code:n = \tl_gset:cn {g_ptxcd_ex_headline_#1_tl} {\StudentName}, + #1 / unknown .code:n = \tl_gset:cn {g_ptxcd_ex_headline_#1_tl} {##1} + } +} + %Load tudasize clo file if available -\file_if_exist:nT {tudasize\prop_item:Nn \g_TUDa_clsopts_prop {fontsize}.clo} +\file_if_exist:nT {tudasize\prop_item:Nn \g_ptxcd_clsopts_prop {fontsize}.clo} {\providecommand*{\@fontsizefilebase}{tudasize}} \LoadClass{scrartcl} @@ -214,7 +225,7 @@ \RequirePackage[draft=false]{scrlayer-scrpage} \KOMAoptions {twoside = false} -\prop_map_inline:Nn \g_TUDa_unknown_clsopts_prop { +\prop_map_inline:Nn \g_ptxcd_unknown_clsopts_prop { \cs_if_exist:cT {KV@KOMA.scrartcl.cls@#1} { \tl_if_empty:nTF {#2} {\KOMAoptions{#1}} @@ -225,7 +236,7 @@ \renewcommand*\sectionlinesformat[4]{% \parbox{\linewidth}{ - \rule[5\g_TUDa_titlerule_dim]{\linewidth}{\g_TUDa_titlerule_dim}\par\nointerlineskip + \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip \@hangfrom{% \hskip #2#3}{ \tl_if_eq:nnT {#1} {task} { @@ -234,70 +245,70 @@ } #4 \tl_if_in:nnT {#1} {task} { - \tl_if_empty:NTF \l_TUDa_ex_credit_tl - {\pointformat{\l_TUDa_ex_points_int}} - {\creditformat{\l_TUDa_ex_credit_tl}} + \tl_if_empty:NTF \l_ptxcd_ex_credit_tl + {\pointformat{\l_ptxcd_ex_points_int}} + {\creditformat{\l_ptxcd_ex_credit_tl}} } \rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip - \skip_vertical:n {\TUDa_titlerule_sep: -\dp\strutbox} - \smash{\rule{\linewidth}{\g_TUDa_titlerule_dim}} + \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox} + \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}} }} \usepackage{tudafonts} -\dim_new:N \g_TUDa_innerMargin_dim -\dim_new:N \g_TUDa_outerMargin_dim -\dim_new:N \g_TUDa_bottomMargin_dim -\dim_new:N \g_TUDa_topMargin_dim +\dim_new:N \g_ptxcd_innerMargin_dim +\dim_new:N \g_ptxcd_outerMargin_dim +\dim_new:N \g_ptxcd_bottomMargin_dim +\dim_new:N \g_ptxcd_topMargin_dim %a3,a4 - \int_compare:nTF {4<=\g_TUDa_paper_int<=5} + \int_compare:nTF {4<=\g_ptxcd_paper_int<=5} { - \dim_gset:Nn \g_TUDa_bottomMargin_dim {20mm} - \dim_gset:Nn \g_TUDa_outerMargin_dim {15mm} - \dim_gset_eq:NN \g_TUDa_innerMargin_dim \g_TUDa_outerMargin_dim - \dim_gset_eq:NN \g_TUDa_topMargin_dim \g_TUDa_outerMargin_dim + \dim_gset:Nn \g_ptxcd_bottomMargin_dim {20mm} + \dim_gset:Nn \g_ptxcd_outerMargin_dim {15mm} + \dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim + \dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim }{ %a0, a1, a2 - \int_compare:nT {1<=\g_TUDa_paper_int<=3} + \int_compare:nT {1<=\g_ptxcd_paper_int<=3} { - \dim_gset:Nn \g_TUDa_bottomMargin_dim {35mm} - \dim_gset:Nn \g_TUDa_outerMargin_dim {30mm} - \dim_gset_eq:NN \g_TUDa_innerMargin_dim \g_TUDa_outerMargin_dim - \dim_gset_eq:NN \g_TUDa_topMargin_dim \g_TUDa_outerMargin_dim + \dim_gset:Nn \g_ptxcd_bottomMargin_dim {35mm} + \dim_gset:Nn \g_ptxcd_outerMargin_dim {30mm} + \dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim + \dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim } %a5 - \int_compare:nT {\g_TUDa_paper_int<=6} + \int_compare:nT {\g_ptxcd_paper_int<=6} { - \dim_gset:Nn \g_TUDa_bottomMargin_dim {16mm} - \dim_gset:Nn \g_TUDa_outerMargin_dim {12mm} - \dim_gset_eq:NN \g_TUDa_innerMargin_dim \g_TUDa_outerMargin_dim - \dim_gset_eq:NN \g_TUDa_topMargin_dim \g_TUDa_outerMargin_dim + \dim_gset:Nn \g_ptxcd_bottomMargin_dim {16mm} + \dim_gset:Nn \g_ptxcd_outerMargin_dim {12mm} + \dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim + \dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim } %a6 - \int_compare:nT {\g_TUDa_paper_int<=7} + \int_compare:nT {\g_ptxcd_paper_int<=7} { - \dim_gset:Nn \g_TUDa_bottomMargin_dim {15mm} - \dim_gset:Nn \g_TUDa_outerMargin_dim {10mm} - \dim_gset_eq:NN \g_TUDa_innerMargin_dim \g_TUDa_outerMargin_dim - \dim_gset_eq:NN \g_TUDa_topMargin_dim \g_TUDa_outerMargin_dim + \dim_gset:Nn \g_ptxcd_bottomMargin_dim {15mm} + \dim_gset:Nn \g_ptxcd_outerMargin_dim {10mm} + \dim_gset_eq:NN \g_ptxcd_innerMargin_dim \g_ptxcd_outerMargin_dim + \dim_gset_eq:NN \g_ptxcd_topMargin_dim \g_ptxcd_outerMargin_dim } } -\dim_new:N \g_TUDa_columnSep_dim -\dim_gset:Nn \g_TUDa_columnSep_dim {10pt} +\dim_new:N \g_ptxcd_columnSep_dim +\dim_gset:Nn \g_ptxcd_columnSep_dim {10pt} -\dim_new:N \g_TUDa_headheight_dim -\dim_new:N \g_TUDa_headwidth_dim +\dim_new:N \g_ptxcd_headheight_dim +\dim_new:N \g_ptxcd_headwidth_dim -\dim_gset:Nn \g_TUDa_headheight_dim {\c_TUDa_largerule_dim +\c_TUDa_rulesep_dim +\c_TUDa_smallrule_dim} +\dim_gset:Nn \g_ptxcd_headheight_dim {\c_ptxcd_largerule_dim +\c_ptxcd_rulesep_dim +\c_ptxcd_smallrule_dim} %%%%%Anfang Randeinstellungen Geometry -\bool_if:NTF \g_TUDa_geometry_bool { - \RequirePackage[top=\g_TUDa_topMargin_dim, inner=\g_TUDa_innerMargin_dim, outer=\dim_eval:n {\g_TUDa_outerMargin_dim}, bottom=\g_TUDa_bottomMargin_dim, columnsep= \g_TUDa_columnSep_dim, includehead, includefoot, headheight=\g_TUDa_headheight_dim +\bool_if:NTF \g_ptxcd_geometry_bool { + \RequirePackage[top=\g_ptxcd_topMargin_dim, inner=\g_ptxcd_innerMargin_dim, outer=\dim_eval:n {\g_ptxcd_outerMargin_dim}, bottom=\g_ptxcd_bottomMargin_dim, columnsep= \g_ptxcd_columnSep_dim, includehead, includefoot, headheight=\g_ptxcd_headheight_dim ]{geometry} }{ \KOMAoptions{headinclude, footinclude, headwidth=text,footwidth=text} @@ -307,78 +318,70 @@ %Ende Randeinstellungen klassisch \newcommand*{\institution}[1]{ - \def\TUDa@institution{#1} + \def\ptxcd_institution{#1} } -\gdef\TUDa@datename{Datum} -\gdef\TUDa@dateseparator{:~} +\gdef\ptxcd_datename{Datum} +\gdef\ptxcd_dateseparator{:~} \setkomafont{disposition}{\sffamily\bfseries} - - -\dim_new:N \g_TUDa_titlerule_dim -\dim_gset:Nn \g_TUDa_titlerule_dim {.5\c_TUDa_smallrule_dim} - -\cs_new:Nn \TUDa_titlerule_sep: {\the\dp\strutbox} +\cs_new:Nn \ptxcd_titlerule_sep: {\the\dp\strutbox} \RequirePackage{tudacolors} \RequirePackage{environ} -%TODO: mode -> light head. - \setkomafont{pageheadfoot}{\sffamily\small} \setkomafont{pagenumber}{} \addtokomafont{captionlabel}{\sffamily} \addtokomafont{caption}{\sffamily} -\box_new:N \g_TUDa_ex_headline_odd_box -\box_new:N \g_TUDa_ex_headline_even_box -\box_new:N \g_TUDa_ex_headline_oneside_box +\box_new:N \g_ptxcd_ex_headline_odd_box +\box_new:N \g_ptxcd_ex_headline_even_box +\box_new:N \g_ptxcd_ex_headline_oneside_box -\cs_new:Nn \TUDa_preamble_ConfigureHeadline:n { - \tl_if_empty:nF {#1} {\keys_set:nn {TUDa/exercise/headline} {#1}} +\cs_new:Nn \ptxcd_preamble_ConfigureHeadline:n { + \tl_if_empty:nF {#1} {\keys_set:nn {ptxcd/exercise/headline} {#1}} } -\cs_new:Nn \TUDa_ConfigureHeadline:n { - \TUDa_preamble_ConfigureHeadline:n {#1} - \TUDa_update_headline_boxes: - \TUDa_ex_adjust_headheight: +\cs_new:Nn \ptxcd_ConfigureHeadline:n { + \ptxcd_preamble_ConfigureHeadline:n {#1} + \ptxcd_update_headline_boxes: + \ptxcd_ex_adjust_headheight: } -\let\ConfigureHeadline\TUDa_preamble_ConfigureHeadline:n - - +\let\ConfigureHeadline\ptxcd_preamble_ConfigureHeadline:n -\bool_if:NT \g_TUDa_ex_compatibility_bool { -\cs_new:Npn \TUDa_ex_env_to_tl_aux:w #1 \q_stop { \tl_gset:Nn \g_TUDa_ex_headline_oneside_tl {#1} } -\NewEnviron{examheader}{ - \tl_gset:No \g_TUDa_ex_headline_oneside_tl {\BODY} - \tl_gset:No \g_TUDa_ex_headline_odd_tl {\BODY} - \tl_gset:No \g_TUDa_ex_headline_even_tl {\BODY} - \TUDa_ConfigureHeadline:n {} -} - - \newcommand*{\examheaderdefault}{\par\StudentName\StudentID} +\bool_if:NT \g_ptxcd_ex_compatibility_bool { + \cs_new:Npn \ptxcd_ex_env_to_tl_aux:w #1 \q_stop { \tl_gset:Nn \g_ptxcd_ex_headline_oneside_tl {#1} } + + \NewEnviron{examheader}{ + \tl_gset:No \g_ptxcd_ex_headline_oneside_tl {\BODY} + \tl_gset:No \g_ptxcd_ex_headline_odd_tl {\BODY} + \tl_gset:No \g_ptxcd_ex_headline_even_tl {\BODY} + \ptxcd_ConfigureHeadline:n {} + } + + \newcommand*{\examheaderdefault}{\par\StudentName\StudentID} } -\cs_new:Nn \TUDa_update_headline_boxes: { +\cs_new:Nn \ptxcd_update_headline_boxes: { \clist_map_inline:nn {even, odd, oneside} { - \tl_if_empty:cF {g_TUDa_ex_headline_##1_tl} { - \vbox_gset:cn {g_TUDa_ex_headline_##1_box} { + \tl_if_empty:cF {g_ptxcd_ex_headline_##1_tl} { + \vbox_gset:cn {g_ptxcd_ex_headline_##1_box} { \begin{minipage}[b]{\textwidth} \usekomafont{pagehead} \raggedright - \leavevmode\rule{\z@}{\dimexpr\ht\strutbox+\c_TUDa_rulesep_dim} + \leavevmode\rule{\z@}{\dimexpr\ht\strutbox+\c_ptxcd_rulesep_dim} \ignorespaces - \use:c {g_TUDa_ex_headline_##1_tl}\ignorespaces\strut + \use:c {g_ptxcd_ex_headline_##1_tl}\ignorespaces\strut \par\vspace{\z@} \end{minipage} } @@ -387,105 +390,108 @@ } -\cs_new:Nn \TUDa_ex_adjust_headheight: { +\cs_new:Nn \ptxcd_ex_adjust_headheight: { \if@twoside \dim_set:Nn \l_tmpa_dim { \dim_max:nn - {\box_ht:N \g_TUDa_ex_headline_odd_box+\box_dp:N \g_TUDa_ex_headline_odd_box} - {\box_ht:N \g_TUDa_ex_headline_even_box+\box_dp:N \g_TUDa_ex_headline_even_box} + {\box_ht:N \g_ptxcd_ex_headline_odd_box+\box_dp:N \g_ptxcd_ex_headline_odd_box} + {\box_ht:N \g_ptxcd_ex_headline_even_box+\box_dp:N \g_ptxcd_ex_headline_even_box} } \else \dim_set:Nn \l_tmpa_dim { - \box_ht:N \g_TUDa_ex_headline_oneside_box - + \box_dp:N \g_TUDa_ex_headline_oneside_box + \box_ht:N \g_ptxcd_ex_headline_oneside_box + + \box_dp:N \g_ptxcd_ex_headline_oneside_box } \fi \dim_compare:nT {\l_tmpa_dim > \z@} { - \dim_add:Nn \l_tmpa_dim {\box_dp:N \TUDa@headline_box +\c_TUDa_rulesep_dim} - \KOMAoptions{headinclude, headheight=\l_tmpa_dim,headsepline = .5\c_TUDa_smallrule_dim} + \dim_add:Nn \l_tmpa_dim {\box_dp:N \ptxcd_headrule_box +\c_ptxcd_rulesep_dim} + \KOMAoptions{headinclude, headheight=\l_tmpa_dim,headsepline = .5\c_ptxcd_smallrule_dim} \if@twoside - \cehead{\box_use:c {g_TUDa_ex_headline_even_box}} - \cohead{\box_use:c {g_TUDa_ex_headline_odd_box}} + \cehead{\box_use:c {g_ptxcd_ex_headline_even_box}} + \cohead{\box_use:c {g_ptxcd_ex_headline_odd_box}} \else - \chead{\box_use:c {g_TUDa_ex_headline_oneside_box}} + \chead{\box_use:c {g_ptxcd_ex_headline_oneside_box}} \fi \global\setlength{\headheight}{\l_tmpa_dim} } } -\newpairofpagestyles{TUDa.ex}{ - \KOMAoptions{plainfootsepline} +\newpairofpagestyles{TUDa.exercise}{ + \KOMAoptions{plainfootsepline,headtopline,plainheadtopline} \KOMAoptions { headwidth=text, footwidth=text } \setkomafont{pagehead}{} -\box_if_exist:NF \TUDa@headline_box { - \TUDa@makeheadrule[color=identbarcolor, width=\sls@headwidth]{TUDa@headline} -} + \box_if_exist:NF \ptxcd_headrule_box { + \ptxcd_makeheadrule[color=identbarcolor, width=\sls@headwidth]{ptxcd_headrule} + } \ModifyLayer[ background, - height=\box_dp:N \TUDa@headline_box, + height=\box_dp:N \ptxcd_headrule_box, align=tl, - voffset=\g_TUDa_topMargin_dim, - contents=\raisebox{\depth}{\box_use:N \TUDa@headline_box}, - ]{plain.TUDa.ex.head.above.line} + voffset=\g_ptxcd_topMargin_dim, + contents=\raisebox{\depth}{\box_use:N \ptxcd_headrule_box}, + ]{plain.TUDa.exercise.head.above.line} \ModifyLayer[ background, - height=\box_dp:N \TUDa@headline_box, + height=\box_dp:N \ptxcd_headrule_box, align=tl, - voffset=\g_TUDa_topMargin_dim, - contents=\raisebox{\depth}{\box_use:N \TUDa@headline_box}, - ]{TUDa.ex.head.above.line} + voffset=\g_ptxcd_topMargin_dim, + contents=\raisebox{\depth}{\box_use:N \ptxcd_headrule_box}, + ]{TUDa.exercise.head.above.line} \ofoot[\pagemark]{\pagemark} } -\pagestyle{TUDa.ex} +\DeclarePageStyleAlias{TUDa}{TUDa.exercise} +\DeclarePageStyleAlias{plain.TUDa}{plain.TUDa.exercise} +\renewcommand{\titlepagestyle}{plain.TUDa} +\pagestyle{TUDa} %Titelseite -\tl_new:N \g_TUDa_titleimage_code_tl -\tl_gset_eq:NN \g_TUDa_titleimage_code_tl \c_empty_tl -\newcommand{\titleimage}[1]{\tl_gset:Nn \g_TUDa_titleimage_code_tl {#1}} +\tl_new:N \g_ptxcd_titleimage_code_tl +\tl_gset_eq:NN \g_ptxcd_titleimage_code_tl \c_empty_tl +\newcommand{\titleimage}[1]{\tl_gset:Nn \g_ptxcd_titleimage_code_tl {#1}} -\box_new:N \g_TUDa_title_box -\skip_new:N \g_TUDa_title_fill_skip +\box_new:N \g_ptxcd_title_box +\skip_new:N \g_ptxcd_title_fill_skip -\renewcommand{\titlepagestyle}{plain.TUDa.ex} -\seq_new:N \g_TUDa_author_seq + +\seq_new:N \g_ptxcd_author_seq \renewcommand*\author[1]{ - \seq_gset_split:Nnn \g_TUDa_author_seq {\and} {#1} + \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1} } -\msg_new:nnn {TUDaPub} {unknown-language} { +\msg_new:nnn{tudapub} {unknown-language} { You~selected~an~unknown~language~#1.\\ The~Variable~#2~does~not~have~a~predefined~value.\\ Ensure~to~redefine~#2~to~match~your~language.\\ Otherwise~the~ngerman~vaue~#3~will~be~used. } -\cs_new:Nn \TUDa_define_captionFallback:Nn { +\cs_new:Nn \ptxcd_define_captionFallback:Nn { \providecommand*#1{ - \msg_warning:nnxxx {TUDaPub} {unknown-language} + \msg_warning:nnxxx{tudapub} {unknown-language} {\languagename} {\exp_not:N #1} {#2} \def#1{#2} } } \renewcommand*{\@author}{ - \seq_use:Nnnn \g_TUDa_author_seq {~\authorandname{}~} {,~} {~\&~} + \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~} } -\tl_new:N \g_TUDa_shorttitle_tl +\tl_new:N \g_ptxcd_shorttitle_tl \RenewDocumentCommand{\title}{om}{ \IfNoValueTF{#1}{ - \tl_gset:Nn \g_TUDa_shorttitle_tl {#2} + \tl_gset:Nn \g_ptxcd_shorttitle_tl {#2} }{ - \tl_gset:Nn \g_TUDa_shorttitle_tl {#1} + \tl_gset:Nn \g_ptxcd_shorttitle_tl {#1} } \def\@title{#2} } @@ -497,43 +503,38 @@ \subsubtitle{} -\newcommand*{\TUDa@title@footnote}[2][1]{ +\newcommand*{\ptxcd_title@footnote}[2][1]{ \textsuperscript{\@fnsymbol{#1}}#2 } -\renewcommand*{\titlepagestyle}{plain.TUDa.ex} \renewcommand*{\@maketitle}{% \global\@topnum=\z@ \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative \vspace*{-\dim_eval:n { \headheight - -\c_TUDa_largerule_dim -\c_TUDa_rulesep_dim + -\c_ptxcd_largerule_dim -\c_ptxcd_rulesep_dim +\headsep +\ht\strutbox +\p@ }} \par \nointerlineskip - \raisebox{\dim_eval:n { - -.5\c_TUDa_logoheight_dim - }}[0pt][\dim_eval:n {\bool_if:NTF \g_TUDa_smalltitle_bool {.25} {.5}\c_TUDa_logoheight_dim}]{ - \bool_if:NT \g_TUDa_colorback_bool {\color{accentcolor}\rule{\linewidth}{.5\c_TUDa_logoheight_dim}} - } - \par\nointerlineskip \begingroup \setlength{\fboxsep}{\z@} - \bool_if:NT \g_TUDa_colorback_bool {\colorbox{accentcolor}}{\parbox[t]{\linewidth}{ + \bool_if:NT \g_ptxcd_colorback_bool {\colorbox{accentcolor}}{\parbox[t]{\linewidth}{ + \rule{0pt}{\bool_if:NTF \g_ptxcd_smalltitle_bool {.25} {.5}\c_ptxcd_logoheight_dim} + \par\nointerlineskip \raisebox{-\height}{% - \begin{minipage}[t]{\dimexpr\linewidth-2.2\c_TUDa_logoheight_dim-1ex} - \bool_if:NT \g_TUDa_colorback_bool {\begin{addmargin}{3mm}} + \begin{minipage}[t]{\dimexpr\linewidth-2.2\c_ptxcd_logoheight_dim-1ex} + \bool_if:NT \g_ptxcd_colorback_bool {\begin{addmargin}{3mm}} \raggedright - \bool_if:NT \g_TUDa_colorback_bool {\color{textonaccentcolor}} + \bool_if:NT \g_ptxcd_colorback_bool {\color{textonaccentcolor}} \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}} \leavevmode\usekomafont{title}% - {\usekomafont{title}\bool_if:NTF \g_TUDa_smalltitle_bool {\LARGE} {\huge} {\@title\par}}% + {\usekomafont{title}\bool_if:NTF \g_ptxcd_smalltitle_bool {\LARGE} {\huge} {\@title\par}}% \vskip 1em - \bool_if:NF \g_TUDa_ex_compatibility_bool + \bool_if:NF \g_ptxcd_ex_compatibility_bool { {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}% \gdef\@subtitle{} @@ -541,61 +542,58 @@ } {\ifx\@author\@empty\else\usekomafont{author}\@author\par\fi}% \vskip .5em - \bool_if:NTF \g_TUDa_colorback_bool {\end{addmargin}} {\par} + \bool_if:NTF \g_ptxcd_colorback_bool {\end{addmargin}} {\par} \end{minipage}} - \tl_if_empty:NF \g_TUDa_logofile_tl { + \tl_if_empty:NF \g_ptxcd_logofile_tl { \hfill\raisebox{\dim_eval:n { - \bool_if:NTF \g_TUDa_colorback_bool + \bool_if:NTF \g_ptxcd_colorback_bool {-\height} - {-.9\c_TUDa_logoheight_dim} + {-.9\c_ptxcd_logoheight_dim} }} [0pt] [\dim_eval:n { - \bool_if:NTF \g_TUDa_smalltitle_bool - {\bool_if:NTF \g_TUDa_colorback_bool {1.15}{1}} - {\bool_if:NTF \g_TUDa_colorback_bool {1.5}{1.3} - }\c_TUDa_logoheight_dim}] - {\makebox[2.2\c_TUDa_logoheight_dim][l]{\includegraphics[height=\c_TUDa_logoheight_dim]{\g_TUDa_logofile_tl}}} + \bool_if:NTF \g_ptxcd_smalltitle_bool + {\bool_if:NTF \g_ptxcd_colorback_bool {1.15}{1}} + {\bool_if:NTF \g_ptxcd_colorback_bool {1.5}{1.3} + }\c_ptxcd_logoheight_dim}] + {\makebox[2.2\c_ptxcd_logoheight_dim][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}} } \par\medskip }} \par \nointerlineskip - \rule{\linewidth}{\g_TUDa_titlerule_dim} + \rule{\linewidth}{\g_ptxcd_titlerule_dim} % subtitle fields if not compat - \exp_args:Nf \tl_if_empty:nF {\g_TUDa_ex_sheetnum_tl\@date\g_TUDa_ex_term_tl\use:c {@subsubtitle}\@subtitle}{ + \exp_args:Nf \tl_if_empty:nF {\g_ptxcd_ex_sheetnum_tl\@date\g_ptxcd_ex_term_tl\use:c {@subsubtitle}\@subtitle}{ \par\nointerlineskip - \bool_if:NT \g_TUDa_colorback_bool {\colorbox{accentcolor}}{ + \bool_if:NT \g_ptxcd_colorback_bool {\colorbox{accentcolor}}{ \parbox{\linewidth}{ \begin{minipage}{\linewidth} - \bool_if:NT \g_TUDa_colorback_bool { + \bool_if:NT \g_ptxcd_colorback_bool { \color{textonaccentcolor} \begin{addmargin}{3mm} } \null\par - \def\TUDa@nextsep{} - \clist_map_inline:nn {@subtitle, @subsubtitle, g_TUDa_ex_term_tl, @date} { - \tl_if_empty:cF {##1} {\TUDa@nextsep\use:c {##1}\def\TUDa@nextsep{\\}} + \def\ptxcd_nextsep{} + \clist_map_inline:nn {@subtitle, @subsubtitle, g_ptxcd_ex_term_tl, @date} { + \tl_if_empty:cF {##1} {\ptxcd_nextsep\use:c {##1}\def\ptxcd_nextsep{\\}} } - % \tl_if_empty:NF \@subtitle {} - % \tl_if_empty:NF \g_TUDa_ex_term_tl {\TUDa@nextsep\g_TUDa_ex_term_tl\def\TUDa@nextsep{\\}} - % \tl_if_empty:NF \@date {\TUDa@nextsep\@date\def\TUDa@nextsep{\\}} - \tl_if_empty:NF \g_TUDa_ex_sheetnum_tl {\TUDa@nextsep\sheetname\sheetsep\g_TUDa_ex_sheetnum_tl} - \bool_if:NT \g_TUDa_colorback_bool {\end{addmargin}} + \tl_if_empty:NF \g_ptxcd_ex_sheetnum_tl {\ptxcd_nextsep\sheetname\sheetsep\g_ptxcd_ex_sheetnum_tl} + \bool_if:NT \g_ptxcd_colorback_bool {\end{addmargin}} \end{minipage} \vspace*{\dp\strutbox} }}\par\nointerlineskip - \rule{\linewidth}{\g_TUDa_titlerule_dim} + \rule{\linewidth}{\g_ptxcd_titlerule_dim} } \par - \bool_if:NT \g_TUDa_headontitle_bool { + \bool_if:NT \g_ptxcd_headontitle_bool { \if@twoside - \box_use:N \g_TUDa_ex_headline_odd_box + \box_use:N \g_ptxcd_ex_headline_odd_box \else - \box_use:N \g_TUDa_ex_headline_oneside_box + \box_use:N \g_ptxcd_ex_headline_oneside_box \fi \par - \rule{\linewidth}{\g_TUDa_titlerule_dim} + \rule{\linewidth}{\g_ptxcd_titlerule_dim} \par } \endgroup @@ -611,15 +609,13 @@ \newkomafont{term}{\usekomafont{date}} \date{} -\tl_new:N \g_TUDa_ex_sheetnum_tl -\newcommand*{\sheetnumber}[1]{\tl_gset:Nn \g_TUDa_ex_sheetnum_tl {#1}} +\tl_new:N \g_ptxcd_ex_sheetnum_tl +\newcommand*{\sheetnumber}[1]{\tl_gset:Nn \g_ptxcd_ex_sheetnum_tl {#1}} \sheetnumber{} -\tl_new:N \g_TUDa_ex_term_tl -\newcommand*{\term}[1]{\tl_gset:Nn \g_TUDa_ex_term_tl {#1}} +\tl_new:N \g_ptxcd_ex_term_tl +\newcommand*{\term}[1]{\tl_gset:Nn \g_ptxcd_ex_term_tl {#1}} \term{} -\TUDa@makeheadrule[color=identbarcolor, width=\textwidth]{TUDa@title_headline} - %Logos \RequirePackage{graphicx} @@ -666,27 +662,26 @@ %Has to be initialized after captionnames have been defined \AtBeginDocument{ - \TUDa_update_headline_boxes: - \TUDa_ex_adjust_headheight: - \global\let\ConfigureHeadline\TUDa_ConfigureHeadline:n + \ptxcd_update_headline_boxes: + \ptxcd_ex_adjust_headheight: + \global\let\ConfigureHeadline\ptxcd_ConfigureHeadline:n } %task environment -%TODO: discussion: allow sectioning \DeclareSectionCommand[% -style=section,% -level=1,% -indent=\z@,% -beforeskip=\cs_if_exist_use:NF \scr@subsection@beforeskip {-3.25ex\@plus -1ex \@minus -.2ex},% -afterskip=\cs_if_exist_use:NF \scr@subsection@afterskip {1.5ex \@plus .2ex},% -tocstyle=section,% -tocindent=\cs_if_exist_use:NF \scr@tso@subsection@indent {1.5em},% -tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsection@numwidth {2.3em},% + style=section,% + level=1,% + indent=\z@,% + beforeskip=\cs_if_exist_use:NF \scr@subsection@beforeskip {-3.25ex\@plus -1ex \@minus -.2ex},% + afterskip=\cs_if_exist_use:NF \scr@subsection@afterskip {1.5ex \@plus .2ex},% + tocstyle=section,% + tocindent=\cs_if_exist_use:NF \scr@tso@subsection@indent {1.5em},% + tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsection@numwidth {2.3em},% ]{task} -\renewcommand*{\thetask}{\g_TUDa_ex_sheetnum_tl\tl_if_empty:NF \g_TUDa_ex_sheetnum_tl{.}\arabic{task}} +\renewcommand*{\thetask}{\g_ptxcd_ex_sheetnum_tl\tl_if_empty:NF \g_ptxcd_ex_sheetnum_tl{.}\arabic{task}} \renewcommand*{\taskformat}{\taskname\tasksep\thetask{}} \let\@task\task @@ -694,23 +689,25 @@ tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsection@numwidth {2.3em},% \NewDocumentEnvironment{task}{om}{ \begingroup - \IfNoValueF{#1}{\keys_set:nn {TUDa/exercise}{#1}} + \IfNoValueF{#1}{\keys_set:nn {ptxcd/task}{#1}} \@task{#2} \endgroup }{} +\cs_set_eq:cN {task*} \task +\cs_set_eq:cN {endtask*} \endtask % subtasks \DeclareSectionCommand[% -style=section,% -level=2,% -indent=\z@,% -beforeskip=\cs_if_exist_use:NF \scr@subsubsection@beforeskip {-3.25ex\@plus -1ex \@minus -.2ex},% -afterskip=\cs_if_exist_use:NF \scr@subsubsection@afterskip {1.5ex \@plus .2ex},% -tocstyle=subsection,% -tocindent=\cs_if_exist_use:NF \scr@tso@subsubsection@indent {1.5em},% -tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsubsection@numwidth {2.3em},% -counterwithin=task,% + style=section,% + level=2,% + indent=\z@,% + beforeskip=\cs_if_exist_use:NF \scr@subsubsection@beforeskip {-3.25ex\@plus -1ex \@minus -.2ex},% + afterskip=\cs_if_exist_use:NF \scr@subsubsection@afterskip {1.5ex \@plus .2ex},% + tocstyle=subsection,% + tocindent=\cs_if_exist_use:NF \scr@tso@subsubsection@indent {1.5em},% + tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsubsection@numwidth {2.3em},% + counterwithin=task,% ]{subtask} \renewcommand*{\thesubtask}{\alph{subtask})} @@ -722,15 +719,22 @@ counterwithin=task,% \NewDocumentEnvironment{subtask}{o}{ \tl_if_in:nnT {#1} {=} { - \keys_set:nn {TUDa/subtask} {#1} + \keys_set:nn {ptxcd/subtask} {#1} } - \bool_if:NTF \l_TUDa_ex_subtask_fallback_bool { + \bool_if:NTF \l_ptxcd_ex_subtask_fallback_bool { \@subtask{\IfNoValueF{#1}{#1}} }{ - \@subtask{\l_TUDa_ex_title_tl} + \@subtask{\l_ptxcd_ex_title_tl} } }{} +\NewDocumentEnvironment{subtask*}{om}{ + \begingroup + \IfNoValueF{#1}{\keys_set:nn {ptxcd/subtask}{#1}} + \@subtask{#2} + \endgroup +}{} + %Solution mechanism \DeclareSectionCommand[% @@ -747,33 +751,33 @@ tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsubsection@numwidth {2.3em},% \setkomafont{@solution}{\normalfont} -\cs_new:Nn \TUDa_ex_solutionheader: { +\cs_new:Nn \ptxcd_ex_solutionheader: { \@solution*{\solutionname\solutionsep} } -\box_new:N \g_TUDa_NumberForm_box -\hbox_gset:Nn \g_TUDa_NumberForm_box { +\box_new:N \g_ptxcd_NumberForm_box +\hbox_gset:Nn \g_ptxcd_NumberForm_box { \rule{\fboxrule}{1ex} \rule{1em}{\fboxrule} \rule{\fboxrule}{1ex} \, } -\newcommand*\TUDa@StudentID[1][7]{ - \StudentIDname\StudentIDsep\prg_replicate:nn {#1} {\box_use:N \g_TUDa_NumberForm_box} +\newcommand*\ptxcd_StudentID[1][7]{ + \StudentIDname\StudentIDsep\prg_replicate:nn {#1} {\box_use:N \g_ptxcd_NumberForm_box} } -\let\StudentID\TUDa@StudentID +\let\StudentID\ptxcd_StudentID -\newcommand*\TUDa@StudentName{ +\newcommand*\ptxcd_StudentName{ \StudentNamename\StudentNamesep\hrulefill\qquad } -\let\StudentName\TUDa@StudentName +\let\StudentName\ptxcd_StudentName -\let\ShortTitle\g_TUDa_shorttitle_tl +\let\ShortTitle\g_ptxcd_shorttitle_tl % Compatibility Features -\bool_if:NT \g_TUDa_ex_compatibility_bool { +\bool_if:NT \g_ptxcd_ex_compatibility_bool { \cs_set_eq:NN \c@subsection \c@task \cs_set_eq:NN \subsection \task \cs_set_eq:NN \c@subsubsection \c@subtask @@ -782,5 +786,9 @@ tocnumwidth=\cs_if_exist_use:NF \scr@tso@subsubsection@numwidth {2.3em},% \cs_set_eq:NN \thesubtask \thesubsection } +\file_if_exist_input:n {tuda\g_ptxcd_department_str.cfg} + +\ptxcd_makeheadrule[color=identbarcolor, width=\textwidth]{ptxcd_headrule} + \endinput %End of class tudaexercise.cls -- cgit v1.2.3