我使用
\todo
包中的 \todonotes
命令。我想布局我的源代码,将 \todos
与上一段分开:
Some text.
\todo{make note}
但我不想
\todo
开始一个新段落,否则它会搞乱文档的间距。
有命令可以避免这种情况吗?
如果有一个命令/包来消耗它之前的空白,那么我可以重新定义
\todo
来使用它。
编辑:在所有内容之间添加
%
显然非常令人恼火。还有什么吗?
我必须同意其他人的观点,你可能应该添加
%
,但我确实发现这个问题很有趣。问题是,一旦 LaTeX 读取空行,它就会转换为 \par
命令,从而结束上一段。在\todo
开始时,\par
命令已经被执行,并且不可能撤消它(我认为)。因此,您唯一的希望就是防止 \par
被插入或像平常那样表现。如果你想阻止它被插入,你可以尝试阅读“The TeXbook”的第8章,它应该告诉你如何将空行转换为\par
。或者,您可以尝试根据以下想法制定解决方案:
一些文字。{\let\par 放松 odo{记下}}
但是要小心!你绝对不想全局改变
\par
的行为,这就是为什么我添加了一对额外的花括号(LaTeX命令是有范围的,所以\par
的新定义仅在组内生效)已作出定义)。祝你好运。
当宏位于不需要的空格之前时,如果您使用 \@ifnextchar 和 \@gobble,则不需要 %。
考虑类似的内容(当然在序言中):
\makeatletter
\let\oldtodo\todo
\renewcommand\todo[1]{%
\oldtodo{#1}%
\@ifnextchar\par{\@gobble}{}}
\makeatother
这样,如果你有类似的东西:
\todo{Stuff}
Things
它的作用与
相同\todo{Stuff}
%
Things
或
\todo{Stuff}
Things
你可以用像这样的宏来概括这些事情
\makeatletter
\newcommand\gobblepars{%
\@ifnextchar\par%
{\expandafter\gobblepars\@gobble}%
{}}
\makeatother
然后,您可以在任何想要占用空间的地方使用
\gobblepars
(例如在待办事项之后)。您还可以重新定义待办事项(如上所示)以自动在其后面放置 \gobblepars
。
处理前导空白区域。你也可以使用
\gobblepars
,但你必须明确。例如:
Some text\gobblepars
\todo{Stuff}
将防止 \par 出现在两行之间。
试试这个:
一些文字。 % odo{记下}
也许您不应该在文本和待办事项注释之间留下新行或只是对其进行评论
Some text.
%
\todo{make note}
怎么样
Some text.
%
\todo{make note}
%
some more text
设置
\endlinechar=-1
使空行无效。您需要使用 \par
来分隔段落,我认为这比在分隔线上键入 %
更让人恼火,但这就是您所要求的。
如何将所有尚待完成的工作保留在 \def 标签内,然后在没有更多工作要做时将其删除并正确移至文档中?
例如
\def \par1
{
It was the best of times, it was the
}
\def \par2000
{
"Repression is the only lasting philosophy. The dark deference of fear and slavery, my friend," observed the Marquis
}
\def \paridunno
{
The end
}
查尔斯·狄更斯的《两个城市的故事》
\par1
\todo{write a whole bunch of pages}
\par2000
\todo{Visit ghost of Christmas future, copy pages from finished book}
\paridunno
\todo{Think of a better ending}
这还有一个额外的好处,就是在源代码中为您提供 \listoftodos ,并且
在输出中。
只需将 odo 包含在文本中间即可。没有换行,什么也没有。
blah blah blah text odo{立即执行此操作!}更多文本blah blah blah。
在我的电脑(win xp、miktex 2.7、texniccenter)上,这个工作正常,不会产生换行符,并将待办事项注释放在页边空白处。 。 。