我使用包中的\todo
命令\todonotes
。我想将我的源代码\todos
与上一段分开放置:
Some text.
\todo{make note}
但是我不想\todo
开始一个新的段落,否则它会搞砸文档的间距。
有没有避免这种情况的命令?
如果有一个命令/包可以消耗空格,那么我可以重新定义\todo
以使用它。
编辑:在所有内容之间添加 % 显然非常烦人。还要别的吗?
我必须同意其他所有人的观点,您可能应该只添加%
,但我确实觉得这个问题很有趣。问题是,LaTeX 读取空行后,它会立即转换为\par
命令,从而结束上一段。在开始的时候\todo
,那个\par
命令已经被执行了,不可能撤消它(我认为)。所以你唯一的希望是防止它\par
被插入或表现得像往常一样。如果您想阻止它被插入,您可以尝试阅读“The TeXbook”的第 8 章,它应该告诉您如何将空行转换为\par
. 或者,您可以尝试根据以下想法制定解决方案:
一些文字。{\let\par\relax \todo{记笔记}}
但要小心!您绝对不想全局更改 的行为\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
在任何你想吃空间的地方使用(比如在待办事项之后)。您还可以重新定义 todo(如上所示)以自动在\gobblepars
其后放置 a。
处理领先的空白空间。你也可以使用\gobblepars
,但你必须明确。例如:
Some text\gobblepars
\todo{Stuff}
将防止 \par 出现在两行之间。
试试这个:
一些文字。 % \todo{记笔记}
可能你不应该在文本和待办事项之间留下新的一行,或者只是评论它
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,并且
在输出中。
只需在文本中间包含您的 \todo 即可。没有换行符,什么都没有。
blah blah blah text \todo{现在就这样做!} 更多文字 blah blah blah。
在我的电脑(win xp、miktex 2.7、texniccenter)上,这项工作正常,不会产生换行符,并将待办事项注释放在边缘。. .