3

Borrowing triangularArrayLayout from here, I have:

triangularArrayLayout[triArray_List, opts___] := 
 Module[{n = Length[triArray]}, 
  Graphics[MapIndexed[
    Text[Style[#1, 
       Large], {Sqrt[3] (n - 1 + #2.{-1, 2}), 3 (n - First[#2] + 1)}/
       2] &, triArray, {2}], opts]]

n = 6;
s = 500;
coeffs = triangularArrayLayout[Table[Row[{"C(", i, ",", j, ")"}], {i, 0, n}, {j, 0, i}], 
   ImageSize -> s];
tri = triangularArrayLayout[Table[Binomial[i, j], {i, 0, n}, {j, 0, i}], 
   ImageSize -> s];
layers = {Overlay[{coeffs, Show[tri, TextStyle -> GrayLevel[.8]]}, Alignment -> Top], 
   Overlay[{tri, Show[coeffs, TextStyle -> GrayLevel[.8]]}, Alignment -> Top]};

Manipulate[layers[[u]], {{u, 1, " "}, {1 -> "binomial coefficients", 
   2 -> "Pascal's triangle"}}, ControlType -> RadioButtonBar]

but the vertical alignment is off:

Mathematica graphics Mathematica graphics

This is the main issue, but I am also curious how to:

  1. typeset the $C(n,r)$ as TraditionalForm (with the varying $n$ and $r$ values throughout)
  2. typeset the $C(n,r)$ as $_{n}C_{r}$ (also with the varying $n$ and $r$ values).
JohnD
  • 3,301
  • 3
  • 22
  • 42

2 Answers2

5
  • Using the same option ImagePadding->k in both coeff and tri fixes the vertical alignment problem.
  • C is a protected symbol (it is used for representing constants generated in symbolic computations.) Instead you can use \[ScriptCapitalC]:

Then

TraditionalForm[\[ScriptCapitalC][n,r]] 

gives

enter image description here

and

 TraditionalForm[\[ScriptCapitalC][9,3]]

gives

enter image description here

  • For typsetting C(n,r) as $_{n}C_{r}$

you can use

nCr /: MakeBoxes[nCr[n_, r_], StandardForm] :=
   RowBox[{SubscriptBox["\[InvisiblePrefixScriptBase]",  MakeBoxes[n, StandardForm]], 
     SubscriptBox["C", MakeBoxes[r, StandardForm]]}]

With

 nCr[3, 2]

you get

enter image description here

and

TraditionalForm[nCr[3, 2]]

gives

enter image description here

kglr
  • 394,356
  • 18
  • 477
  • 896
2

Version 7 does not have Overlay, but one can produce a similar effect from within Graphics. Using your code with this substitution:

layers = {Graphics[{coeffs[[1]], Opacity[0.3], tri[[1]]}], 
          Graphics[{tri[[1]], Opacity[0.3], coeffs[[1]]}]};

yields:

Mathematica graphics

Mr.Wizard
  • 271,378
  • 34
  • 587
  • 1,371