强制设置 tabularx 行的最小高度

强制设置 tabularx 行的最小高度

我有一个 tabularx 表,使用multirow并且所有列都垂直居中。以下是表格:

\usepackage{multirow,tabularx}

\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\newcolumntype{N}{@{}m{0pt}@{}}
\def\tabularxcolumn#1{C{#1}}

\begin{tabularx}{\textwidth}{|C{3cm}|X|C{3cm}|N}
\hline
\multirow{2}{*}{\includegraphics[width=2.5cm]{logo}} &
\multirow{2}{*}{\Large{Title of this document}} &
    Doc.ref. &\\
\cline{3-3}
& & Revision &\\
\hline
\end{tabularx}%

我正在寻找一种方法来强制该表中特定行的最小行高,但由于这样或那样的原因,我尝试的所有方法都没有起作用。

  • \setlength{\extrarowheight}{1cm}破坏最右侧单元格的垂直对齐(它们将不再垂直居中)
  • 分行时添加额外空间,例如&\\[1cm]破坏前两个单元格(使用 的单元格\multirow)的垂直对齐
  • 增加数组拉伸因子(例如\renewcommand{\arraystretch}{2.5})似乎对垂直对齐不太好(它似乎将单元格的内容推到垂直中心以下)

更新:由于这是一个模板,因此手动调整位置将不起作用——实际的文档标题稍后填写,可能需要一两行。

还有其他想法吗?

答案1

修订的解决方案,消除了multirow,而是使用嵌套表格。重新修订以将所有内容合并到中\makemytable{height},只是为了更轻松地对各种高度进行游戏测试。

这里我只是\addstackgap[<length>]{object}为了在该行的上方和下方添加一个垂直缓冲区。添加的缓冲区大小取决于自动地插入图像的高度。

\documentclass{article}
\usepackage{graphicx,stackengine}
\usepackage{multirow,tabularx}
\newsavebox\customimg
\def\bufferA{.5\dimexpr\ht\customimg+\dp\customimg+1\normalbaselineskip}
\def\bufferB{.25\dimexpr\ht\customimg+\dp\customimg+.5\normalbaselineskip}
\def\setimgheight#1{\savebox\customimg{%
  \raisebox{\dimexpr-\height+.5\normalbaselineskip} %
  {\includegraphics[width=2.5cm,height=#1]{example-image}}}
}
\def\makemytable#1{\setimgheight{#1}
  \begin{tabularx}{\textwidth}{|C{3cm}|X|@{\hspace{0pt}}C{3cm}@{\hspace{0pt}}|N}
  \hline
  \usebox{\customimg} &
  \addstackgap[\bufferA]{\Large{Title of this document}} &
  \begin{tabular}{@{\hspace{0pt}}c@{\hspace{0pt}}}
      \addstackgap[\bufferB]{\makebox[3.0cm]{Doc.ref.}} \\
  \hline
   \addstackgap[\bufferB]{Revision} \\
  \end{tabular}&\\
  \hline
  \end{tabularx}\par\medskip
}
\begin{document}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
\newcolumntype{N}{@{}m{0pt}@{}}
\def\tabularxcolumn#1{C{#1}}
\makemytable{1cm}
\makemytable{3cm}
\makemytable{5cm}
\end{document}

在此处输入图片描述

相关内容