使用 jtools 和 huxtable 在RStudio中生成的自动化LaTeX代码。不幸的是,表格未完全位于页面中心。努力确定故障可能出在哪里。显然\begin{center}
和\end{center}
无法正常工作。我也尝试使用\makebox[\linewidth]
命令,但无济于事。
\documentclass{article}
\usepackage{array}
\usepackage{colortbl}
\usepackage{multirow}
\usepackage{hhline}
\usepackage{calc}
\usepackage{tabularx}
\usepackage{threeparttable}
\usepackage[paperwidth=16cm,paperheight=24cm]{geometry}
\usepackage[a4,frame,center]{crop}
\begin{document}
\providecommand{\huxb}[2]{\arrayrulecolor[RGB]{#1}\global\arrayrulewidth=#2pt}
\providecommand{\huxvb}[2]{\color[RGB]{#1}\vrule width #2pt}
\providecommand{\huxtpad}[1]{\rule{0pt}{\baselineskip+#1}}
\providecommand{\huxbpad}[1]{\rule[-#1]{0pt}{#1}}
\begin{center}
\begin{table}[h]
\begin{threeparttable}
\begin{tabularx}{0.5\textwidth}{p{0.1\textwidth} p{0.1\textwidth} p{0.1\textwidth} p{0.1\textwidth} p{0.1\textwidth}}
\hhline{>{\huxb{0, 0, 0}{0.8}}->{\huxb{0, 0, 0}{0.8}}->{\huxb{0, 0, 0}{0.8}}->{\huxb{0, 0, 0}{0.8}}->{\huxb{0, 0, 0}{0.8}}-}
\arrayrulecolor{black}
\multicolumn{1}{!{\huxvb{0, 0, 0}{0}}c!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\centering \huxbpad{4pt}} &
\multicolumn{1}{c!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\centering Model 1\huxbpad{4pt}} &
\multicolumn{1}{c!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\centering Model 2\huxbpad{4pt}} &
\multicolumn{1}{c!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\centering Model 3\huxbpad{4pt}} &
\multicolumn{1}{c!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\centering Model 4\huxbpad{4pt}} \tabularnewline[-0.5pt]
\hhline{>{\huxb{255, 255, 255}{0.4}}->{\huxb{0, 0, 0}{0.4}}->{\huxb{0, 0, 0}{0.4}}->{\huxb{0, 0, 0}{0.4}}->{\huxb{0, 0, 0}{0.4}}-}
\arrayrulecolor{black}
\multicolumn{1}{!{\huxvb{0, 0, 0}{0}}l!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\raggedright VariablesInterventionIncumbent\huxbpad{4pt}} &
\multicolumn{1}{r!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\raggedleft ~~~~~~~~~\huxbpad{4pt}} &
\multicolumn{1}{r!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\raggedleft ~~~~~~~~~\huxbpad{4pt}} &
\multicolumn{1}{r!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\raggedleft -0.0115~~~~\huxbpad{4pt}} &
\multicolumn{1}{r!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\raggedleft 0.1432~~~~\huxbpad{4pt}} \tabularnewline[-0.5pt]
\hhline{>{\huxb{255, 255, 255}{0.4}}->{\huxb{0, 0, 0}{0.4}}->{\huxb{0, 0, 0}{0.4}}->{\huxb{0, 0, 0}{0.4}}->{\huxb{0, 0, 0}{0.4}}-}
\arrayrulecolor{black}
\multicolumn{1}{!{\huxvb{0, 0, 0}{0}}l!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\raggedright BIC\huxbpad{4pt}} &
\multicolumn{1}{r!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\raggedleft 130.5091~~~~\huxbpad{4pt}} &
\multicolumn{1}{r!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\raggedleft 126.4769~~~~\huxbpad{4pt}} &
\multicolumn{1}{r!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\raggedleft 127.0720~~~~\huxbpad{4pt}} &
\multicolumn{1}{r!{\huxvb{0, 0, 0}{0}}}{\huxtpad{4pt}\raggedleft 139.1500~~~~\huxbpad{4pt}} \tabularnewline[-0.5pt]
\hhline{>{\huxb{0, 0, 0}{0.8}}->{\huxb{0, 0, 0}{0.8}}->{\huxb{0, 0, 0}{0.8}}->{\huxb{0, 0, 0}{0.8}}->{\huxb{0, 0, 0}{0.8}}-}
\arrayrulecolor{black}
\end{tabularx}
\end{threeparttable}
\end{table}
\end{center}
\end{document}
上面提供的是一个示例。道歉,如果它不是“最小”,但我认为这可能对问题的具体性有所帮助。我还包括一个围绕边距的框架,以帮助对中心进行视觉检查。
编辑:即使我要减少同事变量的名称(我承认这很笨拙),我仍然无法使表格正确居中:
。
理想情况下,我希望尽可能少地进行调整,因为RStudio会自动生成LaTeX表,并且我的最终文档中将包含许多表。任何见识将不胜感激!
答案 0 :(得分:0)
这是几个不同问题的组合:
如果使用tabularx
,则至少应有一个X
列,该列可以拉伸以使表格适合可用空间。在您的原始代码中,该表的总数为.5\textwidth
,但是您尝试将其分别容纳在5列.1\textwidth
中。这将永远不合适,因为它不会为列间分隔留任何空间。
您使用固定宽度的p
列,这是正确的方法,但是随后您将每个单元格都用\multicolumn
,{{1 }}或c
列类型。这不允许文本换行,因此您的单元格将不适合带有固定列的行。实际上,每个l
个仅跨越一个单元的单元并不能起到任何作用,只会引起问题
所有这些手动格式化干预措施,例如r
都会破坏任何可以使用的合理布局胶乳
然后您选择\multicolumn
作为表的总数-太小了。即使删除~~~~~~
插入的所有其他空格,文本也将无法容纳在.5\textwidth
内,并溢出到右侧。这就是为什么您的桌子看起来没有居中的原因。我建议使其覆盖整个~~~~~
,即使如此,第一列中的长单词也需要跨行打断。 (文本区域的边界在下面的屏幕截图中以红色显示)
.5\textwidth
(文本区域的边界显示为红色)