这问题显示了如何从没有标题的图形中删除不必要的 :,同时保留“图 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