软件包eulervm
文档表明应该使用\mathbold
而不是\mathbf
来产生粗体数学运算。
可以写一下吗\renewcommand{\mathbf}{\mathbold}
?副作用是什么?
答案1
标准定义\mathbf
是
\DeclareMathAlphabet{\mathbf}{OT1}{cmr}{bx}{n}
其效果是,声明为的数学符号\mathalpha
(基本上是拉丁字母、大写希腊字母、数字和重音符号)恰好在的参数中,\mathbf
并从所述字体排版。
该eulervm
包使用不同的粗体字体:
\DeclareMathAlphabet{\mathbold}{U}{zeur}{b}{n}
并且还重新声明了许多符号(例如,的参数中也允许使用小写的希腊字母\mathbold
)。
由于 的效果\mathbold
与 不同,因此\mathbf
使用不同的名称是一个好主意。然而
\renewcommand{\mathbf}{\mathbold}
是绝对安全的。TeX 看到时会\mathbf
用 替换它\mathbold
,然后继续寻找 的参数\mathbold
。(实际上,正如 Werner 所展示的, 并没有参数\mathbold
,但这并不重要。)
通过这种重新定义,你会失去 的原意\mathbf
,但使用eulervm
它似乎并不重要。你会因为某种原因保留它吗?最好这样说
\usepackage{letltxmacro}
\LetLtxMacro{\originalmathbf}{\mathbf}
重新定义之前\mathbf
。
答案2
是的,你可以写\renewcommand{\mathbf}{\mathbold}
。为什么?让我们看看两者的定义(使用\pshow
来自的定义LaTeX 命令的定义在TeX 常见问题解答):
\documentclass{article}
\def\pshow#1{{\let\protect\show #1}}% https://texfaq.org/FAQ-ltxcmds
\pshow\mathbf
\usepackage{eulervm}% http://ctan.org/pkg/eulervm
\pshow\mathbold
\makeatletter
\show\select@group
\makeatother
\begin{document}
Dummy text.
\end{document}
产量为.log
:
> \mathbf =macro:
->\select@group \mathbf \M@OT1 \OT1/cmr/bx/n .
\mathbf ->\protect \mathbf
l.3 \pshow\mathbf
(c:/texlive/2011/texmf-dist/tex/latex/eulervm/eulervm.sty
Package: eulervm 2005/01/11 v4.0 (WaS)
)
> \mathbold =macro:
->\select@group \mathbold \M@U \U/zeur/b/n .
\mathbold ->\protect \mathbold
l.5 \pshow\mathbold
> \select@group=macro:
#1#2#3#4->\ifx \math@bgroup \bgroup \else \relax \expandafter \@firstofone \fi
{\ifmmode \ifnum \csname c@mv@\math@version \endcsname <\sixt@@n \begingroup \e
scapechar \m@ne \getanddefine@fonts {\csname c@mv@\math@version \endcsname }#3 globaldefs \@ne \math@fonts \endgroup \init@restore@version \xdef #1{\noexpand
\use@mathgroup \noexpand #2{\number \csname c@mv@\math@version \endcsname }}\gl
obal \advance \csname c@mv@\math@version \endcsname \@ne \else \let #1\relax \@
latex@error {Too many math alphabets used in version \math@version }\@eha \fi else \expandafter \non@alpherr \fi #1{#4}}.
l.7 \show\select@group
请注意, 和 都不\mathbf
带\mathbold
参数。\mathbf
和都调用了一个辅助宏\mathbold
,它接受提供的参数:\select@group
。 所接受的前三个参数\select@group
在 和 内提供\mathbf
,\mathbold
而第四个参数在每个宏之后另外提供。
有什么副作用?你不能使用 的原始定义\mathbf
。有些人通过使用
\let\oldmathbf\mathbf% Store contents of \mathbf in \oldmathbf
\let\mathbf\mathbold% Rename \mathbf to \mathbold
答案3
该eulervm
软件包选择将数学模式中的粗体单词和矢量等粗体数学符号分开。该软件包unicode-math
做了类似的事情:如果您将 Neo Euler 加载为数学字体,则可以将其用作\symbfup
粗体数学符号,或\mathbf
用作数学模式中的粗体单词。
但实际上,如果你想插入强调文本,则可以使用 AMS 文本命令(例如,\textbf{ iff }
对于强调的当且仅当mathbf
。因此,通过重新定义为数学符号而不是文字,你实际上不会失去任何东西。