横向多页全宽表格,可调整列宽、多列和换行

横向多页全宽表格,可调整列宽、多列和换行

我想要一张满足这些要点的桌子

  • 横向(旋转 90°),不包括页脚/页头
  • 跨多个页面(例如longtable
  • 表格宽度至整页
  • 每个单元格的内容需要自动换行
  • 每个单元格的内容需要用连字符连接
  • 5 个基本列,其宽度可以指定为其在整个表格宽度上的数量(例如 12% 22% 22% 22% 22% )
  • 一些多列

我尝试了很多软件包和它们的组合。对我来说最成问题的是自动包装单元格内容自动调整单元格宽度

为了自动换行,我需要使用p列。我不知道在这种情况下如何计算宽度 - 对于基本列和多列。

您将使用哪些包以及如何解决这个问题?

以下是伪代码

%% XeTeX
\documentclass{article}
\usepackage{mwe}

% \usepackage{ ??? }

\begin{document}

\begin{ROTATE TO LANDSCAPE BUT WITHOUT PAGE FOOT/HEADER} 
    \begin{A TABLE OVER MULTIPLE PAGES} {5 COLUMNS, AUTO HYPHENATION/LINE WRAPING, FULL PAGE WIDTH}
        % example X[1]X[4]X[4]X[4]X[4] like in tabu-package
        % or {0.1\linewidth}{0.2\linewidth}...
        key&\blindtext&\blindtext&\blindtext&\blindtext\\
        &\multicolumn{2}{ ?? }{\blindtext} & \multicolumn{2}{ ?? }{\blindtext}\\
        &\multicolumn{4}{ ?? }{\blindtext}\\
        % and again
    \end{A TABLE ...}
\end{ROTATE TO ...}

\end{document}

答案1

你没有展示你尝试过的内容,但似乎标准的长桌可以满足这些要求,例如

\documentclass{article}
\usepackage{lscape,longtable,array}
\newlength\tmplen
\begin{document}
\begin{landscape}
\setlength\tmplen{\dimexpr\linewidth-10\tabcolsep}
  \begin{longtable}{>{\raggedright\arraybackslash}p{.12\tmplen}
                   *{4}{>{\raggedright\arraybackslash}p{.22\tmplen}}}
    aaaa aaa aaa &
    bb bb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb&
    cc cc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc&
    dd dd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd&
    ee ee eee eee eee eee eee eee eee eee eee eee eee
    \\
    aaaa aaa aaa &
    bb bb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb&
    cc cc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc&
    dd dd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd
    dd dd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd&
    ee ee eee eee eee eee eee eee eee eee eee eee eee
    \\
    aaaa aaa aaa &
    bb bb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb&
    cc cc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc&
    dd dd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd&
    ee ee eee eee eee eee eee eee eee eee eee eee eee
    \\
    aaaa aaa aaa &
    bb bb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb&
    cc cc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc&
    dd dd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd&
    ee ee eee eee eee eee eee eee eee eee eee eee eee
    \\
    aaaa aaa aaa &
    bb bb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb&
    cc cc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc
    cc cc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc&
    dd dd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd&
    ee ee eee eee eee eee eee eee eee eee eee eee eee
    \\
    \\
    aaaa aaa aaa &
    bb bb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb&
    cc cc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc
    cc cc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc&
    dd dd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd&
    ee ee eee eee eee eee eee eee eee eee eee eee eee
    \\
    \\
    aaaa aaa aaa &
    bb bb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb&
    cc cc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc
    cc cc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc&
    dd dd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd&
    ee ee eee eee eee eee eee eee eee eee eee eee eee
    \\
    aaaa aaa aaa &
    bb bb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb bbb&
    cc cc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc ccc&
    dd dd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd ddd&
    ee ee eee eee eee eee eee eee eee eee eee eee eee
    \\
  \end{longtable}
\end{landscape}
\end{document}

答案2

答案是基于回答来自@David Carlisle 和对答案的评论。

%% XeTeX
\documentclass{article}
\usepackage{mwe}
% original lipsum is to long for a table cell
\newcommand{\mytext}{Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi}

\usepackage{pdflscape, longtable, array}
\begin{document}
\begin{landscape} % rotate the table content

    % „the sum of the widths of the column contents, so the width
    % of the page minus 10 times tabcolsep (as there are 5 columns)“
    \newlength\tmplen
    \setlength\tmplen{\dimexpr\linewidth-10\tabcolsep}
    \begin{longtable}{%
            % col 1
            >{\arraybackslash}p{.12\tmplen}%
            % col 2-5
            *{4}{>{\arraybackslash}p{.22\tmplen}}%
        }
        key&\mytext&\mytext&\mytext&\mytext\\
        &\multicolumn{2}{>{\arraybackslash}p{.44\tmplen}}{\mytext} & \multicolumn{2}{>{\arraybackslash}p{.44\tmplen}}{\mytext}\\
        &\multicolumn{4}{>{\arraybackslash}p{.88\tmplen}}{\mytext}\\
    \end{longtable}

\end{landscape}
\end{document}

这是作为示例使用的真实代码,使用大量真实数据文本作为单元格内容。它满足了问题中指定的所有需求。

请随意编辑/更新此答案。

相关内容