scrlttr2: Umbrüche in Absenderadresse vermeiden/zulassen

Klassen und Pakete zur einfachen Umsetzung individueller Vorstellungen


michseif
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Fr 15. Jul 2011, 21:55

scrlttr2: Umbrüche in Absenderadresse vermeiden/zulassen

Beitrag von michseif »

Hallo allerseits,

bin gerade dabei, mich etwas mit scrlttr2 zu beschäftigen. Ich möchte nun gerne meinen eigenen Briefkopf definieren, bei dem die Umbrüche nicht nach jeder komavar erfolgen (so wie per default), sondern z. B. Name und Postadresse in einer Zeile stehen und in der zweiten Zeile Telefonnummer(n) und Mailadressen.

Prinzipiell geht das ja mit \setkomavar{firsthead}. Nun habe ich aber das Problem, dass fromaddress ja üblicherweise mit "Musterstraße 88 \\ 01234 Musterstadt" befüllt wird - da ist ja ein Umbruch drin, den will ich aber in meinem Briefkopf NICHT haben.

Offensichtlich gibt es ja eine Möglichkeit, das zu bewerkstelligen, denn im backaddress ist es ja per default auch so, dass die Anschrift nicht umgebrochen wird, sondern statt des Umbruchs ein Komma gesetzt wird. Im scrguide steht auch an einer Stelle, dass die \\ nicht in jedem Fall als Umbruch interpretiert werden - leider ohne weitere Erläuterungen, wie man das beeinflussen kann.

Ich habe auch schon mal einen Blick in die scrlltr2.cls geworfen, nur leider bin ich absolut nicht firm in low-level-TeX, weshalb ich da nicht wirklich was Hilfreiches draus gewinnen konnte...

skater
Forum-Guru
Forum-Guru
Beiträge: 356
Registriert: Do 12. Mär 2009, 14:34
Wohnort: Berlin

Beitrag von skater »

\setkomavar{firsthead}{%
	\raggedleft
	\usekomavar{fromname}
	\hspace{\fill}
	{\def\\{\usekomavar{backaddressseparator}}\usekomavar{fromaddress}} \\*
	\usekomavar{fromemail} \\*
	\usekomavar{frommobile}}
Und es ist wirklich nur ein Vorschlag.

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

Beitrag von KOMA »

Bei dem Vorschlag wird das optionale Argument von \\ nicht berücksichtigt. Außerdem sind die * überflüssig, da im Kopf ohnehin kein Seitenumbruch erfolgen kann:
\setkomavar{firsthead}{%
   \raggedleft
   \usekomavar{fromname}
   \hspace{\fill}
   {\renewcommand*\\[1][]{\usekomavar{backaddressseparator}}\usekomavar{fromaddress}} \\
   \usekomavar{fromemail} \\
   \usekomavar{frommobile}}
Durch die Verwendung von \renewcommand mit einem optionalen Argument, das ignoriert wird, wird das optionale Argument von \\ ggf. geschluckt. Was nicht berücksichtigt ist, ist ein \\*, aber der Stern ist ohnehin an der Stelle eher nutzlos und wird auch beim Setzen von backaddress nicht berücksichtigt.

BTW: Beim Setzen von backaddress wird das optionale Argument übrigens durch ein angehängtes \@ogobble entfernt. Könnte man oben auch machen, muss dann aber \makeatletter…\makeatother verwenden (siehe Wiki).

skater
Forum-Guru
Forum-Guru
Beiträge: 356
Registriert: Do 12. Mär 2009, 14:34
Wohnort: Berlin

Beitrag von skater »

KOMA hat geschrieben:BTW: Beim Setzen von backaddress wird das optionale Argument übrigens durch ein angehängtes \@ogobble entfernt. Könnte man oben auch machen, muss dann aber \makeatletter…\makeatother verwenden (siehe Wiki).
1. Danke für die – mal widder ausführlichen – Hinweise.

2. Das \@ogobble hatte ich auch gesehen, es allerdings nach einem kurzen Test einfach weggelassen. Was jetzt aber mit Deinen Anmerkungen zu der Frage führt: Watt macht datt eigentlich?


Edit: Er kann lesen – zumindest nach dem ersten Kaffee. ;-)

michseif
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Fr 15. Jul 2011, 21:55

Beitrag von michseif »

Jaa das habe ich mich auch gefragt, aber es tut wohl im Prinzip nichts anderes. Ich definiere also (nur noch mal zum Verständnis) das "Makro" \\ um, sodass es etwas völlig anderes tut als umzubrechen - verblüffend einfach, wusste nur bisher nicht, dass man das mit \\ auch machen kann...

Allerdings noch zwei Fragen: Wozu dient der * nach dem renewcommand (wenn ich den weglasse, sehe ich keinen Unterschied)? Und (ganz prinzipiell): Woher kommt die "Konvention", oder wie auch immer man es nennen will, Makros mit @'s zu definieren? Ist das nur, damit man sie nicht aus Versehen (sprich ohne \makeatletter) umdefinieren kann? Ich würde ja auch nach einer Erklärung googlen, wenn ich wüsste, wonach ich da suchen sollte ;-)

Dankeschön!

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

Beitrag von KOMA »

Makros mit @ im Namen sind interne Makros. Die sind nicht für die Verwendung durch Anwender gedacht. Klassen- und Paketautoren sollten sie streng genommen auch nur verwenden, wenn dokumentiert ist, dass sie von diesen verwendet werden dürfen. Deshalb habe ich in meiner Lösung auch darauf verzichtet.

Die *-Version von \newcommand etc. ist im clsguide erklärt. Da hier in Makro, das normalerweise nicht \long definiert ist, umdefiniert wird, sollte man das auch wieder nicht \long machen. Also habe ich den * gesetzt.

Antworten