[texhax] minipage conditional
Vafa Khalighi
vafa018 at gmail.com
Tue Jun 21 11:26:53 CEST 2011
Thanks but that makes no change either. It still returns "false".
On Tue, Jun 21, 2011 at 6:53 PM, Uwe Lueck <uwe.lueck at web.de> wrote:
> "Vafa Khalighi" <vafa018 at gmail.com> wrote 21.06.2011 09:49:42:
> > The minipage environment accepts b, t, and few others as the position of
> the minipage.
> > I want \test macro return "true" if it is used inside minipage with b
> position
> > and otherwise return "false". I do not know if there is a better way but
> this is what I did:
> >
> >
> > \documentclass{article}
> > \makeatletter
> > \newif\if at test
> > \long\def\@iiiparbox#1#2[#3]#4#5{%
> > \leavevmode
> > \@pboxswfalse
> > \setlength\@tempdima{#4}%
> > \@begin at tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
> > \ifx\relax#2\else
> > \setlength\@tempdimb{#2}%
> > \edef\@parboxto{to\the\@tempdimb}%
> > \fi
> > \if#1b\@testtrue\vbox%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% this is
> where I made \if at test true
> > \else\if #1t\vtop
> > \else\ifmmode\vcenter
> > \else\@pboxswtrue $\vcenter
> > \fi\fi\fi
> > \@parboxto{\let\hss\vss\let\unhbox\unvbox
> > \csname bm@#3\endcsname}%
> > \if at pboxsw \m at th$\fi
> > \@end at tempboxa}
> > \def\test{\if at test true\else false\fi}
> > \makeatother
> > \begin{document}
> > \begin{minipage}[b]{0.5\textwidth}
> > \test
> > \end{minipage}
> > \end{document}
> >
> > But it returns "false". Why is this?
>
> Probably because you issue \@testtrue *after* the content of the box
> -- #5 -- is evaluated.
>
> > how can I fix it? Is it a better way for doing what I want to do?
>
> I would remove your \@testtrue and add \if#1b\@testtrue\fi
> right to the left of #5 (in the replacement text).
>
> HTH -- Uwe.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://tug.org/pipermail/texhax/attachments/20110621/8b3c888f/attachment.html>
More information about the texhax
mailing list