Information and discussion about graphics, figures & tables in LaTeX documents.
Cham
Posts: 937 Joined: Sat Apr 02, 2011 4:06 pm
Post
by Cham » Thu Nov 09, 2017 7:07 pm
I have a large table (30 columns !) that I don't want to split into parts. I should have a proper space in landscape mode, but I still have difficulties in setting the table which have problems on its right side.
The table should take all the space available on the text page, and the font size should be as large as possible. Here's a MWE showing the problem. Any help would be greatly appreciated !
Code: Select all
\documentclass[11pt,oneside]{article}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage[left=0.75in,right=0.75in,top=0.5in,bottom=0.5in,includehead,includefoot]{geometry}
\usepackage{tabularx}
\usepackage{hhline}
\usepackage{here}
\usepackage{pdflscape}
\begin{document}
\begin{landscape}
\begin{center}
\Large\textbf{Some extremely boring title}
\end{center}
\bigskip
\tabcolsep=0.15cm
\begin{table}[H]
\tiny % A bit too small. Could be larger.
\centering
\renewcommand{\arraystretch}{2}
\begin{tabularx}{\textwidth}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
\hline
\multicolumn{30}{|c|}{Some funny title}
\\ \hline
\multicolumn{1}{|>{\centering\arraybackslash}X|}{$t$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{1}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{2}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{3}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{4}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{5}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{6}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{7}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{8}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{9}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{10}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{11}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{12}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{13}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{14}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{15}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{16}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{17}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{18}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{19}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{20}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{21}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{22}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{23}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{24}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{25}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{26}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{27}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{28}$}
& \multicolumn{1}{>{\centering\arraybackslash}X|}{$N_{29}$}
\\ \hline
\multicolumn{1}{|c|}{$L$}
& \multicolumn{29}{c|}{some hilarious unit}
\\ \hhline{|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|}
0 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300
\\ \hline
1 & 281 & 282 & 283 & 285 & 283 & 282 & 283 & 283 & 277 & 285 & 279 & 282 & 285 & 279 & 284 & 278 & 284 & 276 & 281 & 286 & 279 & 290 & 277 & 284 & 290 & 282 & 290 & 286 & 281
\\ \hline
\end{tabularx}
\caption{Some very funny caption. LOL !}
\end{table}
\end{landscape}
\end{document}
Here's a preview of the table and its problem :
funnytable.jpg (24.72 KiB) Viewed 9915 times
NEW: TikZ book now 40% off at Amazon.com for a short time.
And: Currently, Packt sells ebooks for $4.99 each if you buy 5 of their over 1000 ebooks. If you choose only a single one, $9.99. How about combining 3 LaTeX books with Python, gnuplot, mathplotlib, Matlab, ChatGPT or other AI books? Epub and PDF. Bundle (3 books, add more for higher discount): https://packt.link/MDH5p
Cham
Posts: 937 Joined: Sat Apr 02, 2011 4:06 pm
Post
by Cham » Fri Nov 10, 2017 1:28 am
I think I've found a solution : the adjustbox package :
Code: Select all
\documentclass[11pt,oneside]{article}
\usepackage[T1]{fontenc}
\usepackage{microtype}
\usepackage[left=0.75in,right=0.75in,top=0.5in,bottom=0.5in,includehead,includefoot]{geometry}
\usepackage{tabularx}
\usepackage{hhline}
\usepackage{here}
\usepackage{pdflscape}
\usepackage{adjustbox}
\begin{document}
\begin{landscape}
\begin{center}
\Large\textbf{Some extremely boring title}
\end{center}
\bigskip
\tabcolsep=0.15cm
\begin{table}[H]
\centering
\tabcolsep=0.15cm
\renewcommand{\arraystretch}{1.5}
\begin{adjustbox}{max width=\linewidth}
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
\hline
\multicolumn{30}{|c|}{Some hilarious title}
\\ \hline
\multicolumn{1}{|>{\centering\arraybackslash}c|}{$t$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{1}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{2}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{3}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{4}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{5}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{6}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{7}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{8}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{9}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{10}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{11}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{12}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{13}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{14}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{15}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{16}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{17}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{18}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{19}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{20}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{21}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{22}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{23}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{24}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{25}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{26}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{27}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{28}$}
& \multicolumn{1}{>{\centering\arraybackslash}c|}{$N_{29}$}
\\ \hline
\multicolumn{1}{|c|}{$L$}
& \multicolumn{29}{c|}{Wow ! LaTeX is fun !}
\\ \hhline{|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|}
0 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300 & 300
\\ \hline
1 & 281 & 282 & 283 & 285 & 283 & 282 & 283 & 283 & 277 & 285 & 279 & 282 & 285 & 279 & 284 & 278 & 284 & 276 & 281 & 286 & 279 & 290 & 277 & 284 & 290 & 282 & 290 & 286 & 281
\\ \hline
\end{tabular}
\end{adjustbox}
\caption{Some very funny caption. LOL!}
\end{table}
\end{landscape}
\end{document}
Is this the best way of doing this ? I need opinions on the code above.
Any suggestions to improve the code and the output ?
Stefan Kottwitz
Site Admin
Posts: 10324 Joined: Mon Mar 10, 2008 9:44 pm
Post
by Stefan Kottwitz » Fri Nov 10, 2017 4:11 pm
Well, output: I generally don't like a full grid for tables, locking all in cells. I like some supporting structure by decent horizontal lines only. I never do double lines.
Code: I would put repeated things into a macro, such as for \multicolumn{1}{>{\centering\arraybackslash}c|}{$...$}
Stefan
LaTeX.org admin
rais
Posts: 419 Joined: Sun Nov 16, 2014 8:51 pm
Post
by rais » Fri Nov 10, 2017 7:43 pm
Well, considering that in the tabular's column declaration, you already stated `c' as the column type to use, a
\multicolumn{1}{[[|]>{...}]c[|]}
seems superfluous.
Even if those differ (`those' meaning the column specifications in
{tabular}
and within the matching
\multicolumn
statement), a construct like
\multicolumn{1}{|>{\centering\arraybackslash}c|}{$t$}
seems odd in its own way: `centering' a centered cell?
Not to mention that
\arraybackslash
is---usually---just needed in the last cell of a row.
In short, I'd replace those `
\multicolumn{1}{<something with `c' as column spec>}{<...>}
with <...>, e.g.,
Code: Select all
\multicolumn{1}{|>{\centering\arraybackslash}c|}{$t$}
would come to:
KR
Rainer
Cham
Posts: 937 Joined: Sat Apr 02, 2011 4:06 pm
Post
by Cham » Fri Nov 10, 2017 8:01 pm
Thanks for the feedback. I'll check all of these suggestions.