![多行重叠并延伸至页面之外](https://linux22.com/image/442002/%E5%A4%9A%E8%A1%8C%E9%87%8D%E5%8F%A0%E5%B9%B6%E5%BB%B6%E4%BC%B8%E8%87%B3%E9%A1%B5%E9%9D%A2%E4%B9%8B%E5%A4%96.png)
几天来我一直在尝试修复 Overleaf 文件中的此表。多行超出了页面范围,并且一些单元格重叠。\cline 中似乎也出现了断点。
\documentclass[acmsmall, anonymous=true]{acmart}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage{tabularx}
\newcolumntype{Y}{>{\centering\arraybackslash}X}
\newcolumntype{d}{>{\centering}b{.03\textwidth}}
\begin{table}[hbt!]
\centering
\def\tabularxcolumn#1{m{#1}}
\begin{tabularx}{\textwidth}{cdYX}
\textit{Phase} & & \multicolumn{1}{c}{\textit{Step}} & \multicolumn{1}{c}{\textit{Difficulties a Potential Data Subject Faces with Each Step}} \\
\multicolumn{1}{c|}{\multirow{8}{*}{\textbf{Collection}}} & & \multirow{2}{=}{Data Source} & \multirow{2}{*}{looooooong looooooong looooooong looooooong cell looooooong looooooong looooooong looooooong cell}
\\ \cline{2-2}
\multicolumn{1}{c|}{} & & & \\
\multicolumn{1}{c|}{} & & \multirow{2}{*}{Subject Type} & \multirow{2}{*}{x} \\ \cline{2-2}
\multicolumn{1}{c|}{} & & & \\
\multicolumn{1}{c|}{} & & \multirow{2}{*}{Awareness and Consent} & \multirow{2}{*}{x} \\ \cline{2-2}
\multicolumn{1}{c|}{} & & & \\
\multicolumn{1}{c|}{} & & \multirow{2}{*}{Original Data Licensing} & \multirow{2}{*}{x} \\ \cline{2-2}
\multicolumn{1}{c|}{} & & & \\ \hline
\multicolumn{1}{l|}{\textbf{Packaging}} & & \multirow{2}{*}{Dataset Availability} & \multirow{2}{*}{x} \\ \cline{2-2}
\multicolumn{1}{l|}{} & & & \\
\multicolumn{1}{l|}{} & & \multirow{2}{*}{Dataset Licensing} & \multirow{2}{*}{x} \\ \cline{2-2}
\multicolumn{1}{l|}{} & & & \\
\multicolumn{1}{l|}{} & & \multirow{2}{*}{Prohibited Uses} & \multirow{2}{*}{x} \\ \cline{2-2}
\multicolumn{1}{l|}{} & & & \\ \cline{1-1} \cline{3-4}
\multicolumn{1}{l|}{\textbf{Use}} & & \multirow{2}{*}{Model Use} & \multirow{2}{*}{x} \\ \cline{2-2}
\multicolumn{1}{l|}{} & & & \\
\multicolumn{1}{l|}{} & & \multirow{2}{*}{Dataset Derivatives} & \multirow{2}{*}{x} \\ \cline{2-2}
\multicolumn{1}{l|}{} & & & \\
\multicolumn{1}{l|}{} & & \multirow{2}{*}{Derivative Domain Shift} & \multirow{2}{*}{x} \\ \cline{2-2}
\multicolumn{1}{l|}{} & & & \\ \cline{1-3}
\multicolumn{1}{l|}{\textbf{Retraction}} & & & \multirow{2}{*}{x} \\ \cline{2-3}
\multicolumn{1}{l|}{} & & &
\end{tabularx}
\caption[x]{\small x}
\label{table:source}
\vspace{-5mm}
\end{table}
\FloatBarrier
当我尝试在其他帖子上找到的一些解决方案(例如指定单元格宽度)时,我得到的却是:
所需输出的草图(抱歉,它很糟糕,我只是在绘画中移动了一些东西):
任何帮助将非常感激。
答案1
我还用该tabularray
软件包制作了一个解决方案,这让事情变得容易得多。这是一个相当新的软件包,因此使用它可能会有点害怕。但它让事情变得容易得多,因为它会自动考虑单元格的实际大小。因此,它也可以正确地处理更大的文本,而无需调整数字\multirow
。
我为第二列定义了一个规则 ( \RR
),我用它代替\cline{2-2}
。这样更可靠。我还将第一列的标签垂直居中。
\documentclass[acmsmall, anonymous=true]{acmart}
\usepackage{tabularray}
\newcommand{\RR}{\rule[0.5ex]{6mm}{0.4pt}} % rule for second column
\begin{document}
\begin{table}[hbt!]
\centering
\begin{tblr}{ l | Q[l,m,colsep=0pt] X[1,l,m] X[3,l,m] }
\textit{Phase} & & \SetCell[c=1]{c}{\textit{Step}} &
\SetCell[c=1]{c}{\textit{Difficulties a Potential Data Subject
Faces with Each Step}} \\ \hline
\SetCell[r=4]{m}\textbf{Collection}
& \RR & Data Source &
looooooong looooooong looooooong looooooong cell looooooong looooooong looooooong looooooong cell \\
& \RR & Subject Type & x \\
& \RR & Awareness and Consent & x \\
& \RR & Original Data Licensing & x \\ \hline
\SetCell[r=3]{m}\textbf{Packaging} & \RR &Dataset Availability & x \\
& \RR & Dataset Licensing & x \\
& \RR & Prohibited Uses & x \\
\cline{1-1} \cline{3-4}
\SetCell[r=3]{m}\textbf{Use} & \RR & Model Use & x \\
& \RR & Dataset Derivatives & x \\
& \RR & Derivative Domain Shift & x \\
\cline{1-3}
\textbf{Retraction} & & & x \\ \cline{2-3}
\end{tblr}
\caption[x]{\small x}
\label{table:source}
\vspace{-5mm}
\end{table}
%\FloatBarrier
\end{document}
答案2
我对你的代码做了一些更改:
- 我更改了列宽。有两个 X 列;我把第一个弄窄了。
- 我通过在表格规范中放置来消除第一列中的
\multicolumn{1}{c|}
(或)。 (我选择而不是,因为这对我来说似乎是最好的。)l|
|
l
c
- 我放置了一个
\extrarowheight
以便在行之间获得更多空间。 \multirow{2}{*}
我把很多 改成了\multirow{2}{=}
。对于需要文本换行的列,这是正确的选择。实际上我认为所有这些都可以更改。- 我
\hline
在标题下放置了一个,以将其与表格的其余部分分开。
这给出了以下解决方案。我认为这个例子强调了使用的限制。如果最后一列中的长文本会变大,\multirow
您可能需要将其中一些调整为更大的数字而不是 2。我建议看看这个包是否是这种表格的更好选择。\multirow{2}
tabularray
\documentclass[acmsmall, anonymous=true]{acmart}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage{tabularx}
\newcolumntype{Y}{>{\centering\arraybackslash\hsize=0.3\hsize}X}
\newcolumntype{d}{>{\centering}b{.02\textwidth}}
\setlength{\extrarowheight}{2pt}
\begin{document}
\begin{table}[hbt!]
\centering \def\tabularxcolumn#1{m{#1}}
\begin{tabularx}{\textwidth}{ l | d Y X }
\textit{Phase} & & \multicolumn{1}{c}{\textit{Step}} &
\multicolumn{1}{c}{\textit{Difficulties a Potential Data Subject
Faces with Each Step}} \\ \hline
{\multirow{8}{*}{\textbf{Collection}}} & & \multirow{2}{=}{Data Source} &
\multirow{2}{=}{looooooong looooooong looooooong looooooong cell looooooong looooooong looooooong looooooong cell}
\\ \cline{2-2} \\
& & \multirow{2}{=}{Subject Type} & \multirow{2}{*}{x} \\
\cline{2-2}
& & & \\
& & \multirow{2}{=}{Awareness and Consent} & \multirow{2}{*}{x} \\
\cline{2-2}
& & & \\
& & \multirow{2}{=}{Original Data Licensing} &
\multirow{2}{*}{x} \\ \cline{2-2}
& & & \\ \hline
{\textbf{Packaging}} & & \multirow{2}{=}{Dataset Availability} & \multirow{2}{*}{x} \\ \cline{2-2}
& & & \\
& & \multirow{2}{=}{Dataset Licensing} & \multirow{2}{*}{x} \\
\cline{2-2}
& & & \\
& & \multirow{2}{=}{Prohibited Uses} &
\multirow{2}{*}{x} \\ \cline{2-2}
& & & \\
\cline{1-1} \cline{3-4}
{\textbf{Use}} & &
\multirow{2}{=}{Model Use} & \multirow{2}{*}{x} \\ \cline{2-2}
& & & \\
& & \multirow{2}{=}{Dataset Derivatives} & \multirow{2}{*}{x} \\
\cline{2-2}
& & & \\
& & \multirow{2}{=}{Derivative Domain Shift} &
\multirow{2}{*}{x} \\ \cline{2-2}
& & & \\
\cline{1-3}
{\textbf{Retraction}} & & & \multirow{2}{*}{x} \\
\cline{2-3}
& & &
\end{tabularx}
\caption[x]{\small x}
\label{table:source}
\vspace{-5mm}
\end{table}
%\FloatBarrier
\end{document}