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?

  • 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 at 14:28
  • BTW: I get no errors from your MWE using a full up to date TeXLive 2018. – daleif Mar 6 at 14:29
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!

  • Thanks for the tip about the SI units too, I will keep them in mind for the future. – Adrian Mar 6 at 15:00
  • 1
    You said "saw someone ...". I think you should add his/her user-name here (for the credit). – user156344 Mar 6 at 15:03
  • 1
    Ah yes, sure, that would be Mico. Thanks Mico! – Adrian Mar 6 at 15:05
  • @Adrian - Thanks for the shout-out. :-) – Mico Mar 6 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 at 15:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.