Я создаю кучу 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
.