Пакет LaTeX datatool вместе с siunitx

Пакет LaTeX datatool вместе с siunitx

Я хочу использовать datatoolпакет для чтения csv-файлов и их разбора в таблицы LaTeX. Кроме того, я хочу использовать siunitxдля форматирования чисел из csv-файла. Взгляните на следующий пример:

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

Последний столбец содержит числовое значение, которое должно быть отформатировано с помощью siunitx(S-столбец). Вот почему мне пришлось добавить пустую строку (посмотрите натабличный, siunitx и ввод - `Лишние } или забытые $.`для получения подробной информации).

вот результат: введите описание изображения здесь

У этого решения есть две проблемы:

  1. из-за цветного заголовка последняя ячейка заголовка не заполнена (отсутствует буква q)
  2. «Альберт» в первой ячейке данных смещен вправо.

Кто-нибудь знает, как решить эти проблемы?

решение1

Обе простые проблемы. Неправильное размещение «Альберта» связано с тем, что, как упоминалось в комментарии, отсутствует %:

\DTLiffirstrow{}{\tabularnewline}%

Странное дело с qвызвано тем, что & \tabularnewlineв конце строки заголовка есть что-то неправильное. Попробуйте вместо этого просто \\:

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

Связанный контент