从 .csv 文件创建表格,标题行太长

从 .csv 文件创建表格,标题行太长

我有一个大表格,我想将其放入我的 latex 文档中。我遇到的问题是列名的标题行(顶行)太长。这是我的州.csv文件

game id,start,dimensions,number of players,error type,survived rounds,avg iter dur,max iter dur
1,,"(46, 58)",6,____,3,0.0189638150252525,0.070585
2,,"(73, 54)",3,____,59,0.0081690392435849,1.142459
3,,"(62, 65)",3,____,107,0.0101505997288269,2.223196
4,,"(44, 75)",5,____,25,0.0157099498952178,2.771
5,,"(41, 41)",3,____,63,0.0062615696206158,1.012879
6,,"(42, 71)",5,____,63,0.006719767371205704,1.936

例如:Latex 将会写玩家人数但我希望 latex 在后面插入一个换行符数字或者以使表格不那么宽。我也查看了 csvmanual,但没有找到有关如何处理此问题的任何建议。https://osl.ugr.es/CTAN/macros/latex/contrib/csvsimple/csvsimple.pdf

\csvautotabular[]{state.csv}表如下所示: 表格比纸张长,并且数值不在表格内

如您所见,表格的长度超过了纸张宽度,并且表格中的值缺失。如何才能将表格完美地放入我的 Latex 文档中?

答案1

一种方法是使用表格环境而不是 csv,因为您可以轻松确定单元格的大小:

\documentclass{article}

\usepackage{caption}

\begin{document}


\begin{center}
\begin{table}[h!]
 \begin{tabular}{||p{1cm}|p{1cm}|p{1.7cm}|p{1.5cm}|p{1.5cm}|p{1.5cm}|p{1.3cm}|p{1.3cm}|} 
 \hline
game id&start&dimensions&number of players&error type&survived rounds&avg iter dur&max iter dur
 \\ 
 \hline\hline

 \hline
\end{tabular}
\caption[]{}
\label{}
\end{table}
\end{center}
\end{document}

会给你类似 在此处输入图片描述

然后,您可以调整大小,使其完全符合您的要求。您可以轻松自定义它。然后,您可以输入每行数据。对于长数据,您还可以使用\usepackage{array}

表格环境的教程:https://www.overleaf.com/learn/latex/tables

答案2

您的 .csv 文件格式不正确。首先,_符号无法在文本模式下使用。我将其更改为-。其次,根据csvsimple文档:

可处理的 CSV 文件的每一行必须包含相同数量的逗号分隔值。TeX 组的花括号 {} 可用于屏蔽可能包含逗号的块,以免将其作为分隔符处理。

下面的 mwe 示例展示了该csvsimple包所实现的众多解决方案中的两个。

\documentclass{article}
\usepackage[a4paper,margin=1cm]{geometry}
\usepackage{csvsimple}
\usepackage{array,booktabs}

\begin{filecontents*}[overwrite]{test.csv}
game id,start,dimensions,number of players,error type,survived rounds,avg iter dur,max iter dur
1,,{(46, 58)},6,--,3,0.0189638150252525,0.070585
1,,{(46, 58)},6,--,3,0.0189638150252525,0.070585
2,,{(73, 54)},3,--,59,0.0081690392435849,1.142459
3,,{(62, 65)},3,--,107,0.0101505997288269,2.223196
4,,{(44, 75)},5,--,25,0.0157099498952178,2.771
5,,{(41, 41)},3,--,63,0.0062615696206158,1.012879
6,,{(42, 71)},5,--,63,0.006719767371205704,1.936
\end{filecontents*}

\begin{document}

\section{A first simple solution}

\csvautotabular{test.csv}

\section{Another (not so simple) solution}

\csvreader[
tabular=>{\centering}p{7mm}cc>{\centering}m{1.7cm}>{\centering}m{.8cm}>{\centering}m{1.4cm}ll, 
table head=\toprule \bfseries game id & \bfseries start & \bfseries dimensions & \bfseries number of players
           & \bfseries error type & \bfseries survived rounds & \bfseries  avg iter dur & \bfseries max iter dur\\\midrule, 
table foot=\bottomrule]
{test.csv}%
{}%
{\csvcoli&\csvcolii&\csvcoliii&\csvcoliv&\csvcolv&\csvcolvi&\csvcolvii&\csvcolviii}

\end{document}

答案3

我已找到一种使用该makecell包解决您的标题问题的方法。要插入手动换行符,您可以使用\thead此包中的命令。此处提供了基于您的 csv 文件的 MWE:

\documentclass{article}

\usepackage{csvsimple}
\usepackage{makecell}

\begin{document}
        \begin{tabular}{|c|c|c|c|c|c|c|c|}
             \hline
             \thead{game\\id} & start & dimensions & \thead{number of\\players} & \thead{error\\type} & \thead{survived\\rounds} & \thead{avg iter\\ dur} & \thead{max iter\\ dur}\\
             \hline
             \csvreader[late after line=\\\hline] {state.csv}{game id = \gameId, start = \start, dimensions = \dimensions, number of players = \numberOfPlayers, error type = \errorType, survived rounds = \survivedRounds, avg iter dur = \avgIterDur, max iter dur = \maxIterDur}{\gameId & \start & \dimensions & \numberOfPlayers & \errorType & \survivedRounds & \avgIterDur & \maxIterDur}
        \end{tabular}
 
\end{document}

您的 csv 文件的输出如下所示:

在此处输入图片描述

但我找不到为什么整个 csv 文件没有导入。此外,第二行的边框(垂直线)没有出现。如果我能找到解决方案,我会编辑答案。

编辑:按照伊凡的回答,我编辑了你的 csv 文件并得到了所需的结果,如下所示:

编辑 csv 文件后

相关内容