[NTG-context] tabulate inside itemize
Mike Cooper
mike at murchisondrillingschools.com
Wed Jul 29 19:27:44 CEST 2020
THANKS ADITYA!
I got Wolfgang's solution first and it works great.
But I think there are some things in your solution that I should try to learn about. :)
> -----Original Message-----
> From: ntg-context [mailto:ntg-context-bounces at ntg.nl] On Behalf Of Aditya
> Mahajan
> Sent: Wednesday, July 29, 2020 11:12 AM
> To: mailing list for ConTeXt users
> Subject: Re: [NTG-context] tabulate inside itemize
>
> On Wed, 29 Jul 2020, Mike Cooper wrote:
>
> > I would normally use tab stops and line breaks to achieve the following in a
> numbered list:
> >
> > 1. DC = 3.20 bbl = 420 ft
> > HWDP = 3.90 bbl = 450 ft
> > DP = 34.63 bbl = 2,037 ft
> > Totals = 41.73 bbl = 2,907 ft
> >
> > 2. [next step …]
> >
> >
> > This is what I tried, but the output has a blank line at the number. I can’t find
> anything about tabulate inside itemize.
> >
> > \starttext
> >
> > \startitemize[n]
> > \startitem \starttabulate[|l|l|r|l|r|]
> > \NC DC \NC = \NC 3.20 bbl \NC = \NC 420 ft \NC \NR
> > \NC HWDP \NC = \NC 3.90 bbl \NC = \NC 450 ft \NC \NR
> > \NC DP \NC = \NC 34.63 bbl \NC = \NC 2,037 ft \NC \NR
> > \NC DC \NC = \NC 41.73 bbl \NC = \NC 2,907 ft \NC \NR
> > \stoptabulate \stopitem
> > \startitem Convert 2,907 to TVD: \\TVD = 2,907 × cosine 45° = 2,907 ×
> 0.707 = 2,056 ft \stopitem
> > \startitem ΔP = 2,056 ft × 0.052 × (15 - 7.2) = 834 psi
> > \stopitemize
> >
> > \stoptext
>
> Naive solution: Add a \hbox around tabulate:
>
>
> \defineframed[tabulateframed][location=top,frame=off]
>
> \starttext
>
> \startitemize[n]
> \startitem \dontleavehmode
> \tabulateframed{\starttabulate[|l|l|r|l|r|]
> \NC DC \NC = \NC 3.20 bbl \NC = \NC 420 ft \NC \NR
> \NC HWDP \NC = \NC 3.90 bbl \NC = \NC 450 ft \NC \NR
> \NC DP \NC = \NC 34.63 bbl \NC = \NC 2,037 ft \NC \NR
> \NC DC \NC = \NC 41.73 bbl \NC = \NC 2,907 ft \NC \NR
> \stoptabulate} \stopitem
> \startitem Convert 2,907 to TVD: \\TVD = 2,907 × cosine 45° = 2,907 ×
> 0.707 = 2,056 ft \stopitem
> \startitem ΔP = 2,056 ft × 0.052 × (15 - 7.2) = 834 psi \stopitemize
>
> \stoptext
>
> Normally, you can fix such issues by appending a \dontleavehmode in front of the
> command but that doesn't work here. The offending code is line 1300 of tabl-
> tbl.mkxl:
>
> \unexpanded\def\tabl_tabulate_outside_before
> {\ifhmode\par\fi
> \ifhmode
> \vbox\bgroup
> \let\tabl_tabulate_outside_after \egroup
> \let\tabl_tabulate_outside_inbetween\relax
> \orelse\ifinner
> \let\tabl_tabulate_outside_after \relax
> \let\tabl_tabulate_outside_inbetween\relax
> \else
> \whitespace
> \tabulationparameter\c!before
> \relax
> \let\tabl_tabulate_outside_after \tabl_tabulate_outside_after_indeed
> \let\tabl_tabulate_outside_inbetween\tabl_tabulate_outside_inbetween_indeed
> \fi}
> \protect
>
> When you use \dontleavehmode\starttabulate, \starttabulate starts in horizontal
> mode but the first \par in the above command takes it back to vertical mode. The
> next \ifhmode then evaluates to false, \ifinner also evaluates to false, so we enter
> the \else loop which inserts a \whitespace.
>
> The reason why adding a \hbox{...} (which is what \framed without an align key
> does) works is because inside an \hbox{...} \par doesn't take TeX back to vertical
> mode. So, we enter the first branch.
>
> Aditya
More information about the ntg-context
mailing list