我有一张长表,其中的列需要以数学模式排版并加粗。为了避免\(\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
就好了。