使最后一列占据长表中所有剩余的空间

使最后一列占据长表中所有剩余的空间

我想创建一个表格,其中longtable除最后一列外,所有列的长度都是固定的,最后一列应占用所有剩余空间。表格本身应为整页宽度。

我尝试了以下操作longtable,但是没有效果:

\documentclass{article}

\usepackage{longtable}
\usepackage{tabu}
\usepackage{array}
\usepackage{booktabs}

\setlength\parindent{0pt}
\setlength\LTleft{0pt}
\setlength\LTright{0pt}

\begin{document}

\begin{longtable}[h]{p{2cm}l@{\extracolsep{\fill}}}
\toprule
Icon   & Description \\
\midrule
Icon 1 & Means this and that \\
Icon 2 & Means some other thing \\
\bottomrule
\end{longtable}

\end{document}

tabu可以实现如下目标:

\begin{tabu} to \textwidth {p{2cm}X}

这是一个在线示例:https://es.sharelatex.com/project/555e01773b14e98f7d55ed84

如何使用做同样的事情longtable

编辑:我知道我可以在其他环境中做到这一点。问题具体在于是否可以用来实现这一点longtable

答案1

您可以使用该包,它带来以下环境中ltablex的功能:longtabletabularx

\documentclass{article}

\usepackage[ nomarginpar]{geometry}%showframe,
\usepackage{ragged2e}
\usepackage{array}
\usepackage{ltablex}
\keepXColumns
\usepackage{booktabs}
\usepackage{lipsum}

\setlength\parindent{0pt}
\setlength\LTleft{0pt}
\setlength\LTright{0pt}
\raggedbottom
\begin{document}

\begin{tabularx}{\linewidth}{p{2cm}>{\arraybackslash}X}
  \caption{A demo of the possibilities of \texttt{ltablex}}
  \\ \toprule
  Icon & Description\medskip
  \endfirsthead
  \midrule
  Icon & Description\medskip% \
  \endhead
  \midrule
  \endfoot
  \bottomrule
  \endlastfoot%\\
         & \lipsum[1] \\
  \midrule
  Icon 1 & Means this and that \lipsum[2] \\
  Icon 2 & Means some other thing\lipsum[3] \\
  Icon 3 & Means this and that \lipsum[4] \\
  Icon 4 & Means some other thing\lipsum[5]
\end{tabularx}

\end{document} 

在此处输入图片描述

答案2

实现这一点的通常方法是ltxtable使用长桌遇见 tabularx. 界面不同于tabu,该命令\LTXtable读取包含您的外部文件longtable,例如

\documentclass{article}

\usepackage{longtable}
\usepackage{tabu}
\usepackage{array}
\usepackage{booktabs}
\usepackage{filecontents,ltxtable}

\setlength\parindent{0pt}
\setlength\LTleft{0pt}
\setlength\LTright{0pt}

\begin{document}

\begin{filecontents}{longtab.tex}
\begin{longtable}{@{}p{2cm}X@{}}
  \toprule
  Icon   & Description \\
  \midrule
  Icon 1 & Means this and that \\
  Icon 2 & Means some other thing \\
  \bottomrule
\end{longtable}
\end{filecontents}

\LTXtable{1.0\linewidth}{longtab.tex}

\end{document}

ltablex没有这个限制(参见 Bernard 的示例)。请注意,它会在内部加载longtabletabluarx

答案3

我找到了一种方法来实现我需要的功能,只需添加一个额外的“虚拟”列即可。只需更改此内容:

\begin{longtable}[h]{p{2cm}l@{\extracolsep{\fill}}}

更改为:

\begin{longtable}[h]{p{2cm}l@{\extracolsep{\fill}}l}

似乎可以解决问题。

例子: 在此处输入图片描述

相关内容