
Quiero usar el datatool
paquete para leer archivos csv y analizarlos en tablas LaTeX. Además, quiero utilizarlos siunitx
para formatear los números del archivo csv. Eche un vistazo al siguiente ejemplo:
\documentclass{article}
\usepackage{datatool}
\usepackage{siunitx}
\usepackage[table]{xcolor}
\usepackage{colortbl}
%% table data
\begin{filecontents*}{scientists.csv}
name,surname,age,IQ
Albert,Einstein,133,210.12
Marie,Curie,145,220.12
\end{filecontents*}
%%% table design
\colorlet{tableheadcolor}{black!60}
\newcommand\tableheadfont{
\sffamily\bfseries
\slshape
\color{white}
}
\begin{document}
\DTLloaddb{table}{scientists.csv}
\sisetup{round-mode=places,
table-number-alignment = center-decimal-marker
}
\rowcolors{1}{gray!15}{white!100}
\begin{table}
\begin{tabular}{l
l
S[table-format = 3.0 ,round-precision=0]
S[table-format = 3.2 ,round-precision=2]
@{}l}
\rowcolor{tableheadcolor}
\tableheadfont name & \tableheadfont surname & \tableheadfont age & \tableheadfont iq & \tabularnewline
\hline
\DTLforeach*{table}%
{\name=name, \surname=surname, \age=age, \iq=IQ}%
{\DTLiffirstrow{}{\tabularnewline}%
\name & \surname & \age & \iq &
}
\end{tabular}
\end{table}
\end{document}
La última columna contiene un valor numérico que tendrá el formato siunitx
(columna S). Es por eso que tuve que agregar una fila vacía (eche un vistazo atabular, siunitx y entrada - `Extra }, u $ olvidado.`para detalles).
aquí está el resultado:
Hay dos problemas con esta solución:
- debido al encabezado coloreado, la última celda del encabezado no está completa (falta la q)
- el "Albert" en la primera celda de datos se desplaza hacia la derecha.
¿Alguien sabe cómo puedo solucionar estos problemas?
Respuesta1
Ambos problemas simples. La ubicación extraviada de 'Albert' se menciona en un comentario debido a una falta %
:
\DTLiffirstrow{}{\tabularnewline}%
El extraño problema con el q
se debe a que tiene & \tabularnewline
al final de la fila del encabezado, lo que coloca mal las cosas. En su lugar, intente simplemente \\
:
\documentclass{article}
\usepackage{datatool}
\usepackage{siunitx}
\usepackage{xcolor}
\usepackage{colortbl}
%% table data
\begin{filecontents*}{scientists.csv}
name,surname,age,IQ
Albert,Einstein,133,210.12
Marie,Curie,145,220.12
\end{filecontents*}
%% table design
\colorlet{tableheadcolor}{black!60}
\newcommand\tableheadfont{%
\sffamily\bfseries
\slshape
\color{white}
}
\begin{document}
\DTLloaddb{table}{scientists.csv}
\sisetup{round-mode=places,
table-number-alignment = center-decimal-marker
}
\begin{tabular}{l
l
S[table-format = 3.0 ,round-precision=0]
S[table-format = 3.2 ,round-precision=2]
@{}l}
\rowcolor{tableheadcolor}
\tableheadfont name & \tableheadfont surname & \tableheadfont age & \tableheadfont the long iq \\
\hline
\DTLforeach*{table}%
{\name=name, \surname=surname, \age=age, \iq=IQ}%
{\DTLiffirstrow{}{\tabularnewline}%
\name & \surname & \age & \iq &
}
\end{tabular}
\end{document}