表格单元格中部分高度上的垂直线

表格单元格中部分高度上的垂直线

我想在表格单元格中插入一条垂直线,该垂直线不会覆盖单元格的整个高度,而只会覆盖单元格高度的 90%。我试过:

  • \vrule height 0.45\height depth 0.45\height,但 \height 在表格单元格中引发错误
  • 缩小\vrule,但\scalebox{1}[.9]{\vrule}不起作用

平均能量损失

\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{blindtext}

\begin{document}
\begin{tabular}{p{0.52\linewidth} @{\hspace{0.05\linewidth}} c @{\hspace{0.05\linewidth}} p{0.32\linewidth}}
  \begin{minipage}{\linewidth}\blindtext[2]\end{minipage}
  &
  \vrule height 0.35\textheight depth 0.35\textheight
  &
  \begin{minipage}{\linewidth}\blindtext\end{minipage}
\end{tabular}
\end{document}

输出

输出

这大致产生了我想要的输出,但当然在这里使用 \textheight 并不是正确的做法。

如果有帮助的话,我想到了一种用某个框填充单元格的方法,然后我就可以使用 \height。这是一种方法吗?

PS:我知道这个multicol包,但是它不能满足我对不同宽度垂直居中的列的需求。

答案1

假设你的:

\vrule height 0.4\height depth 0.4\height

如果您的意思\height是两列的最大高度,那么您必须使用 setbox 来测量它们:

\input plipsum
\newdimen\height

\def\twocols#1:#2#3:#4{{\emergencystretch=2em \parindent=0pt
   \setbox0=\vbox{\hsize=#1\hsize #2}\setbox1=\vbox{\hsize=#3\hsize #4}%
   \height=\ht0 \ifdim\height<\ht1 \height=\ht1 \fi % maximal height
   \hbox to\hsize{$
      \vcenter{\unvbox0}
      \hfil 
      \vrule height .4\height depth.4\height %<<<--- here is your \vrule 
      \hfil
      \vcenter{\unvbox1}$}}}


\twocols .5:{\lipsum1} .4:{\lipsum{2-3}}

\bye

答案2

我假设垂直条的高度应与右侧块的高度相对应。如果这个假设正确,您可以通过并排放置两个tabularx环境来实现格式化目标。默认情况下,它们将相对于彼此垂直居中。

(以下屏幕截图顶部边缘的水平线只是为了说明文本块的宽度。)

在此处输入图片描述

\documentclass{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{blindtext,tabularx}

\begin{document}
\hrule\medskip % to illustrate width of textblock

\noindent
\setlength\tabcolsep{1em}%  % choose amount of intercolumn whitespace
\begin{tabularx}{0.55\textwidth}{@{}X}
  \blindtext[2]
\end{tabularx}% snug up the two tabularx environments
\begin{tabularx}{0.45\textwidth}{|X@{}}
  \blindtext
\end{tabularx}

\end{document}

相关内容