如何在 tufte-book 中使用不带标题的图形标签?

如何在 tufte-book 中使用不带标题的图形标签?

问题显示了如何从没有标题的图形中删除不必要的 :,同时保留“图 X”标签。解决方案是包含 caption 包。

不幸的是,tufte-book 类似乎不喜欢这个解决方案,如下面的 MWE 所示,它会产生警告:

Package caption Warning: \caption will not be redefined since it's already
(caption)                redefined by a document class or package which is
(caption)                unknown to the caption package.
See the caption package documentation for explanation.

问题显示了一种避免使用 caption 包的规避方法,但修改 MWE 以使用它会产生与之前完全相同的输出。

我实际上不需要本文档中的任何标题,只需要图形标签,因此,任何可以摆脱该死的 : 并将“图 X”位居中的方法都是理想的。有什么建议吗?

梅威瑟:

\documentclass{tufte-book}
\usepackage{wrapfig}
\usepackage[demo]{graphicx}
%\usepackage{caption}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@makecaption}{#1: #2}{#1}{}{}
\makeatother



\begin{document}
\begin{wrapfigure}{l}{4cm}
  \begin{center}
    \includegraphics[width=3cm]{graphic.pdf}
    \caption[Caption for the list of figures]{}
    \label{fig:figureX}
  \end{center}
\end{wrapfigure}
\begin{wrapfigure}{l}{4cm}
  \begin{center}
    \includegraphics[width=3cm]{graphic.pdf}
    \caption[Caption for the list of figures]{With caption}
    \label{fig:figureX}
  \end{center}
\end{wrapfigure}
\end{document}

输出: 在此处输入图片描述

答案1

您正在修补错误的命令。在tufte-book课堂上,它是\@caption,相关部分最初是:

\@tufte@caption@font\@tufte@caption@justification%
\noindent\csname fnum@#1\endcsname: \ignorespaces#3\par%

查看文件tufte-common.def

示例输出

\documentclass{tufte-book}
\usepackage{wrapfig}
\usepackage[demo]{graphicx}
\usepackage{etoolbox}

\makeatletter
\patchcmd{\@caption}{\csname fnum@#1\endcsname: \ignorespaces#3}{\csname fnum@#1\endcsname}{}{}
\makeatother

\begin{document}
\begin{wrapfigure}{l}{4cm}
  \begin{center}
    \includegraphics[width=3cm]{graphic.pdf}
    \caption[Caption for the list of figures]{}
    \label{fig:figureX}
  \end{center}
\end{wrapfigure}
\begin{wrapfigure}{l}{4cm}
  \begin{center}
    \includegraphics[width=3cm]{graphic.pdf}
    \caption[Caption for the list of figures]{With caption}
    \label{fig:figureX}
  \end{center}
\end{wrapfigure}
\end{document}

这很容易适应测试标题是否为空,并将标题居中:

\makeatletter
\patchcmd{\@caption}{\csname fnum@#1\endcsname:
\ignorespaces#3}{\Centering
\csname fnum@#1\endcsname\ifblank{#3}{}{: \ignorespaces#3}}{}{}
\makeatother 

居中样本

相关内容