表格中第一列为数学模式的粗体行

表格中第一列为数学模式的粗体行

在我的 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 节点)。

上述代码的输出

相关内容