多行重叠并延伸至页面之外

多行重叠并延伸至页面之外

几天来我一直在尝试修复 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

我对你的代码做了一些更改:

  1. 我更改了列宽。有两个 X 列;我把第一个弄窄了。
  2. 我通过在表格规范中放置来消除第一列中的\multicolumn{1}{c|}(或)。 (我选择而不是,因为这对我来说似乎是最好的。)l||lc
  3. 我放置了一个\extrarowheight以便在行之间获得更多空间。
  4. \multirow{2}{*}我把很多 改成了\multirow{2}{=}。对于需要文本换行的列,这是正确的选择。实际上我认为所有这些都可以更改。
  5. \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}

在此处输入图片描述

相关内容