Sign up ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I need to create similar table using LaTeX:


I have tried to use \tabular and \multicolumn, but every time I get something wrong.

I want:

  • Fixed width columns and fixed height rows;
  • Centered cells (vertically and horizontally)
  • Borders around each cell

Could someone help me?

Here is pure HTML markup:

<table border="1" cellpadding="0" cellspacing="0">
    <tr height="50">
        <td align="center" width="150" rowspan="2">State of Health</td>
        <td align="center" width="300" colspan="2">Fasting Value</td>
        <td align="center" width="150">After Eating</td>
    <tr height="50">
        <td align="center" width="150">Minimum</td>
        <td align="center" width="150">Maximum</td>
        <td align="center" width="150">2 hours after eating</td>
    <tr height="50">
        <td align="center" width="150">Healthy</td>
        <td align="center" width="150">70</td>
        <td align="center" width="150">100</td>
        <td align="center" width="150">Less than 140</td>
    <tr height="50">
        <td align="center" width="150">Pre-Diabetes</td>
        <td align="center" width="150">101</td>
        <td align="center" width="150">126</td>
        <td align="center" width="150">140 to 200</td>
    <tr height="50">
        <td align="center" width="150">Diabetes</td>
        <td align="center" width="150">More than 126</td>
        <td align="center" width="150">N/A</td>
        <td align="center" width="150">More than 200</td>
share|improve this question
Try this collection of tips & tricks – vaettchen Oct 18 '12 at 14:19

2 Answers 2

up vote 23 down vote accepted

You could use the multirow package to organize the cell in the north-west corner of the table, and the tabularx package to automatically generate four columns of equal width. In the MWE below, the \newcolumntype instruction sets up a new column type, called "Y", that centers its contents. Adjust the value of the \arraystretch macro to get the amount of vertical stretching to your liking.

enter image description here

\multirow{2}{*}{State of Health} 
  &\multicolumn{2}{c|}{Fasting Value}&After Eating\\
             &Minimum       &Maximum &2 hours after eating\\
Healthy      &70            &100     &Less than 140\\
Pre-Diabetes &101           &126     &140 to 200\\
Diabetes     &More than 126 &N/A     &More than 200\\
share|improve this answer
Thank you! Your markup is very clean and does exactly what I need. – Edward Ruchevits Oct 18 '12 at 21:36
@Mico, would it possible to adjust the width of each cell in the table if I don't want the equal length – user1935724 Jul 19 '14 at 21:06
@user1935724 - Just saw your question. I've posted a new answer to your new posting to explain how go about modifying the relative widths of the columns of type X (or Y). – Mico Jul 20 '14 at 5:47

For comparison, this is how you can typeset the same table in ConTeXt. (Notice the similarity between the HTML markup (had you used CSS) and the TeX markup).


\startsetups table:layout
        width=150pt,           % Fixed column width
        height=2\lineheight,   % Fixed row height
        align={middle,lohi},   % Middle aligned cells
        frame=on,              % Border around cells (default)
        offset=none,           % Equivalent to cellpadding=0


      \bTD[ny=2] State of Health \eTD
      \bTD[nx=2] Fasting Value   \eTD
      \bTD After Eating          \eTD
      \bTD Minimum \eTD
      \bTD Maximum \eTD
      \bTD 2 hours after eating \eTD

    \bTD Healthy       \eTD
    \bTD 70            \eTD
    \bTD 100           \eTD
    \bTD Less than 140 \eTD

    \bTD Pre-Diabetes \eTD
    \bTD 101          \eTD
    \bTD 126          \eTD
    \bTD 140 to 200   \eTD

    \bTD Diabetes      \eTD
    \bTD More than 126 \eTD
    \bTD N/A           \eTD
    \bTD More than 200 \eTD

enter image description here

share|improve this answer
@aditya context is soooo powerful that if i were 35 years younger and starting with tex, i can imagine it attracting me more than latex. unfortunately, it wasn't on the scene, back then (afaik), and i had hardly heard of it when we (uk tug) invited hans to give us a talk. ah, the accidents of history... – wasteofspace Nov 27 '12 at 11:46
@wasteofspace: Well, ConTeXt started around early 90's, and by then LaTeX had already established itself as the dominant standard. But, I think that the fact that ConTeXt came to the scene later than LaTeX--when computers had become more powerful--is part of the reason that ConTeXt could provide a flexible key-value driven syntax. Had it started a few years earlier, it would have had to make the same compromises for speed vs flexibility that LaTeX made. – Aditya Nov 27 '12 at 16:47

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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