summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
blob: adcf404c452dcb9fc87e2ba2e13b40d60d7691ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{tudabeamer}
 [\filedate\space\fileversion\space]

\RequirePackage{l3keys2e}
\RequirePackage{URspecialopts}

\Define@specialopt@Module[TUDa/beamer]
\PassOptionsToClass{10pt}{beamer}

\Module@DefineSpecialPassKey[TUDa/beamer]{color}<tudacolors>

\ExplSyntaxOn
\keys_define:nn {TUDa/beamer} {
	accentcolor .code:n = \PassOptionsToPackage{accentcolor=#1}{tudacolors},
	colorframetitle .code:n = \PassOptionsToPackage{\l_keys_key_tl=#1}{beamercolorthemeTUDa}
	\PassOptionsToPackage{\l_keys_key_tl=#1}{beamerouterthemeTUDa},
	colorframetitle .default:n = true,
	logo .code:n = \PassOptionsToPackage{logo=#1}{beamerouterthemeTUDa},
	pdfa .bool_gset:N = \g_TUDa@pdfa_bool,
	pdfa .initial:n = false,
	logofile .code:n = \PassOptionsToPackage{logofile=#1}{beamerouterthemeTUDa},
	serif .code:n = \PassOptionsToPackage{serif=#1}{beamerfontthemeTUDa},
	serif .default:n = true,
	sans-serif .code:n = \PassOptionsToPackage{sans-serif=#1}{beamerfontthemeTUDa},
	sans-serif .default:n = true,
}


\clist_map_inline:nn {colortitle, colorbacktitle, colorback} {
	\Module@DeclarePassOption[TUDa/beamer]{#1}{beamercolorthemeTUDa}
}
\Module@DeclarePassOption[TUDa/beamer]{centerframetitle}{beamerouterthemeTUDa}
\Module@DeclarePassOption[TUDa/beamer]{authorontitle}{beamerinnerthemeTUDa}

\ExplSyntaxOff

\Module@DeclarePassOption[TUDa/beamer]{logo}{beamerouterthemeTUDa}

\PassOptionsToPackage{pdfpagelabels=false,plainpages=false}{hyperref}
\PassOptionsToClass{t}{beamer}

\Module@Process@SpecialOptions[TUDa/beamer]

\DeclareOption*{%
	\PassOptionsToClass{\CurrentOption}{beamer}
}

\ProcessKeysOptions{TUDa/beamer}
\ProcessOptions*

\ExplSyntaxOn
\bool_if:NT  \g_TUDa@pdfa_bool {\PassOptionsToPackage{RGB}{xcolor}}

\bool_if:NT  \g_TUDa@pdfa_bool {
\RequirePackage{scrlfile}
\PreventPackageFromLoading{hyperref}
\def\hypersetup#1{}
}
\ExplSyntaxOff

% Load the latex-beamer class
\LoadClass{beamer}

\ExplSyntaxOn
\bool_if:NT \g_TUDa@pdfa_bool {
	\UnPreventPackageFromLoading{hyperref}
	\PassOptionsToPackage{a-2b}{pdfx}
	\RequirePackage{pdfx}
}
\ExplSyntaxOff

\hypersetup{hidelinks, unicode}

% Load the TUD theme
\AtEndOfClass{%
  \usetheme{TUDa}%
  \@input{\jobname.len}%
  \@starttoc{len}%
  \let\accentfont\normalfont%
}


%\department command
\def\department{\@dblarg\TUDa@beamer@department}

\long\def\TUDa@beamer@department[#1]#2{%
	\def\beamer@temp{#2}%
	\ifx\beamer@temp\@empty
	\def\insertdepartment{}
	\else
	\def\insertdepartment{\def\inst{\beamer@instinst}\def\and{\qquad}#2}%
	\fi
	\def\beamer@shortdepartment{#1}}
\department{}

\newcommand\insertshortdepartment[1][]{%
	{%
		\let\thanks=\@gobble%
		\beamer@setupshort{#1}%
		\beamer@insertshort{\beamer@shortdepartment}%
}}
%end of \department command
%

\ExplSyntaxOn
\if_bool:N \g_TUDa@pdfa_bool
\iow_new:N \TUDa@xmpdata_stream
\iow_open:Nn \TUDa@xmpdata_stream {\jobname.xmpdata}
\tl_new:N \g_TUDa@xmp_title
\tl_new:N \g_TUDa@xmp_author

\cs_new:Nn \TUDa_pass_TitleData: {
	\begingroup
	\def\newline{}
	\def\\{}
	\let\thanks\use_none:n
	\cs_set:Npn \and {\exp_not:n {\exp_not:N \sep}}
	\bool_if:NTF \g_TUDa_pass_TitleData_bool {
		\tl_gset:Nx \g_TUDa@xmp_title {\insertshorttitle}
		\tl_gset:Nx \g_TUDa@xmp_author {\insertshortauthor}
		\iow_now:Nx \TUDa@xmpdata_stream
		{
			\exp_not:N \Title{\tl_to_str:V \g_TUDa@xmp_title}
			^^J
			\exp_not:N \Author{\tl_to_str:V \g_TUDa@xmp_author}
			^^J
			\exp_not:N \Creator{LaTeX~ using~ the~ TUDa-CI~ Bundle}
		}
	}{
		\begingroup
		\use:c {pdfx@localcommands}
		\prop_if_in:NnF \g_TUDa_MetaData_prop {Creator} {\prop_gput:Nnn \g_TUDa_MetaData_prop {Creator} {LaTeX~ using~ the~ TUDa-CI~ Bundle}}
		\prop_map_function:NN \g_TUDa_MetaData_prop  \TUDa_write_xmp_line:nn
		\endgroup
	}
	\endgroup
}
\cs_new:Nn \TUDa_write_xmp_line:nn {
	\cs_if_exist:cTF {\tl_mixed_case:n {#1}} {
		\iow_now:Nx \TUDa@xmpdata_stream {
			\c_backslash_str \tl_mixed_case:n {#1} {#2}\iow_newline:
		}
	}{
		\msg_error:nnn {TUDapub} {unknown-metadata} {#1}
	}
}

\bool_new:N \g_TUDa_pass_TitleData_bool
\bool_gset_true:N  \g_TUDa_pass_TitleData_bool
\prop_new:N \g_TUDa_MetaData_prop

\newcommand*{\Metadata}[1]{
	\bool_gset_false:N \g_TUDa_pass_TitleData_bool
	\prop_gset_from_keyval:Nn \g_TUDa_MetaData_prop {#1}
}

\msg_new:nnnn {TUDapub} {unknown-metadata} {
	You~ used~ the~ #1~ metadata~ entry.\\
	I~ don't~ know~ how~ to~ handle~ that.\\
	It~ will~ be~ ignored.
} {See~ TUDa-CI~ or~ pdfx~ documentation~ for~ details.}
\else:
\msg_new:nnn {tudapub} {no-pdfa}{The~ tudapub~ class~ won't~ create~ PDF/A-mode.}
\msg_info:nn {tudapub} {no-pdfa}
\fi:
\ExplSyntaxOff

\endinput