欧拉夫姆的大胆数学

欧拉夫姆的大胆数学

软件包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。因此,通过重新定义为数学符号而不是文字,你实际上不会失去任何东西。

相关内容