RStudio Tabularx表未居中

时间:2019-06-21 16:32:07

标签: latex tabular

使用 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}

上面提供的是一个示例。道歉,如果它不是“最小”,但我认为这可能对问题的具体性有所帮助。我还包括一个围绕边距的框架,以帮助对中心进行视觉检查。

编辑:即使我要减少同事变量的名称(我承认这很笨拙),我仍然无法使表格正确居中:

Photo example here

理想情况下,我希望尽可能少地进行调整,因为RStudio会自动生成LaTeX表,并且我的最终文档中将包含许多表。任何见识将不胜感激!

1 个答案:

答案 0 :(得分:0)

这是几个不同问题的组合:

  • 如果使用tabularx,则至少应有一个X列,该列可以拉伸以使表格适合可用空间。在您的原始代码中,该表的总数为.5\textwidth,但是您尝试将其分别容纳在5列.1\textwidth中。这将永远不合适,因为它不会为列间分隔留任何空间。

  • 您使用固定宽度的p列,这是正确的方法,但是随后您将每个单元格都用\multicolumn,{{1 }}或c列类型。这不允许文本换行,因此您的单元格将不适合带有固定列的行。实际上,每个l个仅跨越一个单元的单元并不能起到任何作用,只会引起问题

  • 所有这些手动格式化干预措施,例如r都会破坏任何可以使用的合理布局胶乳

  • 然后您选择\multicolumn作为表的总数-太小了。即使删除~~~~~~插入的所有其他空格,文本也将无法容纳在.5\textwidth内,并溢出到右侧。这就是为什么您的桌子看起来没有居中的原因。我建议使其覆盖整个~~~~~,即使如此,第一列中的长单词也需要跨行打断。 (文本区域的边界在下面的屏幕截图中以红色显示)


.5\textwidth

enter image description here

(文本区域的边界显示为红色)