# How can I define table column by width and align it using siunitx at the same time in a longtable?

I have this MWE:

\documentclass[12pt,landscape,a4paper]{article}
\usepackage{multirow}
\usepackage{microtype}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{longtable}
\usepackage[utf8]{inputenc}
\usepackage[english,czech]{babel}
\usepackage{hyphenat}
\usepackage{siunitx,booktabs}
\sisetup{output-decimal-marker = {,}}
\usepackage{ragged2e}
\newcommand*\fixalign[2][]{\begin{tabular}{@{}S[#1]@{}}#2\end{tabular}}
\begin{document}
\begin{longtable}{p{4cm}ccS[table-format=1.1]}
\multirow{2}{4cm}{\strut \Centering Název} &
\multicolumn{2}{c}{\Centering Premiéra}  &
\multirow{2}{0.8cm}{\Centering Min. doba}  \\
&\Centering Svět & \Centering ČR &  \\

\Centering Kazatel Kalašnikov &  1.2. & 3.4. & 5.8\\

\Centering Musíme si promluvit o Kevinovi &
\multirow{2}{*}{1.6.} &
\multirow{2}{*}{5.4} &
\multirow{2}{*}{\fixalign[table-format=1.1]{2.8}}\\
\end{longtable}
\end{document}


That compiles into this:

I would like 5.8 and 2.8 to be aligned. I figure I would need to define colums to have certain width and only then use siunitx, but I am not sure how to do that. (My actual table is much larger and slightly more complicated.)

• I found this question: tex.stackexchange.com/questions/12663/… but I am failing in adapting it to longtable environment. – sup Aug 7 '15 at 20:14
• I would just leave the S columns alone, and add space between columns instead. – daleif Aug 7 '15 at 20:18
• Adding space is not feasible, I am trying to fit as much info on one page (I am actually using tiny font size already). – sup Aug 7 '15 at 20:23
• Then reconsider. Cramming too much information into a small space will not help your readers. S columns are already the narrowest they can be (when configured correctly) – daleif Aug 7 '15 at 20:37
• Well, it is an appendix Iwith raw data that I do not expect anybody to really read, just skim, and I do not want it to run over twenty pages. Even though, on second reading, it might work, but how do I add space between columns? – sup Aug 8 '15 at 1:08

As usual, multirow is not the answer; I removed the unnecessary packages, add them back if you really need them.

\documentclass[12pt,a4paper]{article}
% the following three should be first
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,czech]{babel}

\usepackage{makecell}
\usepackage{ragged2e}
\usepackage{longtable}
\usepackage{siunitx,booktabs}
\sisetup{output-decimal-marker = {,}}

\begin{document}

\begin{longtable}{
>{\Centering}m{4cm}
S[table-format=1.1]
S[table-format=1.1]
S[table-format=1.1]
}
Název & \multicolumn{2}{c}{Premiéra}  & {Min.} \\
& {Svět} & {ČR}                 & {deba} \\

Kazatel Kalašnikov &  1.2 & 3.4 & 5.8\\

Musíme si promluvit o Kevinovi & 1.6 & 5.4 & 2.8 \\
\end{longtable}
\end{document}


• Thanks, that seems much simpler, but I would like "název" to be in thmiddle of the first two rows (like in my example), not on the first row. Can that be accomplished? – sup Aug 8 '15 at 1:05
• Ok, I can put název where I want using multirow. However, if I wanted to have something like 22.8.2012 instead of 1,6 and have it line breaked between 22.8. and 2012, how would I go about it? Right now, I am using parbox with the appropriate width and manual linebreaks (\\), which seems suboptimal. – sup Aug 8 '15 at 9:29
• Hm, with enough hacks, I am able to print out what I want, so accepting. Even though I am sure you would be appalled if you saw my sourcode. BTW: I use microtype everywhere as it is said to improve things in general, lmodren as I prefer it (and without it, for some reason lmodern fonts are not used) but hyphenat was probably excessive, I am not sure why I still cary it in my standr preamble that I just copy over. – sup Aug 8 '15 at 9:57
• @sup I'm not saying those packages are not useful: they aren't necessary for the example. If I added them, future readers might think they are. – egreg Aug 8 '15 at 17:38

A quick solution without \newcommands:

\documentclass[12pt,landscape,a4paper]{article}
\usepackage{multirow}
\usepackage{microtype}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{longtable}
\usepackage[utf8]{inputenc}
\usepackage[english,czech]{babel}
\usepackage{hyphenat}
\usepackage{siunitx,booktabs}
\sisetup{output-decimal-marker = {,}}
\usepackage{ragged2e}

\begin{document}
\begin{longtable}{p{4cm}ccS[table-format=1.1]}
\multirow{2}{4cm}{\strut \Centering Název} &\multicolumn{2}{c}{\Centering Premiéra}  & \multirow{2}{0.8cm}{\Centering Min. doba}  \\
&\Centering Svět & \Centering ČR &  \\
\Centering Kazatel Kalašnikov &  1.2 & 3.4 & \multirow{1}{*}{5.8}\\
\Centering Musíme si promluvit o Kevinovi & \multirow{2}{*}{1.6} & \multirow{2}{*}{5.4} & \multirow{2}{*}{2.8}\\
\end{longtable}
\end{document}

• That does not take into account decimal marker (it should be a comma, not a dot, as per sisetup), can that be corrected please? – sup Aug 7 '15 at 20:25
• Also, no the header (Min. doba) is not aligned with the column (I would like the header to be at the center of the column's content). – sup Aug 7 '15 at 20:26