我正在用这个创建一些cockburn表很棒的网站建议我。我遇到的问题是下表如下所示:
我期望什么
如您所见,表格非常窄,并且文本重叠。我不知道该如何修复它。
附件中我给您留下了该网站本身生成的代码。一如往常,感谢您的时间。
\usepackage[table,xcdraw]{xcolor}
\usepackage{graphicx}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage{tabularx}
\usepackage[thinlines]{easytable}
\begin{table}[H]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|l|l|l|}
\hline
\rowcolor[HTML]{EFEFEF}
\textbf{Use Case #2} &
\multicolumn{3}{l|}{\cellcolor[HTML]{EFEFEF}Effettua registrazione con email} \\ \hline
\textbf{Goal in context} &
\multicolumn{3}{l|}{L'utente vuole effettuare la registrazione alla piattaforma con la propria email} \\ \hline
\textbf{Precondition} &
\multicolumn{3}{l|}{L'utente non è autenticato} \\ \hline
\textbf{Success End Condition} &
\multicolumn{3}{l|}{L'utente riesce a registrarsi alla piattaforma} \\ \hline
\textbf{Failed End Condition} &
\multicolumn{3}{l|}{L'utente non si registra alla piattaforma} \\ \hline
\textbf{Primary Actor} &
\multicolumn{3}{l|}{Ospite} \\ \hline
\textbf{Trigger} &
\multicolumn{3}{l|}{L'utente preme il pulsante "profilo" della bottombar dell'APP_HOME} \\ \hline
\multicolumn{1}{|c|}{} &
\cellcolor[HTML]{EFEFEF}\textbf{Step} &
\cellcolor[HTML]{EFEFEF}\textbf{Ospite} &
\cellcolor[HTML]{EFEFEF}\textbf{Sistema} \\ \cline{2-4}
\multicolumn{1}{|c|}{} &
1 &
\begin{tabular}[c]{@{}l@{}}L'utente preme il pulsante "profile"\\ della bottombar della APP_HOME\end{tabular} &
\\ \cline{2-4}
\multicolumn{1}{|c|}{} &
2 &
&
\begin{tabular}[c]{@{}l@{}}Il sistema mostra dialogIscriptionRequest \\ che avvisa l'utente che per usufruire di tutte le funzionalità presenti\\ deve essere iscritto\end{tabular} \\ \cline{2-4}
\multicolumn{1}{|c|}{} &
3 &
\begin{tabular}[c]{@{}l@{}}L'utente preme il pulsante "iscriviti"\\ della dialogIscriptionRequest\end{tabular} &
\\ \cline{2-4}
\multicolumn{1}{|c|}{} &
4 &
&
Mostra la schermata di autenticazione APPM_AUTHENTICATION \\ \cline{2-4}
\multicolumn{1}{|c|}{} &
5 &
Preme il pulsante "Accedi con email" &
\\ \cline{2-4}
\multicolumn{1}{|c|}{} &
6 &
&
Mostra la schermata per l'accesso \\ \cline{2-4}
\multicolumn{1}{|c|}{} &
7 &
Preme il pulsante "Registrati" &
\\ \cline{2-4}
\multicolumn{1}{|c|}{} &
8 &
&
Mostra la schermata per la registrazione APPM_SIGNUP \\ \cline{2-4}
\multicolumn{1}{|c|}{} &
9 &
Compila i campi necessari &
\\ \cline{2-4}
\multicolumn{1}{|c|}{} &
10 &
Preme il pulsante "Iscriviti" &
\\ \cline{2-4}
\multicolumn{1}{|c|}{\multirow{-12}{*}{\textbf{Description}}} &
11 &
&
Mostra schermata home APPM_HOME \\ \hline
&
\cellcolor[HTML]{EFEFEF}\textbf{Step} &
\cellcolor[HTML]{EFEFEF}\textbf{Ospite} &
\cellcolor[HTML]{EFEFEF}\textbf{Sistema} \\ \cline{2-4}
&
3.1 &
Preme il pulsante "Più tardi" &
\\ \cline{2-4}
\multirow{-3}{*}{\begin{tabular}[c]{@{}l@{}}EXTENSION #1\\ L'utente preme il pulsante \\ "Più tardi" annullando \\ l'operazione\end{tabular}} &
4.1 &
&
Torna alla schermata iniziale APP_HOME e termina il caso d'uso \\ \hline
&
\cellcolor[HTML]{EFEFEF}\textbf{Step} &
\cellcolor[HTML]{EFEFEF}\textbf{Ospite} &
\cellcolor[HTML]{EFEFEF}\textbf{Sistema} \\ \cline{2-4}
\multirow{-2}{*}{\begin{tabular}[c]{@{}l@{}}EXTENSION #2\\ L'utente inserisce un'email\\ già presente nel sistema\end{tabular}} &
11.2 &
&
Mosra un Toast di errore \\ \hline
&
\cellcolor[HTML]{EFEFEF}\textbf{Step} &
\cellcolor[HTML]{EFEFEF}\textbf{Ospite} &
\cellcolor[HTML]{EFEFEF}\textbf{Sistema} \\ \cline{2-4}
&
9.3 &
\begin{tabular}[c]{@{}l@{}}Preme il pulsante \\ "Back" \\ dell'APPM_SIGNUP\end{tabular} &
\\ \cline{2-4}
&
10.3 &
&
Torna alla schermata APPM_AUTHENTICATION \\ \cline{2-4}
&
11.3 &
Preme il pulsante "Accedi come ospite" &
\\ \cline{2-4}
\multirow{-5}{*}{\begin{tabular}[c]{@{}l@{}}EXTENSION #3\\ L'utente decide\\ di non voler effettuare \\ l'autenticazione\end{tabular}} &
12.3 &
&
Torna alla schermata APPM_HOME e termina il caso d'uso \\ \hline
\end{tabular}%
}
\caption{Effettua registrazione con email}
\label{tab:tck_registrazione_email}
\end{table}
答案1
- 你的桌子很大
- 页面布局未知
- 假设以下建议:
- 表格中的字体大小可以更小,即“\footnotesize
- 可以减少线扩散
geometry
页面布局由包默认设置定义:
\documentclass{article}
\usepackage{geometry}
\usepackage[table,xcdraw]{xcolor}
\usepackage[column=O]{cellspace}
\setlength\cellspacetoplimit{3pt}
\setlength\cellspacebottomlimit{3pt}
\usepackage{multirow, xltabular}
\newcolumntype{C}[1]{>{\hsize=#1\hsize%
\centering\arraybackslash}X}
\newcolumntype{L}[1]{>{\hsize=#1\hsize%
\raggedright\arraybackslash\hspace{0pt}%
}X}
\addparagraphcolumntypes{L}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\begin{table}[ht]
\centering
\footnotesize\linespread{0.84}\selectfont
\begin{tabularx}{\linewidth}{|O{L{1}}|C{0.3}|O{L{1}}|O{L{1.7}}|}
\hline
\rowcolor{gray!30}
\textbf{Use Case \#2} &
\multicolumn{3}{l|}{Effettua registrazione con email} \\ \hline
\textbf{Goal in context} &
\multicolumn{3}{L{3.2}|}{L'utente vuole effettuare la registrazione alla piattaforma con la propria email} \\ \hline
\textbf{Precondition} &
\multicolumn{3}{l|}{L'utente non è autenticato} \\ \hline
\textbf{Success End Condition} &
\multicolumn{3}{l|}{L'utente riesce a registrarsi alla piattaforma} \\ \hline
\textbf{Failed End Condition} &
\multicolumn{3}{l|}{L'utente non si registra alla piattaforma} \\ \hline
\textbf{Primary Actor} &
\multicolumn{3}{l|}{Ospite} \\ \hline
\textbf{Trigger} &
\multicolumn{3}{L{3.2}|}{L'utente preme il pulsante "profilo" della bottombar dell'APP\_HOME}
\\ \hline
\rowcolor{gray!30}
\cellcolor{white}
& \textbf{Step}
& \textbf{Ospite} & \textbf{Sistema} \\ \cline{2-4}
& 1 & L'utente preme il pulsante "profile" della bottombar della APP\_HOME
& \\ \cline{2-4}
& 2 & & Il sistema mostra dialogIscriptionRequest che avvisa l'utente che per usufruire di tutte le funzionalità presenti deve essere iscritto \\ \cline{2-4}
& 3 & L'utente preme il pulsante "iscriviti" della dialogIscriptionRequest
& \\ \cline{2-4}
& 4 & & Mostra la schermata di autenticazione APPM\_AUTHENTICATION \\ \cline{2-4}
& 5 & Preme il pulsante "Accedi con email"
& \\ \cline{2-4}
& 6 & & Mostra la schermata per l'accesso \\ \cline{2-4}
& 7 & Preme il pulsante "Registrati"
& \\ \cline{2-4}
& 8 & & Mostra la schermata per la registrazione APPM\_SIGNUP \\ \cline{2-4}
& 9 & Compila i campi necessari
& \\ \cline{2-4}
& 10& Preme il pulsante "Iscriviti"
& \\ \cline{2-4}
\multirow{-34}{=}{\textbf{Description}}
&11 & & Mostra schermata home APPM\_HOME
\\ \hline
\rowcolor{gray!30}
\cellcolor{white}
& \textbf{Step}
& \textbf{Ospite}
& \textbf{Sistema}
\\ \cline{2-4}
&3.1& Preme il pulsante "Più tardi"
& \\ \cline{2-4}
\multirow{-5}{=}{EXTENSION \#1:\newline
L'utente preme il pulsante "Più tardi" annullando l'operazione}
&4.1& & Torna alla schermata iniziale APP\_HOME e termina il caso d'uso
\\ \hline
\rowcolor{gray!30}
\cellcolor{white}
& \textbf{Step}
& \textbf{Ospite}
& \textbf{Sistema}
\\ \cline{2-4}
& 11.2 & & Mosra un Toast di errore
\\
\multirow{-4}{=}{EXTENSION \#2\newline
L'utente inserisce un'email già presente nel sistema}
& & & \\ \hline
\rowcolor{gray!30}
\cellcolor{white}
& \textbf{Step}
& \textbf{Ospite}
& \textbf{Sistema}
\\ \cline{2-4}
& 9.3 & Preme il pulsante "Back" dell'APPM\_SIGNUP
& \\ \cline{2-4}
& 10.3 & & Torna alla schermata APPM\_AUTHENTICATION
\\ \cline{2-4}
& 11.3 & Preme il pulsante "Accedi come ospite"
& \\ \cline{2-4}
\multirow{-5}{=}{EXTENSION \#3\newline
L'utente decide di non voler effettuare l'autenticazione}
& 12.3 & & Torna alla schermata APPM\_HOME e termina il caso d'uso
\\ \hline
\end{tabularx}
\caption{Effettua registrazione con email}
\label{tab:tck_registrazione_email}
\end{table}
\end{document}
注意:您的表格代码片段没有重现显示的表格,但您可以自行纠正这种不匹配。
如果比较两个表的代码,您会发现:
- 对于表使用
tabularx
表环境 - 从
X
列类型派生出两种新的列类型:C
和L
。它们可以简单设置宽度比。 - 借助
cellspace
包装为单元格添加垂直空间。 - 表格着色方式已更改。
\cellcolor
仅在第一列中使用,其他列由“rowcolor”替换。这使代码变得更短。 - 对于
multirow
单元格使用其新语法\multirow{-...}{=}{...}
(观察=
)。这样,这些单元格中的嵌套表格就变得多余了。
(红线表示页面布局)
答案2
所呈现的表格看起来像是项目文档的一部分,也许是 GUI。这意味着它将是一个动态文档,在项目的整个生命周期中都会发生变化和添加。因此,试图将这个特定的表格放在一页纸上是徒劳的。它不会持续到第一稿。
仔细观察,我发现该表分为三个部分,每个部分传达不同类型的信息。
(1)上部,对案例进行总体描述,包括案例目标、成功标准等。随着时间的推移,它可能不会发生太大变化。
(2)中间部分,跟踪用户的操作和子系统的响应。每种情况都会有所不同。
(3)下部,在奇数终端情况下子系统的反应。其他情况有所不同,并且可能随着时间的推移根据后来的测试和操作使用发现进行了大量添加。
这就是为什么我建议将原始表分成三个表,每个表专用于其特定任务。
这样,可以轻松添加新行或修改内容,而不会意外更改其他部分。
我选择使用该nicematrix
软件包,因为它本身提供了完成此任务所需的所有设施。
\Block
首先,它提供了替换和的\multicolumn
命令并\multirow
允许使用\\
内部。
它还允许一般指令,例如hvlines
。它负责处理代码中的\hlines
和。\cline {2-4}
总的来说,将来再次访问时,代码更加清晰,更易于维护。
笔记:
(1)所有单元格都垂直居中。例如,请注意“步骤”列中的数字。即使在多行单元格中,这也是自动发生的。
(2)利用\\
inside\Block
可以按照自然说话方式的停顿来剪切句子,方便阅读。
(3)无需改变字体大小。
\documentclass[12pt,a4paper]{article}
\usepackage[left=2.00cm, right=2.00cm, top=2.00cm, bottom=2.00cm]{geometry}
\usepackage{nicematrix} % everything needed
\usepackage{float} % provides[H]
\usepackage{kantlipsum} % dummy text
\begin{document}
\section{Utente effettua registrazione con terze parti}
1. \kant[1]
\begin{table}[H]
\centering
\caption{Conditions of Use Case \#1}
\medskip
\begin{NiceTabular}{ll}[hvlines,
code-before = \rectanglecolor{gray!15}{1-1}{1-2},
cell-space-top-limit = 7pt,
cell-space-bottom-limit = 7pt]
\textbf{Use Case \#1} & \textbf{Effettua registrazione con terze parti} \\
Goal in context & \Block[l]{1-1}{L'utente vuole effettuare la registrazione alla piattaforma \\con la propria email}\\
Precondition & L'utente non è autenticato \\
Success End Condition & L'utente riesce a registrarsi alla piattaforma \\
Failed End Condition & L'utente non si registra alla formatting \\
Primary Actor & Ospite \\
Trigger & \Block[l]{1-1}{L'utente preme il pulsante "profilo" della bottom bar\\ dell' APP\_HOME} \\
\end{NiceTabular}%
\end{table}
9. \kant[9]
\begin{table}[H]
\centering
\caption{Use Case \#1: user actions and responses step by step}
\medskip
\begin{NiceTabular}{c wc{4ex} wc{4ex} wc{3ex} wl{11.5cm}}[hvlines,
first-row,
code-for-first-row = \bfseries,
cell-space-top-limit = 7pt,
cell-space-bottom-limit = 7pt]
Step & \rotate{Ospite} & \rotate{API} & \rotate{Sistema} & \Block[c]{}{Description}\\
1 & X & & & \Block[l]{}{L'utente preme il pulsante "profile" della \\bottom bar della APP\_HOME} \\
2 & & & X & \Block[l]{}{Il sistema mostra dialog Iscription Request che avvisa l'utente \\ che per usufruire di tutte le funzionalità presenti \\ deve essere iscritto} \\
3 & X & & & \Block[l]{}{L'utente preme il pulsante "iscriviti" \\ della dialog Iscription Request} \\
4 & & & X & \Block[l]{}{Mostra la schermata di autenticazione\\ APPM\_AUTHENTICATION}\\
5 & X & & & Preme il pulsante "Accedi con email" \\
6 & & X & & Mostra la schermata per l'accesso \\
7 & & & X & Preme il pulsante "Registrati" \\
\end{NiceTabular}%
\end{table}
12. \kant[12]
\begin{table}[H]
\centering
\caption{Extensions of Use Case \#1}
\medskip
\begin{NiceTabular}{wl{5.5cm} c wc{4ex} wc{4ex} wc{3ex} wl{5.5cm}}[hvlines,
first-row,
code-for-first-row = \bfseries,
cell-space-top-limit = 6pt,
cell-space-bottom-limit = 6pt]
\Block[c]{}{Extension} & Step & \rotate{Ospite} & \rotate{API} & \rotate{Sistema} & \Block[c]{}{Description}\\
\Block{2-1}{EXTENSION \#1 \\ L'utente preme il pulsante \\ "Più tardi" annullando \\ l'operazione.}
& 3.1 & X & & & \Block[l]{}{Preme il pulsante "Più tardi".} \\
& 4.1 & & & X & \Block[l]{}{Torna alla schermata iniziale \\APP\_HOME e termina \\il caso d'uso.}\\
\Block{1-1}{EXTENSION \#2\\ L'utente inserisce un email\\ già presente nel sistema.}
& 5.2 & & & X & \Block[l]{}{Preme il pulsante "back".} \\
\Block{2-1}{EXTENSION \#3\\ L'utente decide di non voler \\effettuare l'autenticazione.}
& 3.5 & X & & & \Block[l]{}{Torna alla schermata \\ APPM\_AUTHENTICATION} \\
& 3.6 & & & X & \Block[l]{}{Torna alla schermata iniziale \\APP\_HOME e termina \\il caso d'uso.}\\
\end{NiceTabular}%
\end{table}
\end{document}