表格的标题行高度为正常,其余行垂直填充页面,表格填充文本宽度

表格的标题行高度为正常,其余行垂直填充页面,表格填充文本宽度

有没有办法实现一个宽度为的表格\textwidth,其中顶行具有正常高度,其余行按相同比例填充页面的剩余部分?

我已经实现了这个,但是使用了不精确的模糊因子。我可以想象使用花哨的表格包(我无法让它tabularht工作)或类似下面的方法来实现,其中\rowht精确地基于\arraystretch或某些东西以及标题的高度进行设置,但我不知道该怎么做。

\documentclass{article}
\usepackage{tabularx}
\usepackage[margin=1in]{geometry}
\def\rowht{0.935in}
\pagestyle{empty}
\begin{document}
\noindent
\begin{tabularx}{\textwidth}{| X | X | X | X |}
  \hline
  A & B & C & D \\\hline
  & & &\\[\rowht]\hline
  & & &\\[\rowht]\hline
  & & &\\[\rowht]\hline
  & & &\\[\rowht]\hline
  & & &\\[\rowht]\hline
  & & &\\[\rowht]\hline
  & & &\\[\rowht]\hline
  & & &\\[\rowht]\hline
\end{tabularx}
\end{document}

在此处输入图片描述

答案1

我将使用新的 LaTeX3 包给出解决方案tabularray

\documentclass{article}
\usepackage[margin=1in]{geometry}
%\usepackage{showframe}
%\renewcommand*{\ShowFrameColor}{\color{red}}
\pagestyle{empty}
\usepackage{tabularray}
\def\rowht{%
  \dimexpr
    (
      \textheight
       - \baselineskip                   % height of first row
       - 4pt * \value{rowcount}          % rowsep sizes
       - 0.4pt * ( \value{rowcount} - 1) % hrule sizes
    ) / ( \value{rowcount} - 1 )
  \relax
}
\begin{document}

\noindent
\begin{tblr}{
  colspec={|X|X|X|X|},
  hlines,
  row{2-Z} = {\rowht}, % Z stands for the last row
}
  A & B & C & D \\
    &   &   &   \\
    &   &   &   \\
    &   &   &   \\
    &   &   &   \\
    &   &   &   \\
    &   &   &   \\
    &   &   &   \\
    &   &   &   \\
\end{tblr}

\newpage

\noindent
\begin{tblr}{
  colspec={|X|X|X|X|},
  hlines,
  row{2-Z} = {\rowht},
}
  A & B & C & D \\
    &   &   &   \\
    &   &   &   \\
    &   &   &   \\
    &   &   &   \\
    &   &   &   \\
\end{tblr}

\end{document}

在此处输入图片描述

相关内容