以表格为例,其中一列包含任意长度的短文本,另一列包含大量描述。
为了节省读者的时间:
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\begin{tabular}{lp{.7\textwidth}} % What should go into `p` ...?
ABC & \lipsum[1] \\
\end{tabular}
\end{document}
应该输入什么p
才能使列完美地覆盖其余的文本区域(不在 下的区域l
)?我想做类似的事情\textwidth - \widthof{ABC} - 6pt
,这样它就很灵活,我可以根据需要更改它。我想到了这个calc
包,但不知道如何使用它。
答案1
\documentclass{article}
\usepackage[showframe]{geometry}\parindent0pt\parskip1em
\usepackage{tabulary} % or tabularx
\usepackage{calc}
\usepackage{lipsum}
\begin{document}
What you ask:
\newlength\aaa
\settowidth\aaa{ABC}
\begin{tabular}{lp{\dimexpr\linewidth-4\tabcolsep-\aaa}}
ABC & \lipsum[1] \\
\end{tabular}
What you want:
\begin{tabulary}{\linewidth}{lJ} % or tabularx using a X column
ABC & \lipsum[1] \\
\end{tabulary}
\end{document}
在这种情况下tabularx
,和之间的区别在于,它将始终占用 的宽度,而仅在需要时才达到边距(您会注意到在 位置使用“hello”的区别)。tabulary
tabularx
\linewidth
tabulary
\lipsum[1]