有没有更快的方法粗体\mathbf{}
在数学模式中,而不是每次都输入?(当你用粗体...)
答案1
有一种非常俗气的保存击键的方法,它并不比 Todd 的答案长,但与 Yiannis 的一样全面:
\documentclass{article}
\def\*#1{\mathbf{#1}}
\def\ab{ab}
\begin{document}
$\*v, \*w, \*\ab, \*\Gamma$.
\end{document}
解释:名称为非字母的控制序列后面不需要空格或括号(当然,除非您希望它对多个标记起作用,例如普通的ab
;但是,像我这样的宏\ab
就可以正常工作)。
答案2
为了扩展 Todd Lehman 的答案,您可以通过自动创建命令来节省一些定义的输入:
LaTeX 内核有一个名为 的循环结构\@tfor
,可以解析字符列表。我们利用它自动使用来定义 形式的命令\Va..\Vz
。\VA..\VZ
\csname..\endcsname
\@tfor\next:=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
\def\command@factory#1{%
\expandafter\def\csname V#1\endcsname{#1}
}
\expandafter\command@factory\next
}
完整的 MWE 如下所示:
\documentclass{article}
\makeatletter
\@tfor\next:=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
\def\command@factory#1{%
\expandafter\def\csname V#1\endcsname{#1}
}
\expandafter\command@factory\next
}
\makeatother
\begin{document}
\[ a \cdot (\Vv \otimes \Vw) = (a \cdot \Vv) \otimes \Vw = \Vv \otimes (a \cdot \Vw) \]
\end{document}
要使希腊字母加粗,我们可以使用类似的技术。这次我们将所有希腊字母放在逗号分隔的列表中,例如:
alpha,beta,gamma,zeta...Alpha...Zeta
然后我们可以对其进行迭代,这次使用循环@for
,这是修改后的最小值。
\documentclass{article}
\usepackage{amsmath}
\usepackage{mathpazo}
\makeatletter
\@tfor\next:=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\do{%
\def\command@factory#1{%
\expandafter\def\csname V#1\endcsname{\mathbb{#1}}
}
\expandafter\command@factory\next
}
\begin{document}
\[ a \cdot (\Vv \otimes \Vw) = (a \cdot \Vv) \otimes \Vw = \Vv \otimes (a \cdot \Vw) \]
\def\greekvectors#1{%
\@for\next:=#1\do{%
\def\X##1;{%
\expandafter\def\csname V##1\endcsname{\boldsymbol{\csname##1\endcsname}}
}
\expandafter\X\next;
}
}
\greekvectors{alpha,beta,iota,gamma,lambda,nu,eta,Gamma,varsigma}
$\VGamma\Viota\Valpha\Vnu\Vnu\Veta\Vvarsigma$
\end{document}
将输出
答案3
你想要的不一定是一种更快的写作方式\mathbf{v}
,而是一种更快的获取向量的方式五, 是的?
在这种情况下,我将定义一组非常短的字母特定宏,每个向量变量一个。例如:
\documentclass{article}
\newcommand{\Vu}{\mathbf{u}}
\newcommand{\Vv}{\mathbf{v}}
\newcommand{\Vw}{\mathbf{w}}
\newcommand{\Vx}{\mathbf{x}}
\newcommand{\Vy}{\mathbf{y}}
\newcommand{\Vz}{\mathbf{z}}
\begin{document}
\[ \|\Vx\| = \sqrt{\Vx_1^2 + \cdots + \Vx_n^2} \]
\[ a(\Vu+\Vv) = a\Vu + a\Vv \]
\[ a_1\Vv_{i_1} + a_2\Vv_{i_2} + \cdots + a_n\Vv_{i_n} = 0 \]
\[ a \cdot (\Vv \otimes \Vw) = (a \cdot \Vv) \otimes \Vw = \Vv \otimes (a \cdot \Vw) \]
\end{document}
答案4
定义一个接受参数的命令。无需使用非字母名称:如果您的向量名称是单个字母,则无需输入括号:
\newcommand\V[1]{\ensuremath{\mathbf{#1}}}
\[ \V w = a\V v_0 + \V u \]
\V 后确实需要一个空格(除非您使用非字母代替 V)。