算法中的内联 \todo 导致水平盒子溢出

算法中的内联 \todo 导致水平盒子溢出

喂食

\documentclass{article}
\pagestyle{empty}
\usepackage{algorithm2e}
\usepackage{todonotes}
\overfullrule=2mm
\begin{document}
\begin{algorithm}
  \todo[inline]{Note}
\end{algorithm}
\end{document}

对任何 [pdf|xe|lua]latex 都会导致水平盒子过满,尽管文档没有足够的实际内容来导致过满:

输出

为什么会发生这种情况,谁是罪魁祸首,以及如何解决这个问题?

已通知 todonotes 和 algorithm2e 的维护者。

答案1

todonotes 包的维护者在这里签到。

todonotes 包依赖长度 \linewidth 来调整插入的内联待办事项的宽度。这在 itemize 环境中似乎工作正常。正如您所演示的,在 algorithm 环境中并非如此。根据http://latexref.xyz/Page-layout-parameters.html,当进入 itemize 等修改左右边距的环境时,线宽应该减小。我认为在 algorithm 环境中也应该如此。

一种解决方法是向 todo 命令指定选项inlinewidth=\linewidth-1.1cm ,如下所示。

在 todo 命令中使用 inlinewidth 选项的示例。

\documentclass{article}
\pagestyle{empty}
\usepackage{algorithm2e}
\usepackage{todonotes}
\overfullrule=2mm
\begin{document}
\noindent
\rule{\linewidth}{0.1mm}
\begin{algorithm}
\todo[inline]{Note}
\todo[inline, inlinewidth=\linewidth-1.05cm]{Note}
\end{algorithm}

\noindent
\rule{\linewidth}{0.1mm}
\todo[inline]{Note}
\noindent
\rule{\linewidth}{0.1mm}

\begin{itemize}
\item \todo[inline]{Note}
\end{itemize}

\end{document}

相关内容