我有一些数学公式,其中某些数学表达式需要使用粗体罗马字体。由于它们出现的频率很高,所以我需要一个宏。显而易见的方法是编写\newcommand{\foo}[1]{\mathbf{#1}}
,原则上可行。但是,当命令参数包含上标,并且在命令外部添加了下标时,它就失效了,如下所示:\foo{x^k}_t
结果为
其中吨下标太远,大概是因为它在 之外mbox
。使用bm
包并定义\newcommand{\foo}[1]{\bm{#1}}
,我得到了我想要的正确间距:
但现在我又回到了错误的字体,因为它不再是罗马字体了。我尝试过的所有方法都\bm
以某种方式失败了,我尝试过结合并切换到罗马字体。我似乎找不到一种看起来像第二种情况的解决方案,但使用像第一种情况一样的罗马字体。有什么想法可以解决这个问题吗?提前谢谢!
答案1
你可以从你想要的标记得到 barabra 正确指出你需要的标记:
\documentclass{article}
\usepackage{bm}
\def\foo#1{\xfoo#1\relax^\relax\valign}
\def\xfoo#1^#2\relax#3\valign{%
\mathbf{#1}\ifx\valign#2\valign\else^{\mathbf{#2}}\fi}
\begin{document}
$\foo{x}$, $\foo{x}_t$
$\foo{x^k}$, $\foo{x^k}_t$
\end{document}
答案2
您可以使用它\mathbf
来获取直立字母 - 但您必须分别为基础字母和脚本输入它们:
$\mathbf{x}^{\mathbf{k}}_t$
答案3
\foo
你可以修改“指示\bm
操作”的定义,\mathrm{#1}
而不是“仅仅”#1
。(顺便说一句,我假设由于主符号和上标项应该在直立粗体,下标项也是如此。此假设是否成立,请告知。
\documentclass{article}
\usepackage{bm}
\newcommand{\foo}[1]{\bm{\mathrm{#1}}}
\begin{document}
$\foo{x^k}$, $\foo{x^k_t}$
\end{document}