我想创建一个command
从数学模式中的粗体符号中获取非粗体字符。
例如,在我的设置中,每个向量都采用粗体字体,$\boldsymbol{x}$
而我想要创建的命令\coef{\boldsymbol{x}}{i}
用于写入此向量的第 i 个系数,结果应为$x_i$
正常字体。我希望能够将其用于任何向量(均为粗体符号)。
我尝试了$\mathnormal$
代码中显示的命令,但它没有任何反应。
那么,在数学模式下,是否可以取消粗体符号的粗体显示?
\documentclass[12pt,a4paper]{letter}
\usepackage[latin1]{inputenc}
\usepackage{amsmath,amsfonts,amssymb}
\newcommand{\x}{\boldsymbol{x}}
\newcommand{\coef}[2]{\mathnormal{#1}_{#2}}
\begin{document}
The vector $\x$ and its coefficients $\coef{\x}{i}$.
\end{document}
答案1
\boldsymbol
仍在里面\mathnormal
,因此的设置\mathnormal
被 覆盖\boldsymbol
。解决这个问题的一种方法是重新定义\boldsymbol
里面\coef
:
\documentclass[12pt,a4paper]{letter}
\usepackage[latin1]{inputenc}
\usepackage{amsmath,amsfonts,amssymb}
\newcommand{\x}{\boldsymbol{x}}
\newcommand{\coef}[2]{%
\begingroup
\renewcommand*{\boldsymbol}[1]{##1}%
#1_{#2}%
\endgroup
}
\begin{document}
The vector $\x$ and its coeficients $\coef{\x}{i}$.
\end{document}
答案2
Heiko 方法的一个变体;我还使用,它具有(也可以称为)bm
的更好实现。在其他情况下,您也可以通过简单地设置(在组中) 更轻松地禁用它。\boldsymbol
\bm
\ifcoef
\boldsymbol
\coeftrue
\documentclass[12pt,a4paper]{article}
\usepackage{amsmath,amssymb,bm}
\newif\ifcoef
\newcommand{\bvec}[1]{%
\ifcoef #1\else\bm{#1}\fi
}
\newcommand{\coef}[2]{%
\begingroup
\coeftrue
{#1}_{#2}%
\endgroup
}
\newcommand{\x}{\bvec{x}}
\begin{document}
The vector $\x$ and its coefficients $\coef{\x}{i}$.
The vector $\bvec{\Gamma}$ and its coefficients
$\coef{\bvec{\Gamma}}{i}$
\end{document}