我正在尝试对齐表中的某些值,并用;
\documentclass[12pt]{article}
\usepackage[portuguese]{babel}
\usepackage{graphicx}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\usepackage{subfig}
\usepackage[flushleft]{threeparttable}
\usepackage{booktabs}
\usepackage[nodisplayskipstretch]{setspace}
\usepackage{amssymb}
\usepackage{setspace}
\usepackage[section]{placeins}
\usepackage{dcolumn}
\usepackage{siunitx,booktabs}
\usepackage{url}
\usepackage{float}
\usepackage{subcaption}
\usepackage{tabularx}
\usepackage{adjustbox}
\usepackage{rotating}
\usepackage{lipsum}
\usepackage{amsmath}
\usepackage{geometry}
\usepackage[tableposition=top]{caption}
\usepackage{babel}
\usepackage[style=authoryear]{biblatex}
\geometry{
a4paper,
total={140mm,190mm},
}
\usepackage[T1]{fontenc}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\begin{document}
\FloatBarrier
\begin{table}[!htb]
\centering
\caption{Credible intervals}
\begin{adjustbox}{max width=\textwidth}
\begin{tabular}{lccc}
\hline
\multicolumn{4}{l}{Credible Intervals [Lower Limit ; Upper Limit]} \\
\hline
Parameter & Model 1 & Model 2 & Model 3 \\
\hline
$\beta_0$ &[-1,315 ;-1,037 ]& [-1,275 ; -0,960] & [-1,317 ; -1,025]\\
$\beta_1$ &[-0,240 ; -0,083]& [-0,217 ; -0,084] &[-0,239 ; -0,084]\\
$\beta_2$ & [0,053 ; 0,268 ]& [0,072 ; 0,256]& [0,046 ; 0,256]\\
$\beta_3$ &[-0,016 ; 0,168] & [0,003 ; 0,188 ]& [-0,019 ; 0,160]\\
$\delta_0$ &[-4,031 ; -2,744] & [-3,988 ; -2,350] & [-0,724 ; 0,633]\\
$\delta_1$ & [-0,486 ;0,591]& [-0,526 ; 0,643] & [-0,793 ; 0,311]\\
$\delta_2$ & [0,402 ; 1,744] & [-0,215 ; 1,618]& [-1,701 ; -0,284]\\
$\delta_3$ & [-0,844 ; 0,220] & [-2,114 ; 0,106] & [-0,152 ; 0,967]\\
$\alpha$ & & [0,005 ; 0,313] & \\
\hline
\end{tabular}
\end{adjustbox}
\end{table}
\FloatBarrier
\end{document}
答案1
一些技巧可以使表格投入使用siunitx
而不需要对输入进行大量的修改。
主要技巧:将分号改为&
; 次要技巧:将四列改为七列。只有最后一行需要特殊处理,以避免中间出现分号。
\documentclass[12pt]{article}
\usepackage{subcaption}
\usepackage{booktabs,array,siunitx}
\begin{document}
\begin{table}[!htbp]
\centering
\caption{Credible intervals}
% some tricks
\let\semicolon=;
\catcode`;=4
\sisetup{
table-format=-1.3,
table-align-text-pre = true,
table-align-text-post = false,
}
\begin{tabular}{
l
*{3}{
S[table-space-text-pre={[}]
@{\semicolon\,}
S[table-space-text-post={]}]
}
}
\toprule
\multicolumn{7}{c}{Credible Intervals [Lower Limit\semicolon\,Upper Limit]} \\
\midrule
Parameter &
\multicolumn{2}{c}{Model 1} &
\multicolumn{2}{c}{Model 2} &
\multicolumn{2}{c}{Model 3} \\
\midrule
$\beta_0$ &[-1,315 ;-1,037 ]& [-1,275 ; -0,960] & [-1,317 ; -1,025]\\
$\beta_1$ &[-0,240 ; -0,083]& [-0,217 ; -0,084] &[-0,239 ; -0,084]\\
$\beta_2$ & [0,053 ; 0,268 ]& [0,072 ; 0,256]& [0,046 ; 0,256]\\
$\beta_3$ &[-0,016 ; 0,168] & [0,003 ; 0,188 ]& [-0,019 ; 0,160]\\
$\delta_0$ &[-4,031 ; -2,744] & [-3,988 ; -2,350] & [-0,724 ; 0,633]\\
$\delta_1$ & [-0,486 ;0,591]& [-0,526 ; 0,643] & [-0,793 ; 0,311]\\
$\delta_2$ & [0,402 ; 1,744] & [-0,215 ; 1,618]& [-1,701 ; -0,284]\\
$\delta_3$ & [-0,844 ; 0,220] & [-2,114 ; 0,106] & [-0,152 ; 0,967]\\
$\alpha$ & \multicolumn{2}{c}{} & [0,005 ; 0,313] & \multicolumn{2}{c}{} \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
答案2
如果您希望保留当前输入,请使用以下方式进行按摩collcell
将确保所有范围的宽度相等:
\documentclass{article}
\usepackage{booktabs,collcell,siunitx}
\def\splitlbub[#1,#2;#3,#4]\relax{\def\lbi{#1}\def\lbm{#2}\def\ubi{#3}\def\ubm{#4}}
\newcommand{\workcell}[1]{%
\sbox0{\hbox{#1}}%
\ifdim\wd0>0pt\relax
\splitlbub#1\relax
$[\ifnum\lbi\lbm<0\else\phantom{-}\fi
\num{\lbi,\lbm};
\ifnum\ubi\ubm<0\else\phantom{-}\fi
\num{\ubi,\ubm}]$
\fi
}
\newcolumntype{W}{ >{\collectcell\workcell}c<{\endcollectcell} }
\begin{document}
\begin{table}
\centering
\caption{Credible intervals}
\medskip
\begin{tabular}{ l *{3}{ W } }
\multicolumn{4}{l}{Credible Intervals [Lower Limit ; Upper Limit]} \\
\toprule
Parameter & \multicolumn{1}{c}{Model 1} & \multicolumn{1}{c}{Model 2} & \multicolumn{1}{c}{Model 3} \\
\midrule
$\beta_0$ & [-1,315 ; -1,037] & [-1,275 ; -0,960] & [-1,317 ; -1,025] \\
$\beta_1$ & [-0,240 ; -0,083] & [-0,217 ; -0,084] & [-0,239 ; -0,084] \\
$\beta_2$ & [ 0,053 ; 0,268] & [ 0,072 ; 0,256] & [ 0,046 ; 0,256] \\
$\beta_3$ & [-0,016 ; 0,168] & [ 0,003 ; 0,188] & [-0,019 ; 0,160] \\
$\delta_0$ & [-4,031 ; -2,744] & [-3,988 ; -2,350] & [-0,724 ; 0,633] \\
$\delta_1$ & [-0,486 ; 0,591] & [-0,526 ; 0,643] & [-0,793 ; 0,311] \\
$\delta_2$ & [ 0,402 ; 1,744] & [-0,215 ; 1,618] & [-1,701 ; -0,284] \\
$\delta_3$ & [-0,844 ; 0,220] & [-2,114 ; 0,106] & [-0,152 ; 0,967] \\
$\alpha$ & & [ 0,005 ; 0,313] & \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
\splitlbub
拆分施工[lbi,lbm;ubi,ubm]
分为四个部分,同时\workcell
使用这四个部分来决定下限或上限是负数/正数,并\phantom
在需要时插入减号。
根据您的区域设置,\num
可以打印,
或.
作为小数分隔符。例如,添加
\sisetup{
output-decimal-marker = {,}
}
你的序言将保持,
为小数点标记。
代码库稍微小一点\workcell
可以实现相同的输出:
\usepackage{booktabs,collcell,siunitx,eqparbox}
\def\splitlbub[#1;#2]\relax{\def\lb{#1}\def\ub{#2}}
\newcommand{\workcell}[1]{%
\sbox0{\hbox{#1}}%
\ifdim\wd0>0pt\relax
\splitlbub#1\relax
$[\eqmakebox[bnd][r]{$\num{\lb}$};\eqmakebox[bnd][r]{$\num{\ub}$}]$
\fi
}
它用eqparbox
因此,每次改变表的内容时都至少需要进行两次编译。