从 tufte-book 中的图表列表中排除图表标题

从 tufte-book 中的图表列表中排除图表标题

我正在处理tufte-bookLaTeX 文档,遇到了一个问题,我想将某个图的标题排除在图片列表 (LoF) 之外。但是,尽管使用了该\caption[]{}命令,标题仍然出现在 LoF 中。以下是我尝试的一个简单示例:

\documentclass{tufte-book}

\usepackage{caption}

\begin{document}

\begin{figure}
  \caption[]{My caption 1} % Do not expect this caption to appear in the LoF
\end{figure}

\begin{figure}
  \ContinuedFloat
  \caption{My caption 2} % Expect this caption to appear in the LoF
\end{figure}

\listoffigures

\end{document}

是否有特定的方法可以在tufte-book文档类中正确处理这种排除,或者是否有一种不涉及手动编辑 LoF 的解决方法?

答案1

您可以通过重新定义 来暂时阻止将标题内容写入图形列表\caption@addcontentsline。必须在 和 之间\makeatletter执行此操作以\makeatother处理宏名称中的“@”符号,并在组 ( \begingroup... \endgroup) 中执行此操作以恢复正常的命令定义。请注意,必须手动增加图形编号(在\refstepcounter{figure}组外)。

\documentclass{tufte-book}

\usepackage{caption}

\begin{document}

\begingroup
  \makeatletter
  \renewcommand{\caption@addcontentsline}[2]{}
  \makeatother
  \begin{figure}
    \caption{My caption 1} % Do not expect this caption to appear in the LoF
  \end{figure}
\endgroup
\refstepcounter{figure}

\begin{figure}
  \ContinuedFloat
  \caption{My caption 2} % Expect this caption to appear in the LoF
\end{figure}

\listoffigures

\end{document}

要多次使用,请定义一个新环境,例如figurenolof

\documentclass{tufte-book}

\usepackage{caption}

\makeatletter
\newenvironment{figurenolof}{%
\begingroup
  \renewcommand{\caption@addcontentsline}[2]{}
  \begin{figure}
  }{%
  \end{figure}
\endgroup
\refstepcounter{figure}
}
\makeatother

\begin{document}

\begin{figurenolof}
  \caption{My caption 1} % Do not expect this caption to appear in the LoF
\end{figurenolof}

\begin{figure}
  \ContinuedFloat
  \caption{My caption 2} % Expect this caption to appear in the LoF
\end{figure}

\listoffigures

\end{document}
```## Heading ##

答案2

Tuft 类有它自己的\caption,并且可能在每个图形环境中重置它(\AtBeginDocument没有帮助),还要注意默认将\caption@caption标题居中。

\documentclass{tufte-book}

\usepackage{caption}

\makeatletter
\let\Caption=\caption@caption% caption package \caption
\makeatother

\begin{document}

\listoffigures

\begin{figure}
  \Caption[]{My caption 1}
\end{figure}

\begin{figure}
  \ContinuedFloat
  \Caption{My caption 2}
\end{figure}

\end{document}

相关内容