表中的粗體行與 dcolumn 對齊

表中的粗體行與 dcolumn 對齊

我正在生成一堆 TeX 表(使用 Stata),其中必須突出顯示特定行(粗體)。然而,我只能修改其中的第一列,因此我想在列的第一個單元格中放置一個命令以使其變為粗體(或不粗體)

到目前為止我一直在使用這個“將表格第一行全部加粗”,這正是我想要的。

\documentclass[12pt]{standalone}
\usepackage{dcolumn}    
\newcolumntype{X}{>{\rowstyle{\relax}}l}
\newcolumntype{Y}{>{\currentrowstyle}c}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}}
\begin{document}
\begin{tabular}{XYY}
normal row & 1.1 & 2.2\\
bold row \rowstyle{\bfseries} & 1.1 & 2.2\\
\end{tabular}
\end{document}

現在,我決定切換到dcolumn,這很棒,但打破了大膽的解決方法,因為它以數學模式包裝單元格。大衛在這裡提供的解決方案(加粗時表中的小數與 dcolumn 不對齊) 也不起作用,因為它需要\multicolumn{1}{B}{...}在每個粗體單元格中都有一個。

簡單地使用mathbf替代似乎並不能解決問題。非常感謝任何建議。

答案1

\documentclass[12pt]{standalone}
\usepackage{dcolumn}  

\makeatletter  
\newcolumntype{X}{>{\rowstyle{\relax}}l}
\newcolumntype{D}[3]{>{\currentrowstyle\DC@{#1}{#2}{#3}}c<{\DC@end}}
\makeatother
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}}
\begin{document}
\begin{tabular}{XD..{-1}D..{-1}}
normal row & 1.1 & 2.2\\
bold row \rowstyle{\bfseries\boldmath} & 1.1 & 2.2\\
\end{tabular}
\end{document}

在此輸入影像描述

答案2

帶包的解決方案siunitx

\documentclass[12pt]{standalone}

\usepackage{array}
\usepackage{siunitx}

\newcolumntype{X}{%
  >{\rowstyle{\relax}}l%
}
\newcolumntype{Y}{%
  >{\currentrowstyle}S[detect-weight]%
}
\newcommand{\rowstyle}[1]{%
  \protected\gdef\currentrowstyle{#1}%
}

\begin{document}
  \begin{tabular}{XYY}
    normal row & 1.1 & 2.2\\
    normal row & 12.34 & 56.78\\
    bold row \rowstyle{\bfseries} & 1.1 & 2.2\\
    bold row \rowstyle{\bfseries} & 12.34 & 56.78\\
  \end{tabular}
\end{document}

結果

答案3

我用這個:

\newsavebox\CBox
\def\mathBF#1{\sbox\CBox{#1}\resizebox{\wd\CBox}{\ht\CBox}{\ensuremath{\mathbf{#1}}}}
\newcommand{\best}[1]{\mathBF{#1}}  % for table

然後在表格中,只要\best{1.1}您想要將一些數字以粗體顯示即可。

這是專門針對數學模式的,並且可以與siunitx.

靈感來自這裡。另請參閱這裡

相關內容