我目前正在处理一份文档,需要在草稿版本中标明要完成的任务,并且希望制作一个隐藏待办事项的最终版本。该todonotes
软件包提供了一个disable
选项,可以实现这一点;它确实删除了使用该\todo
命令定义的待办事项,但它在我的自定义命令上失败了,例如:
\newcommand{\minortodo}[2][]{\todo[color=green, #1]{#2}}
使用时,最终 PDF 的输出\minortodo[inline]{change this to that}
正是[inline]change this to that
。我该如何告诉todonotes
也隐藏这些实例?(注意:删除内联并不能解决问题)。
编辑:以下最小工作示例(感谢您的建议)表明问题有另一个根源;这按预期工作(即次要待办事项也消失了):
\documentclass{book}
\usepackage[disable]{todonotes}
\newcommand{\minortodo}[2][]{\todo[color=magenta, #1]{#2}}
\begin{document}
Here's some text.
\todo[inline]{this todo goes away}
\minortodo[inline]{this one too}
\end{document}
在我的实际文档中,我使用了book
类并加载了以下包,但将它们添加到 MWE 仍然没有问题。我的文档的实际来源是一个用 pandoc 处理的 markdown 文件,没有我自己的模板,所以我想我必须研究一下 pandoc 插入了什么导致这种行为。
\usepackage{minitoc}\dominitoc
\usepackage{dot2texi}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{shapes,arrows}
\usepackage{fancyvrb}
\usepackage{tabulary}
\usepackage{todonotes}
\usepackage{varwidth}
答案1
我使用中的缺点sed
是,不是todonotes
或pandoc
。万一它可能会有用:我以为以下命令会替换\usepackage{todonotes}
为\usepackage[disable]{todonotes}
,但grep
结果却告诉我我错了:
$ sed s/\\usepackage{todonotes}/\\usepackage[disable]{todonotes}/ draftdoc.tex | grep todonotes
\Sepackage[disable]{todonotes}
因此,\todo
命令未定义(我仍然不明白它们是如何被隐藏的,而次要待办事项却没有被隐藏)。这产生了正确的结果(请注意附加的引号):
$ sed 's/\\usepackage{todonotes}/\\usepackage[disable]{todonotes}/' draftdoc.tex | grep todonotes
\usepackage[disable]{todonotes}