如果我提供的代码和解释不够充分,请告诉我;如果有帮助的话,我很乐意添加我所能提供的。
背景:
我正在使用 LaTex(特别是运行 XeLaTeX 引擎的 Overleaf)撰写一篇论文,其中有十多个 .csv 表格需要导入以供显示。由于一些我已经记不清的因素,因为它们与我很久以前撰写的几篇 LaTeX 论文有关,所以我倾向于结合使用table
、pgfplotstable
和tabu
环境(函数?)来使其正常工作。对于我从 .csv 导入到这篇论文中的前 13 个表格,它确实运行良好——它们呈现得非常漂亮。到目前为止,情况就是这样。
问题:
我有一个 .csv 格式的表格,有 3 列 36 行(包括标题行),我想将其导入我的 LaTeX 文档中的单独页面,但虽然行刚好适合页面宽度(本文要求四周边距为 1 英寸),但表格的长度却超出了页面底部。似乎每行的高度或行与行之间的间距都很大!
我用来显示表格的代码与论文中已有的其他 13 个表格完全相同,其中大多数表格的行数相似。我所做的只是替换label
、caption
、源 .csv 文件参数。以下是表格的代码:
\newpage
\begin{table}[htpb]
\tiny
\begin{center}
\caption{Odds ratios}
\label{tidy_logistic_regression_1996_2018_slim}
\catcode`\"=9
\pgfplotstabletypeset[
col sep=comma,
string type,
column type=,
begin table={\begin{tabu} to \textwidth{X [1.3] X[.8] X[.8]} \hline},
end table={\end{tabu}},
every head row/.style={after row=\toprule},
%every last row/.style={after row=\bottomrule},
]{tidy_logistic_regression_1996_2018_slim.csv}
\end{center}
\hrulefill
% \begin{tablenotes}[flushleft]
% \tiny
% \item * Race / ethnicity categories were changed beginning in the 2002 MEPS.
% %\item † \textit{Hispanic} is a separate category from race / ethnicity throughout the MEPS.
% \end{tablenotes}
\end{table}
\newpage
这是从 CSV 查看器中获取的表格原始格式的图像:
正如您所看到的,我将所有内容都括在括号中,这样就不会让 LaTeX 吐出任何有关文本的错误 - 但也许我错过了什么。我对其他表格也采用了这种方法,效果很好。以下是它如何编译成 LaTeX pdf 文档的几个片段。首先,是渲染表格顶部的特写:
下面是该页面底部的另一张截图(您可以看到中间的第 23 页):
我尝试过的:
从 csv 中截断一堆行对于解决填充问题没有多大作用——我可以让它(勉强)适合页面,但由于行高/填充太大,看起来很糟糕。
我也摆弄了行宽参数(代码中看到的 X[.7]),但也没有多大作用。
我在 pgf 文档中找不到有关行高或填充的任何参数。
有任何想法吗?
答案1
天哪,我真是丢脸了。这并不能完全解决pgfplotstable
导入 .csv 文件时行高的问题,尤其是在用于tabu
较大的表格时——我仍然想知道答案,因为它以前困扰过我。
不过,对于偶然发现此页面的人,这里有一个提示:确保表格中的所有空白单元格实际上是空白单元格!在这种情况下,事实证明我的表格中的许多空白单元格实际上是带有一个空格的空白单元格(例如“”)或几个空格(例如“”,即 4 个空格)。我不确定pgfplotstable
基本table
环境如何解释这些内容,以某种方式要求按行高或行间填充获得更多垂直空间,但它们确实如此。从“空”单元格中删除任何空格解决了该问题,现在表格看起来很漂亮:
教训:当导入 .csv 文件以表格形式显示时,请确保任何空单元格都是真正空的 - 即使是空格或回车符/“输入”!