Newer
Older
% Rolf Niepraschk, Rolf.Niepraschk@ptb.de
\setcounter{errorcontextlines}{100} \listfiles
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{ptbposter}[2020/02/18 v0.9h PTB-Poster (RN)]
\newif\ifPTB@useCMYK \PTB@useCMYKfalse % vorerst
\newif\ifPTB@german@ \PTB@german@true
\newdimen\PTB@topmargin % Abstand zum Rahmen
\newdimen\PTB@leftmargin % Abstand zum Rahmen
\newdimen\PTB@default@fsize@base % Bezugsgröße für Standardschriftgröße im Textbereich
\newdimen\PTB@default@tfsize@base % Bezugsgröße für Standardschriftgröße im Titel
\newdimen\PTB@default@fsize % Standardschriftgröße im Textbereich (\normalsize)
\newdimen\PTB@default@tfsize % Standardschriftgröße für den Titel
\newdimen\PTB@default@afsize % Standardschriftgröße für die Autoren
\newdimen\PTB@default@ffsize % Standardschriftgröße im Fußbereich
\newdimen\PTB@texthsep % Abstand Textbereich zum blauen Rahmen
\newdimen\PTB@textvsep % Abstand Textbereich zum blauen Rahmen
\newdimen\PTB@framewidth % Breite des blauen Rahmens
\newdimen\PTB@frameheight % Höhe des blauen Rahmens
\newdimen\PTB@framethickness % Dicke des blauen Rahmens
\newdimen\PTB@scale@base % Bezugsgröße für papierabhängige Größenberechnung
\newdimen\PTB@maxtitleheight % Maximale Höhe des Titels
\newcommand*\authorFontSize{}
\newcommand*\footFontSize{}
\newcommand*\titleFontSize{}
\newcommand\PTB@tempa{}
\newcommand\PTB@tempb{}
\newcommand\PTB@tempc{}
\newcommand\PTB@tempd{}
\newcommand\PTB@tempe{}
\let\PTB@tempdimc=\@ovdx
\newcounter{PTB@tempcnta}
\newcounter{PTB@tempcntb}
\RequirePackage{ifluatex,ifxetex}
\ifxetex\PTB@XeOrLuatrue\else\ifluatex\PTB@XeOrLuatrue\fi\fi
\PassOptionsToPackage{pagesize=false}{typearea}
\PassOptionsToPackage{paper=a0paper,onecolumn,portrait}{geometry}
\newcommand*\PTB@title@justification{\relax}
\newcommand*\PTB@authors@justification{\relax}
\newcommand*\PTB@title@series{\relax}
\newcommand*\PTB@font@base@factor{}
\def\PTB@font@base@factor{0.0130170299199}% 11pt bei A4
}
\def\PTB@font@base@factor{0.0118336635635}% 10pt bei A4
}
\DeclareOption{sanserif}{% noch experimentell! Besser: LuaTeX/XeTeX + OTF
\global\let\PTB@title@series=\bfseries
}
\global\let\PTB@title@justification=\centering
}
\DeclareOption{centerAuthors}{%
\global\let\PTB@authors@justification=\centering
}
\DeclareOption{a4paper}{%
\PassOptionsToPackage{\CurrentOption}{geometry}
}
\DeclareOption{a3paper}{%
\PassOptionsToPackage{\CurrentOption}{geometry}
}
\DeclareOption{a2paper}{%
\PassOptionsToPackage{\CurrentOption}{geometry}
}
\DeclareOption{a1paper}{%
\PassOptionsToPackage{\CurrentOption}{geometry}
}
\DeclareOption{a0paper}{%
\PassOptionsToPackage{\CurrentOption}{geometry}
}
\DeclareOption{landscape}{%
\PassOptionsToPackage{\CurrentOption}{geometry}
}
\DeclareOption{shortPTBlogo}{%
\PTB@logo@long@false
}
\@nameuse{\CurrentOption}
\PassOptionsToPackage{\CurrentOption}{ptbposter-tcb}
}
\@nameuse{\CurrentOption}
}
\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{babel}}
\RequirePackage{hyphsubst}% Trennregeln austauschen
\HyphSubstIfExists{ngerman-x-latest}{%
\HyphSubstLet{ngerman}{ngerman-x-latest}}{}
\HyphSubstIfExists{german-x-latest}{%
\HyphSubstLet{german}{german-x-latest}}{}
\preto\@classoptionslist{ngerman,}
% Ohne Sprachangabe "deutsch" verwenden. Bessere Lösung?
\LoadClass{scrartcl}
\usepackage[verbose]{geometry}%
\@ifundefined{changefontsizes}{%
\ClassError{ptbposter}{%
Deine Version von KOMA-Script ist ungeeignet (vermutlich stark veraltet)!
}{%
Installiere die aktuelle Version von KOMA-Script.
}%
}{}
\ifdim\paperheight>\paperwidth
\setlength\PTB@default@fsize@base{\PTB@font@base@factor\PTB@scale@base}% 10pt/11pt bei A4
\setlength\PTB@default@afsize{0.0157550946737\PTB@scale@base}% 53.3pt bei A0
\setlength\PTB@default@tfsize@base{0.0315101893474\PTB@scale@base}% 106.6pt bei A0
\setlength\PTB@default@ffsize{0.00567538119577\PTB@scale@base}% 19.2pt bei A0
\newcommand*\scaleTitleFontSize[1]{%
\global\PTB@default@tfsize=#1\PTB@default@tfsize@base
}
\setlength\PTB@default@tfsize{0.0315101893474\PTB@scale@base}% 106.6pt bei A0
\newcommand*\PTB@scaleTitleFontSize[1]{%
\PTB@tempdima=\PTB@default@tfsize
\PTB@tempdima=#1\PTB@tempdima
\xdef\titleFontSize{\noexpand\@setfontsize
\noexpand\titleFontSize{\the\PTB@tempdima}{\the\PTB@tempdimb}}%
}
\scaleFontSizes{1}% wird ggf. in Präambel noch mal geändert.
\scaleTitleFontSize{1}% wird ggf. in Präambel noch mal geändert.
\edef\authorFontSize{\noexpand\@setfontsize\noexpand\authorFontSize{%
\the\PTB@default@afsize}{\the\dimexpr1.2\PTB@default@afsize}}
\edef\footFontSize{\noexpand\@setfontsize\noexpand\footFontSize{%
\the\PTB@default@ffsize}{\the\dimexpr1.2\PTB@default@ffsize}}
\PTB@tempdima=\f@size pt \PTB@tempdima=#1\PTB@tempdima
\PTB@tempdimb=\f@baselineskip \PTB@tempdimb=#1\PTB@tempdimb
\edef\f@size{\strip@pt\PTB@tempdima}%
\edef\f@baselineskip{\the\PTB@tempdimb}%
\RequirePackage[dvipsnames,svgnames,x11names]{xcolor}
\RequirePackage{multicol,graphicx}
,factor=1500
,protrusion=true
,expansion=true
,verbose=true
,final=true
,letterspace=100
,babel=true
]{microtype}
\PTB@german@false
\iflanguage{ngerman}{\PTB@german@true}{%
\iflanguage{german}{\PTB@german@true}{}%
\defineshorthand{"`}{\guillemotright}%
\defineshorthand{"'}{\guillemotleft}%
\RequirePackage[final,pdfpagelabels=false,%
plainpages=false,hypertexnames=true,hyperfootnotes=false]{hyperref}%
[autostyle=true,german=guillemets,maxlevel=3]{csquotes}%
\newcommand*\PTB@qrcode{}
\newcommand*\QRcode[1]{\gdef\PTB@qrcode{#1}}
\newcommand*\PTB@location{38116~Braunschweig}
\newcommand*\location[1]{\gdef\PTB@location{#1}}
\newcommand*\PTB@street{Bundesallee~100}
\newcommand*\street[1]{\gdef\PTB@street{#1}}
\newcommand*\PTB@workingGroup{Arbeitsgruppe}
\newcommand*\workingGroup[1]{\gdef\PTB@workingGroup{#1}}
\newcommand*\PTB@department{Fachbereich}
\newcommand*\department[1]{\gdef\PTB@department{#1}}
\newcommand*\PTB@phone{}
\newcommand*\phone[1]{\gdef\PTB@phone{#1}}
\newcommand*\PTB@email{}
\newcommand*\email[1]{\gdef\PTB@email{#1}}
\newcommand*\PTB@fax{}
\newcommand*\fax[1]{\gdef\PTB@fax{#1}}
\newcommand*\PTB@logo{}
\newcommand*\logo[1]{\gdef\PTB@logo{#1}}
\ifPTB@useCMYK
\definecolor{PTBcolor}{cmyk}{1,0.32549,0.12549,0.12549}
\else
%%%\definecolor{PTBcolor}{rgb}{0,0.67451,0.87451}
%%%\definecolor{PTBcolor}{HTML}{00ACDF}
\definecolor{PTBcolor}{RGB}{0,155,206}% 2019
\RequirePackage[texcoord]{eso-pic}
\AddToShipoutPictureBG*{% Kopf (relativ zur oberen Blattkante)
\put(\PTB@leftmargin,\PTB@tempdima){%
\parbox[b]{\PTB@framewidth}{% TODO: vereinfachen?
\parbox[b]{.401\PTB@scale@base}{%
\textcolor{PTBcolor}{% TODO: Tikz-Grafik erzeugen (autom.?) und verwenden
\includegraphics[height=.055\PTB@scale@base]{ptbposter-logo-A.mps}
\hfill
\raisebox{.0025\PTB@scale@base}{%
%\includegraphics[width=.612\linewidth]{ptbposter-logo-B.mps}%
\resizebox{.61\linewidth}{!}{%
\hspace{-.2ex}%
\begin{varwidth}[b]{\linewidth}%
Physikalisch-Technische Bundesanstalt\\
Braunschweig und Berlin\\
\mdseries
Nationales Metrologieinstitut
\end{varwidth}%
}%
\includegraphics[height=.055\PTB@scale@base]{\PTB@logo}%
\def\PTB@tempa{\parbox[c]{\PTB@framewidth}{% Komplette Titeldefinition
\PTB@title@justification\PTB@title@series\sffamily\titleFontSize
\microtypesetup{protrusion=false}\@title}}%
\@tempcnta=\@ne \@tempcntb=10499 %
\loop\ifnum\@tempcnta<25 % Finden der ersten passenden titleFontSize
\multiply\@tempcntb 10000 \divide\@tempcntb by 10500 % jeweils um 5% kleiner
\PTB@scaleTitleFontSize{0.\the\@tempcntb}% 1:0.9999, 2:0.9522, 3:0.9068, ...
%\typeout{\the\@tempcnta\space XXX: \titleFontSize, 0.\the\@tempcntb}%
\setbox\z@ \hbox{\PTB@tempa}%
\ifdim\dimexpr\ht\z@+\dp\z@>\PTB@maxtitleheight
\fi
\repeat
\endgroup
\PTB@tempdima=-0.127\PTB@scale@base
\put(\PTB@leftmargin,\PTB@tempdima){\PTB@tempa}% Title
\put(\PTB@leftmargin,\PTB@tempdima){\parbox[b]{\PTB@framewidth}{% Autoren
\PTB@authors@justification\sffamily\authorFontSize\@author}}%
\linethickness{\PTB@framethickness}\color{PTBcolor}%\color{PTBcolor}%
\put(\PTB@leftmargin,\PTB@tempdima){%
\line(1,0){\dimexpr\paperwidth-2\PTB@leftmargin}}%
\put(\PTB@leftmargin,\dimexpr-\textheight-2\PTB@textvsep-\PTB@topmargin)%
{\framebox(\dimexpr\textwidth+2\PTB@texthsep,%
\dimexpr\textheight+2\PTB@textvsep){\backgroundContent}}%
\AddToShipoutPictureFG*{% Fuß (relativ zur unteren Kante des Textbereichs)
\AtTextLowerLeft{%
\linethickness{\PTB@tempdimb}\normalcolor
\put(-.5\@wholewidth,\PTB@tempdima){%
\PTB@tempdima=0.0386879731686\PTB@scale@base
\PTB@tempdimb=0.00168208578994\PTB@scale@base
\color{PTBcolor}\framebox(\PTB@tempdima,\PTB@tempdima){}%
\sbox\@tempboxa{\qrcode[height=\PTB@tempdima,tight]{\PTB@qrcode}}%
\raisebox{\dp\@tempboxa}{\usebox\@tempboxa}%
\hspace{\PTB@tempdimb}\raisebox{-\@wholewidth}{%
\rule{\dimexpr\PTB@tempdima+2\@wholewidth}%
{\dimexpr\PTB@tempdima+2\@wholewidth}}%
\hspace{\PTB@tempdimb}\framebox(\PTB@tempdima,\PTB@tempdima){}%
\put(\PTB@tempdima,\PTB@tempdimb){%
\begin{tabular}[t]{@{}l@{}}
Physikalisch-Technische Bundesanstalt \\
Braunschweig und Berlin \\[\f@baselineskip]
\ifx\first@author\@empty\else \textbf{\first@author}\\\fi
\ifx\PTB@department\@empty\else \PTB@department\\\fi
\ifx\PTB@workingGroup\@empty\else \PTB@workingGroup\\\fi
\end{tabular}%
}
\put(\PTB@tempdima,\PTB@tempdimb){%
\begin{tabular}[t]{@{}ll@{}}
\ifx\PTB@street\@empty\else\multicolumn{2}{@{}l@{}}{\PTB@street}\\\fi
\ifx\PTB@location\@empty\else\multicolumn{2}{@{}l@{}}{\PTB@location}\\\fi
\ifx\PTB@phone\@empty\else\ifPTB@german@ Telefon\else Phone\fi:
&\PTB@phone\\\fi
\ifx\PTB@fax\@empty\else Fax:&\PTB@fax\\\fi
\ifx\PTB@email\@empty\else\ifPTB@german@ E-Mail\else E-mail\fi:
&\href{mailto:\PTB@email}{\PTB@email}\\\fi
\multicolumn{2}{@{}l@{}}{\href{http://www.ptb.de/}{www.ptb.de}}
\put(\PTB@tempdima,\PTB@tempdimb){%
\begin{tabular}[t]{@{}l@{}}
\@thanks % wurde bei der Ausführung von \@author gefüllt.
\end{tabular}%
}
% ===== Behandlung der Autoren (siehe ptb-abstracts.sty ) =====
\def\@author{}
\renewcommand\footnotetext[2][]{%
}
\newcommand\PTB@dec@footnotemark[1][]{%
\addtocounter{footnote}{-1}%
\begingroup
\edef\PTB@tempa{#1}%
\ifx\PTB@tempa\@empty\footnotemark\else\footnotemark[#1]\fi
\endgroup
}
\newcommand\PTB@fnmark[1]{%
\begingroup
\unrestored@protected@xdef\@thefnmark{#1}%
\endgroup
\@footnotemark}
\newcommand\PTB@isnum[1]{%
\if!\ifnum9<1#1!\else_\fi\expandafter\@firstoftwo
\else\expandafter\@secondoftwo\fi}%
\newcommand\Author{%
\begingroup
\@ifstar{\@tempswatrue\@Author}{\@tempswafalse\@Author}}
\newcommand\@Author[2][]{% \PTB@tempf=[!],\PTB@tempb={Firstname}
\def\PTB@tempf{#1}\def\PTB@tempb{#2}% TODO: ggf. weiterer Optionen in #1
\newcommand\@@Author[2][]{% \PTB@tempc=[alt. Firstname],\PTB@tempd={Surname}
\def\PTB@tempc{#1}\def\PTB@tempd{#2}% TODO: \PTB@tempc unsinnig, oder?
\newcommand\@@@Author[1][]{% \PTB@tempe=[Address]
\def\PTB@tempe{#1}%
\ifx\PTB@tempd\@empty
% Empty Surname = Addition to the previous author
\xdef\@author{\PTB@tempb~\PTB@tempd}%
\xdef\first@author{\PTB@tempb~\PTB@tempd}%
\else
\expandafter\g@addto@macro\expandafter\@author
\expandafter\g@addto@macro\expandafter\@author
\fi
\fi
\if@tempswa
% --> \Author*
\g@addto@macro\@author{\PTB@dec@footnotemark}%
\fi
\def\reserved@a{!}%
\ifx\PTB@tempf\reserved@a
\xdef\first@author{\PTB@tempb~\PTB@tempd}% alternat. first author
\fi
\expandafter\g@addto@macro\expandafter\@author
\expandafter{\expandafter\PTB@fnmark\expandafter{\PTB@tempa}}%
\if@tempswa
\g@addto@macro\@author{\PTB@fnmark{,}}%
\fi
\PTB@isnum{\PTB@tempe}{%
\expandafter\g@addto@macro\expandafter\@author%
\expandafter{\expandafter\PTB@fnmark\expandafter{\PTB@tempe}}%
}{%
\expandafter\g@addto@macro\expandafter\@author%
\expandafter{\expandafter\thanks\expandafter{\PTB@tempe}}%
}%
\fi
\endgroup
}
\let\PTB@thanks\thanks
\renewcommand\thanks[2][]{%
\begingroup
\def\PTB@tempa{#2}%
\ifx\PTB@tempa\@empty
\footnotemark[\value{footnote}]%
\else
\PTB@thanks{#2}%
\fi
\endgroup
}%
\renewcommand*\labelitemi{\textbullet}
\renewcommand*\labelitemii{\Large$\m@th\circ$}
\renewcommand*\labelitemiii{$\m@th\diamond$}
\AtEndPreamble{%
% Skalierungen in der Präambel sind passiert.
\changefontsizes{\the\PTB@default@fsize}%
\KOMAoptions{headings=normal,parskip=half}
\normalsize
\setlength\PTB@maxtitleheight{0.057\PTB@scale@base}%
\setlength\PTB@framethickness{0.00168208578994\PTB@scale@base}%
\setlength\fboxsep{0.00355\PTB@scale@base} % 3pt bei A4
\setlength\fboxrule{0.0004722\PTB@scale@base}% 0.4pt bei A4
\setlength\PTB@topmargin{0.152\PTB@scale@base}%
\else
\setlength\PTB@topmargin{0.180824222418\PTB@scale@base}%
\fi
\setlength\PTB@framewidth{0.950378471315\PTB@scale@base}% 3215pt (1130mm) bei A0
\setlength\PTB@frameheight{0.490824222418\PTB@scale@base}% 1565pt (550mm) bei A0
\setlength\PTB@frameheight{0.462\PTB@scale@base}% 1565pt (550mm) bei A0
\setlength\PTB@framewidth{0.656013458076\PTB@scale@base}% 2219pt (780mm) bei A0
\setlength\PTB@frameheight{0.769\PTB@scale@base}% 2504pt (880mm) bei A0
\else
\setlength\PTB@frameheight{0.740117747573\PTB@scale@base}% 2504pt (880mm) bei A0
\fi
\setlength\PTB@leftmargin{0.5\dimexpr\paperwidth-\PTB@framewidth}%
\@tempdima=\dimexpr\PTB@leftmargin+\PTB@texthsep %
\geometry{%
verbose,
top=\dimexpr\PTB@topmargin+\PTB@textvsep,%
left=\@tempdima,
right=\@tempdima,
textheight=\dimexpr\PTB@frameheight-2\PTB@textvsep,%
columnsep=1.5em,hcentering}
\paperwidth=2392.87701pt %
\paperheight=3383.03302pt %
\textwidth=2153.24045pt %
\textheight=2437.77531pt %
\oddsidemargin=47.5483pt %
\evensidemargin=47.5483pt %
\topmargin=535.06322pt %
\headheight=17.0pt %
\headsep=20.40001pt %
\topskip=11.0pt %
\footskip=47.6pt %
\marginparwidth=598.21925pt %
\columnsep=66.04904pt %
\hoffset=0.0pt %
\voffset=0.0pt %
\setlength\emergencystretch{3em}%
\@ifpackageloaded{multicol}{%
\def\setemergencystretch#1#2{}%
\setlist{leftmargin=.6em,labelsep=.3em,nosep,topsep=.5em,itemsep=.25em}
\KOMAoptions{captions=oneline}
\minipage{\linewidth}%
\def\@captype{figure}%
}
\newcommand*\ptb@table{%
\minipage{\linewidth}%
\def\@captype{table}%
}
\newcommand*\ptb@endfigtab{%
\endminipage
\endtrivlist
}
\renewenvironment{figure}[1][]{%
\ptb@figure
}{\ptb@endfigtab}
\renewenvironment{figure*}[1][]{%
\ptb@figure
}{\ptb@endfigtab}
\renewenvironment{table*}[1][]{%
\addtokomafont{captionlabel}{\sffamily\bfseries}
%\setcapwidth[l]{\linewidth}
\AtBeginDocument{%
\RedeclareSectionCommand[%
style=section,%
level=1,%
indent=\z@,%
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
tocindent=0pt,%
tocnumwidth=1.5em%
]{section}
\RedeclareSectionCommand[%
style=section,%
level=2,%
indent=\z@,%
beforeskip=-1.2ex\@plus -1ex \@minus -.2ex,%
afterskip=0.1ex \@plus .2ex,%
tocindent=1.5em,%
tocnumwidth=2.3em%
]{subsection}
\RedeclareSectionCommand[%
style=section,%
level=3,%
indent=\z@,%
beforeskip=-1.2ex\@plus -1ex \@minus -.2ex,%
afterskip=0.1ex \@plus .2ex,%
tocindent=3.8em,%
tocnumwidth=3.2em%
]{subsubsection}
\RedeclareSectionCommand[%
style=section,%
level=4,%
indent=\z@,%
beforeskip=1.2ex \@plus1ex \@minus.2ex,%
afterskip=-1em,%
tocindent=7.0em,%
tocnumwidth=4.1em%
]{paragraph}
\RedeclareSectionCommand[%
style=section,%
level=5,%
indent=\scr@parindent,%
beforeskip=1.2ex \@plus1ex \@minus .2ex,%
afterskip=-1em,%
tocindent=10em,%
tocnumwidth=5em%
]{subparagraph}
}
\setcounter{secnumdepth}{-2}
\renewcommand*\maketitle[1][1]{}
\renewcommand*\tableofcontents{}
\pagestyle{empty}