我有一个宏,它出现在我的文档的各个地方:
\newcommand{\placefraction}[2]{
$\frac{#1}{#2}$
}
有时它会与常规文本放在一起。有时它会被放在其他数学模式中。但是,如果将它放在另一个数学模式中,文档将无法编译。
我的数学运算从来没有出现在显示的公式中,它始终是段落的一部分。
- 我怎样才能得到一个有时出现在数学模式内部,有时出现在外部,但其本身包含数学模式的宏?
答案1
使用\ensuremath
宏
\newcommand{\placefraction}[2]{%
\ensuremath{\frac{#1}{#2}}%
}
%
正如鲍里斯在他的回答中所说,行末的避免了多余的空格。
但我不知道你为什么要这样做。在我看来,写全部在数学“环境”(= 标记)中编写数学。例如,我会写
... Assuming that $x=0$ we can see that $\placefraction{1}{2}$ is obviously not
the same as $1+\placefraction{2}{8}-x$ ...
代替
... Assuming that $x=0$ we can see that \placefraction{1}{2} is obviously not
the same as $1+\placefraction{2}{8}-x$ ...
因为x=0
,\placefraction{1}{2}
和1+\placefraction{2}{8}-x
属于同一类型(数学公式),应该以相同的方式处理,$…$
在本例中就是把两者都放进去。
请参阅 Ryan 的评论...
答案2
\ensuremath
就是为了这个目的而设计的。另外,你可能想要防止出现虚假空格:
\newcommand{\placefraction}[2]{%
\ensuremath{\frac{#1}{#2}}%
}