Wie erkennt man, dass die Datei Tabellen enthält?

Wie erkennt man, dass die Datei Tabellen enthält?

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 \listoftablesdie .clsDatei 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 reportKlasse aufruft, als auch eine Beispielbenutzerdatei , die die Dokumentklasse .texverwendet .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 \documentclassStelle

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}

verwandte Informationen