表格-更改列分隔符

表格-更改列分隔符

是否可以更改表格环境中的默认列分隔符 (&)?我发现在 LibreOffice Calc 中编辑表格内容并将其保存为 csv 文件很方便。我将此 csv 文件包含在 tex 代码中,如下所示:

\begin{table}[H]
    \begin{tabulary}{\textwidth}{*{6}{L}}
        \toprule
        \input{data.csv}
    \end{tabulary} \hfill \
\end{table}

首次保存 csv 文件时可以更改列分隔符,因此这不是问题。但是,当打开已创建的 csv 文件、编辑并保存时,LibreOffice 会不经询问使用默认列分隔符(即分号 (;))并重写之前的分隔符(&)。所以对我来说,最好将 latex 切换为使用分号作为列分隔符,而不是使用 & 符号。

答案1

解决方案如下cvssimple

\begin{filecontents*}{\jobname.csv}
11.0; 12.3; one; two
1.2; 33.11; five; six
\end{filecontents*}

\documentclass{article}
\usepackage{booktabs,tabulary}
\usepackage{csvsimple}

\begin{document}
\begin{tabulary}{\textwidth}{*{4}{L}}
\toprule
1 & 2 & 3 & 4 \\
\midrule
\csvreader[
  separator=semicolon,
  no head,
  late after line=\\,
]{\jobname.csv}{}{%
  \csvcoli & \csvcolii & \csvcoliii & \csvcoliv
}
\bottomrule
\end{tabulary}

\bigskip

\end{document}

在此处输入图片描述

答案2

在此处输入图片描述

\begin{filecontents}{data.csv}
11.0; 12.3; one; two
1.2; 33.11; five; six
\end{filecontents}
\documentclass{article}
\usepackage{booktabs}
\begin{document}

\begin{table}
\catcode`\;=4
\catcode`\^^M=13 %
\def^^M{\\}%
    \begin{tabular}{*{4}{l}}%
        \toprule%
        \input{data.csv}%
    \end{tabular}%
\end{table}%

\end{document}

答案3

这是我使用数据工具的替代方案。

\begin{filecontents*}{data.csv}
11.0; 12.3; one; two
1.2; 33.11; five; six
\end{filecontents*}
\documentclass{article}
\usepackage{booktabs}
\usepackage{datatool}
\begin{document}
\DTLsetseparator{;}
\DTLloadrawdb[noheader,keys={ca,cb,cc,cd}]{ctext}{data.csv}
\begin{table}
    \begin{tabular}{*{4}{l}}%
        \toprule%
    \DTLforeach{ctext}{\ca=ca, \cb=cb, \cc=cc,\cd=cd}%
        {%
        \DTLiffirstrow{}%
            {%
            \\%
            }%
            \ca&%
            \cb&%
            \cc&%
            \cd%
        }%
    \end{tabular}%
\end{table}%
\end{document}

它更通用,因为您可以完全分离设计和内容。

相关内容