无法在图片标题中使用内联待办事项

无法在图片标题中使用内联待办事项

我正在尝试使用todonotes图标题中包中的内联待办事项注释。但是,当我生成时,出现以下错误listoffigures

! Leaders not followed by proper glue.
<to be read again>
                   \hfill
l.2 ...inline]{A note in a float}}}{8}{figure.1.1}

我发现这很奇怪,因为文档说这是内联待办事项注释的预期用例之一(参见第 6 页)!

这是我的 MWE TeX 文件:

\documentclass[11pt,a4paper,draft,twoside]{scrbook}

\usepackage{fixltx2e}
\usepackage{fontspec}
\usepackage{libertine}
\usepackage{microtype}

\usepackage{graphicx}
\usepackage{float}

\usepackage[backgroundcolor=green!40,textsize=scriptsize,obeyFinal]{todonotes}

\author{Suvayu}
\date{\today}
\title{Title}

\usepackage[draft=false,bookmarks]{hyperref}
\hypersetup{
  % hidelinks,
  colorlinks,
  pagebackref,
  linkcolor=black,
}
\usepackage{bookmark}           % smarter bookmarks

\begin{document}

\maketitle
\clearpage\null\newpage

\setcounter{tocdepth}{3}
\addcontentsline{toc}{chapter}{\contentsname}
\tableofcontents
\newpage
\addcontentsline{toc}{chapter}{\listfigurename}
\listoffigures

%% Chapter 1
\chapter{What is the answer to the ultimate question?}

The answer is 42!\todo[inline]{A note \emph{not} in a float}

\begin{figure}[htb]
\centering
\includegraphics[width=\textwidth]{graphics/timelt2ps_hMom_Pt___hMom_Eta___hIPchi2_time.pdf}
\caption{Why 42, and not 43? \todo[inline]{A note in a float}}
\end{figure}

\end{document}

不幸的是,我不知道在 MWE 中包含图形文件的习惯是什么,所以我把它省略了。我想包括任何 pdf 都可以。一些观察:

  • 当我删除时\listoffigures,错误消失,
  • 当我添加一个简短的标题\caption[short]{long \todo[inline]{note}}时,错误似乎又消失了。

所以我猜问题出在排版上listoffigures。目前我有一个解决方法,但我想了解出了什么问题,以及将来如何解决类似的问题。我特别感兴趣,因为我的搜索! Leaders not followed by proper glue.导致了这一页;这让我更加好奇!

答案1

首先,我将提供的示例稍微精简一下,直到它更接近最小工作示例(MWE)

\documentclass{article}
\usepackage{todonotes}
\usepackage{hyperref}

\begin{document}
\listoffigures

\begin{figure}
\caption{Why 42, and not 43? \todo[inline]{A note in a float}}
\end{figure}

\end{document}

然后确定问题在于试图在图形列表中绘制插入的todonote,而那里不允许绘制这样的东西。

在标题中插入待办事项有两种方法。我更喜欢以下方法,即将待办事项放在标题之外。

\begin{figure}
\caption{A figure caption.}
\todo[inline]{Need to insert the figure}
\end{figure}

另一种方法是为不带 todonote 的图形列表指定文本。

\caption[Short caption]{Why 42, and not 43? \todo[inline]{A note in a float}}

下面的例子中给出了两种方法。

\documentclass{article}
\usepackage{todonotes}
\usepackage{hyperref}

\begin{document}
\listoffigures

\begin{figure}
% The line below casuses problems, as the inline note will be inserted in the list of figures
% which causes an error.
%\caption{Why 42, and not 43? \todo[inline]{A note in a float}}

% The line below works, as a different text (short caption) is given to the list of figures.
\caption[Short caption]{Why 42, and not 43? \todo[inline]{A note in a float}}
\end{figure}

 % The prefered way of inserting todo notes is to place them outside the caption.
\begin{figure}
\caption{A figure caption.}
\todo[inline]{Need to insert the figure}
\end{figure}

\end{document}

答案2

只需使用 \protect。这是一个脆弱的指挥

\begin{figure}
\caption{Why 42, and not 43? \protect \todo[inline]{A note in a float}}
\end{figure}

相关内容