编辑(2022 年 11 月):我在下面接受的答案中遇到了问题。\ifvmode
当我不是在环境之后开始一个新段落{verse}
。我被要求将此作为一个新问题,我已经完成了。它可以找到这里。
我想编写一个宏,使其在段落开头表现出不同的行为。我该怎么做?
(最终我希望这个宏能接受一个参数,但假设这与 MWE 无关。)
非工作示例:
\documentclass{article}
\newcommand\foo{%
\ifAtParagraphBeginning% How to do this?
Hello
\else
(hello)
}
\begin{document}
\foo{} % This should print "Hello"
says the quick brown fox jumping over the lazy dog.
The lazy dog says bark \foo{} % This should print "(hello)"
to the brown fox.
\end{document}
编辑:这是一个新示例,我遇到了一个问题。当“@ifnextchar A”位于 \if 的 else 子句中时,我无法让它工作(@ifnextchar 是否查看“\fi”而不是后面的字符?):
\newcommand*\foo[1]{%
\ifvmode
\else
\@ifnextchar A%
{\textsuperscript{#1}\kern -0.15em}%
{\textsuperscript{#1}\kern 0pt}%
\fi}