使用 Tufte 和 Babel 的字幕时出错使用 \ref

使用 Tufte 和 Babel 的字幕时出错使用 \ref

我正在使用 tufte-book 类。当使用 babel 包在标题中引用 \ref 时,我收到两个错误:

“\@iiminipage 的参数有一个多余的 }。”和“段落在 \@iiminipage 完成之前就结束了。”

使用 \autoref 而不是 \ref 或者停用 babel 时不会发生该错误。

代码示例:

\documentclass[a4paper,twoside,justified,symmetric,notoc]{tufte-book} 
\usepackage[utf8]{inputenc}
\usepackage[ngerman,english]{babel}
\usepackage{graphicx}

\begin{document}

\begin{marginfigure}
\includegraphics{fig1}
\caption{xxx}
\label{fig:one}
\end{marginfigure}

\begin{figure*}[t]
\includegraphics{fig2}
\caption{Figure \ref{fig:one}...}
\label{fig:two}
\end{figure*}

\end{document}

我该如何解决这个问题?

答案1

问题似乎在于对\ifthenelsemade by的重新定义babel以及与之交互,导致其(错误地)在其他用户包之前tufte-common.def加载。hyperref

显然,\protect\ref在参数中使用\caption(尽管理论上没有必要)可以解决这个问题。

\begin{figure}[t]
\includegraphics{fig2}
\caption{Figure \protect\ref{fig:one}...}
\label{fig:two}
\end{figure}

相关内容