How to automate x[i]→x_{i}?


I have several Mathematica expressions in which subscripts are expressed with square brackets. E.g. x[12] is meant to represent x12, etc. If I evaluate TeXForm on such an expression, x[12], e.g., gets converted to x(12). Is there a way to get it to produce the x_{12} form instead?


Posted 2013-01-12T21:53:26.393

Reputation: 11 163

The problem is then telling apart x[2] which is meant to be $x_2$ and f[x] or f[0] which are $f(x)$ or $f(0)$. – Szabolcs – 2013-01-12T23:10:09.330



Probably the easiest solution here is to use

Format[x[arg_],TraditionalForm]:=Subscript[x, arg]

This makes sure that the subscript form is used when the display is in TraditionalForm, which is also an intermediate step in creating TeXForm. Then you get for example



The Format can't be specified directly for TeXForm because then expressions where your x[12] is surrounded by other things as in 1 + x[12] won't get translated correctly.


Posted 2013-01-12T21:53:26.393

Reputation: 93 191

Your answer suggests that Mathematica itself can render TeX. Can it? – kjo – 2013-01-12T22:29:35.697


To a certain extent you can render $\LaTeX$, but it's very incomplete. The general idea is to use something like TraditionalForm@ToExpression["\\sin\\alpha", TeXForm, HoldForm]. I discussed this in this answer

– Jens – 2013-01-12T22:50:51.787

2I just realized you may be looking for something simpler: when we say "render" $\LaTeX$, it could also mean to produce traditional-looking formulas from Mathematica standard form input. That is simply done by wrapping any such input in TraditionalForm[ ...]. You could say TraditionalForm is Mathematica's "pretty-print formula" typesetting mode. – Jens – 2013-01-13T00:12:54.263