使用带有时代字体的 elsarticle 时,\not in math 模式出现意外行为

使用带有时代字体的 elsarticle 时,\not in math 模式出现意外行为

在使用 times 字体时,我遇到了命令 \not in math mode 与 elsartical 类结合的意外行为。这是一个 MWE。

\documentclass[3p,times]{elsarticle}

\newcommand{\Pref}{\succ}
\newcommand{\Ranking}{\mathcal}
\newcommand{\PrefRanking}[1]{\Pref_{#1}}

\begin{document}
Test 1: $\alpha \Pref_\Ranking{R} \beta$.

Test 2: $\alpha \not\Pref_\Ranking{R} \beta$.

Test 3: $\alpha \PrefRanking{\Ranking{R}} \beta$.

Test 4: $\alpha \not\PrefRanking{\Ranking{R}} \beta$.
\end{document}

我获得的输出如下:

enter image description here

我希望测试 2 和测试 4 相同。另一方面,当我不使用 times 字体时,一切都很好。宏定义有什么问题吗?

答案1

times使用选项txfonts.sty。此 sty 重新定义\not\not\somecommand尝试查找\nsomecommand并使用它(如果存在)。这使得可以使用或设计比简单地在符号上加斜线更好的字形,但它使更\not脆弱。

对于这个特殊情况,\not最好在后面不要写太复杂的东西\not。所以不要使用带参数的命令。

答案2

宏定义的建议:

  • \not直接与 一起使用\succ
  • \PrefRanking也在定义文本中使用,\Ranking而不是在参数中再次执行此操作。

例子:

\documentclass[3p,times]{elsarticle}

\newcommand*{\Pref}{\succ}
\newcommand*{\Ranking}{\mathcal}
\newcommand*{\PrefRanking}[1]{\Pref_{\Ranking{#1}}}

\newcommand*{\NotPref}{\not\succ}
\newcommand*{\NotPrefRanking}[1]{\NotPref_{\Ranking{#1}}}

\begin{document}
Test 1: $\alpha \PrefRanking{R} \beta$.

Test 2: $\alpha \NotPrefRanking{R} \beta$.
\end{document}

Result

答案3

我从中获取 MWE 的文档太长且太复杂,无法重新定义宏以避免使用参数,或者对否定情况使用新宏。感谢 @UlrikeFischer 的回答,我找到了这个解决方法。

我定义了宏

\newcommand{\nPrefRanking}[1]{\not\Pref_#1}

这样就解决了问题,而无需修改文档文本中宏的使用(请注意n宏名称开头的,其余的宏名称与“正”宏的名称相同,并且#1没有括在花括号中)。我发现重新定义是不够的(至少对于我的目的而言)

\newcommand{\PrefRanking}[1]{\Pref_{#1}}

进入

\newcommand{\PrefRanking}[1]{\Pref_#1}

\PrefRanking(即,通过删除括起来的花括号来重新定义正例#1),因为

\PrefRanking{\Ranking{R}_1}

(即,当\PrefRanking使用时\not前面没有带,并且的参数\PrefRanking有下标),会产生双下标错误。

相关内容