Жирная строка в таблице, выровненная по 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, что здорово, но ломает bold-обходной путь, так как он оборачивает ячейки в mathmode. Решение, которое Дэвид предоставил здесь (Десятичные знаки в таблице не выравниваются по столбцу 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.

Вдохновленоздесь. Также смздесь.

Связанный контент