csvsimple 在處理製表符分隔檔案時遇到問題

csvsimple 在處理製表符分隔檔案時遇到問題

我正在嘗試使用csvsimple製表符分隔的輸入檔來製作表格。

generic.tsv這是一個要放入表中的製表符分隔檔案(這些是我的檔案中的製表符,而不是空格,儘管 StackExchange 似乎會轉換它們):

r1c1    r1c2    r1c3
r2c1    r2c2    r2c3
r3c1    r3c2    r3c3

這是一個讀取它的範例 tex 檔案:

\documentclass{article}

\usepackage{csvsimple}

\begin{document}

\begin{tabular}{|l|l|l|}
\hline
Col 1 & Col 2 & Col 3 \\
\hline
\csvreader[no head,
    late after line=\\\hline,
    separator=tab
    ]{generic.tsv}{}{\csvcoli & \csvcolii & \csvcoliii}

\end{tabular}

\end{document}

運行這個,我得到以下信息:

使用製表符分隔的檔案輸出

這不是我所期待的。如果我更改輸入檔案以用逗號替換製表符(並separator=tab在 tex 檔案中刪除),那麼它會按預期工作:

使用逗號分隔的文件輸出

我該怎麼做才能使其與製表符分隔的文件一起使用?

答案1

這基本上是同一個問題csvsimple尊重美元不起作用,但在這個問題中,問題出在美元符號上$,而在這個問題中,問題出在製表符上。問題似乎是在第一行之後重置separator=taba 內部的設置tabular,因為分隔符號設定是在群組中執行的。使用\csvreader設定表格本身可以解決此問題,因為現在分隔符號設定在表格之外,因此該設定仍然有效。

如果您想使用原始方法,則可以手動將製表符的類別代碼設為 12(普通字元),並在表格後面將其重設為 10(空格字元)。然而,這有一個副作用,即由於某種原因,表格底部無法正確呈現。在下面的 MWE 中,我刪除了最後一行結尾的行,不幸的是,這意味著您無法\hline在那裡列印 a 。

\documentclass{article}

\usepackage{csvsimple}

\begin{document}

\csvreader[separator=tab,
    tabular={|l|l|l|},
    table head={\hline Col 1 & Col 2 & Col 3\\\hline},
    late after line=\\\hline,
    no head
    ]{generic.tsv}{}%
    {\csvcoli & \csvcolii & \csvcoliii}

Tabular in \texttt{csvreader}
\vspace{1cm}

\catcode`\^^I=12
\begin{tabular}{|l|l|l|}
\hline
Col 1 & Col 2 & Col 3 \\
\hline
\csvreader[no head,
    late after line=\\\hline,
    late after last line=\relax,
    separator=tab]{generic.tsv}{}{\csvcoli & \csvcolii & \csvcoliii}
\end{tabular}
\catcode`\^^I=10

Manual catcode change for tab character

with missing bottom line
\end{document}

在此輸入影像描述

相關內容