![如何排版素数向量](https://linux22.com/image/270652/%E5%A6%82%E4%BD%95%E6%8E%92%E7%89%88%E7%B4%A0%E6%95%B0%E5%90%91%E9%87%8F.png)
我使用 在字母上方写一个带有箭头的向量,有时需要使用(或等效地)\vec{p}
对该向量进行标注。'
^{\prime}
然而,
\vec{p}'
也不
\vec{p'}
看起来令人满意(第一个选项:主破折号与矢量箭头重叠,第二个选项:箭头看起来放错了位置)。
怎样写出一个素数向量?
答案1
正如您所发现的,对箭头所指的向量进行启动并不是一个好主意。您需要启动字母,而不是整个结构。
\documentclass{article}
\newcommand{\pvec}[1]{\vec{#1}\mkern2mu\vphantom{#1}}
\begin{document}
$\vec{p}+\pvec{p}'=\pvec{p}''$
\end{document}
答案2
在第一个选项中添加少量空间应该会使情况变得更好:
{\vec{p}\,}'
答案3
有个问题我不太明白。事实上,如果一个原子中有多个原子,\vec
它就会重新定位。我稍微评论了一下这里。
免责声明:这并不完全正确(因为,例如,素数被重新定位),但事实是,有时\vec{{}<something>}
看起来比\vec{<something>}
让我烦恼的要好。
一个可能的解决方案是:
\let\originalvec\vec
\renewcommand*\vec[1]{\originalvec{\kern0pt #1}}
如果这还不够,你可以将其与 egreg 的答案混合使用
\newcommand*\pvec[1]{\vec{#1}\mkern1mu\vphantom{#1}}
完整可编译示例
\documentclass{scrartcl}
\let\originalvec\vec
\renewcommand\vec[1]{\originalvec{\kern0pt #1}}
\newcommand*\pvec[1]{\vec{#1}\mkern2mu\vphantom{#1}}
\begin{document}
$\vec p + \pvec p' = \pvec p''$
$\vec h = \vec r \times \vec v = \vec r \times \pvec r'$
\end{document}
答案4
有人提出了这个老问题(但很好),所以我不妨提一个替代方案。您可以使用 ISO 样式的粗斜体矢量代替箭头。
在 PDFLaTeX 中,您可以使用isomath
包执行此操作。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{amsmath, amssymb, isomath, bm}
\pagestyle{empty}
\begin{document}
\[ a \cdot \vectorsym{p}' \times \vectorsym{p}'' \]
\end{document}
在 LuaLaTeX 或 XeLaTeX 中,您可以使用unicode-math
。
\documentclass{article}
\usepackage{unicode-math}
\pagestyle{empty}
\newcommand\vectorsym[1]{\symbfit{#1}}
\begin{document}
\[ a \cdot \vectorsym{p}' \times \vectorsym{p}'' \]
\end{document}
如果你想要一个更粗的素数符号来匹配矢量符号,你可以定义
\newcommand\boldprime{\boldsymbol{'}}
为了使其在 中正常工作unicode-math
,您必须加载粗体数学字体,或\setmathfont
带有 . [version=bold]
。