TeX output via TeXForm: variable name translation

*To*: mathgroup at smc.vnet.net*Subject*: [mg100986] TeX output via TeXForm: variable name translation*From*: dnquark <dnquark at gmail.com>*Date*: Fri, 19 Jun 2009 20:46:29 -0400 (EDT)

I am trying to find a good way to interoperate between Mathematica and LaTeX (or LyX). Typically, I am workign with multi-character variable names, which TeXForm interprets as text: In[65]:= TeXForm[e1] Out[65]//TeXForm= \text{e1} To get around this, I am trying to create a translation table of sorts: e.g. TranslationTable1 = {{e1, "\\epsilon_1"}, {e0, "\\epsilon_0"}, {kz0t, "\\tilde{k^{(0)}_z}"}, {kz1t, "\\tilde{k^{(1)}_z}"}}; I would like, if possible, to perform those replacements in Mathematica, without writing and invoking external scripts. The first thing I tried was this: TeXReplacements := (Rule[#[[1]], ToExpression[#[[2]], TeXForm, HoldForm]] & /@ TranslationTable1) In[67]:= (e1*kz0t) /. TeXReplacements // TeXForm Out[67]//TeXForm= \epsilon _1 \tilde{k_z^0} (This simply does the following: In[69]:= (e1*kz0t) /. {e1 -> ToExpression["\\epsilon_1", TeXForm, HoldForm], kz0t -> ToExpression["\\tilde{k^{(0)}_z}", TeXForm, HoldForm]} // TeXForm Out[69]//TeXForm= \epsilon _1 \tilde{k_z^0} ) Notice how this doesn't work: Take a look at the translation table above and notice parentheses around in k_z^{(0)}. Mathematica discards these parentheses. So the question to the group is: (1) is it possible to preserve the formatting exactly how I specified it in the translation table before converting to TeXForm or (2) is it possible to do a replacement using my translation table after I had converted to TeXForm or (3) is there a better solution altogether? Thanks!