如果在 \newcommand 中定义,则相同的数学运算会以不同的方式显示

如果在 \newcommand 中定义,则相同的数学运算会以不同的方式显示

我的简短示例.tex是:

$\myCommand$ or $\boldsymbol{d}_{x}^{\textrm{word1},\textrm{word2}}$

我定义的地方:

\newcommand{\myCommand}{
    \boldsymbol{d}_{x}^{\textrm{word1},\textrm{word2}} %identical to second version
}

但结果中上标的大小有明显不同:

结果不同

知道发生了什么吗?我想为大量数学构建一些实用函数,但这似乎阻止了我。

编辑:

以下是 Sigur 建议的完整工作最小示例,其中包括疑似问题包:

\documentclass{report}

\usepackage{amsmath}
\usepackage{breqn}

\newcommand{\myCommand}{\boldsymbol{d}_{x}^{\textrm{word1},\textrm{word2}}}

\begin{document}
$\myCommand$ or $\boldsymbol{d}_{x}^{\textrm{word1},\textrm{word2}}$
\end{document}

答案1

为了实现自动方程式换行,breqn必须做出重大改变。不幸的是,这些变化包括原始\mathchoice(在补充包中mathstyle)。此更改破坏了amstext使用\text\mathchoice

这里我们还有两个选项(除了删除breqn)。

选项1

使用\mathrm而不是\textrm

\documentclass{report}

\usepackage{amsmath}
\usepackage{breqn}

\newcommand{\myCommand}{\boldsymbol{d}_{x}^{\mathrm{word1},\mathrm{word2}}}

\begin{document}
$\myCommand$ or $\boldsymbol{d}_{x}^{\mathrm{word1},\mathrm{word2}}$
\end{document}

选项 2

\mathchoice不推荐。恢复locally的原意。

\documentclass{report}

\usepackage{amsmath}
\usepackage{breqn}

\makeatletter
\newcommand{\myCommand}{%
  \begingroup
    \let\mathchoice\@@mathchoice
    \boldsymbol{d}_{x}^{\textrm{word1},\textrm{word2}}%
  \endgroup
}
\makeatother

\begin{document}
$\myCommand$ or $\boldsymbol{d}_{x}^{\textrm{word1},\textrm{word2}}$
\end{document}

两种方法均产生以下输出:

输出

答案2

因为我不想让其他人悬而未决这个问题:这个问题是由于包含以下内容引起的:

\usepackage{breqn}

在序言中。简单地包含上面的包而没有其他选项,上标文本在宏中会不正确,但在正常数学模式下则不会,这是一种奇怪的不兼容性。删除上述包解决了我的问题。

相关内容