Таблица RStudio Tabularx не центрируется - PullRequest
0 голосов
/ 21 июня 2019

Автоматический код LaTeX, сгенерированный в RStudio с использованием jtools и huxtable .К сожалению, таблица не точно отцентрирована на странице.Изо всех сил пытается определить, где может лежать ошибка.Очевидно, \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 голосов
/ 22 июня 2019

Это сочетание нескольких разных проблем:

  • , если вы используете tabularx, у вас должен быть хотя бы один столбец X, который может растягиваться, чтобы вместить таблицу вдоступное пространство.В вашем исходном коде таблица имела общее значение .5\textwidth, но вы пытались вписаться в 5 столбцов .1\textwidth каждый.Это никогда не подойдет, потому что не оставляет места для разделения между столбцами.

  • вы используете p столбцы с фиксированной шириной, что является правильным подходом, но затем вы завернуликаждая ячейка в \multicolumn с типами столбцов c, l или r.Это не позволяет тексту переносить строки, поэтому ваши ячейки не поместятся внутри фиксированных столбцов.На самом деле эти \multicolumn s-ячейки, каждая из которых охватывает только одну ячейку, не приносят ничего хорошего и только вызывают проблемы

  • все эти операции ручного форматирования, такие как ~~~~~~, разрушат любую разумную компоновкулатекс может придумать

  • , тогда вы выбираете .5\textwidth как общее с таблицей - это слишком мало.Даже удаляя все дополнительные пробелы, вставленные ~~~~~, текст не будет помещаться внутри .5\textwidth и перетекать на правую сторону.Вот почему ваш стол не выглядит по центру.Я предлагаю сделать так, чтобы оно охватывало весь \textwidth, и даже тогда длинные слова в первом столбце нужно разбивать на строки.(границы текстовой области показаны красным на скриншоте ниже)


\documentclass{article}
\usepackage{array}
\usepackage{colortbl}
\usepackage{multirow}
\usepackage{hhline}
\usepackage{calc}
\usepackage{tabularx}
\usepackage{threeparttable}  
\usepackage[paperwidth=16cm,paperheight=24cm,
%showframe
]{geometry}
%\usepackage[a4,frame,center]{crop}

\usepackage{booktabs}

\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}{\linewidth}{@{}Xrrrr@{}}
\toprule
& Model 1 & Model 2 & Model 3 & Model 4\\
\cmidrule{2-5}
Variables\-Intervention\-Incumbent &&& -0.0115 & 0.1432\\
\cmidrule{2-5}
BIC & 130.5091 & 126.4769 & 127.0720 & 139.1500\\
\bottomrule
\end{tabularx}
\end{threeparttable}
\end{table}
\end{center}

\end{document}

enter image description here

(границы текстовой области показаны красным цветом)

...