tufte-book 中的 caption* 对边距图和主图的行为不同

tufte-book 中的 caption* 对边距图和主图的行为不同

我发现\caption*tufte-book 中非边距图形的行为很奇怪。我使用的是 caption 包。对于边距图形,可以\caption*正确地隐藏标题开头的图形编号。对于非边距图形,图形编号会出现,后面跟着“ *”作为标题,然后实际的标题文本会直接附加在图形下方,就像它是图形的一部分一样。以下是一个例子:

\documentclass{tufte-book}
\usepackage{caption}
\captionsetup{compatibility=false}
\usepackage{lipsum}
\usepackage{mwe}

\begin{document}

\section{This section}

\begin{marginfigure}
\centering
\includegraphics[width=\textwidth]{example-image-a}
\caption*{This is a margin caption.}
\end{marginfigure}

\lipsum[1]

\begin{figure*}
\includegraphics[width=\textwidth]{example-image-b}
\caption*{This is a main caption.}
\end{figure*}

\end{document}

下面的 John Kormylo 的回答并没有起到很好的作用。它确实消除了图号,但它将标题放在了图的下方,而不是“笨拙地”将其放在一边。例如,请参见下面的两张并排图片:

左侧图片是使用此\setcaption技巧制作的。右侧图片是 tufte-book 渲染的默认方式\caption

答案1

两者都\caption经常\@makecaption被替换。 \setcaption恢复它们。

\documentclass{tufte-book}
\usepackage{caption}
\captionsetup{compatibility=false}
\makeatletter
\newcommand\setcaption{% use caption package \caption
  \let\@makecaption=\caption@makecaption
  \let\caption=\caption@caption
}
\makeatother
\usepackage{lipsum}
\usepackage{mwe}

\begin{document}

\section{This section}

\begin{marginfigure}
\centering
\includegraphics[width=\textwidth]{example-image-a}
\setcaption
\caption*{This is a margin caption.}
\end{marginfigure}

\lipsum[1]

\begin{figure*}
\includegraphics[width=\textwidth]{example-image-b}
\setcaption
\caption*{This is a main caption.}
\end{figure*}

\end{document}

\tufte@caption修改以处理 caption 包会很困难,甚至不可能\caption。但是,您始终可以重叠 marginpar 区域,这就是它的作用\tuftestuff(请随意重命名)。

我本来会使用 marginnotes 包,但它也与 tufte 不兼容。

\documentclass{tufte-book}
\usepackage{caption}
\captionsetup{compatibility=false}
\makeatletter
\newcommand\setcaption{% use caption package \caption
  \let\@makecaption=\caption@makecaption
  \let\caption=\caption@caption
}
\makeatother
\usepackage{lipsum}
\usepackage{graphicx}

\newcommand{\tuftestuff}[1]{% #1 = \caption
  \setcaption
  \rlap{\hskip\textwidth\hskip\marginparsep\smash{\parbox[t]{\marginparwidth}{#1}}}%
}

\begin{document}

\section{This section}

\begin{marginfigure}
\centering
\includegraphics[width=\textwidth]{example-image-a}
\setcaption
\caption*{This is a margin caption.}
\end{marginfigure}

\lipsum[1]

\begin{figure}
\tuftestuff{\caption*{This is a main caption.}}% must go first
\includegraphics[width=\textwidth]{example-image-b}
\end{figure}

\begin{figure*}
\includegraphics[width=\textwidth]{example-image-b}
\setcaption
\caption*{This is a main caption.}
\end{figure*}

\end{document}

相关内容