Skip to content
Snippets Groups Projects
ptbposter.cls 10.1 KiB
Newer Older
% Rolf Niepraschk, Rolf.Niepraschk@ptb.de

\setcounter{errorcontextlines}{100}

\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{ptbposter}
    [2015/03/20 v0.2f PTB-Poster-Klasse (RN)]
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\newdimen\PTB@topmargin      % Abstand zum Rahmen
\newdimen\PTB@leftmargin     % Abstand zum Rahmen
\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@texthsep       % Abstand Textbereich zum Rand
\newdimen\PTB@textvsep       % Abstand Textbereich zum Rand

\setlength\PTB@default@fsize{41pt}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\setlength\PTB@default@afsize{106.6pt}
\setlength\PTB@default@tfsize{106.6pt}
\setlength\PTB@topmargin{215mm}
\newcommand\PTB@tempa{}
\newcommand\PTB@tempb{}
\newcommand\PTB@tempc{}
\newcommand\PTB@tempd{}
\newcommand\PTB@tempe{}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\let\PTB@tempdima=\@ovxx
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\let\PTB@tempdimb=\@ovyy{}

\newif\ifPTB@is@landscape \PTB@is@landscapefalse
\DeclareOption{portrait}{\PTB@is@landscapefalse}
\DeclareOption{landscape}{\PTB@is@landscapetrue}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\DeclareOption{sanserif}{% noch experimentell! Besser: luaTeX/xeTeX + OTF
  \AtEndOfClass{%
    \renewcommand\familydefault{\sfdefault}
    \RequirePackage{sfmath}
  }
\DeclareOption{serif}{%
  \AtEndOfClass{%
    \renewcommand\familydefault{\rmdefault}
  }
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}}

%%%\PassOptionsToClass{fontsize=\the\PTB@default@fsize}{scrartcl}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\ExecuteOptions{portrait,serif}
\ProcessOptions\relax
\RequirePackage{hyphsubst}% Trennregeln austauschen
\HyphSubstIfExists{ngerman-x-latest}{%
  \HyphSubstLet{ngerman}{ngerman-x-latest}}{}
\HyphSubstIfExists{german-x-latest}{%
  \HyphSubstLet{german}{german-x-latest}}{}

Rolf Niepraschk's avatar
Rolf Niepraschk committed
\RequirePackage{etoolbox}
\preto\@classoptionslist{ngerman,}
% Ohne Sprachangabe "deutsch" verwenden. Bessere Lösung?

% TODO: Auf OTF-Fonts wechseln (XeLaTeX / LuaLaTeX)
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\RequirePackage{textcomp}
\RequirePackage{lmodern}
\RequirePackage{tgpagella,qpxmath}
\RequirePackage{tgheros}

\LoadClass[%
,parskip=half
]{scrartcl}
\newcommand*\scaleFontSizes[1]{%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
  \PTB@tempdima=\PTB@default@fsize %
  \changefontsizes{#1\PTB@tempdima}%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\scaleFontSizes{1}%
\RequirePackage[svgnames]{xcolor}
\RequirePackage[newcommands,newparameters]{ragged2e}% ???
\RequirePackage{multicol,graphicx}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\RequirePackage[%
,factor=1500
,protrusion=true
,expansion=true
,verbose=true
,final=true
,letterspace=100
,babel=true
]{microtype}

\RequirePackage[T1]{fontenc}
\RequirePackage[utf8]{inputenc}

\RequirePackage{babel}

Rolf Niepraschk's avatar
Rolf Niepraschk committed
\AtEndOfClass{%
  \shorthandon{"}%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
  \@tempswafalse
  \iflanguage{ngerman}{\@tempswatrue}{%
    \iflanguage{german}{\@tempswatrue}{}%
  }
  \if@tempswa
    \defineshorthand{"`}{\guillemotright}%
    \defineshorthand{"'}{\guillemotleft}%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
  \fi
  \RequirePackage[final,pdfpagelabels=false,%
    plainpages=false,hypertexnames=true,hyperfootnotes=false]{hyperref}%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\RequirePackage
  [autostyle=true,babel=once,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}}

\definecolor{PTBcolor}{rgb}{0,0.67451,0.87451}

\RequirePackage[texcoord]{eso-pic}
\RequirePackage{pict2e,picture,ifdraft,booktabs}
\RequirePackage{qrcode}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\AddToShipoutPictureBG*{% Kopf (relativ zur oberen Blattkante)
  \put(\PTB@leftmargin,-95.4mm){\includegraphics[width=477mm]{ptbposter-logo.pdf}}%
  \put(\PTB@leftmargin,-160mm){\sffamily\titleFontSize\@title}%
  \def\and{, }%
  \put(\PTB@leftmargin,-190mm){\sffamily\authorFontSize\@author}%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
  % hier wird \@thanks gefüllt
  \linethickness{2mm}\color{PTBcolor}
  \put(\PTB@leftmargin,-105mm){%
    \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){}}%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\AddToShipoutPictureBG*{% Fuß (relativ zur unteren Kante des Textbereichs)
    \put(-\PTB@texthsep,-\PTB@textvsep){%
      \linethickness{.5mm}\normalcolor
      \put(-.5\@wholewidth,-50mm){%
        \ifx\PTB@qrcode\@empty
          \color{PTBcolor}\framebox(46mm,46mm){}%
        \else
          \raisebox{19mm}{\qrcode[height=46mm,tight]{\PTB@qrcode}}%
        \fi
        \color{PTBcolor}
        \hspace{2mm}\raisebox{-.5mm}{\rule{47mm}{47mm}}%
        \hspace{2mm}\framebox(46mm,46mm){}%
      }
      \setlength\PTB@tempdima{-10mm}%
      \footFontSize\sffamily\normalcolor
      \put(146mm,\PTB@tempdima){%
        \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(313mm,\PTB@tempdima){%
        \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}}
        \end{tabular}%
      }
      \put(450mm,\PTB@tempdima){%
        \begin{tabular}[t]{@{}l@{}}
          \@thanks % wurde bei der Ausführung von \@author gefüllt.
        \end{tabular}%
      }
% ===== Behandlung der Autoren (siehe ptb-abstracts.sty ) =====

\newcommand*\first@author{}
\def\author#1{}
\def\@author{}

\renewcommand\footnotetext[2][]{%
  \textsuperscript{#1}\,#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@tempa=[footnotemark],\PTB@tempb={Firstname}
  \def\PTB@tempa{#1}\def\PTB@tempb{#2}%
\newcommand\@@Author[2][]{%    \PTB@tempc=[alt. Firstname],\PTB@tempd={Surname}
  \def\PTB@tempc{#1}\def\PTB@tempd{#2}%
\newcommand\@@@Author[1][]{%   \PTB@tempe=[Address]
    \def\PTB@tempe{#1}%
    \ifx\PTB@tempd\@empty
      % Empty Surname = Addition to the previous author
      \g@addto@macro\@author{\PTB@fnmark{,}}%
    \else
      \ifx\@author\@empty
        \xdef\@author{\PTB@tempb~\PTB@tempd}%
        \xdef\first@author{\PTB@tempb~\PTB@tempd}%
      \else
        \expandafter\g@addto@macro\expandafter\@author
          \expandafter{\expandafter\and\PTB@tempb~}%
        \expandafter\g@addto@macro\expandafter\@author
          \expandafter{\PTB@tempd}% I like it ;-(
      \fi
    \fi
    \if@tempswa
      %                --> \Author*
      \g@addto@macro\@author{\PTB@dec@footnotemark}%
    \fi
    \ifx\PTB@tempa\@empty\else
      \expandafter\g@addto@macro\expandafter\@author
        \expandafter{\expandafter\PTB@fnmark\expandafter{\PTB@tempa}}%
    \ifx\PTB@tempe\@empty\else
      \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
}%

\newcommand*\authorFontSize{}
\newcommand*\footFontSize{}
\newcommand*\titleFontSize{}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\def\authorFontSize{\@setfontsize\authorFontSize{53.3}{63.96}}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\def\footFontSize{\@setfontsize\footFontSize{19.2}{23.04}}
\newcommand*\scaleTitleFontSize[1]{%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
  \PTB@tempdima=\PTB@default@tfsize
Rolf Niepraschk's avatar
Rolf Niepraschk committed
  \PTB@tempdima=#1\PTB@tempdima
  \PTB@tempdimb=1.2\PTB@tempdima
Rolf Niepraschk's avatar
Rolf Niepraschk committed
  \xdef\titleFontSize{\noexpand\@setfontsize
    \noexpand\titleFontSize{\the\PTB@tempdima}{\the\PTB@tempdimb}}%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\scaleTitleFontSize{1}
\renewcommand*\labelitemi{$\m@th\circ$}
\renewcommand*\labelitemii{$\m@th\triangleright$}
\renewcommand*\labelitemiii{$\m@th\diamond$}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
%\renewcommand*\labelitemiv{\makebox[.5em]{\scalebox{1.5}{\textbullet}}}%
\renewcommand*\labelitemiv{\textbullet}%
\setlength\leftmargini{1.5em}
\setlength\leftmarginii{1.4em}
\setlength\leftmarginiii{1.3em}
\setlength\leftmarginiv{1.2em}
\renewcommand\section{\@startsection{section}{1}{\z@}%
  {-1.5ex \@plus -.5ex \@minus -.2ex}%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
  {.8ex \@plus .2ex}%
  {\raggedsection\normalfont\sectfont\size@section}%
}

\AtBeginDocument{%
  % Skalierungen in der Präambel sind passiert.
  \RequirePackage[paper=a0paper,columnsep=2em]{geometry}%
  \setlength\PTB@texthsep{.5em}%
  \setlength\PTB@textvsep{.75em}%
  \ifPTB@is@landscape
Rolf Niepraschk's avatar
Rolf Niepraschk committed
    \setlength\PTB@leftmargin{0.5\dimexpr\paperwidth-1130mm}%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
    \setlength\PTB@leftmargin{0.5\dimexpr\paperwidth-780mm}%
  \fi
  \edef\PTB@tempa{\noexpand\newgeometry{%
    top=\the\dimexpr\PTB@topmargin+\PTB@textvsep,%
    \ifPTB@is@landscape
      landscape,%
      textwidth=\the\dimexpr1130mm-2\PTB@texthsep,%
      textheight=\the\dimexpr550mm-2\PTB@textvsep,hcentering%
    \else
      portrait,%
      textwidth=\the\dimexpr780mm-2\PTB@texthsep,%
      textheight=\the\dimexpr880mm-2\PTB@textvsep,hcentering%
    \fi
    }%
  }%
  \PTB@tempa
}

\setcounter{secnumdepth}{-2}
\renewcommand*\maketitle[1][1]{}
\renewcommand*\tableofcontents{}
\pagestyle{empty}

\endinput