在我的 LaTeX 文档中,我有很多大表格,我想将第一行和第一列设置为粗体。这可以通过一些众所周知的技巧很好地实现。但是,当我的第一列处于数学模式时,编译会失败,并显示“命令 \bfseries 在数学模式下无效”。
当我在数学列前使用一个空的虚拟第一列时,一切都正常工作,除了第一列前有一些额外的缩进 - 请参阅附件 M(N)WE。
有什么想法可以使我在数学模式下获得良好对齐的第一列?
\documentclass{article}
\usepackage{array}
\usepackage{booktabs} % midrule, tabularnewline
\usepackage{amssymb} % boldmath
\newcolumntype{+}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}#1\ignorespaces}
\begin{document}
% works fine but gives unwanted indent:
\begin{tabular}{@{}+p{0pt} >{\boldmath$}l<{$} ^c *{2}{^c}@{}}\toprule
\rowstyle{\bfseries}
&n &2 &1 &0\tabularnewline
&x[n] &1 &0 &3 \tabularnewline \midrule
&2x[n] &5 &0 &1 \tabularnewline
&y[n]=\sum{}&&1 &0\tabularnewline \bottomrule
\end{tabular}
\vspace{1 cm}
% gives the error described above:
\begin{tabular}{@{}>{\boldmath$}l<{$} +c *{2}{^c}@{}}\toprule
\rowstyle{\bfseries}
n &2 &1 &0\tabularnewline
x[n] &1 &0 &3 \tabularnewline \midrule
2x[n] &5 &0 &1 \tabularnewline
y[n]=\sum{}&&1 &0\tabularnewline \bottomrule
\end{tabular}
\end{document}
答案1
您的 MWE 充满了技巧,所以再多一个也不会有害 :-)。请尝试以下操作:
\documentclass{article}
\usepackage{array}
\usepackage{booktabs} % midrule, tabularnewline
\usepackage{amssymb} % boldmath
\newcolumntype{+}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}#1\ignorespaces}
\begin{document}
\begin{tabular}{@{\hspace{-2\tabcolsep}}% <-- compensate tacolsep of empty column
+p{0pt} >{\boldmath$}l<{$} ^c *{2}{^c}@{}}
\toprule
\rowstyle{\bfseries}
& n & 2 & 1 &0\tabularnewline
& x[n] & 1 & 0 &3\tabularnewline
\midrule
& 2x[n] & 5 & 0 &1\tabularnewline
& y[n]=\sum & & 1 &0\tabularnewline
\bottomrule
\end{tabular}
\end{document}
答案2
使用{NiceTabular}
of nicematrix
,您可以使用命令\RowStyle
来修复当前行的样式。该命令有一个选项bold
。使用该选项,粗体样式在文本模式和数学模式下均适用。
\documentclass{article}
\usepackage{nicematrix}
\usepackage{booktabs}
\usepackage{amssymb}
\begin{document}
\begin{NiceTabular}{@{}>{\boldmath$}l<{$}ccc@{}}
\toprule
\RowStyle[bold]{}
n & 2 & 1 &0\\
x[n] & 1 & 0 &3\\
\midrule
2x[n] & 5 & 0 &1\\
y[n]=\sum & & 1 &0\\
\bottomrule
\end{NiceTabular}
\end{document}
您需要多次编译(因为nicematrix
在后台使用 PGF/Tikz 节点)。