如何检测文件中是否存在表格?

如何检测文件中是否存在表格?

我正在为我们的大学论文编写 LaTeX 模板。我面临的一个问题如下:

一位学生问我,他的论文中没有包含任何表格,他看到的是一个空的表格列表。我已将文件放入\listoftables其中.cls并告诉他对其进行评论。但是,我想知道如何检测表格的存在并自动禁用/启用任何列表,例如图表列表、表格列表、算法列表和类似的东西。

我搜索了一段时间,但除了向文档类添加如下选项之外,找不到任何解决方案:

\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

答案1

如果用户习惯于强制删除辅助文件,则自动检测浮点数的存在与否可能会变得一团糟。(您会惊讶于这种痴迷有多么普遍......)因此,我建议您采取不同的方法:提供三个文档类级选项:、nofiguresnotablesnoalgorithms由用户自己指定。如果指定了这些选项,则不会生成图形列表、表格列表和算法列表。

以下代码应该更详细地说明此建议。它设置了一个名为的文档类文件myclass.cls(您显然可以自由选择更富有想象力的名称!),该文件设置了新选项,然后调用该类report,以及.tex使用该文档类的示例用户文件myclass

附录:根据@Werner的建议,我添加了三个用户级宏的代码:\nofigures\notables\noalgorithms。用户可以将它们插入到序言中,作为在阶段提供相应选项的替代\documentclass方法

首先,类文件的代码(保存为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}
}

第二,示例用户文档。请注意,如果指定了所有三个新的 documentclass 选项 -- nofiguresnotablesnoalgorithms-- ,则不会创建任何图形、表格和算法列表。

\documentclass[nofigures,notables,noalgorithms]{myclass}

\title{Thoughts}
\author{A. Person}
\date{\today}

\begin{document}
xxx
\end{document}

答案2

您可以使用 totalcount 包。但请注意,它需要汇编以获取表格或图形的列表。

\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}

相关内容