我需要重现以下两种布局(如果重要的话,以横向显示),仅涉及表格:
第一个布局只是 1 个长表格,从左上角延伸到右下角,表格中的条目应自动适应适当的垂直空间。重要的是整个页面都被利用了。
第二个问题大致相同,但我不是只有 1 个表格,而是有更多表格;并且所有表格仍然需要从左上角到右下角一起自动调整,但我还想调整每个表格之间的垂直间距(图中的红色空间),并且每个表格的条目应根据我调整后留下的空间自动适应垂直空间。
我快速浏览了手册/文档/pdf表格型包,但我认为它没有提到任何有关这种对齐和配合的内容,所以我正在寻找解决方案和建议。
请注意,除了此文档中的表格数据本身之外,我不需要任何其他内容,我不需要标题或文档的其他组成部分(脚注,页码等),我可以将整个页面仅用于表格。
谢谢您的帮助 。
答案1
我不会使用表格,而是定义自定义pics
使用蒂克兹-- 您可以pics
在 tikz 手册(版本 3.0.1a)的第 18.2 节中阅读有关所有内容 -- 然后我将所有内容包装到自定义宏中,以便命令
\GrayTable{1,1,1,1}
\newpage
\RedTable{0.8,0.1,0.4,0.3}
将产生两个页面
逗号分隔列表中的数字将\GrayTable
成为表格中打印的数字。在\RedTable
宏中,这些数字给出了每列中行的“相对”高度,表格单元格中的数字与 MWE 中一样自动生成。
使用tikzpage节点我已让表格填满页面的整个“文本区域”。可能会出现打印问题,但您可以通过将所有出现的 替换为 来让表格填满整个current page header area
页面current page
。
事实上,下面的宏稍微更通用一点,在合理范围内,它们不限于四列,而且以完全相同的方式产生(参见下面 MWE 中的第二个例子):
完整代码如下:
\documentclass[svgnames]{article}
\usepackage[a4paper, landscape]{geometry}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{tikzpagenodes}
\tikzset{
gray cell/.style = {
rectangle,
fill=SlateGray,
draw=LightGray,
line width=2mm,
anchor=north west,
minimum height=\textheight,
font=\Huge
},
pics/gray cells/.style args = {#1}{
code = {
% count the number of columns
\foreach \x [count=\c, remember=\c as \C] in {#1} {};
\foreach \x [count=\c, evaluate=\c as \r using {\c/\C}] in {#1} {
\node[gray cell, minimum width=\textwidth/\C] at
($ (current page header area.north west)!\r!(current page header area.north east) $)
{\x};
}
}
},
gray line/.style = {
fill=LightGray,
draw=LightGray,
},
red line/.style = {
fill=Red,
draw=Red,
},
pics/red cells/.style args = {#1}{
code = {
% count the number of columns
\foreach \cell [count=\c, remember=\c as \C] in {#1} {};
\foreach \x [count=\c, evaluate=\c as \r using {\c/\C},
evaluate=\c as \d using {int(\c+1)}] in {#1} {
\node[gray cell, minimum width=\textwidth/\C] (RC\c) at
($ (current page header area.north west)!\r!(current page header area.north east) $){};
\coordinate (RCL\c) at ($ (RC\c.north west)!\x!(RC\c.south west)+(0,1mm) $);
\coordinate (RCR\c) at ($ (RC\c.north east)!\x!(RC\c.south east)-(0,1mm) $);
\draw[gray line] (RCL\c) rectangle (RCR\c);
\draw[red line] ($ (RCL\c)+(8mm,0) $) rectangle ($ (RCR\c)-(8mm,0) $);
\node[font=\Huge] at ($ (-0.8,0.8) + (RCR\c.north east) $) {\c};
\node[font=\Huge] at ($ (-0.8,0.8) + (RC\c.south east) $) {\d};
}
}
}
}
\newcommand\GrayTable[1]{\tikz{\pic at (0,0) {gray cells={#1}};}}
\newcommand\RedTable[1]{\tikz{\pic at (0,0) {red cells={#1}};}}
\pagestyle{empty}
\begin{document}
\GrayTable{1,1,1,1}
\newpage
\RedTable{0.8,0.1,0.4,0.3}
\newpage
\GrayTable{1,2,3,4,5,6}
\newpage
\RedTable{0.8,0.1,0.5,0.7,0.4,0.3}
\end{document}