使用 csvreader 读取 csv 时给出无效输出

使用 csvreader 读取 csv 时给出无效输出

我正在尝试将 *.csv 文件输出到 LaTeX,但我一直得到无效的输出。我在 yosemite 环境中使用 mactex。

代码.csv:

code,subcd
CITY,LIMA
CITY,PUEBLOLIBRE
CITY,JESUSMARIA
CITY,TARMA

前言:

\documentclass[10pt]{article}
\usepackage{graphicx,fancyhdr,import,hyperref}
\usepackage{longtable,csvsimple}
\usepackage[margin=.75in]{geometry}
\usepackage[toc,page]{appendix}

使用 csvreader:

\begin{document}

\section{System Constants}
The following table contains the constants used throughtout the system.

\begin{tabular}{|c|c|}
\csvreader[head to column names]{code.csv}{}{}
\end{tabular}

\end{document}

我的输出:

运行 pdflatex 后的输出

我不知道我做错了什么。另外,我看到在 Latex 中将 CSV 文件导入为表格但文件太长可以将过长的表格拆分为多个具有相同标题的表格(我的表格最终会变大,我认为考虑到这一点是个好主意)。但是,在尝试了上述帖子中的示例后,我似乎遇到了错误。

.tex 文件:

\section{System Constants}
The following table contains the constants used throughtout the system.

%\csvautotabular{tables/code.csv}
%\begin{tabular}{|c|c|}
%\csvreader[head to column names]{code.csv}{}{}
%\end{tabular}

\csvreader[
    longtable=lrrrr,
    table head=
        \toprule\bfseries Code & \bfseries Sub Code \\
        \midrule\endhead
        \bottomrule\endfoot,
    late after line=\\,
    before reading={\catcode`\#12},
    after reading={\catcode`\#12}
]{code.csv}{}{}

在此处输入图片描述

csvsimple关于如何使用 有什么想法吗longtable

任何帮助,将不胜感激!

编辑: 经过一些研究csvsimple并由 Thomas F. Sturm 指出了正确的方向,我发现我错误地使用了该工具。以下是 .tex 代码的更新版本,还请注意,我已将 .csv 文件更新为子目录

\csvreader[
    longtable=|l|l|,
    table head=
        \toprule
        \bfseries Code & \bfseries Sub Code\\
        \midrule
        \endhead
        \bottomrule,
    table foot=\bottomrule
]{code.csv}{1=\code, 2=\subcd}{\code & \subcd}

但是,最后一行似乎出现了编译错误{\code & \subcd}

在此处输入图片描述

答案1

\documentclass[10pt]{article}
\usepackage{graphicx,fancyhdr,import,hyperref}
\usepackage{longtable}
\usepackage{datatool}
\usepackage[margin=.75in]{geometry}
\usepackage[toc,page]{appendix}


\begin{document}

\section{System Constants}
The following table contains the constants used throughtout the system.

\DTLsetseparator{,}
\DTLloadrawdb[noheader,keys={code,sub_cd}]{ex}{code.csv} %took more robost loaddb
\begin{longtable}%
        {%
        |c|c|
        }%
        A & B \\
        \endfirsthead
        A & B \\
        \endhead
        \multicolumn{2}{r}
                {
                next page
                } \\
        \endfoot
                \multicolumn{2}{r}
                {
                last page
                } \\
        \endlastfoot
\DTLforeach{ex}{\code=code, \subcd=sub_cd}%
            {%
            \DTLiffirstrow{}%
                {%
                    \\%
                }%
             \protect\code&%
             \protect\subcd%
            }%
\end{longtable}

\end{document}

使用数据工具。:)

答案2

有两个问题需要解决。您需要booktabs规则包,并且必须进行替换head to column names以避免标题下标出现问题。

通过这些改变,您将获得以下内容:

\begin{filecontents*}{code.csv}
code,sub_cd
CITY,LIMA
CITY,PUEBLOLIBRE
CITY,JESUSMARIA
CITY,TARMA
\end{filecontents*}

\documentclass[10pt]{article}
\usepackage{graphicx,fancyhdr,import,hyperref}
\usepackage{longtable,csvsimple,booktabs}
\usepackage[margin=.75in]{geometry}
\usepackage[toc,page]{appendix}

\begin{document}

\section{System Constants}
The following table contains the constants used throughtout the system.

\csvreader[
    longtable=ll,
    table head=
        \toprule\bfseries Code & \bfseries Sub Code \\
        \midrule\endhead
        \bottomrule\endfoot,
    late after line=\\,
    before reading={\catcode`\#12},
    after reading={\catcode`\#12}
]{code.csv}{1=\code,2=\subcode}{%
  \code & \subcode
}

\end{document}

输出为:

在此处输入图片描述

日志文件应包含如下行来检查版本号(1.12 或更高):

软件包:csvsimple 2014/07/14 版本 1.12 LaTeX CSV 文件处理

相关内容