# Is there a (separate) program to convert Mathematica expressions to LaTeX?

I see several questions about converting Mathematica content to LaTeX. But I didn't see any satisfying answers. I'm wondering if there is a utility that will convert Mathematica display formulae to LaTeX in a way that preserves the ordering and appearance of the original as displayed by the Mathematica Frontend.

I understand that there is no exact isomorphism between Mathematica and LaTeX. I also understand that Mathematica's primary role is the process mathematical expressions as mathematics, not textual content.

Nonetheless, in this world of MathJax rendering of LaTeX, and etc., it would be valuable to be able to convert to LaTex with minimal need for hand-correction.

The

Right-Click->copy as->LaTeX


feature of Mathematica is useful, but Mathematica processes the expression using the rules of standard algebra, which disregards the textual ordering of mathematical expressions. Much of the content I want to convert is complicated tensor analysis and multivariable calculus, etc. I have over a thousand pages of such content in Mathematica notebooks.

It would be nice if I could convert all of it with one command, but I'm realistic. If I could simply copy and paste my expressions into a text file, and process the file with some kind of conversion utility that would convert Mathematica to LaTeX, that would be great.

To give an example, I have a diadic equation that looks much like this in a Mathematica notebook:

$$\begin{bmatrix}a_{11}\hat{\mathfrak{i}}\hat{\mathfrak{i}}+a_{12}\hat{\mathfrak{i}}\hat{\mathfrak{j}}+a_{13}\hat{\mathfrak{i}}\hat{\mathfrak{k}}\\ +a_{21}\hat{\mathfrak{j}}\hat{\mathfrak{i}}+a_{22}\hat{\mathfrak{j}}\hat{\mathfrak{j}}+a_{23}\hat{\mathfrak{j}}\hat{\mathfrak{k}}\\ +a_{31}\hat{\mathfrak{k}}\hat{\mathfrak{i}}+a_{32}\hat{\mathfrak{k}}\hat{\mathfrak{j}}+a_{33}\hat{\mathfrak{k}}\hat{\mathfrak{k}} \end{bmatrix}=\hat{\mathfrak{i}}\mathfrak{B}_{1}+\hat{\mathfrak{j}}\mathfrak{B}_{2}+\hat{\mathfrak{k}}\mathfrak{B}_{3}$$

\[CapitalPhi]=[Subscript[a, 1\[InvisibleComma]1]Overscript[\[GothicI], ^]Overscript[\[GothicI], ^]+Subscript[a, 1\[InvisibleComma]2]Overscript[\[GothicI], ^]Overscript[\[GothicJ], ^]+Subscript[a, 1\[InvisibleComma]3]Overscript[\[GothicI], ^]Overscript[\[GothicK], ^]
+Subscript[a, 2\[InvisibleComma]1]Overscript[\[GothicJ], ^]Overscript[\[GothicI], ^]+Subscript[a, 2\[InvisibleComma]2]Overscript[\[GothicJ], ^]Overscript[\[GothicJ], ^]+Subscript[a, 2\[InvisibleComma]3]Overscript[\[GothicJ], ^]Overscript[\[GothicK], ^]
+Subscript[a, 3\[InvisibleComma]1]Overscript[\[GothicK], ^]Overscript[\[GothicI], ^]+Subscript[a, 3\[InvisibleComma]2]Overscript[\[GothicK], ^]Overscript[\[GothicJ], ^]+Subscript[a, 3\[InvisibleComma]3]Overscript[\[GothicK], ^]Overscript[\[GothicK], ^]

]=Subscript[\[GothicCapitalB], 1]Overscript[\[GothicI], ^]+Subscript[\[GothicCapitalB], 2]Overscript[\[GothicJ], ^]+Subscript[\[GothicCapitalB], 3]Overscript[\[GothicK], ^]


Copy as LaTeX produces this:

$$\Phi =\text{Identity}\left[\left( \begin{array}{c} \hat{\mathfrak{i}} \hat{\mathfrak{j}} a_{1,2}+\hat{\mathfrak{i}} \hat{\mathfrak{k}} a_{1,3}+\hat{\mathfrak{i}} \hat{\mathfrak{i}} a_{1,1} \\ \hat{\mathfrak{i}} \hat{\mathfrak{j}} \left(+a_{2,1}\right)+\hat{\mathfrak{j}} \hat{\mathfrak{k}} a_{2,3}+\hat{\mathfrak{j}} \hat{\mathfrak{j}} a_{2,2} \\ \hat{\mathfrak{i}} \hat{\mathfrak{k}} \left(+a_{3,1}\right)+\hat{\mathfrak{j}} \hat{\mathfrak{k}} a_{3,2}+\hat{\mathfrak{k}} \hat{\mathfrak{k}} a_{3,3} \\ \end{array} \right)\right]=\hat{\mathfrak{i}} \mathfrak{B}_1+\hat{\mathfrak{j}} \mathfrak{B}_2+\hat{\mathfrak{k}} \mathfrak{B}_3$$

Notice that the terms appear in different order from the original. In this context, ordering is significant. $\hat{\mathfrak{i}}\hat{\mathfrak{j}}\ne\hat{\mathfrak{j}}\hat{\mathfrak{i}}$

• This is one entry in the matrix $\hat{\mathfrak{i}} \hat{\mathfrak{j}} a_{1,2}+\hat{\mathfrak{i}} \hat{\mathfrak{k}} a_{1,3}+\hat{\mathfrak{i}} \hat{\mathfrak{i}} a_{1,1}$."Subscript[a, 1[InvisibleComma]1]Overscript[[GothicI], ^]Overscript[[GothicI], ^]+Subscript[a, 1[InvisibleComma]2]Overscript[[GothicI], ^]Overscript[[GothicJ], ^]+Subscript[a, 1[InvisibleComma]3]Overscript[[GothicI], ^]Overscript[[GothicK], ^]" I am working with over a thousand pages of Matemetica content. I cannot go through and reproduce every expression by hand, just to convert it to LaTeX. – Steven Thomas Hatton Jan 18 '18 at 16:55
• Use HoldForm to preserve ordering. Copy b a, you get a b. Copy HoldForm[b a], you get b a. – Szabolcs Jan 18 '18 at 17:13
• @Szabolcs How do I use that on an Inline Cell inside a Text Style Cell? – Steven Thomas Hatton Jan 18 '18 at 17:24
• Could you clarify the workflow you desire. Given a notebook with Text (including inline cells), Input, Output, etc. cells, what kind of output do you want? Is it a notebook, a text file, something else? – Carl Woll Jan 18 '18 at 18:23
• Also, does the answer to (76860) help? – Carl Woll Jan 18 '18 at 19:13