数学模式中的粗体罗马表达式,具有适当的间距

数学模式中的粗体罗马表达式,具有适当的间距

我有一些数学公式,其中某些数学表达式需要使用粗体罗马字体。由于它们出现的频率很高,所以我需要一个宏。显而易见的方法是编写\newcommand{\foo}[1]{\mathbf{#1}},原则上可行。但是,当命令参数包含上标,并且在命令外部添加了下标时,它就失效了,如下所示:\foo{x^k}_t结果为

x^k_t 间距错误

其中下标太远,大概是因为它在 之外mbox。使用bm包并定义\newcommand{\foo}[1]{\bm{#1}},我得到了我想要的正确间距:

x^k_t 间距正确但字体错误

但现在我又回到了错误的字体,因为它不再是罗马字体了。我尝试过的所有方法都\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}

相关内容