diff options
author | Karl Berry <karl@freefriends.org> | 2025-01-27 20:49:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2025-01-27 20:49:57 +0000 |
commit | dbafcec247a2331a20c058ec093a3cd9f9e69fe8 (patch) | |
tree | ae04f64a83bbb5d247fa7a38bf73dc60598d9c90 /Master/texmf-dist/tex/latex | |
parent | 7a71e4e9a233a73cbd9626dc9d8cfd12c9bd6153 (diff) |
tuda-ci (27jan25)
git-svn-id: svn://tug.org/texlive/trunk@73608 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
35 files changed, 6265 insertions, 6359 deletions
diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa.sty index 62af9069e55..e07c116668b 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa.sty @@ -1,10 +1,18 @@ -%% This is file `beamercolorthemeTUDa.sty' version 3.41 (2024-07-02), +%% +%% This is file `beamercolorthemeTUDa.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamercolorthemeTUDa.dtx (with options: `package,main') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,95 +21,86 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% +%% \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\ProvidesPackage{beamercolorthemeTUDa}[2024-01-22 v3.35] +\ProvidesExplPackage{beamercolorthemeTUDa}{2025-01-26}{4.00}{Beamer color theme of tuda-ci} -\ExplSyntaxOn \clist_map_inline:nn { - colortitle, - colorbacktitle, - colorframetitle, - colorback +colortitle, +colorbacktitle, +colorframetitle, +colorback } { - \keys_define:nn {ptxcd/beamer/color} {#1 .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {#1}} -} - -\keys_define:nn {ptxcd/beamer/color} { - +\keys_define:nn {ptxcd/beamer/color} {#1 .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {#1}} } \ExplSyntaxOff - \ProcessKeyOptions[ptxcd/beamer/color] - +\mode<presentation>{\PassOptionsToPackage{RGB}{tudacolors}} \RequirePackage{tudacolors} - \definecolorset{HTML}{TUDa-}{}{% - dark1,000000;% - dark2,44546A;% - light1,FFFFFF;% - light2,E7E6E6;% - accent1,E6001A;% - accent2,004E8A;% - accent3,009CDA;% - accent4,00689D;% - accent5,B5B5B5;% - accent5,535353;% - hyperlink,243572% +dark1,000000;% +dark2,44546A;% +light1,FFFFFF;% +light2,E7E6E6;% +accent1,E6001A;% +accent2,004E8A;% +accent3,009CDA;% +accent4,00689D;% +accent5,B5B5B5;% +accent5,535353;% +hyperlink,243572% } - \mode<presentation> - \setbeamercolor*{title}{parent=normal text} \setbeamercolor{subtitle}{parent=title} \setbeamercolor{author}{parent=title} \setbeamercolor{institute}{parent=title} \setbeamercolor{date}{parent=title} \setbeamercolor{titlelike}{parent=title} - \setbeamercolor*{author}{parent=title} \setbeamercolor*{institute}{parent=title} - \setbeamercolor*{normal text}{bg=,fg=black} \setbeamercolor*{background canvas}{parent=normal text} \setbeamercolor*{section in toc}{parent=normal text} -\setbeamercolor*{footline}{parent=normal text} - +\setbeamercolor*{footline}{ +fg=black!50 +} \setbeamercolor*{alerted text}{fg=textaccentcolor} \setbeamercolor*{structure}{fg=black} - \setbeamercolor{bibliography item}{parent=item} \setbeamercolor{bibliography entry author}{use=structure,fg=structure.fg} \setbeamercolor{bibliography entry title}{use=normal text,fg=normal text.fg} \setbeamercolor{bibliography entry location}{use=structure,fg=structure.fg} \setbeamercolor{bibliography entry note}{use=structure,fg=normal text.fg} - - - \setbeamercolor*{block title}{fg=textonaccentcolor,bg=accentcolor} \setbeamercolor*{block body}{fg=black,bg=black!15} - -\setbeamercolor*{block title alerted}{fg=TUDa-accent1,bg=TUDa-light2} +\setbeamercolor*{block title alerted}{ +fg=TUDa-accent1,bg=TUDa-light2 +} \setbeamercolor*{block body alerted}{use=normal text, bg=white} -\setbeamercolor*{block frame alerted}{bg=TUDa-accent1} - -\setbeamercolor*{block title example}{fg=TUDa-accent2,bg=TUDa-light2} +\setbeamercolor*{block frame alerted}{ +bg=TUDa-accent1 +} +\setbeamercolor*{block title example}{ +fg=TUDa-accent2,bg=TUDa-light2 +} \setbeamercolor*{block body example}{use=normal text, bg=white} -\setbeamercolor*{block frame example}{bg=TUDa-accent2} - -\setbeamercolor{footline}{fg=black!50} - +\setbeamercolor*{block frame example}{ +bg=TUDa-accent2 +} +\ExplSyntaxOn \mode<all> - \endinput +%% +%% End of file `beamercolorthemeTUDa.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty index 14a86607d18..6c9fc32a1c5 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamercolorthemeTUDa2008.sty @@ -1,10 +1,18 @@ -%% This is file `beamercolorthemeTUDa2008.sty' version 3.41 (2024-07-02) +%% +%% This is file `beamercolorthemeTUDa2008.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamercolorthemeTUDa.dtx (with options: `package,2008') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,93 +21,87 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% +%% \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\ProvidesExplPackage{beamercolorthemeTUDa2008}{2024-04-21}{3.37}{Beamer color theme of tuda-ci, compatibility for design of 2008} -\bool_if_exist:NF \g__ptxcd_colorframetitle_bool {\bool_new:N \g__ptxcd_colorframetitle_bool} +\ProvidesExplPackage{beamercolorthemeTUDa2008}{2025-01-26}{4.00}{Beamer color theme of tuda-ci, compatibility for design of 2008} +\bool_if_exist:NF \g__ptxcd_colorframetitle_bool {\bool_new:N \g__ptxcd_colorframetitle_bool} \keys_define:nn {ptxcd/beamer/color} { - colortitle .bool_gset:N = \g_ptxcd_beamer_colortitle_bool, - colortitle .default:n = true, - colortitle .initial:n = true, - colorbacktitle .meta:n = {colortitle=#1}, - colorframetitle .code:n = \use:c {bool_gset_#1:N} \g__ptxcd_colorframetitle_bool \cs_if_exist_use:N \__ptxcd_setup_frametitle_color:, - colorframetitle .default:n = true, - colorback .meta:n = {colorframetitle=#1} -} - -\ProcessKeyOptions[ptxcd/beamer/color] - -\ExplSyntaxOff -\RequirePackage[RGB]{tudacolors} - -\mode<presentation> - -\setbeamercolor*{smallrule}{bg=black} -\setbeamercolor*{identbar}{bg=identbarcolor} - -\ExplSyntaxOn -\bool_if:NTF \g_ptxcd_beamer_colortitle_bool { - \setbeamercolor*{title}{fg=textonaccentcolor,bg=accentcolor} -}{ - \setbeamercolor*{title}{parent=normal~text} +colortitle .bool_gset:N = \g_ptxcd_beamer_colortitle_bool, +colortitle .default:n = true, +colortitle .initial:n = true, +colorbacktitle .meta:n = {colortitle=#1}, + colorframetitle .choices:nn = {true, false} { + \use:c {bool_gset_ \l_keys_choice_tl :N} \g__ptxcd_colorframetitle_bool + \cs_if_exist_use:N \__ptxcd_setup_frametitle_color: + }, +colorframetitle .default:n = true, +colorback .meta:n = {colorframetitle=#1} } - -\cs_new:Nn \__ptxcd_setup_frametitle_color: { - \bool_if:NTF \g__ptxcd_colorframetitle_bool { - \setbeamercolor*{frametitle}{fg=textonaccentcolor,bg=accentcolor} - } { - \setbeamercolor*{frametitle}{use=normal~text,fg=normal~text.fg,bg=} - } -} - -\__ptxcd_setup_frametitle_color: - \ExplSyntaxOff +\ProcessKeyOptions[ptxcd/beamer/color] +\mode<presentation>{\PassOptionsToPackage{RGB}{tudacolors}} +\RequirePackage{tudacolors} +\setbeamercolor{titlelike}{fg=textaccentcolor,bg=white} \setbeamercolor*{author}{parent=title} \setbeamercolor*{institute}{parent=title} - \setbeamercolor*{normal text}{bg=,fg=black} \setbeamercolor*{background canvas}{parent=normal text} \setbeamercolor*{section in toc}{parent=normal text} -\setbeamercolor*{footline}{parent=normal text} - +\setbeamercolor*{footline}{ +parent=normal text +} \setbeamercolor*{alerted text}{fg=textaccentcolor} \setbeamercolor*{structure}{fg=textaccentcolor} - \setbeamercolor{bibliography item}{parent=item} \setbeamercolor{bibliography entry author}{use=structure,fg=structure.fg} \setbeamercolor{bibliography entry title}{use=normal text,fg=normal text.fg} \setbeamercolor{bibliography entry location}{use=structure,fg=structure.fg} \setbeamercolor{bibliography entry note}{use=structure,fg=normal text.fg} - -\setbeamercolor{titlelike}{fg=textaccentcolor,bg=white} - \setbeamercolor*{block title}{fg=textonaccentcolor,bg=accentcolor} \setbeamercolor*{block body}{fg=black,bg=black!15} - -\setbeamercolor*{block title alerted}{fg=TUDa-9b,bg=black!15} +\setbeamercolor*{block title alerted}{ +fg=TUDa-9b,bg=black!15 +} \setbeamercolor*{block body alerted}{use=normal text, bg=white} -\setbeamercolor*{block frame alerted}{bg=TUDa-9b} - -\setbeamercolor*{block title example}{fg=TUDa-4d,bg=black!15} +\setbeamercolor*{block frame alerted}{ +bg=TUDa-9b +} +\setbeamercolor*{block title example}{ +fg=TUDa-4d,bg=black!15 +} \setbeamercolor*{block body example}{use=normal text, bg=white} -\setbeamercolor*{block frame example}{bg=TUDa-4d} +\setbeamercolor*{block frame example}{ +bg=TUDa-4d +} +\setbeamercolor*{smallrule}{bg=black} +\setbeamercolor*{identbar}{bg=identbarcolor} \ExplSyntaxOn - +\bool_if:NTF \g_ptxcd_beamer_colortitle_bool { +\setbeamercolor*{title}{fg=textonaccentcolor,bg=accentcolor} +}{ +\setbeamercolor*{title}{parent=normal~text} +} +\cs_new:Nn \__ptxcd_setup_frametitle_color: { +\bool_if:NTF \g__ptxcd_colorframetitle_bool { +\setbeamercolor*{frametitle}{fg=textonaccentcolor,bg=accentcolor} +} { +\setbeamercolor*{frametitle}{use=normal~text,fg=normal~text.fg,bg=} +} +} +\__ptxcd_setup_frametitle_color: \mode<all> - - - \endinput +%% +%% End of file `beamercolorthemeTUDa2008.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty index c2ec43d33ea..8d16f772bbd 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa.sty @@ -1,10 +1,18 @@ -%% This is file `beamerfontthemeTUDa.sty' version 3.41 (2024-07-02) +%% +%% This is file `beamerfontthemeTUDa.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamerfontthemeTUDa.dtx (with options: `package,main') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,62 +21,51 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% +%% \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\ProvidesExplPackage{beamerfontthemeTUDa}{2024-04-21}{3.37}{Beamer font theme of tuda-ci} +\ProvidesExplPackage{beamerfontthemeTUDa}{2025-01-26}{4.00}{Beamer font theme of tuda-ci} \RequirePackage{tudafonts} - \keys_define:nn {ptxcd/beamer/fonts} { - serif .bool_gset:N = \g_ptxcd_serif_bool, - serif .default:n = true, - serif .initial:n = false, - sans-serif .bool_gset_inverse:N = \g_ptxcd_serif_bool, - sans-serif .default:n = true, +serif .bool_gset:N = \g_ptxcd_serif_bool, +serif .default:n = true, +serif .initial:n = false, +sans-serif .bool_gset_inverse:N = \g_ptxcd_serif_bool, +sans-serif .default:n = true, } - \ProcessKeyOptions[ptxcd/beamer/fonts] - \mode<presentation> - \bool_if:NTF \g_ptxcd_serif_bool - {\usefonttheme{serif}} - {\renewcommand*{\familydefault}{\sfdefault}} - +{\usefonttheme{serif}} +{\renewcommand*{\familydefault}{\sfdefault}} +\setbeamerfont{author}{size=\footnotesize, series=\bfseries} +\setbeamerfont{institute}{size=\footnotesize, series=\mdseries} \ExplSyntaxOff - \setbeamerfont{title}{family=\robotoblack,size=\huge} \setbeamerfont*{subtitle}{family=\normalfont,size=\small} - -\setbeamerfont{author}{size=\footnotesize, series=\bfseries} -\setbeamerfont{institute}{size=\footnotesize, series=\mdseries} - \setbeamerfont*{frametitle}{size*={20}{20},family=\robotoblack} - \setbeamerfont{footline}{size*={3.8}{5}} \setbeamerfont{author in head/foot}{parent=footline} \setbeamerfont{title in head/foot}{family=\robotoblackspaced} - \setbeamerfont*{section title}{size=\huge,family=\robotoblack} \setbeamerfont*{section name}{size=\small} \setbeamerfont{section entry}{size=\footnotesize} \setbeamerfont{toc section number}{family=\robotoblack,size=\huge} - +\setbeamerfont{section entry}{size=\footnotesize} \setbeamerfont{subsection in toc}{parent=section entry} \setbeamerfont{subsubsection in toc}{parent=section entry} - \ExplSyntaxOn - \mode<all> - \endinput +%% +%% End of file `beamerfontthemeTUDa.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty index 4ac32a79cda..329ee0f60f4 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerfontthemeTUDa2008.sty @@ -1,10 +1,18 @@ -%% This is file `beamerfontthemeTUDa2008.sty' version 3.41 (2024-07-02) +%% +%% This is file `beamerfontthemeTUDa2008.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamerfontthemeTUDa.dtx (with options: `package,2008') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,47 +21,40 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% +%% \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\ProvidesExplPackage{beamerfontthemeTUDa2008}{2024-04-21}{3.37}{Beamer font theme of tuda-ci, compatibility for design of 2008} - +\ProvidesExplPackage{beamerfontthemeTUDa2008}{2025-01-26}{4.00}{Beamer font theme of tuda-ci, compatibility for design of 2008} \RequirePackage{tudafonts} - \keys_define:nn {ptxcd/beamer/fonts} { - serif .bool_gset:N = \g_ptxcd_serif_bool, - serif .default:n = true, - serif .initial:n = false, - sans-serif .bool_gset_inverse:N = \g_ptxcd_serif_bool, - sans-serif .default:n = true, +serif .bool_gset:N = \g_ptxcd_serif_bool, +serif .default:n = true, +serif .initial:n = false, +sans-serif .bool_gset_inverse:N = \g_ptxcd_serif_bool, +sans-serif .default:n = true, } - \ProcessKeyOptions[ptxcd/beamer/fonts] - \mode<presentation> - \bool_if:NTF \g_ptxcd_serif_bool - {\usefonttheme{serif}} - {\renewcommand*{\familydefault}{\sfdefault}} - -\setbeamerfont{title}{size=\large,series=\bfseries} -\setbeamerfont{subtitle}{size=\normalsize,series=\bfseries} +{\usefonttheme{serif}} +{\renewcommand*{\familydefault}{\sfdefault}} \setbeamerfont{author}{size=\footnotesize, series=\bfseries} \setbeamerfont{institute}{size=\footnotesize, series=\mdseries} - +\setbeamerfont{title}{size=\large,series=\bfseries} +\setbeamerfont{subtitle}{size=\normalsize,series=\bfseries} \setbeamerfont{frametitle}{size=\large,series=\bfseries} \setbeamerfont{author~in~head/foot}{size=\tiny} - \mode<all> - \endinput +%% +%% End of file `beamerfontthemeTUDa2008.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty index f2a82c86a5f..2aea2dc4c2a 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa.sty @@ -1,10 +1,18 @@ -%% This is file `beamerinnerthemeTUDa.sty' version 3.41 (2024-07-02) +%% +%% This is file `beamerinnerthemeTUDa.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamerinnerthemeTUDa.dtx (with options: `package,main') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,163 +21,148 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\NeedsTeXFormat{LaTeX2e} -\ProvidesExplPackage{beamerinnerthemeTUDa}{2024-04-21}{3.37}{Inner~beamer~theme~of~tuda-ci} - +%% +\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\ProvidesExplPackage{beamerinnerthemeTUDa}{2025-01-26}{4.00}{Inner beamer theme of tuda-ci} \int_new:N \g__ptxcd_beamer_toc_col_int - \tl_if_exist:NF \g__ptxcd_design_tl { - \tl_new:N \g__ptxcd_design_tl - \keys_define:nn {ptxcd/beamer} { - design .choice:, - design / 2023 .code:n = { - \tl_gset:Nn \g__ptxcd_design_tl {2023} - \PassOptionsToClass{aspectratio=169}{beamer} - }, - design / 2008 .code:n = { - \tl_gset:Nn \g__ptxcd_design_tl {2008} - }, - design .initial:n = 2023, - design2023 .meta:n = {design=2023}, - design2008 .meta:n = {design=2008}, - } +\tl_new:N \g__ptxcd_design_tl +\keys_define:nn {ptxcd/beamer} { +design .choice:, +design / 2023 .code:n = { +\tl_gset:Nn \g__ptxcd_design_tl {2023} +\PassOptionsToClass{aspectratio=169}{beamer} +}, +design / 2008 .code:n = { +\tl_gset:Nn \g__ptxcd_design_tl {2008} +}, +design .initial:n = 2023, +design .usage:n = load, +design2023 .meta:n = {design=2023}, +design2008 .meta:n = {design=2008}, +} } - \keys_define:nn {ptxcd/beamer/inner} { - author-on-title .bool_gset:N = \g_ptxcd_authorontitle_bool, - author-on-title .initial:n = false, - author-on-title .default:n = true, - authorontitle .meta:n = {author-on-title=#1}, - toc-columns .choices:nn = {one,two,auto} { - \int_gset_eq:NN \g__ptxcd_beamer_toc_col_int \l_keys_choice_int - }, - toc-columns / 1 .meta:n = {toc-columns=one}, - toc-columns / 2 .meta:n = {toc-columns=two}, - toc-columns .initial:n = auto, - design .meta:nn = {ptxcd/beamer} {design=#1} +author-on-title .bool_gset:N = \g_ptxcd_authorontitle_bool, +author-on-title .initial:n = false, +author-on-title .default:n = true, +authorontitle .meta:n = {author-on-title=#1}, +toc-columns .choices:nn = {one,two,auto} { +\int_gset_eq:NN \g__ptxcd_beamer_toc_col_int \l_keys_choice_int +}, +toc-columns / 1 .meta:n = {toc-columns=one}, +toc-columns / 2 .meta:n = {toc-columns=two}, +toc-columns .initial:n = auto, +design .meta:nn = {ptxcd/beamer} {design=#1} } - \ProcessKeyOptions[ptxcd/beamer/inner] - \ExplSyntaxOff \RequirePackage{trimclip} \ExplSyntaxOn - \box_new:N \l__ptxcd_titlegraphic_box \box_new:N \l__ptxcd_titlehead_box \dim_new:N \l__ptxcd_titlegraphic_ht_dim \dim_new:N \l__ptxcd_titlegraphic_wd_dim - \box_if_exist:NF \g__ptxcd_logo_box { - \dim_new:N \g__ptxcd_beamer_logosep_dim - \dim_new:N \l__ptxcd_beamer_extraindent_dim - \dim_new:N \g__ptxcd_beamer_sep_dim - \box_new:N \g__ptxcd_logo_box +\dim_new:N \g__ptxcd_beamer_logosep_dim +\dim_new:N \l__ptxcd_beamer_extraindent_dim +\dim_new:N \g__ptxcd_beamer_sep_dim +\box_new:N \g__ptxcd_logo_box } - \cs_set:Nn \__ptxcd_block_colorsep: {.75ex} - \RenewDocumentCommand{\titlegraphic}{sm}{ - \IfBooleanTF{#1}{ - \def\inserttitlegraphic{ - \hbox_set:Nn \l__ptxcd_titlegraphic_box {\raisebox{\depth}{#2}} - \box_resize_to_wd:Nn \l__ptxcd_titlegraphic_box {\width} - \dim_compare:nTF {\box_ht:N \l__ptxcd_titlegraphic_box - \height> \c_zero_dim} - { - \dim_set:Nn \l_tmpa_dim {.5\box_ht:N \l__ptxcd_titlegraphic_box - .5\height} - \clipbox{0pt~\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}}{\box_use:N \l__ptxcd_titlegraphic_box} - }{ - \box_resize_to_ht:Nn \l__ptxcd_titlegraphic_box {\height} - \dim_set:Nn \l_tmpa_dim {(\box_wd:N \l__ptxcd_titlegraphic_box - \width) / 2} - \clipbox{\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}~0pt}{\box_use:N \l__ptxcd_titlegraphic_box} - } - } - }{ - \def\inserttitlegraphic{#2} - } +\IfBooleanTF{#1}{ +\def\inserttitlegraphic{ +\hbox_set:Nn \l__ptxcd_titlegraphic_box {\raisebox{\depth}{#2}} +\box_resize_to_wd:Nn \l__ptxcd_titlegraphic_box {\width} +\dim_compare:nTF {\box_ht:N \l__ptxcd_titlegraphic_box - \height> \c_zero_dim} +{ +\dim_set:Nn \l_tmpa_dim {.5\box_ht:N \l__ptxcd_titlegraphic_box - .5\height} +\clipbox{0pt~\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}}{\box_use:N \l__ptxcd_titlegraphic_box} +}{ +\box_resize_to_ht:Nn \l__ptxcd_titlegraphic_box {\height} +\dim_set:Nn \l_tmpa_dim {(\box_wd:N \l__ptxcd_titlegraphic_box - \width) / 2} +\clipbox{\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}~0pt}{\box_use:N \l__ptxcd_titlegraphic_box} +} +} +}{ +\def\inserttitlegraphic{#2} +} } - \useinnertheme{TUDa\g__ptxcd_design_tl} - -% Blocks \defbeamertemplate*{block~begin}{TUDa}{ - \par\vskip\medskipamount% - \begin{beamercolorbox}[wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim,sep=.5pt, - leftskip=\dim_eval:n {\dim_compare:nTF {\l__ptxcd_beamer_extraindent_dim>\c_zero_dim} {\l__ptxcd_beamer_extraindent_dim-\beamer@colbox@sep} {\__ptxcd_block_colorsep:}}, - ]{block~title} - \ifx\insertblocktitle\@empty - \else - \begin{beamercolorbox}[colsep*=\__ptxcd_block_colorsep:, - wd=\dimexpr\linewidth-1pt-1.5ex\relax]{block~title} - \usebeamerfont*{block title}\insertblocktitle% - \end{beamercolorbox}% - \ifbeamercolorempty[bg]{block~title} - {} - {\ifbeamercolorempty[bg]{block~body}{}{\par\nointerlineskip\vskip-0.5pt}}% - \leavevmode - \fi - \begin{beamercolorbox}[colsep*=\__ptxcd_block_colorsep:,vmode, wd=\dimexpr\linewidth-1.5ex-1pt\relax]{block~body}% - \usebeamerfont{block~body}% - \ifbeamercolorempty[bg]{block~body}{\vskip-.25ex}{\vskip-\__ptxcd_block_colorsep:}\vbox{}% +\par\vskip\medskipamount% +\begin{beamercolorbox}[wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim,sep=.5pt, +leftskip=\dim_eval:n {\dim_compare:nTF {\l__ptxcd_beamer_extraindent_dim>\c_zero_dim} {\l__ptxcd_beamer_extraindent_dim-\beamer@colbox@sep} {\__ptxcd_block_colorsep:}}, +]{block~title} +\ifx\insertblocktitle\@empty +\else +\begin{beamercolorbox}[colsep*=\__ptxcd_block_colorsep:, + wd=\dimexpr\linewidth-1pt-1.5ex\relax]{block~title} +\usebeamerfont*{block title}\insertblocktitle% +\end{beamercolorbox}% +\ifbeamercolorempty[bg]{block~title} +{} +{\ifbeamercolorempty[bg]{block~body}{}{\par\nointerlineskip\vskip-0.5pt}}% +\leavevmode +\fi +\begin{beamercolorbox}[colsep*=\__ptxcd_block_colorsep:,vmode, wd=\dimexpr\linewidth-1.5ex-1pt\relax]{block~body}% +\usebeamerfont{block~body}% +\ifbeamercolorempty[bg]{block~body}{\vskip-.25ex}{\vskip-\__ptxcd_block_colorsep:}\vbox{}% } \defbeamertemplate*{block~end}{TUDa} - {\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount} - +{\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount} \defbeamertemplate*{block~alerted~begin}{TUDa}{ - \par\vskip\medskipamount% - \begin{beamercolorbox}[ - wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim, - sep=1.5pt, - leftskip=\dim_eval:n {\dim_compare:nTF {\l__ptxcd_beamer_extraindent_dim>\c_zero_dim} {\l__ptxcd_beamer_extraindent_dim-\beamer@colbox@sep} {\__ptxcd_block_colorsep:}}, - ]{block~frame~alerted} - \ifx\insertblocktitle\@empty - \else - \begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~title~alerted} - \usebeamerfont*{block~title~alerted}\insertblocktitle% - \end{beamercolorbox}% - \vskip1.5pt\par\nointerlineskip - \fi - \leavevmode - \usebeamerfont{block~body~alerted}% - \begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~body~alerted}% +\par\vskip\medskipamount% +\begin{beamercolorbox}[ +wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim, +sep=1.5pt, +leftskip=\dim_eval:n {\dim_compare:nTF {\l__ptxcd_beamer_extraindent_dim>\c_zero_dim} {\l__ptxcd_beamer_extraindent_dim-\beamer@colbox@sep} {\__ptxcd_block_colorsep:}}, +]{block~frame~alerted} +\ifx\insertblocktitle\@empty +\else +\begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~title~alerted} +\usebeamerfont*{block~title~alerted}\insertblocktitle% +\end{beamercolorbox}% +\vskip1.5pt\par\nointerlineskip +\fi +\leavevmode +\usebeamerfont{block~body~alerted}% +\begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~body~alerted}% } \defbeamertemplate*{block~alerted~end}{TUDa} - {\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount} - - +{\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount} \defbeamertemplate*{block~example~begin}{TUDa}{ - \par\vskip\medskipamount% - \begin{beamercolorbox}[ - wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim, - sep=1.5pt, - leftskip=\dim_eval:n {\dim_compare:nTF {\l__ptxcd_beamer_extraindent_dim>\c_zero_dim} {\l__ptxcd_beamer_extraindent_dim-\beamer@colbox@sep} {\__ptxcd_block_colorsep:}}, - ]{block~frame~example} - \ifx\insertblocktitle\@empty - \else - \begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~title~example} - \usebeamerfont*{block~title~example}\insertblocktitle% - \end{beamercolorbox}% +\par\vskip\medskipamount% +\begin{beamercolorbox}[ +wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim, +sep=1.5pt, +leftskip=\dim_eval:n {\dim_compare:nTF {\l__ptxcd_beamer_extraindent_dim>\c_zero_dim} {\l__ptxcd_beamer_extraindent_dim-\beamer@colbox@sep} {\__ptxcd_block_colorsep:}}, +]{block~frame~example} +\ifx\insertblocktitle\@empty +\else +\begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~title~example} +\usebeamerfont*{block~title~example}\insertblocktitle% +\end{beamercolorbox}% \vskip1.5pt\par\nointerlineskip - \fi - \leavevmode - \usebeamerfont{block~body~example}% - \begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~body~example}% +\fi +\leavevmode +\usebeamerfont{block~body~example}% +\begin{beamercolorbox}[wd=\dim_eval:n {\linewidth-1.5ex-3pt},colsep*=\__ptxcd_block_colorsep:]{block~body~example}% } \defbeamertemplate*{block~example~end}{TUDa} - {\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount} - - - +{\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount} \endinput +%% +%% End of file `beamerinnerthemeTUDa.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty index 55644e97664..7f846afb74b 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2008.sty @@ -1,10 +1,18 @@ -%% This is file `beamerinnerthemeTUDa2008.sty' version 3.41 (2024-07-02), +%% +%% This is file `beamerinnerthemeTUDa2008.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamerinnerthemeTUDa.dtx (with options: `package,2008') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,105 +21,98 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\NeedsTeXFormat{LaTeX2e}[2022-06-01] -\ProvidesExplPackage{beamerinnerthemeTUDa2008}{2024-04-21}{3.37}{Inner~beamer~theme~of~tuda-ci, compatibility for design of 2008} - +%% +\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\ProvidesExplPackage{beamerinnerthemeTUDa2008}{2025-01-26}{4.00}{Inner beamer theme of tuda-ci, compatibility for design of 2008} \mode<presentation> - \RequirePackage{beamerinnerthemeTUDa2008} - \defbeamertemplate*{title~ page}{TUDa}[1][]{ - \nointerlineskip - \vspace{\dim_eval:n {-\c_ptxcd_largerule_dim}} - \hbox_set:Nn \l__ptxcd_titlehead_box { - \parbox{\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim}{% - \begin{beamercolorbox}[ - wd=\linewidth, - sep=\g__ptxcd_beamer_logosep_dim, - ]{title} - \raggedright - \usebeamerfont{title} - \skip_horizontal:n {1ex} - \strut\parbox[t]{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-2ex\relax}{ - \inserttitle - \par - } - \hspace{\fill}\raisebox{\dimexpr-\height+\ht\strutbox\relax}{\box_use:N \g__ptxcd_logo_box} - \ifx\insertsubtitle\@empty - \else - \par\vspace{\c_ptxcd_largerule_dim} - \skip_horizontal:n {1ex}\parbox[t]{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-2ex\relax}{ - \usebeamerfont{subtitle}\insertsubtitle - } - \fi - \end{beamercolorbox} - - \bool_if:NT \g_ptxcd_authorontitle_bool { - \par\nointerlineskip - \begin{beamercolorbox}[ - wd=\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim,ht=\c_ptxcd_smallrule_dim,dp=\z@]{smallrule} - \end{beamercolorbox} - \par\nointerlineskip - \begin{beamercolorbox}[ - wd=\linewidth, - sep=\c_ptxcd_largerule_dim, - ]{title} - \raggedright - \skip_horizontal:n {1ex} - \parbox[t]{\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim-2ex\relax}{ - \ifx\insertauthor\@empty - \else - \usebeamercolor[fg]{author}\usebeamerfont{author}\insertauthor\par - \fi - \ifx\insertauthor\@empty - \else - \usebeamercolor[fg]{institute}\usebeamerfont{institute}\insertinstitute - \fi - } - \end{beamercolorbox} - } - } - } - \box_use:N \l__ptxcd_titlehead_box - \nointerlineskip\begin{beamercolorbox}[ - wd=\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim,ht=\c_ptxcd_smallrule_dim,dp=\z@]{smallrule} - \end{beamercolorbox} - \dim_set:Nn \l__ptxcd_titlegraphic_ht_dim {\textheight-\box_ht:N\l__ptxcd_titlehead_box-\box_dp:N \l__ptxcd_titlehead_box - +\c_ptxcd_largerule_dim-.5\c_ptxcd_rulesep_dim-\c_ptxcd_smallrule_dim} - \let\height\l__ptxcd_titlegraphic_ht_dim - \dim_set:Nn \l__ptxcd_titlegraphic_wd_dim{\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim} - \let\width\l__ptxcd_titlegraphic_wd_dim - \nointerlineskip - \begin{beamercolorbox}[wd=\width,center]{titlegraphic} - \raisebox{-\c_ptxcd_largerule_dim}[\dim_eval:n {\height-\c_ptxcd_largerule_dim}][0pt]{\inserttitlegraphic} - \end{beamercolorbox} +\nointerlineskip +\vspace{\dim_eval:n {-\c_ptxcd_largerule_dim}} +\hbox_set:Nn \l__ptxcd_titlehead_box { +\parbox{\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim}{% +\begin{beamercolorbox}[ +wd=\linewidth, +sep=\g__ptxcd_beamer_logosep_dim, +]{title} +\raggedright +\usebeamerfont{title} +\skip_horizontal:n {1ex} +\strut\parbox[t]{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-2ex\relax}{ +\inserttitle +\par +} +\hspace{\fill}\raisebox{\dimexpr-\height+\ht\strutbox\relax}{\box_use:N \g__ptxcd_logo_box} +\ifx\insertsubtitle\@empty +\else +\par\vspace{\c_ptxcd_largerule_dim} +\skip_horizontal:n {1ex}\parbox[t]{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-2ex\relax}{ +\usebeamerfont{subtitle}\insertsubtitle +} +\fi +\end{beamercolorbox} +\bool_if:NT \g_ptxcd_authorontitle_bool { +\par\nointerlineskip +\begin{beamercolorbox}[ +wd=\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim,ht=\c_ptxcd_smallrule_dim,dp=\z@]{smallrule} +\end{beamercolorbox} +\par\nointerlineskip +\begin{beamercolorbox}[ +wd=\linewidth, +sep=\c_ptxcd_largerule_dim, +]{title} +\raggedright +\skip_horizontal:n {1ex} +\parbox[t]{\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim-2ex\relax}{ +\ifx\insertauthor\@empty +\else +\usebeamercolor[fg]{author}\usebeamerfont{author}\insertauthor\par +\fi +\ifx\insertauthor\@empty +\else +\usebeamercolor[fg]{institute}\usebeamerfont{institute}\insertinstitute +\fi +} +\end{beamercolorbox} +} +} +} +\box_use:N \l__ptxcd_titlehead_box +\nointerlineskip\begin{beamercolorbox}[ +wd=\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim,ht=\c_ptxcd_smallrule_dim,dp=\z@]{smallrule} +\end{beamercolorbox} +\dim_set:Nn \l__ptxcd_titlegraphic_ht_dim {\textheight-\box_ht:N\l__ptxcd_titlehead_box-\box_dp:N \l__ptxcd_titlehead_box ++\c_ptxcd_largerule_dim-.5\c_ptxcd_rulesep_dim-\c_ptxcd_smallrule_dim} +\let\height\l__ptxcd_titlegraphic_ht_dim +\dim_set:Nn \l__ptxcd_titlegraphic_wd_dim{\dimexpr\paperwidth-2\g__ptxcd_beamer_sep_dim} +\let\width\l__ptxcd_titlegraphic_wd_dim +\nointerlineskip +\begin{beamercolorbox}[wd=\width,center]{titlegraphic} +\raisebox{-\c_ptxcd_largerule_dim}[\dim_eval:n {\height-\c_ptxcd_largerule_dim}][0pt]{\inserttitlegraphic} +\end{beamercolorbox} } - -%Itemize Items \defbeamertemplate*{itemize~item}{TUDa}{ - \usebeamerfont*{itemize~item} - \raise\dimexpr.4\ht\strutbox-.4ex\hbox{\rule{.8ex}{.8ex}} +\usebeamerfont*{itemize~item} +\raise\dimexpr.4\ht\strutbox-.4ex\hbox{\rule{.8ex}{.8ex}} } \defbeamertemplate*{itemize~subitem}{TUDa}{ - \usebeamerfont*{itemize~subitem} - \setlength{\fboxsep}{\z@}\setlength{\fboxrule}{1pt} - \raise\dimexpr.4\ht\strutbox-.2ex-\fboxrule\hbox{\fbox{\color{bg}\rule{.4ex}{.4ex}}} +\usebeamerfont*{itemize~subitem} +\setlength{\fboxsep}{\z@}\setlength{\fboxrule}{1pt} +\raise\dimexpr.4\ht\strutbox-.2ex-\fboxrule\hbox{\fbox{\color{bg}\rule{.4ex}{.4ex}}} } \defbeamertemplate*{itemize~subsubitem}{TUDa}{\usebeamerfont*{itemize~subsubitem}\hbox{--}} - \mode<all> - \endinput - +%% +%% End of file `beamerinnerthemeTUDa2008.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty index e4780a9fefd..a9adc043a92 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerinnerthemeTUDa2023.sty @@ -1,10 +1,18 @@ -%% This is file `beamerinnerthemeTUDa2023.sty' version 3.41 (2024-07-02), +%% +%% This is file `beamerinnerthemeTUDa2023.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamerinnerthemeTUDa.dtx (with options: `package,2023') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,186 +21,150 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\NeedsTeXFormat{LaTeX2e}[2022/10/01] -\ProvidesExplPackage{beamerinnerthemeTUDa2023}{2024-04-21}{3.37}{Inner~beamer~theme~of~tuda-ci,~Design~of~2023} - +%% +\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\ProvidesExplPackage{beamerinnerthemeTUDa2023}{2025-01-26}{4.00}{Inner beamer theme of tuda-ci, Design of 2023} \mode<presentation> - \RequirePackage{beamerinnerthemeTUDa} - \ExplSyntaxOff \RequirePackage{multicol} \ExplSyntaxOn - \AddToHook{begindocument}[ptxcd-titlegraphic]{ - \dim_set:Nn \l__ptxcd_titlegraphic_ht_dim {\paperheight} - \dim_set:Nn \l__ptxcd_titlegraphic_wd_dim {\paperwidth} +\dim_set:Nn \l__ptxcd_titlegraphic_ht_dim {\paperheight} +\dim_set:Nn \l__ptxcd_titlegraphic_wd_dim {\paperwidth} } - \defbeamertemplate*{titlegraphic}{TUDa2023}{{ - \def\width{\l__ptxcd_titlegraphic_wd_dim} - \def\height{\l__ptxcd_titlegraphic_ht_dim} - \usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par - }} - +\def\width{\l__ptxcd_titlegraphic_wd_dim} +\def\height{\l__ptxcd_titlegraphic_ht_dim} +\usebeamercolor[fg]{titlegraphic}\inserttitlegraphic\par +}} \def\ps@titlegraphic@titlepage{% - \setbeamertemplate{background}{\usebeamertemplate{titlegraphic}} - \@nameuse{ps@navigation}% +\setbeamertemplate{background}{\usebeamertemplate{titlegraphic}} +\@nameuse{ps@navigation}% } - \defbeamertemplate*{title~page}{TUDa2023}[1][] { - \ifbeamer@plainframe - \skip_vertical:n {\dimexpr\paperheight/38- \beamer@frametopskip}% - \color{red} - \hspace*{\fill} - \raisebox{\dimexpr-\height+.33\c_ptxcd_logoheight_dim}{\includegraphics[height=\dim_use:N \c_ptxcd_logoheight_dim]{tuda_logo}}\hspace*{\dimexpr.7pt-\beamer@rightmargin} - \par - \vskip1.39\baselineskip - \fi - \vbox{} - \thispagestyle{titlegraphic@titlepage} - \vskip.185\paperheight - \begingroup - \centering - \usebeamertemplate{title} - % \vskip1em\par - \bool_if:NT \g_ptxcd_authorontitle_bool { - \usebeamertemplate{author} - \usebeamertemplate{institute} - } - \usebeamertemplate{date} - \endgroup - \vfill +\ifbeamer@plainframe +\skip_vertical:n {\dimexpr\paperheight/38- \beamer@frametopskip}% +\color{red} +\hspace*{\fill} +\raisebox{\dimexpr-\height+.33\c_ptxcd_logoheight_dim}{\includegraphics[height=\dim_use:N \c_ptxcd_logoheight_dim]{tuda_logo}}\hspace*{\dimexpr.7pt-\beamer@rightmargin} +\par +\vskip1.39\baselineskip +\fi +\vbox{} +\thispagestyle{titlegraphic@titlepage} +\vskip.185\paperheight +\begingroup +\centering +\usebeamertemplate{title} +\bool_if:NT \g_ptxcd_authorontitle_bool { +\usebeamertemplate{author} +\usebeamertemplate{institute} +} +\usebeamertemplate{date} +\endgroup +\vfill } - \defbeamertemplate*{title}{TUDa2023}[1][]{% - \begin{beamercolorbox}[sep=8pt,center,#1]{title} - \usebeamerfont{title}\text_uppercase:n {\inserttitle}\par% - \ifx\insertsubtitle\@empty% - \else% - \vskip.45em% - {\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}% - \fi% - \end{beamercolorbox}% +\begin{beamercolorbox}[sep=8pt,center,#1]{title} +\usebeamerfont{title}\text_uppercase:n {\inserttitle}\par% +\ifx\insertsubtitle\@empty% +\else% +\vskip.45em% +{\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}% +\fi% +\end{beamercolorbox}% } - \defbeamertemplate{author}{TUDa2023}[1][]{% - \begin{beamercolorbox}[sep=8pt,center,#1]{author} - \usebeamerfont{author}\insertauthor - \end{beamercolorbox} +\begin{beamercolorbox}[sep=8pt,center,#1]{author} +\usebeamerfont{author}\insertauthor +\end{beamercolorbox} } - \defbeamertemplate{institute}{TUDa2023}[1][]{% - \begin{beamercolorbox}[sep=8pt,center,#1]{institute} - \usebeamerfont{institute}\insertinstitute - \end{beamercolorbox} +\begin{beamercolorbox}[sep=8pt,center,#1]{institute} +\usebeamerfont{institute}\insertinstitute +\end{beamercolorbox} } - \defbeamertemplate{date}{TUDa2023}[1][]{% - \begin{beamercolorbox}[sep=8pt,center,#1]{date} - \usebeamerfont{date}\insertdate - \end{beamercolorbox} +\begin{beamercolorbox}[sep=8pt,center,#1]{date} +\usebeamerfont{date}\insertdate +\end{beamercolorbox} } - -% partner/sub logo \box_new:N \g__ptxcd_partnerlogo_box \dim_new:N \l__ptxcd_partnerlogo_ht_dim \dim_gset:Nn \l__ptxcd_partnerlogo_ht_dim {.6\c_ptxcd_logoheight_dim} \dim_new:N \l__ptxcd_partnerlogo_wd_dim \dim_gset:Nn \l__ptxcd_partnerlogo_wd_dim {1.6\c_ptxcd_logoheight_dim} - \box_new:N \g__ptxcd_sublogo_box \dim_new:N \l__ptxcd_sublogo_wd_dim \dim_gset:Nn \l__ptxcd_sublogo_wd_dim {2.2\c_ptxcd_logoheight_dim} \dim_new:N \l__ptxcd_sublogo_ht_dim \dim_gset:Nn \l__ptxcd_sublogo_ht_dim {.6\c_ptxcd_logoheight_dim} - \cs_new:Nn \__ptxcd_setup_logo_box:nnn { - \begingroup - \def\width{\use:c {l__ptxcd_#2_wd_dim}} - \def\height{\use:c {l__ptxcd_#2_ht_dim}} - \IfBooleanTF{#1}{ - \hbox_gset:cn {g__ptxcd_#2_box} {#3} - \box_gautosize_to_wd_and_ht_plus_dp:cnn {g__ptxcd_#2_box} {\width} {\height} - } { - \hbox_gset:cn {g__ptxcd_#2_box} { - #3 - } - } - \endgroup +\begingroup +\def\width{\use:c {l__ptxcd_#2_wd_dim}} +\def\height{\use:c {l__ptxcd_#2_ht_dim}} +\IfBooleanTF{#1}{ +\hbox_gset:cn {g__ptxcd_#2_box} {#3} +\box_gautosize_to_wd_and_ht_plus_dp:cnn {g__ptxcd_#2_box} {\width} {\height} +} { +\hbox_gset:cn {g__ptxcd_#2_box} { +#3 +} +} +\endgroup } - \NewDocumentCommand{\partnerlogo}{sm}{ - \__ptxcd_setup_logo_box:nnn {#1} {partnerlogo} {#2} +\__ptxcd_setup_logo_box:nnn {#1} {partnerlogo} {#2} } - \NewDocumentCommand{\sublogo}{sms}{ - \__ptxcd_setup_logo_box:nnn {#1} {sublogo} {#2} - \IfBooleanT{#3}{ - \hbox_gset:Nn \g__ptxcd_sublogo_box { - \hbox_unpack_drop:N \g__ptxcd_sublogo_box - \hskip.6\l__ptxcd_sublogo_ht_dim - } - } +\__ptxcd_setup_logo_box:nnn {#1} {sublogo} {#2} +\IfBooleanT{#3}{ +\hbox_gset:Nn \g__ptxcd_sublogo_box { +\hbox_unpack_drop:N \g__ptxcd_sublogo_box +\hskip.6\l__ptxcd_sublogo_ht_dim +} +} } - -% section page \defbeamertemplate*{section~page}{TUDa2023}[1][] {% - \ifbeamer@inframe - \begingroup - \vbox{} - \vspace{0pt plus 1 filll} - \begin{beamercolorbox}[#1]{section title} - \usebeamerfont{section~title}\text_uppercase:n {\secname}\par - \end{beamercolorbox} - {\usebeamerfont{section~name}\usebeamercolor[fg]{section~name}\sectionname{}~\insertsectionnumber} - \par - \skip_vertical:n {\c_ptxcd_logoheight_dim+\baselineskip} - \endgroup - \else - \begin{frame}[b] - \begin{beamercolorbox}[#1]{section title} - \usebeamerfont{section~title}\text_uppercase:n {\secname}\par - \end{beamercolorbox} - {\usebeamerfont{section~name}\usebeamercolor[fg]{section~name}\sectionname{}~\insertsectionnumber} - \skip_vertical:n {\c_ptxcd_logoheight_dim+\baselineskip} - \end{frame} - \fi +\ifbeamer@inframe +\begingroup +\vbox{} +\vspace{0pt plus 1 filll} +\begin{beamercolorbox}[#1]{section title} +\usebeamerfont{section~title}\text_uppercase:n {\secname}\par +\end{beamercolorbox} +{\usebeamerfont{section~name}\usebeamercolor[fg]{section~name}\sectionname{}~\insertsectionnumber} +\par +\skip_vertical:n {\c_ptxcd_logoheight_dim+\baselineskip} +\endgroup +\else +\begin{frame}[b] +\begin{beamercolorbox}[#1]{section title} +\usebeamerfont{section~title}\text_uppercase:n {\secname}\par +\end{beamercolorbox} +{\usebeamerfont{section~name}\usebeamercolor[fg]{section~name}\sectionname{}~\insertsectionnumber} +\skip_vertical:n {\c_ptxcd_logoheight_dim+\baselineskip} +\end{frame} +\fi } - -% toc -% original definition can be found in beamerbasetoc.sty which is part of the beamer package -% Copyright 2003--2007 by Till Tantau -% Copyright 2010 by Vedran Mileti\'c -% Copyright 2012,2013,2015 by Vedran Mileti\'c, Joseph Wright -% Copyright 2017,2018 by Louis Stuart, Joseph Wright -% Copyright 2021 by Joseph Wright, samcarter -% -% This file may be distributed and/or modified -% -% 1. under the LaTeX Project Public License and/or -% 2. under the GNU Public License. -% -% See the file LICENSE.md for more details. \ExplSyntaxOn \cs_new:Nn \__ptxcd_toc_check: { \int_compare:nNnT {\g__ptxcd_beamer_toc_col_int} = {3} { -% if all subsections/subsubsections are hidden we can have two columns -\str_if_eq:eeTF { +\str_if_eq:eeTF { \beamer@toc@css \beamer@toc@oss \beamer@toc@ooss @@ -203,121 +175,100 @@ }{ \prg_replicate:nn {7} {hide} }{ -% if all subsections/subsubsections are hidden standard twocolumn layout will be choosen \int_set:Nn \g__ptxcd_beamer_toc_col_int {2} } { -% check if there are subsections/subsubsections \int_gzero:N \g_tmpa_int {\makeatletter%% - \let\babel@toc\use_none:nn - \let\beamer@sectionintoc \use_none:nnnnn - \def\beamer@subsectionintoc##1##2##3##4##5##6{\int_gset:Nn \g_tmpa_int {1}\endinput} - \def\beamer@subsubsectionintoc##1##2##3##4##5##6##7{\int_gset:Nn \g_tmpa_int {1}\endinput} - \@input{\jobname.toc}% +\let\babel@toc\use_none:nn +\let\beamer@sectionintoc \use_none:nnnnn +\def\beamer@subsectionintoc##1##2##3##4##5##6{\int_gset:Nn \g_tmpa_int {1}\endinput} +\def\beamer@subsubsectionintoc##1##2##3##4##5##6##7{\int_gset:Nn \g_tmpa_int {1}\endinput} +\@input{\jobname.toc}% } \int_compare:nNnT {\g_tmpa_int} = {1} {\int_set:Nn \g__ptxcd_beamer_toc_col_int {1}} } } } - \def\beamer@twocoltableofcontents[#1]{% - \begin{beamercolorbox}[wd=\paperwidth]{}% - \def\beamer@toc@cs{show}% - \def\beamer@toc@os{show}% - \def\beamer@toc@css{show}% - \def\beamer@toc@oss{show}% - \def\beamer@toc@ooss{show}% - \def\beamer@toc@csss{show}% - \def\beamer@toc@osss{show}% - \def\beamer@toc@oosss{show}% - \def\beamer@toc@ooosss{show}% - \beamer@showpartnumber=\c@part% - \beamer@pausesectionsfalse% - \beamer@pausesubsectionsfalse% - \def\beamer@tocsections{<*>}% - \setkeys{beamertoc}{firstsection=1}% - \setkeys{beamertoc}{#1}% - \UseName{__ptxcd_toc_check:} - \int_compare:nNnT {\g__ptxcd_beamer_toc_col_int} > {1} { - \setlength{\columnsep}{5ex}% - \raggedcolumns - \begin{multicols}{2} - } - {\makeatletter% - \pause[0]% - \@input{\jobname.toc}% - }% - \int_compare:nNnT {\g__ptxcd_beamer_toc_col_int} > {1} { - \end{multicols}% - } - \end{beamercolorbox}% - \vspace*{.68\baselineskip}%} +\begin{beamercolorbox}[wd=\paperwidth]{}% +\def\beamer@toc@cs{show}% +\def\beamer@toc@os{show}% +\def\beamer@toc@css{show}% +\def\beamer@toc@oss{show}% +\def\beamer@toc@ooss{show}% +\def\beamer@toc@csss{show}% +\def\beamer@toc@osss{show}% +\def\beamer@toc@oosss{show}% +\def\beamer@toc@ooosss{show}% +\beamer@showpartnumber=\c@part% +\beamer@pausesectionsfalse% +\beamer@pausesubsectionsfalse% +\def\beamer@tocsections{<*>}% +\setkeys{beamertoc}{firstsection=1}% +\setkeys{beamertoc}{#1}% +\UseName{__ptxcd_toc_check:} +\int_compare:nNnT {\g__ptxcd_beamer_toc_col_int} > {1} { +\setlength{\columnsep}{5ex}% +\raggedcolumns +\begin{multicols}{2} +} +{\makeatletter% +\pause[0]% +\@input{\jobname.toc}% +}% +\int_compare:nNnT {\g__ptxcd_beamer_toc_col_int} > {1} { +\end{multicols}% +} +\end{beamercolorbox}% +\vspace*{.68\baselineskip}%} } - \define@key{beamertoc}{columns}{\keys_set:nn {ptxcd/beamer/inner} {toc-columns=#1}} - \def\beamer@tableofcontents[#1]{% - \ifbeamer@inframe - \beamer@twocoltableofcontents[#1] - \else - \begin{frame}[b]{\contentsname} - \beamer@twocoltableofcontents[#1] - \end{frame} - \fi +\ifbeamer@inframe +\beamer@twocoltableofcontents[#1] +\else +\begin{frame}[b]{\contentsname} +\beamer@twocoltableofcontents[#1] +\end{frame} +\fi } - - - \defbeamertemplate*{section~in~toc}{TUDa}{% - \ifvmode\nointerlineskip\fi - \leavevmode - \ifnum\beamer@tempcount>\beamer@toclastsection - \else - \ifnum\beamer@tempcount>0\relax - \usebeamertemplate***{toc~section~number}% - \fi\fi% - \usebeamertemplate***{section~entry}% - \par +\ifvmode\nointerlineskip\fi +\leavevmode +\ifnum\beamer@tempcount>\beamer@toclastsection +\else +\ifnum\beamer@tempcount>0\relax +\usebeamertemplate***{toc~section~number}% +\fi\fi% +\usebeamertemplate***{section~entry}% +\par } - - -% (sub-)section in toc: default \cs_new:Nn \__ptxcd_toc_sub_level_entry_numbered:n { - \exp_args:Nc \tl_if_blank:nF {inserttoc#1subsectionnumber} - {\hphantom{0}\llap{\use:c {inserttoc#1subsectionnumber}}\hspace{.5em}} +\exp_args:Nc \tl_if_blank:nF {inserttoc#1subsectionnumber} +{\hphantom{0}\llap{\use:c {inserttoc#1subsectionnumber}}\hspace{.5em}} } - \cs_new:Nn \__ptxcd_toc_sub_level_entry_itemize:n { - \strut - \usebeamertemplate{itemize~#1item}\hspace{.5em} +\strut +\usebeamertemplate{itemize~#1item}\hspace{.5em} } - \defbeamertemplate*{subsection~in~toc}{TUDa}[1][false]{\leavevmode - \leftskip=12.4mm - \use:c {__ptxcd_toc_sub_level_entry_#1:n} {} - \inserttocsubsection\par} - +\leftskip=12.4mm +\use:c {__ptxcd_toc_sub_level_entry_#1:n} {} +\inserttocsubsection\par} \defbeamertemplate*{subsubsection~in~toc}{TUDa}[1][false]{\leavevmode - \leftskip=\dimexpr12.4mm+.5em\relax - \use:c {__ptxcd_toc_sub_level_entry_#1:n} {sub} - \inserttocsubsubsection\par} - - +\leftskip=\dimexpr12.4mm+.5em\relax +\use:c {__ptxcd_toc_sub_level_entry_#1:n} {sub} +\inserttocsubsubsection\par} \defbeamertemplate*{toc~section~number}{TUDa}{ - \hphantom{00}\llap{\inserttocsectionnumber}\hspace{.5em} +\hphantom{00}\llap{\inserttocsectionnumber}\hspace{.5em} } - \defbeamertemplate*{section~entry}{TUDa}{ - \strut\inserttocsection\strut +\strut\inserttocsection\strut } - - -%Itemize Items \defbeamertemplate*{itemize~item}{TUDa}{\raise.2\baselineskip\hbox{\vrule width .5ex height .5ex}} \defbeamertemplate*{itemize~subitem}{TUDa}{\raise.2\baselineskip\hbox{\small\vrule width .5ex height .5ex}} \defbeamertemplate*{itemize~subsubitem}{TUDa}{\raise.2\baselineskip\hbox{\small\vrule width .5ex height 1ex}} - \mode<all> - \endinput - +%% +%% End of file `beamerinnerthemeTUDa2023.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty index 38f1a7b00a2..60f1ba60e22 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa.sty @@ -1,10 +1,20 @@ -%% This is file `beamerouterthemeTUDa.sty' version 3.41 (2024-07-02), +%% +%% This is file `beamerouterthemeTUDa.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamerouterthemeTUDa.dtx (with options: `package,initialize,main') +%% tuda-ci.dtx (with options: `options,beamer-outer') +%% beamerouterthemeTUDa.dtx (with options: `package,main,body') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,212 +23,213 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\NeedsTeXFormat{LaTeX2e}[2022-06-01] -\ProvidesExplPackage{beamerouterthemeTUDa}{2024-04-21}{3.37}{Outer~beamer~theme~of~tuda-ci~design~of~2023} +%% +\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\ProvidesExplPackage{beamerouterthemeTUDa}{2025-01-26}{4.00}{Outer beamer theme of tuda-ci design of 2023} \PassOptionsToPackage{paper=slide}{tudarules} \RequirePackage{tudarules} - +\bool_if_exist:NF \l_ptxcd_tmpa_bool {\bool_new:N \l_ptxcd_tmpa_bool} \dim_new:N \l__ptxcd_beamer_extraindent_dim \dim_new:N {\g__ptxcd_beamer_sep_dim} \dim_gset:Nn \g__ptxcd_beamer_sep_dim {.3\c_ptxcd_logoheight_dim} \dim_new:N \g__ptxcd_beamer_logosep_dim \dim_gset:Nn \g__ptxcd_beamer_logosep_dim{2mm} - - \cs_if_exist:NF \g__ptxcd_colorframetitle_bool {\bool_new:N \g__ptxcd_colorframetitle_bool} - \keys_define:nn {ptxcd/beamer/outer} { - logo .bool_gset:N = \g_ptxcd_headlinelogo_bool, - logo .default:n =true, - logo .initial:n =true, - logofile .tl_gset:N = \g_ptxcd_logofile_tl, - logofile .initial:n = tuda_logo, - colorframetitle .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {colorframetitle}, - centerframetitle .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {centerframetitle}, - framebgcolor .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {framebgcolor}, - singleframebgcolor .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {singleframebgcolor}, - headsepline .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {headsepline}, - extendedspace .bool_gset:N = \g__ptxcd_extended_space_bool, - headrule .bool_gset:N = \g__ptxcd_headrule_bool, - uppercase-frametitle .bool_gset:N = \g__ptxcd_uppercase_frametitle_bool, - uppercase-frametitle .default:n = true, - uppercase-frametitle .initial:n = true, + logo .bool_gset:N = \g_ptxcd_headlinelogo_bool, + logo .default:n =true, + logo .initial:n =true, + colorframetitle .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {colorframetitle}, + centerframetitle + .code:n = \msg_warning:nnn {tudabeamer} {option-removed}, + framebgcolor + .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {framebgcolor}, + singleframebgcolor .code:n = + \msg_warning:nnn {tudabeamer} {option-removed} {singleframebgcolor}, + headsepline + .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {headsepline}, + extendedspace .bool_gset:N = \g__ptxcd_extended_space_bool, + headrule .bool_gset:N = \g__ptxcd_headrule_bool, + uppercase-frametitle .bool_gset:N = \g__ptxcd_uppercase_frametitle_bool, + uppercase-frametitle .default:n = true, + uppercase-frametitle .initial:n = true, + logofile .tl_gset:N = \g_ptxcd_logofile_tl, + logofile .initial:n = tuda_logo, + accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool, + accept-missing-logos .initial:n = false, + accept-missing-logos .usage:n = load, + accept-missing-logos .default:n = true, +%% color options +%% color options } - -\define@key{beamerframe}{bgcolor}{ - \keys_set:nn {ptxcd/beamer/outer} { - singleframebgcolor=#1 - } +\cs_if_exist:NT \TUDaDefaultBuildOptions { + \exp_args:Ne \keys_set:ne { ptxcd / + beamer/outer + } { + \TUDaDefaultBuildOptions + } +} +\cs_new:Nn \__ptxcd_insert_logo: { + \bool_if:NTF \g_ptxcd_logo_workaround_bool { + \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf} + \use_ii:nn + \use_i:nn + } { + \use_ii:nn + } + {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}} + {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}} } \define@key{beamerframe}{uppercase}{ - \keys_set:nn {ptxcd/beamer/outer} { - uppercase-frametitle=#1 - } + \keys_set:nn {ptxcd/beamer/outer} { + uppercase-frametitle=#1 + } } - \ProcessKeyOptions[ptxcd/beamer/outer] - - \mode<presentation> - \RequirePackage{graphicx} - -\bool_if:NT \g__ptxcd_colorframetitle_bool - {\dim_set:Nn \l__ptxcd_beamer_extraindent_dim {\g__ptxcd_beamer_logosep_dim}} - \setbeamersize{ - text~margin~left=\dim_eval:n {\paperwidth/34}, - text~margin~right=\dim_eval:n {\paperwidth/38} -} + text~margin~left=\dim_eval:n { + \paperwidth/34 +}, + text~margin~right=\dim_eval:n { + \paperwidth/38 + } +} \cs_new:Nn \__ptxcd_beamer_linewidth: {\dim_eval:n {\paperwidth-\beamer@leftmargin-\beamer@rightmargin}} - -%Logo - \box_new:N \g__ptxcd_logo_box \hbox_gset:Nn \g__ptxcd_logo_box {% - \raisebox{\dim_eval:n {-\height+.33\c_ptxcd_logoheight_dim}}{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}% + \raisebox{\dim_eval:n {-\height+.33\c_ptxcd_logoheight_dim}} + {\__ptxcd_insert_logo:}% +} +\RenewDocumentCommand{\logo}{sm}{ +\IfBooleanTF{#1}{ +\setbeamertemplate{logo}{\resizebox{!}{.06\beamer@paperheight}{\mbox{#2}}} +}{ +\setbeamertemplate{logo}{#2} +} +} +\newcommand*{\setupTUDaFrame}[1]{ + \keys_set:nn {ptxcd/beamer/outer} {#1} } - -\bool_if_exist:NF \l_ptxcd_tmpa_bool {\bool_new:N \l_ptxcd_tmpa_bool} - \defbeamertemplate*{footline}{TUDa2023}{ - \begin{beamercolorbox}[leftskip=\beamer@leftmargin,rightskip=\beamer@rightmargin]{footline} - \usebeamerfont{footline} - \rlap{\insertshortdate} - \hfill - \makebox[0pt][c]{ - \bool_set_false:N \l_ptxcd_separate_bool - \clist_map_variable:nNn {department, institute, author} \l_tmpa_tl { - \tl_if_empty:cF {beamer@short\l_tmpa_tl} { - \bool_if:NTF \l_ptxcd_separate_bool - {\usebeamertemplate{footline~sep}} - {\bool_set_true:N \l_ptxcd_separate_bool} - \use:c {insertshort\l_tmpa_tl} - } - } - } - \hfill - \llap{\insertframenumber} - \par\vspace{-\dp\strutbox} - \end{beamercolorbox} - \skip_vertical:n {\dimexpr\paperheight/32-\dp\strutbox} + \begin{beamercolorbox}[leftskip=\beamer@leftmargin,rightskip=\beamer@rightmargin]{footline} + \usebeamerfont{footline} + \rlap{\insertshortdate} + \hfill + \makebox[0pt][c]{ + \bool_set_false:N \l_ptxcd_separate_bool + \clist_map_variable:nNn {department, institute, author} \l_tmpa_tl { + \tl_if_empty:cF {beamer@short\l_tmpa_tl} { + \bool_if:NTF \l_ptxcd_separate_bool + {\usebeamertemplate{footline~sep}} + {\bool_set_true:N \l_ptxcd_separate_bool} + \use:c {insertshort\l_tmpa_tl} + } + } + } + \hfill + \llap{\insertframenumber} + \par\vspace{-\dp\strutbox} + \end{beamercolorbox} + \skip_vertical:n {\dimexpr\paperheight/32-\dp\strutbox} } - \setbeamertemplate{footline~sep}{\space\smash{\rule[-.5\dp\strutbox]{.25pt}{\ht\strutbox}}\space} - -\RenewDocumentCommand{\logo}{sm}{ - \IfBooleanTF{#1}{ - \setbeamertemplate{logo}{\resizebox{!}{.06\beamer@paperheight}{\mbox{#2}}} - }{ - \setbeamertemplate{logo}{#2} - } -} - \defbeamertemplate*{headline}{TUDa2023}{ - \bool_if:NT \g__ptxcd_headrule_bool { - \cs_if_exist:NF \ptxcd_beamer_headrule { - \ptxcd_makeheadrule[color=identbarcolor,width=\paperwidth]{ptxcd_beamer_headrule} - } - \ptxcd_beamer_headrule\par\nointerlineskip - } - \bool_if:NTF \g__ptxcd_extended_space_bool { - \bool_if:NTF \g__ptxcd_headrule_bool { - \skip_vertical:n {\dim_eval:n {+\paperheight/38}} - \strut - } { - \skip_vertical:n {\dim_eval:n {\paperheight/16}} - } - }{ - \skip_vertical:n {\dimexpr\paperheight/38} - \hspace*{\beamer@leftmargin}\rlap{\usebeamertemplate***{title~in~head/foot}} - } - \hspace*{\fill} - - \bool_if:NT \g_ptxcd_headlinelogo_bool { - %partnerlogo - \bool_if:NT \g__ptxcd_extended_space_bool \smash { - \raisebox{\dimexpr-\height+\ht\strutbox}{ - \box_use:N \g__ptxcd_partnerlogo_box - } - } - - \skip_horizontal:n {\dimexpr\paperheight/38} - %logo - \bool_if:NTF \g__ptxcd_headrule_bool { - \raisebox{2mm}[0pt][0pt]{\setlength{\fboxsep}{\z@}\colorbox{white}{\rule{\z@}{\dim_eval:n {\box_ht:N \g__ptxcd_logo_box+\box_ht:N \ptxcd_beamer_headrule_box + \box_dp:N \ptxcd_beamer_headrule_box+1pt}}\box_use:N \g__ptxcd_logo_box}} - \hspace*{10pt} - } { - \bool_if:NT \g__ptxcd_extended_space_bool \smash {\box_use:N \g__ptxcd_logo_box} - \hspace*{.7pt} - } - } - \par + \bool_if:NT \g__ptxcd_headrule_bool { + \cs_if_exist:NF \ptxcd_beamer_headrule { + \ptxcd_makeheadrule[color=identbarcolor,width=\paperwidth]{ptxcd_beamer_headrule} + } + \ptxcd_beamer_headrule\par\nointerlineskip + } + \bool_if:NTF \g__ptxcd_extended_space_bool { + \bool_if:NTF \g__ptxcd_headrule_bool { + \skip_vertical:n {\dim_eval:n {+\paperheight/38}} + \strut + } { + \skip_vertical:n {\dim_eval:n {\paperheight/16}} + } + }{ + \skip_vertical:n {\dimexpr\paperheight/38} + \hspace*{\beamer@leftmargin}\rlap{\usebeamertemplate***{title~in~head/foot}} + } + \hspace*{\fill} + \bool_if:NT \g_ptxcd_headlinelogo_bool { + %partnerlogo + \bool_if:NT \g__ptxcd_extended_space_bool \smash { + \raisebox{\dimexpr-\height+\ht\strutbox}{ + \box_use:N \g__ptxcd_partnerlogo_box + } + } + \skip_horizontal:n {\dimexpr\paperheight/38} + %logo + \bool_if:NTF \g__ptxcd_headrule_bool { + \raisebox{2mm}[0pt][0pt]{\setlength{\fboxsep}{\z@}\colorbox{white}{\rule{\z@}{\dim_eval:n {\box_ht:N \g__ptxcd_logo_box+\box_ht:N \ptxcd_beamer_headrule_box + \box_dp:N \ptxcd_beamer_headrule_box+1pt}}\box_use:N \g__ptxcd_logo_box}} + \hspace*{10pt} + } { + \bool_if:NT \g__ptxcd_extended_space_bool \smash {\box_use:N \g__ptxcd_logo_box} + \hspace*{.7pt} + } + } + \par } - \setbeamertemplate{title~in~head/foot}{ - \bool_set_false:N \l_ptxcd_separate_bool - \tl_if_empty:NF {\beamer@shorttitle} { - \bool_set_true:N \l_ptxcd_separate_bool - \text_uppercase:n {\beamer@shorttitle} - } - \tl_if_empty:NF {\beamer@shortauthor} { - \bool_if:NT \l_ptxcd_separate_bool { - \space/\space - } - \text_uppercase:n {\beamer@shortauthor} - } + \bool_set_false:N \l_ptxcd_separate_bool + \tl_if_empty:NF {\beamer@shorttitle} { + \bool_set_true:N \l_ptxcd_separate_bool + \text_uppercase:n {\beamer@shorttitle} + } + \tl_if_empty:NF {\beamer@shortauthor} { + \bool_if:NT \l_ptxcd_separate_bool { + \space/\space + } + \text_uppercase:n {\beamer@shortauthor} + } } - - \defbeamertemplate*{sidebar~right}{TUDa2023}{ - \bool_if:NT \g_ptxcd_headlinelogo_bool { - \vspace{\c_ptxcd_logoheight_dim} - \llap{\box_use:N \g__ptxcd_sublogo_box} - } + \bool_if:NT \g_ptxcd_headlinelogo_bool { + \vspace{\c_ptxcd_logoheight_dim} + \llap{\box_use:N \g__ptxcd_sublogo_box} + } } - \defbeamertemplate*{frametitle}{TUDa2023}[1][left]{% - \nointerlineskip% - \bool_if:NF \g__ptxcd_extended_space_bool - {\vskip.55ex} - \begin{beamercolorbox}[ - wd=\dim_eval:n {\bool_if:NT \g__ptxcd_extended_space_bool {-\box_wd:N \g__ptxcd_logo_box } \box_if_empty:NF \g__ptxcd_sublogo_box {-\box_wd:N \g__ptxcd_sublogo_box - 1em}+ \textwidth}, - ]{frametitle} - \usebeamerfont{frametitle}% - \if@tempswa\else\csname beamer@fte#1\endcsname\fi% - \vphantom{Ü} - \bool_if:NT \g__ptxcd_uppercase_frametitle_bool \text_uppercase:n {\insertframetitle}\strut - \par% - {% - \ifx\insertframesubtitle\@empty% - \else% - {\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\strut\text_uppercase:n {\insertframesubtitle}\strut\par}% - \fi - }% - \if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here... - \end{beamercolorbox} - \vskip.5ex -} -\newcommand*{\setupTUDaFrame}[1]{ - \keys_set:nn {ptxcd/beamer/outer} {#1} + \nointerlineskip% + \bool_if:NF \g__ptxcd_extended_space_bool + {\vskip.55ex} + \begin{beamercolorbox}[ + wd=\dim_eval:n {\bool_if:NT \g__ptxcd_extended_space_bool {-\box_wd:N \g__ptxcd_logo_box } \box_if_empty:NF \g__ptxcd_sublogo_box {-\box_wd:N \g__ptxcd_sublogo_box - 1em}+ \textwidth}, + ]{frametitle} + \usebeamerfont{frametitle}% + \if@tempswa\else\csname beamer@fte#1\endcsname\fi% + \vphantom{Ü} + \bool_if:NT \g__ptxcd_uppercase_frametitle_bool \text_uppercase:n {\insertframetitle}\strut + \par% + {% + \ifx\insertframesubtitle\@empty% + \else% + {\usebeamerfont{framesubtitle}\usebeamercolor[fg]{framesubtitle}\strut\text_uppercase:n {\insertframesubtitle}\strut\par}% + \fi + }% + \if@tempswa\else\vskip-.3cm\fi% set inside beamercolorbox... evil here... + \end{beamercolorbox} + \vskip.5ex } - \mode <all> - \endinput +%% +%% End of file `beamerouterthemeTUDa.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty index b74da09f609..923b395e258 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerouterthemeTUDa2008.sty @@ -1,10 +1,21 @@ -%% This is file `beamerouterthemeTUDa2008.sty' version 3.41 (2024-07-02), +%% +%% This is file `beamerouterthemeTUDa2008.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% beamerouterthemeTUDa.dtx (with options: `package,initialize,2008') +%% tuda-ci.dtx (with options: `options,beamer-outer') +%% beamerouterthemeTUDa.dtx (with options: `package,2008,body') +%% beamerthemeTUDa2008.dtx (with options: `outer') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,168 +24,178 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\NeedsTeXFormat{LaTeX2e} -\ProvidesExplPackage{beamerouterthemeTUDa2008}{2024-04-21}{3.37}{Outer~beamer~theme~of~tuda-ci, compatibility for design of 2008} +%% +\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\ProvidesExplPackage{beamerouterthemeTUDa2008}{2025-01-26}{4.00}{Outer beamer theme of tuda-ci, compatibility for design of 2008} \PassOptionsToPackage{paper=slide}{tudarules} \RequirePackage{tudarules} - +\bool_if_exist:NF \l_ptxcd_tmpa_bool {\bool_new:N \l_ptxcd_tmpa_bool} \dim_new:N \l__ptxcd_beamer_extraindent_dim \dim_new:N {\g__ptxcd_beamer_sep_dim} \dim_gset:Nn \g__ptxcd_beamer_sep_dim {.3\c_ptxcd_logoheight_dim} \dim_new:N \g__ptxcd_beamer_logosep_dim \dim_gset:Nn \g__ptxcd_beamer_logosep_dim{2mm} - - \cs_if_exist:NF \g__ptxcd_colorframetitle_bool {\bool_new:N \g__ptxcd_colorframetitle_bool} - \keys_define:nn {ptxcd/beamer/outer} { - logo .bool_gset:N = \g_ptxcd_headlinelogo_bool, - logo .default:n =true, - logo .initial:n =true, - logofile .tl_gset:N = \g_ptxcd_logofile_tl, - logofile .initial:n = tuda_logo, - colorframetitle .code:n = { - \use:c {bool_gset_#1:N} \g__ptxcd_colorframetitle_bool - \cs_if_exist_use:N \__ptxcd_setup_frametitle_color: - }, - colorframetitle .default:n = true, - centerframetitle .bool_gset:N = \g_ptxcd_centerframetitle_bool, - centerframetitle .initial:n = false, - centerframetitle .default:n = true, - framebgcolor .choice:, - framebgcolor / reset .code:n = - \__ptxcd_reset_framebgcolor: - , - framebgcolor / unknown .code:n = { - \__ptxcd_set_framebgcolor:n {#1} - }, - singleframebgcolor .code:n = { - \cs_gset_eq:Nc \__ptxcd_save_background_canvas: {beamer@thcbg@normal~text} - \keys_set:nn {ptxcd/beamer/outer} { - framebgcolor = #1 - } - }, - headsepline .bool_gset:N = \g_ptxcd_headsepline_bool, - headsepline .initial:n = true, - headsepline .default:n = true, + logo .bool_gset:N = \g_ptxcd_headlinelogo_bool, + logo .default:n =true, + logo .initial:n =true, + colorframetitle .choices:nn = {true, false} { + \use:c {bool_gset_ \l_keys_choice_tl :N} \g__ptxcd_colorframetitle_bool + \cs_if_exist_use:N \__ptxcd_setup_frametitle_color: + }, + colorframetitle .default:n = true, + centerframetitle + .bool_gset:N = \g_ptxcd_centerframetitle_bool, + centerframetitle .initial:n = false, + centerframetitle .default:n = true, + framebgcolor + .choice:, + framebgcolor / reset .code:n = + \__ptxcd_reset_framebgcolor: + , + framebgcolor / unknown .code:n = { + \__ptxcd_set_framebgcolor:n {#1} + }, + singleframebgcolor .code:n = + \cs_gset_eq:Nc \__ptxcd_save_background_canvas: {beamer@thcbg@normal~text} + \keys_set:nn {ptxcd/beamer/outer} { + framebgcolor = #1 + }, + headsepline + .bool_gset:N = \g_ptxcd_headsepline_bool, + headsepline .initial:n = true, + headsepline .default:n = true, + logofile .tl_gset:N = \g_ptxcd_logofile_tl, + logofile .initial:n = tuda_logo, + accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool, + accept-missing-logos .initial:n = false, + accept-missing-logos .usage:n = load, + accept-missing-logos .default:n = true, +%% color options +%% color options +} +\cs_if_exist:NT \TUDaDefaultBuildOptions { + \exp_args:Ne \keys_set:ne { ptxcd / + beamer/outer + } { + \TUDaDefaultBuildOptions + } +} +\cs_new:Nn \__ptxcd_insert_logo: { + \bool_if:NTF \g_ptxcd_logo_workaround_bool { + \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf} + \use_ii:nn + \use_i:nn + } { + \use_ii:nn + } + {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}} + {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}} } \define@key{beamerframe}{bgcolor}{ - \keys_set:nn {ptxcd/beamer/outer} { - singleframebgcolor=#1 - } + \keys_set:nn {ptxcd/beamer/outer} { + singleframebgcolor=#1 + } } - \cs_new:Nn \__ptxcd_reset_framebgcolor: { - \cs_gset_eq:cN {beamer@thcbg@normal~text} \__ptxcd_save_background_canvas: - \cs_undefine:N \__ptxcd_save_background_canvas: + \cs_gset_eq:cN {beamer@thcbg@normal~text} \__ptxcd_save_background_canvas: + \cs_undefine:N \__ptxcd_save_background_canvas: } \cs_new:Nn \__ptxcd_set_framebgcolor:n { - \cs_if_exist:cTF {\string\color@#1} - {\setbeamercolor{normal~text}{bg=#1}} - {\setbeamercolor{normal~text}{bg=TUDa-#1}} + \cs_if_exist:cTF {\string\color@#1} + {\setbeamercolor{normal~text}{bg=#1}} + {\setbeamercolor{normal~text}{bg=TUDa-#1}} } \BeforeBeginEnvironment{frame}{ - \cs_if_exist:NT \__ptxcd_save_background_canvas: { - \__ptxcd_reset_framebgcolor: - } + \cs_if_exist:NT \__ptxcd_save_background_canvas: { + \__ptxcd_reset_framebgcolor: + } } - \ProcessKeyOptions[ptxcd/beamer/outer] - - \mode<presentation> - - \RequirePackage{graphicx} - \bool_if:NT \g__ptxcd_colorframetitle_bool - {\dim_set:Nn \l__ptxcd_beamer_extraindent_dim {\g__ptxcd_beamer_logosep_dim}} + {\dim_set:Nn \l__ptxcd_beamer_extraindent_dim {\g__ptxcd_beamer_logosep_dim}} \setbeamersize{ - text~margin~left=\dimexpr\g__ptxcd_beamer_sep_dim+\l__ptxcd_beamer_extraindent_dim \relax, - text~margin~right=\dimexpr\g__ptxcd_beamer_sep_dim+\l__ptxcd_beamer_extraindent_dim \relax, -} + text~margin~left=\dim_eval:n { + \g__ptxcd_beamer_sep_dim+\l__ptxcd_beamer_extraindent_dim +}, + text~margin~right=\dim_eval:n { + \g__ptxcd_beamer_sep_dim+\l__ptxcd_beamer_extraindent_dim + } +} \cs_new:Nn \__ptxcd_beamer_linewidth: {\dim_eval:n {\paperwidth-\beamer@leftmargin-\beamer@rightmargin}} - -%Logo - \box_new:N \g__ptxcd_logo_box \hbox_gset:Nn \g__ptxcd_logo_box {% - \makebox[\__ptxcd_logowidth:][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}% + \makebox[\__ptxcd_logowidth:][l] + {\__ptxcd_insert_logo:}% +} +\RenewDocumentCommand{\logo}{sm}{ +\IfBooleanTF{#1}{ +\setbeamertemplate{logo}{\resizebox{!}{.06\beamer@paperheight}{\mbox{#2}}} +}{ +\setbeamertemplate{logo}{#2} +} +} +\newcommand*{\setupTUDaFrame}[1]{ + \keys_set:nn {ptxcd/beamer/outer} {#1} + \ptxcd_setup_frame: } - \ptxcd_makeheadrule[color=identbarcolor,width=\paperwidth-2\g__ptxcd_beamer_sep_dim]{ptxcd_beamer_headrule} \ptxcd_makefootrule[width=\paperwidth-2\g__ptxcd_beamer_sep_dim]{ptxcd_beamer_rule} - -\newcommand\insertsmalllogo{\setbeamertemplate{logo}[small]\usebeamertemplate{logo}} - \defbeamertemplate*{sidebar~left}{TUDa}{} \defbeamertemplate*{sidebar~right}{TUDa}{} - \bool_if_exist:NF \l_ptxcd_tmpa_bool {\bool_new:N \l_ptxcd_tmpa_bool} - \defbeamertemplate*{footline}{TUDa} { - \begin{beamercolorbox}[leftskip=\g__ptxcd_beamer_sep_dim,rightskip=\g__ptxcd_beamer_sep_dim, - ht=\csname c_ptxcd_smallrule_dim\endcsname,dp=1mm]{footline} - \ptxcd_beamer_rule - \end{beamercolorbox} - \begin{beamercolorbox}[ - leftskip=\g__ptxcd_beamer_sep_dim, - rightskip=\g__ptxcd_beamer_sep_dim, ht=2.75mm,dp=2.75mm]{footline} - \usebeamerfont{author~ in~ head/foot}% - \bool_set_false:N \l_ptxcd_tmpa_bool - \clist_map_variable:nNn {date, department, institute, author} \l_tmpa_tl { - \tl_if_empty:cF {beamer@short\l_tmpa_tl} { - \bool_if:NTF \l_ptxcd_tmpa_bool {~|~} - {\bool_set_true:N \l_ptxcd_tmpa_bool} - \use:c {insertshort\l_tmpa_tl} - } - } - \bool_if:NT \l_ptxcd_tmpa_bool {~|~} - \insertframenumber - \hfill\raisebox{\dimexpr-.5\height+\dp\strutbox\relax}{\insertlogo} - \end{beamercolorbox} +\begin{beamercolorbox}[leftskip=\g__ptxcd_beamer_sep_dim,rightskip=\g__ptxcd_beamer_sep_dim, +ht=\csname c_ptxcd_smallrule_dim\endcsname,dp=1mm]{footline} +\ptxcd_beamer_rule +\end{beamercolorbox} +\begin{beamercolorbox}[ +leftskip=\g__ptxcd_beamer_sep_dim, +rightskip=\g__ptxcd_beamer_sep_dim, ht=2.75mm,dp=2.75mm]{footline} +\usebeamerfont{author~ in~ head/foot}% +\bool_set_false:N \l_ptxcd_tmpa_bool +\clist_map_variable:nNn {date, department, institute, author} \l_tmpa_tl { +\tl_if_empty:cF {beamer@short\l_tmpa_tl} { +\bool_if:NTF \l_ptxcd_tmpa_bool {~|~} +{\bool_set_true:N \l_ptxcd_tmpa_bool} +\use:c {insertshort\l_tmpa_tl} } - - - -\RenewDocumentCommand{\logo}{sm}{ - \IfBooleanTF{#1}{ - \setbeamertemplate{logo}{\resizebox{!}{.06\beamer@paperheight}{\mbox{#2}}} - }{ - \setbeamertemplate{logo}{#2} - } +} +\bool_if:NT \l_ptxcd_tmpa_bool {~|~} +\insertframenumber +\hfill\raisebox{\dimexpr-.5\height+\dp\strutbox\relax}{\insertlogo} +\end{beamercolorbox} } \defbeamertemplate{headline}{TUDa.logo} {% - \begin{beamercolorbox}[ - leftskip=\g__ptxcd_beamer_sep_dim,rightskip=\g__ptxcd_beamer_sep_dim, - ht=.75\g__ptxcd_beamer_sep_dim,dp=\box_dp:N \ptxcd_beamer_headrule_box]{headline} - \ptxcd_beamer_headrule - \end{beamercolorbox} +\begin{beamercolorbox}[ +leftskip=\g__ptxcd_beamer_sep_dim,rightskip=\g__ptxcd_beamer_sep_dim, +ht=.75\g__ptxcd_beamer_sep_dim,dp=\box_dp:N \ptxcd_beamer_headrule_box]{headline} +\ptxcd_beamer_headrule +\end{beamercolorbox} } - - \box_new:N \l__ptxcd_frametitle_box - \defbeamertemplate{frametitle}{TUDa.logo}{% \nointerlineskip% \begin{beamercolorbox}[ @@ -182,125 +203,113 @@ wd=\dim_eval:n {\__ptxcd_beamer_linewidth:+2\l__ptxcd_beamer_extraindent_dim}, rightskip=-\g__ptxcd_beamer_logosep_dim, leftskip=\dim_eval:n {-\g__ptxcd_beamer_logosep_dim+\l__ptxcd_beamer_extraindent_dim}, - ]{frametitle} - \hbox_set:Nn \l__ptxcd_frametitle_box { - \parbox[t] - {\dim_eval:n {\linewidth- \box_wd:N \g__ptxcd_logo_box-1em}}{% - \usebeamerfont{frametitle}\strut\insertframetitle - \ifx\insertframesubtitle\@empty - \else - \par - \usebeamercolor[fg]{framesubtitle} - \usebeamerfont{framesubtitle} - \insertframesubtitle - \fi - }} - \leavevmode - \bool_if:NTF \g_ptxcd_centerframetitle_bool - {\raisebox{\dimexpr-.5\height+.5\depth}} - {\use:n} - {\box_use:N \l__ptxcd_frametitle_box} - \hfill% - \bool_if:NTF \g_ptxcd_centerframetitle_bool - {\raisebox{\dimexpr-.5\height+.5\depth}} - {\raisebox{\dimexpr-\height+\ht\strutbox}} - {\box_use:N \g__ptxcd_logo_box} +]{frametitle} +\hbox_set:Nn \l__ptxcd_frametitle_box { +\parbox[t] +{\dim_eval:n {\linewidth- \box_wd:N \g__ptxcd_logo_box-1em}}{% +\usebeamerfont{frametitle}\strut\insertframetitle +\ifx\insertframesubtitle\@empty +\else +\par +\usebeamercolor[fg]{framesubtitle} +\usebeamerfont{framesubtitle} +\insertframesubtitle +\fi +}} +\leavevmode +\bool_if:NTF \g_ptxcd_centerframetitle_bool +{\raisebox{\dimexpr-.5\height+.5\depth}} +{\use:n} +{\box_use:N \l__ptxcd_frametitle_box} +\hfill% +\bool_if:NTF \g_ptxcd_centerframetitle_bool +{\raisebox{\dimexpr-.5\height+.5\depth}} +{\raisebox{\dimexpr-\height+\ht\strutbox}} +{\box_use:N \g__ptxcd_logo_box} \end{beamercolorbox}% \bool_if:NT \g_ptxcd_headsepline_bool { - \nointerlineskip - \begin{beamercolorbox}[ - wd=\dim_eval:n {\textwidth+2\l__ptxcd_beamer_extraindent_dim}, - ht=\c_ptxcd_smallrule_dim, - dp=0pt - ]{smallrule} - \end{beamercolorbox} +\nointerlineskip +\begin{beamercolorbox}[ +wd=\dim_eval:n {\textwidth+2\l__ptxcd_beamer_extraindent_dim}, +ht=\c_ptxcd_smallrule_dim, +dp=0pt +]{smallrule} +\end{beamercolorbox} } } - \defbeamertemplate*{headline}{TUDa.nologo} {% - \vspace{.75\g__ptxcd_beamer_sep_dim} - \begin{beamercolorbox}[ - leftskip=\g__ptxcd_beamer_sep_dim,rightskip=\g__ptxcd_beamer_sep_dim]{headline} - \ptxcd_beamer_headrule - \end{beamercolorbox} - } - +\vspace{.75\g__ptxcd_beamer_sep_dim} +\begin{beamercolorbox}[ +leftskip=\g__ptxcd_beamer_sep_dim,rightskip=\g__ptxcd_beamer_sep_dim]{headline} +\ptxcd_beamer_headrule +\end{beamercolorbox} +} \defbeamertemplate*{headline}{TUDa.simple} { - \ifbeamercolorempty[bg]{background~canvas}{ - \vspace{\dimexpr.5\c_ptxcd_logoheight_dim-\c_ptxcd_rulesep_dim} - \skip_horizontal:n {\beamer@leftmargin} - \color{identbarcolor} - \vrule width\dimexpr\textwidth-\beamer@leftmargin-\beamer@rightmargin height\c_ptxcd_rulesep_dim - }{ - \vspace{\dimexpr.5\c_ptxcd_logoheight_dim} - } +\ifbeamercolorempty[bg]{background~canvas}{ +\vspace{\dimexpr.5\c_ptxcd_logoheight_dim-\c_ptxcd_rulesep_dim} +\skip_horizontal:n {\beamer@leftmargin} +\color{identbarcolor} +\vrule width\dimexpr\textwidth-\beamer@leftmargin-\beamer@rightmargin height\c_ptxcd_rulesep_dim +}{ +\vspace{\dimexpr.5\c_ptxcd_logoheight_dim} +} } - \defbeamertemplate*{frametitle}{TUDa.nologo}{% - \nointerlineskip% +\nointerlineskip% \begin{beamercolorbox}[ sep=\g__ptxcd_beamer_logosep_dim, wd=\dim_eval:n {\__ptxcd_beamer_linewidth:+2\l__ptxcd_beamer_extraindent_dim}, leftskip=\dim_eval:n {-\g__ptxcd_beamer_logosep_dim+\l__ptxcd_beamer_extraindent_dim}, - ]{frametitle} - \hbox_set:Nn \l__ptxcd_frametitle_box { - \parbox[t] - {\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-1em\relax\relax}{% - \usebeamerfont{frametitle}\strut\insertframetitle - \ifx\insertframesubtitle\@empty - \else - \par - \usebeamercolor[fg]{framesubtitle} - \usebeamerfont{framesubtitle} - \insertframesubtitle - \fi +]{frametitle} +\hbox_set:Nn \l__ptxcd_frametitle_box { +\parbox[t] +{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-1em\relax\relax}{% +\usebeamerfont{frametitle}\strut\insertframetitle +\ifx\insertframesubtitle\@empty +\else +\par +\usebeamercolor[fg]{framesubtitle} +\usebeamerfont{framesubtitle} +\insertframesubtitle +\fi }} \leavevmode \bool_if:NTF \g_ptxcd_centerframetitle_bool {\raisebox{\dimexpr-.5\height+.5\depth}} {\use:n} {\box_use:N \l__ptxcd_frametitle_box} -% Rule for voffset similar to logo - \rule[\dim_eval:n { - \bool_if:NTF \g_ptxcd_centerframetitle_bool - {-.5\box_ht:N \g__ptxcd_logo_box+.5\box_dp:N \g__ptxcd_logo_box} - {-\box_ht:N \g__ptxcd_logo_box+\ht\strutbox} - }]{0pt}{\dim_eval:n { - \box_ht:N \g__ptxcd_logo_box+\box_dp:N \g__ptxcd_logo_box - }} +\rule[\dim_eval:n { +\bool_if:NTF \g_ptxcd_centerframetitle_bool +{-.5\box_ht:N \g__ptxcd_logo_box+.5\box_dp:N \g__ptxcd_logo_box} +{-\box_ht:N \g__ptxcd_logo_box+\ht\strutbox} +}]{0pt}{\dim_eval:n { +\box_ht:N \g__ptxcd_logo_box+\box_dp:N \g__ptxcd_logo_box +}} \end{beamercolorbox} \bool_if:NT \g_ptxcd_headsepline_bool { - \nointerlineskip - \begin{beamercolorbox}[ - wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim \relax, - ht=\c_ptxcd_smallrule_dim, - dp=0pt - ]{smallrule} - \end{beamercolorbox} +\nointerlineskip +\begin{beamercolorbox}[ +wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim \relax, +ht=\c_ptxcd_smallrule_dim, +dp=0pt +]{smallrule} +\end{beamercolorbox} } } - \cs_new:Nn \ptxcd_setup_frame: { - \bool_if:NTF \g_ptxcd_headlinelogo_bool { - \setbeamertemplate{frametitle}[TUDa.logo] - \setbeamertemplate{headline}[TUDa.logo] - }{ - \setbeamertemplate{frametitle}[TUDa.nologo] - \setbeamertemplate{headline}[TUDa.nologo] - } +\bool_if:NTF \g_ptxcd_headlinelogo_bool { +\setbeamertemplate{frametitle}[TUDa.logo] +\setbeamertemplate{headline}[TUDa.logo] +}{ +\setbeamertemplate{frametitle}[TUDa.nologo] +\setbeamertemplate{headline}[TUDa.nologo] } -\ptxcd_setup_frame: - -\newcommand*{\setupTUDaFrame}[1]{ - \keys_set:nn {ptxcd/beamer/outer} {#1} - \ptxcd_setup_frame: } - - - +\ptxcd_setup_frame: \mode <all> - \endinput +%% +%% End of file `beamerouterthemeTUDa2008.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa-mecheng.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa-mecheng.sty index e84e7fa228e..5fd524dabc4 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa-mecheng.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa-mecheng.sty @@ -1,9 +1,9 @@ -%% This is file `beamerthemeTUDa-mecheng.sty' version 3.41 (2024-07-02), +%% This is file `beamerthemeTUDa-mecheng.sty' version 4.00 (2025-01-26), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- %% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> %% %% ============================================================================ %% This work may be distributed and/or modified under the @@ -16,7 +16,7 @@ %% %% This work has the LPPL maintenance status `maintained'. %% -%% The Current Maintainers of this work are +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> %% %% The development respository can be found at @@ -25,15 +25,13 @@ %% %% ============================================================================ %% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\ProvidesExplPackage{beamerthemeTUDa-mecheng}{\filedate}{\fileversion}{specific tudabeamer configuration for the department of mechanical engineering} +\ProvidesExplPackage{beamerthemeTUDa-mecheng}{2025-01-26}{4.00}{specific tudabeamer configuration for the department of mechanical engineering} \tl_if_empty:NT \g_ptxcd_departmentlogo_tl { \keys_set:nn {ptxcd/beamer}{departmentlogofile=tuda_maschinenbau_logo_rgb} -} +} \mode<presentation> @@ -85,7 +83,7 @@ %innertheme adjustments \defbeamertemplate*{title~ page}{TUDa-mecheng}[1][] -{ +{ \nointerlineskip \vspace{\dimexpr.5\c_ptxcd_logoheight_dim-\ht\strutbox+ \box_dp:N \ptxcd_beamer_headrule_box + \box_ht:N \ptxcd_beamer_headrule_box @@ -94,11 +92,11 @@ \parbox{\__ptxcd_beamer_linewidth:}{% \begin{beamercolorbox}[ wd=\linewidth, - ]{title} + ]{title} \raggedright \usebeamerfont{title} \hbox_set:Nn \l__ptxcd_frametitle_box { - \parbox[c]{\dimexpr\linewidth-\box_wd:N \g__ptxcd_logo_box-1em\relax}{ + \parbox[c]{\dimexpr\linewidth-\box_wd:N \g__ptxcd_logo_box-1em}{ \raggedright{} \inserttitle \par @@ -107,17 +105,17 @@ \dim_compare:nT {\box_ht:N \l__ptxcd_frametitle_box > \baselineskip} {\raisebox{\dimexpr-\height+.5\c_ptxcd_logoheight_dim}} {\box_use:N \l__ptxcd_frametitle_box} \hspace{\fill} - \raisebox{\dimexpr-.5\height+.5\ht\strutbox-.5\dp\strutbox\relax}{\box_use:N \g__ptxcd_logo_box}\hspace*{\dimexpr-\beamer@rightmargin+\g__ptxcd_beamer_logosep_dim} + \raisebox{\dimexpr-.5\height+.5\ht\strutbox-.5\dp\strutbox}{\box_use:N \g__ptxcd_logo_box}\hspace*{\dimexpr-\beamer@rightmargin+\g__ptxcd_beamer_logosep_dim} \ifx\insertsubtitle\@empty \else \par\vspace{\c_ptxcd_largerule_dim} - \parbox[t]{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box\relax}{ + \parbox[t]{\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box}{ \usebeamerfont{subtitle}\insertsubtitle } \fi \bool_if:NT \g_ptxcd_authorontitle_bool { \par - \parbox[t]{\dimexpr\linewidth-2ex\relax}{ + \parbox[t]{\dimexpr\linewidth-2ex}{ \ifx\insertauthor\@empty \else \usebeamercolor[fg]{author}\usebeamerfont{author}\insertauthor\par @@ -136,7 +134,7 @@ \begin{beamercolorbox}[ rightskip=.07\linewidth,%place image left of arrow tip ht=\c_ptxcd_smallrule_dim,%dp=1mm, - wd=\dimexpr\textwidth]{footline} + wd=\textwidth]{footline} \setbeamertemplate{departmentlogo}[TUDa-mecheng][width=\dimexpr2\linewidth/11\relax] \insertdepartmentlogo \hfill @@ -193,8 +191,9 @@ { \begin{beamercolorbox}[ wd=\linewidth, - leftskip=\beamer@leftmargin,rightskip=\beamer@rightmargin, - ]{footline} + leftskip=\beamer@leftmargin, + rightskip=\beamer@rightmargin, + ]{footline} \MechEngArrow*{\linewidth} \par\skip_vertical:n {.5\g__ptxcd_beamer_logosep_dim} \makebox[\linewidth][s]{ @@ -229,8 +228,8 @@ sep=\g__ptxcd_beamer_logosep_dim, wd=\__ptxcd_beamer_linewidth:, rightskip=-\g__ptxcd_beamer_logosep_dim, - leftskip=\dimexpr-\g__ptxcd_beamer_logosep_dim\relax, - ]{frametitle} + leftskip=-\g__ptxcd_beamer_logosep_dim, + ]{frametitle} \hbox_set:Nn \l__ptxcd_frametitle_box { \parbox[t] {\dimexpr\linewidth- \box_wd:N \g__ptxcd_logo_box-1em\relax\relax}{% @@ -257,7 +256,7 @@ sep=\g__ptxcd_beamer_logosep_dim, wd=\__ptxcd_beamer_linewidth:, rightskip=-\g__ptxcd_beamer_logosep_dim, - leftskip=\dimexpr-\g__ptxcd_beamer_logosep_dim\relax, + leftskip=-\g__ptxcd_beamer_logosep_dim, ht=\c_ptxcd_smallrule_dim. dp=0 ]{smallrule} @@ -278,7 +277,6 @@ } \cs_set:Nn \__ptxcd_set_framebgcolor:n { - \str_case:nnTF {#1} { {Primary1} {\tl_set:Nn \l_tmpa_tl {Primary2}} {Primary2} {\tl_set:Nn \l_tmpa_tl {Primary1}} diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty index beb85e6785d..d8f3436852e 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa.sty @@ -1,10 +1,18 @@ -%% This is file `beamerthemeTUDa.sty' version 3.41 (2024-07-02), +%% +%% This is file `beamerthemeTUDa.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudabeamer.dtx (with options: `package,main,initialize,body,options') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,44 +21,64 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% +%% \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\ProvidesExplPackage{beamerthemeTUDa}{2024-04-21}{3.37}{Beamer theme using the Corporate Design of TU Darmstadt} - -\mode<presentation> - +\ProvidesExplPackage{beamerthemeTUDa}{2025-01-26}{4.00}{Beamer theme using the Corporate Design of TU Darmstadt} \tl_if_exist:NF \g__ptxcd_design_tl { - \tl_new:N \g__ptxcd_design_tl - \keys_define:nn {ptxcd/beamer} { - design .choice:, - design / 2023 .code:n = { - \tl_gset:Nn \g__ptxcd_design_tl {2023} - \PassOptionsToClass{aspectratio=169}{beamer} - }, - design / 2008 .code:n = { - \tl_gset:Nn \g__ptxcd_design_tl {2008} - }, - design .initial:n = 2023, - design .usage:n = load, - design2023 .meta:n = {design=2023}, - design2008 .meta:n = {design=2008}, - } - \ProcessKeyOptions[ptxcd/beamer] + \tl_new:N \g__ptxcd_design_tl + \cs_new:Nn \__ptxcd_beamer_declare_pass_options:nn { + \keys_define:nn {ptxcd/beamer} { + #1 .code:n = \clist_map_inline:nn {#2}{ + \PassOptionsToPackage{#1=##1}{beamer####1themeTUDa2008} + \PassOptionsToPackage{#1=##1}{beamer####1themeTUDa} + }, + #1 .default:n = true, + } + } + + \__ptxcd_beamer_declare_pass_options:nn {centerframetitle} {outer} + \__ptxcd_beamer_declare_pass_options:nn {headsepline} {outer} + \__ptxcd_beamer_declare_pass_options:nn {logo} {outer} + \__ptxcd_beamer_declare_pass_options:nn {colortitle} {color} + \__ptxcd_beamer_declare_pass_options:nn {colorbacktitle} {color} + \__ptxcd_beamer_declare_pass_options:nn {colorback} {color} + \__ptxcd_beamer_declare_pass_options:nn {colorframetitle} {outer, color} } +\keys_define:nn {ptxcd/beamer} { + accentcolor .code:n = \PassOptionsToPackage{accentcolor=#1}{tudacolors}, + design .choice:, + design / 2023 .code:n = { + \tl_gset:Nn \g__ptxcd_design_tl {2023} + \PassOptionsToClass{aspectratio=169}{beamer} + }, + design / 2008 .code:n = { + \tl_gset:Nn \g__ptxcd_design_tl {2008} + }, + design / default .code:n = { + \tl_gset:Nn \g__ptxcd_design_tl {default} + }, + design .initial:n = default, + design2023 .meta:n = {design=2023}, + design2008 .meta:n = {design=2008}, + design .usage:n = load, +} +\ProcessKeyOptions[ptxcd/beamer] \RequirePackageWithOptions{beamerthemeTUDa\g__ptxcd_design_tl} - +\mode<presentation> +\setbeamertemplate{navigation symbols}{} \mode<all> - \endinput +%% +%% End of file `beamerthemeTUDa.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty index f3c3064841c..ee424cb254c 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2008.sty @@ -1,10 +1,18 @@ -%% This is file `beamerthemeTUDa2008.sty' version 3.41 (2024-07-02), +%% +%% This is file `beamerthemeTUDa2008.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudabeamer.dtx (with options: `package,2008,initialize,body,options') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,48 +21,30 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\def\fileversion{3.41} -\def\filedate{2024-07-02} +%% \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\ProvidesPackage{beamerthemeTUDa2008} - [\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt Design of 2008] - -\mode<presentation> - +\ProvidesPackage{beamerthemeTUDa2008}[2025-01-26 v4.00 beamer theme using the Corporate Design of TU Darmstadt Design of 2008] \ExplSyntaxOn - -\keys_define:nn {ptxcd/beamer} { - accentcolor .code:n = \PassOptionsToPackage{accentcolor=#1}{tudacolors}, - colortitle .code:n = \PassOptionsToPackage{colortitle=#1}{beamercolorthemeTUDa}, - colorbacktitle .code:n = \PassOptionsToPackage{colorbacktitle=#1}{beamercolorthemeTUDa}, - colorframetitle .code:n = \PassOptionsToPackage{colorframetitle=#1}{beamerouterthemeTUDa}, - colorback .code:n = \PassOptionsToPackage{colorback=#1}{beamercolorthemeTUDa}, - logo .code:n = \PassOptionsToPackage{logo=#1}{beamerouterthemeTUDa} -} - \ProcessKeyOptions[ptxcd/beamer] - +\mode<presentation> \ExplSyntaxOff - \usefonttheme{TUDa2008} \usecolortheme{TUDa2008} \useoutertheme{TUDa2008} \useinnertheme[design=2008]{TUDa} \setbeamertemplate{navigation symbols}{} - - \mode<all> - \endinput +%% +%% End of file `beamerthemeTUDa2008.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty index 7095ba69f12..c9df31ab97e 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/beamerthemeTUDa2023.sty @@ -1,10 +1,18 @@ -%% This is file `beamerthemeTUDa2023.sty' version 3.41 (2024-07-02) +%% +%% This is file `beamerthemeTUDa2023.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudabeamer.dtx (with options: `package,2023,initialize,body,options') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,45 +21,32 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% +%% \NeedsTeXFormat{LaTeX2e}[2022/06/01] -\ProvidesExplPackage{beamerthemeTUDa2023}{2024-04-21}{3.37}{Beamer theme using the Corporate Design of TU Darmstadt Design of 2023} - -\mode<presentation> - +\ProvidesExplPackage{beamerthemeTUDa2023}{2025-01-26}{4.00}{Beamer theme using the Corporate Design of TU Darmstadt Design of 2023} \msg_new:nnn {tudabeamer} {option-removed} { - The~design~you~selected~doesn't~support~the~option~`#1`.\\ - It~will~be~ignored. + The~design~you~selected~doesn't~support~the~option~`#1`.\\ + It~will~be~ignored. } - -\keys_define:nn {ptxcd/beamer} { - colortitle .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {colortitle}, - colorbacktitle .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {colorbacktitle}, - colorframetitle .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {colorframetitle}, - colorback .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {colorback}, - logo .code:n = \PassOptionsToPackage{logo=#1}{beamerouterthemeTUDa2023} -} - \ProcessKeyOptions[ptxcd/beamer] - +\mode<presentation> \usefonttheme{TUDa} \usecolortheme{TUDa} \useoutertheme{TUDa} \useinnertheme[design=2023]{TUDa} - \setbeamertemplate{navigation symbols}{} - \mode<all> - \endinput +%% +%% End of file `beamerthemeTUDa2023.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a0paper.clo b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a0paper.clo index 55147ed57f1..376cfaa2aa5 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a0paper.clo +++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a0paper.clo @@ -1,10 +1,18 @@ -%% This is file `tuda-a0paper.clo' version 3.41 (2024-07-02), +%% +%% This is file `tuda-a0paper.clo', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudasize.dtx (with options: `a0,tudasize') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,29 +21,37 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\ProvidesExplFile{tuda-a0paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a0paper} +%% +\ProvidesExplFile{tuda-a0paper.clo}{2025-01-26}{4.00}{tuda-ci~size~adjustments~for~a0paper} \cs_set:Nn \ptxcd_setup_title_sizes: { - \cs_set:Nn \ptxcd_title_fontsize: {{125pt}{165pt}} - \cs_set:Nn \ptxcd_titleinfo_fontsize: {{28pt}{35pt}} - \cs_set:Nn \ptxcd_titlethanks_fontsize: {{24pt}{30pt}} + \cs_set:Nn \ptxcd_title_fontsize: { + {125pt}{165pt} + } + \cs_set:Nn \ptxcd_titleinfo_fontsize: { + {28pt}{35pt} + } + \cs_set:Nn \ptxcd_titlethanks_fontsize: { + {24pt}{30pt} + } } \cs_set:Nn \ptxcd_setup_base_sizes: { - \tl_if_empty:NT \g_ptxcd_fontsize_tl { - \tl_gset:Nn \g_ptxcd_fontsize_tl {30pt} - } - \dim_gset:Nn \g_ptxcd_margin_dim {30mm} + \tl_if_empty:NT \g_ptxcd_fontsize_tl { +\tl_gset:Nn \g_ptxcd_fontsize_tl + {30pt} + } + \dim_gset:Nn \g_ptxcd_margin_dim + {30mm} } \endinput %% diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a1paper.clo b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a1paper.clo index 4a89742e12c..e6559161ca6 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a1paper.clo +++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a1paper.clo @@ -1,10 +1,18 @@ -%% This is file `tuda-a1paper.clo' version 3.41 (2024-07-02), +%% +%% This is file `tuda-a1paper.clo', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudasize.dtx (with options: `a1,tudasize') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,29 +21,37 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\ProvidesExplFile{tuda-a1paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a1paper} +%% +\ProvidesExplFile{tuda-a1paper.clo}{2025-01-26}{4.00}{tuda-ci~size~adjustments~for~a1paper} \cs_set:Nn \ptxcd_setup_title_sizes: { - \cs_set:Nn \ptxcd_title_fontsize: {{86pt}{120pt}} - \cs_set:Nn \ptxcd_titleinfo_fontsize: {{35pt}{42pt}} - \cs_set:Nn \ptxcd_titlethanks_fontsize: {{22pt}{26pt}} + \cs_set:Nn \ptxcd_title_fontsize: { + {86pt}{120pt} + } + \cs_set:Nn \ptxcd_titleinfo_fontsize: { + {35pt}{42pt} + } + \cs_set:Nn \ptxcd_titlethanks_fontsize: { + {22pt}{26pt} + } } \cs_set:Nn \ptxcd_setup_base_sizes: { - \tl_if_empty:NT \g_ptxcd_fontsize_tl { - \tl_gset:Nn \g_ptxcd_fontsize_tl {25pt} - } - \dim_gset:Nn \g_ptxcd_margin_dim {30mm} + \tl_if_empty:NT \g_ptxcd_fontsize_tl { +\tl_gset:Nn \g_ptxcd_fontsize_tl + {25pt} + } + \dim_gset:Nn \g_ptxcd_margin_dim + {30mm} } \endinput %% diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a2paper.clo b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a2paper.clo index 57121954a49..40c0b999dd8 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a2paper.clo +++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a2paper.clo @@ -1,10 +1,18 @@ -%% This is file `tuda-a2paper.clo' version 3.41 (2024-07-02), +%% +%% This is file `tuda-a2paper.clo', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudasize.dtx (with options: `a2,tudasize') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,29 +21,37 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\ProvidesExplFile{tuda-a2paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a2paper} +%% +\ProvidesExplFile{tuda-a2paper.clo}{2025-01-26}{4.00}{tuda-ci~size~adjustments~for~a2paper} \cs_set:Nn \ptxcd_setup_title_sizes: { - \cs_set:Nn \ptxcd_title_fontsize: {{65pt}{82pt}} - \cs_set:Nn \ptxcd_titleinfo_fontsize: {{22pt}{28pt}} - \cs_set:Nn \ptxcd_titlethanks_fontsize: {{14pt}{20pt}} + \cs_set:Nn \ptxcd_title_fontsize: { + {65pt}{82pt} + } + \cs_set:Nn \ptxcd_titleinfo_fontsize: { + {22pt}{28pt} + } + \cs_set:Nn \ptxcd_titlethanks_fontsize: { + {14pt}{20pt} + } } \cs_set:Nn \ptxcd_setup_base_sizes: { - \tl_if_empty:NT \g_ptxcd_fontsize_tl { - \tl_gset:Nn \g_ptxcd_fontsize_tl {25pt} - } - \dim_gset:Nn \g_ptxcd_margin_dim {30mm} + \tl_if_empty:NT \g_ptxcd_fontsize_tl { +\tl_gset:Nn \g_ptxcd_fontsize_tl + {25pt} + } + \dim_gset:Nn \g_ptxcd_margin_dim + {30mm} } \endinput %% diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a3paper.clo b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a3paper.clo index e841639ad03..789eb784ec6 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a3paper.clo +++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a3paper.clo @@ -1,10 +1,18 @@ -%% This is file `tuda-a3paper.clo' version 3.41 (2024-07-02), +%% +%% This is file `tuda-a3paper.clo', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudasize.dtx (with options: `a3,tudasize') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,29 +21,37 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\ProvidesExplFile{tuda-a3paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a3paper} +%% +\ProvidesExplFile{tuda-a3paper.clo}{2025-01-26}{4.00}{tuda-ci~size~adjustments~for~a3paper} \cs_set:Nn \ptxcd_setup_title_sizes: { - \cs_set:Nn \ptxcd_title_fontsize: {{47pt}{61pt}} - \cs_set:Nn \ptxcd_titleinfo_fontsize: {{16pt}{20pt}} - \cs_set:Nn \ptxcd_titlethanks_fontsize: {{12pt}{16pt}} + \cs_set:Nn \ptxcd_title_fontsize: { + {47pt}{61pt} + } + \cs_set:Nn \ptxcd_titleinfo_fontsize: { + {16pt}{20pt} + } + \cs_set:Nn \ptxcd_titlethanks_fontsize: { + {12pt}{16pt} + } } \cs_set:Nn \ptxcd_setup_base_sizes: { - \tl_if_empty:NT \g_ptxcd_fontsize_tl { - \tl_gset:Nn \g_ptxcd_fontsize_tl {17pt} - } - \dim_gset:Nn \g_ptxcd_margin_dim {15mm} + \tl_if_empty:NT \g_ptxcd_fontsize_tl { +\tl_gset:Nn \g_ptxcd_fontsize_tl + {17pt} + } + \dim_gset:Nn \g_ptxcd_margin_dim + {15mm} } \endinput %% diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a4paper.clo b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a4paper.clo index 646a994a6ad..15b33243975 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a4paper.clo +++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a4paper.clo @@ -1,10 +1,18 @@ -%% This is file `tuda-a4paper.clo' version 3.41 (2024-07-02), +%% +%% This is file `tuda-a4paper.clo', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudasize.dtx (with options: `a4,tudasize') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,29 +21,37 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\ProvidesExplFile{tuda-a4paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a4paper} +%% +\ProvidesExplFile{tuda-a4paper.clo}{2025-01-26}{4.00}{tuda-ci~size~adjustments~for~a4paper} \cs_set:Nn \ptxcd_setup_title_sizes: { - \cs_set:Nn \ptxcd_title_fontsize: {{36pt}{47pt}} - \cs_set:Nn \ptxcd_titleinfo_fontsize: {{12pt}{14pt}} - \cs_set:Nn \ptxcd_titlethanks_fontsize: {{10pt}{11.5pt}} + \cs_set:Nn \ptxcd_title_fontsize: { + {36pt}{47pt} + } + \cs_set:Nn \ptxcd_titleinfo_fontsize: { + {12pt}{14pt} + } + \cs_set:Nn \ptxcd_titlethanks_fontsize: { + {10pt}{11.5pt} + } } \cs_set:Nn \ptxcd_setup_base_sizes: { - \tl_if_empty:NT \g_ptxcd_fontsize_tl { - \tl_gset:Nn \g_ptxcd_fontsize_tl {14pt} - } - \dim_gset:Nn \g_ptxcd_margin_dim {15mm} + \tl_if_empty:NT \g_ptxcd_fontsize_tl { +\tl_gset:Nn \g_ptxcd_fontsize_tl + {14pt} + } + \dim_gset:Nn \g_ptxcd_margin_dim + {15mm} } \endinput %% diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a5paper.clo b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a5paper.clo index 8c0ef0e94f7..81b7319e27c 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-a5paper.clo +++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-a5paper.clo @@ -1,10 +1,18 @@ -%% This is file `tuda-a5paper.clo' version 3.41 (2024-07-02), +%% +%% This is file `tuda-a5paper.clo', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudasize.dtx (with options: `a5,tudasize') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,29 +21,37 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\ProvidesExplFile{tuda-a5paper.clo}{2024-07-01}{3.40}{tuda-ci~size~adjustments~for~a5paper} +%% +\ProvidesExplFile{tuda-a5paper.clo}{2025-01-26}{4.00}{tuda-ci~size~adjustments~for~a5paper} \cs_set:Nn \ptxcd_setup_title_sizes: { - \cs_set:Nn \ptxcd_title_fontsize: {{22pt}{28pt}} - \cs_set:Nn \ptxcd_titleinfo_fontsize: {{10pt}{11.5pt}} - \cs_set:Nn \ptxcd_titlethanks_fontsize: {{10pt}{11.5pt}} + \cs_set:Nn \ptxcd_title_fontsize: { + {22pt}{28pt} + } + \cs_set:Nn \ptxcd_titleinfo_fontsize: { + {10pt}{11.5pt} + } + \cs_set:Nn \ptxcd_titlethanks_fontsize: { + {10pt}{11.5pt} + } } \cs_set:Nn \ptxcd_setup_base_sizes: { - \tl_if_empty:NT \g_ptxcd_fontsize_tl { - \tl_gset:Nn \g_ptxcd_fontsize_tl {10pt} - } - \dim_gset:Nn \g_ptxcd_margin_dim {12mm} + \tl_if_empty:NT \g_ptxcd_fontsize_tl { +\tl_gset:Nn \g_ptxcd_fontsize_tl + {10pt} + } + \dim_gset:Nn \g_ptxcd_margin_dim + {12mm} } \endinput %% diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tuda-pgfplots.sty b/Master/texmf-dist/tex/latex/tuda-ci/tuda-pgfplots.sty index b0a32c7502f..37f64c0a2a4 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tuda-pgfplots.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/tuda-pgfplots.sty @@ -1,9 +1,9 @@ -%% This is file `tuda-pgfplots.sty' version 3.41 (2024-07-02), +%% This is file `tuda-pgfplots.sty' version 4.00 (2025-01-26), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- %% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> %% %% ============================================================================ %% This work may be distributed and/or modified under the @@ -16,7 +16,7 @@ %% %% This work has the LPPL maintenance status `maintained'. %% -%% The Current Maintainers of this work are +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> %% %% The development respository can be found at @@ -25,134 +25,132 @@ %% %% ============================================================================ %% -\def\fileversion{3.41} -\def\filedate{2024-07-02} % Special thanks to: Sebastian Schöps Institut Theorie Elektromagnetischer Felder (TEMF), TU Darmstadt % The original version of this file has been inspired by the colorscheme in the Metropolis beamer theme by Matthias Vogelgesang https://github.com/matze/mtheme -\ProvidesPackage{tuda-pgfplots}[\filedate\space\fileversion\space tuda-ci pgfplots color schemes] +\ProvidesPackage{tuda-pgfplots}[2025-01-26 v4.00 tuda-ci pgfplots color schemes] \RequirePackage{pgfplots} \RequirePackage{tudacolors} \pgfplotscreateplotcyclelist{tudabarplot cycle}{% - draw=TUDa-1a, fill=TUDa-1b \\ - draw=TUDa-9b, fill=TUDa-9c \\ - draw=TUDa-3b, fill=TUDa-3c \\ - draw=TUDa-10b, fill=TUDa-10c\\ - draw=TUDa-5c, fill=TUDa-5d \\ - draw=TUDa-6d, fill=TUDa-6a \\ + draw=TUDa-1a, fill=TUDa-1b \\ + draw=TUDa-9b, fill=TUDa-9c \\ + draw=TUDa-3b, fill=TUDa-3c \\ + draw=TUDa-10b, fill=TUDa-10c\\ + draw=TUDa-5c, fill=TUDa-5d \\ + draw=TUDa-6d, fill=TUDa-6a \\ } \pgfplotscreateplotcyclelist{tudalineplot cycle}{% - TUDa-1b, mark=*, \\ - TUDa-9c, mark=diamond*, \\ - TUDa-3c, mark=square*, \\ - TUDa-10c, mark=triangle* \\ - TUDa-5d, mark=*, \\ - TUDa-6a, mark=diamond*, \\ + TUDa-1b, mark=*, \\ + TUDa-9c, mark=diamond*, \\ + TUDa-3c, mark=square*, \\ + TUDa-10c, mark=triangle* \\ + TUDa-5d, mark=*, \\ + TUDa-6a, mark=diamond*, \\ } \pgfplotsset{ - tuda3dplot/.style={ - axis line style = thin, - axis x line*=box, - axis y line*=box, - tudabaseplot, - xmajorgrids=true, - ymajorgrids=true, - major grid style={dotted}, - }, - tudalineplot/.style={ - tudabaseplot, - grid, - legend style={cells={anchor=west}}, - thick, - mark size=1.5pt, - cycle list name=tudalineplot cycle, - }, - tudabarplot base/.style={ - tudabaseplot, - bar width=6pt, - cycle list name=tudabarplot cycle, - }, - tudabarplot/.style={ - ybar, - tudabarplot base, - xmajorgrids=false, - ymajorgrids=true, - }, - horizontal tudabarplot/.style={ - xbar stacked, - tudabarplot base, - xmajorgrids=true, - ymajorgrids=false, - }, - colormap={tudaa}{rgb255=(93,133,195) - rgb255=(0,156,218) - rgb255=(80,182,149) - rgb255=(175,204,80) - rgb255=(221,223,72) - rgb255=(255,224,92) - rgb255=(248,186,60) - rgb255=(238,122,52) - rgb255=(233,80,62) - rgb255=(201,48,142) - rgb255=(128,69,151) - }, - colormap={tudab}{% - rgb255=(0,90,169) - rgb255=(0,131,204) - rgb255=(0,157,129) - rgb255=(153,192,0) - rgb255=(201,212,0) - rgb255=(253,202,0) - rgb255=(245,163,0) - rgb255=(236,101,0) - rgb255=(230,0,26) - rgb255=(166,0,132) - rgb255=(114,16,133) - rgb255=(0,78,138) - }, - colormap={tudac}{ - rgb255=(0,78,138) - rgb255=(0,104,157) - rgb255=(0,136,119) - rgb255=(127,171,22) - rgb255=(177,189,0) - rgb255=(215,172,0) - rgb255=(210,135,0) - rgb255=(204,76,3) - rgb255=(185,15,34) - rgb255=(149,17,10) - rgb255=(97,28,115) - }, - colormap={tudad}{ - rgb255=(36,53,114) - rgb255=(0,78,115) - rgb255=(0,113,94) - rgb255=(106,139,55) - rgb255=(153,166,4) - rgb255=(174,142,0) - rgb255=(190,111,0) - rgb255=(169,73,19) - rgb255=(156,28,38) - rgb255=(115,32,84) - rgb255=(76,34,106) - }, - tudabaseplot/.style={ - colormap name=viridis, - legend style={fill=white,cells={anchor=west}}, - ticklabel style={font=\footnotesize}, - legend style={font=\footnotesize}, - major grid style={dotted}, - axis x line=bottom,axis y line=left, - }, - colormap={tuda}{ - rgb255=(115,32,84) - rgb255=(0,157,129) - rgb255=(255,224,92) - } + tuda3dplot/.style={ + axis line style = thin, + axis x line*=box, + axis y line*=box, + tudabaseplot, + xmajorgrids=true, + ymajorgrids=true, + major grid style={dotted}, + }, + tudalineplot/.style={ + tudabaseplot, + grid, + legend style={cells={anchor=west}}, + thick, + mark size=1.5pt, + cycle list name=tudalineplot cycle, + }, + tudabarplot base/.style={ + tudabaseplot, + bar width=6pt, + cycle list name=tudabarplot cycle, + }, + tudabarplot/.style={ + ybar, + tudabarplot base, + xmajorgrids=false, + ymajorgrids=true, + }, + horizontal tudabarplot/.style={ + xbar stacked, + tudabarplot base, + xmajorgrids=true, + ymajorgrids=false, + }, + colormap={tudaa}{rgb255=(93,133,195) + rgb255=(0,156,218) + rgb255=(80,182,149) + rgb255=(175,204,80) + rgb255=(221,223,72) + rgb255=(255,224,92) + rgb255=(248,186,60) + rgb255=(238,122,52) + rgb255=(233,80,62) + rgb255=(201,48,142) + rgb255=(128,69,151) + }, + colormap={tudab}{% + rgb255=(0,90,169) + rgb255=(0,131,204) + rgb255=(0,157,129) + rgb255=(153,192,0) + rgb255=(201,212,0) + rgb255=(253,202,0) + rgb255=(245,163,0) + rgb255=(236,101,0) + rgb255=(230,0,26) + rgb255=(166,0,132) + rgb255=(114,16,133) + rgb255=(0,78,138) + }, + colormap={tudac}{ + rgb255=(0,78,138) + rgb255=(0,104,157) + rgb255=(0,136,119) + rgb255=(127,171,22) + rgb255=(177,189,0) + rgb255=(215,172,0) + rgb255=(210,135,0) + rgb255=(204,76,3) + rgb255=(185,15,34) + rgb255=(149,17,10) + rgb255=(97,28,115) + }, + colormap={tudad}{ + rgb255=(36,53,114) + rgb255=(0,78,115) + rgb255=(0,113,94) + rgb255=(106,139,55) + rgb255=(153,166,4) + rgb255=(174,142,0) + rgb255=(190,111,0) + rgb255=(169,73,19) + rgb255=(156,28,38) + rgb255=(115,32,84) + rgb255=(76,34,106) + }, + tudabaseplot/.style={ + colormap name=viridis, + legend style={fill=white,cells={anchor=west}}, + ticklabel style={font=\footnotesize}, + legend style={font=\footnotesize}, + major grid style={dotted}, + axis x line=bottom,axis y line=left, + }, + colormap={tuda}{ + rgb255=(115,32,84) + rgb255=(0,157,129) + rgb255=(255,224,92) + } } \endinput diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls index df4840467e0..c857d9a5d81 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudabeamer.cls @@ -1,10 +1,20 @@ -%% This is file `tudabeamer.cls' version 3.41 (2024-07-02), +%% +%% This is file `tudabeamer.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudabeamer.dtx (with options: `class,initialize,options') +%% tuda-ci.dtx (with options: `options,tudabeamer,beamer') +%% tudabeamer.dtx (with options: `class,body') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,246 +23,174 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\NeedsTeXFormat{LaTeX2e} +%% +\NeedsTeXFormat{LaTeX2e}[2022/06/01] \ProvidesClass{tudabeamer} - [\filedate\space\fileversion\space] - + [2025-01-26 v4.00 Beamer wrapper class for TUDa-CI – Corporate Design Templates for TU Darmstadt] \PassOptionsToClass{10pt}{beamer} - \ExplSyntaxOn \str_new:N \g_ptxcd_department_str -\tl_new:N \g__ptxcd_design_tl +\str_const:Nn \c__ptxcd_base_str {beamer} + \tl_new:N \g__ptxcd_design_tl + \cs_new:Nn \__ptxcd_beamer_declare_pass_options:nn { + \keys_define:nn {ptxcd/beamer} { + #1 .code:n = \clist_map_inline:nn {#2}{ + \PassOptionsToPackage{#1=##1}{beamer####1themeTUDa2008} + \PassOptionsToPackage{#1=##1}{beamer####1themeTUDa} + }, + #1 .default:n = true, + } + } + + \__ptxcd_beamer_declare_pass_options:nn {centerframetitle} {outer} + \__ptxcd_beamer_declare_pass_options:nn {headsepline} {outer} + \__ptxcd_beamer_declare_pass_options:nn {logo} {outer} + \__ptxcd_beamer_declare_pass_options:nn {colortitle} {color} + \__ptxcd_beamer_declare_pass_options:nn {colorbacktitle} {color} + \__ptxcd_beamer_declare_pass_options:nn {colorback} {color} + \__ptxcd_beamer_declare_pass_options:nn {colorframetitle} {outer, color} + \keys_define:nn {ptxcd/beamer} { - accentcolor .code:n = \PassOptionsToPackage{accentcolor=#1}{tudacolors}, - colorframetitle .code:n = \exp_args:Nx \PassOptionsToPackage{\l_keys_key_tl=#1}{beamercolorthemeTUDa} - \exp_args:Nx \PassOptionsToPackage{\l_keys_key_tl=#1}{beamerouterthemeTUDa}, - colorframetitle .default:n = true, - logo .code:n = \PassOptionsToPackage{logo=#1}{beamerouterthemeTUDa}, - pdfa .bool_gset:N = \g_ptxcd_pdfa_bool, - pdfa .initial:n = false, - logofile .code:n = \PassOptionsToPackage{logofile=#1}{beamerouterthemeTUDa}, - serif .code:n = \PassOptionsToPackage{serif=#1}{beamerfontthemeTUDa}, - serif .default:n = true, - sans-serif .code:n = \PassOptionsToPackage{sans-serif=#1}{beamerfontthemeTUDa}, - sans-serif .default:n = true, - department .choice:, - department / default .code:n = \str_gset:Nn \g_ptxcd_department_str {default}, - department / mecheng .code:n = { - \keys_set:nn {ptxcd/beamer} { - colorframetitle=false, - centerframetitle, - headsepline=false - } - \str_gset:Nn \g_ptxcd_department_str {mecheng} - }, - department .initial:n = default, - department / unknown .code:n = { - \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} - }, - departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, - departmentconfigprefix .initial:n = , - mecheng .meta:n = {department=mecheng}, - departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, - departmentlogofile .initial:n =, - color .code:n = { - \tl_if_in:nnTF {#1} {=} { - \msg_new:nnn {tudabeamer} {color-option-warning} { - The~color~option~should~no~longer~be~used~to~pass~options~to~the~tudacolors~package.\\ - Please~use~tudacolors={##1}~instead~of~color={##1}.\\ - See~the~tudabeamer~documentation~for~more~information. - } - \msg_warning:nnn {tudabeamer} {color-option-warning} {#1} - \PassOptionsToPackage{#1}{tudacolors} - } { - \PassOptionsToPackage{color=#1}{tudacolors} - } - }, - tudacolors .code:n = \PassOptionsToPackage{#1}{tudacolors}, - design .choice:, - design / 2023 .code:n = { - \tl_gset:Nn \g__ptxcd_design_tl {2023} - \PassOptionsToClass{aspectratio=169}{beamer} - }, - design / 2008 .code:n = { - \tl_gset:Nn \g__ptxcd_design_tl {2008} - }, - design / default .code:n = { - \tl_gset:Nn \g__ptxcd_design_tl {default} - }, - design .initial:n = default, - design2023 .meta:n = {design=2023}, - design2008 .meta:n = {design=2008}, - design .usage:n = load, + accentcolor .code:n = \PassOptionsToPackage{accentcolor=#1}{tudacolors}, + color .code:n = { + \tl_if_in:nnTF {#1} {=} { + \msg_new:nnn {tudabeamer} {color-option-warning} { + The~color~option~should~no~longer~be~used~to~pass~options~to~the~tudacolors~package.\\ + Please~use~tudacolors={##1}~instead~of~color={##1}.\\ + See~the~tudabeamer~documentation~for~more~information. + } + \msg_warning:nnn {tudabeamer} {color-option-warning} {#1} + \PassOptionsToPackage{#1}{tudacolors} + } { + \PassOptionsToPackage{color=#1}{tudacolors} + } + }, + tudacolors .code:n = \PassOptionsToPackage{#1}{tudacolors}, + design .choice:, + design / 2023 .code:n = { + \tl_gset:Nn \g__ptxcd_design_tl {2023} + \PassOptionsToClass{aspectratio=169}{beamer} + }, + design / 2008 .code:n = { + \tl_gset:Nn \g__ptxcd_design_tl {2008} + }, + design / default .code:n = { + \tl_gset:Nn \g__ptxcd_design_tl {default} + }, + design .initial:n = default, + design2023 .meta:n = {design=2023}, + design2008 .meta:n = {design=2008}, + design .usage:n = load, + accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool, + accept-missing-logos .initial:n = false, + accept-missing-logos .usage:n = load, + accept-missing-logos .default:n = true, + 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/beamer} { + design=2008, + colorframetitle=false, + centerframetitle=true, + headsepline=false, + } + }, + + department .initial:n = default, + department / unknown .code:n = { + \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} + }, + departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, + departmentconfigprefix .initial:n = tuda, + departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, + departmentlogofile .initial:n =, + mecheng .meta:n = {department=mecheng}, + pdfa .code:n = { + \msg_error:nn {tuda\c__ptxcd_base_str} {pdfa-option-removed} + }, + pdfx .bool_gset:N = \g_ptxcd_pdfx_bool, + pdfx .initial:n = true, +%% color options +%% color options +} +\msg_new:nnn {tuda\c__ptxcd_base_str} {pdfa-option-removed} { + The~option~"pdfa"~was~removed~for~this~document~class.\\ + In~case~you~need~it,~please~use~the~mechanism~provided~by~the~pdfmanagement~instead.\\ + See~TUDa-CI~documentation~for~details. +} +\cs_if_exist:NT \TUDaDefaultBuildOptions { + \exp_args:Ne \keys_set:ne { ptxcd / + \c__ptxcd_base_str + } { + \TUDaDefaultBuildOptions + } } \ExplSyntaxOff - -\PassOptionsToPackage{pdfpagelabels=false,plainpages=false}{hyperref} +\PassOptionsToPackage{ + hidelinks, + unicode, + pdfpagelabels=false, + plainpages=false, + pdfcreator=LaTeX using the TUDa-CI Bundle, +}{hyperref} \PassOptionsToClass{t}{beamer} - \DeclareOption*{% - \PassOptionsToClass{\CurrentOption}{beamer} + \PassOptionsToClass{\CurrentOption}{beamer} } - \ProcessKeyOptions[ptxcd/beamer] \ProcessOptions* - \ExplSyntaxOn \tl_if_eq:NnT \g__ptxcd_design_tl {default} { - \msg_new:nnn {tudabeamer} {default-design-changed} { - With~version~4.0~tudabeamer~switched~to~the~new~corporate~design~layout.\\ - In~case~this~is~not~intended,~it's~possible~switch~back~using~`design=2008`~option.\\ - `design=2023`~will~disable~this~warning. - } - \msg_warning:nn {tudabeamer} {default-design-changed} - \keys_set:nn {ptxcd/beamer} {design=2023} -} - -\bool_if:NT \g_ptxcd_pdfa_bool {\PassOptionsToPackage{RGB}{xcolor}} - -\bool_if:NT \g_ptxcd_pdfa_bool { - \RequirePackage{scrlfile} - \PreventPackageFromLoading{hyperref} - \def\hypersetup#1{} + \msg_new:nnn {tudabeamer} {default-design-changed} { + With~version~4.0~tudabeamer~switched~to~the~new~corporate~design~layout.\\ + In~case~this~is~not~intended,~it's~possible~switch~back~using~`design=2008`~option.\\ + `design=2023`~will~disable~this~warning. + } + \msg_warning:nn {tudabeamer} {default-design-changed} + \keys_set:nn {ptxcd/beamer} {design=2023} } \ExplSyntaxOff - -% Load the latex-beamer class \LoadClass{beamer} - \ExplSyntaxOn -\bool_if:NT \g_ptxcd_pdfa_bool { - \UnPreventPackageFromLoading{hyperref} - \PassOptionsToPackage{a-2b}{pdfx} -% Workaround posted by David Carlisle on tex.stackexchange -% Thanks to Ulrike Fischer for mentioning it in #472 - \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel - \chardef\currentgrouplevel0 - \ExplSyntaxOff - \RequirePackage{pdfx} - \ExplSyntaxOn - \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx: - \cs_undefine:N \__ptxcd_grouplevel_before_pdfx: -% end of the workaround -} -\hypersetup{hidelinks, unicode} - - -%\department command \def\department{\@dblarg\ptxcd_beamer_department} - \long\def\ptxcd_beamer_department[#1]#2{% - \def\beamer@temp{#2}% - \ifx\beamer@temp\@empty - \def\insertdepartment{} - \else - \def\insertdepartment{\def\inst{\beamer@instinst}\def\and{\qquad}#2}% - \fi - \def\beamer@shortdepartment{#1}} + \def\beamer@temp{#2}% + \ifx\beamer@temp\@empty + \def\insertdepartment{} + \else + \def\insertdepartment{\def\inst{\beamer@instinst}\def\and{\qquad}#2}% + \fi + \def\beamer@shortdepartment{#1}} \department{} - \newcommand\insertshortdepartment[1][]{% - {% - \let\thanks=\@gobble% - \beamer@setupshort{#1}% - \beamer@insertshort{\beamer@shortdepartment}% -}} -%end of \department command -\if_bool:N \g_ptxcd_pdfa_bool -\iow_new:N \ptxcd_xmpdata_stream -\iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata} -\tl_new:N \g_ptxcd_xmp_title -\tl_new:N \g_ptxcd_xmp_author - -\cs_new:Nn \ptxcd_pass_TitleData: { - \begingroup - \def\newline{} - \def\\{} - \let\thanks\use_none:n - \cs_set:Npn \and {\exp_not:n {\exp_not:N \sep}} - \bool_if:NTF \g_ptxcd_pass_TitleData_bool { - \tl_gset:Nx \g_ptxcd_xmp_title {\insertshorttitle} - \tl_gset:Nx \g_ptxcd_xmp_author {\insertshortauthor} - \iow_now:Nx \ptxcd_xmpdata_stream - { - \exp_not:N \Title{\tl_to_str:V \g_ptxcd_xmp_title} - ^^J - \exp_not:N \Author{\tl_to_str:V \g_ptxcd_xmp_author} - ^^J - \exp_not:N \Creator{LaTeX~ using~ the~ TUDa-CI~ Bundle} - } - }{ - \begingroup - \use:c {pdfx@localcommands} - \prop_if_in:NnF \g_ptxcd_MetaData_prop {Creator} {\prop_gput:Nnn \g_ptxcd_MetaData_prop {Creator} {LaTeX~ using~ the~ TUDa-CI~ Bundle}} - \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn - \endgroup - } - \endgroup -} -\cs_new:Nn \ptxcd_write_xmp_line:nn { - %Fallback test for older kernels - \cs_if_exist:NTF \str_uppercase:f { - \tl_set:Nx \l_tmpa_tl { - \str_uppercase:f {\tl_head:n {#1}} - \str_lowercase:f { \tl_tail:n {#1}} - } - } { - %may be removed in some time - \tl_set:Nx \l_tmpa_tl {\tl_mixed_case:n {#1}} - } - \cs_if_exist:cTF {\l_tmpa_tl}{ - \iow_now:Nx \ptxcd_xmpdata_stream { - \c_backslash_str \l_tmpa_tl {\exp_not:n {#2}} - } - }{ - \msg_error:nnn{tudapub} {unknown-metadata} {#1} - } + {% + \let\thanks=\@gobble% + \beamer@setupshort{#1}% + \beamer@insertshort{\beamer@shortdepartment}% + }% } - -\bool_new:N \g_ptxcd_pass_TitleData_bool -\bool_gset_true:N \g_ptxcd_pass_TitleData_bool -\prop_new:N \g_ptxcd_MetaData_prop - -\newcommand*{\Metadata}[1]{ - \bool_gset_false:N \g_ptxcd_pass_TitleData_bool - \prop_gset_from_keyval:Nn \g_ptxcd_MetaData_prop {#1} -} - -\msg_new:nnnn{tudapub} {unknown-metadata} { - You~ used~ the~ #1~ metadata~ entry.\\ - I~ don't~ know~ how~ to~ handle~ that.\\ - It~ will~ be~ ignored. -} {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.} -\else: -\msg_new:nnn{tudapub} {no-pdfa}{The~ tudapub~ class~ won't~ create~ PDF/A-mode.} -\msg_info:nn{tudapub} {no-pdfa} -\fi: - \str_if_empty:NF \g_ptxcd_department_str {} - -% Load the TUDa theme \usetheme{TUDa\g__ptxcd_design_tl}% -\@input{\jobname.len}% -\@starttoc{len}% \let\accentfont\normalfont% - -\file_if_exist:nT {\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str.sty} - {\RequirePackage{\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str}} - +\file_if_exist:nTF {\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str.sty} + {\RequirePackage{\g__ptxcd_config_prefix_tl beamerthemeTUDa-\g_ptxcd_department_str}} + { + \file_if_exist:nT {beamerthemeTUDa-\g_ptxcd_department_str.sty} + {\RequirePackage{beamerthemeTUDa-\g_ptxcd_department_str}} + } \ExplSyntaxOff - \endinput +%% +%% End of file `tudabeamer.cls'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def b/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def index 44f09edb861..8a9ebad2def 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.def @@ -1,9 +1,11 @@ -%% This is file `tudacolors.def' version 3.41 (2024-07-02), +%% \iffalse meta-comment^^A necessary for use with \input in documentation +%% +%% This is file `tudacolors.def' version 4.00 (2025-01-26), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- %% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> %% %% ============================================================================ %% This work may be distributed and/or modified under the @@ -16,7 +18,7 @@ %% %% This work has the LPPL maintenance status `maintained'. %% -%% The Current Maintainers of this work are +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> %% %% The development respository can be found at @@ -25,10 +27,9 @@ %% %% ============================================================================ %% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\ProvidesFile{tudacolors.def} -[\filedate\space\fileversion\space Color definitions for tuda-ci] +%\fi + +\ProvidesFile{tudacolors.def}[2025-01-26 v4.00 Color definitions for tuda-ci] \definecolor{TUDa-0d}{cmyk/RGB/HTML}{0,0,0,.8/83,83,83/535353} \definecolor{TUDa-0c}{cmyk/RGB/HTML}{0,0,0,.6/137,137,137/898989} diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty b/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty index 448483daaf7..be2a0ed9b7c 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudacolors.sty @@ -1,10 +1,18 @@ -%% This is file `tudacolors.sty' version 3.41 (2024-07-02), +%% +%% This is file `tudacolors.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudacolors.dtx (with options: `package') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,123 +21,125 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\NeedsTeXFormat{LaTeX2e} - -\ProvidesExplPackage{tudacolors}{\filedate}{\fileversion}{Color definition for TU Darmstadt's tuda-ci bundle} - +%% +\NeedsTeXFormat{LaTeX2e}[2020-10-01] +\ProvidesExplPackage{tudacolors}{2025-01-26}{4.00}{Color definition for TU Darmstadt's tuda-ci bundle} \str_if_exist:NF \g_ptxcd_department_str { - \str_new:N \g_ptxcd_department_str - \str_gset:Nn \g_ptxcd_department_str {default} +\str_new:N \g_ptxcd_department_str +\str_gset:Nn \g_ptxcd_department_str {default} } - \keys_define:nn {ptxcd/colors} { - accent .tl_gset:N = \g_ptxcd_color_accent_tl, - accent .initial:n = 0b, - textaccent .tl_gset:N = \g_ptxcd_color_textaccent_tl, - textaccent .initial:n = \g_ptxcd_color_accent_tl, - identbar .tl_gset:N = \g_ptxcd_color_identbar_tl, - identbar .initial:n = \g_ptxcd_color_accent_tl, - accentcolor .meta:n = {accent =#1}, - textaccentcolor .meta:n = {textaccent = #1}, - identbarcolor .meta:n = {identbar = #1}, - color .code:n = \keys_set:nn {ptxcd/colors} {accent=#1, textaccent=#1, identbar=#1}\PassOptionsToPackage{color=}{siunitx}, - text .choice:, - text/preferblack .code:n = \bool_gset_false:N \g_ptxcd_color_whitetext_bool, - text/preferwhite .code:n = \bool_gset_true:N \g_ptxcd_color_whitetext_bool, - text .initial:n = {preferwhite}, - text/black .meta:n = {text=preferblack}, - text/white .meta:n = {text=preferwhite}, - cmyk .code:n = \PassOptionsToPackage{cmyk}{xcolor}, - RGB .code:n = \PassOptionsToPackage{RGB}{xcolor}, - 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/colors}{accent=TUDa-2d,identbar=TUDa-6b}, - department / unknown .code:n = { - \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} - }, - departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, - mecheng .meta:n = {department=mecheng}, +accent .tl_gset:N = \g_ptxcd_color_accent_tl, +accent .initial:n = 0b, +accentcolor .meta:n = {accent =#1}, +textaccent .tl_gset:N = \g_ptxcd_color_textaccent_tl, +textaccent .initial:n = \g_ptxcd_color_accent_tl, +textaccentcolor .meta:n = {textaccent = #1}, +identbar .tl_gset:N = \g_ptxcd_color_identbar_tl, +identbar .initial:n = \g_ptxcd_color_accent_tl, +identbarcolor .meta:n = {identbar = #1}, +color .code:n = { + \keys_set:nn {ptxcd/colors} { + accent=#1, + textaccent=#1, + identbar=#1 + } + \PassOptionsToPackage{color=}{siunitx} + }, +text .choice:, +text/preferblack .code:n = \bool_gset_false:N \g_ptxcd_color_whitetext_bool, +text/preferwhite .code:n = \bool_gset_true:N \g_ptxcd_color_whitetext_bool, +text .initial:n = {preferwhite}, +text/black .meta:n = {text=preferblack}, +text/white .meta:n = {text=preferwhite}, +cmyk .code:n = \PassOptionsToPackage{cmyk}{xcolor}, +RGB .code:n = \PassOptionsToPackage{RGB}{xcolor}, +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/colors}{ + accent=TUDa-2d, + identbar=TUDa-6b + } + }, +department / unknown .code:n = { +\str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} +}, +department .initial:V = \g_ptxcd_department_str, +departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, +mecheng .meta:n = {department=mecheng}, } - \ProcessKeyOptions[ptxcd/colors] - \RequirePackage{xcolor} - \input{tudacolors.def} - \str_if_eq:VnT \g_ptxcd_department_str {mecheng} { - \colorlet{TUDa-Primary1}{TUDa-6b} - \colorlet{TUDa-Primary2}{TUDa-2d} - \colorlet{TUDa-Secondary1}{TUDa-9a} - \colorlet{TUDa-Secondary2}{TUDa-8a} - \colorlet{TUDa-Secondary3}{TUDa-6a} - \colorlet{TUDa-Secondary4}{TUDa-3a} - \colorlet{TUDa-Secondary5}{TUDa-4a} - \colorlet{TUDa-Secondary6}{TUDa-5a} - \colorlet{TUDa-Arrow}{TUDa-Primary2} +\colorlet{TUDa-Primary1}{TUDa-6b} +\colorlet{TUDa-Primary2}{TUDa-2d} +\colorlet{TUDa-Secondary1}{TUDa-9a} +\colorlet{TUDa-Secondary2}{TUDa-8a} +\colorlet{TUDa-Secondary3}{TUDa-6a} +\colorlet{TUDa-Secondary4}{TUDa-3a} +\colorlet{TUDa-Secondary5}{TUDa-4a} +\colorlet{TUDa-Secondary6}{TUDa-5a} +\colorlet{TUDa-Arrow}{TUDa-Primary2} } - - \clist_const:Nn \c_ptxcd_color_forbid_textaccent_clist {TUDa-0a,TUDa-5a,TUDa-6a,TUDa-6b,TUDa-7a} \clist_const:Nn \c_ptxcd_color_allow_blacktext_clist {TUDa-0a,TUDa-0b,TUDa-0c,TUDa-1a,TUDa-2a,TUDa-3a,TUDa-4a,TUDa-4b,TUDa-4c,TUDa-5a,TUDa-5b,TUDa-5c,TUDa-6a,TUDa-6b,TUDa-6c,TUDa-7a,TUDa-7b,TUDa-7c,TUDa-8a,TUDa-8b,TUDa-8c,TUDa-9a,TUDa-9b,TUDa-10a} \clist_const:Nn \c_ptxcd_color_allow_whitetext_clist {TUDa-0b,TUDa-0c,TUDa-0d,black,TUDa-1a,TUDa-1b,TUDa-1c,TUDa-1d,TUDa-2a,TUDa-2b,TUDa-2c,TUDa-2d,TUDa-3a,TUDa-3b,TUDa-3c,TUDa-3d,TUDa-4b,TUDa-4c,TUDa-4d,TUDa-5b,TUDa-5c,TUDa-5d,TUDa-6c,TUDa-6d,TUDa-7b,TUDa-7c,TUDa-7d,TUDa-8a,TUDa-8b,TUDa-8c,TUDa-8d,TUDa-9a,TUDa-9b,TUDa-9c,TUDa-9d,TUDa-10a,TUDa-10b,TUDa-10c,TUDa-10d,TUDa-11a,TUDa-11b,TUDa-11c,TUDa-11d} - - -%messages \msg_new:nnnn{tudacolors} {undefined-color} {The~ color~ #1~ you~ selected~ is~ not~ defined.} {See~ the~ tuda-ci~ manual~ for~ a~ list~ of~ available~ colors.} -\msg_new:nnnn{tudacolors} {unselectable-color} {The~ color~ you~ selected~ (#1)~ must~ not~ be~ choosen~ for~ #2.} {See~ the~ Corporate~ Design~ Guidelines~ for~ further~ information.} - +\msg_new:nnnn{tudacolors} {unselectable-color} {The~ color~ you~ selected~ (#1)~ must~ not~ be~ choosen~ for~ #2.} {See~ the~ Corporate~ Design~ Guideline~ for~ further~ information.} \hook_new:n {ptxcd/init-colors} \hook_gput_code:nnn {ptxcd/init-colors} {tudacolors} { - \clist_map_inline:nn {accent, textaccent, identbar} { - \cs_if_exist:cF {\string\color@\tl_use:c {g_ptxcd_color_#1_tl}} { - \cs_if_exist:cT {\string\color@TUDa-\tl_use:c {g_ptxcd_color_#1_tl}} { - \tl_gset:cx {g_ptxcd_color_#1_tl} {TUDa-\tl_use:c {g_ptxcd_color_#1_tl}} - }} - } - \exp_args:Nnx \colorlet{accentcolor}{\g_ptxcd_color_accent_tl} - \bool_if:NTF \g_ptxcd_color_whitetext_bool { - \clist_if_in:NVTF \c_ptxcd_color_allow_whitetext_clist \g_ptxcd_color_accent_tl { - \colorlet{textonaccentcolor}{white} - } { - \colorlet{textonaccentcolor}{black} - \tl_if_in:NnT \g_ptxcd_color_accent_tl {TUDa} {\msg_warning:nnxx{tudacolors} {unselectable-color} {white} {textonaccentcolor}} - } - } { - \clist_if_in:NVTF \c_ptxcd_color_allow_blacktext_clist \g_ptxcd_color_accent_tl { - \colorlet{textonaccentcolor}{black} - } { - \colorlet{textonaccentcolor}{white} - \tl_if_in:NnT \g_ptxcd_color_accent_tl {TUDa} {msg_warning:nnxx{tudacolors} {unselectable-color} {black} {textonaccentcolor}} - } - } - \colorlet{identbarcolor}{\g_ptxcd_color_identbar_tl} - \exp_args:NNx \clist_if_in:NnTF \c_ptxcd_color_forbid_textaccent_clist {\g_ptxcd_color_textaccent_tl} { - \msg_warning:nnxx{tudacolors} {unselectable-color} {\g_ptxcd_color_textaccent_tl} {textaccentcolor} - \colorlet{textaccentcolor}{black} - } { - \colorlet{textaccentcolor}{\g_ptxcd_color_textaccent_tl} - } + \clist_map_inline:nn {accent, textaccent, identbar} { + \cs_if_exist:cF {\string\color@\tl_use:c {g_ptxcd_color_#1_tl}} { + \cs_if_exist:cT {\string\color@TUDa-\tl_use:c {g_ptxcd_color_#1_tl}} { + \tl_gset:cx {g_ptxcd_color_#1_tl} {TUDa-\tl_use:c {g_ptxcd_color_#1_tl}} + } + } + } + \exp_args:Nnx \colorlet{accentcolor}{\g_ptxcd_color_accent_tl} + \bool_if:NTF \g_ptxcd_color_whitetext_bool { + \clist_if_in:NVTF \c_ptxcd_color_allow_whitetext_clist \g_ptxcd_color_accent_tl { + \colorlet{textonaccentcolor}{white} + } { + \colorlet{textonaccentcolor}{black} + \tl_if_in:NnT \g_ptxcd_color_accent_tl {TUDa} { + \msg_warning:nnxx{tudacolors} {unselectable-color} {white} {textonaccentcolor} + } + } + } { + \clist_if_in:NVTF \c_ptxcd_color_allow_blacktext_clist \g_ptxcd_color_accent_tl { + \colorlet{textonaccentcolor}{black} + } { + \colorlet{textonaccentcolor}{white} + \tl_if_in:NnT \g_ptxcd_color_accent_tl {TUDa} { + \msg_warning:nnxx{tudacolors} {unselectable-color} {black} {textonaccentcolor} + } + } + } + \colorlet{identbarcolor}{\g_ptxcd_color_identbar_tl} + \exp_args:NNx \clist_if_in:NnTF \c_ptxcd_color_forbid_textaccent_clist {\g_ptxcd_color_textaccent_tl} { + \msg_warning:nnxx{tudacolors} {unselectable-color} {\g_ptxcd_color_textaccent_tl} {textaccentcolor} + \colorlet{textaccentcolor}{black} + } { + \colorlet{textaccentcolor}{\g_ptxcd_color_textaccent_tl} + } } - \file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str-colors.def} - \hook_use:n {ptxcd/init-colors} - \colorlet{InfoBox}{white} - \endinput +%% +%% End of file `tudacolors.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls index 366b9668261..791bfc4d3b6 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaexercise.cls @@ -1,10 +1,22 @@ -%% This is file `tudaexercise.cls' version 3.41 (2024-07-02), +%% +%% This is file `tudaexercise.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudaexercise.dtx (with options: `class,initialization') +%% tuda-ci.dtx (with options: `options,exercise,print') +%% tudaexercise.dtx (with options: `class,center') +%% tuda-ci.dtx (with options: `margin,geometry,exercise') +%% tudaexercise.dtx (with options: `class,body') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,25 +25,20 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\NeedsTeXFormat{LaTeX2e} - -\ProvidesExplClass{tudaexercise} - {\filedate}{\fileversion}{Exercise sheets and exams using TU Darmstadt's Corporate Desing (TUDa-CI)} - +%% +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\ProvidesExplClass{tudaexercise}{2025-01-26}{4.00}{Exercise sheets and exams using TU Darmstadt's Corporate Desing (TUDa-CI)} \msg_new:nnnn {tudaexercise} {outdated-koma-script} { Your~KOMA-Script~is~outdated.\\ To~use~the~feature~'#1'~you~will~be~required~to~update. @@ -39,558 +46,507 @@ Please~do~not~use~this~feature~or~update~your~TeX~distribution.\\ The~feature~requires~KOMA-Script~v#2~or~newer. } - \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__ptxcd_points_collector_prop \prop_new:N \g__ptxcd_subtask_points_collector_prop +\prop_new:N \g__ptxcd_property_collector_prop \bool_new:N \l__ptxcd_points_auto_bool \bool_new:N \g__ptxcd_points_bool \prop_new:N \g__ptxcd_loaded_points_prop \fp_new:N \g__ptxcd_points_total_fp - \int_new:N \g_ptxcd_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 \l__ptxcd_solution_bool \bool_new:N \g_ptxcd_smalltitle_bool \str_new:N \g_ptxcd_department_str - \tl_new:N \g_ptxcd_tmp_tl \int_new:N \g_ptxcd_tmp_int \tl_new:N \l_ptxcd_tmp_tl - \clist_map_inline:nn {section,subsection,subsubsection,task,subtask,@solution} { - \bool_new:c {g__ptxcd_ruled_#1_bool} - \bool_gset_true:c {g__ptxcd_ruled_#1_bool} + \bool_new:c {g__ptxcd_ruled_#1_bool} + \bool_gset_true:c {g__ptxcd_ruled_#1_bool} } - \bool_new:N \g__ptxcd_runin_subtask_bool - -\RequirePackage{environ} - \newenvironment{solution}{}{} \newenvironment{solution*}{}{} - -\cs_new:Nn \ptxcd_setup_solution: { - \bool_if:NTF \l_ptxcd_ex_solution_bool { - \def\solution{\ptxcd_ex_solutionheader:} - \def\endsolution{} - \expandafter\def\csname solution*\endcsname{\ignorespaces} - \expandafter\let\csname endsolution*\endcsname\endsolution - }{ - \RenewEnviron{solution}{ - \if_false: - \BODY - \fi: - } - \RenewEnviron{solution*}{ - \if_false: - \BODY - \fi: - } - } +\cs_new:Nn \__ptxcd_setup_solution: { + \bool_if:NTF \l__ptxcd_solution_bool { + \def\solution{\__ptxcd_solutionheader:} + \def\endsolution{} + \expandafter\def\csname solution*\endcsname{\ignorespaces} + \expandafter\let\csname endsolution*\endcsname\endsolution + }{ + \RenewDocumentEnvironment{solution}{+b}{}{} + \RenewDocumentEnvironment{solution*}{+b}{}{} + } } - -\ptxcd_setup_solution: - +\__ptxcd_setup_solution: \prg_new_conditional:Nnn \__ptxcd_if_solution: {T,F,TF} { - \bool_if:NTF \l_ptxcd_ex_solution_bool - {\prg_return_true:} - {\prg_return_false:} + \bool_if:NTF \l__ptxcd_solution_bool + {\prg_return_true:} + {\prg_return_false:} } - \let\IfSolutionT \__ptxcd_if_solution:T \let\IfSolutionF \__ptxcd_if_solution:F \let\IfSolutionTF \__ptxcd_if_solution:TF - - -%Message Declaration for option processing \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". + You~set~the~titlepage~option~to~#1.\\ + This option is not supported by tudaexercise.cls.\\ + The~KOMA-Script~option~titlepage~is~forced~to~"false". } - +\PassOptionsToPackage{pdfusetitle,bookmarksnumbered=true}{hyperref} \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}}, - textonaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}}, - identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}}, - color .initial:n = 0b, - custommargins .choice:, - custommargins / true .code:n ={ - \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_ptxcd_custommargins_bool - \bool_gset_true:N \g_ptxcd_geometry_bool - }, - custommargins / geometry .code:n = { - \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_ptxcd_clsopts_prop {fontsize} {#1}, - fontsize .initial:n = {10pt}, - BCOR .code:n = \PassOptionsToPackage{bindingoffset=#1}{geometry}, - bindingoffset .meta:n = {BCOR=#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}}, - paper .choices:nn = {a0,a1,a2,a3,a4,a5,a6}{ - \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int - \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules} - \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{typearea} - \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry} - }, - paper .initial:n = a4, - logofile .tl_gset:N = \g_ptxcd_logofile_tl, - logofile .initial:n = tuda_logo, - compat .bool_gset:N = \g_ptxcd_ex_compatibility_bool, - compat .initial:n = false, - compatilibity .meta:n = {compat=#1}, - compatibility .default:n = true, - 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_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_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, - department / unknown .code:n = { - \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} - }, - departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, - departmentconfigprefix .initial:n = tuda, - 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}}, - points .choice:, - points / true .code:n = \bool_set_false:N \l__ptxcd_points_auto_bool\bool_gset_true:N \g__ptxcd_points_bool, - points /false .code:n = \bool_set_false:N \l__ptxcd_points_auto_bool\bool_gset_false:N \g__ptxcd_points_bool, - points / auto .code:n = \bool_set_true:N \l__ptxcd_points_auto_bool\bool_gset_true:N \g__ptxcd_points_bool, - points .initial:n = false, - subtask .choice:, - subtask / ruled .code:n = - \bool_gset_true:N \g__ptxcd_ruled_subtask_bool - \bool_gset_false:N \g__ptxcd_runin_subtask_bool, - subtask / runin .code:n = - \bool_gset_false:N \g__ptxcd_ruled_subtask_bool - \bool_gset_true:N \g__ptxcd_runin_subtask_bool, - subtask / plain .code:n = - \bool_gset_false:N \g__ptxcd_ruled_subtask_bool - \bool_gset_false:N \g__ptxcd_runin_subtask_bool, + bookmarksnumbered .code:n = \PassOptionsToPackage{bookmarksnumbered=#1}{hyperref}, + compat .bool_gset:N = \g__ptxcd_compatibility_bool, + compat .initial:n = false, + compatilibity .meta:n = {compat=#1}, + compatibility .default:n = true, + credit .tl_set:N = \l__ptxcd_credit_tl, + credit .initial:n =, + headontitle .bool_gset:N = \g_ptxcd_headontitle_bool, + headontitle .initial:n = false, + headontitle .default:n =true, + titlepage .code:n = {\msg_warning:nnn {tudapub} {titlepage-option-disabled} {#1}}, + 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_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}}, + points .choice:, + points / true .code:n = \bool_set_false:N \l__ptxcd_points_auto_bool\bool_gset_true:N \g__ptxcd_points_bool, + points /false .code:n = \bool_set_false:N \l__ptxcd_points_auto_bool\bool_gset_false:N \g__ptxcd_points_bool, + points / auto .code:n = \bool_set_true:N \l__ptxcd_points_auto_bool\bool_gset_true:N \g__ptxcd_points_bool, + points .initial:n = false, + subtask .choice:, + subtask / ruled .code:n = + \bool_gset_true:N \g__ptxcd_ruled_subtask_bool + \bool_gset_false:N \g__ptxcd_runin_subtask_bool, + subtask / runin .code:n = + \bool_gset_false:N \g__ptxcd_ruled_subtask_bool + \bool_gset_true:N \g__ptxcd_runin_subtask_bool, + subtask / plain .code:n = + \bool_gset_false:N \g__ptxcd_ruled_subtask_bool + \bool_gset_false:N \g__ptxcd_runin_subtask_bool, + logofile .tl_gset:N = \g_ptxcd_logofile_tl, + logofile .initial:n = tuda_logo, + accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool, + accept-missing-logos .initial:n = false, + accept-missing-logos .usage:n = load, + accept-missing-logos .default:n = true, + 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} + \exp_args:Ne \keys_set:ne { + + ptxcd / \c__ptxcd_base_str + }{ + colorback=false, + departmentlogofile=tuda_maschinenbau_logo, + color=Primary1, + } + }, + + department .initial:n = default, + department / unknown .code:n = { + \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} + }, + departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, + departmentconfigprefix .initial:n = tuda, + departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, + departmentlogofile .initial:n =, + mecheng .meta:n = {department=mecheng}, +%% color options +%% color options + color .meta:n = {accentcolor=#1}, + accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}}, + textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}}, + identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}}, + colorback .bool_gset:N = \g_ptxcd_colorback_bool, + colorback .default:n = true, + colorback .initial:n = true, + custommargins .choice:, + custommargins / true .code:n ={ + \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_ptxcd_custommargins_bool + \bool_gset_true:N \g_ptxcd_geometry_bool + }, + custommargins / geometry .code:n = { + \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_ptxcd_clsopts_prop {fontsize} {#1}, + fontsize .initial:n = + {10pt}, + BCOR .code:n = \PassOptionsToPackage{bindingoffset=#1}{geometry}, + bindingoffset .meta:n = {BCOR=#1}, + captions .code:n = {\prop_gput:Nnx \g_ptxcd_clsopts_prop {captions} { + \use:n {\prop_item:Nn \g_ptxcd_clsopts_prop {captions}}, #1} + }, + paper .choices:nn = { + a0,a1,a2,a3,a4,a5,a6 + }{ + \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int + \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules} + \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{typearea} + \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry} + }, + paper .initial:n = + + a4, + title .choice:, + title / default .meta:n = {title=large}, + 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, +} +\cs_if_exist:NT \TUDaDefaultBuildOptions { + \exp_args:Ne \keys_set:ne { ptxcd / + \c__ptxcd_base_str + } { + \TUDaDefaultBuildOptions + } +} +\cs_new:Nn \__ptxcd_insert_logo: { + \bool_if:NTF \g_ptxcd_logo_workaround_bool { + \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf} + \use_ii:nn + \use_i:nn + } { + \use_ii:nn + } + {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}} + {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}} } - \ProcessKeyOptions[ptxcd/exercise] - \prop_map_inline:Nn \g_ptxcd_clsopts_prop { - \tl_if_empty:nTF {#2} - {\PassOptionsToClass {#1} {scrartcl}} - { - \clist_map_inline:nn {#2} {\PassOptionsToClass {#1=##1} {scrartcl}} - } -} - -\RequirePackage{environ} - -\bool_new:N \l_ptxcd_ex_subtask_fallback_bool -\fp_new:N \l_ptxcd_ex_task_points_fp -\fp_new:N \g__ptxcd_ex_collected_points_fp -\tl_new:N \l_ptxcd_ex_task_credit_tl - -\keys_define:nn {ptxcd/task}{ - points .choice:, - points / auto .code:n = - \bool_set_true:N \l__ptxcd_points_auto_bool, - points / unknown .code:n = \fp_set:Nn \l_ptxcd_ex_task_points_fp {#1} - \bool_set_false:N \l__ptxcd_points_auto_bool, - credit .code:n = \tl_set:Nn \l_ptxcd_ex_task_credit_tl {#1} - \bool_set_false:N \l__ptxcd_points_auto_bool, - solution .meta:nn ={ptxcd/exercise}{solution=#1}, + \tl_if_empty:nTF {#2} + {\PassOptionsToClass {#1} {scrartcl}} + { + \clist_map_inline:nn {#2} {\PassOptionsToClass {#1=##1} {scrartcl}} + } } - -\fp_new:N \l_ptxcd_ex_subtask_points_fp + \bool_new:N \l__ptxcd_subtask_fallback_bool + \fp_new:N \l__ptxcd_task_points_fp + \fp_new:N \g__ptxcd_ex_collected_points_fp + \tl_new:N \l__ptxcd_task_credit_tl + \keys_define:nn {ptxcd/task}{ + points .choice:, + points / auto .code:n = + \bool_set_true:N \l__ptxcd_points_auto_bool, + points / unknown .code:n = \fp_set:Nn \l__ptxcd_task_points_fp {#1} + \bool_set_false:N \l__ptxcd_points_auto_bool, + credit .code:n = \tl_set:Nn \l__ptxcd_task_credit_tl {#1} + \bool_set_false:N \l__ptxcd_points_auto_bool, + solution .meta:nn ={ptxcd/exercise}{solution=#1}, + } +\fp_new:N \l__ptxcd_subtask_points_fp \keys_define:nn {ptxcd/subtask} { - credit .tl_set:N = \l_ptxcd_ex_subtask_credit_tl, - credit .initial:n =, - points .code:n = \fp_set:Nn \l_ptxcd_ex_subtask_points_fp {#1} - \bool_set_false:N \l__ptxcd_points_auto_bool, - 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_subtask_credit_tl \fp_zero:N \l_ptxcd_ex_subtask_points_fp, + credit .tl_set:N = \l__ptxcd_subtask_credit_tl, + credit .initial:n =, + points .code:n = \fp_set:Nn \l__ptxcd_subtask_points_fp {#1} + \bool_set_false:N \l__ptxcd_points_auto_bool, + title .tl_set:N = \l__ptxcd_title_tl, + title .initial:n =, + unknown .code:n = { + \bool_set_true:N \l__ptxcd_subtask_fallback_bool + \tl_clear:N \l__ptxcd_subtask_credit_tl + \fp_zero:N \l__ptxcd_subtask_points_fp + }, } - \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 - }, + 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} - } + \tl_new:c {g__ptxcd_headline_#1_tl} + \box_new:c {g__ptxcd_headline_#1_box} + \keys_define:nn {ptxcd/exercise/headline} { + #1 .choice:, + #1 / title-name-id .meta:n = { + #1 = { + \g_ptxcd_shorttitle_tl\par + \StudentName\StudentID + } + }, + #1 / title-name .meta:n = { + #1 = { + \g_ptxcd_shorttitle_tl\par + \smallskip + \StudentName + } + }, + #1 / title .meta:n = {#1 = {\g_ptxcd_shorttitle_tl}}, + #1 / name-id .meta:n = {#1 = {\StudentName\StudentID}}, + #1 / name .meta:n = {#1 = {\StudentName}}, + #1 / unknown .code:n = \tl_gset:cn {g__ptxcd_headline_#1_tl} {##1} + } } - - -%Load tudasize clo file if available \file_if_exist:nT {tudasize\prop_item:Nn \g_ptxcd_clsopts_prop {fontsize}.clo} - {\providecommand*{\@fontsizefilebase}{tudasize}} - +{\providecommand*{\@fontsizefilebase}{tudasize}} \LoadClass{scrartcl} - \bool_if:NT \g__ptxcd_points_bool { \cs_if_exist:NF \AddtoDoHook{ \msg_error:nnnn {tudaexercise} {outdated-koma-script} {points=true/auto} {3.27} \keys_set:nn {ptxcd/exercise} {points=false} - } + } } - \RequirePackage{tudarules} - -%Has to be loaded here due to headwidth options \RequirePackage[draft=false]{scrlayer-scrpage} \KOMAoptions {twoside = false} - \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}} - {\KOMAoption{#1}{#2} - } -} + \cs_if_exist:cT {KV@KOMA.scrartcl.cls@#1} { + \tl_if_empty:nTF {#2} + {\KOMAoptions{#1}} + {\KOMAoption{#1}{#2} + } + } } - \renewcommand*\sectionlinesformat[4]{% -\parbox{\linewidth}{ - \bool_if:cT {g__ptxcd_ruled_#1_bool} { - \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip - } - \@hangfrom{% - \hskip #2#3}{ - \tl_if_eq:nnT {#1} {task} { - \exp_args:No \tl_if_empty:nF {#4} - {:~} - \bool_if:NT \l__ptxcd_points_auto_bool { - \exp_args:NNx \prop_get:NnN \g__ptxcd_loaded_points_prop {\thetask} \l_ptxcd_tmp_tl - \quark_if_no_value:NF \l_ptxcd_tmp_tl { - \fp_set:Nn \l_ptxcd_ex_task_points_fp {\l_ptxcd_tmp_tl} - } - } - } - #4 - \tl_if_in:nnT {#1} {task} { - \tl_if_empty:cTF{l_ptxcd_ex_#1_credit_tl} - {\pointformat{\fp_to_decimal:c {l_ptxcd_ex_#1_points_fp}}} - {\creditformat{\tl_use:c {l_ptxcd_ex_#1_credit_tl}}} - } - \rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip - \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox} - \bool_if:cT {g__ptxcd_ruled_#1_bool} {\smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}} -}} - - + \parbox{\linewidth}{ + \bool_if:cT {g__ptxcd_ruled_#1_bool} { + \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip + } + \@hangfrom{% + \hskip #2#3}{ + \tl_if_eq:nnT {#1} {task} { + \exp_args:No \tl_if_empty:nF {#4} + {:~} + \bool_if:NT \l__ptxcd_points_auto_bool { + \exp_args:NNx \prop_get:NnN \g__ptxcd_loaded_points_prop {\thetask} \l_ptxcd_tmp_tl + \quark_if_no_value:NF \l_ptxcd_tmp_tl { + \fp_set:Nn \l__ptxcd_task_points_fp {\l_ptxcd_tmp_tl} + } + } + } + #4 + \tl_if_in:nnT {#1} {task} { + \tl_if_empty:cTF{l__ptxcd_#1_credit_tl} + {\pointformat{\fp_to_decimal:c {l__ptxcd_#1_points_fp}}} + {\creditformat{\tl_use:c {l__ptxcd_#1_credit_tl}}} + } + \rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip + \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox} + \bool_if:cT {g__ptxcd_ruled_#1_bool} + {\smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}} + } +} \RequirePackage{tudafonts} - \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_ptxcd_paper_int<=5} - { - \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_ptxcd_paper_int<=3} - { - \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_ptxcd_paper_int<=6} - { - \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_ptxcd_paper_int<=7} - { - \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 - } - } +\int_compare:nTF {4<=\g_ptxcd_paper_int<=5} +{ +\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 +}{ +\int_compare:nT {1<=\g_ptxcd_paper_int<=3} +{ +\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 +} +\int_compare:nT {\g_ptxcd_paper_int<=6} +{ +\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 +} +\int_compare:nT {\g_ptxcd_paper_int<=7} +{ +\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_ptxcd_columnSep_dim \dim_gset:Nn \g_ptxcd_columnSep_dim {10pt} - \dim_new:N \g_ptxcd_headheight_dim -\dim_new:N \g_ptxcd_headwidth_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_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} +\RequirePackage{geometry} +\geometry{ +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 +} }{ - \KOMAoptions{headinclude, footinclude, headwidth=text,footwidth=text} +\KOMAoptions{headinclude, footinclude} + \KOMAoptions{headwidth=text,footwidth=text} } - -%%%%%%%% -%Ende Randeinstellungen klassisch - \newcommand*{\institution}[1]{ - \def\ptxcd_institution{#1} +\def\ptxcd_institution{#1} } - \gdef\ptxcd_datename{Datum} \gdef\ptxcd_dateseparator{:~} - - - - \setkomafont{disposition}{\sffamily\bfseries} - \cs_new:Nn \ptxcd_titlerule_sep: {\the\dp\strutbox} - \RequirePackage{tudacolors} -\RequirePackage{environ} - \setkomafont{pageheadfoot}{\sffamily\small} \setkomafont{pagenumber}{} \addtokomafont{captionlabel}{\sffamily} \addtokomafont{caption}{\sffamily} - -\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 \ptxcd_preamble_ConfigureHeadline:n { +\cs_new:Nn \__ptxcd_preamble_ConfigureHeadline:n { \tl_if_empty:nF {#1} {\keys_set:nn {ptxcd/exercise/headline} {#1}} } - \cs_new:Nn \ptxcd_ConfigureHeadline:n { - \ptxcd_preamble_ConfigureHeadline:n {#1} + \__ptxcd_preamble_ConfigureHeadline:n {#1} \ptxcd_update_headline_boxes: - \ptxcd_ex_adjust_headheight: + \__ptxcd_adjust_headheight: } - -\let\ConfigureHeadline\ptxcd_preamble_ConfigureHeadline:n - - - -\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} +\NewDocumentCommand{\ConfigureHeadline}{m}{\__ptxcd_preamble_ConfigureHeadline:n {#1}} +\bool_if:NT \g__ptxcd_compatibility_bool { + \cs_new:Npn \__ptxcd_env_to_tl_aux:w #1 \q_stop { \tl_gset:Nn \g__ptxcd_headline_oneside_tl {#1} } + \NewDocumentEnvironment{examheader}{+b}{}{ + \tl_gset:Nn \g__ptxcd_headline_oneside_tl {#1} + \tl_gset:Nn \g__ptxcd_headline_odd_tl {#1} + \tl_gset:Nn \g__ptxcd_headline_even_tl {#1} + \ptxcd_ConfigureHeadline:n {} + } + \newcommand*{\examheaderdefault}{\par\StudentName\StudentID} } - - \cs_new:Nn \ptxcd_update_headline_boxes: { \clist_map_inline:nn {even, odd, oneside} { - \tl_if_empty:cF {g_ptxcd_ex_headline_##1_tl} { - \vbox_gset:cn {g_ptxcd_ex_headline_##1_box} { - \begin{minipage}[b]{\textwidth} + \tl_if_empty:cF {g__ptxcd_headline_##1_tl} { + \vbox_gset:cn {g__ptxcd_headline_##1_box} { + \begin{minipage}[b]{\textwidth} \usekomafont{pagehead} - \raggedright + \raggedright \leavevmode\rule{\z@}{\dimexpr\ht\strutbox+\c_ptxcd_rulesep_dim} \ignorespaces - \use:c {g_ptxcd_ex_headline_##1_tl}\ignorespaces\strut + \use:c {g__ptxcd_headline_##1_tl}\ignorespaces\strut \par\vspace{\z@} \end{minipage} } } } } - - -\cs_new:Nn \ptxcd_ex_adjust_headheight: { - \if@twoside - \dim_set:Nn \l_tmpa_dim { - \dim_max:nn - {\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_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 \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_ptxcd_ex_headline_even_box}} - \cohead{\box_use:c {g_ptxcd_ex_headline_odd_box}} - \else - \chead{\box_use:c {g_ptxcd_ex_headline_oneside_box}} - \fi - \global\setlength{\headheight}{\l_tmpa_dim} - } +\cs_new:Nn \__ptxcd_adjust_headheight: { + \if@twoside + \dim_set:Nn \l_tmpa_dim { + \dim_max:nn + {\box_ht:N \g__ptxcd_headline_odd_box+\box_dp:N \g__ptxcd_headline_odd_box} + {\box_ht:N \g__ptxcd_headline_even_box+\box_dp:N \g__ptxcd_headline_even_box} + } + \else + \dim_set:Nn \l_tmpa_dim { + \box_ht:N \g__ptxcd_headline_oneside_box + + \box_dp:N \g__ptxcd_headline_oneside_box + } + \fi + \dim_compare:nT {\l_tmpa_dim > \z@} + { + \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__ptxcd_headline_even_box}} + \cohead{\box_use:c {g__ptxcd_headline_odd_box}} + \else + \chead{\box_use:c {g__ptxcd_headline_oneside_box}} + \fi + \global\setlength{\headheight}{\l_tmpa_dim} + } } - \newpairofpagestyles{TUDa.exercise}{ - \KOMAoptions{plainfootsepline,headtopline,plainheadtopline} - \KOMAoptions { - headwidth=text, - footwidth=text - } - \setkomafont{pagehead}{} - \box_if_exist:NF \ptxcd_headrule_box { - \ptxcd_makeheadrule[color=identbarcolor, width=\sls@headwidth]{ptxcd_headrule} - } -\ModifyLayer[ - background, - height=\box_dp:N \ptxcd_headrule_box, - align=tl, - 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 \ptxcd_headrule_box, - align=tl, - voffset=\g_ptxcd_topMargin_dim, - contents=\raisebox{\depth}{\box_use:N \ptxcd_headrule_box}, - ]{TUDa.exercise.head.above.line} - \ofoot[\pagemark]{\pagemark} - \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.exercise.foot.even} - \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.exercise.foot.odd} - \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.exercise.foot.oneside} - \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.exercise.foot.even} - \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.exercise.foot.odd} - \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.exercise.foot.oneside} + \KOMAoptions{plainfootsepline,headtopline,plainheadtopline} + \KOMAoptions { + headwidth=text, + footwidth=text + } + \setkomafont{pagehead}{} + \box_if_exist:NF \ptxcd_headrule_box { + \ptxcd_makeheadrule[color=identbarcolor, width=\sls@headwidth]{ptxcd_headrule} + } + \ModifyLayer[ + background, + height=\box_dp:N \ptxcd_headrule_box, + align=tl, + 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 \ptxcd_headrule_box, + align=tl, + voffset=\g_ptxcd_topMargin_dim, + contents=\raisebox{\depth}{\box_use:N \ptxcd_headrule_box}, + ]{TUDa.exercise.head.above.line} + \ofoot[\pagemark]{\pagemark} + \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.exercise.foot.even} + \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.exercise.foot.odd} + \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.exercise.foot.oneside} + \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.exercise.foot.even} + \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.exercise.foot.odd} + \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.exercise.foot.oneside} } - \DeclarePageStyleAlias{TUDa}{TUDa.exercise} \DeclarePageStyleAlias{plain.TUDa}{plain.TUDa.exercise} \renewcommand{\titlepagestyle}{plain.TUDa} \pagestyle{TUDa} - -%Titelseite -\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_ptxcd_title_box -\skip_new:N \g_ptxcd_title_fill_skip - - - - \seq_new:N \g_ptxcd_author_seq - \renewcommand*\author[1]{ - \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1} +\seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1} } - \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. + 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 \ptxcd_define_captionFallback:Nn { - \providecommand*#1{ - \msg_warning:nnxxx{tudapub} {unknown-language} - {\languagename} {\exp_not:N #1} {#2} - \def#1{#2} - } + \providecommand*#1{ + \msg_warning:nnxxx{tudapub} {unknown-language} + {\languagename} {\exp_not:N #1} {#2} + \def#1{#2} + } } - \cs_new:Nn \ptxcd_declare_caption:Nnnn { - \ptxcd_define_captionFallback:Nn #1 {#2} - \defcaptionname{ngerman, german}{#1}{#2} - \defcaptionname{english, USenglish, american}{#1}{#3} - \defcaptionname{UKenglish, british}{#1}{#4} + \ptxcd_define_captionFallback:Nn #1 {#2} + \defcaptionname{ngerman, german}{#1}{#2} + \defcaptionname{english, USenglish, american}{#1}{#3} + \defcaptionname{UKenglish, british}{#1}{#4} } - \cs_new:Nn \ptxcd_declare_caption:Nnn { - \ptxcd_declare_caption:Nnnn #1 {#2} {#3} {#3} + \ptxcd_declare_caption:Nnnn #1 {#2} {#3} {#3} } - \ptxcd_declare_caption:Nnn \authorandname {und} {and} - \renewcommand*{\@author}{ - \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~} - } - + \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~} +} \tl_new:N \g_ptxcd_shorttitle_tl - \RenewDocumentCommand{\title}{om}{ \IfNoValueTF{#1}{ \tl_gset:Nn \g_ptxcd_shorttitle_tl {#2} @@ -599,122 +555,112 @@ } \def\@title{#2} } - -% Define \subsubtitle for compatibility - \newcommand*{\subsubtitle}[1]{ - \def\@subsubtitle{#1} - } - \subsubtitle{} - - +\newcommand*{\subsubtitle}[1]{ + \def\@subsubtitle{#1} +} +\subsubtitle{} \newcommand*{\ptxcd_title@footnote}[2][1]{ -\textsuperscript{\@fnsymbol{#1}}#2 + \textsuperscript{\@fnsymbol{#1}}#2 } - - \renewcommand*{\@maketitle}{% - \global\@topnum=\z@ - \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative - \vspace*{-\dim_eval:n { - \headheight - -\c_ptxcd_largerule_dim -\c_ptxcd_rulesep_dim - +\headsep - +\ht\strutbox - +\p@ - }} - \par - \nointerlineskip - \begingroup - \setlength{\fboxsep}{\z@} - \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-\__ptxcd_logowidth:-1ex} - \bool_if:NT \g_ptxcd_colorback_bool {\begin{addmargin}{3mm}} +\global\@topnum=\z@ +\setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative +\vspace*{-\dim_eval:n { + \headheight + -\c_ptxcd_largerule_dim -\c_ptxcd_rulesep_dim + +\headsep + +\ht\strutbox + +\p@ + }} +\par +\nointerlineskip +\begingroup +\setlength{\fboxsep}{\z@} +\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-\__ptxcd_logowidth:-1ex} + \bool_if:NT \g_ptxcd_colorback_bool {\begin{addmargin}{3mm}} \raggedright \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_ptxcd_smalltitle_bool {\LARGE} {\huge} {\@title\par}}% \vskip 1em - \bool_if:NF \g_ptxcd_ex_compatibility_bool - { - {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}% - \gdef\@subtitle{} - \vskip .5em - } - { + \bool_if:NF \g__ptxcd_compatibility_bool + { + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}\@subtitle\par\fi}% + \gdef\@subtitle{} + \vskip .5em + } + { \xdef\@author {\@author} \ifx\@author\@empty\else\usekomafont{author}\@author\par\fi - } + } \vskip .5em - \bool_if:NTF \g_ptxcd_colorback_bool {\end{addmargin}} {\par} - \end{minipage}} - \tl_if_empty:NF \g_ptxcd_logofile_tl { - \hfill\raisebox{\dim_eval:n { - \bool_if:NTF \g_ptxcd_colorback_bool - {-\height} - {-.9\c_ptxcd_logoheight_dim} - }} - [0pt] - [\dim_eval:n { - \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[\__ptxcd_logowidth:][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}} - } - \par\medskip - }} - \par - \nointerlineskip - \rule{\linewidth}{\g_ptxcd_titlerule_dim} - % subtitle fields if not compat - \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_ptxcd_colorback_bool {\colorbox{accentcolor}}{ - \parbox{\linewidth}{ - \begin{minipage}{\linewidth} - \bool_if:NT \g_ptxcd_colorback_bool { - \color{textonaccentcolor} - \begin{addmargin}{3mm} - } + \bool_if:NTF \g_ptxcd_colorback_bool {\end{addmargin}} {\par} + \end{minipage}} + \tl_if_empty:NF \g_ptxcd_logofile_tl { + \hfill\raisebox{\dim_eval:n { + \bool_if:NTF \g_ptxcd_colorback_bool + {-\height} + {-.9\c_ptxcd_logoheight_dim} + }} + [0pt] + [\dim_eval:n { + \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[\__ptxcd_logowidth:][l]{\__ptxcd_insert_logo:}} + } + \par\medskip + }} +\par +\nointerlineskip +\rule{\linewidth}{\g_ptxcd_titlerule_dim} +\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_ptxcd_colorback_bool {\colorbox{accentcolor}}{ + \parbox{\linewidth}{ + \begin{minipage}{\linewidth} + \bool_if:NT \g_ptxcd_colorback_bool { + \color{textonaccentcolor} + \begin{addmargin}{3mm} + } \null\par \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 \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_ptxcd_titlerule_dim} - } + \bool_if:NT \g_ptxcd_colorback_bool {\end{addmargin}} + \end{minipage} + \vspace*{\dp\strutbox} + }}\par\nointerlineskip + \rule{\linewidth}{\g_ptxcd_titlerule_dim} +} +\par +\bool_if:NT \g_ptxcd_headontitle_bool { + \if@twoside + \box_use:N \g__ptxcd_headline_odd_box + \else + \box_use:N \g__ptxcd_headline_oneside_box + \fi \par - \bool_if:NT \g_ptxcd_headontitle_bool { - \if@twoside - \box_use:N \g_ptxcd_ex_headline_odd_box - \else - \box_use:N \g_ptxcd_ex_headline_oneside_box - \fi - \par - \rule{\linewidth}{\g_ptxcd_titlerule_dim} - \par - } - \endgroup - \vskip 2em - \ConfigureHeadline{} + \rule{\linewidth}{\g_ptxcd_titlerule_dim} + \par +} +\endgroup +\vskip 2em +\ConfigureHeadline{} }% - \setkomafont{subtitle}{\bfseries} \setkomafont{author}{} \setkomafont{date}{} \newkomafont{sheetnumber}{\usekomafont{date}} - \newkomafont{term}{\usekomafont{date}} - \date{} \tl_new:N \g_ptxcd_ex_sheetnum_tl \newcommand*{\sheetnumber}[1]{\tl_gset:Nn \g_ptxcd_ex_sheetnum_tl {#1}} @@ -722,181 +668,187 @@ \tl_new:N \g_ptxcd_ex_term_tl \newcommand*{\term}[1]{\tl_gset:Nn \g_ptxcd_ex_term_tl {#1}} \term{} - -%Logos \RequirePackage{graphicx} - -%%hyperref -\PassOptionsToPackage{pdfusetitle}{hyperref} \RequirePackage{hyperref} \hypersetup{hidelinks, unicode} - \providecaptionname{ngerman, german}{\sheetname}{Übungsblatt} \providecaptionname{english, american, british}{\sheetname}{Sheet} \newcommand*{\sheetsep}{~} - \providecaptionname{ngerman, german}{\taskname}{Aufgabe} \providecaptionname{english, american, british}{\taskname}{Task} \newcommand*{\tasksep}{~}%TODO - \providecaptionname{ngerman, german}{\solutionname}{Lösungsvorschlag} \providecaptionname{english, american, british}{\solutionname}{Solution} \newcommand*{\solutionsep}{:~} - \providecaptionname{ngerman, german}{\StudentNamename}{Nachname,~Vorname} \providecaptionname{english, american, british}{\StudentNamename}{Last Name,~ First Name} \newcommand*{\StudentNamesep}{:~} - \providecommand{\StudentIDname}{Matrikelnummer} \providecaptionname{ngerman, german}{\StudentIDname}{Matrikelnummer} \providecaptionname{english, american, british}{\StudentIDname}{Enrollment ID} \newcommand*{\StudentIDsep}{:~} - \providecommand{\creditformat}[1]{\space(#1)} \providecommand{\creditformatsum}[1]{\creditformat{#1}} \newcommand*{\pointformat}[1]{ - \fp_compare:nF {#1 = 0} { - \bool_if:NTF \l__ptxcd_points_auto_bool - \creditformatsum - \creditformat - { - \fp_to_decimal:n {#1}\space - \fp_compare:nTF {#1=1} - \PointName - \PointsName - } - } + \fp_compare:nF {#1 = 0} { + \bool_if:NTF \l__ptxcd_points_auto_bool + \creditformatsum + \creditformat + { + \fp_to_decimal:n {#1}\space + \fp_compare:nTF {#1=1} + \PointName + \PointsName + } + } } \providecaptionname{ngerman, german}{\PointName}{Punkt} \providecaptionname{english, american, british}{\PointName}{Point} \providecommand{\PointsName}{Punkte} \providecaptionname{ngerman, german}{\PointsName}{Punkte} \providecaptionname{english, american, british}{\PointsName}{Points} - -%Has to be initialized after captionnames have been defined - \AtBeginDocument{ +\AtBeginDocument{ \ptxcd_update_headline_boxes: - \ptxcd_ex_adjust_headheight: + \__ptxcd_adjust_headheight: \global\let\ConfigureHeadline\ptxcd_ConfigureHeadline:n } - -%task environment \DeclareSectionCommand[% - style=section,% - level=2,% - 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=2,% + 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_ptxcd_ex_sheetnum_tl\tl_if_empty:NF \g_ptxcd_ex_sheetnum_tl{.} - \arabic{task} + \g_ptxcd_ex_sheetnum_tl\tl_if_empty:NF \g_ptxcd_ex_sheetnum_tl{.} + \arabic{task} } -\renewcommand*{\taskformat}{\taskname\tasksep\thetask{}} - +\newcommand*{\tasklabel}{\thetask} +\renewcommand*{\taskformat}{\taskname\tasksep\tasklabel{}} \let\@task\task \cs_undefine:N \task - \NewDocumentEnvironment{task}{om}{ - \IfNoValueF{#1}{\keys_set:nn {ptxcd/task}{#1}} - \@task{#2} - \bool_if:NF \l__ptxcd_points_auto_bool { - \cs_if_exist_use:NF \prop_gput:Nxx - {\exp_args:NNx \prop_gput:Nnx} - \g__ptxcd_points_collector_prop - {\thetask} {\fp_to_decimal:N \l_ptxcd_ex_task_points_fp} - } + \IfNoValueF{#1}{\keys_set:nn {ptxcd/task}{#1}} + \@task{#2} + \edef\@currenttasklabel{\tasklabel} }{ - \bool_if:NT \l__ptxcd_points_auto_bool { - \cs_if_exist_use:NF \prop_gput:Nxx - {\exp_args:NNx \prop_gput:Nnx} - \g__ptxcd_points_collector_prop - {\thetask} {\fp_to_decimal:N \g__ptxcd_ex_collected_points_fp} - \fp_gzero:N \g__ptxcd_ex_collected_points_fp - } + \__ptxcd_save_task_properties:nnnn {} {\thetask} {#2} { + \bool_if:NTF \l__ptxcd_points_auto_bool { + \fp_to_decimal:N \g__ptxcd_ex_collected_points_fp + }{ + \fp_to_decimal:N \l__ptxcd_task_points_fp + } + } + \fp_gzero:N \g__ptxcd_ex_collected_points_fp +} +\cs_new:Nn \__ptxcd_save_task_properties:nnnn { + \iow_now:Ne \@auxout { + \exp_not:N \ptxcd@TaskProperties {#1} {#2} { + \tl_if_empty:cF {l__ptxcd_#1credit_tl} {credit=\tl_to_str:v {l_ptxcd_#1credit_tl},} + \tl_if_blank:nF {#3} {title=\tl_to_str:n {#3},} + } {#4} + } + \prop_gput:cee {g__ptxcd_#1points_collector_prop} + {#2} {#4} +} +\cs_generate_variant:Nn \__ptxcd_save_task_properties:nnnn {nnon} +\iffalse +\newcommand*{\addsubtasktocentry}[4]{ + \show\subtaskentry + %% {Dateierweiterung }{Ebene }{Gliederungsnummer }{Eintrag } + %\IfArgIsEmpty {#3}{\addcontentsline {#1}{#2}{\protect \nonumberline #4}}{\addcontentsline {#1}{#2}{\protect \numberline {#3}#4}} + \tocbasic@addxcontentsline{#1}{#2}{#3}{#4} + \iow_now:Ne \@auxout { + \exp_not:N \ptxcd@TaskProperties {\the\c@task} {\the\c@subtask} {\tl_to_str:n {#2}} { + \bool_if:NTF \l__ptxcd_points_auto_bool { + \fp_to_decimal:N \l__ptxcd_task_points_fp + }{ + \fp_to_decimal:N \g__ptxcd_ex_collected_points_fp + } + } + } +} +\fi + +\newcommand*\ptxcd@TaskProperties [4]{ + \prop_gput:cnn {g__ptxcd_#1points_collector_prop} + {#2} {#4} + \clist_map_inline:nn {#3} { + \prop_gput_from_keyval:Nn \g__ptxcd_property_collector_prop { + #2-##1 + } + } + \prop_gput:Nnn \g__ptxcd_property_collector_prop {#2-points} {#4} } - \cs_set_eq:cN {task*} \task \cs_set_eq:cN {endtask*} \endtask - -% subtasks \DeclareSectionCommand[% - style=section,% - level=3,% - 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=3,% + 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} - \bool_if:NT \g__ptxcd_runin_subtask_bool { - \RedeclareSectionCommand[runin=true]{subtask} + \RedeclareSectionCommand[runin=true]{subtask} } - \renewcommand*{\thesubtask}{\alph{subtask})} -\renewcommand*{\subtaskformat}{\thetask{}\thesubtask\enskip} +\newcommand*{\subtasklabel}{\thetask\thesubtask} +\renewcommand*{\subtaskformat}{\subtasklabel\enskip} \setkomafont{subtask}{\mdseries\normalsize} - \let\@subtask\subtask \cs_undefine:N \subtask - \NewDocumentEnvironment{subtask}{o}{ - \begingroup - \tl_if_in:nnT {#1} {=} { - \keys_set:nn {ptxcd/subtask} {#1} - } - \bool_if:NTF \l_ptxcd_ex_subtask_fallback_bool { - \@subtask{\IfNoValueF{#1}{#1}} - }{ - \@subtask{\l_ptxcd_ex_title_tl} - } - \cs_if_exist_use:NF \prop_gput:Nxx - {\exp_args:NNx \prop_gput:Nnx} - \g__ptxcd_subtask_points_collector_prop - {\thetask\thesubtask} {\fp_to_decimal:N \l_ptxcd_ex_subtask_points_fp } - \bool_if:NT \g__ptxcd_runin_subtask_bool \strut - \tl_gset_eq:NN \g_tmpa_tl \@currentlabel - \endgroup - \tl_set_eq:NN \@currentlabel \g_tmpa_tl + \begingroup + \tl_if_in:nnTF {#1} {=} { + \keys_set:nn {ptxcd/subtask} {#1} + } { + \keys_set:nn {ptxcd/subtask} {title={#1}} + } + \bool_if:NTF \l__ptxcd_subtask_fallback_bool { + \@subtask{\IfNoValueF{#1}{#1}} + }{ + \@subtask{\l__ptxcd_title_tl} + } + \edef\@currenttasklabel{\subtasklabel} + \__ptxcd_save_task_properties:nnon {subtask_} {\@currenttasklabel} + {\l__ptxcd_title_tl} {\fp_to_decimal:N \l__ptxcd_subtask_points_fp} + \bool_if:NT \g__ptxcd_runin_subtask_bool \strut + \tl_gset_eq:NN \g_tmpa_tl \@currentlabel + \endgroup + \edef\@currentcounter{subtask} + \protected@edef\@currentlabel{\p@subtask\thesubtask} }{} - \NewDocumentEnvironment{subtask*}{om}{ - \begingroup - \IfNoValueF{#1}{\keys_set:nn {ptxcd/subtask}{#1}} - \@subtask{#2} - \tl_gset_eq:NN \g_tmpa_tl \@currentlabel - \endgroup - \tl_set_eq:NN \@currentlabel \g_tmpa_tl + \begingroup + \IfNoValueF{#1}{\keys_set:nn {ptxcd/subtask}{#1}} + \@subtask{#2} + \tl_gset_eq:NN \g_tmpa_tl \@currentlabel + \endgroup + \tl_set_eq:NN \@currentlabel \g_tmpa_tl }{} - -%Solution mechanism - -\DeclareSectionCommand[% - style=section,% - level=3,% - 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},% -]{@solution} - - -\setkomafont{@solution}{\normalfont} - -\cs_new:Nn \ptxcd_ex_solutionheader: { - \@solution*{\solutionname\solutionsep} - \if@newlist\global\@newlistfalse\fi -} - + \DeclareSectionCommand[% + style=section,% + level=3,% + 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},% + ]{@solution} + \setkomafont{@solution}{\normalfont} + \cs_new:Nn \__ptxcd_solutionheader: { + \@solution*{\solutionname\solutionsep} + \if@newlist\global\@newlistfalse\fi + } \box_new:N \g_ptxcd_NumberForm_box \hbox_gset:Nn \g_ptxcd_NumberForm_box { \rule{\fboxrule}{1ex} @@ -904,22 +856,16 @@ \rule{\fboxrule}{1ex} \, } - \newcommand*\ptxcd_StudentID[1][7]{ \StudentIDname\StudentIDsep\prg_replicate:nn {#1} {\box_use:N \g_ptxcd_NumberForm_box} } \let\StudentID\ptxcd_StudentID - \newcommand*\ptxcd_StudentName{ \StudentNamename\StudentNamesep\hrulefill\qquad } \let\StudentName\ptxcd_StudentName - \let\ShortTitle\g_ptxcd_shorttitle_tl - -% Compatibility Features - -\bool_if:NT \g_ptxcd_ex_compatibility_bool { +\bool_if:NT \g__ptxcd_compatibility_bool { \cs_set_eq:NN \c@subsection \c@task \cs_set_eq:NN \subsection \task \cs_set_eq:NN \c@subsubsection \c@subtask @@ -927,148 +873,184 @@ \cs_set_eq:NN \thetask \thesubsection \cs_set_eq:NN \thesubtask \thesubsection } - \file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str.cfg} - \ptxcd_makeheadrule[color=identbarcolor, width=\textwidth]{ptxcd_headrule} - -% Point referencing \cs_if_exist:NTF \AddtoDoHook { \AddtoDoHook{heading/preinit/subtask}{ \bool_if:NT \g__ptxcd_points_bool { - \fp_gadd:Nn \g__ptxcd_ex_collected_points_fp {\l_ptxcd_ex_subtask_points_fp} + \fp_gadd:Nn \g__ptxcd_ex_collected_points_fp {\l__ptxcd_subtask_points_fp} } } - \AddtoDoHook{heading/preinit/task}{ \fp_gzero:N \g__ptxcd_ex_collected_points_fp } } { \msg_warning:nnnn {tudaexercise} {outdated-koma-script} {point~references} {3.27} } - - - \msg_new:nnn {tudaexercise} {points-differ} { - Value~of~points~changed~for~at~least~one~task.\\ - Please~rerun~LaTeX~to~get~correct~references~and~calculations. + Value~of~points~changed~for~at~least~one~task.\\ + Please~rerun~LaTeX~to~get~correct~references~and~calculations. } - \msg_new:nnn {tudaexercise} {empty-point-mapping} { - I~could~not~find~references~for~points~in~the~aux~file.\\ - Please~rerun~LaTeX~to~get~correct~references~and~calculations. + I~could~not~find~references~for~points~in~the~aux~file.\\ + Please~rerun~LaTeX~to~get~correct~references~and~calculations. } - \msg_new:nnn {tudaexercise} {point-referencing-disabled} { - You~try~to~use~#1.\\ - This~function~is~only~available~with~points=true~or~points=auto.\\ - Please~activate~referencing~to~use~it. + You~try~to~use~#1.\\ + This~function~is~only~available~with~points=true~or~points=auto.\\ + Please~activate~referencing~to~use~it. } - \bool_if:NTF \g__ptxcd_points_bool { - \BeforeClosingMainAux{ - \tl_clear:N \l_tmpa_tl - \tl_clear:N \l_tmpb_tl - \fp_zero:N \l_tmpa_fp - \prop_map_inline:Nn \g__ptxcd_points_collector_prop { - \tl_put_right:Nn \l_tmpa_tl {#1=#2,} - \fp_add:Nn \l_tmpa_fp {#2} - } - \prop_map_inline:Nn \g__ptxcd_subtask_points_collector_prop { - \tl_put_right:Nn \l_tmpa_tl {#1=#2,} - } - \prop_map_inline:Nn \g__ptxcd_loaded_points_prop { - \tl_put_right:Nn \l_tmpb_tl {#1=#2,} - } - \tl_if_eq:NNF \l_tmpa_tl \l_tmpb_tl { - \msg_warning:nn {tudaexercise} {points-differ} - } - \iow_now:Nx \@auxout{ - \exp_not:N \ptxcd@LoadPoints[\thetask][\fp_use:N \l_tmpa_fp]{\l_tmpa_tl} - } - } - - \cs_new:Nn \__ptxcd_getPoints:n { - \prop_if_in:NnTF \g__ptxcd_loaded_points_prop {#1} - {\prop_item:Nn \g__ptxcd_loaded_points_prop {#1}} - {\nfss@text{\reset@font\bfseries??}} - } - \cs_generate_variant:Nn \__ptxcd_getPoints:n {x} - - \newcommand{\getPoints}[1]{\__ptxcd_getPoints:x {#1}} - - \newcommand{\refPoints}[1]{ - \edef\x{#1} - \cs_if_exist:cTF {r@\x} { - \str_if_in:cnTF {r@\x} {subtask} { - \tl_set_eq:Nc \l_tmpa_tl {r@\x} - \getPoints{\tl_item:Nn \l_tmpa_tl {2}\tl_item:Nn \l_tmpa_tl {1}} - } { - \getPoints{\tl_head:v {r@\x}} - } - }{ - \nfss@text{\reset@font\bfseries??} - } - } + \BeforeClosingMainAux{ + \tl_clear:N \l_tmpa_tl + \tl_clear:N \l_tmpb_tl + \fp_zero:N \l_tmpa_fp + \prop_map_inline:Nn \g__ptxcd_points_collector_prop { + \tl_put_right:Nn \l_tmpa_tl {#1=#2,} + \fp_add:Nn \l_tmpa_fp {#2} + } + \prop_map_inline:Nn \g__ptxcd_subtask_points_collector_prop { + \tl_put_right:Nn \l_tmpa_tl {#1=#2,} + } + \prop_map_inline:Nn \g__ptxcd_loaded_points_prop { + \tl_put_right:Nn \l_tmpb_tl {#1=#2,} + } + \tl_if_eq:NNF \l_tmpa_tl \l_tmpb_tl { + \msg_warning:nn {tudaexercise} {points-differ} + } + \iow_now:Nx \@auxout{ + \exp_not:N \ptxcd@LoadPoints[\the\c@task][\fp_use:N \l_tmpa_fp]{\l_tmpa_tl} + } + } + \cs_new:Nn \__ptxcd_getPoints:n { + \prop_if_in:NnTF \g__ptxcd_loaded_points_prop {#1} + {\prop_item:Nn \g__ptxcd_loaded_points_prop {#1}} + {\nfss@text{\reset@font\bfseries??}} + } + \cs_generate_variant:Nn \__ptxcd_getPoints:n {x} + \newcommand{\getPoints}[1]{\__ptxcd_getPoints:x {#1}} + \newcommand{\refPoints}[1]{ + \edef\x{#1} + \cs_if_exist:cTF {r@\x} { + \str_if_in:cnTF {r@\x} {subtask} { + \tl_set_eq:Nc \l_tmpa_tl {r@\x} + \getPoints{\tl_item:Nn \l_tmpa_tl {2}\tl_item:Nn \l_tmpa_tl {1}} + } { + \getPoints{\tl_head:v {r@\x}} + } + }{ + \nfss@text{\reset@font\bfseries??} + } + } + \newcommand{\getPointsTotal}{ + \fp_use:N \g__ptxcd_points_total_fp + } +\NewDocumentCommand{\getTaskProperty}{O{\@currenttasklabel}m}{ + \exp_args:Ne \tl_show:n {#1-#2} + \prop_show:N \g__ptxcd_property_collector_prop + \prop_if_in:NnTF \g__ptxcd_property_collector_prop {#1-#2} + {\prop_item:Nn \g__ptxcd_property_collector_prop {#1-#2}} + {{\nfss@text{\reset@font\bfseries??}}} +} - \newcommand{\getPointsTotal}{ - \fp_use:N \g__ptxcd_points_total_fp - } + \NewDocumentCommand{\mapPoints}{sO{1}m}{ + \mapTasks[skip-zero-points=true,\IfBooleanF{#1}{subtask=false},start-task=#2]{#3}{#3} + } +\cs_new:Nn \__ptxcd_point_mapping_aux:nnn { + \bool_set_true:c {l__ptxcd_#1_bool} + \cs_set:ce {__ptxcd_cached_#1_counter:} {\int_eval:n {\value{#1}}} + \setcounter{#1}{#2} +\bool_while_do:cn {l__ptxcd_#1_bool} { + \prop_get:NeNTF \g__ptxcd_loaded_points_prop {\use:c {#1label}} \l_tmpa_tl { + \bool_if:NT \l__ptxcd_skip_zero_points_bool + {\fp_compare:nF {\l_tmpa_tl = 0}} + \use:n + { + \tl_build_put_right:Ne \l_ptxcd_tmp_tl { + \exp_not:c {__ptxcd_map_points_#1:nn} {\use:c {#1label}} {\l_tmpa_tl} + } + } + #3 + \stepcounter{#1} + } {\bool_set_false:c {l__ptxcd_#1_bool}} + } + \setcounter{#1}{\use:c {__ptxcd_cached_#1_counter:}} +} +\keys_define:nn {ptxcd/task-mapping} { + task .bool_set:N = \l__ptxcd_task_bool, + task .initial:n = false, + subtask .bool_set:N = \l__ptxcd_subtask_bool, + subtask .initial:n = false, + skip-zero-points .bool_set:N = \l__ptxcd_skip_zero_points_bool, + skip-zero-points .initial:n = false, + start-task .int_set:N = \l__ptxcd_start_task_int, + start-task .initial:n = 1, +} - \NewDocumentCommand{\mapPoints}{sO{1}m}{ - \cs_gset_nopar:Nn \__ptxcd_map_points_helper:nn {#3} - \prop_if_empty:NTF \g__ptxcd_loaded_points_prop { - \msg_warning:nn {tudaexercise} {empty-point-mapping} - \__ptxcd_map_points_helper:nn {?task?} {?points?} - }{ - \int_gset:Nn \g_ptxcd_tmp_int {\value{task}} - \setcounter{task}{#2} - \tl_gclear:N \g_ptxcd_tmp_tl - \bool_gset_true:N \g_tmpa_bool - \bool_while_do:Nn \g_tmpa_bool - { - \exp_args:NNx \prop_get:NnNTF \g__ptxcd_loaded_points_prop {\thetask} \l_tmpa_tl - { - \fp_compare:nF {\l_tmpa_tl = 0} - { - \tl_gput_right:Nn \g_ptxcd_tmp_tl {\__ptxcd_map_points_helper:nn} - \tl_gput_right:Nx \g_ptxcd_tmp_tl {{\thetask} {\l_tmpa_tl}} - } - } - {\bool_gset_false:N \g_tmpa_bool} - \stepcounter{task} - } - \setcounter{task}{\int_use:N \g_ptxcd_tmp_int} - \g_ptxcd_tmp_tl - } +\NewDocumentCommand{\mapTasks}{O{}+m+m}{ + \cs_gset:Ne \__ptxcd_restore_task_counters: { + \exp_not:N \setcounter{task}{\the\value{task}} + \exp_not:N \setcounter{subtask}{\the\value{subtask}} + } + \group_begin: + \keys_set:ne {ptxcd/task-mapping} { + task = true, + subtask=true, + #1 + } + \cs_gset:Nn \__ptxcd_map_points_task:nn {#2} + \cs_gset:Nn \__ptxcd_map_points_subtask:nn {#3} + + \prop_if_empty:NTF \g__ptxcd_loaded_points_prop { + \msg_warning:nn {tudaexercise} {empty-point-mapping} + \tl_set:Nn \l_ptxcd_tmp_tl {\__ptxcd_map_points_task:nn {?task?} {?points?}} + } { + \tl_build_begin:N \l_ptxcd_tmp_tl + \exp_args:Nne \use:n { + \bool_if:NTF \l__ptxcd_task_bool \use:n \use_ii:nn + {\__ptxcd_point_mapping_aux:nnn {task} {\int_use:N \l__ptxcd_start_task_int}} + }{ + \bool_if:NT \l__ptxcd_subtask_bool { + \exp_not:n { + \bool_set_true:N \l__ptxcd_subtask_bool + \__ptxcd_point_mapping_aux:nnn {subtask} {1} {} + } } - + } + \tl_build_end:N \l_ptxcd_tmp_tl + } + \cs_gset_eq:NN \g_ptxcd_tmp_tl \l_ptxcd_tmp_tl + \exp_last_unbraced:No + \group_end: + \g_ptxcd_tmp_tl + \ifhmode\else\ifvoid\@arstrutbox\else\noalign\fi\fi + {\__ptxcd_restore_task_counters:} + } } { - \newcommand{\getPoints}[1]{ - \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\getPoints} - } - \newcommand{\refPoints}[1]{ - \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\refPoints} - } - \newcommand{\getPointsTotal}[1]{ - \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\getPointsTotal} - } - - \NewDocumentCommand{\mapPoints}{som} { - \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\mapPoints} - } + \newcommand{\getPoints}[1]{ + \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\getPoints} + } + \newcommand{\refPoints}[1]{ + \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\refPoints} + } + \newcommand{\getPointsTotal}[1]{ + \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\getPointsTotal} + } + \NewDocumentCommand{\mapPoints}{som} { + \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\mapPoints} + } + \NewDocumentCommand{\getTaskProperty}{om}{ + \msg_error:nnn {tudaexercise} {point-referencing-disabled} {\getTaskProperty} + } } - -\cs_new:Nn \__ptxcd_map_points_helper:nn {#1-#2} - - +\int_new:N \g__ptxcd_max_task_int \NewDocumentCommand{\ptxcd@LoadPoints}{oO{0}m}{ - \prop_gset_from_keyval:Nn \g__ptxcd_loaded_points_prop { - #3 - } - \fp_gset:Nn \g__ptxcd_points_total_fp {#2} + \IfNoValueF{#1}{\int_gset:Nn \g__ptxcd_max_task_int {#1}} + \prop_gset_from_keyval:Nn \g__ptxcd_loaded_points_prop { + #3 + } + \fp_gset:Nn \g__ptxcd_points_total_fp {#2} } - - \endinput -%End of class tudaexercise.cls +%% +%% End of file `tudaexercise.cls'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty b/Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty index 9fb3ad06005..194a9bbf10b 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudafonts.sty @@ -1,10 +1,18 @@ -%% This is file `tudafonts.sty' version 3.41 (2024-07-02), +%% +%% This is file `tudafonts.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudafonts.dtx (with options: `package') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,106 +21,93 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\NeedsTeXFormat{LaTeX2e} +%% +\NeedsTeXFormat{LaTeX2e}[2022/06/01] \ProvidesPackage{tudafonts} - [\filedate\space\fileversion\space - font loading for TUDa-CI, TU Darmstadt's Corporate Design] - + [2025-01-26 v4.00 + font setup for TUDa-CI, TU Darmstadt's Corporate Design] \expandafter\newif\csname if@ptxcd@T1\endcsname - \DeclareOption{T1}{\csname @ptxcd@T1true\endcsname} \ProcessOptions\relax - \RequirePackage{iftex} \RequirePackage{anyfontsize} - \ifPDFTeX - \csname @ptxcd@T1true\endcsname - %Fallback for older versions - \expandafter\ifx\csname DeclareUnicodeCharacter\endcsname\relax - \RequirePackage[utf8]{inputenc} - \fi - \expandafter\ifx\csname texteuro\endcsname\relax - \RequirePackage{textcomp} - \fi - \DeclareUnicodeCharacter{20AC}{\texteuro} + \csname @ptxcd@T1true\endcsname + %Fallback for older versions + \expandafter\ifx\csname DeclareUnicodeCharacter\endcsname\relax + \RequirePackage[utf8]{inputenc} + \fi + \expandafter\ifx\csname texteuro\endcsname\relax + \RequirePackage{textcomp} + \fi + \DeclareUnicodeCharacter{20AC}{\texteuro} \fi - \csname if@ptxcd@T1\endcsname - \ifLuaTeX - \RequirePackage[utf8]{luainputenc} - \fi - \RequirePackage{XCharter}%activates T1 - \PassOptionsToPackage{type1}{roboto} - \PassOptionsToPackage{type1}{roboto-mono} - %Workaround for missing ligature replacements with roboto in T1 - \ifXeTeX - \else - \RequirePackage{microtype} - \DisableLigatures{encoding = *, family=\sfdefault,shape = sc } - \fi + \ifLuaTeX + \RequirePackage[utf8]{luainputenc} + \fi + \RequirePackage{XCharter}%activates T1 + \PassOptionsToPackage{type1}{roboto} + \PassOptionsToPackage{type1}{roboto-mono} + % Workaround for missing ligature replacements with roboto in T1 + \ifXeTeX + \else + \RequirePackage{microtype} + \DisableLigatures{encoding = *, family=\sfdefault,shape = sc } + \fi \else - \RequirePackage{fontspec} - \setmainfont{XCharter} + \RequirePackage{fontspec} + \setmainfont{XCharter} \fi - \RequirePackage{roboto} - \csname if@ptxcd@T1\endcsname - \newcommand\robotoblackspaced{% - \robotoblack - \lsstyle - } + \newcommand\robotoblackspaced{% + \robotoblack + \lsstyle + } \else - \newfontfamily\robotoblackspaced - [ Numbers = {\roboto@figurealign,\roboto@figurestyle}, - UprightFont = *-Black , - ItalicFont = *-BlackItalic, - LetterSpace=26, - WordSpace=2.2 - ] - {Roboto} + \newfontfamily\robotoblackspaced + [ Numbers = {\roboto@figurealign,\roboto@figurestyle}, + UprightFont = *-Black , + ItalicFont = *-BlackItalic, + LetterSpace=26, + WordSpace=2.2 + ] + {Roboto} \fi - \IfFileExists{roboto-mono.sty}{ - \RequirePackage{roboto-mono} + \RequirePackage{roboto-mono} }{ - \PackageWarningNoLine{tudafonts}{ - The font package roboto-mono.sty could not be found. Probably your TeX-distribution is outdated.\MessageBreak - For correct font setup either install it manually or update you distribution} + \PackageWarningNoLine{tudafonts}{% + The font package roboto-mono.sty could not be found. + Probably your TeX-distribution is outdated.\MessageBreak + For correct font setup either install it manually or update you distribution} } - \def\ptxcd@sffamily@lining{\robototlf} - \let\accentfont\robotoslab \DeclareTextFontCommand{\textaccent}{\accentfont} - -%adjust LaTeX kerning to font \DeclareRobustCommand{\LaTeX}{% -{L\setbox\z@\hbox{\check@mathfonts \fontsize\sf@size\z@ - \math@fontsfalse\selectfont A}\kern-.57\wd\z@ - \sbox\tw@ T\vbox to \ht\tw@{\copy\z@ \vss}\kern-.2\wd\z@}% -{% - \ifdim\fontdimen1\font=\z@ \else \count\z@=\fontdimen5\font - \multiply\count\z@ by 64\relax\divide\count\z@ by\p@ - \count\tw@=\fontdimen1\font \multiply\count\tw@ by\count\z@ - \divide\count\tw@ by 64\relax\divide\count\tw@ by\tw@ - \kern-\the\count\tw@ sp\relax\fi}% -\TeX} - -%%----------------------------------------------------- + {L\setbox\z@\hbox{\check@mathfonts \fontsize\sf@size\z@ + \math@fontsfalse\selectfont A}\kern-.57\wd\z@ + \sbox\tw@ T\vbox to \ht\tw@{\copy\z@ \vss}\kern-.2\wd\z@}% + {% + \ifdim\fontdimen1\font=\z@ \else \count\z@=\fontdimen5\font + \multiply\count\z@ by 64\relax\divide\count\z@ by\p@ + \count\tw@=\fontdimen1\font \multiply\count\tw@ by\count\z@ + \divide\count\tw@ by 64\relax\divide\count\tw@ by\tw@ + \kern-\the\count\tw@ sp\relax\fi}% + \TeX} \endinput +%% +%% End of file `tudafonts.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls index 52b86eb3321..962062ead3f 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaleaflet.cls @@ -1,10 +1,20 @@ -%% This is file `tudaleaflet.cls' version 3.41 (2024-07-02), +%% +%% This is file `tudaleaflet.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudaleaflet.dtx (with options: `class,initialization') +%% tuda-ci.dtx (with options: `options,leaflet,print') +%% tudaleaflet.dtx (with options: `class,body') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,302 +23,311 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\NeedsTeXFormat{LaTeX2e} - -\ProvidesExplPackage{tudaleaflet}{\filedate}{\fileversion}{Leaflets using the Corporate Design of TU Darmstadt} - +%% +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\ProvidesExplPackage{tudaleaflet}{2025-01-26}{4.00}{Leaflets using the Corporate Design of TU Darmstadt} \str_const:Nn \c__ptxcd_base_str {leaflet} - \tl_new:N \g_ptxcd_sponsor_pos_tl \keys_define:nn {ptxcd/leaflet} { - logofile .tl_gset:N = \g_ptxcd_logofile_tl, - logofile .initial:n = tuda_logo, - color .meta:n = {accentcolor=#1}, - accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}}, - textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}}, - identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}}, - colorback .bool_gset:N = \g_ptxcd_colorback_bool, - colorback .initial:n = true, - colorback .default:n = true, - colorbacktitle .bool_gset:N = \g_ptxcd_colorbacktitle_bool, - colorbacktitle .initial:n = false, - colorbacktitle .default:n = true, - colorbacksubtitle .bool_set:N = \g_ptxcd_colorbacksubtitle_bool, - colorbacksubtitle .initial:n = false, - colorbacksubtitle .default:n = true, - sponsor .choices:nn = {title,lastfoot,manual}{\tl_gset_eq:NN \g_ptxcd_sponsor_pos_tl \l_keys_choice_tl}, - sponsor .initial:n = title, - 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/leaflet} {colorback=false, departmentlogofile=tuda_maschinenbau_logo} - }, - department .initial:n = default, - department / unknown .code:n = { - \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} - }, - departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, - departmentconfigprefix .initial:n = tuda, - mecheng .meta:n = {department=mecheng}, - departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, - departmentlogofile .initial:n =, + sponsor .choices:nn = {title,lastfoot,manual}{\tl_gset_eq:NN \g_ptxcd_sponsor_pos_tl \l_keys_choice_tl}, + sponsor .initial:n = title, + logofile .tl_gset:N = \g_ptxcd_logofile_tl, + logofile .initial:n = tuda_logo, + accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool, + accept-missing-logos .initial:n = false, + accept-missing-logos .usage:n = load, + accept-missing-logos .default:n = true, + 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} + \exp_args:Ne \keys_set:ne { + + ptxcd / \c__ptxcd_base_str + }{ + colorback=false, + departmentlogofile=tuda_maschinenbau_logo, + } + }, + + department .initial:n = default, + department / unknown .code:n = { + \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} + }, + departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, + departmentconfigprefix .initial:n = tuda, + departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, + departmentlogofile .initial:n =, + mecheng .meta:n = {department=mecheng}, +%% color options +%% color options + color .meta:n = {accentcolor=#1}, + accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}}, + textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}}, + identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}}, + colorback .bool_gset:N = \g_ptxcd_colorback_bool, + colorback .default:n = true, + colorback .initial:n = true, + colorbacktitle .bool_gset:N = \g_ptxcd_colorbacktitle_bool, + colorbacktitle .initial:n = false, + colorbacktitle .default:n = true, + colorbacksubtitle .bool_set:N = \g_ptxcd_colorbacksubtitle_bool, + colorbacksubtitle .initial:n = false, + colorbacksubtitle .default:n = true, + colorback / title .code:n = + \bool_gset_true:N \g_ptxcd_colorbacktitle_bool + \bool_gset_true:N \g_ptxcd_colorback_bool + \bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool, + colorback / body .code:n = + \bool_gset_false:N \g_ptxcd_colorbacktitle_bool + \bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool + \bool_gset_true:N \g_ptxcd_colorback_bool, + colorback / head .code:n = + \bool_gset_true:N \g_ptxcd_colorbacktitle_bool + \bool_gset_true:N \g_ptxcd_colorback_bool + \bool_gset_true:N \g_ptxcd_colorbacksubtitle_bool, +} +\cs_if_exist:NT \TUDaDefaultBuildOptions { + \exp_args:Ne \keys_set:ne { ptxcd / + \c__ptxcd_base_str + } { + \TUDaDefaultBuildOptions + } +} +\cs_new:Nn \__ptxcd_insert_logo: { + \bool_if:NTF \g_ptxcd_logo_workaround_bool { + \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf} + \use_ii:nn + \use_i:nn + } { + \use_ii:nn + } + {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}} + {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}} } - \DeclareOption*{\PassOptionsToClass{\CurrentOption}{leaflet}} \ProcessKeyOptions[ptxcd/leaflet] \ProcessOptions\relax - \bool_if:NT \g_ptxcd_colorbacksubtitle_bool { - \bool_if:NF \g_ptxcd_colorbacktitle_bool { - \msg_new:nnnn {ptxcd/leaflet} {incompatible-options} {You~cannot~use~the~setting~#1~at~the~same~time~as~#2.} {See~TUDaLeaflet~documentation~for~further~information.} - \msg_error:nn {ptxcd/leaflet} {incompatible-options} {colorbacksubtitle=true} {colorbacktitle=false} - } + \bool_if:NF \g_ptxcd_colorbacktitle_bool { + \msg_new:nnnn {ptxcd/leaflet} {incompatible-options} {You~cannot~use~the~setting~#1~at~the~same~time~as~#2.} {See~TUDaLeaflet~documentation~for~further~information.} + \msg_error:nn {ptxcd/leaflet} {incompatible-options} {colorbacksubtitle=true} {colorbacktitle=false} + } } - \LoadClass[notumble]{leaflet} - -%to workaround incompatibilities between leaflet and scrextend \let\sectfont\relax \RequirePackage{scrextend} \RequirePackage{scrlayer} \PassOptionsToPackage{cmyk}{tudacolors} \RequirePackage[paper=leaflet]{tudarules} - - \setlength{\headheight}{1cm}%to add headline \setlength{\footheight}{2mm} \setmargins{10mm}{\dimexpr10mm+\headheight\relax}{10mm}{10mm}%Hardcoded, according to the guideline - \DeclareNewLayer[ - head, - mode=picture, - contents=\putUL{\box_use:N \ptxcd_headrule_box} + head, + mode=picture, + contents=\putUL{\box_use:N \ptxcd_headrule_box} ]{TUDa.flyer.headline} - \DeclareNewLayer[ - foot, - mode=picture, - height=\z@, - voffset=\paperheight-14mm, - contents=\smash{\box_use:N \ptxcd_footrule_box} + foot, + mode=picture, + height=\z@, + voffset=\paperheight-14mm, + contents=\smash{\box_use:N \ptxcd_footrule_box} ]{TUDa.flyer.footline} - \DeclareNewPageStyleByLayers{TUDa.flyer}{ - TUDa.flyer.headline, - TUDa.flyer.footline, + TUDa.flyer.headline, + TUDa.flyer.footline, } - -% Title specific additions to pagestyle - \DeclareNewLayer[textarea,mode=picture, -addheight=\headheight-\box_dp:N \ptxcd_headrule_box+\dp\strutbox, -contents={ - \bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}} - \tl_if_empty:NTF \g_ptxcd_titleimage_code_tl - {\bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}}} - {\putUL{\color{identbarcolor}\raisebox{-\height}{\parbox[t]{\textwidth}{ - \let\width\layerwidth - \let\height\layerheight - \g_ptxcd_titleimage_code_tl - }}}} - \put(\dim_to_decimal_in_unit:nn {\layerwidth-\__ptxcd_logowidth: - } {\unitlength}, - \dim_to_decimal_in_unit:nn {\layerheight-\box_ht:N \g_ptxcd_title_info_box - .5\c_ptxcd_logoheight_dim} {\unitlength}){ - \rlap{\box_use:N \g_ptxcd_title_info_box} - } -} + addheight=\headheight-\box_dp:N \ptxcd_headrule_box+\dp\strutbox, + contents={ + \bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}} + \tl_if_empty:NTF \g_ptxcd_titleimage_code_tl + {\bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}}} + {\putUL{\color{identbarcolor}\raisebox{-\height}{\parbox[t]{\textwidth}{ + \let\width\layerwidth + \let\height\layerheight + \g_ptxcd_titleimage_code_tl + }}}} + \put(\dim_to_decimal_in_unit:nn {\layerwidth-\__ptxcd_logowidth: + } {\unitlength}, + \dim_to_decimal_in_unit:nn {\layerheight-\box_ht:N \g_ptxcd_title_info_box - .5\c_ptxcd_logoheight_dim} {\unitlength}){ + \rlap{\box_use:N \g_ptxcd_title_info_box} + } + } ]{title.TUDa.image} - \DeclareNewLayer[textarea,background,mode=picture, - contents={ - \bool_if:NT \g_ptxcd_colorbacktitle_bool { - \color{identbarcolor}\rule{\layerwidth}{\layerheight} - } - } + contents={ + \bool_if:NT \g_ptxcd_colorbacktitle_bool { + \color{identbarcolor}\rule{\layerwidth}{\layerheight} + } + } ]{title.TUDa.background} - \DeclareNewPageStyleByLayers{title.TUDa}{ - title.TUDa.image, - title.TUDa.background, - TUDa.flyer.headline, - TUDa.flyer.footline, + title.TUDa.image, + title.TUDa.background, + TUDa.flyer.headline, + TUDa.flyer.footline, } - \cs_new:Nn \ptxcd_Setup_Title_box: { - \hbox_gset:Nn \g_ptxcd_title_info_box - { - \parbox{\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}}{ - \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}}} - } - } + \hbox_gset:Nn \g_ptxcd_title_info_box + { + \parbox{\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}}{ + \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}}} + } + } } - \newcommand*\sectionlinesformat[1]{% - \parbox{\linewidth}{ - \rule[\ptxcd_titlerule_sep:]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip - #1\strut\rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par\nointerlineskip - \skip_vertical:n {\ptxcd_titlerule_sep: -.5\dp\strutbox} - \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}} - } + \parbox{\linewidth}{ + \rule[\ptxcd_titlerule_sep:]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip + #1\strut\rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par\nointerlineskip + \skip_vertical:n {\ptxcd_titlerule_sep: -.5\dp\strutbox} + \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}} + } } - -% Titlepage \newcommand*{\raggedtitle}{\raggedright} \renewcommand*{\maketitle}{ - \def\and{,~ } - \hbox_gset:Nn \g_ptxcd_sponsor_box { - \edef\height{\noexpand\dimexpr\dim_eval:n {\__ptxcd_logosep: + .5\c_ptxcd_logoheight_dim}} - \parbox[b]{\textwidth}{% - \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip - \vspace{.1\c_ptxcd_logoheight_dim} - \seq_use:Nn \g_ptxcd_sponsors_seq {\hfill}\par - \addvspace{.1\c_ptxcd_logoheight_dim} - \ifx\@sponsors\@empty - \else - \@sponsors\par - \fi - \par\nointerlineskip\addvspace{\dim_eval:n {.1\c_ptxcd_logoheight_dim-\c_ptxcd_rulesep_dim}} -% \rule{\linewidth}{\g_ptxcd_titlerule_dim} - } - } - \begin{titlepage} - \def\thefootnote{\fnsymbol{footnote}} - \hbox_gset:Nn \g_ptxcd_title_box { - \parbox[t]{\linewidth}{ - \begin{minipage}[b]{\linewidth} - \bool_if:NT \g_ptxcd_colorbacktitle_bool {\color{textonaccentcolor}} - \begin{addmargin}{3mm} - \raggedtitle - \Huge - \usekomafont{disposition} - \usekomafont{title} - \leavevmode% - \@title\strut\par - \vskip0pt - \end{addmargin} - \end{minipage}% - \par\nointerlineskip - \bool_if:NTF \g_ptxcd_colorbacksubtitle_bool - {\textcolor{white}{\rule{\linewidth}{\c_ptxcd_rulesep_dim}}} - {\rule{\linewidth}{\g_ptxcd_titlerule_dim}} - \par - \vspace{\c_ptxcd_rulesep_dim} - \begin{addmargin}{3mm} - \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\color{textonaccentcolor}} - \raggedtitle - \usekomafont{disposition} - {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}% - {% - \usekomafont{author} - \lineskip 0.75em - \@author - \par - }% - {\usekomafont{date}{\@date\par}}% - \end{addmargin}\nointerlineskip - \vspace{\c_ptxcd_rulesep_dim} - \bool_if:NT \g_ptxcd_colorbacktitle_bool - { - \textcolor{white}{\rule{\linewidth}{\c_ptxcd_rulesep_dim}}\par\nointerlineskip - } - \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par - } - } - \ptxcd_adjust_titlepage_style: - \par - \vspace*{\dimexpr.5\c_ptxcd_logoheight_dim-\topskip} - \box_use:N \g_ptxcd_title_box - \par - \vfill\null - \if@twoside - \@tempswatrue - \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax - \else - \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty - \@tempswafalse - \fi\fi - \fi - \fi - \end{titlepage} - \setcounter{footnote}{0}% - \global\let\and\relax + \def\and{,~ } + \hbox_gset:Nn \g_ptxcd_sponsor_box { + \edef\height{\noexpand\dimexpr\dim_eval:n {\__ptxcd_logosep: + .5\c_ptxcd_logoheight_dim}} + \parbox[b]{\textwidth}{% + \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip + \vspace{.1\c_ptxcd_logoheight_dim} + \seq_use:Nn \g_ptxcd_sponsors_seq {\hfill}\par + \addvspace{.1\c_ptxcd_logoheight_dim} + \ifx\@sponsors\@empty + \else + \@sponsors\par + \fi + \par\nointerlineskip\addvspace{\dim_eval:n {.1\c_ptxcd_logoheight_dim-\c_ptxcd_rulesep_dim}} + } + } + \begin{titlepage} + \def\thefootnote{\fnsymbol{footnote}} + \hbox_gset:Nn \g_ptxcd_title_box { + \parbox[t]{\linewidth}{ + \begin{minipage}[b]{\linewidth} + \bool_if:NT \g_ptxcd_colorbacktitle_bool {\color{textonaccentcolor}} + \begin{addmargin}{3mm} + \raggedtitle + \Huge + \usekomafont{disposition} + \usekomafont{title} + \leavevmode% + \@title\strut\par + \vskip0pt + \end{addmargin} + \end{minipage}% + \par\nointerlineskip + \bool_if:NTF \g_ptxcd_colorbacksubtitle_bool + {\textcolor{white}{\rule{\linewidth}{\c_ptxcd_rulesep_dim}}} + {\rule{\linewidth}{\g_ptxcd_titlerule_dim}} + \par + \vspace{\c_ptxcd_rulesep_dim} + \begin{addmargin}{3mm} + \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\color{textonaccentcolor}} + \raggedtitle + \usekomafont{disposition} + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}% + {% + \usekomafont{author} + \lineskip 0.75em + \@author + \par + }% + {\usekomafont{date}{\@date\par}}% + \end{addmargin} + \nointerlineskip + \vspace{\c_ptxcd_rulesep_dim} + \bool_if:NT \g_ptxcd_colorbacktitle_bool + { + \textcolor{white}{\rule{\linewidth}{\c_ptxcd_rulesep_dim}}\par\nointerlineskip + } + \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par + } + } + \ptxcd_adjust_titlepage_style: + \par + \vspace*{\dimexpr.5\c_ptxcd_logoheight_dim-\topskip} + \box_use:N \g_ptxcd_title_box + \par + \vfill\null + \if@twoside + \@tempswatrue + \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax + \else + \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty + \@tempswafalse + \fi\fi + \fi + \fi +\end{titlepage} +\setcounter{footnote}{0}% +\global\let\and\relax } - - -\cs_set:Nn \ptxcd_adjust_titlepage_style: { - \dim_set:Nn \l_tmpa_dim {1\c_ptxcd_logoheight_dim}%\fp_to_dim:n {2.8\baselineskip}} - \dim_compare:nT {\box_ht:N \g_ptxcd_title_box < \l_tmpa_dim} { - \skip_set:Nn \g_ptxcd_title_fill_skip {\dim_eval:n {\l_tmpa_dim - \box_ht:N \g_ptxcd_title_box}} - } - - \dim_set:Nn \l_tmpa_dim { - +\box_ht:N \g_ptxcd_title_box - +.5\c_ptxcd_logoheight_dim - +\box_dp:N \g_ptxcd_title_box - +\g_ptxcd_title_fill_skip - } - \ModifyLayer[ - addvoffset=\l_tmpa_dim, - addheight= -\l_tmpa_dim - ]{title.TUDa.image} - \DeclareNewLayer[clone=TUDa.flyer.footline, - mode=picture, - align=bl, - height=\box_ht:N \g_ptxcd_sponsor_box + \box_dp:N \g_ptxcd_sponsor_box, - addvoffset=-\dp\strutbox, - contents=\raisebox{\depth}{\box_use:N \g_ptxcd_sponsor_box} - ] - {title.TUDa.sponsor} - \exp_args:Nx \tl_if_eq:nnT {\g_ptxcd_sponsor_pos_tl} {title} { - \AddLayersToPageStyle{title.TUDa}{title.TUDa.sponsor} - \ModifyLayer[ - addheight=-\box_ht:N \g_ptxcd_sponsor_box -\box_dp:N \g_ptxcd_sponsor_box-\dp\strutbox - ]{title.TUDa.image} - } - \ModifyLayer[ - addvoffset={-\dim_eval:n {\headheight -\box_ht:N \ptxcd_headrule_box-\box_dp:N \ptxcd_headrule_box }}, - height={ - \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\box_dp:N \g_ptxcd_title_box} - +\box_ht:N \g_ptxcd_title_box+\g_ptxcd_title_fill_skip+.5\c_ptxcd_logoheight_dim+ - \headheight -\box_ht:N \ptxcd_headrule_box-\box_dp:N \ptxcd_headrule_box - } - ]{title.TUDa.background} - - \AddLayersToPageStyle{title.TUDa}{title.TUDa.background} - \thispagestyle{title.TUDa} - \nointerlineskip - \ptxcd_Setup_Title_box: - \par - \vspace*{\skip_use:N \g_ptxcd_title_fill_skip} - \setlength{\fboxsep}{\z@} +\cs_set:Nn \ptxcd_adjust_titlepage_style: { + \dim_set:Nn \l_tmpa_dim {1\c_ptxcd_logoheight_dim}%\fp_to_dim:n {2.8\baselineskip}} + \dim_compare:nT {\box_ht:N \g_ptxcd_title_box < \l_tmpa_dim} { + \skip_set:Nn \g_ptxcd_title_fill_skip {\dim_eval:n {\l_tmpa_dim - \box_ht:N \g_ptxcd_title_box}} + } + \dim_set:Nn \l_tmpa_dim { + +\box_ht:N \g_ptxcd_title_box + +.5\c_ptxcd_logoheight_dim + +\box_dp:N \g_ptxcd_title_box + +\g_ptxcd_title_fill_skip + } + \ModifyLayer[ + addvoffset=\l_tmpa_dim, + addheight= -\l_tmpa_dim + ]{title.TUDa.image} + \DeclareNewLayer[clone=TUDa.flyer.footline, + mode=picture, + align=bl, + height=\box_ht:N \g_ptxcd_sponsor_box + \box_dp:N \g_ptxcd_sponsor_box, + addvoffset=-\dp\strutbox, + contents=\raisebox{\depth}{\box_use:N \g_ptxcd_sponsor_box} + ] + {title.TUDa.sponsor} + \exp_args:Nx \tl_if_eq:nnT {\g_ptxcd_sponsor_pos_tl} {title} { + \AddLayersToPageStyle{title.TUDa}{title.TUDa.sponsor} + \ModifyLayer[ + addheight=-\box_ht:N \g_ptxcd_sponsor_box -\box_dp:N \g_ptxcd_sponsor_box-\dp\strutbox + ]{title.TUDa.image} + } + \ModifyLayer[ + addvoffset={-\dim_eval:n {\headheight -\box_ht:N \ptxcd_headrule_box-\box_dp:N \ptxcd_headrule_box }}, + height={ + \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\box_dp:N \g_ptxcd_title_box} + +\box_ht:N \g_ptxcd_title_box+\g_ptxcd_title_fill_skip+.5\c_ptxcd_logoheight_dim+ + \headheight -\box_ht:N \ptxcd_headrule_box-\box_dp:N \ptxcd_headrule_box + } + ]{title.TUDa.background} + \AddLayersToPageStyle{title.TUDa}{title.TUDa.background} + \thispagestyle{title.TUDa} + \nointerlineskip + \ptxcd_Setup_Title_box: + \par + \vspace*{\skip_use:N \g_ptxcd_title_fill_skip} + \setlength{\fboxsep}{\z@} } -% - \pagestyle{TUDa.flyer} - \RequirePackage{tudafonts} \renewcommand*{\familydefault}{\sfdefault} - -%Titlepage font setup -%compatibility after disposition was removed from scrextend \expandafter\ifx\csname scr@fnt@disposition\endcsname\relax - \newkomafont{disposition} + \newkomafont{disposition} \fi \setkomafont{disposition}{\bfseries} \setkomafont{title}{\Huge} @@ -316,137 +335,115 @@ contents={ \setkomafont{date}{} \setkomafont{author}{} \newkomafont{institution}{} - -%Adjust section font setup to be komafont compatible \newkomafont{section}{} \newkomafont{subsection}{} \newkomafont{subsubsection}{} - \renewcommand\section{\@startsection{section}{1}{\z@}% - {-3.5ex \@plus -.75ex}% - {1ex}% - {\usekomafont{disposition}\usekomafont{section}\sectfont}} + {-3.5ex \@plus -.75ex}% + {1ex}% + {\usekomafont{disposition}\usekomafont{section}\sectfont}} \renewcommand\subsection{\@startsection{subsection}{2}{\z@}% - {-2.5ex plus -.5ex}% - {1\p@}% - {\usekomafont{disposition}\usekomafont{subsection}\sectfont}} + {-2.5ex plus -.5ex}% + {1\p@}% + {\usekomafont{disposition}\usekomafont{subsection}\sectfont}} \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% - {-2.5ex plus -.5ex}% - {-1em}% - {\usekomafont{disposition}\usekomafont{subsubsection}\sectfont}} - + {-2.5ex plus -.5ex}% + {-1em}% + {\usekomafont{disposition}\usekomafont{subsubsection}\sectfont}} \clist_map_inline:nn {section, subsection, subsubsection} { - \cs_set_eq:cc {ptxcd_save_#1} {#1} - \exp_args:Nc \RenewDocumentCommand{#1}{sO{##3}m}{ - \IfBooleanTF{##1}{ - \use:c {ptxcd_save_#1}*{\sectionlinesformat{##3}} - }{ - \use:c {ptxcd_save_#1}[##2]{\sectionlinesformat{##3}} - } - } + \cs_set_eq:cc {ptxcd_save_#1} {#1} + \exp_args:Nc \RenewDocumentCommand{#1}{sO{##3}m}{ + \IfBooleanTF{##1}{ + \use:c {ptxcd_save_#1}*{\sectionlinesformat{##3}} + }{ + \use:c {ptxcd_save_#1}[##2]{\sectionlinesformat{##3}} + } + } } - \cs_new:Nn \ptxcd_titlerule_sep: {\the\dp\strutbox} - \def\subtitle#1{\def\@subtitle{#1}} \subtitle{} - \seq_new:N \g_ptxcd_sponsors_seq \def\AddSponsor{\seq_gput_right:Nn \g_ptxcd_sponsors_seq} - \def\sponsors#1{\def\@sponsors{#1}} \sponsors{} - \box_new:N \g_ptxcd_sponsor_box - \newcommand*{\footergraphics}[1]{ - \begingroup - \let\height\g_ptxcd_footheight_dim - \hbox_gset:Nn \g_ptxcd_footergraphics_box {#1} - \endgroup + \begingroup + \let\height\g_ptxcd_footheight_dim + \hbox_gset:Nn \g_ptxcd_footergraphics_box {#1} + \endgroup } - \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}} - \author{}%to remove warning if no author given - \box_new:N \g_ptxcd_title_box \skip_new:N \g_ptxcd_title_fill_skip - \seq_new:N \g_ptxcd_title_info_seq \box_new:N \g_ptxcd_title_info_box - \cs_new:Nn \ptxcd_make_title_info_box:n { - \setlength{\fboxsep}{1.5mm}% - \colorbox{InfoBox}{ - \makebox[\dim_eval:n {\__ptxcd_logowidth:-\fboxsep}][r]{ - \parbox{2\c_ptxcd_logoheight_dim}{ - \usekomafont{institution} - \raggedright% - #1 - }}} + \setlength{\fboxsep}{1.5mm}% + \colorbox{InfoBox}{ + \makebox[\dim_eval:n {\__ptxcd_logowidth:-\fboxsep}][r]{ + \parbox{2\c_ptxcd_logoheight_dim}{ + \usekomafont{institution} + \raggedright% + #1 + }}} } - \cs_new:Nn \ptxcd_make_title_logo_box:n { - \setlength{\fboxsep}{\z@} - \parbox{\__ptxcd_logowidth:}{ - \colorbox{InfoBox}{ - \rlap{ - \makebox[\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}][r]{ - \colorbox{InfoBox}{#1\hspace{.3\c_ptxcd_logoheight_dim}} - } - } - } - } + \setlength{\fboxsep}{\z@} + \parbox{\__ptxcd_logowidth:}{ + \colorbox{InfoBox}{ + \rlap{ + \makebox[\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}][r]{ + \colorbox{InfoBox}{#1\hspace{.3\c_ptxcd_logoheight_dim}} + } + } + } + } } - \newcommand{\addTitleBox}[1]{\seq_gput_right:Nn \g_ptxcd_title_info_seq {\ptxcd_make_title_info_box:n {#1}}} - \NewDocumentCommand{\addTitleBoxLogo}{sm}{ - \IfBooleanTF{#1}{ - \seq_gput_right:Nn \g_ptxcd_title_info_seq { - \ptxcd_make_title_logo_box:n {#2} - } - }{ - \seq_gput_right:Nn \g_ptxcd_title_info_seq { - \ptxcd_make_title_logo_box:n { - \hbox_set:Nn \l_tmpa_box { - \includegraphics[width=1.5\c_ptxcd_logoheight_dim]{#2} - } - \dim_set:Nn \l_tmpa_dim {2\c_ptxcd_logoheight_dim/3} - \dim_compare:nTF {\box_ht:N \l_tmpa_box > \l_tmpa_dim} - {\includegraphics[width=\l_tmpa_dim]{#2}} - {\box_use:N \l_tmpa_box} - } - } - } + \IfBooleanTF{#1}{ + \seq_gput_right:Nn \g_ptxcd_title_info_seq { + \ptxcd_make_title_logo_box:n {#2} + } + }{ + \seq_gput_right:Nn \g_ptxcd_title_info_seq { + \ptxcd_make_title_logo_box:n { + \hbox_set:Nn \l_tmpa_box { + \includegraphics[width=1.5\c_ptxcd_logoheight_dim]{#2} + } + \dim_set:Nn \l_tmpa_dim {2\c_ptxcd_logoheight_dim/3} + \dim_compare:nTF {\box_ht:N \l_tmpa_box > \l_tmpa_dim} + {\includegraphics[width=\l_tmpa_dim]{#2}} + {\box_use:N \l_tmpa_box} + } + } + } } - -\addTitleBoxLogo*{\makebox[\linewidth][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}} +\addTitleBoxLogo*{\makebox[\linewidth][l]{\__ptxcd_insert_logo:}} \date{} - \let\insertSponsors\relax - \str_case:Vn \g_ptxcd_sponsor_pos_tl { - {lastfoot}{ - \AtEndDocument{ - \par\vspace*{\fill} - \leavevmode\raisebox{\dimexpr\depth-\baselineskip}[0pt][0pt]{ - \box_use:N \g_ptxcd_sponsor_box - } - } - } - {manual} { - \renewcommand*{\insertSponsors}{\par\vfill\leavevmode\box_use:N \g_ptxcd_sponsor_box\par\nobreak\nointerlineskip\rule{\linewidth}{\g_ptxcd_titlerule_dim} - } + {lastfoot}{ + \AtEndDocument{ + \par\vspace*{\fill} + \leavevmode\raisebox{\dimexpr\depth-\baselineskip}[0pt][0pt]{ + \box_use:N \g_ptxcd_sponsor_box + } + } + } + {manual} { + \renewcommand*{\insertSponsors}{\par\vfill\leavevmode\box_use:N \g_ptxcd_sponsor_box\par\nobreak\nointerlineskip\rule{\linewidth}{\g_ptxcd_titlerule_dim} + } + } } -} - \file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str.cfg} - \ptxcd_makeheadrule[color=identbarcolor]{ptxcd_headrule} \ptxcd_makefootrule{ptxcd_footrule} - \endinput +%% +%% End of file `tudaleaflet.cls'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls index 9eb3a15953a..73f6a022df8 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaletter.cls @@ -1,10 +1,23 @@ -%% This is file `tudaletter.cls' version 3.41 (2024-07-02), +%% +%% This is file `tudaletter.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudaletter.dtx (with options: `class,initialization') +%% tuda-ci.dtx (with options: `options,letter,print,process-options,pdfa') +%% tudaletter.dtx (with options: `class,packages') +%% tuda-ci.dtx (with options: `pdfx') +%% tudaletter.dtx (with options: `class,body') +%% tuda-ci.dtx (with options: `xmpdata') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,201 +26,230 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\NeedsTeXFormat{LaTeX2e} - -\ProvidesExplClass{tudaletter} - {\filedate}{\fileversion}{Letters for TUDa-CI, Corporate Design of TU Darmstadt} - +%% +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\ProvidesExplClass{tudaletter}{2025-01-26}{4.00}{Letters for TUDa-CI, Corporate Design of TU Darmstadt} \str_const:Nn \c__ptxcd_base_str {letter} \str_new:N \g_ptxcd_department_str \bool_new:N \g__ptxcd_adjust_textwidth_bool - \keys_define:nn {ptxcd/letter} { - logo .bool_gset:N = \g__ptxcd_letter_logo_bool, - logo .default:n = true, - logo .initial:n = true, - premium .bool_gset:N = \g__ptxcd_letter_premium_bool, - premium .default:n = true, - accentcolor .code:n = \PassOptionsToPackage{accentcolor=#1}{tudacolors}, - firstpagenumber .bool_gset:N = \g__ptxcd_firstpagenumber_bool, - firstpagenumber .initial:n = true, - raggedright .bool_gset:N = \g__ptxcd_letter_raggedright_bool, - pdfa .bool_gset:N = \g_ptxcd_pdfa_bool, - pdfa .initial:n = true, - pdfx .bool_gset:N = \g_ptxcd_pdfx_bool, - pdfx .initial:n = true, - logofile .tl_gset:N = \g_ptxcd_logofile_tl, - logofile .initial:n = tuda_logo, - 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/letter}{departmentlogofile=tuda_maschinenbau_logo,headrule=false,logo=false,textwidth=narrow} - \PassOptionsToPackage{identbar=Primary1,accent=Primary2}{tudacolors} - }, - department .initial:n = default, - department / unknown .code:n = { - \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} - }, - departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, - departmentconfigprefix .initial:n = tuda, - mecheng .meta:n = {department=mecheng}, - departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, - departmentlogofile .initial:n =, - headrule .bool_gset:N = \g__ptxcd_letter_headrule_bool, - headrule .initial:n = true, - headrule .default:n = true, - textwidth .choice:, - textwidth / wide .code:n = \bool_gset_true:N \g__ptxcd_adjust_textwidth_bool, - textwidth / narrow .code:n = \bool_gset_false:N \g__ptxcd_adjust_textwidth_bool, - textwidth .initial:n = wide, + logo .bool_gset:N = \g__ptxcd_letter_logo_bool, + logo .default:n = true, + logo .initial:n = true, + premium .bool_gset:N = \g__ptxcd_letter_premium_bool, + premium .default:n = true, + firstpagenumber .bool_gset:N = \g__ptxcd_firstpagenumber_bool, + firstpagenumber .initial:n = true, + raggedright .bool_gset:N = \g__ptxcd_letter_raggedright_bool, + headrule .bool_gset:N = \g__ptxcd_letter_headrule_bool, + headrule .initial:n = true, + headrule .default:n = true, + textwidth .choice:, + textwidth / wide .code:n = \bool_gset_true:N \g__ptxcd_adjust_textwidth_bool, + textwidth / narrow .code:n = \bool_gset_false:N \g__ptxcd_adjust_textwidth_bool, + textwidth .initial:n = wide, + logofile .tl_gset:N = \g_ptxcd_logofile_tl, + logofile .initial:n = tuda_logo, + accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool, + accept-missing-logos .initial:n = false, + accept-missing-logos .usage:n = load, + accept-missing-logos .default:n = true, + 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} + \exp_args:Ne \keys_set:ne { + + ptxcd / \c__ptxcd_base_str + }{ + departmentlogofile=tuda_maschinenbau_logo, + headrule=false, + logo=false, + textwidth=narrow, + } + \PassOptionsToPackage{identbar=Primary1,accent=Primary2}{tudacolors} + }, + + department .initial:n = default, + department / unknown .code:n = { + \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} + }, + departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, + departmentconfigprefix .initial:n = tuda, + departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, + departmentlogofile .initial:n =, + mecheng .meta:n = {department=mecheng}, + pdfa .bool_gset:N = \g_ptxcd_pdfa_bool, + pdfa .initial:n = + true, + pdfx .bool_gset:N = \g_ptxcd_pdfx_bool, + pdfx .initial:n = true, +%% color options +%% color options + color .meta:n = {accentcolor=#1}, + accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}}, + textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}}, + identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}}, +} +\cs_if_exist:NT \TUDaDefaultBuildOptions { + \exp_args:Ne \keys_set:ne { ptxcd / + \c__ptxcd_base_str + } { + \TUDaDefaultBuildOptions + } +} +\cs_new:Nn \__ptxcd_insert_logo: { + \bool_if:NTF \g_ptxcd_logo_workaround_bool { + \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf} + \use_ii:nn + \use_i:nn + } { + \use_ii:nn + } + {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}} + {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}} } - -\ProcessKeyOptions[ptxcd/letter] +\ProcessKeyOptions[ptxcd/\c__ptxcd_base_str] \bool_if:NF \g_ptxcd_pdfa_bool {\bool_gset_false:N \g_ptxcd_pdfx_bool} \bool_if:NT \g_ptxcd_pdfa_bool { - \msg_new:nnn {tudapub} {colors-to-rgb} { - You~did~not~add~a~color~profile.\\ - I~will~use~the~default~one~and~automatically~try~to~convert~internal~colors~to~RGB.\\ - This~is~required~to~be~able~to~create~PDF/A~compliance. - } - - \cs_if_exist:NT \pdfmeta_standard_get:nN { - \pdfmeta_standard_get:nN {outputintent_A} \l_tmpa_tl - \quark_if_no_value:NF \l_tmpa_tl { - \bool_gset_false:N \g_ptxcd_pdfx_bool - \msg_new:nnn{tudapub} {prefer-lualatex} { - I~detected~usage~of~l3pdfmeta~(\DocumentMetadata)~to~create~PDF/A.\\ - tudapub~will~not~load~pdfx~to~avoid~conflicts.\\ - To~disable this message use pdfx=false. - } - \msg_info:nn {tudapub} {prefer-lualatex} - } - - \prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} { - \PassOptionsToPackage{RGB}{xcolor} - \msg_info:nn {tudapub} {colors-to-rgb} - } - } -} - -\bool_if:NT \g_ptxcd_pdfx_bool { - \PassOptionsToPackage{RGB}{xcolor} - \msg_info:nn {tudapub} {colors-to-rgb} + \msg_new:nnn {tudapub} {colors-to-rgb} { + You~did~not~add~a~color~profile.\\ + I~will~use~the~default~one~and~automatically~try~to~convert~internal~colors~to~RGB.\\ + This~is~required~to~be~able~to~create~PDF/A~compliance. + } + + \cs_if_exist:NT \pdfmeta_standard_get:nN { + \pdfmeta_standard_get:nN {outputintent_A} \l_tmpa_tl + \quark_if_no_value:NF \l_tmpa_tl { + \bool_gset_false:N \g_ptxcd_pdfx_bool + \msg_new:nnn{tudapub} {prefer-lualatex} { + I~detected~usage~of~l3pdfmeta~(\DocumentMetadata)~to~create~PDF/A.\\ + tudapub~will~not~load~pdfx~to~avoid~conflicts.\\ + To~disable~this~message~use~pdfx=false. + } + \msg_info:nn {tudapub} {prefer-lualatex} + } + \prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} { + \use_iii:nnn + } + } + \bool_if:NT \g_ptxcd_pdfx_bool { + \PassOptionsToPackage{RGB}{xcolor} + \msg_info:nn {tudapub} {colors-to-rgb} + } } \newcommand*{\@fontsizefilebase}{tudalettersize} - \PassOptionsToClass{fontsize=10pt,parskip=full-}{scrletter} \PassOptionsToPackage{refline=nodate,addrfield=topaligned,firstfoot=false,pagenumber=botright}{scrletter} \LoadClass{scrletter} - -% Load the TUDa-colorscheme \RequirePackage{tudacolors} \RequirePackage{tudafonts} \RequirePackage{graphicx} \RequirePackage{afterpage} \RequirePackage{ragged2e} - - -\bool_if:NTF \g__ptxcd_letter_premium_bool -{ \cs_new:Nn \ptxcd_premiumcolor: {accentcolor} - \cs_new:Nn \ptxcd_use_premiumcolor: {\color{accentcolor}} - \cs_set:Nn \ptxcd_use_premiumcolor_text: {\color{textaccentcolor}} +\bool_if:NTF \g__ptxcd_letter_premium_bool { + \cs_new:Nn \ptxcd_premiumcolor: {accentcolor} + \cs_new:Nn \ptxcd_use_premiumcolor: {\color{accentcolor}} + \cs_set:Nn \ptxcd_use_premiumcolor_text: {\color{textaccentcolor}} }{ - \cs_new:Nn \ptxcd_premiumcolor: {black} - \let\ptxcd_use_premiumcolor:\relax - \let\ptxcd_use_premiumcolor_text:\relax + \cs_new:Nn \ptxcd_premiumcolor: {black} + \let\ptxcd_use_premiumcolor:\relax + \let\ptxcd_use_premiumcolor_text:\relax } - - - -%%%%%Briefbogen -%% Spacing: \dim_const:Nn \c_ptxcd_HeadMargin_dim {12.5mm} \dim_const:Nn \c_ptxcd_LeftMargin_dim {24.0mm} \dim_const:Nn \c__ptxcd_firstpage_extraindent_dim {-\paperwidth+120mm +\c_ptxcd_LeftMargin_dim +\c_ptxcd_HeadMargin_dim} \bool_if:NTF \g__ptxcd_adjust_textwidth_bool - { - \dim_const:Nn \c_ptxcd_RightMargin_dim {\c_ptxcd_HeadMargin_dim} - - }{ - \dim_const:Nn \c_ptxcd_RightMargin_dim {\c_ptxcd_HeadMargin_dim-\c__ptxcd_firstpage_extraindent_dim} - } + { + \dim_const:Nn \c_ptxcd_RightMargin_dim {\c_ptxcd_HeadMargin_dim} + }{ + \dim_const:Nn \c_ptxcd_RightMargin_dim {\c_ptxcd_HeadMargin_dim-\c__ptxcd_firstpage_extraindent_dim} + } \dim_const:Nn \c_ptxcd_BottomMargin_dim {20mm} \dim_const:Nn \c_ptxcd_Linewidth_dim {\paperwidth-\c_ptxcd_LeftMargin_dim-\c_ptxcd_RightMargin_dim} - \RequirePackage{geometry} - \geometry{ - twoside=false, - left=\c_ptxcd_LeftMargin_dim, - right=\c_ptxcd_RightMargin_dim, - bottom=\c_ptxcd_BottomMargin_dim, - footskip=7mm, + twoside=false, + left=\c_ptxcd_LeftMargin_dim, + right=\c_ptxcd_RightMargin_dim, + bottom=\c_ptxcd_BottomMargin_dim, + footskip=7mm, } - \dim_const:Nn \c_ptxcd_textwidth_dim {\textwidth} - \bool_if:NTF \g__ptxcd_letter_logo_bool { - \geometry{top=64mm} + \geometry{top=64mm} } { - \geometry{top=30mm} + \geometry{top=30mm} } +\PassOptionsToPackage{hidelinks, unicode}{hyperref} +\bool_if:NTF \g_ptxcd_pdfx_bool { +%% only apply the hack if pdfx is older than the working version + \PassOptionsToPackage{a-2b}{pdfx} +%% Workaround posted by David Carlisle on tex.stackexchange +%% Thanks to Ulrike Fischer for mentioning it in #472 + \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel + \chardef\currentgrouplevel0 + \ExplSyntaxOff + \RequirePackage{pdfx} + \ExplSyntaxOn + \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx: + \cs_undefine:N \__ptxcd_grouplevel_before_pdfx: +%% end of the workaround + + \msg_new:nnn{tuda-ci} {prefer-lualatex} { + You~use~pdfa-mode~in~#1.\\ + This~can~lead~to~incompatiblities~especially~with~older~compiler~versions.\\ + You~should~prefer~using~lualatex. + } + \msg_new:nnnn{tuda-ci} {outdated-package-pdfa} { + Your~Version~of~the~#1-package~is~too~old~to~support~all~methods~required~by~tudapubs~pdfa-mode.\\ + Either~update~your~TeX-distribution~or~switch~to~pdfa=false. + }{See~DEMO-tudapub~for~further~information.} + + \sys_if_engine_pdftex:T { + \msg_warning:nnn{tuda-ci} {prefer-lualatex} {PDFTeX} + } + + \sys_if_engine_xetex:T { + \msg_warning:nnn{tuda-ci} {prefer-lualatex} {XeTeX} + } + + \@ifpackagelater{xmpincl}{2021/09/22}{ + }{ + \msg_error:nn{tuda-ci} {outdated-package-pdfa} {xmpincl} + } -\if_bool:N \g_ptxcd_pdfx_bool - \PassOptionsToPackage{a-2b}{pdfx} -% Workaround posted by David Carlisle on tex.stackexchange -% Thanks to Ulrike Fischer for mentioning it in #472 - \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel - \chardef\currentgrouplevel0 - \ExplSyntaxOff - \RequirePackage{pdfx} - \ExplSyntaxOn - \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx: - \cs_undefine:N \__ptxcd_grouplevel_before_pdfx: -% end of the workaround -\else: - \PassOptionsToPackage{hidelinks, unicode}{hyperref} - \RequirePackage{hyperref} -\fi: - +} { + \RequirePackage{hyperref} +} \RequirePackage[paper=a4]{tudarules}% might load pgfcore, so it has to be loaded after pdfx - \setplength{firstheadhpos}{\c_ptxcd_HeadMargin_dim} \setplength{firstheadvpos}{\c_ptxcd_HeadMargin_dim} \setplength{firstheadwidth}{\dim_eval:n {\paperwidth - 2\c_ptxcd_HeadMargin_dim}} - \setplength{firstfootvpos}{\dim_eval:n {\paperheight -17mm}} \setplength{firstfoothpos}{\useplength{firstheadhpos}} \setplength{firstfootwidth}{\useplength{firstheadwidth}} - - \setplength{toaddrhpos}{\c_ptxcd_LeftMargin_dim} \setplength{toaddrvpos}{50mm} \setplength{backaddrheight}{4mm} \setplength{toaddrindent}{0mm} - \setplength{refhpos}{\c_ptxcd_LeftMargin_dim} \setplength{refvpos}{106mm} - \setplength{subjectaftervskip}{2\baselineskip} \setplength{lochpos}{\c_ptxcd_HeadMargin_dim} \setplength{locvpos}{\dimexpr\useplength{refvpos}+\useplength{subjectaftervskip}+1.4\baselineskip\relax} @@ -215,428 +257,372 @@ \setplength{subjectbeforevskip}{0pt} \setplength{locwidth}{\dimexpr\paperwidth-154,5mm -\c_ptxcd_HeadMargin_dim\relax} \setplength{locheight}{\dimexpr\paperheight-\useplength{locvpos}-\c_ptxcd_BottomMargin_dim\relax} - - \bool_if:NTF \g__ptxcd_letter_headrule_bool { - \ptxcd_makeheadrule[width=\useplength{firstheadwidth},color=identbarcolor]{ptxcd_LetterheadRule} + \ptxcd_makeheadrule[width=\useplength{firstheadwidth},color=identbarcolor]{ptxcd_LetterheadRule} } { - \box_new:N \ptxcd_LetterheadRule_box - \def\ptxcd_LetterheadRule{} + \box_new:N \ptxcd_LetterheadRule_box + \def\ptxcd_LetterheadRule{} } \ptxcd_makefootrule[width=\useplength{firstheadwidth}]{ptxcd_LetterfootRule} - - \box_new:N \g_TUDaLetter_firsthead_box \hbox_gset:Nn \g_TUDaLetter_firsthead_box { - \parbox[t]{\useplength{firstheadwidth}}{ - \raggedleft - \smash{\ptxcd_LetterheadRule} - \par - \vspace{.5\c_ptxcd_logoheight_dim} - \makebox[\__ptxcd_logowidth:][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}} - } + \parbox[t]{\useplength{firstheadwidth}}{ + \raggedleft + \smash{\ptxcd_LetterheadRule} + \par + \vspace{.5\c_ptxcd_logoheight_dim} + \makebox[\__ptxcd_logowidth:][l]{\__ptxcd_insert_logo:} + } } - \box_gset_dp:Nn \g_TUDaLetter_firsthead_box {\c_zero_dim} \setkomavar{firsthead}{ - \box_use:N \g_TUDaLetter_firsthead_box + \box_use:N \g_TUDaLetter_firsthead_box } - \KOMAoptions{backaddress=plain} \setkomavar{backaddressseparator}{\,$\vert$\,} - -%DOKU neue komavars \newkomavar{frominstitution} \newkomavar{frominstitution-en} - \newkomafont{ptxcd_location}{\accentfont\normalcolor} \setkomafont{fromname}{\small} \newkomafont{ptxcd_frominst}{\small\ptxcd_use_premiumcolor_text: } \setkomafont{fromaddress}{\footnotesize} - \setkomafont{refname}{} \setkomafont{refvalue}{} - \setkomafont{pageheadfoot}{\footnotesize} - \newcommand{\TUD@locfield}{% - \usekomafont{ptxcd_location}\usekomafont{fromaddress} - \setparsizes{\z@}{\z@}{\z@ plus 1fil} - \par@updaterelative - \begingroup - \int_compare:nT {0 < \@pageat <3} { - \ptxcd_letterpagemark:\\[\baselineskip] - } - \usekomafont{ptxcd_frominst} - \Ifkomavarempty{frominstitution}{}{% - {\usekomavar[\raggedright]{frominstitution}} - \\[\baselineskip]}% - \Ifkomavarempty{frominstitution-en}{}{% - \usekomavar[\raggedright]{frominstitution-en} - \\[\baselineskip]}% - \endgroup - \Ifkomavarempty{fromlogo}{}{\usekomavar{fromlogo}\\[\baselineskip]}% - \Ifkomavarempty{fromname}{} - {{\usekomafont{fromname}\usekomavar{fromname}} - \Ifkomavarempty{fromfunction}{}{\\\usekomavar{fromfunction}} - \\[\baselineskip]}% - \Ifkomavarempty{fromaddress}{}{\usekomavar{fromaddress}\\[\baselineskip]}% - \@tempswafalse - \clist_map_inline:nn {fromphone, fromfax, fromemail, fromurl}{ - \@tempswatrue - \Ifkomavarempty{##1}{}{ - \Ifkomavarempty*{##1}{}{\makebox[1cm][l]{\usekomavar*{##1}}}\usekomavar{##1}\par - } - } - \if@tempswa - \vspace{2\baselineskip} - \fi - \Ifkomavarempty*{date}{}{\usekomavar*{date}\\\usekomavar{date}} - \seq_use:Nn \g__ptxcd_reffields_seq {} - \Ifkomavarempty{frombank}{}{\vfill% - \Ifkomavarempty*{frombank}{Bankverbindung}{\usekomavar*{frombank}}\\\usekomavar{frombank} - } + \usekomafont{ptxcd_location}\usekomafont{fromaddress} + \setparsizes{\z@}{\z@}{\z@ plus 1fil} + \par@updaterelative + \begingroup + \int_compare:nT {0 < \@pageat <3} { + \ptxcd_letterpagemark:\\[\baselineskip] + } + \usekomafont{ptxcd_frominst} + \Ifkomavarempty{frominstitution}{}{% + {\usekomavar[\raggedright]{frominstitution}} + \\[\baselineskip]}% + \Ifkomavarempty{frominstitution-en}{}{% + \usekomavar[\raggedright]{frominstitution-en} + \\[\baselineskip]}% + \endgroup + \Ifkomavarempty{fromlogo}{}{\usekomavar{fromlogo}\\[\baselineskip]}% + \Ifkomavarempty{fromname}{} + {{\usekomafont{fromname}\usekomavar{fromname}} + \Ifkomavarempty{fromfunction}{}{\\\usekomavar{fromfunction}} + \\[\baselineskip]}% + \Ifkomavarempty{fromaddress}{}{\usekomavar{fromaddress}\\[\baselineskip]}% + \@tempswafalse + \clist_map_inline:nn {fromphone, fromfax, fromemail, fromurl}{ + \@tempswatrue + \Ifkomavarempty{##1}{}{ + \Ifkomavarempty*{##1}{}{\makebox[1cm][l]{\usekomavar*{##1}}}\usekomavar{##1}\par + } + } + \if@tempswa + \vspace{2\baselineskip} + \fi + \Ifkomavarempty*{date}{}{\usekomavar*{date}\\\usekomavar{date}} + \seq_use:Nn \g__ptxcd_reffields_seq {} + \Ifkomavarempty{frombank}{}{\vfill% + \Ifkomavarempty*{frombank}{Bankverbindung}{\usekomavar*{frombank}}\\\usekomavar{frombank} + } } - \setkomavar{location}{\parbox[t][.45\paperheight][t]{\useplength{locwidth}}{\TUD@locfield}} - \tl_const:Nn \ptxcd_reffield_separator_tl {\\} - \cs_new:Nn \ptxcd_set_reffield:n { - \Ifkomavarempty{#1}{}{% - \if@tempswa\\[\baselineskip]\fi - \parbox[t]{\linewidth}{\noindent\raggedright - \usekomafont{refname} - \usekomavar*{#1}\ptxcd_reffield_separator_tl - \usekomafont{refvalue} - \usekomavar{#1} - }% - \@tempswatrue - }% + \Ifkomavarempty{#1}{}{% + \if@tempswa\\[\baselineskip]\fi + \parbox[t]{\linewidth}{\noindent\raggedright + \usekomafont{refname} + \usekomavar*{#1}\ptxcd_reffield_separator_tl + \usekomafont{refvalue} + \usekomavar{#1} + }% + \@tempswatrue + }% } - - - \seq_new:N \g__ptxcd_reffields_seq \newlength{\TUD@page@free} \newcounter{TUD@page@free@lines} \dim_new:N \g__ptxcd_page_free_dim \int_new:N \g__ptxcd_free_lines_int - \renewcommand{\opening}[1]{% - \widowpenalty=100 - \@PapersizeWarning - \seq_gclear:N \g__ptxcd_reffields_seq - \renewcommand*{\@set@reffield}[1]{ - \typeout{Field: ##1}% - \str_if_eq:nnT {##1}{datemarkerfield}{% - \let\scr@datemarkerfield@var=\scr@date@var - \let\scr@datemarkerfield@name=\scr@date@name - \setkomavar{date}{}% - } - \Ifkomavarempty{##1}{}{% - \seq_gput_right:Nn \g__ptxcd_reffields_seq {% - \ptxcd_set_reffield:n {##1} - }% - }% - } - \let\do@set@reffield\@set@reffield - \@set@reffields - \removereffields - \@gen@firsthead - \@mkboth{\scr@fromname@var}{\scr@subject@var}% - \thispagestyle{letter.first}\noindent - \Ifkomavarempty{toname}{\setkomavar{toname}{\mbox{}}}{} - \@foldmarks\@firstheadfootfield\@addrfield\@locfield - \ifdim\useplength{subjectvpos}=\z@\else\@subjfield\fi - \@datefield - \@makelettertitle - \ifdim\useplength{subjectvpos}=\z@\if@subjafter\else\@subjfield\fi\fi - {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative#1\par}% - {\setlength{\@tempdima}{\baselineskip}% - \addtolength{\@tempdima}{-\parskip}% - \ifdim \@tempdima>\z@\vskip\@tempdima\fi}% - \ifdim\useplength{subjectvpos}=\z@\if@subjafter\@subjfield\fi\fi - \setcounter{equation}{0}% - \@afterheading% - \@nobreaktrue - \@afterindentfalse - \bool_if:NT \g__ptxcd_adjust_textwidth_bool { - \everypar{% - \if@nobreak - \@nobreakfalse\clubpenalty\@M - \if@afterindent - \else{\setbox\z@\lastbox} - \fi - \else - \clubpenalty\@clubpenalty - \fi - \ifnum\thepage=1% - \dim_gset:Nn \g__ptxcd_page_free_dim {-\pagegoal + \pagetotal} - \dim_compare:nTF {-\g__ptxcd_page_free_dim>2\baselineskip} - { - \int_gset:Nn \g__ptxcd_free_lines_int {\fp_eval:n {ceil(\g__ptxcd_page_free_dim/\baselineskip)}} - \int_compare:nT {\g__ptxcd_free_lines_int<0} { - \hangafter=\g__ptxcd_free_lines_int\hangindent=\c__ptxcd_firstpage_extraindent_dim% - } - } { - \dim_compare:nT {-\TUD@page@free>\baselineskip} { - \hangafter=-2\hangindent=\c__ptxcd_firstpage_extraindent_dim% - } - } - \fi% - }% - \global\setlength{\linewidth}{\dim_eval:n {\c_ptxcd_Linewidth_dim + \c__ptxcd_firstpage_extraindent_dim}} - \afterpage{ - \global\setlength{\linewidth}{\c_ptxcd_Linewidth_dim} - \widowpenalty=10000 - } - } + \widowpenalty=100 + \@PapersizeWarning + \seq_gclear:N \g__ptxcd_reffields_seq + \renewcommand*{\@set@reffield}[1]{ + \typeout{Field: ##1}% + \str_if_eq:nnT {##1}{datemarkerfield}{% + \let\scr@datemarkerfield@var=\scr@date@var + \let\scr@datemarkerfield@name=\scr@date@name + \setkomavar{date}{}% + } + \Ifkomavarempty{##1}{}{% + \seq_gput_right:Nn \g__ptxcd_reffields_seq {% + \ptxcd_set_reffield:n {##1} + }% + }% + } + \let\do@set@reffield\@set@reffield + \@set@reffields + \removereffields + \@gen@firsthead + \@mkboth{\scr@fromname@var}{\scr@subject@var}% + \thispagestyle{letter.first}\noindent + \Ifkomavarempty{toname}{\setkomavar{toname}{\mbox{}}}{} + \@foldmarks\@firstheadfootfield\@addrfield\@locfield + \ifdim\useplength{subjectvpos}=\z@\else\@subjfield\fi + \@datefield + \@makelettertitle + \ifdim\useplength{subjectvpos}=\z@\if@subjafter\else\@subjfield\fi\fi + {\setparsizes{\z@}{\z@}{\z@ plus 1fil}\par@updaterelative#1\par}% + {\setlength{\@tempdima}{\baselineskip}% + \addtolength{\@tempdima}{-\parskip}% + \ifdim \@tempdima>\z@\vskip\@tempdima\fi}% + \ifdim\useplength{subjectvpos}=\z@\if@subjafter\@subjfield\fi\fi + \setcounter{equation}{0}% + \@afterheading% + \@nobreaktrue + \@afterindentfalse + \bool_if:NT \g__ptxcd_adjust_textwidth_bool { + \everypar{% + \if@nobreak + \@nobreakfalse\clubpenalty\@M + \if@afterindent + \else{\setbox\z@\lastbox} + \fi + \else + \clubpenalty\@clubpenalty + \fi + \ifnum\thepage=1% + \dim_gset:Nn \g__ptxcd_page_free_dim {-\pagegoal + \pagetotal} + \dim_compare:nTF {-\g__ptxcd_page_free_dim>2\baselineskip} + { + \int_gset:Nn \g__ptxcd_free_lines_int {\fp_eval:n {ceil(\g__ptxcd_page_free_dim/\baselineskip)}} + \int_compare:nT {\g__ptxcd_free_lines_int<0} { + \hangafter=\g__ptxcd_free_lines_int\hangindent=\c__ptxcd_firstpage_extraindent_dim% + } + } { + \dim_compare:nT {-\TUD@page@free>\baselineskip} { + \hangafter=-2\hangindent=\c__ptxcd_firstpage_extraindent_dim% + } + } + \fi% + }% + \global\setlength{\linewidth}{\dim_eval:n {\c_ptxcd_Linewidth_dim + \c__ptxcd_firstpage_extraindent_dim}} + \afterpage{ + \global\setlength{\linewidth}{\c_ptxcd_Linewidth_dim} + \widowpenalty=10000 + } + } } - \AtBeginDocument{% \raggedbottom% } - \setkomafont{backaddress}{\accentfont\tiny\ptxcd_use_premiumcolor_text:\raisebox{\dimexpr-\totalheight+\ht\strutbox\relax}{\rule{\z@}{4mm}}} - \raggedbottom - \int_new:N \l_ptxcd_letter_lastpage_int \cs_new:Nn \ptxcd_letterpagemark: { - %get lastpage for this letter if not already done - \int_compare:nNnTF {\value{page}} = {1} { - \bool_if:NTF \g__ptxcd_firstpagenumber_bool - {\bool_set_true:N \l_tmpa_bool} - {\bool_set_false:N \l_tmpa_bool} - } - {\bool_set_true:N \l_tmpa_bool} - \bool_if:NT \l_tmpa_bool { - \int_if_exist:cF {c_ptxcd_letter\thisletter _lastpage_int} { - \cs_if_exist:cTF {r@\thisletter.lastpage} { - \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} { - \exp_args:NNc \expandafter \@secondoffive { r@\thisletter.lastpage} - } - } { - %warning -> rerun latex - \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} {0} - } - } - \usekomafont{pagenumber}\pagename\nobreakspace\thepage - \int_compare:nT { - \int_use:c {c_ptxcd_letter\thisletter _lastpage_int} - > 1 - } {/\int_to_arabic:n{\int_use:c {c_ptxcd_letter\thisletter _lastpage_int}}} - } + %get lastpage for this letter if not already done + \int_compare:nNnTF {\value{page}} = {1} { + \bool_if:NTF \g__ptxcd_firstpagenumber_bool + {\bool_set_true:N \l_tmpa_bool} + {\bool_set_false:N \l_tmpa_bool} + } + {\bool_set_true:N \l_tmpa_bool} + \bool_if:NT \l_tmpa_bool { + \int_if_exist:cF {c_ptxcd_letter\thisletter _lastpage_int} { + \cs_if_exist:cTF {r@\thisletter.lastpage} { + \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} { + \exp_args:NNc \expandafter \@secondoffive { r@\thisletter.lastpage} + } + } { + %warning -> rerun latex + \int_const:cn {c_ptxcd_letter\thisletter _lastpage_int} {0} + } + } + \usekomafont{pagenumber}\pagename\nobreakspace\thepage + \int_compare:nT { + \int_use:c {c_ptxcd_letter\thisletter _lastpage_int} + > 1 + } {/\int_to_arabic:n{\int_use:c {c_ptxcd_letter\thisletter _lastpage_int}}} + } } - - \setkomavar{firstfoot}{\usekomavar{nextfoot}} - \setkomavar{nextfoot}{% - \ifnum\@pageat>2 - \parbox[c]{\layerwidth}{% - \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi - \strut\pagemark% - }% - \fi + \ifnum\@pageat>2 + \parbox[c]{\layerwidth}{% + \ifcase\@pageat\or\or\or\raggedright\or\centering\or\raggedleft\fi + \strut\pagemark% + }% + \fi } - \cs_set_eq:NN \letterpagemark \ptxcd_letterpagemark: - - \bool_if:NT \g__ptxcd_letter_headrule_bool { - \bool_if:NTF \g__ptxcd_letter_logo_bool { - \setkomavar{nexthead}{\raisebox{\topskip}{\box_use:N \g_TUDaLetter_firsthead_box}} - }{ - \setkomavar{nexthead}{\raisebox{\depth}{\ptxcd_LetterheadRule}} - } + \bool_if:NTF \g__ptxcd_letter_logo_bool { + \setkomavar{nexthead}{\raisebox{\topskip}{\box_use:N \g_TUDaLetter_firsthead_box}} + }{ + \setkomavar{nexthead}{\raisebox{\depth}{\ptxcd_LetterheadRule}} + } } - \newpairofpagestyles[letter]{TUDaLetter}{ - \exp_args:Nx \KOMAoptions{ - footwidth=\dimexpr\paperwidth-2\c_ptxcd_HeadMargin_dim \c_colon_str-\dim_eval:n {\c_ptxcd_HeadMargin_dim -1mm}, - headwidth=\dimexpr\paperwidth-2\c_ptxcd_HeadMargin_dim \c_colon_str-\dim_eval:n {\c_ptxcd_HeadMargin_dim -1mm}, - footsepline=.5\c_ptxcd_smallrule_dim,plainfootsepline - } - \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{TUDaLetter.head.even} - \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{TUDaLetter.head.odd} - \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{TUDaLetter.head.oneside} - \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{plain.TUDaLetter.head.even} - \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{plain.TUDaLetter.head.odd} - \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{plain.TUDaLetter.head.oneside} - \lehead{\usekomavar{nexthead}}% - \lohead{\usekomavar{nexthead}}% - \lefoot{\usekomavar{nextfoot}}% - \lofoot{\usekomavar{nextfoot}}% + \exp_args:Nx \KOMAoptions{ + footwidth=\dimexpr\paperwidth-2\c_ptxcd_HeadMargin_dim \c_colon_str-\dim_eval:n {\c_ptxcd_HeadMargin_dim -1mm}, + headwidth=\dimexpr\paperwidth-2\c_ptxcd_HeadMargin_dim \c_colon_str-\dim_eval:n {\c_ptxcd_HeadMargin_dim -1mm}, + footsepline=.5\c_ptxcd_smallrule_dim,plainfootsepline + } + \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{TUDaLetter.head.even} + \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{TUDaLetter.head.odd} + \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{TUDaLetter.head.oneside} + \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{plain.TUDaLetter.head.even} + \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{plain.TUDaLetter.head.odd} + \ModifyLayer[voffset=\c_ptxcd_HeadMargin_dim,align=tl]{plain.TUDaLetter.head.oneside} + \lehead{\usekomavar{nexthead}}% + \lohead{\usekomavar{nexthead}}% + \lefoot{\usekomavar{nextfoot}}% + \lofoot{\usekomavar{nextfoot}}% } - \DeclarePageStyleByLayers{TUDaLetter.first}{TUDaLetter.foot.even,TUDaLetter.foot.odd,TUDaLetter.foot.oneside,TUDaLetter.foot.above.line} \pagestyle{TUDaLetter} - \DeclarePageStyleAlias{letter.first}{TUDaLetter.first} \def\letterpagestyle{TUDaLetter} - -%pdfa -\if_bool:N \g_ptxcd_pdfx_bool - \PassOptionsToPackage{a-2b}{pdfx} -% Workaround posted by David Carlisle on tex.stackexchange -% Thanks to Ulrike Fischer for mentioning it in #472 - \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel - \chardef\currentgrouplevel0 - \ExplSyntaxOff - \RequirePackage{pdfx} - \ExplSyntaxOn - \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx: - \cs_undefine:N \__ptxcd_grouplevel_before_pdfx: -% end of the workaround - %%hyperref - \hypersetup{hidelinks, unicode} - \iow_new:N \ptxcd_xmpdata_stream - - \cs_if_exist:NF \prop_gput_if_new:Nnx { - \cs_generate_variant:Nn \prop_gput_if_new:Nnn {Nnx} - } - \cs_if_exist:NF \tl_to_str:V {\cs_generate_variant:Nn \tl_to_str:N {V}} - - \cs_new:Nn \ptxcd_pass_TitleData: { - \prop_if_empty:NF \g_ptxcd_MetaData_prop { - \iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata} - \begingroup - \def\newline{} - \def\\{} - \let\thanks\use_none:n - \cs_set:Npn \and {\exp_not:N \sep} - \use:c {pdfx@localcommands} - \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn - \endgroup - \iow_close:N \ptxcd_xmpdata_stream - } - } - \cs_new:Nn \ptxcd_write_xmp_line:nn { - %Fallback test for older kernels - \cs_if_exist:NTF \str_uppercase:f { - \tl_set:Nx \l_tmpa_tl { - \str_uppercase:f {\tl_head:n {#1}} - \str_lowercase:f { \tl_tail:n {#1}} - } - } { - %may be removed in some time - \tl_set:Nx \l_tmpa_tl {\tl_mixed_case:n {#1}} - } - \cs_if_exist:cTF {\l_tmpa_tl}{ - \iow_now:Nx \ptxcd_xmpdata_stream { - \c_backslash_str \l_tmpa_tl {\exp_not:n {#2}} - } - }{ - \msg_error:nnn{tudaletter} {unknown-metadata} {#1} - } - } - - \bool_new:N \g_ptxcd_pass_TitleData_bool - \bool_gset_true:N \g_ptxcd_pass_TitleData_bool - \prop_new:N \g_ptxcd_MetaData_prop - - \newcommand*{\Metadata}[1]{ - \bool_gset_false:N \g_ptxcd_pass_TitleData_bool - \prop_gset_from_keyval:Nn \g_ptxcd_MetaData_prop {#1} - } - - \msg_new:nnnn{tudaletter} {unknown-metadata} { - You~ used~ the~ #1~ metadata~ entry.\\ - I~ don't~ know~ how~ to~ handle~ that.\\ - It~ will~ be~ ignored. - } {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.} - -\else: - \hypersetup{pdfcreator=LaTeX~using~TUDa-CI} - - \msg_new:nnnn {tudapub} {metadata-to-hypersetup} { - You~don't~use~pdfx.~ - Here~the~\string\Metadata\~command~only~exists~for~compatibility~reasons.\\ - I~will~pass~the~data~to~ḩypersetup. - }{ - If~possible~please~use~hyperref's~\strung\hypersetup~command~for~the~metadata~directly.\\ - See~hyperref~documentation~for~details~on~usage. - } - - \newcommand*{\Metadata}[1]{ - \tl_set:Nn \l_tmpa_tl {#1} - \tl_replace_all:Nnn \l_tmpa_tl {\sep} {;~}% pdfx-Syntax compatibility - \clist_map_inline:Nn \l_tmpa_tl { - \exp_args:Nx \hypersetup{pdf\tl_trim_spaces:n {##1}} - } - \msg_warning:nn {tudapub} {metadata-to-hypersetup} - } - - - \cs_new:Nn \ptxcd_pass_TitleData: { - % check if pdfmanagement is active - \prop_if_exist:NTF \g__pdfmanagement_documentproperties_prop { - \prop_set_eq:NN \l_tmpa_prop \g__pdfmanagement_documentproperties_prop - } { - \prop_set_eq:NN \l_tmpa_prop \g__hyp_documentproperties_prop - } - - % title - \prop_if_in:NnF \l_tmpa_prop {hyperref/pdftitle} { - \begingroup - \def\newline{} - \def\\{} - \let\thanks\use_none:n - \tl_gset:Nf \g_tmpa_tl {\@title} - \endgroup - \hypersetup{pdftitle={\tl_to_str:V \g_tmpa_tl}} - } - - % author - \prop_if_in:NnF \l_tmpa_prop {hyperref/pdfauthor} { - \begingroup - \def\newline{} - \def\\{} - \let\thanks\use_none:n - \tl_gset:Nx \g_tmpa_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \and}} - \tl_gset:Nx \g_tmpa_tl {\g_tmpa_tl } - \endgroup - \hypersetup{pdfauthor=\g_tmpa_tl} - } - } - - \bool_if:NF \g_ptxcd_pdfa_bool { - \msg_new:nnn{tudapub} {no-pdfa}{The~ tudapub~ class~ won't~ create~ PDF/A-mode.} - \msg_info:nn{tudapub} {no-pdfa} - } - -\fi: - - -%Widows and clubs \widowpenalty=10000 \clubpenalty=10000 - -%default values \setkomavar*{fromemail}{} \setkomavar*{fromurl}{} \setkomavar{backaddress}{Technische~ Universität~ Darmstadt\\Karolinenplatz~ 5\\64289~ Darmstadt} - -%renewcaptions \defcaptionname{german,ngerman,austrian,naustrian,% - swissgerman,nswissgerman}\yourmailname{Ihre~ Nachricht}% + swissgerman,nswissgerman}\yourmailname{Ihre~ Nachricht}% \defcaptionname{german, ngerman,austrian,naustrian,% - swissgerman,nswissgerman}\phonename{Tel.}% - - -%signature raggedright + swissgerman,nswissgerman}\phonename{Tel.}% \let\raggedsignature\raggedright - \newkomavar{fromfunction} - \bool_if:NT \g__ptxcd_letter_raggedright_bool {\AtBeginLetter{\RaggedRight}} - -%backwards compatibility for KOMA-Script \cs_if_exist:NF \Ifkomavarempty{ - \let\Ifkomavarempty\ifkomavarempty + \let\Ifkomavarempty\ifkomavarempty } - \file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str.cfg} + +\if_bool:N \g_ptxcd_pdfx_bool + \iow_new:N \ptxcd_xmpdata_stream + \tl_new:N \g_ptxcd_xmp_title_tl + \tl_new:N \g_ptxcd_xmp_author_tl + + \cs_if_exist:NF \prop_gput_if_new:Nnx { + \cs_generate_variant:Nn \prop_gput_if_new:Nnn {Nnx} + } + + \cs_if_exist:NF \tl_to_str:V {\cs_generate_variant:Nn \tl_to_str:N {V}} + + \cs_new:Nn \ptxcd_pass_TitleData: { + \iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata} + \begingroup + \def\newline{} + \def\\{} + \let\thanks\use_none:n + \cs_set:Npn \and {\exp_not:n {\exp_not:N \sep}} + \use:c {Hy@pdfstringtrue} + \tl_gset:Nf \g_ptxcd_xmp_title_tl {\@title} + \prop_gput_if_new:Nnx \g_ptxcd_MetaData_prop {Title} {\tl_to_str:V \g_ptxcd_xmp_title_tl} + \prop_if_in:NnF \g_ptxcd_MetaData_prop {Author} { + \tl_gset:Nx \g_ptxcd_xmp_author_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \sep}} + \tl_gset:Nx \g_ptxcd_xmp_author_tl {\g_ptxcd_xmp_author_tl} + \prop_gput:Nnx \g_ptxcd_MetaData_prop {Author} {\tl_to_str:V \g_ptxcd_xmp_author_tl} + } + \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Publisher}{TU~Darmstadt} + \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Creator}{LaTeX~using~TUDa-CI} + \use:c {pdfx@localcommands}%should be held inside group + \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn + \endgroup + \iow_close:N \ptxcd_xmpdata_stream + \let\ptxcd_pass_TitleData:\relax + } + \cs_new:Nn \ptxcd_write_xmp_line:nn { + \begingroup + \cs_set:Npn \sep {\exp_not:N \sep} + \cs_if_exist:cTF {#1}{ + \iow_now:Nx \ptxcd_xmpdata_stream { + \c_backslash_str #1 {\exp_not:n {#2}} + } + }{ + \msg_error:nnn{tuda-ci} {unknown-metadata} {#1} + } + \endgroup + } + + \prop_new:N \g_ptxcd_MetaData_prop + + \newcommand*{\Metadata}[1]{ + \keyval_parse:NNn \use_none:n \ptxcd_set_metadata_prop:nn + {#1} + } + + \cs_set:Nn \ptxcd_set_metadata_prop:nn { + % Fallback test for older kernels doesn't support mixed case eintries + \cs_if_exist:NTF \text_titlecase_first:n { + \exp_args:NNf \prop_gput:Nnn \g_ptxcd_MetaData_prop {\text_titlecase_first:n {#1}} {#2} + } { + \exp_args:NNx \prop_gput:Nnn \g_ptxcd_MetaData_prop { + \str_uppercase:f {\tl_head:n {#1}} + \str_lowercase:f {\tl_tail:n {#1}} + } {#2} + } + } + \msg_new:nnnn{tuda-ci} {unknown-metadata} { + You~ used~ the~ #1~ metadata~ entry.\\ + I~ don't~ know~ how~ to~ handle~ that.\\ + It~ will~ be~ ignored. + } {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.} +\else: + \hypersetup{pdfcreator=LaTeX~using~TUDa-CI} + \msg_new:nnnn {tuda-ci} {metadata-to-hypersetup} { + You~don't~use~pdfx.~ + Here~the~\string\Metadata ~command~only~exists~for~compatibility~reasons.\\ + I~will~pass~the~data~to~ḩypersetup. + }{ + If~possible~please~use~hyperref's~\string\hypersetup~command~for~the~metadata~directly.\\ + See~hyperref~documentation~for~details~on~usage. + } + + \newcommand*{\Metadata}[1]{ + \tl_set:Nn \l_tmpa_tl {#1} + \tl_replace_all:Nnn \l_tmpa_tl {\sep} {;~}% pdfx-Syntax compatibility + \clist_map_inline:Nn \l_tmpa_tl { + \exp_args:Nx \hypersetup{pdf\tl_trim_spaces:n {##1}} + } + \msg_warning:nn {tuda-ci} {metadata-to-hypersetup} + } + \cs_new:Nn \ptxcd_pass_TitleData: { + \prop_if_exist:NTF \g__pdfmanagement_documentproperties_prop { + \prop_set_eq:NN \l_tmpa_prop \g__pdfmanagement_documentproperties_prop + } { + \prop_set_eq:NN \l_tmpa_prop \g__hyp_documentproperties_prop + } + \prop_if_in:NnF \l_tmpa_prop {hyperref/pdftitle} { + \begingroup + \def\newline{} + \def\\{} + \let\thanks\use_none:n + \tl_gset:Nf \g_tmpa_tl {\@title} + \endgroup + \hypersetup{pdftitle={\tl_to_str:V \g_tmpa_tl}} + } + \prop_if_in:NnF \l_tmpa_prop {hyperref/pdfauthor} { + \begingroup + \def\newline{} + \def\\{} + \let\thanks\use_none:n + \tl_gset:Nx \g_tmpa_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \and}} + \tl_gset:Nx \g_tmpa_tl {\g_tmpa_tl } + \endgroup + \hypersetup{pdfauthor=\g_tmpa_tl} + } + } + \bool_if:NF \g_ptxcd_pdfa_bool { + \msg_new:nnn{tuda-ci} {no-pdfa}{The~ tuda\c__ptxcd_base_str\space class~ will~ not~ create~ PDF/A.} + \msg_info:nn{tuda-ci} {no-pdfa} + } +\fi: \endinput +%% +%% End of file `tudaletter.cls'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo b/Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo index 216642a28ce..86a1d992b17 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudalettersize10pt.clo @@ -1,40 +1,38 @@ -%% This is file `tudalettersize10pt.clo' version 3.41 (2024-07-02), +%% +%% This is file `tudalettersize10pt.clo', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudasize.dtx (with options: `scrsize,tudaletter') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ -%% This file is a slightly modified version of scrsize10pt.clo -%% generated with the docstrip utility, extended by scrdocstrip. -%% modified by Marei Peischl <marei@peitex.de> -%% -%% Its original source files were: -%% -%% scrkernel-version.dtx (with options: `clo,10pt') -%% scrkernel-fonts.dtx (with options: `clo,10pt') -%% scrkernel-paragraphs.dtx (with options: `clo,10pt') -%% -%% Copyright (c) 1994-2017 Markus Kohm [komascript at gmx info] -%% -%% The original file was generated from file(s) of the KOMA-Script bundle. -%% https://ctan.org/pkg/koma-script -%% -%% ======================================================================== %% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3 +%% conditions of the LaTeX Project Public License, either version 1.3c %% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008/05/04 or later. +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are Marei Peischl <kontakt@peitex.de>. -%% -%% +%% +%% The Current Maintainer of this work is +%% Marei Peischl <tuda-ci@peitex.de> +%% +%% The development repository can be found at +%% https://github.com/tudace/tuda_latex_templates +%% Please use the issue tracker for feedback! +%% +%% ============================================================================ +%% \ProvidesFile{% tudalettersize10pt.clo% }[ diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg b/Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg index d1d70773e85..ffde27cb75b 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudamecheng.cfg @@ -1,9 +1,9 @@ -%% This is file `tudamecheng.cfg' version 3.41 (2024-07-02), +%% This is file `tudamecheng.cfg' version 4.00 (2025-01-26), %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt %% ---------------------------------------------------------------------------- %% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> %% %% ============================================================================ %% This work may be distributed and/or modified under the @@ -16,7 +16,7 @@ %% %% This work has the LPPL maintenance status `maintained'. %% -%% The Current Maintainers of this work are +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> %% %% The development respository can be found at @@ -25,11 +25,8 @@ %% %% ============================================================================ %% -\def\fileversion{3.41} -\def\filedate{2024-07-02} \RequirePackage{expl3} -\ProvidesExplFile{tudamecheng.cfg} -{\filedate}{\fileversion}{Special Features the department of mechanical engineering of Darmstadt's Corporate Design (tuda-ci)} +\ProvidesExplFile{tudamecheng.cfg}{2025-01-26}{4.00}{Special Features the department of mechanical engineering of Darmstadt's Corporate Design (tuda-ci)} \RequirePackage{pgf} @@ -97,7 +94,7 @@ \@sponsors\par \nointerlineskip\addvspace{.1\c_ptxcd_logoheight_dim} \fi - + \smash{\MechEngArrow{\linewidth}} \\[\c_ptxcd_rulesep_dim] \usekomafont{pagefoot}\includegraphics[width=\c_ptxcd_logoheight_dim]{\g_ptxcd_departmentlogo_tl} @@ -106,7 +103,7 @@ } \renewcommand*{\sectionformat}{\color{TUDa-Primary2}\thesection\autodot\enskip} - + \if@titlepage \titlehead{\rule{0pt}{\c_ptxcd_logoheight_dim}} \fi @@ -146,7 +143,7 @@ \smash{\box_use:N \g_ptxcd_footline_box} } ]{TUDa.mecheng.foot.above.line} - + \ModifyLayer[ contents={ \dim_compare:nF {\box_wd:N \g_ptxcd_footline_box=\layerwidth} { @@ -155,7 +152,7 @@ \smash{\box_use:N \g_ptxcd_footline_box}% } ]{plain.TUDa.mecheng.foot.above.line} - + \clearpairofpagestyles \cfoot[\pagemark]{\pagemark} \hbox_gset:Nn \g_ptxcd_departmentlogo_box { diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls index 0286215cb05..e4a27701d8a 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudaposter.cls @@ -1,10 +1,20 @@ -%% This is file `tudaposter.cls' version 3.41 (2024-07-02), +%% +%% This is file `tudaposter.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudaposter.dtx (with options: `class,initialization') +%% tuda-ci.dtx (with options: `options,poster,print') +%% tudaposter.dtx (with options: `class,body') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,604 +23,554 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\NeedsTeXFormat{LaTeX2e} - -\ProvidesExplPackage{tudaposter}{\filedate}{\fileversion}{Poster Layouts for the Corporate Design of TU Darmstadt} - -\bool_new:N \g_ptxcd_logo_inhead_bool +%% +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\ProvidesExplPackage{tudaposter}{2025-01-26}{4.00}{Announcement poster Layouts for the Corporate Design of TU Darmstadt} +\bool_new:N \g__ptxcd_logo_head_bool \dim_new:N \g_ptxcd_margin_dim \int_new:N \g_ptxcd_paper_int \int_new:N \g_ptxcd_postertype_int \str_new:N \g_ptxcd_department_str - \str_const:Nn \c__ptxcd_base_str {poster} - \keys_define:nn {ptxcd/poster} { - accentcolor .code:n = {\PassOptionsToPackage{accent=#1}{tudacolors}}, - color .code:n = {\PassOptionsToPackage{color=#1}{tudacolors}}, - textaccentcolor .code:n = {\PassOptionsToPackage{textaccent=#1}{tudacolors}}, - identbarcolor .code:n = {\PassOptionsToPackage{identbar=#1}{tudacolors}}, - logo .choice:, - logo / head .code:n = {\bool_gset_true:N \g_ptxcd_logo_inhead_bool}, - logo / body .code:n = {\bool_gset_false:N \g_ptxcd_logo_inhead_bool}, - logo / top .code:n = {\bool_gset_true:N \g_ptxcd_logo_inhead_bool}, - logo / bottom .code:n = {\bool_gset_false:N \g_ptxcd_logo_inhead_bool}, - logo .initial:n = {head}, - footer .bool_gset:N = \g_ptxcd_poster_foot_bool, - footer .default:n = true, - footer .initial:n = false, - footheight .dim_gset:N = \g_ptxcd_footheight_dim, - paper .choices:nn = {a0,a1,a2,a3,a4}{ - \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int - \tl_gset_eq:NN \g_ptxcd_paper_tl \l_keys_choice_tl - }, - fontsize .choice:, - fontsize / auto .code:n = \tl_gclear:N \g_ptxcd_fontsize_tl, - fontsize / unknown .code:n = {\@defaultunits\@tempdima#1pt\relax\@nnil \tl_gset:Nx \g_ptxcd_fontsize_tl {\the\@tempdima}}, - fontsize .initial:n = auto, - logofile .tl_gset:N = \g_ptxcd_logofile_tl, - logofile .initial:n = tuda_logo, - type .choice:, - type / default .code:n = { - \int_gset:Nn \g_ptxcd_postertype_int {1} - }, - type / announcement .code:n = { - \int_gset:Nn \g_ptxcd_postertype_int {2} - \keys_set:nn {ptxcd/poster}{ - marginpar=true, - indenttext=false,%allow overwrite - check default - logo=head, - title=small, - colorsubtitle=true - } - }, - type .initial:n = default, - indenttext .bool_gset:N = \g_ptxcd_indenttext_bool, - indenttext .initial:n = false, - indenttext .default:n = true, - marginpar .bool_gset:N = \g_ptxcd_marginpar_bool, - marginpar / auto .meta:n = {marginpar = true} , - marginpar .default:n = true, - marginpar .initial:n = false, - title .choice:, - title / default .meta:n = {title=large}, - 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, - colorback .bool_gset:N = \g_ptxcd_colorback_bool, - colorback .initial:n = true, - colorsubtitle .bool_gset:N = \g_ptxcd_colorsubtitle_bool, - colorsubtitle .default:n = true, - colorsubtitle .initial:n = false, - 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/poster} {colorback=false, departmentlogofile=tuda_maschinenbau_logo} - }, - department .initial:n = default, - department / unknown .code:n = { - \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} - }, - departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, - departmentconfigprefix .initial:n = tuda, - mecheng .meta:n = {department=mecheng}, - departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, - departmentlogofile .initial:n =, + footer .bool_gset:N = \g_ptxcd_poster_foot_bool, + footer .default:n = true, + footer .initial:n = false, + footheight .dim_gset:N = \g_ptxcd_footheight_dim, + fontsize .choice:, + fontsize / auto .code:n = \tl_gclear:N \g_ptxcd_fontsize_tl, + fontsize / unknown .code:n = {\@defaultunits\@tempdima#1pt\relax\@nnil \tl_gset:Nx \g_ptxcd_fontsize_tl {\the\@tempdima}}, + fontsize .initial:n = auto, + type .choice:, + type / default .code:n = { + \int_gset:Nn \g_ptxcd_postertype_int {1} + }, + type / announcement .code:n = { + \int_gset:Nn \g_ptxcd_postertype_int {2} + \keys_set:nn {ptxcd/poster}{ + marginpar=true, + indenttext=false,%allow overwrite - check default + logo=head, + title=small, + colorsubtitle=true + } + }, + type .initial:n = default, + indenttext .bool_gset:N = \g_ptxcd_indenttext_bool, + indenttext .initial:n = false, + indenttext .default:n = true, + colorsubtitle .bool_gset:N = \g_ptxcd_colorsubtitle_bool, + colorsubtitle .default:n = true, + colorsubtitle .initial:n = false, + logofile .tl_gset:N = \g_ptxcd_logofile_tl, + logofile .initial:n = tuda_logo, + accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool, + accept-missing-logos .initial:n = false, + accept-missing-logos .usage:n = load, + accept-missing-logos .default:n = true, + 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} + \exp_args:Ne \keys_set:ne { + + ptxcd / \c__ptxcd_base_str + }{ + colorback=false, + departmentlogofile=tuda_maschinenbau_logo, + } + }, + + department .initial:n = default, + department / unknown .code:n = { + \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} + }, + departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, + departmentconfigprefix .initial:n = tuda, + departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, + departmentlogofile .initial:n =, + mecheng .meta:n = {department=mecheng}, + logo .choice:, + logo / head .code:n = { + \bool_gset_true:N \g__ptxcd_logo_head_bool + }, + logo / body .code:n = { + \bool_gset_false:N \g__ptxcd_logo_head_bool + }, + logo / top .meta:n = {logo=head}, + logo / bottom .code:n = {\bool_gset_false:N \g__ptxcd_logo_head_bool}, + logo .initial:n = {head}, +%% color options +%% color options + color .meta:n = {accentcolor=#1}, + accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}}, + textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}}, + identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}}, + colorback .bool_gset:N = \g_ptxcd_colorback_bool, + colorback .default:n = true, + colorback .initial:n = true, + marginpar + .bool_gset:N = \g_ptxcd_marginpar_bool, + marginpar / auto .meta:n = {marginpar = true} , + marginpar .default:n = auto, + marginpar .initial:n = false, + paper .choices:nn = { + a0,a1,a2,a3,a4 + }{ + \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int + \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules} + \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry} + }, + paper .initial:n = + + a0, + title .choice:, + title / default .meta:n = {title=large}, + 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, +} +\cs_if_exist:NT \TUDaDefaultBuildOptions { + \exp_args:Ne \keys_set:ne { ptxcd / + \c__ptxcd_base_str + } { + \TUDaDefaultBuildOptions + } +} +\cs_new:Nn \__ptxcd_insert_logo: { + \bool_if:NTF \g_ptxcd_logo_workaround_bool { + \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf} + \use_ii:nn + \use_i:nn + } { + \use_ii:nn + } + {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}} + {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}} } - \ProcessKeyOptions[ptxcd/poster] - \ExplSyntaxOff +\PassOptionsToPackage{DIV=6,typeareawarninfolimit=-1}{typearea} \LoadClass[parskip=half-]{scrartcl} \RequirePackage{scrlayer} \RequirePackage{scrlayer-notecolumn} \ExplSyntaxOn - -\tl_if_empty:NT \g_ptxcd_paper_tl {\keys_set:nn {ptxcd/poster} {paper=a0}} - \bool_if:NTF \g_ptxcd_smalltitle_bool { - \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} - \ptxcd_setup_title_sizes: - \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} - \ptxcd_setup_base_sizes: + \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} + \ptxcd_setup_title_sizes: + \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} + \ptxcd_setup_base_sizes: }{ - \int_gdecr:N \g_ptxcd_paper_int - \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} - \ptxcd_setup_title_sizes: - \ptxcd_setup_base_sizes: + \int_gdecr:N \g_ptxcd_paper_int + \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} + \ptxcd_setup_title_sizes: + \ptxcd_setup_base_sizes: } - - \setkomafont{title}{ - \bool_if:NT \g_ptxcd_colorback_bool - {\color{textonaccentcolor}}\expandafter\fontsize\ptxcd_title_fontsize:\selectfont} + \bool_if:NT \g_ptxcd_colorback_bool + {\color{textonaccentcolor}}\expandafter\fontsize\ptxcd_title_fontsize:\selectfont} \setkomafont{subtitle}{\expandafter\fontsize\ptxcd_titleinfo_fontsize:\selectfont} \newkomafont{titleinfo}{\usekomafont{subtitle}} - \clist_map_inline:nn {author, date, publishers} {\setkomafont{#1}{\usekomafont{subtitle}}} - \ExplSyntaxOff \KOMAoptions{fontsize=\csname g_ptxcd_fontsize_tl\endcsname} \ExplSyntaxOn - \RequirePackage{tudafonts} \renewcommand*{\familydefault}{\sfdefault} - -\exp_args:Nx \PassOptionsToPackage{paper=\g_ptxcd_paper_tl , mode=tikz}{tudarules} +\exp_args:Nx \PassOptionsToPackage{mode=tikz}{tudarules} \RequirePackage{tudarules} - \RequirePackage{tudacolors} \RequirePackage{qrcode} \RequirePackage{tikz} - - - - \newlength{\contentwidth} \setlength{\contentwidth}{\dimexpr\paperwidth-2\g_ptxcd_margin_dim} - \ptxcd_makeheadrule[width=\contentwidth, color=identbarcolor]{ptxcd_headrule} - %%%%%%%%%%%%%%%%%%%%%% \int_case:nn {\g_ptxcd_postertype_int} { - {1} {} - {2} { - \addtokomafont{subtitle}{\bfseries} - } + {1} {} + {2} { + \addtokomafont{subtitle}{\bfseries} + } } - -%%%%%%%%%%%%%%%%%%%%%% -%marginpar option \dim_new:N \g_ptxcd_marginpar_dim -%%%%%%%%%%%%%%%%%%%%%% \dim_new:N \g_ptxcd_titleindent_dim \begingroup \expandafter\fontsize\ptxcd_title_fontsize:\selectfont \dim_gset:Nn \g_ptxcd_titleindent_dim {.5ex} \endgroup - \dim_new:N \g_ptxcd_columnSep_dim \dim_gset:Nn \g_ptxcd_columnSep_dim {1em} - \RequirePackage{geometry} - \geometry{ - margin= \g_ptxcd_margin_dim, - hmargin = \dim_eval:n { - \g_ptxcd_margin_dim + - \bool_if:NTF \g_ptxcd_indenttext_bool - {\g_ptxcd_titleindent_dim} {0pt} - }, - top=\dim_eval:n { - \box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box - + .5\c_ptxcd_logoheight_dim - +\g_ptxcd_margin_dim} + margin= \g_ptxcd_margin_dim, + hmargin = \dim_eval:n { + \g_ptxcd_margin_dim + + \bool_if:NTF \g_ptxcd_indenttext_bool + {\g_ptxcd_titleindent_dim} {0pt} + }, + top=\dim_eval:n { + \box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box + + .5\c_ptxcd_logoheight_dim + +\g_ptxcd_margin_dim} } - \bool_if:NTF \g_ptxcd_marginpar_bool { - \dim_gset:Nn \g_ptxcd_marginpar_dim {\__ptxcd_logowidth:} - \geometry{ - includemp, marginpar=\g_ptxcd_marginpar_dim, marginparsep=\g_ptxcd_columnSep_dim, - right = \dim_eval:n { - \g_ptxcd_margin_dim + - \bool_if:nTF {\g_ptxcd_indenttext_bool && !\g_ptxcd_marginpar_bool} - {\g_ptxcd_titleindent_dim} {0pt} - }, - } - \KOMAoptions{mpinclude} + \dim_gset:Nn \g_ptxcd_marginpar_dim {\__ptxcd_logowidth:} + \geometry{ + includemp, marginpar=\g_ptxcd_marginpar_dim, marginparsep=\g_ptxcd_columnSep_dim, + right = \dim_eval:n { + \g_ptxcd_margin_dim + + \bool_if:nTF {\g_ptxcd_indenttext_bool && !\g_ptxcd_marginpar_bool} + {\g_ptxcd_titleindent_dim} {0pt} + }, + } + \KOMAoptions{mpinclude} }{ - \dim_gzero:N \g_ptxcd_marginpar_dim - \geometry{ - nomarginpar, - right = \dim_eval:n { - \bool_if:NT \g_ptxcd_indenttext_bool - {\g_ptxcd_titleindent_dim} - + \g_ptxcd_margin_dim - }, - } - \KOMAoptions{mpinclude=false} + \dim_gzero:N \g_ptxcd_marginpar_dim + \geometry{ + nomarginpar, + right = \dim_eval:n { + \bool_if:NT \g_ptxcd_indenttext_bool + {\g_ptxcd_titleindent_dim} + + \g_ptxcd_margin_dim + }, + } + \KOMAoptions{mpinclude=false} } - - \bool_if:NT \g_ptxcd_poster_foot_bool { - \dim_compare:nT {\g_ptxcd_footheight_dim = 0pt} { - \dim_set:Nn \g_ptxcd_footheight_dim - {1.5\baselineskip} - } - \geometry{bottom=\dim_eval:n {\g_ptxcd_footheight_dim+\footskip+\g_ptxcd_margin_dim}} + \dim_compare:nT {\g_ptxcd_footheight_dim = 0pt} { + \dim_set:Nn \g_ptxcd_footheight_dim + {1.5\baselineskip} + } + \geometry{bottom=\dim_eval:n {\g_ptxcd_footheight_dim+\footskip+\g_ptxcd_margin_dim}} } -%%%%%%%%%%%%%%%%%%%%%% - \dim_new:N \g_ptxcd_qrcode_dim \dim_gset:Nn \g_ptxcd_qrcode_dim {.7\c_ptxcd_logoheight_dim} - \DeclareNewLayer[ - background, - align=br, - width=\g_ptxcd_qrcode_dim, - height=\g_ptxcd_qrcode_dim, - hoffset=\paperwidth-\g_ptxcd_margin_dim, - voffset=\paperheight-\g_ptxcd_margin_dim, - mode=picture, - contents={% - \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl { - \let\width\g_ptxcd_qrcode_dim - \let\height\g_ptxcd_qrcode_dim - \g_ptxcd_poster_qrcode_tl - } - } + background, + align=br, + width=\g_ptxcd_qrcode_dim, + height=\g_ptxcd_qrcode_dim, + hoffset=\paperwidth-\g_ptxcd_margin_dim, + voffset=\paperheight-\g_ptxcd_margin_dim, + mode=picture, + contents={% + \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl { + \let\width\g_ptxcd_qrcode_dim + \let\height\g_ptxcd_qrcode_dim + \g_ptxcd_poster_qrcode_tl + } + } ]{TUDa.poster.qrcode} - - - \DeclareNewLayer[ - clone=TUDa.poster.qrcode, - align=bl, - hoffset=\g_ptxcd_margin_dim, - width=\paperwidth-2\g_ptxcd_margin_dim, - height=\g_ptxcd_footheight_dim, - contents={ - \bool_if:NTF \g_ptxcd_poster_foot_bool { - \putUL{\rule{\layerwidth}{\g_ptxcd_titlerule_dim}} - \put(0,0) {\parbox[b][\g_ptxcd_footheight_dim][c]{\layerwidth}{\strut\g_ptxcd_poster_foot_tl\strut}} - \putLL{\rule{\layerwidth}{\g_ptxcd_titlerule_dim}} - }{ - \smash{\rule{\layerwidth}{\g_ptxcd_titlerule_dim}} - } - } + clone=TUDa.poster.qrcode, + align=bl, + hoffset=\g_ptxcd_margin_dim, + width=\paperwidth-2\g_ptxcd_margin_dim, + height=\g_ptxcd_footheight_dim, + contents={ + \bool_if:NTF \g_ptxcd_poster_foot_bool { + \putUL{\rule{\layerwidth}{\g_ptxcd_titlerule_dim}} + \put(0,0) {\parbox[b][\g_ptxcd_footheight_dim][c]{\layerwidth}{\strut\g_ptxcd_poster_foot_tl\strut}} + \putLL{\rule{\layerwidth}{\g_ptxcd_titlerule_dim}} + }{ + \smash{\rule{\layerwidth}{\g_ptxcd_titlerule_dim}} + } + } ]{TUDa.poster.footer} - \DeclareNewLayer[ - background,mode=picture, - width=\paperwidth-2\g_ptxcd_margin_dim, - hoffset=\g_ptxcd_margin_dim, - voffset=\g_ptxcd_margin_dim+\box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box, - contents=\bool_if:NT \g_ptxcd_colorback_bool {\color{accentcolor}\rule{\layerwidth}{\layerheight}}, + background,mode=picture, + width=\paperwidth-2\g_ptxcd_margin_dim, + hoffset=\g_ptxcd_margin_dim, + voffset=\g_ptxcd_margin_dim+\box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box, + contents=\bool_if:NT \g_ptxcd_colorback_bool {\color{accentcolor}\rule{\layerwidth}{\layerheight}}, ]{TUDa.poster.background} - \DeclareNewLayer[ - textarea, - foreground, - align=tr, - hoffset=\paperwidth-\g_ptxcd_margin_dim, - width=\__ptxcd_logowidth:, - height=.5\textheight, - contents={\box_use:N \g_ptxcd_title_info_box} + textarea, + foreground, + align=tr, + hoffset=\paperwidth-\g_ptxcd_margin_dim, + width=\__ptxcd_logowidth:, + height=.5\textheight, + contents={\box_use:N \g_ptxcd_title_info_box} ]{TUDa.poster.logo} - \DeclareNewLayer[ - clone=TUDa.poster.background, - align=tl, - voffset=\g_ptxcd_margin_dim, - height=\box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box, - mode=picture, - contents={\box_use:N \ptxcd_headrule_box} + clone=TUDa.poster.background, + align=tl, + voffset=\g_ptxcd_margin_dim, + height=\box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box, + mode=picture, + contents={\box_use:N \ptxcd_headrule_box} ]{TUDa.poster.rule} - \DeclareNewLayer[ - clone=notecolumn.marginpar, + clone=notecolumn.marginpar, ]{TUDa.poster.marginpar} - \DeclareNewPageStyleByLayers{TUDa.poster.title}{TUDa.poster.rule,TUDa.poster.background,TUDa.poster.qrcode,TUDa.poster.footer} \DeclareNewPageStyleByLayers{TUDa.poster}{TUDa.poster.rule,TUDa.poster.qrcode,TUDa.poster.footer, TUDa.poster.marginpar} \pagestyle{TUDa.poster} - - \dim_new:N \g_ptxcd_titlegraphic_max_height_dim \dim_new:N \g_ptxcd_titleback_dim - \newcommand*{\titleinfo}[1]{\def\@titleinfo{#1}} \titleinfo{} - \renewcommand*{\maketitle}{ - \begingroup - \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative - \bool_if:NT \g_ptxcd_marginpar_bool - {\setlength{\linewidth}{\dim_eval:n {\textwidth+\g_ptxcd_marginpar_dim + \marginparsep}}} - \vbox_gset:Nn \g_ptxcd_title_box - { - \usesizeofkomafont{title} - \parbox[t]{\linewidth}{ - \bool_if:NT \g_ptxcd_smalltitle_bool {\raisebox{ - \dim_max:nn {0pt} {1.5\c_ptxcd_logoheight_dim - \height} - }} - { - \begin{minipage}[b]{\bool_if:NT \g_ptxcd_logo_inhead_bool {.75}\linewidth} - \leavevmode\par\nointerlineskip - \bool_if:NF \g_ptxcd_indenttext_bool {\begin{addmargin}{\g_ptxcd_titleindent_dim }} - \usekomafont{title} - \raggedright - \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}} - \leavevmode\usekomafont{disposition}\usekomafont{title}% - \@title\strut\par - \bool_if:NTF \g_ptxcd_indenttext_bool {\nointerlineskip\leavevmode}{\end{addmargin}} - \end{minipage} - } - \par\nointerlineskip - \exp_args:Nf \tl_if_empty:nF {\@subtitle\@titleinfo\@subject\@author\@date\@publishers} { - \bool_if:NT \g_ptxcd_indenttext_bool {\hspace*{-\g_ptxcd_titleindent_dim}} - \rule{\linewidth}{\g_ptxcd_titlerule_dim} - \par - \nointerlineskip - \vspace{\c_ptxcd_rulesep_dim} - \bool_if:NTF \g_ptxcd_indenttext_bool {\begingroup}{\begin{addmargin}{\g_ptxcd_titleindent_dim }} - \bool_if:NT \g_ptxcd_colorsubtitle_bool {\color{textonaccentcolor}} - \clist_map_inline:nn {subtitle, titleinfo, subject, author, date, publishers} - {\tl_if_empty:cF {@##1} {{\usekomafont{##1}\use:c {@##1}\par}}} - \nointerlineskip - \bool_if:NTF \g_ptxcd_indenttext_bool {\endgroup} {\end{addmargin}} - \vspace{\c_ptxcd_rulesep_dim} - \par\nointerlineskip - \bool_if:NT \g_ptxcd_indenttext_bool {\hspace*{-\g_ptxcd_titleindent_dim}} - \tl_if_empty:NF \@thanks { - \bool_if:NT \g_ptxcd_indenttext_bool {\hspace*{-\g_ptxcd_titleindent_dim}}\rule{\linewidth}{\g_ptxcd_titlerule_dim} - \vspace{\c_ptxcd_rulesep_dim} - \par\nointerlineskip - \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont - \bool_if:NTF \g_ptxcd_indenttext_bool {\begingroup}{\begin{addmargin}{\g_ptxcd_titleindent_dim }} - \let\footnotetext\ptxcd_title@footnote - \@thanks - \vspace{\c_ptxcd_rulesep_dim} - \bool_if:NTF \g_ptxcd_indenttext_bool {\endgroup} {\end{addmargin}} - \global\let\@thanks\@empty - \par - } - } - \nointerlineskip - \rule{\linewidth}{\g_ptxcd_titlerule_dim} - } - } - \endgroup - - \ptxcd_Setup_Title_box: - \dim_gset:Nn \g_ptxcd_titleback_dim { - \bool_if:NT \g_ptxcd_colorsubtitle_bool {\box_dp:N \g_ptxcd_title_box}+ - \box_ht:N \g_ptxcd_title_box+.5\c_ptxcd_logoheight_dim - } - - \ModifyLayer[ - height=\g_ptxcd_titleback_dim - ]{TUDa.poster.background} - - \bool_if:NF \g_ptxcd_logo_inhead_bool { - \ModifyLayer[ - addvoffset= - \bool_if:NF \g_ptxcd_colorsubtitle_bool {\box_dp:N \g_ptxcd_title_box}+\g_ptxcd_titleback_dim+\c_ptxcd_smallrule_dim - ]{TUDa.poster.logo} - } - \leavevmode\box_use:N \g_ptxcd_title_box\par - \dim_set:Nn \g_ptxcd_titlegraphic_max_height_dim {\textheight-\pagetotal} - \bool_if:NTF \g_ptxcd_logo_inhead_bool { - \dim_compare:nT {\box_ht:N \g_ptxcd_title_info_box+ \box_dp:N \g_ptxcd_title_info_box > \box_ht:N \g_ptxcd_title_box} - {\msg_warning:nn{tudaposter} {infobox-too-high}} - } { - \dim_compare:nT {\box_ht:N \g_ptxcd_title_info_box+ \box_dp:N \g_ptxcd_title_info_box > \box_ht:N \g_ptxcd_titlegraphic_box + \box_dp:N \g_ptxcd_titlegraphic_box} - {\msg_warning:nn{tudaposter} {infobox-too-high}} - } - \global\def\contentheight{\g_ptxcd_titlegraphic_max_height_dim} - \tl_if_empty:NF \@titlegraphic{ - \vbox_gset:Nn \g_ptxcd_titlegraphic_box {\parbox[t]{\dim_eval:n {\paperwidth-2\g_ptxcd_margin_dim}}{\@titlegraphic}} - \par\nointerlineskip - \box_use:N \g_ptxcd_titlegraphic_box - } - - \DeclareLayer[ - clone=TUDa.poster.marginpar, - height=\bool_if:NF \l_ptxcd_marginpar_overlap_bool {-\box_ht:N \g_ptxcd_titlegraphic_box-\box_dp:N \g_ptxcd_titlegraphic_box} - +\textheight-\box_ht:N \g_ptxcd_title_box-\box_dp:N \g_ptxcd_title_box-.5\c_ptxcd_logoheight_dim, - addvoffset=\bool_if:NF \l_ptxcd_marginpar_overlap_bool {+\box_ht:N\g_ptxcd_titlegraphic_box+\box_dp:N \g_ptxcd_titlegraphic_box} - +\box_ht:N \g_ptxcd_title_box+\box_dp:N \g_ptxcd_title_box+.5\c_ptxcd_logoheight_dim, - ]{TUDa.poster.marginpar.title} - - \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl { - \ModifyLayer[addwidth=-\g_ptxcd_qrcode_dim-\c_ptxcd_rulesep_dim]{TUDa.poster.footer} - } - - \AddLayersToPageStyle{TUDa.poster.title}{TUDa.poster.marginpar.title} - \AddLayersToPageStyle{TUDa.poster.title}{TUDa.poster.logo} - \thispagestyle{TUDa.poster.title} - \global\def\contentwidth{\linewidth} - \par - \let\@title\@empty - \let\@subtitle\@empty - \let\@titleinfo\@empty + \begingroup + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \bool_if:NT \g_ptxcd_marginpar_bool + {\setlength{\linewidth}{\dim_eval:n {\textwidth+\g_ptxcd_marginpar_dim + \marginparsep}}} + \vbox_gset:Nn \g_ptxcd_title_box + { + \usesizeofkomafont{title} + \parbox[t]{\linewidth}{ + \bool_if:NT \g_ptxcd_smalltitle_bool {\raisebox{ + \dim_max:nn {0pt} {1.5\c_ptxcd_logoheight_dim - \height} + }} + { + \begin{minipage}[b]{\bool_if:NT \g__ptxcd_logo_head_bool {.75}\linewidth} + \leavevmode\par\nointerlineskip + \bool_if:NF \g_ptxcd_indenttext_bool {\begin{addmargin}{\g_ptxcd_titleindent_dim }} + \usekomafont{title} + \raggedright + \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}} + \leavevmode\usekomafont{disposition}\usekomafont{title}% + \@title\strut\par + \bool_if:NTF \g_ptxcd_indenttext_bool {\nointerlineskip\leavevmode}{\end{addmargin}} + \end{minipage} + } + \par\nointerlineskip + \exp_args:Nf \tl_if_empty:nF {\@subtitle\@titleinfo\@subject\@author\@date\@publishers} { + \bool_if:NT \g_ptxcd_indenttext_bool {\hspace*{-\g_ptxcd_titleindent_dim}} + \rule{\linewidth}{\g_ptxcd_titlerule_dim} + \par + \nointerlineskip + \vspace{\c_ptxcd_rulesep_dim} + \bool_if:NTF \g_ptxcd_indenttext_bool {\begingroup}{\begin{addmargin}{\g_ptxcd_titleindent_dim }} + \bool_if:NT \g_ptxcd_colorsubtitle_bool {\color{textonaccentcolor}} + \clist_map_inline:nn {subtitle, titleinfo, subject, author, date, publishers} + {\tl_if_empty:cF {@##1} {{\usekomafont{##1}\use:c {@##1}\par}}} + \nointerlineskip + \bool_if:NTF \g_ptxcd_indenttext_bool {\endgroup} {\end{addmargin}} + \vspace{\c_ptxcd_rulesep_dim} + \par\nointerlineskip + \bool_if:NT \g_ptxcd_indenttext_bool {\hspace*{-\g_ptxcd_titleindent_dim}} + \tl_if_empty:NF \@thanks { + \bool_if:NT \g_ptxcd_indenttext_bool {\hspace*{-\g_ptxcd_titleindent_dim}}\rule{\linewidth}{\g_ptxcd_titlerule_dim} + \vspace{\c_ptxcd_rulesep_dim} + \par\nointerlineskip + \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont + \bool_if:NTF \g_ptxcd_indenttext_bool {\begingroup}{\begin{addmargin}{\g_ptxcd_titleindent_dim }} + \let\footnotetext\ptxcd_title@footnote + \@thanks + \vspace{\c_ptxcd_rulesep_dim} + \bool_if:NTF \g_ptxcd_indenttext_bool {\endgroup} {\end{addmargin}} + \global\let\@thanks\@empty + \par + } + } + \nointerlineskip + \rule{\linewidth}{\g_ptxcd_titlerule_dim} + } + } + \endgroup + \ptxcd_Setup_Title_box: + \dim_gset:Nn \g_ptxcd_titleback_dim { + \bool_if:NT \g_ptxcd_colorsubtitle_bool {\box_dp:N \g_ptxcd_title_box}+ + \box_ht:N \g_ptxcd_title_box+.5\c_ptxcd_logoheight_dim + } + \ModifyLayer[ + height=\g_ptxcd_titleback_dim + ]{TUDa.poster.background} + \bool_if:NF \g__ptxcd_logo_head_bool { + \ModifyLayer[ + addvoffset= + \bool_if:NF \g_ptxcd_colorsubtitle_bool {\box_dp:N \g_ptxcd_title_box}+\g_ptxcd_titleback_dim+\c_ptxcd_smallrule_dim + ]{TUDa.poster.logo} + } + \leavevmode\box_use:N \g_ptxcd_title_box\par + \dim_set:Nn \g_ptxcd_titlegraphic_max_height_dim {\textheight-\pagetotal} + \bool_if:NTF \g__ptxcd_logo_head_bool { + \dim_compare:nT {\box_ht:N \g_ptxcd_title_info_box+ \box_dp:N \g_ptxcd_title_info_box > \box_ht:N \g_ptxcd_title_box} + {\msg_warning:nn{tudaposter} {infobox-too-high}} + } { + \dim_compare:nT {\box_ht:N \g_ptxcd_title_info_box+ \box_dp:N \g_ptxcd_title_info_box > \box_ht:N \g_ptxcd_titlegraphic_box + \box_dp:N \g_ptxcd_titlegraphic_box} + {\msg_warning:nn{tudaposter} {infobox-too-high}} + } + \global\def\contentheight{\g_ptxcd_titlegraphic_max_height_dim} + \tl_if_empty:NF \@titlegraphic{ + \vbox_gset:Nn \g_ptxcd_titlegraphic_box {\parbox[t]{\dim_eval:n {\paperwidth-2\g_ptxcd_margin_dim}}{\@titlegraphic}} + \par\nointerlineskip + \box_use:N \g_ptxcd_titlegraphic_box + } + \DeclareLayer[ + clone=TUDa.poster.marginpar, + height=\bool_if:NF \l_ptxcd_marginpar_overlap_bool {-\box_ht:N \g_ptxcd_titlegraphic_box-\box_dp:N \g_ptxcd_titlegraphic_box} + +\textheight-\box_ht:N \g_ptxcd_title_box-\box_dp:N \g_ptxcd_title_box-.5\c_ptxcd_logoheight_dim, + addvoffset=\bool_if:NF \l_ptxcd_marginpar_overlap_bool {+\box_ht:N\g_ptxcd_titlegraphic_box+\box_dp:N \g_ptxcd_titlegraphic_box} + +\box_ht:N \g_ptxcd_title_box+\box_dp:N \g_ptxcd_title_box+.5\c_ptxcd_logoheight_dim, + ]{TUDa.poster.marginpar.title} + \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl { + \ModifyLayer[addwidth=-\g_ptxcd_qrcode_dim-\c_ptxcd_rulesep_dim]{TUDa.poster.footer} + } + \AddLayersToPageStyle{TUDa.poster.title}{TUDa.poster.marginpar.title} + \AddLayersToPageStyle{TUDa.poster.title}{TUDa.poster.logo} + \thispagestyle{TUDa.poster.title} + \global\def\contentwidth{\linewidth} + \par + \let\@title\@empty + \let\@subtitle\@empty + \let\@titleinfo\@empty } - - \def\@titlegraphic{} \newcommand{\titlegraphic}[1]{ - \def\@titlegraphic{#1} +\def\@titlegraphic{#1} } -\box_new:N \g_ptxcd_titlegraphic_box +\box_new:N \g_ptxcd_titlegraphic_box \seq_new:N \g_ptxcd_title_info_seq - -\seq_gput_right:Nn \g_ptxcd_title_info_seq { - \rlap{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}} -} - +\seq_gput_right:Nn \g_ptxcd_title_info_seq {\rlap{\__ptxcd_insert_logo:}} \box_new:N \g_ptxcd_title_info_box \box_new:N \g_ptxcd_title_box - \cs_new:Nn \ptxcd_make_title_info_box:n { - \usekomafont{titleinfo} - \setlength{\fboxsep}{.2\baselineskip} - \colorbox{InfoBox}{\hspace*{\dimexpr.2\c_ptxcd_logoheight_dim-\fboxsep}% - \parbox{2\c_ptxcd_logoheight_dim}{ - \raggedright - #1 - }} + \usekomafont{titleinfo} + \setlength{\fboxsep}{.2\baselineskip} + \colorbox{InfoBox}{\hspace*{\dimexpr.2\c_ptxcd_logoheight_dim-\fboxsep}% + \parbox{2\c_ptxcd_logoheight_dim}{ + \raggedright + #1 + }} } - \cs_new:Nn \ptxcd_make_title_logo_box:n { - \setlength{\fboxsep}{\z@}% - \parbox{\__ptxcd_logowidth:}{ - \colorbox{InfoBox}{ - \rlap{ - \makebox[\dim_eval:n {\_ptxcd_logowidth: + \_ptxcd_logowsep:}][r]{ - \colorbox{InfoBox}{#1\hspace{\__ptxcd_logosep:}} - } - } - } - } + \setlength{\fboxsep}{\z@}% + \parbox{\__ptxcd_logowidth:}{ + \colorbox{InfoBox}{ + \rlap{ + \makebox[\dim_eval:n {\_ptxcd_logowidth: + \_ptxcd_logowsep:}][r]{ + \colorbox{InfoBox}{#1\hspace{\__ptxcd_logosep:}} + } + } + } + } } - - \newcommand{\addTitleBox}[1]{\seq_gput_right:Nn \g_ptxcd_title_info_seq {\ptxcd_make_title_info_box:n {#1}}} - \NewDocumentCommand{\addTitleBoxLogo}{sm}{ - \IfBooleanTF{#1}{ - \seq_gput_right:Nn \g_ptxcd_title_info_seq { - \ptxcd_make_title_logo_box:n {#2} - } - }{ - \seq_gput_right:Nn \g_ptxcd_title_info_seq { - \ptxcd_make_title_logo_box:n { - \hbox_set:Nn \l_tmpa_box { - \includegraphics[width=1.5\c_ptxcd_logoheight_dim]{#2} - } - \dim_set:Nn \l_tmpa_dim {2\c_ptxcd_logoheight_dim/3} - \dim_compare:nTF {\box_ht:N \l_tmpa_box > \l_tmpa_dim} - {\includegraphics[width=\l_tmpa_dim]{#2}} - {\box_use:N \l_tmpa_box} - } - } - } + \IfBooleanTF{#1}{ + \seq_gput_right:Nn \g_ptxcd_title_info_seq { + \ptxcd_make_title_logo_box:n {#2} + } + }{ + \seq_gput_right:Nn \g_ptxcd_title_info_seq { + \ptxcd_make_title_logo_box:n { + \hbox_set:Nn \l_tmpa_box { + \includegraphics[width=1.5\c_ptxcd_logoheight_dim]{#2} + } + \dim_set:Nn \l_tmpa_dim {2\c_ptxcd_logoheight_dim/3} + \dim_compare:nTF {\box_ht:N \l_tmpa_box > \l_tmpa_dim} + {\includegraphics[width=\l_tmpa_dim]{#2}} + {\box_use:N \l_tmpa_box} + } + } + } } - \cs_new:Nn \ptxcd_Setup_Title_box: { - \hbox_gset:Nn \g_ptxcd_title_info_box - {\parbox{\__ptxcd_logowidth:}{ - \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\skip_vertical:n - { - \box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box - } - } - }} + \hbox_gset:Nn \g_ptxcd_title_info_box + {\parbox{\__ptxcd_logowidth:}{ + \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\skip_vertical:n + { + \box_ht:N \ptxcd_headrule_box + \box_dp:N \ptxcd_headrule_box + } + } + }} } - - \tl_new:N \g_ptxcd_poster_foot_tl \newcommand{\footer}[1]{ - \tl_gset:Nn \g_ptxcd_poster_foot_tl {#1} + \tl_gset:Nn \g_ptxcd_poster_foot_tl {#1} } - \tl_new:N \g_ptxcd_poster_qrcode_tl \newcommand*{\footerqrcode}[1]{ - \tl_gset:Nn \g_ptxcd_poster_qrcode_tl - {\raisebox{\depth}{\qrcode[height={\g_ptxcd_qrcode_dim}]{#1}}} + \tl_gset:Nn \g_ptxcd_poster_qrcode_tl + {\raisebox{\depth}{\qrcode[height={\g_ptxcd_qrcode_dim}]{#1}}} } - \newcommand*{\footerqrcodeimg}[1]{\tl_gset:Nn \g_ptxcd_poster_qrcode_tl {#1}} - - \RedeclareSectionCommand[afterskip=1ex plus .2ex]{section} \RedeclareSectionCommand[afterskip=.2ex plus .2ex]{subsection} - \msg_new:nnn{tudaposter} {infobox-too-high} { - The~height~of~your~Infobox~exeeds~the~space~reserved~in~the~title~block.\\ - You~should~probably~switch~to~logo=bottom~or~reduce~the~number/size~of~InfoBoxes. + The~height~of~your~Infobox~exeeds~the~space~reserved~in~the~title~block.\\ + You~should~probably~switch~to~logo=bottom~or~reduce~the~number/size~of~InfoBoxes. } - \keys_define:nn {ptxcd/poster/marginparopts}{ - valign .tl_set:N = \l_ptxcd_marginpar_valign_tl, - valign .initial:n = t, - overlap .bool_set:N = \l_ptxcd_marginpar_overlap_bool, - overlap .initial:n = false, - overlap .default:n = true + valign .tl_set:N = \l_ptxcd_marginpar_valign_tl, + valign .initial:n = t, + overlap .bool_set:N = \l_ptxcd_marginpar_overlap_bool, + overlap .initial:n = false, + overlap .default:n = true } - - - - \newcommand*{\infofont}{\accentfont\normalcolor\footnotesize} \DeclareTextFontCommand{\infotext}{\infofont} - \int_new:N \g_ptxcd_marginpar_int - \NewDocumentCommand{\SetMarginpar}{o+m}{ - \bool_if:NF \g_ptxcd_marginpar_bool {\msg_warning:nn {ptxcd/Poster} {marginpar-disabled}} - \IfNoValueF{#1}{\keys_set:nn {ptxcd/poster/marginparopts} {#1}} - \ModifyLayer[addvoffset={-\ht\strutbox},contents={\parbox[t][\layerheight][\l_ptxcd_marginpar_valign_tl]{\layerwidth}{#2\strut}}]{TUDa.poster.marginpar} - \bool_set_true:N \l_tmpa_bool + \bool_if:NF \g_ptxcd_marginpar_bool {\msg_warning:nn {ptxcd/Poster} {marginpar-disabled}} + \IfNoValueF{#1}{\keys_set:nn {ptxcd/poster/marginparopts} {#1}} + \ModifyLayer[addvoffset={-\ht\strutbox},contents={\parbox[t][\layerheight][\l_ptxcd_marginpar_valign_tl]{\layerwidth}{#2\strut}}]{TUDa.poster.marginpar} + \bool_set_true:N \l_tmpa_bool } - \msg_new:nnnn {ptxcd/Poster} {marginpar-disabled} { - You~are~adding~data~to~the~marginpar~box,~though~marginpar option is set to false.\\ - I~will~add~it,~but~cannot~ensure~the~position. + You~are~adding~data~to~the~marginpar~box,~though~marginpar option is set to false.\\ + I~will~add~it,~but~cannot~ensure~the~position. } { - I'd~suggest~to~switch~the~marginpar~option~to~true. - See~the~TUDa-CI~documentation~for~further~information. + I'd~suggest~to~switch~the~marginpar~option~to~true. + See~the~TUDa-CI~documentation~for~further~information. } \global\def\contentwidth{\linewidth} \global\def\contentheight{\g_ptxcd_titlegraphic_max_height_dim} - -%author setup - \seq_new:N \g_ptxcd_author_seq - \renewcommand*\author[1]{ - \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1} + \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1} } - \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. + 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 \ptxcd_define_captionFallback:Nn { - \providecommand*#1{ - \msg_warning:nnxxx{tudapub} {unknown-language} - {\languagename} {\exp_not:N #1} {#2} - \def#1{#2} - } + \providecommand*#1{ + \msg_warning:nnxxx{tudapub} {unknown-language} + {\languagename} {\exp_not:N #1} {#2} + \def#1{#2} + } } - \cs_new:Nn \ptxcd_declare_caption:Nnnn { - \ptxcd_define_captionFallback:Nn #1 {#2} - \defcaptionname{ngerman, german}{#1}{#2} - \defcaptionname{english, USenglish, american}{#1}{#3} - \defcaptionname{UKenglish, british}{#1}{#4} + \ptxcd_define_captionFallback:Nn #1 {#2} + \defcaptionname{ngerman, german}{#1}{#2} + \defcaptionname{english, USenglish, american}{#1}{#3} + \defcaptionname{UKenglish, british}{#1}{#4} } - \cs_new:Nn \ptxcd_declare_caption:Nnn { - \ptxcd_declare_caption:Nnnn #1 {#2} {#3} {#3} + \ptxcd_declare_caption:Nnnn #1 {#2} {#3} {#3} } - \renewcommand*{\@author}{ - \begingroup - \hyphenpenalty=100000 - \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~} - \endgroup + \begingroup + \hyphenpenalty=100000 + \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~} + \endgroup } - \ptxcd_declare_caption:Nnn \authorandname {und} {and} - \newcommand*{\ptxcd_title@footnote}[2][1]{ - \textsuperscript{#1}#2 + \textsuperscript{#1}#2 } - \file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str.cfg} - - \endinput +%% +%% End of file `tudaposter.cls'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls index 976d2a943ca..274c5e0465c 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudapub.cls @@ -1,10 +1,18 @@ -%% This is file `tudapub.cls' version 3.41 (2024-07-02), +%% +%% This is file `tudapub.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tuda-ci.dtx (with options: `class,tudapub,pdfa,options') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,29 +21,23 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\NeedsTeXFormat{LaTeX2e} - -\ProvidesExplClass{tudapub} - {\filedate}{\fileversion}{Publications using TU Darmstadt's Corporate Design (TUDa-CI)} +%% +\NeedsTeXFormat{LaTeX2e}[2022-06-01] +\ProvidesExplClass{tudapub}{2025-01-26}{4.00}{Publications using TU Darmstadt's Corporate Design (TUDa-CI)} \RequirePackage{URspecialopts} - \Define@specialopt@Module[ptxcd/pub] - \str_const:Nn \c__ptxcd_base_str {pub} \tl_new:N \g_ptxcd_pub_class_tl \tl_new:N \g_ptxcd_thesis_options_tl @@ -48,564 +50,563 @@ \int_new:N \g_ptxcd_ruledheaders_int \int_new:N \g_ptxcd_paper_int \msg_new:nnn {tudapub} {compatibility-only} { - You~used~the~outdated~#1~option.\\ - This~option~has~been~removed~with~tuda-ci~version~3.08.\\ - See~documentation~for~the~updated~implementation. + You~used~the~outdated~#1~option.\\ + This~option~has~been~removed~with~tuda-ci~version~3.08.\\ + See~documentation~for~the~updated~implementation. } \bool_new:N \g_ptxcd_geometry_bool \bool_new:N \g_ptxcd_custommargins_bool -\bool_new:N \g_ptxcd_colorbacktitle_bool -\bool_new:N \g_ptxcd_colorbacksubtitle_bool \keys_define:nn {ptxcd/pub} { - %twoside -> geometry + class - class .choice:, - class/report .meta:n = {class=scrreprt}, - class/scrreprt .code:n = \tl_gset:Nn \g_ptxcd_pub_class_tl {scrreprt}, - class/article .meta:n = {class=scrartcl}, - class/scrartcl .code:n = \tl_gset:Nn \g_ptxcd_pub_class_tl {scrartcl}, - class/book .meta:n = {class=scrbook}, - class/scrbook .code:n = \tl_gset:Nn \g_ptxcd_pub_class_tl {scrbook}, - class .initial:n = scrartcl, - color .meta:n = {accentcolor=#1}, - accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}}, - textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}}, - identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}}, - marginpar .tl_gset:N = \g_ptxcd_marginpar_tl, - marginpar .default:n = auto, - marginpar .initial:n = auto, - custommargins .choice:, - custommargins / true .code:n ={ - \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_ptxcd_custommargins_bool - \bool_gset_true:N \g_ptxcd_geometry_bool - }, - custommargins / geometry .code:n = { - \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_ptxcd_clsopts_prop {fontsize} {#1}, - fontsize .initial:n = {9pt}, - ruledheaders .choices:nn = {false, none, chapter, section, true, all}{ - \int_gset:Nn \g_ptxcd_ruledheaders_int {\l_keys_choice_int} - }, - ruledheaders .initial:n = all, - type .choices:nn = {publication, thesis} {\tl_gset_eq:NN \g_ptxcd_pubType_tl \l_keys_choice_tl}, - type / intern .code:n = {\keys_set:nn {ptxcd/pub} {titlepage=false, pdfa=false, IMRAD=false}}, - type .initial:n = publication, - unknown .code:n = {\prop_gput:NVn \g_ptxcd_unknown_clsopts_prop \l_keys_key_tl {#1}}, - headline .choice:, - headline / true .code:n = \bool_gset_true:N \g_ptxcd_headline_bool, - headline / false .code:n = \bool_gset_false:N \g_ptxcd_headline_bool, - headline / automark .code:n = {\bool_gset_true:N \g_ptxcd_headline_bool \PassOptionsToPackage{automark}{scrlayer-scrpage}}, - automark .meta:n = {headline=automark}, - headline .initial:n =false, - colorback .bool_gset:N = \g_ptxcd_colorback_bool, - colorback .initial:n = true, - colorback / title .code:n = - \bool_gset_true:N \g_ptxcd_colorbacktitle_bool - \bool_gset_true:N \g_ptxcd_colorback_bool - \bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool, - colorback / body .code:n = - \bool_gset_false:N \g_ptxcd_colorbacktitle_bool - \bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool - \bool_gset_true:N \g_ptxcd_colorback_bool, - colorback / head .code:n = - \bool_gset_true:N \g_ptxcd_colorbacktitle_bool - \bool_gset_true:N \g_ptxcd_colorback_bool - \bool_gset_true:N \g_ptxcd_colorbacksubtitle_bool, - colortitleback .code:n = \msg_error:nnx {tudapub} {compatibility-only} {\l_keys_key_tl}, - pdfa .bool_gset:N = \g_ptxcd_pdfa_bool, - pdfa .initial:n = true, - pdfx .bool_gset:N = \g_ptxcd_pdfx_bool, - pdfx .initial:n = true, - twocolumn .bool_gset:N = \g_ptxcd_twocolumn_bool, - twocolumn .default:n = true, - twocolumn .initial:n = false, - BCOR .code:n = \PassOptionsToPackage{bindingoffset=#1}{geometry}, - bindingoffset .meta:n = {BCOR=#1}, - captions .code:n = {\prop_gput:Nnx \g_ptxcd_clsopts_prop {captions} { - \use:n {\prop_item:Nn \g_ptxcd_clsopts_prop {captions}}, #1} - }, - abstract .code:n = \prop_gput:Nnn \g_ptxcd_unknown_clsopts_prop {abstract} {#1}, - abstract .initial:n =true, - logo .choice:, - logo / head .code:n = { - \bool_gset_true:N \g__ptxcd_LogoInHead_bool - \bool_gset_true:N \g_ptxcd_colorbacktitle_bool - }, - logo / body .code:n = { - \bool_gset_false:N \g__ptxcd_LogoInHead_bool - \bool_gset_false:N \g_ptxcd_colorbacktitle_bool - }, - logo / top .meta:n = {logo=head}, - logo / bottom .code:n = {\bool_gset_false:N \g__ptxcd_LogoInHead_bool}, - logo .initial:n = {body}, - paper .choices:nn = {a0,a1,a2,a3,a4,a5,a6}{ - \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int - \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules} - \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{typearea} - \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry} - }, - paper .initial:n = a4, - IMRAD .bool_gset:N = \g_ptxcd_IMRAD_bool, - IMRAD .initial:n = true, - IMRAD .default:n = true, - instbox .code:n = {\tl_gput_right:Nn \g_ptxcd_thesis_options_tl {,instbox=#1}}, - noinstbox .code:n = {\tl_gput_right:Nn \g_ptxcd_thesis_options_tl {,noinstbox=#1}}, - logofile .tl_gset:N = \g_ptxcd_logofile_tl, - logofile .initial:n = tuda_logo, - title .choice:, - title / default .meta:n = {title=large}, - 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/pub}{colorback=false,ruledheaders=section,departmentlogofile=tuda_maschinenbau_logo} - }, - department .initial:n = default, - department / unknown .code:n = { - \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} - }, - departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, - departmentconfigprefix .initial:n = tuda, - mecheng .meta:n = {department=mecheng}, - departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, - departmentlogofile .initial:n =, - BCORtitlepage .bool_gset:N = \g_ptxcd_BCOR_titlepage_bool, - BCORtitlepage .initial:n = false, - BCORtitlepage .default:n = true, -} -% -%%special option handling grouped values + logofile .tl_gset:N = \g_ptxcd_logofile_tl, + logofile .initial:n = tuda_logo, + accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool, + accept-missing-logos .initial:n = false, + accept-missing-logos .usage:n = load, + accept-missing-logos .default:n = true, + 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} + \exp_args:Ne \keys_set:ne { + + ptxcd / \c__ptxcd_base_str + }{ + colorback=false, + ruledheaders=section, + departmentlogofile=tuda_maschinenbau_logo, + } + }, + + department .initial:n = default, + department / unknown .code:n = { + \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} + }, + departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, + departmentconfigprefix .initial:n = tuda, + departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, + departmentlogofile .initial:n =, + mecheng .meta:n = {department=mecheng}, + pdfa .bool_gset:N = \g_ptxcd_pdfa_bool, + pdfa .initial:n = + true, + pdfx .bool_gset:N = \g_ptxcd_pdfx_bool, + pdfx .initial:n = true, + logo .choice:, + logo / head .code:n = { + \bool_gset_true:N \g__ptxcd_logo_head_bool + \bool_gset_true:N \g_ptxcd_colorbacktitle_bool + }, + logo / body .code:n = { + \bool_gset_false:N \g__ptxcd_logo_head_bool + \bool_gset_false:N \g_ptxcd_colorbacktitle_bool + }, + logo / top .meta:n = {logo=head}, + logo / bottom .code:n = {\bool_gset_false:N \g__ptxcd_logo_head_bool}, + logo .initial:n = {body}, +%% color options + class .choice:, + class/report .meta:n = {class=scrreprt}, + class/scrreprt .code:n = \tl_gset:Nn \g_ptxcd_pub_class_tl {scrreprt}, + class/article .meta:n = {class=scrartcl}, + class/scrartcl .code:n = \tl_gset:Nn \g_ptxcd_pub_class_tl {scrartcl}, + class/book .meta:n = {class=scrbook}, + class/scrbook .code:n = \tl_gset:Nn \g_ptxcd_pub_class_tl {scrbook}, + class .initial:n = scrartcl, +%% color options + color .meta:n = {accentcolor=#1}, + accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}}, + textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}}, + identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}}, + colorback .bool_gset:N = \g_ptxcd_colorback_bool, + colorback .default:n = true, + colorback .initial:n = true, + colorbacktitle .bool_gset:N = \g_ptxcd_colorbacktitle_bool, + colorbacktitle .initial:n = false, + colorbacktitle .default:n = true, + colorbacksubtitle .bool_set:N = \g_ptxcd_colorbacksubtitle_bool, + colorbacksubtitle .initial:n = false, + colorbacksubtitle .default:n = true, + colorback / title .code:n = + \bool_gset_true:N \g_ptxcd_colorbacktitle_bool + \bool_gset_true:N \g_ptxcd_colorback_bool + \bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool, + colorback / body .code:n = + \bool_gset_false:N \g_ptxcd_colorbacktitle_bool + \bool_gset_false:N \g_ptxcd_colorbacksubtitle_bool + \bool_gset_true:N \g_ptxcd_colorback_bool, + colorback / head .code:n = + \bool_gset_true:N \g_ptxcd_colorbacktitle_bool + \bool_gset_true:N \g_ptxcd_colorback_bool + \bool_gset_true:N \g_ptxcd_colorbacksubtitle_bool, + colortitleback .code:n = \msg_error:nnx {tudapub} {compatibility-only} {\l_keys_key_tl}, + marginpar + .tl_gset:N = \g_ptxcd_marginpar_tl, + marginpar .default:n = auto, + marginpar .initial:n = auto, + custommargins .choice:, + custommargins / true .code:n ={ + \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_ptxcd_custommargins_bool + \bool_gset_true:N \g_ptxcd_geometry_bool + }, + custommargins / geometry .code:n = { + \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_ptxcd_clsopts_prop {fontsize} {#1}, + fontsize .initial:n = + {9pt}, + ruledheaders .choices:nn = {false, none, chapter, section, true, all}{ + \int_gset:Nn \g_ptxcd_ruledheaders_int {\l_keys_choice_int} + }, + ruledheaders .initial:n = all, + type .choices:nn = {publication, thesis} {\tl_gset_eq:NN \g_ptxcd_pubType_tl \l_keys_choice_tl}, + type / intern .code:n = {\keys_set:nn {ptxcd/pub} {titlepage=false, pdfa=false, IMRAD=false}}, + type .initial:n = publication, + unknown .code:n = {\prop_gput:NVn \g_ptxcd_unknown_clsopts_prop \l_keys_key_tl {#1}}, + headline .choice:, + headline / true .code:n = \bool_gset_true:N \g_ptxcd_headline_bool, + headline / false .code:n = \bool_gset_false:N \g_ptxcd_headline_bool, + headline / automark .code:n = {\bool_gset_true:N \g_ptxcd_headline_bool \PassOptionsToPackage{automark}{scrlayer-scrpage}}, + automark .meta:n = {headline=automark}, + headline .initial:n =false, + twocolumn .bool_gset:N = \g_ptxcd_twocolumn_bool, + twocolumn .default:n = true, + twocolumn .initial:n = false, + BCOR .code:n = \PassOptionsToPackage{bindingoffset=#1}{geometry}, + bindingoffset .meta:n = {BCOR=#1}, + captions .code:n = {\prop_gput:Nnx \g_ptxcd_clsopts_prop {captions} { + \use:n {\prop_item:Nn \g_ptxcd_clsopts_prop {captions}}, #1} + }, + abstract .code:n = \prop_gput:Nnn \g_ptxcd_unknown_clsopts_prop {abstract} {#1}, + abstract .initial:n =true, + paper .choices:nn = { + a0,a1,a2,a3,a4,a5,a6 + }{ + \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int + \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules} + \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{typearea} + \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry} + }, + paper .initial:n = + + a4, + IMRAD .bool_gset:N = \g_ptxcd_IMRAD_bool, + IMRAD .initial:n = true, + IMRAD .default:n = true, + instbox .code:n = {\tl_gput_right:Nn \g_ptxcd_thesis_options_tl {,instbox=#1}}, + noinstbox .code:n = {\tl_gput_right:Nn \g_ptxcd_thesis_options_tl {,noinstbox=#1}}, + title .choice:, + title / default .meta:n = {title=large}, + 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, + BCORtitlepage .bool_gset:N = \g_ptxcd_BCOR_titlepage_bool, + + BCORtitlepage .initial:n = false, + BCORtitlepage .default:n = true, +} +\cs_if_exist:NT \TUDaDefaultBuildOptions { + \exp_args:Ne \keys_set:ne { ptxcd / + \c__ptxcd_base_str + } { + \TUDaDefaultBuildOptions + } +} +\cs_new:Nn \__ptxcd_insert_logo: { + \bool_if:NTF \g_ptxcd_logo_workaround_bool { + \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf} + \use_ii:nn + \use_i:nn + } { + \use_ii:nn + } + {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}} + {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}} +} \Module@DefineSpecialKey[ptxcd/pub]{thesis}{ - \keys_set:nn {ptxcd/pub}{type=thesis} - \tl_gput_right:No \g_ptxcd_thesis_options_tl {#1} + \keys_set:nn {ptxcd/pub}{type=thesis} + \tl_gput_right:No \g_ptxcd_thesis_options_tl {#1} } \Module@Process@SpecialOptions[ptxcd/pub] -\ProcessKeyOptions[ptxcd/pub] + +\ProcessKeyOptions[ptxcd/\c__ptxcd_base_str] \bool_if:NF \g_ptxcd_pdfa_bool {\bool_gset_false:N \g_ptxcd_pdfx_bool} \bool_if:NT \g_ptxcd_pdfa_bool { - \msg_new:nnn {tudapub} {colors-to-rgb} { - You~did~not~add~a~color~profile.\\ - I~will~use~the~default~one~and~automatically~try~to~convert~internal~colors~to~RGB.\\ - This~is~required~to~be~able~to~create~PDF/A~compliance. - } - - \cs_if_exist:NT \pdfmeta_standard_get:nN { - \pdfmeta_standard_get:nN {outputintent_A} \l_tmpa_tl - \quark_if_no_value:NF \l_tmpa_tl { - \bool_gset_false:N \g_ptxcd_pdfx_bool - \msg_new:nnn{tudapub} {prefer-lualatex} { - I~detected~usage~of~l3pdfmeta~(\DocumentMetadata)~to~create~PDF/A.\\ - tudapub~will~not~load~pdfx~to~avoid~conflicts.\\ - To~disable this message use pdfx=false. - } - \msg_info:nn {tudapub} {prefer-lualatex} - } - - \prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} { - \PassOptionsToPackage{RGB}{xcolor} - \msg_info:nn {tudapub} {colors-to-rgb} - } - } + \msg_new:nnn {tudapub} {colors-to-rgb} { + You~did~not~add~a~color~profile.\\ + I~will~use~the~default~one~and~automatically~try~to~convert~internal~colors~to~RGB.\\ + This~is~required~to~be~able~to~create~PDF/A~compliance. + } + + \cs_if_exist:NT \pdfmeta_standard_get:nN { + \pdfmeta_standard_get:nN {outputintent_A} \l_tmpa_tl + \quark_if_no_value:NF \l_tmpa_tl { + \bool_gset_false:N \g_ptxcd_pdfx_bool + \msg_new:nnn{tudapub} {prefer-lualatex} { + I~detected~usage~of~l3pdfmeta~(\DocumentMetadata)~to~create~PDF/A.\\ + tudapub~will~not~load~pdfx~to~avoid~conflicts.\\ + To~disable~this~message~use~pdfx=false. + } + \msg_info:nn {tudapub} {prefer-lualatex} + } + \prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} { + \use_iii:nnn + } + } + \bool_if:NT \g_ptxcd_pdfx_bool { + \PassOptionsToPackage{RGB}{xcolor} + \msg_info:nn {tudapub} {colors-to-rgb} + } } + \exp_args:Nx \tl_if_eq:nnT {\prop_item:Nn \g_ptxcd_clsopts_prop {fontsize}} {9pt} - { - \prop_if_in:NnF \g_ptxcd_unknown_clsopts_prop {DIV} - {\PassOptionsToPackage{DIV=calc}{typearea}} - } +{ + \prop_if_in:NnF \g_ptxcd_unknown_clsopts_prop {DIV} + {\PassOptionsToPackage{DIV=calc}{typearea}} +} \prop_gput:Nnx \g_ptxcd_clsopts_prop {twocolumn} { - \bool_if:NTF \g_ptxcd_twocolumn_bool {true} {false} + \bool_if:NTF \g_ptxcd_twocolumn_bool {true} {false} } \prop_map_inline:Nn \g_ptxcd_clsopts_prop { - \tl_if_empty:nTF {#2} - {\PassOptionsToClass {#1} {\g_ptxcd_pub_class_tl}} - { - \clist_map_inline:nn {#2} {\PassOptionsToClass {#1=##1} {\g_ptxcd_pub_class_tl}} - } + \tl_if_empty:nTF {#2} + {\PassOptionsToClass {#1} {\g_ptxcd_pub_class_tl}} + { + \clist_map_inline:nn {#2} {\PassOptionsToClass {#1=##1} {\g_ptxcd_pub_class_tl}} + } } - - -%Load tudasize clo file if available \file_if_exist:nT {tudasize\prop_item:Nn \g_ptxcd_clsopts_prop {fontsize}.clo} - {\providecommand*{\@fontsizefilebase}{tudasize}} - +{\providecommand*{\@fontsizefilebase}{tudasize}} +\bool_if:NT \g_ptxcd_geometry_bool {\PassOptionsToPackage{typeareawarninfolimit=-1}{typearea}} \LoadClass{\g_ptxcd_pub_class_tl} \RequirePackage{tudafonts} \RequirePackage{tudacolors} \RequirePackage[draft=false]{scrlayer-scrpage} \RequirePackage{graphicx} - +\PassOptionsToPackage{hidelinks, unicode}{hyperref} \bool_if:NTF \g_ptxcd_pdfx_bool { - \PassOptionsToPackage{RGB}{xcolor} - \msg_info:nn {tudapub} {colors-to-rgb} - - %only apply the hack if pdfx is older than the working version - \PassOptionsToPackage{a-2b}{pdfx} -% Workaround posted by David Carlisle on tex.stackexchange -% Thanks to Ulrike Fischer for mentioning it in #472 - \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel - \chardef\currentgrouplevel0 - \ExplSyntaxOff - \RequirePackage{pdfx} - \ExplSyntaxOn - \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx: - \cs_undefine:N \__ptxcd_grouplevel_before_pdfx: -% end of the workaround - - \msg_new:nnn{tudapub} {prefer-lualatex} { - You~use~pdfa-mode~in~#1.\\ - This~can~lead~to~incompatiblities~especially~with~older~compiler~versions.\\ - You~should~prefer~using~lualatex. - } - \msg_new:nnnn{tudapub} {outdated-package-pdfa} { - Your~Version~of~the~#1-package~is~too~old~to~support~all~methods~required~by~tudapubs~pdfa-mode.\\ - Either~update~your~TeX-distribution~or~switch~to~pdfa=false. - }{See~DEMO-tudapub~for~further~information.} - - - \sys_if_engine_pdftex:T { - \msg_warning:nnn{tudapub} {prefer-lualatex} {PDFTeX} - } - - \sys_if_engine_xetex:T { - \msg_warning:nnn{tudapub} {prefer-lualatex} {XeTeX} - } - - \@ifpackagelater{xmpincl}{2021/09/22}{ - }{ - \msg_error:nn{tudapub} {outdated-package-pdfa} {xmpincl} - } - - \@ifpackagelater{pdfx}{2018/12/01}{ - }{ - \msg_error:nn{tudapub} {outdated-package-pdfa} {pdfx} - } +%% only apply the hack if pdfx is older than the working version + \PassOptionsToPackage{a-2b}{pdfx} +%% Workaround posted by David Carlisle on tex.stackexchange +%% Thanks to Ulrike Fischer for mentioning it in #472 + \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel + \chardef\currentgrouplevel0 + \ExplSyntaxOff + \RequirePackage{pdfx} + \ExplSyntaxOn + \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx: + \cs_undefine:N \__ptxcd_grouplevel_before_pdfx: +%% end of the workaround + + \msg_new:nnn{tuda-ci} {prefer-lualatex} { + You~use~pdfa-mode~in~#1.\\ + This~can~lead~to~incompatiblities~especially~with~older~compiler~versions.\\ + You~should~prefer~using~lualatex. + } + \msg_new:nnnn{tuda-ci} {outdated-package-pdfa} { + Your~Version~of~the~#1-package~is~too~old~to~support~all~methods~required~by~tudapubs~pdfa-mode.\\ + Either~update~your~TeX-distribution~or~switch~to~pdfa=false. + }{See~DEMO-tudapub~for~further~information.} + + \sys_if_engine_pdftex:T { + \msg_warning:nnn{tuda-ci} {prefer-lualatex} {PDFTeX} + } + + \sys_if_engine_xetex:T { + \msg_warning:nnn{tuda-ci} {prefer-lualatex} {XeTeX} + } + + \@ifpackagelater{xmpincl}{2021/09/22}{ + }{ + \msg_error:nn{tuda-ci} {outdated-package-pdfa} {xmpincl} + } + } { - \PassOptionsToPackage{hidelinks, unicode}{hyperref} - \RequirePackage{hyperref} + \RequirePackage{hyperref} } +\RequirePackage{bookmark} \RequirePackage{tudarules} \RequirePackage{trimclip} \RequirePackage{bookmark} \prop_map_inline:Nn \g_ptxcd_unknown_clsopts_prop { - \cs_if_exist:cT {KV@KOMA.\g_ptxcd_pub_class_tl.cls@#1} { - \tl_if_empty:nTF {#2} - {\KOMAoptions{#1}} - {\KOMAoption{#1}{#2}} - } + \cs_if_exist:cT {KV@KOMA.\g_ptxcd_pub_class_tl.cls@#1} { + \tl_if_empty:nTF {#2} + {\KOMAoptions{#1}} + {\KOMAoption{#1}{#2}} + } } - -%ruled headers \int_compare:nT {\g_ptxcd_ruledheaders_int>=3} { - \cs_if_exist:NT \chapterlinesformat { - \renewcommand*{\chapterlinesformat}[3]{% - \@hangfrom{#2}{#3} - \smash{\raisebox{\depth}{\rule[\dp\strutbox]{\linewidth}{\g_ptxcd_titlerule_dim}}} - } - } + \cs_if_exist:NT \chapterlinesformat { + \renewcommand*{\chapterlinesformat}[3]{% + \@hangfrom{#2}{#3} + \smash{\raisebox{\depth}{\rule[\dp\strutbox]{\linewidth}{\g_ptxcd_titlerule_dim}}} + } + } } \int_compare:nT {\g_ptxcd_ruledheaders_int =4 }{ - \renewcommand*\sectionlinesformat[4]{% - \tl_if_eq:nnTF {#1} {section} - { - \parbox{\linewidth}{ - \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip - \@hangfrom{% - \hskip #2#3\strut}{#4\rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip - \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox} - \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}} - }{ - \@hangfrom{\hskip #2#3}{#4} - } - } + \renewcommand*\sectionlinesformat[4]{% + \tl_if_eq:nnTF {#1} {section} + { + \parbox{\linewidth}{ + \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip + \@hangfrom{% + \hskip #2#3\strut}{#4\rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip + \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox} + \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}}} + }{ + \@hangfrom{\hskip #2#3}{#4} + } + } } \int_compare:nT {\g_ptxcd_ruledheaders_int>4} { - \renewcommand*\sectionlinesformat[4]{% - \parbox{\linewidth}{ - \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip - \@hangfrom{% - \hskip #2#3\strut}{#4\rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip - \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox} - \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}} - }} + \renewcommand*\sectionlinesformat[4]{% + \parbox{\linewidth}{ + \rule[5\g_ptxcd_titlerule_dim]{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip + \@hangfrom{% + \hskip #2#3\strut}{#4\rule[-\dp\strutbox]{0pt}{\dp\strutbox}\par}\nointerlineskip + \skip_vertical:n {\ptxcd_titlerule_sep: -\dp\strutbox} + \smash{\rule{\linewidth}{\g_ptxcd_titlerule_dim}} + }} } - - -%Margin & titlefontsize setup setup \bool_new:N \g_ptxcd_marginpar_bool - \dim_new:N \g_ptxcd_marginpar_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_ptxcd_paper_int<=5} - { - \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_ptxcd_paper_int<=3} - { - \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_ptxcd_paper_int<=6} - { - \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_ptxcd_paper_int<=7} - { - \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 - } - } +\int_compare:nTF {4<=\g_ptxcd_paper_int<=5} +{ +\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 +}{ +\int_compare:nT {1<=\g_ptxcd_paper_int<=3} +{ +\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 +} +\int_compare:nT {\g_ptxcd_paper_int<=6} +{ +\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 +} +\int_compare:nT {\g_ptxcd_paper_int<=7} +{ +\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_ptxcd_columnSep_dim \dim_gset:Nn \g_ptxcd_columnSep_dim {10pt} - -%coverpage \edef\coverpageleftmargin{\dim_eval:n {\g_ptxcd_outerMargin_dim}} \renewcommand*{\coverpagetopmargin}{\g_ptxcd_outerMargin_dim} \edef\coverpagerightmargin{\dim_eval:n {\g_ptxcd_outerMargin_dim}} \renewcommand*{\coverpagebottommargin}{\g_ptxcd_outerMargin_dim} - \str_case:onTF {\g_ptxcd_marginpar_tl} { - {true} {\bool_gset_true:N \g_ptxcd_marginpar_bool} - {false} {\bool_gset_false:N \g_ptxcd_marginpar_bool} - {auto} {\bool_gset_true:N \g_ptxcd_marginpar_bool} +{true} {\bool_gset_true:N \g_ptxcd_marginpar_bool} +{false} {\bool_gset_false:N \g_ptxcd_marginpar_bool} +{auto} {\bool_gset_true:N \g_ptxcd_marginpar_bool} } { - \bool_if:NT \g_ptxcd_marginpar_bool { - \msg_new:nnnn {tudapub} {marginpar-auto} {Setting~up~marginpar~consistent~with~layout~guidelines.} - {To~turn~this~off~use~marginpar=false~option.} - \msg_info:nn {tudapub} {marginpar-auto} - \dim_gset:Nn \g_ptxcd_marginpar_dim {(\paperwidth - \g_ptxcd_innerMargin_dim -\g_ptxcd_outerMargin_dim - 4 \g_ptxcd_columnSep_dim)/5} - } +\bool_if:NT \g_ptxcd_marginpar_bool { +\msg_new:nnnn {tudapub} {marginpar-auto} {Setting~up~marginpar~consistent~with~layout~guidelines.} +{To~turn~this~off~use~marginpar=false~option.} +\msg_info:nn {tudapub} {marginpar-auto} +\dim_gset:Nn \g_ptxcd_marginpar_dim {(\paperwidth - \g_ptxcd_innerMargin_dim -\g_ptxcd_outerMargin_dim - 4 \g_ptxcd_columnSep_dim)/5} +} } { - \msg_new:nnn {tudapub} {marginpar-no-key} {I~did~not~find~a~text~key~for~marginpar~setup~will~use~the~value~#1~as~width.} - \msg_info:nnx {tudapub} {marginpar-no-key} {\g_ptxcd_marginpar_tl} - \bool_gset_true:N \g_ptxcd_marginpar_bool - \dim_gset:Nn \g_ptxcd_marginpar_dim {\g_ptxcd_marginpar_tl} +\msg_new:nnn {tudapub} {marginpar-no-key} {I~did~not~find~a~text~key~for~marginpar~setup~will~use~the~value~#1~as~width.} +\msg_info:nnx {tudapub} {marginpar-no-key} {\g_ptxcd_marginpar_tl} +\bool_gset_true:N \g_ptxcd_marginpar_bool +\dim_gset:Nn \g_ptxcd_marginpar_dim {\g_ptxcd_marginpar_tl} } - -\dim_new:N \g_ptxcd_headheight_dim \dim_new:N \g_ptxcd_headwidth_dim - +\dim_new:N \g_ptxcd_headheight_dim +\dim_gset:Nn \g_ptxcd_headheight_dim {\c_ptxcd_largerule_dim +\c_ptxcd_rulesep_dim +\c_ptxcd_smallrule_dim} \bool_if:NTF \g_ptxcd_headline_bool - {\dim_gset:Nn \g_ptxcd_headheight_dim {20pt +\c_ptxcd_largerule_dim +\c_ptxcd_rulesep_dim +\c_ptxcd_smallrule_dim}} - {\dim_gset:Nn \g_ptxcd_headheight_dim {1.25\baselineskip +\c_ptxcd_largerule_dim +\c_ptxcd_rulesep_dim +\c_ptxcd_smallrule_dim}} - -%%%%%Anfang Randeinstellungen Geometry - - - -\AddToHook{begindocument}[tudapub:BCOR-titlepage]{ - \bool_if:NT \g_ptxcd_BCOR_titlepage_bool - {\xdef\coverpageleftmargin{\the\dimexpr\coverpageleftmargin+\the\ta@bcor}} -} - +{\dim_gadd:Nn \g_ptxcd_headheight_dim {20pt}} +{\dim_gadd:Nn \g_ptxcd_headheight_dim {1.25\baselineskip}} \bool_if:NTF \g_ptxcd_geometry_bool { - \RequirePackage{geometry} - \geometry{ - 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, - includemp, - nomarginpar, - headheight=\g_ptxcd_headheight_dim - } - \savegeometry{TUDa-nomarginpar} - \geometry{includemp, marginpar=\g_ptxcd_marginpar_dim, marginparsep=\g_ptxcd_columnSep_dim} - \KOMAoptions{mpinclude} - \savegeometry{TUDa-marginpar} - - \bool_if:NTF \g_ptxcd_custommargins_bool { - \AddToHook{begindocument}[tudapub:custommargins]{ - \savegeometry{TUDa-default} - \bool_if:NTF \g_ptxcd_marginpar_bool { - \dim_gset:Nn \g_ptxcd_headwidth_dim {\textwidth+\marginparwidth+\marginparsep} - }{ - \dim_gset:Nn \g_ptxcd_headwidth_dim {\textwidth} - } - } - \tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-default} - }{ - \bool_if:NTF \g_ptxcd_marginpar_bool { - \tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-marginpar} - } { - \tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-nomarginpar} - } - \AddToHook{begindocument}[tudapub:custommargins-geometry]{ - \loadgeometry{\c_ptxcd_default_geometry_tl} - } - } - - \dim_gset:Nn \g_ptxcd_headwidth_dim {\paperwidth-\g_ptxcd_innerMargin_dim-\g_ptxcd_outerMargin_dim-\Gm@bindingoffset} - - \cs_set:Nn \ptxcd_disable_marginpar: {\loadgeometry{TUDa-nomarginpar}} - \cs_set:Nn \ptxcd_restore_typearea: {\loadgeometry{\c_ptxcd_default_geometry_tl}} - - \AddToHook{cmd/Gm@changelayout/after}[tudapub-restore-headwidth]{ - \bool_if:NTF \g_ptxcd_marginpar_bool - {\KOMAoptions{headwidth=textwithmarginpar,footwidth=textwithmarginpar}} - {\KOMAoptions{headwidth=text,footwidth=text}} - } - +\RequirePackage{geometry} +\geometry{ +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, + includemp, + nomarginpar, +headheight=\g_ptxcd_headheight_dim +} +\savegeometry{TUDa-nomarginpar} +\geometry{includemp, marginpar=\g_ptxcd_marginpar_dim, marginparsep=\g_ptxcd_columnSep_dim} +\KOMAoptions{mpinclude} +\savegeometry{TUDa-marginpar} + +\bool_if:NTF \g_ptxcd_custommargins_bool { +\AddToHook{begindocument}[tudapub:custommargins]{ +\savegeometry{TUDa-default} +\bool_if:NTF \g_ptxcd_marginpar_bool { +\dim_gset:Nn \g_ptxcd_headwidth_dim {\textwidth+\marginparwidth+\marginparsep} }{ - \let\ptxcd_disable_marginpar:\relax - \def\ptxcd_restore_typearea:{ - \KOMAoptions{headinclude, footinclude} - \bool_if:NTF \g_ptxcd_marginpar_bool {\KOMAoptions{headwidth=textwithmarginpar,footwidth=textwithmarginpar}} - {\KOMAoptions{headwidth=text,footwidth=text}} - \bool_if:NT \g_ptxcd_headline_bool {\KOMAoptions{headheight=\g_ptxcd_headheight_dim}} - \recalctypearea - } - \ptxcd_restore_typearea: +\dim_gset:Nn \g_ptxcd_headwidth_dim {\textwidth} +} +} +\tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-default} +}{ +\bool_if:NTF \g_ptxcd_marginpar_bool { +\tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-marginpar} +} { +\tl_const:Nn \c_ptxcd_default_geometry_tl {TUDa-nomarginpar} +} +\AddToHook{begindocument}[tudapub:custommargins-geometry]{ +\loadgeometry{\c_ptxcd_default_geometry_tl} +} } +\dim_gset:Nn \g_ptxcd_headwidth_dim {\paperwidth-\g_ptxcd_innerMargin_dim-\g_ptxcd_outerMargin_dim-\Gm@bindingoffset} +\cs_set:Nn \ptxcd_disable_marginpar: {\loadgeometry{TUDa-nomarginpar}} +\cs_set:Nn \ptxcd_restore_typearea: {\loadgeometry{\c_ptxcd_default_geometry_tl}} -%%%%%%%% -%Ende Randeinstellungen klassisch - - - +\AddToHook{cmd/Gm@changelayout/after}[tudapub-restore-headwidth]{ +\bool_if:NTF \g_ptxcd_marginpar_bool +{\KOMAoptions{headwidth=textwithmarginpar,footwidth=textwithmarginpar}} +{\KOMAoptions{headwidth=text,footwidth=text}} +} +}{ +\let\ptxcd_disable_marginpar:\relax +\def\ptxcd_restore_typearea:{ +\KOMAoptions{headinclude, footinclude} + \bool_if:NTF \g_ptxcd_marginpar_bool { + \KOMAoptions{headwidth=textwithmarginpar,footwidth=textwithmarginpar} + } { + \KOMAoptions{headwidth=text,footwidth=text} + } + \bool_if:NT \g_ptxcd_headline_bool {\KOMAoptions{headheight=\g_ptxcd_headheight_dim}} + \recalctypearea + } +\ptxcd_restore_typearea: +} +\AddToHook{begindocument}[tudapub:BCOR-titlepage]{ +\bool_if:NT \g_ptxcd_BCOR_titlepage_bool +{\xdef\coverpageleftmargin{\the\dimexpr\coverpageleftmargin+\the\ta@bcor}} +} \newcommand*{\institution}[1]{ - \def\ptxcd_institution{#1} +\def\ptxcd_institution{#1} } - - \cs_new:Nn \ptxcd_titlerule_sep: {\the\dp\strutbox} - - \setkomafont{disposition}{\sffamily\bfseries} \setkomafont{pageheadfoot}{\sffamily\small} \setkomafont{pagenumber}{} \addtokomafont{captionlabel}{\sffamily} \addtokomafont{caption}{\sffamily} - \KOMAoptions{footsepline=.5\c_ptxcd_smallrule_dim} \setlength{\footheight}{\dimexpr\baselineskip+\c_ptxcd_rulesep_dim} \bool_if:NT \g_ptxcd_headline_bool {\KOMAoptions{headsepline=.5\c_ptxcd_smallrule_dim}} - -%Adjust headheight \AddToHook{begindocument}[tudapub:adjust-headheight]{ \bool_if:NTF \g_ptxcd_marginpar_bool - { - \KOMAoptions { - headwidth=textwithmarginpar, - footwidth=textwithmarginpar - } - }{ - \KOMAoptions { - headwidth=text, - footwidth=text - } - } +{ +\KOMAoptions { +headwidth=textwithmarginpar, +footwidth=textwithmarginpar +} +}{ +\KOMAoptions { +headwidth=text, +footwidth=text +} +} \box_if_exist:NF \ptxcd_headrule_box { - \ptxcd_makeheadrule[color=identbarcolor, width=\sls@headwidth]{ptxcd_headrule} +\ptxcd_makeheadrule[color=identbarcolor, width=\sls@headwidth]{ptxcd_headrule} } } \newpairofpagestyles[scrheadings]{TUDa.headings}{ - \KOMAoptions{headsepline, headlines=1.25} - \setkomafont{pagehead}{} - \chead{} - \ohead{\headmark} +\KOMAoptions{headsepline, headlines=1.25} +\setkomafont{pagehead}{} +\chead{} +\ohead{\headmark} } \newpairofpagestyles{TUDa.pub}{ - \KOMAoptions{plainfootsepline} - - \bool_if:NTF \g_ptxcd_marginpar_bool - { - \KOMAoptions { - headwidth=textwithmarginpar, - footwidth=textwithmarginpar - } - }{ - \KOMAoptions { - headwidth=text, - footwidth=text - } - } - \bool_if:NT \g_ptxcd_headline_bool { - \setkomafont{pagehead}{\Large\bfseries} - \KOMAoptions{headlines=2} - \clist_map_variable:nNn {oneside, even, odd} \l_tmpa_tl { - \ModifyLayer[pretocontents={\rule[-6pt]{0pt}{\layerheight}}]{TUDa.pub.head.\l_tmpa_tl} - } - \lehead{\headmark} - \lohead{\headmark} - } - \ofoot[\pagemark]{\pagemark} +\KOMAoptions{plainfootsepline} + +\bool_if:NTF \g_ptxcd_marginpar_bool +{ +\KOMAoptions { +headwidth=textwithmarginpar, +footwidth=textwithmarginpar +} +}{ +\KOMAoptions { +headwidth=text, +footwidth=text +} +} +\bool_if:NT \g_ptxcd_headline_bool { +\setkomafont{pagehead}{\Large\bfseries} +\KOMAoptions{headlines=2} +\clist_map_variable:nNn {oneside, even, odd} \l_tmpa_tl { +\ModifyLayer[pretocontents={\rule[-6pt]{0pt}{\layerheight}}]{TUDa.pub.head.\l_tmpa_tl} +} +\lehead{\headmark} +\lohead{\headmark} +} +\ofoot[\pagemark]{\pagemark} } \RedeclareLayer[ - clone=scrheadings.head.above.line, - background, - contents={ - \dim_compare:nF {\box_wd:N \ptxcd_headrule_box=\layerwidth} { - \ptxcd_makeheadrule[color=identbarcolor, width=\layerwidth]{ptxcd_headrule} - } - \smash{\ptxcd_headrule} - } +clone=scrheadings.head.above.line, +background, +contents={ +\dim_compare:nF {\box_wd:N \ptxcd_headrule_box=\layerwidth} { +\ptxcd_makeheadrule[color=identbarcolor, width=\layerwidth]{ptxcd_headrule} +} +\smash{\ptxcd_headrule} +} ]{TUDa.pub.head.above.line} \RedeclareLayer[ - clone=plain.scrheadings.head.above.line, - background, - contents={ - \dim_compare:nF {\box_wd:N \ptxcd_headrule_box=\layerwidth} { - \ptxcd_makeheadrule[color=identbarcolor, width=\layerwidth]{ptxcd_headrule} - } - \smash{\ptxcd_headrule} - } +clone=plain.scrheadings.head.above.line, +background, +contents={ +\dim_compare:nF {\box_wd:N \ptxcd_headrule_box=\layerwidth} { +\ptxcd_makeheadrule[color=identbarcolor, width=\layerwidth]{ptxcd_headrule} +} +\smash{\ptxcd_headrule} +} ]{plain.TUDa.pub.head.above.line} -%\dim_set:Nn \l_tmpa_dim {\topmargin+1in+\headheight+\headsep+\textheight -% +\footskip+\dp\strutbox-\footheight +\c_ptxcd_rulesep_dim} \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.pub.foot.even} \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.pub.foot.odd} \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{TUDa.pub.foot.oneside} @@ -613,56 +614,48 @@ \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.pub.foot.odd} \ModifyLayer[addvoffset=\c_ptxcd_rulesep_dim]{plain.TUDa.pub.foot.oneside} - \DeclarePageStyleAlias{TUDa}{TUDa.pub} \DeclarePageStyleAlias{plain.TUDa}{plain.TUDa.pub} \pagestyle{TUDa} - \renewcommand*{\titlepagestyle}{plain.TUDa} \cs_new:Nn \ptxcd_sls@leftmargin: {% - \dimexpr - \if@twoside - \ifodd\value{page} - \oddsidemargin - \else - \evensidemargin - \fi - \else - \oddsidemargin - \fi - \bool_if:NT \g_ptxcd_twocolumn_bool { - -\marginparwidth-\marginparsep - } - +1in\relax +\dimexpr +\if@twoside +\ifodd\value{page} +\oddsidemargin +\else +\evensidemargin +\fi +\else +\oddsidemargin +\fi +\bool_if:NT \g_ptxcd_twocolumn_bool { +-\marginparwidth-\marginparsep +} ++1in\relax } - - - -%Titelseite \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 \l__ptxcd_titlegraphic_box - - \NewDocumentCommand{\titlegraphic}{sm}{ - \IfBooleanTF{#1}{ - \tl_gset:Nn \g_ptxcd_titleimage_code_tl { - \hbox_set:Nn \l__ptxcd_titlegraphic_box {\raisebox{\depth}{#2}} - \box_resize_to_wd:Nn \l__ptxcd_titlegraphic_box {\width} - \dim_compare:nTF {\box_ht:N \l__ptxcd_titlegraphic_box -\height> \c_zero_dim} - { - \dim_set:Nn \l_tmpa_dim {.5\box_ht:N \l__ptxcd_titlegraphic_box - .5\height} - \clipbox{0pt~\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}}{\box_use:N \l__ptxcd_titlegraphic_box} - }{ - \box_resize_to_ht:Nn \l__ptxcd_titlegraphic_box {\height} - \dim_set:Nn \l_tmpa_dim {(\box_wd:N \l__ptxcd_titlegraphic_box - \width) / 2} - \clipbox{\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}~0pt}{\box_use:N \l__ptxcd_titlegraphic_box} - } - } - }{ - \tl_gset:Nn \g_ptxcd_titleimage_code_tl {#2} - } +\IfBooleanTF{#1}{ +\tl_gset:Nn \g_ptxcd_titleimage_code_tl { +\hbox_set:Nn \l__ptxcd_titlegraphic_box {\raisebox{\depth}{#2}} +\box_resize_to_wd:Nn \l__ptxcd_titlegraphic_box {\width} +\dim_compare:nTF {\box_ht:N \l__ptxcd_titlegraphic_box -\height> \c_zero_dim} +{ + \dim_set:Nn \l_tmpa_dim {.5\box_ht:N \l__ptxcd_titlegraphic_box - .5\height} + \clipbox{0pt~\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}}{\box_use:N \l__ptxcd_titlegraphic_box} +}{ + \box_resize_to_ht:Nn \l__ptxcd_titlegraphic_box {\height} + \dim_set:Nn \l_tmpa_dim {(\box_wd:N \l__ptxcd_titlegraphic_box - \width) / 2} + \clipbox{\dim_eval:n{\l_tmpa_dim}~0pt~\dim_eval:n{\l_tmpa_dim}~0pt}{\box_use:N \l__ptxcd_titlegraphic_box} +} +} +}{ +\tl_gset:Nn \g_ptxcd_titleimage_code_tl {#2} +} } \let\titleimage\titlegraphic%for backwards compatbility @@ -670,106 +663,97 @@ \box_new:N \g_ptxcd_title_box \skip_new:N \g_ptxcd_title_fill_skip - - - \seq_new:N \g_ptxcd_author_seq - \renewcommand*\author[1]{ - \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1} + \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1} } - \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~german~vaue~#3~will~be~used. + 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~german~vaue~#3~will~be~used. } \cs_new:Nn \ptxcd_define_captionFallback:Nn { - \providecommand*#1{ - \msg_warning:nnxxx{tudapub} {unknown-language} - {\languagename} {\exp_not:N #1} {#2} - \def#1{#2} - } + \providecommand*#1{ + \msg_warning:nnxxx{tudapub} {unknown-language} + {\languagename} {\exp_not:N #1} {#2} + \def#1{#2} + } } \cs_new:Nn \ptxcd_declare_caption:Nnnn { - \ptxcd_define_captionFallback:Nn #1 {#2} - \defcaptionname{ngerman, german}{#1}{#2} - \defcaptionname{english, USenglish, american}{#1}{#3} - \defcaptionname{UKenglish, british}{#1}{#4} + \ptxcd_define_captionFallback:Nn #1 {#2} + \defcaptionname{ngerman, german}{#1}{#2} + \defcaptionname{english, USenglish, american}{#1}{#3} + \defcaptionname{UKenglish, british}{#1}{#4} } \cs_new:Nn \ptxcd_declare_caption:Nnn { - \ptxcd_declare_caption:Nnnn #1 {#2} {#3} {#3} + \ptxcd_declare_caption:Nnnn #1 {#2} {#3} {#3} } - \renewcommand*{\@author}{ \begingroup \hyphenpenalty=100000 \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~} \endgroup } - \msg_new:nnn{tudapub} {infobox-too-high} { - The~height~of~your~Infobox~exeeds~the~space~reserved~in~the~title~block.\\ - You~should~probably~switch~to~logo=bottom~or~reduce~the~number/size~of~InfoBoxes. -} - - -\cs_set:Nn \ptxcd_adjust_titlepage_style: { - \dim_set:Nn \l_tmpa_dim {\fp_to_dim:n {\expandafter \use_ii:nn\ptxcd_title_fontsize: *2.8}} - \dim_compare:nT {\box_ht:N \g_ptxcd_title_box < \l_tmpa_dim} { - \skip_set:Nn \g_ptxcd_title_fill_skip {\dim_eval:n {\l_tmpa_dim - \box_ht:N \g_ptxcd_title_box}} - } - - \dim_set:Nn \l_tmpa_dim { - \box_ht:N \ptxcd_headrule_box+\box_dp:N \ptxcd_headrule_box-\g_ptxcd_titlerule_dim - +\box_ht:N \g_ptxcd_title_box+.5\c_ptxcd_logoheight_dim+\g_ptxcd_title_fill_skip+\box_dp:N \g_ptxcd_title_box - } - - \ModifyLayer[ - addvoffset=\l_tmpa_dim, - addheight=-\l_tmpa_dim - -\box_dp:N \g_ptxcd_sponsor_box - +\c_ptxcd_rulesep_dim - ]{title.TUDa.image} - - \bool_if:NT \g_ptxcd_colorbacktitle_bool { - \ModifyLayer[ - textarea, - addvoffset=\dim_eval:n {\box_ht:N \ptxcd_headrule_box+\box_dp:N \ptxcd_headrule_box-\g_ptxcd_titlerule_dim}, - height={\box_ht:N \g_ptxcd_title_box+ \g_ptxcd_title_fill_skip+.5\c_ptxcd_logoheight_dim - \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {+\box_dp:N \g_ptxcd_title_box} - } - ]{title.TUDa.background} - } - \vspace*{\dim_eval:n { - -\topskip - -\g_ptxcd_titlerule_dim - +\box_ht:N \ptxcd_headrule_box - +\box_dp:N \ptxcd_headrule_box - +.5\c_ptxcd_logoheight_dim - }} - \nointerlineskip - \ptxcd_setup_title_box: - - \bool_if:NT \g__ptxcd_LogoInHead_bool { - \dim_compare:nT {\box_ht:N \g_ptxcd_title_info_box+ \box_dp:N \g_ptxcd_title_info_box > \box_ht:N \g_ptxcd_title_box} - {\msg_warning:nn{tudapub} {infobox-too-high}} - \makebox[\linewidth][r]{\smash{ - \raisebox{-\height}{ - \makebox[\__ptxcd_logowidth:][l]{ - \box_use:N \g_ptxcd_title_info_box - }} - }} - } - \par - \vspace*{\skip_use:N \g_ptxcd_title_fill_skip} - \setlength{\fboxsep}{\z@} + The~height~of~your~Infobox~exeeds~the~space~reserved~in~the~title~block.\\ + You~should~probably~switch~to~logo=bottom~or~reduce~the~number/size~of~InfoBoxes. +} + +\cs_set:Nn \ptxcd_adjust_titlepage_style: { + \dim_set:Nn \l_tmpa_dim {\fp_to_dim:n {\expandafter \use_ii:nn\ptxcd_title_fontsize: *2.8}} + \dim_compare:nT {\box_ht:N \g_ptxcd_title_box < \l_tmpa_dim} { +\skip_set:Nn \g_ptxcd_title_fill_skip {\dim_eval:n {\l_tmpa_dim - \box_ht:N \g_ptxcd_title_box}} } +\dim_set:Nn \l_tmpa_dim { +\box_ht:N \ptxcd_headrule_box+\box_dp:N \ptxcd_headrule_box-\g_ptxcd_titlerule_dim ++\box_ht:N \g_ptxcd_title_box+.5\c_ptxcd_logoheight_dim+\g_ptxcd_title_fill_skip+\box_dp:N \g_ptxcd_title_box +} + +\ModifyLayer[ +addvoffset=\l_tmpa_dim, +addheight=-\l_tmpa_dim +-\box_dp:N \g_ptxcd_sponsor_box ++\c_ptxcd_rulesep_dim +]{title.TUDa.image} + +\bool_if:NT \g_ptxcd_colorbacktitle_bool { +\ModifyLayer[ +textarea, +addvoffset=\dim_eval:n {\box_ht:N \ptxcd_headrule_box+\box_dp:N \ptxcd_headrule_box-\g_ptxcd_titlerule_dim}, +height={\box_ht:N \g_ptxcd_title_box+ \g_ptxcd_title_fill_skip+.5\c_ptxcd_logoheight_dim +\bool_if:NT \g_ptxcd_colorbacksubtitle_bool {+\box_dp:N \g_ptxcd_title_box} +} +]{title.TUDa.background} +} +\vspace*{\dim_eval:n { +-\topskip +-\g_ptxcd_titlerule_dim ++\box_ht:N \ptxcd_headrule_box ++\box_dp:N \ptxcd_headrule_box ++.5\c_ptxcd_logoheight_dim +}} +\nointerlineskip +\ptxcd_setup_title_box: + +\bool_if:NT \g__ptxcd_logo_head_bool { +\dim_compare:nT {\box_ht:N \g_ptxcd_title_info_box+ \box_dp:N \g_ptxcd_title_info_box > \box_ht:N \g_ptxcd_title_box} + {\msg_warning:nn{tudapub} {infobox-too-high}} + \makebox[\linewidth][r]{\smash{ + \raisebox{-\height}{ + \makebox[\__ptxcd_logowidth:][l]{ + \box_use:N \g_ptxcd_title_info_box + }} + }} +} +\par +\vspace*{\skip_use:N \g_ptxcd_title_fill_skip} +\setlength{\fboxsep}{\z@} +} \newkomafont{institution}{\sffamily} \newkomafont{titleinfo}{\ptxcd@sffamily@lining} @@ -780,7 +764,7 @@ \setkomafont{date}{} \bool_if:NF \g_ptxcd_smalltitle_bool { - \int_gdecr:N \g_ptxcd_paper_int + \int_gdecr:N \g_ptxcd_paper_int } \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} \ptxcd_setup_title_sizes: @@ -789,268 +773,243 @@ \box_new:N \g_ptxcd_title_info_box \cs_new:Nn \ptxcd_make_title_info_box:n { - \setlength{\fboxsep}{1.5mm}% - \colorbox{InfoBox}{ - \makebox[\dim_eval:n {\__ptxcd_logowidth:-\fboxsep}][r]{ - \parbox{\dim_eval:n {\__ptxcd_logowidth:+\fboxsep-\__ptxcd_logosep:}}{ - \expandafter \fontsize\ptxcd_titlethanks_fontsize:\selectfont\usekomafont{institution}% - \raggedright% - #1 - }}} + \setlength{\fboxsep}{1.5mm}% + \colorbox{InfoBox}{ + \makebox[\dim_eval:n {\__ptxcd_logowidth:-\fboxsep}][r]{ + \parbox{\dim_eval:n {\__ptxcd_logowidth:+\fboxsep-\__ptxcd_logosep:}}{ + \expandafter \fontsize\ptxcd_titlethanks_fontsize:\selectfont\usekomafont{institution}% + \raggedright% + #1 + }}} } \cs_new:Nn \ptxcd_make_title_logo_box:n { - \setlength{\fboxsep}{\z@}% - \parbox{\__ptxcd_logowidth:}{ - \colorbox{InfoBox}{ - \rlap{ - \makebox[\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}][r]{ - \colorbox{InfoBox}{#1\hspace{\__ptxcd_logosep:}} - } - } - } - } + \setlength{\fboxsep}{\z@}% + \parbox{\__ptxcd_logowidth:}{ + \colorbox{InfoBox}{ + \rlap{ + \makebox[\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}][r]{ + \colorbox{InfoBox}{#1\hspace{\__ptxcd_logosep:}} + } + } + } + } } - \newcommand{\addTitleBox}[1]{\seq_gput_right:Nn \g_ptxcd_title_info_seq {\ptxcd_make_title_info_box:n {#1}}} - \NewDocumentCommand{\addTitleBoxLogo}{sm}{ - \IfBooleanTF{#1}{ - \seq_gput_right:Nn \g_ptxcd_title_info_seq { - \ptxcd_make_title_logo_box:n {#2} - } - }{ - \seq_gput_right:Nn \g_ptxcd_title_info_seq { - \ptxcd_make_title_logo_box:n { - \hbox_set:Nn \l_tmpa_box { - \includegraphics[width=1.5\c_ptxcd_logoheight_dim]{#2} - } - \dim_set:Nn \l_tmpa_dim {2\c_ptxcd_logoheight_dim/3} - \dim_compare:nTF {\box_ht:N \l_tmpa_box > \l_tmpa_dim} - {\includegraphics[width=\l_tmpa_dim]{#2}} - {\box_use:N \l_tmpa_box} - } - } - } -} - -\addTitleBoxLogo*{\makebox[\linewidth][l]{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}} + \IfBooleanTF{#1}{ + \seq_gput_right:Nn \g_ptxcd_title_info_seq { + \ptxcd_make_title_logo_box:n {#2} + } + }{ + \seq_gput_right:Nn \g_ptxcd_title_info_seq { + \ptxcd_make_title_logo_box:n { + \hbox_set:Nn \l_tmpa_box { + \includegraphics[width=1.5\c_ptxcd_logoheight_dim]{#2} + } + \dim_set:Nn \l_tmpa_dim {2\c_ptxcd_logoheight_dim/3} + \dim_compare:nTF {\box_ht:N \l_tmpa_box > \l_tmpa_dim} + {\includegraphics[width=\l_tmpa_dim]{#2}} + {\box_use:N \l_tmpa_box} + } + } + } +} +\addTitleBoxLogo*{\makebox[\linewidth][l]{\__ptxcd_insert_logo:}} \DeclareNewLayer[textarea,background,mode=picture, - contents={ - \tl_if_empty:NTF \g_ptxcd_titleimage_code_tl - { - \bool_if:NF \g_ptxcd_colorbacktitle_bool - { - \bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}} - } - } - {\putUL{\color{identbarcolor} - \let\width\layerwidth - \let\height\layerheight - \raisebox{-\height}{\parbox[t]{\textwidth}{ - \leavevmode\ignorespaces - \g_ptxcd_titleimage_code_tl - }}}} - \bool_if:NF \g__ptxcd_LogoInHead_bool { - \put(\dim_to_decimal_in_unit:nn {\layerwidth-\__ptxcd_logowidth: - } {\unitlength}, - \dim_to_decimal_in_unit:nn {\layerheight-\box_ht:N \g_ptxcd_title_info_box - .5\c_ptxcd_logoheight_dim} {\unitlength}){ - \rlap{\box_use:N \g_ptxcd_title_info_box} - } - } - } + contents={ + \tl_if_empty:NTF \g_ptxcd_titleimage_code_tl + { + \bool_if:NF \g_ptxcd_colorbacktitle_bool + { + \bool_if:NT \g_ptxcd_colorback_bool {\putLL{\color{identbarcolor}\rule{\layerwidth}{\layerheight}}} + } + } + {\putUL{\color{identbarcolor} + \let\width\layerwidth + \let\height\layerheight + \raisebox{-\height}{\parbox[t]{\textwidth}{ + \leavevmode\ignorespaces + \g_ptxcd_titleimage_code_tl + }}}} + \bool_if:NF \g__ptxcd_logo_head_bool { + \put(\dim_to_decimal_in_unit:nn {\layerwidth-\__ptxcd_logowidth: + } {\unitlength}, + \dim_to_decimal_in_unit:nn {\layerheight-\box_ht:N \g_ptxcd_title_info_box - .5\c_ptxcd_logoheight_dim} {\unitlength}){ + \rlap{\box_use:N \g_ptxcd_title_info_box} + } + } + } ]{title.TUDa.image} \DeclareNewLayer[background,mode=picture, - contents={ - \bool_lazy_and:nnT {\g_ptxcd_colorback_bool} {\g_ptxcd_colorbacktitle_bool} { - {\color{identbarcolor}\rule{\layerwidth}{\layerheight}} - } - } + contents={ + \bool_lazy_and:nnT {\g_ptxcd_colorback_bool} {\g_ptxcd_colorbacktitle_bool} { + {\color{identbarcolor}\rule{\layerwidth}{\layerheight}} + } + } ]{title.TUDa.background} \DeclareNewLayer[ - clone=plain.TUDa.pub.head.above.line, - hoffset=\coverpageleftmargin, - width=\paperwidth-\coverpageleftmargin-\coverpagerightmargin, + clone=plain.TUDa.pub.head.above.line, + hoffset=\coverpageleftmargin, + width=\paperwidth-\coverpageleftmargin-\coverpagerightmargin, ]{title.TUDa.rule} - - \ptxcd_makeheadrule[color=identbarcolor, width=\textwidth]{ptxcd_title_headline} \cs_new:Nn \ptxcd_setup_title_box: { - \hbox_gset:Nn \g_ptxcd_title_info_box - { - \parbox{\dim_eval:n {\__ptxcd_logowidth:+\__ptxcd_logosep:}}{ - \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}}} - } - } + \hbox_gset:Nn \g_ptxcd_title_info_box + { + \parbox{\dim_eval:n {\__ptxcd_logowidth:+\__ptxcd_logosep:}}{ + \seq_use:Nn \g_ptxcd_title_info_seq {\par\nointerlineskip\vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}}} + } + } } \cs_new:Nn \ptxcd_setup_sponsor_box: { - \bool_if:nF {\seq_if_empty_p:N \g_ptxcd_sponsors_seq && \tl_if_empty_p:N \@sponsors} { - \hbox_gset:Nn \g_ptxcd_sponsor_box { - \edef\height{\noexpand\dimexpr\dim_eval:n {\__ptxcd_logosep: + .5\c_ptxcd_logoheight_dim}} - \parbox[t]{\textwidth}{ - \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip - \addvspace{\c_ptxcd_rulesep_dim} - \seq_use:Nn \g_ptxcd_sponsors_seq {\hfill} - \ifhmode\par\fi - \ifx\@sponsors\@empty - \else - \addvspace{.1\c_ptxcd_logoheight_dim} - \@sponsors\par - \fi - \par\nointerlineskip\addvspace{\c_ptxcd_rulesep_dim} - \rule{\linewidth}{\g_ptxcd_titlerule_dim} - } - } - } + \bool_if:nF {\seq_if_empty_p:N \g_ptxcd_sponsors_seq && \tl_if_empty_p:N \@sponsors} { + \hbox_gset:Nn \g_ptxcd_sponsor_box { + \edef\height{\noexpand\dimexpr\dim_eval:n {\__ptxcd_logosep: + .5\c_ptxcd_logoheight_dim}} + \parbox[t]{\textwidth}{ + \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\nointerlineskip + \addvspace{\c_ptxcd_rulesep_dim} + \seq_use:Nn \g_ptxcd_sponsors_seq {\hfill} + \ifhmode\par\fi + \ifx\@sponsors\@empty + \else + \addvspace{.1\c_ptxcd_logoheight_dim} + \@sponsors\par + \fi + \par\nointerlineskip\addvspace{\c_ptxcd_rulesep_dim} + \rule{\linewidth}{\g_ptxcd_titlerule_dim} + } + } + } } \DeclareNewPageStyleByLayers{title.TUDa}{title.TUDa.background,title.TUDa.rule,title.TUDa.image} - -%Logos - \if_bool:N \g_ptxcd_pdfx_bool - %%hyperref - \hypersetup{hidelinks, unicode} - \iow_new:N \ptxcd_xmpdata_stream - \tl_new:N \g_ptxcd_xmp_title_tl - \tl_new:N \g_ptxcd_xmp_author_tl - - \cs_if_exist:NF \prop_gput_if_new:Nnx { - \cs_generate_variant:Nn \prop_gput_if_new:Nnn {Nnx} - } - - \cs_if_exist:NF \tl_to_str:V {\cs_generate_variant:Nn \tl_to_str:N {V}} - - \cs_new:Nn \ptxcd_pass_TitleData: { - \iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata} - \begingroup - \def\newline{} - \def\\{} - \let\thanks\use_none:n - \cs_set:Npn \and {\exp_not:n {\exp_not:N \sep}} - \use:c {Hy@pdfstringtrue} - \tl_gset:Nf \g_ptxcd_xmp_title_tl {\@title} - \prop_gput_if_new:Nnx \g_ptxcd_MetaData_prop {Title} {\tl_to_str:V \g_ptxcd_xmp_title_tl} - \prop_if_in:NnF \g_ptxcd_MetaData_prop {Author} { - \tl_gset:Nx \g_ptxcd_xmp_author_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \sep}} - \tl_gset:Nx \g_ptxcd_xmp_author_tl {\g_ptxcd_xmp_author_tl} - \prop_gput:Nnx \g_ptxcd_MetaData_prop {Author} {\tl_to_str:V \g_ptxcd_xmp_author_tl} - } - \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Publisher}{TU~Darmstadt} - \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Creator}{LaTeX~using~TUDa-CI} - \use:c {pdfx@localcommands}%should be held inside group - \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn - \endgroup - \iow_close:N \ptxcd_xmpdata_stream - \let\ptxcd_pass_TitleData:\relax - } - \cs_new:Nn \ptxcd_write_xmp_line:nn { - \begingroup - \cs_set:Npn \sep {\exp_not:N \sep} - \cs_if_exist:cTF {#1}{ - \iow_now:Nx \ptxcd_xmpdata_stream { - \c_backslash_str #1 {\exp_not:n {#2}} - } - }{ - \msg_error:nnn{tudapub} {unknown-metadata} {#1} - } - \endgroup - } - - \prop_new:N \g_ptxcd_MetaData_prop - - \newcommand*{\Metadata}[1]{ - \keyval_parse:NNn \use_none:n \ptxcd_set_metadata_prop:nn - {#1} - } - - \cs_set:Nn \ptxcd_set_metadata_prop:nn { - %Fallback test for older kernels doesn't support mixed case eintries - \cs_if_exist:NTF \text_titlecase_first:n { - \exp_args:NNf \prop_gput:Nnn \g_ptxcd_MetaData_prop {\text_titlecase_first:n {#1}} {#2} - } { - \exp_args:NNx \prop_gput:Nnn \g_ptxcd_MetaData_prop { - \str_uppercase:f {\tl_head:n {#1}} - \str_lowercase:f {\tl_tail:n {#1}} - } {#2} - } - } - - \msg_new:nnnn{tudapub} {unknown-metadata} { - You~ used~ the~ #1~ metadata~ entry.\\ - I~ don't~ know~ how~ to~ handle~ that.\\ - It~ will~ be~ ignored. - } {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.} + \iow_new:N \ptxcd_xmpdata_stream + \tl_new:N \g_ptxcd_xmp_title_tl + \tl_new:N \g_ptxcd_xmp_author_tl + + \cs_if_exist:NF \prop_gput_if_new:Nnx { + \cs_generate_variant:Nn \prop_gput_if_new:Nnn {Nnx} + } + + \cs_if_exist:NF \tl_to_str:V {\cs_generate_variant:Nn \tl_to_str:N {V}} + + \cs_new:Nn \ptxcd_pass_TitleData: { + \iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata} + \begingroup + \def\newline{} + \def\\{} + \let\thanks\use_none:n + \cs_set:Npn \and {\exp_not:n {\exp_not:N \sep}} + \use:c {Hy@pdfstringtrue} + \tl_gset:Nf \g_ptxcd_xmp_title_tl {\@title} + \prop_gput_if_new:Nnx \g_ptxcd_MetaData_prop {Title} {\tl_to_str:V \g_ptxcd_xmp_title_tl} + \prop_if_in:NnF \g_ptxcd_MetaData_prop {Author} { + \tl_gset:Nx \g_ptxcd_xmp_author_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \sep}} + \tl_gset:Nx \g_ptxcd_xmp_author_tl {\g_ptxcd_xmp_author_tl} + \prop_gput:Nnx \g_ptxcd_MetaData_prop {Author} {\tl_to_str:V \g_ptxcd_xmp_author_tl} + } + \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Publisher}{TU~Darmstadt} + \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Creator}{LaTeX~using~TUDa-CI} + \use:c {pdfx@localcommands}%should be held inside group + \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn + \endgroup + \iow_close:N \ptxcd_xmpdata_stream + \let\ptxcd_pass_TitleData:\relax + } + \cs_new:Nn \ptxcd_write_xmp_line:nn { + \begingroup + \cs_set:Npn \sep {\exp_not:N \sep} + \cs_if_exist:cTF {#1}{ + \iow_now:Nx \ptxcd_xmpdata_stream { + \c_backslash_str #1 {\exp_not:n {#2}} + } + }{ + \msg_error:nnn{tuda-ci} {unknown-metadata} {#1} + } + \endgroup + } + + \prop_new:N \g_ptxcd_MetaData_prop + + \newcommand*{\Metadata}[1]{ + \keyval_parse:NNn \use_none:n \ptxcd_set_metadata_prop:nn + {#1} + } + + \cs_set:Nn \ptxcd_set_metadata_prop:nn { + % Fallback test for older kernels doesn't support mixed case eintries + \cs_if_exist:NTF \text_titlecase_first:n { + \exp_args:NNf \prop_gput:Nnn \g_ptxcd_MetaData_prop {\text_titlecase_first:n {#1}} {#2} + } { + \exp_args:NNx \prop_gput:Nnn \g_ptxcd_MetaData_prop { + \str_uppercase:f {\tl_head:n {#1}} + \str_lowercase:f {\tl_tail:n {#1}} + } {#2} + } + } + \msg_new:nnnn{tuda-ci} {unknown-metadata} { + You~ used~ the~ #1~ metadata~ entry.\\ + I~ don't~ know~ how~ to~ handle~ that.\\ + It~ will~ be~ ignored. + } {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.} \else: - \PassOptionsToPackage{hidelinks, unicode}{hyperref} - \RequirePackage{hyperref} - \hypersetup{pdfcreator=LaTeX~using~TUDa-CI} - - \msg_new:nnnn {tudapub} {metadata-to-hypersetup} { - You~don't~use~pdfx.~ - Here~the~\string\Metadata\~command~only~exists~for~compatibility~reasons.\\ - I~will~pass~the~data~to~ḩypersetup. - }{ - If~possible~please~use~hyperref's~\strung\hypersetup~command~for~the~metadata~directly.\\ - See~hyperref~documentation~for~details~on~usage. - } - - \newcommand*{\Metadata}[1]{ - \tl_set:Nn \l_tmpa_tl {#1} - \tl_replace_all:Nnn \l_tmpa_tl {\sep} {;~}% pdfx-Syntax compatibility - \clist_map_inline:Nn \l_tmpa_tl { - \exp_args:Nx \hypersetup{pdf\tl_trim_spaces:n {##1}} - } - \msg_warning:nn {tudapub} {metadata-to-hypersetup} - } - - - \cs_new:Nn \ptxcd_pass_TitleData: { - % check if pdfmanagement is active - \prop_if_exist:NTF \g__pdfmanagement_documentproperties_prop { - \prop_set_eq:NN \l_tmpa_prop \g__pdfmanagement_documentproperties_prop - } { - \prop_set_eq:NN \l_tmpa_prop \g__hyp_documentproperties_prop - } - - % title - \prop_if_in:NnF \l_tmpa_prop {hyperref/pdftitle} { - \begingroup - \def\newline{} - \def\\{} - \let\thanks\use_none:n - \tl_gset:Nf \g_tmpa_tl {\@title} - \endgroup - \hypersetup{pdftitle={\tl_to_str:V \g_tmpa_tl}} - } - - % author - \prop_if_in:NnF \l_tmpa_prop {hyperref/pdfauthor} { - \begingroup - \def\newline{} - \def\\{} - \let\thanks\use_none:n - \tl_gset:Nx \g_tmpa_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \and}} - \tl_gset:Nx \g_tmpa_tl {\g_tmpa_tl } - \endgroup - \hypersetup{pdfauthor=\g_tmpa_tl} - } - } - - \bool_if:NF \g_ptxcd_pdfa_bool { - \msg_new:nnn{tudapub} {no-pdfa}{The~ tudapub~ class~ won't~ create~ PDF/A-mode.} - \msg_info:nn{tudapub} {no-pdfa} - } + \hypersetup{pdfcreator=LaTeX~using~TUDa-CI} + \msg_new:nnnn {tuda-ci} {metadata-to-hypersetup} { + You~don't~use~pdfx.~ + Here~the~\string\Metadata ~command~only~exists~for~compatibility~reasons.\\ + I~will~pass~the~data~to~ḩypersetup. + }{ + If~possible~please~use~hyperref's~\string\hypersetup~command~for~the~metadata~directly.\\ + See~hyperref~documentation~for~details~on~usage. + } + + \newcommand*{\Metadata}[1]{ + \tl_set:Nn \l_tmpa_tl {#1} + \tl_replace_all:Nnn \l_tmpa_tl {\sep} {;~}% pdfx-Syntax compatibility + \clist_map_inline:Nn \l_tmpa_tl { + \exp_args:Nx \hypersetup{pdf\tl_trim_spaces:n {##1}} + } + \msg_warning:nn {tuda-ci} {metadata-to-hypersetup} + } + \cs_new:Nn \ptxcd_pass_TitleData: { + \prop_if_exist:NTF \g__pdfmanagement_documentproperties_prop { + \prop_set_eq:NN \l_tmpa_prop \g__pdfmanagement_documentproperties_prop + } { + \prop_set_eq:NN \l_tmpa_prop \g__hyp_documentproperties_prop + } + \prop_if_in:NnF \l_tmpa_prop {hyperref/pdftitle} { + \begingroup + \def\newline{} + \def\\{} + \let\thanks\use_none:n + \tl_gset:Nf \g_tmpa_tl {\@title} + \endgroup + \hypersetup{pdftitle={\tl_to_str:V \g_tmpa_tl}} + } + \prop_if_in:NnF \l_tmpa_prop {hyperref/pdfauthor} { + \begingroup + \def\newline{} + \def\\{} + \let\thanks\use_none:n + \tl_gset:Nx \g_tmpa_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \and}} + \tl_gset:Nx \g_tmpa_tl {\g_tmpa_tl } + \endgroup + \hypersetup{pdfauthor=\g_tmpa_tl} + } + } + \bool_if:NF \g_ptxcd_pdfa_bool { + \msg_new:nnn{tuda-ci} {no-pdfa}{The~ tuda\c__ptxcd_base_str\space class~ will~ not~ create~ PDF/A.} + \msg_info:nn{tuda-ci} {no-pdfa} + } \fi: - -\RequirePackage{bookmark} - \box_new:N \g_ptxcd_sponsor_box \seq_new:N \g_ptxcd_sponsors_seq \def\AddSponsor{\seq_gput_right:Nn \g_ptxcd_sponsors_seq} @@ -1058,419 +1017,400 @@ \sponsors{} \cs_new:Npn \ptxcd_title_footnote:w [#1] #2 { - \textsuperscript{ \ptxcd_title_footnotestyle:n {#1}}#2 + \textsuperscript{ \ptxcd_title_footnotestyle:n {#1}}#2 } \cs_set_eq:NN \ptxcd_title_footnotestyle:n \@fnsymbol \str_if_eq:VnTF \g_ptxcd_pubType_tl {thesis} { - \input{tudathesis.cfg} + \input{tudathesis.cfg} } { - -\msg_new:nnnn {tudapub} {only-thesis} {You~tried~to~use~\use:c { #1}.~This~macro~is~only~available~for~publications~of~type~thesis}{See~tuda-ci~documentation~for~further~information} - -\clist_map_inline:nn {birthplace, group, examdate, submissiondate, tuprints, urn, reviewer} { - \expandafter\newcommand\csname #1\endcsname[2][]{ - \msg_error:nnn {tudapub} {only-thesis} {#1} - } -} - -% The following macro is an adapted version of the corresponding KOMA-Script macro -% Copyright (c) 1994-2019 Markus Kohm [komascript at gmx info] -\renewcommand*{\maketitle}[1][1]{ - \def\and{,~ } - \cs_if_exist_use:N \ptxcd_pass_TitleData: - \if@titlepage - \edef\titlepage@restore{% - \noexpand\endgroup - \noexpand\global\noexpand\@colht\the\@colht - \noexpand\global\noexpand\@colroom\the\@colroom - \noexpand\global\vsize\the\vsize - \noexpand\global\noexpand\@titlepageiscoverpagefalse - \noexpand\let\noexpand\titlepage@restore\noexpand\relax - }% - \ptxcd_disable_marginpar: - \begin{titlepage} - \setcounter{page}{% - #1% - }% - \def\thefootnote{\ptxcd_title_footnotestyle:n {\c@footnote}} - \if@titlepageiscoverpage - \begingroup - \topmargin=\dimexpr \coverpagetopmargin-1in\relax - \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax - \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax - \textwidth=\dimexpr - \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax - \textheight=\dimexpr - \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax - \headheight=0pt - \headsep=0pt - \footskip=\baselineskip - \@colht=\textheight - \@colroom=\textheight - \vsize=\textheight - \columnwidth=\textwidth - \hsize=\columnwidth - \linewidth=\hsize - \else - \let\titlepage@restore\relax - \fi - \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative - \ptxcd_setup_sponsor_box: - \hbox_gset:Nn \g_ptxcd_title_box { - \parbox[t]{\linewidth}{ - \begin{minipage}[b]{\bool_if:NT \g__ptxcd_LogoInHead_bool {.75}\linewidth} - \bool_lazy_and:nnT {\g_ptxcd_colorback_bool} {\g_ptxcd_colorbacktitle_bool} {\color{textonaccentcolor}} - \tl_if_empty:NF \@titlehead { - \begin{addmargin}{3mm} - {\usekomafont{titlehead}{\@titlehead\par}} - \end{addmargin} - } - \begin{addmargin}[\dim_eval:n {\box_if_empty:NF \g_ptxcd_PaperID_box {\box_wd:N\g_ptxcd_PaperID_box+.5\c_ptxcd_logoheight_dim} +3mm}]{3mm} - \raggedright - \leavevmode\usekomafont{title}% - \expandafter\fontsize\ptxcd_title_fontsize: - \selectfont - \llap{\raisebox{\dimexpr-\height+.5\baselineskip}[0pt][0pt]{\box_use:N \g_ptxcd_PaperID_box}\hspace{.5\c_ptxcd_logoheight_dim}} - \@title\strut - \par - \box_if_empty:NTF \g_ptxcd_PaperID_box - {\vskip0pt} - {\rule{0pt}{.5\c_ptxcd_logoheight_dim}} - \end{addmargin} - \end{minipage}% - \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\color{textonaccentcolor}} - \par\nointerlineskip - \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\vspace{\c_ptxcd_rulesep_dim} - \begin{addmargin}{3mm} - \usekomafont{titleinfo} - \expandafter\fontsize\ptxcd_titleinfo_fontsize: - \selectfont - {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}% - {\ifx\@subject\@empty\else\usekomafont{subject}{\@subject\par}\fi} - {% - \usekomafont{author} - \lineskip 0.75em - \@author - \par - }% - {\ifx\@date\@empty\else\usekomafont{date}{\@date\par}\fi}% - {\ifx\@publishers\@empty\else\usekomafont{publishers}{\@publishers \par}\fi}% - \end{addmargin} - \tl_if_empty:NF \@thanks { - \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont\par - \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par - \begin{addmargin}{3mm} - \let\footnotetext\ptxcd_title_footnote:w - \@thanks - \end{addmargin} - \par\vspace{-\dp\strutbox} - } - \normalcolor - \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par} - } - \let\@thanks\@empty - \ptxcd_adjust_titlepage_style: - \thispagestyle{title.TUDa} - \nointerlineskip\box_use:N \g_ptxcd_title_box - \par - \vfill - \box_if_empty:NTF \g_ptxcd_sponsor_box { - \raisebox{-\c_ptxcd_rulesep_dim}[0pt][0pt]{\rule{\linewidth}{\g_ptxcd_titlerule_dim}} - }{ - \box_use:N \g_ptxcd_sponsor_box - } - \if@twoside - \@tempswatrue - \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax - \else - \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty - \@tempswafalse - \fi\fi - \fi - \if@tempswa - \next@tpage - \begin{minipage}[t]{\textwidth} - \@uppertitleback - \end{minipage}\par - \vfill - \begin{minipage}[b]{\textwidth} - \@lowertitleback - \end{minipage}\par - \@thanks\let\@thanks\@empty - \fi - \fi - \ifx\@dedication\@empty - \else - \next@tdpage\null\vfill - {\centering\usekomafont{dedication}{\@dedication \par}}% - \vskip \z@ \@plus3fill - \@thanks\let\@thanks\@empty - \cleardoubleemptypage - \fi - \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi - \end{titlepage} - \setcounter{footnote}{0}% - \global\let\and\relax - \cleardoublepage - \ptxcd_restore_typearea: - \aftergroup\ptxcd_restore_typearea: - \else - \par - \@tempcnta=% - #1% - \relax\ifnum\@tempcnta=1\else - \ClassWarning{\KOMAClassName}{% - Optional argument of \string\maketitle\space ignored\MessageBreak - in `titlepage=false' mode% - }% - \fi - \ifx\@uppertitleback\@empty\else - \ClassWarning{\KOMAClassName}{% - non empty \string\uppertitleback\space ignored - by \string\maketitle\MessageBreak - in `titlepage=false' mode% - }% - \fi - \ifx\@lowertitleback\@empty\else - \ClassWarning{\KOMAClassName}{% - non empty \string\lowertitleback\space ignored - by \string\maketitle\MessageBreak - in `titlepage=false' mode% - }% - \fi - \begingroup - \let\titlepage@restore\relax - \def\thefootnote{\fnsymbol{footnote}} - \next@tdpage - \ifx\@extratitle\@empty - \ifx\@frontispiece\@empty\else \mbox{}\fi - \else - \@makeextratitle - \fi - \ifx\@frontispiece\@empty - \ifx\@extratitle\@empty\else\next@tdpage\fi - \else - \next@tpage - \@makefrontispiece - \next@tdpage - \fi - \if@twocolumn - \twocolumn[\@maketitle] - \else - \@maketitle - \fi - \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi - \global\let\@thanks\@empty - \endgroup - \fi -} + \msg_new:nnnn {tudapub} {only-thesis} {You~tried~to~use~\use:c { #1}.~This~macro~is~only~available~for~publications~of~type~thesis}{See~tuda-ci~documentation~for~further~information} + + \clist_map_inline:nn {birthplace, group, examdate, submissiondate, tuprints, urn, reviewer} { + \expandafter\newcommand\csname #1\endcsname[2][]{ + \msg_error:nnn {tudapub} {only-thesis} {#1} + } + } +%% The following macro is an adapted version of the corresponding KOMA-Script macro +%% Copyright (c) 1994-2019 Markus Kohm [komascript at gmx info] + \renewcommand*{\maketitle}[1][1]{ + \def\and{,~ } + \cs_if_exist_use:N \ptxcd_pass_TitleData: + \if@titlepage + \edef\titlepage@restore{% + \noexpand\endgroup + \noexpand\global\noexpand\@colht\the\@colht + \noexpand\global\noexpand\@colroom\the\@colroom + \noexpand\global\vsize\the\vsize + \noexpand\global\noexpand\@titlepageiscoverpagefalse + \noexpand\let\noexpand\titlepage@restore\noexpand\relax + }% + \ptxcd_disable_marginpar: + \begin{titlepage} + \setcounter{page}{% + #1% + }% + \def\thefootnote{\ptxcd_title_footnotestyle:n {\c@footnote}} + \if@titlepageiscoverpage + \begingroup + \topmargin=\dimexpr \coverpagetopmargin-1in\relax + \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax + \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax + \textwidth=\dimexpr + \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax + \textheight=\dimexpr + \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax + \headheight=0pt + \headsep=0pt + \footskip=\baselineskip + \@colht=\textheight + \@colroom=\textheight + \vsize=\textheight + \columnwidth=\textwidth + \hsize=\columnwidth + \linewidth=\hsize + \else + \let\titlepage@restore\relax + \fi + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \ptxcd_setup_sponsor_box: + \hbox_gset:Nn \g_ptxcd_title_box { + \parbox[t]{\linewidth}{ + \begin{minipage}[b]{\bool_if:NT \g__ptxcd_logo_head_bool {.75}\linewidth} + \bool_lazy_and:nnT {\g_ptxcd_colorback_bool} {\g_ptxcd_colorbacktitle_bool} {\color{textonaccentcolor}} + \tl_if_empty:NF \@titlehead { + \begin{addmargin}{3mm} + {\usekomafont{titlehead}{\@titlehead\par}} + \end{addmargin} + } + \begin{addmargin}[\dim_eval:n {\box_if_empty:NF \g_ptxcd_PaperID_box {\box_wd:N\g_ptxcd_PaperID_box+.5\c_ptxcd_logoheight_dim} +3mm}]{3mm} + \raggedright + \leavevmode\usekomafont{title}% + \expandafter\fontsize\ptxcd_title_fontsize: + \selectfont + \llap{\raisebox{\dimexpr-\height+.5\baselineskip}[0pt][0pt]{\box_use:N \g_ptxcd_PaperID_box}\hspace{.5\c_ptxcd_logoheight_dim}} + \@title\strut + \par + \box_if_empty:NTF \g_ptxcd_PaperID_box + {\vskip0pt} + {\rule{0pt}{.5\c_ptxcd_logoheight_dim}} + \end{addmargin} + \end{minipage}% + \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\color{textonaccentcolor}} + \par\nointerlineskip + \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\vspace{\c_ptxcd_rulesep_dim} + \begin{addmargin}{3mm} + \usekomafont{titleinfo} + \expandafter\fontsize\ptxcd_titleinfo_fontsize: + \selectfont + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}% + {\ifx\@subject\@empty\else\usekomafont{subject}{\@subject\par}\fi} + {% + \usekomafont{author} + \lineskip 0.75em + \@author + \par + }% + {\ifx\@date\@empty\else\usekomafont{date}{\@date\par}\fi}% + {\ifx\@publishers\@empty\else\usekomafont{publishers}{\@publishers \par}\fi}% + \end{addmargin} + \tl_if_empty:NF \@thanks { + \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont\par + \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par + \begin{addmargin}{3mm} + \let\footnotetext\ptxcd_title_footnote:w + \@thanks + \end{addmargin} + \par\vspace{-\dp\strutbox} + } + \normalcolor + \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par} + } + \let\@thanks\@empty + \ptxcd_adjust_titlepage_style: + \thispagestyle{title.TUDa} + \nointerlineskip\box_use:N \g_ptxcd_title_box + \par + \vfill + \box_if_empty:NTF \g_ptxcd_sponsor_box { + \raisebox{-\c_ptxcd_rulesep_dim}[0pt][0pt]{\rule{\linewidth}{\g_ptxcd_titlerule_dim}} + }{ + \box_use:N \g_ptxcd_sponsor_box + } + \if@twoside + \@tempswatrue + \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax + \else + \ifx\@uppertitleback\@empty\ifx\@lowertitleback\@empty + \@tempswafalse + \fi\fi + \fi + \if@tempswa + \next@tpage + \begin{minipage}[t]{\textwidth} + \@uppertitleback + \end{minipage}\par + \vfill + \begin{minipage}[b]{\textwidth} + \@lowertitleback + \end{minipage}\par + \@thanks\let\@thanks\@empty + \fi + \fi + \ifx\@dedication\@empty + \else + \next@tdpage\null\vfill + {\centering\usekomafont{dedication}{\@dedication \par}}% + \vskip \z@ \@plus3fill + \@thanks\let\@thanks\@empty + \cleardoubleemptypage + \fi + \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi + \end{titlepage} + \setcounter{footnote}{0}% + \global\let\and\relax + \cleardoublepage + \ptxcd_restore_typearea: + \aftergroup\ptxcd_restore_typearea: + \else + \par + \@tempcnta=% + #1% + \relax\ifnum\@tempcnta=1\else + \ClassWarning{\KOMAClassName}{% + Optional argument of \string\maketitle\space ignored\MessageBreak + in `titlepage=false' mode% + }% + \fi + \ifx\@uppertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\uppertitleback\space ignored + by \string\maketitle\MessageBreak + in `titlepage=false' mode% + }% + \fi + \ifx\@lowertitleback\@empty\else + \ClassWarning{\KOMAClassName}{% + non empty \string\lowertitleback\space ignored + by \string\maketitle\MessageBreak + in `titlepage=false' mode% + }% + \fi + \begingroup + \let\titlepage@restore\relax + \def\thefootnote{\fnsymbol{footnote}} + \next@tdpage + \ifx\@extratitle\@empty + \ifx\@frontispiece\@empty\else \mbox{}\fi + \else + \@makeextratitle + \fi + \ifx\@frontispiece\@empty + \ifx\@extratitle\@empty\else\next@tdpage\fi + \else + \next@tpage + \@makefrontispiece + \next@tdpage + \fi + \if@twocolumn + \twocolumn[\@maketitle] + \else + \@maketitle + \fi + \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi + \global\let\@thanks\@empty + \endgroup + \fi + } } \newkomafont{paperid}{\sffamily} \box_new:N \g_ptxcd_PaperID_box \newcommand*{\SetPaperID}[2]{ - \hbox_gset:Nn \g_ptxcd_PaperID_box { - \usekomafont{paperid} - \if@titlepage - \dim_set:Nn \l_tmpa_dim {\exp_last_unbraced:No \use_i:nn \ptxcd_title_fontsize: + \exp_last_unbraced:No \use_ii:nn \ptxcd_title_fontsize:} - \else - \Huge - \dim_set:Nn \l_tmpa_dim {1.8\baselineskip} - \fi - \fontsize{1.1\l_tmpa_dim}{1.1\l_tmpa_dim} - \selectfont - #1{\Huge #2} - } + \hbox_gset:Nn \g_ptxcd_PaperID_box { + \usekomafont{paperid} + \if@titlepage + \dim_set:Nn \l_tmpa_dim {\exp_last_unbraced:No \use_i:nn \ptxcd_title_fontsize: + \exp_last_unbraced:No \use_ii:nn \ptxcd_title_fontsize:} + \else + \Huge + \dim_set:Nn \l_tmpa_dim {1.8\baselineskip} + \fi + \fontsize{1.1\l_tmpa_dim}{1.1\l_tmpa_dim} + \selectfont + #1{\Huge #2} + } } - \renewcommand*{\@maketitle}{% - \global\@topnum=\z@ - \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative - \vspace*{-\dim_eval:n { - \headheight - +\headsep - +\topskip - -\box_ht:N\ptxcd_headrule_box - -\box_dp:N \ptxcd_headrule_box - }} - \par - \nointerlineskip - \begingroup - \usekomafont{disposition} - \hsize=\g_ptxcd_headwidth_dim - \setlength{\fboxsep}{\z@} - \def\thefootnote{\ptxcd_title_footnotestyle:n {\c@footnote}} - \bool_if:NT \g_ptxcd_colorback_bool {\bool_set_true:N \g_ptxcd_colorbacktitle_bool} - \bool_if:NT \g_ptxcd_colorbacktitle_bool {\colorbox{identbarcolor}} - {\parbox[t]{\g_ptxcd_headwidth_dim}{ - \rule{\z@}{.5\c_ptxcd_logoheight_dim}\par\nointerlineskip - \raisebox{-\height}{% - \begin{minipage}[t]{\dim_eval:n {\linewidth-\__ptxcd_logowidth:-1ex}} - \bool_if:NT \g_ptxcd_colorbacktitle_bool {\begin{addmargin}{.5\c_ptxcd_largerule_dim}} - \raggedright - \bool_if:NT \g_ptxcd_colorback_bool {\color{textonaccentcolor}} - \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}} - \box_if_empty:NF \g_ptxcd_PaperID_box {\begin{addmargin}[\dim_eval:n {\box_wd:N\g_ptxcd_PaperID_box+.5\c_ptxcd_logoheight_dim}]{0pt}} - \raggedright - \bool_if:NT \g_ptxcd_colorback_bool {\color{textonaccentcolor}} - \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}} - \leavevmode\usekomafont{title}% - \Huge - \llap{\raisebox{\dimexpr-\height+.5\baselineskip}[0pt][0pt]{\box_use:N \g_ptxcd_PaperID_box}\hspace{.5\c_ptxcd_logoheight_dim}} - \@title\strut - \par - \box_if_empty:NTF \g_ptxcd_PaperID_box - {\vskip1em} - {\rule{0pt}{.5\c_ptxcd_logoheight_dim}} - \box_if_empty:NF \g_ptxcd_PaperID_box {\end{addmargin}} - \bool_if:NTF \g_ptxcd_colorbacktitle_bool {\end{addmargin}} {\par} - \vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}} - \end{minipage} - } - \hfill - \raisebox{-\height}{ - \ptxcd_setup_title_box: - \makebox[\__ptxcd_logowidth:][l]{ - \box_use:N \g_ptxcd_title_info_box - } - } - \dim_compare:nNnTF {\box_ht:N \g_ptxcd_title_info_box + \box_ht:N \g_ptxcd_title_info_box} > {(\__ptxcd_logowidth:)/2} - {\vspace{\c_ptxcd_largerule_dim}} - {\vspace{.5\c_ptxcd_logoheight_dim}} - \par - }} - \par - \nointerlineskip - \rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim} - \begin{addmargin}{.5\c_ptxcd_largerule_dim} - \Large - \clist_map_inline:nn {subtitle, subject, author, date, publishers} - {\tl_if_empty:cF {@##1} {{\usekomafont{##1}\use:c {@##1}\par}}} - \vspace{\c_ptxcd_rulesep_dim} - \end{addmargin} - \tl_if_empty:NF \@thanks { - \par\nointerlineskip - \rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim} - \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont - \begin{addmargin}{.5\c_ptxcd_largerule_dim} - \let\footnotetext\ptxcd_title_footnote:w - \@thanks - \vspace{\c_ptxcd_rulesep_dim} - \end{addmargin} - \par - \let\@thanks\@empty - } - \par\nointerlineskip - \rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim} - \par - \endgroup - \vskip .5\c_ptxcd_logoheight_dim + \global\@topnum=\z@ + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \vspace*{-\dim_eval:n { + \headheight + +\headsep + +\topskip + -\box_ht:N\ptxcd_headrule_box + -\box_dp:N \ptxcd_headrule_box + }} + \par + \nointerlineskip + \begingroup + \usekomafont{disposition} + \hsize=\g_ptxcd_headwidth_dim + \setlength{\fboxsep}{\z@} + \def\thefootnote{\ptxcd_title_footnotestyle:n {\c@footnote}} + \bool_if:NT \g_ptxcd_colorback_bool {\bool_set_true:N \g_ptxcd_colorbacktitle_bool} + \bool_if:NT \g_ptxcd_colorbacktitle_bool {\colorbox{identbarcolor}} + {\parbox[t]{\g_ptxcd_headwidth_dim}{ + \rule{\z@}{.5\c_ptxcd_logoheight_dim}\par\nointerlineskip + \raisebox{-\height}{% + \begin{minipage}[t]{\dim_eval:n {\linewidth-\__ptxcd_logowidth:-1ex}} + \bool_if:NT \g_ptxcd_colorbacktitle_bool {\begin{addmargin}{.5\c_ptxcd_largerule_dim}} + \raggedright + \bool_if:NT \g_ptxcd_colorback_bool {\color{textonaccentcolor}} + \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}} + \box_if_empty:NF \g_ptxcd_PaperID_box {\begin{addmargin}[\dim_eval:n {\box_wd:N\g_ptxcd_PaperID_box+.5\c_ptxcd_logoheight_dim}]{0pt}} + \raggedright + \bool_if:NT \g_ptxcd_colorback_bool {\color{textonaccentcolor}} + \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}} + \leavevmode\usekomafont{title}% + \Huge + \llap{\raisebox{\dimexpr-\height+.5\baselineskip}[0pt][0pt]{\box_use:N \g_ptxcd_PaperID_box}\hspace{.5\c_ptxcd_logoheight_dim}} + \@title\strut + \par + \box_if_empty:NTF \g_ptxcd_PaperID_box + {\vskip1em} + {\rule{0pt}{.5\c_ptxcd_logoheight_dim}} + \box_if_empty:NF \g_ptxcd_PaperID_box {\end{addmargin}} + \bool_if:NTF \g_ptxcd_colorbacktitle_bool {\end{addmargin}} {\par} + \vspace{\dim_eval:n {\c_ptxcd_largerule_dim+\c_ptxcd_rulesep_dim}} + \end{minipage} + } + \hfill + \raisebox{-\height}{ + \ptxcd_setup_title_box: + \makebox[\__ptxcd_logowidth:][l]{ + \box_use:N \g_ptxcd_title_info_box + } + } + \dim_compare:nNnTF {\box_ht:N \g_ptxcd_title_info_box + \box_ht:N \g_ptxcd_title_info_box} > {(\__ptxcd_logowidth:)/2} + {\vspace{\c_ptxcd_largerule_dim}} + {\vspace{.5\c_ptxcd_logoheight_dim}} + \par + }} + \par + \nointerlineskip + \rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim} + \begin{addmargin}{.5\c_ptxcd_largerule_dim} + \Large + \clist_map_inline:nn {subtitle, subject, author, date, publishers} + {\tl_if_empty:cF {@##1} {{\usekomafont{##1}\use:c {@##1}\par}}} + \vspace{\c_ptxcd_rulesep_dim} + \end{addmargin} + \tl_if_empty:NF \@thanks { + \par\nointerlineskip + \rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim} + \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont + \begin{addmargin}{.5\c_ptxcd_largerule_dim} + \let\footnotetext\ptxcd_title_footnote:w + \@thanks + \vspace{\c_ptxcd_rulesep_dim} + \end{addmargin} + \par + \let\@thanks\@empty + } + \par\nointerlineskip + \rule{\g_ptxcd_headwidth_dim}{\g_ptxcd_titlerule_dim} + \par + \endgroup + \vskip .5\c_ptxcd_logoheight_dim }% - %%Abstract anpassungen mit Sprache \providecommand{\abstract}{}% für book \RenewDocumentEnvironment{abstract}{o}{ - \begingroup - \IfNoValueF{#1}{\selectlanguage{#1}} - \bool_set_true:N \l_tmpa_bool - \cs_if_exist:NT \if@abstrt { - \if@abstrt - \else - \bool_set_false:NT \l_tmpa_bool - \fi - } - \bool_if:NT \l_tmpa_bool { - \scr@ifundefinedorrelax{chapter}{% - \Iftocfeature{toc}{leveldown} - {\subsection*} - {\section*} - }{ - \Iftocfeature{toc}{leveldown} - {\section*} - {\chapter*} - } {\abstractname} - -}}{ - \endgroup -} - - -%Anpassungen marginpar + \begingroup + \IfNoValueF{#1}{\selectlanguage{#1}} + \bool_set_true:N \l_tmpa_bool + \cs_if_exist:NT \if@abstrt { + \if@abstrt + \else + \bool_set_false:NT \l_tmpa_bool + \fi + } + \bool_if:NT \l_tmpa_bool { + \scr@ifundefinedorrelax{chapter}{% + \Iftocfeature{toc}{leveldown} + {\subsection*} + {\section*} + }{ + \Iftocfeature{toc}{leveldown} + {\section*} + {\chapter*} + } {\abstractname} + + }}{ + \endgroup +} \cs_set_eq:NN\ptxcd_orig@marginpar:w \marginpar \newkomafont{marginpar}{\accentfont\color{textaccentcolor}} \RenewDocumentCommand{\marginpar}{om}{ - \IfNoValueTF{#1}{ - \ptxcd_orig@marginpar:w {\leavevmode\usekomafont{marginpar}#2} - }{ - \ptxcd_orig@marginpar:w [{\leavevmode\usekomafont{marginpar}#1}]{\leavevmode\usekomafont{marginpar}#2} - } + \IfNoValueTF{#1}{ + \ptxcd_orig@marginpar:w {\leavevmode\usekomafont{marginpar}#2} + }{ + \ptxcd_orig@marginpar:w [{\leavevmode\usekomafont{marginpar}#1}]{\leavevmode\usekomafont{marginpar}#2} + } } \ptxcd_declare_caption:Nnn \authorandname {und} {and} \ptxcd_declare_caption:Nnn \ptxcd_datename {Datum}{Date} - \gdef\ptxcd_dateseparator{:~} - - \providecommand*{\frontmatter}{ - \if@twoside\cleardoublepage\else\clearpage\fi \@mainmattertrue - \pagenumbering {roman} + \if@twoside\cleardoublepage\else\clearpage\fi \@mainmattertrue + \pagenumbering {roman} } - \providecommand*{\mainmatter}{ - \if@twoside\cleardoublepage\else\clearpage\fi \@mainmattertrue - \pagenumbering {arabic} + \if@twoside\cleardoublepage\else\clearpage\fi \@mainmattertrue + \pagenumbering {arabic} } - \providecommand*{\backmatter}{ - \if@twoside\cleardoublepage\else\clearpage\fi \@mainmatterfalse + \if@twoside\cleardoublepage\else\clearpage\fi \@mainmatterfalse } - - -%IMRAD:Introduction \seq_if_exist:NTF \seq_const_from_clist:Nn { - \seq_const_from_clist:Nn \c_ptxcd_IMRAD_seq {introduction, methods, results, discussion} + \seq_const_from_clist:Nn \c_ptxcd_IMRAD_seq {introduction, methods, results, discussion} } { - \seq_new:N \c_ptxcd_IMRAD_seq - \seq_gset_from_clist:Nn \c_ptxcd_IMRAD_seq {introduction, methods, results, discussion} + \seq_new:N \c_ptxcd_IMRAD_seq + \seq_gset_from_clist:Nn \c_ptxcd_IMRAD_seq {introduction, methods, results, discussion} } - \newcommand*{\IMRADlabel}[1]{ - \seq_if_in:NnTF \c_ptxcd_IMRAD_seq {#1} - {\label{IMRAD:#1}} - {\msg_error:nnnn {tudapub} {undefined-IMRADlabel}{#1}{\seq_use:Nn \c_ptxcd_IMRAD_seq {,}}} + \seq_if_in:NnTF \c_ptxcd_IMRAD_seq {#1} + {\label{IMRAD:#1}} + {\msg_error:nnnn {tudapub} {undefined-IMRADlabel}{#1}{\seq_use:Nn \c_ptxcd_IMRAD_seq {,}}} } - - \bool_if:NT \g_ptxcd_IMRAD_bool { - \AtEndDocument{ - \seq_map_inline:Nn \c_ptxcd_IMRAD_seq { - \cs_if_exist:cF {r@IMRAD:#1} { - \msg_warning:nnn {tudapub} {missing-IMRADlabel} {#1} - } - } - } + \AtEndDocument{ + \seq_map_inline:Nn \c_ptxcd_IMRAD_seq { + \cs_if_exist:cF {r@IMRAD:#1} { + \msg_warning:nnn {tudapub} {missing-IMRADlabel} {#1} + } + } + } } \msg_new:nnn {tudapub} {undefined-IMRADlabel} { - You~tried~to~set~an~IMRAD~label~with~key~#1.\\ - This~label~type~is~not~declared.\\ - Possible~labels~are:~#2 + You~tried~to~set~an~IMRAD~label~with~key~#1.\\ + This~label~type~is~not~declared.\\ + Possible~labels~are:~#2 } - \msg_new:nnn{tudapub} {missing-IMRADlabel} { - You~did~not~provide~a~Label~for~key~#1.\\ - Either~you~need~to~recompile~your~document~or~add~a~label~using~\string\IMRADlabel. + You~did~not~provide~a~Label~for~key~#1.\\ + Either~you~need~to~recompile~your~document~or~add~a~label~using~\string\IMRADlabel. } - -%backwards compatibility for KOMA-Script \cs_if_exist:NF \Iftocfeature{ - \let\Iftocfeature\iftocfeature + \let\Iftocfeature\iftocfeature } \file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str.cfg} + \endinput -%End of class tudapub.cls +%% +%% End of file `tudapub.cls'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty b/Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty index 98182d08c18..226dba858f6 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudarules.sty @@ -1,10 +1,18 @@ -%% This is file `tudarules.sty' version 3.41 (2024-07-02), +%% +%% This is file `tudarules.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudarules.dtx (with options: `package') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,156 +21,138 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\NeedsTeXFormat{LaTeX2e} - -\ProvidesExplPackage{tudarules}{\filedate}{\fileversion}{Creation of colored bars for tuda-ci bundle} - +%% +\NeedsTeXFormat{LaTeX2e}[2020/10/01] +\ProvidesExplPackage{tudarules}{2025-01-26}{4.00}{Creation of colored bars for the tuda-ci bundle} \str_if_exist:NF \g_ptxcd_department_str { - \str_new:N \g_ptxcd_department_str - \str_gset:Nn \g_ptxcd_department_str {default} + \str_new:N \g_ptxcd_department_str + \str_gset:Nn \g_ptxcd_department_str {default} } - \bool_new:N \g_ptxcd_simple_rules_bool \dim_new:N \g_ptxcd_titlerule_dim - \seq_if_exist:NF \l_ptxcd_tmpa_seq {\seq_new:N \l_ptxcd_tmpa_seq} \tl_if_exist:NF \l_ptxcd_tmpa_tk {\tl_new:N \l_ptxcd_tmpa_tl} - \cs_new:Nn \ptxcd_rules_set_values:n { - \seq_set_split:Nnn \l_ptxcd_tmpa_seq {|} {#1} - - \int_step_inline:nnnn {1} {1} {4} { - \tl_set:Nn \l_ptxcd_tmpa_tl {c_ptxcd_ - \clist_item:nn {largerule, rulesep, smallrule, logoheight} {##1} - _dim} - \dim_if_exist:cT {\l_ptxcd_tmpa_tl} {\cs_undefine:c {\l_ptxcd_tmpa_tl}} - \dim_const:cn {\l_ptxcd_tmpa_tl} {\seq_item:Nn \l_ptxcd_tmpa_seq {##1}} - } - \dim_gset:Nn \g_ptxcd_titlerule_dim {.5\c_ptxcd_smallrule_dim} + \seq_set_split:Nnn \l_ptxcd_tmpa_seq {|} {#1} + \int_step_inline:nnnn {1} {1} {4} { + \tl_set:Nn \l_ptxcd_tmpa_tl {c_ptxcd_ + \clist_item:nn {largerule, rulesep, smallrule, logoheight} {##1} + _dim} + \dim_if_exist:cT {\l_ptxcd_tmpa_tl} {\cs_undefine:c {\l_ptxcd_tmpa_tl}} + \dim_const:cn {\l_ptxcd_tmpa_tl} {\seq_item:Nn \l_ptxcd_tmpa_seq {##1}} + } + \dim_gset:Nn \g_ptxcd_titlerule_dim {.5\c_ptxcd_smallrule_dim} } - \keys_define:nn {ptxcd/rules} { - color .tl_gset:N = \g_ptxcd_rules_color_tl, - blackrule .meta:n = {color=black}, - paper .choice:, - paper/dl .code:n = { \ptxcd_rules_set_values:n { 3.5mm | 1.4mm | 1.2pt | 17 mm | 0.6pt| 10mm | 14mm}}, - paper/a6 .code:n = { \ptxcd_rules_set_values:n { 3 mm | 1.4mm | 1.2pt | 16.5mm | 0.6pt| 10mm | 15mm}}, - paper/a5 .code:n = { \ptxcd_rules_set_values:n { 3.3mm | 1.4mm | 1.2pt | 19 mm | 0.6pt| 12mm | 16mm}}, - paper/a4 .code:n = { \ptxcd_rules_set_values:n { 4 mm | 1.4mm | 1.2pt | 22 mm | 0.6pt| 15mm | 20mm}}, - paper/a3 .code:n = { \ptxcd_rules_set_values:n { 4.5mm | 1.4mm | 1.2pt | 24.5mm | 0.6pt| 15mm | 20mm}}, - paper/a2 .code:n = { \ptxcd_rules_set_values:n { 8 mm | 2.5mm | 2.2pt | 44.5mm | 1.1pt| 30mm | 35mm}}, - paper/a1 .code:n = { \ptxcd_rules_set_values:n { 10 mm | 3.0mm | 2.8pt | 55.5mm | 1.4pt| 30mm | 35mm}}, - paper/a0 .code:n = { \ptxcd_rules_set_values:n { 16 mm | 5.2mm | 4.8pt | 80 mm | 2.4pt| 30mm | 35mm}}, - paper/slide .code:n = { \ptxcd_rules_set_values:n { 2mm | .7mm | .6pt | 11 mm | .3pt| 7.5mm | 10mm}}, - paper/beamer .meta:n = {paper= slide}, - paper/leaflet .meta:n = {paper=a5}, - color .tl_gset:N = \g_ptxcd_rules_default_color_tl, - color .initial:n = black, - mode .tl_gset:N = \g_ptxcd_rules_default_mode_tl, - mode .initial:n = box, - 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}, - department / unknown .code:n = { - \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} - }, - mecheng .meta:n = {department=mecheng}, + color .tl_gset:N = \g_ptxcd_rules_color_tl, + blackrule .meta:n = {color=black}, + paper .choice:, + paper/dl .code:n = { \ptxcd_rules_set_values:n { 3.5mm | 1.4mm | 1.2pt | 17 mm | 0.6pt| 10mm | 14mm}}, + paper/a6 .code:n = { \ptxcd_rules_set_values:n { 3 mm | 1.4mm | 1.2pt | 16.5mm | 0.6pt| 10mm | 15mm}}, + paper/a5 .code:n = { \ptxcd_rules_set_values:n { 3.3mm | 1.4mm | 1.2pt | 19 mm | 0.6pt| 12mm | 16mm}}, + paper/a4 .code:n = { \ptxcd_rules_set_values:n { 4 mm | 1.4mm | 1.2pt | 22 mm | 0.6pt| 15mm | 20mm}}, + paper/a3 .code:n = { \ptxcd_rules_set_values:n { 4.5mm | 1.4mm | 1.2pt | 24.5mm | 0.6pt| 15mm | 20mm}}, + paper/a2 .code:n = { \ptxcd_rules_set_values:n { 8 mm | 2.5mm | 2.2pt | 44.5mm | 1.1pt| 30mm | 35mm}}, + paper/a1 .code:n = { \ptxcd_rules_set_values:n { 10 mm | 3.0mm | 2.8pt | 55.5mm | 1.4pt| 30mm | 35mm}}, + paper/a0 .code:n = { \ptxcd_rules_set_values:n { 16 mm | 5.2mm | 4.8pt | 80 mm | 2.4pt| 30mm | 35mm}}, + paper/slide .code:n = { \ptxcd_rules_set_values:n { 2mm | .7mm | .6pt | 11 mm | .3pt| 7.5mm | 10mm}}, + paper/beamer .meta:n = {paper= slide}, + paper/leaflet .meta:n = {paper=a5}, + color .tl_gset:N = \g_ptxcd_rules_default_color_tl, + color .initial:n = black, + mode .tl_gset:N = \g_ptxcd_rules_default_mode_tl, + mode .initial:n = box, + 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}, + department / unknown .code:n = { + \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} + }, + mecheng .meta:n = {department=mecheng}, } - \ProcessKeyOptions[ptxcd/rules] - \RequirePackage{tudacolors} \RequirePackage{xparse} - -%Switch between TikZ and box mode \bool_new:N \g_ptxcd_rule_TikZmode_bool - \keys_define:nn {ptxcd/rules} { - width .dim_gset:N = \l_ptxcd_headrule_width_dim, - color .tl_gset:N = \l_ptxcd_headrule_color_tl, - mode .choice:, - mode / box .code:n = \bool_gset_false:N \g_ptxcd_rule_TikZmode_bool, - mode / tikz .code:n = \bool_gset_true:N \g_ptxcd_rule_TikZmode_bool, - mode / TikZ .code:n = \bool_gset_true:N \g_ptxcd_rule_TikZmode_bool, + width .dim_gset:N = \l_ptxcd_headrule_width_dim, + color .tl_gset:N = \l_ptxcd_headrule_color_tl, + mode .choice:, + mode / box .code:n = \bool_gset_false:N \g_ptxcd_rule_TikZmode_bool, + mode / tikz .code:n = \bool_gset_true:N \g_ptxcd_rule_TikZmode_bool, + mode / TikZ .code:n = \bool_gset_true:N \g_ptxcd_rule_TikZmode_bool, } - - \cs_if_exist_use:NF \str_case:Vn \str_case:on - \g_ptxcd_department_str { - {mecheng} {\bool_gset_true:N \g_ptxcd_simple_rules_bool} +\g_ptxcd_department_str { + {mecheng} {\bool_gset_true:N \g_ptxcd_simple_rules_bool} } - \cs_new:Nn \__ptxcd_logowidth: {\dim_eval:n {2.2\c_ptxcd_logoheight_dim}} \cs_new:Nn \__ptxcd_logosep:{\dim_eval:n {0.3\c_ptxcd_logoheight_dim}} - \NewDocumentCommand{\ptxcd_makeheadrule}{som}{ - \keys_set:nn {ptxcd/rules} { - %TODO maybe package options for default - width=\textwidth, - } - \exp_args:Nnx \keys_set:nn {ptxcd/rules} { - mode= \g_ptxcd_rules_default_mode_tl, - color= \g_ptxcd_rules_default_color_tl - } - \IfNoValueF {#2} {\keys_set:nn {ptxcd/rules}{#2}} - \IfBooleanF {#1} {\box_if_exist:cF {#3_box} {\box_new:c {#3_box}}} - \bool_if:NTF \g_ptxcd_simple_rules_bool { - \IfBooleanTF {#1} \use_none:n \hbox_gset:cn - {#3_box} - { - \color{\l_ptxcd_headrule_color_tl} - \raisebox{-\height}{\rule{\l_ptxcd_headrule_width_dim}{.5\c_ptxcd_largerule_dim}} - } - }{ - \bool_if:NTF \g_ptxcd_rule_TikZmode_bool { - \IfBooleanTF {#1} \use_none:n \hbox_gset:cn - {#3_box} { - \begin{tikzpicture} - \fill[\l_ptxcd_headrule_color_tl](0,\c_ptxcd_rulesep_dim)rectangle++(\l_ptxcd_headrule_width_dim,\c_ptxcd_largerule_dim); - \fill(0,0)rectangle(\l_ptxcd_headrule_width_dim,-\c_ptxcd_smallrule_dim); - \end{tikzpicture} - } - }{ - \IfBooleanTF {#1} \use_none:n \hbox_gset:cn - {#3_box} - { - \parbox[t]{\l_ptxcd_headrule_width_dim}{ - \setlength{\baselineskip}{\z@} - \null\par\nointerlineskip - \textcolor{\l_ptxcd_headrule_color_tl}{\rule{\linewidth}{\c_ptxcd_largerule_dim}} - \vspace{\c_ptxcd_rulesep_dim}\par\nointerlineskip - \rule{\linewidth}{\c_ptxcd_smallrule_dim} - } - } - } - } - \IfBooleanF {#1} {\cs_set:cpn {#3} {\box_use:c {#3_box}}} + \keys_set:nn {ptxcd/rules} { + %TODO maybe package options for default + width=\textwidth, + } + \exp_args:Nnx \keys_set:nn {ptxcd/rules} { + mode= \g_ptxcd_rules_default_mode_tl, + color= \g_ptxcd_rules_default_color_tl + } + \IfNoValueF {#2} {\keys_set:nn {ptxcd/rules}{#2}} + \IfBooleanF {#1} {\box_if_exist:cF {#3_box} {\box_new:c {#3_box}}} + \bool_if:NTF \g_ptxcd_simple_rules_bool { + \IfBooleanTF {#1} \use_none:n \hbox_gset:cn + {#3_box} + { + \color{\l_ptxcd_headrule_color_tl} + \raisebox{-\height}{\rule{\l_ptxcd_headrule_width_dim}{.5\c_ptxcd_largerule_dim}} + } + }{ + \bool_if:NTF \g_ptxcd_rule_TikZmode_bool { + \IfBooleanTF {#1} \use_none:n \hbox_gset:cn + {#3_box} { + \begin{tikzpicture} + \fill[\l_ptxcd_headrule_color_tl](0,\c_ptxcd_rulesep_dim)rectangle++(\l_ptxcd_headrule_width_dim,\c_ptxcd_largerule_dim); + \fill(0,0)rectangle(\l_ptxcd_headrule_width_dim,-\c_ptxcd_smallrule_dim); + \end{tikzpicture} + } + }{ + \IfBooleanTF {#1} \use_none:n \hbox_gset:cn + {#3_box} + { + \parbox[t]{\l_ptxcd_headrule_width_dim}{ + \setlength{\baselineskip}{\z@} + \null\par\nointerlineskip + \textcolor{\l_ptxcd_headrule_color_tl}{\rule{\linewidth}{\c_ptxcd_largerule_dim}} + \vspace{\c_ptxcd_rulesep_dim}\par\nointerlineskip + \rule{\linewidth}{\c_ptxcd_smallrule_dim} + } + } + } + } + \IfBooleanF {#1} {\cs_set:cpn {#3} {\box_use:c {#3_box}}} } - \NewDocumentCommand{\ptxcd_makefootrule}{som}{ - \keys_set:nn {ptxcd/rules} { - width= \textwidth - } - \IfNoValueF {#2} {\keys_set:nn {ptxcd/rules}{#2}} - \IfBooleanF {#1} {\box_new:c {#3_box}} - \IfBooleanTF {#1} \use_none:n \hbox_gset:cn {#3_box} { - \raisebox{-\height}{\rule{\l_ptxcd_headrule_width_dim}{\g_ptxcd_titlerule_dim}} - } - \IfBooleanF{#1} {\cs_new:cpn {#3} {\box_use:c {#3_box}}} + \keys_set:nn {ptxcd/rules} { + width= \textwidth + } + \IfNoValueF {#2} {\keys_set:nn {ptxcd/rules}{#2}} + \IfBooleanF {#1} {\box_new:c {#3_box}} + \IfBooleanTF {#1} \use_none:n \hbox_gset:cn {#3_box} { + \raisebox{-\height}{\rule{\l_ptxcd_headrule_width_dim}{\g_ptxcd_titlerule_dim}} + } + \IfBooleanF{#1} {\cs_new:cpn {#3} {\box_use:c {#3_box}}} } - \endinput +%% +%% End of file `tudarules.sty'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls b/Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls index 71e8123ef10..d1abede6134 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudasciposter.cls @@ -1,10 +1,23 @@ -%% This is file `tudasciposter.cls' version 3.41 (2024-07-02), +%% +%% This is file `tudasciposter.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudasciposter.dtx (with options: `class,initialization') +%% tuda-ci.dtx (with options: `options,sciposter,print,pdfa') +%% tudasciposter.dtx (with options: `class,packages') +%% tuda-ci.dtx (with options: `pdfx') +%% tudasciposter.dtx (with options: `class,body') +%% tuda-ci.dtx (with options: `xmpdata') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,634 +26,674 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\NeedsTeXFormat{LaTeX2e} - -\ProvidesExplPackage{tudasciposter}{\filedate}{\fileversion}{Scientific Poster Layout for TU Darmstadt} - +%% +\NeedsTeXFormat{LaTeX2e}[2022/06/01] +\ProvidesExplClass{tudasciposter}{2025-01-26}{4.00}{Scientific Poster Layout for TU Darmstadt} \prop_new:N \g_ptxcd_clsopts_prop \tl_new:N \g_ptxcd_boxstyle_tl \int_new:N \g_ptxcd_paper_int \str_new:N \g_ptxcd_department_str \str_const:Nn \c__ptxcd_base_str {sciposter} - \keys_define:nn {ptxcd/poster} { - accentcolor .code:n = {\PassOptionsToPackage{accent =#1}{tudacolors}}, - color .meta:n = {accentcolor = #1}, - textaccentcolor .code:n = {\PassOptionsToPackage{textaccent =#1}{tudacolors}}, - identbarcolor .code:n = {\PassOptionsToPackage{identbar =#1}{tudacolors}}, - titletext .code:n = {\PassOptionsToPackage{text =#1}{tudacolors}}, - footer .bool_gset:N = \g_ptxcd_poster_foot_bool, - footer .default:n = true, - footer .initial:n = true, - thanks .tl_gset:N = \g_ptxcd_footnote_label_tl, - thanks .initial:n = arabic*, - pdfa .bool_gset:N = \g_ptxcd_pdfa_bool, - pdfa .initial:n = false, - boxstyle .choice:, - boxstyle / official .code:n = \tl_gset:Nn \g_ptxcd_boxstyle_tl {TUDa}, - boxstyle / colored .code:n= \tl_gset:Nn \g_ptxcd_boxstyle_tl {TUDa-colored}, - boxstyle / boxed .code:n= \tl_gset:Nn \g_ptxcd_boxstyle_tl {TUDa-boxed}, - boxstyle /default .meta:n = {boxstyle=official}, - boxstyle .initial:n = default, - unknown .code:n = {\prop_gput:NVn \g_ptxcd_clsopts_prop \l_keys_key_tl {#1}}, - paper .choices:nn = {a0,a1,a2,a3}{ - \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int - \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules} - \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry} - }, - paper / landscape .code:n = \PassOptionsToPackage{landscape}{geometry}, - paper / portrait .code:n = \PassOptionsToPackage{portrait}{geometry}, - paper .initial:n = a0, - fontsize .tl_gset:N = \g_ptxcd_fontsize_tl, - logofile .tl_gset:N = \g_ptxcd_logofile_tl, - logofile .initial:n = tuda_logo, - title .choice:, - title / default .meta:n = {title=large}, - 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, - colorback .bool_gset:N = \g_ptxcd_colorback_bool, - colorback .initial:n = true, - 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/poster} {colorback=false, departmentlogofile=tuda_maschinenbau_logo,titlesepline=false} - }, - department .initial:n = default, + titletext .code:n = {\PassOptionsToPackage{text =#1}{tudacolors}}, + footer .bool_gset:N = \g_ptxcd_poster_foot_bool, + footer .default:n = true, + footer .initial:n = true, + thanks .tl_gset:N = \g_ptxcd_footnote_label_tl, + thanks .initial:n = arabic*, + boxstyle .choice:, + boxstyle / official .code:n = \tl_gset:Nn \g_ptxcd_boxstyle_tl {TUDa}, + boxstyle / colored .code:n= \tl_gset:Nn \g_ptxcd_boxstyle_tl {TUDa-colored}, + boxstyle / boxed .code:n= \tl_gset:Nn \g_ptxcd_boxstyle_tl {TUDa-boxed}, + boxstyle /default .meta:n = {boxstyle=official}, + boxstyle .initial:n = default, + unknown .code:n = {\prop_gput:NVn \g_ptxcd_clsopts_prop \l_keys_key_tl {#1}}, + fontsize .tl_gset:N = \g_ptxcd_fontsize_tl, + titlesepline .bool_gset:N = \g_ptxcd_titlesepline_bool, + titlesepline .initial:n = true, + logofile .tl_gset:N = \g_ptxcd_logofile_tl, + logofile .initial:n = tuda_logo, + accept-missing-logos .bool_gset:N = \g_ptxcd_logo_workaround_bool, + accept-missing-logos .initial:n = false, + accept-missing-logos .usage:n = load, + accept-missing-logos .default:n = true, + 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} + \exp_args:Ne \keys_set:ne { + + ptxcd / poster + }{ + colorback=false, + departmentlogofile=tuda_maschinenbau_logo, + titlesepline=false + } + }, + + department .initial:n = default, department / unknown .code:n = { - \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} - },, - departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, - departmentconfigprefix .initial:n = tuda, - mecheng .meta:n = {department=mecheng}, - departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, - departmentlogofile .initial:n =, - titlesepline .bool_gset:N = \g_ptxcd_titlesepline_bool, - titlesepline .initial:n = true, + \str_gset:Nx \g_ptxcd_department_str {\l_keys_value_tl} + }, + departmentconfigprefix .tl_gset:N = \g__ptxcd_config_prefix_tl, + departmentconfigprefix .initial:n = tuda, + departmentlogofile .tl_gset:N = \g_ptxcd_departmentlogo_tl, + departmentlogofile .initial:n =, + mecheng .meta:n = {department=mecheng}, + pdfa .bool_gset:N = \g_ptxcd_pdfa_bool, + pdfa .initial:n = + false, + pdfx .bool_gset:N = \g_ptxcd_pdfx_bool, + pdfx .initial:n = true, +%% color options +%% color options + color .meta:n = {accentcolor=#1}, + accentcolor .code:n = {\PassOptionsToPackage{accentcolor=#1}{tudacolors}}, + textaccentcolor .code:n = {\PassOptionsToPackage{textaccentcolor=#1}{tudacolors}}, + identbarcolor .code:n = {\PassOptionsToPackage{identbarcolor=#1}{tudacolors}}, + colorback .bool_gset:N = \g_ptxcd_colorback_bool, + colorback .default:n = true, + colorback .initial:n = true, + paper .choices:nn = { + a0,a1,a2,a3 + }{ + \int_gset_eq:NN \g_ptxcd_paper_int \l_keys_choice_int + \exp_args:Nx \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules} + \exp_args:Nx \PassOptionsToPackage{\l_keys_choice_tl paper}{geometry} + }, + paper / landscape .code:n = \PassOptionsToPackage{landscape}{geometry}, + + paper / portrait .code:n = \PassOptionsToPackage{portrait}{geometry}, + paper .initial:n = + + a0, + title .choice:, + title / default .meta:n = {title=large}, + 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, +} +\cs_if_exist:NT \TUDaDefaultBuildOptions { + \exp_args:Ne \keys_set:ne { ptxcd / + poster + } { + \TUDaDefaultBuildOptions + } +} +\cs_new:Nn \__ptxcd_insert_logo: { + \bool_if:NTF \g_ptxcd_logo_workaround_bool { + \file_if_exist:nTF {\g_ptxcd_logofile_tl.pdf} + \use_ii:nn + \use_i:nn + } { + \use_ii:nn + } + {\rule{0pt}{\c_ptxcd_logoheight_dim}\makebox[2.5\c_ptxcd_logoheight_dim][c]{\rule[.1\c_ptxcd_logoheight_dim]{2.05\c_ptxcd_logoheight_dim}{.8\c_ptxcd_logoheight_dim}}} + {\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}} } -\ProcessKeyOptions[ptxcd/poster] +\bool_if:NF \g_ptxcd_pdfa_bool {\bool_gset_false:N \g_ptxcd_pdfx_bool} + +\bool_if:NT \g_ptxcd_pdfa_bool { + \msg_new:nnn {tudapub} {colors-to-rgb} { + You~did~not~add~a~color~profile.\\ + I~will~use~the~default~one~and~automatically~try~to~convert~internal~colors~to~RGB.\\ + This~is~required~to~be~able~to~create~PDF/A~compliance. + } + + \cs_if_exist:NT \pdfmeta_standard_get:nN { + \pdfmeta_standard_get:nN {outputintent_A} \l_tmpa_tl + \quark_if_no_value:NF \l_tmpa_tl { + \bool_gset_false:N \g_ptxcd_pdfx_bool + \msg_new:nnn{tudapub} {prefer-lualatex} { + I~detected~usage~of~l3pdfmeta~(\DocumentMetadata)~to~create~PDF/A.\\ + tudapub~will~not~load~pdfx~to~avoid~conflicts.\\ + To~disable~this~message~use~pdfx=false. + } + \msg_info:nn {tudapub} {prefer-lualatex} + } + \prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} { + \use_iii:nnn + } + } + \bool_if:NT \g_ptxcd_pdfx_bool { + \PassOptionsToPackage{RGB}{xcolor} + \msg_info:nn {tudapub} {colors-to-rgb} + } +} +\ProcessKeyOptions[ptxcd/poster] \dim_new:N \g_ptxcd_margin_dim \bool_if:NTF \g_ptxcd_smalltitle_bool { - \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} - \ptxcd_setup_title_sizes: - \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} - \ptxcd_setup_base_sizes: + \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} + \ptxcd_setup_title_sizes: + \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} + \ptxcd_setup_base_sizes: }{ - \int_gdecr:N \g_ptxcd_paper_int - \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} - \ptxcd_setup_title_sizes: - \ptxcd_setup_base_sizes: + \int_gdecr:N \g_ptxcd_paper_int + \file_input:n {tuda-a\int_use:N \g_ptxcd_paper_int paper.clo} + \ptxcd_setup_title_sizes: + \ptxcd_setup_base_sizes: } - \prop_gput:NnV \g_ptxcd_clsopts_prop {fontsize} \g_ptxcd_fontsize_tl - \prop_map_inline:Nn \g_ptxcd_clsopts_prop { - \tl_if_empty:nTF {#2} - {\PassOptionsToClass{#1}{scrartcl}} - {\clist_map_inline:nn {#2} {\PassOptionsToClass{#1=##1}{scrartcl}}} + \tl_if_empty:nTF {#2} + {\PassOptionsToClass{#1}{scrartcl}} + {\clist_map_inline:nn {#2} {\PassOptionsToClass{#1=##1}{scrartcl}}} } - -\bool_if:NT \g_ptxcd_pdfa_bool {\PassOptionsToPackage{RGB}{xcolor}} - \ExplSyntaxOff -\PassOptionsToPackage{DIV=10}{typearea} +\PassOptionsToPackage{typeareawarninfolimit=-1,DIV=10}{typearea} \LoadClass[parskip=full-]{scrartcl} -\RequirePackage{tudafonts} -\RequirePackage{calc} -\RequirePackage[margin=0pt]{geometry} -\RequirePackage{tudacolors} - \ExplSyntaxOn +\PassOptionsToPackage{hidelinks, unicode}{hyperref} +\bool_if:NTF \g_ptxcd_pdfx_bool { +%% only apply the hack if pdfx is older than the working version + \PassOptionsToPackage{a-2b}{pdfx} +%% Workaround posted by David Carlisle on tex.stackexchange +%% Thanks to Ulrike Fischer for mentioning it in #472 + \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel + \chardef\currentgrouplevel0 + \ExplSyntaxOff + \RequirePackage{pdfx} + \ExplSyntaxOn + \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx: + \cs_undefine:N \__ptxcd_grouplevel_before_pdfx: +%% end of the workaround + + \msg_new:nnn{tuda-ci} {prefer-lualatex} { + You~use~pdfa-mode~in~#1.\\ + This~can~lead~to~incompatiblities~especially~with~older~compiler~versions.\\ + You~should~prefer~using~lualatex. + } + \msg_new:nnnn{tuda-ci} {outdated-package-pdfa} { + Your~Version~of~the~#1-package~is~too~old~to~support~all~methods~required~by~tudapubs~pdfa-mode.\\ + Either~update~your~TeX-distribution~or~switch~to~pdfa=false. + }{See~DEMO-tudapub~for~further~information.} + + \sys_if_engine_pdftex:T { + \msg_warning:nnn{tuda-ci} {prefer-lualatex} {PDFTeX} + } + + \sys_if_engine_xetex:T { + \msg_warning:nnn{tuda-ci} {prefer-lualatex} {XeTeX} + } + + \@ifpackagelater{xmpincl}{2021/09/22}{ + }{ + \msg_error:nn{tuda-ci} {outdated-package-pdfa} {xmpincl} + } -\if_bool:N \g_ptxcd_pdfa_bool -\PassOptionsToPackage{a-2b}{pdfx} -\IfFormatAtLeastTF{2020/10/01}{}{\endinput} -% Workaround posted by David Carlisle on tex.stackexchange -% Thanks to Ulrike Fischer for mentioning it in #472 - \let \__ptxcd_grouplevel_before_pdfx: \currentgrouplevel - \chardef\currentgrouplevel0 - \ExplSyntaxOff - \RequirePackage{pdfx} - \ExplSyntaxOn - \let \currentgrouplevel \__ptxcd_grouplevel_before_pdfx: - \cs_undefine:N \__ptxcd_grouplevel_before_pdfx: -% end of the workaround -\fi: - +} { + \RequirePackage{hyperref} +} \ExplSyntaxOff - +\RequirePackage{tudafonts} +\RequirePackage{tudacolors} +\RequirePackage[margin=0pt]{geometry} \RequirePackage{tcolorbox} \tcbuselibrary{poster} - \RequirePackage[mode=tikz]{tudarules} \RequirePackage{qrcode} - \ExplSyntaxOn -%Font adjusments \renewcommand*{\familydefault}{\sfdefault} - \setkomafont{title}{ - \color{titlefgcolor} - \expandafter\fontsize\ptxcd_title_fontsize:\selectfont - \bfseries + \color{titlefgcolor} + \expandafter\fontsize\ptxcd_title_fontsize:\selectfont + \bfseries } - \setkomafont{author}{\bfseries} \setkomafont{captionlabel}{\bfseries} - \setkomafont{disposition}{\sffamily\bfseries} - -% end of font adjustments - - - \dim_const:Nn \c_ptxcd_headrule_ht_dim {\c_ptxcd_rulesep_dim +\c_ptxcd_largerule_dim + \c_ptxcd_smallrule_dim} -%Setup title \box_new:N \l_ptxcd_tmpa_box \box_new:N \g_ptxcd_titlegraphic_box \box_new:N \g_ptxcd_title_box \box_new:N \g_ptxcd_author_box \box_new:N \g_ptxcd_credit_box - \tl_new:N \g_ptxcd_thanks_tl \newcommand*{\ptxcd_title@footnote}[2][1]{ - \begingroup - \ptxcd_def_footnotelabel: - \footnotemark[#1]\,#2\quad - \endgroup + \begingroup + \ptxcd_def_footnotelabel: + \footnotemark[#1]\,#2\quad + \endgroup } - \tl_greplace_all:Nnn \g_ptxcd_footnote_label_tl {*} {{footnote}} \clist_map_inline:nn {alph, arabic, fnsymbol, Alph, roman, Roman} { - \tl_greplace_all:Nnn \g_ptxcd_footnote_label_tl {#1} {\use:c {#1}} + \tl_greplace_all:Nnn \g_ptxcd_footnote_label_tl {#1} {\use:c {#1}} } - \cs_set:Nn \ptxcd_def_footnotelabel: { - \renewcommand*{\thefootnote}{\g_ptxcd_footnote_label_tl} + \renewcommand*{\thefootnote}{\g_ptxcd_footnote_label_tl} } - \pagestyle{empty} \renewcommand*{\title}[1]{\gdef \@title {#1}} - - \dim_new:N \g_ptxcd_footheight_dim \dim_gset:Nn \g_ptxcd_footheight_dim {0.06\paperwidth}% - \box_new:N \g_ptxcd_footergraphics_box \newcommand*{\footergraphics}[1]{ - \begingroup - \let\height\g_ptxcd_footheight_dim - \hbox_gset:Nn \g_ptxcd_footergraphics_box {#1} - \endgroup + \begingroup + \let\height\g_ptxcd_footheight_dim + \hbox_gset:Nn \g_ptxcd_footergraphics_box {#1} + \endgroup } - \tl_new:N \g_ptxcd_poster_foot_tl \newcommand{\footer}[1]{ - \tl_gset:Nn \g_ptxcd_poster_foot_tl {#1} + \tl_gset:Nn \g_ptxcd_poster_foot_tl {#1} } - \tl_new:N \g_ptxcd_poster_qrcode_tl - \msg_new:nnnn {tudapub} {biblatex-required}{ - You~tried~to~use~#1.\\ - This~feature~requires~the~biblatex~package. + You~tried~to~use~#1.\\ + This~feature~requires~the~biblatex~package. } { - Try~to~remove~the~star~or~load~biblatex. + Try~to~remove~the~star~or~load~biblatex. } - \NewDocumentCommand{\footerqrcode}{sm}{ - \IfBooleanTF {#1} { - \cs_if_exist:NTF \blx@blxinit { - \begingroup - \blx@blxinit - \entrydata{#2}{ - \tl_gset:Nx \g_ptxcd_poster_qrcode_tl{\thefield{url}} - } - \endgroup - }{ - \msg_error:nnx {tudapub} {biblatex-required} {\use:c{footerqrcode*}} - } - }{ - \tl_gset:Nn \g_ptxcd_poster_qrcode_tl {#2} - } -} - - -%%%%%%%%%%%%%%%%%%% -% Begin of PDF/A mode -%%%%%%%%%%%%%%%%%%% -%PDFA -\if_bool:N \g_ptxcd_pdfa_bool -%%hyperref -\hypersetup{hidelinks, unicode, hyperfootnotes=false} -\iow_new:N \ptxcd_xmpdata_stream -\iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata} -\tl_new:N \g_ptxcd_xmp_title -\tl_new:N \g_ptxcd_xmp_author - -\cs_new:Nn \ptxcd_pass_TitleData: { - \begingroup - \def\newline{} - \def\\{} - \cs_set_eq:NN \thanks \use_none:n - \cs_set_eq:NN \inst \use_none:n - \cs_set:Npn \and {\sep} - \bool_if:NTF \g_ptxcd_pass_TitleData_bool { - \tl_gset:Nx \g_ptxcd_xmp_title {\@title} - \seq_clear:N \l_tmpa_seq - \seq_map_inline:Nn \g_ptxcd_author_seq { - \seq_put_right:Nx \l_tmpa_seq {##1} - } - \tl_gset:Nx \g_ptxcd_xmp_author {\seq_use:Nn \l_tmpa_seq {\sep}} - \iow_now:Nx \ptxcd_xmpdata_stream - { - \exp_not:N \Title{\tl_to_str:V \g_ptxcd_xmp_title} - ^^J - \exp_not:N \Author{\tl_to_str:V \g_ptxcd_xmp_author} - ^^J - \exp_not:N \Creator{LaTeX~ using~ the~ TUDa-CI~ Bundle} - } - }{ - \begingroup - \use:c {pdfx@localcommands} - \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn - \endgroup - } - \endgroup -} - -\cs_new:Nn \ptxcd_write_xmp_line:nn { - %Fallback test for older kernels - \cs_if_exist:NTF \str_uppercase:f { - \tl_set:Nx \l_tmpa_tl { - \str_uppercase:f {\tl_head:n {#1}} - \str_lowercase:f { \tl_tail:n {#1}} - } - } { - %may be removed in some time - \tl_set:Nx \l_tmpa_tl {\tl_mixed_case:n {#1}} - } - \cs_if_exist:cTF {\l_tmpa_tl}{ - \iow_now:Nx \ptxcd_xmpdata_stream { - \c_backslash_str \l_tmpa_tl {\exp_not:n {#2}} - } - }{ - \msg_error:nnn{tudapub} {unknown-metadata} {#1} - } -} - -\bool_new:N \g_ptxcd_pass_TitleData_bool -\bool_gset_true:N \g_ptxcd_pass_TitleData_bool -\prop_new:N \g_ptxcd_MetaData_prop - -\newcommand*{\Metadata}[1]{ - \bool_gset_false:N \g_ptxcd_pass_TitleData_bool - \prop_gset_from_keyval:Nn \g_ptxcd_MetaData_prop {#1} + \IfBooleanTF {#1} { + \cs_if_exist:NTF \blx@blxinit { + \begingroup + \blx@blxinit + \entrydata{#2}{ + \tl_gset:Nx \g_ptxcd_poster_qrcode_tl{\thefield{url}} + } + \endgroup + }{ + \msg_error:nnx {tudapub} {biblatex-required} {\use:c{footerqrcode*}} + } + }{ + \tl_gset:Nn \g_ptxcd_poster_qrcode_tl {#2} + } } - - -\msg_new:nnnn{tudapub} {unknown-metadata} { - You~ used~ the~ #1~ metadata~ entry.\\ - I~ don't~ know~ how~ to~ handle~ that.\\ - It~ will~ be~ ignored. -} {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.} -\else: -\msg_new:nnn{tudapub} {no-pdfa}{The~ tudapub~ class~ won't~ create~ PDF/A-mode.} -\msg_info:nn{tudapub} {no-pdfa} -%%hyperref -\RequirePackage[hidelinks, unicode,hyperfootnotes=false]{hyperref} -\fi: - -%%%%%%%%%%%%%%%%%%% -% End of PDF/A mode -%%%%%%%%%%%%%%%%%%% - -%redefine \author to manage \and and \thanks - \seq_new:N \g_ptxcd_author_seq - \renewcommand*\author[1]{ - \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1} + \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#1} } - \msg_new:nnn{tudasciposter} {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. + 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. } - \providecommand*\authorandname{ - \msg_warning:nnxxx{tudasciposter} {unknown-language} - {\languagename} {\exp_not:N \authorandname} {und} - und + \msg_warning:nnxxx{tudasciposter} {unknown-language} + {\languagename} {\exp_not:N \authorandname} {und} + und } - \defcaptionname{ngerman, german}{\authorandname}{und} \defcaptionname{english, USenglish, american, UKenglish, british}{\authorandname}{and} - - \renewcommand*{\@author}{ - \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~} + \seq_use:Nnnn \g_ptxcd_author_seq {~\authorandname{}~} {,~} {~\&~} } - \newcommand\titlegraphic[1]{\def\@titlegraphic{#1}} \titlegraphic{} - \newcommand{\institute}[1]{\def\@institute{#1}} \institute{} - - - -%Language dependent configuration \AtBeginDocument{ - \@ifpackageloaded{babel}{ - \addto\extrasngerman{\def\authorandname{und}} - \addto\extrasgerman{\def\authorandname{und}} - \addto\extrasenglish{\def\authorandname{and}} - \addto\extrasbritish{\def\authorandname{and}} - \addto\captionsngerman{\renewcommand{\figurename}{Abb.}} - \addto\captionsgerman{\renewcommand{\figurename}{Abb.}} - \addto\captionsenglish{\renewcommand{\figurename}{Fig.}} - \addto\captionsbritish{\renewcommand{\figurename}{Fig.}} - }{} + \@ifpackageloaded{babel}{ + \addto\extrasngerman{\def\authorandname{und}} + \addto\extrasgerman{\def\authorandname{und}} + \addto\extrasenglish{\def\authorandname{and}} + \addto\extrasbritish{\def\authorandname{and}} + \addto\captionsngerman{\renewcommand{\figurename}{Abb.}} + \addto\captionsgerman{\renewcommand{\figurename}{Abb.}} + \addto\captionsenglish{\renewcommand{\figurename}{Fig.}} + \addto\captionsbritish{\renewcommand{\figurename}{Fig.}} + }{} } - \newlength{\contentwidth} \setlength{\contentwidth}{\dimexpr\paperwidth-2\g_ptxcd_margin_dim\relax} \newlength{\contentheight} - \cs_new:Nn \__ptxcd_logo_code:n { - \node[anchor=north~east,inner~sep=0pt,minimum~width=\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}](#1) at ([xshift=\__ptxcd_logosep:,yshift=-.5\c_ptxcd_logoheight_dim]identbar.south~east){ - \includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl} - }; + \node[anchor=north~east,inner~sep=0pt,minimum~width=\dim_eval:n {\__ptxcd_logowidth: + \__ptxcd_logosep:}](#1) at ([xshift=\__ptxcd_logosep:,yshift=-.5\c_ptxcd_logoheight_dim]identbar.south~east){ + \__ptxcd_insert_logo: + }; } - - \tcbposterset{ - coverage = - { - spread, - parbox=false, - bottom=\dim_eval:n {\g_ptxcd_margin_dim - \bool_if:NT \g_ptxcd_poster_foot_bool {+\g_ptxcd_footheight_dim + 3\c_ptxcd_rulesep_dim} - }, - left=\g_ptxcd_margin_dim, - right=\g_ptxcd_margin_dim, - before= {\ptxcd_poster_setup_title_box:}, - top= \dim_eval:n { - \bool_if:NF \g_ptxcd_colorback_bool {1.5} - \g_ptxcd_margin_dim - +\box_ht:N \ptxcd_headrule_box - +\box_dp:N \ptxcd_headrule_box - +\g_ptxcd_titleblock_dim - +4\c_ptxcd_rulesep_dim - +\box_ht:N \g_ptxcd_author_box - +\box_dp:N \g_ptxcd_author_box - }, - overlay={% - \coordinate(topleft) at ([xshift=\g_ptxcd_margin_dim, yshift=-\g_ptxcd_margin_dim]current~page.north~ west); - \coordinate(topright) at ([xshift=-\g_ptxcd_margin_dim, yshift=-\g_ptxcd_margin_dim]current~page.north~ east); - \coordinate(bottomleft) at ([xshift=\g_ptxcd_margin_dim, yshift=\g_ptxcd_margin_dim]current~page.south~ west); - \coordinate(bottomright) at ([xshift=-\g_ptxcd_margin_dim, yshift=\g_ptxcd_margin_dim]current~page.south~ east); - - \dim_gset:Nn \g_ptxcd_titleindent_dim {\bool_if:NTF \g_ptxcd_colorback_bool {3\c_ptxcd_rulesep_dim} {\c_zero_dim}} - - \node[inner~sep=0pt, anchor=north~west](identbar) at (topleft){\ptxcd_headrule}; - \bool_if:NTF \g_ptxcd_colorback_bool - \fill \path [identbarcolor] - (identbar.south~east)rectangle([yshift=-\g_ptxcd_titleblock_dim]identbar.south~west) coordinate(bottomlefttitleblock); - - \__ptxcd_logo_code:n {TUDalogo} - - \node[inner~sep=0pt,text~width=\__ptxcd_logowidth:,align=right,anchor=north~west,](titlegraphic) at ([yshift=-\c_ptxcd_rulesep_dim]TUDalogo.south~west){\box_use:N \g_ptxcd_titlegraphic_box}; - - \node[anchor=north~west,inner~sep=0pt,] (title) at ([ - xshift=\g_ptxcd_titleindent_dim,yshift=-.5\c_ptxcd_logoheight_dim]identbar.south~west) {\box_use:N \g_ptxcd_title_box}; - - \bool_if:NT \g_ptxcd_titlesepline_bool - {\draw[line~ width=.5\c_ptxcd_smallrule_dim](bottomlefttitleblock)--++(\contentwidth,0);} - - \node[anchor=north~west, inner~xsep=0pt, inner~ ysep=\c_ptxcd_rulesep_dim] (author) at ([xshift=\g_ptxcd_titleindent_dim]bottomlefttitleblock) {\box_use:N \g_ptxcd_author_box}; - - \draw[line~ width=.5\c_ptxcd_smallrule_dim](author.south-|identbar.west)--++(\contentwidth,0); - - - \bool_if:NT \g_ptxcd_poster_foot_bool {\__ptxcd_typeset_footer:} - }} + coverage = + { + spread, + parbox=false, + bottom=\dim_eval:n {\g_ptxcd_margin_dim + \bool_if:NT \g_ptxcd_poster_foot_bool {+\g_ptxcd_footheight_dim + 3\c_ptxcd_rulesep_dim} + }, + left=\g_ptxcd_margin_dim, + right=\g_ptxcd_margin_dim, + before= {\ptxcd_poster_setup_title_box:}, + top= \dim_eval:n { + \bool_if:NF \g_ptxcd_colorback_bool {1.5} + \g_ptxcd_margin_dim + +\box_ht:N \ptxcd_headrule_box + +\box_dp:N \ptxcd_headrule_box + +\g_ptxcd_titleblock_dim + +4\c_ptxcd_rulesep_dim + +\box_ht:N \g_ptxcd_author_box + +\box_dp:N \g_ptxcd_author_box + }, + overlay={% + \coordinate(topleft) at ([xshift=\g_ptxcd_margin_dim, yshift=-\g_ptxcd_margin_dim]current~page.north~ west); + \coordinate(topright) at ([xshift=-\g_ptxcd_margin_dim, yshift=-\g_ptxcd_margin_dim]current~page.north~ east); + \coordinate(bottomleft) at ([xshift=\g_ptxcd_margin_dim, yshift=\g_ptxcd_margin_dim]current~page.south~ west); + \coordinate(bottomright) at ([xshift=-\g_ptxcd_margin_dim, yshift=\g_ptxcd_margin_dim]current~page.south~ east); + \dim_gset:Nn \g_ptxcd_titleindent_dim {\bool_if:NTF \g_ptxcd_colorback_bool {3\c_ptxcd_rulesep_dim} {\c_zero_dim}} + \node[inner~sep=0pt, anchor=north~west](identbar) at (topleft){\ptxcd_headrule}; + \bool_if:NTF \g_ptxcd_colorback_bool + \fill \path [identbarcolor] + (identbar.south~east)rectangle([yshift=-\g_ptxcd_titleblock_dim]identbar.south~west) coordinate(bottomlefttitleblock); + \__ptxcd_logo_code:n {TUDalogo} + \node[inner~sep=0pt,text~width=\__ptxcd_logowidth:,align=right,anchor=north~west,](titlegraphic) at ([yshift=-\c_ptxcd_rulesep_dim]TUDalogo.south~west){\box_use:N \g_ptxcd_titlegraphic_box}; + \node[anchor=north~west,inner~sep=0pt,] (title) at ([ + xshift=\g_ptxcd_titleindent_dim,yshift=-.5\c_ptxcd_logoheight_dim]identbar.south~west) {\box_use:N \g_ptxcd_title_box}; + \bool_if:NT \g_ptxcd_titlesepline_bool + {\draw[line~ width=.5\c_ptxcd_smallrule_dim](bottomlefttitleblock)--++(\contentwidth,0);} + \node[anchor=north~west, inner~xsep=0pt, inner~ ysep=\c_ptxcd_rulesep_dim] (author) at ([xshift=\g_ptxcd_titleindent_dim]bottomlefttitleblock) {\box_use:N \g_ptxcd_author_box}; + \draw[line~ width=.5\c_ptxcd_smallrule_dim](author.south-|identbar.west)--++(\contentwidth,0); + \bool_if:NT \g_ptxcd_poster_foot_bool {\__ptxcd_typeset_footer:} + }} } - \cs_new:Nn \__ptxcd_typeset_footer: { - \coordinate(lastpos) at (bottomright); - \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl - { - \node[anchor=south~east, inner~sep=\z@] (qrcode)at (lastpos) - { - \exp_args:NnV \use:n {\qrcode[height=\dim_use:N \g_ptxcd_footheight_dim]}\g_ptxcd_poster_qrcode_tl - }; - \coordinate (lastpos) at (qrcode.south~west); - } - \box_if_empty:NF \g_ptxcd_footergraphics_box { - \node[anchor=south~east, inner~sep=\z@] at (lastpos) { - \accentfont - \box_use:N \g_ptxcd_footergraphics_box - }; - } - \node[anchor=north~ west, inner~ sep=\z@] (infofooter) at ([yshift=\g_ptxcd_footheight_dim]bottomleft) { - \parbox{\dim_eval:n {\contentwidth - -\box_wd:N \g_ptxcd_footergraphics_box - \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl {-\g_ptxcd_footheight_dim-\c_ptxcd_rulesep_dim} - }}{ - \rule{\linewidth}{.5\c_ptxcd_smallrule_dim}\\ - \accentfont\small\g_ptxcd_poster_foot_tl - \par\medskip - \let\footnotetext\ptxcd_title@footnote - \g_ptxcd_thanks_tl} - }; + \coordinate(lastpos) at (bottomright); + \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl + { + \node[anchor=south~east, inner~sep=\z@] (qrcode)at (lastpos) + { + \exp_args:NnV \use:n {\qrcode[height=\dim_use:N \g_ptxcd_footheight_dim]}\g_ptxcd_poster_qrcode_tl + }; + \coordinate (lastpos) at (qrcode.south~west); + } + \box_if_empty:NF \g_ptxcd_footergraphics_box { + \node[anchor=south~east, inner~sep=\z@] at (lastpos) { + \accentfont + \box_use:N \g_ptxcd_footergraphics_box + }; + } + \node[anchor=north~ west, inner~ sep=\z@] (infofooter) at ([yshift=\g_ptxcd_footheight_dim]bottomleft) { + \parbox{\dim_eval:n {\contentwidth + -\box_wd:N \g_ptxcd_footergraphics_box + \tl_if_empty:NF \g_ptxcd_poster_qrcode_tl {-\g_ptxcd_footheight_dim-\c_ptxcd_rulesep_dim} + }}{ + \rule{\linewidth}{.5\c_ptxcd_smallrule_dim}\\ + \accentfont\small\g_ptxcd_poster_foot_tl + \par\medskip + \let\footnotetext\ptxcd_title@footnote + \g_ptxcd_thanks_tl} + }; } - \hook_gput_code:nnn {ptxcd/init-colors} {tudasciposter} { - \bool_if:NTF \g_ptxcd_colorback_bool - {\colorlet{titlefgcolor}{textonaccentcolor}} - {\colorlet{titlefgcolor}{black}} - \colorlet{titlebgcolor}{accentcolor} - % Block Colors - \colorlet{blocktitlebgcolor}{accentcolor} - \colorlet{blocktitlefgcolor}{textonaccentcolor} - % Innerblock Colors - \colorlet{innerblockbodybgcolor}{textonaccentcolor} +\bool_if:NTF \g_ptxcd_colorback_bool +{\colorlet{titlefgcolor}{textonaccentcolor}} +{\colorlet{titlefgcolor}{black}} +\colorlet{titlebgcolor}{accentcolor} +\colorlet{blocktitlebgcolor}{accentcolor} +\colorlet{blocktitlefgcolor}{textonaccentcolor} +\colorlet{innerblockbodybgcolor}{textonaccentcolor} } -% Background Colors \colorlet{backgroundcolor}{white} \colorlet{framecolor}{white} -% Block Colors \colorlet{blockbodybgcolor}{white} \colorlet{blockbodyfgcolor}{black} -% Innerblock Colors \colorlet{innerblocktitlebgcolor}{black!15} \colorlet{innerblocktitlefgcolor}{black} \colorlet{innerblockbodyfgcolor}{black} - \dim_new:N \g_ptxcd_titleblock_dim \dim_new:N \g_ptxcd_titleindent_dim - \cs_new:Nn \__ptxcd_inst:n {\textsuperscript{#1}} - \cs_new:Nn \ptxcd_poster_setup_title_box: { - \hbox_gset:Nn \g_ptxcd_title_box { - \parbox{.65\paperwidth}{ - \raggedright - \usekomafont{disposition}\usekomafont{title}\leavevmode\@title \par - } - } - \hbox_gset:Nn \g_ptxcd_author_box { - \parbox{\dimexpr\contentwidth-6\c_ptxcd_rulesep_dim\relax}{ - \ptxcd_def_footnotelabel: - \cs_set_eq:NN \inst\__ptxcd_inst:n - {\usekomafont{author}\@author\\} - \tl_gset:No \g_ptxcd_thanks_tl {\@thanks} - \@institute - } - } - \tl_if_empty:NF \@titlegraphic { - \hbox_gset:Nn \g_ptxcd_titlegraphic_box { - \parbox{\__ptxcd_logowidth:}{ - \raggedleft - \@titlegraphic - } - } - } - \dim_gset:Nn \g_ptxcd_titleblock_dim { - \dim_max:nn - { - +\box_ht:N \g_ptxcd_titlegraphic_box +\box_dp:N \g_ptxcd_titlegraphic_box+ 2\c_ptxcd_logoheight_dim - } - {\box_ht:N \g_ptxcd_title_box+ \box_dp:N \g_ptxcd_title_box+\c_ptxcd_logoheight_dim} - } + \hbox_gset:Nn \g_ptxcd_title_box { + \parbox{.65\paperwidth}{ + \raggedright + \usekomafont{disposition}\usekomafont{title}\leavevmode\@title \par + } + } + \hbox_gset:Nn \g_ptxcd_author_box { + \parbox{\dimexpr\contentwidth-6\c_ptxcd_rulesep_dim\relax}{ + \ptxcd_def_footnotelabel: + \cs_set_eq:NN \inst\__ptxcd_inst:n + {\usekomafont{author}\@author\\} + \tl_gset:No \g_ptxcd_thanks_tl {\@thanks} + \@institute + } + } + \tl_if_empty:NF \@titlegraphic { + \hbox_gset:Nn \g_ptxcd_titlegraphic_box { + \parbox{\__ptxcd_logowidth:}{ + \raggedleft + \@titlegraphic + } + } + } + \dim_gset:Nn \g_ptxcd_titleblock_dim { + \dim_max:nn + { + +\box_ht:N \g_ptxcd_titlegraphic_box +\box_dp:N \g_ptxcd_titlegraphic_box+ 2\c_ptxcd_logoheight_dim + } + {\box_ht:N \g_ptxcd_title_box+ \box_dp:N \g_ptxcd_title_box+\c_ptxcd_logoheight_dim} + } } - -%%%%%%%%%%%%%%%%%%%%%% -%Declare TCBstyles for tudaposter \tcbset { - TUDa/.style = - { - enhanced, - coltitle=black, - colbacktitle=white, - coltext=black, - colback=white, - size=minimal, - boxrule=.5\c_ptxcd_smallrule_dim, - leftrule=\z@, - rightrule=\z@, - fonttitle=\usekomafont{disposition}\usekomafont{section}, - before~title={\strut}, - toptitle=.5\c_ptxcd_rulesep_dim, - bottomtitle=.5\c_ptxcd_rulesep_dim, - top=\c_ptxcd_rulesep_dim, - bottom=\c_ptxcd_rulesep_dim, - frame~code={ - \iftcb@hasTitle - \fill[tcbcolframe](frame.north~west)rectangle(title.north~east); - \fill[tcbcolframe](title.south~west)rectangle(interior.north~east); - \else - \fill[tcbcolframe](frame.north~west)rectangle(interior.north~east); - \fi - \fill[tcbcolframe](interior.south~west)rectangle(frame.south~east); - }, - parbox=false, - }, - TUDa-inner/.style = - { - TUDa, - fonttitle=\usekomafont{disposition}\usekomafont{subsubsection} - }, - TUDa-colored/.style = - { - TUDa, - left=.5\c_ptxcd_rulesep_dim, - right=.5\c_ptxcd_rulesep_dim, - colbacktitle=blocktitlebgcolor, - coltitle=blocktitlefgcolor, - colback=blockbodybgcolor, - coltext=blockbodyfgcolor, - fonttitle=\usekomafont{disposition}\usekomafont{section}, - titlerule=\z@, - }, - TUDa-colored-inner/.style = - { - TUDa-colored, - colbacktitle=innerblocktitlebgcolor, - coltitle=innerblocktitlefgcolor, - colback=innerblockbodybgcolor, - coltext=innerblockbodyfgcolor, - fonttitle=\usekomafont{disposition}\usekomafont{subsubsection} - }, - TUDa-boxed/.style = - { - enhanced, - size=minimal, - colbacktitle=blocktitlebgcolor, - coltitle=blocktitlefgcolor, - colback=blockbodybgcolor, - coltext=blockbodyfgcolor, - boxsep=\c_ptxcd_rulesep_dim, - boxrule=.5\c_ptxcd_smallrule_dim, - titlerule=\z@, - arc=1ex, - auto~outer~arc, - fonttitle=\usekomafont{disposition}\usekomafont{section}, - before~title={\strut}, - parbox=false, - }, - TUDa-boxed-inner/.style = - { - TUDa-boxed, - colbacktitle=innerblocktitlebgcolor, - coltitle=innerblocktitlefgcolor, - colback=innerblockbodybgcolor, - coltext=innerblockbodyfgcolor, - sharp~corners, - fonttitle=\usekomafont{disposition}\usekomafont{subsubsection} - }, +TUDa/.style = +{ +enhanced, +coltitle=black, +colbacktitle=white, +coltext=black, +colback=white, +size=minimal, +boxrule=.5\c_ptxcd_smallrule_dim, +leftrule=\z@, +rightrule=\z@, +fonttitle=\usekomafont{disposition}\usekomafont{section}, +before~title={\strut}, +toptitle=.5\c_ptxcd_rulesep_dim, +bottomtitle=.5\c_ptxcd_rulesep_dim, +top=\c_ptxcd_rulesep_dim, +bottom=\c_ptxcd_rulesep_dim, +frame~code={ +\iftcb@hasTitle + \fill[tcbcolframe](frame.north~west)rectangle(title.north~east); + \fill[tcbcolframe](title.south~west)rectangle(interior.north~east); +\else + \fill[tcbcolframe](frame.north~west)rectangle(interior.north~east); +\fi +\fill[tcbcolframe](interior.south~west)rectangle(frame.south~east); +}, +parbox=false, +}, +TUDa-inner/.style = + { + TUDa, + fonttitle=\usekomafont{disposition}\usekomafont{subsubsection} + }, +TUDa-colored/.style = + { + TUDa, + left=.5\c_ptxcd_rulesep_dim, + right=.5\c_ptxcd_rulesep_dim, + colbacktitle=blocktitlebgcolor, + coltitle=blocktitlefgcolor, + colback=blockbodybgcolor, + coltext=blockbodyfgcolor, + fonttitle=\usekomafont{disposition}\usekomafont{section}, + titlerule=\z@, + }, +TUDa-colored-inner/.style = + { + TUDa-colored, + colbacktitle=innerblocktitlebgcolor, + coltitle=innerblocktitlefgcolor, + colback=innerblockbodybgcolor, + coltext=innerblockbodyfgcolor, + fonttitle=\usekomafont{disposition}\usekomafont{subsubsection} + }, +TUDa-boxed/.style = +{ +enhanced, +size=minimal, +colbacktitle=blocktitlebgcolor, +coltitle=blocktitlefgcolor, +colback=blockbodybgcolor, +coltext=blockbodyfgcolor, +boxsep=\c_ptxcd_rulesep_dim, +boxrule=.5\c_ptxcd_smallrule_dim, +titlerule=\z@, +arc=1ex, +auto~outer~arc, +fonttitle=\usekomafont{disposition}\usekomafont{section}, +before~title={\strut}, +parbox=false, +}, +TUDa-boxed-inner/.style = + { + TUDa-boxed, + colbacktitle=innerblocktitlebgcolor, + coltitle=innerblocktitlefgcolor, + colback=innerblockbodybgcolor, + coltext=innerblockbodyfgcolor, + sharp~corners, + fonttitle=\usekomafont{disposition}\usekomafont{subsubsection} + }, } - -%Select default box styles according to style option \tcbposterset{boxes ={\g_ptxcd_boxstyle_tl}, poster={spacing=5cm}} \tcbset{ - every~ box~ on~ layer~ 3/.style={reset,\g_ptxcd_boxstyle_tl -inner}, - every~ box~ on~ layer~ 4/.style={reset,\g_ptxcd_boxstyle_tl -inner}, +every~ box~ on~ layer~ 3/.style={reset,\g_ptxcd_boxstyle_tl -inner}, +every~ box~ on~ layer~ 4/.style={reset,\g_ptxcd_boxstyle_tl -inner}, } - -%Adjust caption indent \setcapindent{1em} - \file_if_exist_input:n {\g__ptxcd_config_prefix_tl\g_ptxcd_department_str.cfg} - \hook_use:n {ptxcd/init-colors} - \ptxcd_makeheadrule[ - width=\paperwidth-2\g_ptxcd_margin_dim, - color=identbarcolor + width=\paperwidth-2\g_ptxcd_margin_dim, + color=identbarcolor ]{ptxcd_headrule} - +\if_bool:N \g_ptxcd_pdfx_bool + \iow_new:N \ptxcd_xmpdata_stream + \tl_new:N \g_ptxcd_xmp_title_tl + \tl_new:N \g_ptxcd_xmp_author_tl + + \cs_if_exist:NF \prop_gput_if_new:Nnx { + \cs_generate_variant:Nn \prop_gput_if_new:Nnn {Nnx} + } + + \cs_if_exist:NF \tl_to_str:V {\cs_generate_variant:Nn \tl_to_str:N {V}} + + \cs_new:Nn \ptxcd_pass_TitleData: { + \iow_open:Nn \ptxcd_xmpdata_stream {\jobname.xmpdata} + \begingroup + \def\newline{} + \def\\{} + \let\thanks\use_none:n + \cs_set:Npn \and {\exp_not:n {\exp_not:N \sep}} + \use:c {Hy@pdfstringtrue} + \tl_gset:Nf \g_ptxcd_xmp_title_tl {\@title} + \prop_gput_if_new:Nnx \g_ptxcd_MetaData_prop {Title} {\tl_to_str:V \g_ptxcd_xmp_title_tl} + \prop_if_in:NnF \g_ptxcd_MetaData_prop {Author} { + \tl_gset:Nx \g_ptxcd_xmp_author_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \sep}} + \tl_gset:Nx \g_ptxcd_xmp_author_tl {\g_ptxcd_xmp_author_tl} + \prop_gput:Nnx \g_ptxcd_MetaData_prop {Author} {\tl_to_str:V \g_ptxcd_xmp_author_tl} + } + \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Publisher}{TU~Darmstadt} + \prop_gput_if_new:Nnn \g_ptxcd_MetaData_prop {Creator}{LaTeX~using~TUDa-CI} + \use:c {pdfx@localcommands}%should be held inside group + \prop_map_function:NN \g_ptxcd_MetaData_prop \ptxcd_write_xmp_line:nn + \endgroup + \iow_close:N \ptxcd_xmpdata_stream + \let\ptxcd_pass_TitleData:\relax + } + \cs_new:Nn \ptxcd_write_xmp_line:nn { + \begingroup + \cs_set:Npn \sep {\exp_not:N \sep} + \cs_if_exist:cTF {#1}{ + \iow_now:Nx \ptxcd_xmpdata_stream { + \c_backslash_str #1 {\exp_not:n {#2}} + } + }{ + \msg_error:nnn{tuda-ci} {unknown-metadata} {#1} + } + \endgroup + } + + \prop_new:N \g_ptxcd_MetaData_prop + + \newcommand*{\Metadata}[1]{ + \keyval_parse:NNn \use_none:n \ptxcd_set_metadata_prop:nn + {#1} + } + + \cs_set:Nn \ptxcd_set_metadata_prop:nn { + % Fallback test for older kernels doesn't support mixed case eintries + \cs_if_exist:NTF \text_titlecase_first:n { + \exp_args:NNf \prop_gput:Nnn \g_ptxcd_MetaData_prop {\text_titlecase_first:n {#1}} {#2} + } { + \exp_args:NNx \prop_gput:Nnn \g_ptxcd_MetaData_prop { + \str_uppercase:f {\tl_head:n {#1}} + \str_lowercase:f {\tl_tail:n {#1}} + } {#2} + } + } + \msg_new:nnnn{tuda-ci} {unknown-metadata} { + You~ used~ the~ #1~ metadata~ entry.\\ + I~ don't~ know~ how~ to~ handle~ that.\\ + It~ will~ be~ ignored. + } {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.} +\else: + \hypersetup{pdfcreator=LaTeX~using~TUDa-CI} + \msg_new:nnnn {tuda-ci} {metadata-to-hypersetup} { + You~don't~use~pdfx.~ + Here~the~\string\Metadata ~command~only~exists~for~compatibility~reasons.\\ + I~will~pass~the~data~to~ḩypersetup. + }{ + If~possible~please~use~hyperref's~\string\hypersetup~command~for~the~metadata~directly.\\ + See~hyperref~documentation~for~details~on~usage. + } + + \newcommand*{\Metadata}[1]{ + \tl_set:Nn \l_tmpa_tl {#1} + \tl_replace_all:Nnn \l_tmpa_tl {\sep} {;~}% pdfx-Syntax compatibility + \clist_map_inline:Nn \l_tmpa_tl { + \exp_args:Nx \hypersetup{pdf\tl_trim_spaces:n {##1}} + } + \msg_warning:nn {tuda-ci} {metadata-to-hypersetup} + } + \cs_new:Nn \ptxcd_pass_TitleData: { + \prop_if_exist:NTF \g__pdfmanagement_documentproperties_prop { + \prop_set_eq:NN \l_tmpa_prop \g__pdfmanagement_documentproperties_prop + } { + \prop_set_eq:NN \l_tmpa_prop \g__hyp_documentproperties_prop + } + \prop_if_in:NnF \l_tmpa_prop {hyperref/pdftitle} { + \begingroup + \def\newline{} + \def\\{} + \let\thanks\use_none:n + \tl_gset:Nf \g_tmpa_tl {\@title} + \endgroup + \hypersetup{pdftitle={\tl_to_str:V \g_tmpa_tl}} + } + \prop_if_in:NnF \l_tmpa_prop {hyperref/pdfauthor} { + \begingroup + \def\newline{} + \def\\{} + \let\thanks\use_none:n + \tl_gset:Nx \g_tmpa_tl {\seq_use:Nn \g_ptxcd_author_seq {\exp_not:N \and}} + \tl_gset:Nx \g_tmpa_tl {\g_tmpa_tl } + \endgroup + \hypersetup{pdfauthor=\g_tmpa_tl} + } + } + \bool_if:NF \g_ptxcd_pdfa_bool { + \msg_new:nnn{tuda-ci} {no-pdfa}{The~ tuda\c__ptxcd_base_str\space class~ will~ not~ create~ PDF/A.} + \msg_info:nn{tuda-ci} {no-pdfa} + } +\fi: \endinput -%end of tudasciposter.cls +%% +%% End of file `tudasciposter.cls'. diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo b/Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo index 4f618069923..4c1733df68e 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudasize9pt.clo @@ -1,46 +1,45 @@ -%% This is file `tudasize9pt.clo' version 3.41 (2024-07-02), +%% +%% This is file `tudasize9pt.clo', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tudasize.dtx (with options: `scrsize,9pt') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ -%% This file is a slightly modified version of scrsize10pt.clo -%% generated with the docstrip utility, extended by scrdocstrip. -%% modified by Marei Peischl <marei@peitex.de> -%% -%% Its original source files were: -%% -%% scrkernel-version.dtx (with options: `clo,10pt') -%% scrkernel-fonts.dtx (with options: `clo,10pt') -%% scrkernel-paragraphs.dtx (with options: `clo,10pt') -%% -%% Copyright (c) 1994-2017 Markus Kohm [komascript at gmx info] -%% -%% The original file was generated from file(s) of the KOMA-Script bundle. -%% https://ctan.org/pkg/koma-script -%% -%% ======================================================================== %% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3 +%% conditions of the LaTeX Project Public License, either version 1.3c %% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% +%% and version 1.3c or later is part of all distributions of LaTeX +%% version 2008/05/04 or later. +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are Marei Peischl <kontakt@peitex.de>. -%% -%% +%% +%% The Current Maintainer of this work is +%% Marei Peischl <tuda-ci@peitex.de> +%% +%% The development repository can be found at +%% https://github.com/tudace/tuda_latex_templates +%% Please use the issue tracker for feedback! +%% +%% ============================================================================ +%% \ProvidesFile{% tudasize9pt.clo% -}[TUDa-CI \space font size class option % - (9pt)% +}[ + TUDa-CI font size class option (9pt) ] -\def\normalsize{% +\let\normalsize\@undefined +\DeclareRobustCommand\normalsize{% \@setfontsize\normalsize\@ixpt\@xipt% \abovedisplayskip 8\p@ \@plus4\p@ \@minus4\p@ \abovedisplayshortskip \z@ \@plus3\p@ @@ -50,45 +49,55 @@ } \def\datasize{% \normalsize - \@setfontsize\normalsize\@ixpt\@xipt + \@setfontsize\normalsize + \@ixpt\@xipt } -\def\small{% - \@setfontsize\small\@viiipt\@ixpt% - \abovedisplayskip 5\p@ \@plus2\p@ \@minus2\p@ - \abovedisplayshortskip \z@ \@plus1\p@ - \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 3\p@ \@plus\p@ \@minus\p@ - \parsep 2\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep}% - \belowdisplayskip \abovedisplayskip +\let\small\@undefined +\DeclareRobustCommand\small{% +\@setfontsize\small\@viiipt\@ixpt% +\abovedisplayskip 5\p@ \@plus2\p@ \@minus2\p@ +\abovedisplayshortskip \z@ \@plus1\p@ +\belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ +\def\@listi{\leftmargin\leftmargini + \topsep 3\p@ \@plus\p@ \@minus\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip } -\def\footnotesize{% - \@setfontsize\footnotesize\@viipt\@viiipt - \abovedisplayskip 4\p@ \@plus2\p@ \@minus2\p@ - \abovedisplayshortskip \z@ \@plus1\p@ - \belowdisplayshortskip 2.5\p@ \@plus\p@ \@minus\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 3\p@ \@plus\p@ \@minus\p@ - \parsep 2\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep}% - \belowdisplayskip \abovedisplayskip +\let\footnotesize\@undefined +\DeclareRobustCommand\footnotesize{% + \@setfontsize\footnotesize\@viipt\@viiipt + \abovedisplayskip 4\p@ \@plus2\p@ \@minus2\p@ + \abovedisplayshortskip \z@ \@plus1\p@ + \belowdisplayshortskip 2.5\p@ \@plus\p@ \@minus\p@ + \def\@listi{\leftmargin\leftmargini + \topsep 3\p@ \@plus\p@ \@minus\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep}% + \belowdisplayskip \abovedisplayskip } -\def\scriptsize{\@setfontsize\scriptsize\@vipt\@viipt} -\def\tiny{\@setfontsize\tiny\@vpt\@vipt} -\def\large{\@setfontsize\large\@xpt\@xiipt} -\def\Large{\@setfontsize\Large\@xipt{13}} -\def\LARGE{\@setfontsize\LARGE\@xiipt{14}} -\def\huge{\@setfontsize\huge\@xivpt{18}} -\def\Huge{\@setfontsize\Huge\@xviipt{22}} +\let\scriptsize\@undefined +\let\tiny\@undefined +\let\large\@undefined +\let\Large\@undefined +\let\LARGE\@undefined +\let\huge\@undefined +\let\Huge\@undefined +\DeclareRobustCommand\scriptsize{\@setfontsize\scriptsize\@vipt\@viipt} +\DeclareRobustCommand\tiny{\@setfontsize\tiny\@vpt\@vipt} +\DeclareRobustCommand\large{\@setfontsize\large\@xpt\@xiipt} +\DeclareRobustCommand\Large{\@setfontsize\Large\@xipt{13}} +\DeclareRobustCommand\LARGE{\@setfontsize\LARGE\@xiipt{14}} +\DeclareRobustCommand\huge{\@setfontsize\huge\@xivpt{18}} +\DeclareRobustCommand\Huge{\@setfontsize\Huge\@xviipt{22}} \normalsize \setlength\footnotesep {6.3\p@} \setlength{\skip\footins} {8\p@ \@plus 4\p@ \@minus 2\p@} -\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} \setlength\textfloatsep {18\p@ \@plus 2\p@ \@minus 4\p@} +\setlength\dbltextfloatsep{18\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} \setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@} \setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\dbltextfloatsep{18\p@ \@plus 2\p@ \@minus 2\p@} \setlength\@fptop {0\p@ \@plus 1fil} \setlength\@fpsep {8\p@ \@plus 2fil} \setlength\@fpbot {0\p@ \@plus 1fil} @@ -97,33 +106,33 @@ \setlength\@dblfpbot {0\p@ \@plus 1fil} \setlength\partopsep {2\p@ \@plus 1\p@ \@minus 1\p@} \def\@listi{\leftmargin\leftmargini - \parsep 4\p@ \@plus2\p@ \@minus\p@ - \topsep 8\p@ \@plus2\p@ \@minus3\p@ - \itemsep \parsep} + \parsep 4\p@ \@plus2\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus3\p@ + \itemsep \parsep} \let\@listI\@listi \def\@listii {\leftmargin\leftmarginii - \labelwidth\leftmarginii - \advance\labelwidth-\labelsep - \topsep 4\p@ \@plus2\p@ \@minus\p@ - \parsep 2\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep} + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 4\p@ \@plus2\p@ \@minus\p@ + \parsep 2\p@ \@plus\p@ \@minus\p@ + \itemsep \parsep} \def\@listiii{\leftmargin\leftmarginiii - \labelwidth\leftmarginiii - \advance\labelwidth-\labelsep - \topsep 2\p@ \@plus\p@\@minus\p@ - \parsep \z@ - \partopsep \p@ \@plus\z@ \@minus\p@ - \itemsep \topsep} + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 2\p@ \@plus\p@\@minus\p@ + \parsep \z@ + \partopsep \p@ \@plus\z@ \@minus\p@ + \itemsep \topsep} \def\@listiv {\leftmargin\leftmarginiv - \labelwidth\leftmarginiv - \advance\labelwidth-\labelsep} + \labelwidth\leftmarginiv + \advance\labelwidth-\labelsep} \def\@listv {\leftmargin\leftmarginv - \labelwidth\leftmarginv - \advance\labelwidth-\labelsep} + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep} \def\@listvi {\leftmargin\leftmarginvi - \labelwidth\leftmarginvi - \advance\labelwidth-\labelsep} -%%% From File: $Id: scrkernel-paragraphs.dtx 2680 2017-09-28 05:45:12Z kohm $ + \labelwidth\leftmarginvi + \advance\labelwidth-\labelsep} +%%% From File: $Id: scrkernel-paragraphs.dtx 3064 2019-02-01 07:40:28Z kohm $ \@ifundefined{@list@extra}{}{% \expandafter\ifnum\scr@v@is@ge{3.17}\par@updaterelative\fi \l@addto@macro{\@listi}{\@list@extra}% diff --git a/Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg b/Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg index 54ffeeacd0a..43b673d44f0 100644 --- a/Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg +++ b/Master/texmf-dist/tex/latex/tuda-ci/tudathesis.cfg @@ -1,10 +1,18 @@ -%% This is file `tudathesis.cfg' version 3.41 (2024-07-02), +%% +%% This is file `tudathesis.cfg', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% tuda-ci.dtx (with options: `cfg,tudathesis') +%% %% it is part of %% TUDa-CI -- Corporate Design for TU Darmstadt +%% %% ---------------------------------------------------------------------------- -%% -%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de> -%% +%% +%% Copyright (C) 2018--2025 by Marei Peischl <marei@peitex.de> +%% %% ============================================================================ %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3c @@ -13,87 +21,76 @@ %% http://www.latex-project.org/lppl.txt %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. -%% +%% %% This work has the LPPL maintenance status `maintained'. -%% -%% The Current Maintainers of this work are +%% +%% The Current Maintainer of this work is %% Marei Peischl <tuda-ci@peitex.de> -%% -%% The development respository can be found at +%% +%% The development repository can be found at %% https://github.com/tudace/tuda_latex_templates %% Please use the issue tracker for feedback! -%% +%% %% ============================================================================ -%% -\def\fileversion{3.41} -\def\filedate{2024-07-02} -\RequirePackage{expl3} -\ProvidesExplFile{tudathesis.cfg} -{\filedate}{\fileversion}{Special Features for publication type 'thesis' using TU Darmstadt's Corporate Design (tuda-ci)} - -\RequirePackage{l3keys2e} - - +%% \tl_new:N \g_ptxcd_thesis_drtext_tl \clist_if_exist:NF \g_ptxcd_Required_title_data_clist {\clist_new:N \g_ptxcd_Required_title_data_clist} -%Declare macros for department \cs_new:Nn \ptxcd_select_department:n { - \str_case:nnTF {#1} { - {arch} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Architektur} {Architecture}} - {bauing} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Bau-~und~Umweltingenieurwissenschaften}{Civil~and~Environmental~Engineering}} - {bio} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Biologie}{Biology}} - {chem} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Chemie}{Chemistry}} - {etit} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Elektrotechnik~und~Informationstechnik}{Electrical~Engineering~and~Information~Technology}} - {gugw} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Gesellschafts-~und~Geschichtswissenschaften}{History~and~Social~Sciences}} - {humanw} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Humanwissenschaften}{Human~Sciences}} - {inf} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Informatik}{Computer~Science}} - {mb} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Maschinenbau}{Mechanical~Engineering}} - {matgeo} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Material-~und~Geowissenschaften}{Materials~and~Earth~Sciences}} - {math} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Mathematik}{Mathematics}} - {phys} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Physik}{Physics}} - {wi} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Rechts-~und~Wirtschaftswissenschaften}{Law~and~Economics}} - } - { - \ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department} - \ptxcd_declare_caption:Nnn \departmentfullname {\departmentname{}~ \ptxcd_department:} { \ptxcd_department:{}~ \text_titlecase:n{\departmentname}} - \ptxcd_declare_caption:Nnn \ptxcd_departmentprefix: {im~ \departmentname}{in~the~\departmentname{}~ of} - \ptxcd_declare_caption:Nnn \ptxcd_in_department {\ptxcd_departmentprefix:{}~\ptxcd_department:}{\ptxcd_departmentprefix:{}~\ptxcd_department:} - } - {\bool_if:NTF \g_ptxcd_dr_bool - { - \msg_warning:nnn{tudapub/thesis} {unrecognized-department} {#1} - \gdef\ptxcd_department:{#1} - \ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department} - } - {\ptxcd_select_studyfield:n {#1}} - } + \str_case:nnTF {#1} { + {arch} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Architektur} {Architecture}} + {bauing} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Bau-~und~Umweltingenieurwissenschaften}{Civil~and~Environmental~Engineering}} + {bio} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Biologie}{Biology}} + {chem} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Chemie}{Chemistry}} + {etit} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Elektrotechnik~und~Informationstechnik}{Electrical~Engineering~and~Information~Technology}} + {gugw} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Gesellschafts-~und~Geschichtswissenschaften}{History~and~Social~Sciences}} + {humanw} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Humanwissenschaften}{Human~Sciences}} + {inf} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Informatik}{Computer~Science}} + {mb} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Maschinenbau}{Mechanical~Engineering}} + {matgeo} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Material-~und~Geowissenschaften}{Materials~and~Earth~Sciences}} + {math} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Mathematik}{Mathematics}} + {phys} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Physik}{Physics}} + {wi} {\ptxcd_declare_caption:Nnn \ptxcd_department: {Rechts-~und~Wirtschaftswissenschaften}{Law~and~Economics}} + } + { + \ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department} + \ptxcd_declare_caption:Nnn \departmentfullname {\departmentname{}~ \ptxcd_department:} { \ptxcd_department:{}~ \text_titlecase:n{\departmentname}} + \ptxcd_declare_caption:Nnn \ptxcd_departmentprefix: {im~ \departmentname}{in~the~\departmentname{}~ of} + \ptxcd_declare_caption:Nnn \ptxcd_in_department {\ptxcd_departmentprefix:{}~\ptxcd_department:}{\ptxcd_departmentprefix:{}~\ptxcd_department:} + } + {\bool_if:NTF \g_ptxcd_dr_bool + { + \msg_warning:nnn{tudapub/thesis} {unrecognized-department} {#1} + \gdef\ptxcd_department:{#1} + \ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department} + } + {\ptxcd_select_studyfield:n {#1}} + } } - \cs_new:Nn \ptxcd_select_studyfield:n { - \str_case:nnTF {#1} { - {ce}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Computational\nobreakspace Engineering}{Computational\nobreakspace Engineering}} - {ese}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Energy~Science~and~Engineering}{Energy~Science~and~Engineering}} - {ist}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Informationssystemtechnik} {Information~Systems~Technology}} - {mech}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Mechanik}{Mechanics}} - {metro}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Mechatronik}{Mechatronics}} - } - { - \ptxcd_declare_caption:Nnn \departmentname {Studienbereich} {field~of~study} - \ptxcd_declare_caption:Nnn \departmentfullname {\departmentname{}~ \ptxcd_department:} {\departmentname{}:~\ptxcd_department:} - \ptxcd_declare_caption:Nnn \ptxcd_departmentprefix: {im~ \departmentname}{in~the~\departmentname} - \ptxcd_declare_caption:Nnn \ptxcd_in_department {\ptxcd_departmentprefix:{}~\ptxcd_department:} {\ptxcd_departmentprefix:{}~``\ptxcd_department:''} - } - { - \msg_warning:nnn{tudapub/thesis} {unrecognized-department} {#1} - \gdef\ptxcd_department:{#1} - \ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department} - } + \str_case:nnTF {#1} { + {ce}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Computational\nobreakspace Engineering}{Computational\nobreakspace Engineering}} + {ese}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Energy~Science~and~Engineering}{Energy~Science~and~Engineering}} + {ist}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Informationssystemtechnik} {Information~Systems~Technology}} + {mech}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Mechanik}{Mechanics}} + {metro}{\ptxcd_declare_caption:Nnn \ptxcd_department: {Mechatronik}{Mechatronics}} + } + { + \ptxcd_declare_caption:Nnn \departmentname {Studienbereich} {field~of~study} + \ptxcd_declare_caption:Nnn \departmentfullname {\departmentname{}~ \ptxcd_department:} {\departmentname{}:~\ptxcd_department:} + \ptxcd_declare_caption:Nnn \ptxcd_departmentprefix: {im~ \departmentname}{in~the~\departmentname} + \ptxcd_declare_caption:Nnn \ptxcd_in_department {\ptxcd_departmentprefix:{}~\ptxcd_department:} {\ptxcd_departmentprefix:{}~``\ptxcd_department:''} + } + { + \msg_warning:nnn{tudapub/thesis} {unrecognized-department} {#1} + \gdef\ptxcd_department:{#1} + \ptxcd_declare_caption:Nnn \departmentname {Fachbereich} {department} + } } \cs_new:Nn \ptxcd_insert_studentID:n { - (\ptxcd_studentIDname :\nobreakspace#1) + (\ptxcd_studentIDname :\nobreakspace#1) } \ptxcd_declare_caption:Nnn \ptxcd_byname {von} {by} @@ -104,7 +101,6 @@ \ptxcd_declare_caption:Nnn \ptxcd_submissiondatename {Tag~ der~ Einreichung}{Date~ of~ submission} \ptxcd_declare_caption:Nnn \ptxcd_studentIDname {Matrikelnummer} {Student\nobreakspace ID} -%Fallback content for box if not overwritten \newcommand*\ptxcd_box_department {\cs_if_exist_use:NF \departmentfullname {\ptxcd_department:}} \newcommand*\ptxcd_in_department {} \newcommand*{\ptxcd_thesisStatus}{} @@ -112,52 +108,49 @@ \def\@ThesisTypeArticle{die} \keys_define:nn {ptxcd/thesis} { - dr .choice:, - dr/rernat .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~Grades~eines~Doktors~der~Naturwissenschaften~(Dr.\,rer.\,nat.)}, - dr/ing .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~akademischen~Grades~Doktor-Ingenieur~(Dr.-Ing.)}, - dr/phil .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~Grades~eines~Doktor~der~Philosophie~(Dr.\,phil.)}, - dr/rerpol .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~Grades~eines~Doctor~rerum~politicarum (Dr. rer. pol.)}, - type .choice:, - type/sta .code:n = {\def\ptxcd_thesisType{Studienarbeit} - \clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, date} - \bool_gset_false:N \g_ptxcd_dr_bool - }, -% type/diplom .code:n = {\def\ptxcd_thesisType{Diplomarbeit}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate, reviewer, department}}, - type/bsc .meta:n = {type=bachelor}, - type/bachelor .code:n = {\ptxcd_declare_caption:Nnn \ptxcd_thesisType{Bachelorarbeit}{bachelor~ thesis}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate, department, reviewer}\bool_gset_false:N \g_ptxcd_dr_bool}, - type/pp .code:n = { \ptxcd_declare_caption:Nnn \ptxcd_thesisType {Project-Proposal}{project~ proposal}\def\@ThesisTypeArticle{das}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, date, department}\bool_gset_false:N \g_ptxcd_dr_bool}, - type/msc .meta:n = {type=master}, - type/master .code:n = \ptxcd_declare_caption:Nnn \ptxcd_thesisType{Masterarbeit}{master~ thesis}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate, department, reviewer}\bool_gset_false:N \g_ptxcd_dr_bool, - type/dr .code:n = \ptxcd_declare_caption:Nnn \ptxcd_thesisType{Dissertation}{doctoral~ thesis}\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus{vorgelegte}{submitted}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate , birthplace, department, reviewer}\bool_gset_true:N \g_ptxcd_dr_bool, - type/drfinal .code:n = \ptxcd_declare_caption:Nnn \ptxcd_thesisType {Dissertation}{doctoral~ thesis}\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus{genehmigte}{accepted}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate,examdate, birthplace, department, reviewer}\bool_gset_true:N \g_ptxcd_dr_bool, - type/unknown .code:n = \def\ptxcd_thesisType{#1}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {}\def\@ThesisTypeArticle{die}\bool_gset_false:N \g_ptxcd_dr_bool, - ignore-missing-data .bool_gset:N = \g_ptxcd_missing_data_warning_bool, - ignore-missing-data .initial:n = false, - department .tl_gset:N = \g_ptxcd_department_choice_tl, - status .code:n = \tl_if_head_is_group:nTF {#1} {\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus #1 {}} {\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus{#1}{#1}}, - fieldofstudy .meta:n ={department = #1}, - ignore-title-language .bool_gset:N = \g_ptxcd_ignore_title_language_bool, - ignore-title-language .initial:n ={false}, - noinstbox .bool_gset:N = \g_ptxcd_manual_info_box_bool, - instbox .bool_gset_inverse:N = \g_ptxcd_manual_info_box_bool, - instbox .initial:n = true, - reviewer-on-uppertitleback .bool_gset:N = \g__ptxcd_reviewer_on_uppertitleback_bool, - reviewer-on-uppertitleback .initial:n = false, - hide-architecture-note .bool_gset_inverse:N = \g__ptxcd_architecture_note_bool, - hide-architecture-note .initial:n = false, - hide-architecture-note .default:n = true, + dr .choice:, + dr/rernat .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~Grades~eines~Doktors~der~Naturwissenschaften~(Dr.\,rer.\,nat.)}, + dr/ing .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~akademischen~Grades~Doktor-Ingenieur~(Dr.-Ing.)}, + dr/phil .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~Grades~eines~Doktor~der~Philosophie~(Dr.\,phil.)}, + dr/rerpol .code:n = \tl_gset:Nn \g_ptxcd_thesis_drtext_tl {Zur~Erlangung~des~Grades~eines~Doctor~rerum~politicarum (Dr. rer. pol.)}, + type .choice:, + type/sta .code:n = {\def\ptxcd_thesisType{Studienarbeit} + \clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, date} + \bool_gset_false:N \g_ptxcd_dr_bool + }, + type/bsc .meta:n = {type=bachelor}, + type/bachelor .code:n = {\ptxcd_declare_caption:Nnn \ptxcd_thesisType{Bachelorarbeit}{bachelor~ thesis}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate, department, reviewer}\bool_gset_false:N \g_ptxcd_dr_bool}, + type/pp .code:n = { \ptxcd_declare_caption:Nnn \ptxcd_thesisType {Project-Proposal}{project~ proposal}\def\@ThesisTypeArticle{das}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, date, department}\bool_gset_false:N \g_ptxcd_dr_bool}, + type/msc .meta:n = {type=master}, + type/master .code:n = \ptxcd_declare_caption:Nnn \ptxcd_thesisType{Masterarbeit}{master~ thesis}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate, department, reviewer}\bool_gset_false:N \g_ptxcd_dr_bool, + type/dr .code:n = \ptxcd_declare_caption:Nnn \ptxcd_thesisType{Dissertation}{doctoral~ thesis}\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus{vorgelegte}{submitted}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate , department, reviewer}\bool_gset_true:N \g_ptxcd_dr_bool, + type/drfinal .code:n = \ptxcd_declare_caption:Nnn \ptxcd_thesisType {Dissertation}{doctoral~ thesis}\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus{genehmigte}{accepted}\def\@ThesisTypeArticle{die}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {title, author, submissiondate,examdate, department, reviewer}\bool_gset_true:N \g_ptxcd_dr_bool, + type/unknown .code:n = \def\ptxcd_thesisType{#1}\clist_gset:Nn \g_ptxcd_Required_title_data_clist {}\def\@ThesisTypeArticle{die}\bool_gset_false:N \g_ptxcd_dr_bool, + ignore-missing-data .bool_gset:N = \g_ptxcd_missing_data_warning_bool, + ignore-missing-data .initial:n = false, + department .tl_gset:N = \g_ptxcd_department_choice_tl, + status .code:n = \tl_if_head_is_group:nTF {#1} {\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus #1 {}} {\ptxcd_declare_caption:Nnn\ptxcd_thesisStatus{#1}{#1}}, + fieldofstudy .meta:n ={department = #1}, + ignore-title-language .bool_gset:N = \g_ptxcd_ignore_title_language_bool, + ignore-title-language .initial:n ={false}, + noinstbox .bool_gset:N = \g_ptxcd_manual_info_box_bool, + instbox .bool_gset_inverse:N = \g_ptxcd_manual_info_box_bool, + instbox .initial:n = true, + reviewer-on-uppertitleback .bool_gset:N = \g__ptxcd_reviewer_on_uppertitleback_bool, + reviewer-on-uppertitleback .initial:n = false, + hide-architecture-note .bool_gset_inverse:N = \g__ptxcd_architecture_note_bool, + hide-architecture-note .initial:n = false, + hide-architecture-note .default:n = true, } - \prop_map_inline:Nn \g_ptxcd_unknown_clsopts_prop { - \keys_if_exist:nnT {ptxcd/thesis} {#1} { - \keys_set:nn {ptxcd/thesis} {#1=#2} - } + \keys_if_exist:nnT {ptxcd/thesis} {#1} { + \keys_set:nn {ptxcd/thesis} {#1=#2} + } } \tl_if_empty:NF \g_ptxcd_thesis_options_tl {\keys_set:nV {ptxcd/thesis} \g_ptxcd_thesis_options_tl} - \cs_new:Npn \drtext #1 {\tl_gset:Nn \g_ptxcd_thesis_drtext_tl {#1}} \tl_new:N \g_ptxcd_titleintro_tl \cs_new:Npn \titleintro #1 {\tl_gset:Nn \g_ptxcd_titleintro_tl {#1}} @@ -167,28 +160,28 @@ \msg_new:nnnn{tudapub/thesis} {required-data-missing} {You~did~not~provide~#1~data~for~the~title.~Either~provide~it~or~change~your~publication~type.} {See~ the~ TUDa-CI~ documentation~ for~ further~ information~ and~ workarounds.} \cs_new:Nn \ptxcd_missing_title_data:n { - \bool_if:NTF \g_ptxcd_missing_data_warning_bool - \msg_warning:nnn - \msg_error:nnn{tudapub/thesis} {required-data-missing} {#1} + \bool_if:NTF \g_ptxcd_missing_data_warning_bool + \msg_warning:nnn + \msg_error:nnn{tudapub/thesis} {required-data-missing} {#1} } \cs_new:Nn \ptxcd_check_title_data:Nn { - \clist_if_in:NnT \g_ptxcd_Required_title_data_clist {#2} { - \tl_if_empty:NT #1 { - \bool_if:NTF \g_ptxcd_missing_data_warning_bool - {\msg_warning:nnn} - {\msg_error:nnn} {tudapub/thesis} {required-data-missing} {#2} - } - } + \clist_if_in:NnT \g_ptxcd_Required_title_data_clist {#2} { + \tl_if_empty:NT #1 { + \bool_if:NTF \g_ptxcd_missing_data_warning_bool + {\msg_warning:nnn} + {\msg_error:nnn} {tudapub/thesis} {required-data-missing} {#2} + } + } } \cs_generate_variant:Nn \ptxcd_check_title_data:Nn {cn} \renewcommand*\author[2][]{ - \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#2} - \tl_if_empty:nTF {#1} - {\tl_set:Nn \l_ptxcd_signature_tl {#2}} - {\tl_set:Nn \l_ptxcd_signature_tl {#1}} + \seq_gset_split:Nnn \g_ptxcd_author_seq {\and} {#2} + \tl_if_empty:nTF {#1} + {\tl_set:Nn \l_ptxcd_signature_tl {#2}} + {\tl_set:Nn \l_ptxcd_signature_tl {#1}} } \newcommand*{\studentID}[1]{ @@ -198,18 +191,17 @@ \gdef\ptxcd_institution{} \gdef\ptxcd_institute{} \gdef\ptxcd_department:{} -%\gdef\ptxcd_studentID{} \NewDocumentCommand{\department}{som}{% - \IfBooleanTF{#1}{ - \tl_gset:Nn \ptxcd_department: {#3} - \tl_gset:Nn \ptxcd_in_department{#3} - \IfNoValueTF {#2} {\tl_gset:Nn \ptxcd_box_department {#3}} {\tl_gset:Nn \ptxcd_box_department{#2}} - \clist_remove_all:Nn \g_ptxcd_Required_title_data_clist {department} - }{ - \tl_gset:Nn \g_ptxcd_department_choice_tl {#3} - \IfNoValueF {#2} {\tl_gset:Nn \ptxcd_departmentprefix: {#2}} - } + \IfBooleanTF{#1}{ + \tl_gset:Nn \ptxcd_department: {#3} + \tl_gset:Nn \ptxcd_in_department{#3} + \IfNoValueTF {#2} {\tl_gset:Nn \ptxcd_box_department {#3}} {\tl_gset:Nn \ptxcd_box_department{#2}} + \clist_remove_all:Nn \g_ptxcd_Required_title_data_clist {department} + }{ + \tl_gset:Nn \g_ptxcd_department_choice_tl {#3} + \IfNoValueF {#2} {\tl_gset:Nn \ptxcd_departmentprefix: {#2}} + } } \newcommand*{\institute}[1]{ @@ -223,117 +215,115 @@ \gdef\ptxcd_birthplace{} \newcommand*{\birthplace}[1]{% - \bool_if:NTF \g_ptxcd_dr_bool - {\gdef\ptxcd_birthplace{#1}} - {\msg_info:nnn{tudapub/thesis} {dr-field-only} {birthplace}} + \bool_if:NTF \g_ptxcd_dr_bool + {\gdef\ptxcd_birthplace{#1}} + {\msg_info:nnn{tudapub/thesis} {dr-field-only} {birthplace}} } \publishers{Darmstadt\bool_if:NT \g_ptxcd_dr_bool {,~Technische~Universität~Darmstadt}} \seq_new:N \g_ptxcd_reviewer_seq \NewDocumentCommand{\reviewer}{som}{ - \IfNoValueF {#2} { - \IfBooleanTF{#1} - {\setupReviewName*{#2}} - {\setupReviewName{#2}} - } - \tl_if_empty:nTF {#3} - {\let\@reviewer\@empty} - {\seq_gset_split:Nnn \g_ptxcd_reviewer_seq {\and} {#3}} + \IfNoValueF {#2} { + \IfBooleanTF{#1} + {\setupReviewName*{#2}} + {\setupReviewName{#2}} + } + \tl_if_empty:nTF {#3} + {\let\@reviewer\@empty} + {\seq_gset_split:Nnn \g_ptxcd_reviewer_seq {\and} {#3}} } \cs_set:Nn \ptxcd_thesis_print_reviewer: { - \clist_if_in:NnT \g_ptxcd_Required_title_data_clist {reviewer} { - \seq_if_empty:NT \g_ptxcd_reviewer_seq {\ptxcd_missing_title_data:n {reviewer}} - } - \int_zero:N \l_tmpb_int - \par\vspace*{\baselineskip} - { - \seq_map_inline:Nn \g_ptxcd_reviewer_seq - { - \int_incr:N \l_tmpb_int - \cs_if_exist_use:cF {__ptxcd_reviewname_\int_use:N \l_tmpb_int :} - {\int_to_arabic:n {\l_tmpb_int}.~\text_titlecase:n{\ptxcd_reviewname}} - :~\exp_not:n {##1}\\ - } - } + \clist_if_in:NnT \g_ptxcd_Required_title_data_clist {reviewer} { + \seq_if_empty:NT \g_ptxcd_reviewer_seq {\ptxcd_missing_title_data:n {reviewer}} + } + \int_zero:N \l_tmpb_int + \par\vspace*{\baselineskip} + { + \seq_map_inline:Nn \g_ptxcd_reviewer_seq + { + \int_incr:N \l_tmpb_int + \cs_if_exist_use:cF {__ptxcd_reviewname_\int_use:N \l_tmpb_int :} + {\int_to_arabic:n {\l_tmpb_int}.~\text_titlecase:n{\ptxcd_reviewname}} + :~\exp_not:n {##1}\\ + } + } } - \gdef\ptxcd_examdate{} \newcommand*{\examdate}[1]{ - \bool_if:NTF \g_ptxcd_dr_bool - {\gdef\ptxcd_examdate{#1}} - {\msg_info:nnn{tudapub/thesis} {dr-field-only} {examdate}} + \bool_if:NTF \g_ptxcd_dr_bool + {\gdef\ptxcd_examdate{#1}} + {\msg_info:nnn{tudapub/thesis} {dr-field-only} {examdate}} } \gdef\ptxcd_submissiondate{} \newcommand*{\submissiondate}[1]{ - \gdef\ptxcd_submissiondate{#1} + \gdef\ptxcd_submissiondate{#1} } \gdef\@date{} \cs_new:Nn \ptxcd_thesis_print_dates:n { - \bool_set_false:N \l_tmpa_bool - \tl_if_empty:NF \@date { - \ptxcd_datename\tl_if_empty:NF \ptxcd_datename {\ptxcd_dateseparator}\@date - \bool_set_true:N \l_tmpa_bool - } - \tl_if_empty:NF \ptxcd_submissiondate { - \bool_if:NTF \l_tmpa_bool {#1} {\bool_set_true:N \l_tmpa_bool}\ptxcd_submissiondatename\ptxcd_dateseparator\ptxcd_submissiondate - } - \tl_if_empty:NF \ptxcd_examdate { - \bool_if:NTF \l_tmpa_bool {#1} {\bool_set_true:N \l_tmpa_bool}\ptxcd_examdatename\ptxcd_dateseparator\ptxcd_examdate - } + \bool_set_false:N \l_tmpa_bool + \tl_if_empty:NF \@date { + \ptxcd_datename\tl_if_empty:NF \ptxcd_datename {\ptxcd_dateseparator}\@date + \bool_set_true:N \l_tmpa_bool + } + \tl_if_empty:NF \ptxcd_submissiondate { + \bool_if:NTF \l_tmpa_bool {#1} {\bool_set_true:N \l_tmpa_bool}\ptxcd_submissiondatename\ptxcd_dateseparator\ptxcd_submissiondate + } + \tl_if_empty:NF \ptxcd_examdate { + \bool_if:NTF \l_tmpa_bool {#1} {\bool_set_true:N \l_tmpa_bool}\ptxcd_examdatename\ptxcd_dateseparator\ptxcd_examdate + } } \tl_new:N \g_ptxcd_license_info_tl \keys_define:nn {ptxcd/thesis} { - urn .tl_gset:N =\g_ptxcd_thesis_urn_tl, - urn .initial:V = \c_empty_tl, - printid .tl_gset:N = \g_ptxcd_thesis_tuprints_tl, - printid .initial:V = \c_empty_tl, - doi .tl_gset:N = \g_ptxcd_thesis_doi_tl, - year .tl_gset:N = \g_ptxcd_thesis_publication_year_tl, - year .initial:n = , - license .choices:nn = {cc-by-4.0,cc-by-sa-4.0,cc-by-nc-sa-4.0,cc-by-nc-4.0,cc-by-nd-4.0,cc-by-nc-nd-4.0} { - \tl_gset:Nx \g_ptxcd_license_info_tl {\exp_not:N \g__ptxcd_cc_license:n {\l_keys_choice_tl} \exp_not:N \iflanguage{\exp_not:N \bbl@main@language}{}{\exp_not:n {\par\smallskip\otherlanguage{\bbl@main@language}}{\exp_not:N \g__ptxcd_cc_license:n {\l_keys_choice_tl}}}} - }, - license / cc-by-nc-nd-2.0-de .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {\use:c {g__ptxcd_cc-by-nc-nd-2.0-de:}}, - license / inc-1.0-de .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl { - Die~Veröffentlichung~ist~urheberrechtlich~geschützt\newline - \url{https://rightsstatements.org/page/InC/1.0/} - }, - license / inc-1.0-en .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl { - This~work~is~protected~by~copyright\newline - \url{https://rightsstatements.org/page/InC/1.0/} - }, - license / inc-1.0 .code:n = \tl_if_in:NnTF \languagename {german} {\keys_set:nn {ptxcd/thesis}{license=inc-1.0-de}}{\keys_set:nn {ptxcd/thesis}{license=inc-1.0-en}}, - license / initial .code:n = {\keys_set:nn {ptxcd/thesis} {license=cc-by-4.0}}, - license / unknown .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {#1}, - license .initial:n = initial, - signature .tl_set:N = \l_ptxcd_signature_tl, - studentID .tl_set:N = \l_ptxcd_studentID_tl, - studentID .initial:n =, - signature-image .tl_set:N = \l_ptxcd_signature_image_tl, - signature-image .initial:n =, - signature-location .tl_set:N = \l_ptxcd_signature_location_tl, - signature-location .initial:n = Darmstadt, + urn .tl_gset:N =\g_ptxcd_thesis_urn_tl, + urn .initial:V = \c_empty_tl, + printid .tl_gset:N = \g_ptxcd_thesis_tuprints_tl, + printid .initial:V = \c_empty_tl, + doi .tl_gset:N = \g_ptxcd_thesis_doi_tl, + year .tl_gset:N = \g_ptxcd_thesis_publication_year_tl, + year .initial:n = , + license .choices:nn = {cc-by-4.0,cc-by-sa-4.0,cc-by-nc-sa-4.0,cc-by-nc-4.0,cc-by-nd-4.0,cc-by-nc-nd-4.0} { + \tl_gset:Nx \g_ptxcd_license_info_tl {\exp_not:N \g__ptxcd_cc_license:n {\l_keys_choice_tl} \exp_not:N \iflanguage{\exp_not:N \bbl@main@language}{}{\exp_not:n {\par\smallskip\otherlanguage{\bbl@main@language}}{\exp_not:N \g__ptxcd_cc_license:n {\l_keys_choice_tl}}}} + }, + license / cc-by-nc-nd-2.0-de .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {\use:c {g__ptxcd_cc-by-nc-nd-2.0-de:}}, + license / inc-1.0-de .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl { + Die~Veröffentlichung~ist~urheberrechtlich~geschützt\newline + \url{https://rightsstatements.org/page/InC/1.0/} + }, + license / inc-1.0-en .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl { + This~work~is~protected~by~copyright\newline + \url{https://rightsstatements.org/page/InC/1.0/} + }, + license / inc-1.0 .code:n = \tl_if_in:NnTF \languagename {german} {\keys_set:nn {ptxcd/thesis}{license=inc-1.0-de}}{\keys_set:nn {ptxcd/thesis}{license=inc-1.0-en}}, + license / initial .code:n = {\keys_set:nn {ptxcd/thesis} {license=cc-by-4.0}}, + license / unknown .code:n = \tl_gset:Nn \g_ptxcd_license_info_tl {#1}, + license .initial:n = initial, + signature .tl_set:N = \l_ptxcd_signature_tl, + studentID .tl_set:N = \l_ptxcd_studentID_tl, + studentID .initial:n =, + signature-image .tl_set:N = \l_ptxcd_signature_image_tl, + signature-image .initial:n =, + signature-location .tl_set:N = \l_ptxcd_signature_location_tl, + signature-location .initial:n = Darmstadt, } \msg_new:nnnn {tudapub/thesis} {default-license-will-change} { - TUprints~changed~their~default~license.\\ - tuda-ci~will~adapt~this~change~in~the~next~major~update.~\\ - Please~choose~your~license~manually~to~avoid~unintended~changes. +TUprints~changed~their~default~license.\\ +tuda-ci~will~adapt~this~change~in~the~next~major~update.~\\ +Please~choose~your~license~manually~to~avoid~unintended~changes. } {Use~either~the~old~default~value~license=cc-by-nc-nd-2.0-de or~license=cc-by-4.0~or~license={<custom~text>}~with~\string\tuprints.} - \cs_new:cn {g__ptxcd_cc-by-nc-nd-2.0-de:} { - Die~Veröffentlichung~steht~unter~folgender~Creative~Commons~Lizenz:\\ - Namensnennung~--~Keine~kommerzielle~Nutzung~--~Keine~Bearbeitung~ 2.0~Deutschland\\ - \url{http://creativecommons.org/licenses/by-nc-nd/2.0/de/} + Die~Veröffentlichung~steht~unter~folgender~Creative~Commons~Lizenz:\\ + Namensnennung~--~Keine~kommerzielle~Nutzung~--~Keine~Bearbeitung~ 2.0~Deutschland\\ + \url{https://creativecommons.org/licenses/by-nc-nd/2.0/de/} } \defcaptionname{ngerman, german}{\g__ptxcd_cc_attr_by:}{Namensnennung} @@ -353,68 +343,66 @@ \defcaptionname{english, USenglish, american, UKenglish, british}{\g__ptxcd_cc_sep:}{--} \cs_new:Nn \g__ptxcd_cc_license:n { - \group_begin: - \g__ptxcd_cc_intro:\\ - \seq_set_split:Nnn \l_tmpa_seq {-} {#1} - \bool_set_false:N \l_tmpa_bool - \seq_remove_all:Nn \l_tmpa_seq {cc} - \seq_pop_right:NN \l_tmpa_seq \l_tmpa_tl - \seq_map_inline:Nn \l_tmpa_seq { - \bool_if:NTF \l_tmpa_bool {\g__ptxcd_cc_sep:} {\bool_set_true:N \l_tmpa_bool} - \use:c {g__ptxcd_cc_attr_##1:} - }~\l_tmpa_tl{}~International\\ - \url{https://creativecommons.org/licenses/\seq_use:Nn \l_tmpa_seq {-}/\l_tmpa_tl/} - \group_end: + \group_begin: + \g__ptxcd_cc_intro:\\ + \seq_set_split:Nnn \l_tmpa_seq {-} {#1} + \bool_set_false:N \l_tmpa_bool + \seq_remove_all:Nn \l_tmpa_seq {cc} + \seq_pop_right:NN \l_tmpa_seq \l_tmpa_tl + \seq_map_inline:Nn \l_tmpa_seq { + \bool_if:NTF \l_tmpa_bool {\g__ptxcd_cc_sep:} {\bool_set_true:N \l_tmpa_bool} + \use:c {g__ptxcd_cc_attr_##1:} + }~\l_tmpa_tl{}~International\\ + \url{https://creativecommons.org/licenses/\seq_use:Nn \l_tmpa_seq {-}/\l_tmpa_tl/} + \group_end: } - \newcommand{\tuprints}[1]{% \tl_if_in:nnTF {#1} {=} - {\keys_set:nn {ptxcd/thesis} {#1}} - {\keys_set:nn {ptxcd/thesis} {printid=#1}} + {\keys_set:nn {ptxcd/thesis} {#1}} + {\keys_set:nn {ptxcd/thesis} {printid=#1}} \lowertitleback{ - \urlstyle{same} - \selectlanguage{german} - Bitte~zitieren~Sie~dieses~Dokument~als: + \urlstyle{same} + \selectlanguage{german} + Bitte~zitieren~Sie~dieses~Dokument~als: \tl_if_empty:NF \g_ptxcd_thesis_urn_tl {\\URN:~urn:nbn:de:tuda-tuprints-\g_ptxcd_thesis_urn_tl}\\ URL:~\url{https://tuprints.ulb.tu-darmstadt.de/\g_ptxcd_thesis_tuprints_tl}\\ - \tl_if_empty:NF \g_ptxcd_thesis_doi_tl {DOI:~\url{https://doi.org/\g_ptxcd_thesis_doi_tl}\\} - \tl_if_empty:NF \g_ptxcd_thesis_publication_year_tl {Jahr~der~Veröffentlichung~auf~TUprints:~\g_ptxcd_thesis_publication_year_tl} - \par\vspace{\baselineskip} + \tl_if_empty:NF \g_ptxcd_thesis_doi_tl {DOI:~\url{https://doi.org/\g_ptxcd_thesis_doi_tl}\\} + \tl_if_empty:NF \g_ptxcd_thesis_publication_year_tl {Jahr~der~Veröffentlichung~auf~TUprints:~\g_ptxcd_thesis_publication_year_tl} + \par\vspace{\baselineskip} Dieses~Dokument~wird~bereitgestellt~von~tuprints,\\ E-Publishing-Service~der~TU~Darmstadt\\ \url{https://tuprints.ulb.tu-darmstadt.de}\\ - \url{tuprints@ulb.tu-darmstadt.de}\\[2\baselineskip] - \tl_if_empty:NF \g_ptxcd_license_info_tl {\\[2\baselineskip]\g_ptxcd_license_info_tl} + \url{tuprints@ulb.tu-darmstadt.de}\\[2\baselineskip] + \tl_if_empty:NF \g_ptxcd_license_info_tl {\\[2\baselineskip]\g_ptxcd_license_info_tl} }% } \gdef\@subject{ - \text_titlecase_first:n{\tl_if_empty:NF \ptxcd_thesisStatus {\ptxcd_thesisStatus{}~}\ptxcd_thesisType}~ - \tl_if_empty:NF \ptxcd_in_department {\ptxcd_in_department{}~} - \seq_if_empty:NF \g_ptxcd_author_seq {\ptxcd_byname\nobreakspace\@author} - \tl_if_empty:NF \ptxcd_birthplace {\space\ptxcd_fromname\space\ptxcd_birthplace} - \tl_if_empty:NF \l_ptxcd_studentID_tl {\space\ptxcd_insert_studentID:n {\l_ptxcd_studentID_tl}} + \text_titlecase_first:n{\tl_if_empty:NF \ptxcd_thesisStatus {\ptxcd_thesisStatus{}~}\ptxcd_thesisType}~ + \tl_if_empty:NF \ptxcd_in_department {\ptxcd_in_department{}~} + \seq_if_empty:NF \g_ptxcd_author_seq {\ptxcd_byname\nobreakspace\@author} + \tl_if_empty:NF \ptxcd_birthplace {\space\ptxcd_fromname\space\ptxcd_birthplace} + \tl_if_empty:NF \l_ptxcd_studentID_tl {\space\ptxcd_insert_studentID:n {\l_ptxcd_studentID_tl}} } \uppertitleback{ - \liningnums - \raggedright - \@title\par\@subtitle - \par\vspace*{\baselineskip} - %ignore birthplace on english subject - \let\ptxcd_birthplace\@empty - \@subject - \bool_if:NT \g__ptxcd_reviewer_on_uppertitleback_bool - \ptxcd_thesis_print_reviewer: - \exp_args:Nx \tl_if_empty:nF {\@date\ptxcd_submissiondate}{ - \par\vspace*{\baselineskip} - \ptxcd_thesis_print_dates:n {\\} - } - \tl_if_empty:NF \@publishers { - \par\vspace*{\baselineskip} - \@publishers - } + \liningnums + \raggedright + \@title\par\@subtitle + \par\vspace*{\baselineskip} + \let\ptxcd_birthplace\@empty + \@subject + \bool_if:NT \g__ptxcd_reviewer_on_uppertitleback_bool + \ptxcd_thesis_print_reviewer: + \exp_args:Nx \tl_if_empty:nF {\@date\ptxcd_submissiondate}{ + \par\vspace*{\baselineskip} + \ptxcd_thesis_print_dates:n {\\} + } + \tl_if_empty:NF \@publishers { + \par\vspace*{\baselineskip} + \@publishers + } } %%Studienbereich (field of study): @@ -423,12 +411,6 @@ %%ist - Informationssystemtechnik %%mech - Mechanik %%metro - Mechatronik -% -%{ce}{Computational~Engineering}{Computational~Engineering} -%{ese}{Energy~Science~and~Engineering}{Energy~Science~and~Engineering} -%{ist}{Information~Systems~Engineering}{Information~Systems~Engineering} -%{mech}{Mechanics}{Mechanics} -%{metro}{Mechatronics}{Mechatronics} \defcaptionname{english}{\researchgroupname}{research group} \defcaptionname{ngerman, german}{\researchgroupname}{Fachgebiet} @@ -439,254 +421,254 @@ \box_new:N \g_ptxcd_thesis_institution_box -% The following macro is an adapted version of the corresponding KOMA-Script macro -% Copyright (c) 1994-2019 Markus Kohm [komascript at gmx info] +%% The following macro is an adapted version of the corresponding KOMA-Script macro +%% Copyright (c) 1994-2019 Markus Kohm [komascript at gmx info] \renewcommand*{\maketitle}[1][1]{ - \bool_if:NF \g_ptxcd_ignore_title_language_bool { - \bool_set_false:N \l_tmpa_bool - \clist_map_inline:nn {english, british, ngerman, german} { - \iflanguage{##1} - {\bool_set_true:N \l_tmpa_bool - \clist_map_break:}{} - } - \bool_if:NF \l_tmpa_bool { - \msg_error:nnx{tudapub/thesis} {unsupported-title-language} {\languagename} - } - } - \exp_args:NV \ptxcd_select_department:n \g_ptxcd_department_choice_tl - \clist_map_inline:nn {author, date} { - \ptxcd_check_title_data:cn {@##1} {##1} - } - \clist_map_inline:nn {examdate, birthplace, group, department, institution} { - \ptxcd_check_title_data:cn {TUDa@##1} {##1} - } - \cs_if_exist_use:N \ptxcd_pass_TitleData: - \edef\titlepage@restore{% - \noexpand\endgroup - \noexpand\global\noexpand\@colht\the\@colht - \noexpand\global\noexpand\@colroom\the\@colroom - \noexpand\global\vsize\the\vsize - \noexpand\global\noexpand\@titlepageiscoverpagefalse - \noexpand\let\noexpand\titlepage@restore\noexpand\relax - }% - \ptxcd_disable_marginpar: - \cleardoublepage - \begin{titlepage} - \setcounter{page}{% - #1% - }% - \def\thefootnote{\fnsymbol{footnote}} - \if@titlepageiscoverpage - \begingroup - \topmargin=\dimexpr \coverpagetopmargin-1in\relax - \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax - \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax - \textwidth=\dimexpr - \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax - \textheight=\dimexpr - \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax - \headheight=0pt - \headsep=0pt - \footskip=\baselineskip - \@colht=\textheight - \@colroom=\textheight - \vsize=\textheight - \columnwidth=\textwidth - \hsize=\columnwidth - \linewidth=\hsize - \else - \let\titlepage@restore\relax - \fi - \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative - \ptxcd_setup_sponsor_box: - \hbox_gset:Nn \g_ptxcd_title_box { - \parbox[t]{\linewidth}{ - \begin{minipage}[b]{\bool_if:NT \g__ptxcd_LogoInHead_bool {.75}\linewidth} - \bool_lazy_and:nnT {\g_ptxcd_colorback_bool} {\g_ptxcd_colorbacktitle_bool} {\color{textonaccentcolor}} - \tl_if_empty:NF \@titlehead { - \begin{addmargin}{3mm} - {\usekomafont{titlehead}{\@titlehead\par}} - \end{addmargin} - } - \begin{addmargin}[\dim_eval:n {\box_if_empty:NF \g_ptxcd_PaperID_box {\box_wd:N\g_ptxcd_PaperID_box+.5\c_ptxcd_logoheight_dim} +3mm}]{3mm} - \raggedright - \leavevmode\usekomafont{title} - \expandafter\fontsize\ptxcd_title_fontsize: - \selectfont - \llap{\raisebox{\dimexpr-\height+.5\baselineskip}[0pt][0pt]{\box_use:N \g_ptxcd_PaperID_box}\hspace{.5\c_ptxcd_logoheight_dim}} - \@title\strut - \par - \box_if_empty:NTF \g_ptxcd_PaperID_box - {\vskip0pt} - {\rule{0pt}{.5\c_ptxcd_logoheight_dim}} - \end{addmargin} - \end{minipage}% - \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\color{textonaccentcolor}} - \par\nointerlineskip - \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\vspace{\c_ptxcd_rulesep_dim} - \begin{addmargin}{3mm} - \usekomafont{titleinfo} - \raggedright - \expandafter\fontsize\ptxcd_titleinfo_fontsize: - \selectfont - {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}% - \usekomafont{subject} - \bool_if:NT \g_ptxcd_dr_bool {\selectlanguage{german}} - \tl_if_empty:NF \g_ptxcd_titleintro_tl {\g_ptxcd_titleintro_tl\par} - \tl_if_empty:NF \g_ptxcd_thesis_drtext_tl {\g_ptxcd_thesis_drtext_tl\par} - {% - \usekomafont{author} - \lineskip 0.75em - \@subject - \par - }% - {\usekomafont{date}{\ptxcd_thesis_print_dates:n {,~}\par}}% - \ptxcd_thesis_print_reviewer:\par - {\usekomafont{publishers}{\@publishers \par}}% - \tl_if_empty:NF \g_ptxcd_titleaddendum_tl {\g_ptxcd_titleaddendum_tl\par} - \end{addmargin} - \tl_if_empty:NF \@thanks { - \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont\par - \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par - \begin{addmargin}{3mm} - \let\footnotetext\ptxcd_title@footnote - \@thanks - \end{addmargin} - \par\vspace{-\dp\strutbox} - } - \normalcolor - \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par - } - } - \let\@thanks\@empty - \bool_if:NF \g_ptxcd_manual_info_box_bool { - \exp_args:Nf \tl_if_empty:nF {\ptxcd_institution\ptxcd_department:\ptxcd_institute\ptxcd_group} { - \addTitleBox{ - \setlength{\parskip}{\c_ptxcd_rulesep_dim} - \tl_if_empty:NF \ptxcd_institution {\ptxcd_institution\par} - \tl_if_empty:NF \ptxcd_box_department {\ptxcd_box_department\par} - \tl_if_empty:NF \ptxcd_institute {\ptxcd_institute\par} - \tl_if_empty:NF \ptxcd_group {\ptxcd_group} - }} - } - \ptxcd_adjust_titlepage_style: - \thispagestyle{title.TUDa} - \nointerlineskip\box_use:N \g_ptxcd_title_box - \par - \vfill - \box_if_empty:NTF \g_ptxcd_sponsor_box { - \raisebox{-\c_ptxcd_rulesep_dim}[0pt][0pt]{\rule{\linewidth}{\g_ptxcd_titlerule_dim}} - }{ - \box_use:N \g_ptxcd_sponsor_box - } - \if@twoside - \@tempswatrue - \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax - \else - \ifx\@uppertitleback\@empty - \ifx\@lowertitleback\@empty - \@tempswafalse - \fi - \fi - \fi - \else - \exp_args:Nf \tl_if_empty:nTF {\g_ptxcd_thesis_urn_tl\g_ptxcd_thesis_tuprints_tl} - {\@tempswafalse} - {\@tempswatrue} - \fi - \if@tempswa - \next@tpage - \begin{minipage}[t]{\textwidth} - \@uppertitleback - \end{minipage}\par - \vfill - \begin{minipage}[b]{\textwidth} - \@lowertitleback - \end{minipage}\par - \@thanks\let\@thanks\@empty - \fi - \ifx\@dedication\@empty - \else - \next@tdpage\null\vfill - {\centering\usekomafont{dedication}{\@dedication \par}}% - \vskip \z@ \@plus3fill - \@thanks\let\@thanks\@empty - \cleardoubleemptypage - \fi - \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi - \end{titlepage} - \setcounter{footnote}{0}% - \global\let\and\relax - \cleardoublepage - \ptxcd_restore_typearea: - \aftergroup\ptxcd_restore_typearea: + \bool_if:NF \g_ptxcd_ignore_title_language_bool { + \bool_set_false:N \l_tmpa_bool + \clist_map_inline:nn {english, british, ngerman, german} { + \iflanguage{##1} + {\bool_set_true:N \l_tmpa_bool + \clist_map_break:}{} + } + \bool_if:NF \l_tmpa_bool { + \msg_error:nnx{tudapub/thesis} {unsupported-title-language} {\languagename} + } + } + \exp_args:NV \ptxcd_select_department:n \g_ptxcd_department_choice_tl + \clist_map_inline:nn {author, date} { + \ptxcd_check_title_data:cn {@##1} {##1} + } + \clist_map_inline:nn {examdate, birthplace, group, department, institution} { + \ptxcd_check_title_data:cn {TUDa@##1} {##1} + } + \cs_if_exist_use:N \ptxcd_pass_TitleData: + \edef\titlepage@restore{% + \noexpand\endgroup + \noexpand\global\noexpand\@colht\the\@colht + \noexpand\global\noexpand\@colroom\the\@colroom + \noexpand\global\vsize\the\vsize + \noexpand\global\noexpand\@titlepageiscoverpagefalse + \noexpand\let\noexpand\titlepage@restore\noexpand\relax + }% + \ptxcd_disable_marginpar: + \cleardoublepage + \begin{titlepage} + \setcounter{page}{% + #1% + }% + \def\thefootnote{\fnsymbol{footnote}} + \if@titlepageiscoverpage + \begingroup + \topmargin=\dimexpr \coverpagetopmargin-1in\relax + \oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax + \evensidemargin=\dimexpr \coverpageleftmargin-1in\relax + \textwidth=\dimexpr + \paperwidth-\coverpageleftmargin-\coverpagerightmargin\relax + \textheight=\dimexpr + \paperheight-\coverpagetopmargin-\coverpagebottommargin\relax + \headheight=0pt + \headsep=0pt + \footskip=\baselineskip + \@colht=\textheight + \@colroom=\textheight + \vsize=\textheight + \columnwidth=\textwidth + \hsize=\columnwidth + \linewidth=\hsize + \else + \let\titlepage@restore\relax + \fi + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \ptxcd_setup_sponsor_box: + \hbox_gset:Nn \g_ptxcd_title_box { + \parbox[t]{\linewidth}{ + \begin{minipage}[b]{\bool_if:NT \g__ptxcd_logo_head_bool {.75}\linewidth} + \bool_lazy_and:nnT {\g_ptxcd_colorback_bool} {\g_ptxcd_colorbacktitle_bool} {\color{textonaccentcolor}} + \tl_if_empty:NF \@titlehead { + \begin{addmargin}{3mm} + {\usekomafont{titlehead}{\@titlehead\par}} + \end{addmargin} + } + \begin{addmargin}[\dim_eval:n {\box_if_empty:NF \g_ptxcd_PaperID_box {\box_wd:N\g_ptxcd_PaperID_box+.5\c_ptxcd_logoheight_dim} +3mm}]{3mm} + \raggedright + \leavevmode\usekomafont{title} + \expandafter\fontsize\ptxcd_title_fontsize: + \selectfont + \llap{\raisebox{\dimexpr-\height+.5\baselineskip}[0pt][0pt]{\box_use:N \g_ptxcd_PaperID_box}\hspace{.5\c_ptxcd_logoheight_dim}} + \@title\strut + \par + \box_if_empty:NTF \g_ptxcd_PaperID_box + {\vskip0pt} + {\rule{0pt}{.5\c_ptxcd_logoheight_dim}} + \end{addmargin} + \end{minipage}% + \bool_if:NT \g_ptxcd_colorbacksubtitle_bool {\color{textonaccentcolor}} + \par\nointerlineskip + \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par\vspace{\c_ptxcd_rulesep_dim} + \begin{addmargin}{3mm} + \usekomafont{titleinfo} + \raggedright + \expandafter\fontsize\ptxcd_titleinfo_fontsize: + \selectfont + {\ifx\@subtitle\@empty\else\usekomafont{subtitle}{\@subtitle\par}\fi}% + \usekomafont{subject} + \bool_if:NT \g_ptxcd_dr_bool {\selectlanguage{german}} + \tl_if_empty:NF \g_ptxcd_titleintro_tl {\g_ptxcd_titleintro_tl\par} + \tl_if_empty:NF \g_ptxcd_thesis_drtext_tl {\g_ptxcd_thesis_drtext_tl\par} + {% + \usekomafont{author} + \lineskip 0.75em + \@subject + \par + }% + {\usekomafont{date}{\ptxcd_thesis_print_dates:n {,~}\par}}% + \ptxcd_thesis_print_reviewer:\par + {\usekomafont{publishers}{\@publishers \par}}% + \tl_if_empty:NF \g_ptxcd_titleaddendum_tl {\g_ptxcd_titleaddendum_tl\par} + \end{addmargin} + \tl_if_empty:NF \@thanks { + \expandafter\fontsize\ptxcd_titlethanks_fontsize:\selectfont\par + \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par + \begin{addmargin}{3mm} + \let\footnotetext\ptxcd_title@footnote + \@thanks + \end{addmargin} + \par\vspace{-\dp\strutbox} + } + \normalcolor + \rule{\linewidth}{\g_ptxcd_titlerule_dim}\par + } + } + \let\@thanks\@empty + \bool_if:NF \g_ptxcd_manual_info_box_bool { + \exp_args:Nf \tl_if_empty:nF {\ptxcd_institution\ptxcd_department:\ptxcd_institute\ptxcd_group} { + \addTitleBox{ + \setlength{\parskip}{\c_ptxcd_rulesep_dim} + \tl_if_empty:NF \ptxcd_institution {\ptxcd_institution\par} + \tl_if_empty:NF \ptxcd_box_department {\ptxcd_box_department\par} + \tl_if_empty:NF \ptxcd_institute {\ptxcd_institute\par} + \tl_if_empty:NF \ptxcd_group {\ptxcd_group} + }} + } + \ptxcd_adjust_titlepage_style: + \thispagestyle{title.TUDa} + \nointerlineskip\box_use:N \g_ptxcd_title_box + \par + \vfill + \box_if_empty:NTF \g_ptxcd_sponsor_box { + \raisebox{-\c_ptxcd_rulesep_dim}[0pt][0pt]{\rule{\linewidth}{\g_ptxcd_titlerule_dim}} + }{ + \box_use:N \g_ptxcd_sponsor_box + } + \if@twoside + \@tempswatrue + \expandafter\ifnum \@nameuse{scr@v@3.12}>\scr@compatibility\relax + \else + \ifx\@uppertitleback\@empty + \ifx\@lowertitleback\@empty + \@tempswafalse + \fi + \fi + \fi + \else + \exp_args:Nf \tl_if_empty:nTF {\g_ptxcd_thesis_urn_tl\g_ptxcd_thesis_tuprints_tl} + {\@tempswafalse} + {\@tempswatrue} + \fi + \if@tempswa + \next@tpage + \begin{minipage}[t]{\textwidth} + \@uppertitleback + \end{minipage}\par + \vfill + \begin{minipage}[b]{\textwidth} + \@lowertitleback + \end{minipage}\par + \@thanks\let\@thanks\@empty + \fi + \ifx\@dedication\@empty + \else + \next@tdpage\null\vfill + {\centering\usekomafont{dedication}{\@dedication \par}}% + \vskip \z@ \@plus3fill + \@thanks\let\@thanks\@empty + \cleardoubleemptypage + \fi + \ifx\titlepage@restore\relax\else\clearpage\titlepage@restore\fi + \end{titlepage} + \setcounter{footnote}{0}% + \global\let\and\relax + \cleardoublepage + \ptxcd_restore_typearea: + \aftergroup\ptxcd_restore_typearea: } \newcommand*{\@ThesisType}{\ptxcd_thesisType} \bool_if:NTF \g_ptxcd_dr_bool { - \keys_define:nn {ptxcd/thesis} { - affidavit .choices:nn = {dr}{\tl_gset_eq:NN \g__ptxcd_affidavit_version_tl \l_keys_choice_tl}, - affidavit / default .meta:n = {affidavit=dr}, - affidavit .initial:n = dr, - } + \keys_define:nn {ptxcd/thesis} { + affidavit .choices:nn = {dr}{\tl_gset_eq:NN \g__ptxcd_affidavit_version_tl \l_keys_choice_tl}, + affidavit / default .meta:n = {affidavit=dr}, + affidavit .initial:n = dr, + } } { - \keys_define:nn {ptxcd/thesis} { - affidavit .choices:nn = {digital,print}{\tl_gset_eq:NN \g__ptxcd_affidavit_version_tl \l_keys_choice_tl}, - affidavit / default .meta:n = {affidavit=digital}, - affidavit .initial:n = default, - } + \keys_define:nn {ptxcd/thesis} { + affidavit .choices:nn = {digital,print}{\tl_gset_eq:NN \g__ptxcd_affidavit_version_tl \l_keys_choice_tl}, + affidavit / default .meta:n = {affidavit=digital}, + affidavit / hide-architecture-note .meta:n = {hide-architecture-note}, + affidavit .initial:n = default, + } } - \NewDocumentCommand{\affidavit}{so}{% - \IfNoValueF {#2} {% - \tl_if_in:nnTF {#2} {=} - {\keys_set:nn {ptxcd/thesis} {#2}} - {\keys_set:nn {ptxcd/thesis} {affidavit=#2}}% - }% - \clearpage -\begin{otherlanguage}{german} - \bool_if:NTF \g_ptxcd_dr_bool { - \g__ptxcd_affidavit_dr_tl - } { - \tl_use:c {g__ptxcd_affidavit_\g__ptxcd_affidavit_version_tl _tl} - } -\par -\bigskip -\AffidavitSignature -\end{otherlanguage} -\IfBooleanF{#1}{\clearpage} + \IfNoValueF {#2} {% + \tl_if_in:nnTF {#2} {=} + {\keys_set:nn {ptxcd/thesis} {#2}} + {\keys_set:nn {ptxcd/thesis} {affidavit=#2}}% + }% + \clearpage + \begin{otherlanguage}{german} + \bool_if:NTF \g_ptxcd_dr_bool { + \g__ptxcd_affidavit_dr_tl + } { + \tl_use:c {g__ptxcd_affidavit_\g__ptxcd_affidavit_version_tl _tl} + } + \par + \bigskip + \AffidavitSignature + \end{otherlanguage} + \IfBooleanF{#1}{\clearpage} } \ExplSyntaxOff \expandafter\def\csname g__ptxcd_affidavit_dr_tl\endcsname {% - \section*{Erklärungen laut Promotionsordnung} - \subsection*{\S\,8 Abs. 1 lit. d PromO} - Ich versichere hiermit, dass zu einem vorherigen Zeitpunkt noch keine Promotion versucht wurde. In diesem Fall sind nähere Angaben über Zeitpunkt, Hochschule, Dissertationsthema und Ergebnis dieses Versuchs mitzuteilen. + \section*{Erklärungen laut Promotionsordnung} + \subsection*{\S\,8 Abs. 1 lit. d PromO} + Ich versichere hiermit, dass zu einem vorherigen Zeitpunkt noch keine Promotion versucht wurde. In diesem Fall sind nähere Angaben über Zeitpunkt, Hochschule, Dissertationsthema und Ergebnis dieses Versuchs mitzuteilen. - \subsection*{\S\,9 Abs. 1 PromO} - Ich versichere hiermit, dass die vorliegende Dissertation – abgesehen von den in ihr ausdrücklich genannten Hilfen – selbstständig verfasst wurde und dass die „Grundsätze zur Sicherung guter wissenschaftlicher Praxis an der Technischen Universität Darmstadt“ und die „Leitlinien zum Umgang mit digitalen Forschungsdaten an der TU Darmstadt“ in den jeweils aktuellen Versionen bei der Verfassung der Dissertation beachtet wurden. + \subsection*{\S\,9 Abs. 1 PromO} + Ich versichere hiermit, dass die vorliegende Dissertation – abgesehen von den in ihr ausdrücklich genannten Hilfen – selbstständig verfasst wurde und dass die „Grundsätze zur Sicherung guter wissenschaftlicher Praxis an der Technischen Universität Darmstadt“ und die „Leitlinien zum Umgang mit digitalen Forschungsdaten an der TU Darmstadt“ in den jeweils aktuellen Versionen bei der Verfassung der Dissertation beachtet wurden. - \subsection*{\S\,9 Abs. 2 PromO} - Die Arbeit hat bisher noch nicht zu Prüfungszwecken gedient. + \subsection*{\S\,9 Abs. 2 PromO} + Die Arbeit hat bisher noch nicht zu Prüfungszwecken gedient. } -% Quelle: https://www.tu-darmstadt.de/studieren/studierende_tu/studienorganisation_und_tucan/hilfe_und_faq/artikel_details_de_en_37824.de.jsp +%% Quelle: https://www.tu-darmstadt.de/studieren/studierende_tu/studienorganisation_und_tucan/hilfe_und_faq/artikel_details_de_en_37824.de.jsp \expandafter\def\csname g__ptxcd_affidavit_digital_tl\endcsname {% - \subsection*{Erklärung zur Abschlussarbeit gemäß \S\,22~Abs.~7~APB TU~Darmstadt} - \begin{sloppypar}% - Hiermit erkläre ich, \@author, dass ich die vorliegende Arbeit gemäß \S\,22~Abs.~7~APB der TU Darmstadt selbstständig, ohne Hilfe Dritter und nur mit den angegebenen Quellen und Hilfsmitteln angefertigt habe. - Ich habe mit Ausnahme der zitierten Literatur und anderer in der Arbeit genannter Quellen keine fremden Hilfsmittel benutzt. Die von mir bei der Anfertigung dieser wissenschaftlichen Arbeit wörtlich oder inhaltlich benutzte Literatur und alle anderen Quellen habe ich im Text deutlich gekennzeichnet und gesondert aufgeführt. Dies gilt auch für Quellen oder Hilfsmittel aus dem Internet. - \end{sloppypar}% - \par - Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen. - \par - Mir ist bekannt, dass im Falle eines Plagiats (\S\,38~Abs.~2 ~APB) ein Täuschungsversuch vorliegt, der dazu führt, dass die Arbeit mit 5,0 bewertet und damit ein Prüfungsversuch verbraucht wird. Abschlussarbeiten dürfen nur einmal wiederholt werden. - \csname bool_if:cT\endcsname {g__ptxcd_architecture_note_bool} {% - \par - Bei einer Thesis des Fachbereichs Architektur entspricht die eingereichte elektronische Fassung dem vorgestellten Modell und den vorgelegten Plänen. - } + \subsection*{Erklärung zur Abschlussarbeit gemäß \S\,22~Abs.~7~APB TU~Darmstadt} + \begin{sloppypar}% + Hiermit erkläre ich, \@author, dass ich die vorliegende Arbeit gemäß \S\,22~Abs.~7~APB der TU Darmstadt selbstständig, ohne Hilfe Dritter und nur mit den angegebenen Quellen und Hilfsmitteln angefertigt habe. + Ich habe mit Ausnahme der zitierten Literatur und anderer in der Arbeit genannter Quellen keine fremden Hilfsmittel benutzt. Die von mir bei der Anfertigung dieser wissenschaftlichen Arbeit wörtlich oder inhaltlich benutzte Literatur und alle anderen Quellen habe ich im Text deutlich gekennzeichnet und gesondert aufgeführt. Dies gilt auch für Quellen oder Hilfsmittel aus dem Internet. + \end{sloppypar}% + \par + Diese Arbeit hat in gleicher oder ähnlicher Form noch keiner Prüfungsbehörde vorgelegen. + \par + Mir ist bekannt, dass im Falle eines Plagiats (\S\,38~Abs.~2 ~APB) ein Täuschungsversuch vorliegt, der dazu führt, dass die Arbeit mit 5,0 bewertet und damit ein Prüfungsversuch verbraucht wird. Abschlussarbeiten dürfen nur einmal wiederholt werden. + \csname bool_if:cT\endcsname {g__ptxcd_architecture_note_bool} {% + \par + Bei einer Thesis des Fachbereichs Architektur entspricht die eingereichte elektronische Fassung dem vorgestellten Modell und den vorgelegten Plänen. + } } \ExplSyntaxOn @@ -694,93 +676,92 @@ \cs_set_eq:NN \g__ptxcd_affidavit_print_tl \g__ptxcd_affidavit_digital_tl \NewDocumentEnvironment{affidavit*}{om}{ - \IfNoValueF {#1} {\begin{otherlanguage}{#1}} - \section*{#2} -}{ - \IfNoValueF {#1} {\end{otherlanguage}} + \IfNoValueF {#1} {\begin{otherlanguage}{#1}} + \section*{#2} + }{ + \IfNoValueF {#1} {\end{otherlanguage}} } \NewDocumentCommand{\AffidavitSignature}{o}{ - \par - \begingroup - \IfNoValueF {#1} {% - \tl_if_in:nnTF {#1} {=} - {\keys_set:nn {ptxcd/thesis} {#1}} - {\keys_set:nn {ptxcd/thesis} {signature-location=#1}}% - }% - \tl_if_empty:NT \l_ptxcd_signature_image_tl {\bigskip} - \noindent \l_ptxcd_signature_location_tl,~ \ptxcd_submissiondate\hfill - \SignatureBox{\l_ptxcd_signature_tl} - \endgroup - \\\strut + \par + \begingroup + \IfNoValueF {#1} {% + \tl_if_in:nnTF {#1} {=} + {\keys_set:nn {ptxcd/thesis} {#1}} + {\keys_set:nn {ptxcd/thesis} {signature-location=#1}}% + }% + \tl_if_empty:NT \l_ptxcd_signature_image_tl {\bigskip} + \noindent \l_ptxcd_signature_location_tl,~ \ptxcd_submissiondate\hfill + \SignatureBox{\l_ptxcd_signature_tl} + \endgroup + \\\strut } \newcommand*{\SignatureBox}[2][5cm]{\parbox[t]{#1}{\centering - \tl_if_empty:NF \l_ptxcd_signature_image_tl - {\let\width\linewidth\l_ptxcd_signature_image_tl\par\nointerlineskip} - \rule{\linewidth}{.3pt}\\\makebox[0pt][c]{#2}} + \tl_if_empty:NF \l_ptxcd_signature_image_tl + {\let\width\linewidth\l_ptxcd_signature_image_tl\par\nointerlineskip} + \rule{\linewidth}{.3pt}\\\makebox[0pt][c]{#2}} } -%messages: \msg_new:nnn{tudapub/thesis} {dr-field-only} { - You~submitted~#1~data~for~title~information.\\ - This~field~is~only~used~for~type=dr/drfinal.\\ - It~will~be~ignored. + You~submitted~#1~data~for~title~information.\\ + This~field~is~only~used~for~type=dr/drfinal.\\ + It~will~be~ignored. } \msg_new:nnn{tudapub/thesis} {unrecognized-department} { - I~can't~recognize~your~department~#1.\\ - I~will~use~the~string~'#1'~directly.\\ - Ensure~your~department~has~to~shortcut.\\ - See~tudathesis~documentation~for~further~details. + I~can't~recognize~your~department~#1.\\ + I~will~use~the~string~'#1'~directly.\\ + Ensure~your~department~has~to~shortcut.\\ + See~tudathesis~documentation~for~further~details. } -\msg_new:nnnn{tudapub/thesis} {unsupported-title-language} { - You~chose~an~unsupported~language~"#1".\\ - \string\maketitle\ ~ist~not~configured~for~this~language. +\msg_new:nnnn{tudapub/thesis} {unsupported-title-language} { + You~chose~an~unsupported~language~"#1".\\ + \string\maketitle\ ~ist~not~configured~for~this~language. }{ - You~can~manually~configure~it,~as~described~in~tudathesis~documentation.\\ - Use~"ignore-title-language"~Option~to~ignore~this~message~at~your~own~risk. + You~can~manually~configure~it,~as~described~in~tudathesis~documentation.\\ + Use~"ignore-title-language"~Option~to~ignore~this~message~at~your~own~risk. } \PassOptionsToPackage{german}{babel} \AtBeginDocument{ - \@ifpackageloaded{babel}{}{ - \msg_new:nnnn{tudapub/thesis} {missing-babel} { - The~babel~package~is~not~loaded.\\ - Please~load~babel~with~option\\ - main=<main~language~of~your~document>\\ - to~ensure~correct~hyphenation. - }{ - I~will~use~a~workaround~(redefine~\string\otherlanguagen)~to~be~able~to~compile,~but~can't~configure~hyphenation~correctly. - } - \msg_warning:nn {tudapub/thesis} {missing-babel} - \renewenvironment{otherlanguage}[1]{}{} - } -} - -% Fallback mechanism for older l3 kernels + \@ifpackageloaded{babel}{}{ + \msg_new:nnnn{tudapub/thesis} {missing-babel} { + The~babel~package~is~not~loaded.\\ + Please~load~babel~with~option\\ + main=<main~language~of~your~document>\\ + to~ensure~correct~hyphenation. + }{ + I~will~use~a~workaround~(redefine~\string\otherlanguagen)~to~be~able~to~compile,~but~can't~configure~hyphenation~correctly. + } + \msg_warning:nn {tudapub/thesis} {missing-babel} + \renewenvironment{otherlanguage}[1]{}{} + } +} + \cs_if_exist:NF \text_titlecase:n { - \cs_set_eq:NN \text_titlecase:n \tl_mixed_case:n + \cs_set_eq:NN \text_titlecase:n \tl_mixed_case:n } \seq_new:N \g_ptxcd_reviewer_name_seq \NewDocumentCommand{\setupReviewName}{som}{ - \IfBooleanTF {#1} { - \clist_map_inline:nn {#3} { - \int_incr:N \l_tmpb_int - \cs_set:cn {__ptxcd_reviewname_\int_use:N \l_tmpb_int :} {##1} - } - } { - \IfNoValueTF {#2} { - \cs_set:Npn \ptxcd_reviewname {#3} - } { - \ifnum #2 > 0 - \cs_set:cn {__ptxcd_reviewname_#2:} - {#3} - \fi - } - } + \IfBooleanTF {#1} { + \clist_map_inline:nn {#3} { + \int_incr:N \l_tmpb_int + \cs_set:cn {__ptxcd_reviewname_\int_use:N \l_tmpb_int :} {##1} + } + } { + \IfNoValueTF {#2} { + \cs_set:Npn \ptxcd_reviewname {#3} + } { + \ifnum #2 > 0 + \cs_set:cn {__ptxcd_reviewname_#2:} + {#3} + \fi + } + } } - \endinput +%% +%% End of file `tudathesis.cfg'. |