继 David Carlisle 的回答之后当没有图表时,如何列出图表?
\documentclass[10pt,twocolumn]{article}
\usepackage{lipsum}
\def\wheninteresting#1{%
\setbox0\vbox{#1}%
\ifdim\ht0>35pt
\unvbox0
\fi}
\begin{document}
\tableofcontents
\wheninteresting{
\addcontentsline{toc}{section}{List of Figures}
\listoffigures
}
\wheninteresting{
\addcontentsline{toc}{section}{List of Table}
\listoftables
}
\section{First section}
...
在我的文档中,我必须将行设置\ifdim\ht0>35pt
为\ifdim\ht0>100pt
才能使其工作。因为我不知道为什么,但我的页眉比 大35pt
。更准确地说,我\typeout{The height of the list is '\the\ht0'}
在 之前添加了\ifdim\ht0>35pt
,结果得到的The height of the list is '51.49147pt'
是一个空列表。
问题是,是否可以35pt
动态计算硬编码值,以便他的解决方案可以适用于任何乳胶文档类和样式?
答案1
这是一个近似值,但在很多情况下应该有效,并且可以实现这样的自动化(但不完美):
\documentclass[10pt,twocolumn]{article}
\usepackage{lipsum}
\newsavebox{\testbox}
\newsavebox{\testboxB}
\def\wheninteresting#1{%
\savebox{\testbox}{\vbox{#1}}%
\savebox{\testboxB}{\vbox{\large\contentsname\\[+\baselineskip]}}%
\ifdim\ht\testbox>\ht\testboxB
\usebox{\testbox}
\fi}
\begin{document}
\tableofcontents
\wheninteresting{
%\addcontentsline{toc}{section}{List of Figures}
\listoffigures
}
\wheninteresting{
%\addcontentsline{toc}{section}{List of Table}
\listoftables
}
\section{First section}
\begin{figure}
\centering
Figure
\caption{Caption}
\label{fig:my_label}
\end{figure}
\end{document}
附言:您可以\testboxB
根据文档类打印内容标题的方式来重新定义内容以达到您的目的......我只是假设这将适用于很多情况。