% 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 \newif\ifPTB@useCMYK \PTB@useCMYKfalse % vorerst \RequirePackage{graphicx,xcolor} \ifPTB@useCMYK \definecolor{PTBcolor}{cmyk}{1,0.32549,0.12549,0.12549}% ??? % icc:model: Europe ISO Coated FOGRA27 \else \definecolor{PTBcolor}{RGB}{0,155,206} \fi \newif\ifptb@BLN \ptb@BLNtrue \newif\ifptb@serif \ptb@seriftrue \newcommand*\ptb@lang{main=ngerman} \newcount\ptb@head \ptb@head=1 % \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} \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} \LoadClass[% ,fontsize=11pt %,DINmtext ,backaddress=plain ,refline=nodate ,enlargefirstpage ,pagenumber=no ,parskip=never ,firstfoot=true ]{scrlttr2} \LoadLetterOption{DINmtext} \RequirePackage[% ,verbose ,left=1in ,textwidth=165mm ]{geometry} \raggedbottom \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 \RequirePackage[right]{eurosym} \ifXeOrLua% XeLaTeX oder luaLaTeX \input{ptbletter-new-engines.clo} \else \input{ptbletter-old-engines.clo} \fi \def\tiny{\@setfontsize\tiny{7}{8.17}} \ifptb@serif \renewcommand*\familydefault{\rmdefault} \else \renewcommand*\familydefault{\sfdefault} \fi \let\texteuro=\officialeuro \RequirePackage[\ptb@lang]{babel} \RequirePackage{etoolbox,iflang,trimspaces} \AtEndPreamble{% \IfLanguageName{ngerman}{% \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{sigindent}{3em} \setplength{sigbeforevskip}{3mm}% \setlength{\textheight}{235mm} \setlength{\footskip}{2mm} \setlength{\footheight}{30bp} %\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 \let\raggedsignature=\raggedright \removereffields \addtokomafont{addressee}{\sffamily} \setkomafont{refname}{\sffamily\tiny} \setkomafont{refvalue}{\normalfont\footnotesize} \setkomavar{firsthead}{% \ifcase\ptb@head \or% 1 \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}}% } \end{picture} \or% 2 \begin{minipage}[b]{\linewidth}% \sffamily\bfseries\huge% Physikalisch-Technische Bundesanstalt\\[3bp]% %%%\large Braunschweig und Berlin \end{minipage}% \fi } \setkomavar{location}{% \begingroup \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}\\ \usekomavar*{emailseparator} & \usekomavar{fromemail}\\ \multicolumn{2}{@{}l@{}}{} \\ \usekomavar*{date} & \usekomavar{date} \end{tabular} \endgroup } \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}} \renewcommand*\date[1]{\ptb@setkomavar{date}{#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}% } \newcommand*\ptb@bgText[1]{% \if@tempswa \xdef\ptb@bgTextI{#1}% \else \xdef\ptb@bgTextII{#1}% \fi } \RequirePackage{eso-pic} \definecolor{bgTextColor}{gray}{0.9} \AtBeginDocument{% \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}}}}}}% }% }% \fi } \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}% \defcaptionname{german,ngerman,austrian,naustrian,% 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 \shorthandon{"}% } \RequirePackage{enumitem} \setlist{leftmargin=*,nosep,topsep=.5em,itemsep=.25em} \setlist[1]{labelindent=1em} \IfLanguageName{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,} } \endinput