6

My desired features for the table alignment are:

  • The cell sizes should be auto-adjustable according to the contents.
  • Every table cell content should be vertically and horizontally center-aligned.
  • The first column's contents (except its header) should be vertically center-aligned but horizontally left-aligned.
  • A fair amount of padding should appear between images and table cell borders.
  • The text-color and background-color of the header row should be different.
\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[export]{adjustbox}
\tabcolsep10pt\fboxrule0pt\fboxsep\tabcolsep
\usepackage{geometry}
\usepackage{array}
\renewcommand{\arraystretch}{1.2}
\usepackage{tabularx}
\newcolumntype{L}[1]{>{\flushleft\arraybackslash}m{#1}}
\renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document}
\begin{center}
\begin{tabularx}{\linewidth}{|L{.15\linewidth}|X|X|X|} \hline
          \multicolumn{1}{|c|}{Property} & Microcanonical & Canonical & Grand-canonical  \\ \hline
          Contact with environment 
          & Isolated system, so the energy and number of particles are constant.
          & System are in thermal contact, such that it can exchange energy but no particles. 
          &  System can exchange both energy and particles. \\ \hline
          Probability density, $\rho(E)$
          &  {$$\begin{cases} \text{C,} & E \text{ to } (E+dE)\\ 0, & \text{otherwise} \end{cases}$$}
          here, $C=$ constant
          & $Ae^{(F-E)/KT}$
          & $Ae^{(\Omega + \mu N - E)/KT}$ \\ \hline
          Diagram
          & \includegraphics[width=\linewidth, valign=c]{example-image}
          & \includegraphics[width=\linewidth, valign=c]{example-image}
          & \includegraphics[width=\linewidth, valign=c]{example-image} \\ \hline
\end{tabularx}
\end{center}

\end{document}

Issues that needed to be fixed:

  • The first column's contents are not vertically center-aligned
  • The second column's cell with the displayed equation is not properly aligned at the center.
  • The padding around images is not appearing perfectly.

3 Answers 3

6

Use \(...\) and not $$...$$; \raggedright and not \flushleft. Also valign=C, plus a trick to get some padding at the top.

\documentclass{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[export]{adjustbox}
\usepackage{geometry}
\usepackage{array}
\usepackage{tabularx}

\newcolumntype{L}[1]{>{\raggedright\arraybackslash}m{#1}}
\renewcommand{\tabularxcolumn}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document}

\begin{center}
\begin{tabularx}{\linewidth}{|L{.15\linewidth}|X|X|X|} \hline
  \multicolumn{1}{|c|}{Property} & Microcanonical & Canonical & Grand-canonical \\
  \hline
  Contact with environment 
    & Isolated system, so the energy and number of particles are constant.
    & System are in thermal contact, such that it can exchange energy but no particles. 
    & System can exchange both energy and particles. \\
  \hline
  Probability density, $\rho(E)$
    & \(\begin{cases} \text{C,} & E \text{ to } (E+dE)\\ 0, & \text{otherwise} \end{cases}\)
      \vspace{1ex}\newline here, $C$ is a constant
    & $Ae^{(F-E)/KT}$
    & $Ae^{(\Omega + \mu N - E)/KT}$ \\
  \hline
  Diagram
    & \includegraphics[width=\linewidth, valign=C,margin=0pt 0pt 0pt 4pt]{example-image}
    & \includegraphics[width=\linewidth, valign=C,margin=0pt 0pt 0pt 4pt]{example-image}
    & \includegraphics[width=\linewidth, valign=C,margin=0pt 0pt 0pt 4pt]{example-image} \\
  \hline
\end{tabularx}
\end{center}

\end{document}

enter image description here

4
  • 1
    you could use \includegraphics[width=\linewidth, valign=C,margin=0pt 0pt 0pt 4pt]{example-image} to give the graphics some padding at the top. Aug 22, 2021 at 13:56
  • @UlrikeFischer Thanks!
    – egreg
    Aug 22, 2021 at 14:42
  • Thank you. Can the overall padding be increased a bit? I think it would look nicer if the bracket of the cases environment's not touching the table cell border.
    – raf
    Aug 23, 2021 at 6:16
  • One more thing I forgot to mention in the question, I like to set a different color on the first (header) row. What changes in your code is necessary to obtain different color on header row?
    – raf
    Aug 23, 2021 at 13:51
5

With tabularray table and use of the \adjincludegraphics macro from the adjustbox package:

\documentclass{article}
\usepackage{geometry}
\usepackage{amsmath}
\usepackage[export]{adjustbox}
\usepackage{tabularray}

\begin{document}
    \begin{center}
    \adjustboxset{height=0.15\textwidth, % had to be defined
                  keepaspectratio,
                  valign=m}
\begin{tblr}{hlines, vlines,
             colspec={X[0.6,l,m] *{3}{X[1,c,m]}},
             rowsep=4pt,
             }
\SetCell{c} Property
    & Microcanonical
        & Canonical
            & Grand-canonical                                       \\
Contact with environment
    &   Isolated system, so the energy and number of particles are constant.
        &   System are in thermal contact, such that it can exchange energy but no particles.
            &   System can exchange both energy and particles.      \\
Probability density, $\rho(E)$
    & \parbox{\linewidth}{$\begin{cases}
        \text{C,} & E \text{ to } (E+dE)\\
               0, & \text{otherwise}
        \end{cases}$

    \medskip
      here, $C$ is a constant}
    & $Ae^{(F-E)/KT}$
        & $Ae^{(\Omega + \mu N - E)/KT}$ \\
Diagram
    &   \adjincludegraphics{example-image-duck}
        &   \adjincludegraphics{example-image-duck} 
            &   \adjincludegraphics{example-image-duck} \\
\end{tblr}
    \end{center}
\end{document}

enter image description here

Edit: The weak point of the above solution is determining the size of the images. To adjust them correctly to the width of the columns, it is necessary to guess the allowed their heights. Determining their widths by column widths unfortunately now is inserted (due to bug in package) a large amount of vertical space above/below them.

With the new version of the package, this bug will be removed and the correct image size can will be possible to determine simply by the width of the columns with the following setting:

    \adjustboxset{width=\linewidth,   % <---
                  keepaspectratio,
                  valign=m}

Resulted table will be the same as before. More information you can find in this answer.

5
  • Thank you so much. Maybe I am being too picky, the 3rd row of Probability density is appearing slightly below from the vertical-center line of the cell. Check the equations in the 3rd and 4th columns too. The issue appears on the 4th row's 1st column Diagram. One more thing I forgot to mention in the question, I like to set a different color on the first (header) row.
    – raf
    Aug 23, 2021 at 10:32
  • 1
    @raf, you are right (in all) :-). This should be addressed to package author ..... As work arounf can be insert content of cell with cases in a \parbox. For example: \parbox{\linewidth}{$\begin{cases} \text{C,} & E \text{ to } (E+dE)\\ 0, & \text{otherwise} \end{cases}$ \medskip here, $C$ is a constant}
    – Zarko
    Aug 23, 2021 at 12:24
  • Can you please keep this suggestion in your answer too? Code blocks don't look good in comments. and the header rows' color?
    – raf
    Aug 23, 2021 at 13:49
  • 1
    @raf, done! See edited answer.
    – Zarko
    Aug 23, 2021 at 13:55
  • Thank you for the update.
    – raf
    Aug 23, 2021 at 13:57
1

With {NiceTabular} of nicematrix.

\documentclass{article}
\usepackage{graphicx}
\usepackage{geometry}
\usepackage[export]{adjustbox}
\usepackage{nicematrix}


\begin{document}

\begin{center}
\begin{NiceTabular}{m[l]{.15\linewidth}X[m,c]X[m,c]X[m,c]}[hvlines,cell-space-top-limit=3pt,colortbl-like]
  \RowStyle[color=blue]{\centering}\rowcolor{lightgray}
  Property & Microcanonical & Canonical & Grand-canonical \\
  Contact with environment 
    & Isolated system, so the energy and number of particles are constant.
    & System are in thermal contact, such that it can exchange energy but no particles. 
    & System can exchange both energy and particles. \\
  Probability density, $\rho(E)$
    & \(\begin{cases} \text{C,} & E \text{ to } (E+dE)\\ 0, & \text{otherwise} \end{cases}\)
      \vspace{1ex}\newline here, $C$ is a constant
    & $Ae^{(F-E)/KT}$
    & $Ae^{(\Omega + \mu N - E)/KT}$ \\
  Diagram
    & \includegraphics[width=\linewidth, valign=C]{example-image}
    & \includegraphics[width=\linewidth, valign=C]{example-image}
    & \includegraphics[width=\linewidth, valign=C]{example-image} \\
\end{NiceTabular}
\end{center}

\end{document}

Output of the above code

7
  • What do I need to change in your code to set a different color for the header row's background?
    – raf
    Aug 23, 2021 at 15:17
  • Every cell except the 1st column should be veritally+horizontally center aligned.
    – raf
    Aug 23, 2021 at 15:18
  • 1
    @Raf: I have modified my answer. Aug 23, 2021 at 16:31
  • Thank you for the update.
    – raf
    Aug 23, 2021 at 17:12
  • 1
    @raf: Overleaf has not the latest version of nicematrix. You should upload the latest version of the file nicematrix.sty in the repertory of your Overleaf project. You can find that file on the SVN server of TeXLive: www.tug.org/svn/texlive/trunk/Master/texmf-dist/tex/latex/nicematrix/nicematrix.sty Aug 24, 2021 at 14:51

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.