这个问题的后续内容:如何将数字的小数点对齐?请解释一下代码的含义
我的桌子:
\begin{table}[!htb]
\centering
\caption{question}
\label{tab:q}
\begin{tabular}{lcccccl}
\hline
& \multicolumn{6}{c}{\textbf{Pooled OLS}} \\
\cline{2-7}
& (1) & & (2) & & (3) & \multicolumn{1}{c}{} \\
& \multicolumn{6}{c}{\textbf{Outcome variable}} \\
\hline
\textit{\textbf{Group 1}} & & & & & \multicolumn{1}{l}{} & \\
\textbf{Treatment} & 0.0929 & \multicolumn{1}{l}{***} & 0.0615 & \multicolumn{1}{l}{***} & 0.0548 & ** \\
\textbf{} & (0.0177) & & (0.0173) & & (0.0177) & \\
\textbf{Base control} & No & & Yes & & Yes & \\
\textbf{Additional controls} & No & \multicolumn{1}{l}{} & No & \multicolumn{1}{l}{} & Yes & \\
\textbf{Observations} & 4,537 & & 4,537 & & 4,493 & \\ \hline
\textit{\textbf{Group 2}} & & & & & \multicolumn{1}{l}{} & \\
\textbf{Treatment} & $-$0.0078 & \multicolumn{1}{l}{} & $-$0.0323 & \multicolumn{1}{l}{***} & $-$0.0354 & *** \\
\textbf{} & (0.0125) & & (0.0123) & & (0.01249) & \\
\textbf{Base control} & No & & Yes & & Yes & \\
\textbf{Additional controls} & No & \multicolumn{1}{l}{} & No & \multicolumn{1}{l}{} & Yes & \\
\textbf{Observations} & 5,401 & & 5,401 & & 5,383 & \\ \hline
\multicolumn{7}{l}{\footnotesize Standard errors are in parentheses.}
\end{tabular}
\end{table}
我想将数字与小数点对齐,但保持单词和整数居中。我昨天按照@Steven B. Segletes 的做法添加了
\usepackage{tabularx,stackengine,collcell,booktabs}
\let\endecm\relax
\newcolumntype{D}[1]{>{\collectcell\Decm l{#1}}r<%
{..\endDecm\endcollectcell}}
\def\decm#1#2#3.#4.#5\endDecm{#3.%
\stackengine{0pt}{#4}{\rule{#2\wd0}{0pt}}{O}{#1}{F}{F}{L}}
\newcommand\Decm[1]{\setbox0=\hbox{0}\decm#1}
并更改\begin{tabular}{lcccccl}
为\begin{tabular}{lD{5}cD{5}cD{5}l}
但是Yes
和No
和观察数字并不居中。
答案1
D
引用答案中的列的问题(如何将数字的小数点对齐?请解释一下代码的含义) 是指D
假定列中的所有条目都是十进制数。
在这里,我修改了该答案,以便首先检查列中的单元格条目D
是否包含小数点。如果包含,则按原样处理。如果不包含,则仅将单元格内容显示在宽度等于比指定小数位宽度大 2 位的框中,该框本身与列中的小数条目右对齐。
这种方法并非万能,因为“比指定的小数位宽度大 2 位”的选择有些武断,可能无法很好地呈现所有数据。尽管如此,它还是一种改进。
\documentclass{article}
\usepackage{tabularx,stackengine,collcell,booktabs}
\let\endecm\relax
\newcolumntype{D}[1]{>{\collectcell\Decm l{#1}}r<%
{..\endDecm\endcollectcell}}
\def\decm#1#2#3.#4.#5\endDecm{\ifx\relax#4\relax
\makebox[\numexpr2+#2\relax\wd0]{#3}\else
#3.\stackengine{0pt}{#4}{\rule{#2\wd0}{0pt}}{O}{#1}{F}{F}{L}\fi}
\newcommand\Decm[1]{\setbox0=\hbox{0}\decm#1}
\begin{document}
\begin{tabular}{lD{5}cD{5}cD{6}l}\hline
& \multicolumn{6}{c}{\textbf{Pooled OLS}} \\
\cline{2-7}
& (1) & & (2) & & (3) & \multicolumn{1}{c}{} \\
& \multicolumn{6}{c}{\textbf{Outcome variable}} \\
\hline
\textit{\textbf{Group 1}} & & & & & \multicolumn{1}{l}{} & \\
\textbf{Treatment} & 0.0929 & \multicolumn{1}{l}{***} & 0.0615 & \multicolumn{1}{l}{***} & 0.0548 & ** \\
\textbf{} & (0.0177) & & (0.0173) & & (0.0177) & \\
\textbf{Base control} & No & & Yes & & Yes & \\
\textbf{Additional controls} & No & \multicolumn{1}{l}{} & No & \multicolumn{1}{l}{} & Yes & \\
\textbf{Observations} & 4,537 & & 4,537 & & 4,493 & \\ \hline
\textit{\textbf{Group 2}} & & & & & \multicolumn{1}{l}{} & \\
\textbf{Treatment} & $-$0.0078 & \multicolumn{1}{l}{} & $-$0.0323 & \multicolumn{1}{l}{***} & $-$0.0354 & *** \\
\textbf{} & (0.0125) & & (0.0123) & & (0.01249) & \\
\textbf{Base control} & No & & Yes & & Yes & \\
\textbf{Additional controls} & No & \multicolumn{1}{l}{} & No & \multicolumn{1}{l}{} & Yes & \\
\textbf{Observations} & 5,401 & & 5,401 & & 5,383 & \\ \hline
\multicolumn{7}{l}{\footnotesize Standard errors are in parentheses.}
\end{tabular}
\end{document}