答案1
虽然没有时间实现分页,但是这满足了对基本测量方案的要求,该方案tabulary
无需设置表格就可以确定列宽的样式(稍微类似:-)。
该宏测量两个参数中的每一个,然后计算列宽,以便设置时它们具有相似的高度。此时(代码中的注释所在位置),您可以做您想做的事情,因为今晚它只是将它们设置在指定宽度的\vtop
( \parbox[t]
) 中,因此不允许在段落内分页。
测试\ifdim
防止将任一列设置为小于文本宽度的 20%,这是一个可以更改的任意量,但您需要避免严重不平衡的输入设置愚蠢的长度,如 1pt,因此建议进行一些截断(\tymin
参见tabulary
)
顺便说一句,如果你知道内容是全部文本因此基线自然地在每一列中均匀分布和匹配,这样分页就会容易得多,而不是如果内容可以包含框或像这里显示的数学运算那样,一列中的潜在断点不会自动与另一列中的断点对齐。
\documentclass{article}
\usepackage{graphics}
\makeatletter
\long\def\twopara#1#2{%
\@tempdima\dimexpr\textwidth-\columnsep\relax
{\hbadness\@M\raggedright\hsize.5\@tempdima \@tempdima\hsize
\setbox\z@\vbox{{#1\endgraf}}%
\setbox\tw@\vbox{{#2\endgraf}}%
\Gscale@div\tmp{\ht\z@}{\dimexpr\ht\z@+\ht\tw@\relax}%
\global\let\xtmp\tmp}%
\dimen@ \xtmp\@tempdima
\ifdim\dimen@<.2\@tempdima \[email protected]\@tempdima\fi
\ifdim\dimen@>.8\@tempdima \[email protected]\@tempdima\fi
\dimen@ii\dimexpr\@tempdima-\dimen@\relax
% do anything you want with
% #1 \dimen@ wide
% #2 \dimen@ii ide
% \columnsep in between
\hbox{%
\vtop{{\hsize\dimen@ \textwidth\hsize #1\endgraf}}%
\hspace\columnsep
\vtop{{\hsize\dimen@ii \textwidth\hsize #2\endgraf}}%
}}
\makeatletter
\begin{document}
\noindent X\dotfill X
\twopara{
a a a a a a a a a a a a a a a a a a a a a a a a a a
a a a a a a a a a a a a a a a a a a a a a a a a a a
a a a a a a a a a a a a a a a a a a a a a a a a a a
a a a a a a a a a a a a a a a a a a a a a a a a a a
}
{
b b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b b b b b b b b b b b b
}
\bigskip
\twopara{
a a a a a a a a a a a a a a a a a a a a a a a a a a
a a a a a a a a a a a a a a a a a a a a a a a a a a
}
{
b b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b b b b b b b b b b b b
\[a=b\]
b b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b b b b b b b b b b b b
b b b b b b b b b b b b b b b b b b b b b b b b b b
}
\end{document}