summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-08-17 03:00:45 +0000
committerNorbert Preining <norbert@preining.info>2021-08-17 03:00:45 +0000
commita365f4320519cd6ebeb512575849a4582aae4f45 (patch)
tree54e0db40d13fe14db56914dc1f554f23a41694e3 /macros
parentd6ac6a6734f56dafac6d47e4a2d409d287fb668c (diff)
CTAN sync 202108170300
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/easybook/easybook.dtx144
-rw-r--r--macros/latex/contrib/easybook/easybook.pdfbin586691 -> 587175 bytes
-rw-r--r--macros/latex/contrib/easybook/easybook.tex34
-rw-r--r--macros/latex/contrib/makelabels/LICENSE.md19
-rw-r--r--macros/latex/contrib/makelabels/README.md123
-rw-r--r--macros/latex/contrib/makelabels/makelabels-envlab-example.pdfbin0 -> 45918 bytes
-rw-r--r--macros/latex/contrib/makelabels/makelabels-example.pdfbin0 -> 34948 bytes
-rw-r--r--macros/latex/contrib/makelabels/makelabels.dtx765
-rw-r--r--macros/latex/contrib/makelabels/makelabels.pdfbin0 -> 686795 bytes
-rw-r--r--macros/latex/contrib/siunitx/CHANGELOG.md21
-rw-r--r--macros/latex/contrib/siunitx/siunitx-code.pdfbin1499904 -> 1510786 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx-number.dtx184
-rw-r--r--macros/latex/contrib/siunitx/siunitx-print.dtx6
-rw-r--r--macros/latex/contrib/siunitx/siunitx-print.pdfbin484555 -> 0 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx-table.dtx67
-rw-r--r--macros/latex/contrib/siunitx/siunitx-unit.dtx11
-rw-r--r--macros/latex/contrib/siunitx/siunitx-unit.pdfbin627332 -> 0 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx.pdfbin636250 -> 636202 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx.tex4
-rw-r--r--macros/latex/contrib/uni-titlepage/LICENSE.md19
-rw-r--r--macros/latex/contrib/uni-titlepage/README.md98
-rw-r--r--macros/latex/contrib/uni-titlepage/titlepage-DHBW.pdfbin0 -> 43998 bytes
-rw-r--r--macros/latex/contrib/uni-titlepage/titlepage-JT-Aufsaetze.pdfbin0 -> 41265 bytes
-rw-r--r--macros/latex/contrib/uni-titlepage/titlepage-JT-Geschichte.pdfbin0 -> 38251 bytes
-rw-r--r--macros/latex/contrib/uni-titlepage/titlepage-JT-Typography.pdfbin0 -> 26903 bytes
-rw-r--r--macros/latex/contrib/uni-titlepage/titlepage-KIT.pdfbin0 -> 42149 bytes
-rw-r--r--macros/latex/contrib/uni-titlepage/titlepage-KOMAScript.pdfbin0 -> 166494 bytes
-rw-r--r--macros/latex/contrib/uni-titlepage/titlepage-Markus-1.pdfbin0 -> 119780 bytes
-rw-r--r--macros/latex/contrib/uni-titlepage/titlepage-Markus-2.pdfbin0 -> 128796 bytes
-rw-r--r--macros/latex/contrib/uni-titlepage/titlepage-Spacer.pdfbin0 -> 127996 bytes
-rw-r--r--macros/latex/contrib/uni-titlepage/titlepage-TU-DD.pdfbin0 -> 40396 bytes
-rw-r--r--macros/latex/contrib/uni-titlepage/titlepage-TU-HH.pdfbin0 -> 54017 bytes
-rw-r--r--macros/latex/contrib/uni-titlepage/titlepage-WWUM.pdfbin0 -> 58935 bytes
-rw-r--r--macros/latex/contrib/uni-titlepage/uni-titlepage.dtx3242
-rw-r--r--macros/latex/contrib/uni-titlepage/uni-titlepage.pdfbin0 -> 841219 bytes
36 files changed, 4605 insertions, 134 deletions
diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx
index 3672b124b9..29456c1287 100644
--- a/macros/latex/contrib/easybook/easybook.dtx
+++ b/macros/latex/contrib/easybook/easybook.dtx
@@ -15,7 +15,7 @@
%<*class>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e}
-\ProvidesExplClass{easybook}{2021/08/15}{1.28p}
+\ProvidesExplClass{easybook}{2021/08/16}{1.28q}
{Typeset Chinese theses or books}
\bool_set_false:N \l__eb_compile_draft_bool
@@ -95,14 +95,12 @@
{ \eb_set_family:nnn { \CJKsfdefault } {#2} {#1} }
\cs_new_protected:Npn \eb_setCJKmonofont:nn #1#2
{ \eb_set_family:nnn { \CJKttdefault } {#2} {#1} }
-\cs_new_protected:Npn \eb_font_double_engine_set:n #1
+\eb_clist_map_inline:nn
+ { main,sans,mono,CJKmain,CJKsans,CJKmono }
{
\exp_args:Nc \RenewDocumentCommand { set#1font }{O{}mO{}}
{\use:c { eb_set#1font:nn } {##2} {##1,##3}}
}
-\eb_clist_map_function:nN
- { main,sans,mono,CJKmain,CJKsans,CJKmono }
- \eb_font_double_engine_set:n
\RenewDocumentCommand{\newCJKfontfamily}{omO{}mO{}}
{
\tl_set:Nx \l_tmpa_tl
@@ -299,7 +297,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\RequirePackage{l3keys2e,etoolbox}
-\ProvidesExplPackage{easybase}{2021/08/15}{1.28p}
+\ProvidesExplPackage{easybase}{2021/08/16}{1.28q}
{Typeset Chinese theses or books}
\cs_generate_variant:Nn \dim_add:Nn { NV,Nv }
@@ -511,20 +509,6 @@
Your~document~class~is~in~article~mode. \\
The~\string\chapter\space~command~will~not~be~used.
}
-\ctex_define:nn { style }
- {
- multoc .bool_set:N = \l__eb_toc_multi_column_bool,
- multoc .default:n = true,
- withpart .bool_set:N = \l__eb_chap_counter_withpart_bool,
- withpart .default:n = true,
- withpart .initial:n = false,
- rulewidth .dim_set:N = \l__eb_rule_width_dim,
- rulewidth .initial:n = 0.75pt,
- uppercase .bool_set:N = \l__eb_mark_uppercase_bool,
- uppercase .default:n = true,
- uppercase .initial:n = true,
- figurepath .tl_set:N = \l_eb_graphics_path_tl
- }
\LoadPackage
{
@@ -566,6 +550,41 @@
}
{ \eb_package_date_check:nn #1 }
+\NewDocumentCommand{\eb_assign_tag_brackets:n}
+ {>{\SplitArgument{1}{,}}m}
+ {\eb_assign_tag_brackets_pos:nn #1}
+\cs_new_protected:Npn \eb_assign_tag_brackets_pos:nn #1#2
+ {
+ \tl_set:Nn \eb@tag@brackets@left {#1}
+ \tl_set:Nn \eb@tag@brackets@right {#2}
+ }
+\cs_gset:Npn \tagform@ #1
+ {
+ \maketag@@@
+ {
+ \color{ctex@emph}
+ \eb@tag@brackets@left
+ \ignorespaces #1\unskip\@@italiccorr
+ \eb@tag@brackets@right
+ }
+ }
+\ctex_define:nn { style }
+ {
+ multoc .bool_set:N = \l__eb_toc_multi_column_bool,
+ multoc .default:n = true,
+ withpart .bool_set:N = \l__eb_chap_counter_withpart_bool,
+ withpart .default:n = true,
+ withpart .initial:n = false,
+ rulewidth .dim_set:N = \l__eb_rule_width_dim,
+ rulewidth .initial:n = 0.75pt,
+ uppercase .bool_set:N = \l__eb_mark_uppercase_bool,
+ uppercase .default:n = true,
+ uppercase .initial:n = true,
+ brackets .code:n = \eb_assign_tag_brackets:n {#1},
+ brackets .initial:n = { (,) },
+ figurepath .tl_set:N = \l_eb_graphics_path_tl
+ }
+
\includepdfset{fitpaper = true}
\geometry
{
@@ -1757,20 +1776,14 @@
\selectfont\ignorespaces
}
-\cs_new_protected:Npn \eb_float_proportion_set:nn #1#2
- { \tl_gset:cn { #1fraction } {#2} }
\bool_if:NF \l__eb_float_page_bool
{
- \clist_map_inline:nn
- {
- { text } { 0.1 },
- { top } { 0.9 },
- { bottom } { 0.9 },
- { floatpage } {0.9 },
- { dbltop } { 0.9 },
- { dblfloatpage } { 0.9 }
- }
- { \eb_float_proportion_set:nn #1 }
+ \tl_gset:Nn \textfraction { 0.1 }
+ \tl_gset:Nn \topfraction { 0.9 }
+ \tl_gset:Nn \bottomfraction { 0.9 }
+ \tl_gset:Nn \floatpagefraction { 0.9 }
+ \tl_gset:Nn \dbltopfraction { 0.9 }
+ \tl_gset:Nn \dblfloatpagefraction { 0.9 }
}
\skip_set:Nn \parskip { 0pt plus 2pt minus 1pt }
\skip_set:Nn \intextsep { 14pt plus 2pt minus 2pt }
@@ -1816,12 +1829,6 @@
itemsep = 0.75ex plus .1ex,topsep = 0.75ex plus .1ex,
partopsep = 0ex,parsep = 0ex
}
-\newlist{eb@outline@list}{itemize}{1}
-\newlist{eb@exercise@list}{enumerate}{2}
-\newlist{eb@eqcomp@list}{description}{1}
-\setlist[eb@outline@list]{label = outline,itemsep = 0.5ex plus .1ex}
-\setlist[eb@exercise@list]{labelsep = 0.5em,nosep}
-\setlist[eb@eqcomp@list]{labelsep = 0em,nosep}
\setlist[itemize,1]{label = bullet}
\setlist[itemize,2]{label = endash}
\setlist[itemize,3]{label = asterisk}
@@ -1829,6 +1836,12 @@
\setlist[enumerate,2]{label = alph,ref = enumii,labelwidth = *}
\setlist[enumerate,3]{label = roman,ref = enumiii,labelwidth = *}
\setlist[description]{font = sf,labelwidth = *,leftmargin = 2em}
+\newlist{eb@outline@list}{itemize}{1}
+\newlist{eb@exercise@list}{enumerate}{2}
+\newlist{eb@eqcomp@list}{description}{1}
+\setlist[eb@outline@list]{label = outline,itemsep = 0.5ex plus .1ex}
+\setlist[eb@exercise@list]{labelsep = 0.5em,nosep}
+\setlist[eb@eqcomp@list]{labelsep = 0em,nosep}
\cs_new:Npn \setexerlist #1 { \setlist*[eb@exercise@list]{#1} }
\cs_new:Npn \seteqcomplist #1 { \setlist*[eb@eqcomp@list]{#1} }
\cs_new:Npn \setoutlinelist #1 { \setlist*[eb@outline@list]{#1} }
@@ -1939,7 +1952,6 @@
headindent = \l__eb_thm_headindent_tl,
headfont = \l__eb_thm_headfont_tl,
notefont = \l__eb_thm_notefont_tl,
- notebraces = \l__eb_thm_notebraces_tl,
bodyfont = \l__eb_thm_bodyfont_tl,
headpunct = \l__eb_thm_headpunct_tl,
postheadspace = \l__eb_thm_postheadspace_tl,
@@ -1950,32 +1962,13 @@
\l__eb_thmtools_entry_prop \c__eb_thmtools_entry_clist
\prop_map_inline:Nn \l__eb_thmtools_entry_prop
{ \ctex_define:nn { thmset } { #1 .tl_set:N = #2 } }
-\NewDocumentCommand{\eb_assign_tag_brackets:n}
- {>{\SplitArgument{1}{,}}m}
- {\eb_assign_tag_brackets_pos:nn #1}
-\cs_new_protected:Npn \eb_assign_tag_brackets_pos:nn #1#2
- {
- \tl_set:Nn \eb@tag@brackets@left {#1}
- \tl_set:Nn \eb@tag@brackets@right {#2}
- }
-\cs_gset:Npn \tagform@ #1
- {
- \maketag@@@
- {
- \color{ctex@emph}
- \eb@tag@brackets@left
- \ignorespaces #1\unskip\@@italiccorr
- \eb@tag@brackets@right
- }
- }
\ctex_define:nn { thmset }
{
- thmbox .bool_set:N = \l__eb_thmbox_bool,
- thmbox .default:n = true,
- thmbox .initial:n = false,
- brackets .code:n = \eb_assign_tag_brackets:n {#1},
- brackets .initial:n = { (,) },
- unknown .code:n = \eb_msg_unknown_option:n { thmset }
+ thmbox .bool_set:N = \l__eb_thmbox_bool,
+ thmbox .default:n = true,
+ thmbox .initial:n = false,
+ notebraces .tl_set:N = \l__eb_thm_notebraces_tl,
+ unknown .code:n = \eb_msg_unknown_option:n { thmset }
}
\ctex_set:nn { thmset }
{
@@ -1984,27 +1977,26 @@
headindent = 0em,
headfont = \color{ctex@emph}\sffamily,
postheadspace = 1em,
+ notebraces = {(}{)},
within = \bool_if:NT \l__eb_class_book_bool { chapter },
headformat = \NAME\space\NUMBER\NOTE
}
\eb_at_end_preamble:n
{
+ \clist_put_right:Nx
+ \c__eb_thmtools_entry_clist { notebraces = \l__eb_thm_notebraces_tl }
\exp_last_unbraced:NNV
\declaretheoremstyle[\c__eb_thmtools_entry_clist]{easy-theorem}
\eb_thm_name_set:nnn { exercise } { Exercise } { 练习 }
\cs_undefine:N \proof
- \clist_map_inline:nn
- {
- { lemma } { 引理 },
- { example } { 例 },
- { theorem } { 定理 },
- { corollary } { 推论 },
- { definition } { 定义 },
- { proposition } { 性质 },
- { remark } { 注 } [ numbered = no ],
- { { proof } { 证明 } [ numbered = no,qed = \qedsymbol ] }
- }
- { \DeclareTheorem #1 }
+ \DeclareTheorem{lemma}{引理}
+ \DeclareTheorem{example}{例}
+ \DeclareTheorem{theorem}{定理}
+ \DeclareTheorem{corollary}{推论}
+ \DeclareTheorem{definition}{定义}
+ \DeclareTheorem{proposition}{性质}
+ \DeclareTheorem{remark}{注}[numbered = no]
+ \DeclareTheorem{proof}{证明}[numbered = no,qed = \qedsymbol]
}
\setchemformula
@@ -2403,7 +2395,7 @@
}
%</package>
%<*tcolorbox>
-\ProvidesExplFile{eb-tcolorbox.cfg}{2021/08/15}{1.28p}
+\ProvidesExplFile{eb-tcolorbox.cfg}{2021/08/16}{1.28q}
{Customization of tcolorbox for easybook}
\tl_gset:Nn \eb@tc@line@skip { 0.5\baselineskip }
diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf
index f18fa673d2..e8462e7c52 100644
--- a/macros/latex/contrib/easybook/easybook.pdf
+++ b/macros/latex/contrib/easybook/easybook.pdf
Binary files differ
diff --git a/macros/latex/contrib/easybook/easybook.tex b/macros/latex/contrib/easybook/easybook.tex
index 7d57ff11e8..59ad7179cd 100644
--- a/macros/latex/contrib/easybook/easybook.tex
+++ b/macros/latex/contrib/easybook/easybook.tex
@@ -12,8 +12,8 @@
name = easybook,
color-scheme = blue,
title = EASYBOOK 使用手册,
- version = v1.28p,
- date = 2021/08/15,
+ version = v1.28q,
+ date = 2021/08/16,
authors = 瞿毅,
info = 排版简体中文学位论文和书籍,
email = quee123@foxmail.com,
@@ -174,7 +174,7 @@
\opt{newline}\Default!
部分和章标题的样式为另起一行,符合一般英文书籍的习惯。
\keychoice{scheme}{chinese,plain}\Default{chinese}
- 文档主题方案选项 \option{scheme} 扩展了 C\TeX 文档类中同名选项原有的作用范围,选项值 \code{plain} 可使各类标题变为英文形式。包括章节标题、图表标题和定理标题等。
+ 文档主题方案选项 \option{scheme} 扩展了 C\TeX 文档类中同名选项原有的作用范围,选项值 \code{plain} 可使各类标题变为英文形式。包括章节标题、图表标题和定理名等。
\opt{enmode}\Default!
同时开启 \option{newline} 和 \keyis-{scheme}{plain} 选项以符合英文原生风格。
\keychoice{scheme}{a4paper,b5paper,c5paper,letterpaper,其它纸张}\Default{a4paper}
@@ -367,6 +367,8 @@
统一调整页眉、定理盒子以及代码框等线条的粗细。
\keybool{uppercase}\Default{true}
使用 \cs*{rightmark} 及 \cs*{leftmark} 标题标记命令获取标题内容时英文是否大写。
+ \kvsplit{brackets}{左括号,右括号}\Default{\Marg{(,)}}
+ 设置行间公式编号标签的括号,以英文逗号分隔,分别代表左右括号。
\kvsplit*{figurepath}{\meta{路径名1}\code{\}\{}\meta{路径名2}}\Default
设置插入图片的文件夹路径名,可以有多个路径名,每个路径包含在括号分隔,只有一个路径时需要包含在两层括号内。
\end{options}
@@ -514,10 +516,10 @@
\subsection{定理样式}
\label{subsec:theorem of style}
-文档类已预置 8 个定理环境,环境名及对应的定理标题见小节 \ref{subsec:theorem},它们均使用预置的定理样式 \code{easy-theorem}。下面 \module*{thmset} 模块的选项仅对这个定理样式生效,由 \pkg*{thmtools} 宏包提供支持。
+文档类已预置 8 个定理环境,环境名及对应的定理名见小节 \ref{subsec:theorem},它们均使用预置的定理样式 \code{easy-theorem}。下面 \module*{thmset} 模块的选项仅对这个定理样式生效,由 \pkg*{thmtools} 宏包提供支持。
\begin{options}
\keybool{thmbox}\Module{thmset}\Default{false}
- 开启定理环境盒子的边框,需载入 \pkg*{tcolorbox} 宏包才生效。这个选项与 \pkg*{thmtools} 中并不一致,\pkg*{thmtools} 的同名选项包括 \code{L}、\code{M} 和 \code{S} 三个参数。
+ 给定理环境使用彩色盒子。这个特殊选项在 \module*{thmset} 模块中使用 \pkg*{tcolorbox} 宏包来支持,\meta{盒子风格} 默认为 \code{tc-theorem}。新建定理命令的同名选项则包括 \code{L}、\code{M} 和 \code{S} 三个参数。
\keychoice{within}{chapter,section,其它环境,空置}\Default{chapter}
定理编号跟随的计数器,默认跟随章的编号,也可以跟随其它定理环境的编号,当计数器增加时定理编号会从零开始,空置时不跟随其它计数器编号。
\keyval-{headpunct}{代码}\Default
@@ -536,10 +538,10 @@
定理环境后的间距,使用 \pkg*{tcolorbox} 的盒子环境包装后被覆盖。
\keyval-{postheadspace}{刚性长度}\Default{1em}
定理标题后与定理第一段内容的间距。
- \keyval-{headformat}{标题格式}\Default{\cs*{NAME}\cs*{space}\cs*{NUMBER}\cs*{NOTE}}
- 定理开头部分各组成元素的排列和格式,这个选项一般不需要使用,其中 \cs*{NAME}、\cs*{NUMBER} 和 \cs*{NOTE} 分别代表标题、编号和题注。
- \kvsplit{brackets}{左括号,右括号}\Default{\Marg{(,)}}
- 设置行间公式编号标签的括号,以英文逗号分隔,分别为左右括号。
+ \kvsplit*{notebraces}{\meta{左括号}\code{\}\{}\meta{右括号}}\Default{\Marg{(}\Marg{)}}
+ 设置定理题注两边的括号,两个必选参数分别代表左括号和右括号。
+ \keyval-{headformat}{标题排列}\Default{\cs*{NAME}\cs*{space}\cs*{NUMBER}\cs*{NOTE}}
+ 定理标题各组成元素的位置排列和格式。定理标题由定理名、编号和题注组成,\meta{标题排列} 中参数 \cs*{NAME}、\cs*{NUMBER} 和 \cs*{NOTE} 分别代表定理名、编号和题注。
\end{options}
\subsubsection{新建定理样式}
@@ -547,8 +549,8 @@
\command{declaretheorem}[\oarg{键值列表1}\marg{定理环境}\oarg{键值列表2}]
声明新的定理环境命令,\cs{newtheorem} 命令与它等效。可选参数的 \meta{键值列表1} 与 \meta{键值列表2} 等效,用法与它们的同名命令一致。键值列表中常用的选项如下:
\begin{options}
- \keyval*-{name}{定理标题}
- 定理标题的默认值是环境的名称,并且首字母大写(英文标题)。
+ \keyval*-{name}{定理名}
+ 定理名的默认值是首字母大写的环境名称(英文标题)。
\keychoice*{numbered}{no,yes,unless unique}\Default{yes}
定理可以被编号、不被编号或者只有在文档中多次出现时才被编号。
\keyval*-{numberlike}{计数器}\Default
@@ -560,8 +562,8 @@
定理声明命令 \cs{DeclareTheorem} 更加便捷,同样定义一个新的定理环境,与 \cs{declaretheorem} 命令的键值列表支持相同的选项,但它们的区别有:
\begin{itemize}
\item 中英文模式下标题不同,英文标题为可选项,默认为首字母大写的 \meta{环境名}。
- \item 自动定义交叉引用的格式,引用标签前缀为定理标题名称。
- \item 定理盒子选项 \keyis-{thmbox}{true} 仍然生效,此时 \meta{盒子风格} 为定理盒子风格的名称,它需要由新建盒子风格命令 \cs{newtcbstyle} 定义,默认为 \code{tc-theorem}。
+ \item 自动定义交叉引用的格式,引用标签前缀为定理名。
+ \item 模块 \module*{thmset} 的定理盒子选项 \keyis-{thmbox}{true} 仍然生效,其中 \meta{盒子风格} 可以使用新建盒子风格命令 \cs{newtcbstyle} 定义。
\item 新建定理环境默认使用的 \meta{定理样式} 为 \code{easy-theorem},而不是 \pkg*{thmtools} 默认样式。
\end{itemize}
\command{declaretheoremstyle}[\oarg{键值列表1}\marg{定理样式}\oarg{键值列表2}]
@@ -853,7 +855,7 @@
\environment{example}\default{}
\environment{remark}\default{}
\environment{proof}
- 这些是预置的定理环境,可使用选项 \module*{thmset/}\option{thmbox} 为它们添加盒子边框,其中注与证明环境不编号,证明末尾会自动添加证明结束符,声明新的定理环境或更改边框样式见小节 \ref{subsec:theorem of style}。环境名与之对应的定理标题名如下:
+ 这些是预置的定理环境,可使用选项 \module*{thmset/}\option{thmbox} 为它们添加盒子边框,其中注与证明环境不编号,证明末尾会自动添加证明结束符,声明新的定理环境或更改边框样式见小节 \ref{subsec:theorem of style}。环境名与之对应的定理名名如下:
\begin{center}
\begin{tabular}{*{8}{c}}
\toprule
@@ -1051,7 +1053,7 @@
\begin{ctexexam}
\labelformat{eb@theorem}{定理 #1}
\newcommand{\theoremhead}[1]{定理 \UseCounter[chapter]{theorem}{\hspace{1em}#1}}
- \theoremhead{定理标题}\label{thm:theorem}
+ \theoremhead{定理内容}\label{thm:theorem}
\end{ctexexam}
\end{commands}
@@ -1091,7 +1093,7 @@
\begin{options}
\keyval-{width}{符号宽度}\Default{2em}
设置适当的符号宽度可以防止文字重叠和边界溢出等问题。
- \keyval-{delim}{引导符}\Default{——}
+ \keyval-{delim}{引导符}\Default{\Marg{——}}
全局的符号对照引导符,\cs{symb} 局部的 \meta{引导符} 和对齐方式是基于这个符号的宽度。
\keyval-{space}{符号间隙}\Default{0.25em}
符号间隙为引导符两侧与符号和说明文字间的距离。
diff --git a/macros/latex/contrib/makelabels/LICENSE.md b/macros/latex/contrib/makelabels/LICENSE.md
new file mode 100644
index 0000000000..99a6973749
--- /dev/null
+++ b/macros/latex/contrib/makelabels/LICENSE.md
@@ -0,0 +1,19 @@
+----------------------------------------------------------------------------
+
+This work may be distributed and/or modified under the conditions of the
+LaTeX Project Public License, version 1.3c of the license. 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 2005/12/01
+or later. This work has the LPPL maintenance status “maintained”.
+The current maintainer and author of this work is Markus Kohm.
+
+----------------------------------------------------------------------------
+
+Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+oder später. Dieses Werk hat den LPPL-Verwaltungs-Status „maintained”
+Der aktuelle Verwalter und Autor dieses Werks ist Markus Kohm.
+
+----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/makelabels/README.md b/macros/latex/contrib/makelabels/README.md
new file mode 100644
index 0000000000..988b116c4f
--- /dev/null
+++ b/macros/latex/contrib/makelabels/README.md
@@ -0,0 +1,123 @@
+# Letter Class Option `makelabels`
+
+----------------------------------------------------------------------------
+
+Copyright (c) Markus Kohm, 2009-2021
+Licence: LPPL 1.3c
+Release: 2021/08/14 v1.0
+
+----------------------------------------------------------------------------
+
+Requires: KOMA-Script
+
+----------------------------------------------------------------------------
+
+## Summary
+
+The standard letter class `letter` has a label feature. You can activate it
+using `\makelabels`. While in Germany window envelopes are common, printing
+labels is not common and `scrlttr2` never supported label printing. At the
+[German KOMA-Script book](https://komascript.de/komascriptbuch) I've shown
+how you can print labels simply by printing a letter with special pseudo
+value settings. Doing so you can use several configuration features. Using
+`makelabels.lco` in opposite does only implement a `\makelabels` feature
+similar to the standard letter classes. Currently there are no
+configuration features at `makelabels.lco`. But you may use package
+[`envlab`](https://www.ctan.org/pkg/envlab) from CTAN after loading
+`makelabels.lco` to get various configuration features.
+
+## Installation
+
+It is recommended to use the package manager of your TeX distribution to
+install `makelabels.lco`. But if this is not possible of if you are a
+distribution you can either use `l3build` and [sources from the git
+repository](https://github.com/komascript/makelabels) or a completely manual
+installation using a basic source file distribution.
+
+### Manual installation using `l3build` and the git sources
+
+First of all copy or clone the sources of the current release or the developer
+code from [github](https://github.com/komascript/makelabels) and use
+
+ l3build unpack
+
+to unpack the package. The unpacked files then can be found be in
+`build/unpacked`. You can use
+
+ l3build doc
+
+to generate the manual and the example PDFs.
+
+ l3build install
+
+to install the package locally. But this will neither install the manual nor
+nor the example files. Currently there are two example files, generated by
+`l3build`:
+
+ - `makelabels-example.tex` is the source of a very simple example using
+ `scrletter` class and `makelabels.lco` only. The result can be found in
+ `makelabels-example.pdf`
+ - `makelabels-envlab-example.tex` is the source of an example that shows
+ how to use package [`envlab`](https://www.ctan.org/pkg/envlab) in
+ combination with `scrletter` class and `makelabels.lco` to have more
+ versability.
+
+### Manual installation using a basic source distribution
+
+A basic source distribution consists of `makelabels.dtx` and `README.md`
+only. There may be additional manual and demo files like `makelabels.pdf`,
+`makelabels-example.pdf` or `makelabels-envlab-example.pdf`.
+
+If you have got such a basic source distribution, i.e., from CTAN,
+you first have to unpack the files using:
+
+ tex makelabels.dtx
+
+Don't use `latex`, `pdflatex`, `lualatex` or `xelatex` instead of `tex`!
+The unpacking will produce `makelabels.lco`, `makelabels-example.tex` and
+`makelabels-envlab-example.tex`.
+
+If your source distribution does not contain the manual `makelabels.pdf` and
+the example files `makelabals-example.pdf` and `makelabels-envlab-example.pdf`
+you can generate these (after the unpacking previously explained) using:
+
+ pdflatex makelabels-example.tex
+ pdflatex makelabels-example.tex
+ pdflatex makelabels-envlab-example.tex
+ pdflatex makelabale-envlab-example.tex
+ pdflatex makelabels.dtx
+ mkindex makelabels
+ pdflatex makelabels.dtx
+ mkindex makelabels
+ pdflatex makelabels.dtx
+
+To install all the runtime files, make a folder `tex/latex/makelabels` in you
+private or local TEXMF tree if this folder does not yet exists. Then copy
+`makelabels.lco` to this folder.
+
+To install the manual and the demo files, make a folder `doc/latex/makelabels`
+in the same TEXMF tree you've uses for the installation of
+`makelabels.lco`, if the folder does not yet exists. Then copy the demo files
+`makelabels-example.tex`, `makelabels-envlab-example.tex`,
+`makelabels-example.pdf`, `makelabels-envlab-example.pdf` and the manual
+`makelabels.pdf` to this folder.
+
+ MiKTeX users have to additionally update the *Filename Database*. See the
+ manual of the *MiKTeX console* for more information. TeX Live user usually do
+ not need to run `texhash`, because the private and the personal TEXMF tree is
+ usually searched completely.
+
+## Usage
+
+Like all other LCO files you can load `makelabels.lco` using
+`\LoadLetterOption{makelabels}`. For `scrlttr2` loading via optional
+argument of `\documentclass` also works, but is not recommended any longer.
+
+After loading the LCO file, you can add `\makelabels` into your document
+preamble to active the automatic generation of labels at the end of the
+document while reading the `*.aux`-file.
+
+Note: In oposite to other LCO files you must not load `mkalelabels.lco`
+after `\begin{document}`!
+
+See the manual for more information.
diff --git a/macros/latex/contrib/makelabels/makelabels-envlab-example.pdf b/macros/latex/contrib/makelabels/makelabels-envlab-example.pdf
new file mode 100644
index 0000000000..efe4882452
--- /dev/null
+++ b/macros/latex/contrib/makelabels/makelabels-envlab-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/makelabels/makelabels-example.pdf b/macros/latex/contrib/makelabels/makelabels-example.pdf
new file mode 100644
index 0000000000..0259dd794b
--- /dev/null
+++ b/macros/latex/contrib/makelabels/makelabels-example.pdf
Binary files differ
diff --git a/macros/latex/contrib/makelabels/makelabels.dtx b/macros/latex/contrib/makelabels/makelabels.dtx
new file mode 100644
index 0000000000..17e28cc128
--- /dev/null
+++ b/macros/latex/contrib/makelabels/makelabels.dtx
@@ -0,0 +1,765 @@
+% \iffalse^^A meta-comment
+% ======================================================================
+% makelabels.dtx
+% Copyright (c) Markus Kohm, 2009-2021
+%
+% This file is part of the LaTeX2e package `makelabels'.
+%
+% This work may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3c of the license.
+% 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 2005/12/01 and of this work.
+%
+% This work has the LPPL maintenance status "author-maintained".
+%
+% The Current Maintainer and author of this work is Markus Kohm.
+%
+% This work consists of the files `makelabels.dtx' and `README.md'.
+% ======================================================================
+%
+%<*dtx>
+\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi
+\ProvidesFile{makelabels.dtx}
+%</dtx>
+%<lco>\ProvidesFile{makelabels.lco}
+%<exmpl&simple>\ProvidesFile{makelabels-example.tex}
+%<exmpl&envlab>\ProvidesFile{makelabels-envlab-example.tex}
+ [2021/08/14 v1.0 provide labels with scrlttr2 and scrletter]
+%<*dtx>
+\ifx\documentclass\undefined
+ \input l3docstrip.tex
+ \generate{%
+ \usedir{tex/latex/makelabels}
+ \file{makelabels.lco}{\from{makelabels.dtx}{lco}}
+ \usedir{doc/latex/makelabels}
+ \file{makelabels-example.tex}{\from{makelabels.dtx}{exmpl,simple}}
+ \file{makelabels-envlab-example.tex}{\from{makelabels.dtx}{exmpl,envlab}}
+ }
+\else
+ \let\endbatchfile\relax
+\fi
+\endbatchfile
+\documentclass{l3doc}
+\usepackage{booktabs}
+\usepackage{scrlogo}
+\usepackage{graphicx}
+\GetFileInfo{makelabels.dtx}
+\begin{document}
+\title{Adding label functionality to
+ \texorpdfstring{\file{scrlttr2}}{scrlttr2} and
+ \texorpdfstring{\file{scrletter}}{scrletter} using
+ \texorpdfstring{\file{makelabels.lco}}{makelabels.lco}}
+\date{\fileversion{} \filedate\footnote{For support and/or bug reports see
+ \href{https://github.com/komascript/makelabels}{the project pages}.}}
+\author{Markus Kohm}
+\maketitle
+\begin{abstract}
+ In opposite to the standard letter class, the \KOMAScript{} letter class
+ \file{scrlttr2} and the \KOMAScript{} letter package \file{scrletter} do not
+ provide generation of a label page using \cs[no-index]{makelabels}. But
+ \KOMAScript{} provides the option to add new letter features using LCO
+ files. \file{makelabels.lco} is such a LCO file. It provides
+ \cs[no-index]{makelabels} similar to the standard letter class. The new
+ \cs[no-index]{makelabels} has a yet very rudimentary configurability but
+ much more than the standard letter class provides. However, it is also as
+ much compatible as needed that packages like
+ \href{https://www.ctan.org/pkg/enlab}{\file{envlab}} can be used. From
+ version 1.0 \file{makelabels.lco} is implemented using
+ \href{https://www.ctan.org/pkg/l3kernel}{\file{expl3}}.
+\end{abstract}
+\tableofcontents
+\DocInput{\filename}
+\end{document}
+%</dtx>
+% \fi^^A meta-comment
+%
+% \changes{v0.5}{2008/01/11}{First version released as \file{mlabel.lco} at
+% \url{https://komascript.de/mlabel.lco}}
+% \changes{v1.0}{2021/08/11}{Reimplementation using \file{expl3} syntax}
+%
+% \DoNotIndex{\@ifundefined,\@mainaux,\@onlypreamble,\@spaces,\@texttop}
+% \DoNotIndex{\activateareas,\AtEndLetter}
+% \DoNotIndex{\begin,\blindtext,\boxmaxdepth}
+% \DoNotIndex{\c_empty_tl,\c_max_dim,\c_one_int,\c_zero_dim}
+% \DoNotIndex{\clearpage,\closing,\columnsep}
+% \DoNotIndex{\cs:w,\cs_end:}
+% \DoNotIndex{\cs_if_exist:cTF,\cs_if_exist:NTF,\cs_new:Nn,\cs_new:Npn}
+% \DoNotIndex{\cs_new_nopar:Nn}
+% \DoNotIndex{\cs_set:Npn,\cs_set_eq:NN,\dim_new:N,\dim_set:Nn,\dim_set_eq:NN}
+% \DoNotIndex{\dim_sub:Nn,\documentclass}
+% \DoNotIndex{\else:,\end,\endinput,\evensidemargin}
+% \DoNotIndex{\exp_args:Nc,\ExplSyntaxOff,\ExplSyntaxOn}
+% \DoNotIndex{\fi,\fi:,\fontsize,\frame,\FromAddressLeftMargin}
+% \DoNotIndex{\FromAddressTopMargin}
+% \DoNotIndex{\GenericError,\group_begin:,\group_end:}
+% \DoNotIndex{\headheight,\headsep,\hook_gput_code:nnn}
+% \DoNotIndex{\if@atdocument,\if@filesw,\if@twocolumn}
+% \DoNotIndex{\if_cs_exist:N,\if_int_compare:w,\if_meaning:w}
+% \DoNotIndex{\IfBooleanTF,\IfFormatAtLeastTF,\IfValueTF,\ignorespaces}
+% \DoNotIndex{\int_incr:N,\int_new:N,\int_set:Nn,\int_set_eq:NN}
+% \DoNotIndex{\int_step_inline:nnn}
+% \DoNotIndex{\iow_char:N,\iow_now:Nn,\iow_now:Nx}
+% \DoNotIndex{\l_tmpa_tl,\lineskip,\LoadLetterOptions}
+% \DoNotIndex{\msg_error:nnn,\msg_fatal:nnn,\msg_new:nnn,\msg_warning:nnnn}
+% \DoNotIndex{\newcommand,\NewExpandableDocumentCommand}
+% \DoNotIndex{\oddsidemargin,\onecolumn,\opening}
+% \DoNotIndex{\pagestyle,\paperheight,\paperwidth,\par,\parbox}
+% \DoNotIndex{\prop_new:c,\prop_new:N,\prg_new_conditional:Nnn}
+% \DoNotIndex{\prg_return_false:,\prg_return_true:}
+% \DoNotIndex{\prop_get:cnNTF,\prop_get:NnNTF,\prop_new:N}
+% \DoNotIndex{\prop_set_from_keyval:cn,\prop_set_from_keyval:Nn}
+% \DoNotIndex{\providecommand}
+% \DoNotIndex{\raggedright,\relax,\selectfont,\setkomavar,\setlength}
+% \DoNotIndex{\skip_horizontal:N,\skip_vertical:N,\str_new:N,\str_set:Nn}
+% \DoNotIndex{\textheight,\textwidth,\token_to_str:N,\topmargin}
+% \DoNotIndex{\use:e,\use:n,\usepackage}
+%
+% \section{Installation}
+%
+% It is recommended to use the package installer of the \TeX{}
+% distribution. If you don't use a \TeX{} distribution with package installer,
+% that provides \file{makelabels.lco}, please see the advanced installation
+% information in the
+% \href{https://github.com/komascript/makelabels/blob/main/README.md}%
+% {\file{README.md}}.
+%
+% \section{Basic Usage}
+%
+% First of all please note, that \file{makelabels.lco} needs \LaTeX{} from
+% version 2020/10/01. It is recommended to use at least \LaTeX{} 2021/06/01,
+% because this is the \LaTeX{} version used for development of
+% \file{makelabels.lco}. Also \KOMAScript{} version 3.34 or newer is
+% recommended. If you would use an older \KOMAScript{} version you would do
+% this on your own risk. Please do not expect any support in this
+% case.
+%
+% To use the \file{makelabels.lco} you have to use either \KOMAScript{}
+% letter class \file{scrlttr2} or \file{scrletter} or the \KOMAScript{}
+% letter package \file{scrletter}. After loading the class resp. package you
+% have to load \file{makelabels.lco} using:
+% \begin{verbatim}
+% \LoadLetterOption{makelabels}
+% \end{verbatim}
+% in your document preamble. Note: This LCO cannot be loaded after
+% |\begin{document}|.
+%
+% Loading the LCO file already activates generation of label information
+% inside the \file{aux}-file of your document. Nothing else.
+%
+% \DescribeMacro\makelabels
+% To activate the label generation you have to add
+% \begin{verbatim}
+% \makelabels
+% \end{verbatim}
+% to your document preamble after loading \file{makelabels.lco} (see
+% above). Now at the end of the document, after printing all letters
+% \file{makelabels} generates one or more additional sheets with address
+% labels. The default label sheet is of type Avery~5162. This is a label sheet
+% with seven rows and two columns of labels. It is compatible with several
+% other Avery label types.
+%
+% \DescribeMacro\selectlabeltype
+% If you need more than one label per letter or another label type you can use:
+% \begin{syntax}
+% \cs{selectlabeltype}\oarg{integer}\marg{string}
+% \end{syntax}
+% This selects \meta{integer} labels of type \meta{string} for each following
+% letter (inclusive the current letter, if used between |\begin{letter}| and
+% |\end{letter}|. See \autoref{tab:labeltypes} for the allowed \meta{string}
+% arguments and the corresponding label types.
+%
+% \begin{table}
+% \begin{minipage}{\linewidth}
+% \centering
+% \begin{tabular}{llr}
+% \toprule
+% \textbf{\meta{string}} & \multicolumn2l{\textbf{Specification}} \\
+% & Measure & {Value} \\
+% \midrule
+% \texttt{avery\_5162}\footnote{\url{https://www.avery.com/products/labels/5162}}
+% & sheet height & 11\,in\\
+% & sheet width & 8.5\,in\\
+% & sheet top margin & 0.845\,in\\
+% & sheet bottom margin & 0.845\,in\\
+% & sheet left margin & 0.167\,in\\
+% & sheet right margin & 0.167\,in\\
+% & label height & 1.330\,in\\
+% & label width & 4\,in\\
+% & horizontal distance & 0.166\,in\\
+% & vertical distance & 0\,pt\\
+% & label left margin & 5\,pt\\
+% & label right margin & 5\,pt\\
+% & label top margin & 0\,pt\\
+% & label bottom margin & 0\,pt\\
+% & rows & 7\hphantom{\,pt}\\
+% & columns & 2\hphantom{\,pt}\\
+% \bottomrule
+% \end{tabular}
+% \caption{Known Label Types}
+% \label{tab:labeltypes}
+% \end{minipage}
+% \end{table}
+%
+% \section{Advanced Usage}
+%
+% \DescribeMacro\makelabels_add_label_type:nn
+% Advanced users can add their own label sheet definitions. But currently
+% there is only an \file{expl3} interface for this. If you do not know
+% \file{expl3}, please stop reading. There is no support for this feature,
+% currently.
+% \begin{syntax}
+% \cs{makelabels_add_label_type:nn} \meta{string}
+% \{
+% sheet height = \meta{dim_1},
+% sheet width = \meta{dim_2},
+% sheet top margin = \meta{dim_3},
+% sheet bottom margin = \meta{dim_4},
+% sheet left margin = \meta{dim_5},
+% sheet right margin = \meta{dim_6},
+% vertical distance = \meta{dim_7},
+% horizontal distance = \meta{dim_8},
+% label height = \meta{dim_9},
+% label width = \meta{dim_{10}},
+% label top margin = \meta{dim_{11}},
+% label bottom margin = \meta{dim_{12}},
+% rows = \meta{int_{1}},
+% columns = \meta{int_{2}}
+% \}
+% \end{syntax}
+% Currently all \meta{dim_x}, which are not specified, will be 0\,pt and all
+% \meta{int_x}, which are not specified, will be 1.
+%
+% The names of the properties should be self-explaining. If not, don't use it!
+%
+% Note: You can participate in the development of \file{makelabels.lco} by
+% posting and explaining your own label specifications.
+%
+% \section{Simple Example}
+% \label{sec:simpleexample}
+%
+% A very simple example for using \file{makelabels.lco} would be:
+% \iffalse^^A meta-comment
+%<*exmpl&simple>
+% \fi
+% \begin{macrocode}
+\documentclass[paper=letter]{scrletter}
+\LoadLetterOptions{UScommercial9,makelabels}
+\usepackage[english]{babel}
+\usepackage{blindtext}
+\setkomavar{fromname}{John Doe}
+\setkomavar{fromaddress}{1 Lambda Street\\Anyplace, NY 12345}
+\makelabels
+\begin{document}
+\begin{letter}{Jane Doe\\2 Alpha Street\\Otherplace, NY 12346}
+\opening{Dear Jane,}
+\blindtext
+\closing{With love}
+\end{letter}
+\end{document}
+% \end{macrocode}
+% \iffalse^^A meta-comment
+%</exmpl&simple>
+% \fi
+% It would produce the two pages shown in \autoref{fig:example}.
+%
+% \begin{figure}
+% \centering
+% \begin{tabular}{|l|l|}
+% \hline
+% \includegraphics[page=1,width=.45\linewidth]{makelabels-example.pdf} &
+% \includegraphics[page=2,width=.45\linewidth]{makelabels-example.pdf} \\
+% \hline
+% \end{tabular}
+% \caption{The letter and the label sheet of the simple example of
+% \protect\autoref{sec:simpleexample}.}
+% \label{fig:example}
+% \end{figure}
+%
+% If you like, you could add an additional
+% \begin{verbatim}
+% \selectlabeltype[14]{avery_5162}
+% \end{verbatim}
+% after |\begin{document}|. In this case, you would get a whole sheet of 14
+% labels (7 rows by 2 columns).
+%
+% \section{Example using additional label packages}
+% \label{sec:envlabexample}
+% As already mentioned in the abstract you can use \file{makelabels.lco}
+% together with package \href{https://ctan.org/pkg/envlab}{\file{envlab}}. In
+% this case, it is important to load \file{makelabels.lco} before package
+% \file{envlab}:
+% \iffalse^^A meta-comment
+%<*exmpl&envlab>
+% \fi
+% \begin{macrocode}
+\documentclass[paper=letter]{scrletter}
+\LoadLetterOptions{UScommercial9,makelabels}
+\usepackage[english]{babel}
+\usepackage{blindtext}
+\setkomavar{fromname}{John Doe}
+\setkomavar{fromaddress}{1 Lambda Street\\Anyplace, NY 12345}
+
+\usepackage[centerenvelopes,businessenvelope]{envlab}
+\setlength{\FromAddressTopMargin}{0.25in}
+\setlength{\FromAddressLeftMargin}{0.25in}
+\makelabels
+
+\begin{document}
+
+\begin{letter}{Jane Doe\\2 Alpha Street\\Otherplace, NY 12346}
+\opening{Dear Jane,}
+\blindtext
+\closing{With love}
+\end{letter}
+\end{document}
+% \end{macrocode}
+% \iffalse^^A meta-comment
+%</exmpl&envlab>
+% \fi
+% It would produce the two pages shown in \autoref{fig:envlabexample}.
+%
+% \begin{figure}
+% \centering
+% \begin{tabular}{|l|l|}
+% \hline
+% \includegraphics[page=1,width=.45\linewidth]{makelabels-envlab-example.pdf} &
+% \includegraphics[page=2,width=.45\linewidth]{makelabels-envlab-example.pdf} \\
+% \hline
+% \end{tabular}
+% \caption{The letter and the envelope sheet of the \protect\file{envlab}
+% example of \protect\autoref{sec:envlabexample}.}
+% \label{fig:envlabexample}
+% \end{figure}
+%
+% Please note: package \file{envlab} redefines macro |\@toaddressfont|, which
+% is also an internal macro of \file{scrlttr2} or \file{scrletter}. The
+% \KOMAScript{} classes resp. the \KOMAScript{} package uses this to store the
+% font of the recipient's address. So loading \file{envlab} will change the
+% font of the recipient's address. To avoid this you could use additional
+% preamble code:
+% \begin{verbatim}
+% \makeatletter
+% \AtBeginDocument{%
+% \immediate\write\@auxout{%
+% \string\def\string\@toaddressfont{%
+% \expandafter\detokenize\expandafter{\@toaddressfont}}}%
+% \setkomafont{toaddress}{}% set the recepient's address font
+% }
+% \makeatother
+% \end{verbatim}
+% This delays the \file{envlab}'s redefinition of |\@toaddressfont| until the
+% \emph{labels} are generated.
+%
+% \StopEventually{\PrintChanges\PrintIndex}
+%
+% \section{Implementation}
+%
+% \begin{macrocode}
+%<*lco>
+%<@@=makelabels>
+% \end{macrocode}
+%
+% \subsection*{Load time actions}
+%
+% We need at least \LaTeX{} 2020/10/01.
+% \begin{macrocode}
+\newcommand*{\makelabels@fatal@format@error}{%
+ \GenericError{(makelabels)\@spaces\@spaces\@spaces\@spaces}%
+ {Fatal makelabels.lco error: LaTeX too old.}%
+ {See the makelabels.lco documentation for explanation.}%
+ {At least LaTeX 2020/10/01 is needed}%
+ \endinput
+}
+\@ifundefined{IfFormatAtLeastTF}{%
+ \makelabels@fatal@format@error
+}{%
+ \IfFormatAtLeastTF{2020/10/01}{}{\makelabels@fatal@format@error}%
+}
+% \end{macrocode}
+%
+% With this version of \LaTeX{}, we do not need to load \file{expl3}
+% explicitly but can just switch to the syntax.
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% This LCO file can be used in the document preamble only. If we are already
+% have begun the document, this would be fatal.
+% \begin{macrocode}
+\msg_new:nnn { makelabels } { onlypreamble }
+ { Sorry,~but~`makelabels.lco'~can~be~used~in~the~document~preamble~only. }
+\if@atdocument
+ \msg_fatal:nnn { makelabels } { onlypreamble }
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\makelabels_add_label_type:nn}
+% Labels have only a width and height. They are placed in a number of rows and
+% columns at a label sheet. The sheet has also a width and height. There is a
+% margin left of the first label, above the first label, right of the first
+% label and below the last label. And there may be a horizontal and a vertical
+% distance between the labels. See the definition of Avery 5162 labels for
+% all properties.
+%
+% Note: currently all properties have to be setup correctly.
+% \begin{macrocode}
+\cs_new_nopar:Nn \makelabels_add_label_type:nn
+ {
+ \prop_new:c { g_@@_label_type_#1_prop }
+ \prop_set_from_keyval:cn { g_@@_label_type_#1_prop } { #2 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% The first label type we define is \texttt{avery_5162}:
+% \begin{macrocode}
+\makelabels_add_label_type:nn { avery_5162 }
+ {
+ sheet height = 11 in,
+ sheet width = 8.5 in,
+ sheet top margin = 0.845 in,
+ sheet bottom margin = 0.845 in,
+ sheet left margin = 0.167 in,
+ sheet right margin = 0.167 in,
+ label height = 1.330 in,
+ label width = 4 in,
+ horizontal distance = 0.166 in,
+ vertical distance = 0 pt,
+ label left margin = 5 pt,
+ label right margin = 5 pt,
+ label top margin = 0 pt,
+ label bottom margin = 0 pt,
+ rows = 7,
+ columns = 2,
+ }
+% \end{macrocode}
+%
+% We also have to take care that at the end of each letter the label is written
+% to the \file{aux}-file.
+% \begin{function}[EXP]{\@@_Ifkomavarempty}
+% To be able to write to the \file{aux}-file, we need an expandable verion
+% of \KOMAScript's \cs{Ifkomavarempty}. To make simple wrapping possible, we
+% define it as an internal document command.
+% \begin{macrocode}
+\NewExpandableDocumentCommand \@@_Ifkomavarempty { s m m m }
+ {
+ \IfBooleanTF { #1 }
+ {
+ \exp_args:Nc \@@_if_empty_var_or_name:NTF{scr@#2@name}{#3}{#4}
+ }
+ {
+ \exp_args:Nc \@@_if_empty_var_or_name:NTF{scr@#2@var}{#3}{#4}
+ }
+ }
+% \end{macrocode}
+% \end{function}
+% \begin{function}[pTF]{\@@_if_empty_var_or_name:N}
+% This is the real internal command. Now, the first argument is not the
+% variable any longer, but the macro storing the variable or name.
+% \begin{macrocode}
+\prg_new_conditional:Nnn \@@_if_empty_var_or_name:N { p, T, F, TF }
+ {
+ \if_cs_exist:N #1
+ \if_meaning:w #1 \c_empty_tl
+ \prg_return_true: \else: \prg_return_false: \fi:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+% \end{macrocode}
+% \end{function}
+%
+% \begin{function}[EXP]{\@@_usekomavar}
+% To be able to write to the \file{aux}-file, we need an expandable version
+% of \KOMAScript's \cs{usekomavar}. To make simple wrapping possible, we
+% define it as an internal document command.
+% \begin{macrocode}
+\NewExpandableDocumentCommand \@@_usekomavar { s o m }
+ {
+ \IfValueTF{#2}{#2}{\use:e}{\cs:w scr@#3@\IfBooleanTF{#1}{name}{var}\cs_end:}
+ }
+% \end{macrocode}
+% \end{function}
+%
+% Now, after defining new, expandable versions of most of the usually needed
+% not expandable \KOMAScript{} user command, we can write to the
+% \file{aux}-file at the end of every letter. Note, we have to write
+% immediately (using \cs[no-index]{iow_now:Nx}), to use the current definition
+% of the commands redefined in the local group.
+% \begin{macrocode}
+\AtEndLetter
+ {
+ \if@filesw
+ \group_begin:
+ \cs_set:Npn \Ifkomavarempty { \@@_Ifkomavarempty }
+ \cs_set:Npn \usekomavar { \@@_usekomavar }
+ \iow_now:Nx \@mainaux
+ {
+ \token_to_str:N \@mlabel
+ \iow_char:N \{ \usekomavar{backaddress} \iow_char:N \}
+ \iow_char:N \{ \usekomavar{toname} \iow_char:N \\ \iow_char:N \\
+ \usekomavar{toaddress} \iow_char:N \}
+ }
+ \group_end:
+ \fi
+ }
+% \end{macrocode}
+%
+% \subsection*{The preamble commands}
+%
+% \begin{macro}{\makelabels}
+% Preamble only command to activate the label generation via the
+% \file{aux}-file.
+% \begin{macrocode}
+\cs_new:Npn \makelabels
+ {
+ \hook_gput_code:nnn { begindocument } { makelabels.lco }
+ {
+ \cs_set_eq:NN \@startlabels \startlabels
+ \cs_set_eq:NN \@mlabel \mlabel
+ \cs_set_eq:NN \@mlabeltype \mlabeltype
+ \if@filesw
+ \iow_now:Nn \@mainaux { \@startlabels }%
+ \fi
+ }
+ \hook_gput_code:nnn { enddocument / afterlastpage } { makelabels.lco }
+ {
+ \if@filesw
+ \iow_now:Nn \@mainaux { \clearpage } %
+ \fi
+ }
+ }
+\@onlypreamble \makelabels
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\selectlabeltype}
+% Used in the document preamble or inside the document to select another label
+% type.
+% \begin{macrocode}
+\newcommand*{\selectlabeltype}[2][1]{
+ \cs_if_exist:cTF { g_@@_label_type_#2_prop }
+ {
+ \if@filesw
+ \iow_now:Nn \@mainaux
+ {
+ \@mlabeltype { #1 } { #2 }
+ }
+ \fi
+ }
+ {
+ \msg_error:nnn { makelabels } { unkown label type } { #1 }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection*{The \file{aux}-file commands}
+%
+% \begin{macro}{\@startlabels}
+% \begin{macro}{\@mlabel}
+% \begin{macro}{\@mlabeltype}
+% All these are dummies until \cs{makelabels} has been used.
+% \begin{macrocode}
+\hook_gput_code:nnn { begindocument } { makelabels.lco }
+ {
+ \if@filesw
+ \iow_now:Nn \@mainaux { \providecommand* { \@startlabels } { } }
+ \iow_now:Nn \@mainaux { \providecommand* { \@mlabel }[2] { } }
+ \iow_now:Nn \@mainaux { \providecommand* { \@mlabeltype } [ 2 ] { } }
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\mlabeltype}
+% Select generating \#1 labels of type \#2.
+% \begin{macrocode}
+\int_new:N \g_@@_label_repeat_int
+\int_set_eq:NN \g_@@_label_repeat_int \c_one_int
+\str_new:N \g_@@_label_type_str
+\str_set:Nn \g_@@_label_type_str { avery_5162 }
+\cs_new:Npn \mlabeltype #1#2
+ {
+ \int_set:Nn \g_@@_label_repeat_int { #1 }
+ \str_set:Nn \g_@@_label_type_str { #2 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\startlabels}
+% Start a new label page. We have to setup several page layout parameter
+% depending on the current label type \cs{g_@@_label_type_str}.
+% \begin{macrocode}
+\cs_new:Npn \startlabels
+ {
+ \clearpage
+ \if@twocolumn \onecolumn \fi
+ \pagestyle{empty}
+ \cs_set_eq:NN \@texttop \relax
+ \dim_set_eq:NN \headheight \c_zero_dim
+ \dim_set_eq:NN \headsep \c_zero_dim
+ \dim_set_eq:NN \lineskip \c_zero_dim
+ \@@_prop_get_dim:nN { sheet height } \paperheight
+ \@@_prop_get_dim:nN { sheet top margin } \topmargin
+ \dim_sub:Nn \topmargin { 1in }
+ \@@_prop_get_dim:nN { sheet width } \paperwidth
+ \@@_prop_get_dim:nN { sheet left margin } \oddsidemargin
+ \dim_sub:Nn \oddsidemargin { 1in }
+ \dim_set_eq:NN \evensidemargin \oddsidemargin
+ \@@_prop_get_int:nN { rows } \g_@@_rows_int
+ \@@_prop_get_int:nN { columns } \g_@@_columns_int
+ \@@_prop_get_dim:nN { label height } \g_@@_label_height_dim
+ \@@_prop_get_dim:nN { label width } \g_@@_label_width_dim
+ \@@_prop_get_dim:nN { vertical distance } \g_@@_vertical_skip_dim
+ \@@_prop_get_dim:nN { horizontal distance } \columnsep
+ \dim_set:Nn \textheight
+ {
+ ( \g_@@_label_height_dim + \g_@@_vertical_skip_dim ) * \g_@@_rows_int
+ - \g_@@_vertical_skip_dim
+ }
+ \dim_set:Nn \textwidth
+ {
+ ( \g_@@_label_width_dim + \columnsep ) * \g_@@_columns_int
+ - \columnsep
+ }
+ \@@_prop_get_dim:nN { label top margin } \g_@@_label_top_margin_dim
+ \@@_prop_get_dim:nN { label bottom margin } \g_@@_label_bottom_margin_dim
+ \@@_prop_get_dim:nN { label left margin } \g_@@_label_left_margin_dim
+ \@@_prop_get_dim:nN { label right margin } \g_@@_label_right_margin_dim
+ \activateareas
+ \fontsize{10pt}{12pt}\selectfont
+ \dim_set_eq:NN \boxmaxdepth \c_max_dim
+ \int_set_eq:NN \g_@@_row_int \c_one_int
+ \int_set_eq:NN \g_@@_column_int \c_one_int
+ \dim_set:Nn \g_@@_label_height_effective_dim
+ {
+ \g_@@_label_height_dim
+ - \g_@@_label_top_margin_dim
+ - \g_@@_label_bottom_margin_dim
+ }
+ \dim_set:Nn \g_@@_label_width_effective_dim
+ {
+ \g_@@_label_width_dim
+ - \g_@@_label_left_margin_dim
+ - \g_@@_label_right_margin_dim
+ }
+ \raggedright
+ }
+
+\int_new:N \g_@@_rows_int
+\int_new:N \g_@@_columns_int
+\int_new:N \g_@@_row_int
+\int_new:N \g_@@_column_int
+\dim_new:N \g_@@_label_height_dim
+\dim_new:N \g_@@_label_width_dim
+\dim_new:N \g_@@_label_top_margin_dim
+\dim_new:N \g_@@_label_bottom_margin_dim
+\dim_new:N \g_@@_label_left_margin_dim
+\dim_new:N \g_@@_label_right_margin_dim
+\dim_new:N \g_@@_label_height_effective_dim
+\dim_new:N \g_@@_label_width_effective_dim
+\dim_new:N \g_@@_vertical_skip_dim
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{function}{\@@_prop_get_dim:nN,\@@_prop_get_int:nN}
+% \begin{syntax}
+% \cs{@@_prop_get_dim:nN} \Arg{property string} \Arg{dimension variable}
+% \cs{@@_prop_get_int:nN} \Arg{property string} \Arg{integer variable}
+% \end{syntax}
+% Get a property from the property list of the current label type
+% \cs{g_@@_label_type_str} and store it as a dimension resp. integer. Unkown
+% properties result in a warning message. Unkown dimenionss are assumed to be
+% zero, unkown integers are assumed to be one.
+% \begin{macrocode}
+\msg_new:nnn { makelabels } { undefined property }
+ { Property~`#1'~undefined~for~label~type~`\g_@@_label_type_str'.~
+ Value~#2~assumed. }
+
+\cs_new:Nn \@@_prop_get_dim:nN
+ {
+ \prop_get:cnNTF { g_@@_label_type_ \g_@@_label_type_str _prop } { #1 } \l_tmpa_tl
+ { \dim_set:Nn #2 \l_tmpa_tl }
+ {
+ \msg_warning:nnnn { makelabels } { undefined property } { #1 } { zero }
+ \dim_set_eq:NN #2 \c_zero_dim
+ }
+ }
+
+\cs_new:Nn \@@_prop_get_int:nN
+ {
+ \prop_get:cnNTF { g_@@_label_type_ \g_@@_label_type_str _prop } { #1 } \l_tmpa_tl
+ { \int_set:Nn #2 \l_tmpa_tl }
+ {
+ \msg_warning:nnnn { makelabels } { undefined property } { #1 } { one }
+ \int_set_eq:NN #2 \c_one_int
+ }
+ }
+% \end{macrocode}
+% \end{function}
+%
+% \begin{macro}{\@@_print_one_label:}
+% Currently we do not support different output routines for different label
+% types. So this command is always the same.
+% \begin{macrocode}
+\cs_new:Nn \@@_print_one_label:nn
+ {
+% \frame{
+ \parbox[b][\g_@@_label_height_dim]{\g_@@_label_width_dim}{
+ \skip_vertical:N \g_@@_label_top_margin_dim
+ \skip_horizontal:N \g_@@_label_left_margin_dim
+ \parbox[c][\g_@@_label_height_effective_dim]{\g_@@_label_width_effective_dim}{
+ \ignorespaces #2
+ }
+ \skip_vertical:N \g_@@_label_bottom_margin_dim
+ }
+% }
+ \int_incr:N \g_@@_column_int
+ \if_int_compare:w \g_@@_column_int > \g_@@_columns_int
+ \par
+ \skip_vertical:N \g_@@_vertical_skip_dim
+ \int_set_eq:NN \g_@@_column_int \c_one_int
+ \int_incr:N \g_@@_row_int
+ \if_int_compare:w \g_@@_row_int > \g_@@_rows_int
+ \clearpage
+ \int_set_eq:NN \g_@@_row_int \c_one_int
+ \fi:
+ \else:
+ \skip_horizontal:N \columnsep
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mlabel}
+% Output the configurated number of labels.
+% \begin{macrocode}
+\cs_new:Npn \mlabel #1#2
+ {
+ \int_step_inline:nnn { 1 } { \g_@@_label_repeat_int }
+ {
+ \@@_print_one_label:nn { #1 } { #2 }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% We need to not forget to switch of \file{expl3} syntax, because this is not
+% a package but a LCO.
+% \begin{macrocode}
+\ExplSyntaxOff
+%</lco>
+% \end{macrocode}
+% \Finale
+%
+\endinput
+%
+% Local Variables:
+% mode: doctex
+% TeX-master: t
+% End:
diff --git a/macros/latex/contrib/makelabels/makelabels.pdf b/macros/latex/contrib/makelabels/makelabels.pdf
new file mode 100644
index 0000000000..1c5f282bf0
--- /dev/null
+++ b/macros/latex/contrib/makelabels/makelabels.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md
index 87f73526de..d02f959416 100644
--- a/macros/latex/contrib/siunitx/CHANGELOG.md
+++ b/macros/latex/contrib/siunitx/CHANGELOG.md
@@ -7,6 +7,24 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v3.0.25]
+
+### Changed
+- Default to sanserif units if `\familydefault` is `\sfdefault`
+ (issue [#516](https://github.com/josephwright/siunitx/issues/516))
+
+### Fixed
+- Rounding to an uncertainty of the same magnitude as the
+ value (issue
+ [#524](https://github.com/josephwright/siunitx/issues/524))
+- Extend `propogate-math-font` to cover `\mathbf` and `\mathit`
+ (issue [#525](https://github.com/josephwright/siunitx/issues/525))
+- Position of non-aligned non-numeric material in table cells when
+ centering decimal marker (issue
+ [#526](https://github.com/josephwright/siunitx/issues/526))
+- Treatment of multiple tokens for `input-ignore` (issue
+ [#531](https://github.com/josephwright/siunitx/issues/531))
+
## [v3.0.24]
### Fixed
@@ -1521,7 +1539,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Added
- First public testing release (as `si`)
-[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.24...HEAD
+[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.25...HEAD
+[v3.0.25]: https://github.com/josephwright/siunitx/compare/v3.0.24...v3.0.25
[v3.0.24]: https://github.com/josephwright/siunitx/compare/v3.0.23...v3.0.24
[v3.0.23]: https://github.com/josephwright/siunitx/compare/v3.0.22...v3.0.23
[v3.0.22]: https://github.com/josephwright/siunitx/compare/v3.0.21...v3.0.22
diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf
index c0a7e9b1fe..6e575cff02 100644
--- a/macros/latex/contrib/siunitx/siunitx-code.pdf
+++ b/macros/latex/contrib/siunitx/siunitx-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx-number.dtx b/macros/latex/contrib/siunitx/siunitx-number.dtx
index 38db10d71b..924aaa3b0f 100644
--- a/macros/latex/contrib/siunitx/siunitx-number.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-number.dtx
@@ -807,6 +807,11 @@
{
\group_begin:
\tl_clear:N \l_@@_parsed_tl
+ \tl_map_inline:Nn \l_@@_input_ignore_tl
+ {
+ \token_if_macro:NT ##1
+ { \cs_set_eq:NN ##1 \scan_stop: }
+ }
\protected@edef \l_@@_arg_tl
{
\bool_if:NTF \l_@@_expression_bool
@@ -815,9 +820,8 @@
}
\tl_set_eq:NN \l_@@_input_tl \l_@@_arg_tl
\siunitx_number_normalize_symbols:N \l_@@_arg_tl
- \protected@edef \l_@@_input_ignore_tl { \l_@@_input_ignore_tl }
- \tl_if_empty:NF \l_@@_input_ignore_tl
- { \tl_remove_all:NV \l_@@_arg_tl \l_@@_input_ignore_tl }
+ \tl_map_inline:Nn \l_@@_input_ignore_tl
+ { \tl_remove_all:Nn \l_@@_arg_tl {##1} }
\tl_if_empty:NF \l_@@_arg_tl
{ \@@_parse_comparator: }
\@@_parse_check:
@@ -2201,6 +2205,9 @@
% \begin{macro}[EXP]{\@@_round_auxvi:nN}
% \begin{macro}[EXP]{\@@_round_auxvii:nnN, \@@_round_auxviii:nnN}
% \begin{macro}[EXP]{\@@_round_final_integer:nnw, \@@_round_final_decimal:nnw}
+% \begin{macro}[EXP]{\@@_round_final_signicant:n}
+% \begin{macro}[EXP]{\@@_round_final_signicant:N}
+% \begin{macro}[EXP]{\@@_round_final_signicant:w}
% \begin{macro}[EXP]{\@@_round_final_output:nn, \@@_round_final_output:ff}
% \begin{macro}[EXP]{\@@_round_final:nn, \@@_round_final:fn}
% \begin{macro}[EXP]{\@@_round_final_shift:nn, \@@_round_final_shift:ff}
@@ -2259,7 +2266,10 @@
% one of which deals with the integer. In the latter, we should never hit
% the end before we've dropped all the digits: the fixed-zero is a
% fall-back in case something weird happens. For the integer case, we need
-% to collect up zeros to pad the length back out correctly later.
+% to collect up zeros to pad the length back out correctly later. We also
+% have to cover the case where we round to exactly place above the length
+% of the integer: that may product a value of $1\dots$: we tidy up the
+% case where it comes out as $0$ later.
% \begin{macrocode}
\cs_new:Npn \@@_round_auxiii:nnnN #1#2#3#4
{
@@ -2278,13 +2288,20 @@
\cs_new:Npn \@@_round_auxiv:nnnN #1#2#3#4
{
\quark_if_recursion_tail_stop_do:Nn #4
- { { 0 } { } }
+ {
+ \int_compare:nNnTF {#1} = 0
+ {
+ \@@_round_auxvi:nnN {#3} {#2}
+ 0 \q_recursion_tail \q_recursion_stop
+ }
+ { { 0 } { } }
+ }
\int_compare:nNnTF {#1} > 0
{
\exp_args:Nf \@@_round_auxiv:nnnN
{ \int_eval:n { #1 - 1 } } { #2 0 } { #4#3 }
}
- { \@@_round_auxvi:nnnN {#3} {#2} #4 }
+ { \@@_round_auxvi:nnN {#3} {#2} #4 }
}
% \end{macrocode}
% The lead off to rounding proper needs to deal with the half-even rule:
@@ -2312,7 +2329,7 @@
{ \@@_round_auxvii:nnN }
{#2} { } #3
}
-\cs_new:Npn \@@_round_auxvi:nnnN #1#2#3
+\cs_new:Npn \@@_round_auxvi:nnN #1#2#3
{
\quark_if_recursion_tail_stop_do:Nn #3
{ { 0 } { } }
@@ -2409,9 +2426,27 @@
#1#2#3 \q_recursion_tail \q_recursion_stop
{
\@@_round_final_output:ff
- { \tl_reverse:n {#3} #2 }
+ { \exp_args:Ne \@@_round_final_significant:n { \tl_reverse:n {#3} #2 } }
{#1}
}
+\cs_new:Npn \@@_round_final_significant:n #1
+ {
+ \@@_round_final_significant:N #1
+ \q_recursion_tail \q_recursion_stop
+ }
+\cs_new:Npn \@@_round_final_significant:N #1
+ {
+ \quark_if_recursion_tail_stop_do:Nn #1 { 0 }
+ \int_compare:nNnTF {#1} = 0
+ { \@@_round_final_significant:N }
+ {
+ #1
+ \@@_round_final_significant:w
+ }
+ }
+\cs_new:Npn \@@_round_final_significant:w
+ #1 \q_recursion_tail \q_recursion_stop
+ {#1}
\cs_new:Npn \@@_round_final_output:nn #1#2 { {#1} {#2} }
\cs_generate_variant:Nn \@@_round_final_output:nn { ff }
\cs_new:Npn \@@_round_final:nn #1#2
@@ -2442,7 +2477,6 @@
\int_compare:nNnTF { \tl_count:n {#1} } = 4
{
\@@_round_engineering:NNNNn #1 {#2}
- { }
\@@_round_final_shift:Nw 3
}
{ {#1} {#2} }
@@ -2467,11 +2501,13 @@
{
\@@_exponent_shift:nnf
{ 1 } {#1} { \@@_round_truncate_direct:n {#2} }
- { }
\@@_round_final_shift:Nw 1
}
-\cs_new:Npn \@@_round_final_shift:Nw #1#2 \@@_round_places_end:nn #3#4
- { \@@_exponent_finalise:n { #3#4 + #1 } }
+\cs_new:Npn \@@_round_final_shift:Nw #1#2 \@@_round_places_end:nnn #3#4#5
+ {
+ \exp_not:n { {#3} }
+ \@@_exponent_finalise:n { #4#5 + #1 }
+ }
% \end{macrocode}
% When we have rounded up to the next power of ten, we need to go back and
% remove one more digit. That only happens when rounding to a number of
@@ -2509,6 +2545,9 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}[EXP]{\@@_round_if_half_p:n}
% \begin{macro}[EXP]{\@@_round_if_half:N}
@@ -2622,7 +2661,7 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_round_places:nnnnnnn}
-% \begin{macro}[EXP]{\@@_round_places_end:nn}
+% \begin{macro}[EXP]{\@@_round_places_end:nnn}
% \begin{macro}[EXP]{\@@_round_places_decimal:nn, \@@_round_places_integer:nn}
% \begin{macro}[EXP]{\@@_round_places_finalise:n}
% \begin{macro}[EXP]{\@@_round_places_finalise:nnnnnnn}
@@ -2644,12 +2683,12 @@
{ \@@_round_places_decimal:nn }
{ \@@_round_places_integer:nn }
{#3} {#4}
- \@@_round_places_end:nn {#6} {#7}
+ \@@_round_places_end:nnn { } {#6} {#7}
}
}
{ \exp_not:n { {#1} {#2} {#3} {#4} {#5} {#6} {#7} } }
}
-\cs_new:Npn \@@_round_places_end:nn #1#2 { { } \exp_not:n { {#1} {#2} } }
+\cs_new:Npn \@@_round_places_end:nnn #1#2#3 { \exp_not:n { {#1} {#2} {#3} } }
\cs_new:Npn \@@_round_places_decimal:nn #1#2
{
\int_compare:nNnTF
@@ -2724,9 +2763,26 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_round_uncertainty:nnnnnnn}
+% \begin{macro}[EXP]{\@@_round_uncertainty_end:nn}
% \begin{macro}[EXP]{\@@_round_uncertainty:nnn}
% \begin{macro}[EXP]{\@@_round_uncertainty:nnnnn, \@@_round_uncertainty_aux:nnnnn}
% \begin{macro}[EXP]{\@@_round_uncertainty_aux:nnnnnn}
+% \begin{macro}[EXP]{\@@_round_uncertainty_shift:nn}
+% \begin{macro}[EXP]{\@@_round_uncertainty_shift:nnnw}
+% \begin{macro}[EXP]{\@@_round_uncertainty_shift:nnnn}
+% \begin{macro}[EXP]
+% {
+% \@@_round_uncertainty_engineering:nnn ,
+% \@@_round_uncertainty_fixed:nnn ,
+% \@@_round_uncertainty_input:nnn ,
+% \@@_round_uncertainty_scientific:nnn
+% }
+% \begin{macro}[EXP]
+% {
+% \@@_round_uncertainty_engineering_2:n ,
+% \@@_round_uncertainty_engineering_3:n ,
+% \@@_round_uncertainty_engineering_4:n
+% }
% Rounding to an uncertainty can only happen where the result will have some
% uncertainty left: otherwise we simply drop the uncertainty entirely. Only
% |S|-type uncertainties can be used for rounding.
@@ -2736,18 +2792,20 @@
\bool_lazy_or:nnTF
{ \tl_if_blank_p:n {#5} }
{ ! \int_compare_p:nNn \l_@@_round_precision_int > 0 }
- { \exp_not:n { {#1} #2 {#3} {#4} { } #6 {#7} } }
+ { \exp_not:n { {#1} {#2} {#3} {#4} { } {#6} {#7} } }
{
\str_if_eq:eeTF { \tl_head:n {#5} } { S }
{
\exp_not:n { {#1} {#2} }
\exp_args:Nnno \@@_round_uncertainty:nnn
{#3} {#4} { \use_ii:nn #5 }
- \exp_not:n { {#6} {#7} }
+ \@@_round_uncertainty_end:nn {#6} {#7}
}
{ \exp_not:n { {#1} {#2} {#3} {#4} {#5} {#6} {#7} } }
}
}
+\cs_new:Npn \@@_round_uncertainty_end:nn #1#2
+ { \exp_not:n { {#1} {#2} } }
% \end{macrocode}
% Round the uncertainty first: this is needed to get the number of places
% correct (for the case where the uncertainty rounds up to |1...|). Once that
@@ -2796,13 +2854,97 @@
{ { S } { #4 #1 } }
}
{
- \@@_round:fnn
- { \int_eval:n { #2 + 1 } }
- {#5} {#6}
- { { S } { #3 \@@_round_truncate_direct:n {#4} #1 } }
+ \exp_args:Ne \@@_round_uncertainty_shift:nn
+ {
+ \@@_round:fnn
+ { \int_eval:n { #2 + 1 } }
+ {#5} {#6}
+ }
+ { { S } { #3 #1 } }
}
}
% \end{macrocode}
+% We now have to clear up the exponent, plus deal with the case where
+% rounding has resulted in the entire value being uncertain (|1(1)| with
+% some exponent). The latter shows up if the uncertainty is too long or if
+% we match a specific pattern.
+% \begin{macrocode}
+\cs_new:Npn \@@_round_uncertainty_shift:nn #1#2
+ { \@@_round_uncertainty_shift:nnnw #1 {#2} }
+\cs_new:Npn \@@_round_uncertainty_shift:nnnw
+ #1#2#3 #4 \@@_round_uncertainty_end:nn #5#6
+ {
+ #4
+ \bool_lazy_and:nnTF
+ {
+ \int_compare_p:nNn
+ { \tl_count:o { \use_ii:nn #3 } } = \l_@@_round_precision_int
+ }
+ {
+ ! \str_if_eq_p:nn { {#1} {#2} {#3} } { { 10 } { } { { S } { 1 } } }
+ }
+ {
+ \use:c
+ { @@_round_ \l_@@_exponent_mode_tl :nn }
+ {#1} {#2}
+ \@@_round_places_end:nnn {#3} {#5} {#6}
+ }
+ {
+ \use:c
+ { @@_round_uncertainty_ \l_@@_exponent_mode_tl :nnn }
+ {#1} {#5} {#6}
+ }
+ }
+% \end{macrocode}
+% With the data available, adjust the output such that the uncertainty
+% is of the right length.
+% \begin{macrocode}
+\cs_new:Npn \@@_round_uncertainty_engineering:nnn #1#2#3
+ {
+ \use:c
+ {
+ @@_round_uncertainty_
+ \l_@@_exponent_mode_tl _
+ \tl_count:n {#1}
+ :n
+ }
+ {#2#3}
+ }
+\cs_new:cpn { @@_round_uncertainty_engineering_2:n } #1
+ {
+ { 10 } { } { { S } { 10 } }
+ \@@_exponent_finalise:n {#1}
+ }
+\cs_new:cpn { @@_round_uncertainty_engineering_3:n } #1
+ {
+ { 100 } { } { { S } { 100 } }
+ \@@_exponent_finalise:n {#1}
+ }
+\cs_new:cpn { @@_round_uncertainty_engineering_4:n } #1
+ {
+ { 1 } { } { { S } { 1 } }
+ \@@_exponent_finalise:n { #1 + 3 }
+ }
+\cs_new:Npn \@@_round_uncertainty_fixed:nnn #1#2#3
+ {
+ {#1} { }
+ { { S } { 1 \prg_replicate:nn { \tl_count:n {#1} - 1 } { 0 } } }
+ {#2} {#3}
+ }
+\cs_new_eq:NN \@@_round_uncertainty_input:nnn
+ \@@_round_uncertainty_fixed:nnn
+\cs_new:Npn \@@_round_uncertainty_scientific:nnn #1#2#3
+ {
+ { 1 } { } { { S } { 1 } }
+ \@@_exponent_finalise:n { #2#3 + \tl_count:n {#1} - 1 }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/siunitx/siunitx-print.dtx b/macros/latex/contrib/siunitx/siunitx-print.dtx
index 25acdd306b..a38edf5c55 100644
--- a/macros/latex/contrib/siunitx/siunitx-print.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-print.dtx
@@ -627,7 +627,11 @@
\cs_new_protected:Npn \@@_math_auxiv:n #1
{
\bool_if:NTF \l_@@_math_font_bool
- { \@@_math_aux:N \mathsf \mathtt \q_recursion_tail \q_recursion_stop }
+ {
+ \@@_math_aux:N
+ \mathbf \mathit \mathsf \mathtt
+ \q_recursion_tail \q_recursion_stop
+ }
{ \@@_math_auxv:n }
{#1}
}
diff --git a/macros/latex/contrib/siunitx/siunitx-print.pdf b/macros/latex/contrib/siunitx/siunitx-print.pdf
deleted file mode 100644
index e1a77edadf..0000000000
--- a/macros/latex/contrib/siunitx/siunitx-print.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx-table.dtx b/macros/latex/contrib/siunitx/siunitx-table.dtx
index 64ef013e17..75a5a7f011 100644
--- a/macros/latex/contrib/siunitx/siunitx-table.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-table.dtx
@@ -736,7 +736,8 @@
% When centering on the decimal marker, the easiest approach is to simply
% re-box the two parts. That is needed whether or not we are parsing numbers,
% so is best as a short auxiliary. Notice that we need to allow for the width
-% of the decimal marker itself.
+% of the decimal marker itself. When not aligning non-numerical material, we
+% put the extra space into the boxes around the number.
% \begin{macrocode}
\cs_new_protected:Npn \@@_center_marker:
{
@@ -750,26 +751,53 @@
- \box_wd:N \l_@@_tmp_box
}
{
- \hbox_set_to_wd:Nnn \l_@@_decimal_box
+ \bool_if:NTF \l_@@_align_after_bool
{
- \box_wd:N \l_@@_integer_box
- + \box_wd:N \l_@@_tmp_box
- }
- {
- \hbox_unpack:N \l_@@_decimal_box
- \@@_fil:
- }
+ \@@_center_marker_aux:Nnnn \l_@@_decimal_box
+ {
+ \box_wd:N \l_@@_integer_box
+ + \box_wd:N \l_@@_tmp_box
+ }
+ }
+ {
+ \@@_center_marker_aux:Nnnn \l_@@_after_box
+ {
+ \box_wd:N \l_@@_after_box
+ + \box_wd:N \l_@@_integer_box
+ - \box_wd:N \l_@@_decimal_box
+ + \box_wd:N \l_@@_tmp_box
+ }
+ }
+ { } { \@@_fil: }
}
{
- \hbox_set_to_wd:Nnn \l_@@_integer_box
+ \bool_if:NTF \l_@@_align_before_bool
{
- \box_wd:N \l_@@_decimal_box
- - \box_wd:N \l_@@_tmp_box
+ \@@_center_marker_aux:Nnnn \l_@@_integer_box
+ {
+ \box_wd:N \l_@@_decimal_box
+ - \box_wd:N \l_@@_tmp_box
+ }
}
{
- \@@_fil:
- \hbox_unpack:N \l_@@_integer_box
+ \@@_center_marker_aux:Nnnn \l_@@_before_box
+ {
+ \box_wd:N \l_@@_before_box
+ + \box_wd:N \l_@@_decimal_box
+ - \box_wd:N \l_@@_integer_box
+ - \box_wd:N \l_@@_tmp_box
+ }
}
+ { \@@_fil: } { }
+ }
+ }
+\cs_new_protected:Npn \@@_center_marker_aux:Nnnn #1#2#3#4
+ {
+ \hbox_set_to_wd:Nnn #1 {#2}
+ {
+ #3
+ \hbox_unpack:N #1
+ #4
}
}
% \end{macrocode}
@@ -967,10 +995,17 @@
\c_math_toggle_token
\l_siunitx_number_output_decimal_tl
}
+% \end{macrocode}
+% We set the two alignment booleans here so that a single auxiliary can
+% cover this case as well as the one for centering the marker when also
+% parsing.
+% \begin{macrocode}
\cs_new_protected:Npn \@@_direct_marker_end:
{
\c_math_toggle_token
\hbox_set_end:
+ \bool_set_true:N \l_@@_align_before_bool
+ \bool_set_true:N \l_@@_align_after_bool
\@@_center_marker:
\use:c { @@_align_ \l_@@_align_text_tl :n }
{
@@ -1159,7 +1194,6 @@
\@@_fil:
}
}
- \box_use_drop:N \l_@@_before_box
\siunitx_number_parse:nN {#2} \l_@@_tmp_tl
\siunitx_number_process:NN \l_@@_tmp_tl \l_@@_tmp_tl
\tl_set:Nx \l_@@_tmp_tl
@@ -1167,7 +1201,6 @@
\@@_color_check:N \l_@@_tmp_tl
\exp_after:wN \@@_print_marker:w
\l_@@_tmp_tl \q_stop
- \box_use_drop:N \l_@@_after_box
}
\cs_new_protected:Npn \@@_print_marker:w
#1 \q_nil #2 \q_nil #3 \q_nil #4 \q_stop
@@ -1182,8 +1215,10 @@
\@@_center_marker:
\use:c { @@_align_ \l_@@_align_text_tl :n }
{
+ \box_use_drop:N \l_@@_before_box
\box_use_drop:N \l_@@_integer_box
\box_use_drop:N \l_@@_decimal_box
+ \box_use_drop:N \l_@@_after_box
}
}
\cs_new:Npn \@@_print_marker_aux:w
diff --git a/macros/latex/contrib/siunitx/siunitx-unit.dtx b/macros/latex/contrib/siunitx/siunitx-unit.dtx
index be3e6eaf61..2c76156563 100644
--- a/macros/latex/contrib/siunitx/siunitx-unit.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-unit.dtx
@@ -2826,6 +2826,17 @@
}
% \end{macrocode}
%
+% Cover the case where the default font is sanserif.
+% \begin{macrocode}
+\AtBeginDocument
+ {
+ \str_if_eq:eeTF
+ { \exp_not:o { \familydefault } }
+ { \exp_not:n { \sfdefault } }
+ { \keys_set:nn { siunitx } { unit-font-command = \mathsf } }
+ }
+% \end{macrocode}
+%
% \begin{macrocode}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/siunitx/siunitx-unit.pdf b/macros/latex/contrib/siunitx/siunitx-unit.pdf
deleted file mode 100644
index 0050caf4e5..0000000000
--- a/macros/latex/contrib/siunitx/siunitx-unit.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx
index 275f824a35..d0d855e92a 100644
--- a/macros/latex/contrib/siunitx/siunitx.dtx
+++ b/macros/latex/contrib/siunitx/siunitx.dtx
@@ -121,7 +121,7 @@
%
% Identify the package and give the over all version information.
% \begin{macrocode}
-\ProvidesExplPackage {siunitx} {2021-08-04} {3.0.24}
+\ProvidesExplPackage {siunitx} {2021-08-16} {3.0.25}
{A comprehensive (SI) units package}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf
index 67b9a4fbee..5d7777db9c 100644
--- a/macros/latex/contrib/siunitx/siunitx.pdf
+++ b/macros/latex/contrib/siunitx/siunitx.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx.tex b/macros/latex/contrib/siunitx/siunitx.tex
index 136283140d..b83b72463d 100644
--- a/macros/latex/contrib/siunitx/siunitx.tex
+++ b/macros/latex/contrib/siunitx/siunitx.tex
@@ -3280,7 +3280,7 @@ which will then allow for the parenthesis. If a sign is applied to the number,
it may not be necessary to add a \enquote{digit} for the leading bracket. If
parsing is also required, this approach cannot be employed. Instead, the
parsing needs to be adjusted such that |(| and |)| are not treated as part of
-the number, and \opt{table-align-text-pre} is set to |false| such that these
+the number, and \opt{table-align-text-before} is set to |false| such that these
will be placed next to the numerical part. These methods are illustrated in
Table~\ref{tab:regression}.
@@ -3299,7 +3299,7 @@ Table~\ref{tab:regression}.
input-close-uncertainty = ,
minimum-decimal-digits = 3, % (
table-format = +1.3),
- table-align-text-pre = false
+ table-align-text-before = false
]
@{}
}
diff --git a/macros/latex/contrib/uni-titlepage/LICENSE.md b/macros/latex/contrib/uni-titlepage/LICENSE.md
new file mode 100644
index 0000000000..99a6973749
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/LICENSE.md
@@ -0,0 +1,19 @@
+----------------------------------------------------------------------------
+
+This work may be distributed and/or modified under the conditions of the
+LaTeX Project Public License, version 1.3c of the license. 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 2005/12/01
+or later. This work has the LPPL maintenance status “maintained”.
+The current maintainer and author of this work is Markus Kohm.
+
+----------------------------------------------------------------------------
+
+Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz
+in der Version 1.3c, verteilt und/oder verändert werden. Die aktuelle
+Version dieser Lizenz ist http://www.latex-project.org/lppl.txt und
+Version 1.3c oder später ist Teil aller Verteilungen von LaTeX 2005/12/01
+oder später. Dieses Werk hat den LPPL-Verwaltungs-Status „maintained”
+Der aktuelle Verwalter und Autor dieses Werks ist Markus Kohm.
+
+----------------------------------------------------------------------------
diff --git a/macros/latex/contrib/uni-titlepage/README.md b/macros/latex/contrib/uni-titlepage/README.md
new file mode 100644
index 0000000000..1ba65bc61f
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/README.md
@@ -0,0 +1,98 @@
+# `uni-titlepage`
+
+Copyright (c) Markus Kohm <komascript at gmx.info>
+
+Release: 2021/08/16 v0.6
+
+License: LPPL 1.3c
+
+KOMA presents the title page project
+
+----------------------------------------------------------------------------
+
+This work may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, version 1.3c of the license.
+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 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+The Current Maintainer and author of this work is Markus Kohm.
+
+----------------------------------------------------------------------------
+
+# ABSTRACT
+
+Creation of title pages is something most authors should not have to do.
+But reality is not perfect, so a lot of authors have to do it. In 2009
+KOMA started the title page project at <https://komascript.de/titlepage>
+to collect real title pages and implement them with a well defined interface.
+In 2021 the project has been moved to <https://github.com/komascript/uni-titlepage>
+and renamed.
+
+Now, changing from one title page style to another would be very
+simple. Nevertheless implementation of a new title page style may be still
+difficult. But maybe the guys of the title page project would help you. Just
+ask!
+
+# Unpacking and Installation for Developers and Distributors
+
+To unpack and install all files, you can download the source from github
+and then run:
+
+ l3build install
+
+Afterwards you can build the manual and the PDFs of the examples using:
+
+ l3build doc
+
+As an alternative you can use the CTAN source distribution. This already
+contains the user manual and the PDFs of the example files. So you only have
+to run
+
+ tex uni-titlepage.dtx
+
+to generate the package file `uni-titlepage.sty`, the title definition files
+`title-*.def` and the example titlepages `titlepage-*.tex`.
+
+Please note, the `title-*.def` files are run-time files. Together with
+`uni-titlepage.sty` they have to be placed in `tex/latex/uni-titlepage` inside
+a TDS tree. All files `titlepage-*.tex` and `titlepage-*.pdf` as well as
+`uni-titlepage.pdf` are part of the documentation and should be placed in
+`doc/latex/uni-titlepage/` of the TDS tree.
+
+# Unpacking and Installation for Users
+
+Users can use the installation described at
+[Unpacking and Installation for Developers and Distributors]. However, if
+your TeX distributor already distributes a ready for installation package, you
+do not need and should not create files and copy them yourself. Just use the
+package manager of your TeX distribution to install the package.
+
+# How to Contribute
+
+If you have made a title definition that is not specific for a single project
+but could be of interest for other users, you can either
+
+* make your own `uni-titlepage-FOO` package with its own manual and [upload it
+to ctan](https://www.ctan.org/upload),
+* contribute in adding it to `uni-titlepage`.
+
+The first option has the advantage, that you are free. There won't be any code
+reviews by the `uni-titlepage` developers. You don't need to use the same
+coding style. There is not need to accept the license of `uni-titlepage`
+etc. But in this case you have to take care to keep it compatible with future
+releases of `uni-titlepage` and it will not be presented in the
+`uni-titlepage` manual.
+
+The second option has the advantage, that after accepting your code, the
+`uni-titlepage` developers will try to keep it working even if they change
+`uni-titlepage`. But there are several restrictions to your code, before it
+will be accepted. For example, you should always try to use general options,
+if possible. *Static text* (not handled by options) should be configurable via
+`\newcaptionname`, `\providecaptionname` and `\renewcaptionname` and should be
+available at least in English and German (but if we can, we help in
+translating them). The coding style and quality is also a criterion.
+
diff --git a/macros/latex/contrib/uni-titlepage/titlepage-DHBW.pdf b/macros/latex/contrib/uni-titlepage/titlepage-DHBW.pdf
new file mode 100644
index 0000000000..c3d9bc881d
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/titlepage-DHBW.pdf
Binary files differ
diff --git a/macros/latex/contrib/uni-titlepage/titlepage-JT-Aufsaetze.pdf b/macros/latex/contrib/uni-titlepage/titlepage-JT-Aufsaetze.pdf
new file mode 100644
index 0000000000..518b266acd
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/titlepage-JT-Aufsaetze.pdf
Binary files differ
diff --git a/macros/latex/contrib/uni-titlepage/titlepage-JT-Geschichte.pdf b/macros/latex/contrib/uni-titlepage/titlepage-JT-Geschichte.pdf
new file mode 100644
index 0000000000..7eaaed4be7
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/titlepage-JT-Geschichte.pdf
Binary files differ
diff --git a/macros/latex/contrib/uni-titlepage/titlepage-JT-Typography.pdf b/macros/latex/contrib/uni-titlepage/titlepage-JT-Typography.pdf
new file mode 100644
index 0000000000..f54dfb332e
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/titlepage-JT-Typography.pdf
Binary files differ
diff --git a/macros/latex/contrib/uni-titlepage/titlepage-KIT.pdf b/macros/latex/contrib/uni-titlepage/titlepage-KIT.pdf
new file mode 100644
index 0000000000..15008ef21c
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/titlepage-KIT.pdf
Binary files differ
diff --git a/macros/latex/contrib/uni-titlepage/titlepage-KOMAScript.pdf b/macros/latex/contrib/uni-titlepage/titlepage-KOMAScript.pdf
new file mode 100644
index 0000000000..9e6254c1f6
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/titlepage-KOMAScript.pdf
Binary files differ
diff --git a/macros/latex/contrib/uni-titlepage/titlepage-Markus-1.pdf b/macros/latex/contrib/uni-titlepage/titlepage-Markus-1.pdf
new file mode 100644
index 0000000000..c29fe66bce
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/titlepage-Markus-1.pdf
Binary files differ
diff --git a/macros/latex/contrib/uni-titlepage/titlepage-Markus-2.pdf b/macros/latex/contrib/uni-titlepage/titlepage-Markus-2.pdf
new file mode 100644
index 0000000000..62980fb613
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/titlepage-Markus-2.pdf
Binary files differ
diff --git a/macros/latex/contrib/uni-titlepage/titlepage-Spacer.pdf b/macros/latex/contrib/uni-titlepage/titlepage-Spacer.pdf
new file mode 100644
index 0000000000..0cef72436d
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/titlepage-Spacer.pdf
Binary files differ
diff --git a/macros/latex/contrib/uni-titlepage/titlepage-TU-DD.pdf b/macros/latex/contrib/uni-titlepage/titlepage-TU-DD.pdf
new file mode 100644
index 0000000000..f57767dbe2
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/titlepage-TU-DD.pdf
Binary files differ
diff --git a/macros/latex/contrib/uni-titlepage/titlepage-TU-HH.pdf b/macros/latex/contrib/uni-titlepage/titlepage-TU-HH.pdf
new file mode 100644
index 0000000000..ff2ea43f52
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/titlepage-TU-HH.pdf
Binary files differ
diff --git a/macros/latex/contrib/uni-titlepage/titlepage-WWUM.pdf b/macros/latex/contrib/uni-titlepage/titlepage-WWUM.pdf
new file mode 100644
index 0000000000..1b63a2e183
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/titlepage-WWUM.pdf
Binary files differ
diff --git a/macros/latex/contrib/uni-titlepage/uni-titlepage.dtx b/macros/latex/contrib/uni-titlepage/uni-titlepage.dtx
new file mode 100644
index 0000000000..e5cea81704
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/uni-titlepage.dtx
@@ -0,0 +1,3242 @@
+% \iffalse meta-comment
+% ============================================================================
+% uni-titlepage.dtx
+% Copyright (c) Markus Kohm, 2009-2021
+%
+% This file is part of the LaTeX package `uni-titlepage'
+%
+% This work may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, version 1.3c of the license.
+% 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 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status "maintained".
+%
+% The Current Maintainer and author of this work is Markus Kohm.
+%
+% This work consists of the file `uni-titlepage.dtx'.
+%
+% ==========================================================================
+% \fi^^A meta-comment
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% \iffalse meta-comment
+% ==========================================================================
+%<*dtx|ins>
+\expandafter\ifx\csname ProvidesFile\endcsname\relax
+ \def\ProvidesFile#1[#2]{\message{#1: #2}}%
+\fi
+%</dtx|ins>
+%<*dtx|ins|doc|driver>
+\ProvidesFile{%
+%<*dtx|manual>
+ uni-titlepage%
+%</dtx|manual>
+%<driver> title%
+%<example> titlepage%
+%<DHBW> -DHBW%
+%<KOMAScript> -KOMAScript%
+%<Markus&1> -Markus-1%
+%<Markus&2> -Markus-2%
+%<Spacer> -Spacer%
+%<TU-DD> -TU-DD%
+%<TU-HH> -TU-HH%
+%<KIT> -KIT%
+%<JT-Aufsaetze> -JT-Aufsaetze%
+%<JT-Geschichte> -JT-Geschichte%
+%<JT-Typography> -JT-Typography%
+%<WWUM> -WWUM%
+%<*dtx>
+ .dtx%
+%</dtx>
+%<ins> .ins%
+%<doc&!manual> .tex%
+%<doc&manual> .drv%
+%<driver> .def%
+%</dtx|ins|doc|driver>
+%<package>\ProvidesPackage{uni-titlepage%
+%<*dtx|ins|doc|driver|package|README>
+%<README># `uni-titlepage`
+%<README>
+%<README>Copyright (c) Markus Kohm <komascript at gmx.info>
+%<*!README>
+}[%
+%</!README>
+%<README>
+%<README>Release: 2021/08/16 v0.6
+%<README>
+%<README>License: LPPL 1.3c
+%<!README>2021/08/16 v0.6
+%<README>
+KOMA presents the title page project
+%<*!README>
+]
+%</!README>
+%</dtx|ins|doc|driver|package|README>
+% \fi^^A meta-comment
+%
+% \changes{v0.5f}{2021/07/29}{usage of \texttt{l3build}}
+% \changes{v0.6}{2021/07/29}{package renamed from \Package{titlepage} into
+% \Package{uni-titlepage}}
+%
+% \tableofcontents
+%
+% \section{Loading the Package}
+% \label{sec:Loading-the-Package}
+%
+% You may load this package like all the other package, simply using:
+% \begin{verbatim}
+% \usepackage{uni-titlepage}
+% \end{verbatim}\vskip-\baselineskip
+%
+% This package declares several options for title page manipulation. We will
+% declare all those options in the following. Most of the options are package
+% options as well, but some are style options only. You may use every package
+% option already as optional argument of \cs{usepackage} and even of
+% \cs{documentclass}. But in most cases it would be better to use them as
+% optional argument of \cs{TitlePageStyle} or \cs{maketitle}. We show this way
+% below.
+%
+%
+% \section{The Title Page Styles and their Options}
+% \label{sec:The-Title-Page-Style-and-their-Options}
+%
+% \DescribeMacro{TitlePageStyle}
+% Several title page styles are supported. You may select a title page style
+% using:
+% \begin{quote}
+% \cs{TitlePageStyle}^^A
+% \texttt{[}\meta{option}\texttt{=}\meta{value},\dots\texttt{]}^^A
+% \marg{style}.
+% \end{quote}
+% The available styles are shown at the following sub-sections. Options may be
+% every package option and every style option.
+%
+% \DescribeMacro{maketitle}
+% After loading a style you may generate title pages using:
+% \begin{quote}
+% \cs{maketitle}^^A
+% \texttt{[}\meta{option}\texttt{=}\meta{value},\dots\texttt{]}^^A
+% .
+% \end{quote}
+% Again, you may use every package option and every style option as optional
+% argument.
+%
+% \DescribeMacro{TitleOption}
+% \DescribeMacro{TitleOptions}
+% Another way to set an option is to use either
+% \begin{quote}
+% \cs{TitleOption}\marg{option}\marg{value}
+% \end{quote}
+% or
+% \begin{quote}
+% \cs{TitleOptions}^^A
+% \texttt{\{}\meta{option}\texttt{=}\meta{value},\dots\texttt{\}}.
+% \end{quote}
+% You can set every package option an every option of already loaded title
+% page styles.
+%
+% For every option, that expects a string argument exists a corresponding
+% command with the same name. So you may set, e.g., the title either using
+% \cs{TitleOptions}\linebreak[2]\texttt{\{title=\{This is the Title\}\}} or
+% \cs{TitleOption}\linebreak[2]\texttt{\{title\}\linebreak[2]\{This is the
+% Title\}} or \cs{maketitle}\linebreak[2]\texttt{[title=\{This is the
+% Title\}]} or \cs{TitlePageStyle}\linebreak[2]\texttt{[title=\{This is the
+% Title\}]\{\dots\}} or \cs{title}\linebreak[2]\texttt{\{This is the
+% Title\}}. The most robust way is to use the command \cs{title} instead of
+% the option at one of the other commands! If you use the option you may need
+% to add \cs{protect} in front of commands inside the option value!
+%
+% \begin{xltabular}{\linewidth}{>{\ttfamily}l>{\ttfamily\raggedright}p{.25\linewidth}>{\RaggedRight}X}
+% \toprule
+% \normalfont\emph{String Option}
+% & \normalfont\emph{Styles}
+% & \normalfont\emph{Common Meaning} \\
+% \midrule
+% \endhead
+% \midrule
+% \multicolumn{3}{r}{\dots}
+% \endfoot
+% \bottomrule
+% \endlastfoot
+% advisor & TU-DD & if your personal advisor differs from the
+% advising professor, this is the name of
+% the advisor
+% \\
+% author & \normalfont\emph{every style}
+% & the authors, with some styles (currently
+% not with \texttt{DHBW}) you may seperate
+% multiple authors by \cs{and}
+% \tabularnewline
+% chair & TU-DD, KIT, WWUM & the chair of the faculty of the university
+% where you've made or presented your work
+% \tabularnewline
+% company & DHBW & some works are made not only at a
+% university but in cooperation with a
+% company; at Duale Hochschule
+% Baden-W\"urttemberg this is the default
+% case
+% \\
+% course & DHBW & the shortcut for your discipline or course
+% \\
+% date & DHBW, KIT, KOMAScript, Markus-1, Markus-2, Spacer, TU-HH,
+% TU-DD, JT-Typography, WWUM
+% & the documents main date, this may by,
+% e.\,g., the release date, the semester of a
+% thesis or any other most valid date
+% \\
+% dedication & KOMAScript, Markus-1, Markus-2, Spacer
+% & sometimes it is nice to dedicate the work
+% to someone, e.g., your wife, your
+% children, your grandmother or your first
+% love
+% \\
+% academicgrade
+% & DHBW, TU-HH, WUMM & the academic grade or degree you
+% reach with the work
+% \\
+% discipline & DHBW, TU-DD, WUMM & the discipline in which you've made your
+% work or reach your academic grade
+% \\
+% duration & DHBW & the processing time for your work
+% \\
+% faculty & TU-DD, KIT, WUMM & the faculty of the university where you've
+% made or presented your work
+% \\
+% homepage & KIT & the www-address of the homepage
+% \\
+% mainlogo & DHBW, KIT & a logo at the main title (currently used
+% for the DHBW or the KIT logo at the
+% default of \texttt{titlehead})
+% \\
+% matriculationnumber
+% & DHBW, TU-DD & if you were a student while you've made
+% the work, this is you number
+% \\
+% oralexaminationdate
+% & TU-HH, WUMM & sometimes the date of the oral examination
+% is not the main date but has to be shown
+% too
+% \\
+% place & DHBW, TU-HH, JT-Geschichte, JT-Typography, WUMM
+% & the place, in general the city, where
+% you've made the work or where the Duale
+% Hochschule or the publisher resides
+% \\
+% professor & TU-DD, WUMM & the name of the professor who advised you
+% during your work
+% \\
+% publisher & KOMAScript, Markus-1, Markus-2, Spacer, JT-Aufsaetze,
+% JT-Geschichte, JT-Typography
+% & most written works have a publisher
+% \\
+% referee & DHBW, TU-HH & every academic work will be referred;
+% with some styles (currently
+% \texttt{TU-HH}, \texttt{WWUM}) multiple
+% referees may be seperated with \cs{and}
+% \\
+% sience & WWUM & kind of sience,
+% e.\,g., ``Naturwissenschaften''
+% \\
+% student & \normalfont\emph{see \texttt{author}}
+% & same like \texttt{author}
+% \\
+% subject & \normalfont\emph{every style}
+% & the kind of work, there are special
+% predefined subjects; if you use one of
+% \texttt{bachelor}, \texttt{academicgrade},
+% \texttt{diploma}, \texttt{master},
+% \texttt{project}, \texttt{seminar}, or
+% \texttt{studentresearch}
+% a language dependend replacement will
+% be done; to avoid this, you may set the
+% value in parentesis
+% \\
+% subtitle & KOMAScript, Markus-1, Markus-2, Spacer, TU-HH
+% & the sub-title of the document
+% \\
+% title & \normalfont\emph{every style}
+% & the main title of the document
+% \\
+% titlehead & DHBW, KOMAScript, Markus-2, Spacer, KIT
+% & page head over the main title of the
+% document
+% \\
+% university & DHBW, TU-DD, TU-HH, KIT, WWUM
+% & the university where you've made or
+% presented your work
+% \\
+% \end{xltabular}
+%
+% Let's have a look at the already defined title page styles. You should find
+% an example \LaTeX{} file for each of them at the documentation folder. If
+% not, ask you distributor or administrator for those! But you may find the
+% code of all examples in \File{docstrip} syntax even at
+% \autoref{sec:The-Examples-and-the-Manual} starting at
+% \autopageref{sec:The-Examples-and-the-Manual}. At the shown examples most
+% variable contents was made red.
+%
+%
+% \clearpage
+% \subsection{Style \File{DHBW}}
+% \label{sec:Style-DHBW}
+%
+% Josef Schmidbauer asked me for a title page usable for bachelor thesis at
+% the ``Duale Hochschulen Baden-W\"urttemberg''. This is a only one title page
+% style.
+% \begin{flushleft}
+% \parbox[b][.707\linewidth][t]{.475\linewidth}{\footnotesize The
+% page (in example \File{titlepage-DHBW.tex}) is:
+% \begin{enumerate}
+% \item main title page with \texttt{titlehead}, \texttt{mainlogo},
+% \texttt{title}, \texttt{subject}, \texttt{academicgrade}, \texttt{discipline},
+% \texttt{place}, \texttt{author}, \texttt{duration},
+% \texttt{matriculationnumber}, \texttt{course}, \texttt{company},
+% \texttt{referee}, \texttt{university}, and \texttt{date}.
+% \end{enumerate}
+% }\hspace{0.025\linewidth}\nobreak
+% \frame{\includegraphics[page=1,width=.475\linewidth]{titlepage-DHBW}}
+% \end{flushleft}
+% Note: The upper right corner is the logo placeholder. If you'd download the
+% logo from the DHBW homepage \url{http://www.dhbw.de} and save it with the
+% name \verb|DHBW_d_MOS_195x95_rgb_300.jpg| it would be used automaticly. The
+% logo file is also available from
+% \url{https://de.wikipedia.org/wiki/Datei:DHBW_d_MOS_195x95_rgb_300.jpg}. This
+% original logo has a large white border, so it would be much smaller than the
+% red box at the example. The example file also contains comments for an
+% optional company logo at the upper left corner.
+%
+% \clearpage
+% \subsection{Style \File{KOMAScript}}
+% \label{sec:Style-KOMAScript}
+%
+% This is a style similar to the title pages of \KOMAScript{} classes.
+% \begin{flushleft}
+% \noindent\parbox[b][.707\linewidth][t]{.475\linewidth}{\footnotesize The
+% pages (in twoside example \File{titlepage-KOMAScript.tex}) are:
+% \begin{enumerate}
+% \item defined by \texttt{extratitle}, which is not a package option but a
+% style option. You may set it using \cs{TitleOption} or \cs{TitleOptions}
+% after loading the style or with the optional argument of \cs{maketitle}
+% or \cs{TitlePageStyle}.
+% \item empty and only in twoside mode with \texttt{extratitle} used.
+% \item main title page with \texttt{titlehead}, \texttt{subject},
+% \texttt{title}, \texttt{subtitle}, \texttt{author}, \texttt{date},
+% \texttt{plublisher}. You may use \cs{thanks} at any of these.
+% \end{enumerate}
+% }\hspace{.025\linewidth}\nobreak
+% \frame{\includegraphics[page=1,width=.5\linewidth]{titlepage-KOMAScript}}^^A
+% \\
+% \frame{\includegraphics[page=2,width=.5\linewidth]{titlepage-KOMAScript}}^^A
+% \frame{\includegraphics[page=3,width=.5\linewidth]{titlepage-KOMAScript}}^^A
+% \\
+% \frame{\includegraphics[page=4,width=.5\linewidth]{titlepage-KOMAScript}}^^A
+% \frame{\includegraphics[page=5,width=.5\linewidth]{titlepage-KOMAScript}}^^A
+% \\
+% \frame{\includegraphics[page=6,width=.5\linewidth]{titlepage-KOMAScript}}^^A
+% \parbox[b][.707\linewidth][t]{.475\linewidth}{\footnotesize
+% \begin{enumerate}\setcounter{enumi}{3}
+% \item only in twoside mode defined by \texttt{uppertitleback} and
+% \texttt{lowertitleback}, which are not package options but style
+% options. You may set them using \cs{TitleOption} or \cs{TitleOptions}
+% after loading the style or with the optional argument of \cs{maketitle}
+% or \cs{TitlePageStyle}.
+% \item optional post title with \texttt{dedication}.
+% \item empty and only in twoside mode with \texttt{dedication} used.
+% \end{enumerate}
+% }%
+% \end{flushleft}
+%
+%
+% \clearpage
+% \subsection{Style \File{Markus-1}}
+% \label{sec:Style-Markus-1}
+%
+% This is a style similar to the one of the title of the \KOMAScript{} book.
+% \begin{flushleft}
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize The
+% pages (in twoside example \File{titlepage-Markus-1.tex}) are:
+% \begin{enumerate}
+% \item defined by \texttt{publisher}; may be omitted by
+% \texttt{publisher=\{\}}.
+% \item only in twoside mode with \texttt{publisher} defined by
+% \texttt{author}.
+% \item main title page with \texttt{subject},
+% \texttt{title}, \texttt{subtitle}, and \texttt{date}.
+% \end{enumerate}
+% }\hspace{.025\textwidth}\nobreak
+% \frame{\includegraphics[page=1,width=.5\textwidth]{titlepage-Markus-1}}
+%
+% \frame{\includegraphics[page=2,width=.5\textwidth]{titlepage-Markus-1}}^^A
+% \frame{\includegraphics[page=3,width=.5\textwidth]{titlepage-Markus-1}}
+%
+% \frame{\includegraphics[page=4,width=.5\textwidth]{titlepage-Markus-1}}^^A
+% \frame{\includegraphics[page=5,width=.5\textwidth]{titlepage-Markus-1}}
+%
+% \frame{\includegraphics[page=6,width=.5\textwidth]{titlepage-Markus-1}}^^A
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize
+% \begin{enumerate}\setcounter{enumi}{3}
+% \item only in twoside mode defined by \texttt{uppertitleback} and
+% \texttt{lowertitleback}, which are not package options but style
+% options. You may set them using \cs{TitleOption} or \cs{TitleOptions}
+% after loading the style or with the optional argument of \cs{maketitle}
+% or \cs{TitlePageStyle}.
+% \item optional post title with \texttt{dedication}.
+% \item empty and only in twoside mode with \texttt{dedication} used.
+% \end{enumerate}
+% }
+% \end{flushleft}
+%
+%
+% \clearpage
+% \subsection{Style \File{Markus-2}}
+% \label{sec:Style-Markus-2}
+%
+% This style is not a real live style, but similar styles are often used:
+% \begin{flushleft}
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize The
+% pages (in twoside example \File{titlepage-Markus-2.tex}) are:
+% \begin{enumerate}
+% \item defined by \texttt{extratitle}.
+% \item empty and only in twoside mode with \texttt{extratitle} used.
+% \item main title page with \texttt{titlehead} placed at the page head (if
+% this is to high, it might be put outside the page; if it is to deep, it
+% might overwrite parte of the title), \texttt{rulewidth} and
+% \texttt{rulesep} for the vertical rule (these aren't package options but
+% style options), \texttt{subject}, \texttt{title}, \texttt{subtitle},
+% \texttt{author}, \texttt{date}, and \texttt{plublisher}.
+% \end{enumerate}
+% }\hspace{.025\textwidth}\nobreak
+% \frame{\includegraphics[page=1,width=.5\textwidth]{titlepage-Markus-2}}
+%
+% \frame{\includegraphics[page=2,width=.5\textwidth]{titlepage-Markus-2}}^^A
+% \frame{\includegraphics[page=3,width=.5\textwidth]{titlepage-Markus-2}}
+%
+% \frame{\includegraphics[page=4,width=.5\textwidth]{titlepage-Markus-2}}^^A
+% \frame{\includegraphics[page=5,width=.5\textwidth]{titlepage-Markus-2}}
+%
+% \frame{\includegraphics[page=6,width=.5\textwidth]{titlepage-Markus-2}}^^A
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize
+% \begin{enumerate}\setcounter{enumi}{3}
+% \item only in twoside mode defined by \texttt{uppertitleback} and
+% \texttt{lowertitleback}, which are not package options but style
+% options. You may set them using \cs{TitleOption} or \cs{TitleOptions}
+% after loading the style or with the optional argument of \cs{maketitle}
+% or \cs{TitlePageStyle}.
+% \item optional post title with \texttt{dedication}.
+% \item empty and only in twoside mode with \texttt{dedication} used.
+% \end{enumerate}
+% }
+% \end{flushleft}
+%
+%
+% \clearpage
+% \subsection{Style \File{Spacer}}
+% \label{sec:Style-Spacer}
+%
+% This style is a variant of style \File{Markus-2} from
+% \autoref{sec:Style-Markus-2}. It was asked by \texttt{spacer2012} at the
+% original \texttt{titlepage} project on
+% \url{https://komascript.de/titlepage}. In difference to \File{Markus-2} the
+% title head will not be placed at the page head but at the body.
+% \begin{flushleft}
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize The
+% pages (in twoside example \File{titlepage-Spacer.tex}) are:
+% \begin{enumerate}
+% \item defined by \texttt{extratitle}.
+% \item empty and only in twoside mode with \texttt{extratitle} used.
+% \item main title page with \texttt{titlehead} placed at the page head,
+% \texttt{rulewidth} and \texttt{rulesep} for the vertical rule (these
+% aren't package options but style options), \texttt{subject},
+% \texttt{title}, \texttt{subtitle}, \texttt{author}, \texttt{date}, and
+% \texttt{plublisher}.
+% \end{enumerate}
+% }\hspace{.025\textwidth}\nobreak
+% \frame{\includegraphics[page=1,width=.5\textwidth]{titlepage-Spacer}}
+%
+% \frame{\includegraphics[page=2,width=.5\textwidth]{titlepage-Spacer}}^^A
+% \frame{\includegraphics[page=3,width=.5\textwidth]{titlepage-Spacer}}
+%
+% \frame{\includegraphics[page=4,width=.5\textwidth]{titlepage-Spacer}}^^A
+% \frame{\includegraphics[page=5,width=.5\textwidth]{titlepage-Spacer}}
+%
+% \frame{\includegraphics[page=6,width=.5\textwidth]{titlepage-Spacer}}^^A
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize
+% \begin{enumerate}\setcounter{enumi}{3}
+% \item only in twoside mode defined by \texttt{uppertitleback} and
+% \texttt{lowertitleback}, which are not package options but style
+% options. You may set them using \cs{TitleOption} or \cs{TitleOptions}
+% after loading the style or with the optional argument of \cs{maketitle}
+% or \cs{TitlePageStyle}.
+% \item optional post title with \texttt{dedication}.
+% \item empty and only in twoside mode with \texttt{dedication} used.
+% \end{enumerate}
+% }
+% \end{flushleft}
+%
+%
+% \clearpage
+% \subsection{Style \File{TU-DD}}
+% \label{sec:Style-TU-DD}
+%
+% This style is used at the ``Technische Universit\"at Dresden''. I was asked
+% fot this several years ago. Only one title page is defined!
+%
+% \noindent\parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize The
+% page (in example \File{titlepage-TU-DD.tex}) is:
+% \begin{enumerate}
+% \item main title page with \texttt{university}, \texttt{faculty},
+% \texttt{chair}, \texttt{professor}, \texttt{title}, \texttt{subject},
+% \texttt{author}, \texttt{discipline}, \texttt{matriculationnumber},
+% \texttt{advisor}, \texttt{place}, and \texttt{date}.
+% \end{enumerate}
+% }\hspace{.025\textwidth}%
+% \frame{\includegraphics[page=1,width=.5\textwidth]{titlepage-TU-DD}}
+%
+% But there is another variant. If option \texttt{blackborder} was set to
+% true, an black border is put around the page:
+% \begin{flushleft}
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize The
+% page (in example \File{titlepage-TU-DD.tex} with option
+% \texttt{blackborder}) is:
+% \begin{enumerate}
+% \item main title page with \texttt{university}, \texttt{faculty},
+% \texttt{chair}, \texttt{professor}, \texttt{title}, \texttt{subject},
+% \texttt{author}, \texttt{discipline}, \texttt{matriculationnumber},
+% \texttt{advisor}, \texttt{place}, and \texttt{date}.
+% \end{enumerate}
+% }\hspace{.025\textwidth}\nobreak
+% \frame{\includegraphics[page=3,width=.5\textwidth]{titlepage-TU-DD}}
+% \end{flushleft}
+%
+%
+% \clearpage
+% \subsection{Style \File{TU-HH}}
+% \label{sec:Style-TU-HH}
+%
+% This style is used at the ``Technische Universit\"at Hamburg-Harburg''. I
+% was asked for this several years ago. Only two title pages are defined!
+% \begin{flushleft}
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize The
+% pages (in twoside example \File{titlepage-TU-HH.tex}) are:
+% \begin{enumerate}
+% \item main title page with \texttt{title}, \texttt{subtitle},
+% \texttt{university}, \texttt{academicgrade}, \texttt{subject}, \texttt{author},
+% \texttt{place}, and \texttt{date}. Some additional text depending on the
+% selected language will be used also.
+% \end{enumerate}
+% }\hspace{.025\textwidth}\nobreak
+% \frame{\includegraphics[page=1,width=.5\textwidth]{titlepage-TU-HH}}
+%
+% \frame{\includegraphics[page=2,width=.5\textwidth]{titlepage-TU-HH}}^^A
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize
+% \begin{enumerate}\setcounter{enumi}{1}
+% \item only in twoside mode with \texttt{referee} and
+% \texttt{oralexaminationdate}.
+% \end{enumerate}
+% }
+% \end{flushleft}
+% The output of style \File{TU-HH} differs, if you use option
+% \texttt{final}, which is a style option, not a package option. You may set
+% it using \cs{TitleOption} or \cs{TitleOptions} after loading the style or
+% with the optional argument of \cs{maketitle} or \cs{TitlePageStyle}.
+%
+%
+% \clearpage
+% \subsection{Style \File{KIT}}
+% \label{sec:Style-KIT}
+%
+% This style is used at the ``KIT -- University of the State of
+% Baden-W\"urttemberg and National Research Center of the Helmholtz
+% Association''. I've made this because of the ugly \LaTeX{} class and
+% template made by the KIT itself. Only one title page is defined!
+% \begin{flushleft}
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize The
+% page (in example \File{titlepage-KIT.tex}) is:
+% \begin{enumerate}
+% \item main title page with \texttt{titlehead}, \texttt{mainlogo},
+% \texttt{title}, \texttt{subject}, \texttt{author},
+% \texttt{referee}. \texttt{advisor}, \texttt{university},
+% \texttt{duration}, and \texttt{homepage}. Some
+% additional text depending on the selected language will be used also.
+% \end{enumerate}
+% If \texttt{titlehead} is empty or unused left aligned \texttt{mainlogo}
+% will be used. If \texttt{mainlogo} is empty or unused, and if you have a
+% logo file \File{KITLogo\_RGB.pdf}, this will be used. As an alternative
+% also \File{2560px-Logo\_KIT.svg.png}, \File{2000px-Logo\_KIT.svg.png},
+% \File{1280px-Logo\_KIT.svg.png}, \File{1024px-Logo\_KIT.svg.png},
+% \File{1000px-Logo\_KIT.svg.png}, \File{800px-Logo\_KIT.svg.png},
+% \File{640px-Logo\_KIT.svg.png}, or \File{500px-Logo\_KIT.svg.png} from
+% \url{https://de.wikipedia.org/wiki/Datei:Logo\_KIT.svg} would be
+% auto-detected. Several other elements will be set to defaults too, if they
+% are empty. So you don't need to set all the elements, that has been set at
+% the example file.
+% }\hspace{.025\textwidth}\nobreak
+% \frame{\includegraphics[page=1,width=.5\textwidth]{titlepage-KIT}}
+% \end{flushleft}
+%
+% \clearpage
+% \subsection{Style \File{JT-Aufsaetze}}
+% \label{sec:Style-JT-Aufsaetze}
+%
+% The style is based on the front cover of ``Jan Tschichold: Ausgewählte
+% Aufsätze über Fragen der Gestalt des Buches und der Typüographie, Birkhäuser
+% Verlag Basel, 1975, ISBN: 3-7643-1946-1''. I've made this, because the book
+% is a major book of classic typography. It seems to be old fashioned and indeed
+% it is. Note, that the front cover of a book an the main title of a book are
+% not the same! Nevertheless, here I've made a main title from a front
+% cover. Currently only one title page is defined, but you may also use
+% \texttt{extratitle}, \texttt{uppertitleback}, and \texttt{lowertitleback}.
+% \begin{flushleft}
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize The
+% page (in example \File{titlepage-JT-Aufsaetze.tex}) is:
+% \begin{enumerate}
+% \item main title page with \texttt{author}, \texttt{title},
+% \texttt{publisher}, \texttt{rulewidth} and \texttt{rulesep} for width
+% of the horizontal rules and the distance between them (these aren't
+% package options but style options).
+% \end{enumerate}
+% }\hspace{.025\textwidth}\nobreak
+% \frame{\includegraphics[page=1,width=.5\textwidth]{titlepage-JT-Aufsaetze}}
+% \end{flushleft}
+%
+% \clearpage
+% \subsection{Style \File{JT-Geschichte}}
+% \label{sec:Style-JT-Geschichte}
+%
+% The style is based on ``Jan Tschichold: Geschichte der
+% Schrift in Bildern; Holbein-Verlag, 1947''. This is another major book of
+% classic typography. I seems to be old fashioned and indeed
+% it is. Currently only one title page is defined, but you may also use
+% \texttt{extratitle}, \texttt{uppertitleback}, and \texttt{lowertitleback}.
+% \begin{flushleft}
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize The
+% page (in example \File{titlepage-JT-Geschichte.tex}) is:
+% \begin{enumerate}
+% \item main title page with \texttt{author}, \texttt{title},
+% \texttt{publisher}, \texttt{place}, \texttt{rulewidth} and
+% \texttt{rulesep} for width of the horizontal rules and the distance
+% between them (these aren't package options but style options).
+% \end{enumerate}
+% Note, that the default for \texttt{titlepagefont} prints everything but the
+% \texttt{title} with ad-hoc letterspacing in upper-case letters if
+% \cs{lsstyle} is available and without letterspacing but in small capitals
+% otherwise. Changing the default of \texttt{titlepagefont} will also change
+% this automatism.
+% }\hspace{.025\textwidth}\nobreak
+% \frame{\includegraphics[page=1,width=.5\textwidth]{titlepage-JT-Geschichte}}
+% \end{flushleft}
+%
+% \clearpage
+% \subsection{Style \File{JT-Typography}}
+% \label{sec:Style-JT-Typography}
+%
+% The style is based on ``Jan Tschichold: The New Typography; University of
+% California Press, Berkley and Los Angeles, California 1995''. This is the
+% English translation of another major book of
+% classic typography. Some things like missing letterspacing at the upper-case
+% title seems to be wrong. Currently only one title page is defined, but you
+% may also use \texttt{extratitle}, \texttt{uppertitleback}, and
+% \texttt{lowertitleback}.
+% \begin{flushleft}
+% \parbox[b][.707\textwidth][t]{.475\textwidth}{\footnotesize The
+% page (in example \File{titlepage-JT-Geschichte.tex}) is:
+% \begin{enumerate}
+% \item main title page with \texttt{author}, \texttt{title},
+% \texttt{subtitle}, \texttt{place}, \texttt{date}, \texttt{publisher}.
+% \end{enumerate}
+% }\hspace{.025\textwidth}\nobreak
+% \frame{\includegraphics[page=1,width=.5\textwidth]{titlepage-JT-Typography}}
+% \end{flushleft}
+%
+% \clearpage
+% \subsection{Style \File{WWUM}}
+% \label{sec:Style-WWUM}
+%
+% Tobias S\"udkamp asked me for that title for the
+% Westf\"alischen Wilhelms-Universit\"at M\"unster. The
+% \texttt{professor} is more likely the \texttt{chairman}. Female
+% referees should be prefixed by \textsf{[f]}. You can omit the examination
+% date defining an empty \cs{examinationdatename}.
+% \begin{flushleft}
+% \frame{\includegraphics[page=1,width=.5\textwidth]{titlepage-WWUM}}\nobreak
+% \hspace{.025\textwidth}\nobreak
+% \parbox[b][.7\textwidth][t]{.475\textwidth}{\footnotesize
+% The pages (in example \File{tilepage-WWUM.tex}) are:
+% \begin{enumerate}
+% \item cover page with \texttt{author}, \texttt{title}, \cs{the}\cs{year}
+% \item the backside of the cover page is empty if it exists
+% \item main title page with \texttt{chair}, \texttt{title},
+% \texttt{subject}, \texttt{academicgrade}, \texttt{sience}, \texttt{discipline},
+% \texttt{faculty}
+% \item main title back side with \texttt{professor}, \texttt{referee},
+% \texttt{oralexaminationdate} (normaly empty)
+% \end{enumerate}
+% }\\
+% \frame{\includegraphics[page=3,width=.5\textwidth]{titlepage-WWUM}}%^^A
+% \frame{\includegraphics[page=4,width=.5\textwidth]{titlepage-WWUM}}%^^A
+% \end{flushleft}
+
+%
+% \clearpage
+%
+% \section{Additonal Commands}
+% \label{sec:Additional-Commands}
+%
+% \DescribeMacro{\NowButAfterBeginDocument}
+% Command
+% \begin{quote}
+% \cs{NowButAfterBeginDocument}\marg{code}
+% \end{quote}
+% is something like \cs{AtBeginDocument}, but if you call it somewhere after
+% \cs{begin\{document\}} argument \meta{code} will be used immediately. This
+% command is used inside some of the title page styles, because you may load
+% them either at the preamle or even after \cs{begin\{document\}}, but some
+% code should not be executed before \cs{begin\{document\}}.
+%
+% \DescribeEnv{titlepage}
+% In oposite to the \texttt{titlepage} environment of the standard classes,
+% \begin{quote}
+% \cs{begin\{titlepage\}}\oarg{options}\\
+% \dots\\
+% \cs{end\{titlepage\}}
+% \end{quote}
+% knows some options. These are \texttt{pagestyle=}\meta{style} and
+% \texttt{pagenumber=}\meta{number}. The first one changes the page style of
+% the generated title page to the given \meta{style}. If the option is not
+% set, the default \texttt{empty} will be used. The second one sets the
+% logical page number of the generated title page to the given \meta{number}
+% and sets the counter \texttt{pagenumber} to this value. If the option is
+% not used, the value of counter \texttt{pagenumber} will be increased by one
+% and the result is used for the logical page number.
+%
+% \DescribeEnv{fullsizetitle}
+% Using
+% \begin{quote}
+% \cs{begin\{fullsizetitle\}}\oarg{options}\\
+% \dots\\
+% \cs{end\{fullsizetitle\}}
+% \end{quote}
+% is almost the same like above. But \texttt{fullsizetitle} removes the
+% margins from the generated title page. Nevertheless if binding correction
+% (aka binding offset) of package \File{typearea} or \File{geometry} could be
+% recognized, it will not be removed. Some of the title page styles use this
+% environment instead of \texttt{titlepage} inside \cs{maketitle}. With this
+% the margins of the title page do not depend on the type area of the
+% document.
+%
+% \DescribeMacro{\usetitleelement}
+% Command
+% \begin{quote}
+% \cs{usetitleelement}\marg{element}
+% \end{quote}
+% gives the content of the corresponding title \meta{element}. Each main
+% \meta{element} defined by the package may be used. Those are currently:
+% \texttt{advisor}, \texttt{author}, \texttt{chair}, \texttt{company},
+% \texttt{course}, \texttt{date}, \texttt{dedication}, \texttt{academicgrade},
+% \texttt{discipline}, \texttt{duration}, \texttt{faculty}, \texttt{homepage},
+% \texttt{mainlogo}, \texttt{matriculationnumber},
+% \texttt{oralexaminationdate}, \texttt{place}, \texttt{professor},
+% \texttt{publisher}, \texttt{referee}, \texttt{subject}, \texttt{subtitle},
+% \texttt{title}, \texttt{titlehead}, and \texttt{university}. Note:
+% \texttt{student} isn't a main \meta{element}, because it's only an alias for
+% \texttt{author}.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{Implementation}
+% \label{sec:Implementation}
+% \changes{v0.1}{2009/01/01}{Start of project}
+% \changes{v0.2}{2011/06/03}{First version using \texttt{docstrip}}
+%
+% Note: To generate all files, developers and beta testers should simply use
+% the source from \url{https://github.com/komascript/uni-titlepage} and call
+% \begin{verbatim}
+% l3build unpack
+% l3build doc
+% \end{verbatim}
+% The resulting documentation will be placed in the main folder. The unpacked
+% style file are in \texttt{build/unpacked}, You can use
+% \begin{verbatim}
+% l3build install
+% \end{verbatim}
+% to install them in \texttt{TEXMFHOME}. See the manual of \Package{l3build}
+% for more information.
+%
+% As an alternative you can use the source distribution from CTAN and run:
+% \begin{verbatim}
+% tex uni-titlepage.dtx
+% \end{verbatim}
+% The documentation is usually part of the source distribution at CTAN. Note,
+% that all the generated \texttt{tex} files are example files. Do not copy
+% them to the run-time files but the documentation folder!
+%
+% \subsection{The Installation Driver `\File{uni-titlepage.ins}'}
+% \label{sec:The-Installation-Driver-uni-titlepage.ins}
+% \iffalse meta-comment
+%<*dtx|ins>
+% \fi ^^A meta-comment
+% First of all we produce \File{uni-titlepage.ins}, the installation driver. It
+% starts very common with loading \File{docstrip}, preamble declaration and
+% start of generation.
+% \begin{macrocode}
+\def\batchfile{uni-titlepage.dtx}
+\input docstrip.tex
+\ifToplevel{%
+ \Msg{********************************************************************}
+ \Msg{*}
+ \Msg{* Steps of uni-titlepage generation:}
+ \Msg{* ==============================}
+ \Msg{*}
+ \Msg{* - Generation of all needed files:}
+ \keepsilent
+ \askforoverwritefalse
+}
+
+\preamble
+Copyright (c) 2009-2021 by Markus Kohm <komascript(at)gmx.info>
+
+This file was generated from file(s) of uni-titlepage distribution.
+
+----------------------------------------------------------------------
+
+This work may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, version 1.3c of the license.
+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 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+The Current Maintainer and author of this work is Markus Kohm.
+
+This file may only be distributed together with
+the file `uni-titlepage.dtx'.
+You may however distribute the file `uni-titlepage.dtx' without this file.
+
+\endpreamble
+
+\generate{%
+% \end{macrocode}
+% But while the dtx file is the ins file itself, we will never generate this
+% file.
+% \begin{macrocode}
+% \file{uni-titlepage.ins}{\from{uni-titlepage.dtx}{ins}}% not needed
+ \file{uni-titlepage.drv}{\from{uni-titlepage.dtx}{doc,manual}}%
+ \file{uni-titlepage.sty}{\from{uni-titlepage.dtx}{package}}%
+ \file{title-DHBW.def}{\from{uni-titlepage.dtx}{driver,DHBW}}%
+ \file{title-KOMAScript.def}{\from{uni-titlepage.dtx}{driver,KOMAScript}}%
+ \file{title-Markus-1.def}{\from{uni-titlepage.dtx}{driver,Markus,1}}%
+ \file{title-Markus-2.def}{\from{uni-titlepage.dtx}{driver,Markus,2}}%
+ \file{title-Spacer.def}{\from{uni-titlepage.dtx}{driver,Spacer}}%
+ \file{title-TU-DD.def}{\from{uni-titlepage.dtx}{driver,TU-DD}}%
+ \file{title-TU-HH.def}{\from{uni-titlepage.dtx}{driver,TU-HH}}%
+ \file{title-KIT.def}{\from{uni-titlepage.dtx}{driver,KIT}}%
+ \file{title-JT-Aufsaetze.def}{\from{uni-titlepage.dtx}{driver,JT-Aufsaetze}}%
+ \file{title-JT-Geschichte.def}{\from{uni-titlepage.dtx}{driver,JT-Geschichte}}%
+ \file{title-JT-Typography.def}{\from{uni-titlepage.dtx}{driver,JT-Typography}}%
+ \file{title-WWUM.def}{\from{uni-titlepage.dtx}{driver,WWUM}}%
+ \file{titlepage-DHBW.tex}{\from{uni-titlepage.dtx}{doc,example,DHBW}}%
+ \file{titlepage-KOMAScript.tex}{\from{uni-titlepage.dtx}{doc,example,KOMAScript}}%
+ \file{titlepage-Markus-1.tex}{\from{uni-titlepage.dtx}{doc,example,Markus,1}}%
+ \file{titlepage-Markus-2.tex}{\from{uni-titlepage.dtx}{doc,example,Markus,2}}%
+ \file{titlepage-Spacer.tex}{\from{uni-titlepage.dtx}{doc,example,Spacer}}%
+ \file{titlepage-TU-DD.tex}{\from{uni-titlepage.dtx}{doc,example,TU-DD}}%
+ \file{titlepage-TU-HH.tex}{\from{uni-titlepage.dtx}{doc,example,TU-HH}}%
+ \file{titlepage-KIT.tex}{\from{uni-titlepage.dtx}{doc,example,KIT}}%
+ \file{titlepage-JT-Aufsaetze.tex}{\from{uni-titlepage.dtx}{doc,example,JT-Aufsaetze}}%
+ \file{titlepage-JT-Geschichte.tex}{\from{uni-titlepage.dtx}{doc,example,JT-Geschichte}}%
+ \file{titlepage-JT-Typography.tex}{\from{uni-titlepage.dtx}{doc,example,JT-Typography}}%
+ \file{titlepage-WWUM.tex}{\from{uni-titlepage.dtx}{doc,example,WWUM}}%
+ \nopreamble\nopostamble
+ \file{README.md}{\from{uni-titlepage.dtx}{README}}%
+}%
+
+\ifToplevel{%
+ \Msg{* \space\space done.}
+ \Msg{*}
+ \Msg{* You may install all the files now.}
+ \Msg{*}
+ \Msg{********************************************************************}
+}
+% \end{macrocode}
+% At docstrip run we like to finish the file know:
+% \begin{macrocode}
+\csname endinput\endcsname
+% \end{macrocode}
+% \iffalse meta-comment
+%</dtx|ins>
+% \fi^^A meta-comment
+%
+% \subsection{The Package `\File{scrbase.sty}'}
+% \label{sec:The-Package-scrbase.sty}
+% \iffalse meta-comment
+%<*package>
+% \fi^^A meta-comment
+%
+% \begin{macro}{\TitleOptions}
+% \begin{macro}{\TitleOption}
+% We use the extended option handling of \KOMAScript, so we load package
+% \File{scrbase} and declare a family, a member and a something like
+% \verb|\KOMAoptions| and \verb|\KOMAoption| but for this package.
+% \begin{macrocode}
+\RequirePackage{scrbase}[2014/12/03]
+\DefineFamily{title}
+\DefineFamilyMember{title}
+\newcommand*{\TitleOptions}{\FamilyOptions{title}}
+\newcommand*{\TitleOption}{\FamilyOption{title}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{option}{pagenumber}
+% \begin{macrocode}
+\newcounter{titlepage}\setcounter{titlepage}{\@ne}
+\DefineFamilyKey{title}{pagenumber}{%
+ \setcounter{titlepage}{#1}\FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \end{option}
+%
+% \begin{macro}{\titlepagestyle}
+% \begin{option}{pagestyle}
+% \begin{macrocode}
+\providecommand*{\titlepagestyle}{}
+\renewcommand*{\titlepagestyle}{empty}
+\DefineFamilyKey{title}{pagestyle}{%
+ \renewcommand*{\titlepagestyle}{#1}\FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+%
+% \begin{macro}{\if@resonecol}
+% \begin{macrocode}
+\ifcsname @restonecolfalse\endcsname
+ \expandafter\@gobble
+\else
+ \expandafter\@firstofone
+\fi
+{\newif\if@restonecol}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{titlepage}
+% \begin{macrocode}
+\scr@ifundefinedorrelax{titlepage}{\def\titlepage{}}{}
+\scr@ifundefinedorrelax{endtitlepage}{\def\endtitlepage{}}{}
+\providecommand*{\maketitle}[1][]{}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\inittitle}
+% \begin{macro}{\makepretitle}
+% \begin{macro}{\makepretitleback}
+% \begin{macro}{\makemaintitle}
+% \begin{macro}{\makemaintitleback}
+% \begin{macro}{\makeposttitle}
+% \begin{macro}{\makeposttitleback}
+% \begin{macro}{\exittitle}
+% \begin{macro}{\tp@undefinedtitle}
+% Set of commands, that define a title style:
+% \begin{macrocode}
+\newcommand*{\tp@undefinedtitle}[1]{%
+ \PackageInfo{uni-titlepage}{leaving not defined #1-title page empty}%
+}
+\newcommand*{\inittitle}{}
+\newcommand*{\makepretitle}{\tp@undefinedtitle{pre}}
+\newcommand*{\makepretitleback}{\tp@undefinedtitle{back of pre}}
+\newcommand*{\makemaintitle}{\tp@undefinedtitle{main}}
+\newcommand*{\makemaintitleback}{\tp@undefinedtitle{back of main}}
+\newcommand*{\makeposttitle}{\tp@undefinedtitle{post}}
+\newcommand*{\makeposttitleback}{\tp@undefinedtitle{back of post}}
+\newcommand*{\exittitle}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\inittitlestyle}
+% Will be called before loading a title style:
+% \begin{macrocode}
+\newcommand*{\inittitlestyle}{%
+ \renewenvironment{titlepage}[1][]{%
+ \TitleOptions{##1}%
+ \clearpage
+ \if@twocolumn
+ \@restonecoltrue\onecolumn
+ \else
+ \@restonecolfalse
+ \fi
+ \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi
+ \if@twoside% im einseitigen Satz ist mir alles egal
+ \ifodd\value{page}% aktuelle Seite ist ungerade
+% \end{macrocode}
+% Current page number is odd \dots
+% \begin{macrocode}
+ \ifodd\value{titlepage}%
+ \else
+% \end{macrocode}
+% \dots\ wanted page number is even: put in empty page.
+% \begin{macrocode}
+ \null\newpage
+ \fi
+ \else
+% \end{macrocode}
+% Current page number is even \dots
+% \begin{macrocode}
+ \ifodd\value{titlepage}%
+% \end{macrocode}
+% \dots\ wanted page number is off: put in empty page.
+% \begin{macrocode}
+ \null\newpage % Leerseite
+ \fi
+ \fi
+ \fi
+ \setcounter{page}{\value{titlepage}}%
+ \ifx\titlepagestyle\@empty\else\thispagestyle{\titlepagestyle}\fi
+ }{%
+ \if@restonecol\twocolumn \else \newpage\fi
+ \stepcounter{titlepage}%
+ }%
+
+ \renewcommand*{\maketitle}[1][]{%
+ \begingroup
+ \TitleOptions{##1}%
+ \inittitle
+ \makepretitle\if@twoside\makepretitleback\fi
+ \makemaintitle\if@twoside\makemaintitleback\fi
+ \makeposttitle\if@twoside\makeposttitleback\fi
+ \exittitle
+ \endgroup
+ }%
+
+ \renewcommand*{\inittitle}{}%
+ \renewcommand*{\makepretitle}{\tp@undefinedtitle{pre}}%
+ \renewcommand*{\makepretitleback}{\tp@undefinedtitle{back of pre}}%
+ \renewcommand*{\makemaintitle}{\tp@undefinedtitle{main}}%
+ \renewcommand*{\makemaintitleback}{\tp@undefinedtitle{back of main}}%
+ \renewcommand*{\makeposttitle}{\tp@undefinedtitle{post}}%
+ \renewcommand*{\makeposttitleback}{\tp@undefinedtitle{back of post}}%
+ \renewcommand*{\exittitle}{}%
+}
+\inittitlestyle
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\titlebox}
+% \begin{macro}{fullsizetitle}
+% New environment for full page titles (with respect to BCOR or
+% Gm@bindingoffset if defined)
+% \begin{macrocode}
+\newsavebox\titlebox
+\newenvironment{fullsizetitle}[1][]{%
+ \TitleOptions{#1}%
+ \begin{lrbox}{\titlebox}
+ \hsize\paperwidth
+ \scr@ifundefinedorrelax{ta@bcor}{%
+ \scr@ifundefinedorrelax{Gm@bindingoffset}{}{%
+ \advanve\hsize-\Gm@bindingoffset}%
+ }{%
+ \advance\hsize-\ta@bcor
+ \scr@ifundefinedorrelax{Gm@bindingoffset}{}{%
+ \ifdim \Gm@bindingoffset=\ta@bcor\else
+ \PackageWarning{uni-titlepage}{Ignorring geometry's binding
+ correction,\MessageBreak
+ using typearea's binding correction.\MessageBreak
+ If you're using geometry and typearea,\MessageBreak
+ you should set both options to the same value,\MessageBreak
+ e.g. \string\KOMAoptions{BCOR=\the\ta@bcor}\MessageBreak
+ \space\space\space\space\space
+ \string\geometry{bindingoffset=\the\ta@bcor}\MessageBreak
+ to make uni-titlepage use this value%
+ }%
+ \fi
+ }%
+ }%
+ \vsize\paperheight
+ \linewidth\hsize
+ \columnwidth\hsize
+ \textwidth\hsize
+ \textheight\vsize
+ \noindent\minipage{\hsize}
+}{%
+ \endminipage
+ \end{lrbox}
+ \begin{titlepage}%
+ \vspace*{-1in}\vskip-\topmargin\vskip-\headheight\vskip-\headsep
+ \vskip-\topskip
+ \raggedright
+ \leavevmode
+ \hskip-1in
+ \ifodd\c@page
+ \hskip-\oddsidemargin
+ \scr@ifundefinedorrelax{ta@bcor}{%
+ \scr@ifundefinedorrelax{Gm@bindingoffset}{}{%
+ \hskip\Gm@bindingoffset}%
+ }{\hskip\ta@bcor}%
+ \else
+ \hskip-\evensidemargin
+ \fi
+ \vbox to\z@{\hsize\z@
+ \vskip-\baselineskip
+ \makebox[0pt][l]{\usebox\titlebox}%
+ \vss
+ }%
+ \end{titlepage}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\DefineSimpleTitleKey}
+% \begin{macro}{\DefineReplaceTitleKey}
+% \begin{macro}{\tp@replacewarning}
+% \begin{macro}{\tp@dokeys}
+% Define title page ``variables'':
+% \begin{macrocode}
+\newcommand*{\tp@replacewarning}[2]{%
+ \PackageWarning{uni-titlepage}{%
+ Using `#2' instead of `#1',\MessageBreak
+ because `#1' not defined%
+ }%
+}
+\newcommand*{\tp@dokeys}{}
+\newcommand*{\DefineSimpleTitleKey}[2][.\@currname.\@currext]{%
+ \l@addto@macro\tp@dokeys{\do{#2}}%
+ \expandafter\newcommand\expandafter*\csname @#2\endcsname{}%
+ \expandafter\newcommand\expandafter*\csname #2\endcsname[1]{%
+ \expandafter\gdef\csname @#2\endcsname{##1}}%
+ \DefineFamilyKey[{#1}]{title}{#2}{%
+ \csname #2\endcsname{##1}%
+ \FamilyKeyStateProcessed
+ }%
+}
+\newcommand*{\DefineReplaceTitleKey}[3][.\@currname.\@currext]{%
+ \DefineFamilyKey[{#1}]{title}{#2}{%
+ \tp@replacewarning{#2}{#3}%
+ \FamilyOptions{title}{#3=##1}%
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\titlehead}
+% \begin{macro}{\@titlehead}
+% \begin{option}{titlehead}
+% \begin{macrocode}
+\providecommand*{\@titlehead}{}
+\providecommand{\titlehead}[1]{\gdef\@titlehead{#1}}
+\DefineFamilyKey{title}{titlehead}{\titlehead{#1}\FamilyKeyStateProcessed}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\homepage}
+% \changes{v0.3}{2012/07/05}{new command}
+% \begin{macro}{\@homepage}
+% \changes{v0.3}{2012/07/05}{new internal}
+% \begin{option}{homepage}
+% \changes{v0.3}{2012/07/05}{new option}
+% \begin{macrocode}
+\providecommand*{\@homepage}{}
+\providecommand{\homepage}[1]{\gdef\@homepage{#1}}
+\DefineFamilyKey{title}{homepage}{\homepage{#1}\FamilyKeyStateProcessed}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\title}
+% \begin{macro}{\@title}
+% \begin{option}{title}
+% \begin{macrocode}
+\let\@title\relax\let\title\relax\DefineSimpleTitleKey{title}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\author}
+% \begin{macro}{\@author}
+% \begin{option}{author}
+% \begin{macrocode}
+\let\@author\relax\let\author\relax\DefineSimpleTitleKey{author}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\date}
+% \begin{macro}{\@date}
+% \begin{option}{date}
+% \begin{macrocode}
+\let\@date\relax\let\date\relax\DefineSimpleTitleKey{date}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\duration}
+% \begin{macro}{\@duration}
+% \begin{option}{duration}
+% \begin{macrocode}
+\DefineSimpleTitleKey{duration}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\course}
+% \begin{macro}{\@course}
+% \begin{option}{course}
+% \begin{macrocode}
+\DefineSimpleTitleKey{course}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\company}
+% \begin{macro}{\@company}
+% \begin{option}{company}
+% \begin{macrocode}
+\DefineSimpleTitleKey{company}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\subtitle}
+% \begin{macro}{\@subtitle}
+% \begin{option}{subtitle}
+% \begin{macrocode}
+\let\@subtitle\relax\let\subtitle\relax\DefineSimpleTitleKey{subtitle}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\university}
+% \begin{macro}{\@university}
+% \begin{option}{university}
+% \begin{macrocode}
+\DefineSimpleTitleKey{university}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\faculty}
+% \begin{macro}{\@faculty}
+% \begin{option}{faculty}
+% \begin{macrocode}
+\DefineSimpleTitleKey{faculty}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\chair}
+% \begin{macro}{\@chair}
+% \begin{option}{chair}
+% \begin{macrocode}
+\DefineSimpleTitleKey{chair}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\professor}
+% \begin{macro}{\@professor}
+% \begin{option}{professor}
+% \begin{macrocode}
+\DefineSimpleTitleKey{professor}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\subject}
+% \begin{macro}{\@subject}
+% \begin{option}{subject}
+% \changes{v0.4c}{2012/12/18}{typing error fixed (mrpiggi)}
+% \changes{v0.5e}{2019/11/20}{\cs{ifstr} in \textsf{scrbase} renamed to
+% \cs{Ifstr}}
+% \begin{macrocode}
+\providecommand*{\@subject}{}
+\providecommand*{\subject}[1]{\gdef\@subject{#1}}
+\l@addto@macro\tp@dokeys{\do{subject}}%
+\DefineFamilyKey{title}{subject}{%
+ \Ifstr{#1}{project}{\subject{\projectpapername}}{%
+ \Ifstr{#1}{seminar}{\subject{\seminarpapername}}{%
+ \Ifstr{#1}{studentresearch}{\subject{\studentresearchname}}{%
+ \Ifstr{#1}{diploma}{\subject{\diplomathesisname}}{%
+ \Ifstr{#1}{degree}{\subject{\degreethesisname}}{%
+ \Ifstr{#1}{master}{\subject{\masterthesisname}}{%
+ \Ifstr{#1}{bachelor}{\subject{\bachelorthesisname}}{%
+ \subject{#1}%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ }%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\Ifstr}
+% For compatibility with old versions of \textsf{scrbase} the macro is
+% provided based on \cs{ifstr} if it has not been defined by \textsf{scrbase}.
+% \begin{macrocode}
+\providecommand*{\Ifstr}{\ifstr}
+% \end{macrocode}
+% \end{macro}
+% \begin{option}{student}
+% \begin{macrocode}
+\DefineReplaceTitleKey{student}{author}
+% \end{macrocode}
+% \end{option}
+% \begin{macro}{\sience}
+% \changes{v0.5}{2016/06/21}{new}
+% \begin{macro}{\@sience}
+% \changes{v0.5}{2016/06/21}{new}
+% \begin{option}{sience}
+% \changes{v0.5}{2016/06/21}{new}
+% \begin{macrocode}
+\DefineSimpleTitleKey{sience}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\discipline}
+% \begin{macro}{\@discipline}
+% \begin{option}{discipline}
+% \begin{macrocode}
+\DefineSimpleTitleKey{discipline}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\academicgrade}
+% \changes{v0.6}{2021/07/29}{renamed ``degree'' to ``academic grade'' to avoid
+% name clash with the degree symbol}
+% \begin{macro}{\@academicgrade}
+% \changes{v0.6}{2021/07/29}{renamed ``degree'' to ``academic grade'' to avoid
+% name clash with the degree symbol}
+% \begin{option}{academicgrade}
+% \changes{v0.6}{2021/07/29}{renamed ``degree'' to ``academic grade'' to avoid
+% name clash with the degree symbol}
+% \begin{macrocode}
+\DefineSimpleTitleKey{academicgrade}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\matriculationnumber}
+% \begin{macro}{\@matriculationnumber}
+% \begin{option}{matriculationnumber}
+% \begin{macrocode}
+\DefineSimpleTitleKey{matriculationnumber}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\advisor}
+% \begin{macro}{\@advisor}
+% \begin{option}{advisor}
+% \begin{macrocode}
+\DefineSimpleTitleKey{advisor}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\referee}
+% \begin{macro}{\@referee}
+% \begin{option}{referee}
+% \begin{macrocode}
+\DefineSimpleTitleKey{referee}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\place}
+% \begin{macro}{\@place}
+% \begin{option}{place}
+% \begin{macrocode}
+\DefineSimpleTitleKey{place}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\publisher}
+% \begin{macro}{\@publisher}
+% \begin{option}{publisher}
+% \begin{macrocode}
+\DefineSimpleTitleKey{publisher}
+\renewcommand*{\@publisher}{\csname @publishers\endcsname}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\mainlogo}
+% \changes{v0.4}{2012/07/24}{new}
+% \begin{macro}{\@mainlogo}
+% \changes{v0.4}{2012/07/24}{new (internal)}
+% \begin{option}{mainlogo}
+% \changes{v0.4}{2012/07/24}{new}
+% \begin{macrocode}
+\DefineSimpleTitleKey{mainlogo}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\oralexaminationdate}
+% \begin{macro}{\@oralexaminationdate}
+% \begin{option}{oralexaminationdate}
+% \begin{macrocode}
+\DefineSimpleTitleKey{oralexaminationdate}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\dedication}
+% \begin{macro}{\@dedication}
+% \begin{option}{dedication}
+% \begin{macrocode}
+\providecommand*{\@dedication}{}
+\providecommand{\dedication}[1]{\gdef\@dedication{#1}}
+\DefineFamilyKey{title}{dedication}{\dedication{#1}\FamilyKeyStateProcessed}
+% \end{macrocode}
+% \end{option}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\usetitleelement}
+% \changes{v0.4}{2012/04/24}{new}
+% \begin{macro}{\@usetitleelement@error}
+% \changes{v0.4}{2012/04/24}{new (internal)}
+% Users cannot simply use, e.g., \cs{@title}, \cs{@mainlogo} etc. So we need a
+% command to get them:
+% \begin{macrocode}
+\newcommand*{\usetitleelement}[1]{%
+ \scr@ifundefinedorrelax{#1}{%
+ \@usetitleelement@error{#1}%
+ }{%
+ \scr@ifundefinedorrelax{@#1}{%
+ \@usetitleelement@error{#1}%
+ }{%
+ \@nameuse{@#1}%
+ }%
+ }%
+}
+\newcommand*{\@usetitleelement@error}[1]{%
+ \PackageError{uni-titlepage}{`#1' isn't a title element}{%
+ You should use \string\usetitleelement\space for title elements
+ only!\MessageBreak
+ If you'll continue, command will be ignored.}%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Some variables use their own configurable font:
+% \begin{option}{titlepagefont}
+% \begin{macro}{\@titlepagefont}
+% \begin{macrocode}
+\scr@ifundefinedorrelax{newkomafont}{%
+ \newcommand*{\@titlepagefont}{}%
+}{%
+ \newkomafont{titlepage}{}%
+}
+\DefineFamilyKey{title}{titlepagefont}{%
+ \renewcommand*{\@titlepagefont}{#1}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{subjectfont}
+% \begin{macro}{\subject@font}
+% \begin{macrocode}
+\providecommand*{\subject@font}{\bfseries}
+\DefineFamilyKey{title}{subjectfont}{%
+ \renewcommand*{\subject@font}{#1}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{titlefont}
+% \begin{macro}{\title@font}
+% \begin{macrocode}
+\providecommand*{\titlefont}{\bfseries}
+\DefineFamilyKey{title}{titlefont}{%
+ \renewcommand*{\titlefont}{#1}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{option}{subtitlefont}
+% \begin{macro}{\@subtitlefont}
+% \begin{macrocode}
+\providecommand*{\@subtitlefont}{\bfseries}
+\DefineFamilyKey{title}{subtitlefont}{%
+ \renewcommand*{\@subtitlefont}{#1}%
+ \FamilyKeyStateProcessed
+}
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+%
+% \begin{macro}{\TitlePageStyle}
+% Load a title page style from file
+% \begin{macrocode}
+\newcommand*{\TitlePageStyle}[2][]{%
+ \IfFileExists{title-#2.def}{%
+ \begingroup
+ \edef\@tempa{\endgroup
+ \noexpand\inittitlestyle
+ \noexpand\makeatletter
+ \noexpand\input{title-#2.def}%
+ \noexpand\catcode`\noexpand\@=\the\catcode`\@
+ }%
+ \@tempa
+ \TitleOptions{#1}%
+ }{%
+ \PackageError{uni-titlepage}{No title definition for `#2' found}{%
+ You've tried to set title page style `#2', but no title page
+ style definition file\MessageBreak
+ `title-#2.def' may be found%
+ }%
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\NowButAfterBeginDocument}
+% Nice shortcut:
+% \begin{macrocode}
+\newcommand*{\NowButAfterBeginDocument}{%
+ \if@atdocument
+ \expandafter\@firstofone
+ \else
+ \expandafter\AtBeginDocument
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\DeclareOption*{\expandafter\TitlePageStyle\expandafter{\CurrentOption}}
+\FamilyProcessOptions*\relax
+% \end{macrocode}
+%
+% \begin{macro}{\chairmanname}
+% \changes{v0.5}{2016/06/21}{new}%^^A
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\projectpapername}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\seminarpapername}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\studentreserchname}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\diplomathesisname}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\degreethesisname}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\masterthesisname}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\bachelorthesisname}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\presentedbyname}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\advisorname}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\thename}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\ofthename}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\fromname}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\fromplacename}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\malerefereename}
+% \changes{v0.5}{2016/06/21}{new}%^^A
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\femalerefereename}
+% \changes{v0.5}{2016/06/21}{new}%^^A
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\refereename}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\oralexaminationdatename}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\ordinal}
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% \begin{macro}{\maleordinal}
+% \changes{v0.5}{2016/06/21}{new}%^^A
+% \begin{macro}{\femaleordinal}
+% \changes{v0.5}{2016/06/21}{new}%^^A
+% \changes{v0.5c}{2019/05/27}{not needed \cs{AtBeginDocument} removed}%^^A
+% Language dependent terms:
+% \begin{macrocode}
+\providecommand*{\chairmanname}{Chairman}
+\providecommand*{\projectpapername}{Project Paper}
+\providecommand*{\seminarpapername}{Seminar Paper}
+\providecommand*{\studentresearchname}{Student Research Project}
+\providecommand*{\diplomathesisname}{Diploma Thesis}
+\providecommand*{\degreethesisname}{Degree Thesis}
+\providecommand*{\masterthesisname}{Master Thesis}
+\providecommand*{\bachelorthesisname}{Bachelor Thesis}
+\providecommand*{\presentedbyname}{presented by}
+\providecommand*{\advisorname}{Advisor}
+\providecommand*{\thename}{}
+\providecommand*{\ofthename}{of the}
+\providecommand*{\fromname}{from}
+\providecommand*{\fromplacename}{from}
+\providecommand*{\refereename}{Referee}
+\providecommand*{\femalerefereename}{\refereename}
+\providecommand*{\malerefereename}{\refereename}
+\providecommand*{\oralexaminationdatename}{Date of Oral Examination}
+\providecommand*{\atthename}{at}
+\providecommand*{\durationname}{Processing Time}
+\providecommand*{\matriculationnumbername}{Matriculationnumber}
+\providecommand*{\coursename}{Course}
+\providecommand*{\companyname}{Training Company}
+\providecommand*{\examinationname}{Examination}
+\providecommand*{\examinationdatename}{Date of Examination}
+\newcommand*{\ordinal}{\englishordinal}
+\newcommand*{\femaleordinal}{\ordinal}
+\newcommand*{\maleordinal}{\ordinal}
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\chairmanname}{Chairmain}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\projectpapername}{Project Paper}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\seminarpapername}{Seminar Paper}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\studentresearchname}{Student
+ Research Project}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\diplomathesisname}{Diploma Thesis}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\degreethesisname}{Degree Thesis}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\masterthesisname}{Master Thesis}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\bachelorthesisname}{Bachelor
+ Thesis}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\ordinal}{\englishordinal}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\presentedbyname}{presented by}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\advisorname}{Advisor}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\thename}{}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\ofthename}{of the}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\fromname}{from}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\fromplacename}{from}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\refereename}{Referee}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\oralexaminationdatename}{Date of
+ Oral Examination}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\durationname}{Processing Time}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\matriculationnumbername}{Matriculationnumber}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\coursename}{Course}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\companyname}{Training Company}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\examinationname}{Examination}%
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\examinationdatename}{Date of
+ Examination}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\chairmanname}{Dekan/Dekanin}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\projectpapername}{Projektarbeit}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\seminarpapername}{Seminararbeit}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\studentresearchname}{Studienarbeit}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\diplomathesisname}{Diplomarbeit}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\degreethesisname}{Dissertation}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\masterthesisname}{Master-Arbeit}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\bachelorthesisname}{Bachelor-Arbeit}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\ordinal}{\germanordinal}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\femaleordinal}{\germanfemaleordinal}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\maleordinal}{\germanmaleordinal}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\presentedbyname}{eingereicht von}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\advisorname}{Betreuer}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\thename}{den}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\ofthename}{der}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\fromname}{von}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\fromplacename}{aus}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\refereename}{Gutachter}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\femalerefereename}{Gutachterin}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\oralexaminationdatename}{Datum der m\"undlichen
+ Pr\"ufung}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\durationname}{Bearbeitungszeitraum}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\matriculationnumbername}{Matrikelnummer}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\coursename}{Kurs}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\companyname}{Ausbildungsfirma}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\examinationname}{Pr\"ufung}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\examinationdatename}{Tag der Pr\"ufung}%
+% \end{macrocode}
+% \begin{macro}{\englishordinal}
+% \begin{macrocode}
+\newcommand*{\englishordinal}[1]{%
+ \ifcsname engordnumber\endcsname
+ \engordnumber{#1}%
+ \else
+ \ifnum #1<\@ne
+ \PackageError{uni-titlepage}{Ordinal of `#1' not defined}{%
+ This package does only define english ordinals from 1}%
+ \else
+ \ifcase #1\or 1st\or 2nd\or 3rd\or 4th\or 5th\or 6th\or 7th\or 8th\or
+ 9th\or 10th\else
+ \PackageError{uni-titlepage}{Ordinal of `#1' not defined}{%
+ This package does only define english ordinals from 1 to
+ 10.\MessageBreak
+ You may load package `engord' to improve support of english
+ ordinals}%
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\germanordinal}
+% \begin{macro}{\germanmaleordinal}
+% \begin{macro}{\germanfemaleordinal}
+% \begin{macrocode}
+\newcommand*{\germanordinal}[1]{%
+ \ifnum #1<\@ne
+ \PackageError{uni-titlepage}{Ordinal of `#1' not defined}{%
+ This package does only define german ordinals from 1}%
+ \else
+ #1.%
+ \fi
+}
+\newcommand*{\germanmaleordinal}[1]{%
+ \ifcase #1
+ \PackageError{uni-titlepage}{Male ordinal of `#1' not defined}{%
+ This package does only define german male ordinals from 1}%
+ \or Erster\or Zweiter\or Dritter\or Vierter\or F\"unfter\or Sechster%
+ \or Siebter\or Achter\or Neunter\or Zehnter\else
+ \PackageError{uni-titlepage}{Male ordinal of `#1' not defined}{%
+ This package does only define german male ordinals up to 10}%
+ \fi
+}
+\newcommand*{\germanfemaleordinal}[1]{%
+ \ifcase #1
+ \PackageError{uni-titlepage}{Female ordinal of `#1' not defined}{%
+ This package does only define german female ordinals from 1}%
+ \or Erste\or Zweite\or Dritte\or Vierte\or F\"unfte\or Sechste%
+ \or Siebte\or Achte\or Neunte\or Zehnte\else
+ \PackageError{uni-titlepage}{Female ordinal of `#1' not defined}{%
+ This package does only define german female ordinals up to 10}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse meta-comment
+%</package>
+% \fi^^A meta-comment
+%
+% \subsection{The \texttt{titlepage} Drivers}
+% \label{sec:The-titlepage-Drivers}
+%
+% \changes{v0.2}{2011/06/07}{new style \texttt{DHBW}}
+% \changes{v0.2}{2011/06/07}{new style \texttt{Spacer}}
+% \changes{v0.3}{2012/07/05}{new style \texttt{KIT}}
+% \changes{v0.4}{2012/07/24}{new style \texttt{JT-Aufsaetze}}
+% \changes{v0.4}{2012/07/24}{new style \texttt{JT-Geschichte}}
+% \changes{v0.4}{2012/07/24}{new style \texttt{JT-Typography}}
+% \iffalse meta-comment
+%<*driver>
+% \fi^^A meta-comment
+% \begin{macrocode}
+\begingroup
+ \def\PackageNotLoadedError#1{%
+ \GenericError{%
+ (#1)\@spaces\@spaces\@spaces\@spaces
+ }{%
+ File `#1' Error: package `uni-titlepage' hasn't been loaded%
+ }{%
+ This definition file was made to be loaded by package
+ `uni-titlepage'.\MessageBreak
+ You may not use it without package `uni-titlepage'!\MessageBreak
+ See the documentation of package `uni-titlepage' for explanation.%
+ }%
+ }%
+ \ifx\csname uni-titlepage.sty@vers\endcsname\relax
+ \PackageNotLoadedError{%
+%<DHBW> title-DHBW.def%
+%<KOMAScript> title-KOMAScript.def%
+%<TU-DD> title-TU-DD.def%
+%<TU-HH> title-TU-HH.def%
+%<Markus&1> title-Markus-1.def%
+%<Markus&2> title-Markus-2.def%
+%<Spacer> title-Spacer.def%
+%<KIT> title-KIT.def%
+%<JT-Aufsaetze> title-JT-Aufsaetze.def%
+%<JT-Geschichte> title-JT-Geschichte.def%
+%<JT-Typography> title-JT-Typography.def%
+%<WWUM> title-WWUM.def%
+ }%
+ \fi
+\endgroup
+% \end{macrocode}
+%
+% Each style corresponds with an own member. Nevertheless most styles will not
+% have options in their own, because string options should be global to make
+% change of style very easy.
+% \begin{macrocode}
+\DefineFamilyMember[%
+%<DHBW> DHBW%
+%<KOMAScript> KOMAScript%
+%<TU-DD> TU-DD%
+%<TU-HH> TU-HH%
+%<Markus&1> Markus-1%
+%<Markus&2> Markus-2%
+%<Spacer> Spacer%
+%<KIT> KIT%
+%<JT-Aufsaetze> JT-Aufsaetze%
+%<JT-Geschichte> JT-Geschichte%
+%<JT-Typography> JT-Typography%
+%<WWUM> WWUM%
+]{title}
+% \end{macrocode}
+%
+% Nevertheless some style has their own switches:
+% \begin{option}{blackborder}
+% \emph{Trauerrand} at style \File{TU-DD}:
+% \begin{macrocode}
+%<TU-DD>\FamilyBoolKey[TU-DD]{title}{blackborder}{blackborder}
+% \end{macrocode}
+% \end{option}
+% \begin{option}{final}
+% Style \File{TU-HH} distinguishes between drafts and final thesis.
+% \begin{macrocode}
+%<TU-HH>\FamilyBoolKey[TU-HH]{title}{final}{final}
+% \end{macrocode}
+% \end{option}
+% \begin{option}{rulewidth}
+% \begin{macro}{\title@rulewidth}
+% \begin{option}{rulesep}
+% \begin{macro}{\title@rulesep}
+% Some styles have some variable rules at the title:
+% \begin{macrocode}
+%<*Spacer|JT-Aufsaetze|JT-Geschichte|Markus&2>
+\providecommand*{\title@rulewidth}{%
+%<Spacer|Markus&2> 0pt%
+%<JT-Aufsaetze|JT-Geschichte> .25\textwidth
+}
+\providecommand*{\title@rulesep}{%
+%<Spacer|Markus&2> \ifdim \title@rulewidth>\z@ 10pt\else \z@\fi
+%<JT-Aufsaetze|JT-Geschichte> 1.5pt%
+}
+\DefineFamilyKey[%
+%<Markus&2> Markus-2%
+%<JT-Aufsaetze> JT-Aufsaetze%
+%<JT-Geschichte> JT-Geschichte%
+%<Spacer> Spacer%
+]{title}{rulewidth}{%
+ \gdef\title@rulewidth{\dimexpr #1\relax}%
+ \FamilyKeyStateProcessed
+}
+\DefineFamilyKey[%
+%<Markus&2> Markus-2%
+%<JT-Aufsaetze> JT-Aufsaetze%
+%<JT-Geschichte> JT-Geschichte%
+%<Spacer> Spacer%
+]{title}{rulesep}{%
+ \gdef\title@rulesep{\dimexpr #1\relax}%
+ \FamilyKeyStateProcessed
+}
+%</Spacer|JT-Aufsaetze|JT-Geschichte|Markus&2>
+% \end{macrocode}
+% \end{macro}
+% \end{option}
+% \end{macro}
+% \end{option}
+%
+% An some has their own terms:
+% \begin{macro}{\presentationinformationWWUM}
+% \changes{v0.5}{2016/06/21}{new style WWUM}
+% \begin{macro}{\presentationinformationTUHH}
+% \changes{v0.5}{2016/06/21}{\cs{NowButAfterBeginDocument} not needed any
+% more}^^A
+% \changes{v0.5}{2016/06/21}{provide sevaral English and German
+% languages}^^A
+% \begin{macro}{\presentationinformationDHBW}
+% \changes{v0.5}{2016/06/21}{\cs{NowButAfterBeginDocument} not needed any
+% more}^^A
+% \changes{v0.5}{2016/06/21}{provide sevaral English and German languages}^^A
+% \changes{0.5e}{2019/11/20}{\cs{if} replaced by \cs{ifx}}
+% \begin{macro}{\presentationinformationKIT}
+% \changes{v0.5}{2016/06/21}{\cs{NowButAfterBeginDocument} not needed any
+% more}^^A
+% \changes{v0.5}{2016/06/21}{provide sevaral English and German languages}^^A
+% \begin{macrocode}
+%<*DHBW>
+\providecommand*{\presentationinformationDHBW}{%
+ for the \examinationname{} of\\[.5\baselineskip]
+ \@academicgrade\\[0pt plus 1fill]
+ of \@discipline\\[.5\baselineskip]
+ at the \@university{} \@place\\
+}
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\presentationinformationDHBW}{%
+ for the \examinationname\\[.5\baselineskip]
+ \@academicgrade\\[0pt plus 1fill]
+ of degree course \@discipline\\[.5\baselineskip]
+ at the \@university\ifx\@place\@empty\else\space\@place\fi
+}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\presentationinformationDHBW}{%
+ f\"ur die \examinationname{} zum\\[.5\baselineskip]
+ \@academicgrade\\[0pt plus 1fill]
+ des Studienganges \@discipline\\[.5\baselineskip]
+ an der \@university{}\ifx\@place\@empty\else\space\@place\fi
+}%
+%</DHBW>
+%<*TU-HH>
+\providecommand*{\presentationinformationTUHH}{%
+ \iffinal Of the \else The \fi Graduation Committee of the\\
+ \@university\\[.5ex]
+ to the Acquisition of the Academic Degree\\[.5ex]
+ \@academicgrade\\[.5ex]
+ \iffinal approved \else submitted \fi\@subject}
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\presentationinformationTUHH}{%
+ \iffinal Of the \else The \fi Graduation Committee of the\\
+ \@university\\[.5ex]
+ to the Acquisition of the Academic Degree\\[.5ex]
+ \@academicgrade\\[.5ex]
+ \iffinal approved \else submitted \fi\@subject}
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\presentationinformationTUHH}{%
+ \iffinal Vom \else Dem \fi Promotionsausschuss der\\
+ \@university\\[.5ex]
+ zur Erlangung des akademischen Grades\\[.5ex]
+ \@academicgrade\\[.5ex]
+ \iffinal genehmigte \else vorgelegte \fi\@subject}%
+%</TU-HH>
+%<*KIT>
+\providecommand*{\presentationinformationKIT}{%
+ At the \@faculty\\
+ \strut\ignorespaces\@chair\\
+}
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\presentationinformationKIT}{%
+ At the \@faculty\\
+ \strut\ignorespaces\@chair\\
+}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\presentationinformationKIT}{%
+ An der \@faculty\\
+ \strut\ignorespaces\@chair\\
+}%
+%</KIT>
+%<*WWUM>
+\providecommand*{\presentationinformationWWUM}{%
+ \@subject\\
+ to the Aquisition of the Academic Degree\\
+ \@academicgrade\\
+ of the \@sience{} of \@discipline\\
+ of the \@faculty{} faculty\\
+ of the \@university
+}
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\presentationinformationWWUM}{%
+ \@subject\\
+ to the Aquisition of the Academic Degree\\
+ \@academicgrade\\
+ of the \@sience{} of \@discipline\\
+ of the \@faculty{} faculty\\
+ of the \@university
+}
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\presentationinformationWWUM}{%
+ \@subject\\
+ zur Erlangung des \@academicgrade\\
+ der \@sience{} im Fachbereich \@discipline\\
+ der \@faculty{} Fakult\"at\\
+ der \@university
+}
+%</WWUM>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\KITlongname}
+% \changes{v0.5}{2016/06/21}{\cs{NowButAfterBeginDocument} not needed any
+% more}^^A
+% \changes{v0.5}{2016/06/21}{provide sevaral English and German
+% languages}^^A
+% \begin{macro}{\fromname}
+% \changes{v0.5}{2016/06/21}{\cs{NowButAfterBeginDocument} not needed any
+% more}^^A
+% \changes{v0.5}{2016/06/21}{provide sevaral English and German
+% languages}^^A
+% \begin{macro}{\refereename}
+% \changes{v0.5}{2016/06/21}{\cs{NowButAfterBeginDocument} not needed any
+% more}^^A
+% \changes{v0.5}{2016/06/21}{provide sevaral English and German
+% languages}^^A
+% \begin{macro}{\KITurl}
+% \begin{macrocode}
+%<*KIT>
+\providecaptionname{american,australian,british,canadian,%
+ english,newzealand,UKenglish,USenglish}{\KITlongname}{%
+ University of the State of Baden-W\"urttemberg and National Research Center
+ of the Helmholtz Association%
+}%
+\providecaptionname{german,ngerman,austrian,naustrian,%
+ swissgerman,nswissgerman}{\KITlongname}{%
+ Universit\"at des Landes Baden-W\"urttemberg und nationales
+ Forschungszentrum in der Helmholtz-Gemeinschaft
+}%
+\scr@ifundefinedorrelax{captionsamerican}{}{%
+ \renewcaptionname{american}{\fromname}{of}%
+ \renewcaptionname{american}{\refereename}{Reviewer}%
+}%
+\scr@ifundefinedorrelax{captionsaustralian}{}{%
+ \renewcaptionname{australian}{\fromname}{of}%
+ \renewcaptionname{australian}{\refereename}{Reviewer}%
+}%
+\scr@ifundefinedorrelax{captionsbritish}{}{%
+ \renewcaptionname{british}{\fromname}{of}%
+ \renewcaptionname{british}{\refereename}{Reviewer}%
+}%
+\scr@ifundefinedorrelax{captionscanadian}{}{%
+ \renewcaptionname{canadian}{\fromname}{of}%
+ \renewcaptionname{canadian}{\refereename}{Reviewer}%
+}%
+\scr@ifundefinedorrelax{captionsenglish}{}{%
+ \renewcaptionname{english}{\fromname}{of}%
+ \renewcaptionname{english}{\refereename}{Reviewer}%
+}%
+\scr@ifundefinedorrelax{captionsnewzealand}{}{%
+ \renewcaptionname{newzealand}{\fromname}{of}%
+ \renewcaptionname{newzealand}{\refereename}{Reviewer}%
+}%
+\scr@ifundefinedorrelax{captionsUKenglish}{}{%
+ \renewcaptionname{UKenglish}{\fromname}{of}%
+ \renewcaptionname{UKenglish}{\refereename}{Reviewer}%
+}%
+\scr@ifundefinedorrelax{captionsUSenglish}{}{%
+ \renewcaptionname{USenglish}{\fromname}{of}%
+ \renewcaptionname{USenglish}{\refereename}{Reviewer}%
+}%
+\newcommand*{\KITurl}{www.kit.edu}
+%</KIT>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\presentedbyname}
+% \changes{v0.5}{2016/06/21}{changed value for `WWUM'}%^^A
+% \changes{v0.5a}{2016/06/22}{fixed \texttt{swissgerman} instead of
+% \texttt{swiss}}%^^A
+% \changes{v0.5b}{2018/08/31}{changes have to be delayed}%^^A
+% \begin{macrocode}
+%<*WWUM>
+\NowButAfterBeginDocument
+{%
+ \providecaptionname{german,ngerman,austrian,naustrian,
+ swissgerman,nswissgerman}{\presentedbyname}{vorgelegt von}%
+ \scr@ifundefinedorrelax{captionsgerman}{}{%
+ \renewcaptionname{german}{\presentedbyname}{vorgelegt von}%
+ }%
+ \scr@ifundefinedorrelax{captionsngerman}{}{%
+ \renewcaptionname{ngerman}{\presentedbyname}{vorgelegt von}%
+ }%
+ \scr@ifundefinedorrelax{captionsaustrian}{}{%
+ \renewcaptionname{austrian}{\presentedbyname}{vorgelegt von}%
+ }%
+ \scr@ifundefinedorrelax{captionsnaustrian}{}{%
+ \renewcaptionname{naustrian}{\presentedbyname}{vorgelegt von}%
+ }%
+ \scr@ifundefinedorrelax{captionsswissgerman}{}{%
+ \renewcaptionname{swissgerman}{\presentedbyname}{vorgelegt von}%
+ }%
+ \scr@ifundefinedorrelax{captionsnswissgerman}{}{%
+ \renewcaptionname{nswissgerman}{\presentedbyname}{vorgelegt von}%
+ }%
+}
+%</WWUM>
+% \end{macrocode}
+% \end{macro}
+%
+% While style initialization, something may change:
+% \begin{macrocode}
+\renewcommand*{\inittitle}{%
+% \end{macrocode}
+% style \File{KOMAScript} redefines some footnote macros:
+% \begin{macrocode}
+%<*KOMAScript>
+ \let\footnotesize\small
+ \let\footnoterule\relax
+ \let\footnote\thanks
+ \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
+ \let\@oldmakefnmark\@makefnmark
+ \renewcommand*{\@makefnmark}{\rlap\@oldmakefnmark}%
+%</KOMAScript>
+% \end{macrocode}
+% styles \File{DHBW}, \File{TU-DD}, \File{TU-HH}, and \File{KIT} sets some
+% variable if not already done
+% \begin{macrocode}
+%<*DHBW|TU-DD|TU-HH|KIT|WWUM>
+ \ifx\@university\@empty
+ \university{%
+%<DHBW> Dualen Hochschule%
+%<TU-DD> Technische\nobreakspace Universit\"at\nobreakspace Dresden%
+%<TU-HH> Technische\nobreakspace Universit\"at\nobreakspace
+%<TU-HH> Hamburg-Harburg%
+%<KIT> KIT -- \KITlongname
+%<WWUM> Westf\"alischen Wilhelms-Universit\"at M\"unster%
+ }%
+ \fi
+ \ifx\@place\@empty
+ \place{%
+%<DHBW> Baden-W\"urttemberg%
+%<TU-DD> Dresden%
+%<TU-HH> Hamburg%
+%<KIT> Karlsruhe%
+%<*WWUM>
+ \PackageWarning{uni-titlepage}{Birth place missing.\MessageBreak
+ Style `WWUM' needs the birth place of\MessageBreak
+ the student}%
+%</WWUM>
+ }
+ \fi
+%<*DHBW>
+ \ifx\@mainlogo\@empty
+ \IfFileExists{DHBW_d_MOS_195x95_rgb_300.jpg}{%
+ \scr@ifundefinedorrelax{includegraphics}{%
+ \if@atdocument\else\RequirePackage{graphicx}\fi
+ }{}%
+ \scr@ifundefinedorrelax{includegraphics}{}{%
+ \mainlogo{%
+ \includegraphics[width=57mm,height=27mm]%
+ {DHBW_d_MOS_195x95_rgb_300.jpg}%
+ }%
+ }%
+ }{}%
+ \fi
+ \ifx\@titlehead\@empty
+ \titlehead{\hspace*{\fill}\@mainlogo}%
+ \fi
+ \ifx\@titlepagefont\@empty
+ \renewcommand*{\@titlepagefont}{\normalfont\sffamily}%
+ \fi
+%</DHBW>
+%<*KIT>
+ \ifx\@homepage\@empty
+ \homepage{\KITurl}%
+ \fi
+ \ifx\@mainlogo\@empty
+% \end{macrocode}
+% \changes{v0.5f}{2021/07/29}{autodetect several logo picture files}
+% Try to detect one of the suitable PNGs of the KIT logo from
+% \url{https://de.wikipedia.org/wiki/Datei:Logo_KIT.svg}.
+% \begin{macrocode}
+ \def\KIT@logo{KITLogo_RGB.pdf}\IfFileExists{\KIT@logo}{}{%
+ \def\KIT@logo{2560px-Logo_KIT.svg.png}\IfFileExists{\KIT@logo}{}{%
+ \def\KIT@logo{2000px-Logo_KIT.svg.png}\IfFileExists{\KIT@logo}{}{%
+ \def\KIT@logo{1280px-Logo_KIT.svg.png}\IfFileExists{\KIT@logo}{}{%
+ \def\KIT@logo{1024px-Logo_KIT.svg.png}\IfFileExists{\KIT@logo}{}{%
+ \def\KIT@logo{1000px-Logo_KIT.svg.png}\IfFileExists{KIT@logo}{}{%
+ \def\KIT@logo{800px-Logo_KIT.svg.png}\IfFileExists{\KIT@logo}{}{%
+ \def\KIT@logo{640px-Logo_KIT.svg.png}\IfFileExists{\KIT@logo}{}{%
+ \def\KIT@logo{500px-Logo_KIT.svg.png}%
+ }}}}}}}}%
+ \IfFileExists{\KIT@logo}{%
+ \scr@ifundefinedorrelax{includegraphics}{%
+ \if@atdocument\else\RequirePackage{graphicx}\fi
+ }{}%
+ \scr@ifundefinedorrelax{includegraphics}{}{%
+ \mainlogo{%
+ \includegraphics[width=40mm,height=18.5mm]{\KIT@logo}%
+ }%
+ }%
+ }{}%
+ \fi
+ \ifx\@titlehead\@empty
+ \titlehead{\@mainlogo\hspace*{\fill}}%
+ \fi
+ \ifx\@titlepagefont\@empty
+ \renewcommand*{\@titlepagefont}{\usefont{T1}{phv}{m}{n}}%
+ \fi
+%</KIT>
+%<*WWUM>
+ \ifx\@titlepagefont\@empty
+ \renewcommand*{\@titlepagefont}{\normalfont\large}%
+ \fi
+%</WWUM>
+%</DHBW|TU-DD|TU-HH|KIT|WWUM>
+% \end{macrocode}
+% style \File{Markus-2} uses it's own pagestyle at the first title page
+% \begin{macrocode}
+%<*Markus&2>
+ \def\ps@maintitle{%
+ \ps@empty
+ \def\@oddhead{%
+ \parbox[b][\headheight][b]{\hsize}{\@titlepagefont{%
+ \csname @titlehead\endcsname}}%
+ }%
+ \let\@evenhead\@oddhead
+ }%
+%</Markus&2>
+% \end{macrocode}
+% styles \File{JT-Aufsaetze} and \File{JT-Geschichte} set some font defaults:
+% \begin{macrocode}
+%<*JT-Aufsaetze|JT-Geschichte>
+ \ifx\@titlepagefont\@empty
+%<JT-Aufsaetze> \renewcommand*{\@titlepagefont}{\normalfont\Huge\itshape}%
+%<*JT-Geschichte>
+ \scr@ifundefinedorrelax{lsstyle}{%
+ \renewcommand*{\@titlepagefont}{\normalfont\let\@tpf@extra\scshape}%
+ }{%
+ \renewcommand*{\@titlepagefont}{%
+ \normalfont\def\@tpf@extra{\lsstyle\MakeUppercase}%
+ }%
+ }
+%</JT-Geschichte>
+ \fi
+ \ifx\titlefont\@empty
+ \renewcommand*{\titlefont}{\normalfont}%
+ \fi
+%</JT-Aufsaetze|JT-Geschichte>
+%<*JT-Typography>
+ \ifx\@titlepagefont\@empty
+ \renewcommand*{\@titlepagefont}{\normalfont\sffamily\bfseries}%
+ \fi
+%</JT-Typography>
+% \end{macrocode}
+% \begin{macrocode}
+}
+% \end{macrocode}
+%
+% \begin{macro}{\publishers}
+% \KOMAScript{} defines this macro. But we use \verb|\publisher| instead.
+% \begin{macrocode}
+%<KOMAScript>\providecommand*{\publishers}{\publisher}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makemaintitle}
+% \changes{v0.2a}{2012/03/20}{\texttt{Markus-2}: \cs{leavevmode} added
+% before \cs{subject@font} to avoid line break after \cs{subject@font}
+% using package \textsf{color} or \textsf{xcolor}}
+% This differs from style to style:
+% \begin{macrocode}
+\renewcommand*{\makemaintitle}{%
+ \begin{%
+%<DHBW|TU-DD|TU-HH|KIT> fullsizetitle}
+%<*KOMAScript|Markus|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography|WWUM>
+ titlepage}
+%</KOMAScript|Markus|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography|WWUM>
+ \setlength{\parskip}{\z@}%
+ \setlength{\parindent}{\z@}%
+ \setlength{\parfillskip}{\z@\@plus 1fil}%
+ \linespread{1}\selectfont
+ \@titlepagefont
+%<*DHBW>
+ \vspace*{12mm}%
+ \centering
+ \begin{minipage}[t][\dimexpr\vsize-36mm\relax]{\dimexpr\hsize-40mm\relax}%
+ \@titlehead\par
+ \centering
+ \Large
+ \vfill
+ {\titlefont{\Large\@title}}\par
+ \vfill
+ {\subject@font{\Large\@subject\par}}%
+ \vfill
+ \presentationinformationDHBW\par
+ \vfill
+ \fromname\\[.5\baselineskip]
+ \@author\par
+ \vfill
+ \@date\par
+ \vfill
+ \begin{tabular}{*2{p{.5\dimexpr\linewidth-3\tabcolsep\relax}}@{}}
+ \durationname & \@duration \\[.5ex]
+ \matriculationnumbername, \coursename & \@matriculationnumber,
+ \@course\\[.5ex]
+ \companyname & \@company \\[.5ex]
+ \advisorname{} \ofthename{} \companyname & \@advisor \\[.5ex]
+ \refereename{} \ofthename{} \@university & \@referee
+ \end{tabular}
+ \end{minipage}
+%</DHBW>
+%<*KOMAScript>
+ \ifx\@titlehead\@empty \else
+ \begin{minipage}[t]{\textwidth}%
+ \@titlehead
+ \end{minipage}\par
+ \fi
+ \null\vfill
+ \begingroup
+ \centering
+ \ifx\@subject\@empty \else
+ {\subject@font{\@subject \par}}%
+ \vskip 3em
+ \fi
+ {\titlefont{\huge \@title\par}}%
+ \vskip 1em
+ {\ifx\@subtitle\@empty\else\@subtitlefont{\@subtitle}\par\fi}%
+ \vskip 2em
+ {\Large \lineskip 0.75em
+ \begin{tabular}[t]{c}
+ \@author
+ \end{tabular}\par
+ }%
+ \vskip 1.5em
+ {\Large \@date \par}%
+ \vskip \z@ \@plus3fill
+ {\Large \@publisher \par}%
+ \vskip 3em
+ \endgroup
+ \@thanks
+ \vfill\null\vskip-\baselineskip
+%</KOMAScript>
+%<*TU-DD>
+ \rule{0pt}{5mm}\par
+ \ifblackborder
+ \leavevmode\hskip 1cm
+ \setlength{\fboxrule}{1pt}%
+ \expandafter\fbox
+ \else
+ \expandafter\mbox
+ \fi
+ {%
+ \begin{minipage}[t][\dimexpr\textheight-2.5cm\relax][t]{%
+ \dimexpr\linewidth\ifblackborder-3cm\fi\relax}
+ \sffamily
+ \centering
+ \vskip 3cm
+ {\fontsize{28pt}{34pt}\selectfont
+ \strut\ignorespaces\@university\unskip\strut\\}
+ {\fontsize{24pt}{28pt}\selectfont
+ \strut\ignorespaces\@faculty\unskip\strut\\}
+ {\fontsize{20pt}{24pt}\selectfont
+ \strut\ignorespaces\@chair\unskip\strut\\
+ \strut\ignorespaces\@professor\unskip\strut\\
+ \vfill
+ {\bfseries\strut\ignorespaces\@title\unskip\strut\\}
+ \strut\ignorespaces\@subject\unskip\strut\\
+ \vfill
+ \raggedright
+ \hspace*{.25\linewidth}%
+ \strut\ignorespaces\presentedbyname\unskip\strut\\
+ \hspace*{.25\linewidth}\quad
+ \begin{tabular}{@{}l@{}}
+ \strut\ignorespaces\@author\unskip\strut\\
+ \strut\ignorespaces\@discipline\unskip\strut\\
+ \strut\ignorespaces\@matriculationnumber\unskip\strut\\
+ \end{tabular}\\
+ \vskip\baselineskip
+ \hspace*{.25\linewidth}%
+ \strut\ignorespaces\advisorname\unskip:\strut\\
+ \hspace*{.25\linewidth}\quad
+ \begin{tabular}{@{}l@{}}
+ \strut\ignorespaces\@advisor\unskip\strut\\
+ \end{tabular}
+ \vskip2\baselineskip
+ \hspace*{.25\linewidth}%
+ \strut\ignorespaces\@place,\nobreakspace\thename\nobreakspace\@date
+ \par}
+ \vspace*{5mm}
+ \end{minipage}
+ }%
+%</TU-DD>
+%<*TU-HH>
+ \sffamily
+ \centering
+ \vspace{5cm}
+ {\LARGE\bfseries\strut\ignorespaces\@title\\}
+ {\Large\strut\ignorespaces\@subtitle\\}
+ \vspace{2.5cm}
+ {\Large\presentationinformationTUHH\\}
+ \vspace{2.5cm}
+ {\Large\strut\ignorespaces\fromname\\
+ \strut\ignorespaces\@author\\}
+ \vspace{2.5cm}
+ {\Large\strut\ignorespaces\fromplacename\\
+ \strut\ignorespaces\@place\\}
+ \vspace{2.5cm}
+ {\Large\@date}
+%</TU-HH>
+%<*WWUM>
+ \centering
+ \@chair\\
+ \vspace{2cm}
+ \@title\\
+ \vfill
+ \presentationinformationWWUM\\
+ \vfill
+ \presentedbyname\\
+ \@author\\
+ \ifx\@place\@empty\else\fromplacename{} \@place\\\fi
+ --\,\the\year\,--
+%</WWUM>
+%<*Markus&1>
+ \raggedright
+ {\subject@font{%
+ \large\strut\ignorespaces\@subject\par\vskip 2\baselineskip}}%
+ {\titlefont{\LARGE\strut\ignorespaces\@title\par}}%
+ {\@subtitlefont{%
+ \large\vskip.5\baselineskip\strut\ignorespaces\@subtitle\par}}%
+ \vfill
+ {\csname @datefont\endcsname{\large\strut\ignorespaces\@date\par}}%
+%</Markus&1>
+%<*Spacer|Markus&2>
+ \raggedright
+%<Markus&2> \thispagestyle{maintitle}%
+ \raisebox{0pt}[\ht\strutbox][\dimexpr\textheight-\ht\strutbox\relax]{%
+ \rule[\dimexpr-.667\headsep-\textheight\relax]
+ {\title@rulewidth}
+ {\dimexpr\textheight+2\headsep\relax}\kern\title@rulesep}%
+ \parbox[t][\textheight][t]
+ {\dimexpr \textwidth-\title@rulewidth-\title@rulesep\relax}{%
+ \raggedright
+%<*Spacer>
+ \ifx\@titlehead\@empty\else
+% \end{macrocode}
+% \changes{v0.4a}{2012/09/05}{fix influence of height of titlehead to
+% vertical alignment of rule}
+% \begin{macrocode}
+ \raisebox{\dimexpr\ht\strutbox-\totalheight\relax}{%
+ \parbox[t]{\linewidth}{\@titlehead}%
+ }\par
+ \vskip 2\baselineskip
+ \fi
+%</Spacer>
+ {\leavevmode\subject@font{%
+ \large\strut\ignorespaces\@subject\par\vskip 2\baselineskip}}%
+ {\def\and{\\}\csname @authorfont\endcsname{\large\@author}\par
+ \vskip .5\baselineskip}%
+ {\titlefont{\LARGE\strut\ignorespaces\@title\par}}%
+ {\@subtitlefont{%
+ \large\vskip.5\baselineskip\strut\ignorespaces\@subtitle\par}}%
+ \vfill
+ {\csname @publisherfont\endcsname{\large\@publisher\par}}%
+ {\csname @datefont\endcsname{\large\strut\ignorespaces\@date\par}}%
+ }%
+%</Spacer|Markus&2>
+%<*KIT>
+ \setlength{\unitlength}{1mm}%
+ \begin{picture}(0,0)
+ \put(15,-12){%
+ \line(1,0){\dimexpr\paperwidth-37mm\relax\@gobble}%
+ }%
+ \put(\dimexpr\paperwidth-22mm\@gobble,-19){\oval(14,14)[rt]}%
+ \put(\dimexpr\paperwidth-15mm\@gobble,-19){%
+ \line(0,-1){\dimexpr\paperheight-37mm\relax\@gobble}%
+ }%
+ \put(22,-\dimexpr\paperheight-18mm\relax\@gobble){%
+ \line(1,0){\dimexpr\paperwidth-37mm\relax\@gobble}%
+ }%
+ \put(22,-\dimexpr\paperheight-25mm\relax\@gobble){\oval(14,14)[lb]}%
+ \put(15,-\dimexpr\paperheight-25mm\relax\@gobble){%
+ \line(0,1){\dimexpr\paperheight-37mm\relax\@gobble}%
+ }%
+ \end{picture}\par
+ \vskip\dimexpr -\baselineskip+25mm\relax
+ \hspace*{27mm}%
+ \begin{minipage}[t][\dimexpr\paperheight-68mm\relax][t]
+ {\dimexpr\paperwidth-54mm\relax}
+ \raggedright\@titlehead\par
+ \centering
+ \vskip 25mm
+ {\@titlepagefont\@title\par}%
+ \vskip 20mm
+ {\Large\@subject\\\fromname\par}
+ \vskip 1cm
+ {\huge\@author\par}
+ \vskip 1cm
+ {\Large\presentationinformationKIT\par}
+ \vskip 2cm
+ {\Large
+ \let\@tempa\refereename
+ \def\@tempb{1}%
+ \def\and{%
+ \\
+ \xdef\@tempb{\the\numexpr\@tempb+1\relax}%
+ \expandafter\ordinal\expandafter{\@tempb}~\@tempa: &
+ }%
+ \begin{tabular}{@{}lr@{}}
+ \refereename: & \@referee \\
+ \global\let\@tempa\advisorname\xdef\@tempb{1}%
+ \advisorname: & \@advisor \\
+ \end{tabular}\par
+ }
+ \vfill
+ {\large \durationname: \@duration\par}
+ \end{minipage}
+ \vskip 35mm
+ \hspace*{27mm}\makebox[\dimexpr\paperwidth-56mm\relax]{%
+ \tiny\@university\hfill\large\textbf{\@homepage}%
+ }%
+%</KIT>
+%<*JT-Aufsaetze>
+ \centering
+ \@author\\
+ \begin{picture}(\title@rulewidth\@gobble,
+ \dimexpr .3ex+1pt+\title@rulesep\relax\@gobble)
+ \put(0,\dimexpr .15ex+.5pt+\title@rulesep\relax\@gobble){%
+ \linethickness{.3ex}\line(1,0){\title@rulewidth\@gobble}%
+ }%
+ \put(0,0){%
+ \linethickness{1pt}\line(1,0){\title@rulewidth\@gobble}%
+ }%
+ \end{picture}\\[\baselineskip]
+ {\titlefont{\@title\par}}%
+ \vfill
+ \@publisher
+%</JT-Aufsaetze>
+%<*JT-Geschichte>
+ \centering
+ \large{\@tpf@extra{\@author\unskip\strut}}\\[\dp\strutbox]
+ {\titlefont{\Huge\@title\par}}
+ \vfill
+ \begin{picture}(\title@rulewidth\@gobble,
+ \dimexpr 4pt+1pt+\title@rulesep\relax\@gobble)
+ \put(0,\dimexpr 2pt+.5pt+\title@rulesep\relax\@gobble){%
+ \linethickness{1pt}\line(1,0){\title@rulewidth\@gobble}%
+ }%
+ \put(0,0){%
+ \linethickness{4pt}\line(1,0){\title@rulewidth\@gobble}%
+ }%
+ \end{picture}\\[\dp\strutbox]
+ \@tpf@extra{\@publisher}%
+ \ifx\@place\@empty\else
+ \unskip\@tpf@extra{\strut}\\[\dp\strutbox]\@tpf@extra{\@place}%
+ \fi
+%</JT-Geschichte>
+%<*JT-Typography>
+ \raggedright
+ {\Large\MakeUppercase{\@author}\\[\baselineskip]}
+ {\titlefont{\Huge\MakeUppercase{\@title}\unskip\strut\\}}
+ {\@subtitlefont{\normalsize\MakeUppercase{\@subtitle}\\}}
+ \vfill
+ {\normalsize\MakeUppercase{\@place}\ifx\@place\@empty\else\enskip\fi
+ {\LARGE\MakeUppercase{\@date}}
+ \ifx\@publisher\@empty\else\unskip\strut\\[1.5\baselineskip]
+ \MakeUppercase{\@publisher}%
+ \fi}
+%</JT-Typography>
+ \end{%
+%<DHBW|TU-DD|TU-HH|KIT> fullsizetitle}
+%<*KOMAScript|Markus|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography|WWUM>
+ titlepage}
+%</KOMAScript|Markus|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography|WWUM>
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Some of the styles need additional string options for the back of the main
+% title. These are more structural than logical, so we do not define those
+% globally!
+% \begin{option}{uppertitleback}
+% \begin{macro}{\uppertitleback}
+% \begin{macro}{\@uppertitlebacke}
+% \begin{option}{lowertitleback}
+% \begin{macro}{\lowertitleback}
+% \begin{macro}{\@lowertitleback}
+% \begin{macrocode}
+%<*KOMAScript|Markus|Spacer>
+\providecommand*{\@uppertitleback}{}
+\providecommand{\uppertitleback}[1]{\gdef\@uppertitleback{#1}}
+\DefineFamilyKey[%
+%<KOMAScript> KOMAScript%
+%<Markus&1> Markus-1%
+%<Markus&2> Markus-2%
+%<Spacer> Spacer%
+%<JT-Aufsaetze> JT-Aufsaetze%
+%<JT-Geschichte> JT-Geschichte%
+%<JT-Geschichte> JT-Typography%
+]{title}{uppertitleback}{\uppertitleback{#1}\FamilyKeyStateProcessed}
+\providecommand*{\@lowertitleback}{}
+\providecommand{\lowertitleback}[1]{\gdef\@lowertitleback{#1}}
+\DefineFamilyKey[%
+%<KOMAScript> KOMAScript%
+%<Markus&1> Markus-1%
+%<Markus&2> Markus-2%
+%<Spacer> Spacer%
+%<JT-Aufsaetze> JT-Aufsaetze%
+%<JT-Geschichte> JT-Geschichte%
+%<JT-Geschichte> JT-Typography%
+]{title}{lowertitleback}{\lowertitleback{#1}\FamilyKeyStateProcessed}
+%</KOMAScript|Markus|Spacer>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{option}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{macro}{\makemaintitleback}
+% \changes{v0.5e}{2019/11/20}{\cs{ifstr} in \textsf{scrbase} renamed to
+% \cs{Ifstr}}
+% Only some of the styles define this:
+% \begin{macrocode}
+%<*KOMAScript|Markus|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography>
+\renewcommand*{\makemaintitleback}{%
+ \begin{titlepage}
+ \begin{minipage}[t]{\textwidth}
+ \@titlepagefont{\@uppertitleback}%
+ \end{minipage}\par
+ \vfill
+ \begin{minipage}[b]{\textwidth}
+ \@titlepagefont{\@lowertitleback}%
+ \end{minipage}
+ \end{titlepage}
+}
+%</KOMAScript|Markus|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography>
+%<*TU-HH>
+\renewcommand*{\makemaintitleback}{%
+ \begin{titlepage}
+ \vspace*{\fill}
+ \iffinal
+ \@tempcnta\z@
+ \def\and{%
+ \par\advance\@tempcnta by\@ne
+ \@hangfrom{%
+ \expandafter\ordinal\expandafter{\the\@tempcnta}~\refereename:\enskip
+ }%
+ }\and\@referee
+ \fi
+ \vskip 1cm
+ \iffinal
+ \@hangfrom{\oralexaminationdatename:\enskip}{\@oralexaminationdate}%
+ \fi
+ \end{titlepage}
+}
+%</TU-HH>
+%<*WWUM>
+\renewcommand*{\makemaintitleback}{%
+ \begin{titlepage}
+ \vspace*{\fill}
+ \noindent
+ \@tempcnta\z@
+ \def\arraystretch{2}%
+ \newcommand*{\test@malefemale}[1][m]{%
+ \global\advance\@tempcnta by\@ne
+ \Ifstr{##1}{f}{\def\fe@male{female}}{\def\fe@male{male}}%
+ \csname \fe@male ordinal\endcsname{\@tempcnta}\space
+ \csname \fe@male refereename\endcsname: &
+ \def\and{\\\test@malefemale}%
+ }%
+ \begin{tabular}{@{}ll@{}}
+ \chairmanname: & \@professor \\
+ \expandafter\test@malefemale
+ \@referee \\
+ \oralexaminationdatename: & \@oralexaminationdate
+ \ifx\examinationdatename\@empty\else
+ \\\examinationdatename: &
+ \fi
+ \\
+ \end{tabular}
+ \end{titlepage}
+}
+%</WWUM>
+% \end{macrocode}
+% \end{macro}
+%
+% Some of the styles need additional string options for the pre title. These
+% are more structural than logical, so we do not define those globally!
+% \begin{option}{extratitle}
+% \begin{macro}{\extratitle}
+% \begin{macro}{\@extratitle}
+% \begin{macrocode}
+%<*KOMAScript|Markus&2|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography>
+\providecommand*{\@extratitle}{}
+\providecommand{\extratitle}[1]{\gdef\@extratitle{#1}}
+\DefineFamilyKey[%
+%<KOMAScript> KOMAScript%
+%<Markus&2> Markus-2%
+%<Spacer> Spacer%
+%<JT-Aufsaetze> JT-Aufsaetze%
+%<JT-Geschichte> JT-Geschichte%
+%<JT-Typography> JT-Typography%
+]{title}{extratitle}{\extratitle{#1}\FamilyKeyStateProcessed}
+%</KOMAScript|Markus&2|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{option}
+%
+% \begin{macro}{\makepretitle}
+% \changes{v0.2a}{2012/03/20}{\texttt{Markus-1}: Usage of
+% \cs{@titlepagefont} fixed}
+% \changes{v0.4b}{2012/09/18}{\texttt{Markus-1}: publisher page may be
+% omitted}
+% \begin{macro}{\makepretitleback}
+% Only some styles have pre titles:
+% \begin{macrocode}
+%<*KOMAScript|Markus&2|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography>
+\renewcommand*{\makepretitle}{%
+ \ifx\@extratitle\@empty\else
+ \begin{titlepage}
+ \noindent\@extratitle
+ \end{titlepage}
+ \fi
+}%
+%</KOMAScript|Markus&2|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography>
+%<*Markus&1>
+\renewcommand*{\makepretitle}{%
+ \ifx\@publisher\@empty\else
+ \begin{titlepage}
+ \raggedleft
+ {\@titlepagefont{%
+ \large\strut\ignorespaces\@publisher\par}}%
+ \end{titlepage}
+ \fi
+}
+%</Markus&1>
+%<*WWUM>
+\renewcommand*{\makepretitle}{%
+ \begin{fullsizetitle}
+ \@titlepagefont
+ \vspace*{.33\vsize}%
+
+ \centering
+ \@author\\[1ex]
+ \@title\\[1ex]
+ \the\year
+ \end{fullsizetitle}
+}
+%</WWUM>
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%<*KOMAScript|Markus&2|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography>
+\renewcommand*{\makepretitleback}{%
+ \ifx\@extratitle\@empty\else\begin{titlepage}\null\end{titlepage}\fi
+}
+%</KOMAScript|Markus&2|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography>
+%<*Markus&1>
+\renewcommand*{\makepretitleback}{%
+ \ifx\@author\@empty\else
+ \ifx\@publisher\@empty\begin{titlepage}\end{titlepage}\fi
+ \begin{titlepage}
+ \raggedleft
+ {\@titlepagefont{%
+ \large\null\vskip 2\baselineskip
+ \LARGE\strut{\def\and{\hspace{1em}\linebreak[3]}%
+ \csname @authorfont\endcsname{\large\ignorespaces\@author}\par}}}%
+ \end{titlepage}
+ \fi
+}
+%</Markus&1>
+%<*WWUM>
+\renewcommand*{\makepretitleback}{%
+ \if@twoside\begin{titlepage}\null\end{titlepage}\fi
+}
+%</WWUM>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makeposttitle}
+% \begin{macro}{\makeposttitleback}
+% And only some styles provides one more title page with dedication.
+% \begin{macrocode}
+%<*KOMAScript|Markus|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography>
+\renewcommand*{\makeposttitle}{%
+ \ifx\@dedication\@empty\else
+ \begin{titlepage}
+ \null\vfill
+ {\centering\csname @dedicationfont\endcsname{\@dedication \par}}%
+ \vskip \z@ \@plus 3fill
+ \end{titlepage}
+ \fi
+}
+\renewcommand*{\makeposttitleback}{%
+ \ifx\@dedication\@empty\else\begin{titlepage}\null\end{titlepage}\fi
+}
+%</KOMAScript|Markus|Spacer|JT-Aufsaetze|JT-Geschichte|JT-Typography>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \iffalse meta-comment
+%</driver>
+% \fi^^A meta-comment
+%
+% \subsection{The Examples and the Manual}
+% \label{sec:The-Examples-and-the-Manual}
+% \iffalse meta-comment
+%<*doc|README>
+%<*example>
+% \fi^^A meta-comment
+% \begin{macrocode}
+\documentclass[a4paper,pagesize]{scrbook}
+\usepackage[utf8]{inputenc}
+\usepackage[ngerman]{babel}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+%<JT-Geschichte>\usepackage{microtype}
+%<TU-HH|TU-DD>\usepackage{mathpazo}
+%<TU-HH|TU-DD>\usepackage[scaled]{helvet}
+%<DHBW|Spacer|KIT>\usepackage[demo]{graphicx}% remove option demo if you have the logo
+\usepackage{xcolor}
+%<JT-Geschichte|JT-Typography>\colorlet{RED}{red}% because of \MakeUppercase{\textcolor{red}{…}}
+\usepackage{uni-titlepage}
+\begin{document}
+%<*DHBW>
+\TitlePageStyle{DHBW}
+\makeatletter\providecommand*{\@titlepagefont}{\normalfont\sffamily}\makeatother
+\setkomafont{subject}{\sffamily\bfseries}
+\maketitle[%
+ titlefont=\sffamily,
+ mainlogo=\textcolor{red}{{%
+ % You may add a company logo here!
+ % NOTE: The original logo has a large white border!
+ \includegraphics[width=57mm,height=27mm]%
+ {DHBW_d_MOS_195x95_rgb_300.jpg}%
+ }},
+ % You may additionally change titlehead. The original definition of
+ % titlehead is:
+ titlehead={\hspace*{\fill}\usetitleelement{mainlogo}},
+ title=\textcolor{red}{Bachelorarbeitsthema},
+ subject=\textcolor{red}{BACHELORARBEIT},
+ academicgrade=\textcolor{red}{Bachelor of Engineering},
+ discipline=\textcolor{red}{Studiengang},
+ place={Baden-Württemberg \textcolor{red}{Stadt}},
+ student=\textcolor{red}{Vorname Nachname},
+ duration=\textcolor{red}{12 Wochen},
+ matriculationnumber=\textcolor{red}{Matrikelnummer},
+ course=\textcolor{red}{Kurskürzel},
+ company=\textcolor{red}{Firmenname, Stadt},
+ advisor=\textcolor{red}{Titel Vorname Nachname},
+ referee=\textcolor{red}{Titel Vorname Nachname},
+ date=\textcolor{red}{Abgabedatum}
+]
+%</DHBW>
+%<*TU-DD>
+\TitlePageStyle{TU-DD}
+\maketitle[%
+ title=\textcolor{red}{Titel im Stil \texttt{TU-DD}},
+ university=\textcolor{red}{%
+ Technische\nobreakspace Universit\"at\nobreakspace Dresden},%
+ faculty=\textcolor{red}{Fakultät Wirtschafswissenschaften},
+ chair=\textcolor{red}{SAP-Stiftungslehrstuhl für\\
+ Entrepreneurship und Innovation},
+ professor=\textcolor{red}{Prof.\,Dr.\,Michael Schefcyk},
+% subject=diploma, % one of: project, seminar, studentresearch,
+% % diploma, degree, master, bachelor, or ...
+ subject=\textcolor{red}{Seminararbeit\\(bzw. Diplomarbeit)},% ... direct value
+ student=\textcolor{red}{Vorname und Name},
+ discipline=\textcolor{red}{Studienrichtung},
+ matriculationnumber=\textcolor{red}{Matrikel-Nr.},
+ advisor=\textcolor{red}{(mit akadem. Grad, Vor- und Zuname)},
+ date=\textcolor{red}{(Datum der Abgabe)}
+]
+
+\TitleOptions{pagenumber=1,blackborder}% same with `Trauerrand'
+\maketitle% everything else, like above
+%</TU-DD>
+%<*KOMAScript>
+\TitlePageStyle[pagenumber=1]{KOMAScript}
+\maketitle[
+ extratitle=\textcolor{red}{Das ist ein Schmutztitel im Stil \texttt{KOMAScript}},
+ titlehead=\textcolor{red}{Den Kopfbereich kann man auf diese Weise füllen.},
+ subject=\textcolor{red}{Eine Klassifizierung der Arbeit},
+ title=\textcolor{red}{Titel im Stil \texttt{KOMAScript}},
+ subtitle=\textcolor{red}{Untertitel},
+ publisher=\textcolor{red}{Einen Verlag kann man ebenfalls angeben},
+ uppertitleback=\textcolor{red}{Oberer Bereich der Rückseite des Haupttitels im Stil
+ \texttt{KOMAScript}.},
+ lowertitleback=\textcolor{red}{Unterer Bereich der Rückseite des Haupttitels im Stil
+ \texttt{KOMAScript}.},
+ dedication=\textcolor{red}{Eine Widmung im Stil \texttt{KOMAScript}}
+]
+%</KOMAScript>
+%<*TU-HH>
+\TitlePageStyle[pagenumber=1]{TU-HH}
+\maketitle[%
+ final,
+ title=\textcolor{red}{Titel im Stil \texttt{TU-HH}},
+ university=\textcolor{red}{Technischen Universität Hamburg-Harburg},
+ subject=degree,
+ academicgrade=\textcolor{red}{Doktor der Naturwissenschaften (Dr.\,rer.\,nat\,)},
+ place=\textcolor{red}{(Geburtsort)},
+ date=\textcolor{red}{(aktuelles Jahr)},
+ referee=\textcolor{red}{Name des ersten Gutachters\protect\and Name des zweiten
+ Gutachters},
+ oralexaminationdate=\textcolor{red}{29. Februar 2009}
+]
+%</TU-HH>
+%<*Markus|Spacer>
+% Maybe we should define one more option for this:
+\setkomafont{subject}{\normalfont\sffamily}% because of KOMA-Script class
+\setkomafont{title}{\normalfont\sffamily}% because of KOMA-Script class
+%<*1>
+\TitlePageStyle[pagenumber=1]{Markus-1}
+\maketitle[%
+ titlepagefont={\normalfont\sffamily},% to show is without KOMA-Script class
+ title=\textcolor{red}{Titel im Stil \texttt{Markus-1}},
+ subject=\textcolor{red}{Eine Klassifizierung der Arbeit},
+ subtitle=\textcolor{red}{Untertitel},
+ publisher=\textcolor{red}{Verlag},
+ uppertitleback=\textcolor{red}{Oberer Bereich der Rückseite des Haupttitels
+ im Stil \texttt{Markus-1}.},
+ lowertitleback=\textcolor{red}{Unterer Bereich der Rückseite des Haupttitels
+ im Stil \texttt{Markus-1}.},
+ dedication=\textcolor{red}{Eine Widmung im Stil \texttt{Markus-1}},
+ author=\textcolor{red}{Markus~Kohm\protect\and Sonst~Jemand}
+]
+%</1>
+%<*2|Spacer>
+%<2>\TitlePageStyle[pagenumber=1]{Markus-2}
+%<Spacer>\TitlePageStyle[pagenumber=1]{Spacer}
+\maketitle[%
+ rulewidth=2pt,
+ extratitle=\textcolor{red}{Das ist ein Schmutztitel im Stil \texttt{%
+%<2> Markus-2}},
+%<Spacer> Spacer}},
+%<*Spacer>
+ titlehead=\textcolor{red}{\includegraphics{Logo}},
+%</Spacer>
+ title=\textcolor{red}{Titel im Stil \texttt{%
+%<2> Markus-2}},
+%<Spacer> Spacer}},
+ subject=\textcolor{red}{Eine Klassifizierung der Arbeit},
+ subtitle=\textcolor{red}{Untertitel},
+ publisher=\textcolor{red}{Verlag},
+ uppertitleback=\textcolor{red}{Oberer Bereich der Rückseite des Haupttitels
+ im Stil \texttt{%
+%<2> Markus-2}.},
+%<Spacer> Spacer}.},
+ lowertitleback=\textcolor{red}{Unterer Bereich der Rückseite des Haupttitels
+ im Stil \texttt{%
+%<2> Markus-2}.},
+%<Spacer> Spacer}.},
+ dedication=\textcolor{red}{Eine Widmung im Stil \texttt{%
+%<2> Markus-2}},
+%<Spacer> Spacer}},
+ author=\textcolor{red}{Markus~Kohm}
+]
+%</2|Spacer>
+%</Markus|Spacer>
+%<*KIT>
+\TitlePageStyle{KIT}
+\maketitle[%
+ mainlogo={\textcolor{red}{%
+ \includegraphics[width=40mm,height=18.5mm]{KITLogo_RGB}}},%
+ % You may additionally change titlehead. Original definition of titlehead
+ % is:
+ titlehead={\usetitleelement{mainlogo}\hspace*{\fill}},%
+ title=\textcolor{red}{Titel der Arbeit\\im Stil \texttt{KIT}},%
+ subject=\textcolor{red}{Klassifizierung der Arbeit},%
+ author=\textcolor{red}{Markus~Kohm},%
+ faculty=\textcolor{red}{Fakultät für Informatik},%
+ chair=\textcolor{red}{%
+ Institute for Program Structures\\and Data Organization (IPA)},%
+ advisor={\textcolor{red}{Titel Vorname Nachname}\and
+ \textcolor{red}{Titel Vorname Nachname}},%
+ referee={\textcolor{red}{Titel Vorname Nachname}\and
+ \textcolor{red}{Titel Vorname Nachname}},%
+ duration=\textcolor{red}{XX. Monat 20XX -- XX. Monat 20XX},%
+ university=\textcolor{red}{\KITlongname},%
+ homepage=\textcolor{red}{\KITurl}%
+]
+%</KIT>
+%<*JT-Aufsaetze>
+\TitlePageStyle{JT-Aufsaetze}
+\maketitle[%
+ % There are only three official elements:
+ author={\textcolor{red}{Markus Kohm}},%
+ title={\textcolor{red}{Titel der Arbeit angelehnt an Jan Tschicholds
+ ausgewählte Aufsätze über Fragen der Gestalt des Buches und der
+ Typographie}},
+ titlefont=\normalfont,% You may change the font of the main title
+ publisher={\textcolor{red}{Der Verlag}}
+ % Nevertheless, you may use extratitle, lowertitleback and uppertitleback.
+ % See Markus-2 for more information about those.
+]
+%</JT-Aufsaetze>
+%<*JT-Geschichte>
+\TitlePageStyle{JT-Geschichte}
+\maketitle[%
+ % There are only four official elements:
+ author={\textcolor{red}{Markus Kohm}},%
+ title={\textcolor{red}{Titel der Arbeit angelehnt an Jan Tschicholds
+ Geschichte der Schrift in Bildern}},
+ titlefont=\itshape,% You may change the font of the main title
+ publisher={\textcolor{red}{Der Verlag in seiner Langform}},
+ place={\textcolor{red}{Der Ort}}
+ % Nevertheless, you may use extratitle, lowertitleback and uppertitleback.
+ % See Markus-2 for more information about those.
+]
+%</JT-Geschichte>
+%<*JT-Typography>
+\TitlePageStyle{JT-Typography}
+\maketitle[%
+ % There are only four official elements:
+ author={\textcolor{red}{Markus Kohm}},%
+ title={\textcolor{red}{Titel der Arbeit}},
+ subtitle={\textcolor{red}{angelehnt an the new Typography}},
+ publisher={\textcolor{red}{Veröffentlicht für einen Verlag oder auch nicht}},
+ place={\textcolor{red}{Der Ort}},
+ date={\textcolor{red}{2012}}
+ % Nevertheless, you may use extratitle, lowertitleback and uppertitleback.
+ % See Markus-2 for more information about those.
+]
+%</JT-Typography>
+%<*WWUM>
+\TitlePageStyle{WWUM}
+\renewcaptionname{ngerman}{\examinationdatename}{Tag der Promotion}
+%\renewcaptionname{ngerman}{\examinationdatename}{}
+%\renewcaptionname{ngerman}{\chairmanname}{Dekan}
+%\renewcaptionname{ngerman}{\chairmanname}{Dekanin}
+\maketitle[%
+ title={\textcolor{red}{Titel der Arbeit}},
+ subject={\textcolor{red}{Inaugural-Dissertation}},
+ academicgrade={\textcolor{red}{Doktorgrades}},
+ discipline={\textcolor{red}{Physik}},
+ sience={\textcolor{red}{Naturwissenschaften}},
+ chair={\textcolor{red}{Experimentelle Physik}},
+ faculty={\textcolor{red}{Mathematisch-Naturwissenschaftlichen}},
+ author={\textcolor{red}{Mein Name}},
+ place={\textcolor{red}{Geburtsort}},
+ referee={\textcolor{red}{Peter Mustermann}\and
+ [f]\textcolor{red}{Petra Musterfrau}},
+ professor={\textcolor{red}{Klaus Naseschwarz}}
+]
+%</WWUM>
+\end{document}
+% \end{macrocode}
+%
+% \iffalse meta-comment
+%</example>
+%<*manual|README>
+% \fi^^A meta-comment
+%
+% \begin{macrocode}
+%<*!README>
+\documentclass{scrdoc}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage[english]{babel}
+\usepackage{xltabular}
+\usepackage{ragged2e}
+\usepackage{booktabs}
+\usepackage{graphicx}
+\usepackage{hypdoc}
+\CodelineIndex
+\RecordChanges
+\EnableCrossrefs
+\GetFileInfo{uni-titlepage.drv}
+\begin{document}
+\title{More Titlepage Styles with Package \File{uni-titlepage}\footnote{This is file
+ version \fileversion{} of file \File{\filename}.}}
+\author{Markus Kohm\footnote{Markus Kohm \textless komascript\textcircled{\tiny
+ at}gmx.info\textgreater}}
+\date{\fileversion{}\footnote{\textbf{Note:} All version below 0.9 are ALPHA
+ versions. Everything may change. Everything may break. Everything may
+ happen.} \filedate}
+\maketitle
+\begin{abstract}
+%</!README>
+%<*README>
+----------------------------------------------------------------------------
+
+This work may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, version 1.3c of the license.
+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 2005/12/01 or later.
+
+This work has the LPPL maintenance status "maintained".
+
+The Current Maintainer and author of this work is Markus Kohm.
+
+----------------------------------------------------------------------------
+
+# ABSTRACT
+
+%</README>
+Creation of title pages is something most authors should not have to do.
+But reality is not perfect, so a lot of authors have to do it. In 2009
+%<!README>KOMA started the title page project at \url{https://komascript.de/titlepage}
+%<README>KOMA started the title page project at <https://komascript.de/titlepage>
+to collect real title pages and implement them with a well defined interface.
+%<!README>In 2021 the project has been moved to \url{https://github.com/komascript/uni-titlepage}
+%<README>In 2021 the project has been moved to <https://github.com/komascript/uni-titlepage>
+and renamed.
+
+Now, changing from one title page style to another would be very
+simple. Nevertheless implementation of a new title page style may be still
+difficult. But maybe the guys of the title page project would help you. Just
+ask!
+%<*README>
+
+# Unpacking and Installation for Developers and Distributors
+
+To unpack and install all files, you can download the source from github
+and then run:
+
+ l3build install
+
+Afterwards you can build the manual and the PDFs of the examples using:
+
+ l3build doc
+
+As an alternative you can use the CTAN source distribution. This already
+contains the user manual and the PDFs of the example files. So you only have
+to run
+
+ tex uni-titlepage.dtx
+
+to generate the package file `uni-titlepage.sty`, the title definition files
+`title-*.def` and the example titlepages `titlepage-*.tex`.
+
+Please note, the `title-*.def` files are run-time files. Together with
+`uni-titlepage.sty` they have to be placed in `tex/latex/uni-titlepage` inside
+a TDS tree. All files `titlepage-*.tex` and `titlepage-*.pdf` as well as
+`uni-titlepage.pdf` are part of the documentation and should be placed in
+`doc/latex/uni-titlepage/` of the TDS tree.
+
+# Unpacking and Installation for Users
+
+Users can use the installation described at
+[Unpacking and Installation for Developers and Distributors]. However, if
+your TeX distributor already distributes a ready for installation package, you
+do not need and should not create files and copy them yourself. Just use the
+package manager of your TeX distribution to install the package.
+
+# How to Contribute
+
+If you have made a title definition that is not specific for a single project
+but could be of interest for other users, you can either
+
+* make your own `uni-titlepage-FOO` package with its own manual and [upload it
+to ctan](https://www.ctan.org/upload),
+* contribute in adding it to `uni-titlepage`.
+
+The first option has the advantage, that you are free. There won't be any code
+reviews by the `uni-titlepage` developers. You don't need to use the same
+coding style. There is not need to accept the license of `uni-titlepage`
+etc. But in this case you have to take care to keep it compatible with future
+releases of `uni-titlepage` and it will not be presented in the
+`uni-titlepage` manual.
+
+The second option has the advantage, that after accepting your code, the
+`uni-titlepage` developers will try to keep it working even if they change
+`uni-titlepage`. But there are several restrictions to your code, before it
+will be accepted. For example, you should always try to use general options,
+if possible. *Static text* (not handled by options) should be configurable via
+`\newcaptionname`, `\providecaptionname` and `\renewcaptionname` and should be
+available at least in English and German (but if we can, we help in
+translating them). The coding style and quality is also a criterion.
+
+%</README>
+%<*!README>
+\end{abstract}
+\DocInput{uni-titlepage.dtx}
+\end{document}
+%</!README>
+% \end{macrocode}
+%
+% \iffalse meta-comment
+%</manual|README>
+%</doc|README>
+% \fi^^A meta-comment
+%
+% \Finale
+%
+\endinput
+
+%% Local Variables:
+%% TeX-master: t
+%% TeX-PDF-mode: t
+%% flyspell-mode: t
+%% End:
diff --git a/macros/latex/contrib/uni-titlepage/uni-titlepage.pdf b/macros/latex/contrib/uni-titlepage/uni-titlepage.pdf
new file mode 100644
index 0000000000..29db357407
--- /dev/null
+++ b/macros/latex/contrib/uni-titlepage/uni-titlepage.pdf
Binary files differ