Pau*_*gar 9 layout latex spacing paragraph
我使用包中的\todo
命令\todonotes
.我想将我的源布局\todos
与前一段分开放置:
Some text.
\todo{make note}
Run Code Online (Sandbox Code Playgroud)
但我不想\todo
开始新的段落,或者它会弄乱文档的间距.
是否有命令要避免这种情况?
如果有一个命令/包来消耗它的空白,那么我可以重新定义\todo
使用它.
编辑:在所有内容之间添加%显然非常烦人.还要别的吗?
我必须同意其他人你应该添加的内容%
,但我觉得这个问题很有意思.问题是,只要LaTeX读取空行,它就会转换为\par
命令,结束前一段.在开始时\todo
,该\par
命令已被执行,并且无法撤消它(我认为).所以你唯一的希望就是不要\par
插入或者像通常那样表现.如果你想阻止它被插入,你可以尝试阅读"The TeXbook"的第8章,它应该告诉你如何转换空行\par
.或者,您可以尝试根据以下类型的想法制定解决方案:
Some text.{\let\par\relax \todo{make note}}
但要小心!你肯定不希望全局改变行为\par
,这就是为什么我添加了一对额外的花括号(LaTeX命令是作用域的,所以新定义\par
只在定义的组内生效).祝好运.
当宏在不需要的空间之前时,如果您使用\ @ifnextchar和\ @gobble,则不需要%.
考虑类似的事情(当然在序言中):
\makeatletter
\let\oldtodo\todo
\renewcommand\todo[1]{%
\oldtodo{#1}%
\@ifnextchar\par{\@gobble}{}}
\makeatother
Run Code Online (Sandbox Code Playgroud)
这样,如果你有类似的东西:
\todo{Stuff}
Things
Run Code Online (Sandbox Code Playgroud)
它的行为与...相同
\todo{Stuff}
%
Things
Run Code Online (Sandbox Code Playgroud)
要么
\todo{Stuff}
Things
Run Code Online (Sandbox Code Playgroud)
你可以用宏来概括这类事情
\makeatletter
\newcommand\gobblepars{%
\@ifnextchar\par%
{\expandafter\gobblepars\@gobble}%
{}}
\makeatother
Run Code Online (Sandbox Code Playgroud)
然后,您可以\gobblepars
在任何想要吃空间的地方使用(比如在待办事项之后).您还可以重新定义待办事项(如上所示)以自动放置\gobblepars
它.
处理领先的空白空间.你也可以使用\gobblepars
,但你必须明确.例如:
Some text\gobblepars
\todo{Stuff}
Run Code Online (Sandbox Code Playgroud)
将防止\ par出现在两行之间.