表格列表中不需要 \addvspace?

表格列表中不需要 \addvspace?

我尝试仅在相关元素存在时有条件地打印图表列表和表格列表。(我首先修改了这个问题的解决方案:仅当内容

以下代码适用于图表列表(存在前三行/后三行是因为我正在修改现有的论文类并尝试进行最小的更改;我的贡献是中间两行):

\newif\if@figures
\@figurestrue
\def\listoffigures{
  \newbox\tmpboxA\newbox\tmpboxB%
  \setbox\tmpboxA\vbox{\makeatletter\@input{\jobname.lof}}\setbox\tmpboxB\vbox{Figure 1}%
  \ifdim\ht\tmpboxA<\ht\tmpboxB\@figuresfalse\fi
  \if@figures\chapter*{List of Figures\markboth
  {LIST OF FIGURES}{LIST OF FIGURES}}\@starttoc{lof}\fi
}

但是,对表格列表执行相同操作却不起作用:

\newif\if@tables
\@tablestrue
\def\listoftables{
  \newbox\tmpboxA\newbox\tmpboxB%
  \setbox\tmpboxA\vbox{\makeatletter\@input{\jobname.lot}}\setbox\tmpboxB\vbox{Table 1}%
  \ifdim\ht\tmpboxA<\ht\tmpboxB\@tablesfalse\fi
  \if@tables\chapter*{List of Tables\markboth
  {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}\fi
}

我发现这是因为\jobname.lof是空的,而\jobname.lot包含六个 \addvspace{10pt}(每个章节一个)。有没有办法解决这个问题/更好的方法来处理这个问题?

编辑:清理目录后,问题似乎出在\@starttoc命令负责生成文件\jobname.lof和。因此,在调用\jobname.lot之前,测试列表的大小无法进行?\@starttoc

答案1

我建议使用链接问题中的第二个答案并使用 totalcount 包:

\documentclass[]{article}
\RequirePackage[figure,table]{totalcount}

\begin{document}
\iftotaltables
   \listoftables
\fi

\iftotalfigures
   \listoffigures
\fi

\begin{figure}
blal
\caption{a figure}
\end{figure}
\end{document}

相关内容