乳胶:避免新的段落?

时间:2009-08-21 13:36:22

标签: layout latex spacing paragraph

我使用\todo包中的\todonotes命令。我想布置我的源代码,将\todos与上一段分开:

Some text.

\todo{make note}

但我不希望\todo开始新的段落,或者它会弄乱文档的间距。

是否有命令要避免这种情况?

如果有一个命令/包来消耗它的空格,那么我可以重新定义\todo来使用它。

编辑:在所有内容之间添加%显然非常烦人。还有什么吗?

8 个答案:

答案 0 :(得分:9)

我必须同意其他人你应该添加%,但我觉得这个问题很有意思。问题是,一旦LaTeX读取空行,它就会转换为\par命令,该命令结束前一段。在\todo开始时,\par命令已经执行,并且无法撤消它(我认为)。所以你唯一的希望是保持\par不被插入或者像通常那样表现。如果您想阻止它被插入,您可以尝试阅读“The TeXbook”的第8章,它应该告诉您如何将空行转换为\par。或者,您可以尝试根据以下类型的想法制定解决方案:

Some text.{\let\par\relax

\todo{make note}}

但请注意!你肯定不希望全局改变\par的行为,这就是为什么我添加了一对额外的花括号(LaTeX命令是作用域的,因此{{1}的新定义只在定义的组内生效)。祝你好运。

答案 1 :(得分:9)

当宏在不需要的空间之前时,如果你使用\ @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

处理前导空白区域。你也可以使用\gobblepars,但你必须明确。例如:

Some text\gobblepars

\todo{Stuff}

将阻止\ par显示在两行之间。

答案 2 :(得分:4)

试试这个:

Some text.
%
\todo{make note}

答案 3 :(得分:3)

可能是你不应该在文本和待办事项之间留下新的界限或只是评论

Some text.
%
\todo{make note}

答案 4 :(得分:2)

怎么样

Some text.
%
\todo{make note}
%
some more text

答案 5 :(得分:2)

设置\endlinechar=-1以使空行无效。您需要使用\par来分隔段落,我认为这比在分隔线上键入%更令人恼火,但这就是您所要求的。

答案 6 :(得分:1)

如果还没有工作,那么保留仍然有工作的内容在\ def标签内部进行,然后将其移除并在没有其他工作要做的情况下将其移动到文档中?

E.g。

\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和

在输出中。

答案 7 :(得分:0)

只需将\ todo直接包含在文本中间即可。没有换行,没有什么。

blat blah blah text \ todo {现在就这样做!}更多文字等等等等。

在我的电脑上(win xp,miktex 2.7,texniccenter)这个工作正常,不会产生换行符,并将t​​odo音符放在边缘。 。 。