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