该问题的tabularray
方案可见这个链接。
tabular
的框架内,不希望用例如tabularray
宏包的方案...希望实现合并单元格内的纵向对齐
MWE如下:
\documentclass[fontset=fandol]{ctexart}
\usepackage{array}
\usepackage{multirow}
\usepackage{amsmath,amsfonts}
\usepackage{makecell}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\begin{document}
\begin{tabular}{|M{5cm}|M{5cm}|M{5cm}|}
\hline
\textbf{条件} & \textbf{方程} & \textbf{说明} \\ \hline
\multirow{2}{*}{圆心在原点} & $x^2+y^2=r^2$ & $a=b=0$ \\ \cline{2-3}
& $x^2+y^2+F=0$ & $D=E=0$ \\ \hline
\multirow{2}{*}{圆过原点} & $(x-a)^2+(y-b)^2=a^2+b^2$ & $a^2+b^2=r^2$ \\ \cline{2-3}
& $x^2+y^2+Dx+Ey=0$ & $F=0$ \\ \hline
\multirow{2}{*}{圆心在$x$轴上} & $(x-a)^2+y^2=r^2$ & $b=0$ \\ \cline{2-3}
& $x^2+y^2+Dx+F=0$ & $E=0$ \\ \hline
\multirow{2}{*}{圆心在$y$轴上} & $x^2+(y-b)^2=r^2$ & $a=0$ \\ \cline{2-3}
& $x^2+y^2+Ey+F=0$ & $D=0$ \\ \hline
\multirow{2}{*}{圆与$x$轴相切} & $(x-a)^2+(y-b)^2=b^2$ & $|b|=r$ \\ \cline{2-3}
& \makecell{$x^2+y^2+Dx+Ey+F=0$\\$(E\neq 0,D^2-4F=0)$} & $E\neq 0,D^2-4F=0$ \\ \hline
\multirow{2}{*}{圆与$y$轴相切} & $(x-a)^2+(y-b)^2=a^2$ & $|a|=r$ \\ \cline{2-3}
& \makecell{$x^2+y^2+Dx+Ey+F=0$\\$(D\neq 0,E^2-4F=0)$} & $D\neq 0,E^2-4F=0$ \\ \hline
\multirow{2}{*}{圆心在$x$轴上且圆过原点} & $(x-a)^2+y^2=a^2$ & $|a|=r,b=0$ \\ \cline{2-3}
& $x^2+y^2+Dx=0$ & $E=F=0,D\neq 0$ \\ \hline
\multirow{2}{*}{圆心在$y$轴上且圆过原点} & $x^2+(y-b)^2=b^2$ & $a=0,|b|=r$ \\ \cline{2-3}
& $x^2+y^2+Ey=0$ & $D=F=0,E\neq 0$ \\ \hline
\multirow{2}{*}{圆与$x,y$轴都相切} & \makecell{$(x-a)^2+(y-b)^2=a^2$\\$(|a|=|b|\neq 0)$} & $|a|=|b|=r$ \\ \cline{2-3}
& \makecell{$x^2+y^2+Dx+Ey+F=0$\\$(|D|=|E|\neq 0)$} & $D^2=E^2=4F$ \\ \hline
\end{tabular}
\end{document}
即使使用了array
提供的m{<width>}
格式这也并不令人满意....
本回答重点在于,希望在不改变目前代码的大框架下(i.e.必须使用原生的tabular
环境)权衡好multirow
和makecell
的功能,试图找到tabular
框架下纵向对齐的最佳实践。
感谢@u101077 老师提供的方案,调整\multirow
的行数即可。
\documentclass[fontset=fandol]{ctexart}
\usepackage{array}
\usepackage{multirow}
\usepackage{amsmath,amsfonts}
\usepackage{makecell}
\begin{document}
\begin{tabular}{|c|c|c|}
\hline
\textbf{条件} & \textbf{方程} & \textbf{说明} \\ \hline
\multirow{2}{*}{圆心在原点} & $x^2+y^2=r^2$ & $a=b=0$ \\ \cline{2-3}
& $x^2+y^2+F=0$ & $D=E=0$ \\ \hline
\multirow{2}{*}{圆过原点} & $(x-a)^2+(y-b)^2=a^2+b^2$ & $a^2+b^2=r^2$ \\ \cline{2-3}
& $x^2+y^2+Dx+Ey=0$ & $F=0$ \\ \hline
\multirow{2}{*}{圆心在$x$轴上} & $(x-a)^2+y^2=r^2$ & $b=0$ \\ \cline{2-3}
& $x^2+y^2+Dx+F=0$ & $E=0$ \\ \hline
\multirow{2}{*}{圆心在$y$轴上} & $x^2+(y-b)^2=r^2$ & $a=0$ \\ \cline{2-3}
& $x^2+y^2+Ey+F=0$ & $D=0$ \\ \hline
\multirow{3}{*}{圆与$x$轴相切} & $(x-a)^2+(y-b)^2=b^2$ & $|b|=r$ \\ \cline{2-3}
& \makecell{$x^2+y^2+Dx+Ey+F=0$\\$(E\neq 0,D^2-4F=0)$} & $E\neq 0,D^2-4F=0$ \\ \hline
\multirow{3}{*}{圆与$y$轴相切} & $(x-a)^2+(y-b)^2=a^2$ & $|a|=r$ \\ \cline{2-3}
& \makecell{$x^2+y^2+Dx+Ey+F=0$\\$(D\neq 0,E^2-4F=0)$} & $D\neq 0,E^2-4F=0$ \\ \hline
\multirow{2}{*}{圆心在$x$轴上且圆过原点} & $(x-a)^2+y^2=a^2$ & $|a|=r,b=0$ \\ \cline{2-3}
& $x^2+y^2+Dx=0$ & $E=F=0,D\neq 0$ \\ \hline
\multirow{2}{*}{圆心在$y$轴上且圆过原点} & $x^2+(y-b)^2=b^2$ & $a=0,|b|=r$ \\ \cline{2-3}
& $x^2+y^2+Ey=0$ & $D=F=0,E\neq 0$ \\ \hline
\multirow{3}{*}{圆与$x,y$轴都相切} & \makecell{$(x-a)^2+(y-b)^2=a^2$\\$(|a|=|b|\neq 0)$} & $|a|=|b|=r$ \\ \cline{2-3}
& \makecell{$x^2+y^2+Dx+Ey+F=0$\\$(|D|=|E|\neq 0)$} & $D^2=E^2=4F$ \\ \hline
\end{tabular}
\end{document}
不过我不确定若右侧内容中存在\dfrac
,或者插入图片等「高度不是行数的整数倍」的情况是否都具有良好的可拓展性...是不是总是能找到这个合适的\multirow{<nrow>}...
?
\documentclass[fontset=fandol]{ctexart}
\usepackage{array}
\usepackage{multirow}
\usepackage{amsmath,amsfonts}
\usepackage{makecell}
\usepackage{graphicx}
\begin{document}
\begin{tabular}{|c|c|c|}
\hline
\textbf{条件} & \textbf{方程} & \textbf{说明} \\ \hline
\multirow{2}{*}{圆心在原点} & $x^2+y^2=r^2$ & $a=b=0$ \\ \cline{2-3}
& $x^2+y^2+F=0$ & $D=E=0$ \\ \hline
\multirow{3}{*}{圆与$x,y$轴都相切} & \makecell{$(x-a)^2+(y-b)^2=a^2$\\$(|a|=|b|\neq 0)$} & $|a|=|b|=r$ \\ \cline{2-3}
& \makecell{$x^2+y^2+Dx+Ey+F=0$\\$(|D|=|E|\neq 0)$} & $D^2=E^2=4F$ \\ \hline
\multirow{3}{*}{圆与$x,y$轴都相切} & \makecell{$\dfrac{1}{2}(x-a)^2+(y-b)^2=a^2$\\$(|a|=|b|\neq \dfrac{1}{2})$} & $|a|=|b|=r$ \\ \cline{2-3}
& \makecell{$x^2+y^2+\dfrac{4}{5}Dx+Ey+F=0$\\$(|D|=|E|\neq 0)$} & $D^2=E^2=F$ \\ \hline
\multirow{7}{*}{圆与$x,y$轴都相切} & \makecell{$\dfrac{1}{2}(x-a)^2+(y-b)^2=a^2$\\$(|a|=|b|\neq \dfrac{1}{2})$} & $|a|=|b|=r$ \\ \cline{2-3}
& \makecell{$x^2+y^2+\dfrac{4}{5}Dx+Ey+F=0$\\$(|D|=|E|\neq 0)$} &\includegraphics[width=4cm]{example-image}\\\hline
\end{tabular}
\end{document}
整数倍不是问题,
nrows
也可以是小数,负数,理论上可以微调到竖直中心,而且还有一个专门用来微调的参数vmove
,但是目前来看似乎复杂情况下,multirow
还做不到自优化调整,总是需要额外人工干预的。@u23703 感谢您的补充。这里我贴个文档的内容。
从用户体验来看,想要完美轻松优雅地实现「垂直居中」,还是好评如潮的
tabularray
实现更简便...