![如何使用 T1 编码显示漂亮的矢量?](https://linux22.com/image/458930/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20T1%20%E7%BC%96%E7%A0%81%E6%98%BE%E7%A4%BA%E6%BC%82%E4%BA%AE%E7%9A%84%E7%9F%A2%E9%87%8F%EF%BC%9F.png)
我通常会做但从未同时做过的两件事之间似乎存在冲突:使用 T1 字体编码和使用\overrightarrow
矢量。
所以我通常做的是\renewcommand{\vec}[1]{\overrightarrow{#1}}
输出漂亮的长箭头(至少在 OT1 编码中)。
虽然我必须对当前文档使用 T1 编码,但它似乎会弄乱箭头。例如,左边的箭头太长了:
如果字体编码不是问题,我可以提供我的整个序言,但它很长。
所以问题是:如何同时拥有正确的编码(我的文档是法语)和向量上的漂亮箭头?
编辑:添加一个例子(根据@DavidCarlisle 的要求)
我找到了导致字体变化的原因:newtxmath
包。我曾经用它来处理\not
任何我想要的东西。经过检查,我碰巧更喜欢在字体\vec
的单个字符上应用原始命令newtxmath
。
以下是示例:
% Set up the document's format to A4 and the font's size to 12pt.
\documentclass[a4paper,12pt]{report}
% Set up the input's encoding to UTF-8, the document's font and language to T1 (adapted to french) and french (the grammar linter uses this parameter).
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
% Allows to define \notfoo or \nfoo (not recommended) in order for \not\foo to work as wished.
\usepackage{newtxmath}
% Redefines \vec such that the arrow covers the whole name of the vector.
\renewcommand{\vec}[1]{\overrightarrow{#1}}
\begin{document}
\(\vec{v}\)
\end{document}
答案1
您可以使用新的pdfmsym
“包”(它不是 LaTeX 意义上的)。
\documentclass{article}
\usepackage{amsmath}
\input{pdfmsym}% not \usepackage!
\pdfmsymsetscalefactor{8}
\newcommand{\diff}{\mathop{}\!\mathrm{d}}
\begin{document}
\[
\diff\vecc{p_{\mathrm{atome}}}=
\vecc{p_f} - \vecc{p_i}=
m\vecc{v'}-m\shortvecc{v}=
-2mu\vecc{u_x}
\]
\[
\diff\vec{p}_{\mathrm{atome}}=
\vec{p}_f - \vec{p}_i=
m\vec{v}^{\,\prime}-m\vec{v}=
-2mu\vec{u}_x
\]
\end{document}
不过,我更喜欢后一种格式。
如果我添加,则看不到任何区别
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
如果我使用\overrightarrow
,我会得到类似
恐怕这很难被形容为“好”。但无论有没有 T1,我都没有感觉到任何区别。