将数学环境置于数学环境内

将数学环境置于数学环境内

我有一个宏,它出现在我的文档的各个地方:

\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}}%
}

相关内容