Linha em negrito na tabela alinhada com dcolumn

Linha em negrito na tabela alinhada com dcolumn

Estou gerando um monte de tabelas TeX (com Stata), nas quais uma linha específica deve ser destacada (negrito). No entanto, só posso modificar a primeira coluna, por isso quero colocar um comando na primeira célula da coluna para torná-la em negrito (ou não)

Até agora tenho usado isso "Deixe a primeira linha da tabela em negrito", que faz exatamente o que eu quero.

\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}

Agora, decidi mudar para dcolumn, o que é ótimo, mas quebra a solução alternativa ousada, pois envolve as células no modo matemático. A solução que David forneceu aqui (Os decimais na tabela não se alinham com dcolumn quando em negrito) também não funciona, pois exigiria um \multicolumn{1}{B}{...}em cada célula em negrito.

Simplesmente usar mathbfem vez disso não parece resolver o problema. Qualquer sugestão é muito apreciada.

Responder1

\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}

insira a descrição da imagem aqui

Responder2

Uma solução com pacote 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}

Resultado

Responder3

Eu uso isso:

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

E então na tabela, apenas \best{1.1}ou onde você quiser, coloque algum número em negrito.

Isso é especificamente para o modo matemático e funciona bem junto com o siunitx.

Inspirado emaqui. Veja tambémaqui.

informação relacionada