在此代码中,我想将文本垂直居中在左侧单元格中,x = k
并且x > k
。我尝试了\parbox[c]
:
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tabularx}
\begin{document}
\begin{table}
\renewcommand{\arraystretch}{3}
\begin{tabularx}{0.5\textwidth}{ | X | c | }
\hline
\noindent\parbox[c]{\hsize}{$x = k$} & $a = \displaystyle \frac{1}{2}$\\
& $b = \displaystyle \frac{1}{4}$\\[0.4cm]
\hline
\noindent\parbox[c]{\hsize}{$x > k$} & $c = \displaystyle \frac{1}{8}$\\
& $d = \displaystyle \frac{1}{16}$\\[0.4cm]
\hline
\end{tabularx}
\end{table}
\end{document}
但结果却是这样的:
哪里出了问题?如何让这些单元格的内容垂直居中?
\parbox
(没有必要使用,我只是认为这是一个解决方案)。
答案1
如果希望左列垂直对齐,包括增加的0.4cm的行高,那么:
\documentclass[border=2mm,tikz]{standalone}
\usepackage{tabularx, multirow, adjustbox}
\begin{document}
\begin{table}
\renewcommand{\arraystretch}{3}
\begin{tabularx}{0.5\textwidth}{ | X | c | }
\hline
\multirow{2}{*}{\adjustbox{vspace=-0.2cm}{\centerline{$x = k$}}} & $a = \displaystyle \frac{1}{2}$ \\
& $b = \displaystyle \frac{1}{4}$ \\[0.4cm]
\hline
\multirow{2}{*}{\adjustbox{vspace=-0.2cm}{\centerline{$x > k$}}} & $c = \displaystyle \frac{1}{8}$ \\
& $d = \displaystyle \frac{1}{16}$ \\[0.4cm]
\hline
\end{tabularx}
\end{table}
\end{document}
如果删除了 0.4cm,那么您可以直接删除该\adjustbox{vspace-0.2cm}{}
命令。此外,如果您更改添加的行高值,则可以调整测量值。
答案2
这是一个没有multirow
但有嵌套表格和的替代方案makecell
:
\documentclass{article}
\usepackage{tabularx}
\usepackage{makecell}
\setcellgapes{0.25cm}
\begin{document}
\begin{table}
\makegapedcells
\begin{tabularx}{0.5\textwidth}{ | >{\centering\arraybackslash}X | c | }
\hline
$x = k$ & \begin{tabular}{>{\(\displaystyle}c<{\)}} a = \frac{1}{2} \\ b = \frac{1}{4} \end{tabular}\\
\hline
$x > k$ & \begin{tabular}{>{\(\displaystyle}c<{\)}} c = \frac{1}{8} \\ d = \frac{1}{16} \end{tabular}\\
\hline
\end{tabularx}
\end{table}
\end{document}