
Ich schreibe eine LaTeX-Vorlage für unsere Universitätsarbeiten. Dabei stehe ich vor folgendem Problem:
Ein Student fragte mich, ob seine Dissertation keine Tabellen enthalte und er eine leere Tabellenliste sehe. Ich habe
\listoftables
die.cls
Datei eingefügt und ihn gebeten, sie zu kommentieren. Ich frage mich jedoch, wie man das Vorhandensein von Tabellen erkennt und automatisch alle Listen wie Abbildungsverzeichnisse, Tabellenverzeichnisse, Algorithmenverzeichnisse und dergleichen deaktiviert/aktiviert.
Ich habe eine Weile gesucht, konnte aber keine andere Lösung finden, als der Dokumentklasse Optionen wie die folgenden hinzuzufügen:
\newif\if@alg\@algfalse
\DeclareOption{alg}{
\@algtrue
}
\ProcessOptions\relax
\if@alg
\RequirePackage{algorithmicx}
\RequirePackage{algorithm}
\RequirePackage{algpseudocode}
\renewcommand{\thealgorithm}{\arabic{chapter}.\arabic{algorithm}}
\fi
\if@alg
\listofalgorithms
\cleardoublepage
\newpage
\fi
Antwort1
Die automatische Erkennung des Vorhandenseins oder Fehlens von Floats kann durcheinander geraten, wenn der Benutzer die Angewohnheit hat, die AUX-Dateien zwanghaft zu löschen. (Sie wären überrascht, wie weit verbreitet diese Obsession ist...) Ich möchte Ihnen daher einen anderen Ansatz vorschlagen: Geben Sie drei Optionen auf Dokumentklassenebene an: nofigures
, notables
, und noalgorithms
, die vom Benutzer selbst angegeben werden. Wenn diese Optionen angegeben werden, wird keine Liste mit Abbildungen, keine Liste mit Tabellen bzw. keine Liste mit Algorithmen generiert.
Der folgende Code soll diesen Vorschlag genauer veranschaulichen. Er richtet sowohl eine Dokumentklassendatei namens myclass.cls
(Sie können natürlich auch einen phantasievolleren Namen wählen!) ein, die die neuen Optionen einrichtet und dann die report
Klasse aufruft, als auch eine Beispielbenutzerdatei , die die Dokumentklasse .tex
verwendet .myclass
Nachtrag: Auf @Werners Vorschlag hin habe ich Code für drei Benutzermakros hinzugefügt: \nofigures
, \notables
, und \noalgorithms
. Sie können vom Benutzer in die Präambel eingefügt werden, als Alternative zur Bereitstellung der entsprechenden Optionen an der \documentclass
Stelle
Zunächst der Code für die Klassendatei (zu speichern unter myclass.cls
):
\NeedsTeXFormat{LaTeX2e}[2015/01/01]
\ProvidesClass{myclass}[2018/02/21]
% define three new documentclass-level options
\newif\ifnofigures\nofiguresfalse
\newif\ifnotables\notablesfalse
\newif\ifnoalgorithms\noalgorithmsfalse
\DeclareOption{nofigures}{\nofigurestrue}
\DeclareOption{notables}{\notablestrue}
\DeclareOption{noalgorithms}{\noalgorithmstrue}
\ProcessOptions\relax
\LoadClass[]{report}
% provide three user commands: \nofigures, \notables, \noalgorithms
% (to be used as an alternative to setting documentclass-level options)
\newcommand\nofigures{\let\ifnofigures\iftrue}
\newcommand\notables{\let\ifnotables\iftrue}
\newcommand\noalgorithms{\let\ifnoalgorithms\iftrue}
\usepackage{algorithmicx,algorithm,algpseudocode}
% load any and all other default packages
\AtBeginDocument{%
\pagenumbering{roman}
\maketitle % or, likely, something far more elaborate
\ifnofigures\else\listoffigures\fi
\ifnotables\else\listoftables\fi
\ifnoalgorithms\else\listofalgorithms\fi
\clearpage
\pagenumbering{arabic}
}
Zweitens ein Beispiel für ein Benutzerdokument. Beachten Sie, dass keine Listen mit Abbildungen, Tabellen und Algorithmen erstellt werden, wenn alle drei neuen Dokumentklassenoptionen -- nofigures
, notables
, und -- angegeben werden.noalgorithms
\documentclass[nofigures,notables,noalgorithms]{myclass}
\title{Thoughts}
\author{A. Person}
\date{\today}
\begin{document}
xxx
\end{document}
Antwort2
Sie können das Paket totalcount verwenden. Beachten Sie jedoch, dass esdreiZusammenstellungen, um eine Liste von Tabellen oder Abbildungen zu erhalten.
\documentclass{book}
\RequirePackage[figure,table]{totalcount}
\begin{document}
\iftotaltables
\listoftables %no list of tables
\fi
\iftotalfigures
\listoffigures
\fi
\chapter{A}
\begin{figure}
\caption{a figure}
\end{figure}
\chapter{B}
blblb
\end{document}