我正在尝试创建一个宏,它总是将文本放在行右侧的参数中,然后该行应该结束。
例如:
Left-Text \mymacro{Right-Text}
应该在左边有文本,然后当文本完成时$\box$
应该放在右边,但在同一行上(只要适合)。
我努力了
\newcommand{\mymacro}[1]{\hfill \mbox{#1}}
只要右文本适合左文本的最后一行,就可以正常工作。
但是,如果右侧文本移动到新行,那么它会出现在左侧。
例如:
\documentclass{amsart}
\begin{document}
Doesn't work
Left Text 0123456789 Left Text 0123456789 Left Text 0123456789
\mymacro{Right Text}
Works
Left Text 0123456789 Left Text 0123456789 Left Text 0123456789 Left Text 0123456789
\mymacro{Right Text}
Works
Left Text 0123456789 Left Text 0123456789
\mymacro{Right Text}
\end{document}
答案1
星号形式\hspace
可避免在新行开始时被取消:
\newcommand*{\mymacro}[1]{\hspace*{\fill}\mbox{#1}\penalty-9999\relax}
惩罚允许换行,但是\hbox
如果段落在 之后结束,它不会强制换行(-10000)以避免出现未满警告\mymacro
。