summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2024-04-22 03:00:57 +0000
committerNorbert Preining <norbert@preining.info>2024-04-22 03:00:57 +0000
commita31bd8158f86091f06dabe074c14dd277da57c68 (patch)
treedc1cb56c54b8a7b625d1c5a81948b6c9137da829 /macros
parent3617595995cb2684b6a938dcbb288f658b3f9501 (diff)
CTAN sync 202404220300
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/fontscale/CHANGELOG.md7
-rw-r--r--macros/latex/contrib/fontscale/beery.cls5
-rw-r--r--macros/latex/contrib/fontscale/fontscale-manual.pdfbin131367 -> 117119 bytes
-rw-r--r--macros/latex/contrib/fontscale/fontscale-manual.tex26
-rw-r--r--macros/latex/contrib/fontscale/fontscale.sty147
-rw-r--r--macros/latex/contrib/jsonparse/README.md10
-rw-r--r--macros/latex/contrib/jsonparse/jsonparse-doc.pdfbin386673 -> 394387 bytes
-rw-r--r--macros/latex/contrib/jsonparse/jsonparse-doc.tex167
-rw-r--r--macros/latex/contrib/jsonparse/jsonparse.sty513
-rw-r--r--macros/latex/contrib/tuda-ci/README.md23
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdfbin552288 -> 551881 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdfbin601729 -> 601729 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdfbin556834 -> 561720 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdfbin570532 -> 570474 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdfbin559914 -> 559903 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdfbin567142 -> 567048 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdfbin638055 -> 629331 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdfbin536447 -> 536007 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdfbin662437 -> 662459 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdfbin527922 -> 527518 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdfbin563698 -> 563701 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdfbin627330 -> 625767 bytes
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex4
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex6
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex18
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib6
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex4
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco4
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex6
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex4
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex433
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex4
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex4
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex4
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex4
-rw-r--r--macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex398
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty91
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2008.sty (renamed from macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2023.sty)76
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty41
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2008.sty (renamed from macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2023.sty)40
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty41
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty129
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty377
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty312
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2008.sty306
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2023.sty216
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty10
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty32
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty19
-rw-r--r--macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty29
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudabeamer.cls27
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudacolors.def8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudacolors.sty8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaexercise.cls8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudafonts.sty8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaletter.cls8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo4
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudaposter.cls8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudapub.cls38
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudarules.sty8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudasciposter.cls8
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo4
-rw-r--r--macros/latex/contrib/tuda-ci/tex/tudathesis.cfg28
-rw-r--r--macros/latex/contrib/ufrgscca/README.md5
-rw-r--r--macros/latex/contrib/ufrgscca/doc/ufrgscca.pdfbin593736 -> 594046 bytes
-rw-r--r--macros/latex/contrib/ufrgscca/doc/ufrgscca.tex87
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty10
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def2
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def2
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty36
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty14
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex24
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty10
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty10
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty60
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex54
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty10
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty10
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex2
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex2
-rw-r--r--macros/latex/contrib/ufrgscca/latex/ufrgscca.cls16
-rw-r--r--macros/unicodetex/latex/njuthesis/njuthesis.dtx297
-rw-r--r--macros/unicodetex/latex/njuthesis/njuthesis.pdfbin1261076 -> 1272240 bytes
92 files changed, 2259 insertions, 2145 deletions
diff --git a/macros/latex/contrib/fontscale/CHANGELOG.md b/macros/latex/contrib/fontscale/CHANGELOG.md
index 802fb374ef..304749e825 100644
--- a/macros/latex/contrib/fontscale/CHANGELOG.md
+++ b/macros/latex/contrib/fontscale/CHANGELOG.md
@@ -7,6 +7,13 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v1.2.1] - 2024-04-21
+
+### Changed
+- Improved the error message for `\SetFontStep*` when the current font step is
+ undefined.
+- Documentation improvements.
+
## [v1.2.0] - 2024-04-15
### Added
diff --git a/macros/latex/contrib/fontscale/beery.cls b/macros/latex/contrib/fontscale/beery.cls
index bfc38f9a59..4777c06a8e 100644
--- a/macros/latex/contrib/fontscale/beery.cls
+++ b/macros/latex/contrib/fontscale/beery.cls
@@ -4,13 +4,14 @@
\NeedsTeXFormat{LaTeX2e}[2023-06-01]
\ProvidesExplClass
{beery}
- {2024-04-15}
+ {2024-04-21}
{}
{}
\RequirePackage { fix-cm }
\LoadClass { article }
\RequirePackage { fontscale }
+\fontscalesetup { musical }
\RequirePackage [ list-final-separator = { ,~ and~ } ] { siunitx }
\RequirePackage { mathtools }
\RequirePackage [ shortcuts , allowbreakbefore ] { extdash }
@@ -179,7 +180,7 @@
\NewDocumentCommand \KeepNextPar { s }
{
\par
- \bool_if:NTF #1
+ \IfBooleanTF #1
{ \int_compare:nNnT { \prevgraf } = { 1 } { \nobreak \@afterheading } }
{ \nobreak \@afterheading }
}
diff --git a/macros/latex/contrib/fontscale/fontscale-manual.pdf b/macros/latex/contrib/fontscale/fontscale-manual.pdf
index a1c5644e60..c21ffd29a9 100644
--- a/macros/latex/contrib/fontscale/fontscale-manual.pdf
+++ b/macros/latex/contrib/fontscale/fontscale-manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/fontscale/fontscale-manual.tex b/macros/latex/contrib/fontscale/fontscale-manual.tex
index ca5b3224fd..db839a0fd2 100644
--- a/macros/latex/contrib/fontscale/fontscale-manual.tex
+++ b/macros/latex/contrib/fontscale/fontscale-manual.tex
@@ -13,7 +13,7 @@ A user interface for setting document font sizes
Oliver Beery
-Version 1.2.0\quad{}15 April 2024
+Version 1.2.1\quad{}21 April 2024
\section{Introduction}
@@ -167,13 +167,13 @@ Note that the font steps and the scale of \cs{normalsize} are constants and cann
\Key{\meta{font size command}/scale}[\meta{fp expr}]
\KeepNextPar*
-The keys \Key{\meta{font size command}\slash{}scale} set the scale of \meta{font size command} to \meta{fp expr}, ignoring the value set by the key \Key{typographic-scale}.
+The keys \Key{\meta{font size command}\slash{}scale} set the scale of \meta{font size command} to \meta{fp expr}, ignoring the value set by the key \Key{typographic\-/scale}.
The key \Key{normalsize\slash{}scale} is not defined.
\Key{\meta{font size command}/size}[\meta{dim expr}]
\KeepNextPar*
-The keys \Key{\meta{font size command}\slash{}size} set the size of \meta{font size command} to \meta{dim expr}, ignoring the values set by the keys \Key{typographic-scale} and \Key{\meta{font size command}\slash{}scale}.
+The keys \Key{\meta{font size command}\slash{}size} set the size of \meta{font size command} to \meta{dim expr}, ignoring the values set by the keys \Key{typographic\-/scale} and \Key{\meta{font size command}\slash{}scale}.
\meta{dim expr} supplies a default unit of \unit{pt}.
The package will issue a warning if the user sets the keys \Key{\meta{font size command}\slash{}size} and \Key{\meta{font size command}\slash{}scale} for the same \meta{font size command} since the latter key will be ignored.
@@ -196,7 +196,7 @@ The number before/after the slash is the size/leading in \unit{pts}.
\KeepNextPar*
The user should take care to ensure that the font sizes and font baselineskips remain in the correct order when directly setting the scales, sizes, or baselineskips of the different font size commands.
-The magnitudes of the sizes and baselineskips should be ordered from \cs{tiny} to \cs{normalsize} to \cs{Huge}.
+The magnitudes of the font sizes and font baselineskips should be ordered from \cs{tiny} to \cs{normalsize} to \cs{Huge}.
This is important for typographic and syntactic consistency.
This package will issue a warning if they are not in the correct order.
The user can disable this warning via the key \Key{ignore\-/order}[true] or just \Key{ignore\-/order}.
@@ -218,7 +218,7 @@ The user can disable this warning via the key \Key{ignore\-/order}[true] or just
These are fully expandable commands that expand to the current font step, scale, size, or baselineskip.
They can be used for printing or within calculations.
-Caution: \cs{CurrentFontStep} will expand to nothing if the current step is undefined.
+Caution: \cs{CurrentFontStep} will expand to nothing if the current font step is undefined.
Internally, \cs{CurrentFontStep}, \cs{CurrentFontScale}, and \cs{CurrentFontSize} use the kernel command \cs{f@size}.
\cs{CurrentFontSize} expands to \texttt{f@size pt}.
@@ -243,10 +243,10 @@ Generally, users should prefer the font size commands from \cs{tiny} to \cs{Huge
\cs{SetFontStep} sets the font size by setting the font step to \meta{fp expr}.
The starred version \cs{SetFontStep*} adds \meta{fp expr} to the current font step.
If the choice of typographic scale is not modular or musical, then the only valid values for \meta{fp expr} are the integers from \num{-4} to \num{5}, corresponding to the font size commands from \cs{tiny} to \cs{Huge}.
-\cs{SetFontStep} will issue an error if the step is invalid.
-The starred version \cs{SetFontStep*} will also issue an error if the current step is invalid.
+\cs{SetFontStep} will issue an error if the calculated font step is invalid.
+The starred version \cs{SetFontStep*} will also issue an error if the current font step is invalid.
\cs{SetFontStep} sets the font baselineskip to the calculated font size \texttimes{} \Key{baselineskip\-/size\-/ratio}.
-If the step matches the step of any font size command, then that font size command will be used directly.
+If the calculated font step matches the step of any font size command, then that font size command will be used directly.
\listheading{Examples:}
\begin{itemize}
@@ -277,8 +277,8 @@ If the current font size is \cs{normalsize}, \cs{SetFontScale*}\marg{0.2} is equ
\cs{SetFontSize} sets the font size to \meta{dim expr}.
\meta{dim expr} supplies a default unit of \unit{pt}.
-The font baselineskip is set to the font size \texttimes{} \Key{baselineskip\-/size\-/ratio}.
-The starred version \cs{SetFontSize*} adds \meta{dim expr} to the current size.
+The font baselineskip is set to the calculated font size \texttimes{} \Key{baselineskip\-/size\-/ratio}.
+The starred version \cs{SetFontSize*} adds \meta{dim expr} to the current font size.
For example, \cs{SetFontSize*}\marg{1} and \cs{SetFontSize*}\marg{-1pt} increase and decrease the current font size by a \unit{pt}.
\cs{ScaleFont}\marg{\meta{fp expr}}
@@ -291,7 +291,7 @@ For example, if the current font size and font baselineskip are \qty{10}{pt} and
\cs{SetFontSizeBaselineskip}\marg{\meta{dim expr}}\marg{\meta{skip expr}}
\KeepNextPar*
-Sets the font size and font baselineskip to \meta{dim expr} and \meta{skip expr}.
+Sets the font size to \meta{dim expr} and the font baselineskip to \meta{skip expr}.
Both arguments supply a default unit of \unit{pt}.
\cs{SetFontSizeBaselineskip} can be used as an alternative to \cs{fontsize} + \cs{selectfont} as it avoids the issue with \cs{f@size} discussed in \S\ref{subsec:fontparameters}.
@@ -305,8 +305,8 @@ I have used them often when developing this package so I think users will find t
\nopagebreak\newline
\cs{PrintAllFontParameters}
-\cs{PrintFontParameters} prints the current step, scale, size, and baselineskip in this order in a comma\-/separated list of key = value pairs.
-If the current step is undefined (as explained for \cs{SetFontStep} in \S\ref{subsec:fontsize}), it will be left blank.
+\cs{PrintFontParameters} prints the current font step, scale, size, and baselineskip in this order in a comma\-/separated list of key = value pairs.
+If the current font step is undefined (as explained for \cs{SetFontStep} in \S\ref{subsec:fontsize}), it will be left blank.
\cs{PrintAllFontParameters} prints the step, scale, size, and baselineskip of each font size command.
\cs{PrintSampleText}\oarg{\meta{text}}
diff --git a/macros/latex/contrib/fontscale/fontscale.sty b/macros/latex/contrib/fontscale/fontscale.sty
index 514350189c..7aa22fdd73 100644
--- a/macros/latex/contrib/fontscale/fontscale.sty
+++ b/macros/latex/contrib/fontscale/fontscale.sty
@@ -8,8 +8,8 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplPackage
{fontscale}
- {2024-04-15}
- {1.2.0}
+ {2024-04-21}
+ {1.2.1}
{A user interface for setting document font sizes}
% The 2023-10-10 l3kernel update added many 'e'-variants.
@@ -213,11 +213,7 @@
\msg_line_context: \c_space_tl
are~ not~ in~ the~ correct~ order.~
The~ magnitude~ of~ the~ font~ sizes~ should~ be~ ordered~ from~
- \token_to_str:N \tiny \c_space_tl
- to~
- \token_to_str:N \normalsize \c_space_tl
- to~
- \token_to_str:N \Huge .
+ \iow_char:N \\tiny~ to~ \iow_char:N \\normalsize~ to~ \iow_char:N \\Huge .
}
\msg_new:nnn { fontscale } { font-baselineskips-out-of-order }
{
@@ -225,11 +221,7 @@
\msg_line_context: \c_space_tl
are~ not~ in~ the~ correct~ order.~
The~ magnitude~ of~ the~ font~ baselineskips~ should~ be~ ordered~ from~
- \token_to_str:N \tiny \c_space_tl
- to~
- \token_to_str:N \normalsize \c_space_tl
- to~
- \token_to_str:N \Huge .
+ \iow_char:N \\tiny~ to~ \iow_char:N \\normalsize~ to~ \iow_char:N \\Huge .
}
\msg_new:nnn { fontscale } { font-step-out-of-bounds }
{
@@ -238,6 +230,13 @@
must~ be~ an~ integer~ from~ -4~ to~ 5,~
unless~ the~ choice~ of~ typographic~ scale~ is~ modular~ or~ musical.
}
+\msg_new:nnn { fontscale } { current-font-step-out-of-bounds }
+ {
+ \iow_char:N \\SetFontStep*~
+ \msg_line_context: \c_space_tl
+ could~ not~ calculate~ the~ new~ font~ step~ because~
+ the~ current~ font~ step~ is~ undefined.
+ }
% DEFINE KEYS
@@ -581,11 +580,10 @@
{
\__fontscale_keys_process_normalsize:
\__fontscale_keys_process_other:
- \__fontscale_keys_process_other_props:
+ \__fontscale_keys_process_props:
\__fontscale_keys_process_check_order:
}
-% Sets the size and baselineskip of \normalsize, stores them in a property
-% list, and uses \normalsize.
+% Sets the size and baselineskip of \normalsize and uses \normalsize.
\cs_new_protected:Npn \__fontscale_keys_process_normalsize:
{
\quark_if_no_value:NTF \l__fontscale_normalsize_size_tl
@@ -624,90 +622,71 @@
\l_fontscale_normalsize_baselineskip_skip
{ \l__fontscale_normalsize_baselineskip_tl }
}
- \prop_put:Nno \l_fontscale_normalsize_prop { size }
- { \dim_use:N \l_fontscale_normalsize_size_dim }
- \prop_put:Nno \l_fontscale_normalsize_prop { baselineskip }
- { \skip_use:N \l_fontscale_normalsize_baselineskip_skip }
\normalsize
}
% Sets the size, scale, and baselineskip of the other font size commands.
% Issues a warning if the user sets both the scale and size keys for the same
% font size command.
-\cs_new_protected:Npn \__fontscale_keys_process_other_classic_xpt:n #1
+\cs_new:Npn \__fontscale_keys_process_other_classic_xpt:n #1
{
- \dim_set:cn { l_fontscale_#1_size_dim }
+ \str_case:nn {#1}
{
- \str_case:nn {#1}
- {
- { tiny } { 6pt }
- { scriptsize } { 7pt }
- { footnotesize } { 8pt }
- { small } { 9pt }
- { large } { 11pt }
- { Large } { 12pt }
- { LARGE } { 14pt }
- { huge } { 16pt }
- { Huge } { 18pt }
- }
+ { tiny } { 6pt }
+ { scriptsize } { 7pt }
+ { footnotesize } { 8pt }
+ { small } { 9pt }
+ { large } { 11pt }
+ { Large } { 12pt }
+ { LARGE } { 14pt }
+ { huge } { 16pt }
+ { Huge } { 18pt }
}
}
-\cs_new_protected:Npn \__fontscale_keys_process_other_classic_xipt:n #1
+\cs_new:Npn \__fontscale_keys_process_other_classic_xipt:n #1
{
- \dim_set:cn { l_fontscale_#1_size_dim }
+ \str_case:nn {#1}
{
- \str_case:nn {#1}
- {
- { tiny } { 7pt }
- { scriptsize } { 8pt }
- { footnotesize } { 9pt }
- { small } { 10pt }
- { large } { 12pt }
- { Large } { 14pt }
- { LARGE } { 16pt }
- { huge } { 18pt }
- { Huge } { 21pt }
- }
+ { tiny } { 7pt }
+ { scriptsize } { 8pt }
+ { footnotesize } { 9pt }
+ { small } { 10pt }
+ { large } { 12pt }
+ { Large } { 14pt }
+ { LARGE } { 16pt }
+ { huge } { 18pt }
+ { Huge } { 21pt }
}
}
-\cs_new_protected:Npn \__fontscale_keys_process_other_classic_xiipt:n #1
+\cs_new:Npn \__fontscale_keys_process_other_classic_xiipt:n #1
{
- \dim_set:cn { l_fontscale_#1_size_dim }
+ \str_case:nn {#1}
{
- \str_case:nn {#1}
- {
- { tiny } { 8pt }
- { scriptsize } { 9pt }
- { footnotesize } { 10pt }
- { small } { 11pt }
- { large } { 14pt }
- { Large } { 16pt }
- { LARGE } { 18pt }
- { huge } { 21pt }
- { Huge } { 24pt }
- }
+ { tiny } { 8pt }
+ { scriptsize } { 9pt }
+ { footnotesize } { 10pt }
+ { small } { 11pt }
+ { large } { 14pt }
+ { Large } { 16pt }
+ { LARGE } { 18pt }
+ { huge } { 21pt }
+ { Huge } { 24pt }
}
}
-\cs_new_protected:Npn \__fontscale_keys_process_other_modular:n #1
+\cs_new:Npn \__fontscale_keys_process_other_modular:n #1
{
- \dim_set:cn { l_fontscale_#1_size_dim }
+ \fp_to_dim:n
{
- \fp_to_dim:n
- {
- \l__fontscale_normalsize_size_fp * \l__fontscale_modular_ratio_fp
- ^ \use:c { c_fontscale_#1_step_fp }
- }
+ \l__fontscale_normalsize_size_fp * \l__fontscale_modular_ratio_fp
+ ^ \use:c { c_fontscale_#1_step_fp }
}
}
-\cs_new_protected:Npn \__fontscale_keys_process_other_musical:n #1
+\cs_new:Npn \__fontscale_keys_process_other_musical:n #1
{
- \dim_set:cn { l_fontscale_#1_size_dim }
+ \fp_to_dim:n
{
- \fp_to_dim:n
- {
- \l__fontscale_normalsize_size_fp * \l__fontscale_musical_ratio_fp
- ^ ( \use:c { c_fontscale_#1_step_fp }
- / \l__fontscale_musical_notes_fp )
- }
+ \l__fontscale_normalsize_size_fp * \l__fontscale_musical_ratio_fp
+ ^ ( \use:c { c_fontscale_#1_step_fp }
+ / \l__fontscale_musical_notes_fp )
}
}
\cs_new_protected:Npn \__fontscale_keys_process_other:
@@ -767,7 +746,9 @@
}
\prg_break:
}
- \prg_break:n { \__fontscale_keys_process_other_typographic_scale:n {#1} }
+ \dim_set:cn { l_fontscale_#1_size_dim }
+ { \__fontscale_keys_process_other_typographic_scale:n {#1} }
+ \prg_break:
\prg_break_point:
\fp_set:cn { l_fontscale_#1_scale_fp }
{ \use:c { l_fontscale_#1_size_dim } / \l__fontscale_normalsize_size_fp }
@@ -788,9 +769,9 @@
{ \use:c { l__fontscale_#1_baselineskip_tl } }
}
}
-% Puts the scale, size, and baselineskip of the other font size commands in
-% property lists.
-\cs_new_protected:Npn \__fontscale_keys_process_other_props:
+% Puts the scale, size, and baselineskip of each font size command in
+% property lists, except the scale of \normalsize.
+\cs_new_protected:Npn \__fontscale_keys_process_props:
{
\prop_put:Nne \l_fontscale_tiny_prop { scale }
{ \fp_use:N \l_fontscale_tiny_scale_fp }
@@ -819,6 +800,8 @@
{ \dim_use:N \l_fontscale_footnotesize_size_dim }
\prop_put:Nno \l_fontscale_small_prop { size }
{ \dim_use:N \l_fontscale_small_size_dim }
+ \prop_put:Nno \l_fontscale_normalsize_prop { size }
+ { \dim_use:N \l_fontscale_normalsize_size_dim }
\prop_put:Nno \l_fontscale_large_prop { size }
{ \dim_use:N \l_fontscale_large_size_dim }
\prop_put:Nno \l_fontscale_Large_prop { size }
@@ -838,6 +821,8 @@
{ \skip_use:N \l_fontscale_footnotesize_baselineskip_skip }
\prop_put:Nno \l_fontscale_small_prop { baselineskip }
{ \skip_use:N \l_fontscale_small_baselineskip_skip }
+ \prop_put:Nno \l_fontscale_normalsize_prop { baselineskip }
+ { \skip_use:N \l_fontscale_normalsize_baselineskip_skip }
\prop_put:Nno \l_fontscale_large_prop { baselineskip }
{ \skip_use:N \l_fontscale_large_baselineskip_skip }
\prop_put:Nno \l_fontscale_Large_prop { baselineskip }
@@ -1075,7 +1060,7 @@
{
\tl_set:Ne \l__fontscale_step_tl { \__fontscale_current_font_step: }
\tl_if_empty:NTF \l__fontscale_step_tl
- { \msg_error:nn { fontscale } { font-step-out-of-bounds } }
+ { \msg_error:nn { fontscale } { current-font-step-out-of-bounds } }
{ \__fontscale_add_font_step_aux:n { (#1) + \l__fontscale_step_tl } }
}
\cs_new_eq:NN \__fontscale_add_font_step_aux:n \__fontscale_set_font_step:n
diff --git a/macros/latex/contrib/jsonparse/README.md b/macros/latex/contrib/jsonparse/README.md
index b2253c2a85..ba87245374 100644
--- a/macros/latex/contrib/jsonparse/README.md
+++ b/macros/latex/contrib/jsonparse/README.md
@@ -1,10 +1,10 @@
-![Version 0.5.6](https://img.shields.io/badge/version-0.5.6-blue)
+![Version 0.7.1](https://img.shields.io/badge/version-0.7.1-blue)
# The `jsonparse` package
-The `jsonparse` package provides an easy way to read in JSON data from files or strings in LaTeX documents, parse the data and store it in a user-defined token variable. The package allows accessing the stored data via a JavaScript-flavored syntax.
+The `jsonparse` package provides a handy way to read in JSON data from files or strings in LaTeX documents, parse the data and store it in a user-defined token variable. The package allows accessing the stored data via a JavaScript-flavored syntax.
-Using the commands `\JSONParseFromFile` or `\JSONParse`, JSON data can be stored in a token variable. Using the command `\JSONParseGetValue`, certain entried can be extracted from the stored data.
+Using the commands `\JSONParseFromFile` or `\JSONParse`, JSON data can be stored in a token variable. Using the command `\JSONParseValue`, certain entried can be extracted from the stored data.
---
@@ -32,7 +32,7 @@ Let's assume a file with the name `example.json` is stored in the working direct
}
],
"children": [
- "Tom,
+ "Tom",
"Doug",
"Harry"
],
@@ -40,6 +40,6 @@ Let's assume a file with the name `example.json` is stored in the working direct
}
```
-We can store it in the token variable `\myJSONdata` using the command `\JSONParseFromFile{\myJSONdata}{example.json}`. Calling the command `\JSONParseGetValue{\myJSONdata}{contactPoint[0].telephone}` would then result in the output `+1 (555) 555-1234` (indices are zero-based per default).
+We can store it in the token variable `\myJSONdata` using the command `\JSONParseFromFile{\myJSONdata}{example.json}`. Calling the command `\JSONParseValue{\myJSONdata}{contactPoint[0].telephone}` would then result in the output `+1 (555) 555-1234` (indices are zero-based per default).
This package including all files is subject to the LPPL 1.3c license.
diff --git a/macros/latex/contrib/jsonparse/jsonparse-doc.pdf b/macros/latex/contrib/jsonparse/jsonparse-doc.pdf
index 6e81ca7c44..eae5ebc7ac 100644
--- a/macros/latex/contrib/jsonparse/jsonparse-doc.pdf
+++ b/macros/latex/contrib/jsonparse/jsonparse-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/jsonparse/jsonparse-doc.tex b/macros/latex/contrib/jsonparse/jsonparse-doc.tex
index 2b0eff21c8..90de47fa5d 100644
--- a/macros/latex/contrib/jsonparse/jsonparse-doc.tex
+++ b/macros/latex/contrib/jsonparse/jsonparse-doc.tex
@@ -5,14 +5,14 @@
% conditions of the LaTeX Project Public License version 1.3c,
% available at http://www.latex-project.org/lppl/.
%
-% This file is part of the `jsonparse' package (The Work in LPPL)
+% This file is part of the `jsonparse' package (The Work in LPPL)
% and all files in that bundle must be distributed together.
%
-% This work has the LPPL maintenance status `author-maintained'.
+% This work has the LPPL maintenance status `maintained'.
%
\documentclass[a4paper]{article}
-\def\jsonparsefileversion{0.5.6}
-\def\jsonparsefiledate{11 April 2024}
+\def\jsonparsefileversion{0.7.1}
+\def\jsonparsefiledate{20 April 2024}
\usepackage[T1]{fontenc}
\usepackage{Alegreya}
@@ -190,6 +190,10 @@
\changes{v0.5.0}{2024/04/09}{Changed from string token variables to token lists to support Unicode.}
\changes{v0.5.5}{2024/04/09}{Bug fixes, introduction and enhancement of user functions.}
\changes{v0.5.6}{2024/04/11}{Bug fixes, escaping of special chars added.}
+\changes{v0.5.7}{2024/04/14}{Bug fixes, key-value option setting added.}
+\changes{v0.6.0}{2024/04/15}{Bug fixes, renaming of several commands.}
+\changes{v0.7.0}{2024/04/18}{Renaming and rearranging of keys, escaping of special JSON escape sequences added.}
+\changes{v0.7.1}{2024/04/20}{Access to first-level keys of object added.}
\begin{document}
@@ -199,32 +203,51 @@
\section{Introduction}
-The \macro{jsonparse} package provides an easy way to read in JSON data from files or strings in LaTeX documents, parse the data and store it in a user-defined token variable. The package allows accessing the stored data via a JavaScript-flavored syntax.
+The \macro{jsonparse} package provides a handy way to read in JSON data from files or strings in LaTeX documents, parse the data and store it in a user-defined token variable. The package allows accessing the stored data via a JavaScript-flavored syntax.
This package is still in a beta stage and not thoroughly tested. Bugs or improvements can be issued via GitHub at \url{https://github.com/jasperhabicht/jsonparse/issues}.
\section{Loading the package}
-To install the package, copy the package file \macro{jsonparse.sty} into the working directory or into the \macro{texmf} directory. After the package has been installted, the \macro{jsonparse} package is loaded by calling \macro{\usepackage{jsonparse}} in the preamble of the document.
+To install the package, copy the package file \macro{jsonparse.sty} into the working directory or into the \macro{texmf} directory. After the package has been installed, the \macro{jsonparse} package is loaded by calling \macro{\usepackage{jsonparse}} in the preamble of the document.
The package does not load any dependencies.
-\begin{macrodef}debug\end{macrodef}
+\begin{macrodef}
+|debug|
+\end{macrodef}
The package can be loaded with the option \macro{debug}. It will then output to the log file every instance of a string, a boolean (true or false) value, a null value, a number as well as the start and end of every object and the start and end of every array that is found while parsing the JSON string or JSON file.
-\section{Escaping and special treatment of the input}
+\section{Escaping and special treatment of the input}\label{sec:escaping}
+
+\begin{macrodef}
+|escape|={<choice>}
+\end{macrodef}
+
+In general, characters in the JSON source that are special to TeX are not handled in a special way and will be treated by TeX the same way as if the user had input them in the document. However, certain escaping procedures are available to conform with the way JSON treats certain escape sequences.
+
+The key \macro{escape} takes one of the values \macro{false}, \macro{basic} or \macro{full}. If no value is given, \macro{basic} is assumed and \macro{basic} is also the default setting if the key is not set at all. See more on setting keys below in section \ref{sec:settings}. The three values select different escape modes that are designed to have as little influence as possible to how TeX normally acts. While it would surely be possible to parse and rescan the input by changing category codes and rescanning the output per default, such practice might result un unintended output in special cases. Therefore, the current approach was chosen where changes to category codes are only introduced with the most most extensive escaping mode and rescanning of token sequences can be controlled by the user.
-The package allows for empty lines in JSON strings. During parsing, every instance of the TeX macro \macro{\par} is replaced by a space.
+Setting the key to \macro{false} disables the treatment of the input as described in the following of this section. The source code will be read and parsed as is. If the source does not contain any escape sequences, empty lines or TeX macro, this choice should be used.
-JSON strings cannot contain the two characters \macro{"} and \macro{\}. These two characters need to be escaped with a preceding backslash (\macro{\}). This package therefore redefines locally the TeX macros \macro{\"}, \macro{\/} and \macro{\\}. During parsing, \macro{\"} expands to \macro{\exp_not:N \"} (i.\,e. it is prevented to expand during parsing) and only when typeset, \macro{\"} is expanded to \macro{"}, which ensures that strings are parsed properly. Similarly, \macro{\/} expands to \macro{\exp_not:N \/} and finally to \macro{/} while \macro{\\} expands to \macro{\exp_not:N \\} and finally to \macro{\c_backslash_str} (i.\,e. a backslash with category code 12).
+If the key \macro{escape} is set to \macro{basic}, the package allows for empty lines in JSON strings. During parsing, every instance of the TeX macro \macro{\par} is replaced by a space.
-Due to the above procedure, the TeX macros \macro{\"} and \macro{\\} must be escaped twice in the JSON source, so that they become \macro{\\\"} and \macro{\\\\} respectively.
+JSON strings cannot contain the two characters \macro{"} and \macro{\}. These two characters need to be escaped with a preceding backslash (\macro{\}). If the key \macro{escape} is set to \macro{basic}, this package therefore redefines locally the TeX control symbols \macro{\"}, \macro{\/} and \macro{\\}. During parsing, \macro{\"} expands to \macro{\exp_not:N \"} (i.\,e. it is prevented to expand during parsing) and only when typeset, \macro{\"} is expanded to \macro{"}, which ensures that strings are parsed properly. Similarly, the control symbol \macro{\/} expands to \macro{\exp_not:N \/} and finally to \macro{/} while \macro{\\} expands to \macro{\exp_not:N \\} and finally to \macro{\c_backslash_str} (i.\,e. a backslash with category code 12). Due to this procedure, the TeX macros \macro{\"} and \macro{\\} must be escaped twice in the JSON source, so that they become \macro{\\\"} and \macro{\\\\} respectively.
-Other escape sequences defined by JSON, such as \macro{\b}, \macro{\f}, \macro{\n}, \macro{\r}, \macro{\t} or \macro{\u} (the latter followed by a hex value) are not escaped and it is up to the user to process these sequences before feeding them into the commands provided by this package.
+With the key \macro{escape} set to \macro{basic}, other escape sequences defined by JSON, such as \macro{\b}, \macro{\f}, \macro{\n}, \macro{\r}, \macro{\t} or \macro{\u} (the latter followed by a hex value) are not escaped.
-Characters that are special to TeX are not handled in a special way and will be treated by TeX the same way as if the user had input them in the document.
+If the key \macro{escape} is set to \macro{full}, apart from the above, the JSON escape sequences \macro{\b}, \macro{\f}, \macro{\n}, \macro{\r}, \macro{\t} or \macro{\u} (followed by a hex value) are parsed if the JSON source is read in as file using \macro{\JSONParseFromFile} (in other words, full escaping functionality is not supported for the command \macro{\JSONParse}). During parsing, these escape sequences are not expanded and only when being typeset expand to their relevant replacement. The escape sequence \macro{\u} followed by a hex value consisting of four digits eventually expands to \macro{\char"} followed by the relevant four hex digits. The escape sequences \macro{\b} (backspace), \macro{\f} (formfeed), \macro{\n} (linefeed), \macro{\r} (carriage return) and \macro{\t} (horizontal tab) expand to token variables of which the contents can be set using the relevant \macro{replacement} key. See more on setting keys below in section \ref{sec:settings}.
-Setting the internal boolean \macro{\l_jsonparse_escape_input_bool} to false disables the treatment of the input as described in this section.
+Note that if the key \macro{escape} is set to \macro{full}, the category code of \macro{b}, \macro{f}, \macro{n}, \macro{r}, \macro{t} and \macro{u} will be set to 12 (other). Changing the category codes is necessary to be able to define single-letter control sequences in TeX. The category codes of these characters are changed back to 10 (letter) when stored in the property list that contains the parsed JSON string.
+
+\begin{macrodef}
+replacement/|backspace|={<string>}
+replacement/|formfeed|={<string>}
+replacement/|linefeed|={<string>}
+replacement/|carriage return|={<string>}
+replacement/|horizontal tab|={<string>}
+\end{macrodef}
+These keys can be used to set the replacement text for the JSON escape sequences \macro{\b} (backspace), \macro{\f} (formfeed), \macro{\n} (linefeed), \macro{\r} (carriage return) and \macro{\t} (horizontal tab). The default replacement string is a space. Only strings can be used as replacement.
\section{Main user commands}
@@ -233,32 +256,42 @@ Setting the internal boolean \macro{\l_jsonparse_escape_input_bool} to false dis
\end{macrodef}
The command \macro{\JSONParse} is used to parse a JSON string and store the parsed result in a token variable (a property list). The first argument takes the name of the token variable that is created by the command. The second argument takes the JSON string to be parsed.
-For example, using \macro{\JSONParse{\myJSONdata}{ { "key" : "value" } }}, the relevant JSON string will be parsed and the result stored in the token variable \macro{\myJSONdata} as property list. In this case, the property list only consists of one entry with the key \macro{key} and the value \macro{value}. The command \macro{\JSONParseGetValue{\myJSONdata}{key}}, for example, can then be used to extract the relevant value from this property list (see the description below).
+For example, using \macro{\JSONParse{\myJSONdata}{ { "key" : "value" } }}, the relevant JSON string will be parsed and the result stored in the token variable \macro{\myJSONdata} as property list. In this case, the property list only consists of one entry with the key \macro{key} and the value \macro{value}. The command \macro{\JSONParseValue{\myJSONdata}{key}}, for example, can then be used to extract the relevant value from this property list (see the description below).
\begin{macrodef}
|\JSONParseFromFile|{<token variable>}{<JSON file>}
\end{macrodef}
The command \macro{\JSONParseFromFile} is used to parse a JSON file and store the parsed result in a token variable (a property list). It works the same way as \macro{\JSONParse}, but instead of a JSON string, it takes as second argument the path to the JSON file relative to the working directory.
+This command will temporarily change the category code of \macro{b}, \macro{f}, \macro{n}, \macro{r}, \macro{t} and \macro{u} to 12 (other) if full escaping is activated. See more on escaping above in section \ref{sec:escaping}.
+
+\begin{macrodef}
+|\JSONParseKeys|{<token variable>}{<token variable>}
+\end{macrodef}
+The command \macro{\JSONParseKeys} is used to store all top-level keys of a parsed JSON object as array into a token variable. The command takes as first argument the token variable that holds the parsed JSON data. The second argument takes the token variable that is assigned a JSON array containing the top-level keys of the object represented by the token variable in the first argument. The token variable to store the keys as array is created if it does not exist.
+
\begin{macrodef}
-|\JSONParseGetValue|{<token variable>}{<key>}
-|\JSONParseGetValue*|{<token variable>}{<key>}
+|\JSONParseValue|{<token variable>}{<key>}
+|\JSONParseValue*|{<token variable>}{<key>}
+|\JSONParseExpandableValue|{<token variable>}{<key>}
\end{macrodef}
-The command \macro{\JSONParseGetValue} is used to select values from the token variable (property list) that has been created using the commands \macro{\JSONParse} or \macro{\JSONParseFromFile}. The first argument takes the token variable that holds the parsed JSON data. The second argument takes the key to select the relevant entry from the parsed JSON data using JavaScript syntax.
+The command \macro{\JSONParseValue} is used to select values from the token variable (property list) that has been created using the commands \macro{\JSONParse} or \macro{\JSONParseFromFile}. The first argument takes the token variable that holds the parsed JSON data. The second argument takes the key to select the relevant entry from the parsed JSON data using JavaScript syntax.
-If the JSON string \macro{{ "key" : "value" }} is parsed into the token variable \macro{\myJSONdata}, using \macro{\JSONParseGetValue{\myJSONdata}{key}} would extract the value associated with the key \macro{key}, which in this case is \macro{value}, and typeset it to the document.
+If the JSON string \macro{{ "key" : "value" }} is parsed into the token variable \macro{\myJSONdata}, using \macro{\JSONParseValue{\myJSONdata}{key}} would extract the value associated with the key \macro{key}, which in this case is \macro{value}, and typeset it to the document.
-Nested objects and arrays are assigned keys that adhere to JavaScript syntax. For example, if the JSON string \macro{{ "outer_key" : { "inner_key" : "value" } }} is parsed into the token variable \macro{\myJSONdata}, to select the value associated with the key \macro{inner_key}, the command \macro{\JSONParseGetValue{\myJSONdata}{outer_key.inner_key}} can be used. The command \macro{\JSONParseGetValue{\myJSONdata}{key[0]}} selects the first value of the array associated with the key \macro{key} in the parsed JSON string \macro{{ "key" : [ "one" , "two" ] }}.
+Nested objects and arrays are assigned keys that adhere to JavaScript syntax. For example, if the JSON string \macro{{ "outer_key" : { "inner_key" : "value" } }} is parsed into the token variable \macro{\myJSONdata}, to select the value associated with the key \macro{inner_key}, the command \macro{\JSONParseValue{\myJSONdata}{outer_key.inner_key}} can be used. To give an example for an array, the command \macro{\JSONParseValue{\myJSONdata}{key[0]}} selects the first value of the array associated with the key \macro{key} in the JSON string \macro{{ "key" : [ "one" , "two" ] }}.
-When a key is associated with an object or array, the whole object or array is output as JSON string. The special key \macro{.} (or the string defined using \macro{\JSONParseSetChildSeparator}) returns the whole JSON object as string. The output of whole objects or arrays is not meant to be printed, but it can again be parsed using \macro{\JSONParse}.
+The starred variant, \macro{\JSONParseValue*}, rescans the token list before it is typeset (which means that all category codes that may have been changed before are set to the default values), making it possible to place TeX commands in the JSON file. The starred variants of this and similar commands should not be placed in a \macro{\JSONParse} command. In order to adhere to proper JSON syntax, backslashes need to be escaped in the JSON source with another backslash.
-The starred variant, \macro{\JSONParseGetValue*}, rescans the token list before it is typeset, making it possible to place TeX commands in the JSON file. The starred variants of this and similar commands should not be placed in a \macro{\JSONParse} command. In order to adhere to proper JSON syntax, backslashes need to be escaped in the JSON source with another backslash.
+When a key is associated with an object or array, the whole object or array is output as JSON string. The special key \macro{.} (or the string defined using the key \macro{child sep}) returns the whole JSON object as string.
+
+If the output of whole objects or arrays is meant to be parsed again using \macro{\JSONParse}, the expandable command \macro{\JSONParseExpandableValue} is to be used.
\begin{macrodef}
-|\JSONParseGetArrayValues|{<token variable>}{<key>}[<subkey>]{<string>}
-|\JSONParseGetArrayValues*|{<token variable>}{<key>}[<subkey>]{<string>}
+|\JSONParseArrayValues|{<token variable>}{<key>}[<subkey>]{<string>}
+|\JSONParseArrayValues*|{<token variable>}{<key>}[<subkey>]{<string>}
\end{macrodef}
-The command \macro{\JSONParseGetArrayValues} is used to select all values from an array from a parsed JSON string or JSON file. The first argument takes the token variable that holds the parsed JSON data. The second argument takes the key to select the relevant entry from the parsed JSON data using JavaScript syntax. The third argument is optional an can be used to pass a subkey, i.\,e. a key that is used to select a value for every item. The last argument takes a string that is inserted between all values when they are typeset.
+The command \macro{\JSONParseArrayValues} is used to select all values from an array from a parsed JSON string or JSON file. The first argument takes the token variable that holds the parsed JSON data. The second argument takes the key to select the relevant entry from the parsed JSON data using JavaScript syntax. The third argument is optional and can be used to pass a subkey, i.\,e. a key that is used to select a value for every item. The last argument takes a string that is inserted between all values when they are typeset.
For example, let us assume the following JSON data structure is parsed into the token variable \macro{\myJSONdata}:
@@ -277,15 +310,15 @@ For example, let us assume the following JSON data structure is parsed into the
}
\end{codeexample}
-Then using \macro{\JSONParseGetArrayValues{\myJSONdata}{array}[key_a]{, }}, the text \macro{one, three} is typeset to the document.
+Then, when using \macro{\JSONParseArrayValues{\myJSONdata}{array}[key_a]{, }}, `one, three' is typeset to the document.
-The starred variant, \macro{\JSONParseGetArrayValues*}, rescans the token lists before they are typeset.
+The starred variant, \macro{\JSONParseArrayValues*}, rescans the token lists before they are typeset.
\begin{macrodef}
-|\JSONParseUseArrayValues|{<token variable>}{<key>}[<subkey>]{<command name>}
-|\JSONParseUseArrayValues*|{<token variable>}{<key>}[<subkey>]{<command name>}
+|\JSONParseArrayValuesMap|{<token variable>}{<key>}[<subkey>]{<command name>}
+|\JSONParseArrayValuesMap*|{<token variable>}{<key>}[<subkey>]{<command name>}
\end{macrodef}
-The command \macro{\JSONParseUseArrayValues} takes the same first three arguments as the command \macro{\JSONParseGetArrayValues} and works in a similar way. However, instead of a string that is added between the array items, it takes a command name as fourth argument. This command can be defined beforehand and will be called for every array item. Inside its defintion, the commands \macro{\JSONParseArrayIndex}, \macro{\JSONParseArrayKey} and \macro{\JSONParseArrayValue} can be used which are updated for each item and output the index, the key and the value of the current item respectively.
+The command \macro{\JSONParseArrayValuesMap} takes the same first three arguments as the command \macro{\JSONParseArrayValues} and works in a similar way. However, instead of a string that is added between the array items, it takes a command name as fourth argument. This command can be defined beforehand and will be called for every array item. Inside its definition, the commands \macro{\JSONParseArrayIndex}, \macro{\JSONParseArrayKey} and \macro{\JSONParseArrayValue} can be used which are updated for each item and output the index, the key and the value of the current item respectively.
For example, let us assume the same JSON data structure as defined above parsed into the token variable \macro{\myJSONdata}. Then, the following can be done:
@@ -297,85 +330,67 @@ For example, let us assume the same JSON data structure as defined above parsed
}
\begin{itemize}
- \JSONParseUseArrayValues{\myJSONdata}
+ \JSONParseArrayValuesMap{\myJSONdata}
{array}[key_a]{myJSONitem}
\end{itemize}
\end{codeexamplecolumns}
-The starred variant, \macro{\JSONParseUseArrayValues*}, rescans the token lists before they are typeset.
+The starred variant, \macro{\JSONParseArrayValuesMap*}, rescans the token lists before they are typeset.
\begin{macrodef}
-|\JSONParseGetArrayCount|{<token variable>}{<key>}
+|\JSONParseArrayCount|{<token variable>}{<key>}
\end{macrodef}
-The command \macro{\JSONParseGetArrayCount} takes as frist argument a token variable that holds a parsed JSON string or JSON file and as second argument a key. It returns an integer representing the number of items contained in the selected array.
+The command \macro{\JSONParseArrayCount} takes as first argument a token variable holding a parsed JSON string or JSON file and as second argument a key. It returns an integer representing the number of items contained in the selected array.
-\subsection{Commands to alter separators and output}
+\subsection{Changing separators, output and other settings}\label{sec:settings}
-The package provides a set of commands that can be used to change the separators used to select the relevant value in the JSON structure as well as the output that is generated from the JSON data.
+The package provides a set of keys can be set to change the separators used to select the relevant value in the JSON structure, the output that is generated from the JSON data as well as other things.
\begin{macrodef}
-|\JSONParseSetChildSeparator|{<string>}
-|\JSONParseSetArraySeparator|{<string>}{<string>}
+|\JSONParseSet|{<key-value list>}
\end{macrodef}
-The two commands \macro{\JSONParseSetChildSeparator} and \macro{\JSONParseSetArraySeparator} can be used to change the separators for child objects or array items in the syntax used to select a specific value in the JSON data structure. Per default, the child separator is a dot (\macro{.}) while the array separators are sqare brackets (\macro{[} and \macro{]}). The command \macro{\JSONParseSetArraySeparator} takes two arguments of which the first is the character used before the array separator and the second is used after. Changing the separators can be useful if keys in the JSON structure already use these characters.
+The commands \macro{\JSONParseSet} can be used to specify settings via key-value pairs (separated by commas). Keys that are presented here as a subkey (i.\,e. preceded by another key and a slash) can also be set using the syntax \macro{key={subkey}} and multiple subkeys belonging to one key can be combined using a comma as separator. The following keys are available:
\begin{macrodef}
-|\JSONParseSetTrueString|{<string>}
-|\JSONParseSetFalseString|{<string>}
-|\JSONParseSetNullString|{<string>}
+separator/|child|={<string>}
\end{macrodef}
-The commands \macro{\JSONParseSetTrueString} and \macro{\JSONParseSetFalseString} as well as the command \macro{\JSONParseSetNullString} can be used to change the output that is typeset if the JSON value is \macro{true}, \macro{false} or \macro{null}. The default strings that are typeset are \macro{true}, \macro{false} or \macro{null} resepctively.
+With the key \macro{child sep}, the separator for child objects that is used in the syntax to select a specific value in the JSON data structure can be changed. Per default, the child separator is a dot (\macro{.}). Changing the separator can be useful if keys in the JSON structure already use these characters.
\begin{macrodef}
-|\JSONParseSetArrayIndexZeroBased|
-|\JSONParseSetArrayIndexOneBased|
+separator/|array left|={<string>}
+separator/|array right|={<string>}
\end{macrodef}
-The command \macro{\JSONParseSetArrayIndexZeroBased} sets the numbering of the index of array items to zero-based. With the command \macro{\JSONParseSetArrayIndexOneBased}, the indexing starts with one instead. Per default, the package uses zero-based indexing to resemble JavaScript notation.
-
-\subsection{Internal variables and commands}
+With the keys \macro{array sep left} and \macro{array sep right}, the separators for arrays that are used in the syntax to select a specific value in the JSON data structure can be changed. Per default, the separators are square brackets (\macro{[} and \macro{]}). Changing the separators can be useful if keys in the JSON structure already use these characters.
\begin{macrodef}
-|\l_jsonparse_debug_mode_bool|
+replacement/|true|={<string>}
+replacement/|false|={<string>}
+replacement/|null|={<string>}
\end{macrodef}
-The token variable \macro{\l_jsonparse_debug_mode_bool} holds the boolean value true if the package is loaded with the \macro{debug} option and false otherwise. If set to true, the debug mode will be used for the following use of \macro{\jsonparse_parse:n}.
+With the keys \macro{true}, \macro{false} and \macro{null}, the string that is typeset for true, false and null values can be changed. The default strings that are typeset are \macro{true}, \macro{false} and \macro{null} respectively. Only strings can be used as replacement.
\begin{macrodef}
-|\l_jsonparse_child_sep_str|
-|\l_jsonparse_array_sep_left_str|
-|\l_jsonparse_array_sep_right_str|
-|\l_jsonparse_true_str|
-|\l_jsonparse_false_str|
-|\l_jsonparse_null_str|
-|\l_jsonparse_array_index_zero_based_bool|
+|array index zero-based|
+|array index zero-based|={<boolean>}
\end{macrodef}
-The token variable \macro{\l_jsonparse_child_sep_str} holds the string \macro{.} per default or the string set by the user command \macro{\JSONParseSetChildSeparator}.
-
-The token variable \macro{\l_jsonparse_array_sep_left_str} holds the string \macro{[} per default or the string given as first argument to the user command \macro{\JSONParseSetArraySeparator}.
-
-The token variable \macro{\l_jsonparse_array_sep_right_str} holds the string \macro{]} per default or the string given as second argument to the user command \macro{\JSONParseSetArraySeparator}.
-
-The token variable \macro{\l_jsonparse_true_str} holds the string \macro{true} per default or the string set by the user command \macro{\JSONParseSetTrueString}.
-
-{\sloppy The token variable \macro{\l_jsonparse_false_str} holds the string \macro{false} per default or the string set by the user command \macro{\JSONParseSetFalseString}. \par}
-
-The token variable \macro{\l_jsonparse_null_str} holds the string \macro{null} per default or the string set by the user command \macro{\JSONParseSetNullString}.
+If set (or explicitly set to \macro{true}), the key \macro{array index zero-based} sets the numbering of the index of array items to zero-based. If set to false, the indexing starts with one instead. Per default, the package uses zero-based indexing to resemble JavaScript notation.
-The token variable \macro{\l_jsonparse_array_index_zero_based_bool} holds a boolean value which is \macro{true} per default or if the user command \macro{\JSONParseSetArrayIndexZeroBased} was called. The boolean value is \macro{false} if the user command \macro{\JSONParseSetArrayIndexOneBased} was called.
-
-\begin{macrodef}
-|\g_jsonparse_entries_prop|
-\end{macrodef}
-The token variable (property list) \macro{\g_jsonparse_entries_prop} holds key-value pairs representing all elements of a JSON data structure generated by a previous run of \macro{\jsonparse_parse:n}.
+\subsection{L3 commands}
\begin{macrodef}
|\jsonparse_parse:n| {<JSON string>}
\end{macrodef}
-The command \macro{\jsonparse_parse:n} takes as argument a JSON string and populates the token variable (property list) \macro{\g_jsonparse_entries_prop} with key-value pairs representing all elements of the JSON data structure represented by this string.
+The command \macro{\jsonparse_parse:n} takes as argument a JSON string and populates the token variable (property list) \macro{\g_jsonparse_entries_prop} with key-value pairs representing all elements of the JSON data structure represented by this string. This command does not escape the input in any way.
\begin{macrodef}
|\jsonparse_parse_to_prop:Nn| <token variable> {<JSON string>}
\end{macrodef}
-The command \macro{\jsonparse_parse_to_prop:Nn} creates the token variable given as the first arguments as property list and, after having called \macro{\jsonparse_parse:n} using the second argument, sets this newly created property list equal to \macro{\g_jsonparse_entries_prop}.
+The command \macro{\jsonparse_parse_to_prop:Nn} creates the token variable given as the first arguments as property list and, after having called \macro{\jsonparse_parse:n} using the second argument, sets this newly created property list equal to \macro{\g_jsonparse_entries_prop}. If escaping is activated, this command will pre-process the input according to the selected escaping mode before forwarding it to \macro{\jsonparse_parse:n}. See more on escaping above in section \ref{sec:escaping}.
+
+\begin{macrodef}
+|\jsonparse_filter:Nn| <token variable> {<key>}
+\end{macrodef}
+The command \macro{\jsonparse_parse_to_prop:Nn} processes the token variable given as the first arguments as property list and filters it according to the key given as second argument. Filtering means that for every entry in the property list, the key of this entry is compared against the key given to the command. If the key in the property list starts with the given key, the matching part is removed from the key in the property list. If the keys do not match, the entry is completely removed from the property list.
% =====
diff --git a/macros/latex/contrib/jsonparse/jsonparse.sty b/macros/latex/contrib/jsonparse/jsonparse.sty
index a50bafc52d..dc42c7a229 100644
--- a/macros/latex/contrib/jsonparse/jsonparse.sty
+++ b/macros/latex/contrib/jsonparse/jsonparse.sty
@@ -5,104 +5,142 @@
% conditions of the LaTeX Project Public License version 1.3c,
% available at http://www.latex-project.org/lppl/.
%
-% This file is part of the `jsonparse' package (The Work in LPPL)
+% This file is part of the `jsonparse' package (The Work in LPPL)
% and all files in that bundle must be distributed together.
%
-% This work has the LPPL maintenance status `author-maintained'.
+% This work has the LPPL maintenance status `maintained'.
%
-\ProvidesExplPackage {jsonparse} {2024-04-11} {0.5.6}
+\ProvidesExplPackage {jsonparse} {2024-04-20} {0.7.1}
{JSON Parse}
-\bool_new:N \l_jsonparse_debug_mode_bool
+\bool_new:N \l__jsonparse_debug_mode_bool
\keys_define:nn { jsonparse } {
- debug .bool_set:N = \l_jsonparse_debug_mode_bool ,
- debug .default:n = { true } ,
+ debug .bool_set:N = \l__jsonparse_debug_mode_bool ,
+ debug .default:n = { true } ,
}
\ProcessKeyOptions [ jsonparse ]
-\msg_new:nnn { jsonparse } { parsing-error } {
- \msg_warning_text:n { jsonparse } \iow_newline:
- Could ~ not ~ parse ~ JSON. \iow_newline:
- Parsing ~ error ~ at ~ key ~ `#1` ~ with ~ value ~ `#2`.
-}
-
\msg_new:nnn { jsonparse } { debug-info } {
#1
}
-% ===
-
-\str_new:N \l_jsonparse_child_sep_str
-\str_set:Nn \l_jsonparse_child_sep_str { . }
-\str_new:N \l_jsonparse_array_sep_left_str
-\str_set:Nn \l_jsonparse_array_sep_left_str { [ }
-\str_new:N \l_jsonparse_array_sep_right_str
-\str_set:Nn \l_jsonparse_array_sep_right_str { ] }
-\str_new:N \l_jsonparse_true_str
-\str_set:Nn \l_jsonparse_true_str { true }
-\str_new:N \l_jsonparse_false_str
-\str_set:Nn \l_jsonparse_false_str { false }
-\str_new:N \l_jsonparse_null_str
-\str_set:Nn \l_jsonparse_null_str { null }
-
-\bool_new:N \l_jsonparse_array_index_zero_based_bool
-\bool_set_true:N \l_jsonparse_array_index_zero_based_bool
-
-\bool_new:N \l_jsonparse_escape_input_bool
-\bool_set_true:N \l_jsonparse_escape_input_bool
-
-\NewDocumentCommand { \JSONParseSetChildSeparator } { m } {
- \str_set:Nn \l_jsonparse_child_sep_str { #1 }
-}
-
-\NewDocumentCommand { \JSONParseSetArraySeparator } { m m } {
- \str_set:Nn \l_jsonparse_array_sep_left_str { #1 }
- \str_set:Nn \l_jsonparse_array_sep_right_str { #2 }
+\msg_new:nnn { jsonparse } { parsing-error } {
+ \msg_error_text:n { jsonparse } \iow_newline:
+ Could ~ not ~ parse ~ JSON. \iow_newline:
+ Parsing ~ error ~ at ~ key ~ `#1` ~ with ~ value ~ `#2`.
}
-\NewDocumentCommand { \JSONParseSetTrueString } { m } {
- \str_set:Nn \l_jsonparse_true_str { #1 }
+\msg_new:nnn { jsonparse } { nested-non-expandable } {
+ \msg_error_text:n { jsonparse } \iow_newline:
+ Nested ~ use ~ of ~ \token_to_str:N \JSONParseValue \c_space_tl not ~ allowed. \iow_newline:
+ Use ~ \token_to_str:N \JSONParseExpandableValue \c_space_tl instead.
}
-\NewDocumentCommand { \JSONParseSetFalseString } { m } {
- \str_set:Nn \l_jsonparse_false_str { #1 }
+\msg_new:nnn { jsonparse } { file-not-found } {
+ \msg_error_text:n { jsonparse } \iow_newline:
+ Could ~ not ~ find ~ file ~ #1.
}
-\NewDocumentCommand { \JSONParseSetNullString } { m } {
- \str_set:Nn \l_jsonparse_null_str { #1 }
+\msg_new:nnn { jsonparse } { escape-in-key } {
+ \msg_error_text:n { jsonparse } \iow_newline:
+ Invalid ~ escape ~ sequence ~ #1 ~ in ~ key.
}
-\NewDocumentCommand { \JSONParseSetArrayIndexZeroBased } { } {
- \bool_set_true:N \l_jsonparse_array_index_zero_based_bool
+% ===
+
+\str_new:N \l__jsonparse_child_sep_str
+\str_new:N \l__jsonparse_array_sep_left_str
+\str_new:N \l__jsonparse_array_sep_right_str
+\str_new:N \l__jsonparse_true_str
+\str_new:N \l__jsonparse_false_str
+\str_new:N \l__jsonparse_null_str
+\bool_new:N \l__jsonparse_array_index_zero_based_bool
+\bool_new:N \l__jsonparse_escape_basic_bool
+\bool_new:N \l__jsonparse_escape_full_bool
+
+\str_new:N \l__jsonparse_backspace_str
+\str_new:N \l__jsonparse_formfeed_str
+\str_new:N \l__jsonparse_linefeed_str
+\str_new:N \l__jsonparse_carriage_return_str
+\str_new:N \l__jsonparse_horizontal_tab_str
+
+\keys_define:nn { jsonparse } {
+ escape .choice: ,
+ escape / false .code:n = {
+ \bool_set_false:N \l__jsonparse_escape_basic_bool
+ \bool_set_false:N \l__jsonparse_escape_full_bool
+ } ,
+ escape / basic .code:n = {
+ \bool_set_true:N \l__jsonparse_escape_basic_bool
+ \bool_set_false:N \l__jsonparse_escape_full_bool
+ } ,
+ escape / full .code:n = {
+ \bool_set_true:N \l__jsonparse_escape_basic_bool
+ \bool_set_true:N \l__jsonparse_escape_full_bool
+ } ,
+ escape .default:n = { basic } ,
+ escape .initial:n = { basic } ,
+ array ~ index ~ zero-based .bool_set:N = \l__jsonparse_array_index_zero_based_bool ,
+ array ~ index ~ zero-based .default:n = { true } ,
+ array ~ index ~ zero-based .initial:n = { true } ,
+ separator .code:n = { \keys_set:nn { jsonparse / separator } {#1} },
+ separator / child .str_set:N = \l__jsonparse_child_sep_str ,
+ separator / child .initial:n = { . } ,
+ separator / array ~ left .str_set:N = \l__jsonparse_array_sep_left_str ,
+ separator / array ~ left .initial:n = { [ } ,
+ separator / array ~ right .str_set:N = \l__jsonparse_array_sep_right_str ,
+ separator / array ~ right .initial:n = { ] } ,
+ replacement .code:n = { \keys_set:nn { jsonparse / replacement } {#1} },
+ replacement / true .str_set:N = \l__jsonparse_true_str ,
+ replacement / true .initial:n = { true } ,
+ replacement / false .str_set:N = \l__jsonparse_false_str ,
+ replacement / false .initial:n = { false } ,
+ replacement / null .str_set:N = \l__jsonparse_null_str ,
+ replacement / null .initial:n = { null } ,
+ replacement / backspace .str_set:N = \l__jsonparse_backspace_str ,
+ replacement / backspace .initial:n = { ~ } ,
+ replacement / formfeed .str_set:N = \l__jsonparse_formfeed_str ,
+ replacement / formfeed .initial:n = { ~ } ,
+ replacement / linefeed .str_set:N = \l__jsonparse_linefeed_str ,
+ replacement / linefeed .initial:n = { ~ } ,
+ replacement / carriage ~ return .str_set:N = \l__jsonparse_carriage_return_str ,
+ replacement / carriage ~ return .initial:n = { ~ } ,
+ replacement / horizontal ~ tab .str_set:N = \l__jsonparse_horizontal_tab_str ,
+ replacement / horizontal ~ tab .initial:n = { ~ }
}
-\NewDocumentCommand { \JSONParseSetArrayIndexOneBased } { } {
- \bool_set_false:N \l_jsonparse_array_index_zero_based_bool
+\NewDocumentCommand { \JSONParseSet } { m } {
+ \keys_set:nn { jsonparse } {#1}
}
% ===
-\cs_generate_variant:Nn \tl_count:n { e }
+\cs_if_exist:NF \str_casefold:n {
+ \cs_new:Npn \str_casefold:n { \str_foldcase:n }
+}
+
\cs_generate_variant:Nn \tl_range:nnn { nne , nen }
\cs_generate_variant:Nn \tl_range:Nnn { Nne , Nen }
-\cs_generate_variant:Nn \tl_remove_once:Nn { Ne }
+\cs_generate_variant:Nn \tl_remove_once:Nn { NV }
+\cs_generate_variant:Nn \tl_replace_all:Nnn { Nen }
\cs_generate_variant:Nn \tl_rescan:nn { ne }
\cs_generate_variant:Nn \tl_set:Nn { Ne }
\cs_generate_variant:Nn \tl_set_rescan:Nnn { Nne }
-\cs_generate_variant:Nn \tl_trim_spaces:n { V }
+\cs_generate_variant:Nn \tl_trim_spaces:n { e }
\cs_generate_variant:Nn \str_case_e:nn { en }
+\cs_generate_variant:Nn \str_casefold:n { e }
\cs_generate_variant:Nn \str_head_ignore_spaces:n { e }
-\cs_generate_variant:Nn \str_set:Nn { Ne }
\cs_generate_variant:Nn \prop_gput:Nnn { Nee }
+\cs_generate_variant:Nn \prop_item:Nn { Ne }
\cs_generate_variant:Nn \prop_put:Nnn { Nee }
-\cs_generate_variant:Nn \seq_use:Nn { Ne }
-\cs_generate_variant:Nn \msg_log:nnn { nno }
+\cs_generate_variant:Nn \msg_error:nnnn { nnee }
+\cs_generate_variant:Nn \msg_log:nnn { nne }
+\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { en } { T }
+\prg_generate_conditional_variant:Nnn \tl_if_head_eq_charcode:nN { eN } { T , TF }
\prg_generate_conditional_variant:Nnn \tl_if_head_is_group:n { e } { TF }
-\prg_generate_conditional_variant:Nnn \str_case:nn { en } { F }
-\prg_generate_conditional_variant:Nnn \str_case_e:nn { en } { F }
-\prg_generate_conditional_variant:Nnn \str_if_eq:nn { ee } { T }
-\prg_generate_conditional_variant:Nnn \str_if_eq:nn { en } { T , TF }
+\prg_generate_conditional_variant:Nnn \tl_if_in:nn { nV } { F }
+\prg_generate_conditional_variant:Nnn \str_if_eq:nn { en , eV } { T }
\prop_new:N \g_jsonparse_entries_prop
\prop_new:N \l__jsonparse_temp_prop
@@ -115,21 +153,33 @@
\tl_new:N \l__jsonparse_val_tl
\tl_new:N \l__jsonparse_object_array_key_tl
\tl_new:N \l__jsonparse_object_array_val_tl
-\tl_new:N \l__jsonparse_array_prefix_tl
\tl_new:N \l__jsonparse_remainder_tl
\int_new:N \l__jsonparse_array_index_int
\int_new:N \l__jsonparse_array_count_int
\int_new:N \l__jsonparse_array_count_last_int
-\bool_new:N \l__prop_map_first_bool
+\bool_new:N \l__jsonparse_prop_map_first_bool
\ior_new:N \l__jsonparse_json_ior
% ===
-\cs_new:Npn \jsonparse_parse_to_prop:Nn #1#2 {
- \bool_if:NT \l_jsonparse_debug_mode_bool {
+\cctab_const:Nn \c__jsonparse_json_escape_cctab {
+ \char_set_catcode_group_begin:n { 123 } % left brace
+ \char_set_catcode_group_end:n { 125 } % right brace
+ \char_set_catcode_other:N b
+ \char_set_catcode_other:N f
+ \char_set_catcode_other:N n
+ \char_set_catcode_other:N r
+ \char_set_catcode_other:N t
+ \char_set_catcode_other:N u
+}
+
+% ===
+
+\cs_new_protected:Npn \jsonparse_parse_to_prop:Nn #1#2 {
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
\iow_newline:
Parsing ~ JSON ~ ...
@@ -137,41 +187,38 @@
}
\prop_gclear:N \g_jsonparse_entries_prop
\group_begin:
- \bool_if:NT \l_jsonparse_escape_input_bool {
- \tl_set_eq:NN \par \c_space_tl
- \tl_set:Nn \" { \exp_not:N \" }
- \tl_set:Nn \/ { \exp_not:N \/ }
- \tl_set:Nn \\ { \exp_not:N \\ }
+ \bool_if:NT \l__jsonparse_escape_full_bool {
+ \cs_set:Npn \b { \exp_not:N \b }
+ \cs_set:Npn \f { \exp_not:N \f }
+ \cs_set:Npn \n { \exp_not:N \n }
+ \cs_set:Npn \r { \exp_not:N \r }
+ \cs_set:Npn \t { \exp_not:N \t }
+ \cs_set:Npn \u { \exp_not:N \u }
+ }
+ \bool_if:NT \l__jsonparse_escape_basic_bool {
+ \cs_set:Npn \par { \c_space_tl }
+ \cs_set:Npn \" { \exp_not:N \" }
+ \cs_set:Npn \/ { \exp_not:N \/ }
+ \cs_set:Npn \\ { \exp_not:N \\ }
}
\jsonparse_parse:n {#2}
\group_end:
\prop_set_eq:NN #1 \g_jsonparse_entries_prop
- \bool_if:NT \l_jsonparse_debug_mode_bool {
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
JSON ~ parsing ~ done. \iow_newline:
}
}
}
-\cs_new:Npn \jsonparse_parse:n #1 {
+\cs_new_protected:Npn \jsonparse_parse:n #1 {
\tl_set:Ne \l__jsonparse_input_tl { \tl_trim_spaces:n {#1} }
\tl_if_head_is_group:eTF { \l__jsonparse_input_tl } {
\exp_last_unbraced:Ne
\__jsonparse_parse_object:w \l__jsonparse_input_tl \q_stop
} {
- \str_case_e:enF { \str_head_ignore_spaces:e { \l__jsonparse_input_tl } } {
- { [ } {
- \exp_last_unbraced:Ne
- \__jsonparse_parse_array_begin:w \l__jsonparse_input_tl \q_stop
- }
- { ] } {
- \exp_last_unbraced:Ne
- \__jsonparse_parse_array_end:w \l__jsonparse_input_tl \q_stop
- }
- { " } {
- \exp_last_unbraced:Ne
- \__jsonparse_parse_string_key:w \l__jsonparse_input_tl \q_stop
- }
+ \cs_if_exist_use:cTF { __jsonparse_parse_ \str_head_ignore_spaces:e { \l__jsonparse_input_tl } :w } {
+ \l__jsonparse_input_tl \q_stop
} {
% other
\exp_last_unbraced:Ne
@@ -184,34 +231,34 @@
\cs_new:Npn \__jsonparse_parse_object:w #1#2 \q_stop {
\__jsonparse_array_key_set:
- \tl_set:Ne \l__jsonparse_remainder_tl {#2}
+ \tl_set:Nn \l__jsonparse_remainder_tl {#2}
\group_begin:
% object begin
- \bool_if:NT \l_jsonparse_debug_mode_bool {
- \msg_log:nne { jsonparse } { debug-info } {
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
+ \msg_log:nnn { jsonparse } { debug-info } {
(obj ~ begin)
}
}
\tl_if_empty:NTF \l__jsonparse_key_tl {
- \tl_set:Ne \l__jsonparse_object_array_key_tl { \l_jsonparse_child_sep_str }
+ \tl_set_eq:NN \l__jsonparse_object_array_key_tl \l__jsonparse_child_sep_str
} {
- \tl_set:Ne \l__jsonparse_object_array_key_tl { \l__jsonparse_key_tl }
- \tl_set:Ne \l__jsonparse_prefix_tl { \l__jsonparse_key_tl \l_jsonparse_child_sep_str }
- \tl_set:Ne \l__jsonparse_val_tl {#1}
+ \tl_set_eq:NN \l__jsonparse_object_array_key_tl \l__jsonparse_key_tl
+ \tl_set:Ne \l__jsonparse_prefix_tl { \l__jsonparse_key_tl \l__jsonparse_child_sep_str }
+ \tl_set:Nn \l__jsonparse_val_tl {#1}
}
- \tl_set:Ne \l__jsonparse_object_array_val_tl { { #1 } }
+ \tl_set:Nn \l__jsonparse_object_array_val_tl { { #1 } }
\exp_args:Ne \jsonparse_parse:n {#1}
\prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_object_array_key_tl } { \l__jsonparse_object_array_val_tl }
- \bool_if:NT \l_jsonparse_debug_mode_bool {
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
(key) ~ \str_use:N \l__jsonparse_object_array_key_tl : \iow_newline:
\iow_char:N \ \iow_char:N \ (obj) ~ \str_use:N \l__jsonparse_object_array_val_tl
}
}
% object end
- \bool_if:NT \l_jsonparse_debug_mode_bool {
- \msg_log:nne { jsonparse } { debug-info } {
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
+ \msg_log:nnn { jsonparse } { debug-info } {
(obj ~ end)
}
}
@@ -219,23 +266,38 @@
\__jsonparse_parse_remainder:
}
+\cs_new:cpn { __jsonparse_parse_ [ :w } #1 \q_stop {
+ \exp_last_unbraced:Ne
+ \__jsonparse_parse_array_begin:w #1 \q_stop
+}
+
+\cs_new:cpn { __jsonparse_parse_ ] :w } #1 \q_stop {
+ \exp_last_unbraced:Ne
+ \__jsonparse_parse_array_end:w #1 \q_stop
+}
+
+\cs_new:cpn { __jsonparse_parse_ " :w } #1 \q_stop {
+ \exp_last_unbraced:Ne
+ \__jsonparse_parse_string_key:w #1 \q_stop
+}
+
\cs_new:Npn \__jsonparse_parse_array_begin:w [ #1 \q_stop {
\__jsonparse_array_key_set:
\group_begin:
- \tl_set:Ne \l__jsonparse_remainder_tl {#1}
+ \tl_set:Nn \l__jsonparse_remainder_tl {#1}
% array begin
- \bool_if:NT \l_jsonparse_debug_mode_bool {
- \msg_log:nne { jsonparse } { debug-info } {
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
+ \msg_log:nnn { jsonparse } { debug-info } {
(arr ~ begin)
}
}
\int_zero:N \l__jsonparse_array_index_int
- \bool_if:NT \l_jsonparse_array_index_zero_based_bool {
+ \bool_if:NT \l__jsonparse_array_index_zero_based_bool {
\int_decr:N \l__jsonparse_array_index_int
}
- \tl_set:Ne \l__jsonparse_object_array_key_tl { \l__jsonparse_key_tl }
+ \tl_set_eq:NN \l__jsonparse_object_array_key_tl \l__jsonparse_key_tl
\tl_set:Nn \l__jsonparse_object_array_val_tl { [ #1 }
- \tl_set:Ne \l__jsonparse_prefix_tl { \l__jsonparse_key_tl \l_jsonparse_array_sep_left_str }
+ \tl_set:Ne \l__jsonparse_prefix_tl { \l__jsonparse_key_tl \l__jsonparse_array_sep_left_str }
\__jsonparse_parse_remainder:
}
@@ -243,23 +305,23 @@
\tl_set:Ne \l__jsonparse_object_array_val_tl {
\tl_range:Nne \l__jsonparse_object_array_val_tl { 1 } {
\int_eval:n {
- -1 * \tl_count:e {#1} - 1
+ -1 * \tl_count:n {#1} - 1
}
}
}
\prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_object_array_key_tl } { \l__jsonparse_object_array_val_tl }
- \bool_if:NT \l_jsonparse_debug_mode_bool {
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
(key) ~ \str_use:N \l__jsonparse_object_array_key_tl : \iow_newline:
\iow_char:N \ \iow_char:N \ (arr) ~ \str_use:N \l__jsonparse_object_array_val_tl
}
}
\group_end:
- \tl_set:Ne \l__jsonparse_remainder_tl {#1}
+ \tl_set:Nn \l__jsonparse_remainder_tl {#1}
% array end
- \bool_if:NT \l_jsonparse_debug_mode_bool {
- \msg_log:nne { jsonparse } { debug-info } {
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
+ \msg_log:nnn { jsonparse } { debug-info } {
(arr ~ end)
}
}
@@ -267,32 +329,64 @@
}
\cs_new:Npn \__jsonparse_array_key_set: {
- \str_if_eq:eeT { \tl_item:Nn \l__jsonparse_prefix_tl { -1 } }
- { \l_jsonparse_array_sep_left_str } {
+ \str_if_eq:eVT {
+ \tl_range:Nen \l__jsonparse_prefix_tl {
+ \int_eval:n {
+ -1 * \tl_count:N \l__jsonparse_array_sep_left_str
+ }
+ } { -1 }
+ } \l__jsonparse_array_sep_left_str {
\int_incr:N \l__jsonparse_array_index_int
\tl_set:Ne \l__jsonparse_key_tl {
- \l__jsonparse_prefix_tl \int_use:N \l__jsonparse_array_index_int \l_jsonparse_array_sep_right_str
+ \l__jsonparse_prefix_tl \int_use:N \l__jsonparse_array_index_int \l__jsonparse_array_sep_right_str
}
}
}
\cs_new:Npn \__jsonparse_parse_string_key:w " #1 " #2 \q_stop {
\__jsonparse_array_key_set:
- \tl_set:Ne \l__jsonparse_remainder_tl {#2}
+ \tl_set:Ne \l__jsonparse_remainder_tl { \tl_trim_spaces:n {#2} }
% key or string?
- \str_if_eq:enTF { \tl_head:n { #2 } } { : } {
- \tl_remove_once:Ne \l__jsonparse_remainder_tl { \c_colon_str }
+ \tl_if_head_eq_charcode:eNTF { \l__jsonparse_remainder_tl } : {
+ \tl_remove_once:NV \l__jsonparse_remainder_tl \c_colon_str
+ \bool_if:NT \l__jsonparse_escape_full_bool {
+ \clist_map_inline:nn { \b , \f , \n , \r , \t , \u } {
+ \tl_if_in:nnT {#1} {##1} {
+ \msg_error:nne { jsonparse } { escape-in-key } {
+ \token_to_str:N ##1
+ }
+ }
+ }
+ }
\tl_set:Ne \l__jsonparse_key_tl { \l__jsonparse_prefix_tl #1 }
} {
\group_begin:
- \tl_set:Nn \" { " }
- \tl_set:Nn \/ { / }
- \tl_set:Nn \\ { \c_backslash_str }
- \tl_set:Ne \l__jsonparse_val_tl {#1}
+ \bool_if:NT \l__jsonparse_escape_full_bool {
+ \cs_set:Npn \b { \l__jsonparse_backspace_str }
+ \cs_set:Npn \f { \l__jsonparse_formfeed_str }
+ \cs_set:Npn \n { \l__jsonparse_linefeed_str }
+ \cs_set:Npn \r { \l__jsonparse_carriage_return_str }
+ \cs_set:Npn \t { \l__jsonparse_horizontal_tab_str }
+ \cs_set:Npn \u { \char" }
+ }
+ \bool_if:NT \l__jsonparse_escape_basic_bool {
+ \cs_set:Npn \" { " }
+ \cs_set:Npn \/ { / }
+ \cs_set:Npn \\ { \c_backslash_str }
+ }
+ \tl_set:Nn \l__jsonparse_val_tl {#1}
+ \bool_if:NT \l__jsonparse_escape_full_bool {
+ \tl_replace_all:Nen \l__jsonparse_val_tl { \char_generate:nn { 98 } { 12 } } { b }
+ \tl_replace_all:Nen \l__jsonparse_val_tl { \char_generate:nn { 102 } { 12 } } { f }
+ \tl_replace_all:Nen \l__jsonparse_val_tl { \char_generate:nn { 110 } { 12 } } { n }
+ \tl_replace_all:Nen \l__jsonparse_val_tl { \char_generate:nn { 114 } { 12 } } { r }
+ \tl_replace_all:Nen \l__jsonparse_val_tl { \char_generate:nn { 116 } { 12 } } { t }
+ \tl_replace_all:Nen \l__jsonparse_val_tl { \char_generate:nn { 117 } { 12 } } { u }
+ }
\prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
% string
- \bool_if:NT \l_jsonparse_debug_mode_bool {
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
(key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
\iow_char:N \ \iow_char:N \ (str) ~ \str_use:N \l__jsonparse_val_tl
@@ -305,71 +399,26 @@
\cs_new:Npn \__jsonparse_parse_other:w #1 \q_stop {
\__jsonparse_array_key_set:
- \tl_set:Ne \l__jsonparse_remainder_tl {#1}
- \tl_set:Ne \l__jsonparse_temp_tl { #1 , }
+ \tl_set:Nn \l__jsonparse_remainder_tl {#1}
+ \tl_set:Nn \l__jsonparse_temp_tl { #1 , }
\tl_replace_once:Nnn \l__jsonparse_temp_tl { ] } { , }
\exp_last_unbraced:Ne
\__jsonparse_parse_other_aux:w \l__jsonparse_temp_tl \q_stop
}
\cs_new:Npn \__jsonparse_parse_other_aux:w #1 , #2 \q_stop {
- \tl_set:Ne \l__jsonparse_temp_tl {#1}
- \str_case:enF {
- \str_lowercase:f { \l__jsonparse_temp_tl }
- } {
- { true } {
- \tl_set:Ne \l__jsonparse_val_tl {
- \l_jsonparse_true_str
- }
- \prop_gput:Nee \g_jsonparse_entries_prop
- { \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
- % true
- \bool_if:NT \l_jsonparse_debug_mode_bool {
- \msg_log:nne { jsonparse } { debug-info } {
- (key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
- \iow_char:N \ \iow_char:N \ (tru) ~ \str_use:N \l__jsonparse_val_tl
- }
- }
- }
- { false } {
- \tl_set:Ne \l__jsonparse_val_tl {
- \l_jsonparse_false_str
- }
- \prop_gput:Nee \g_jsonparse_entries_prop
- { \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
- % false
- \bool_if:NT \l_jsonparse_debug_mode_bool {
- \msg_log:nne { jsonparse } { debug-info } {
- (key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
- \iow_char:N \ \iow_char:N \ (fal) ~ \str_use:N \l__jsonparse_val_tl
- }
- }
- }
- { null } {
- \tl_set:Ne \l__jsonparse_val_tl {
- \l_jsonparse_null_str
- }
- \prop_gput:Nee \g_jsonparse_entries_prop
- { \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
- % null
- \bool_if:NT \l_jsonparse_debug_mode_bool {
- \msg_log:nne { jsonparse } { debug-info } {
- (key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
- \iow_char:N \ \iow_char:N \ (nul) ~ \str_use:N \l__jsonparse_val_tl
- }
- }
- }
- } {
- \fp_compare:nNnTF {#1} ? { 0 } {
+ \tl_set:Nn \l__jsonparse_temp_tl {#1}
+ \cs_if_exist_use:cF { __jsonparse_parse_ \str_casefold:e { \l__jsonparse_temp_tl } : } {
+ \fp_if_nan:nTF {#1} {
% nan
\msg_error:nnee { jsonparse } { parsing-error }
{ \l__jsonparse_key_tl } {#1}
} {
- \tl_set:Ne \l__jsonparse_val_tl {#1}
+ \tl_set:Nn \l__jsonparse_val_tl {#1}
\prop_gput:Nee \g_jsonparse_entries_prop
{ \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
% number
- \bool_if:NT \l_jsonparse_debug_mode_bool {
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
\msg_log:nne { jsonparse } { debug-info } {
(key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
\iow_char:N \ \iow_char:N \ (num) ~ \str_use:N \l__jsonparse_val_tl
@@ -377,20 +426,59 @@
}
}
}
- \tl_set:Ne \l__jsonparse_remainder_tl { \tl_trim_spaces:V \l__jsonparse_remainder_tl }
+ \tl_set:Ne \l__jsonparse_remainder_tl { \tl_trim_spaces:e { \l__jsonparse_remainder_tl } }
\tl_set:Ne \l__jsonparse_remainder_tl {
\tl_range:Nen \l__jsonparse_remainder_tl {
\int_eval:n {
- \tl_count:e { #1 } + 1
+ \tl_count:n {#1} + 1
}
} { -1 }
}
\__jsonparse_parse_remainder:
}
+\cs_new:Npn \__jsonparse_parse_true: {
+ \tl_set_eq:NN \l__jsonparse_val_tl \l__jsonparse_true_str
+ \prop_gput:Nee \g_jsonparse_entries_prop
+ { \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
+ % true
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
+ \msg_log:nne { jsonparse } { debug-info } {
+ (key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
+ \iow_char:N \ \iow_char:N \ (tru) ~ \str_use:N \l__jsonparse_val_tl
+ }
+ }
+}
+
+\cs_new:Npn \__jsonparse_parse_false: {
+ \tl_set_eq:NN \l__jsonparse_val_tl \l__jsonparse_false_str
+ \prop_gput:Nee \g_jsonparse_entries_prop
+ { \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
+ % false
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
+ \msg_log:nne { jsonparse } { debug-info } {
+ (key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
+ \iow_char:N \ \iow_char:N \ (fal) ~ \str_use:N \l__jsonparse_val_tl
+ }
+ }
+}
+
+\cs_new:Npn \__jsonparse_parse_null: {
+ \tl_set_eq:NN \l__jsonparse_val_tl \l__jsonparse_null_str
+ \prop_gput:Nee \g_jsonparse_entries_prop
+ { \l__jsonparse_key_tl } { \l__jsonparse_val_tl }
+ % null
+ \bool_if:NT \l__jsonparse_debug_mode_bool {
+ \msg_log:nne { jsonparse } { debug-info } {
+ (key) ~ \str_use:N \l__jsonparse_key_tl : \iow_newline:
+ \iow_char:N \ \iow_char:N \ (nul) ~ \str_use:N \l__jsonparse_val_tl
+ }
+ }
+}
+
\cs_new:Npn \__jsonparse_parse_remainder: {
- \tl_set:Ne \l__jsonparse_remainder_tl { \tl_trim_spaces:V \l__jsonparse_remainder_tl }
- \str_if_eq:enT { \tl_head:N \l__jsonparse_remainder_tl } { , } {
+ \tl_set:Ne \l__jsonparse_remainder_tl { \tl_trim_spaces:e { \l__jsonparse_remainder_tl } }
+ \tl_if_head_eq_charcode:eNT { \l__jsonparse_remainder_tl } , {
\tl_remove_once:Nn \l__jsonparse_remainder_tl { , }
}
\tl_if_empty:NF \l__jsonparse_remainder_tl {
@@ -398,18 +486,19 @@
}
}
-\cs_new:Npn \jsonparse_filter:Nn #1#2 {
+\cs_new_protected:Npn \jsonparse_filter:Nn #1#2 {
+ \prop_clear:N \l__jsonparse_temp_prop
\prop_map_inline:Nn #1 {
\str_case_e:en {
- \tl_range:nne {##1} { 1 } { \int_eval:n { \tl_count:e {#2} + 1 } }
+ \tl_range:nne {##1} { 1 } { \int_eval:n { \tl_count:n {#2} + 1 } }
} {
- { #2 \l_jsonparse_child_sep_str } {
+ { #2 \l__jsonparse_child_sep_str } {
\prop_put:Nee \l__jsonparse_temp_prop
- { \tl_range:nen {##1} { \int_eval:n { \tl_count:e {#2} + 2 } } { -1 } } {##2}
+ { \tl_range:nen {##1} { \int_eval:n { \tl_count:n {#2} + 2 } } { -1 } } {##2}
}
- { #2 \l_jsonparse_array_sep_left_str } {
+ { #2 \l__jsonparse_array_sep_left_str } {
\prop_put:Nee \l__jsonparse_temp_prop
- { \tl_range:nen {##1} { \int_eval:n { \tl_count:e {#2} + 1 } } { -1 } } {##2}
+ { \tl_range:nen {##1} { \int_eval:n { \tl_count:n {#2} + 1 } } { -1 } } {##2}
}
}
}
@@ -418,43 +507,71 @@
% ===
-\NewExpandableDocumentCommand { \JSONParse } { m +m } {
+\NewDocumentCommand { \JSONParse } { m +m } {
+ \tl_if_eq:enT { \tl_head:n {#2} } { \JSONParseValue } {
+ \msg_error:nn { jsonparse } { nested-non-expandable }
+ }
\prop_new:N #1
\jsonparse_parse_to_prop:Nn #1 {#2}
}
-\NewExpandableDocumentCommand { \JSONParseFromFile } { m m } {
- \ior_open:Nn \l__jsonparse_json_ior {#2}
-
+\NewDocumentCommand { \JSONParseFromFile } { m m } {
+ \file_if_exist:nF {#2} {
+ \msg_error:nnn { jsonparse } { file-not-found }
+ {#2}
+ }
\tl_clear:N \l__jsonparse_json_tl
- \ior_map_inline:Nn \l__jsonparse_json_ior {
- \tl_put_right:Nn \l__jsonparse_json_tl {##1}
+ \bool_if:NTF \l__jsonparse_escape_full_bool {
+ \file_get:nnN {#2} { \cctab_select:N \c__jsonparse_json_escape_cctab } \l__jsonparse_json_tl
+ } {
+ \file_get:nnN {#2} { } \l__jsonparse_json_tl
}
-
- \ior_close:N \l__jsonparse_json_ior
-
\prop_new:N #1
\jsonparse_parse_to_prop:Nn #1 { \l__jsonparse_json_tl }
}
-\NewExpandableDocumentCommand { \JSONParseGetValue } { s m m } {
+\NewExpandableDocumentCommand { \JSONParseExpandableValue } { m m } {
+ \prop_item:Ne #1 {#2}
+}
+
+\NewDocumentCommand { \JSONParseValue } { s m m } {
\bool_if:NTF #1 {
- \tl_rescan:ne { } { \prop_item:Nn #2 {#3} }
+ \tl_rescan:ne { } { \prop_item:Ne #2 {#3} }
} {
- \prop_item:Nn #2 {#3}
+ \prop_item:Ne #2 {#3}
+ }
+}
+
+\NewDocumentCommand { \JSONParseKeys } { m m } {
+ \tl_if_exist:NF #2 {
+ \tl_new:N #2
}
+ \bool_set_true:N \l__jsonparse_prop_map_first_bool
+ \tl_set:Nn \l__jsonparse_temp_tl { [ }
+ \prop_map_inline:Nn #1 {
+ \tl_if_in:nVF {##1} \l__jsonparse_child_sep_str {
+ \bool_if:NTF \l__jsonparse_prop_map_first_bool {
+ \bool_set_false:N \l__jsonparse_prop_map_first_bool
+ } {
+ \tl_put_right:Nn \l__jsonparse_temp_tl { , }
+ }
+ \tl_put_right:Nn \l__jsonparse_temp_tl { " ##1 " }
+ }
+ }
+ \tl_put_right:Nn \l__jsonparse_temp_tl { ] }
+ \tl_set_eq:NN #2 \l__jsonparse_temp_tl
}
-\NewExpandableDocumentCommand { \JSONParseGetArrayValues } { s m m O{} m } {
+\NewDocumentCommand { \JSONParseArrayValues } { s m m O{} m } {
\group_begin:
\jsonparse_filter:Nn #2 {#3}
- \bool_set_true:N \l__prop_map_first_bool
+ \bool_set_true:N \l__jsonparse_prop_map_first_bool
\prop_map_inline:Nn #2 {
\str_if_eq:enT {
\tl_range:nen {##1} { \int_eval:n { -1 * \tl_count:n {#4} } } { -1 }
} {#4} {
- \bool_if:NTF \l__prop_map_first_bool {
- \bool_set_false:N \l__prop_map_first_bool
+ \bool_if:NTF \l__jsonparse_prop_map_first_bool {
+ \bool_set_false:N \l__jsonparse_prop_map_first_bool
} {
#5
}
@@ -472,7 +589,7 @@
#1
}
-\NewExpandableDocumentCommand { \JSONParseGetArrayCount } { m m } {
+\NewDocumentCommand { \JSONParseArrayCount } { m m } {
\group_begin:
\jsonparse_filter:Nn #1 {#2}
\int_zero:N \l__jsonparse_array_count_int
@@ -491,7 +608,7 @@
\group_end:
}
-\NewExpandableDocumentCommand { \JSONParseUseArrayValues } { s m m O{} m } {
+\NewDocumentCommand { \JSONParseArrayValuesMap } { s m m O{} m } {
\group_begin:
\jsonparse_filter:Nn #2 {#3}
\prop_map_inline:Nn #2 {
@@ -500,7 +617,7 @@
} {#4} {
\int_incr:N \l__jsonparse_array_index_int
\tl_set:Ne \JSONParseArrayIndex { \__jsonparse_get_array_index:w ##1 \q_stop }
- \tl_set:Ne \JSONParseArrayKey { ##1 }
+ \tl_set:Ne \JSONParseArrayKey {##1}
\bool_if:NTF #1 {
\tl_set_rescan:Nne \JSONParseArrayValue { } { \prop_item:Nn #2 {##1} }
} {
diff --git a/macros/latex/contrib/tuda-ci/README.md b/macros/latex/contrib/tuda-ci/README.md
index 96aefe2a35..f3f8de560e 100644
--- a/macros/latex/contrib/tuda-ci/README.md
+++ b/macros/latex/contrib/tuda-ci/README.md
@@ -2,7 +2,7 @@
Copyright (C) Marei Peischl <marei@peitex.de>, 2018–2024
- tuda-ci v3.36 (2024-01-05)
+ tuda-ci v3.37 (2024-04-21)
***************************************************************************
@@ -344,14 +344,17 @@ leaflets | DEMO-TUDaLeaflet.tex | tudaleaflet.cls
- Fix bug in calculation of points using subtasks in tudaexercise
* 3.32 (2023-06-19)
- remove affidavit=print
- * 3.33 (2023-07-05)
+ * 3.33 (2023-07-05)
- disable affidavit by default, see https://github.com/tudace/tuda_latex_templates/issues/432 for more information
- rename color={} option of tudabeamer to tudacolors={} to avoid conflicts with siunitx
- * 3.34 (2023-07-12)
- - fix typo in affidavit
- * 3.35 (2023-12-11)
- - first CTAN release of the new slide layout
- - fix issues with headwidth calculation if custommargins=true is used
- * 3.36 (2024-01--05)
- - compatibility to create PDF/A via pdfmangement
- - small adjustments for \tuprints \ No newline at end of file
+ * 3.34 (2023-07-12)
+ - fix typo in affidavit
+ * 3.35 (2023-12-11)
+ - first CTAN release of the new slide layout
+ - fix issues with headwidth calculation if custommargins=true is used
+ * 3.36 (2024-01-05)
+ - compatibility to create PDF/A via pdfmangement
+ - small adjustments for \tuprints
+ * 3.37 (2024-04-21)
+ - refactoring the bundle
+ - small layout adjustments and bugfixes
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
index 4a11fad655..e59b22b57e 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaAnnouncement.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
index 4029255838..0ab6952c8f 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf
index 316ed08c25..dbde310191 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaBeamer2023.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
index 4d76ed4220..21defaf2a0 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaExercise.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
index 1463f7cdb2..25f1ce243c 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLeaflet.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
index d02fc33ead..ce33e4ba24 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaLetter.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
index b3159b7d0d..1ddf6f90b6 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
index e12f68841b..0986455f21 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
index 11f5502ce6..02f0788605 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
index 129f77376b..7ed32cae75 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaReport.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
index 7769fbfe05..fc351f0054 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaSciPoster.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
index b044a06332..4633b07055 100644
--- a/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
+++ b/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaThesis.pdf
Binary files differ
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
index 137a5842a7..2a2ae6c882 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaAnnouncement.tex
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaAnnouncement.tex' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaAnnouncement-de.tex' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
index f4baeae9ff..f653c25bbb 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaBeamer.tex' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaBeamer-de.tex' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -22,7 +22,7 @@
%% The development respository can be found at
%% https://github.com/tudace/tuda_latex_templates
%% Please use the issue tracker for feedback!
-%%
+%%
%% If you need a compiled version of this document, have a look at
%% http://mirror.ctan.org/macros/latex/contrib/tuda-ci/doc
%% or at the documentation directory of this package (if installed)
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex
index fcede80707..b3bf05ce30 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer2023.tex
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaBeamer2023.tex' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaBeamer2023.tex' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -96,6 +96,8 @@
\begin{itemize}
\item The commands shown on previous slide support \code{\textbackslash{}height}/\code{\textbackslash{}width} to adjust the size to be used for graphic scaling.
\item All have a starred variant (e.\,g. \code{\textbackslash{}sublogo*\{\textbackslash{}includegraphics\{example-image\}\}}). This will automaticcaly scale/clip the logo/image to desired size.
+
+To align the sublogo together with the visible part of the TUDa logo there also exists the possibility to add a second star behind the mandatory argument. This will move the logo to the left to match. This variant is only available for the sublogo.
\end{itemize}
\end{frame}
@@ -116,6 +118,18 @@ Please be also aware of beamer's mechanism to filter the toc, e.g. by \code{\tex
An example.
\end{frame}
+\begin{frame}[fragile,uppercase=false]{Please be aware of uppercase frametitles}
+The mechanism to provide uppercase frame titles might have strange side effects.
+It's aware of macros, so those usually should work, but there are issues with arguments. e.g. using \verb+\color{dark2}+ will throw an error message.
+
+You can avoic this by either locally disabling the case change:
+
+\begin{verbatim}
+\frameztitle{Test \NoCaseChange{\textcolor{dark2}{\MakeUppercase{Test}}}}
+\end{verbatim}
+or use the frame option \verb+uppercase=false+ as for this frame or the class option \verb+uppercase-frametitle=false+
+\end{frame}
+
\textcolor{TUDa-dark1}{test}
\begin{frame}{Color Scheme}
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
index 3a90331cde..b516931fb1 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaBibliography.bib
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaBibliography.bib' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaBibliography.bib' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -74,4 +74,4 @@
date={2021-10-12},
url={http://mirrors.ctan.org/macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf},
urldate={2021-10-12}
-} \ No newline at end of file
+}
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
index ca0a904ffb..f019e9011e 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaExercise.tex
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaExercise.tex' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaExercise-de.tex' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
index 1a33aced46..3046285e53 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaFromaddress.lco
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaFromaddress.lco' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaFromaddress.lco' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
index c7662dbcdf..6f0fc6c977 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaLeaflet.tex' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaLeaflet-de.tex' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -139,4 +139,4 @@ zur Verfügung. Es fügt die Box an der entsprechenden Position ein. Allerdings
\printbibliography
-\end{document} \ No newline at end of file
+\end{document}
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
index 85131892ef..6a6ad17e66 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaLetter.tex
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaLetter.tex' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaLetter-de.tex' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
index 78da18f4f5..a2c4a6c39c 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPhD.tex
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaPhD.tex' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaPhD-de.tex' version 3.37 (2024-04-21)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -31,177 +31,128 @@
%%
% !TeX program = lualatex
%%
+% PDF/A über pdfmanagement und nicht über pdfx
+\DocumentMetadata{
+ pdfstandard=a-2b,
+ pdfversion=1.7,% 2.0 geht auch, aber die meisten Validierungsprogramme unterstützen das noch nicht.
+}
\documentclass[
- ngerman,
+ german,% Hauptsprache als globale Option, früher war ngerman notwendig
ruledheaders=chapter,% Ebene bis zu der die Überschriften mit Linien abgetrennt werden, vgl. DEMO-TUDaPub
- class=book,% Basisdokumentenklasse. Wählt die Korrespondierende KOMA-Script Klasse
- thesis={
- % Für kleinere Abschlussarbeiten Siehe DEMO-TUDaThesis
- type=dr,
- dr=rernat
- },
+ class=book,% Basisdokumentenklasse. Wählt die korrespondierende KOMA-Script Klasse
+ thesis={% Dokumententyp PhD Thesis, für kleinere Abschlussarbeiten, siehe DEMO-TUDaThesis-de.tex
+ type=dr,
+ dr=rernat
+ },
accentcolor=9c,% Auswahl der Akzentfarbe
custommargins=true,% Ränder werden mithilfe von typearea automatisch berechnet
marginpar=false,% Kopfzeile und Fußzeile erstrecken sich nicht über die Randnotizspalte
- %BCOR=5mm,%Bindekorrektur, falls notwendig
-% parskip=half-,%Absatzkennzeichnung durch Abstand vgl. KOMA-Script
- fontsize=11pt,%Basisschriftgröße laut Corporate Design ist mit 9pt häufig zu klein
-% logofile=example-image, %Falls die Logo Dateien nicht vorliegen
+% BCOR=5mm,% Bindekorrektur
+ parskip=half-,% Absatzkennzeichnung durch Abstand vgl. KOMA-Script
+ fontsize=11pt,% Basisschriftgröße laut Corporate Design ist mit 9pt häufig zu klein
+% logofile=example-image,% Falls die Logo Dateien nicht vorliegen
]{tudapub}
-
-% Der folgende Block ist nur bei pdfTeX auf Versionen vor April 2018 notwendig
-\usepackage{iftex}
-\ifPDFTeX
- \usepackage[utf8]{inputenc}%kompatibilität mit TeX Versionen vor April 2018
-\fi
-
%%%%%%%%%%%%%%%%%%%
-%Sprachanpassung & Verbesserte Trennregeln
+% Spracheinstellungen
%%%%%%%%%%%%%%%%%%%
\usepackage[english, main=ngerman]{babel}
-\usepackage[autostyle]{csquotes}% Anführungszeichen vereinfacht
+\usepackage[autostyle]{csquotes}% Sprachabhängig Anführungszeichen mit \enquote
% Falls mit pdflatex kompiliert wird, wird microtype automatisch geladen, in diesem Fall muss diese Zeile entfernt werden, und falls weiter Optionen hinzugefügt werden sollen, muss dies über
% \PassOptionsToPackage{Optionen}{microtype}
% vor \documentclass hinzugefügt werden.
\usepackage{microtype}
-
%%%%%%%%%%%%%%%%%%%
-%Literaturverzeichnis
+% Literaturverzeichnis
%%%%%%%%%%%%%%%%%%%
-\usepackage{biblatex} % Literaturverzeichnis
-\bibliography{DEMO-TUDaBibliography}
-
+\usepackage{biblatex}
+\addbibresource{DEMO-TUDaBibliography}% Dateiname der .bib-datei
%%%%%%%%%%%%%%%%%%%
-%Paketvorschläge Tabellen
+% Paketvorschläge Tabellen
%%%%%%%%%%%%%%%%%%%
-%\usepackage{array} % Basispaket für Tabellenkonfiguration, wird von den folgenden automatisch geladen
-\usepackage{tabularx} % Tabellen, die sich automatisch der Breite anpassen
-%\usepackage{longtable} % Mehrseitige Tabellen
-%\usepackage{xltabular} % Mehrseitige Tabellen mit anpassarer Breite
-\usepackage{booktabs} % Verbesserte Möglichkeiten für Tabellenlayout über horizontale Linien
+\usepackage{array}% Grundlegendes Ergänzungspaket für Tabellen. Wird von den folgenden Paketen indirekt geladen
+%\usepackage{tabularx}% Tabellen mit fester Breite und entsprechend umbrechenden Spalten
+%\usepackage{longtable}% Mehrseitige Tabellen
+%\usepackage{xltabular}% Mehrseitige Tabellen mit fester Breite
+%\usepackage{booktabs}% Verbesserte Möglichkeiten für Tabellenlayout über horizontale Linien
%%%%%%%%%%%%%%%%%%%
-%Paketvorschläge Mathematik
+% Paketvorschläge Mathematik/Formelsatz
%%%%%%%%%%%%%%%%%%%
-%\usepackage{mathtools} % erweiterte Fassung von amsmath
-%\usepackage{amssymb} % erweiterter Zeichensatz
-%\usepackage{siunitx} % Einheiten
+%\usepackage{mathtools}% Erweiterte Fassung von amsmath
+%\usepackage{amssymb}% Erweiterter Zeichensatz
+%\usepackage{siunitx}% Werte und Einheiten
-%Formatierungen für Beispiele in diesem Dokument. Im Allgemeinen nicht notwendig!
+%%%%%%%%%%%%%%%%%%%
+% Formatierungen für Beispiele in diesem Dokument. Im Allgemeinen nicht notwendig!
+%%%%%%%%%%%%%%%%%%%
\let\file\texttt
\let\code\texttt
\let\tbs\textbackslash
\let\pck\textsf
\let\cls\textsf
+\biburlsetup
+\usepackage{tabularx,booktabs}%Tabellenpakete (siehe oben)
\usepackage{pifont}% Zapf-Dingbats Symbole
\newcommand*{\FeatureTrue}{\ding{52}}
\newcommand*{\FeatureFalse}{\ding{56}}
-
+%%%%%%%%%%%%%%%%%%%
+% Ende der Demo-Formatierungseinstellungen
+%%%%%%%%%%%%%%%%%%%
\begin{document}
-\Metadata{
- title=TUDaPhD - LaTeX-Dissertationstemplate im CD der TU Darmstadt,
- author=Marei Peischl
-}
+\title{TUDaPhD -- \LaTeX-Dissertationstemplate im CD der TU Darmstadt}
+\subtitle{\LaTeX{} using TU Darmstadt's Corporate Design}
+\author{Marei Peischl}
+% \birthplace{Geburtsort}
+\reviewer{Reviewer 1 \and Reviewer 2 \and … }
+% Falls die Bezeichner entsprechend der Promotionsordnung angepasst werden sollen
+% \reviewer*[Erstreferent\_in,Korreferent\_in]{Gutachter 1 \and Gutachter 2}
+% \publishers{Darmstadt, Technische Universität Darmstadt}
+% Feld für die Ortsangabe oder einen Verlag. Dies ist nach Vorgabe der Universitätsbibiliothek mit „Darmstadt, Technische Universität Darmstadt“ vorbelegt.
-\frontmatter
+% Sofern keine passende Option verfügbar ist:
+% \drtext{}
-\title{TUDaPhD -- \LaTeX-Dissertationstemplate im CD der TU Darmstadt}
-\subtitle{\LaTeX{} using TU Darmstadt's Corporate Design}
-\author[M. Peischl]{Marei Peischl}%optionales Argument ist die Signatur,
-\birthplace{Geburtsort}%Geburtsort, bei Dissertationen zwingend notwendig
-\reviewer{Gutachter 1 \and Gutachter 2 \and noch einer \and falls das immernoch nicht reicht}%Gutachter
-%Falls die Bezeichner entsprechend der Promotionsordnung angepasst werden sollen:
-%\reviewer*[Erstreferent\_in,Koreferent\_in]{Gutachter 1 \and Gutachter 2}
-%\publishers{}% Feld für die Ortsangabe oder einen Verlag. Dies ist mit „Darmstadt, Technische Universität Darmstadt“ vorbelegt. Die Vorgabe stammt von der Universitätsbibliothek.
-
-%%Sofern keine passende Option verfügbar ist
-%\drtext{}
-
-%Diese Felder werden untereinander auf der Titelseite platziert.
-%\department ist eine notwendige Angabe, siehe auch dem Abschnitt `Abweichung von den Vorgaben für die Titelseite'
-\department{phys} %Kürzel werden entsprechend der Liste in diesem Dokument ersetzt.
+% Diese Felder werden untereinander auf der Titelseite platziert.
+% \department ist eine notwendige Angabe, siehe auch dem Abschnitt `Abweichung von den Vorgaben für die Titelseite'
+\department{phys}% Das Kürzel wird automatisch ersetzt sofern der Fachbereich vordefiniert ist.
\institute{Institut}
\group{Arbeitsgruppe}
\submissiondate{\today}
\examdate{\today}
-% Hinweis zur Lizenz:
-% TUDa-CI verwendet momentan die Lizenz CC BY-NC-ND 2.0 DE als Voreinstellung.
-% Die TU Darmstadt hat jedoch die Empfehlung von dieser auf die liberalere
-% CC BY 4.0 geändert. Diese erlaubt eine Verwendung bearbeiteter Versionen und
-% die kommerzielle Nutzung.
-% TUDa-CI wird im nächsten größeren Release ebenfalls diese Anpassung vornehmen.
-% Aus diesem Grund wird empfohlen die Lizenz manuell auszuwählen.
-\tuprints{urn=XXXXX,printid=XXXX,year=2022,license=cc-by-4.0}
-% To see further information on the license option in English, remove the license= key and pay attention to the warning & help message.
-
-\dedication{For \TeX{} \& Friends}
+%\tuprints{urn=XXXXX,printid=XXXX,year=2022,license=cc-by-4.0}% Lizenzdaten für TUprints
+\dedication{Für alle, die \TeX{} nutzen.}
\maketitle
-
-\affidavit
-
-\addchap{Vorwort -- Über diese Datei}
-Die Datei \file{DEMO-TUDaPhD.tex} beziehungsweise ihre Ausgabe \file{DEMO-TUDaPhD.pdf} ist ein Template für Abschlussarbeiten im Stil des Corporate Designs der TU Darmstadt.
-Sie ist Teil des TUDa-CI-Bundles und basiert in Teilen auf dem tuddesign-Paket von C.~v.~Loewenich und J.~Werner.
-
-Sie verwendet die Dokumentenklasse \file{tudapub.cls}, allerdings mit erweiterten Einstellungen. In diesem Dokument werden überwiegend die speziell auf Abschlussarbeiten ausgelegten Möglichkeiten beschrieben. Weitere Konfigurationsmöglichkeiten finden sich in der Datei \file{DEMO-TUDaPub.pdf} \cite{tudapub}.
-
-Es ist voreingestellt, dass eine PDF/A-Datei erzeugt wird. Die beste Kompatibilität hierfür bietet Lua\LaTeX. Bei anderen Compilern kann dies entsprechend der Angaben in DEMO-TUDaPub zu Problemen führen. In diesem Fall sollte entweder der Compiler gewechselt oder \code{pdfa=false} aktiviert werden.
-
-Für weitere Hinweise kann ein Blick in die zur Dokumentenklasse gehörigen Dokumentation (DEMO-TUDaPub.pdf) hilfreich sein. Sie wird zusammen mit den Quelldateien verteilt.
-
-\minisec{Unterschiede der Demodateien DEMO-TUDaThesis und DEMO-TUDaPhD}
-Zwar basieren alle drei DEMO-Dateien auf der Klasse \code{tudapub}, allerdings sind die Basiseinstelungen dem Dokumententyp angepasst.
-Für Erläuterungen zu den TUDaPub spezifischen Optionen, sei auf die Datei DEMO-TUDaPub verwiesen.
-Da die Basisklasse für beide identisch ist, kann jede Option abgeändert werden. Die Folgende Liste zeigt lediglich die gezeigten Features bei Standardeinstellungen.
-
-\noindent\begin{tabularx}{\linewidth}{@{}p{.25\linewidth}*3{>{\centering\arraybackslash}X}@{}}
- \toprule
- Option&DEMO-TUDaThesis&DEMO-TUDaPhD&DEMO-TUDapub\\
- \midrule
- twoside&\FeatureFalse&\FeatureTrue&\FeatureFalse\\\midrule
- parskip&\FeatureTrue&\FeatureFalse&\FeatureTrue\\\midrule
- Kolophon&\FeatureFalse&\FeatureTrue&\FeatureFalse\\\midrule
- Widmung&\FeatureFalse&\FeatureTrue&\FeatureFalse\\\midrule
- Schriftgröße&11pt&11pt&9pt\\\midrule
- ruledheaders&section&chapter&all\\\midrule
- Basisklasse&scrreprt&scrbook&scrartcl\\\midrule
- thesis&\ttfamily type=bachelor&\ttfamily type=dr, dr=rernat
- &\FeatureFalse\\\midrule
- marginpar&\FeatureFalse&\FeatureFalse&\FeatureTrue\\\midrule
- Affidavit\newline\rlap{(Selbstständigkeitserklärung)}&\FeatureTrue&\FeatureTrue&\FeatureFalse\\\midrule
- abstract&\FeatureFalse&\FeatureTrue&\FeatureTrue\\\midrule
- custommargins&\FeatureTrue&\FeatureTrue&\FeatureFalse\\
- \bottomrule
-\end{tabularx}
-
-
-
+\affidavit% Selbstständigkeitserklärung
\begin{abstract}
- Deutsche Zusammenfassung
+ Zusammenfassung in der Hauptsprache des Dokuments (hier Deutsch)
\end{abstract}
\begin{abstract}[english]
- Englische Zusammenfassung, falls benötigt
+ Abstract in another loaded language (here English), in case it's required.
\end{abstract}
\tableofcontents
-
-%Weitere Verzeichnisse wie \listoffigures oder ein Abkürzungsverzeichnis
+% Ggf. weitere Verzeichnisse wie \listoffigures oder ein Abkürzungsverzeichnis
\mainmatter
+\addchap{Über diese Datei}
+Die Datei \file{DEMO-TUDaPhD.tex} beziehungsweise ihre Ausgabe \file{DEMO-TUDaPhD.pdf} ist ein Template für Abschlussarbeiten im Stil des Corporate Designs der TU Darmstadt.
+Sie ist Teil des TUDa-CI-Bundle und wurde in Teilen durch das tuddesign-Paket von C.~v.~Loewenich und J.~Werner inspiriert.
+
+
\chapter{Verwendung}
Die Klasse kann wie für Dokumentenklassen üblich eingebunden werden
@@ -222,7 +173,7 @@ TUDa-CI verwendet hierfür das babel-Paket.
Dies wird jedoch nicht automatisch geladen, da hierfür die Konfiguration der Sprachen bekannt sein müsste. Die Demo-Dateien für Abschlussarbeiten (\file{DEMO-TUDaThesis.tex}/""\file{DEMO-TUDaPhD.tex}) laden hierfür die Konfiguration:
\begin{verbatim}
- \usepackage[english, main=ngerman]{babel}
+ \usepackage[english, main=ngerman]{babel}
\end{verbatim}
Diese ist für ein Dokument mit Deutsch als Hauptsprache und Englischen Elementen.
Die Hauptsprache wird als Wert der Option \verb+main=+ übergeben.
@@ -231,14 +182,14 @@ Für eine bessere Übersichtlichkeit ist es dennoch hilfreich es dort aufzuführ
Falls die Hauptsprache nicht Deutsch ist, wäre daher die folgende Konfiguration sinnvoll:
\begin{verbatim}
- \usepackage[ngerman, main=<Hauptsprache>]{babel}
+ \usepackage[ngerman, main=<Hauptsprache>]{babel}
\end{verbatim}
\section{Übergabe der Titeldaten}
Die Daten werden analog zur klassischen Titeleierzeugung mit \verb+\maketitle+ übergeben. Allerdings wurden die Felder um ein paar speziellere Daten erweitert. Sofern nicht anders angegeben, verfügen alle Makros über ein notwendiges Argument für die Datenübergabe, z.\,B.
\begin{verbatim}
- \title{\LaTeX{} im Corporate Design der TU Darmstadt}
+ \title{\LaTeX{} im Corporate Design der TU Darmstadt}
\end{verbatim}
Es ist zu beachten, dass für die Erzeugung der Titelseite nach Übergabe aller Daten \verb+\maketitle+ aufgerufen werden muss.
@@ -251,80 +202,80 @@ Falls eine Layoutanpassung der Titelseite notwendig ist, gelten die in der TUDaP
\item[studentID] Matrikelnummer. Nach den Vorgaben des Templates ist diese Angabe immer optional.
\item[birthplace] Geburtsort. Angabe ist bei Dissertationen notwendig.
\item[reviewer] Gutachter. Mehrere Gutachter werden, wie Autoren durch \verb+\and+ getrennt. Die Nummerierung läuft von links nach rechts.
- \minisec{Änderung des Bezeichners}
- Die Änderung des Bezeichners ist über ein optionales Argument möglich:
- \begin{verbatim}
- \reviewer[Ersatzbezeichner]{Name1 \and Name2}
- \end{verbatim}
- Um die numerische Benennung abzuändern ist es zusätzlich möglich statt dem Ersatzbezeichner eine Kommaliste zu übergeben:
- \begin{verbatim}
- \reviewer*[Bezeichner1, Bezeichner2]{Name1 \and Name2}
- \end{verbatim}
- In diesem Fall entfällt die Nummerierung vor dem Bezeichner. Soll z.\,B. den Formulierungen der Promotionsordnung entsprochen werden, gilt:
- \begin{verbatim}
- \reviewer[Erstreferent\_in,Koreferent\_in]{Name1 \and Name2}
- \end{verbatim}
- Für die Erstellung Fachbereichsspezifischer Templates existiert hierfür auch ein Makro, dass ohne den Aufruf von \verb+\reviewer+ Änderungen zulässt.
- \begin{verbatim}
- \setupReviewName{Ersatzwort für „Gutachten“}
- \end{verbatim}
- Setzt die ersten beiden Bezeichner. Alternativ ist es auch möglich Positionen einzeln zu benennen \verb+\setupReviewName[1]{Erstferent}+, eine Übergabe als Komma-Liste ist als \verb+\setupReviewName*{Bezeicher1,Bezeicher2}+ möglich.
-
- Ab Version 3.26 werden die Gutachter nicht mehr auf der Titelrückseite genannt. Dies wird über die \verb+thesis+ Option \verb+reviewer-on-uppertitleback+ gesteuert. Voreingestellt ist der Wert \verb+false+.
+ \minisec{Änderung des Bezeichners}
+ Die Änderung des Bezeichners ist über ein optionales Argument möglich:
+\begin{verbatim}
+ \reviewer[Ersatzbezeichner]{Name1 \and Name2}
+\end{verbatim}
+ Um die numerische Benennung abzuändern ist es zusätzlich möglich statt dem Ersatzbezeichner eine Kommaliste zu übergeben:
+\begin{verbatim}
+ \reviewer*[Bezeichner1, Bezeichner2]{Name1 \and Name2}
+\end{verbatim}
+ In diesem Fall entfällt die Nummerierung vor dem Bezeichner. Soll z.\,B. den Formulierungen der Promotionsordnung entsprochen werden, gilt:
+\begin{verbatim}
+ \reviewer[Erstreferent\_in,Koreferent\_in]{Name1 \and Name2}
+\end{verbatim}
+ Für die Erstellung Fachbereichsspezifischer Templates existiert hierfür auch ein Makro, dass ohne den Aufruf von \verb+\reviewer+ Änderungen zulässt.
+\begin{verbatim}
+ \setupReviewName{Ersatzwort für „Gutachten“}
+\end{verbatim}
+ Setzt die ersten beiden Bezeichner. Alternativ ist es auch möglich Positionen einzeln zu benennen \verb+\setupReviewName[1]{Erstferent}+, eine Übergabe als Komma-Liste ist als \verb+\setupReviewName*{Bezeicher1,Bezeicher2}+ möglich.
+
+ Ab Version 3.26 werden die Gutachter nicht mehr auf der Titelrückseite genannt. Dies wird über die \verb+thesis+ Option \verb+reviewer-on-uppertitleback+ gesteuert. Voreingestellt ist der Wert \verb+false+.
\item[institution] Einrichtung. Dieser Eintrag, wie auch die beiden folgenden, werden unterhalb des Logos auf der Titelseite platziert.
\item[department] Fach-/Studienbereich, allerdings ist die oben genannte Option zu bevorzugen. Die Verarbeitung des Arguments erfolgt jedoch analog.
- Dieses Makro verfügt jedoch zusätzlich über die Möglichkeit abweichende Einträge gegenüber den Vorgaben anzugeben. Insbesondere wenn eine gesonderte Formulierung gegenüber der voreingestellten \enquote{im Fachbereich} und ihren Varianten notwendig ist. Hierfür liefert \code{\textbackslash{}department} ein optionales Argument:
+ Dieses Makro verfügt jedoch zusätzlich über die Möglichkeit abweichende Einträge gegenüber den Vorgaben anzugeben. Insbesondere wenn eine gesonderte Formulierung gegenüber der voreingestellten \enquote{im Fachbereich} und ihren Varianten notwendig ist. Hierfür liefert \code{\textbackslash{}department} ein optionales Argument:
- \begin{verbatim}
- \department[Ersatztext]{Kürzel/Bezeichnung}
- \end{verbatim}
- Zusätzlich gibt es ab Version 2.01 auch die Möglichkeit den gesamten Text \enquote{im Fachbereich <Bereichsbezeichnung>}, sowie die Angabe in der Infobox auf der Titelseite zu ersetzen. Dies geschieht über die gesternte Variante:
- \begin{verbatim}
- \department*[Text für die Box]{Text zwischen Typ und Autor}
- \end{verbatim}
+\begin{verbatim}
+ \department[Ersatztext]{Kürzel/Bezeichnung}
+\end{verbatim}
+ Zusätzlich gibt es ab Version 2.01 auch die Möglichkeit den gesamten Text \enquote{im Fachbereich <Bereichsbezeichnung>}, sowie die Angabe in der Infobox auf der Titelseite zu ersetzen. Dies geschieht über die gesternte Variante:
+\begin{verbatim}
+ \department*[Text für die Box]{Text zwischen Typ und Autor}
+\end{verbatim}
\item[group] Arbeitsgruppe.
\item[submissiondate] Datum der Einreichung
\item[examdate] Datum der Disputation
\item[date] Beliebiges Datum. Wird über \verb|datename| bezeichnet.
\item[publishers] Wird hier für die Ortsangabe verwendet und ist mit \enquote{Darmstadt}, bzw. \enquote{Darmstadt, Technische Universität Darmstadt} (bei Dissertationen) vorbelegt.
\item[tuprints] \label{page:tuprints}Übergabe der Daten, sofern das Dokument über TUprints Veröffentlicht werden soll.
- \begin{verbatim}
- \tuprints{
- urn=12345,
- printid=123456,
- year=2022
- }
- \end{verbatim}
- Falls das Argument kein Gleichheitszeichen erkennt, wird der Wert als \code{printid} gesetzt und keine URN angegeben.
-
- \minisec{Lizenzangabe}
- Ab Version 2.07 ist es zudem möglich einen eigenen Lizenztext über den Schlüssel \verb|license=<Text>| zu übergeben. Dieser ersetzt dann die voreingestellte Lizenzangabe.
-
- Es existieren (seit v3.08) vorgefertigte Werte für die Option \verb|license|, um eine einfachere Anpassung zu ermöglichen. Diese lauten:
-
- \parbox[t]{.5\linewidth}{%
- \ttfamily
- \href{https://creativecommons.org/licenses/by-nc-nd/2.0/}{cc-by-nc-nd-2.0-de} \textnormal{(noch aktuelle Voreinstellung)}\par
- \href{https://creativecommons.org/licenses/by/4.0/}{cc-by-4.0}\par
- \href{https://creativecommons.org/licenses/by-sa/4.0/}{cc-by-sa-4.0}\par
- \href{https://creativecommons.org/licenses/by-nc-sa/4.0/}{cc-by-nc-sa-4.0}\par
- }%
- \parbox[t]{.5\linewidth}{
- \ttfamily
- \href{https://creativecommons.org/licenses/by-nc-/4.0/}{cc-by-nc-4.0}\par
- \href{https://creativecommons.org/licenses/by-nd/4.0/}{cc-by-nd-4.0}\par
- \href{https://creativecommons.org/licenses/by-nc-nd/4.0/}{cc-by-nc-nd-4.0}\par
- \href{https://rightsstatements.org/page/InC/1.0/}{inc-1.0}\textnormal{ (Ab Version 3.36)}
- }
-
- Dies ist Bestandteil der Vorbereitung zur Anpassung der Standardlizenz, welche durch die Universitätsbibliothek angepasst wurde.
- Die entsprechende Diskussion findet sich unter \url{https://github.com/tudace/tuda_latex_templates/issues/251} und eine Anpassung der Voreinstellung bei TUDa-CI ist für Version 4.0 vorgesehen.
-
- Unterstützung bei der Wahl einer passenden Creative Commons Lizenz bietet die ULB der TUDa unter https://www.ulb.tu-darmstadt.de/dpub oder das CC-Projekt sebst über seinen Lizenzfinder unter \url{http://creativecommons.org/choose/}.
- Die TU Darmstadt empfiehlt in Ihrer Publikationsrichtlinie und Open-Access-Policy die Nutzung der offenen CC BY 4.0 Lizenz.
-
- Falls ein von den oben gelisteten Schlüsseln abweichender Wert gesetzt wird, wird ebendieser direkt an der Stelle des Lizenztextes verwendet. Sofern der Text Gleichheitszeichen oder Kommata enthält ist eine Gruppierung notwendig.
+\begin{verbatim}
+ \tuprints{
+ urn=12345,
+ printid=123456,
+ year=2022
+ }
+\end{verbatim}
+ Falls das Argument kein Gleichheitszeichen erkennt, wird der Wert als \code{printid} gesetzt und keine URN angegeben.
+
+ \minisec{Lizenzangabe}
+ Ab Version 2.07 ist es zudem möglich einen eigenen Lizenztext über den Schlüssel \verb|license=<Text>| zu übergeben. Dieser ersetzt dann die voreingestellte Lizenzangabe.
+
+ Es existieren (seit v3.08) vorgefertigte Werte für die Option \verb|license|, um eine einfachere Anpassung zu ermöglichen. Diese lauten:
+
+ \parbox[t]{.5\linewidth}{%
+ \ttfamily
+ \href{https://creativecommons.org/licenses/by-nc-nd/2.0/}{cc-by-nc-nd-2.0-de} \textnormal{(noch aktuelle Voreinstellung)}\par
+ \href{https://creativecommons.org/licenses/by/4.0/}{cc-by-4.0}\par
+ \href{https://creativecommons.org/licenses/by-sa/4.0/}{cc-by-sa-4.0}\par
+ \href{https://creativecommons.org/licenses/by-nc-sa/4.0/}{cc-by-nc-sa-4.0}\par
+ }%
+ \parbox[t]{.5\linewidth}{
+ \ttfamily
+ \href{https://creativecommons.org/licenses/by-nc-/4.0/}{cc-by-nc-4.0}\par
+ \href{https://creativecommons.org/licenses/by-nd/4.0/}{cc-by-nd-4.0}\par
+ \href{https://creativecommons.org/licenses/by-nc-nd/4.0/}{cc-by-nc-nd-4.0}\par
+ \href{https://rightsstatements.org/page/InC/1.0/}{inc-1.0}\textnormal{ (Ab Version 3.36)}
+ }
+
+ Dies ist Bestandteil der Vorbereitung zur Anpassung der Standardlizenz, welche durch die Universitätsbibliothek angepasst wurde.
+ Die entsprechende Diskussion findet sich unter \url{https://github.com/tudace/tuda_latex_templates/issues/251} und eine Anpassung der Voreinstellung bei TUDa-CI ist für Version 4.0 vorgesehen.
+
+ Unterstützung bei der Wahl einer passenden Creative Commons Lizenz bietet die ULB der TUDa unter https://www.ulb.tu-darmstadt.de/dpub oder das CC-Projekt sebst über seinen Lizenzfinder unter \url{http://creativecommons.org/choose/}.
+ Die TU Darmstadt empfiehlt in Ihrer Publikationsrichtlinie und Open-Access-Policy die Nutzung der offenen CC BY 4.0 Lizenz.
+
+ Falls ein von den oben gelisteten Schlüsseln abweichender Wert gesetzt wird, wird ebendieser direkt an der Stelle des Lizenztextes verwendet. Sofern der Text Gleichheitszeichen oder Kommata enthält ist eine Gruppierung notwendig.
\item[titlegraphic] Hier kann Code übergeben werden, der den farbigen Block im unteren Teil der Titelseite ersetzt. Details sind in der allgemeinen TUDaPub-Dokumentation beschrieben \cite{tudapub}
\item[titleintro] Ab Version 2.03 kann zusätzlich über diesen Hook ein beliebiger Text direkt nach dem Untertitel und vor den automatischen Daten ergänzt werden.
\item[titleaddendum] Wie \code{\tbs{}titleintro} jedoch als letztes Element des Blocks.
@@ -342,29 +293,29 @@ Version 3.20 ermöglicht zusätzlich die Übergabe weiterer Optionen für den Si
Inwieweit diese Optionen verwendet werden dürfen ist jeweils vor der Verwendung durch die Nutzer:in abzuklären.
TUDa-CI kann hierfür keine gesicherte Aussage treffen.
\begin{verbatim}
- \affidavit[signature=Signaturname,signature-image={\includegraphics[width=\width]{signaturbild}}]
+ \affidavit[signature=Signaturname,signature-image={\includegraphics[width=\width]{signaturbild}}]
\end{verbatim}
Eine vertikale Verschiebung des Signaturbildes ist nicht direkt implementiert, ist jedoch mit der Verwendung des \LaTeX-Makros \verb+\raisebox{<Verschiebung>}{<Inhalt>}+ problemlos möglich.
Es besteht zusätzlich die Möglichkeit ein anderssprachiges Affidavit als Ergänzung mit abzudrucken. Um die Struktur und die ggf. notwendige Sprachumschaltung zu erledigen, existiert hierfür ab Version 2.03 eine Umgebung:
\begin{verbatim}
- \begin{affidavit*}[Babel-Sprachoption]{Überschrift}
- Text
- \end{affidavit*}
+ \begin{affidavit*}[Babel-Sprachoption]{Überschrift}
+ Text
+ \end{affidavit*}
\end{verbatim}
Diese Variante verfügt bewusst über keine Unterschriftenzeile, da diese Version laut Verständnis der Entwickler keine rechtliche Verbindlichkeit besitzt.
Die Umgebung kann jedoch auch für besondere Formen der Erklärung genutzt werden. In diesem Fall kann eine zusätzliche Signaturzeile über
\begin{verbatim}
- \AffidavitSignature[Stadt]
+ \AffidavitSignature[Stadt]
\end{verbatim}
hinzugefügt werden. Die Vorbelegung für Stadt ist hierbei \enquote{Darmstadt}.
Ab Version 3.20 ist die Übergabe einer zusätzlichen Option für den Ort der Signatur auch als Option möglich.
\begin{verbatim}
- \affidavit[signature-location=Stadt]
+ \affidavit[signature-location=Stadt]
\end{verbatim}
\section{Layout-Optionen mit Verstoß gegen das Corporate Design}
@@ -373,29 +324,28 @@ Die Zeilenlängen sind laut Corporate Design aus typografischer Sicht zu lang.
Daher existiert die Klassenoption \code{custommargins}, die für dieses Dokument aktiviert wurde (Wert \code{true}). Sie verfügt über die Werte \code{true}, \code{false} und \code{geometry} mit folgender Bedeutung:
\begin{description}
-\item[custommargins=false] Standardeinstellung von \cls{tudapub}. Die Ränder entsprechen den Vorgaben des Corporate Design Guidelines. Die Einstellung wird durch \pck{geometry} durchgeführt. Eigene Anpassungen werden durch das Ausführen von \code{\textbackslash{}maketitle} überschrieben.
-\item[custommargins=true] Die Einstellungen des Corporate Design Guidelines werden nicht aktiviert. \pck{geometry} wird nicht geladen. Dieser Modus entspricht der Standardeinstellung von \KOMAScript{}. Dadurch werden die Ränder nicht fest definiert, sondern auf Basis des \pck{typearea}-Paketes berechnet \cite[vgl.][]{scrguide}.
-\item[custommargins=geometry] Diese Variante wurde auf Wunsch zur Verfügung gestellt, allerdings wird darauf hingewiesen, dass manuelle Randeinstellungen oft nicht zu einem harmonischen Satzspiegel führt.
-\pck{geometry} wird, wie bei \code{false} geladen und vorkonfiguriert. Es ist allerdings möglich kleinere Anpassung durch die Verwendung des Makros \code{\textbackslash{}geometry} zu setzen. Die Einstellungen, die zu Beginn des Dokuments gelten werden gespeichert und nach der Titelseite wiederhergestellt.
+ \item[custommargins=false] Standardeinstellung von \cls{tudapub}. Die Ränder entsprechen den Vorgaben des Corporate Design Guidelines. Die Einstellung wird durch \pck{geometry} durchgeführt. Eigene Anpassungen werden durch das Ausführen von \code{\textbackslash{}maketitle} überschrieben.
+ \item[custommargins=true] Die Einstellungen des Corporate Design Guidelines werden nicht aktiviert. \pck{geometry} wird nicht geladen. Dieser Modus entspricht der Standardeinstellung von \KOMAScript{}. Dadurch werden die Ränder nicht fest definiert, sondern auf Basis des \pck{typearea}-Paketes berechnet \cite[vgl.][]{scrguide}.
+ \item[custommargins=geometry] Diese Variante wurde auf Wunsch zur Verfügung gestellt, allerdings wird darauf hingewiesen, dass manuelle Randeinstellungen oft nicht zu einem harmonischen Satzspiegel führt.
+ \pck{geometry} wird, wie bei \code{false} geladen und vorkonfiguriert. Es ist allerdings möglich kleinere Anpassung durch die Verwendung des Makros \code{\textbackslash{}geometry} zu setzen. Die Einstellungen, die zu Beginn des Dokuments gelten werden gespeichert und nach der Titelseite wiederhergestellt.
-Hierbei ist zu beachten, dass die Einstellungen als Ausgangspunkt den Voreingestellten Satzspiegel nutzen (je nach Option mit Randnotizspalte oder ohne). Es ist möglich diese Optionen vor den eigenen mit zurückzusetzen:
+ Hierbei ist zu beachten, dass die Einstellungen als Ausgangspunkt den Voreingestellten Satzspiegel nutzen (je nach Option mit Randnotizspalte oder ohne). Es ist möglich diese Optionen vor den eigenen mit zurückzusetzen:
\begin{verbatim}
- \geometry{
- reset,
- <Eigene Anpassungen>
- }
+ \geometry{
+ reset,
+ <Eigene Anpassungen>
+ }
\end{verbatim}
-Die gilt insbesondere für die Optionen \code{includehead}, \code{includefoot} und \code{includemp}.
+ Die gilt insbesondere für die Optionen \code{includehead}, \code{includefoot} und \code{includemp}.
\end{description}
-
\minisec{Hinweis zu den Kopf-/Fußzeilen}
Wenn die Option \code{marginpar=true} gesetzt bleibt, ragen die Kopf- und Fußzeile über die Marginalspalte hinaus. Aus ästhetischen Gründen wird daher empfohlen in diesem Fall die Kopf- und Fußzeile mit \code{marginpar=false} auf den Textbereich zu beschränken.
Auch ist das Standard-Layout der Kolumnentitel wenig vorteilhaft, da die Kolumnentitel damit local größer sein können als die eigentliche Überschrift. (\code{headline=automark})
Deswegen kann über
\begin{verbatim}
- \pagestyle{TUDa.headings}
+ \pagestyle{TUDa.headings}
\end{verbatim}
ein einfacherer Seitenstil ausgewählt werden, der die Nutzung mit lebenden Kolumnentitel erheblich vereinfacht. Dieser Stil ist über \pck{scrlayer-scrpage} realisiert und kann entsprechend der \KOMAScript{}-Dokumentation angepasst werden.
@@ -414,48 +364,48 @@ thesis={type=dr,dr=rernat}
Im folgenden findet sich die Bedeutung der einzelnen Optionen:
\begin{description}
-\item[type=<Wert>] Auswahl des Typus. Dieser wird auf die Titelseite gesetzt und wählt zudem aus welche Daten für die Titelseite zwingend übergeben werden müssen.
- Es stehen die folgenden Werte zur Verfügung (die Werte in Klammern sind die notwendigen Titeldaten):
- \begin{itemize}
- \item \code{sta}: Studienarbeit (title, author, date)
- \item \code{diplom}: Diplomarbeit (title, author, submissiondate, reviewer, department)
- \item \code{bachelor}: Bachelorarbeit (title, author, submissiondate, department, reviewer)
- \item \code{master}: Masterarbeit (title, author, submissiondate, department, reviewer)
- \item \code{pp}: Project-Proposal (title, author, date, department)
- \item \code{dr}: vorgelegte Dissertation (title, author, submissiondate , birthplace, department, reviewer)
- \item \code{drfinal}: genehmigte Dissertation (title, author, submissiondate,examdate, birthplace, department, reviewer)
- \end{itemize}
- Wird ein Typus angegeben, der nicht erkannt wird, so wird der Text direkt übergeben. Notwendige Titelfelder über den Titel hinaus gibt es in diesem Fall nicht.
-\item[dr=<Kürzel>] Lädt einen der vordefinierten Texte für die Titelseite. Als Werte stehen bislang \code{rernat}, \code{rerpol}, \code{ing} und \code{phil} zur Verfügung. Zum Beispiel lädt der Wert \code{phil}:
- \begin{quote}
- Zur Erlangung des Grades eines Doktor der Philosophie (Dr.\,phil.)
- \end{quote}
- Sofern keiner dieser Werte dem angestrebten Titel entspricht, kann ein Text direkt übergeben werden.
- \begin{verbatim}
- \drtext{Zur Erlangung des Grades \ldots}
- \end{verbatim}
-\item[department=<Kürzel>] Die Fachbereiche sind fest als Textbausteine in Deutscher sowie Englischer Sprache hinterlegt. Diese Option ermöglicht die Auswahl als Dokumentenklassenoption. Aus Kompatibilitätsgründen kann jedoch auch das Makro \code{department}-Makro hierfür genutzt werden. Zur Verfügung stehen:\par
- \begin{tabular}{@{}l@{${}\to{}$}l@{}}
- arch & Architektur\\
- bauing& Bau- und Umweltingenieurwissenschaften\\
- bio &Biologie\\
- chem &Chemie\\
- etit &Elektrotechnik und Informationstechnik\\
- gugw &Gesellschafts- und Geschichtswissenschaften\\
- humanw&Humanwissenschaften\\
- inf &Informatik\\
- mb &Maschinenbau\\
- matgeo&Material- und Geowissenschaften\\
- math &Mathematik\\
- phys &Physik\\
- wi &Rechts- und Wirtschaftswissenschaften
- \end{tabular}
-
- Neben den Fachbereichen existieren für Abschlussarbeiten, die keine Dissertationen sind auch Studienbereiche, siehe DEMO-TUDaThesis.
- Falls etwas anderes als eines dieser Kürzel übergeben wird, wird der Text direkt verwendet und eine entsprechende Warnung ausgegeben.
-
- Die Auswahl der Fachrichtung erzeugt zusätzlich eine Box auf der Titelseite unterhalb des Logos. Falls diese automatische Erstellung nicht gewünscht ist, kann dies über die Option \code{instbox=false} deaktiviert werden.
-\item[ignore-missing-data] Diese Option ist ein Schalter, der es ermöglicht die Fehlermeldung über nicht übergebene Titeldaten auszuschalten. In diesem Fall wird lediglich eine Warnung erzeugt, falls die angegeben Daten nicht mit den Anforderungen übereinstimmen.
+ \item[type=<Wert>] Auswahl des Typus. Dieser wird auf die Titelseite gesetzt und wählt zudem aus welche Daten für die Titelseite zwingend übergeben werden müssen.
+ Es stehen die folgenden Werte zur Verfügung (die Werte in Klammern sind die notwendigen Titeldaten):
+ \begin{itemize}
+ \item \code{sta}: Studienarbeit (title, author, date)
+ \item \code{diplom}: Diplomarbeit (title, author, submissiondate, reviewer, department)
+ \item \code{bachelor}: Bachelorarbeit (title, author, submissiondate, department, reviewer)
+ \item \code{master}: Masterarbeit (title, author, submissiondate, department, reviewer)
+ \item \code{pp}: Project-Proposal (title, author, date, department)
+ \item \code{dr}: vorgelegte Dissertation (title, author, submissiondate , birthplace, department, reviewer)
+ \item \code{drfinal}: genehmigte Dissertation (title, author, submissiondate,examdate, birthplace, department, reviewer)
+ \end{itemize}
+ Wird ein Typus angegeben, der nicht erkannt wird, so wird der Text direkt übergeben. Notwendige Titelfelder über den Titel hinaus gibt es in diesem Fall nicht.
+ \item[dr=<Kürzel>] Lädt einen der vordefinierten Texte für die Titelseite. Als Werte stehen bislang \code{rernat}, \code{rerpol}, \code{ing} und \code{phil} zur Verfügung. Zum Beispiel lädt der Wert \code{phil}:
+ \begin{quote}
+ Zur Erlangung des Grades eines Doktor der Philosophie (Dr.\,phil.)
+ \end{quote}
+ Sofern keiner dieser Werte dem angestrebten Titel entspricht, kann ein Text direkt übergeben werden.
+\begin{verbatim}
+ \drtext{Zur Erlangung des Grades \ldots}
+\end{verbatim}
+ \item[department=<Kürzel>] Die Fachbereiche sind fest als Textbausteine in Deutscher sowie Englischer Sprache hinterlegt. Diese Option ermöglicht die Auswahl als Dokumentenklassenoption. Aus Kompatibilitätsgründen kann jedoch auch das Makro \code{department}-Makro hierfür genutzt werden. Zur Verfügung stehen:\par
+ \begin{tabular}{@{}l@{${}\to{}$}l@{}}
+ arch & Architektur\\
+ bauing& Bau- und Umweltingenieurwissenschaften\\
+ bio &Biologie\\
+ chem &Chemie\\
+ etit &Elektrotechnik und Informationstechnik\\
+ gugw &Gesellschafts- und Geschichtswissenschaften\\
+ humanw&Humanwissenschaften\\
+ inf &Informatik\\
+ mb &Maschinenbau\\
+ matgeo&Material- und Geowissenschaften\\
+ math &Mathematik\\
+ phys &Physik\\
+ wi &Rechts- und Wirtschaftswissenschaften
+ \end{tabular}
+
+ Neben den Fachbereichen existieren für Abschlussarbeiten, die keine Dissertationen sind auch Studienbereiche, siehe DEMO-TUDaThesis.
+ Falls etwas anderes als eines dieser Kürzel übergeben wird, wird der Text direkt verwendet und eine entsprechende Warnung ausgegeben.
+
+ Die Auswahl der Fachrichtung erzeugt zusätzlich eine Box auf der Titelseite unterhalb des Logos. Falls diese automatische Erstellung nicht gewünscht ist, kann dies über die Option \code{instbox=false} deaktiviert werden.
+ \item[ignore-missing-data] Diese Option ist ein Schalter, der es ermöglicht die Fehlermeldung über nicht übergebene Titeldaten auszuschalten. In diesem Fall wird lediglich eine Warnung erzeugt, falls die angegeben Daten nicht mit den Anforderungen übereinstimmen.
\end{description}
\minisec{Abweichung von den Vorgaben für die Titelseite}
@@ -469,3 +419,4 @@ Setspace liefert hierfür die Möglichkeit, das Paket ohne Optionen zu laden und
\printbibliography
\end{document}
+%% End of file `DEMO-TUDaPhD-de.tex'.
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
index 6159ff33b0..94fcfeae3d 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPoster.tex
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaPoster.tex' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaPoster-de.tex' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
index 67fac56d18..3c8bb81129 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaPub.tex
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaPub.tex' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaPub-de.tex' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
index afa868309f..ee13759914 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaReport.tex' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaReport-de.tex' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
index 782da3c25b..7a74831e5d 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaSciPoster.tex
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaSciPoster.tex' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaSciPoster-de.tex' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
diff --git a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
index 9100c5b08d..6d8cdf6110 100644
--- a/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
+++ b/macros/latex/contrib/tuda-ci/example/DEMO-TUDaThesis.tex
@@ -1,9 +1,9 @@
-%% This is file `DEMO-TUDaThesis.tex' version 3.36 (2024-01-05),
+%% This is file `DEMO-TUDaThesis-de.tex' version 3.37 (2024-04-21)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -31,33 +31,31 @@
%%
% !TeX program = lualatex
%%
+% PDF/A über pdfmanagement und nicht über pdfx
+\DocumentMetadata{
+ pdfstandard=a-2b,
+ pdfversion=1.7,% 2.0 geht auch, aber die meisten Validierungsprogramme unterstützen das noch nicht.
+}
\documentclass[
- ngerman,
- ruledheaders=section,%Ebene bis zu der die Überschriften mit Linien abgetrennt werden, vgl. DEMO-TUDaPub
+ german,% Hauptsprache als globale Option, früher war ngerman notwendig
+ ruledheaders=section,% Ebene bis zu der die Überschriften mit Linien abgetrennt werden,
class=report,% Basisdokumentenklasse. Wählt die Korrespondierende KOMA-Script Klasse
thesis={type=bachelor},% Dokumententyp Thesis, für Dissertationen siehe die Demo-Datei DEMO-TUDaPhd
accentcolor=9c,% Auswahl der Akzentfarbe
custommargins=true,% Ränder werden mithilfe von typearea automatisch berechnet
marginpar=false,% Kopfzeile und Fußzeile erstrecken sich nicht über die Randnotizspalte
- %BCOR=5mm,%Bindekorrektur, falls notwendig
- parskip=half-,%Absatzkennzeichnung durch Abstand vgl. KOMA-Script
- fontsize=11pt,%Basisschriftgröße laut Corporate Design ist mit 9pt häufig zu klein
-% logofile=example-image, %Falls die Logo Dateien nicht vorliegen
+% BCOR=5mm,% Bindekorrektur
+ parskip=half-,% Absatzkennzeichnung durch Abstand vgl. KOMA-Script
+ fontsize=11pt,% Basisschriftgröße laut Corporate Design ist mit 9pt häufig zu klein
+% logofile=example-image,% Falls die Logo Dateien nicht vorliegen
]{tudapub}
-
-% Der folgende Block ist nur bei pdfTeX auf Versionen vor April 2018 notwendig
-\usepackage{iftex}
-\ifPDFTeX
- \usepackage[utf8]{inputenc}%kompatibilität mit TeX Versionen vor April 2018
-\fi
-
%%%%%%%%%%%%%%%%%%%
-%Sprachanpassung & Verbesserte Trennregeln
+% Spracheinstellungen
%%%%%%%%%%%%%%%%%%%
\usepackage[english, main=ngerman]{babel}
-\usepackage[autostyle]{csquotes}% Anführungszeichen vereinfacht
+\usepackage[autostyle]{csquotes}% Sprachabhängig Anführungszeichen mit \enquote
% Falls mit pdflatex kompiliert wird, wird microtype automatisch geladen, in diesem Fall muss diese Zeile entfernt werden, und falls weiter Optionen hinzugefügt werden sollen, muss dies über
% \PassOptionsToPackage{Optionen}{microtype}
@@ -65,29 +63,30 @@
\usepackage{microtype}
%%%%%%%%%%%%%%%%%%%
-%Literaturverzeichnis
+% Literaturverzeichnis
%%%%%%%%%%%%%%%%%%%
-\usepackage{biblatex} % Literaturverzeichnis
-\bibliography{DEMO-TUDaBibliography}
-
+\usepackage{biblatex}
+\addbibresource{DEMO-TUDaBibliography}% Dateiname der .bib-datei
%%%%%%%%%%%%%%%%%%%
-%Paketvorschläge Tabellen
+% Paketvorschläge Tabellen
%%%%%%%%%%%%%%%%%%%
-%\usepackage{array} % Basispaket für Tabellenkonfiguration, wird von den folgenden automatisch geladen
-\usepackage{tabularx} % Tabellen, die sich automatisch der Breite anpassen
-%\usepackage{longtable} % Mehrseitige Tabellen
-%\usepackage{xltabular} % Mehrseitige Tabellen mit anpassbarer Breite
-\usepackage{booktabs} % Verbesserte Möglichkeiten für Tabellenlayout über horizontale Linien
+\usepackage{array}% Grundlegendes Ergänzungspaket für Tabellen. Wird von den folgenden Paketen indirekt geladen
+%\usepackage{tabularx}% Tabellen mit fester Breite und entsprechend umbrechenden Spalten
+%\usepackage{longtable}% Mehrseitige Tabellen
+%\usepackage{xltabular}% Mehrseitige Tabellen mit fester Breite
+%\usepackage{booktabs}% Verbesserte Möglichkeiten für Tabellenlayout über horizontale Linien
%%%%%%%%%%%%%%%%%%%
-%Paketvorschläge Mathematik
+% Paketvorschläge Mathematik/Formelsatz
%%%%%%%%%%%%%%%%%%%
-%\usepackage{mathtools} % erweiterte Fassung von amsmath
-%\usepackage{amssymb} % erweiterter Zeichensatz
-%\usepackage{siunitx} % Einheiten
+%\usepackage{mathtools}% Erweiterte Fassung von amsmath
+%\usepackage{amssymb}% Erweiterter Zeichensatz
+%\usepackage{siunitx}% Werte und Einheiten
-%Formatierungen für Beispiele in diesem Dokument. Im Allgemeinen nicht notwendig!
+%%%%%%%%%%%%%%%%%%%
+% Formatierungen für Beispiele in diesem Dokument. Im Allgemeinen nicht notwendig!
+%%%%%%%%%%%%%%%%%%%
\let\file\texttt
\let\code\texttt
\let\tbs\textbackslash
@@ -95,67 +94,51 @@
\let\cls\textsf
\biburlsetup
+\usepackage{tabularx,booktabs}%Tabellenpakete (siehe oben)
\usepackage{pifont}% Zapf-Dingbats Symbole
\newcommand*{\FeatureTrue}{\ding{52}}
\newcommand*{\FeatureFalse}{\ding{56}}
-
+%%%%%%%%%%%%%%%%%%%
+% Ende der Demo-Formatierungseinstellungen
+%%%%%%%%%%%%%%%%%%%
\begin{document}
-\Metadata{
- title=TUDaThesis - Abschlussarbeiten im CD der TU Darmstadt,
- author=Marei Peischl
-}
-
-\title{TUDaThesis -- Abschlussarbeiten im CD der TU Darmstadt}
+\title{TUDaThesis -- Abschlussarbeiten im Corporate Design der TU Darmstadt}
\subtitle{\LaTeX{} using TU Darmstadt's Corporate Design}
-\author[M. Peischl]{Marei Peischl}%optionales Argument ist die Signatur,
-\birthplace{Geburtsort}%Geburtsort, bei Dissertationen zwingend notwendig
-\reviewer{Gutachter 1 \and Gutachter 2 \and noch einer \and falls das immernoch nicht reicht}%Gutachter
+\author{Marei Peischl}
+% \birthplace{}% Geburtsort. Bei Dissertationen zwingend notwendig
+\reviewer{Reviewer 1 \and Reviewer 2 \and … }
-%Diese Felder werden untereinander auf der Titelseite platziert.
-%\department ist eine notwendige Angabe, siehe auch dem Abschnitt `Abweichung von den Vorgaben für die Titelseite'
-\department{ce} % Das Kürzel wird automatisch ersetzt und als Studienfach gewählt, siehe Liste der Kürzel im Dokument.
+% Diese Felder werden untereinander auf der Titelseite platziert.
+% \department ist eine notwendige Angabe, siehe auch dem Abschnitt `Abweichung von den Vorgaben für die Titelseite'
+\department{ce}% Das Kürzel wird automatisch ersetzt und als Studienfach gewählt sofern es definiert ist.
\institute{Institut}
\group{Arbeitsgruppe}
\submissiondate{\today}
\examdate{\today}
-% Hinweis zur Lizenz:
-% TUDa-CI verwendet momentan die Lizenz CC BY-NC-ND 2.0 DE als Voreinstellung.
-% Die TU Darmstadt hat jedoch die Empfehlung von dieser auf die liberalere
-% CC BY 4.0 geändert. Diese erlaubt eine Verwendung bearbeiteter Versionen und
-% die kommerzielle Nutzung.
-% TUDa-CI wird im nächsten größeren Release ebenfalls diese Anpassung vornehmen.
-% Aus diesem Grund wird empfohlen die Lizenz manuell auszuwählen.
-%\tuprints{urn=XXXXX,printid=XXXX,year=2022,license=cc-by-4.0}
-% To see further information on the license option in English, remove the license= key and pay attention to the warning & help message.
-
-% \dedication{Für alle, die \TeX{} nutzen.}
+%\tuprints{urn=XXXXX,printid=XXXX,year=2022,license=cc-by-4.0}% Lizenzdaten für TUprints
\maketitle
-
-% Das Affidavit wurde auf Wunsch des Dezernat II per default deaktiviert.
-% Der rechtlich bindende Text findet sich nach Aukunft des Dezernats unter https://www.tu-darmstadt.de/studieren/studierende_tu/studienorganisation_und_tucan/hilfe_und_faq/artikel_details_de_en_37824.de.jsp
-% Es soll die docx Datei verwendet, ausgedruckt, unterschrieben, eingescannt und dann eingebunden werden.
-% Die einfachste Möglichkeit bitet hierüfr das pdfpages Paket.
-%
-% Aus Kompatibilitätsgründen für die anderen Templates ist die Funktion weiterhin verfügbar.
-%\affidavit
-% Es gibt mit Version 3.20 die Möglichkeit ein Bild als Signatur einzubinden.
-% TUDa-CI kann nicht garantieren, dass dies zulässig ist oder eine eigenhändige Unterschrift ersetzt.
-% Dies ist durch Studierende vor der Verwendung abzuklären.
-% Selbiges gilt für den voreingestellten Text der Erklärung. Es ist zwingend notwendig, dass Studierende dies vor der Abgabe überprüfen.
-% Die Jeweils aktuelle Fassung findest sich als docx-Datei unter https://www.tu-darmstadt.de/studieren/studierende_tu/studienorganisation_und_tucan/hilfe_und_faq/artikel_details_de_en_37824.de.jsp
-% Die Verwendung funktioniert so:
-%\affidavit[signature-image={\includegraphics[width=\width,height=1cm]{example-image}}, <hier können andere Optionen zusätzlich stehen>]
+%% Das Affidavit wurde auf Wunsch des Dezernat II per default deaktiviert.
+%% Der rechtlich bindende Text findet sich nach Aukunft des Dezernats unter https://www.tu-darmstadt.de/studieren/studierende_tu/studienorganisation_und_tucan/hilfe_und_faq/artikel_details_de_en_37824.de.jsp
+%% Es soll die docx Datei verwendet, ausgedruckt, unterschrieben, eingescannt und dann eingebunden werden.
+%% Die einfachste Möglichkeit bietet hierfür das pdfpages Paket.
+%%
+%% Aus Kompatibilitätsgründen für die anderen Templates ist die Funktion weiterhin verfügbar.
+%% \affidavit[signature-image={\includegraphics[width=\width,height=1cm]{example-image}}, <hier können andere Optionen zusätzlich stehen>]
\tableofcontents
+% Ggf. weitere Verzeichnisse wie \listoffigures oder ein Abkürzungsverzeichnis
-\chapter{Über diese Datei}
+\addchap{Über diese Datei}
Die Datei \file{DEMO-TUDaThesis.tex} ist ein Template für Abschlussarbeiten im Stil des Corporate Designs der TU Darmstadt.
-Sie ist Teil des TUDa-CI-Bundles wurde vom in Teilen tuddesign-Paket von C.~v.~Loewenich und J.~Werner inspiriert.
+Sie ist Teil des TUDa-CI-Bundle und wurde in Teilen durch das tuddesign-Paket von C.~v.~Loewenich und J.~Werner inspiriert.
+
+
+
Sie verwendet die Dokumentenklasse \file{tudapub.cls}, allerdings mit erweiterten Einstellungen. In diesem Dokument werden überwiegend die speziell auf Abschlussarbeiten ausgelegten Möglichkeiten beschrieben. Weitere Konfigurationsmöglichkeiten finden sich in der Datei \file{DEMO-TUDaPub.pdf} \cite{tudapub}.
@@ -188,7 +171,6 @@ Da die Basisklasse für beide identisch ist, kann jede Option abgeändert werden
\bottomrule
\end{tabularx}
-
\chapter{Verwendung}
Die Klasse kann wie für Dokumentenklassen üblich eingebunden werden
\begin{verbatim}
@@ -208,7 +190,7 @@ TUDa-CI verwendet hierfür das babel-Paket.
Dies wird jedoch nicht automatisch geladen, da hierfür die Konfiguration der Sprachen bekannt sein müsste. Die Demo-Dateien für Abschlussarbeiten (\file{DEMO-TUDaThesis.tex}/""\file{DEMO-TUDaPhD.tex}) laden hierfür die Konfiguration:
\begin{verbatim}
- \usepackage[english, main=ngerman]{babel}
+\usepackage[english, main=ngerman]{babel}
\end{verbatim}
Diese ist für ein Dokument mit Deutsch als Hauptsprache und Englischen Elementen.
Die Hauptsprache wird als Wert der Option \verb+main=+ übergeben.
@@ -217,7 +199,7 @@ Für eine bessere Übersichtlichkeit ist es dennoch hilfreich es dort aufzuführ
Falls die Hauptsprache nicht Deutsch ist, wäre daher die folgende Konfiguration sinnvoll:
\begin{verbatim}
- \usepackage[ngerman, main=<Hauptsprache>]{babel}
+\usepackage[ngerman, main=<Hauptsprache>]{babel}
\end{verbatim}
\section{Übergabe der Titeldaten}
@@ -237,78 +219,80 @@ Falls eine Layoutanpassung der Titelseite notwendig ist, gelten die in der TUDaP
\item[studentID] Matrikelnummer. Nach den Vorgaben des Templates ist diese Angabe immer optional.
\item[birthplace] Geburtsort. Angabe ist bei Dissertationen notwendig.
\item[reviewer] Gutachter. Mehrere Gutachter werden, wie Autoren durch \verb+\and+ getrennt. Die Nummerierung läuft von links nach rechts.
- \minisec{Änderung des Bezeichners}
- Die Änderung des Bezeichners ist über ein optionales Argument möglich:
- \begin{verbatim}
- \reviewer[Ersatzbezeichner]{Name1 \and Name2}
- \end{verbatim}
- Um die numerische Benennung abzuändern ist es zusätzlich möglich statt dem Ersatzbezeichner eine Kommaliste zu übergeben:
- \begin{verbatim}
- \reviewer*[Bezeichner1, Bezeichner2]{Name1 \and Name2}
- \end{verbatim}
- In diesem Fall entfällt die Nummerierung vor dem Bezeichner. Soll z.\,B. den Formulierungen der Promotionsordnung entsprochen werden, gilt:
- \begin{verbatim}
- \reviewer[Erstreferent\_in,Koreferent\_in]{Name1 \and Name2}
- \end{verbatim}
- Für die Erstellung Fachbereichsspezifischer Templates existiert hierfür auch ein Makro, dass ohne den Aufruf von \verb+\reviewer+ Änderungen zulässt.
- \begin{verbatim}
- \setupReviewName{Ersatzwort für „Gutachten“}
- \end{verbatim}
- Setzt die ersten beiden Bezeichner. Alternativ ist es auch möglich Positionen einzeln zu benennen \verb+\setupReviewName[1]{Erstferent}+, eine Übergabe als Komma-Liste ist als \verb+\setupReviewName*{Bezeicher1,Bezeicher2}+ möglich.
+ \minisec{Änderung des Bezeichners}
+ Die Änderung des Bezeichners ist über ein optionales Argument möglich:
+\begin{verbatim}
+ \reviewer[Ersatzbezeichner]{Name1 \and Name2}
+\end{verbatim}
+ Um die numerische Benennung abzuändern ist es zusätzlich möglich statt dem Ersatzbezeichner eine Kommaliste zu übergeben:
+\begin{verbatim}
+ \reviewer*[Bezeichner1, Bezeichner2]{Name1 \and Name2}
+\end{verbatim}
+ In diesem Fall entfällt die Nummerierung vor dem Bezeichner. Soll z.\,B. den Formulierungen der Promotionsordnung entsprochen werden, gilt:
+\begin{verbatim}
+ \reviewer[Erstreferent\_in,Koreferent\_in]{Name1 \and Name2}
+\end{verbatim}
+ Für die Erstellung Fachbereichsspezifischer Templates existiert hierfür auch ein Makro, dass ohne den Aufruf von \verb+\reviewer+ Änderungen zulässt.
+\begin{verbatim}
+ \setupReviewName{Ersatzwort für „Gutachten“}
+\end{verbatim}
+ Setzt die ersten beiden Bezeichner. Alternativ ist es auch möglich Positionen einzeln zu benennen \verb+\setupReviewName[1]{Erstferent}+, eine Übergabe als Komma-Liste ist als \verb+\setupReviewName*{Bezeicher1,Bezeicher2}+ möglich.
\item[institution] Einrichtung. Dieser Eintrag, wie auch die beiden folgenden, werden unterhalb des Logos auf der Titelseite platziert.
\item[department] Fach-/Studienbereich, allerdings ist die oben genannte Option zu bevorzugen. Die Verarbeitung des Arguments erfolgt jedoch analog.
- Dieses Makro verfügt jedoch zusätzlich über die Möglichkeit abweichende Einträge gegenüber den Vorgaben anzugeben. Insbesondere wenn eine gesonderte Formulierung gegenüber der voreingestellten \enquote{im Fachbereich} und ihren Varianten notwendig ist. Hierfür liefert \code{\textbackslash{}department} ein optionales Argument:
+ Dieses Makro verfügt jedoch zusätzlich über die Möglichkeit abweichende Einträge gegenüber den Vorgaben anzugeben. Insbesondere wenn eine gesonderte Formulierung gegenüber der voreingestellten \enquote{im Fachbereich} und ihren Varianten notwendig ist. Hierfür liefert \code{\textbackslash{}department} ein optionales Argument:
- \begin{verbatim}
- \department[Ersatztext]{Kürzel/Bezeichnung}
- \end{verbatim}
- Zusätzlich gibt es ab Version 2.01 auch die Möglichkeit den gesamten Text \enquote{im Fachbereich <Bereichsbezeichnung>}, sowie die Angabe in der Infobox auf der Titelseite zu ersetzen. Dies geschieht über die gesternte Variante:
- \begin{verbatim}
- \department*[Text für die Box]{Text zwischen Typ und Autor}
- \end{verbatim}
+\begin{verbatim}
+ \department[Ersatztext]{Kürzel/Bezeichnung}
+\end{verbatim}
+ Zusätzlich gibt es ab Version 2.01 auch die Möglichkeit den gesamten Text \enquote{im Fachbereich <Bereichsbezeichnung>}, sowie die Angabe in der Infobox auf der Titelseite zu ersetzen. Dies geschieht über die gesternte Variante:
+\begin{verbatim}
+ \department*[Text für die Box]{Text zwischen Typ und Autor}
+\end{verbatim}
\item[group] Arbeitsgruppe.
\item[submissiondate] Datum der Einreichung
\item[examdate] Datum der Disputation
\item[date] Beliebiges Datum. Wird über \verb|datename| bezeichnet.
\item[publishers] Wird hier für die Ortsangabe verwendet und ist mit \enquote{Darmstadt}, bzw. \enquote{Darmstadt, Technische Universität Darmstadt} (bei Dissertationen) vorbelegt.
\item[tuprints] \label{page:tuprints}Übergabe der Daten, sofern das Dokument über TUprints Veröffentlicht werden soll.
- \begin{verbatim}
- \tuprints{
- printid=12345,
- urn=123456,
- year=2022
- }
- \end{verbatim}
- Falls das Argument kein Gleichheitszeichen erkennt, wird der Wert als \code{printid} gesetzt und keine URN angegeben.
-
- \minisec{Lizenzangabe}
- Ab Version 2.07 ist es zudem möglich einen eigenen Lizenztext über den Schlüssel \verb|license=<Text>| zu übergeben. Dieser ersetzt dann die voreingestellte Lizenzangabe.
-
- Es existieren (seit v3.08) vorgefertigte Werte für die Option \verb|license|, um eine einfachere Anpassung zu ermöglichen. Diese lauten:
-
- \parbox[t]{.5\linewidth}{%
- \ttfamily
- \href{https://creativecommons.org/licenses/by-nc-nd/2.0/}{cc-by-nc-nd-2.0-de} \textnormal{(noch aktuelle Voreinstellung)}\par
- \href{https://creativecommons.org/licenses/by/4.0/}{cc-by-4.0}\par
- \href{https://creativecommons.org/licenses/by-sa/4.0/}{cc-by-sa-4.0}\par
- \href{https://creativecommons.org/licenses/by-nc-sa/4.0/}{cc-by-nc-sa-4.0}\par
- }%
- \parbox[t]{.5\linewidth}{
- \ttfamily
- \href{https://creativecommons.org/licenses/by-nc-/4.0/}{cc-by-nc-4.0}\par
- \href{https://creativecommons.org/licenses/by-nd/4.0/}{cc-by-nd-4.0}\par
- \href{https://creativecommons.org/licenses/by-nc-nd/4.0/}{cc-by-nc-nd-4.0}\par
- \href{https://rightsstatements.org/page/InC/1.0/}{inc-1.0}\textnormal{ (Ab Version 3.36)}
- }
-
- Dies ist Bestandteil der Vorbereitung zur Anpassung der Standardlizenz, welche durch die Universitätsbibliothek angepasst wurde.
- Die entsprechende Diskussion findet sich unter \url{https://github.com/tudace/tuda_latex_templates/issues/251} und eine Anpassung der Voreinstellung bei TUDa-CI ist für Version 4.0 vorgesehen.
-
- Unterstützung bei der Wahl einer passenden Creative Commons Lizenz bietet die ULB der TUDa unter https://www.ulb.tu-darmstadt.de/dpub oder das CC-Projekt sebst über seinen Lizenzfinder unter \url{http://creativecommons.org/choose/}.
- Die TU Darmstadt empfiehlt in Ihrer Publikationsrichtlinie und Open-Access-Policy die Nutzung der offenen CC BY 4.0 Lizenz.
-
- Falls ein von den oben gelisteten Schlüsseln abweichender Wert gesetzt wird, wird ebendieser direkt an der Stelle des Lizenztextes verwendet. Sofern der Text Gleichheitszeichen oder Kommata enthält ist eine Gruppierung notwendig.
+\begin{verbatim}
+ \tuprints{
+ printid=12345,
+ urn=123456,
+ year=2022
+ }
+\end{verbatim}
+ Falls das Argument kein Gleichheitszeichen erkennt, wird der Wert als \code{printid} gesetzt und keine URN angegeben.
+
+ Die printid is die ID-Nummer des TUprints-Eintrags. Die urn ist ein dauerhaft eindeutig zitierfähiger Bezeichner für das Dokument. Die Nummer entspricht bei TUprints der printid mit Ergänzung einer Prüfzimmer. Beide Angaben sind in den Details des TUprints-Eintrags zu finden.
+
+ \minisec{Lizenzangabe}
+ Ab Version 2.07 ist es zudem möglich einen eigenen Lizenztext über den Schlüssel \verb|license=<Text>| zu übergeben. Dieser ersetzt dann die voreingestellte Lizenzangabe.
+
+ Es existieren (seit v3.08) vorgefertigte Werte für die Option \verb|license|, um eine einfachere Anpassung zu ermöglichen. Diese lauten:
+
+ \parbox[t]{.5\linewidth}{%
+ \ttfamily
+ \href{https://creativecommons.org/licenses/by/4.0/}{cc-by-4.0} \textnormal{Voreinstellung seit Version 4.0}\par
+ \href{https://creativecommons.org/licenses/by-sa/4.0/}{cc-by-sa-4.0}\par
+ \href{https://creativecommons.org/licenses/by-nc-sa/4.0/}{cc-by-nc-sa-4.0}\par
+ \href{https://creativecommons.org/licenses/by-nc-/4.0/}{cc-by-nc-4.0}\par
+ }%
+ \parbox[t]{.5\linewidth}{
+ \ttfamily
+ \href{https://creativecommons.org/licenses/by-nd/4.0/}{cc-by-nd-4.0}\par
+ \href{https://creativecommons.org/licenses/by-nc-nd/4.0/}{cc-by-nc-nd-4.0}\par
+ \href{https://rightsstatements.org/page/InC/1.0/}{inc-1.0}\textnormal{ (Ab Version 3.36)}
+ \href{https://creativecommons.org/licenses/by-nc-nd/2.0/}{cc-by-nc-nd-2.0-de}\par
+ }
+
+ Dies ist Bestandteil der Vorbereitung zur Anpassung der Standardlizenz, welche durch die Universitätsbibliothek angepasst wurde.
+ Die entsprechende Diskussion findet sich unter \url{https://github.com/tudace/tuda_latex_templates/issues/251}. Die Anpassung der Voreinstellung bei TUDa-CI geschah mit Version 4.0.
+
+ Unterstützung bei der Wahl einer passenden Creative Commons Lizenz bietet die ULB der TUDa unter https://www.ulb.tu-darmstadt.de/dpub oder das CC-Projekt sebst über seinen Lizenzfinder unter \url{http://creativecommons.org/choose/}.
+ Die TU Darmstadt empfiehlt in Ihrer Publikationsrichtlinie und Open-Access-Policy die Nutzung der offenen CC BY 4.0 Lizenz.
+
+ Falls ein von den oben gelisteten Schlüsseln abweichender Wert gesetzt wird, wird ebendieser direkt an der Stelle des Lizenztextes verwendet. Sofern der Text Gleichheitszeichen oder Kommata enthält ist eine Gruppierung notwendig.
\item[titlegraphic] Hier kann Code übergeben werden, der den farbigen Block im unteren Teil der Titelseite ersetzt. Details sind in der allgemeinen TUDaPub-Dokumentation beschrieben \cite{tudapub}
\item[titleintro] Ab Version 2.03 kann zusätzlich über diesen Hook ein beliebiger Text direkt nach dem Untertitel und vor den automatischen Daten ergänzt werden.
\item[titleaddendum] Wie \code{\tbs{}titleintro} jedoch als letztes Element des Blocks.
@@ -326,10 +310,10 @@ Version 3.20 ermöglicht zusätzlich die Übergabe weiterer Optionen für den Si
Inwieweit diese Optionen verwendet werden dürfen ist jeweils vor der Verwendung durch die Nutzer:in abzuklären.
TUDa-CI kann hierfür keine gesicherte Aussage treffen.
\begin{verbatim}
- \affidavit[
- signature=Signaturname,
- signature-image={\includegraphics[width=\width]{signaturbild}}
- ]
+ \affidavit[
+ signature=Signaturname,
+ signature-image={\includegraphics[width=\width]{signaturbild}}
+ ]
\end{verbatim}
Eine vertikale Verschiebung des Signaturbildes ist nicht direkt implementiert, ist jedoch mit der Verwendung des \LaTeX-Makros \verb+\raisebox{<Verschiebung>}{<Inhalt>}+ problemlos möglich.
@@ -360,37 +344,34 @@ Die Zeilenlängen sind laut Corporate Design aus typografischer Sicht zu lang.
Daher existiert die Klassenoption \code{custommargins}, die für dieses Dokument aktiviert wurde (Wert \code{true}). Sie verfügt über die Werte \code{true}, \code{false} und \code{geometry} mit folgender Bedeutung:
\begin{description}
-\item[custommargins=false] Standardeinstellung von \cls{tudapub}. Die Ränder entsprechen den Vorgaben des Corporate Design Guidelines. Die Einstellung wird durch \pck{geometry} durchgeführt. Eigene Anpassungen werden durch das Ausführen von \code{\textbackslash{}maketitle} überschrieben.
-\item[custommargins=true] Die Einstellungen des Corporate Design Guidelines werden nicht aktiviert. \pck{geometry} wird nicht geladen. Dieser Modus entspricht der Standardeinstellung von \KOMAScript{}. Dadurch werden die Ränder nicht fest definiert, sondern auf Basis des \pck{typearea}-Paketes berechnet \cite[vgl.][]{scrguide}.
-\item[custommargins=geometry] Diese Variante wurde auf Wunsch zur Verfügung gestellt, allerdings wird darauf hingewiesen, dass manuelle Randeinstellungen oft nicht zu einem harmonischen Satzspiegel führt.
-\pck{geometry} wird, wie bei \code{false} geladen und vorkonfiguriert. Es ist allerdings möglich kleinere Anpassung durch die Verwendung des Makros \code{\textbackslash{}geometry} zu setzen. Die Einstellungen, die zu Beginn des Dokuments gelten werden gespeichert und nach der Titelseite wiederhergestellt.
+ \item[custommargins=false] Standardeinstellung von \cls{tudapub}. Die Ränder entsprechen den Vorgaben des Corporate Design Guidelines. Die Einstellung wird durch \pck{geometry} durchgeführt. Eigene Anpassungen werden durch das Ausführen von \code{\textbackslash{}maketitle} überschrieben.
+ \item[custommargins=true] Die Einstellungen des Corporate Design Guidelines werden nicht aktiviert. \pck{geometry} wird nicht geladen. Dieser Modus entspricht der Standardeinstellung von \KOMAScript{}. Dadurch werden die Ränder nicht fest definiert, sondern auf Basis des \pck{typearea}-Paketes berechnet \cite[vgl.][]{scrguide}.
+ \item[custommargins=geometry] Diese Variante wurde auf Wunsch zur Verfügung gestellt, allerdings wird darauf hingewiesen, dass manuelle Randeinstellungen oft nicht zu einem harmonischen Satzspiegel führt.
+ \pck{geometry} wird, wie bei \code{false} geladen und vorkonfiguriert. Es ist allerdings möglich kleinere Anpassung durch die Verwendung des Makros \code{\textbackslash{}geometry} zu setzen. Die Einstellungen, die zu Beginn des Dokuments gelten werden gespeichert und nach der Titelseite wiederhergestellt.
-Hierbei ist zu beachten, dass die Einstellungen als Ausgangspunkt den Voreingestellten Satzspiegel nutzen (je nach Option mit Randnotizspalte oder ohne). Es ist möglich diese Optionen vor den eigenen mit zurückzusetzen:
+ Hierbei ist zu beachten, dass die Einstellungen als Ausgangspunkt den Voreingestellten Satzspiegel nutzen (je nach Option mit Randnotizspalte oder ohne). Es ist möglich diese Optionen vor den eigenen mit zurückzusetzen:
\begin{verbatim}
- \geometry{
- reset,
- <Eigene Anpassungen>
- }
+\geometry{
+ reset,
+ <Eigene Anpassungen>
+}
\end{verbatim}
-Die gilt insbesondere für die Optionen \code{includehead}, \code{includefoot}, \code{includemp}.
+ Die gilt insbesondere für die Optionen \code{includehead}, \code{includefoot}, \code{includemp}.
\end{description}
-
\minisec{Hinweis zu den Kopf-/Fußzeilen}
Wenn die Option \code{marginpar=true} gesetzt bleibt, ragen die Kopf- und Fußzeile über die Marginalspalte hinaus. Aus ästhetischen Gründen wird daher empfohlen in diesem Fall die Kopf- und Fußzeile mit \code{marginpar=false} auf den Textbereich zu beschränken.
Auch ist das Standard-Layout der Kolumnentitel wenig vorteilhaft, da die Kolumnentitel damit local größer sein können als die eigentliche Überschrift. (\code{headline=automark})
Deswegen kann über
\begin{verbatim}
- \pagestyle{TUDa.headings}
+\pagestyle{TUDa.headings}
\end{verbatim}
ein einfacherer Seitenstil ausgewählt werden, der die Nutzung mit lebenden Kolumnentitel erheblich vereinfacht. Dieser Stil ist über \pck{scrlayer-scrpage} realisiert und kann entsprechend der \KOMAScript{}-Dokumentation angepasst werden.
\minisec{Hinweis zur Bindekorrektur}
Bei Verwendung einer Bindekorrektur (\code{BCOR=<Länge>}) wird diese nicht automatisch auch auf der Titelseite eingefügt. Für diesen Fall wurde mit Version 3.0 zusätzlich die Option \code{BCORtitlepage} hinzugefügt. Falls diese aktiviert wird, nimmt die Titelseite den Wert der Typearea Option \code{BCOR} auf der ersten Seite als Zusatz zum linken Rand hinzu.
-
-
\section{Spezielle Optionen für Abschlussarbeiten}
Die Klasse unterstützt alle Optionen der \file{tudapub}-Klasse. Darüber hinaus besteht über Wertzuweisung der Option \code{thesis} die Möglichkeit spezielle Einstellungen zu wählen.
Es ist prinzipiell möglich die Optionen auch direkt als Optionen zur \file{tudapub}-Klasse zu übergeben, allerdings ist dies aufgrund der schlechteren Übersicht nicht zu empfehlen.
@@ -403,58 +384,58 @@ thesis={type=drfinal,dr=phil}
Im folgenden findet sich die Bedeutung der einzelnen Optionen:
\begin{description}
-\item[type=<Wert>] Auswahl des Typus. Dieser wird auf die Titelseite gesetzt und wählt zudem aus welche Daten für die Titelseite zwingend übergeben werden müssen.
- Es stehen die folgenden Werte zur Verfügung (die Werte in Klammern sind die notwendigen Titeldaten):
- \begin{itemize}
- \item \code{sta}: Studienarbeit (title, author, date)
- \item \code{diplom}: Diplomarbeit (title, author, submissiondate, reviewer, department)
- \item \code{bachelor}: Bachelorarbeit (title, author, submissiondate, department, reviewer)
- \item \code{master}: Masterarbeit (title, author, submissiondate, department, reviewer)
- \item \code{pp}: Project-Proposal (title, author, date, department)
- \item \code{dr}: vorgelegte Dissertation (title, author, submissiondate , birthplace, department, reviewer)
- \item \code{drfinal}: genehmigte Dissertation (title, author, submissiondate,examdate, birthplace, department, reviewer)
- \end{itemize}
- Wird ein Typus angegeben, der nicht erkannt wird, so wird der Text direkt übergeben. Notwendige Titelfelder über den Titel hinaus gibt es in diesem Fall nicht.
-\item[dr=<Kürzel>] Lädt einen der vordefinierten Texte für die Titelseite. Als Werte stehen bislang \code{rernat}, \code{ing} und \code{phil} zur Verfügung. Zum Beispiel lädt der Wert \code{phil}:
- \begin{quote}
- Zur Erlangung des Grades eines Doktor der Philosophie (Dr.\,phil.)
- \end{quote}
- Sofern keiner dieser Werte dem angestrebten Titel entspricht, kann ein Text direkt übergeben werden.
- \begin{verbatim}
- \drtext{Zur Erlangung des Grades \ldots}
- \end{verbatim}
-\item[department=<Kürzel>] Die Fachbereiche sind fest als Textbausteine in Deutscher sowie Englischer Sprache hinterlegt. Diese Option ermöglicht die Auswahl als Dokumentenklassenoption. Aus Kompatibilitätsgründen kann jedoch auch das Makro \code{department}-Makro hierfür genutzt werden. Zur Verfügung stehen:\par
- \begin{tabular}{@{}l@{${}\to{}$}l@{}}
- arch & Architektur\\
- bauing& Bau- und Umweltingenieurwissenschaften\\
- bio &Biologie\\
- chem &Chemie\\
- etit &Elektrotechnik und Informationstechnik\\
- gugw &Gesellschafts- und Geschichtswissenschaften\\
- humanw&Humanwissenschaften\\
- inf &Informatik\\
- mb &Maschinenbau\\
- matgeo&Material- und Geowissenschaften\\
- math &Mathematik\\
- phys &Physik\\
- wi &Rechts- und Wirtschaftswissenschaften
- \end{tabular}
-
- Neben den Fachbereichen existieren für Abschlussarbeiten, die keine Dissertationen sind auch Studienbereiche.
- Falls das Kürzel nicht als Fachbereich hinterlegt ist, wird automatisch auf die Studienbereiche geprüft. Die Studienbereiche haben die folgenden Kürzel:
-
- \begin{tabular}{@{}l@{${}\to{}$}l@{}}
- ce&Computational Engineering\\
- ese&Energy Science and Engineering\\
- ist&Information Systems Engineering\\
- mech&Mechanik\\
- metro&Mechatronik
- \end{tabular}
-
- Falls etwas anderes als eines dieser Kürzel übergeben wird, wird der Text direkt verwendet und eine entsprechende Warnung ausgegeben.
-
- Die Auswahl der Fachrichtung erzeugt zusätzlich eine Box auf der Titelseite unterhalb des Logos. Falls diese automatische Erstellung nicht gewünscht ist, kann dies über die Option \code{instbox=false} deaktiviert werden.
-\item[ignore-missing-data] Diese Option ist ein Schalter, der es ermöglicht die Fehlermeldung über nicht übergebene Titeldaten auszuschalten. In diesem Fall wird lediglich eine Warnung erzeugt, falls die angegeben Daten nicht mit den Anforderungen übereinstimmen.
+ \item[type=<Wert>] Auswahl des Typus. Dieser wird auf die Titelseite gesetzt und wählt zudem aus welche Daten für die Titelseite zwingend übergeben werden müssen.
+ Es stehen die folgenden Werte zur Verfügung (die Werte in Klammern sind die notwendigen Titeldaten):
+ \begin{itemize}
+ \item \code{sta}: Studienarbeit (title, author, date)
+ \item \code{diplom}: Diplomarbeit (title, author, submissiondate, reviewer, department)
+ \item \code{bachelor}: Bachelorarbeit (title, author, submissiondate, department, reviewer)
+ \item \code{master}: Masterarbeit (title, author, submissiondate, department, reviewer)
+ \item \code{pp}: Project-Proposal (title, author, date, department)
+ \item \code{dr}: vorgelegte Dissertation (title, author, submissiondate , birthplace, department, reviewer)
+ \item \code{drfinal}: genehmigte Dissertation (title, author, submissiondate,examdate, birthplace, department, reviewer)
+ \end{itemize}
+ Wird ein Typus angegeben, der nicht erkannt wird, so wird der Text direkt übergeben. Notwendige Titelfelder über den Titel hinaus gibt es in diesem Fall nicht.
+ \item[dr=<Kürzel>] Lädt einen der vordefinierten Texte für die Titelseite. Als Werte stehen bislang \code{rernat}, \code{ing} und \code{phil} zur Verfügung. Zum Beispiel lädt der Wert \code{phil}:
+ \begin{quote}
+ Zur Erlangung des Grades eines Doktor der Philosophie (Dr.\,phil.)
+ \end{quote}
+ Sofern keiner dieser Werte dem angestrebten Titel entspricht, kann ein Text direkt übergeben werden.
+\begin{verbatim}
+ \drtext{Zur Erlangung des Grades \ldots}
+\end{verbatim}
+ \item[department=<Kürzel>] Die Fachbereiche sind fest als Textbausteine in Deutscher sowie Englischer Sprache hinterlegt. Diese Option ermöglicht die Auswahl als Dokumentenklassenoption. Aus Kompatibilitätsgründen kann jedoch auch das Makro \code{department}-Makro hierfür genutzt werden. Zur Verfügung stehen:\par
+ \begin{tabular}{@{}l@{${}\to{}$}l@{}}
+ arch & Architektur\\
+ bauing& Bau- und Umweltingenieurwissenschaften\\
+ bio &Biologie\\
+ chem &Chemie\\
+ etit &Elektrotechnik und Informationstechnik\\
+ gugw &Gesellschafts- und Geschichtswissenschaften\\
+ humanw&Humanwissenschaften\\
+ inf &Informatik\\
+ mb &Maschinenbau\\
+ matgeo&Material- und Geowissenschaften\\
+ math &Mathematik\\
+ phys &Physik\\
+ wi &Rechts- und Wirtschaftswissenschaften
+ \end{tabular}
+
+ Neben den Fachbereichen existieren für Abschlussarbeiten, die keine Dissertationen sind auch Studienbereiche.
+ Falls das Kürzel nicht als Fachbereich hinterlegt ist, wird automatisch auf die Studienbereiche geprüft. Die Studienbereiche haben die folgenden Kürzel:
+
+ \begin{tabular}{@{}l@{${}\to{}$}l@{}}
+ ce&Computational Engineering\\
+ ese&Energy Science and Engineering\\
+ ist&Information Systems Engineering\\
+ mech&Mechanik\\
+ metro&Mechatronik
+ \end{tabular}
+
+ Falls etwas anderes als eines dieser Kürzel übergeben wird, wird der Text direkt verwendet und eine entsprechende Warnung ausgegeben.
+
+ Die Auswahl der Fachrichtung erzeugt zusätzlich eine Box auf der Titelseite unterhalb des Logos. Falls diese automatische Erstellung nicht gewünscht ist, kann dies über die Option \code{instbox=false} deaktiviert werden.
+ \item[ignore-missing-data] Diese Option ist ein Schalter, der es ermöglicht die Fehlermeldung über nicht übergebene Titeldaten auszuschalten. In diesem Fall wird lediglich eine Warnung erzeugt, falls die angegeben Daten nicht mit den Anforderungen übereinstimmen.
\end{description}
\minisec{Abweichung von den Vorgaben für die Titelseite}
@@ -468,3 +449,4 @@ Setspace liefert hierfür die Möglichkeit, das Paket ohne Optionen zu laden und
\printbibliography
\end{document}
+%% End of file `DEMO-TUDaThesis-de.tex'.
diff --git a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
index f57f5caefe..0715afa9d3 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa.sty
@@ -1,9 +1,9 @@
-%% This is file `beamercolorthemeTUDa.sty' version 3.36 (2024-01-05),
+%% This is file `beamercolorthemeTUDa.sty' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,53 +25,50 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamercolorthemeTUDa}
-[\filedate\space\fileversion]
-\ExplSyntaxOn
-\bool_if_exist:NF \g__ptxcd_colorframetitle_bool {\bool_new:N \g__ptxcd_colorframetitle_bool}
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+\ProvidesPackage{beamercolorthemeTUDa}[2024-01-22 v3.35]
-\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}
+\ExplSyntaxOn
+\clist_map_inline:nn {
+ colortitle,
+ colorbacktitle,
+ colorframetitle,
+ colorback
+} {
+ \keys_define:nn {ptxcd/beamer/color} {#1 .code:n = \msg_warning:nnn {tudabeamer} {option-removed} {#1}}
}
-\ProcessKeyOptions[ptxcd/beamer/color]
-
-\ExplSyntaxOff
-\RequirePackage[RGB]{tudacolors}
-
-\mode<presentation>
-
-\setbeamercolor*{smallrule}{bg=black}
-\setbeamercolor*{identbar}{bg=identbarcolor}
+\keys_define:nn {ptxcd/beamer/color} {
-\ExplSyntaxOn
-\bool_if:NTF \g_ptxcd_beamer_colortitle_bool {
- \setbeamercolor*{title}{fg=textonaccentcolor,bg=accentcolor}
-}{
- \setbeamercolor*{title}{parent=normal~text}
}
+\ExplSyntaxOff
+\ProcessKeyOptions[ptxcd/beamer/color]
-\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=}
- }
+\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%
}
-\__ptxcd_setup_frametitle_color:
+\mode<presentation>
-\ExplSyntaxOff
+\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}
@@ -82,7 +79,7 @@
\setbeamercolor*{footline}{parent=normal text}
\setbeamercolor*{alerted text}{fg=textaccentcolor}
-\setbeamercolor*{structure}{fg=textaccentcolor}
+\setbeamercolor*{structure}{fg=black}
\setbeamercolor{bibliography item}{parent=item}
\setbeamercolor{bibliography entry author}{use=structure,fg=structure.fg}
@@ -90,21 +87,21 @@
\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-accent1,bg=TUDa-light2}
\setbeamercolor*{block body alerted}{use=normal text, bg=white}
-\setbeamercolor*{block frame alerted}{bg=TUDa-9b}
+\setbeamercolor*{block frame alerted}{bg=TUDa-accent1}
-\setbeamercolor*{block title example}{fg=TUDa-4d,bg=black!15}
+\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-4d}
+\setbeamercolor*{block frame example}{bg=TUDa-accent2}
+\setbeamercolor{footline}{fg=black!50}
-\mode
-<all>
+\mode<all>
\endinput
diff --git a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2023.sty b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2008.sty
index f1f4835aec..c9b9747fb6 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2023.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamercolorthemeTUDa2008.sty
@@ -1,9 +1,9 @@
-%% This is file `beamercolorthemeTUDa2023.sty' version 3.36 (2024-01-05),
+%% This is file `beamercolorthemeTUDa2008.sty' version 3.37 (2024-04-21)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,23 +25,18 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamercolorthemeTUDa2023}
-[\filedate\space\fileversion]
-\ExplSyntaxOn
-
-\clist_map_inline:nn {colortitle,
- colorbacktitle,
- colorframetitle,
- colorback
-} {
- \keys_define:nn {ptxcd/beamer/color} {#1 .code:n = \msg_warning:nn {tudabeamer} {option-removed} {#1}}
-}
+\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}
\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]
@@ -49,29 +44,29 @@
\ExplSyntaxOff
\RequirePackage[RGB]{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%
+\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}
}
-\mode<presentation>
+\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=}
+ }
+}
-\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}
+\__ptxcd_setup_frametitle_color:
+\ExplSyntaxOff
\setbeamercolor*{author}{parent=title}
\setbeamercolor*{institute}{parent=title}
@@ -81,7 +76,7 @@
\setbeamercolor*{footline}{parent=normal text}
\setbeamercolor*{alerted text}{fg=textaccentcolor}
-\setbeamercolor*{structure}{fg=black}
+\setbeamercolor*{structure}{fg=textaccentcolor}
\setbeamercolor{bibliography item}{parent=item}
\setbeamercolor{bibliography entry author}{use=structure,fg=structure.fg}
@@ -89,7 +84,7 @@
\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}
@@ -101,11 +96,10 @@
\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}
+\ExplSyntaxOn
-\setbeamercolor{footline}{fg=black!50}
+\mode<all>
-\mode
-<all>
\endinput
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
index e5d474ff9a..9b3dd3a619 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa.sty
@@ -1,9 +1,9 @@
-%% This is file `beamerfontthemeTUDa.sty' version 3.36 (2024-01-05),
+%% This is file `beamerfontthemeTUDa.sty' version 3.37 (2024-04-21)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,13 +25,10 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerfontthemeTUDa}
- [\filedate\space\fileversion]
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+\ProvidesExplPackage{beamerfontthemeTUDa}{2024-04-21}{3.37}{Beamer font theme of tuda-ci}
+\RequirePackage{tudafonts}
-\ExplSyntaxOn
\keys_define:nn {ptxcd/beamer/fonts} {
serif .bool_gset:N = \g_ptxcd_serif_bool,
serif .default:n = true,
@@ -42,25 +39,35 @@
\ProcessKeyOptions[ptxcd/beamer/fonts]
-\ExplSyntaxOff
-
\mode<presentation>
-\RequirePackage{tudafonts}
-
-\ExplSyntaxOn
\bool_if:NTF \g_ptxcd_serif_bool
{\usefonttheme{serif}}
{\renewcommand*{\familydefault}{\sfdefault}}
+
\ExplSyntaxOff
-\setbeamerfont{title}{size=\large,series=\bfseries}
-\setbeamerfont{subtitle}{size=\normalsize,series=\bfseries}
+\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=\large,series=\bfseries}
-\setbeamerfont{author in head/foot}{size=\tiny}
+\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{subsection in toc}{parent=section entry}
+\setbeamerfont{subsubsection in toc}{parent=section entry}
+
+\ExplSyntaxOn
\mode<all>
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2023.sty b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2008.sty
index 14663a8528..7edc07a3c1 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2023.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerfontthemeTUDa2008.sty
@@ -1,9 +1,9 @@
-%% This is file `beamerfontthemeTUDa2023.sty' version 3.36 (2024-01-05),
+%% This is file `beamerfontthemeTUDa2008.sty' version 3.37 (2024-04-21)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,13 +25,11 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerfontthemeTUDa2023}
- [\filedate\space\fileversion]
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+\ProvidesExplPackage{beamerfontthemeTUDa2008}{2024-04-21}{3.37}{Beamer font theme of tuda-ci, compatibility for design of 2008}
+
+\RequirePackage{tudafonts}
-\ExplSyntaxOn
\keys_define:nn {ptxcd/beamer/fonts} {
serif .bool_gset:N = \g_ptxcd_serif_bool,
serif .default:n = true,
@@ -42,37 +40,19 @@
\ProcessKeyOptions[ptxcd/beamer/fonts]
-\ExplSyntaxOff
-
\mode<presentation>
-\RequirePackage{tudafonts}
-
-\ExplSyntaxOn
\bool_if:NTF \g_ptxcd_serif_bool
{\usefonttheme{serif}}
{\renewcommand*{\familydefault}{\sfdefault}}
-\ExplSyntaxOff
-
-\setbeamerfont{title}{family=\robotoblack,size=\huge}
-\setbeamerfont*{subtitle}{family=\normalfont,size=\small}
+\setbeamerfont{title}{size=\large,series=\bfseries}
+\setbeamerfont{subtitle}{size=\normalsize,series=\bfseries}
\setbeamerfont{author}{size=\footnotesize, series=\bfseries}
\setbeamerfont{institute}{size=\footnotesize, series=\mdseries}
-\setbeamerfont{frametitle}{series=\bfseries,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{subsection in toc}{parent=section entry}
-\setbeamerfont{subsubsection in toc}{parent=section entry}
+\setbeamerfont{frametitle}{size=\large,series=\bfseries}
+\setbeamerfont{author~in~head/foot}{size=\tiny}
\mode<all>
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
index 832504cbf4..7789e86e6e 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
@@ -1,9 +1,9 @@
-%% This is file `beamerinnerthemeTUDa2023.sty' version 3.36 (2024-01-05),
+%% This is file `beamerinnerthemeTUDa.sty' version 3.37 (2024-04-21)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,10 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{beamerinnerthemeTUDa2023}{\filedate}{\fileversion}{Inner~beamer~theme~of~tuda-ci}
+\ProvidesExplPackage{beamerinnerthemeTUDa}{2024-04-21}{3.37}{Inner~beamer~theme~of~tuda-ci}
\int_new:N \g__ptxcd_beamer_toc_col_int
@@ -43,7 +41,7 @@
design / 2008 .code:n = {
\tl_gset:Nn \g__ptxcd_design_tl {2008}
},
- design .initial:n = 2008,
+ design .initial:n = 2023,
design2023 .meta:n = {design=2023},
design2008 .meta:n = {design=2008},
}
@@ -53,14 +51,14 @@
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},
+ 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}
+ },
+ 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]
@@ -106,10 +104,7 @@
\useinnertheme{TUDa\g__ptxcd_design_tl}
% Blocks
-
-
-\defbeamertemplate*{block~begin}{TUDa}
-{
+\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:}},
@@ -128,13 +123,11 @@
\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}
-\defbeamertemplate*{block~alerted~begin}{TUDa}
-{
+\defbeamertemplate*{block~alerted~begin}{TUDa}{
\par\vskip\medskipamount%
\begin{beamercolorbox}[
wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim,
@@ -151,14 +144,12 @@
\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}
-\defbeamertemplate*{block~example~begin}{TUDa}
-{
+\defbeamertemplate*{block~example~begin}{TUDa}{
\par\vskip\medskipamount%
\begin{beamercolorbox}[
wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim,
@@ -175,7 +166,7 @@
\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}
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty
index 0e87fea683..b8b9d7d4f2 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2008.sty
@@ -1,9 +1,9 @@
-%% This is file `beamerinnerthemeTUDa2008.sty' version 3.36 (2024-01-05),
+%% This is file `beamerinnerthemeTUDa2008.sty' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,88 +25,91 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{beamerinnerthemeTUDa}{\filedate}{\fileversion}{Inner~beamer~theme~of~tuda-ci, compatibility for design of 2008}
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
+\ProvidesExplPackage{beamerinnerthemeTUDa2008}{2024-04-21}{3.37}{Inner~beamer~theme~of~tuda-ci, compatibility for design of 2008}
\mode<presentation>
\RequirePackage{beamerinnerthemeTUDa2008}
-\defbeamertemplate*{title~ page}{TUDa}[1][]
-{
+\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}
-}
- }
+ \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}
+ \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}
+ +\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}
+ \raisebox{-\c_ptxcd_largerule_dim}[\dim_eval:n {\height-\c_ptxcd_largerule_dim}][0pt]{\inserttitlegraphic}
\end{beamercolorbox}
-% \endgroup
}
%Itemize Items
-\defbeamertemplate*{itemize~item}{TUDa}{\usebeamerfont*{itemize~item}\raise\dimexpr.4\ht\strutbox-.4ex\hbox{\rule{.8ex}{.8ex}}}
-\defbeamertemplate*{itemize~subitem}{TUDa}{\usebeamerfont*{itemize~item}\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~subitem}\hbox{--}}
+\defbeamertemplate*{itemize~item}{TUDa}{
+ \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}}}
+}
+\defbeamertemplate*{itemize~subsubitem}{TUDa}{\usebeamerfont*{itemize~subsubitem}\hbox{--}}
\mode<all>
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty
index 615e2ab5a3..ebef3683a6 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa2023.sty
@@ -1,9 +1,9 @@
-%% This is file `beamerinnerthemeTUDa2023.sty' version 3.36 (2024-01-05),
+%% This is file `beamerinnerthemeTUDa2023.sty' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,10 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{beamerinnerthemeTUDa2023}{\filedate}{\fileversion}{Inner~beamer~theme~of~tuda-ci,~Design~of~2023}
+\NeedsTeXFormat{LaTeX2e}[2022/10/01]
+\ProvidesExplPackage{beamerinnerthemeTUDa2023}{2024-04-21}{3.37}{Inner~beamer~theme~of~tuda-ci,~Design~of~2023}
\mode<presentation>
@@ -38,75 +36,74 @@
\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}
}
\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}
+ \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
+ \begingroup
\centering
\usebeamertemplate{title}
-% \vskip1em\par
-\bool_if:NT \g_ptxcd_authorontitle_bool {
- \usebeamertemplate{author}
- \usebeamertemplate{institute}
- }
+ % \vskip1em\par
+ \bool_if:NT \g_ptxcd_authorontitle_bool {
+ \usebeamertemplate{author}
+ \usebeamertemplate{institute}
+ }
\usebeamertemplate{date}
- \endgroup
- \vfill
+ \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
+ \usebeamerfont{date}\insertdate
\end{beamercolorbox}
}
@@ -125,16 +122,16 @@
\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
- }
+ \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
}
@@ -142,109 +139,39 @@
\__ptxcd_setup_logo_box:nnn {#1} {partnerlogo} {#2}
}
-\NewDocumentCommand{\sublogo}{sm}{
+\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
+ }
+ }
}
-
-% 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{}%
-% }
-%
-%\defbeamertemplate*{block~end}{TUDa}
-% {\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}%
-% }
-%
-%\defbeamertemplate*{block~alerted~end}{TUDa}
-% {\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}%
-%\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}%
-% }
-%\defbeamertemplate*{block~example~end}{TUDa}
-% {\end{beamercolorbox}\end{beamercolorbox}\vskip\smallskipamount}
-%
-
% 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 {\insertsection}\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 {\insertsection}\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
@@ -263,66 +190,66 @@
% 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 {
- \beamer@toc@css
- \beamer@toc@oss
- \beamer@toc@ooss
- \beamer@toc@csss
- \beamer@toc@osss
- \beamer@toc@oosss
- \beamer@toc@ooosss
- }{
- \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}%
- }
- \int_compare:nNnT {\g_tmpa_int} = {1} {\int_set:Nn \g__ptxcd_beamer_toc_col_int {1}}
- }
- }
+\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 {
+\beamer@toc@css
+\beamer@toc@oss
+\beamer@toc@ooss
+\beamer@toc@csss
+\beamer@toc@osss
+\beamer@toc@oosss
+\beamer@toc@ooosss
+}{
+\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}%
+}
+\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}%
- }
+ \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}%}
}
@@ -331,10 +258,10 @@
\def\beamer@tableofcontents[#1]{%
\ifbeamer@inframe
- \beamer@twocoltableofcontents[#1]
+ \beamer@twocoltableofcontents[#1]
\else
\begin{frame}[b]{\contentsname}
- \beamer@twocoltableofcontents[#1]
+ \beamer@twocoltableofcontents[#1]
\end{frame}
\fi
}
@@ -342,22 +269,22 @@
\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 {
@@ -377,18 +304,18 @@
\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}{\small\hbox{\vrule width .5ex height .5ex}}
-\defbeamertemplate*{itemize~subsubitem}{TUDa}{\small\hbox{\vrule width .5ex height 1ex}}
+\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>
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
index fc1db6be04..71431e1182 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa.sty
@@ -1,9 +1,9 @@
-%% This is file `beamerouterthemeTUDa.sty' version 3.36 (2024-01-05),
+%% This is file `beamerouterthemeTUDa.sty' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,12 +25,11 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{beamerouterthemeTUDa}{\filedate}{\fileversion}{Outer~beamer~theme~of~tuda-ci}
-\RequirePackage[paper=slide]{tudarules}
+\NeedsTeXFormat{LaTeX2e}[2022-06-01]
+\ProvidesExplPackage{beamerouterthemeTUDa}{2024-04-21}{3.37}{Outer~beamer~theme~of~tuda-ci~design~of~2023}
+\PassOptionsToPackage{paper=slide}{tudarules}
+\RequirePackage{tudarules}
\dim_new:N \l__ptxcd_beamer_extraindent_dim
\dim_new:N {\g__ptxcd_beamer_sep_dim}
@@ -47,30 +46,16 @@
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,
+ 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,
}
\define@key{beamerframe}{bgcolor}{
@@ -79,20 +64,9 @@
}
}
-\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_new:Nn \__ptxcd_set_framebgcolor:n {
- \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:
+\define@key{beamerframe}{uppercase}{
+ \keys_set:nn {ptxcd/beamer/outer} {
+ uppercase-frametitle=#1
}
}
@@ -101,15 +75,14 @@
\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=\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 {\paperwidth/34},
+ text~margin~right=\dim_eval:n {\paperwidth/38}
}
\cs_new:Nn \__ptxcd_beamer_linewidth: {\dim_eval:n {\paperwidth-\beamer@leftmargin-\beamer@rightmargin}}
@@ -118,45 +91,35 @@
\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}}%
+ \raisebox{\dim_eval:n {-\height+.33\c_ptxcd_logoheight_dim}}{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}%
}
-\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}
+\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}
+ }
}
}
- \bool_if:NT \l_ptxcd_tmpa_bool {~|~}
- \insertframenumber
- \hfill\raisebox{\dimexpr-.5\height+\dp\strutbox\relax}{\insertlogo}
+ \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}{
@@ -166,142 +129,95 @@
}
}
-\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}
+\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
}
-
-\box_new:N \l__ptxcd_frametitle_box
-
-\defbeamertemplate{frametitle}{TUDa.logo}{%
-\nointerlineskip%
-\begin{beamercolorbox}[
- sep=\g__ptxcd_beamer_logosep_dim,
- 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}
-\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}
-}
+\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}
+ }
}
-\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}
- }
-\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}
+\defbeamertemplate*{sidebar~right}{TUDa2023}{
+ \bool_if:NT \g_ptxcd_headlinelogo_bool {
+ \vspace{\c_ptxcd_logoheight_dim}
+ \llap{\box_use:N \g__ptxcd_sublogo_box}
}
}
-\defbeamertemplate*{frametitle}{TUDa.nologo}{%
+\defbeamertemplate*{frametitle}{TUDa2023}[1][left]{%
\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
-}}
-\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
- }}
-\end{beamercolorbox}
-\bool_if:NT \g_ptxcd_headsepline_bool {
- \nointerlineskip
+ \bool_if:NF \g__ptxcd_extended_space_bool
+ {\vskip.55ex}
\begin{beamercolorbox}[
- wd=\dimexpr\linewidth+2\l__ptxcd_beamer_extraindent_dim \relax,
- ht=\c_ptxcd_smallrule_dim,
- dp=0pt
- ]{smallrule}
+ 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
}
-}
-
-\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]
- }
-}
-\ptxcd_setup_frame:
-
\newcommand*{\setupTUDaFrame}[1]{
\keys_set:nn {ptxcd/beamer/outer} {#1}
- \ptxcd_setup_frame:
}
-
-
\mode
<all>
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2008.sty b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2008.sty
new file mode 100644
index 0000000000..177a9557d3
--- /dev/null
+++ b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2008.sty
@@ -0,0 +1,306 @@
+%% This is file `beamerouterthemeTUDa2008.sty' version 3.37 (2024-04-21),
+%% it is part of
+%% TUDa-CI -- Corporate Design for TU Darmstadt
+%% ----------------------------------------------------------------------------
+%%
+%% Copyright (C) 2018--2024 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
+%% 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.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 <tuda-ci@peitex.de>
+%%
+%% The development respository 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}
+
+\PassOptionsToPackage{paper=slide}{tudarules}
+\RequirePackage{tudarules}
+
+\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,
+}
+
+\define@key{beamerframe}{bgcolor}{
+ \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_new:Nn \__ptxcd_set_framebgcolor:n {
+ \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:
+ }
+}
+
+\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=\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,
+}
+
+\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}}%
+}
+
+\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}
+}
+
+
+
+\RenewDocumentCommand{\logo}{sm}{
+ \IfBooleanTF{#1}{
+ \setbeamertemplate{logo}{\resizebox{!}{.06\beamer@paperheight}{\mbox{#2}}}
+ }{
+ \setbeamertemplate{logo}{#2}
+ }
+}
+
+\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}
+}
+
+
+\box_new:N \l__ptxcd_frametitle_box
+
+\defbeamertemplate{frametitle}{TUDa.logo}{%
+\nointerlineskip%
+\begin{beamercolorbox}[
+ sep=\g__ptxcd_beamer_logosep_dim,
+ 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}
+\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}
+}
+}
+
+\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}
+ }
+
+\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}
+ }
+}
+
+\defbeamertemplate*{frametitle}{TUDa.nologo}{%
+ \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
+}}
+\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
+ }}
+\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}
+}
+}
+
+\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]
+ }
+}
+\ptxcd_setup_frame:
+
+\newcommand*{\setupTUDaFrame}[1]{
+ \keys_set:nn {ptxcd/beamer/outer} {#1}
+ \ptxcd_setup_frame:
+}
+
+
+
+\mode
+<all>
+
+\endinput
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2023.sty b/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2023.sty
deleted file mode 100644
index 980803001c..0000000000
--- a/macros/latex/contrib/tuda-ci/tex/beamerouterthemeTUDa2023.sty
+++ /dev/null
@@ -1,216 +0,0 @@
-%% This is file `beamerouterthemeTUDa2023.sty' version 3.36 (2024-01-05),
-%% it is part of
-%% TUDa-CI -- Corporate Design for TU Darmstadt
-%% ----------------------------------------------------------------------------
-%%
-%% Copyright (C) 2018--2023 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
-%% 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.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 <tuda-ci@peitex.de>
-%%
-%% The development respository can be found at
-%% https://github.com/tudace/tuda_latex_templates
-%% Please use the issue tracker for feedback!
-%%
-%% ============================================================================
-%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
-\NeedsTeXFormat{LaTeX2e}[2022-06-01]
-\ProvidesExplPackage{beamerouterthemeTUDa2023}{\filedate}{\fileversion}{Outer~beamer~theme~of~tuda-ci~design~of~2023}
-
-\RequirePackage[paper=slide]{tudarules}
-
-\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,
-}
-
-\define@key{beamerframe}{bgcolor}{
- \keys_set:nn {ptxcd/beamer/outer} {
- singleframebgcolor=#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=\dimexpr\paperwidth/34,
- text~margin~right=\dimexpr\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{\dimexpr-\height+.33\c_ptxcd_logoheight_dim}{\includegraphics[height=\c_ptxcd_logoheight_dim]{\g_ptxcd_logofile_tl}}%
-}
-
-\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}
-}
-
-\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
-}
-
-\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}
- }
-}
-
-
-\defbeamertemplate*{sidebar~right}{TUDa2023}{
- \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{Ü}
- \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}
-}
-
-\mode
-<all>
-
-\endinput
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
index 73aa5a5e29..a7ebab5e2b 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa-mecheng.sty
@@ -1,9 +1,9 @@
-%% This is file `beamerthemeTUDa-mecheng.sty' version 3.36 (2024-01-05),
+%% This is file `beamerthemeTUDa-mecheng.sty' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\ProvidesExplPackage{beamerthemeTUDa-mecheng}{\filedate}{\fileversion}{specific tudabeamer configuration for the department of mechanical engineering}
@@ -304,4 +304,4 @@
\mode<all>
-\endinput \ No newline at end of file
+\endinput
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
index 3ed1238fae..88d58b1fa8 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa.sty
@@ -1,9 +1,9 @@
-%% This is file `beamerthemeTUDa.sty' version 3.36 (2024-01-05),
+%% This is file `beamerthemeTUDa.sty' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,15 +25,31 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerthemeTUDa}
- [\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt]
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
+\ProvidesExplPackage{beamerthemeTUDa}{2024-04-21}{3.37}{Beamer theme using the Corporate Design of TU Darmstadt}
\mode<presentation>
-\RequirePackageWithOptions{beamerthemeTUDa2008}
+\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]
+}
+
+\RequirePackageWithOptions{beamerthemeTUDa\g__ptxcd_design_tl}
\mode<all>
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty
index 1d9b112bc8..a2c54a4730 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2008.sty
@@ -1,9 +1,9 @@
-%% This is file `beamerthemeTUDa2008.sty' version 3.36 (2024-01-05),
+%% This is file `beamerthemeTUDa2008.sty' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,9 +25,9 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
-\NeedsTeXFormat{LaTeX2e}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
+\NeedsTeXFormat{LaTeX2e}[2022/06/01]
\ProvidesPackage{beamerthemeTUDa2008}
[\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt Design of 2008]
@@ -48,14 +48,13 @@
\ExplSyntaxOff
-\usefonttheme{TUDa}
-\usecolortheme{TUDa}
-\useoutertheme{TUDa}
-\useinnertheme{TUDa}
+\usefonttheme{TUDa2008}
+\usecolortheme{TUDa2008}
+\useoutertheme{TUDa2008}
+\useinnertheme[design=2008]{TUDa}
\setbeamertemplate{navigation symbols}{}
-
\mode<all>
\endinput
diff --git a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty
index 91e3125172..417ee0c97c 100644
--- a/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty
+++ b/macros/latex/contrib/tuda-ci/tex/beamerthemeTUDa2023.sty
@@ -1,9 +1,9 @@
-%% This is file `beamerthemeTUDa2023.sty' version 3.36 (2024-01-05),
+%% This is file `beamerthemeTUDa2023.sty' version 3.37 (2024-04-21)
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,36 +25,29 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{beamerthemeTUDa2023}
- [\filedate\space\fileversion\space beamer theme using the Corporate Design of TU Darmstadt Design of 2023]
+\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>
-\ExplSyntaxOn
-
\msg_new:nnn {tudabeamer} {option-removed} {
The~design~you~selected~doesn't~support~the~option~`#1`.\\
It~will~be~ignored.
}
\keys_define:nn {ptxcd/beamer} {
- colortitle .code:n = \msg_warning:nn {tudabeamer} {option-removed} {colortitle},
- colorbacktitle .code:n = \msg_warning:nn {tudabeamer} {option-removed} {colorbacktitle},
- colorframetitle .code:n = \msg_warning:nn {tudabeamer} {option-removed} {colorframetitle},
- colorback .code:n = \msg_warning:nn {tudabeamer} {option-removed} {colorback},
+ 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]
-\ExplSyntaxOff
-
-\usefonttheme{TUDa2023}
-\usecolortheme{TUDa2023}
-\useoutertheme{TUDa2023}
+\usefonttheme{TUDa}
+\usecolortheme{TUDa}
+\useoutertheme{TUDa}
\useinnertheme[design=2023]{TUDa}
\setbeamertemplate{navigation symbols}{}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
index 2a019ee5d2..1ea5a3e716 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a0paper.clo
@@ -1,9 +1,9 @@
-%% This is file `tuda-a0paper.clo' version 3.36 (2024-01-05),
+%% This is file `tuda-a0paper.clo' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\ProvidesExplFile{tuda-a0paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{125pt}{165pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
index ecb299f814..5336c146b1 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a1paper.clo
@@ -1,9 +1,9 @@
-%% This is file `tuda-a1paper.clo' version 3.36 (2024-01-05),
+%% This is file `tuda-a1paper.clo' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\ProvidesExplFile{tuda-a1paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a1paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{86pt}{120pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
index 5af8fb7ae6..120ef18fa4 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a2paper.clo
@@ -1,9 +1,9 @@
-%% This is file `tuda-a2paper.clo' version 3.36 (2024-01-05),
+%% This is file `tuda-a2paper.clo' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\ProvidesExplFile{tuda-a2paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a0paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{65pt}{82pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
index ced810ba44..9525af7b5f 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a3paper.clo
@@ -1,9 +1,9 @@
-%% This is file `tuda-a3paper.clo' version 3.36 (2024-01-05),
+%% This is file `tuda-a3paper.clo' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\ProvidesExplFile{tuda-a3paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a3paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{47pt}{61pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
index 9081c79a2f..66c909d52f 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a4paper.clo
@@ -1,9 +1,9 @@
-%% This is file `tuda-a4paper.clo' version 3.36 (2024-01-05),
+%% This is file `tuda-a4paper.clo' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\ProvidesExplFile{tuda-a4paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a4paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{36pt}{47pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
index 75e80d48ce..0587a4ca11 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-a5paper.clo
@@ -1,9 +1,9 @@
-%% This is file `tuda-a5paper.clo' version 3.36 (2024-01-05),
+%% This is file `tuda-a5paper.clo' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\ProvidesExplFile{tuda-a5paper.clo}{\filedate}{\fileversion}{tuda-ci~size~adjustments~for~a5paper}
\cs_set:Nn \ptxcd_setup_title_sizes: {
\cs_set:Nn \ptxcd_title_fontsize: {{22pt}{28pt}}
diff --git a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
index 405025a4ea..42f186ce35 100644
--- a/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tuda-pgfplots.sty
@@ -1,9 +1,9 @@
-%% This is file `tuda-pgfplots.sty' version 3.36 (2024-01-05),
+%% This is file `tuda-pgfplots.sty' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
% 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]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
index 0a2ab1ee48..d4d5bddd29 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
@@ -1,9 +1,9 @@
-%% This is file `tudabeamer.cls' version 3.36 (2024-01-05),
+%% This is file `tudabeamer.cls' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{tudabeamer}
[\filedate\space\fileversion\space]
@@ -90,15 +90,16 @@
design / 2008 .code:n = {
\tl_gset:Nn \g__ptxcd_design_tl {2008}
},
- design .initial:n = 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,
}
-
\ExplSyntaxOff
-
-
\PassOptionsToPackage{pdfpagelabels=false,plainpages=false}{hyperref}
\PassOptionsToClass{t}{beamer}
@@ -110,6 +111,16 @@
\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 {
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.def b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
index 482049e5e6..4311888a04 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudacolors.def
+++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.def
@@ -1,9 +1,9 @@
-%% This is file `tudacolors.def' version 3.36 (2024-01-05),
+%% This is file `tudacolors.def' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\ProvidesFile{tudacolors.def}
[\filedate\space\fileversion\space Color definitions for tuda-ci]
diff --git a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
index 12c351e281..3f93095409 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudacolors.sty
@@ -1,9 +1,9 @@
-%% This is file `tudacolors.sty' version 3.36 (2024-01-05),
+%% This is file `tudacolors.sty' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudacolors}{\filedate}{\fileversion}{Color definition for TU Darmstadt's tuda-ci bundle}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
index c9f99798f0..4e2a0a435d 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaexercise.cls
@@ -1,9 +1,9 @@
-%% This is file `tudaexercise.cls' version 3.36 (2024-01-05),
+%% This is file `tudaexercise.cls' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{tudaexercise}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
index e97c230514..9eb9e3e4b2 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudafonts.sty
@@ -1,9 +1,9 @@
-%% This is file `tudafonts.sty' version 3.36 (2024-01-05),
+%% This is file `tudafonts.sty' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{tudafonts}
[\filedate\space\fileversion\space
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
index 108a41cc0a..b4336cfef9 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaleaflet.cls
@@ -1,9 +1,9 @@
-%% This is file `tudaleaflet.cls' version 3.36 (2024-01-05),
+%% This is file `tudaleaflet.cls' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudaleaflet}{\filedate}{\fileversion}{Leaflets using the Corporate Design of TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
index d322be13dd..e035975c05 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaletter.cls
@@ -1,9 +1,9 @@
-%% This is file `tudaletter.cls' version 3.36 (2024-01-05),
+%% This is file `tudaletter.cls' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{tudaletter}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
index b5d756dd77..a9175b8038 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tudalettersize10pt.clo
@@ -1,9 +1,9 @@
-%% This is file `tudalettersize10pt.clo' version 3.36 (2024-01-05),
+%% This is file `tudalettersize10pt.clo' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This file is a slightly modified version of scrsize10pt.clo
diff --git a/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg b/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
index 6c99184ae7..aacecd020e 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
+++ b/macros/latex/contrib/tuda-ci/tex/tudamecheng.cfg
@@ -1,9 +1,9 @@
-%% This is file `tudamecheng.cfg' version 3.36 (2024-01-05),
+%% This is file `tudamecheng.cfg' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\RequirePackage{expl3}
\ProvidesExplFile{tudamecheng.cfg}
{\filedate}{\fileversion}{Special Features the department of mechanical engineering of Darmstadt's Corporate Design (tuda-ci)}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
index 55bae572c7..aa4fc6fd9d 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls
@@ -1,9 +1,9 @@
-%% This is file `tudaposter.cls' version 3.36 (2024-01-05),
+%% This is file `tudaposter.cls' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudaposter}{\filedate}{\fileversion}{Poster Layouts for the Corporate Design of TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudapub.cls b/macros/latex/contrib/tuda-ci/tex/tudapub.cls
index ce48e40441..3b4a762673 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudapub.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudapub.cls
@@ -1,9 +1,9 @@
-%% This is file `tudapub.cls' version 3.36 (2024-01-05),
+%% This is file `tudapub.cls' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplClass{tudapub}
@@ -218,14 +218,14 @@
}
\prop_if_in:NnF \g__pdfmeta_outputintents_prop {GTS_PDFA1} {
- \PassOptionsToPackage{rgb}{xcolor}
+ \PassOptionsToPackage{RGB}{xcolor}
\msg_info:nn {tudapub} {colors-to-rgb}
}
}
}
\bool_if:NT \g_ptxcd_pdfx_bool {
- \PassOptionsToPackage{rgb}{xcolor}
+ \PassOptionsToPackage{RGB}{xcolor}
\msg_info:nn {tudapub} {colors-to-rgb}
}
@@ -908,7 +908,7 @@
}
%%hyperref
- \hypersetup{hidelinks, unicode,pdfa}
+ \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
@@ -985,7 +985,7 @@
\hypersetup{pdfcreator=LaTeX~using~TUDa-CI}
\msg_new:nnnn {tudapub} {metadata-to-hypersetup} {
- You~don't~use~pdfx.\\
+ You~don't~use~pdfx.~
Here~the~\string\Metadata\~command~only~exists~for~compatibility~reasons.\\
I~will~pass~the~data~to~ḩypersetup.
}{
@@ -1041,6 +1041,8 @@
}
\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}
@@ -1071,6 +1073,14 @@
\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}{%
@@ -1078,18 +1088,6 @@
}%
\def\thefootnote{\ptxcd_title_footnotestyle:n {\c@footnote}}
\if@titlepageiscoverpage
- \def\titlepage@restore{%
- \endgroup
- \ptxcd_restore_typearea:
- \bool_if:nT {! \g_ptxcd_geometry_bool && \g_ptxcd_marginpar_bool} {
- \dim_sub:Nn \evensidemargin {\marginparwidth+\marginparsep}
- \dim_add:Nn \textwidth {\marginparwidth+\marginparsep}
- \columnwidth=\textwidth
- \hsize=\columnwidth
- }
- \global\@titlepageiscoverpagefalse
- \let\titlepage@restore\relax
- }%
\begingroup
\topmargin=\dimexpr \coverpagetopmargin-1in\relax
\oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax
diff --git a/macros/latex/contrib/tuda-ci/tex/tudarules.sty b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
index 22b74c478b..fcf7e9f6ac 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudarules.sty
+++ b/macros/latex/contrib/tuda-ci/tex/tudarules.sty
@@ -1,9 +1,9 @@
-%% This is file `tudarules.sty' version 3.36 (2024-01-05),
+%% This is file `tudarules.sty' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudarules}{\filedate}{\fileversion}{Creation of colored bars for tuda-ci bundle}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
index 3ebd638173..856d0dab2d 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
+++ b/macros/latex/contrib/tuda-ci/tex/tudasciposter.cls
@@ -1,9 +1,9 @@
-%% This is file `tudasciposter.cls' version 3.36 (2024-01-05),
+%% This is file `tudasciposter.cls' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\NeedsTeXFormat{LaTeX2e}
\ProvidesExplPackage{tudasciposter}{\filedate}{\fileversion}{Scientific Poster Layout for TU Darmstadt}
diff --git a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
index 4977d1918e..e92dc5ece8 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
+++ b/macros/latex/contrib/tuda-ci/tex/tudasize9pt.clo
@@ -1,9 +1,9 @@
-%% This is file `tudasize9pt.clo' version 3.36 (2024-01-05),
+%% This is file `tudasize9pt.clo' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This file is a slightly modified version of scrsize10pt.clo
diff --git a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
index ded4b7c23b..ffd6ea3ac4 100644
--- a/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
+++ b/macros/latex/contrib/tuda-ci/tex/tudathesis.cfg
@@ -1,9 +1,9 @@
-%% This is file `tudathesis.cfg' version 3.36 (2024-01-05),
+%% This is file `tudathesis.cfg' version 3.37 (2024-04-21),
%% it is part of
%% TUDa-CI -- Corporate Design for TU Darmstadt
%% ----------------------------------------------------------------------------
%%
-%% Copyright (C) 2018--2023 by Marei Peischl <marei@peitex.de>
+%% Copyright (C) 2018--2024 by Marei Peischl <marei@peitex.de>
%%
%% ============================================================================
%% This work may be distributed and/or modified under the
@@ -25,8 +25,8 @@
%%
%% ============================================================================
%%
-\def\fileversion{3.36}
-\def\filedate{2024-01-05}
+\def\fileversion{3.37}
+\def\filedate{2024-04-21}
\RequirePackage{expl3}
\ProvidesExplFile{tudathesis.cfg}
{\filedate}{\fileversion}{Special Features for publication type 'thesis' using TU Darmstadt's Corporate Design (tuda-ci)}
@@ -460,6 +460,14 @@
\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}
@@ -468,18 +476,6 @@
}%
\def\thefootnote{\fnsymbol{footnote}}
\if@titlepageiscoverpage
- \def\titlepage@restore{%
- \endgroup
- \ptxcd_restore_typearea:
- \bool_if:nT {! \g_ptxcd_geometry_bool && \g_ptxcd_marginpar_bool} {
- \dim_sub:Nn \evensidemargin {\marginparwidth+\marginparsep}
- \dim_add:Nn \textwidth {\marginparwidth+\marginparsep}
- \columnwidth=\textwidth
- \hsize=\columnwidth
- }
- \global\@titlepageiscoverpagefalse
- \let\titlepage@restore\relax
- }%
\begingroup
\topmargin=\dimexpr \coverpagetopmargin-1in\relax
\oddsidemargin=\dimexpr \coverpageleftmargin-1in\relax
diff --git a/macros/latex/contrib/ufrgscca/README.md b/macros/latex/contrib/ufrgscca/README.md
index 1e45a066dc..7dd77cc156 100644
--- a/macros/latex/contrib/ufrgscca/README.md
+++ b/macros/latex/contrib/ufrgscca/README.md
@@ -107,7 +107,10 @@ The Current Maintainer of this work is Alceu Frigeri
## Changelog
-* Version 2.9 (this)
+* Version 2.10 (this)
+ - added a package option, noxtrbookmarks, to package ufrgscca-forms (see manual).
+
+* Version 2.9
- fixing the use of \pdfbookmark after the last hyperref/kernel update (which broke the \MakeForms command).
* Version 2.8
diff --git a/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf b/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf
index 6e884521a3..94ed35734f 100644
--- a/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf
+++ b/macros/latex/contrib/ufrgscca/doc/ufrgscca.pdf
Binary files differ
diff --git a/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex b/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex
index c008210f0a..73c7bb0171 100644
--- a/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex
+++ b/macros/latex/contrib/ufrgscca/doc/ufrgscca.tex
@@ -15,7 +15,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -636,13 +636,14 @@ Selects a student or reviewer based on theirs hash.
-\begin{codedescribe}[code,new=2023/11/18]{\DataFields,\eDataSet,\eDataFields}
+\begin{codedescribe}[code,new=2023/11/18,update=2024/04/18]{\DataFields,\eDataSet,\eDataFields,\DataGet}
\begin{codesyntax}%
\tsmacro{\DataFields}{starray-ref,field}
\tsmacro{\eDataSet}[act-hash]{starray-ref}
\tsmacro{\eDataFields}{field}
+ \tsmacro{\DataFields}{starray-ref,field,tl-var}
\end{codesyntax}
-These are, respectively, \tsobj{\starray_get_prop:nn, \starray_term_syntax:n,\starray_parsed_get_prop:n} from \tsobj[pack]{starray}. One can reference/get any field from the main \tsobj[pack]{starray} defined structures: \tsobj[key]{student,activity} as defined at chapter \ref{activity-def}.
+These are, respectively, \tsobj{\starray_get_prop:nn, \starray_term_syntax:n,\starray_parsed_get_prop:n} and \tsobj{\starray_get_prop:nnN} from \tsobj[pack]{starray}. One can reference/get any field from the main \tsobj[pack]{starray} defined structures: \tsobj[key]{student,activity} as defined at chapter \ref{activity-def}.
\end{codedescribe}
@@ -753,13 +754,6 @@ The commands \tsobj{\advisor,\coadvisor,\examiner,\altexaminer} are meant to be
\section{\tightul{ufrgscca-cover} Package}
This package is the one that sets the front pages, depending on the kind of 'report' being generated.
-%%%\subsection{Package Options}
-%%%\begin{describelist}{option}
-%%% \describe {report} { in case the doc is just a class assignment with, possibly, many co-authors. It changes mainly the front matter, which is simplified (no referral page, for instance).}
-%%% \describe {internship} { in case the doc is an internship report.}
-%%% \describe {nonrequired} { in case the internship report is related to a “non required” / “optional” internship. This option is ignored otherwise.}
-%%%
-%%%\end{describelist}
\subsection{Defined Commands}
\begin{codedescribe}[code,new=2023/11/18]{\MakeCoverPages}
@@ -811,39 +805,26 @@ This is the main command, which will typeset the front matter, from the informat
\describe{advisor-descpage}{Advisor's matter.}
\describe{bottom-descpage}{The bottom of the desc page.}
\describe{text-approvalpage}{The text presented in the approval page.}
-\describe{advisor-approvalpage}{Advisor´s matter in the approval page.}
+\describe{advisor-approvalpage}{Advisor's matter in the approval page.}
\describe{bottom-approvalpage}{The bottom of the approval page.}
\end{describelist}
-%%
-%%\begin{codedescribe}{\course,\courseacronym,\graduationtitle,\university,\universityacronym,%
-%% \universitydivision,\divisiongradcouncil,\department,\classcode,\classname,\subject}
-%%\begin{codesyntax}%
-%% \tsmacro{\course}{arg}
-%% \tsmacro{\courseacronym}{arg}
-%% \tsmacro{\graduationtitle}{arg}
-%% \tsmacro{\university}{arg}
-%% \tsmacro{\universityacronym}{arg}
-%% \tsmacro{\universitydivision}{arg}
-%% \tsmacro{\divisiongradcouncil}{arg}
-%% \tsmacro{\department}{arg}
-%% \tsmacro{\classcode}{arg}
-%% \tsmacro{\classname}{arg}
-%% \tsmacro{\subject}{arg}
-%%\end{codesyntax}
-%%In case some customization is needed, one can change them as needed. The default values are set for the \emph{control and automation} course at UFRGS/EE.
-%%\end{codedescribe}
\section{\tightul{ufrgscca-forms} Package}
-This package defines just two user commands to generate specific forms needed at UFRGS/EE.
+This package defines just two user commands to create forms needed at UFRGS/EE.
+\subsection{Package Options}
+\begin{describelist}{option}
+ \describe {noxtrbookmarks} {By default, each form will have an associated PDF bookmark, this option will suppress them.}
+\end{describelist}
+
\subsection{Forms Defined Commands}\label{forms.commands}
\begin{codedescribe}[code,update=2023/05/29]{\tcforms,\tcemptyforms}
\begin{codesyntax}%
\tsmacro{\tcforms}{formslist}
\tsmacro{\tcemptyforms}{formslist}
\end{codesyntax}
-The command \tsmacro{\tcforms}{} will generate the many forms (\tsobj[meta]{formslist}) using the information from \emph{local.tex}, whilst \tsmacro{\tcemptyforms}{} will generate said forms with 'blanks' (to be fulfilled by hand, for instance).
+The command \tsmacro{\tcforms}{} will generate the many forms (\tsobj[meta]{formslist}) using the information from \emph{local.tex}, whilst \tsmacro{\tcemptyforms}{} will generate said forms with 'blanks' (to be filled by hand, for instance).
\end{codedescribe}
@@ -936,50 +917,6 @@ A new float environment, named \tsobj[env]{env-name}, will be created. Captions
\end{codedescribe}
\fi
-\iffulldoc
-%%%%\section{\tightul{ufrgscca-gen} Package (extended documentation)}
-%%%%Just two set of commands are defined, one is kind of a 'command factory' aimed at creating macros in a standard way, while the other helps create 'case like' commands.
-%%%%
-%%%%
-%%%%\subsection{Package Options}
-%%%%\begin{describelist}{option}
-%%%% \describe {family} { sets the family name, defaults to \tsobj[value]{tcdef}.}
-%%%% \describe {group} { sets the group name, defaults to \tsobj[value]{gen}.}
-%%%%\end{describelist}
-%%%%
-%%%%\subsection{Defined Commands}
-%%%%\begin{codedescribe}{\cmdfactory,\factory,\tcgen@cdef}
-%%%% \begin{codesyntax}%
-%%%% \tsobj[code]{\cmdfactory}{\tsobj[oarg]{fam}\tsobj[xarg]{grp}\tsobj[marg]{cmd-list}}
-%%%% \tsobj[code]{\factory}{\tsobj[oarg]{fam}\tsobj[xarg]{grp}\tsobj[marg]{cmd}}
-%%%% \tsobj[code]{\tcgen@cdef}{\tsobj[oarg]{fam}\tsobj[xarg]{grp}\tsobj[marg]{cmd}\tsobj[marg]{new-val}}
-%%%% \end{codesyntax}
-%%%% \tsmacro{\cmdfactory}{} is the actual command meant to be used (the other two are just auxiliary ones). \tsobj[meta]{cmd-lst} is a csv list of commands. \tsobj[meta]{fam} is the command \emph{family} (defaults to \emph{tcdef}) and \tsobj[meta]{grp} is the family group (defaults to \emph{gen}).
-%%%%
-%%%% The newly created commands will be based on \tsmacro{\tcgen@cdef}{} (the actual assigment command) having the form \tsmacro{\cmd}{new-val}, accepting a single mandatory value. Internally \tsobj[meta]{new-val} will be stored in a macro likely named \tsmacro{\fam@grp@cmd}{}.
-%%%%
-%%%% \tsmacro{\factory}{} is basically the same as \tsmacro{\cmdfactory}{}, whilst to create just one new command (it is the command called by \tsmacro{\cmdfactory}{} via \tsmacro{\forcsvlist}{}.)
-%%%%\end{codedescribe}
-%%%%
-%%%%\begin{codedescribe}{\mkswitch,\addcase}
-%%%% \begin{codesyntax}%
-%%%% \tsmacro{\mkswitch}[default]{sw-name}
-%%%% \tsmacro{\addcase}{sw-name,str-case,code}
-%%%% \end{codesyntax}
-%%%% \tsmacro{mkswitch}{} will create a command, \tsmacro{\sw-name}{case}, which will behave like a switch/case in other programming languages. \tsobj[meta]{default} is the code to be executed in case a \emph{switching value} isn't defined.
-%%%% \tsmacro{\addcase}{} adds \emph{cases}, one by one, to the switch. \tsobj[meta]{str-case} can be any \tsmacro{\csname}{} valid name. \tsobj[meta]{code} is the code to be executed.
-%%%%
-%%%% \begin{codestore}[st=d.switch]
-%%%% \mkswitch[\gr@depcut]\gr@case@angle
-%%%% \addcase\gr@case@angle{}{\def\gr@ANG{0}}
-%%%% \addcase\gr@case@angle{A}{\def\gr@ANG{\gr@A}}
-%%%% %%
-%%%% %% actual use of the switch
-%%%% \gr@case@angle{A} % this will result in \def\gr@ANG{\gr@A}
-%%%% \end{codestore}
-%%%% \tscode*{d.switch}
-%%%%\end{codedescribe}
-\fi
\iffulldoc
\section{\tightul{ufrgscca-coord} Package (extended documentation)}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
index c76d001e5e..e5f9a55f54 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-abnt.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-abnt}
- {2024/04/17}
- {2.9}
+ {2024/04/20}
+ {2.10}
{UFRGS/CCA ABNT layout}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca-abnt} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/17},
- version .code:n = {2.9} ,
+ date .code:n = {2024/04/20},
+ version .code:n = {2.10} ,
description .code:n = {UFRGS/CCA~ abnt~layout}
}
\cs_if_exist:NF \PkgInfo
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def
index e1f43799f5..a6d20f0349 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-en.def
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def
index dab82b1098..06214fc369 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-base-ptBR.def
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
index e00d211894..a0ba2b2727 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-coord.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-coord}
- {2024/04/17}
- {2.9}
+ {2024/04/20}
+ {2.10}
{UFRGS/CCA coord commands}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca-coord} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/17},
- version .code:n = {2.9} ,
+ date .code:n = {2024/04/20},
+ version .code:n = {2.10} ,
description .code:n = {UFRGS/CCA~ coordination~ report~ commands}
}
\cs_if_exist:NF \PkgInfo
@@ -689,8 +689,10 @@
\seq_map_inline:cn {l__ufrgscca_baselist_seq}
{
\studentselect{##1}
- \eDataSet{student}
- \__ufrgscca_tlset_rem_accents:Ne \StudentBookMarkTL {\eDataFields{name}~-~}
+ \DataGet{student}{name}{\l_tmpa_tl}
+ \tl_put_right:Nn \l_tmpa_tl {~-~}
+ \__ufrgscca_tlset_rem_accents:Ne \StudentBookMarkTL {\l_tmpa_tl}
+
\__ufrgscca_student_emptyfields_if_none:
\bool_if:NT \l__ufrgscca_cocertificate_bool
@@ -710,8 +712,8 @@
\studentReviewerSelect{2}
\studentReviewerSetCase{2}
{
- \eDataSet{student.reviewer}
- \tl_set:Ne \ReviewerBookMarkTL {~-~\eDataFields{name}}
+ \DataGet{student.reviewer}{name}{\ReviewerBookMarkTL}
+ \tl_put_left:Nn \ReviewerBookMarkTL {~-~}
}
{
\tl_set:Nn \ReviewerBookMarkTL {~-~2}
@@ -720,8 +722,8 @@
\studentReviewerSelect{3}
\studentReviewerSetCase{3}
{
- \eDataSet{student.reviewer}
- \tl_set:Ne \ReviewerBookMarkTL {~-~\eDataFields{name}}
+ \DataGet{student.reviewer}{name}{\ReviewerBookMarkTL}
+ \tl_put_left:Nn \ReviewerBookMarkTL {~-~}
}
{
\tl_set:Nn \ReviewerBookMarkTL {~-~3}
@@ -740,8 +742,8 @@
\studentReviewerSelect{1}
\studentReviewerSetCase{1}
{
- \eDataSet{student.reviewer}
- \tl_set:Ne \ReviewerBookMarkTL {~-~\eDataFields{name}}
+ \DataGet{student.reviewer}{name}{\ReviewerBookMarkTL}
+ \tl_put_left:Nn \ReviewerBookMarkTL {~-~}
}
{
\tl_set:Nn \ReviewerBookMarkTL {~-~1}
@@ -751,8 +753,8 @@
\studentReviewerSelect{2}
\studentReviewerSetCase{2}
{
- \eDataSet{student.reviewer}
- \tl_set:Ne \ReviewerBookMarkTL {~-~\eDataFields{name}}
+ \DataGet{student.reviewer}{name}{\ReviewerBookMarkTL}
+ \tl_put_left:Nn \ReviewerBookMarkTL {~-~}
}
{
\tl_set:Nn \ReviewerBookMarkTL {~-~2}
@@ -762,8 +764,8 @@
\studentReviewerSelect{3}
\studentReviewerSetCase{3}
{
- \eDataSet{student.reviewer}
- \tl_set:Ne \ReviewerBookMarkTL {~-~\eDataFields{name}}
+ \DataGet{student.reviewer}{name}{\ReviewerBookMarkTL}
+ \tl_put_left:Nn \ReviewerBookMarkTL {~-~}
}
{
\tl_set:Nn \ReviewerBookMarkTL {~-~3}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
index e02cc14418..325724f4f7 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-core.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-core}
- {2024/04/17}
- {2.9}
+ {2024/04/20}
+ {2.10}
{UFRGS/CCA core commands}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca-core} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/17},
- version .code:n = {2.9} ,
+ date .code:n = {2024/04/20},
+ version .code:n = {2.10} ,
description .code:n = {UFRGS/CCA~core~commands/data}
}
\cs_if_exist:NF \PkgInfo
@@ -405,6 +405,10 @@
\starray_get_prop:nn{#1}{#2}
}
+\NewDocumentCommand{\DataGet}{mmm}{
+ \starray_get_prop:nnN{#1}{#2}{#3}
+}
+
\NewDocumentCommand{\studentReviewerSelect}{m}{
\starray_set_iter:nn {student.reviewer}{#1}
}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex
index f3d2fdaefb..f77c6ad666 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover-ptBR.tex
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -24,6 +24,14 @@
%%%==============================================================================
+
+\ExplSyntaxOn
+ \tl_new:N \tmpFieldA
+ \tl_new:N \tmpFieldB
+ \tl_new:N \tmpFieldC
+\ExplSyntaxOff
+
+
%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
@@ -71,8 +79,9 @@
} ,
cover.students = %
{%
- \eDataSet{student}%
- \centering{\MakeUppercase{\eDataFields{name}} - \eDataFields{ID}}
+ \DataGet{student}{name}{\tmpFieldA}
+ \DataGet{student}{ID}{\tmpFieldB}
+ \centering{\MakeUppercase{\tmpFieldA} - \tmpFieldB}
} ,
cover.topbase = %
{%
@@ -83,8 +92,8 @@
} ,
cover.title = %
{%
- \eDataSet{student}%
- \centering\textbf{\MakeUppercase{\eDataFields{worktitle}}}
+ \DataGet{student}{worktitle}{\tmpFieldA}
+ \centering\textbf{\MakeUppercase{\tmpFieldA}}
} ,
cover.bottom = {%
\centering \UseConst{publ.city}\\ \UseConst{publ.date}\par
@@ -128,8 +137,9 @@
{%
\studentiterate%
{%
- \eDataSet{student}%
- \centering{\MakeUppercase{\eDataFields{name}}~ -~ \eDataFields{ID}}\\
+ \DataGet{student}{name}{\tmpFieldA}
+ \DataGet{student}{ID}{\tmpFieldB}
+ \centering{\MakeUppercase{\tmpFieldA} - \tmpFieldB}
}
}
}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
index f9ce37854b..6ad4cadcf5 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-cover.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-cover}
- {2024/04/17}
- {2.9}
+ {2024/04/20}
+ {2.10}
{UFRGS/CCA cover commands}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca-cover} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/17},
- version .code:n = {2.9} ,
+ date .code:n = {2024/04/20},
+ version .code:n = {2.10} ,
description .code:n = {UFRGS/CCA~ cover~pages}
}
\cs_if_exist:NF \PkgInfo
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
index 97a0f6148c..43b6ac7492 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-curr.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-curr}
- {2024/04/17}
- {2.9}
+ {2024/04/20}
+ {2.10}
{UFRGS/CCA curricula commands}
%%%%%%%
@@ -41,8 +41,8 @@
{
name .code:n = {ufrgscca-curr} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/17},
- version .code:n = {2.9} ,
+ date .code:n = {2024/04/20},
+ version .code:n = {2.10} ,
description .code:n = {UFRGS/CCA~ curricula~ commands}
}
\cs_if_exist:NF \PkgInfo
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
index 7a45554dd3..29cca50279 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-forms}
- {2024/04/17}
- {2.9}
+ {2024/04/20}
+ {2.10}
{UFRGS/CCA forms commands}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca-forms} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/17},
- version .code:n = {2.9} ,
+ date .code:n = {2024/04/20},
+ version .code:n = {2.10} ,
description .code:n = {UFRGS/CCA~ forms~commands}
}
\cs_if_exist:NF \PkgInfo
@@ -55,14 +55,21 @@
%%%%%%%
%%% End of cut-n-paste
%%%%%%%
-
-
-
+
\RequirePackage{starray}
\RequirePackage{amsfonts}
+\keys_define:nn { ufrgscca.forms }
+ {
+ noxtrbookmarks .usage:n = load ,
+ noxtrbookmarks .bool_set:N = \l__ufrgscca_noxtrbookmarks_bool ,
+ }
+
+\ProcessKeyOptions[ufrgscca.forms]\relax
+
+
\cs_generate_variant:Nn \tl_gset:Nn {Ne}
\DeclareKeys[forms]{
@@ -122,8 +129,8 @@
\studentReviewerSelect{1}
\studentReviewerSetCase{1}
{
- \eDataSet{student.reviewer}
- \tl_set:Ne \ReviewerBookMarkTL {~-~\eDataFields{name}}
+ \DataGet{student.reviewer}{name}{\ReviewerBookMarkTL}
+ \tl_put_left:Nn \ReviewerBookMarkTL {~-~}
}
{
\tl_set:Nn \ReviewerBookMarkTL {~-~1}
@@ -143,8 +150,8 @@
\studentReviewerSelect{2}
\studentReviewerSetCase{2}
{
- \eDataSet{student.reviewer}
- \tl_set:Ne \ReviewerBookMarkTL {~-~\eDataFields{name}}
+ \DataGet{student.reviewer}{name}{\ReviewerBookMarkTL}
+ \tl_put_left:Nn \ReviewerBookMarkTL {~-~}
}
{
\tl_set:Nn \ReviewerBookMarkTL {~-~2}
@@ -153,8 +160,8 @@
\studentReviewerSelect{3}
\studentReviewerSetCase{3}
{
- \eDataSet{student.reviewer}
- \tl_set:Ne \ReviewerBookMarkTL {~-~\eDataFields{name}}
+ \DataGet{student.reviewer}{name}{\ReviewerBookMarkTL}
+ \tl_put_left:Nn \ReviewerBookMarkTL {~-~}
}
{
\tl_set:Nn \ReviewerBookMarkTL {~-~3}
@@ -176,8 +183,8 @@
\studentReviewerSelect{1}
\studentReviewerSetCase{1}
{
- \eDataSet{student.reviewer}
- \tl_set:Ne \ReviewerBookMarkTL {~-~\eDataFields{name}}
+ \DataGet{student.reviewer}{name}{\ReviewerBookMarkTL}
+ \tl_put_left:Nn \ReviewerBookMarkTL {~-~}
}
{
\tl_set:Nn \ReviewerBookMarkTL {~-~1}
@@ -188,8 +195,8 @@
\studentReviewerSelect{2}
\studentReviewerSetCase{2}
{
- \eDataSet{student.reviewer}
- \tl_set:Ne \ReviewerBookMarkTL {~-~\eDataFields{name}}
+ \DataGet{student.reviewer}{name}{\ReviewerBookMarkTL}
+ \tl_put_left:Nn \ReviewerBookMarkTL {~-~}
}
{
\tl_set:Nn \ReviewerBookMarkTL {~-~2}
@@ -200,8 +207,8 @@
\studentReviewerSelect{3}
\studentReviewerSetCase{3}
{
- \eDataSet{student.reviewer}
- \tl_set:Ne \ReviewerBookMarkTL {~-~\eDataFields{name}}
+ \DataGet{student.reviewer}{name}{\ReviewerBookMarkTL}
+ \tl_put_left:Nn \ReviewerBookMarkTL {~-~}
}
{
\tl_set:Nn \ReviewerBookMarkTL {~-~3}
@@ -225,8 +232,9 @@
\NewDocumentCommand{\tcforms}{m}{%
\bool_set_false:N \l__ufrgscca_emptyforms_bool
\__ufrgscca_student_emptyfields_if_none:
- \eDataSet{student}
- \tl_set:Ne \StudentBookMarkTL {\eDataFields{name}~-~}
+ \DataGet{student}{name}{\StudentBookMarkTL}
+ \tl_put_right:Nn \StudentBookMarkTL {~-~}
+
\SetKeys[forms]{#1}%
}
@@ -282,9 +290,13 @@
\prop_get:NnNTF \l__ufrgscca_forms_prop {#1.top} \l_tmpa_tl
{ \l_tmpa_tl }
{ \UseTerm{cover.topbase}\\ }
- \prop_get:NnNTF \l__ufrgscca_forms_prop {#1.bookmark} \l_tmpa_tl
- { \l_tmpa_tl }
+ \bool_if:NTF \l__ufrgscca_noxtrbookmarks_bool
{}
+ {
+ \prop_get:NnNTF \l__ufrgscca_forms_prop {#1.bookmark} \l_tmpa_tl
+ { \l_tmpa_tl }
+ {}
+ }
\prop_get:NnNTF \l__ufrgscca_forms_prop {#1.heading} \l_tmpa_tl
{ {\sc \l_tmpa_tl}\\[6mm] }
{ \par\vspace{5mm} }
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex
index e0fcad5038..d56cfae929 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-forms.tex
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -51,7 +51,7 @@
%% req form - Internship
%%%%%%%%%%%%%%%
\SetForm{internshiprequest}{heading}{\UseTerm{title.internship}}
-\SetForm{internshiprequest}{bookmark}{\PdfTermBookMark{book.internrequestform}}
+\SetForm{internshiprequest}{bookmark}{\pdfTermBookMark{book.internrequestform}}
\SetForm{internshiprequest}{title}{\UseTerm{title.requestform}}
%%%
@@ -101,7 +101,7 @@ Data de Início: {\bf \DataFields{student.internship}{start}}\hfill Previsão de
%% supervisor`s form - Internship
%%%%%%%%%%%%%%%
\SetForm{internshipsupervisorform}{heading}{\UseTerm{title.internship}}
-\SetForm{internshipsupervisorform}{bookmark}{\PdfTermBookMark{book.internsupervisorform}}
+\SetForm{internshipsupervisorform}{bookmark}{\pdfTermBookMark{book.internsupervisorform}}
\SetForm{internshipsupervisorform}{title}{\UseTerm{title.internsupervisorform}}
\SetForm{internshipsupervisorform}{footnote}{\UseTerm{footnote.supervisorsform}}
@@ -147,7 +147,7 @@ Data de Início: {\bf \DataFields{student.internship}{start}}\hfill Previsão de
%% tutor`s form - Internship
%%%%%%%%%%%%%%%
\SetForm{internshiptutorform}{heading}{\UseTerm{title.internship}}
-\SetForm{internshiptutorform}{bookmark}{\PdfTermBookMark{book.interntutorform}}
+\SetForm{internshiptutorform}{bookmark}{\pdfTermBookMark{book.interntutorform}}
\SetForm{internshiptutorform}{title}{\UseTerm{title.interntutorform}}
%%%
@@ -196,7 +196,7 @@ Data de Início: {\bf \DataFields{student.internship}{start}}\hfill Previsão de
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\SetForm{attendancelist}{heading}{\UseTerm{title.tcc}}
-\SetForm{attendancelist}{bookmark}{\PdfTermBookMark{book.attendancelist}}
+\SetForm{attendancelist}{bookmark}{\pdfTermBookMark{book.attendancelist}}
\SetForm{attendancelist}{title}{\UseTerm{title.attendancelist}}
\SetForm{attendancelist}{opening}{}
@@ -222,7 +222,7 @@ Nome do(a) Aluno(a) --- Email\\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\SetForm{calendar-I}{heading}{\UseTerm{title.tccI}}
-\SetForm{calendar-I}{bookmark}{\PdfTermBookMark{book.calendar-I}}
+\SetForm{calendar-I}{bookmark}{\pdfTermBookMark{book.calendar-I}}
%\SetForm{calendar-I}{heading}{\UseTerm{title.tccI}}
\SetForm{calendar-I}{title}{\UseTerm{title.calendar}}
@@ -255,7 +255,7 @@ Nome do(a) Aluno(a) --- Email\\
%%%%%%%%%%%%%%%
\SetForm{calendar-II}{heading}{\UseTerm{title.tccII}}
-\SetForm{calendar-II}{bookmark}{\PdfTermBookMark{book.calendar-II}}
+\SetForm{calendar-II}{bookmark}{\pdfTermBookMark{book.calendar-II}}
\SetForm{calendar-II}{title}{\UseTerm{title.calendar}}
\SetForm{calendar-II}{opening}{}
@@ -301,7 +301,7 @@ Nome do(a) Aluno(a) --- Email\\
%% req form - I
%%%%%%%%%%%%%%%
\SetForm{request-I}{heading}{\UseTerm{title.tccI}}
-\SetForm{request-I}{bookmark}{\PdfTermBookMark{book.requestform-I}}
+\SetForm{request-I}{bookmark}{\pdfTermBookMark{book.requestform-I}}
\SetForm{request-I}{title}{\UseTerm{title.requestform}}
\SetForm{request-I}{opening}{
@@ -341,7 +341,7 @@ Nome do(a) Aluno(a) --- Email\\
%% coadvisor - I
%%%%%%%%%%%%%%%
\SetForm{coadvisor-I}{heading}{\UseTerm{title.tccI}}
-\SetForm{coadvisor-I}{bookmark}{\PdfTermBookMark{book.coadvisorform-I}}
+\SetForm{coadvisor-I}{bookmark}{\pdfTermBookMark{book.coadvisorform-I}}
\SetForm{coadvisor-I}{title}{\UseTerm{title.coadvisorform}}
\SetForm{coadvisor-I}{opening}{
@@ -386,7 +386,7 @@ Nome do(a) Aluno(a) --- Email\\
%% board approval - I
%%%%%%%%%%%%%%%
\SetForm{boardapproval-I}{heading}{\UseTerm{title.tccI}}
-\SetForm{boardapproval-I}{bookmark}{\PdfTermBookMark{book.boardapproval-I}}
+\SetForm{boardapproval-I}{bookmark}{\pdfTermBookMark{book.boardapproval-I}}
\SetForm{boardapproval-I}{title}{\UseTerm{title.boardapproval}}
\SetForm{boardapproval-I}{opening}{\UseTerm{desc.studentwork.full}}
@@ -415,7 +415,7 @@ Nome do(a) Aluno(a) --- Email\\
%% advisor's approval - I
%%%%%%%%%%%%%%%
\SetForm{advisorsapproval-I}{heading}{\UseTerm{title.tccI}}
-\SetForm{advisorsapproval-I}{bookmark}{\PdfTermBookMark{book.advisorapproval-I}}
+\SetForm{advisorsapproval-I}{bookmark}{\pdfTermBookMark{book.advisorapproval-I}}
\SetForm{advisorsapproval-I}{title}{\UseTerm{title.advisorsapproval-I}}
\SetForm{advisorsapproval-I}{opening}{\UseTerm{desc.studentwork.full}}
@@ -443,7 +443,7 @@ Nome do(a) Aluno(a) --- Email\\
%% examiner's form - I
%%%%%%%%%%%%%%%
\SetForm{examinersform-I}{heading}{\UseTerm{title.tccI}}
-\SetForm{examinersform-I}{bookmark}{\PdfTermBookMark{book.reviewersform-I}}
+\SetForm{examinersform-I}{bookmark}{\pdfTermBookMark{book.reviewersform-I}}
\SetForm{examinersform-I}{title}{\UseTerm{title.reviewersform}}
\SetForm{examinersform-I}{footnote}{\UseTerm{footnote.reviewersform}}
\SetForm{examinersform-I}{opening}{%
@@ -496,7 +496,7 @@ Outras considerações, parecer (se necessário): \BlankLines{5}
%% rectify approval - I
%%%%%%%%%%%%%%%
\SetForm{rectifyapproval-I}{heading}{\UseTerm{title.tccI}}
-\SetForm{rectifyapproval-I}{bookmark}{\PdfTermBookMark{book.rectifyapproval-I}}
+\SetForm{rectifyapproval-I}{bookmark}{\pdfTermBookMark{book.rectifyapproval-I}}
\SetForm{rectifyapproval-I}{title}{\UseTerm{title.rectifyapproval}}
\SetForm{rectifyapproval-I}{opening}{\UseTerm{desc.studentwork.full}}
@@ -539,7 +539,7 @@ Outras considerações, parecer (se necessário): \BlankLines{5}
%% req form - II
%%%%%%%%%%%%%%%
\SetForm{request-II}{heading}{\UseTerm{title.tccII}}
-\SetForm{request-II}{bookmark}{\PdfTermBookMark{book.requestform-II}}
+\SetForm{request-II}{bookmark}{\pdfTermBookMark{book.requestform-II}}
\SetForm{request-II}{title}{\UseTerm{title.requestform}}
\SetForm{request-II}{opening}{
@@ -591,7 +591,7 @@ Outras considerações, parecer (se necessário): \BlankLines{5}
%% coadvisor - II
%%%%%%%%%%%%%%%
\SetForm{coadvisor-II}{heading}{\UseTerm{title.tccII}}
-\SetForm{coadvisor-II}{bookmark}{\PdfTermBookMark{book.coadvisorform-II}}
+\SetForm{coadvisor-II}{bookmark}{\pdfTermBookMark{book.coadvisorform-II}}
\SetForm{coadvisor-II}{title}{\UseTerm{title.coadvisorform}}
\SetForm{coadvisor-II}{opening}{
@@ -637,7 +637,7 @@ Outras considerações, parecer (se necessário): \BlankLines{5}
%% board approval - II
%%%%%%%%%%%%%%%
\SetForm{boardapproval-II}{heading}{\UseTerm{title.tccII}}
-\SetForm{boardapproval-II}{bookmark}{\PdfTermBookMark{book.boardapproval-II}}
+\SetForm{boardapproval-II}{bookmark}{\pdfTermBookMark{book.boardapproval-II}}
\SetForm{boardapproval-II}{title}{\UseTerm{title.boardapproval}}
\SetForm{boardapproval-II}{opening}{\UseTerm{desc.studentwork.full}}
@@ -672,7 +672,7 @@ Outras considerações, parecer (se necessário): \BlankLines{5}
%% advisor's approval - II
%%%%%%%%%%%%%%%
\SetForm{advisorsapproval-II}{heading}{\UseTerm{title.tccII}}
-\SetForm{advisorsapproval-II}{bookmark}{\PdfTermBookMark{book.advisorapproval-II}}
+\SetForm{advisorsapproval-II}{bookmark}{\pdfTermBookMark{book.advisorapproval-II}}
\SetForm{advisorsapproval-II}{title}{\UseTerm{title.advisorsapproval-II}}
\SetForm{advisorsapproval-II}{opening}{\UseTerm{desc.studentwork.full}}
@@ -700,7 +700,7 @@ Outras considerações, parecer (se necessário): \BlankLines{5}
%% receipts - II
%%%%%%%%%%%%%%%
\SetForm{receipts-II}{heading}{\UseTerm{title.tccII}}
-\SetForm{receipts-II}{bookmark}{\PdfTermBookMark{book.receipts-II}}
+\SetForm{receipts-II}{bookmark}{\pdfTermBookMark{book.receipts-II}}
\SetForm{receipts-II}{title}{\UseTerm{title.receipts}}
\SetForm{receipts-II}{footnote}{\UseTerm{footnote.receipts}}
@@ -732,7 +732,7 @@ Outras considerações, parecer (se necessário): \BlankLines{5}
%% examiner's form - II
%%%%%%%%%%%%%%%
\SetForm{examinersform-II}{heading}{\UseTerm{title.tccII}}
-\SetForm{examinersform-II}{bookmark}{\PdfTermBookMark{book.reviewersform-II}}
+\SetForm{examinersform-II}{bookmark}{\pdfTermBookMark{book.reviewersform-II}}
\SetForm{examinersform-II}{title}{\UseTerm{title.reviewersform}}
\SetForm{examinersform-II}{footnote}{\UseTerm{footnote.reviewersform}}
@@ -774,7 +774,7 @@ A nota (variando de zero a dez) atribuída por cada membro da banca examinadora
%% examiner's form - II
%%%%%%%%%%%%%%%
\SetForm{correctionsform-II}{heading}{\UseTerm{title.tccII}}
-\SetForm{correctionsform-II}{bookmark}{\PdfTermBookMark{book.correctionsform-II}}
+\SetForm{correctionsform-II}{bookmark}{\pdfTermBookMark{book.correctionsform-II}}
\SetForm{correctionsform-II}{title}{\UseTerm{title.correctionsform}}
\SetForm{correctionsform-II}{footnote}{\UseTerm{footnote.correctionsform}}
@@ -830,7 +830,7 @@ A nota (variando de zero a dez) atribuída por cada membro da banca examinadora
%% rectify approval - II
%%%%%%%%%%%%%%%
\SetForm{rectifyapproval-II}{heading}{\UseTerm{title.tccII}}
-\SetForm{rectifyapproval-II}{bookmark}{\PdfTermBookMark{book.rectifyapproval-II}}
+\SetForm{rectifyapproval-II}{bookmark}{\pdfTermBookMark{book.rectifyapproval-II}}
\SetForm{rectifyapproval-II}{title}{\UseTerm{title.rectifyapproval}}
\SetForm{rectifyapproval-II}{opening}{\UseTerm{desc.studentwork.full}}
@@ -969,7 +969,7 @@ A nota (variando de zero a dez) atribuída por cada membro da banca examinadora
%% referall letter- I
%%%%%%%%%%%%%%%
\SetForm{referral-I}{heading}{\UseTerm{title.tccI}}
-\SetForm{referral-I}{bookmark}{\PdfTermBookMark{book.referral-I}}
+\SetForm{referral-I}{bookmark}{\pdfTermBookMark{book.referral-I}}
\SetForm{referral-I}{title}{\UseTerm{semester}}
\SetForm{referral-I}{opening}{\UseTerm{desc.sacad}}
@@ -1020,7 +1020,7 @@ A nota (variando de zero a dez) atribuída por cada membro da banca examinadora
%% referall letter- II
%%%%%%%%%%%%%%%
\SetForm{referral-II}{heading}{\UseTerm{title.tccII}}
-\SetForm{referral-II}{bookmark}{\PdfTermBookMark{book.referral-II}}
+\SetForm{referral-II}{bookmark}{\pdfTermBookMark{book.referral-II}}
\SetForm{referral-II}{title}{\UseTerm{semester}}
\SetForm{referral-II}{opening}{\UseTerm{desc.sacad}}
@@ -1175,7 +1175,7 @@ A nota (variando de zero a dez) atribuída por cada membro da banca examinadora
%%%%%%%%%%%%%%%
\SetForm{report-I}{top}{}
\SetForm{report-I}{heading}{\vspace*{-5ex}\UseTerm{title.tccI}~ - ~\textbf{\UseTerm{semester}}}
-\SetForm{report-I}{bookmark}{\PdfTermBookMark{book.report-I}}
+\SetForm{report-I}{bookmark}{\pdfTermBookMark{book.report-I}}
\SetForm{report-I}{preopening}{}
@@ -1195,7 +1195,7 @@ A nota (variando de zero a dez) atribuída por cada membro da banca examinadora
%%%%%%%%%%%%%%%
\SetForm{report-II}{top}{}
\SetForm{report-II}{heading}{\vspace*{-5ex}\UseTerm{title.tccII}~ - ~\textbf{\UseTerm{semester}}}
-\SetForm{report-II}{bookmark}{\PdfTermBookMark{book.report-II}}
+\SetForm{report-II}{bookmark}{\pdfTermBookMark{book.report-II}}
\SetForm{report-II}{preopening}{} %
%%%
@@ -1214,7 +1214,7 @@ A nota (variando de zero a dez) atribuída por cada membro da banca examinadora
%% Boards TCC - II
%%%%%%%%%%%%%%%
\SetForm{boards}{heading}{\UseTerm{title.tccII}}
-\SetForm{boards}{bookmark}{\PdfTermBookMark{book.boards}}
+\SetForm{boards}{bookmark}{\pdfTermBookMark{book.boards}}
\SetForm{boards}{title}{\UseTerm{board.title}}
\SetForm{boards}{opening}{}
@@ -1278,7 +1278,7 @@ A nota (variando de zero a dez) atribuída por cada membro da banca examinadora
%% cocertificate
%%%%%%%%%%%%%%%
\SetForm{cocertificate}{heading}{\UseTerm{title.tcc}}
-\SetForm{cocertificate}{bookmark}{\PdfTermBookMark{book.cocertificate}}
+\SetForm{cocertificate}{bookmark}{\pdfTermBookMark{book.cocertificate}}
\SetForm{cocertificate}{title}{\UseTerm{semester}}
\SetForm{cocertificate}{opening}{À quem interessar possa,\\ certificamos que}
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
index 9af6195fec..16add4b385 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-lists.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-lists}
- {2024/04/17}
- {2.9}
+ {2024/04/20}
+ {2.10}
{UFRGS/CCA auxiliary lists commands}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca-lists} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/17} ,
- version .code:n = {2.9} ,
+ date .code:n = {2024/04/20} ,
+ version .code:n = {2.10} ,
description .code:n = {UFRGS/CCA~Auxiliary~ lists~ commands}
}
\cs_if_exist:NF \PkgInfo
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
index d0669fee97..d136068d07 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-ppc.sty
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplPackage
{ufrgscca-ppc}
- {2024/04/17}
- {2.9}
+ {2024/04/20}
+ {2.10}
{UFRGS/CCA PPC commands}
%%%%%%%
@@ -41,8 +41,8 @@
{
name .code:n = {ufrgscca-ppc} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/17},
- version .code:n = {2.9} ,
+ date .code:n = {2024/04/20},
+ version .code:n = {2.10} ,
description .code:n = {UFRGS/CCA~ auxiliary~ PPC-related~ (indicators)~ commands}
}
\cs_if_exist:NF \PkgInfo
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex
index db570d7cfe..82985d9a95 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-en.tex
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex
index 06c87caa69..569a7f7634 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca-terms-ptBR.tex
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
diff --git a/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
index 2c50f893b6..4515dc3b06 100644
--- a/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
+++ b/macros/latex/contrib/ufrgscca/latex/ufrgscca.cls
@@ -12,7 +12,7 @@
%%
%% The Current Maintainer of this work is Alceu Frigeri
%%
-%% This is version {2.9} {2024/04/17}
+%% This is version {2.10} {2024/04/20}
%%
%% The list of files that compose this work can be found in the README.md file at
%% https://ctan.org/pkg/ufrgscca
@@ -27,8 +27,8 @@
\ProvidesExplClass
{ufrgscca}
- {2024/04/17}
- {2.9}
+ {2024/04/20}
+ {2.10}
{UFRGS/CCA class}
@@ -42,8 +42,8 @@
{
name .code:n = {ufrgscca} ,
prefix .code:n = {ufrgscca} ,
- date .code:n = {2024/04/17},
- version .code:n = {2.9} ,
+ date .code:n = {2024/04/20},
+ version .code:n = {2.10} ,
description .code:n = {UFRGS/CCA~a~report~based~class~bundle}
}
\cs_if_exist:NF \PkgInfo
@@ -110,10 +110,12 @@
{\tl_gset:Nn #2 {}}
}
-\NewDocumentCommand{\PdfTermBookMark}{m}
+\NewDocumentCommand{\pdfTermBookMark}{m}
{
\prop_get:NnNTF \l__ufrgscca_terms_prop {#1} \l_tmpa_tl
- {\pdfbookmark{\l_tmpa_tl}{\l_tmpa_tl}}
+ {
+ \pdfbookmark{\l_tmpa_tl}{\l_tmpa_tl}
+ }
{}
}
diff --git a/macros/unicodetex/latex/njuthesis/njuthesis.dtx b/macros/unicodetex/latex/njuthesis/njuthesis.dtx
index 5a0f172040..90b0e949b1 100644
--- a/macros/unicodetex/latex/njuthesis/njuthesis.dtx
+++ b/macros/unicodetex/latex/njuthesis/njuthesis.dtx
@@ -112,7 +112,7 @@ To produce the documentation run the original source files ending with
%
%<class>\NeedsTeXFormat{LaTeX2e}
%<*!(driver|install)>
-%<+!driver>\GetIdInfo $Id: njuthesis.dtx 1.4.0 2024-03-19 20:30:00
+%<+!driver>\GetIdInfo $Id: njuthesis.dtx 1.4.1 2024-04-22 00:30:00
%<+!driver> +0800 NJU LUG <git+nju-lug-email-3104-issue-@yaoge123.cn>$
%<class> {Thesis template for Nanjing University}
%<class>\ProvidesExplClass{njuthesis}
@@ -148,7 +148,7 @@ To produce the documentation run the original source files ending with
% \thanks{E-mail: \href{mailto:git+nju-lug-email-3104-issue-@yaoge123.cn}
% {git+nju-lug-email-3104-issue-@yaoge123.cn}}}
%
-% \date{v1.4.0 \quad 2024-03-19}
+% \date{v1.4.1 \quad 2024-04-22}
%
% \changes{v0.1}{2021/09/04}{开始开发。}
% \changes{v0.2}{2021/09/07}{初步搭建了可用的模板。}
@@ -823,21 +823,31 @@ To produce the documentation run the original source files ending with
% 宏包的代码环境不会显示内容,具体效果需要参照各个宏包的说明文档。
% 如需抵消草稿模式的影响,请使用 \opt{final} 选项载入相关宏包。
%
-% \begin{function}[added=2022-04-19,updated=2022-09-26]{anonymous}
+% \begin{function}[added=2022-04-19,updated=2024-04-19]{anonymous}
% \begin{syntax}
-% \OPT{anonymous} = <\TFF>
+% <\OPT{anonymous}>
% \end{syntax}
% 是否开启盲审模式。
% \end{function}
%
% 盲审模式会抹除论文中的学校和个人信息,效果包括:
% \begin{itemize}
-% \item 不显示校名校徽图片
-% \item 不显示“南京大学”字样
-% \item 不显示作者、导师等基本信息
-% \item 不显示声明页、致谢页
+% \item 作者、导师姓名用 $\times\times\times$ 代替
+% \item 不显示学号,但保留年级
+% \item 不显示声明页
+% \item 致谢页仅显示书签
+% \item 成果列表仅显示刊名和年份
% \end{itemize}
%
+% 如果你想使用更严格的模式,可以参考 \ref{subsec:njusetup}~节的语法填写下面的选项。
+%
+% \begin{function}[added=2024-04-19]{anonymous-mode/no-nju}
+% \begin{syntax}
+% \OPT{no-nju} = <\TFF>
+% \end{syntax}
+% 是否隐藏学校信息。默认关闭。开启后会隐藏校名、校徽和学校代码。
+% \end{function}
+%
%
% \subsubsection{可选宏包}
% \label{subsubsec:optional-pkg}
@@ -1082,6 +1092,7 @@ To produce the documentation run the original source files ending with
%
%
% \subsection{设置接口}
+% \label{subsec:njusetup}
%
% \begin{function}[added=2021-09-10,updated=2022-08-01]{\njusetup}
% \begin{syntax}
@@ -2825,7 +2836,7 @@ To produce the documentation run the original source files ending with
% \begin{macrocode}
\clist_const:Nn \c_@@_name_anon_clist
{
- author, chairman, email, grade, student-id, reviewer,
+ author, chairman, email, student-id, reviewer,
supervisor-contact, supervisor, supervisor-ii
}
\clist_const:Nn \c_@@_name_anon_en_clist
@@ -3928,9 +3939,11 @@ To produce the documentation run the original source files ending with
% \begin{macro}{anonymous}
% \changes{v0.18}{2022/04/19}{新增盲审模式选项。}
% \changes{v1.0}{2022/07/05}{重命名盲审模式选项。}
+% \changes{v1.4}{2024/04/19}{盲审模式选项不接受传入值。}
% \begin{macro}{\g_@@_opt_anon_bool}
% 盲审模式。
% \begin{macrocode}
+ anonymous .value_forbidden:n = true,
anonymous .bool_gset:N = \g_@@_opt_anon_bool,
anonymous .initial:n = false,
% \end{macrocode}
@@ -4112,25 +4125,18 @@ To produce the documentation run the original source files ending with
\ProcessKeysOptions { nju }
% \end{macrocode}
%
-% \changes{v1.1}{2022/09/26}{盲审模式下不显示声明页。}
-% 盲审模式下不显示声明页。
-% \begin{macrocode}
-\bool_if:NT \g_@@_opt_anon_bool
- { \bool_gset_false:N \g_@@_opt_decl_bool }
-% \end{macrocode}
-%
%
% \subsection{用户接口}
%
-% \begin{macro}{abstract, bib, image, footer, footnote, header,
-% info, label-sep, listoffigures, listoftables,
+% \begin{macro}{abstract, anonymous-mode, bib, image, footer,
+% footnote, header, info, label-sep, listoffigures, listoftables,
% math, style, theorem, tableofcontents}
% 定义模块名的元(meta)键值对。
% \begin{macrocode}
\clist_map_inline:nn
{
- abstract, bib, image, footer, footnote, header,
- info, label-sep, listoffigures, listoftables,
+ abstract, anonymous-mode, bib, image, footer, footnote,
+ header, info, label-sep, listoffigures, listoftables,
math, style, theorem, tableofcontents
}
{ \keys_define:nn { nju } { #1 .meta:nn = { nju / #1 } {##1} } }
@@ -4138,15 +4144,18 @@ To produce the documentation run the original source files ending with
% \end{macro}
%
% \begin{macro}{\@@_keys_set:nn}
+%
+% \begin{macrocode}
+\cs_new_eq:NN \@@_keys_set:nn \keys_set:nn
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_keys_set_anon:nn}
% \changes{v1.1}{2022/09/26}{使用 \cs{keys_set_filter:nnn} 重构盲审模式。}
% 在开启盲审模式时,屏蔽被编入 \opt{anonymous} 分组的键值对输入。
% \begin{macrocode}
-\bool_if:NTF \g_@@_opt_anon_bool
- {
- \cs_new:Npn \@@_keys_set:nn #1#2
- { \keys_set_filter:nnn {#1} { anonymous } {#2} }
- }
- { \cs_new_eq:NN \@@_keys_set:nn \keys_set:nn }
+\cs_new:Npn \@@_keys_set_anon:nn #1#2
+ { \keys_set_filter:nnn {#1} { anonymous } {#2} }
% \end{macrocode}
% \end{macro}
%
@@ -4357,7 +4366,7 @@ To produce the documentation run the original source files ending with
\sys_if_engine_xetex:T
{
\RequirePackage { xeCJKfntef }
- \NewDocumentCommand \njuline { m } { \CJKunderline{#1} }
+ \cs_new_eq:NN \njuline \CJKunderline
}
% \end{macrocode}
% \pkg{lua-ul} 中需要在结尾使用 \tn{null} 保护尾部空白。
@@ -4365,7 +4374,7 @@ To produce the documentation run the original source files ending with
\sys_if_engine_luatex:T
{
\RequirePackage { lua-ul }
- \NewDocumentCommand \njuline { m } { \underLine{#1} \@@_null: }
+ \NewDocumentCommand \njuline { m } { \underLine {#1} \@@_null: }
}
%</class>
% \end{macrocode}
@@ -4731,16 +4740,6 @@ To produce the documentation run the original source files ending with
% \end{macrocode}
% \end{variable}
%
-% 盲审模式下抹去学校名称。
-% \begin{macrocode}
-%<*class>
-\bool_if:NT \g_@@_opt_anon_bool
- {
- \tl_clear:N \l_@@_name_nju_tl
- \tl_clear:N \l_@@_name_nju_en_tl
- }
-% \end{macrocode}
-%
%
% \subsection{字体设置}
%
@@ -4751,6 +4750,7 @@ To produce the documentation run the original source files ending with
% \begin{variable}{\c_@@_path_macoffice_tl}
% mac Office 字体路径。
% \begin{macrocode}
+%<*class>
\tl_const:Nn \c_@@_path_macoffice_tl
{ /Applications/Microsoft~ Word.app/Contents/Resources/DFonts/ }
% \end{macrocode}
@@ -4910,7 +4910,7 @@ To produce the documentation run the original source files ending with
\setCJKfamilyfont { zhhei } { SimHei } [#1]
\setCJKfamilyfont { zhfs } { FangSong } [#1]
\setCJKfamilyfont { zhkai } { KaiTi } [#1]
- \@@_stzhongs:n {#1}
+ \@@_define_stzhongs:nn { STZhongsong } {#1}
}
\cs_new:Npn \@@_loadfont_cjk_win:
{ \@@_loadfont_cjk_win:N \c_@@_name_fakebold_tl }
@@ -4953,7 +4953,7 @@ To produce the documentation run the original source files ending with
\setCJKfamilyfont { zhhei } { SimHei.ttf } [#1]
\setCJKfamilyfont { zhfs } { Fangsong.ttf } [#1]
\setCJKfamilyfont { zhkai } { Kaiti.ttf } [#1]
- \@@_stzhongs:nn { STZHONGS.ttf } {#1}
+ \@@_define_stzhongs:nn { STZHONGS.ttf } {#1}
}
\cs_new:Npn \@@_loadfont_cjk_macoffice:
{
@@ -5091,25 +5091,48 @@ To produce the documentation run the original source files ending with
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\@@_loadfont_stzhongs:,\@@_stzhongs:nn,\@@_stzhongs:n,\@@_stzhongs:}
+% \begin{variable}{\l_@@_name_stzhongsopts_tl}
+% 华文中宋的字体特性列表,默认为仅使用伪粗体。
+% \begin{macrocode}
+\tl_new:N \l_@@_name_stzhongsopts_tl
+\tl_set_eq:NN \l_@@_name_stzhongsopts_tl \c_@@_name_fakebold_tl
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_define_stzhongs:nn}
% \changes{v1.2}{2023/04/30}{在研究生模板载入华文中宋。}
% \changes{v1.3}{2023/10/09}{可以手动指定华文中宋文件位置。}
% 研究生封面额外需要的华文中宋。
% \begin{macrocode}
-\cs_new:Npn \@@_stzhongs:nn #1#2
- { \newCJKfontfamily \@@_stzhongs: {#1} [#2] }
-\cs_new:Npn \@@_stzhongs:n { \@@_stzhongs:nn { 华文中宋 } }
-\cs_new_protected:Npn \@@_loadfont_stzhongs:
+\cs_new:Npn \@@_define_stzhongs:nn #1#2
{
- \cs_if_exist_use:NF \@@_stzhongs:
+ \tl_set:Nn \l_@@_name_stzhongsfile_tl {#1}
+ \tl_set:Nn \l_@@_name_stzhongsopts_tl {#2}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_loadfont_stzhongs:n}
+% \changes{v1.2}{2023/04/30}{在研究生模板载入华文中宋。}
+% \changes{v1.3}{2023/10/09}{可以手动指定华文中宋文件位置。}
+% \changes{v1.4}{2024/04/03}{调整载入华文中宋文件的逻辑。}
+% \begin{macro}{\@@_loadfont_stzhongs:V,\@@_loadfont_stzhongs:,\@@_stzhongs:}
+% 研究生封面额外需要的华文中宋。
+% \begin{macrocode}
+\cs_new:Npn \@@_loadfont_stzhongs:
+ { \@@_loadfont_stzhongs:V \l_@@_name_stzhongsfile_tl }
+\cs_new_protected:Npn \@@_loadfont_stzhongs:n #1
+ {
+ \fontspec_font_if_exist:nTF {#1}
{
- \fontspec_font_if_exist:nTF { 华文中宋 }
- { \@@_stzhongs:n { \c_@@_name_fakebold_tl } }
+ \newCJKfontfamily \@@_stzhongs: {#1}
+ [ \l_@@_name_stzhongsopts_tl ]
+ }
{
\bool_if:NTF \g_@@_font_path_bool
{
- \@@_stzhongs:nn { \l_@@_name_stzhongsfile_tl }
- { Path = \g_@@_font_path_tl, \c_@@_name_fakebold_tl }
+ \newCJKfontfamily \@@_stzhongs: {#1}
+ [ Path = \g_@@_font_path_tl, \c_@@_name_fakebold_tl ]
}
{
\cs_set_eq:NN \@@_stzhongs: \rmfamily
@@ -5117,9 +5140,10 @@ To produce the documentation run the original source files ending with
}
}
}
- }
+\cs_generate_variant:Nn \@@_loadfont_stzhongs:n { V }
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
%
% \subsubsection{定义数学字库}
@@ -7728,11 +7752,6 @@ To produce the documentation run the original source files ending with
\msg_warning:nn { njuthesis } { missing-image }
\RequirePackage { njuvisual }
}
- \bool_if:NT \g_@@_opt_anon_bool
- {
- \RenewDocumentCommand \njuemblem { o m m } { }
- \RenewDocumentCommand \njuname { o m m } { }
- }
}
% \end{macrocode}
%
@@ -8168,44 +8187,92 @@ To produce the documentation run the original source files ending with
%
% \begin{environment}{preface}
% \begin{environment}{acknowledgement}
-% 单独制作的前言致谢页。
+% 单独制作的前言、致谢页。
% \begin{macrocode}
\NewDocumentEnvironment { preface } { +b }
{ \@@_chapter:V \l_@@_name_preface_tl #1 }
{ \cleardoublepage }
\NewDocumentEnvironment { acknowledgement } { +b }
- {
- \bool_if:NTF \g_@@_opt_anon_bool
- { \@@_bookmark_toc:V \l_@@_name_acknowledgementa_tl }
- { \@@_chapter:V \l_@@_name_acknowledgement_tl #1 }
- }
+ { \@@_acknowledgement:n {#1} }
{ \cleardoublepage }
% \end{macrocode}
% \end{environment}
% \end{environment}
%
+% \begin{macro}{\@@_acknowledgement:n}
+% 正常模式的致谢标题。
+% \begin{macrocode}
+\cs_new:Npn \@@_acknowledgement:n
+ { \@@_chapter:V \l_@@_name_acknowledgement_tl \use:n }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_acknowledgement_anon:n}
+% 盲审模式下仅显示致谢书签。
+% \begin{macrocode}
+\cs_new:Npn \@@_acknowledgement_anon:n
+ { \@@_bookmark_toc:V \l_@@_name_acknowledgementa_tl \use_none:n }
+% \end{macrocode}
+% \end{macro}
+%
%
% \subsection{成果列表}
%
-% \begin{macro}{\njupaperlist}
-% \changes{v0.10}{2021/09/29}{新增了成果列表页面。}
-% \changes{v0.14}{2021/12/20}{成果列表中可突出指定作者姓名及年份。}
-% \changes{v1.2}{2023/04/07}{修复成果列表与章末参考文献表的冲突。}
-% 成果列表。
+% \begin{macro}{\@@_anon_paperlist_setup:}
+% 创建一个仅包含刊名和年份的文献列表格式。
% \begin{macrocode}
-\NewDocumentCommand \njupaperlist
- { O { \l_@@_name_paperlist_tl } m }
+\cs_new:Npn \@@_anon_paperlist_setup:
+ {
+ \ctex_at_end_package:nn { biblatex }
+ {
+ \DeclareBibliographyDriver { anonymous }
+ {
+ \usebibmacro { begentry }
+ \usebibmacro { journal },~
+ \usebibmacro { date }
+ \usebibmacro { finentry }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_paperlist_anon:nn}
+% 生成盲审模式下的成果列表。
+% \begin{macrocode}
+\cs_new:Npn \@@_paperlist_anon:nn #1#2
+ {
+ \group_begin:
+ \newrefsection
+ \nocite {#2}
+ \printbiblist
+ [ title = #1, driver = anonymous, env = bibliography,
+ heading = subbibliography ] { anonymous }
+ \endrefsection
+ \group_end:
+ }
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\@@_paperlist:nn}
+% 生成普通模式下的成果列表。
+% \begin{macrocode}
+\cs_new:Npn \@@_paperlist:nn #1#2
{
\group_begin:
% \end{macrocode}
% 修改姓名的显示方式,使被注解的姓名可被加粗下划线表示。
+% 由于 \pkg{biblatex} 提供的 \tn{MakeCapital} 是一个 robust 命令,
+% 在绘制下划线过程中无法被完全展开,我们将其替换为
+% 可被展开的 \cs{str_uppercase:f} 以避免造成错误。
% \begin{macrocode}
+ \cs_set_eq:NN \MakeCapital \str_uppercase:f
\RenewDocumentCommand \mkbibnamegiven { m }
{ \ifitemannotation { thesisauthor }
- { \njuline { \bf ##1 } } {##1} }
+ { \bfseries \njuline {##1} } {##1} }
\RenewDocumentCommand \mkbibnamefamily { m }
{ \ifitemannotation { thesisauthor }
- { \njuline { \bf ##1 } } {##1} }
+ { \bfseries \njuline {##1} } {##1} }
% \end{macrocode}
% 修改年份的显示方式,默认进行加粗。
% \begin{macrocode}
@@ -8225,6 +8292,83 @@ To produce the documentation run the original source files ending with
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\njupaperlist}
+% \changes{v0.10}{2021/09/29}{新增了成果列表页面。}
+% \changes{v0.14}{2021/12/20}{成果列表中可突出指定作者姓名及年份。}
+% \changes{v1.2}{2023/04/07}{修复成果列表与章末参考文献表的冲突。}
+% \changes{v1.4}{2024/03/21}{修复成果列表中文姓名加粗的问题。}
+% \changes{v1.4}{2024/04/15}{盲审模式下成果列表只显示期刊和年份。}
+% 成果列表。
+% \begin{macrocode}
+\NewDocumentCommand \njupaperlist
+ { O { \l_@@_name_paperlist_tl } m } { \@@_paperlist:nn {#1} {#2} }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{盲审模式}
+% \changes{v1.4}{2024/04/19}{合并盲审模式设置。}
+%
+% \begin{macro}{anonymous-mode/no-nju}
+% \changes{v1.4}{2024/04/19}{盲审模式下可选择是否隐藏学校信息。}
+% \begin{macrocode}
+\keys_define:nn { nju / anonymous-mode }
+ {
+ no-nju .bool_gset:N = \g_@@_opt_nonju_bool,
+ no-nju .initial:n = false
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\bool_if:NT \g_@@_opt_anon_bool
+ {
+% \end{macrocode}
+% \changes{v1.1}{2022/09/26}{盲审模式下不显示声明页。}
+% 盲审模式下不显示声明页。
+% \begin{macrocode}
+ \bool_gset_false:N \g_@@_opt_decl_bool
+% \end{macrocode}
+% \changes{v1.4}{2024/04/15}{盲审模式下姓名使用占位符。}
+% 盲审模式下作者和导师姓名用 $\times\times\times$ 代替。
+% \begin{macrocode}
+ \keys_set:nn { nju / info }
+ {
+ author = \@@_name:n { anonymous a },
+ author* = \@@_name:n { anonymous a },
+ supervisor =
+ { \@@_name:n { anonymous a }, \@@_name:n { anonymous b } },
+ supervisor* =
+ { \@@_name:n { anonymous c } \@@_quad: \@@_name:n { anonymous a } },
+ supervisor-ii = ,
+ supervisor-ii* =
+ }
+% \end{macrocode}
+% 替换为匿名版本的命令。
+% \begin{macrocode}
+ \@@_anon_paperlist_setup:
+ \cs_gset_eq:NN \@@_paperlist:nn \@@_paperlist_anon:nn
+ \cs_gset_eq:NN \@@_keys_set:nn \@@_keys_set_anon:nn
+ \cs_gset_eq:NN \@@_acknowledgement:n \@@_acknowledgement_anon:n
+ }
+% \end{macrocode}
+%
+% 开启 \opt{no-nju} 模式时,清除校名、校徽以及学校代码。
+% \begin{macrocode}
+\ctex_at_end_preamble:n
+ {
+ \bool_lazy_and:nnT
+ { \g_@@_opt_anon_bool } { \g_@@_opt_nonju_bool }
+ {
+ \tl_clear:N \l_@@_name_nju_tl
+ \tl_clear:N \l_@@_name_nju_en_tl
+ \tl_gclear:N \g_@@_info_code_tl
+ \RenewDocumentCommand \njuemblem { o m m } { }
+ \RenewDocumentCommand \njuname { o m m } { }
+ }
+ }
+% \end{macrocode}
+%
%
% \subsection{符号表}
%
@@ -8323,6 +8467,9 @@ To produce the documentation run the original source files ending with
{
{ acknowledgement } { 致 \qquad{} 谢 },
{ acknowledgement a } { 致谢(盲审阶段,暂时隐去) },
+ { anonymous a } { \ensuremath { \times\times\times } },
+ { anonymous b } { \ensuremath { \times\times\times } },
+ { anonymous c } { \ensuremath { \times\times\times } },
%<def-g> { auth decl } { 学位论文出版授权书 },
%<def-p> { auth decl } { 研究报告使用授权书 },
%<def-p> { author } { 作者 },
@@ -8397,7 +8544,7 @@ To produce the documentation run the original source files ending with
%<def-g> { sign } { (签字) },
%<def-g> { sign a } { 研究生签名 },
%<def-g> { sign b } { 导师签名 },
-%<def-g> { stzhongs file } { STZHONGS.TTF },
+%<def-g> { stzhongs file } { STZhongsong },
%<def-u> { submit date } { 提交日期 },
%<def-g> { submit date } { 论文提交日期 },
%<def-p> { submit date } { 完成日期 },
@@ -8461,7 +8608,11 @@ To produce the documentation run the original source files ending with
{ blankdate } { \qquad{}年 \quad{}月 \quad{}日 } { },
{ blankdate a } { \njuline{\qquad\qquad} 年
\njuline{\qquad} 月 \njuline{\qquad} 日 } { },
- { colon } { : } { : \c_space_tl },
+% \end{macrocode}
+% \changes{v1.4}{2024/04/03}{修复 \hologo{LuaLaTeX} 下的摘要页多余换行。}
+% 这里加入伸缩量,是因为 \hologo{LuaLaTeX} 下全角冒号的宽度并不能被正确识别。
+% \begin{macrocode}
+ { colon } { :\hskip 0pt minus .4em } { : \c_space_tl },
%<def-u|def-g> { dept } { 院系 } { DEPARTMENT },
{ figure } { 图 } { figure },
{ keywords } { 关键词 } { KEYWORDS },
diff --git a/macros/unicodetex/latex/njuthesis/njuthesis.pdf b/macros/unicodetex/latex/njuthesis/njuthesis.pdf
index f7bec4075f..d6a658a1d7 100644
--- a/macros/unicodetex/latex/njuthesis/njuthesis.pdf
+++ b/macros/unicodetex/latex/njuthesis/njuthesis.pdf
Binary files differ