Ich schreibe gerade meine Abschlussarbeit und habe meinen eigenen Anhangsbefehl definiert (ich mache das wirklich in Eile, also gibt es vielleicht Möglichkeiten, das besser zu machen). Was mich gerade stört, ist, dass ich eine Liste der Anhänge zweimal in das Dokument aufnehmen muss, einmal vor dem eigentlichen Beginn der Abschlussarbeit, wo das Inhaltsverzeichnis und LoF und LoT stehen, und dann zusätzlich am Ende vor den Anhängen.
Aber es funktioniert nicht. Wo übersehe ich etwas?
HINWEIS: Ich habe den Abschnittsbefehl neu definiert, um die angeforderte Formatierung zu erhalten. Dies ist auch der Grund, warum ich den Abschnittsbefehl im \priloga
Makro verwende, um dieselbe Formatierung zu erhalten. Außerdem musste ich den Abschnittszähler erneuern, damit er alphabetisch ist.
MWE:
\documentclass[a4paper,onecolumn,11pt,twoside]{article}
\usepackage{lipsum}
\usepackage{tocloft}
\newcommand{\listprilogename}{\normalsize SEZNAM PRILOG}
\newlistof{priloge}{pr}{\listprilogename}
\newcommand{\prilogalist}[1]{\refstepcounter{priloge}\addcontentsline{pr}{priloge}
{\protect\numberline{Priloga\;\Alph{priloge}}\hspace{1.6cm}#1}\par}
\newcommand{\priloga}[1]{\prilogalist{#1}\section{#1}}
\usepackage{titlesec}
\titleformat{\section}{\normalfont\normalsize\bfseries}{\thesection}{1em}{}
\titlespacing*{\section}{0pt}{*0.2}{*0.05}
\begin{document}
\clearpage
\section*{List of Appendices}
\listofpriloge
\section{Introduction}
\lipsum
\clearpage
\section*{Appendices}
\listofpriloge %this command doesn't print anything :S
\setcounter{section}{0}
\renewcommand\thesection{\Alph{section}}
\clearpage
\priloga{Additional content}
\lipsum[1-5]
\end{document}
Antwort1
Das Problem besteht darin, dass \@starttoc
(wird intern zum Lesen der gesamten Liste von ...-Dateien verwendet) die vorhandene Datei eingibt, um die Liste anzuzeigen, sie dann aber zum Schreiben öffnet, um mit dem Sammeln der neuen Liste für diesen Lauf zu beginnen. Dadurch wird die Datei gelöscht, sodass Sie sie nicht zweimal verwenden können.
Dadurch wird der Befehl nur lokal neu definiert, sodass er nur eingegeben werden kann und nicht zum Schreiben in die Datei geöffnet wird. Dies ist sicher, solange der Befehl vor Ihren Anhängen erneut ausgegeben wird, sodass die Datei zu diesem Zeitpunkt geöffnet ist.
\documentclass[a4paper,onecolumn,11pt,twoside]{article}
\usepackage{lipsum}
\usepackage{tocloft}
\newcommand{\listprilogename}{\normalsize SEZNAM PRILOG}
\newlistof{priloge}{pr}{\listprilogename}
\newcommand{\prilogalist}[1]{\refstepcounter{priloge}\addcontentsline{pr}{priloge}
{\protect\numberline{Priloga\ \Alph{priloge}}\hspace{1.6cm}#1}\par}
\newcommand{\priloga}[1]{\prilogalist{#1}\section{#1}}
\usepackage{titlesec}
\titleformat{\section}{\normalfont\normalsize\bfseries}{\thesection}{1em}{}
\titlespacing*{\section}{0pt}{*0.2}{*0.05}
\begin{document}
\clearpage
\section*{List of Appendices}
{\expandafter\def\csname @starttoc\endcsname#1{\InputIfFileExists{\jobname.#1}{}{}}%
\listofpriloge
}
\section{Introduction}
\lipsum
\clearpage
\section*{Appendices}
\listofpriloge %this command doesn't print anything :S
\setcounter{section}{0}
\renewcommand\thesection{\Alph{section}}
\clearpage
\priloga{Additional content}
\lipsum[1-5]
\end{document}
Antwort2
David hat bereits erklärt, warum Ihr anfänglicher Ansatz nicht funktioniert hat. Hier ist eine weitere mögliche Lösung, bei der ein anderer Befehl definiert wird \listofprilogei
(mit externer verknüpfter Datei mit .pri
Erweiterung). Ich habe auch das Problem mit den \hspace
Befehlen in Ihrem ursprünglichen Code behoben, die überfüllte Hboxen verursachten. Der neue Befehl \listofprilogei
kann an jeder Stelle im Dokument sicher verwendet werden:
\documentclass[a4paper,onecolumn,11pt,twoside]{article}
\usepackage{lipsum}
\usepackage{tocloft}
\usepackage{titlesec}
\titleformat{\section}
{\normalfont\normalsize\bfseries}{\thesection}{1em}{}
\titlespacing*{\section}
{0pt}{*0.2}{*0.05}
\newcommand{\listprilogename}{\normalsize SEZNAM PRILOG}
\newlistof{priloge}{pr}{\listprilogename}
\newlistentry{prilogi}{pr}{1}
\newlistentry{prilogii}{pri}{1}
\makeatletter
\renewcommand*\l@priloge{\@dottedtocline{1}{0em}{5.3em}}
\renewcommand*\l@prilogii{\@dottedtocline{1}{0em}{5.3em}}
\makeatother
\newcommand{\prilogalist}[1]{%
\refstepcounter{priloge}%
\addcontentsline{pr}{priloge}{\protect\numberline{Priloga\ \Alph{priloge}}#1}\par
\addcontentsline{pri}{priloge}
{\protect\numberline{Priloga\ \Alph{priloge}}#1}\par}
\newcommand{\priloga}[1]{\prilogalist{#1}\section{#1}}
\makeatletter
\renewcommand\contentsname{\listprilogename}
\newcommand\listofprilogei{%
\section*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\vskip10pt\@starttoc{pri}%
}
\makeatother
\begin{document}
\clearpage
\section*{List of Appendices}
\listofpriloge
\section{Introduction}
\lipsum
\clearpage
\section*{Appendices}
\listofprilogei
\setcounter{section}{0}
\renewcommand\thesection{\Alph{section}}
\clearpage
\priloga{Additional content}
\lipsum[1-5]
\clearpage
\priloga{Some additional content}
\lipsum[1-5]
\end{document}
Übrigens, diese Zeile Ihres Codes
\newcommand{\prilogalist}[1]{\refstepcounter{priloge}\addcontentsline{pr}{priloge}
{\protect\numberline{Priloga\;\Alph{priloge}}\hspace{1.6cm}#1}\par}
erzeugt Fehler, da Sie den Abstandsbefehl \; im mathematischen Modus verwenden. In meinem Code habe ich stattdessen den normalen Abstand zwischen Wörtern verwendet.