scrlttr2 Fehler bei Wiederverwendung: KOMA-Variable location

Klassen und Pakete zur einfachen Umsetzung individueller Vorstellungen


Trobor

scrlttr2 Fehler bei Wiederverwendung: KOMA-Variable location

Beitrag von Trobor »

Noch eine Frage,
ich erstelle gerade ein Angebot mit scrlttr2. Die Klasse ist echt super. Vor allen Dingen was das Handling mit den KOMA-Script Variablen anggeht. Aber leider bekomme ich einen Fehler wenn ich die Variable location mittels \usekomavar{location} wiederverwende.

Das Problem ist ich verstehe den Fehler und bekomme ihn auch weg indem ich in der Definition von location einen Zeilenumbruch entferne. Aber dann sieht location im eigentlich Brief unschön aus.

Aber seht selbst. Es ist vielleicht nciht ganz Minimal aber es zeigt anschaulich mein Problem.
\documentclass[pagenumber=false, parskip=half,% 
               fromalign=left, fromphone=true,%  
               fromemail=false, fromurl=false, %
               fromlogo=true, fromrule=true,
               fromalign=right]{scrlttr2}
\usepackage[ansinew]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tabularx}
\usepackage{blindtext} 

\newkomavar[Subject]{ownsubject}

%Fonts
\setkomafont{fromname}{\sffamily \LARGE}
\setkomafont{fromaddress}{\sffamily \small}
%\setkomafont{pagenumber}{\sffamily}
\setkomafont{subject}{\mdseries}
\setkomafont{backaddress}{\mdseries}

% Briefstil und Position des Briefkopfs
\LoadLetterOption{DIN} %% oder: DINmtext, SN, SNleft, KOMAold.
\makeatletter
\@setplength{firstheadvpos}{15mm}
\@setplength{locwidth}{60mm}
\@setplength{foldmarkhpos}{6.5mm}
\makeatother

%Absender
\setkomavar{fromname}{Company}
\setkomavar{fromaddress}{Musterstraße 15\\12345 Musterstadt}
\setkomavar{fromphone}{+49 (0) 1234 - 987654}
\setkomavar{fromemail}{myName@company.com}
%\setkomavar{fromurl}{www.goLaTeX.de}
\setkomavar{signature}{Mich Musterknabe}
\setkomavar{fromlogo}{
		 \put(0,0){
		 		 \parbox[tt]{65mm}{
		 		 		 \vspace{-2.5cm}%
		 		 		 		 \begin{tabular}{l}
		 		 		 		 		 \rule{4cm}{2cm}
		 		 		 		 		 %\includegraphics[width=4cm]{logo.png}\\ 
		 		 		 		 \end{tabular}
		 		 }
		 }
}
\setkomavar{backaddressseparator}{\ $\cdot$\ }


\setkomavar{location}{
\\[8ex]
\raggedleft{\footnotesize{
Ihr Ansprechpartner:\\
\usekomavar{signature}\\
%\usekomavar{fromaddress}\\
\usekomavar{fromphone}\\
\usekomavar{fromemail}
}}}%% Neben dem Adressfenster

% Geschaeftszeilenfelder
\setkomavar{myref}{A25010912\_1}%%      Unser Zeichen

\setkomavar{ownsubject}{\sffamily\textbf{\Huge Angebot\\\vspace*{0.5cm}\normalsize Nr.: \usekomavar{myref}}}

\begin{document}

\begin{letter}{Karl Kunde \\
Kundenwerkstatt Powergeld\\
Digitaldruck\\
Werkstattmusterstr. 11\\
D-12345 Musterstadt}

\opening{Sehr geehrte Damen und Herren,}
\blindtext[1]
\closing{mit freundlichen Grüßen,}

\end{letter}
\clearpage
\renewcommand{\arraystretch}{1.4}
\vspace*{3cm}
\raggedright\usekomavar{ownsubject}
\put(130,0){
		 		 \parbox[tt]{75mm}{
		 		 		 \vspace{-2.5cm}
		 		 		 		 		 \usekomavar{location}
		 		 }
}


\vspace{1cm}
\begin{center}
		 \begin{tabularx}{\textwidth}{XXXr}
		 		 Bezeichnung & Anzahl & Preis/Stück & Gesamt \\\hline
		 		 Position 1\newline\small\hspace*{0.5cm}Alu 300x200&2&99,00&198,00\\
		 		 Position 2\newline\small\hspace*{0.5cm}Profil K5&2&79,00&158,00\\
		 		 Position 3\newline\small\hspace*{0.5cm}Nutsteine K5&2&79,00&158,00\\
		 		 &&&\\
		 		 &&&\\
		 		 &&&\\
		 		 &&&\\
		 		 &&&\\
		 		 &&&\\
		 		 &&&\\
		 		 &&&\\
		 		 &&&\\
		 		 &&&\\
		 		 &&&\\
		 		 &&&\\
		 		 &&&\\
		 		 &&&\\\hline
		 		 &&\textbf{Summe:}&\textbf{514,00}
\end{tabularx}
\end{center}
\end{document} 

Ausserdem fällt dem aufmerksamen Leser das Leerzeichen nach der Email-Adresse bei der zweiten Verwendung von location auf. Ich hoffe ihr könnt mich helfen.

Grüße Troborius

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: scrlttr2 Fehler bei Wiederverwendung: KOMA-Variable loca

Beitrag von KOMA »

Trobor hat geschrieben:
\\[8ex]
Dein Problem ist sehr typisch für die missbräuchliche Verwendung von \\. TeX kann nur dann einen Zeilenumbruch einfügen, wenn bereits eine Zeile begonnen wurde. Ein Zeilenumbruch vor dem Beginn des Absatzes ist nicht möglich. Was Du eigentlich willst, ist \vspace.

Trobor

vspace in letter scrlttr2

Beitrag von Trobor »

Guten Morgen Koma,
vielen Dank für deine Antwort. (Auch wenn sie keine Lösung bringt.) Ich wusste durch ausprobieren, wie bereits erwähnt, wo der Fehler lag. Aber ich war der festen Überzeugung, dass ich das so von www.komascript.de runtergeladen habe. Bzw in einem Beispiel gefunden habe.

Als ich dann nun gestern danach gesucht habe, musste ich feststellen das es derartiges Beispiel im Netz zwar gibt doch es in keinster Weise ein Beispiel von komascript.de ist.

Leider abe funktioniert es auch mit \vspace nicht. Wenn ich nun den location Block im obigen Beispiel durch folgenden ersetze, so ändern sich was bei der zweiten Verwendung von location, nicht aber bei der ersten. Da siehts grausig aus.
\setkomavar{location}{
\vspace{8ex}
\raggedleft{\footnotesize{
Ihr Ansprechpartner:\\
\usekomavar{signature}\\
%\usekomavar{fromaddress}\\
\usekomavar{fromphone}\\
\usekomavar{fromemail}
}}}%% Neben dem Adressfenster

Greetz
Troborius

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Wisse: \vspace wirkt sich im horizontalen Modus nicht sofort, sondern erst nach der aktuellen Zeile aus:
\documentclass{article}

\begin{document}
Dies ist ein\vspace{2cm} Absatz, in der ich mit voller Absicht ein
\verb|\vspace| mitten in der ersten Zeile eingebaut habe. Wie man sehen kann,
wirkt sich das aber erst nach der ersten Zeile aus.
\end{document}
Also schlage ich vor, Du setzt ein \par davor.

An der Stelle sein noch erwähnt, dass Du vermutlich von einigen Anweisungen eine falsche Vorstellung hast: \raggedleft und \footnotesize sind Umschalter. Sie haben kein Argument, sondern wirken bis ans Ende der aktuellen Gruppe. Will man ihre Wirkung beschränken, macht man das daher nicht in der Form »\raggedleft{AUSWIRKUNG}«, sondern in der Form »{\raggedleft AUSWIRKUNG\par}«. Das Abatzende (also \par) ist bei der Umschaltung der Schriftgröße besonders wichtig, weil der gesamte Absatz mit dem Durchschuss gesetzt wird, der am Ende des Absatzes gilt:
\documentclass{article}
\usepackage{blindtext}
\begin{document}
Vergleiche:

\begin{footnotesize}\blindtext]\end{footnotesize}

oder:

{\footnotesize\blindtext}

mit:

{\footnotesize \blindtext\par}

und erkenne den Unterschied!
\end{document}

Trobor

Beitrag von Trobor »

Vielen lieben Dank Koma,
endlich mal eine Erklärung die mich weiterbringt. Sehr gut. Bin begeistert. Auch wenn dein Beispiel 14 Fehler verursacht. Aber der Unterschied ist trotzdem zu erkennen.

Habe nun die pars eingefügt und siehe da sogar die leichte Verschiebung am Ende der Emailadresse ist weg. Ich bin wirklich hocherfreut.

Hier nun nochmal der richtige location-Code:
%\setkomavar{frombank}{}
\setkomavar{location}{
\raggedleft\footnotesize
\par\vspace{8ex}Ihr Ansprechpartner:\\
\usekomavar{signature}\\
%\usekomavar{fromaddress}\\
\usekomavar{fromphone}\\
\usekomavar{fromemail}\par
}%% Neben dem Adressfenster
Interessant ist übrigens das die erste Verwendung von location eine Schrift mit Serifen beinhaltet und die zweite Verwendung serifenlos ist. Wahrscheinlich gilt auch hier die gleiche Regel wie beim Durchschuss. Gibt es denn einen Befehl der genau das Gegenteil macht? Also wieder auf Standard schaltet?

Na trotzdem nochmals DANKE. Koma deine Eklärung war echt gut.

Greetz

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Trobor hat geschrieben:Auch wenn dein Beispiel 14 Fehler verursacht.
Beide Beispiele sind getestet und erzeugen keinen einzigen Fehler.

Auf serifenlos schaltest Du selbst um, nämlich bei:
\setkomavar{ownsubject}{\sffamily\textbf{\Huge Angebot\\\vspace*{0.5cm}\normalsize Nr.: \usekomavar{myref}}} 
bzw. eigentlich erst durch dessen Verwendung in
 \raggedright\usekomavar{ownsubject}
Variablen werden bei der Verwendung nicht automatisch in Gruppen gesetzt. Wie man die Wirkung von \sffamily beschränkt, habe ich oben bereits am Beispiel von \footnotesize gezeigt. Du kannst aber auch \textsf stattdessen verwenden. Das hat wie \textbf ein Argument. Ich halte übrigens nichts davon, in den Variablen die Formatierung bereits mit einzubauen. Ich würde also in ownsubject alles Rauswerfen, was nicht wirklich das Subject ist und dann die ganzen Schriftumschaltungen und auch myref erst an der konkreten Verwendungsstelle verwenden. Diese Wiederum gehört in eine eigene, per \newcommand definierte Anweisung verpackt. Damit hast Du dann wieder eine saubere Trennung von Form und Inhalt.

Antworten