是否可以定义一个命令使其影响到当前段落结束之前的所有内容?
作为一个最小的例子,我尝试使用类似以下的语法定义一个命令:
\documentclass{minimal}
\begin{document}
\fancycommand Laugh, and the world laughs with you.
Weep, and you weep alone.
\end{document}
Where\fancycommand
会影响同一段落中的所有后续文本,包括任何换行符(例如,进行多次文本转换),但不会影响任何后续段落。该命令不能在段落的其余部分周围使用括号。
如果这不可能,那么是否可以做类似的事情直到当前行结束?
答案1
您可以用\par
它作为分隔符并将段落作为一个参数进行扫描。
\def\fancycommand #1\par{#1\par}
请注意,您需要重新添加\par
。
答案2
一种可能性是
\def\fancycommand{%
\begingroup\def\par{\endgroup\par}%
% <other setup>
}
这很大程度上取决于你要做什么<other setup>
。例如,这是一个斜体版本,只需\itshape
在<other setup>
这里的诀窍是\endgroup
会移除 的重新定义\par
,因此插入的\par
将是 TeX 遇到 时的内容\fancycommand
。当然,\par
应该有一个 (或一个空行) 以便正确终止特殊设置。