diff options
Diffstat (limited to 'macros/latex/contrib/tuda-ci/tex/tudaposter.cls')
-rw-r--r-- | macros/latex/contrib/tuda-ci/tex/tudaposter.cls | 384 |
1 files changed, 384 insertions, 0 deletions
diff --git a/macros/latex/contrib/tuda-ci/tex/tudaposter.cls b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls new file mode 100644 index 0000000000..87b8bd2b4b --- /dev/null +++ b/macros/latex/contrib/tuda-ci/tex/tudaposter.cls @@ -0,0 +1,384 @@ +%% This is file `tudaposter.cls' version 1.01 (2019/08/05), +%% it is part of +%% TUDa-CI -- Corporate Design for TU Darmstadt +%% ---------------------------------------------------------------------------- +%% +%% Copyright (C) 2018--2019 by Marei Peischl <marei@peitex.de> +%% +%% ============================================================================ +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainers of this work are +%% Marei Peischl <tuda-ci@peitex.de> +%% Markus Lazanowski <latex@ce.tu-darmstadt.de> +%% +%% The development respository can be found at +%% https://github.com/tudace/tuda_latex_templates +%% Please use the issue tracker for feedback! +%% +%% ============================================================================ +%% +\def\fileversion{1.01} +\def\filedate{2019/08/05} +\NeedsTeXFormat{LaTeX2e} +\RequirePackage{expl3} +\ProvidesExplPackage{tudaposter}{\filedate}{\fileversion}{Poster Layouts for the Corporate Design of TU Darmstadt} + +\RequirePackage{l3keys2e} + +\bool_new:N \g_TUDa_logo@inhead_bool +\dim_new:N \g_TUDa_margin_dim +\int_new:N \g_TUDa_paper_int + +\keys_define:nn {TUDa/poster} { + accentcolor .code:n = {\PassOptionsToPackage{accent=#1}{tudacolors}}, + color .meta:n = {accent=#1}, + textaccentcolor .code:n = {\PassOptionsToPackage{textaccent=#1}{tudacolors}}, + identbarcolor .code:n = {\PassOptionsToPackage{indentbar=#1}{tudacolors}}, + logo .choice:, + logo / head .code:n = {\bool_gset_true:N \g_TUDa_logo@inhead_bool}, + logo / body .code:n = {\bool_gset_false:N \g_TUDa_logo@inhead_bool}, + logo / top .code:n = {\bool_gset_true:N \g_TUDa_logo@inhead_bool}, + logo / bottom .code:n = {\bool_gset_false:N \g_TUDa_logo@inhead_bool}, + logo .initial:n = {head}, + footer .bool_gset:N = \g_TUDa_poster_foot_bool, + footer .default:n = true, + footer .initial:n = false, + footheight .dim_gset:N = \g_TUDa_footheight_dim, + paper .choices:nn = {a0,a1,a2,a3,a4}{ + \int_gset_eq:NN \g_TUDa_paper_int \l_keys_choice_int + \PassOptionsToPackage{paper=\l_keys_choice_tl}{tudarules} + \tl_gset_eq:NN \g_TUDa_paper_tl \l_keys_choice_tl + }, + fontsize .choice:, + fontsize / auto .code:n = \tl_gclear:N \g_TUDa_fontsize_tl, + fontsize / unknown .code:n = {\@defaultunits\@tempdima#1pt\relax\@nnil \tl_gset:Nx \g_TUDa_fontsize_tl {\the\@tempdima}}, + fontsize .initial:n = auto, + logofile .tl_gset:N = \g_TUDa_logofile_tl, + logofile .initial:n = tuda_logo, +} + + +\ProcessKeysOptions{TUDa/poster} + +\LoadClass[parskip=half-]{scrartcl} + +\tl_if_empty:NT \l_keys_choice_tl {\keys_set:nn {TUDa/poster} {paper=a0}} + + + +\int_case:nn {\g_TUDa_paper_int} +{ + %paper=a0 + {1} { + \cs_set:Nn \TUDa_title_fontsize: {{132pt}{148pt}} + \cs_set:Nn \TUDa_subtitle_fontsize: {{50pt}{62pt}} + \cs_set:Nn \TUDa_titleinfo_fontsize: {{45pt}{56pt}} + \tl_if_empty:NT \g_TUDa_fontsize_tl {\tl_gset:Nn \g_TUDa_fontsize_tl {30pt}} + \dim_gset:Nn \g_TUDa_margin_dim {30mm} + } + %paper=a1 + {2} { + \cs_set:Nn \TUDa_title_fontsize: {{100pt}{124pt}} + \cs_set:Nn \TUDa_subtitle_fontsize: {{35pt}{42pt}} + \cs_set:Nn \TUDa_titleinfo_fontsize: {{30pt}{37pt}} + \tl_if_empty:NT \g_TUDa_fontsize_tl {\tl_gset:Nn \g_TUDa_fontsize_tl {25pt}} + \dim_gset:Nn \g_TUDa_margin_dim {30mm} + } + %paper=a2 + {3} { + \cs_set:Nn \TUDa_title_fontsize: {{72pt}{84pt}} + \cs_set:Nn \TUDa_subtitle_fontsize: {{28pt}{34pt}} + \cs_set:Nn \TUDa_titleinfo_fontsize: {{25pt}{30pt}} + \tl_if_empty:NT \g_TUDa_fontsize_tl {\tl_gset:Nn \g_TUDa_fontsize_tl {25pt}} + \dim_gset:Nn \g_TUDa_margin_dim {30mm} + } + %paper=a3 + {4} { + \cs_set:Nn \TUDa_title_fontsize: {{56pt}{68pt}} + \cs_set:Nn \TUDa_subtitle_fontsize: {{22pt}{28pt}} + \cs_set:Nn \TUDa_titleinfo_fontsize: {{19pt}{24pt}} + \tl_if_empty:NT \g_TUDa_fontsize_tl {\tl_gset:Nn \g_TUDa_fontsize_tl {17pt}} + \dim_gset:Nn \g_TUDa_margin_dim {15mm} + } + %paper=a4 + {5} { + \cs_set:Nn \TUDa_title_fontsize: {{42pt}{52pt}} + \cs_set:Nn \TUDa_subtitle_fontsize: {{20pt}{25pt}} + \cs_set:Nn \TUDa_titleinfo_fontsize: {{17pt}{20pt}} + \tl_if_empty:NT \g_TUDa_fontsize_tl {\tl_gset:Nn \g_TUDa_fontsize_tl {14pt}} + \dim_gset:Nn \g_TUDa_margin_dim {15mm} + } +} + + +\setkomafont{title}{\expandafter\fontsize\TUDa_title_fontsize:\selectfont} +\setkomafont{subtitle}{\expandafter\fontsize\TUDa_subtitle_fontsize:\selectfont} +\newkomafont{titleinfo}{\normalfont} + + +\KOMAoptions{fontsize=\g_TUDa_fontsize_tl} + + + + + +\RequirePackage{tudafonts} +\renewcommand*{\familydefault}{\sfdefault} +\RequirePackage[paper=\g_TUDa_paper_tl,mode=tikz]{tudarules} + +\RequirePackage{tudacolors} +\RequirePackage{qrcode} +\RequirePackage{tikz} + + + + +\newlength{\contentwidth} +\setlength{\contentwidth}{\dimexpr\paperwidth-2\g_TUDa_margin_dim} + +\TUDa@makeheadrule[width=\contentwidth, color=identbarcolor]{TUDa@posterrule} + +\TUDa@makefootrule[width=\contentwidth, color=identbarcolor]{TUDa@smallrule} + +%%%%%%%%%%%%%%%%%%%%%% +% +%%%%%%%%%%%%%%%%%%%%%% +\RequirePackage{geometry} +\geometry{ + margin= \g_TUDa_margin_dim, + top=\dim_eval:n { + \box_ht:N \TUDa@posterrule_box + \box_dp:N \TUDa@posterrule_box + + .5\c_TUDa_logoheight_dim + +\g_TUDa_margin_dim} +} +\setlength\columnsep{\g_TUDa_margin_dim} + + +\bool_if:NT \g_TUDa_poster_foot_bool { + \dim_compare:nT {\g_TUDa_footheight_dim = 0pt} { + \dim_set:Nn \g_TUDa_footheight_dim + {1.5\baselineskip} + } + \geometry{bottom=\dim_eval:n {\g_TUDa_footheight_dim+\footskip+\g_TUDa_margin_dim}} +} +%%%%%%%%%%%%%%%%%%%%%% + + + +\RequirePackage{scrlayer} + + +\dim_new:N \g_TUDa_qrcode_dim +\dim_gset:Nn \g_TUDa_qrcode_dim {.7\c_TUDa_logoheight_dim} + +\DeclareNewLayer[ + background, + align=br, + width=\g_TUDa_qrcode_dim, + height=\g_TUDa_qrcode_dim, + hoffset=\paperwidth-\g_TUDa_margin_dim, + voffset=\paperheight-\g_TUDa_margin_dim, + mode=picture, + contents={% + \raisebox{\depth}{\qrcode[height=\dim_eval:n {\g_TUDa_qrcode_dim-2\fboxsep}]{\g_TUDa_poster_qrcode_tl}} + } + ]{TUDa.poster.qrcode} + + +\bool_if:NTF \g_TUDa_poster_foot_bool { + \DeclareNewLayer[ + clone=TUDa.poster.qrcode, + align=bl, + hoffset=\g_TUDa_margin_dim, + width=\textwidth, + height=\g_TUDa_footheight_dim, + contents={ + \putUL{\rule{\layerwidth}{.5\c_TUDa_smallrule_dim}} + \put(0,0) { + \parbox[b][\g_TUDa_footheight_dim][c]{\layerwidth}{\strut\g_TUDa_poster_foot_tl\strut}} + \putLL{\rule{\layerwidth}{.5\c_TUDa_smallrule_dim}} + } + ]{TUDa.poster.footer} +}{ + \DeclareNewLayer[ + clone=TUDa.poster.qrcode, + align=bl, + hoffset=\g_TUDa_margin_dim, + width=\textwidth, + height=0pt, + contents={\smash{\rule{\layerwidth}{.5\c_TUDa_smallrule_dim}}} + ]{TUDa.poster.footer} +} + +\DeclareNewLayer[ + textarea,background,mode=picture, + voffset=\g_TUDa_margin_dim+\box_ht:N \TUDa@posterrule_box + \box_dp:N \TUDa@posterrule_box, + contents={\color{accentcolor}\rule{\layerwidth}{\layerheight}} +]{TUDa.poster.background} + +\DeclareNewLayer[ + textarea, + foreground, + align=tr, + addhoffset=\textwidth, + width=2.2\c_TUDa_logoheight_dim, + height=15cm, + contents={\box_use:N \g_TUDa_title_info_box} +]{TUDa.poster.logo} + +\DeclareNewLayer[ + align=tl, + textarea, + voffset=\g_TUDa_margin_dim, + height=\box_ht:N \TUDa@posterrule_box + \box_dp:N \TUDa@posterrule_box, + mode=picture, + contents={ + \box_use:N \TUDa@posterrule_box + } +]{TUDa.poster.rule} + +\DeclareNewPageStyleByLayers{TUDa.poster}{TUDa.poster.rule,TUDa.poster.background,TUDa.poster.qrcode,TUDa.poster.footer} + +\dim_new:N \g_TUDa_titlegraphic_max_height_dim +\skip_new:N \g_TUDa_title_fill_skip + +\renewcommand*{\maketitle}{ + \begingroup + \setparsizes{\z@}{\z@}{\z@\@plus 1fil}\par@updaterelative + \vbox_gset:Nn \g_TUDa_title_box { + \usekomafont{title} + \parbox[t]{\linewidth}{ + \begin{minipage}[b]{\bool_if:NT \g_TUDa_logo@inhead_bool {.75}\linewidth} + \begin{addmargin}{.5ex} + \raggedright + \tl_if_empty:NF \@titlehead {\usekomafont{titlehead}{\@titlehead\par}} + \leavevmode\usekomafont{disposition}\usekomafont{title}% + \@title\strut\par + \vskip0pt + \end{addmargin} + \end{minipage}% + \par\nointerlineskip + \TUDa@smallrule\usekomafont{subtitle}\par + \begin{addmargin}{.5ex} + \@subtitle\strut + \end{addmargin} + \par\nointerlineskip + \TUDa@smallrule + } + } + \endgroup + + \TUDa_Setup_Title_box: + \dim_compare:nT {\box_ht:N \g_TUDa_title_box < 2\c_TUDa_logoheight_dim} { + \skip_set:Nn \g_TUDa_title_fill_skip {2\c_TUDa_logoheight_dim - \box_ht:N \g_TUDa_title_box} + } + \dim_set:Nn \l_tmpa_dim {\box_ht:N \g_TUDa_title_box+.5\c_TUDa_logoheight_dim+\g_TUDa_title_fill_skip} + + \ModifyLayer[ + height=\l_tmpa_dim + ]{TUDa.poster.background} + + \tl_if_empty:NF \g_TUDa_poster_qrcode_tl { + \ModifyLayer[addwidth=-\g_TUDa_qrcode_dim-\c_TUDa_rulesep_dim]{TUDa.poster.footer} + } + + \bool_if:NF \g_TUDa_logo@inhead_bool { + \ModifyLayer[ + addvoffset=\l_tmpa_dim +\box_dp:N \g_TUDa_title_box+\c_TUDa_smallrule_dim + ]{TUDa.poster.logo} + } + + \AddLayersToPageStyle{TUDa.poster}{TUDa.poster.logo} + \begingroup + + \bool_if:NT \g_TUDa_logo@inhead_bool { + \dim_compare:nT {\box_ht:N \g_TUDa_title_info_box+ \box_dp:N \g_TUDa_title_info_box > \box_ht:N \g_TUDa_title_box} + {\msg_warning:nn {TUDaPoster} {infobox-too-high}} + } + + \vspace*{\dim_eval:n {\g_TUDa_title_fill_skip-\topskip}}\nointerlineskip + + \box_use:N \g_TUDa_title_box + + \dim_set:Nn \g_TUDa_titlegraphic_max_height_dim {\textheight-\pagetotal} + \global\def\contentheight{\g_TUDa_titlegraphic_max_height_dim} + \global\def\contentwidth{\linewidth} + \tl_if_empty:NF \@titlegraphic{ + \par\nointerlineskip + \vbox{\parbox[t]{\linewidth}{\@titlegraphic}} + } + \thispagestyle{TUDa.poster} + \endgroup\par +} + +\global\def\contentwidth{\linewidth} +\global\def\contentheight{\g_TUDa_titlegraphic_max_height_dim} + + +\def\@titlegraphic{} +\newcommand{\titlegraphic}[1]{ + \def\@titlegraphic{#1} +} + +\seq_new:N \g_TUDa_title_info_seq + +\seq_gput_right:Nn \g_TUDa_title_info_seq { + \rlap{\includegraphics[height=\c_TUDa_logoheight_dim]{\g_TUDa_logofile_tl}} +} + +\box_new:N \g_TUDa_title_info_box +\box_new:N \g_TUDa_title_box + +\cs_new:Nn \TUDa_make_title_info_box:n { + \usekomafont{titleinfo} + \setlength{\fboxsep}{.2\baselineskip} + \colorbox{white}{\hspace*{\dimexpr.2\c_TUDa_logoheight_dim-\fboxsep}% + \parbox{2\c_TUDa_logoheight_dim}{ + \raggedright + #1 + }} +} + +\newcommand{\addTitleBox}[1]{\seq_gput_right:Nn \g_TUDa_title_info_seq {\TUDa_make_title_info_box:n {#1}}} + +\cs_new:Nn \TUDa_Setup_Title_box: { + \hbox_gset:Nn \g_TUDa_title_info_box + {\parbox{2.2\c_TUDa_logoheight_dim}{ + \seq_use:Nn \g_TUDa_title_info_seq {\par\nointerlineskip\skip_vertical:n + { + \box_ht:N \TUDa@posterrule_box + \box_dp:N \TUDa@posterrule_box + } + } + }} +} + + +\tl_new:N \g_TUDa_poster_foot_tl +\newcommand{\footer}[1]{ + \tl_gset:Nn \g_TUDa_poster_foot_tl {#1} +} + +\tl_new:N \g_TUDa_poster_qrcode_tl +\newcommand*{\footerqrcode}[1]{ + \tl_gset:Nn \g_TUDa_poster_qrcode_tl {#1} +} + + +\RedeclareSectionCommand[afterskip=1ex plus .2ex]{section} +\RedeclareSectionCommand[afterskip=.2ex plus .2ex]{subsection} + +\msg_new:nnn {TUDaPoster} {infobox-too-high} { + The~height~of~your~Infobox~exeeds~the~space~reserved~in~the~title~block.\\ + You~should~probably~switch~to~logo=bottom~or~reduce~the~number/size~of~InfoBoxes. +} + +\endinput |