Sie sind hier

scrlttr2, Liste der Anlagen automatisch generieren

Hallo
Ich möchte bei meinen Briefen die Liste der Anlagen automatisch generieren und nach der Grussformel anzeigen lassen.

Da sämtliche verwendeten Anlagen üblicherweise auch im Text vorkommen wäre es sinnvoll wenn diese Anlagen im Anlagenverzeichnis automatisch aufgelistet und nummeriert werden.

Insbesondere bei sehr umfagnreichen Briefen ist es recht mühsam von Hand alle Anlagen die man im Text erwähnt hat herauszusuchen und dann nochmals in einer Liste mit \item¹ aufzuschreiben.

Ich habe nun wochenlang recherchiert und kein Beispiel gefunden wie man dies mit KOMA Script machen könnte. Das Problem liegt daran, dass die scrlttr2 Klasse kein TOC kennt.
Kann mir evtl. jemand einen funktionierenden Code zeigen mit dem man bei einer scrlttr2 Klasse z.B. mit dem Befehl \listoftoc{loa}¹ (a für Anlagen) ein Verzeichnis generieren kann.

[Admin-Edit:]

  1. <code></code> Tags eingefügt (siehe Formatierungshinweise)
  2. Mangels Beachtung der mehrfach verlinkten wichtigen Hinweise zur Erstellung von Beiträgen mit guter Beantwortungschance in passenderes Forum verschoben.

Bild von Markus Kohm

Mit dieser allgemeinen Fragestellung kann ich das leider nicht beantworten. Vielleicht kannst Du ein Minimalbeispiel erstellen, das uns Hinweise liefert, wie Du das gerne hättest.  Als mögliche Ideen hätte ich sonst nur zu bieten:

  • Einen Befehl definieren, der sein Argument nicht nur ausgibt, sondern zusätzlich in einer Art Speichermakro sammelt, das man dann bei den Anlagen verwendet.
  • Explizit tocbasic laden und dann tatsächlich damit ein Verzeichnis erstellen.

Es sei auch noch ganz allgemein darauf hingewiesen, dass man schon seit einigen Versionen Briefe auch mit scrartcl, scrreprt oder scrbook erstellen kann, wenn man das Paket scrletter lädt. Damit sind nahezu alle Einschränkungen, die scrlttr2 gegenüber den anderen KOMA-Script-Klassen hat, automatisch beseitigt.

Untenstehend ein MWE.
Hier habe ich die Gleitumgebung "figure" dazu missbraucht um ein Beispiel eines Anlagenverzeichnisses zu generieren.

Im Brieftext soll jedoch anstatt "Abbildung" "Anlage" stehen und dies nicht am Linken rand wie im MWE, sondern rechtsbünding, so wie ich es nun manuell reingeschrieben habe.

Zudem sollte im Anlagenverzeichnis keine Seitennummern angegeben werden und der Laufnummer soll jeweils "Anlage " vorangestellt werden, mit einem Doppelpunkt nach der Zahl.

\documentclass[version=last,fontsize=14pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{scrletter}
\begin{document}
\begin{letter}{%
Petra Mustermann\\
Vor dem Berg 1\\
12345 Musterhausen%
}
\opening{Sehr geehrte Damen und Herren,}
\begin{enumerate}
\item 
Ich habe mir fuer EUR 50'000.- ein Auto gekauft.\\
 
\begin{figure}[h]
\caption{Beweis: Kaufquittung vom 1.1.1901               \hspace*{30truemm} Anlage 1}
 \end{figure}
 \item
Nun ist die linke Tuere eingedrueckt\\
\begin{figure}[h]
\caption{Beweis: Photo der linken Tuere                      \hspace*{40truemm} Anlage 2}
\end{figure}
 
\item
Ich bitte Sie mir den Schaden zu ersetzen.
\end{enumerate}
\closing{Mit freundlichen Gruessen}
\ps PS: Ich bitte um zuegige Erledigung.
\setkomavar*{enclseparator}{Anlageverzeichnis}
\encl{\\ %
\listoffigures}
 
\end{letter}
\end{document}
Bild von Markus Kohm

Da die Anlagen immer am Ende des Briefs ausgegeben werden sollen und es vermutlich eher wenige sein werden, braucht man eigentlich keine Verzeichnisdatei, sondern kann die Anlagen einfach in einem Makro sammeln:

\documentclass[version=last,fontsize=14pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{scrletter}
\usepackage{enumitem}
\renewcaptionname{ngerman}{\enclname}{Anlage}% Ist in babel leider falsch.
 
\makeatletter
\newcommand*{\encllist}{}% Hierrin sammeln wir die Anlagen
\newcounter{encl}% Zähler für die Anlagen
\AtBeginLetter{% Bei jedem Brief neu beginnen …
  \renewcommand*{\encllist}{}% mit leerer Liste …
  \setcounter{encl}{0}% und bei Zählerstand 0
}
\newcommand{\addencl}[1]{\g@addto@macro\encllist{\item #1}}% \encllist wird um
                                % ein \item erweitert
\newcommand{\useencl}[1]{%
  \par\refstepcounter{encl}#1\hfill\enclname~\theencl\par% Anlage direkt im
                                % Text aufführen …
  \addencl{#1}% und der Anlagenliste hinzufügen.
}
\makeatother
 
\setkomavar*{enclseparator}{Anlageverzeichnis}% Willst Du AFAIK so haben.
 
\begin{document}
\begin{letter}{%
Petra Mustermann\\
Vor dem Berg 1\\
12345 Musterhausen%
}
\opening{Sehr geehrte Damen und Herren,}
\begin{enumerate}
\item Ich habe mir fuer EUR 50'000.- ein Auto gekauft.
  \useencl{Beweis: Kaufquittung vom 1.\,1.\,1901}
\item Nun ist die linke Tuere eingedrueckt.
  \useencl{Beweis: Photo der linken Tuere}
\item Ich bitte Sie mir den Schaden zu ersetzen.
\end{enumerate}
\closing{Mit freundlichen Gruessen}
\ps PS: Ich bitte um zuegige Erledigung.
\encl{% Anlagen als Aufzählung ausgeben:
  \begin{enumerate}[label={\enclname~\arabic*:},align=left]% siehe enumitem-Anleitung
    \encllist% gesammelte Anlagenliste ausgeben
  \end{enumerate}%
}
 
\end{letter}
\end{document}

Einige Bemerkungen seien mir vielleicht noch gestattet:

  • \\ im Text ist fast immer falsch. Absätze macht man einfach mit Leerzeile im Quelltext oder wie in der Definition von \useencl mit einem expliziten \par. Will man einzelne vertikale Abstände, so geht das mit Befehlen wie \smallskip. Will man generell Absatzabstände, so geht das mit Option parskip. In Aufzählungen wird aber ohnehin bereits Absatzabstand verwendet.
  • Einen Brief als Aufzählung zu verfassen halte ich für stilistisch sehr fragwürdig. Auf mich macht das einen extrem unfreundlichen Eindruck und ich wollte daher keinen solchen Brief erhalten.
  • Option ngerman passt nicht zu Schweizer Umlauten. Schweizer seien auf nswissgerman hingewiesen. Nicht-Schweizern sei die Verwendung echter Umlaute und die Deklaration der Codierung mit Paket inputenc (oder die Verwendung von lualatex oder xelatex) empfohlen.

Welche dieser Hinweise für Dich relevant sind, musst Du selbst entscheiden.

Comments for "scrlttr2, Liste der Anlagen automatisch generieren" abonnieren