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 respect dollar が機能しないですが、その質問ではドル記号に問題があり$、この質問ではタブ文字に問題があります。問題は、区切り文字の設定がグループ内で実行されるため、separator=tab内の設定tabularが最初の行の後にリセットされることのようです。 を使用して\csvreader表形式自体を設定すると、区切り文字が表形式の外側に設定され、設定が有効なままになるため、この問題は解決されます。

元のアプローチを使用する場合は、タブ文字のカテゴリ コードを手動で 12 (通常の文字) に設定し、表の後に 10 (スペース文字) にリセットすることができます。ただし、これには副作用があり、何らかの理由で表の下部が正しくレンダリングされません。以下の MWE では、最後の行で終了する行を削除しましたが、残念ながらそこに印刷することはできません\hline

\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}

ここに画像の説明を入力してください

関連情報