我正在为我的数学课创建一个小公式表。由于我将使用大量与矢量相关的内容,我定义并重新定义了一些命令以满足我的需求。下面是一些命令
\renewcommand{\vec}[1]{\textbf{#1}} %Vector
\newcommand{\scalar}[2]{\langle \vec{#1},\vec{#2} \rangle} %Scalar
\newcommand{\crossp}[2]{\vec{#1} \times \vec{#2}} %Crossproduct
问题是使用以下代码会导致奇怪的行为,我无法理解并且无法找到任何帮助。
\begin{equation}
V = \scalar{u}{\crossp{v}{w}}
\end{equation}
我也尝试过\textbf{...}
直接使用,而不使用 vec 函数。我知道这\vec
基本上已经过时了,但我使用它是为了在阅读代码时看到哪些是粗体文本,哪些是向量。问题也不是由两次应用 vec 引起的,因为我也尝试过简单的插入v \times w
,它会产生完全相同的行为。
有人能解释为什么会发生这种情况并提出解决办法吗?
提前致谢。Mike
答案1
解决方法很简单:使用\mathbf
而不是\textbf
:
\renewcommand{\vec}[1]{\mathbf{#1}}
您的代码产生错误,其中第一个是
! Missing $ inserted.
<inserted text>
$
l.10 V = \scalar{u}{\crossp{v}{w}}
因为\textbf
进入文本模式。
即使这个问题可以解决,你也会遇到如下真正的麻烦:
\documentclass{article}
\usepackage{amsmath}
\newtheorem{theorem}{Theorem}
\renewcommand{\vec}[1]{\textbf{#1}} %Vector
\begin{document}
A vector $\vec{v}$.
\begin{theorem}
A vector $\vec{v}$.
\end{theorem}
\end{document}
你看到问题了吗?如果你\textbf
改成\mathbf
: