待办事项占用空间

待办事项占用空间

我正在写一个较大的文档,我使用该todonotes包来添加提醒。出于某种原因,当我添加注释时,注释插入点后的空格会被删除。以下是最简单的示例:

\documentclass[12pt,a4paper,oneside]{book}
\usepackage[textsize=scriptsize,textwidth=2cm,shadow]{todonotes}
\begin{document}
Lorem ipsum dolor sit amet,\todo{stolen space} consectetuer adipiscing elit.
\end{document}

以下是我得到的结果:

带有待办事项注释的行的图像

缺失部分被放大了:

放大的部分,缺少空间

我认为这可能只是注释处于活动状态时遇到的现象,这是可以接受的,因为最终文档将没有任何注释,所以我尝试通过 禁用它们\usepackage[disable,textsize=scriptsize,textwidth=2cm,shadow]{todonotes}。现在注释消失了,但空间仍然缺失。这很糟糕。

是我做错了什么,还是这个包有缺陷todonotes

另外,我注意到当我{}在注释末尾添加 ( \todo{correct? spacing}{}) 时,缺失的空格会神奇地重新出现。但是,我不确定这是否是一个好的解决方案。

答案1

我最好的猜测是,这是一个特征和之间todonotes应该留一个空格。我测试过:这给出了正确的间距。,\todo

答案2

我简短地查看了源代码,todonotes发现启用和禁用版本\ignorespaces末尾都有一个,所以是的,它是一个特征不是一个漏洞。显然这是软件包作者的偏好。

手册中没有提到任何有关空格的内容,也没有禁用 的选项\ignorespaces。因此,您需要自己手动添加空格(只要您不使用自己的副本todonotes.sty\ignorespaces删除两者即可)。

保留空间的可能方法(其他答案中已经提到过一些):

lorem ipsum \todo{...}dolor sit amet
lorem ipsum \todo{...} dolor sit amet
lorem ipsum\todo{...}\ dolor sit amet
lorem ipsum{\todo{...}} dolor sit amet

答案3

您还可以按照以下说明进行环绕\@bsphack...\@esphack\todo修补命令以删除周围的空格以及解释如何正确修补命令的答案:)

具体来说,添加

\usepackage{xpatch}
\makeatletter
\xpretocmd{\todo}{\@bsphack}{}{}
\xapptocmd{\todo}{\@esphack}{}{}
\makeatother

对前导码进行非侵入式转换,转换\todo为不占用任何空间的命令。

答案4

这可能是在诸如空格被“删除”之类的命令之后观察到的结果 \LaTeX。因此,即使使用禁用选项,该命令仍然在代码中,并且显然以某种方式被解释。

解决方案可能是添加xspace包并使用

\newcommand{\mytodo}[1]{\todo{#1}\xspace}

(未经测试)

相关内容