Newer
Older
% Rolf Niepraschk, Rolf.Niepraschk@ptb.de
\setcounter{errorcontextlines}{100} \listfiles
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{ptbposter}
[2016/09/28 v0.4b PTB-Poster-Klasse (RN)]
\newif\ifPTB@useCMYK \PTB@useCMYKfalse % vorerst
\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@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@scale@base % Bezugsgröße für papierabhängige Größenberechnung
\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}
\newif\ifPTB@landscape \PTB@landscapefalse
\newif\ifPTB@XeOrLua \PTB@XeOrLuafalse
\newif\ifPTB@serif \PTB@seriffalse
\RequirePackage{ifluatex,ifxetex}
\ifxetex\PTB@XeOrLuatrue\else\ifluatex\PTB@XeOrLuatrue\fi\fi
\DeclareOption{sanserif}{% noch experimentell! Besser: luaTeX/xeTeX + OTF
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}}
\RequirePackage{hyphsubst}% Trennregeln austauschen
\HyphSubstIfExists{ngerman-x-latest}{%
\HyphSubstLet{ngerman}{ngerman-x-latest}}{}
\HyphSubstIfExists{german-x-latest}{%
\HyphSubstLet{german}{german-x-latest}}{}
\preto\@classoptionslist{a0paper,portrait,ngerman,}
% Ohne Sprachangabe "deutsch" verwenden. Bessere Lösung?
\@ifundefined{changefontsizes}{%
\ClassError{ptbposter}{%
Deine Version von KOMA-Script ist ungeeignet (vermutlich stark veraltet)!
}{%
Installiere die aktuelle Version von KOMA-Script.
}%
}{}
\RequirePackage{amsmath}
\ifPTB@XeOrLua
\RequirePackage[no-math]{fontspec}
\RequirePackage{unicode-math}
\setsansfont[Ligatures=TeX]{TeX Gyre Heros}
%\setmonofont[Scale=0.88]{DejaVu Sans Mono}
%%%\setmonofont[Scale=1.05]{Latin Modern Mono}
\setmonofont{AnonymousPro-Regular}[%
Extension = .ttf,
BoldFont = AnonymousPro-Bold,
BoldItalicFont = AnonymousPro-BoldItalic,
Scale = MatchLowercase
]
%%%\setmonofont[Scale=MatchLowercase]{Anonymous Pro}%
%%% Fehler "This font using the "seac" command for accented characters"
%%% Behoben in "XeTeX 3.14159265-2.6-0.99992 "!
\ifPTB@serif
\setmathfont[math-style=ISO,bold-style=ISO]{TeXGyrePagellaMath-Regular}
\else
\setmathfont[math-style=ISO,bold-style=ISO]{Asana Math}
\setmathfont[range=\mathup,Scale=MatchLowercase]{TeXGyreHeros-Regular}
\setmathfont[range=\mathit,Scale=MatchLowercase]{TeXGyreHeros-Italic}
\setmathfont[range=\mathbfup,Scale=MatchLowercase]{TeXGyreHeros-Bold}
\setmathfont[range=\mathbfit,Scale=MatchLowercase]{TeXGyreHeros-BoldItalic}
\setmathfont[range=\mathsfup,Scale=MatchLowercase]{TeXGyreHeros-Regular}
\setmathfont[range=\mathsfit,Scale=MatchLowercase]{TeXGyreHeros-Italic}
\setmathfont[range=\mathbfsfup,Scale=MatchLowercase]{TeXGyreHeros-Bold}
\setmathfont[range=\mathbfsfit,Scale=MatchLowercase]{TeXGyreHeros-BoldItalic}
\setmathfont[range=\mathpunct]{TeXGyreHeros-Regular}
\fi
\else
\RequirePackage[utf8]{inputenc}
\RequirePackage[T1]{fontenc}
\RequirePackage{textcomp}
\RequirePackage{tgpagella,qpxmath}
\RequirePackage{tgheros}
%\RequirePackage[scaled=.88]{DejaVuSansMono}
%%%\RequirePackage[scaled=1.05]{zlmtt}% ist lmodern!
\RequirePackage[ttdefault=true,scale=1.034]{AnonymousPro}
\fi
\ifPTB@serif
\renewcommand*\familydefault{\rmdefault}
\else
\renewcommand*\familydefault{\sfdefault}
\fi
\RequirePackage[verbose]{geometry}% Papiergröße steht bereits fest (Standard: A0)
\ifdim\paperheight>\paperwidth
\setlength\PTB@default@fsize@base{0.0130170299199\PTB@scale@base}% 11pt bei A4
\setlength\PTB@default@afsize{0.0157550946737\PTB@scale@base}% 53.3pt bei A0
\setlength\PTB@default@tfsize{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]{%
\PTB@tempdima=\PTB@default@tfsize
\PTB@tempdima=#1\PTB@tempdima
\PTB@tempdimb=1.2\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}}
\RequirePackage[svgnames]{xcolor}
\RequirePackage{multicol,graphicx}
,factor=1500
,protrusion=true
,expansion=true
,verbose=true
,final=true
,letterspace=100
,babel=true
]{microtype}
\RequirePackage{babel}
\@tempswafalse
\iflanguage{ngerman}{\@tempswatrue}{%
\iflanguage{german}{\@tempswatrue}{}%
}
\if@tempswa
\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@final@paper{}
\newcommand*\scaletoPaper[1]{\gdef\PTB@final@paper{#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}
\fi
\RequirePackage[texcoord]{eso-pic}
\RequirePackage{pict2e,picture,ifdraft,booktabs}
\RequirePackage{qrcode}
\AddToShipoutPictureBG*{% Kopf (relativ zur oberen Blattkante)
\put(\PTB@leftmargin,\PTB@tempdima){%
\textcolor{PTBcolor}{% TODO: Tikz-Grafik erzeugen (autom.?) und verwenden
\includegraphics[width=.379\linewidth]{ptbposter-logo-A.mps}}%
\hfill
\raisebox{-.01\height}{% TODO: Text (Arial?) verwenden
\includegraphics[width=.612\linewidth]{ptbposter-logo-B.mps}}%
}%
}%
\PTB@tempdima=-0.125\PTB@scale@base
\put(\PTB@leftmargin,\PTB@tempdima){\parbox[c]{\textwidth}{%
\put(\PTB@leftmargin,\PTB@tempdima){\sffamily\authorFontSize\@author}%
\linethickness{\PTB@tempdima}\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){}}%
\AddToShipoutPictureBG*{% 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){}%
\qrcode[height=\PTB@tempdima,tight]{\PTB@qrcode}}%
\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 Telefon:&\PTB@phone\\\fi
\ifx\PTB@fax\@empty\else Fax:&\PTB@fax\\\fi
\ifx\PTB@email\@empty\else E-Mail:&\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
%\show\@thefnmark
\@footnotemark}
\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
\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{$\m@th\circ$}
\renewcommand*\labelitemiii{$\m@th\diamond$}
\newcommand*\PTB@scaletoPaper[1]{%
\begingroup
\c@PTB@tempcnta=\paperheight
\iso@paper{#1}%
\c@PTB@tempcntb=\paperheight
\c@PTB@tempcnta=\dimexpr \c@PTB@tempcntb sp * 1000 / \c@PTB@tempcnta %
\global\mag\c@PTB@tempcnta
\endgroup
}
\AtBeginDocument{%
% Skalierungen in der Präambel sind passiert.
%%%\makeatletter\input{ptbposter-size.clo}\makeatother
%%%\makeatletter\input{ptbposter.patch}\makeatother% weiter vorn! Test auf Version
\changefontsizes{\the\PTB@default@fsize}%
\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}%
top=\the\dimexpr\PTB@topmargin+\PTB@textvsep,%
textwidth=\the\dimexpr\PTB@framewidth-2\PTB@texthsep,%
textheight=\the\dimexpr\PTB@frameheight-2\PTB@textvsep}%
\noexpand\normalsize
\iftrue
\PTB@tempa
\else
\paperwidth=2392.87677pt %
\paperheight=3383.03267pt %
\textwidth=2175.25656pt %
\textheight=2437.77509pt %
\oddsidemargin=36.54012pt %
\evensidemargin=36.54012pt %
\topmargin=535.06314pt %
\headheight=17.0pt %
\headsep=20.40001pt %
\topskip=11.0pt %
\footskip=47.6pt %
\marginparwidth=59.7508pt %
\marginparsep=12.8401pt %
\columnsep=88.06537pt %
\ifx\PTB@final@paper\@empty\else\PTB@scaletoPaper{\PTB@final@paper}\fi
\setlength\emergencystretch{3em}%
\@ifpackageloaded{multicol}{%
\def\setemergencystretch#1#2{}%
\RequirePackage{paralist}
\newcommand*\PTB@begin@list[1]{%
%\PTB@tempdima=\parindent
%\PTB@tempdimb=\parskip
\@nameuse{#1}%
%\parindent=\PTB@tempdima
%\parskip=\PTB@tempdimb
}
\def\enumerate{%
\PTB@begin@list{compactenum}%
}
\def\itemize{%
\PTB@begin@list{compactitem}%
}
\def\description{%
\PTB@begin@list{compactdesc}%
}
\let\enditemize\endcompactitem
\let\endenumerate\endcompactenum
\let\enddescription\endcompactdesc
\pltopsep=\medskipamount
\setlength\leftmargini{1.5em}
\setlength\leftmarginii{1.1em}
\setlength\leftmarginiii{1.1em}
\setlength\leftmarginiv{1.1em}
\setlength\labelsep{.5em}
\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@,%
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
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}