4

I've been trying to produce a table in which the first two columns has rows merged, the next three columns has columns merged, with three sub-columns, within the same height as the merged rows of cols 1 and 2, with a final column that has rows merged like cols 1 and 2-viz.Table Currently

I am using pdflatex, the tabularx package, booktabs package and array package. My relevant code is:

\documentclass[12pt]{article}
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{booktabs}
\begin{document}
\begin{table}[h]
\caption{Spectral channel characteristics of SEVIRI in terms of central, minimum and maximum wavelength of the channels and the main application areas of each channel.}
\begin{tabularx}{\textwidth}{l l c c c l}
\toprule
\multirow{3}{3.5em}{Channel No.} & \multirow{3}{3.5em}{Spectral Band ($\mu$m)} & \multicolumn{3}{c}{Characteristics of} & \multirow{3}{10em}{Main observational application} \\
{} & {} & \multicolumn{3}{c}{Spectral Band ($\mu$m)} & {} \\
\cmidrule(lr){3-5}
{} & {} & $\lambda_{\mathrm{cen}}$ & $\lambda_{\mathrm{min}}$ & $\lambda_{\mathrm{max}}$ & {}\\
\midrule
1 & VIS0.6 & 0.635 & 0.56 & 0.71 & Surface, clouds, wind fields \\
2 & VIS0.8 & 0.81 & 0.74 & 0.88 & Surface, clouds, wind fields \\
3 & NIR1.6 & 1.64 & 1.50 & 1.78 & Surface, cloud phase \\
4 & IR3.9 & 3.90 & 3.48 & 4.36 & Surface, clouds, wind fields \\
5 & WV6.2 & 6.25 & 5.35 & 7.15 & Water vapor, high level clouds, atmospheric instability \\
6 & WV7.3 & 7.35 & 6.85 & 7.85 & Water vapor, atmospheric instability \\
7 & IR8.7 & 8.70 & 8.30 & 9.1 & Surface, clouds, atmospheric instability \\
8 & IR9.7 & 9.66 & 9.38 & 9.94 & Ozone \\
9 & IR10.8 & 10.80 & 9.80 & 11.80 & Surface, clouds, wind fields, atmospheric instability \\
10 & IR12.0 & 12.00 & 11.00 & 13.00 & Surface, clouds, atmospheric instability \\
11 & IR13.4 & 13.40 & 12.40 & 14.40 & Cirrus cloud height, atmospheric instability \\
12 & HRV & \multicolumn{3}{c}{Broadband (about 0.4--1.1 $\mu$m)} & Surface, clouds \\
\bottomrule
\end{tabularx}
\end{table}
    \end{document}

I would like the lambda-containing columns to be evenly distributed. I tried to add sizing to the c c c columns, but then I get the illegal pream-token error when I run:

[1{c:/texlive/2018/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
! Package array Error:  Illegal pream-token (2em): `c' used.

See the array package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.104 \end{tabularx}

Any ideas?

2
  • 1
    Why are you using tabularx with no X columns? That goes against the idea to having tabularx in the first place. Plus you should probably learn to use siunitx for better unit handling.
    – daleif
    Mar 6, 2019 at 14:28
  • BTW: I get no errors from your MWE using a full up to date TeXLive 2018.
    – daleif
    Mar 6, 2019 at 14:29

4 Answers 4

6

Here's my proposal:

\documentclass[12pt]{article}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{siunitx} % also loads xparse

\sisetup{range-phrase = --}

\NewDocumentCommand{\splitcell}{mo}{%
  \IfNoValueTF{#2}{%
    \begin{tabular}[t]{@{}c@{}}#1\end{tabular}%
  }{%
    \vphantom{\begin{tabular}[t]{@{}c@{}}#1\end{tabular}}%
    \smash{\begin{tabular}[t]{@{}c@{}}#1\\#2\end{tabular}}%
  }%
}

\begin{document}

\begin{table}[htp]

\caption{Spectral channel characteristics of SEVIRI in terms 
of central, minimum and maximum wavelength of the channels 
and the main application areas of each channel.}

\medskip

\begin{tabularx}{\textwidth}{
  @{}
  S[table-format=2.0]
  c
  S[table-format=2.3]
  S[table-format=2.2]
  S[table-format=2.2]
  >{\raggedright\arraybackslash}X
  @{}
}
\toprule

{\splitcell{Channel \\ No.}} &
\splitcell{Spectral \\ Band}[\si{\micro\meter}] &
\multicolumn{3}{c}{
  \splitcell{Characteristics of \\ Spectral Band (\si{\micro\meter})}%
} &
Main observational application \\
\cmidrule(lr){3-5}
{} & {} & {$\lambda_{\mathrm{cen}}$} & 
          {$\lambda_{\mathrm{min}}$} &
          {$\lambda_{\mathrm{max}}$} & \\
\midrule
1 & VIS0.6 & 0.635 & 0.56 & 0.71 & Surface, clouds, wind fields \\
2 & VIS0.8 & 0.81 & 0.74 & 0.88 & Surface, clouds, wind fields \\
3 & NIR1.6 & 1.64 & 1.50 & 1.78 & Surface, cloud phase \\
4 & IR3.9 & 3.90 & 3.48 & 4.36 & Surface, clouds, wind fields \\
5 & WV6.2 & 6.25 & 5.35 & 7.15 & Water vapor, high level clouds, atmospheric instability \\
6 & WV7.3 & 7.35 & 6.85 & 7.85 & Water vapor, atmospheric instability \\
7 & IR8.7 & 8.70 & 8.30 & 9.1 & Surface, clouds, atmospheric instability \\
8 & IR9.7 & 9.66 & 9.38 & 9.94 & Ozone \\
9 & IR10.8 & 10.80 & 9.80 & 11.80 & Surface, clouds, wind fields, atmospheric instability \\
10 & IR12.0 & 12.00 & 11.00 & 13.00 & Surface, clouds, atmospheric instability \\
11 & IR13.4 & 13.40 & 12.40 & 14.40 & Cirrus cloud height, atmospheric instability \\
12 & HRV & \multicolumn{3}{c}{%
  \splitcell{Broadband \\ (about \SIrange{0.4}{1.1}{\micro\meter})}} &
  Surface, clouds \\
\bottomrule
\end{tabularx}

\end{table}

\end{document}

enter image description here

4

I'd probably start with. That long line in no 12, will never look any good, so best to rewrite it.

\documentclass[12pt]{article}
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage[tableposition=top]{caption}
\usepackage{siunitx}
\begin{document}
\begin{table}[h]
  \caption{Spectral channel characteristics of SEVIRI in terms of
    central, minimum and maximum wavelength of the channels and the
    main application areas of each channel.} 
\begin{tabularx}{\textwidth}{
  l
  l
  S[table-format=2.3]
  S[table-format=2.2]
  S[table-format=2.2]
  >{\raggedright\arraybackslash}X
  }
  \toprule
  \multirow{3}{3.5em}{Channel No.}
  &
    \multirow{3}{3.5em}{\centering Spectral Band  (\si{\micro\meter})}
  &
    \multicolumn{3}{c}{Characteristics of}
  &
    \multirow{3}{10em}{Main observational application} 
  \\
  {} & {} & \multicolumn{3}{c}{Spectral Band (\si{\micro\meter})} & {} 
  \\
  \cmidrule(lr){3-5}
  {} & {} & {$\lambda_{\mathrm{cen}}$} & {$\lambda_{\mathrm{min}}$} &
                                                                  {$\lambda_{\mathrm{max}}$} & {}
  \\
  \midrule
  1 & VIS0.6 & 0.635 & 0.56 & 0.71 & Surface, clouds, wind fields 
  \\
  2 & VIS0.8 & 0.81 & 0.74 & 0.88 & Surface, clouds, wind fields 
  \\
  3 & NIR1.6 & 1.64 & 1.50 & 1.78 & Surface, cloud phase 
  \\
  4 & IR3.9 & 3.90 & 3.48 & 4.36 & Surface, clouds, wind fields 
  \\
  5 & WV6.2 & 6.25 & 5.35 & 7.15 & Water vapor, high level clouds,
                                   atmospheric instability 
  \\
  6 & WV7.3 & 7.35 & 6.85 & 7.85 & Water vapor, atmospheric instability 
  \\
  7 & IR8.7 & 8.70 & 8.30 & 9.1 & Surface, clouds, atmospheric
                                  instability 
  \\
  8 & IR9.7 & 9.66 & 9.38 & 9.94 & Ozone 
  \\
  9 & IR10.8 & 10.80 & 9.80 & 11.80 & Surface, clouds, wind fields,
                                      atmospheric instability 
  \\
  10 & IR12.0 & 12.00 & 11.00 & 13.00 & Surface, clouds, atmospheric
                                        instability 
  \\
  11 & IR13.4 & 13.40 & 12.40 & 14.40 & Cirrus cloud height, atmospheric instability \\
  12 & HRV & \multicolumn{3}{c}{Broadband*} & Surface, clouds \\
  \bottomrule
  \addlinespace
  \multicolumn{4}{l}{* about \SIrange{0.4}{1.1}{\micro\meter}}
\end{tabularx}
\end{table}
    \end{document}
4

a small variation of @daleif answer with considering coloring of rows from your answer. i also took a liberty and change column names:

enter image description here

\documentclass[12pt]{article}
\usepackage[table]{xcolor}
\usepackage{booktabs, multirow, tabularx}
\newcommand\mrc[1]{\linespread{0.8}\selectfont\begin{tabular}[t]{@{} c @{}}#1\end{tabular}}
\usepackage[skip=1ex]{caption}
\usepackage[range-phrase = --]{siunitx}

%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}

\begin{document}
    \begin{table}[h]
\caption{Spectral channel characteristics of SEVIRI in terms of central, minimum and maximum wavelength of the channels and the main application areas of each channel.}
    \label{tab:channels}
    \renewcommand\arraystretch{1.2}
    \setlength\tabcolsep{4pt}
    \rowcolors{3}{white}{gray!15}
\begin{tabularx}{\textwidth}{
             p{2em}
             p{3em}
             S[table-format=2.3]
        *{2}{S[table-format=1.3]}
        >{\raggedright\arraybackslash}X
                            }
    \toprule
    &
            & \multicolumn{3}{c}{\mrc{Spectral band\\ characteristics (\si{\micro\meter})}}
                                     & \\
    \cmidrule(lr){3-5}
\multirow[b]{-3.3}{=}{Ch. No.}
    & \multirow[b]{-3.3}{=}{Band name}
            & {$\lambda_{\mathrm{cen}}$}
                     & {$\lambda_{\min}$}
                             & {$\lambda_{\max}$}
                                     &  \multirow[b]{-3}{\linewidth}{Main observational application}  \\
    \hline
1  & VIS0.6 &  0.635 &  0.56 &  0.71 & Surface, clouds, wind fields \\
2  & VIS0.8 &  0.81  &  0.74 &  0.88 & Surface, clouds, wind fields \\
3  & NIR1.6 &  1.64  &  1.50 &  1.78 & Surface, cloud phase \\
4  & IR3.9  &  3.90  &  3.48 &  4.36 & Surface, clouds, wind fields \\
5  & WV6.2  &  6.25  &  5.35 &  7.15 & Water vapor, high level clouds, atmospheric instability \\
6  & WV7.3  &  7.35  &  6.85 &  7.85 & Water vapor, atmospheric instability \\
7  & IR8.7  &  8.70  &  8.30 &  9.1  & Surface, clouds, atmospheric instability \\
8  & IR9.7  &  9.66  &  9.38 &  9.94 & Ozone \\
9  & IR10.8 & 10.80  &  9.80 & 11.80 & Surface, clouds, wind fields, atmospheric instability \\
10 & IR12.0 & 12.00  & 11.00 & 13.00 & Surface, clouds, atmospheric instability \\
11 & IR13.4 & 13.40  & 12.40 & 14.40 & Cirrus cloud height, atmospheric instability \\
12 & HRV    & \multicolumn{3}{c}{\mrc{Broadband\\(about \SIrange{0.4}{1.1}{\micro\meter})}}
                                     & Surface, clouds \\
    \bottomrule
\end{tabularx}
1

Thanks for all the responses! So, I've been playing with tabularx and saw someone define a type of column in the preamble in a previous posting:

\newcolumntype{Y}{>{\centering\arraybackslash}X}

So now, when I specify the middle three columns as Y and tweaking my column size a bit (also, l, c, and r don't accept sizing, that's why I was getting the error, I switched to p, m and b of the array package):

\begin{tabularx}{\textwidth}{p{3.5em} p{3.5em} Y Y Y p{10em}}

I get very close to what I was looking for:

New Table

(Sorry about the dark rows, I am also playing with rowcolors).

Thanks again for the input!

6
  • Thanks for the tip about the SI units too, I will keep them in mind for the future.
    – Adrian
    Mar 6, 2019 at 15:00
  • 1
    You said "saw someone ...". I think you should add his/her user-name here (for the credit).
    – user156344
    Mar 6, 2019 at 15:03
  • 1
    Ah yes, sure, that would be Mico. Thanks Mico!
    – Adrian
    Mar 6, 2019 at 15:05
  • @Adrian - Thanks for the shout-out. :-)
    – Mico
    Mar 6, 2019 at 15:48
  • So, just to update, I also did some raggedright modification of the last p column to get rid of the spaces due to justification. The relevant command is \begin{tabularx}{\textwidth}{p{3.5em} p{3.5em} Y Y Y >{\raggedright\arraybackslash}p{10em}}, as proposed by Saravanan.
    – Adrian
    Mar 6, 2019 at 15:54

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .