为什么 varwidth 错误地通过 \raisebox{-0.5\height} 垂直居中?

为什么 varwidth 错误地通过 \raisebox{-0.5\height} 垂直居中?

我正在创建一个伪代码/JavaScript 比较表,并希望将使用 algorithm2e 包编写的算法排版为表格单元格中的垂直居中。开箱即用的 algorithm2e 无法做到这一点,但我修改了代码,除了一点之外,其他一切都似乎正常。那就是:algorithm2e 通常将伪代码行放在 \hsize 之外的框中,但在表格上下文中,我想要它们的自然大小,所以我使用了 varwidth 环境。这破坏了垂直居中。

梅威瑟:

\documentclass{article}

\usepackage{varwidth}

\newcommand{\verticalcenter}[1]{\raisebox{-0.5\height}{#1}}

\begin{document}

\begin{tabular}{ll}
  \hline
  \verticalcenter{%
    \begin{varwidth}{\hsize}%
      text\par
      text\par
      text\par
    \end{varwidth}%
  }&\verticalcenter{\rule{1cm}{1pt}}\\
  \hline
\end{tabular}

\end{document}

得出的结果为:

居中规则的表格位于伪代码的中心上方

中心线位于文本中心上方。

我尝试深入研究 varwidth 代码,但什么也没找到。我该如何修复 varwidth 的尺寸?

答案1

盒子也有深度,考虑到产量:

\documentclass{article}

\usepackage{varwidth}

\newcommand{\verticalcenter}[1]{%
  \raisebox{-0.5\dimexpr\height-\depth\relax}{#1}}

\begin{document}

\begin{tabular}{ll}
  \hline
  \verticalcenter{%
    \begin{varwidth}{\hsize}%
      text\par
      text\par
      text\par
    \end{varwidth}%
  }&\verticalcenter{\rule{1cm}{1pt}}\\
  \hline
\end{tabular}

\end{document}

结果

相关内容