Ich versuche, csvsimple
eine Tabelle mit einer tabulatorgetrennten Eingabedatei zu erstellen.
Hier ist eine durch Tabulatoren getrennte Datei generic.tsv
zum Einfügen in eine Tabelle (in meiner Datei handelt es sich um Tabulatoren und nicht um Leerzeichen, obwohl StackExchange diese anscheinend konvertiert):
r1c1 r1c2 r1c3
r2c1 r2c2 r2c3
r3c1 r3c2 r3c3
Hier ist eine Beispiel-Tex-Datei zum Einlesen:
\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}
Wenn ich dies ausführe, erhalte ich Folgendes:
Das habe ich nicht erwartet. Wenn ich die Eingabedatei ändere, um die Tabulatoren durch Kommas zu ersetzen (und sie separator=tab
in der Tex-Datei zu entfernen), funktioniert es wie erwartet:
Was kann ich tun, damit dies mit einer tabulatorgetrennten Datei funktioniert?
Antwort1
Dies ist im Grunde das gleiche Problem wiecsvsimple Respekt Dollar funktioniert nicht, aber in dieser Frage war das Problem das Dollarzeichen $
und in dieser Frage das Tabulatorzeichen. Das Problem scheint zu sein, dass die Einstellung separator=tab
innerhalb von a tabular
nach der ersten Zeile zurückgesetzt wird, da die Trennzeicheneinstellung in einer Gruppe vorgenommen wird. Die Verwendung von \csvreader
zum Einrichten der Tabelle selbst löst dieses Problem, da das Trennzeichen jetzt außerhalb der Tabelle gesetzt wird und die Einstellung daher gültig bleibt.
Wenn Sie den ursprünglichen Ansatz verwenden möchten, können Sie den Kategoriencode des Tabulatorzeichens manuell auf 12 (normales Zeichen) setzen und ihn nach dem Tabulatorzeichen wieder auf 10 (Leerzeichen) zurücksetzen. Dies hat jedoch den Nebeneffekt, dass das Ende der Tabelle aus irgendeinem Grund nicht korrekt dargestellt wird. Im MWE unten habe ich das Zeilenende in der letzten Zeile entfernt, was leider bedeutet, dass Sie \hline
dort kein a drucken können.
\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}