\mathbf 在表列规范中被忽略

\mathbf 在表列规范中被忽略

我有一张长表,其中的列需要以数学模式排​​版并加粗。为了避免\(\mathbf{cell value}\)每行重复,我在列规范中定义了其下的每个单元格的格式。这个array包在这方面派上了用场。

将一切投入使用,我最终得到了这个 MWE。

\documentclass[letterpaper]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{array}

\begin{document}

  \begin{tabular}{>{\(\mathbf\bgroup}l<{\egroup\)}}
    a
  \end{tabular}

\end{document}

然而,该a字符并未以数学粗体显示。LaTeX 反而选择了数学默认字体。即字母为斜体。非常奇怪的是,每当我将其换成时,\mathrm\mathbf都会得到正确的字体:直立罗马字体。

这是正常的吗?LaTeX 是否因为无法解决某些问题而使用数学默认字体?

最后,我必须费力地将每一个单元格值括起来,\mathbf{}这样才能起作用。

周围有些不对劲。

有人能给出答案吗?或者澄清一下?

答案1

如果你使用

\mathbf\bgroup

\mathbf那么您\bgroup不能使用的参数\bgroup \egroup来在 TeX 中界定宏参数。

\bgroup如果您将 as 传递为参数,会发生什么情况主要取决于运气。如果\mathrm您很幸运,那么\mathbf如果它是第一次出现,则运气会差一些,因为\mathbf它会在第一次使用时设置字体。您可以使用不同的界面,或者只是通过确保\mathbf更早地使用它来改变您的运气,例如在您丢弃的框中。

\documentclass[letterpaper]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{array}

\begin{document}
\sbox0{$\mathbf{a}$}
  \begin{tabular}{>{\(\mathbf\bgroup}l<{\egroup\)}}
    a
  \end{tabular}

\end{document}

答案2

您可以使用collcell

\documentclass[letterpaper]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%\usepackage{array} % collcell uses array
\usepackage{collcell}

\begin{document}

\begin{tabular}{>{\(\collectcell\mathbf}l<{\endcollectcell\)}}
a
\end{tabular}

\end{document}

主要原因是\bgroup不能用来界定参数;在某些情况下似乎工作,但通常都是偶然的。

之后\collectcell必须放一个宏来接受参数,这样\mathbf就好了。

相关内容