von rais » So 15. Sep 2019, 20:30
Mit der Antwort kann ich nicht viel anfangen...
Bleibt erstmal die Vermutung, daß Abbildungs- und Tabellenzähler in Deinem `bestehendem Dokument' an einen anderen Zähler gebunden sind.
Mit `Bindung an einen anderen Zähler' ist gemeint, daß ein Erhöhen dieses anderen Zählers ein Rücksetzen des hier Abbildungs- und Tabellenzählers bewirkt.
Bei Verwendung einer Buch- oder Reportklasse wären beide Zähler standardmäßig an den Kapitelzähler gebunden, d.h. wenn Du nicht zufällig im letzten Kapitel eine Abbildung bzw. Tabelle hast, greift der Test ins Leere.
Ich hab mal versucht, vor einem etwaigen Rücksetzen des Abbildungszählers diesen Test zu ergänzen, damit sollte es dann auch mit Buch- und Reportklassen klappen.
Theoretisch sollte das auch noch funktionieren, wenn per \counterwithin (chngcntr bzw. seit TL18 Teil des Kerns) oder \numberwithin (amsmath) der Abbildungszähler an einen anderen Zähler gebunden wird.
\documentclass[12pt,a4paper,ngerman]{report}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[
left=2cm,
right=4cm,
top=2cm,
bottom=2.5cm,
includeheadfoot
]{geometry}
\usepackage[nottoc]{tocbibind} % Option `nottoc` setzen (s. Anleitung Abschnitt 2)
\usepackage{blindtext}
\usepackage{lmodern}
\usepackage{microtype}
\newif\iffigureseen
\figureseenfalse
\makeatletter
\newcommand*\orig@stpelt{}%
\newcommand*\tmp@a{}%
\newcommand*\tmp@b{}%
\let\orig@stpelt\@stpelt
\renewcommand*\@stpelt[1]{%
\iffigureseen
\relax
\else
\edef\tmp@a{#1}%
\edef\tmp@b{figure}%
\ifx\tmp@a\tmp@b
\ifnum\value{figure}>0
\immediate\write\@mainaux{\string\global\string\figureseentrue}%
\fi
\fi
\fi
\orig@stpelt{#1}%
}
\AtEndDocument{%
\iffigureseen
\relax
\else
\ifnum\value{figure}>0
\immediate\write\@mainaux{\string\global\string\figureseentrue}%
\fi
\fi
}
\makeatother
\begin{document}
\tableofcontents
\newpage
\iffigureseen\listoffigures\fi
\blinddocument
\begin{figure}
\caption{foo}
\end{figure}
\chapter{test}
\begin{figure}
\caption{bar}
\end{figure}
\chapter{test}
\end{document}
Wenn es damit bei Dir immer noch nicht klappt, mach ich einen Denkfehler, Dein Dokument nutzt nur subfigure statt figure, Dein Dokument kennt gar keinen Zähler namens figure, oder in Deinem Dokument sind schlicht keine Abbildungen vorhanden.
VG
Rainer
Mit der Antwort kann ich nicht viel anfangen...
Bleibt erstmal die Vermutung, daß Abbildungs- und Tabellenzähler in Deinem `bestehendem Dokument' an einen anderen Zähler gebunden sind.
Mit `Bindung an einen anderen Zähler' ist gemeint, daß ein Erhöhen dieses anderen Zählers ein Rücksetzen des hier Abbildungs- und Tabellenzählers bewirkt.
Bei Verwendung einer Buch- oder Reportklasse wären beide Zähler standardmäßig an den Kapitelzähler gebunden, d.h. wenn Du nicht zufällig im letzten Kapitel eine Abbildung bzw. Tabelle hast, greift der Test ins Leere.
Ich hab mal versucht, vor einem etwaigen Rücksetzen des Abbildungszählers diesen Test zu ergänzen, damit sollte es dann auch mit Buch- und Reportklassen klappen.
Theoretisch sollte das auch noch funktionieren, wenn per \counterwithin (chngcntr bzw. seit TL18 Teil des Kerns) oder \numberwithin (amsmath) der Abbildungszähler an einen anderen Zähler gebunden wird.
[code]
\documentclass[12pt,a4paper,ngerman]{report}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage[
left=2cm,
right=4cm,
top=2cm,
bottom=2.5cm,
includeheadfoot
]{geometry}
\usepackage[nottoc]{tocbibind} % Option `nottoc` setzen (s. Anleitung Abschnitt 2)
\usepackage{blindtext}
\usepackage{lmodern}
\usepackage{microtype}
\newif\iffigureseen
\figureseenfalse
\makeatletter
\newcommand*\orig@stpelt{}%
\newcommand*\tmp@a{}%
\newcommand*\tmp@b{}%
\let\orig@stpelt\@stpelt
\renewcommand*\@stpelt[1]{%
\iffigureseen
\relax
\else
\edef\tmp@a{#1}%
\edef\tmp@b{figure}%
\ifx\tmp@a\tmp@b
\ifnum\value{figure}>0
\immediate\write\@mainaux{\string\global\string\figureseentrue}%
\fi
\fi
\fi
\orig@stpelt{#1}%
}
\AtEndDocument{%
\iffigureseen
\relax
\else
\ifnum\value{figure}>0
\immediate\write\@mainaux{\string\global\string\figureseentrue}%
\fi
\fi
}
\makeatother
\begin{document}
\tableofcontents
\newpage
\iffigureseen\listoffigures\fi
\blinddocument
\begin{figure}
\caption{foo}
\end{figure}
\chapter{test}
\begin{figure}
\caption{bar}
\end{figure}
\chapter{test}
\end{document}
[/code]
Wenn es damit bei Dir immer noch nicht klappt, mach ich einen Denkfehler, Dein Dokument nutzt nur subfigure statt figure, Dein Dokument kennt gar keinen Zähler namens figure, oder in Deinem Dokument sind schlicht keine Abbildungen vorhanden.
VG
Rainer