这是这个问题。
假设你想用以下方式表示向量直立粗体字母;然后\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。