复杂表格中的垂直对齐

复杂表格中的垂直对齐

我正在尝试在此处创建类似这样的表格: 在此处输入图片描述

我遇到的问题是,它需要对每个单元格进行大量的有限调整才能使其居中,并且我计划为不同的汉字符号添加更多行(每个(K)和(O)行可能有更多的子行)。有没有办法以编程方式配置对齐?

这是我展示的表格的代码(必须使用 XeLaTeX 编译器进行编译):

\documentclass[12pt]{article}
\usepackage{xeCJK}
\usepackage{ruby}
\usepackage{multicol}
\usepackage{multirow}
\usepackage{array}

\renewcommand{\rubysep}{-4ex}
\newcommand{\mr}[2]{\multirow[c]{#1}{*}{#2}}
\newcommand\Bstrut{\rule[-2.5ex]{0pt}{0pt}}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
% I added more height to the cells to allow the japanese characters to have space for the text below them 
\renewcommand{\arraystretch}{2}
\pagestyle{empty}
\begin{document}
\begin{table}[!ht]

\hspace{-2cm}\begin{tabular}{|M{1.5cm}|m{3cm}|M{2cm}|M{2.8cm}|M{3cm}|M{2.8cm}|}
    \hline
    % The multicolumn commands used here are needed to align vertically the cells
    \multicolumn{1}{|c|}{漢字}  & \multicolumn{1}{c|}{Explicación} & \multicolumn{2}{c|}{くんよみ(K)•おんよみ(O)} & \multicolumn{1}{c|}{Palabras} & \multicolumn{1}{c|}{Significado}\\
    \hline
    \hline
    \multirow[c]{7}{*}{人} & \multirow[c]{7}{3cm}[0.2pt]{Persona. \newline Indica el lugar de procedencia de la persona. \newline Contador de personas.} & K & ひと  & \ruby{人}{ひと}\Bstrut & Persona\\
    \cline{3-6}
    & & \multirow{3}{*}[0.2cm]{O} & ジン & アルゼンチン\ruby{人}{じん}\Bstrut & Argentino\\
    \cline{4-6}
    & & & ニン & \ruby{三}{3}\ruby{人}{にん} & Contador: Tres personas\\
    \cline{3-6}
    & & \multicolumn{2}{c|}{\multirow{3}{*}{Excepciones}} & \ruby{一人}{ひとり} & Contador: Una persona\\
    \cline{5-6}
    & & \multicolumn{2}{c|}{} & \ruby{二人}{ふたり} & Contador: Dos personas\\
    \hline
\end{tabular}
\end{table}
\end{document} 

答案1

tabularray可以轻松设置您喜欢的行分隔:

\documentclass[12pt]{article}
\usepackage{xeCJK}
\usepackage{ruby}
\renewcommand{\rubysep}{-4ex}
\usepackage{tabularray}
\usepackage{mwe}
\pagestyle{empty}
\begin{document}
\blindtext
\begin{table}[!ht]\centering\small\makebox[0pt]{%
\begin{tblr}{colspec={Q[c,m]m{3cm}Q[c,m,2cm]Q[c,m,2.8cm]Q[c,m,3cm]Q[c,m,2.8cm]}, hlines, vlines,
rows={rowsep=4pt},
row{2,3}={rowsep=10pt}, vspan=even}
% First line
 漢字 & Explicación & \SetCell[c=2]{c}  くんよみ(K)•おんよみ(O) & & Palabras & Significado\\\hline
% Second line
 \SetCell[r=5]{c} 人 & \SetCell[r=5]{l}{Persona.\\ Indica el lugar de procedencia de la persona.\\ Contador de personas.} & K & ひと & \ruby{人}{ひと} & Persona\\
% Third line
  & & \SetCell[r=2]{c} O & ジン & アルゼンチン\ruby{人}{じん} & Argentino\\
% Fourth line
  & & & ニン & \ruby{三}{3}\ruby{人}{にん} & Contador: Tres personas\\
% Fifth line
    & & \SetCell[c=2, r=2]{c}Excepciones & & \ruby{一人}{ひとり} & Contador: Una persona\\
    & & & & \ruby{二人}{ふたり} & Contador: Dos personas\\\hline
\end{tblr}%
}
\end{table}
\blindtext
\end{document}

在此处输入图片描述

请注意,您的表格大于文本宽度。

相关内容