粗体数学:对于拉丁和希腊符号,是否自动在 \mathbf 和 \boldsymbol 之间进行选择?

粗体数学:对于拉丁和希腊符号,是否自动在 \mathbf 和 \boldsymbol 之间进行选择?

这是这个问题

假设你想用以下方式表示向量直立粗体字母;然后\mathbf{u}可以正常工作,除非它是希腊字母,否则您必须使用它\boldsymbol{\omega}

问题:是否可以在 LaTeX 中定义一个通用矢量命令,自动在\mathbf和之间进行选择\boldsymbol,这样人们就可以只书写\vect{u}\vect{\omega}而不必手动特殊处理希腊符号?

(需要明确的是:\newcommand{\vect}[1]{\boldsymbol{#1}}在这种情况下是没有好处的,\boldsymbol{u}因为加粗斜体而不是罗马。)

答案1

您可以使用两个都命令一起定义类似

\usepackage{bm}
\newcommand{\vect}[1]{\boldsymbol{\mathbf{#1}}}

这适用于大多数情况。

答案2

\newcommand{\vect}[1]{\boldsymbol{\mathbf{#1}}}

不适用于 mathtime pro lite 字体(并且从评论来看,它也不适用于 mathpazo)。另一种方法是简单地检查参数是否为A-Za-z

\usepackage{bm,xstring}

\def\VEC#1%
    {\IfSubStr{ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz}{#1}
        {\mathbf{#1}}
        {\bm{#1}}}

这种方法效率低下,因为它每次执行时都会检查子字符串。可以定义宏\VEC@A\VEC@B(使用简单的循环),然后检查 do

\def\VEC#1%
    {\ifcsname VEC@#1\endcsname
        \mathbf{#1}%
     \else
         \bm{#1}%
     \fi}

答案3

虽然这不能回答您的问题,但您尝试过使用该bm包吗?然后$\bm{\omega}$给出一个粗体 omega,$\bm{u}$给出一个粗体(数学斜体) u 和$\bm{\mathrm{u}}$一个粗体罗马 u。

答案4

我只是想补充一下:如果你想直立希腊字符,使用

\usepackage{upgreek}

结合上面的答案,你可以这样做

\vect{\upmu}

得到大胆正直的穆。

(来源于这里

相关内容