如何忽略待办事项后的空格?

如何忽略待办事项后的空格?

考虑以下(xpatch-fu 来自https://tex.stackexchange.com/a/68741/17423

\documentclass{article}

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

\begin{document}
Some text %
\todo{this text shouldn't be displayed}
more text
\end{document}

给出(无需我尝试修复)

在此处输入图片描述

如您所见,text和之间的单词间距more增加了一倍。从宏的使用来看,这完全合理为什么,但这肯定是不可取的行为(至少对于选项而言marginpar)。

我的修复完全无效,实际上将所有内容都插入\todo到了输入流中。:(

我怎样才能获得我需要的行为?


与上面的xpatch-fu

输出

答案1

在你的序言中添加以下几行:

\makeatletter
\xapptocmd{\@displaytodo}{\ignorespaces}{}{}
\xapptocmd{\@donetodo}{\ignorespaces}{}{}
\xapptocmd{\@@displaynothing}{\ignorespaces}{}{}
\makeatother

你就会实现你的愿望。

该宏\todo不能直接修补,因此我们修补它调用的所有宏。

梅威瑟:

\documentclass{article}

\usepackage[marginpar]{todo}
\usepackage{xpatch}
\makeatletter
\xapptocmd{\@displaytodo}{\ignorespaces}{}{}
\xapptocmd{\@donetodo}{\ignorespaces}{}{}
\xapptocmd{\@@displaynothing}{\ignorespaces}{}{}
\makeatother

\begin{document}
Some text %
\todo{this text shouldn't be displayed}
more text
\end{document} 

输出:

在此处输入图片描述

相关内容