如何用表格填充页面

如何用表格填充页面

我尝试计算页面上表格中的行数。看起来好像可以,但是表格中的最后一行很奇怪,我不明白为什么。

有代码:

\documentclass{article}
\usepackage[left= 1 cm, right=1 cm, top = 2 cm, bottom = 1 cm]{geometry}
\usepackage{longtable}
\usepackage{ifthen}

\begin{document}
\newcounter{LoopCNT}

\newcommand{\myline}{&&& \\ \hline}

\newcommand{\mysetpos}[1]{%
  \pdfsavepos%
  \write\csname @auxout\endcsname{%
    \string\ifx#1\string\undefined}%
  \write\csname @auxout\endcsname{%
    \string \gdef #1{\the\pdflastypos}}%
  \write\csname @auxout\endcsname{%
    \string\fi%
  }}%
\ifx\zposlast\undefined
  \newcommand{\MYcount}{70}
\else
  \edef\MYcount{\the\numexpr((\zposfirst-\zposprev)/(\zposprev-\zposlast))}
\fi
\providecommand{\zposfirst}{}
\providecommand{\zposprev}{}
\providecommand{\zposlast}{}
\zposfirst; \zposprev; \zposlast; \MYcount

\begin{longtable}{|l|l|l|c|}
  \hline
  THe&head&line&ypos % \endhead
  \tabularnewline \hline \endhead
  \mysetpos{\string\zposprev}%
  The&foot&line& \\ \hline%
  \mysetpos{\string\zposlast}%
  \endfoot
a &b&c&d \\ \hline
&&&\\ \hline
&&&\\ \hline
&&&\\ \hline
&&&\\ \hline
  \mysetpos{\string\zposfirst}%
  \whiledo{\value{LoopCNT} < \MYcount}{%
    \addtocounter{LoopCNT}{1}\theLoopCNT\myline%
  }
\end{longtable}
\end{document}

我得到的结果:

页脚上方有不必要的间隙,页脚下方有错误

如何解决这个问题?

答案1

现在我有一个对我有用的解决方案

  • 我不得不重新排列代码——现在我计算的是第一行添加的高度而不是脚行的高度
  • 完成循环的错误测试会生成(开始)一个“没有”行的单元格,在输出时看起来像垃圾。所以我需要添加代码,从单元格开始生成完整的行。

所以我的表格总是会至少有 3 个额外的空白行......

\documentclass{article}
\usepackage[left= 1 cm, right=1 cm, top = 2 cm, bottom = 1 cm]{geometry}
\usepackage{longtable}
\usepackage{ifthen}

\begin{document}
\newcounter{LoopCNT}

\newcommand{\myline}{&&& \\ \hline}

\newcommand{\mysetpos}[1]{%
  \pdfsavepos%
%  \rule{.5 cm}{.4pt}%
  \write\csname @auxout\endcsname{%
    \string\ifx#1\string\undefined}%
  \write\csname @auxout\endcsname{%
    \string \gdef #1{\the\pdflastypos}}%
  \write\csname @auxout\endcsname{%
    \string\fi%
  }}%
\ifx\zposlast\undefined
  \newcommand{\MYcount}{70}
 \else
   \edef\MYcount{\the\numexpr((\zposmiddle-\zposlast)/(\zposfirst-\zposmiddle))}
 \fi

\begin{longtable}{|l|l|l|c|}
  \hline
  THe&head&line&ypos 
  \tabularnewline \hline \endhead
  \mysetpos{\string\zposlast}%
  The&foot&line& \\ \hline%
  \endfoot
a &b&c&d \\ \hline
&&&\\ \hline
&&&\\ \hline
&&&\\ \hline
&&&\\ \hline
  \mysetpos{\string\zposfirst}%
  \whiledo{\value{LoopCNT} < \MYcount}{%
    \addtocounter{LoopCNT}{1}\theLoopCNT\myline%
    \mysetpos{\string\zposmiddle}%
  }
  \myline
\end{longtable}
\end{document}

在此处输入图片描述

但仍然存在美学问题:如何在.out 文件的输出中添加缩进?

相关内容