我想在表格单元格中插入一条垂直线,该垂直线不会覆盖单元格的整个高度,而只会覆盖单元格高度的 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}