我尝试计算页面上表格中的行数。看起来好像可以,但是表格中的最后一行很奇怪,我不明白为什么。
有代码:
\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 文件的输出中添加缩进?