![bm 与 newcommand 的问题](https://linux22.com/image/387601/bm%20%E4%B8%8E%20newcommand%20%E7%9A%84%E9%97%AE%E9%A2%98.png)
太搞笑了!
如果我使用该包bm
,我会遇到问题\newcommand{\hm}{\mathop{}\!\text{ημ} \mathop{}\!}
。
注意:我对 没什么意见\mathop{}\!\text{ημ} \mathop{}\!
,但是\newcommand{\hm}{\mathop{}\!\text{ημ} \mathop{}\!}
正如我所说,奇怪的是代码:
\documentclass[a4paper,11pt]{book}
\usepackage{amsmath, amsthm, amssymb, amsfonts}
\usepackage{mathtools}
\usepackage[english,greek]{babel}
\usepackage[utf8]{inputenc}
\usepackage{cmbright}
\usepackage{kerkis}
\usepackage{bm}
\begin{document}
$\mathop{}\!\text{ημ} \mathop{}\! x$
\end{document}
可以,但是这段代码:
\documentclass[a4paper,11pt]{book}
\usepackage{amsmath, amsthm, amssymb, amsfonts}
\usepackage{mathtools}
\usepackage[english,greek]{babel}
\usepackage[utf8]{inputenc}
\usepackage{cmbright}
\usepackage{kerkis}
\usepackage{bm}
\newcommand{\hm}{\mathop{}\!\text{ημ} \mathop{}\!}
\begin{document}
$\hm x$
\end{document}
得到一个错误。
怎么了?
尊敬的阁下!
答案1
你可以做
\renewcommand{\hm}{...}
但有一个问题:当\bm
它工作时,它会重新定义\hm
。因此\hm x
会产生预期的结果,但\bm{\hm x}
不会,只会渲染“x”。
我建议使用不同的名称,例如\hmop
。
我还建议用不同的方式来定义这样的运算符:
\documentclass[a4paper,11pt]{book}
\usepackage{cmbright}
\usepackage{kerkis}
\usepackage[utf8]{inputenc}
\usepackage[english,greek]{babel}
\usepackage{amsmath}
\usepackage{bm}
\DeclareMathAlphabet{\mathgreek}{LGR}{maksf}{m}{n}
\SetMathAlphabet{\mathgreek}{bold}{LGR}{maksf}{bx}{n}
\makeatletter
\newcommand{\DeclareGreekMathOperator}[2]{%
\begingroup\let\IeC\translate@greek
\protected@edef\@temp{#2}%
\edef\x{\endgroup
\unexpanded{\DeclareMathOperator{#1}}%
{\noexpand\mathgreek{\unexpanded\expandafter{\@temp}}}%
}\x
}
\def\translate@greek#1{\csname LGR\string#1\endcsname}
\makeatother
\DeclareGreekMathOperator{\hmop}{ημ}
\begin{document}
$\mathop{}\!\text{ημ} \mathop{}\! x$
$\hmop x$
$\bm{\hmop x}$
\end{document}
如此复杂的定义有什么好处呢?在斜体上下文中尝试一下你的代码:
\textit{abc $\mathop{}\!\text{ημ} \mathop{}\! x$ def}
也会以斜体打印 ημ。
答案2
该\hm
宏由包定义bm
:
如果定义了“重”数学版本(通常由用户命令访问
\heavymath
),则会定义类似的命令\hm
来访问这些“超粗”字体。
如果您不需要它那么使用\renewcommand{\hm}{patati patata}
。