\longtable
我对使用中指定列宽有一些疑问\linewidth
。
\documentclass[a4paper, 10pt]{article}
\usepackage[left=1in,right=1in,top=0.6in,bottom=0.6in]{geometry}
\usepackage{tabularx}
\usepackage {lipsum}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage[table,xcdraw]{xcolor}
\renewcommand{\rmdefault}{phv}
\usepackage{ ragged2e }
\usepackage{graphicx}
\usepackage{float}
\usepackage{longtable}
\usepackage{layouts}
\begin{document}
\begin{longtable}
{
p{0.1\textwidth}
p{0.1\linewidth}
p{0.1\linewidth}
p{0.1\linewidth}
p{0.1\linewidth}
p{0.1\linewidth}
p{0.1\linewidth}
p{0.1\linewidth}
p{0.1\linewidth}
p{0.1\linewidth}
}
\hline
a & a & a & a & a & a & a & a & a & a\\
b & b & b & b & b & b & b & b & b & b\\
\hline
\end{longtable}
\end{document}
\documentclass[a4paper, 10pt]{article}
\usepackage[left=1in,right=1in,top=0.6in,bottom=0.6in]{geometry}
\usepackage{tabularx}
\usepackage {lipsum}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage[table,xcdraw]{xcolor}
\renewcommand{\rmdefault}{phv}
\usepackage{ ragged2e }
\usepackage{graphicx}
\usepackage{float}
\usepackage{longtable}
\usepackage{layouts}
\begin{document}
\begin{longtable}{p{\linewidth}}
\hline
a\\
\hline
\end{longtable}
\end{document}
因此,我应该如何通过在页面中均匀划分 \linewidth 来适应 x 列?
注意:我必须使用,\longtable
因为表可能跨越多页,并且我正在使用 TeXstudio 来编译我的代码。
答案1
使用以下简化的列规范
\begin{longtable}
{
*{10}{p{\dimexpr.1\linewidth-2\tabcolsep}}
}
每p
列\tabcolsep
两侧都有间隙 - 这是表格无法容纳页边距的主要原因。另请参阅我的桌子放不下;我有什么办法吗?
另一种方法是使用ltxtable
结合使用longtable
与tabularx
,允许您指定可以X
自然拉伸以适应预先指定longtable
宽度的剩余部分的 - 型列。
答案2
给出的列宽p
没有考虑列之间的空间以及第一个和最后一个条目左侧和右侧的空间。
tabularx
您可以自己计算一个值,也可以使用结合了和 功能的软件包之一longtable
。以下是前一种方法:
\documentclass[a4paper,10pt]{article}
\usepackage[left=1in,right=1in,top=0.6in,bottom=0.6in,showframe]{geometry}
\usepackage{booktabs}
\usepackage{longtable,calc,array}
\newlength\mycolwidth
\begin{document}
\noindent
\setlength\mycolwidth{.1\linewidth-2\tabcolsep}%
\begin{longtable}{*{10}{>{\raggedright\arraybackslash}p{\mycolwidth}}}
\toprule
apple & apple & apple & apple & apple & apple & apple& apple & apple & apple\\
\bottomrule
\end{longtable}
\end{document}
编辑
以下是使用自定义环境自动计算它们的方法longtablex
。
\documentclass[a4paper,10pt]{article}
\usepackage[left=1in,right=1in,top=0.6in,bottom=0.6in,showframe]{geometry}
\usepackage{booktabs}
\usepackage{longtable,calc,array}
\newlength\mycolwidth
\newenvironment{longtablex}[1][10]{%
\noindent
\setlength\mycolwidth{\linewidth/#1-2\tabcolsep}%
\begin{longtable}{*{#1}{>{\raggedright\arraybackslash}p{\mycolwidth}}}%
}{%
\end{longtable}%
}
\begin{document}
\begin{longtablex}
\toprule
apple & apple & apple & apple & apple & apple & apple& apple & apple & apple\\
\bottomrule
\end{longtablex}
\begin{longtablex}[5]
\toprule
apple & apple & apple & apple & apple \\
\bottomrule
\end{longtablex}
\begin{longtablex}[3]
\toprule
apple & apple & apple \\
\bottomrule
\end{longtablex}
\end{document}
答案3
你还可以使用 ,它将ltablex
的功能带到。此外,我用 中的规则替换了 s ,以在它们周围添加一些垂直填充:longtable
tabularx
\hline
booktabs
\documentclass[a4paper, 10pt]{article}
\usepackage[hmargin=1in, vmargin=0.6in, showframe]{geometry}
\usepackage{ltablex, booktabs}
\usepackage {lipsum}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage[table,xcdraw]{xcolor}
\renewcommand{\rmdefault}{phv}
\usepackage{ ragged2e }
\usepackage{graphicx}
\usepackage{float}
\usepackage{layouts}
\keepXColumns
\begin{document}
\begin{tabularx}{\linewidth}{*{10}{X}}
\toprule
a & a & a & a & a & a & a & a & a & a\\
b & b & b & b & b & b & b & b & b & b\\
\bottomrule
\end{tabularx}
\end{document}