csvsimple tiene problemas con archivos delimitados por tabulaciones

csvsimple tiene problemas con archivos delimitados por tabulaciones

Estoy intentando utilizarlo csvsimplepara crear una tabla con un archivo de entrada delimitado por tabulaciones.

Aquí hay un archivo separado por tabulaciones generic.tsvpara colocar en una tabla (estas son pestañas en mi archivo, no espacios, aunque StackExchange parece convertirlas):

r1c1    r1c2    r1c3
r2c1    r2c2    r2c3
r3c1    r3c2    r3c3

Aquí hay un archivo tex de ejemplo para leerlo:

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

Al ejecutar esto, obtengo lo siguiente:

Salida con archivo delimitado por tabulaciones

Esto no es lo que esperaba. Si cambio el archivo de entrada para reemplazar las pestañas con comas (y las elimino separator=taben el archivo tex), entonces funciona como se esperaba:

Salida con un archivo delimitado por comas

¿Qué puedo hacer para que esto funcione con un archivo delimitado por tabulaciones?

Respuesta1

Este es básicamente el mismo problema quecsvsimple respeto dólar no funciona, pero en esa pregunta el problema estaba en el signo de dólar $y en esta pregunta el problema está en el carácter de tabulación. El problema parece ser que la configuración separator=tabdentro de a tabularse restablece después de la primera línea porque la configuración del separador se realiza en un grupo. Usar \csvreaderpara configurar el tabular resuelve este problema, porque ahora el separador se establece fuera del tabular y, por lo tanto, la configuración sigue siendo válida.

Si desea utilizar el enfoque original, puede configurar el código de categoría del carácter de tabulación manualmente en 12 (carácter normal) y restablecerlo a 10 (carácter de espacio) después de la tabla. Sin embargo, esto tiene el efecto secundario de que la parte inferior de la tabla no se representa correctamente por algún motivo. En el MWE a continuación eliminé la línea que termina en la última línea, lo que desafortunadamente significa que no se puede imprimir \hlineallí.

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

ingrese la descripción de la imagen aquí

información relacionada