Newer
Older
% Rolf Niepraschk, Rolf.Niepraschk@gmx.de
\setcounter{errorcontextlines}{100} \listfiles
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{ptbletter}[2023/04/21 v0.4c 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
\definecolor{PTBcolor}{cmyk}{1,0.32549,0.12549,0.12549}% ???
\newif\ifptb@BLN \ptb@BLNtrue
\newif\ifptb@serif \ptb@seriftrue
\newcommand*\ptb@lang{main=ngerman}
\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}
\DeclareOption{sanserif}{\ptb@seriffalse}
\DeclareOption{serif}{\ptb@seriftrue}
\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
\PassOptionsToPackage{usegeometry=true}{typearea}
,backaddress=plain
,refline=nodate
,pagenumber=no
,parskip=never
\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,tabularx,picture}
\newif\ifXeOrLua \XeOrLuafalse
\ifxetex\XeOrLuatrue\else\ifluatex\XeOrLuatrue\fi\fi
\ifXeOrLua% XeLaTeX oder luaLaTeX
\def\tiny{\@setfontsize\tiny{7}{8.17}}
\ifptb@serif
\renewcommand*\familydefault{\rmdefault}
\else
\renewcommand*\familydefault{\sfdefault}
\RequirePackage[\ptb@lang]{babel}
\RequirePackage[autostyle=true,german=guillemets,maxlevel=3]{csquotes}%
}{%
\RequirePackage[babel=once]{csquotes}
\useshorthands*{"}
\MakeAutoQuote{»}{«}
\defineshorthand{"`}{\openautoquote}
\defineshorthand{"'}{\closeautoquote}\shorthandon{"}
\AtEndOfClass{%
\@ifpackageloaded{inputenc}{}{%
\catcode`\»=\active
\catcode`\«=\active
}%
}
\setplength{toaddrhpos}{72bp}
\setplength{toaddrvpos}{124bp}
\setplength{lochpos}{-354bp}% "-" --> vom linken Blattand aus
\setplength{locvpos}{146bp}% --> vom oberen Blattand aus
\setplength{locwidth}{212bp}
\setplength{locheight}{139bp}
\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{sigbeforevskip}{3mm}%
\setlength{\footskip}{2mm}
%\widowpenalties 2 10000 0 %
\usepackage[defaultlines=2]{nowidow}
\setnowidow% keine einzelne Zeile am Seitenbeginn (keine "Hurenkinder")
% https://tex.stackexchange.com/questions/21983/how-to-avoid-page-breaks-inside-paragraphs
\removereffields
\addtokomafont{addressee}{\sffamily}
\setkomafont{refname}{\sffamily\tiny}
\setkomafont{refvalue}{\normalfont\footnotesize}
\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}}%
\textcolor{PTBcolor}{\line(1,0){494bp}}%
\or% 2
\begin{minipage}[b]{\linewidth}%
\sffamily\bfseries\huge%
Physikalisch-Technische Bundesanstalt\\[3bp]%
%%%\large
Braunschweig und Berlin
\end{minipage}%
\fi
\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}\\
\multicolumn{2}{@{}l@{}}{} \\
\usekomavar*{date} & \usekomavar{date}
\end{tabular}
}
\setkomavar{firstfoot}{% TODO: engl/dt
\parbox{\useplength{firstfootwidth}}{%
\sffamily\tiny
\begin{tabular}{@{}l@{}}
\IfLanguageName{ngerman}{Hausadresse, Lieferanschrift:}{Domicile:} \\
\ifptb@BLN Abbestr. 2--12 \else Bundesallee 100 \fi \\
\ifptb@BLN 10587 Berlin \else 38116 Braunschweig\fi \\
\IfLanguageName{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 \\
\IfLanguageName{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*\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}}
\newcommand*\yourref[1]{\ptb@setkomavar{yourref}{#1}}
\newcommand*\yourmail[1]{\ptb@setkomavar{yourmail}{#1}}
\newcommand*\backaddress[1]{\ptb@setkomavar{backaddress}{#1}}
\newcommand*\subject[1]{\setkomavar{subject}{#1}}
\newkomavar[\mymailname]{mymail}
\newkomavar[\myphonename]{myphone}
\newkomavar[\myfaxname]{myfax}
\newkomavar[\handledbyname]{handledby}
\newcommand*\ptb@bgTextI{}
\newcommand*\ptb@bgTextII{}
\newcommand*\bgText{%
\@ifstar{\@tempswatrue\ptb@bgText}{\@tempswafalse\ptb@bgText}%
\definecolor{bgTextColor}{gray}{0.9}
\ifx\ptb@bgTextI\@empty
\ifx\ptb@bgTextII\@empty\else
\AddToShipoutPictureBG{%
\AtTextCenter{%
\makebox(0,0)[c]{\resizebox{\textwidth}{!}{%
\rotatebox{54.7}{%
\textnormal{\textsf{\textbf{%
\color{bgTextColor}\ptb@bgTextII}}}}}}%
}%
}%
\fi
\else
\AddToShipoutPictureBG*{%
\AtTextCenter{%
\makebox(0,0)[c]{\resizebox{\textwidth}{!}{%
\rotatebox{54.7}{%
\textnormal{\textsf{\textbf{%
\color{bgTextColor}\ptb@bgTextI}}}}}}%
\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}\handledbyname{Handled by}%
swissgerman,nswissgerman}\yourrefname{Ihr Zeichen}%
\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}%
\defcaptionname{german,ngerman,austrian,naustrian,%
swissgerman,nswissgerman}\enclname{Anlagen}%
\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}
\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,}