我正在为我们的大学论文编写 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
如果用户习惯于强制删除辅助文件,则自动检测浮点数的存在与否可能会变得一团糟。(您会惊讶于这种痴迷有多么普遍......)因此,我建议您采取不同的方法:提供三个文档类级选项:、nofigures
和notables
,noalgorithms
由用户自己指定。如果指定了这些选项,则不会生成图形列表、表格列表和算法列表。
以下代码应该更详细地说明此建议。它设置了一个名为的文档类文件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 选项 -- nofigures
、notables
和noalgorithms
-- ,则不会创建任何图形、表格和算法列表。
\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}