I am creating a table containing times into my LaTeX document; it is coded as follows:
\documentclass[12pt]{article}
\usepackage{array}
\begin{document}
\begin{tabular}{|b{0.2\linewidth}||
b{0.1\linewidth}|b{0.1\linewidth}||
b{0.1\linewidth}|b{0.1\linewidth}||
b{0.1\linewidth}|b{0.1\linewidth}|}
\hline \multicolumn{7}{|c|}{Main Heading} \\
\hline &\multicolumn{2}{c||}{Sub 1} &\multicolumn{2}{c||}{Sub2} &\multicolumn{2}{c|}{Sub 3}\\
\hline \textbf{Column 1} & \textbf{Start} &\textbf{End} & \textbf{Start} & \textbf{End} & \textbf{Start} & \textbf{End}\\
\hline xx & 12:34.5 &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x \\
\hline xx & xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x \\
\hline xx & xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x \\
\hline xx & xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x &xx:xx.x \\
\hline
\end{tabular}
\end{document}
In the table definition, I am using the array package with the b{[column width]} option to vertically align the text of the cells with the bottom of the cells. However when I compile, this table is the result:
This clearly is not aligned as I intended: whilst the xx:xx.x cells seem to be correct at first glance, as soon as any numbers/any other text is inserted (seen in all the other cells), it is seen that the alignment is to the top of the cell.
If anyone could explain the cause of this problem and/or suggest a solution/point me in the right direction I would be greatly appreciative; tables form quite a large part of the document I am producing, and I have struggled greatly thus far.
The only (incredibly clumsy and impractical) solution I have been able to come up with myself (with my highly limited knowledge), is to define a macro which lowers its arguments by a given amount; however this not only requires me to apply it individually to each cell, but also requires me to guess the height of the cell when telling LaTeX by how much to lower the contents. For completeness the macro is (I don't imagine it will be particularly useful in the best solution to my problem):
\renewcommand{\l}[2]{\lower #1pt \hbox{#2}}
Edit: I have seen the questions here, here, here, and many many others, and found none helpful in solving my problem (I would imagine this is because every table is very different, and the solutions given on these questions were specific, not general, therefore hard to apply).


\hlineuse\setlength\extrarowheight{2pt}or whatever padding you like. – David Carlisle Oct 23 '17 at 20:37g,j, andyhave descenders. (Ascenders are the parts of letters that protrude above the x-line.) – Mico Oct 23 '17 at 21:09