我正在尝试创建一个命令来实现这一点:
我想写:
\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 系统)。