Estoy intentando utilizarlo csvsimple
para crear una tabla con un archivo de entrada delimitado por tabulaciones.
Aquí hay un archivo separado por tabulaciones generic.tsv
para 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:
Esto no es lo que esperaba. Si cambio el archivo de entrada para reemplazar las pestañas con comas (y las elimino separator=tab
en el archivo tex), entonces funciona como se esperaba:
¿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=tab
dentro de a tabular
se restablece después de la primera línea porque la configuración del separador se realiza en un grupo. Usar \csvreader
para 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 \hline
allí.
\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}