仅在使用 csvsimple 和 \csvautotabular 时接收列标题

仅在使用 csvsimple 和 \csvautotabular 时接收列标题

我目前遇到一个问题,当使用时,我只能获得表中显示的列的csvsimple标题\csvautotabular表格问题

我用来生成此代码的当前代码是

    \documentclass{report}
    \usepackage[utf8]{inputenc}
    \usepackage{csvsimple}
    
    \begin{document}
    \csvautotabular[respect all]{test_utf8.csv}
    \end{document}

我已经使用了 test.csv

    Name,Battery %,Last updated
    L1 A / B (C),5%,"Sept. 1, 2021, 00:00 a.m."
    G D,12%,"Aug. 31, 2021, 9:09 a.m."
    L2 E / F (G),80%,"Feb. 21, 2021, 10:00 a.m."

我相信它具有我的其他 csv 文件所需的通用格式。

答案1

两个改变解决了这个问题:

  1. 更改\csvautotabular[respect all]{test_utf8.csv}\csvautotabular[respect percent]{test_utf8.csv}(以及其他应被解释为普通字符的特殊字符)。

  2. 隐藏不是分隔符的逗号:

    Name,Battery %,Last updated
    L1 A  B (C),5%,{Sept. 1, 2021, 0000 a.m.}
    G D,12%,{Aug. 31, 2021, 909 a.m.}
    L2 E  F (G),80%,{Feb. 21, 2021, 1000 a.m.}
    

因为您需要用花括号来屏蔽可能包含逗号的块以便不将其作为分隔符处理,所以您不应该选择respect all

在此处输入图片描述

答案2

我想利用这个空间来展示一下该readarray包最近添加的(v3.0 2021-08-08)创建tabulars 的功能。由于该文件包含原始%标记并使用引号分组"...",因此我需要进行一些设置才能消化它。

基本上,\readdef宏将文件的内容放入中\def,而\readarray宏将的内容放入\def数组中。

该宏是新引入的,并使用名为的\typesetarray辅助宏(也用于 3-D)来格式化排版,因为它们插入在行、列和/或平面之间。\typesetrowsepchar\typesetcolsepchar\typesetplanesepchar

已编辑,将 catcode 内容放在其自己的宏中,从而减轻调用设置的负担。因此,\readdef调用被替换为,\readdefquotespercents以便自动将原始%标记消化为字符并使用引号分组。

重新编辑以使用魔法来定义宏内的\lowercase活动字符。"

\begin{filecontents*}[overwrite]{junk.dat}
Name,Battery %,Last updated
L1 A / B (C),5%,"Sept. 1, 2021, 00:00 a.m."
G D,12%,"Aug. 31, 2021, 9:09 a.m."
L2 E / F (G),80%,"Feb. 21, 2021, 10:00 a.m."
\end{filecontents*}
\documentclass{article}
\usepackage{readarray}[2021-08-08]
\readarraysepchar{,}
\renewcommand\typesetrowsepchar{\\\hline}
\renewcommand\typesetcolsepchar{&}

\newcommand\readdefquotespercents[2]{%
  \catcode`\"=\active
  \begingroup\lccode`\~=`"
  \lowercase{\endgroup\def~##1~}{{##1}}%
  \catcode`\%=12 \readdef{#1}#2\catcode`\%=14 
  \catcode`\"=12 
  \edef\tabdata{\tabdata}% CONVERT QUOTED PHRASES
}
\begin{document}
\readdefquotespercents{junk.dat}\tabdata

\readarray\tabdata\tabarray[-,\ncols]% PLACE def INTO ARRAY

\begin{tabular}{|c|c|c|}
\hline
\typesetarray\tabarray\\
\hline
\end{tabular}
\end{document}

在此处输入图片描述

相关内容