编辑

编辑

\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结合使用longtabletabularx,允许您指定可以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 ,以在它们周围添加一些垂直填充:longtabletabularx\hlinebooktabs

\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} 

在此处输入图片描述

相关内容