Paquete de herramientas de datos de LaTeX junto con siunitx

Paquete de herramientas de datos de LaTeX junto con siunitx

Quiero usar el datatoolpaquete para leer archivos csv y analizarlos en tablas LaTeX. Además, quiero utilizarlos siunitxpara 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: ingrese la descripción de la imagen aquí

Hay dos problemas con esta solución:

  1. debido al encabezado coloreado, la última celda del encabezado no está completa (falta la q)
  2. 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 qse debe a que tiene & \tabularnewlineal 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}

información relacionada