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

\setcounter{errorcontextlines}{100}  \listfiles

\NeedsTeXFormat{LaTeX2e}[1999/12/01]
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\ProvidesClass{ptbletter}[2018/01/17 v0.3a PTB-Brief-Klasse (RN)]

\let\ptb@tempdima=\@ovxx
\let\ptb@tempdimb=\@ovyy
\let\ptb@tempdimc=\@ovdx
\let\ptb@tempdimd=\@clnwd
\let\ptb@tempdime=\@clnht
\let\ptb@tempdimf=\@dashdim

Rolf Niepraschk's avatar
Rolf Niepraschk committed
\newif\ifPTB@useCMYK \PTB@useCMYKfalse % vorerst

\RequirePackage{xcolor}

\ifPTB@useCMYK
  \definecolor{PTBcolor}{cmyk}{1,0.32549,0.12549,0.12549}
% icc:model: Europe ISO Coated FOGRA27
\else
%%%\definecolor{PTBcolor}{rgb}{0,0.67451,0.87451}
  \definecolor{PTBcolor}{HTML}{00ACDF}
\fi

\newif\ifptb@BLN \ptb@BLNtrue
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\newif\ifptb@serif \ptb@seriftrue

\newcommand*\ptb@lang{main=ngerman}
\newcount\ptb@head \ptb@head=1 %
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\newcommand*\ptb@tempa{}
\newcommand*\ptb@tempb{}
\DeclareOption{german}{\def\ptb@lang{main=ngerman}}
\DeclareOption{ngerman}{\def\ptb@lang{main=ngerman}}
\DeclareOption{de}{\def\ptb@lang{main=ngerman}}
\DeclareOption{english}{\def\ptb@lang{main=english}}
\DeclareOption{en}{\def\ptb@lang{main=english}}
\DeclareOption{BS}{\ptb@BLNfalse}
\DeclareOption{BLN}{\ptb@BLNtrue}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\DeclareOption{sanserif}{\ptb@seriffalse}
\DeclareOption{serif}{\ptb@seriftrue}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\DeclareOption{head0}{\ptb@head=0}
\DeclareOption{head1}{\ptb@head=1}
\DeclareOption{head2}{\ptb@head=2}

\DeclareOption{visualize}{%
  \PassOptionsToClass{\CurrentOption}{scrlttr2}
  \AtEndOfClass{%
    \showfields{head,address,location,refline,foot}%
    %\showfields{refline}%
    \addtokomafont{field}{\color{lightgray}}%
    \setshowstyle{rule}%
    %\setshowstyle{edges}%
    %\setshowstyle{frame}% default
  }
}

\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrlttr2}}

\ExecuteOptions{pagesize}
\ProcessOptions\relax

\LoadClass[%
,DINmtext
,backaddress=plain
,refline=nodate
,pagenumber=no
,parskip=never
% Texbreite beibehalten, linken Rand anpassen
\oddsidemargin=0.0pt %
\evensidemargin=34.7124pt %
\raggedbottom
\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{ifxetex,ifluatex,url,array,tabularx,picture}
\newif\ifXeOrLua \XeOrLuafalse
\ifxetex\XeOrLuatrue\else\ifluatex\XeOrLuatrue\fi\fi

Rolf Niepraschk's avatar
Rolf Niepraschk committed
\RequirePackage[right]{eurosym}

\ifXeOrLua% XeLaTeX oder luaLaTeX
Rolf Niepraschk's avatar
Rolf Niepraschk committed
  \input{ptbletter-new-engines.clo}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
  \input{ptbletter-old-engines.clo}
Rolf Niepraschk's avatar
Rolf Niepraschk committed

\def\tiny{\@setfontsize\tiny{7}{8.17}}
Rolf Niepraschk's avatar
Rolf Niepraschk committed

\ifptb@serif 
  \renewcommand*\familydefault{\rmdefault}
\else
  \renewcommand*\familydefault{\sfdefault}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\let\texteuro=\officialeuro

%\RequirePackage{etoolbox}
%\preto\@classoptionslist{ngerman,}
% Ohne Sprachangabe "deutsch" verwenden. Bessere Lösung?

\RequirePackage[\ptb@lang]{babel}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\RequirePackage{etoolbox,iflang,trimspaces}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\AtEndPreamble{%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
  \IfLanguageName{ngerman}{
Rolf Niepraschk's avatar
Rolf Niepraschk committed
    \AtEndOfClass{\shorthandon{"}}
    \RequirePackage[autostyle=true,german=guillemets,maxlevel=3]{csquotes}%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
  }{%
    \RequirePackage[babel=once]{csquotes}
    \useshorthands*{"}
  }
  \MakeAutoQuote{»}{«}
  \defineshorthand{"`}{\openautoquote}
  \defineshorthand{"'}{\closeautoquote}
Rolf Niepraschk's avatar
Rolf Niepraschk committed

Rolf Niepraschk's avatar
Rolf Niepraschk committed
\AtEndOfClass{%
  \@ifpackageloaded{inputenc}{}{%
    \catcode`=\active
    \catcode`=\active
  }%
}

%%%\AtEndOfClass{\shorthandon{"}}
Rolf Niepraschk's avatar
Rolf Niepraschk committed

\@setplength{toaddrhpos}{72bp}
\@setplength{toaddrvpos}{124bp}
%\@setplength{toaddrwidth}{85mm}

\@setplength{lochpos}{-354bp}% "-" --> vom linken Blattand aus
\@setplength{locvpos}{146bp}%      --> vom oberen Blattand aus
\@setplength{locwidth}{212bp}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\@setplength{locheight}{139bp}

%\@setplength{refaftervskip}{75bp}

%\@setplength{refhpos}{72bp}
\@setplength{refvpos}{304bp}
%\@setplength{refwidth}{40mm}
\@setplength{refaftervskip}{\z@}

\@setplength{firstheadhpos}{72bp}
\@setplength{firstheadvpos}{50bp}
\@setplength{firstheadwidth}{469bp}

\@setplength{firstfoothpos}{72bp}
\@setplength{firstfootvpos}{764bp}
\@setplength{firstfootwidth}{\useplength{firstheadwidth}}

\@setplength{subjectaftervskip}{23bp}

%\@setplength{refvpos}{1sp}
%\@setplength{refhpos}{1sp}
%\@setplength{refwidth}{110bp}
\removereffields

\addtokomafont{addressee}{\sffamily}
\setkomafont{refname}{\sffamily\tiny}
\setkomafont{refvalue}{\normalfont\footnotesize}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\setkomavar{firsthead}{%
  \ifcase\ptb@head
  \or% 1
Rolf Niepraschk's avatar
Rolf Niepraschk committed
    \begin{picture}(0,30bp )
      \unitlength=1bp % ???
      \put(0,0) {%
        \includegraphics[width=308bp]{PTB-logo-2015.pdf}%
      }
      \put(0,-5bp) {%
        \linethickness{1bp}%
        \textcolor{PTBcolor}{\line(1,0){\linewidth}}%
      }
    \end{picture}
  \or% 2
    \begin{minipage}[b]{\linewidth}%
      \sffamily\bfseries\huge%
      Physikalisch-Technische Bundesanstalt\\[3bp]%
      %%%\large
      Braunschweig und Berlin
    \end{minipage}%
  \fi
  \begin{tabular}%
    {@{}>{\usekomafont{refname}}l<{:}@{~\,}>{\usekomafont{refvalue}}l@{}}
    \usekomavar*{yourref} & \usekomavar{yourref}\\
    \usekomavar*{yourmail} & \usekomavar{yourmail}\\
    \usekomavar*{myref} & \usekomavar{myref}\\
    \usekomavar*{mymail} & \usekomavar{mymail}\\
    \multicolumn{2}{@{}l@{}}{} \\
    \usekomavar*{handledby} & \usekomavar{handledby}\\
    \usekomavar*{myphone} & \usekomavar{myphone}\\
    \usekomavar*{myfax} & \usekomavar{myfax}\\
Rolf Niepraschk's avatar
Rolf Niepraschk committed
    \usekomavar*{emailseparator} & \usekomavar{fromemail}\\
    \multicolumn{2}{@{}l@{}}{} \\
    \usekomavar*{date} & \usekomavar{date}
  \end{tabular}
}

\setkomavar{firstfoot}{%  TODO: engl/dt
  \parbox{\useplength{firstfootwidth}}{%
    \sffamily\tiny
    \begin{tabular}{@{}l@{}}
      \iflanguage{ngerman}{Hausadresse, Lieferanschrift:}{Domicile:} \\
      \ifptb@BLN Abbestr. 2--12 \else Bundesallee 100 \fi \\
      \ifptb@BLN 10587 Berlin \else 38116 Braunschweig\fi \\
      \iflanguage{ngerman}{DEUTSCHLAND}{GERMANY} \\
    \end{tabular}%
    \hfill
    \begin{tabular}{@{}l@{~}l@{}}
      \usekomavar*{fromphone} & \ifptb@BLN +49 30 3481-0 \else +49 531 592-0 \fi \\
      \usekomavar*{fromfax} & \ifptb@BLN +49 30 3481-7490 \else +49 531 592-9292 \fi \\
      \usekomavar*{fromemail} & \ifptb@BLN poststelle\_ib@ptb.de \else poststelle@ptb.de \fi \\
      Internet: & http://www.ptb.de
    \end{tabular}%
    \hfill
    \begin{tabular}{@{}l@{~}l@{}}
      \multicolumn{2}{@{}l@{}}{Deutsche Bundesbank, Filiale Leipzig} \\
      IBAN: & DE38 8600 0000 0086 0010 40 \\
      BIC: & MARKDEF1860 \\
      VAT-Nr.:  & DE 811 240 952
    \end{tabular}%
    \hfill
    \begin{tabular}{@{}l@{}}
      \ifptb@BLN PTB Braunschweig \else PTB Berlin-Charlottenburg \fi \\
      \ifptb@BLN Bundesallee 100 \else Abbestr. 2--12 \fi \\
      \ifptb@BLN 38116 Braunschweig \else 10587 Berlin \fi \\
      \iflanguage{ngerman}{DEUTSCHLAND}{GERMANY}
    \end{tabular}%
    \hfill \mbox{}
  }%
\setkomavar{backaddressseparator}{\,\,\textbullet\,\,}
\ifptb@BLN
  \setkomavar{backaddress}{PTB\\Abbestr. 2--12\\10587 Berlin}
\else
  \setkomavar{backaddress}{PTB\\Postfach 33 45\\38023 Braunschweig}
\fi

Rolf Niepraschk's avatar
Rolf Niepraschk committed
\newcommand*\ptb@setcommand[3][]{%  #1=default (opt.), #2=macro, #3=value
  \edef\ptb@tempa{\trim@spaces@noexp{#3}}%
  \expandafter\protected@edef\csname #2\endcsname{%
    \ifx\@empty\ptb@tempa #1\else\ptb@tempa\fi}%
}
\newcommand*\ptb@setkomavar[2]{%
  \ptb@setcommand{ptb@tempb}{#2}%
  \edef\ptb@tempa{\noexpand\setkomavar{#1}{\ptb@tempb}}%
  \ptb@tempa
}
\newcommand*\handledby[1]{\ptb@setkomavar{handledby}{#1}}
\newcommand*\myref[1]{\ptb@setkomavar{myref}{#1}}
\newcommand*\mymail[1]{\ptb@setkomavar{mymail}{#1}}
\newcommand*\myphone[1]{\ptb@setkomavar{myphone}{#1}}
\newcommand*\myfax[1]{\ptb@setkomavar{myfax}{#1}}
\newcommand*\myemail[1]{\ptb@setkomavar{fromemail}{#1}}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\newcommand*\yourref[1]{\ptb@setkomavar{yourref}{#1}}
\newcommand*\yourmail[1]{\ptb@setkomavar{yourmail}{#1}}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\newcommand*\backaddress[1]{\ptb@setkomavar{backaddress}{#1}}
\newcommand*\subject[1]{\setkomavar{subject}{#1}}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\renewcommand*\date[1]{\ptb@setkomavar{date}{#1}}
\newkomavar[\mymailname]{mymail}
\newkomavar[\myphonename]{myphone}
\newkomavar[\myfaxname]{myfax}
\newkomavar[\handledbyname]{handledby}

\defcaptionname{american,australian,british,canadian,%
  english,newzealand,UKenglish,USenglish}\yourrefname{Your reference}%
\defcaptionname{american,australian,british,canadian,%
  english,newzealand,UKenglish,USenglish}\yourmailname{Your letter of}%
\defcaptionname{american,australian,british,canadian,%
  english,newzealand,UKenglish,USenglish}\myrefname{My reference}%
\defcaptionname{american,australian,british,canadian,%
  english,newzealand,UKenglish,USenglish}\mymailname{My letter of}%
\defcaptionname{american,australian,british,canadian,%
  english,newzealand,UKenglish,USenglish}\myphonename{Telephone}%
\defcaptionname{american,australian,british,canadian,%
  english,newzealand,UKenglish,USenglish}\myfaxname{Fax}%
%\defcaptionname{american,australian,british,canadian,%
%  english,newzealand,UKenglish,USenglish}\emailname{E-mail}%
\defcaptionname{american,australian,british,canadian,%
  english,newzealand,UKenglish,USenglish}\handledbyname{Handled by}%

\defcaptionname{german,ngerman,austrian,naustrian,%
  swissgerman,nswissgerman}\yourmailname{Ihre Nachricht vom}%
\defcaptionname{german,ngerman,austrian,naustrian,%
  swissgerman,nswissgerman}\myrefname{Mein Zeichen}%
\defcaptionname{german,ngerman,austrian,naustrian,%
  swissgerman,nswissgerman}\mymailname{Meine Nachricht vom}%
\defcaptionname{german,ngerman,austrian,naustrian,%
  swissgerman,nswissgerman}\myphonename{Telefondurchwahl}%
\defcaptionname{german,ngerman,austrian,naustrian,%
  swissgerman,nswissgerman}\myfaxname{Telefaxdurchwahl}%
\defcaptionname{german,ngerman,austrian,naustrian,%
  swissgerman,nswissgerman}\handledbyname{Bearbeitet von}%
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\defcaptionname{german,ngerman,austrian,naustrian,%
  swissgerman,nswissgerman}\enclname{Anlagen}%

Rolf Niepraschk's avatar
Rolf Niepraschk committed
\AtBeginDocument{%
  \ifxetex\else
    \RequirePackage[%
    ,factor=1500
    ,protrusion=true
    ,expansion=true
    ,verbose=true
    ,final=true
    ,letterspace=100
    ,babel=true
    ]{microtype}
  \fi
}
\RequirePackage{enumitem}
\setlist{leftmargin=*,nosep,topsep=.5em,itemsep=.25em}
\setlist[1]{labelindent=1em}
Rolf Niepraschk's avatar
Rolf Niepraschk committed

Rolf Niepraschk's avatar
Rolf Niepraschk committed
\iflanguage{ngerman}{%
  \newcommand*\MFG{Mit freundlichen Gr\"u\ss en}
  \newcommand*\MFg{Mit freundlichem Gru\ss}
  \newcommand*\MHG{Mit herzlichen Gr\"u\ss en}
}{%
  \newcommand*\MFG{Yours sincerely}
  \newcommand*\MFg{Sincerely}
  \newcommand*\MHG{With kind regards}
}