# How to display equations without Mathematica simplifying them?

Say I'm trying to make a simple multiplication table and used

Table[i"x"j"="i*j,{i,1,9},{j,1,9}]


I'm trying to make it so that I can get a table of equations, but Mathematica keeps simplifying it so that 1x2 = 2 becomes 4=x.

-
You need some ToStrings and StringJoins thrown in to do it right. Try: Table[ToString@i <> "x" <> ToString@j <> "=" <> ToString[i j], {i, 1, 9}, {j, 1, 9}] –  The Toad Sep 29 '12 at 23:14

You can use ToString and StringJoin to "correct" your approach as in my comment above. Another possibility of displaying it without using strings (my preferred way) is:

Outer[HoldForm[#1 #2 ] == #1 #2 &, #, #] &@Range@9 // TableForm

-
Nice. I forgot about HoldForm. +1 –  Matariki Sep 29 '12 at 23:20
You, sir, are a lifesaver. I knew the solution was simple, but I wasn't thinking straight for a while for some reason. Again, thank you so much. –  David Sep 29 '12 at 23:23
One can also use Array[] for the purpose: Array[HoldForm[#1 #2] == #1 #2 &, {9, 9}] // Grid. –  Guess who it is. Sep 30 '12 at 1:25

Remember to convert your numbers to strings (ToString) and to join the strings with StringJoin (<>)

For example:

Table[
ToString@i <> "×" <> ToString@j <> "=" <> ToString[i*j], {i, 1,
9}, {j, 1, 9}]

(* Out:
{{"1×1=1", "1×2=2", "1×3=3", "1×4=4", "1×5=5", "1×6=6", "1×7=7", "1×8=8", "1×9=9"},
{"2×1=2", "2×2=4", "2×3=6", "2×4=8", "2×5=10", "2×6=12", "2×7=14", "2×8=16", "2×9=18"},
{"3×1=3", "3×2=6", "3×3=9", "3×4=12", "3×5=15", "3×6=18", "3×7=21", "3×8=24", "3×9=27"},
{"4×1=4", "4×2=8", "4×3=12", "4×4=16", "4×5=20", "4×6=24", "4×7=28", "4×8=32", "4×9=36"},
{"5×1=5", "5×2=10", "5×3=15", "5×4=20", "5×5=25", "5×6=30", "5×7=35", "5×8=40", "5×9=45"},
{"6×1=6", "6×2=12", "6×3=18", "6×4=24", "6×5=30", "6×6=36", "6×7=42", "6×8=48", "6×9=54"},
{"7×1=7", "7×2=14", "7×3=21", "7×4=28", "7×5=35", "7×6=42", "7×7=49", "7×8=56", "7×9=63"},
{"8×1=8", "8×2=16", "8×3=24", "8×4=32", "8×5=40", "8×6=48", "8×7=56", "8×8=64", "8×9=72"},
{"9×1=9", "9×2=18", "9×3=27", "9×4=36", "9×5=45", "9×6=54", "9×7=63", "9×8=72", "9×9=81"}}
*)

-

Here's a variant using Defer, it requires a little trickery using the replacement facilities of With, though. But, again, no strings.

Table[With[{a = i, b = j, res = i*j}, Defer[a*b = res]], {i, 1, 3}, {j, 1, 3}]
(*
{{1 1 = 1, 1 2 = 2, 1 3 = 3},
{2 1 = 2, 2 2 = 4, 2 3 = 6},
{3 1 = 3, 3 2 = 6, 3 3 = 9}}
*)

-

Row is useful for building up expressions that mix strings and non-strings without converting everything to strings:

Table[Row[{i, "×", j, "=", i*j}], {i, 1, 9}, {j, 1, 9}]


-

StringForm[] is a very convenient function for the purpose:

Array[StringForm["1×2=3", #1, #2, #1 #2] &, {9, 9}] // TableForm


-