如何动态计算空列表的高度?

如何动态计算空列表的高度?

继 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根据文档类打印内容标题的方式来重新定义内容以达到您的目的......我只是假设这将适用于很多情况。

相关内容