Re: CellPrint with text, table and graphics
- To: mathgroup at smc.vnet.net
- Subject: [mg57786] Re: [mg57610] CellPrint with text, table and graphics
- From: Omega Consulting <info at omegaconsultinggroup.com>
- Date: Wed, 8 Jun 2005 03:21:36 -0400 (EDT)
- References: <200506020916.FAA11858@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
You're well on your way. All you need are a couple of extra GridBoxes. If you split the data into a 2 column GridBox (one with the signs, the other with the number) then you can align the data after the sign. If you split the headers from the data, then you can align them differently. The graphic: gg = Plot[x + 2Sin[x], {x, 0, 2Pi}, Frame -> True, FrameLabel -> {ToString[Unevaluated[x "-axis"], TraditionalForm], ToString[Unevaluated[x + y Sin[x]], TraditionalForm]}, TextStyle -> {FontFamily -> "Times", FontSize -> 16}, ImageSize -> 5 72]; gg1 = Cell[GraphicsData["PostScript", DisplayString[gg]]]; The text: tx = "Some text"; tx1 = StyleBox[tx, FontFamily -> "Times", FontSize -> 18, FontSlant -> "Italic"]; The table: FormatData[val_] := {If[val<0, "-", " "], ToBoxes[Abs[val]]} right=GridBox[Map[FormatData,bb],ColumnSpacings\[Rule]0,ColumnAlignments -> { \ Right,Left}, RowMinHeight\[Rule]1.5]; right//DisplayForm left = GridBox[Table[{ToBoxes[ i]},{i,0,Length[bb]-1}], RowMinHeight\[Rule]1.5]; left//DisplayForm outer = GridBox[{{FormBox["k", TraditionalForm], FormBox[SubscriptBox["b", "k"], TraditionalForm]}, {left, right}}, ColumnAlignments\[Rule]Center,ColumnSpacings\[Rule]3]; outer//DisplayForm Put it together: CellPrint[ Cell[ BoxData[ GridBox[{{gg1, GridBox[{{tx1}, {outer}}, RowsEqual -> False, RowLines -> True, RowSpacings -> 5]}}, RowAlignments -> Center, ColumnLines -> True, GridFrame -> True] ], "Text"]] ---------------------------------------------- Omega Consulting The final answer to your Mathematica needs. http://omegaconsultinggroup.com On Jun 2, 2005, at 4:16 AM, Hugh Goyder wrote: > I am trying to work out how to mix text, a table and graphics all in > one > cell. Developing a previous post (which I can't now find) I have got > as far > as the code below. > > 1. Can my approach be improved on and made simpler? > > 2. Can the data in the table be aligned on the first digit so that the > negative sign projects to the left? I note that sign counts as one > digit it > would be better if it didn't. > > 3. Can the heading for the column in the table, bk, be centered over > the > column? (The heading should be in Traditional form and be b subscript > k but > this caused a flood of box forms to appear when I cut and pasted the > email) > > > > Thanks > > Hugh Goyder > > (* generate raw text, data and graphics *) > tx = "Some text"; > bb = {-19214.88484, 230.1609318, -1.028803876, 0.002414336487, > -2.902395566 10^(-6), 1.430493449 10^(-9)}; > tt = Transpose[{Table[n - 1, {n, Length[bb]}], bb}]; > gg = Plot[x + 2Sin[x], {x, 0, 2Pi}, Frame -> True, > FrameLabel -> {ToString[Unevaluated[x "-axis"], TraditionalForm], > ToString[Unevaluated[x + y Sin[x]], TraditionalForm]}, > TextStyle -> {FontFamily -> "Times", FontSize -> 16}, > ImageSize -> 5 72]; > > > (* format text, data and graphics *) > tx1 = StyleForm[tx, > FontFamily -> "Times", FontSize -> 18, FontSlant -> "Italic"] > tt1 = TableForm[tt, TableHeadings -> {None, > {ToString[Unevaluated[k], TraditionalForm], > ToString[Unevaluated[bk], TraditionalForm]}}, > TableAlignments -> {Left}] > gg1 = Cell[GraphicsData["PostScript", DisplayString[gg]]]; > > > (* print a cell with mixed text, data and graphics *) > CellPrint[ > Cell[ BoxData[ GridBox[{{gg1, GridBox[{{ToBoxes[tx1]}, {ToBoxes[tt1]}}, > RowsEqual -> False, RowLines -> True, RowSpacings -> 5]}}, > RowAlignments -> Center, ColumnLines -> True, GridFrame -> True] ], > "Text"]] > >
- References:
- CellPrint with text, table and graphics
- From: "Hugh Goyder" <h.g.d.goyder@cranfield.ac.uk>
- CellPrint with text, table and graphics