是否可以更改表格环境中的默认列分隔符 (&)?我发现在 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}
它更通用,因为您可以完全分离设计和内容。