我使用什么 LaTex 代码来获得此等式左边的符号,即向量 a 在向量 v 上的投影?
http://rypress.com/tutorials/mathml/media/vectors-and-functions/summary.png
答案1
这是一个选项:
\documentclass{article}
% http://tex.stackexchange.com/q/169557/5764
\usepackage{mathtools}
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}
\newcommand{\vectorproj}[2][]{\textit{proj}_{\vect{#1}}\vect{#2}}
\newcommand{\vect}{\mathbf}
\begin{document}
\[
\vectorproj[v]{a} = \frac{\vect{a} \cdot \vect{v}}{\norm{\vect{v}}^2} \vect{v}
\]
\end{document}
\vectorproj[<onvector>]{<ofvector>}
可以配备可选的<onvector>
。
答案2
假设您可能希望将投影排版为运算符(不是斜体),您可以使用包\DeclareMathOperator{}{}
中的声明一个新运算符amsmath
。受 Werners 回答的启发,我为投影命令添加了一个宏。
\documentclass{article}
\usepackage{amsmath}
\DeclareMathOperator{\proj}{proj}
\newcommand{\vct}{\mathbf}
\newcommand{\vctproj}[2][]{\proj_{\vct{#1}}\vct{#2}}
\begin{document}
\[
\vctproj[v]{a} = \frac{\vct{a}\cdot\vct{v}}{\lVert\vct{v}\rVert^2}\vct{v}
\]
\end{document}
答案3
如果想要分别将\proj_{#1}{#2}
和\rej_{#1}{#2}
作为矢量投影和拒绝的宏,这里有另一个可能的解决方案。我还为这两个宏添加了带星号的变体。
\documentclass{article}
\usepackage{mathtools}
\usepackage{scalerel} % For \stretchrel
\ifdefined\NewDocumentCommand\else\usepackage{xparse}\fi
\renewcommand{\vec}{\mathbf}
\DeclareMathOperator{\vectorprojection}{proj}
\NewDocumentCommand{\proj}{s e{_} m}{%
\IfBooleanTF{#1}{#3_{\stretchrel*{\parallel}{\perp}#2}}{\vectorprojection_{#2}#3}
}
\DeclareMathOperator{\vectorrejection}{oproj}
\NewDocumentCommand{\rej}{s e{_} m}{%
\IfBooleanTF{#1}{#3_{\perp #2}}{\vectorrejection_{#2}#3}
}
\begin{document}
\begin{center}
\begin{tabular}{lr}
\verb|\proj_{\vec{b}}{\vec{a}}|: & \(\proj_{\vec{b}}{\vec{a}}\) \\
\verb|\proj*_{\vec{b}}{\vec{a}}|: & \(\proj*_{\vec{b}}{\vec{a}}\) \\
\verb|\rej_{\vec{b}}{\vec{a}}|: & \(\rej_{\vec{b}}{\vec{a}}\) \\
\verb|\rej*_{\vec{b}}{\vec{a}}|: & \(\rej*_{\vec{b}}{\vec{a}}\)
\end{tabular}
\end{center}
\end{document}