Sie sind hier

Infoblock + zusätzliche Zeilen Text in der Absenderergänzung

Hallo, mein Name ist Oliver.

Ich habe das Forum schon eifrig studiert und Nächte mit dem Wälzen des Buches (Koma-Script) zugebracht, ich komme aber leider nicht weiter.

Nutze scrlttr2 + persönliche.lco + infoblck.lco,
habe die Geschäftszeileneinträge neu geordnet...

Folgendes Problem:
- wie zentriere ich die Variablen-Bezeichner linksbündig
- wie füge ich variablen vertikalen Abstand zwischen die
Geschäftszeileneinträge ein
- wie füge ich Zusatztext in die Absenderabgabe ein: z. B.
unter die Variable "customer" den Text "Ihre Kundennummer
(bei Rückfragen immer angeben:)

Ich danke euch

Bild von Markus Kohm

Kannst du die Frage nochmal etwas genauer stellen und dabei auch ein vollständiges Minimalbeispiel dessen, was du genau gemacht hast, angeben? Ich kann mir beispielsweise nichts unter »linksbündig zentrieren« vorstellen. Normalerweise ist etwas entweder linksbündig oder zentriert. Mir ist auch nicht klar, ob vertikaler Abstand zwischen allen oder zwischen bestimmten Einträgen eingefügt werden soll.

Wie man die Bezeichner von Variablen ändert, steht in der KOMA-Script-Anleitung, beispielsweise:

\setkomavar*{customer}{Ihre~Kundennummer (bei R\"uckfragen immer angeben)}

Hallo,

möchte folgende Ergänzung zu o.g. Problemstellung geben:

Systemmerkmale:
Suse 10.0
LaTeX2e
scrlttr2 2004/09/16 v2.9t LaTeX2e KOMA document class
Zeichenkodierung: utf8, babel

Zu deinem Bsp. vom 08.01.06:
habe das Kapitel (Stichwort Variablen) in deinem Buch mehrfach gelesen (Seiten 202 ff.)... wenn ich die Var. wie beschrieben ohne Bez. def., erscheint dennoch der Trenner (in meinem Fall ein Doppelpkt.) und auch die Anordnung der Var.inhalte ist nicht so, wie ich es benötige... somit kommen wir zu dem Minimalbsp.:

\documentclass[ngerman]{scrlttr2}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{graphicx}
\KOMAoptions{paper=a4}
\LoadLetterOption{cysig} % lädt pers. Signatur + 2. lco mit weiteren
% pers. Absenderangaben etc.
\LoadLetterOption{infoblck}

\begin{document}
\sffamily{
\begin{letter}{}

%***GESCHÄFTSZEILE***
%Löscht die Einträge in der GZ
\removereffields

%***Fügt die Rechnungsnr. ein***
\newkomavar[Rechnungsnummer]{invoice2}
\addtoreffields{invoice2}
\setkomavar{invoice2}{1234} %RECHNUNGSNUMMER

%***Fügt die Kundennr. ein***
\newkomavar[Kundennummer]{customer2}
\addtoreffields{customer2}
\setkomavar{customer2}{5678} %KUNDENNUMMER

- Fine -

Erscheinugsbild u. Problembeschreibung:
- die Var.-Bezeichner erscheinen nun rechtsbündig
-Folgendes Druckbild möchte ich im Bereich der Absenderergänzung
erreichen:

Rechnungsnummer: 12345 (Variable)

Seite 1 von x

Ihre Kundennummer (bei Rückfragen bitte immer...

Kundennummer: 67890 (Variable)

Haben Sie Frage ... (Blindtext)

- Fine -

Die Leerzeilen stellen den gewünschten vert. Abstand dar, der variabel sein sollte.
Die Var.-Bezeichner erscheinen linksbündig ausgerichtet.

Ich danke dir schon im Vorab für deine Bemühungen

Gruß

Oliver

Bild von Markus Kohm

Eine komplette Lösung für das, was du skizziert hast, ist nicht trivial, und ich habe momentan leider nicht die Zeit, sie auszuarbeiten (außerdem hast du eben wieder kein vollständiges Minimalbeispiel, sondern nur einen Codeschnippsel geliefert, was mich zusätzlich Zeit kosten würde). Ich empfehle daher meinen Artikel aus DTK 2/2003 bzw. den Anhang des KOMA-Script-Buches bzw. meine Präsentation von Linuxtag 2005. Was dort ausgeführt wird, kommt dem, was du haben willst, recht nahe und sollte leicht anpassbar sein. Ansonsten ein paar Hinweise für den fortgeschrittenen LaTeX-Anwender, um selbst eine mögliche Lösung zu finden:

  • Statt mit \sffamily irgendwo am Anfang des Dokuments erreicht man serifenlos gesetzte Dokumente besser so, wie in der DE-TeX-FAQ (»Wie kann ich ein ganzes Dokument in serifenloser Schrift (z. B. Helvetica) setzen?«) beschrieben.
  • Eine Lösung für »Seite x von y« ist ebenfalls in der DE-TeX-FAQ zu finden. Diese funktioniert jedoch nur, wenn nur ein Brief pro Dokument verwendet wird. Sonst muss man mit selbst gesetzten \label (und \pageref) arbeiten.
  • Der Doppelpunkt als Trennzeichen ist in infoblock.lco AFAIR fest eingestellt. Will man den grundsätzlich nicht, entfernt man ihn. Will man ihn manchmal nicht, verwendet man variable Separatoren (vergl. die vordefinierten Briefkopfmöglichkeiten).
  • Will man unterschiedliche Abstände nach einzelnen Variablen, so gibt es nur zwei Lösungen: Entweder man erzeugt den Infoblock mit einer festen unveränderlichen Abfolge der Variablen und baut dort die Abstände fest (bzw. über Makros) ein (also im Prinzip das, was auch bei den oben genannten Artikeln gezeigt wird), oder man verwendet für die Abstände ebenfalls Variablen und legt eine neue Defaultreihenfolge für die vordefinierten Felder zusammen mit diesen Abstandsvariablen fest.

Hallo Markus,

für deine Antwort und die genannten Hinweise danke ich dir, sie haben mir schon sehr weitergeholfen; bis auf ein Problem:

Der generierte Abstand zwischen der Variablen in der infoblck.lco...
Wenn ich es richtig verstanden habe, wird er über \newkomavar{vspacemarkerfield} definiert innerhalb der erzeugten tabular-Umgebung, welche die Var. aufnimmt. Der Abstand ist von Hause auf \@setplength{refvspace}{-0.5\baselineskip} eingestellt, d.h. einen halben Zeilenabstand in Abhängihkeit des gewählten Fonts.

Wie lösche ich diesen Abstand, dass die Zeilen (Variablen der Geschäftszeile) direkt untereinander stehen?

Bild von Markus Kohm

Die Voreinstellung ist nicht -0.5\baselineskip, sondern .5\baselineskip. Man kann diesen mit \@setplength (siehe KOMA-Script-Anleitung) auch auf 0pt einstellen. Mir erscheint das aber nicht sinnvoll. Sinnvoller wäre sicher, einfach nicht vspacemarkerfield einzufügen, wenn man keinen vertikalen Abstand haben will. Die Sache ist doch so. Verwendet man:

\addtoreffields{foo}
\addtoreffield{vspacemarkerfield}
\addtoreffield{bar}

dann wird im Infofeld zwischen der Ausgabe der Variablen foo und der Variablebar ein vertikaler Abstand eingefügt, der über die Pseudolänge refvspace bestimmt ist. Verwendet man hingegen

\addtoreffields{foo}
\addtoreffield{bar}

so wird zwischen der Ausgabe der beiden Variablen kein zusätzlicher vertikaler Abstand eingefügt.

Mir ist da übrigens noch etwas eingefallen. Wenn du nur eine begrenze Anzahl unterschiedlicher Abstände haben willst, also beispielsweise einen kleinen und einen großen, dann kannst du den Mechanismus von vspacemarkerfield natürlich einfach kopieren und so zusätzlich beispielsweise bigvspacemarkerfield mit einer Pseudolänge bigrefvspace definieren.

Hallo,

leider funktioniert es nicht so wie in deinem Kommentar angegeben bzw. ich stelle mich zu dämlich an...

Ich verdeutliche meine Problemstellung anhand folgender Fragmente:

Bildschirmausgabe:
(unter dem Logo, innerhalb der Absenderergänzung)
...
Rechnungsnr.

Seite von bis

Hinweistext 1
(ABSTAND)
Fortsetzung Hinweistext

Kundennr.
...
---FINE---

brief.tex:
\documentclass[ngerman]{scrlttr2}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{graphicx}
\usepackage{scrpage}
\usepackage{lastpage}
\KOMAoptions{paper=a4}
\LoadLetterOption{cysig}
\LoadLetterOption{infoblck}
\renewcommand{\familydefault}{\sfdefault}

\begin{document}
\begin{letter}{}

%***GESCHÄFTSZEILE***
%Löscht die Einträge in der GZ
\removereffields

%***RECHNUNGSNUMMER**
\newkomavar[]{invoice2}
\addtoreffields{invoice2}
\setkomavar{invoice2}{{\scriptsize Rechnungsnummer} 1234}%RECHNUNGSNUMMER

%***SEITENZAHL***
\newkomavar*[]{seitenzahl}
\setkomavar{seitenzahl}{{\scriptsize Seite \thepage\ von \pageref{LastPage}}}

%***HINWEIS KUNDENNUMMER***
\newkomavar*[]{hinweis1}
\setkomavar{hinweis1}{{\scriptsize Ihre Kundennummer (bei Rückfragen\\ \scriptsize bitte immer angeben):}}

%***KUNDENNUMMER***
\newkomavar[]{customer2}
\addtoreffields{customer2}
\setkomavar{customer2}{} %KUNDENNUMMER
...
---FINE---

infoblck.lco:
...
\renewcommand*{\opening}{%
% First we need more room beside the address to set the info
% block. So we change meaning of locfield=wide and
% locfield=narrow. Wide will be 90% instead of 67% and narrow will
% be 75% instead of 50%.
\ifdim \useplength{locwidth}=\z@
\@setplength{locwidth}{\paperwidth}%
\ifdim \useplength{toaddrhpos}>\z@
\@addtoplength[-2]{locwidth}{\useplength{toaddrhpos}}%
\else
\@addtoplength[2]{locwidth}{\useplength{toaddrhpos}}%
\fi
\@addtoplength[-1]{locwidth}{\useplength{toaddrwidth}}%
\if@bigloc
\@setplength[.9]{locwidth}{\useplength{locwidth}}%
\else
\@setplength[.75]{locwidth}{\useplength{locwidth}}%
\fi
% Before we collect the table lines there should be no table lines:
\let\reffieldalllines=\empty
% The original definition of \@set@reffield sets a field of the
% reference line. We change this that ...
\renewcommand*{\@set@reffield}[1]{%
\ifstr{##1}{lastmarkerfield}{%
% ... at lastmarkerfield all collected table lines are put into
% a table set into `location' variable,
\setkomavar{location}{\raggedinfoblock
\begin{tabular}{ll}
\reffieldalllines
\end{tabular}
}%
}{%
\ifstr{##1}{vspacemarkerfield}{%
% ... at vspacemarkerfield a vertical space will be collected,
\l@addto@macro{\reffieldalllines}{%
% \noalign{\addvspace{\useplength{refvspace}}}%
}%
}{%
\typeout{Field: ##1}%
\ifstr{##1}{datemarkerfield}{%
% ... at datemarkerfield the date from variable `date' will
% be moved to to variable `datemarkerfield' ...
\let\scr@datemarkerfield@var=\scr@date@var
\let\scr@datemarkerfield@name=\scr@date@name
% ... and variable `date' becomes empty,
\setkomavar{date}{}%
}{}%
% ... all other variables are collected as table rows.
\ifkomavarempty{##1}{}{%
\l@addto@macro{\reffieldalllines}
{%
\usekomavar{##1}\\
}%
}%
}%
}%
}%
...
---FINE---

FRAGE:
Wie eliminiere ich den (ABSTAND) zwischen dem Hinweistext und seiner Fortsetzung?
Liegt es an dem manuell eingefügten Zeilenumbruch innerhalb der Variable (Hinweistext)... ohne Umbruch geht der Text über den rechten Seitenrand hinaus.

Ich danke dir und verbleibe mit freundlichen Grüßen

Oliver

Bild von Markus Kohm

Mangels vollständigem Minimalbeispiel kann ich nur vermuten, dass du folgendes Problem hast:

\documentclass{article}

\begin{document}
\begin{tabular}{l}
  Diese Zeile\\
  \scriptsize Das funktioniert\\%A
  \scriptsize so nicht\\%B
  richtig\\
\end{tabular}
\end{document}

Der Abstand zwischen den mit A und B markierten Zeilen ist größer als gewünscht. Das liegt schlicht daran, dass \scriptsize nur bis zum Ende der Zelle gültig ist. Das Ende der Tabellenzelle liegt in jedem Fall vor dem Ende der Tabellenzeile. Deshalb hat das \scriptsize auch keine Auswirkung auf den Abstand der Tabellenzeilen.

Es gibt nun zwei mögliche Lösungen. Entweder bei A nach dem \\ einen negativen Abstand, beispielsweise mit [-2pt] einfügen. Oder die Tabelle auf Absatzspalten (p oder eine der Möglichkeiten des array-Pakets oder X mit tabularx) umstellen. Da hier die letzte Spalte betroffen ist, müsste dann ggf. mit \tabularnewline gearbeitet werden, um das Ende der Tabellenzeilen anzuzeigen. Dafür kann dann innerhalb der Spalte ein automatischer Umbruch erfolgen.

BTW: In deinem Codeschnippsel müsste es wohl eher:

\setkomavar{hinweis1}{\scriptsize Ihre Kundennummer (bei Rückfragen\\ \scriptsize bitte immer angeben):}

heißen. Anderenfalls dürften Fehlermeldungen auftreten, weil die Gruppe mehr als eine Spalte umfasst.

Wenn du insgesamt \scriptsize für den Infoblock verwenden willst, dann solltest du \scriptsize nicht in die Variablen einbauen, sondern beispielsweise direkt nach \raggedinfoblock setzen oder dort wo du die Variablen setzte \raggedinfoblock so umdefinieren, dass es auch noch \scriptsize enthält, etwa:

\def\raggedinfoblock{\raggedright\scriptsize}
Comments for "Infoblock + zusätzliche Zeilen Text in der Absenderergänzung" abonnieren