3
1

Liebe Community,

anbei zunächst ein MWE zur Verdeutlichung meines Problems:

Öffne in Overleaf
%!TEX TS-program = lualatex
%!TEX encoding = UTF-8 Unicode
%!TEX spellcheck=de_DE
\documentclass{scrreprt}%

% ----------------------------------------------------------------------------
\usepackage[tuenc]{fontspec}% 
\usepackage{scrletter}
\usepackage{pdfpages}
\usepackage{enumitem}
\usepackage{polyglossia}
  \setdefaultlanguage{german}
\usepackage{mwe}
\usepackage{hyperref}

% ----------------------------------------------------------------------------
\renewcaptionname{ngerman}{\enclname}{Anlage}% Ist in babel falsch.

\makeatletter
\newcommand*{\encllist}{}% Hierrin sammeln wir die Anlagen
\newcounter{encl}% Zähler für die Anlagen
\newcounter{suencl}% Zähler für die Anlagen
\newcounter{subencl}%[encl] 
\AtBeginLetter{% Bei jedem Brief neu beginnen …
  \renewcommand*{\encllist}{}% mit leerer Liste …
  \setcounter{encl}{0}% und bei Zählerstand 0
  \setcounter{suencl}{0}% und bei Zählerstand 0
  \setcounter{subencl}{0}% und bei Zählerstand 0
}

\newcommand{\addencl}[1]{\g@addto@macro\encllist{\item #1}}% \encllist wird um ein \item erweitert
\newcommand{\useencl}[2]{%
  \refstepcounter{encl}%
  \refstepcounter{suencl}%
  #1 als \textbf{\hyperlink{#2}{\enclname~\theencl}}% Anlage direkt im Text aufführen …
    \addencl{#1}% und der Anlagenliste hinzufügen.
  }
\newcommand{\su}{\thesuencl.1}
\makeatother

\setkomavar{enclseparator}[\bfseries]{Anlageverzeichnis}
%%============================================================================
\begin{document}
\begin{letter}

Wir haben Ihnen das \useencl{Dokument}{\su} beigefügt.
Wir haben Ihnen das \useencl{Dokument 2}{\su} beigefügt.

\encl{% Anlagen als Aufzählung ausgeben:
  \begin{enumerate}[label={\enclname~\arabic*:}]%
    \encllist% gesammelte Anlagenliste ausgeben 
  \end{enumerate}}
\pagebreak

%%============================================================================
%% Dieser nachfolgende Teil sollte nach Möglichkeit entfallen
\refstepcounter{subencl}
Anlage~\thesubencl\\-- Dokument --
\pdfbookmark{Anlage~\thesubencl}{Anlage~\thesubencl}
\includepdf[link,linkname=\thesubencl,landscape=false,pages=-]{example-image-a4}% Die jeweils %einzubindenden Pdf-Dateien haben dieselben Namen wie der zugehörige \thesubencl (beginnen also %mit 1.pdf)

\refstepcounter{subencl}
Anlage~\thesubencl\\-- Dokument 2 --
\pdfbookmark{Anlage~\thesubencl}{Anlage~\thesubencl}
\includepdf[link,linkname=\thesubencl,landscape=true,pages=-]{example-image-a4}% Die jeweils %einzubindenden Pdf-Dateien haben dieselben Namen wie der zugehörige \thesubencl (beginnen also %mit 1.pdf)

\end{letter}
%%============================================================================
\end{document}

Ich würde mir nun wünschen, dass ich im Dokument nur noch einen Befehl mit bestenfalls zwei Argumenten verwenden könnte, dessen erstes Argument die jeweilige Anlage beschreibt und dessen optionales Argument darüber entscheidet, ob die eingebundene Anlage mit

Öffne in Overleaf
 landscape=true

oder

Öffne in Overleaf
 landscape=false

eingebunden wird. Der Befehl zur Einfügung von Dokument 2 könnte bei Verwendung dann in etwa so aussehen

Öffne in Overleaf
 \useencl[true]{Dokument 2}

Dieser sollte dann im besten Falle den Code-Teil im MWE nach

Öffne in Overleaf
 \end{enumerate}

entbehrlich machen.

Hierbei ist darauf hinzuweisen, dass die Anlagen jeweils nur einmal im Text referenziert werden und die entsprechenden Pdf-Dokumente aufsteigend numerisch - in der Reihenfolge ihrer Referenzierung im Text - benannt sind, sodass der Wert von

Öffne in Overleaf
 \theencl

auch dem Namen der einzubindenden Datei entspricht. Dies lies sich ohne Beifügung weiterer Dokumente im MWE nicht darstellen. Ich hoffe jedoch, es ist trotzdem klar geworden, worum es mir geht.

Vielen Dank im Voraus.

gefragt 28 Okt '17, 14:24

TeX-Newb's gravatar image

TeX-Newb
88137
Akzeptiert-Rate: 0%

bearbeitet 15 Feb '18, 17:02

cgnieder's gravatar image

cgnieder
22.1k243463

Wenn Du ohnehin schon eine KOMA-Script-Klasse und daher auch das Paket tocbasic verwendest, warum machst Du dann nicht ein ganz normales Verzeichnis damit? Einträge können dann prinzipiell mit der pdfpages-Option addtolist vorgenommen werden. Das heißt, die ganzen Anlagen werden dann ausschließlich mit \includepdf hinzugefügt. Aber vermutlich übersehe ich mal wieder etwas …

(28 Okt '17, 15:36) saputello

Hättest Du dafür ggf. einen kurzen Vorschlag? Ich habe bislang leider noch nicht mit tocbasic gearbeitet. Wichtig ist mir insbesondere, dass weiterhin eine Verlinkung der Anlage im Text zur jeweiligen Stelle des eingebundenen Dokuments gegeben ist. Ich lese allerdings gerade einmal in der Koma-Anleitung zu tocbasic. Danke schon mal für den Hinweis.

(28 Okt '17, 15:42) TeX-Newb

Hier einmal ein verkürztes Beispiel, wie man so etwas recht einfach mit \DeclareNewTOC und \includepdf machen kann:

Öffne in Overleaf
\documentclass[listof=entryprefix]{scrartcl}
\usepackage[ngerman]{babel}% funktioniert mit pdflatex, xelatex, lualatex
\usepackage{scrletter}
\usepackage{pdfpages}

\usepackage{mwe}
\usepackage{hyperref}

\let\encl\relax% Damit die Umgebung encl definiert werden kann
\DeclareNewTOC[%
  type=encl,
  name=Anlage,
  float,% nonfloat wäre genauso OK
  listname=Anlagenverzeichnis
]{encl}

\makeatletter
\newcommand*{\addencl}[2][]{%
  \providecommand*{\printencls}{\listofencls}%
  \g@addto@macro{\printencls}{%
    \clearpage
    \pdfbookmark{Anlage~\the\numexpr\value{encl}+1\relax: \detokenize{#2}}{#2}%
    \includepdf[pages=-,pagecommand={\thispagestyle{plain}},addtolist={1,encl,#2,encl:#2},#1]{#2}%
  }%
  \hyperref[encl:#2]{\texttt{\detokenize{#2}}}%
}
\makeatother

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

\begin{document}
\begin{letter}{Sie\\Da}
  \opening{Sehr geehrte Damen und Herren,}
  In \addencl{example-image-a} haben wir Ihnen ein erstes Beispiel
  angegeben. Ebenso finden Sie in \addencl{example-image-a4} eine ganze
  DIN-A4-Seite. Im Querformat sei 
  \addencl[landscape]{example-image-a4-landscape} angegeben.
  \closing{Bingo}
  \printencls
\end{letter}
\end{document}

Erste Seite mit Brieftext und Anlagenverzeichnis

Option pagecommand={\thispagestyle{plain}} wird verwendet, damit die eingebundenen Dateien auch Seitenzahlen enthalten. Anderenfalls wären die Seitenzahlen im Anlagenverzeichnis sinnlos. Dort könnte man sie natürlich ggf. leicht via Konfiguration des Eintrags entfernen, indem man beispielsweise die Pünktchen weglässt und als Format für die Seitenzahl \nullfont o. ä. angibt. Wer sich dafür interessiert, sollte sich mit \DeclareTOCStyleEntry ebenfalls im tocbasic-Kapitel der KOMA-Script-Anleitung beschäftigen.

Das optionale Argument von \addencl wird im Beispiel einfach unverändert als letzte Option(en) an \includepdf weitergereicht. Damit kann man beliebige pdfpages-Optionen an den Befehl weiterreichen, beispielsweise auch scale oder nup. Im Beispiel habe ich wie gewünscht bei einem Dokument landscape durchgereicht.

Der Verweis im Text wird übrigens einfach per \hyperref[encl:#2]{\texttt{\detokenize{#2}}} (siehe \addencl-Definition) erledigt. Wollte man da nicht den Dateinamen, sondern Anlage n stehen haben, so müsste man dort nicht einmal \hyperref[encl:#2]{Anlage~\ref*{encl:#2}} einsetzen. Da tocbasic auch hyperref berücksichtigt, würde \autoref{encl:#2} genügen. Allerdings wäre dann \enclname in der Tat auf Anlage zu ändern, anderenfalls würde man nicht Anlage 1 etc. erhalten, sondern Anlage(n) 1. Damit dürfte auch klar sein, wie man weitere Verweise auf eine bereits (oder an anderer Stelle) per \addencl hinzugefügten Anlage bekommt: Wahlweise mit \hyperref, \ref, \pageref oder \autoref, wobei sich das Label aus dem Präfix encl: gefolgt vom Dateinamen der Anlage zusammensetzt.

Bei Verwendung von scrreprt oder scrbook dürfte es außerdem sinnvoll sein, etwas wie \setuptoc{encl}{leveldown} zu verwenden. Anderenfalls wird das Anlagenverzeichnis ein Kapitel, was hier sicher nicht erwünscht ist.

Desweiteren sei auf Paket bookmark hingewiesen. Damit lassen sich die Bookmarks (aka PDF-Lesezeichen, aka PDF-Inhaltsverzeichnis) sehr weitreichend konfigurieren.

Es sei nicht verschwiegen, dass obiges Beispiel je nach Dateinamen der eingebundenen PDFs Probleme aufwerfen kann. Das liegt dann beispielsweise an den für \label erlaubten Zeichen. Mit XeLaTeX oder LuaLaTeX treten hier jedoch deutlich weniger Probleme auf.

Natürlich kann man das Ganze so nicht mehr mit normalen Anlagen via \encl verwenden. Der Befehl wurde ja stattdessen durch eine Umgebung ersetzt. Man kann aber anderseits mit \addxcontentsline beliebige Anlagen zum Anlagenverzeichnis hinzufügen. Näheres zu diesem Befehl ist ebenfalls in der KOMA-Script-Anleitung zu finden.

Permanenter link

beantwortet 30 Okt '17, 11:22

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 30 Okt '17, 11:40

Vielen lieben Dank für das anschauliche Beispiel!

(30 Okt '17, 12:29) TeX-Newb
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×130
×62
×25
×5
×2

gestellte Frage: 28 Okt '17, 14:24

Frage wurde gesehen: 5,637 Mal

zuletzt geändert: 30 Okt '17, 12:29