Just a sidenote to @dgs' answer - note that what is holding the two fist boxes top-aligned, is the common tabular
they are wrapped in; as soon as you try to break the tabular
, the top alignment of the first two items stops (even if you keep the same arguments); that is, this:
\rule{\textwidth}{.5pt}
\begin{tabular}[b]{ll}
aa
& \fbox{\begin{minipage}[t]{100pt}Box 1\end{minipage}}
\\[0pt]
\end{tabular}
\begin{tabular}[b]{l}
\fbox{\begin{minipage}[t]{150pt}\lipsum[11]\end{minipage}}
\\[0pt]
\end{tabular}
\begin{tabular}[b]{ll}
\fbox{\begin{minipage}[b]{50pt}..... Box 3\end{minipage}}
& zz
\\[0pt]
\end{tabular}
\\\rule[\baselineskip]{\textwidth}{.5pt}
... results with this:

... even if the three tabular
s are [b]
ottom aligned (like the two tabular
s in the answer were); - and the three minipage
s are aligned [t]
, [t]
, [b]
(also like in the answer).
However, by accident, I also finally realized what I can use to "lift" the items in the first tabular
; this is not necessarily trivial, because \vspace
, \vskip
or \rule
(negative height rules are not drawn at all!) cannot be applied; however, as this snippet shows:
\rule{\textwidth}{.5pt}
\begin{tabular}[b]{ll}
% \vspace{-50pt} % pushes down, doesn't "lift"
% \vspace*{-50pt} % pushes down, doesn't "lift"
% \vskip -50pt % ! Missing } inserted.
% \vskip -50pt % ! Missing } inserted.
% \rule{4pt}{-60pt} % isn't drawn at all when negative
aa \raisebox{-50pt}{b} \rule{4pt}{60pt}
& \fbox{\begin{minipage}[t]{100pt}Box 1\end{minipage}}
\\[0pt]
\end{tabular}
\begin{tabular}[b]{l}
\fbox{\begin{minipage}[t]{150pt}\lipsum[11]\end{minipage}}
\\[0pt]
\end{tabular}
\begin{tabular}[b]{ll}
\fbox{\begin{minipage}[b]{50pt}..... Box 3\end{minipage}}
& zz
\\[0pt]
\end{tabular}
\\\rule[\baselineskip]{\textwidth}{.5pt}
... it is \raisebox
with a negative "raise distance" that can be used for this purpose (sidenote: I looked at the definition of \raisebox
in latex.ltx, and it seems that all it does is calculate some lengths, and apply them to the "currently selected" box ?!). Notice how the "b
" acts as a bottom anchor now, taking up the "bottom" space relative to the environment:

So, all that is left now is to measure the height of the minipage
, and "raise" negatively by approx the same amount, and thereby "lift up" contents from the bottom of the environment:
\documentclass{article}
\usepackage{lipsum}
\usepackage[showframe,showcrop]{geometry}
\usepackage{trace}
\usepackage{calc}
\begin{document}
\section{Section 1}
\newsavebox\mybox
\newlength{\miniheight}
% save long minipage for tabular 2 into a box,
% so we can measure its height:
\begin{lrbox}{\mybox} %
\begin{minipage}[t]{150pt}\lipsum[11]\end{minipage}
\end{lrbox} %
% note \baselineskip dissapears (is 0) in tabular!
% so save the default \baselineskip in
% another variable:
\typeout{\the\baselineskip} %
\newlength{\oldbaselineskip}
\setlength{\oldbaselineskip}{\baselineskip}
\rule{\textwidth}{.5pt}
\begin{tabular}[b]{ll}
% \vspace{-50pt} % pushes down, doesn't "lift"
% \vspace*{-50pt} % pushes down, doesn't "lift"
% \vskip -50pt % ! Missing } inserted.
% \vskip -50pt % ! Missing } inserted.
% \rule{4pt}{-60pt} % isn't drawn - is negative
% note: correct height is ht + dp; not just ht!
% +1em matches the {M} - 1.12\oldbaselineskip is manually tuned
\settoheight{\miniheight}{\usebox\mybox} %
\setlength{\miniheight}{\ht\mybox+\dp\mybox+1em-1.12\oldbaselineskip} %
\typeout{\the\miniheight, \the\baselineskip} %
aa \raisebox{-\miniheight}{M} \rule{4pt}{60pt}
& \fbox{\begin{minipage}[t]{100pt}Box 1\end{minipage}}
\\[0pt]
\end{tabular}
\begin{tabular}[b]{l}
\fbox{\usebox\mybox}
\\[0pt]
\end{tabular}
\begin{tabular}[b]{ll}
\fbox{\begin{minipage}[b]{50pt}..... Box 3\end{minipage}}
& zz
\\[0pt]
\end{tabular}
\\\rule[\baselineskip]{\textwidth}{.5pt}
\end{document}
Note here:
- You must save the long minipage in a box to measure its height
- The actual height is
ht
+dp
(not just ht
) of the saved box
- You must use the package
calc
, to use +
as addition operator in the \setlength{\miniheight}...
stanza
- You must save the default
\baselineskip
- since it disappears within the tabular
environment
- I used the character
M
there as anchor, so I could adjust to 1em
for the displacement height; however additional -1.12\oldbaselineskip
, which I found manually (by trial and error)
- The
\raisebox
that does the shifting is inside a \tabular
- but outside of a \minipage
... and finally that code results with this:

How applicable this is to other similar contexts, I cannot tell as of yet :)
Cheers!