我一直在摆弄一张桌子,想知道是否有人可以帮助我改进这一点:
\documentclass{report}
\usepackage{array}
\begin{document}
\begin{tabular}[]{p{2em} p{4in}}
xy & Some text, some more text \\
yz & Some other text, some more text \\
\multicolumn{2}{>{\hangindent=2em}p{3in}}{this is longer \quad Some other text, some more and more and more text, a lot of text} \\
zz & Some further text, some more text \\
\end{tabular}
\end{document}
一个两列表格,其中左列很小,但有些行可能包含我想放到第二列中的信息。第二列的悬挂缩进仍应与该列对齐。此外,我想指定第二列的宽度以使用其余的文本宽度。也许表格是错误的方法。欢迎提出任何建议。
答案1
您可以使用tabularx
制作适合宽度的表格。
\documentclass{article}
\usepackage{tabularx}
\usepackage[nopar]{lipsum}
\begin{document}
\noindent
\begin{tabularx}{\linewidth}{ @{} p{2em} X @{} }
xy & Some text, some more text \\
yz & Some other text, some more text \\
& \hspace{\dimexpr-2em-2\tabcolsep}this is longer \quad Some other text, \lipsum[2] \\
zz & Some further text, some more text
\end{tabularx}
\end{document}
不用使用\multicolumn
,\hangindent
只需将第一行移到左侧,并在第一行留出负空间。其他边缘的列间隙已使用@{}
说明符移除。
类似tabular
结构不会在段落(或行)中间跨越页面边界。如果担心这一点,您可以使用类似description
。enumitem
为此提供了一些简单的功能style=sameline
:
\documentclass{article}
\usepackage{enumitem}
\usepackage[nopar]{lipsum}
\begin{document}
\begin{description}[font=\normalfont, leftmargin=2.5em, style=sameline, noitemsep]
\item[xy] Some text, some more text
\item[yz] Some other text, some more text
\item[this is longer\quad] Some other text, \lipsum[2]
\item[zz] Some further text, some more text
\end{description}
\end{document}
我通过插入来强调该项目与后续文本之间的差距\quad
。