我有这个想法,它可以节省我写论文的大量时间。事情是这样的:我需要排版大量包含向量和矩阵的方程式。我希望我的向量用粗体小写,矩阵用粗体大写。对于向量和矩阵,我在序言中定义了以下内容:
\renewcommand{\v}[1]{\ensuremath{\boldsymbol{#1}}}
\newcommand{\m}[1]{\ensuremath{\boldsymbol{\uppercase{#1}}}}
在上下文中,我使用 \v{x} 来排版向量 x 等等。
然而,如果能够排版\vx
来创建相同的向量,那不是很好吗?X。然后,如果我写的是矢量A,b和C,我就可以写\va
,\vb
然后\vc
。
这在 LaTeX 中可能吗?
答案1
如果在向量和矩阵中大量使用粗体数学斜体,最好的解决方案是定义一种新的符号字体:
\DeclareMathAlphabet{\mathbmit}{OML}{cmm}{b}{it}
然后做
\renewcommand{\vec}[1]{\mathbmit{#1}}
\let\matr\vec
(或者,用“男子汉程序员的方式”,\renewcommand{\vec}{\mathbmit}
)。如果一个矩阵被称为“A”,那么在我看来,将其输入为是没有意义的\matr{a}
。
诸如 等\va
的缩写\vb
能定义,但最大的风险是在短时间内忘记命令的含义。如果你真的想要遵循这条路径,那么方法如下:
\documentclass{article}
\DeclareMathAlphabet{\mathbmit}{OML}{cmm}{b}{it}
\renewcommand{\vec}[1]{\mathbmit{#1}}
\let\matr\vec
\makeatletter
\@tfor\next:=abcdefghijklmnopqrstuvwxyxz\do
{\begingroup\edef\x{\endgroup
\noexpand\@namedef{v\next}{\noexpand\vec{\next}}%
}\x}
\@tfor\next:=ABCDEFGHIJKLMNOPQRSTUVWXYZ\do
{\begingroup\edef\x{\endgroup
\noexpand\@namedef{m\next}{\noexpand\matr{\next}}%
}\x}
\makeatother
\begin{document}
This is a vector $\vx$ and this is a matrix $\mA$.
This is a vector $\vec{x}$ and this is a matrix $\matr{A}$.
Also $\matr{\Gamma}$ works.
\end{document}
在我看来,使用\ensuremath
是错误的,因为这些是数学实体,所以它们应该始终处于明确的数学模式。