为物理版本创建新命令

为物理版本创建新命令

我正在尝试创建一个命令来实现这一点:

我想写:

\ver{x}\ver{y}\ver{z}\ver{r}, ETC...

我想得到:

\hat{\mathbf{x}}\hat{\mathbf{y}}\hat{\mathbf{z}}\hat{\mathbf{r}}... 分别。

我需要一个能够对我在 {} 之间放置的每个字母执行此操作的命令。

我已尝试\newcommand{\ver}{\hat\mathbf}但出现错误:额外或忘记}。

\newcommand{\ver}{\hat{\mathbf{•}}}我也尝试过\newcommand{\ver{•}{\hat{\mathbf{•}}},但没有结果。

如果有人知道如何解决这个问题,我将不胜感激。

答案1

你可能会

\newcommand{\ver}[1]{\hat{\mathbf{#1}}}

但结果\ver{i}不会很好,因为 i 会丢失点。

\documentclass{article}
\usepackage{amsmath}

\DeclareSymbolFont{mathbf}{OT1}{\familydefault}{\bfdefault}{n}
\DeclareSymbolFontAlphabet{\mathbf}{mathbf}
\DeclareMathSymbol{\boldimath}{\mathord}{mathbf}{"10}
\DeclareMathSymbol{\boldjmath}{\mathord}{mathbf}{"11}

\newcommand{\ver}[1]{% we assume #1 is a single Latin letter
  \if#1i%
    \hat{\boldimath}%
  \else
    \if#1j%
      \hat{\boldjmath}%
    \else
      \hat{\mathbf{#1}}%
    \fi
  \fi
}

\begin{document}

$\ver{a}+\ver{c}+\ver{i}+\ver{j}+\ver{k}+\ver{x}$

\end{document}

在此处输入图片描述

该版本也适用于希腊字母。

\documentclass{article}
\usepackage{amsmath,bm}

% for the dotless i and j in bold face upright
\DeclareSymbolFont{mathbf}{OT1}{\familydefault}{\bfdefault}{n}
\DeclareSymbolFontAlphabet{\mathbf}{mathbf}
\DeclareMathSymbol{\boldimath}{\mathord}{mathbf}{"10}
\DeclareMathSymbol{\boldjmath}{\mathord}{mathbf}{"11}

\ExplSyntaxOn

\NewDocumentCommand{\ver}{m}
 {% Assumption: the argument is
  % either a single Latin letter or
  % or a single command for a Greek letter
  \token_if_cs:NTF #1
   { \hat{\bm{#1}} } % single Greek letter
   {% check for i or j
    \str_case:nnF { #1 }
     {
      {i}{\hat{\boldimath}} 
      {j}{\hat{\boldjmath}}
     }
     { \hat{\mathbf{#1}} } % single Latin letter not i nor j
   }
 }

\ExplSyntaxOff

\begin{document}

$\ver{a}+\ver{c}+\ver{i}+\ver{j}+\ver{k}+\ver{x}+\ver{\alpha}+\ver{\Gamma}$

\end{document}

\usepackage{xparse}如果这似乎不起作用,请记得添加(并更新您的 TeX 系统)。

在此处输入图片描述

相关内容