使用表格中的数据来排版列

使用表格中的数据来排版列

在尝试写一个更好的答案时这个问题,我曾多次(可能非常糟糕)尝试使用制表环境来排版段落,试图以某种方式将一个段落分成几页。作为我最后一次尝试,尝试制作一个并行环境看起来像表格环境并进行调整解决方案给了我很多错误消息,我开始考虑放弃这个想法。

看起来 tabulary 包对表格进行了“两次”排版。是否可以在第一次排版中使用 tabular 环境,然后仅输出计算出的列宽,而不实际“绘制”表格?

答案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}

相关内容