[texhax] aligning array columns at bottom rather than top
vertically
Johan Glimming
glimming at kth.se
Sat Feb 26 16:58:27 CET 2005
Hello Steve,
Thanks for looking into this. Actually, I am using a special macro to
typeset rules (enclosed, due to B.C. Pierce) and for some reason I
cannot use this rule inside arrays.
If I could, then I could write \infrule[name]{\phantom{axiom}][fact]
Out of curiosity, can I not use \vfill to force the vertical space to
be inserted before the end of a column in multicols or array
environments, rather than adding phantom or custom vspace?
---
%%% Put a rule and its label on the same line if this can be done
%%% without overlapping them; otherwise, put the label on the next
%%% line. Put a small amount of vertical space above and below.
\newcommand{\layoutruleverbose}[2]%
{\unvbox\voidb at x % to make sure we're in vmode
\addvspace{\afterruleskip}%
\setbox \rulebox \hbox{$\displaystyle #2$}
\setbox \@labelbox \hbox{#1}
\ruledim \wd \rulebox
\labeldim \wd \@labelbox
%%% Will it all fit comfortably on one line?
\@tempdima \linewidth
\advance \@tempdima -\labelcolwidth
\ifdim \@tempdima < \ruledim
\@tempdima \ruledim
\else
\advance \@tempdima by \ruledim
\divide \@tempdima by 2
\fi
\advance \@tempdima by \labelminsep
\advance \@tempdima by \labeldim
\ifdim \@tempdima < \linewidth
% Yes, everything fits on a line
\@tempdima \linewidth
\advance \@tempdima -\labelcolwidth
\hbox to \linewidth{%
\hbox to \@tempdima{%
\hfil
\box\rulebox
\hfil}%
\hfill
\hbox to 0pt{\hss\box\@labelbox}%
}%
\else
%
% Will it all fit _UN_comfortably on one line?
\@tempdima 0pt
\advance \@tempdima by \ruledim
\advance \@tempdima by \labelminsep
\advance \@tempdima by \labeldim
\ifdim \@tempdima < \linewidth
% Yes, everything fits, but not centered
\hbox to \linewidth{%
\hfil
\box\rulebox
\hskip \labelminsep
\box\@labelbox}%
\else
%
% Better put the label on the next line
\@tempdima \linewidth
\advance \@tempdima -\labelcolwidth
\hbox to \linewidth{%
\hbox to \@tempdima{%
\hfil
\box\rulebox
\hfil}
\hfil}%
\penalty10000
\hbox to \linewidth{%
\hfil
\box\@labelbox}%
\fi\fi
\addvspace{\afterruleskip}%
\@doendpe % use LaTeX's trick of inhibiting paragraph indent for
% text immediately following a rule
\ignorespaces
}
Johan Glimming
More information about the texhax
mailing list