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

\setcounter{errorcontextlines}{100}  \listfiles

\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{ptbletter}
    [2015/05/26 v0.1c 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

\newif\ifptb@BLN \ptb@BLNtrue
Rolf Niepraschk's avatar
Rolf Niepraschk committed
\newif\ifptb@serif \ptb@seriffalse
\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}

\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
% Texbreite beibehalten, linken Rand anpassen
\ptb@tempdima=\textwidth
\RequirePackage[verbose,inner=72bp,textwidth=\ptb@tempdima]{geometry}
Rolf Niepraschk's avatar
Rolf Niepraschk committed
%\textheight=1.1\textheight
\RequirePackage{hyphsubst}% Trennregeln austauschen
\HyphSubstIfExists{ngerman-x-latest}{%
  \HyphSubstLet{ngerman}{ngerman-x-latest}}{}
\HyphSubstIfExists{german-x-latest}{%
  \HyphSubstLet{german}{german-x-latest}}{}

\RequirePackage{ifxetex,ifluatex,url,array}
\newif\ifXeOrLua \XeOrLuafalse
\ifxetex\XeOrLuatrue\else\ifluatex\XeOrLuatrue\fi\fi

\ifXeOrLua% XeLaTeX oder luaLaTeX
  \RequirePackage{fontspec}
  \setmainfont{TeX Gyre Pagella}[Ligatures=TeX]
  \setsansfont{TeX Gyre Heros}[Scale=MatchUppercase,Ligatures=TeX]
  \setmonofont{AnonymousPro-Regular}[%
    Extension = .ttf,
    BoldFont = AnonymousPro-Bold,
    ItalicFont = AnonymousPro-Italic,
    BoldItalicFont = AnonymousPro-BoldItalic,
    Scale     = MatchLowercase
  ]
\else
  \RequirePackage[utf8]{inputenc}
  \RequirePackage[T1]{fontenc}
  \RequirePackage{textcomp}
  \RequirePackage{mathpazo}
  \RequirePackage{tgpagella}
  \RequirePackage{tgheros}
  \RequirePackage[ttdefault=true,scale=1.034]{AnonymousPro}
\fi

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

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

\def\tiny{\@setfontsize\tiny{7}{8.17}}

\ifptb@serif
  \renewcommand*\familydefault{\rmdefault}
\else
  \renewcommand*\familydefault{\sfdefault}
\fi

\@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}
\@setplength{locheight}{135bp}

%\@setplength{refaftervskip}{75bp}

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

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

\footskip= 30bp %
\@setplength{subjectaftervskip}{23bp}

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

\addtokomafont{addressee}{\sffamily}
\setkomafont{refname}{\sffamily\tiny}
\setkomafont{refvalue}{\normalfont}

\setkomavar{location}{%
  \extrarowheight=-1bp %
  \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

\newcommand*\handledby[1]{\setkomavar{handledby}{#1}}
\newcommand*\myref[1]{\setkomavar{myref}{#1}}
\newcommand*\mymail[1]{\setkomavar{mymail}{#1}}
\newcommand*\myphone[1]{\setkomavar{myphone}{#1}}
\newcommand*\myfax[1]{\setkomavar{myfax}{#1}}
\newcommand*\myemail[1]{\setkomavar{fromemail}{#1}}

\newcommand*\yourref[1]{\setkomavar{yourref}{#1}}
\newcommand*\yourmail[1]{\setkomavar{yourmail}{#1}}

\newcommand*\backaddress[1]{\setkomavar{backaddress}{#1}}
\newcommand*\subject[1]{\setkomavar{subject}{#1}}
\renewcommand*\date[1]{\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{%
  \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
  \plitemsep=\medskipamount
  \setlength\leftmargini{1.5em}
  \setlength\leftmarginii{1.1em}
  \setlength\leftmarginiii{1.1em}
  \setlength\leftmarginiv{1.1em}
  \setlength\labelsep{.5em}

  \ifxetex\else
    \RequirePackage[%
    ,factor=1500
    ,protrusion=true
    ,expansion=true
    ,verbose=true
    ,final=true
    ,letterspace=100
    ,babel=true
    ]{microtype}
  \fi
}

\newcommand*\MFG{Mit freundlichen Gr\"u\ss en}

\newcommand*\MHG{Mit herzlichen Gr\"u\ss en}