单元格中的长文本会使表格超出页面下边缘

单元格中的长文本会使表格超出页面下边缘

我是 LaTeX 的新手。

这是我的文件:

\documentclass[a4paper]{article}
\usepackage{multirow, tabularx}
\renewcommand{\familydefault}{\sfdefault}


\begin{document}
    \begin{table}[!ht]
\renewcommand\arraystretch{1.5}
\newcommand\mcl[1]{\multicolumn{3}{l|}{#1}}

\begin{tabularx}{\linewidth}{|l|>{\hsize=0.4\hsize}X|
                                >{\hsize=1.8\hsize}X|
                                >{\hsize=0.8\hsize}X|}
    \hline 
Use Case \#N    & \mcl{Login}                               \\ 
    \hline
Goal in Context & \mcl{Per identificarsi}                   \\
    \hline 
Preconditions   & \mcl{L'utente deve avere già un account}  \\
    \hline 
Success End Conditions 
                & \mcl{L'utente è stato identificato nel sistema}       \\
    \hline 
Failed End Conditions 
                &   \multicolumn{3}{>{\hsize=\dimexpr3\hsize+6\tabcolsep+3\arrayrulewidth}X|}{ 
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit turpis enim, suscipit tincidunt enim tincidunt egestas. Sed pretium rhoncus elit, at maximus nibh. Etiam ut ipsum sit amet nisi mattis interdum. Mauris a mi tellus. Integer ultricies risus eget enim molestie pretium. Nunc tempor facilisis mauris, ut volutpat libero.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit turpis enim, suscipit tincidunt enim tincidunt egestas. Sed pretium rhoncus elit, at maximus nibh. Etiam ut ipsum sit amet nisi mattis interdum. Mauris a mi tellus. Integer ultricies risus eget enim molestie pretium. Nunc tempor facilisis mauris, ut volutpat libero.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit turpis enim, suscipit tincidunt enim tincidunt egestas. Sed pretium rhoncus elit, at maximus nibh. Etiam ut ipsum sit amet nisi mattis interdum. Mauris a mi tellus. Integer ultricies risus eget enim molestie pretium. Nunc tempor facilisis mauris, ut volutpat libero.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit turpis enim, suscipit tincidunt enim tincidunt egestas. Sed pretium rhoncus elit, at maximus nibh. Etiam ut ipsum sit amet nisi mattis interdum. Mauris a mi tellus. Integer ultricies risus eget enim molestie pretium. Nunc tempor facilisis mauris, ut volutpat libero.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit turpis enim, suscipit tincidunt enim tincidunt egestas. Sed pretium rhoncus elit, at maximus nibh. Etiam ut ipsum sit amet nisi mattis interdum. Mauris a mi tellus. Integer ultricies risus eget enim molestie pretium. Nunc tempor facilisis mauris, ut volutpat libero.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit turpis enim, suscipit tincidunt enim tincidunt egestas. Sed pretium rhoncus elit, at maximus nibh. Etiam ut ipsum sit amet nisi mattis interdum. Mauris a mi tellus. Integer ultricies risus eget enim molestie pretium. Nunc tempor facilisis mauris, ut volutpat libero. } \\
    \hline 
Primary Actor   & \mcl{Attore principale dello UC}                      \\
    \hline 
Trigger         & \mcl{Azione principale dell'attore che attiva lo UC}  \\
    \hline 
Description     & Step  & User Action               & System            \\  \cline{2-4} 
                & 1     & L'utente clicca OK        &                   \\  \cline{2-4} 
                & 2     &                           & Mostra M1         \\  \cline{2-4} 
                & 3     & L'utente clicca Cliccami  &                   \\  \cline{2-4} 
                & 4     &                           & Chiude            \\
    \hline 
Extensions      & Step  & User Action               & System            \\  \cline{2-4} 
                &   &   &   \\
    \hline
Subvariations   & Step  & User Action               & System            \\  \cline{2-4} 
                &   &   &   \\
    \hline 
Notes           &   &   &   \\
    \hline
\end{tabularx}
    \end{table}
\end{document}

在此处输入图片描述

  • 不幸的是,如果我写一篇很长的文字,表格就会超出页面的下边距。我该如何修复它?(请注意,对于短文本,它可以正常工作)。

答案1

您需要使用允许跨页拆分表格的表格包之一。例如,xltabular结合了longtabletabularx包的包:

\documentclass[a4paper]{article}
\usepackage{makecell, xltabular}
\renewcommand{\familydefault}{\sfdefault}

\begin{document}
\begingroup
    \setcellgapes{2pt}
    \makegapedcells
    \newcommand\mcl[1]{\multicolumn{3}{l|}{#1}}
\begin{xltabular}{\linewidth}{|l|>{\hsize=0.4\hsize}X|
                                >{\hsize=1.8\hsize}X|
                                >{\hsize=0.8\hsize}X|}
\caption{Caption text ...}  % <--- CAPTION, only on table beginning
\label{tab:tale-1}          \\
    \hline
\endfirsthead
%\caption[]{Caption text ... (cont.) }\\  % <--- in case that you like to repeat it on each page
    \hline
\endhead
    \hline
\endfoot
\endlastfoot
Use Case \#N    & \mcl{Login}                               \\
    \hline
Goal in Context & \mcl{Per identificarsi}                   \\
    \hline
Preconditions   & \mcl{L'utente deve avere già un account}  \\
    \hline
Success End Conditions
                & \mcl{L'utente è stato identificato nel sistema}       \\
    \hline
Failed End Conditions
                &   \multicolumn{3}{>{\hsize=\dimexpr3\hsize+4\tabcolsep+2\arrayrulewidth}X|}{
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit turpis enim, suscipit tincidunt enim tincidunt egestas. Sed pretium rhoncus elit, at maximus nibh. Etiam ut ipsum sit amet nisi mattis interdum. Mauris a mi tellus. Integer ultricies risus eget enim molestie pretium. Nunc tempor facilisis mauris, ut volutpat libero.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit turpis enim, suscipit tincidunt enim tincidunt egestas. Sed pretium rhoncus elit, at maximus nibh. Etiam ut ipsum sit amet nisi mattis interdum. Mauris a mi tellus. Integer ultricies risus eget enim molestie pretium. Nunc tempor facilisis mauris, ut volutpat libero.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit turpis enim, suscipit tincidunt enim tincidunt egestas. Sed pretium rhoncus elit, at maximus nibh. Etiam ut ipsum sit amet nisi mattis interdum. Mauris a mi tellus. Integer ultricies risus eget enim molestie pretium. Nunc tempor facilisis mauris, ut volutpat libero.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit turpis enim, suscipit tincidunt enim tincidunt egestas. Sed pretium rhoncus elit, at maximus nibh. Etiam ut ipsum sit amet nisi mattis interdum. Mauris a mi tellus. Integer ultricies risus eget enim molestie pretium. Nunc tempor facilisis mauris, ut volutpat libero.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit turpis enim, suscipit tincidunt enim tincidunt egestas. Sed pretium rhoncus elit, at maximus nibh. Etiam ut ipsum sit amet nisi mattis interdum. Mauris a mi tellus. Integer ultricies risus eget enim molestie pretium. Nunc tempor facilisis mauris, ut volutpat libero.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer hendrerit turpis enim, suscipit tincidunt enim tincidunt egestas. Sed pretium rhoncus elit, at maximus nibh. Etiam ut ipsum sit amet nisi mattis interdum. Mauris a mi tellus. Integer ultricies risus eget enim molestie pretium. Nunc tempor facilisis mauris, ut volutpat libero. } \\
    \pagebreak  
Primary Actor   & \mcl{Attore principale dello UC}                      \\
    \hline
Trigger         & \mcl{Azione principale dell'attore che attiva lo UC}  \\
    \hline
Description     & Step  & User Action               & System            \\  \cline{2-4}
                & 1     & L'utente clicca OK        &                   \\  \cline{2-4}
                & 2     &                           & Mostra M1         \\  \cline{2-4}
                & 3     & L'utente clicca Cliccami  &                   \\  \cline{2-4}
                & 4     &                           & Chiude            \\
    \hline
Extensions      & Step  & User Action               & System            \\  \cline{2-4}
                &   &   &   \\
    \hline
Subvariations   & Step  & User Action               & System            \\*  \cline{2-4}
                &   &   &   \\
    \hline
Notes           &   &   &   \\
    \hline
\end{xltabular}
    \endgroup
\end{document}

在此处输入图片描述

(红线表示页面布局)

为了显示表格的外观,您需要至少编译 MWE 两次。

笔记: 表格分隔符只能在行之间。这意味着任何单元格内容都应该适合一页。自动分隔表格并不总是在合理的位置分隔表格。因此,我\pagebreak在表格中插入命令,我认为这样做更合理。但是,您可以删除此命令,然后看看得到的结果是否适合您。

相关内容