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}}$
HoldForm
to preserve ordering. Copyb a
, you geta b
. CopyHoldForm[b a]
, you getb a
. $\endgroup$