我想创建一个类似于 stackexchange 上的这个答案的多页表(https://tex.stackexchange.com/a/419760/129702) 但有以下区别:
- 我有 4 列(“站点”、“描述”、“优点”、“缺点”)
- 前两列包含文本:后两列包含逐项列表
- 我不希望逐项列出难以阅读(因为列大小受限),因此如果需要,我愿意将最后两列合并为一列(“优点和缺点”),并使用 + / - 符号逐项列出
- 项目化设置可以严格限制空格(nosep、noitemsep、topsep=0pt、partopsep=0pt、after=\vspace*{2pt})
- 任何减少桌子占用空间的想法都会受到赞赏
附加信息 :
- “站点”是一个简单的站点名称(例如:“Hackerrank”)
- “描述”是网站的简短介绍(例如:\lipsum*[3])
- 平均“优点”有5项
- 平均“缺点”有3-4项
- 文档类别:报告
谢谢您的帮助
答案1
这是一个解决方案,它使用紧凑列表定义两个新列。我很确定它是基于 Heiko Oberdiek 的答案,但我找不到答案来提供正确的参考。
一列定义为逐项列表,一列定义为编号列表。您可以随意更改列表列的宽度。如果您希望表格填充边距之间的空间,可以使用\extracolsep{\hfill}
。您也可以使用板状的。
如果每页都需要重复标题,则使用正常长桌命令。要取消对单个单元格的枚举或逐项列出,可以使用\multicolumn
。
\documentclass{article}
\usepackage{array, longtable, booktabs}
\makeatletter
\newcolumntype{e}[1]{%--- Enumerated cells ---
>{\minipage[t]{\linewidth}%
\NoHyper% Hyperref adds a vertical space
\let\\\tabularnewline
\settowidth{\leftmargini}{\,9.\hspace{\labelsep}}
\enumerate
\addtolength{\rightskip}{0pt plus 50pt}% for raggedright
\setlength{\itemsep}{-\parsep}}%
p{#1}%
<{\@finalstrut\@arstrutbox\endenumerate
\endNoHyper
\endminipage}}
\newcolumntype{i}[1]{%--- Itemized cells ---
>{\minipage[t]{\linewidth}%
\let\\\tabularnewline
\settowidth{\leftmargini}{~\hspace{\labelsep}}
\itemize
\addtolength{\rightskip}{0pt plus 50pt}%
\setlength{\itemsep}{-\parsep}}%
p{#1}%
<{\@finalstrut\@arstrutbox\enditemize\endminipage}}
\AtBeginDocument{%
\@ifpackageloaded{hyperref}{}%
{\let\NoHyper\relax\let\endNoHyper\relax}}
\makeatother
\setlength{\tabcolsep}{3pt}
\setlength{\extrarowheight}{2pt}
\begin{document}
\begin{longtable}{@{\extracolsep{\fill}}p{2cm}p{2cm}i{3.5cm} e{3.5cm}@{}}
\toprule
Site & Description & \multicolumn{1}{l}{Avantages} & \multicolumn{1}{l@{}}{Disavantages}\\
\midrule\endhead %% Repead heading on every page
Text here and there & More left aligned text &
\item Item A is part of a itemised list
\item Item B &
\item Item 1 is part of a numbered list
\item Item 2 \\
\midrule
Text & Text &
\item Item A
\item Item B &
\item Item 1
\item Item 2
\item Item 1
\item Item 1
\item Item 1
\item Item 1
\item Item 1
\item Item 1
\item Item 1
\item Item 1
\item Item 1
\item Item 1
\\
\bottomrule
\end{longtable}
\end{document}
答案2
以下是使用嵌套描述和逐项列表的示例。可以使用enumitem
包进一步自定义布局:
\documentclass{report}
\usepackage{enumitem}
\usepackage{lipsum}
\begin{document}
\setlist[itemize]{label=+.,leftmargin=*, nosep}
\begin{description}
\item[a term]\lipsum[3]
\begin{itemize}
\item[+] \lipsum[1][1]
\item[+] \lipsum[1][1]\lipsum[1][2] \lipsum[1][3]
\item[--] \lipsum[1][1]
\item[--] \lipsum[1][1]\lipsum[1][2] \lipsum[1][3]
\end{itemize}
\item[another term]\lipsum[5]
\begin{itemize}
\item[+] \lipsum[1][1]
\item[+] \lipsum[1][1]\lipsum[1][2] \lipsum[1][3]
\item[--] \lipsum[1][1]
\item[--] \lipsum[1][1]\lipsum[1][2] \lipsum[1][3]
\end{itemize}
\end{description}
\end{document}