![宏如何检测它是否位于段落开头?](https://linux22.com/image/402516/%E5%AE%8F%E5%A6%82%E4%BD%95%E6%A3%80%E6%B5%8B%E5%AE%83%E6%98%AF%E5%90%A6%E4%BD%8D%E4%BA%8E%E6%AE%B5%E8%90%BD%E5%BC%80%E5%A4%B4%EF%BC%9F.png)
编辑(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}