PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : newcommand: Wie nutzen?



ElGato
11-07-2013, 22:34
Hallo,

sehr gerne würde ich den Empfänger eines Briefes im Dokument wiedergeben. Ich dachte an \newcommand, aber wie geht das?



\documentclass[paper=a4,ngerman,fontsize=12pt]{scrlttr2}
\usepackage{fontspec} % für XeLaTeX
\usepackage{babel}
\usepackage{hyperref}


\begin{document}
\begin{letter}{
Max Muster\newline
Muster 1\newline
Muster 2\newline
Musterstr. 1\newline
12345 Musterstadt\newline
\newline % damit der Empfängertext nicht zu tief ist
}

\opening{Hallo,}

wie gehts?
\end{letter}
\clearpage

%{\sffamily{\textbf{\Large{
% \Empfaenger
%}}}}

\end{document}


Vielen Dank!

hakaze
11-07-2013, 23:14
Da du eh mit einer KOMA-Scriptklasse arbeitest, kannst du es auch ohne newcommand regeln. Zusätzlich zu den vorhandenen Variablen kannst du nämlich über \newkomavar auch deine eigenen definieren. Hier mal für die ganze Adresse gezeigt. Das lässt sich sicher auch noch in Empfängername und -adresse aufspalten und nach dem gleichen Schema nutzen:

\documentclass[paper=a4,fontsize=12pt]{scrlttr2}
\usepackage{fontspec} % für XeLaTeX
\usepackage[ngerman]{babel}
\usepackage{hyperref}

\newkomavar{empfaenger}
\setkomavar{empfaenger}{Max Muster\newline
Muster 1\newline
Muster 2\newline
Musterstr. 1\newline
12345 Musterstadt}

\begin{document}
\begin{letter}{\usekomavar{empfaenger}}

\opening{Hallo,}

\usekomavar{empfaenger}
wie gehts?
\end{letter}
\end{document}Siehe auch scrguide.pdf (http://texdoc.net/texmf-dist/doc/latex/koma-script/scrguide.pdf)!

klops
12-07-2013, 06:31
Dafür braucht man keine eigene Variable, denn es gibt bereits die Variablen toname und toaddress, die automatisch aus dem Argument der letter-Umgebung gefüllt werden:
\documentclass[paper=a4,fontsize=12pt]{scrlttr2}
\usepackage[ngerman]{babel}
\usepackage{hyperref}

\setkomavar{fromname}{Ich}
\setkomavar{fromaddress}{Genau\\Hier}

\begin{document}
\begin{letter}{Max Muster\\Irgendwo\\Da}

\opening{Hallo \usekomavar{toname},}

wohnst Du noch immer
\begin{center}
\usekomavar{toaddress}
\end{center}
oder bist Du inzwischen umgezogen?
\closing{Bis dann}

\end{letter}
\end{document}
Siehe auch Tabelle 4.1, Seite 148 in der aktuellen KOMA-Script-Anleitung (http://mirrors.ctan.org/macros/latex/contrib/koma-script/doc/scrguide.pdf).

PS: Um babel mit XeLaTeX zu verwenden, sei übrigens unbedingt die neuste Version von babel empfohlen. Klassisch würde man mit XeLaTeX eher zu polyglossia greifen.

hakaze
12-07-2013, 07:10
Dafür braucht man keine eigene Variable, denn es gibt bereits die Variablen toname und toaddress, die automatisch aus dem Argument der letter-Umgebung gefüllt werden:Wieder was gelernt :cool:!

klops
12-07-2013, 07:25
Wieder was gelernt :cool:!
Und da behaupte einer, man könne einem alten Hasen keine neuen Sprünge beibringen … :p

ElGato
12-07-2013, 09:32
Echt super, dass es hierfür einen eigenen Befehlt gibt. Vielen Dank bisher!

Ein Problem bleibt, dass ich nicht explizit erwähnt hatte:

Das Anschriftsfeld soll nicht zu tief unter dem Absender (im Sichtfenster des Briefes) sein, deshalb hatte ich noch ein zusätzliches \newline hinzugefügt. Wenn ich das aber mache, sieht es auf der Folgeseite nicht mehr schön zentriert aus :(

Wenn ich in


\documentclass[paper=a4,ngerman,fontsize=12pt]{scrlttr2}
\usepackage{fontspec} % für XeLaTeX
\usepackage{babel}
\usepackage{hyperref}

\setkomavar{toaddress}{
Max Muster\newline
Muster 1\newline
Muster 2\newline
Musterstr. 1\newline
12345 Musterstadt\newline
%\newline % damit der Empfängertext nicht
zu tief ist verursacht Fehler & sieht auf
der Folgeseite nicht schön aus
}

\begin{document}
\begin{letter}{
\usekomavar{toaddress}
}

\opening{Hallo,}

wie gehts?
\end{letter}
\clearpage

{\sffamily{\textbf{\Large{
\usekomavar{toaddress}
}}}}

\end{document}
}

klops
12-07-2013, 15:21
Du sollst toaddress nicht vor \begin{letter} setzen und darin auch kein \newline verwenden. Schau Dir an, wie ich es gemacht habe. Und wenn Dir die Positionen nicht zusagen, dann kannst Du die leicht über Pseudolängen anpassen. Das ist in der KOMA-Script-Anleitung erklärt. Was Du da machst ist von hinten durch die Brust ins Knie. Da wundert es nicht, dass es Probleme gibt!

ElGato
14-07-2013, 12:44
Vielen Dank für die Hilfe!

So klappt es ganz gut :-)



\documentclass[paper=a4,fontsize=12pt]{scrlttr2}
\usepackage{fontspec} % für XeLaTeX
\usepackage[ngerman]{babel}
\usepackage{hyperref}

\newkomavar{empfaenger}
\setkomavar{empfaenger}{Max Muster\newline
Muster 1\newline
Muster 2\newline
Musterstr. 1\newline
12345 Musterstadt}

\begin{document}
\begin{letter}{\usekomavar{empfaenger}
\newline
\newline}


\opening{Hallo,}


Mit freundlichen Grüßen


\end{letter}
\clearpage

\Large{\usekomavar{empfaenger}\\
}


\clearpage
\end{document}

klops
15-07-2013, 07:06
Das ist noch immer von hinten durch die Brust ins Knie und wird wegen der fehlenden \\ im Argument von letter vermutlich dazu führen, dass die gesamte Adresse in toname steht. Aber, wenn Du das unbedingt so machen willst, statt so wie ich Dir das erklärt habe, dann soll mir das recht sein. Allerdings sei darauf hingewiesen, dass \Large kein Befehl mit Argument, sondern ein Umschalter ist. Also sollte man nicht:

\Large{foo\\}
schreiben, sondern

{\Large foo\par}
Siehe dazu auch jede ausführliche LaTeX-Einführung.