I was asked to give an introduction to tables in Latex. Even though there are plenty of tutorials and pieces of Latex-code out there in the internet, it might still be useful to somebody who just started using Latex or has never used tables before…
Table
Let me start with the table-stub and later on explain how to fill in the actual table content. Most of the Latex editors provide a macro, which is usually helpful as it directly inserts the basic stub usually including a few rows and columns of the table. The macro provided by LED is the following code:
\begin{table}[t]
\centering
\begin{tabular}{}
%table content
\end{tabular}
\caption{}
\label{tab:label}
\end{table}
There is an optional argument which determines where Latex places the table. Available placements are:
h (here), t (top), b (bottom) and p (page of floats).
Caption and label are the same commands used when including figures. Caption is the explanation displayed below or above the table, depending on where you insert it, before or after the tabular. The label is used for reference in the text. It is a Latex convention to start table references by “tab:”, which no only lets you use the same name for a figure (starting with fig:) and a table, but makes it easier to distinguish between figures and tables. Use the command \ref{tab:} to reference a table in the text.
Tabular
The tabular environment produces a box consisting of a sequence of rows aligned vertically in columns. The complete tabular environment takes 3 arguments:
\begin{tabular}{width}[pos]{cols}
The first argument fixes the width of the whole tabular environment.Filling the content is not difficult, once you got the idea. Columns are separated by “&” and rows by “\\”.
Example 1:
entry 1 & entry 2 & entry 3 & entry4 \\
You have to tell Latex in the beginning how many columns you will be using. This is done by adding l’s (align left), c’s (align center) and r’s (align right) in addition to |’s (vertical bar for cell separation) as the argument of the command tabular.
Example 2:
In order to generate a table with four horizontal cells as in example 1, one would use
\begin{tabular}{|c|c|c|c|}
c can be substituted by l and r.
It is also possible to use different alignments for different cells. Just make sure that are as many c’s, l’s and r’s as there are column entries, otherwise Latex will complain. For leaving a cell empty, just use “& &”. The number of &’s has to be equal to the number of c’s/r’s/l’s -1.
There are a certain number of other options available, which I will not discuss here, as they are quite specific. You can find the complete command reference for tabular here.
In order to horizontally separate the cells, just use \hline, which inserts a line as wide as the table. The size of the table is determined automatically, depending on the number of cells as well as the content.
Example 3:
Here is the code for a complete table, which can be used as a template for your tables, just copy-paste the code into your tex-file:
\begin{table}[t]
\centering
\begin{tabular}{|l|c|c|c|c|c|}
\hline
Product & 1 & 2 & 3 & 4 & 5\\
\hline
Price & 124.- & 136.- & 85.- & 156.- & 23.-\\
Guarantee [years] & 1 & 2 & - & 3 & 1\\
Rating & 89\% & 84\% & 51\% & & 45\%\\
\hline
\hline
Recommended & yes & yes & no & no & no\\
\hline
\end{tabular}
\caption{This is a table template}
\label{tab:template}
\end{table}
Table \ref{tab:template} gives an example of how to write a table in Latex.Generating the PDF should produce thefollowing table.

August 20th, 2007 at 6:14 am
[...] and MacTex… A table ususally has the following structure (for an introduction to tables click here) with the “small”- environment added to slightly decrease its size: begin{table}[htdp] [...]
September 15th, 2008 at 6:56 pm
[...] font size. E.g. begin{footnotesize} begin{floatingtable} … end{footnotsize} Check this post for an introduction to [...]
June 25th, 2009 at 9:00 am
Hi,
I am trying to change the “title” of a table in Latex. You know that first part of the tile: “Table 1: —–”. I want this “Table” to disappear or to replace it with something else. Is there any way that I can do that?
Thanks,
Lavinia
May 2nd, 2010 at 3:55 pm
Hi Lavinia,
Try the caption package:
\usepackage{caption}and within your document use:
\captionsetup{tablename=Tab.}for “Tab.” instead of “Table” and similarly for figures:
\captionsetup{figurename=Fig.}Source: Caption documentaton
Cheers,
Tom
January 29th, 2012 at 10:47 pm
Reblogged this on russjohnson09.
June 12th, 2012 at 10:13 am
I am using LaTeX to make some reports, one problem I am having is with Tables, the headings to the tables are quite long. Right now I use the tabularx package, when I compile I get underfull hbox badness 10000, I know it will still work but I want LaTeX to compile with no warnings. A minimal example is given below.
\documentclass[a4paper,10pt]{article} \usepackage{tabularx} \begin{document} \begin{table}[H] \centering \begin{tabularx}{\linewidth}{ |X|X|X|X|} \hline Long Name & Long Name& Long Name & Very Long Namesssdsdsdsdsdsdsdssdsdsdsdsdsdsdsssdsds \\ \hline 1 & 2.3 & 30.3 & 36\\ \hline 2 & 8.6 & 10.4 & 17\\ \hline 3.5 & 18.2 & 5.2 & 12\\ \hline 5 & 28.2 & 3.4 & 6\\ \hline \end{tabularx} \end{table} \end{document}June 12th, 2012 at 4:12 pm
Hi!
Thanks for your question and the minimal working example. As you already pointed out, the problem lies with the very long names of the column headings. I suggest you try the microtype package. Loading that packages possibly resolves most of the warnings. Otherwise, you can enforce how LaTeX splits long names using:
\hyphenation{}Hope it helps,
Tom.
June 12th, 2012 at 9:29 pm
Hi Tom,
Thanks, it fixed it up, however I have decided to make the shift to the booktabs table, it looks much more professional. However another problem with the long names in booktabs is Overfull hbox badness 10000, sometimes I get this when placing figures side by side, any assistance?
June 13th, 2012 at 1:42 am
Hey!
These warnings are relatively easy to fix. Use the documentclass option
draftto highlight any “overfull hbox”. I suspect you are using0.5\linewidthor0.5\textwidthfor two figures side-by-side. Just slightly reduce the size to e.g.0.47\textwidthfor both figures, since LaTeX add some space in between.\usepackage{graphicx} ... \includegraphics[width=0.47\textwidth]{filename}Please provide a minimal working example again in case this does not solve your problem.
Thanks, Tom.
August 28th, 2012 at 8:41 am
Hello tom
please help me in my problem
I’m using lyx and I want to make word table bold and put caption below word table, also i want both word table and caption to be most left justified with left border of table , like this
Table1
This is table1 caption
what will be code to modify or steps in lyx
August 29th, 2012 at 4:40 am
Hi mero,
I’m sure you can do it in LyX. But since I never use LyX, here is how I would go about it.
Insert TeX code before and after your table:
% before \begin{table}[ht] \begin{bfseries} %after \end{bfseries} \caption{Table caption text.} \end{table}Once that’s done, you’ll also need to align the caption which turns out a little more challenging, since you’ll need to load the caption package. Navigate to “Document –> Settings” and choose “LaTeX preamble”. Then paste the following line in the textbox:
\usepackage[singlelinecheck=off]{caption}That did the trick for me. Hope it works for you!
Cheers, Tom.
October 5th, 2012 at 1:54 pm
Hi, I have a problem
\begin{table} \begin{tabular}{l*3S[table-format=4.4]} \toprule \input{result1.tex} \bottomrule \end{tabular} \end{table}Result1.tex:
&\multicolumn{1}{c}{(1)}&\multicolumn{1}{c}{(2)}&\multicolumn{1}{c}{(3)}\\ &\multicolumn{1}{c}{Success}&\multicolumn{1}{c}{Total}&\multicolumn{1}{c}{Round1}\\ \midrule main&&&\\ Round1&0.405\sym{***}&&\\ &(0.121)&&\\ Gender&0.167&2.852\sym{**}&0.336\sym{***}\\ &(0.298)&(1.177)&(0.128)\\ Biology&-0.695&0.373&0.047\\ &(0.461)&(0.422)&(0.086)\\ Mathematics&0.355&-3.533&-0.829\sym{***}\\ &(0.595)&(2.545)&(0.221)\\ Economics&0.195&-1.535&-0.140\\ &(0.358)&(1.308)&(0.148)\\ Psychology&0.471&-0.011&0.017\\ &(0.608)&(1.833)&(0.248)\\ Law&0.628&0.638&-0.257\\ &(0.568)&(2.058)&(0.211)\\ Treatment&0.722\sym{*}&&0.105\\ &(0.411)&&(0.073)\\ Constant&-1.935\sym{***}&14.719\sym{***}&1.527\sym{***}\\ &(0.702)&(1.343)&(0.138)\\ \midrule Observations&234&234&234\\I always get the error:
missplaced\noaligne.
\bottomrule-> noaligne
I can solve the problem by changing \input{result1.tex} to \input{result1.tex} \\
But then I have a empty line before the bottomrule and thats not what I want.
Anybody an idea?
Thanks in advance
October 6th, 2012 at 10:15 am
Hi Markus,
I recommend to place the entire table, not only the table content, into the file and try again. It works for me. Also, next time, please provide a minimal working example. I first had to google before I was able to run your code. It only works when using quite a substantial amount of additional code.
Cheers, Tom.
October 6th, 2012 at 3:12 pm
Thanks for your help Tom. It was the first time that I posted a problem in a forum like this one. Thats why I had no idea how I should really do it. Next time I will do it as you recommend. Thanks again. The problem is that the file result1.tex is provided from Stata.It’s important for me that it stays like this. But thats exactly the point. Isn’t it strange that it works when one puts everything in the file. I mean what else does the the input command do as just putting the code at it’s place. But that’s not working.
October 6th, 2012 at 3:42 pm
Hi Markus,
Thanks for following up on your question. Not sure, why you get the error. Here is what works for me with your Stata output (result1.tex):
\documentclass[11pt]{article} \usepackage{booktabs} \usepackage{caption} \newcommand{\sym}[1]{\rlap{#1}}% \usepackage{siunitx} % centering in tables \sisetup{ detect-mode, tight-spacing = true, group-digits = false , input-signs = , input-symbols = ( ) [ ] - + *, input-open-uncertainty = , input-close-uncertainty = , table-align-text-post = false } \let\estinput=\input% \newcommand{\estauto}[3]{ \vspace{.75ex}{ \begin{tabular}{l*{#2}{#3}} \toprule \estinput{#1} \bottomrule \addlinespace[.75ex] \end{tabular} } } \begin{document} \begin{table} \estauto{result1.tex}{4}{l} %\begin{tabular}{l*3S[table-format=4.4]} %\toprule %\input{result1.tex} %\bottomrule %\end{tabular} \end{table} \end{document}I copied most of the code from this blog.
Your code (commented with %) also works. Give it a try!
Hope it helps. Tom.
December 9th, 2012 at 4:29 pm
Hello Tom,
I have a query. I want to make a table which is very long in terms of column. So I divided the whole thing into 2 parts. Now these are titled as Table 1 and Table 2. But how can I make them Table 1.(A) and Table 1.(B)…. Is there any way?
Thanks in advance
December 9th, 2012 at 4:36 pm
Hi Arindam,
The longtable package does what you are looking for. You can find an example here.
Best, Tom.
December 9th, 2012 at 4:47 pm
It’s so kind of you, I think I have got my answer……:) So quickly….
December 9th, 2012 at 4:49 pm
Great! And good luck with the table… Tom.