# How do I evaluate Mathematica expressions and insert them in a LaTeX file?

I want to make use of Mathematica as the backend to solve some computations used in my LaTeX input file. As I have no knowledge to make it in Mathematica, I used Maxima as explained in the following steps that I got somewhere on the internet.

## Step 2

Create a batch file named cas.bat (for example) as follows.

rem cas.bat
echo off
set PATH=%PATH%;"C:\Program Files (x86)\Maxima-5.31.2\bin"
maxima --very-quiet -r %1 > solution.tex


Save the batch in the same directory in which your input file below exists. It is just for the sake of simplicity.

## Step 3

Create the input file named main.tex (for example) as follows.

% main.tex
\documentclass[preview,border=12pt,12pt]{standalone}
\usepackage{amsmath}

\def\f(#1){(#1)^2-5*(#1)+6}

\begin{document}

\section{Problem}
Evaluate $\f(x)$ for $x=\frac 1 2$.

\section{Solution}
\immediate\write18{cas "x: 1/2;tex(\f(x));"}

\input{solution}

\end{document}


## Step 4

Compile the input file with pdflatex -shell-escape main and you will get a nice output as follows.

## Questions

Apparently the output of Maxima is as follows. I don't know how to make it cleaner.

solution.tex

1
-
2
$${{15}\over{4}}$$
false


Now, my questions are

• how to implement the scenario above in Mathematica?
• if Mathematica also produces the unnecessary texts, how to remove such texts?
• if Mathematica also produces the same output format, how to obtain just \frac{15}{4} without $$...$$?

This is a good application for the highly underused Splice function which has been in Mathematica since version 1 (I don't recall it ever being used on this site).

1. Create a file called main.mtex with the following text:

\documentclass[preview,border=12pt,12pt]{standalone}
\usepackage{amsmath}
\def\f(#1){(#1)^2-5*(#1)+6}
\begin{document}

\section{Problem}
Evaluate $\f(x)$ for $x=\frac 1 2$.

\section{Solution}
$<* f[x_] := x^2 - 5 x + 6; f[1/2] *>$
\end{document}


Everything you want Mathematica to evaluate should be written between <* *>.

2. In Mathematica, run Splice["main.mtex"] (replace with the correct path to your file). The Splice function reads the file and replaces the text between <* *> with its Mathematica output. The default output for input files with the extension .mtex is TeXForm, which mostly does a good job of translating to LaTeX for non-complicated expressions.

3. Compile the main.tex file that is created as an output of Splice.

Rather than using a TeX macro to expand the equation, I would suggest using Mathematica here as well. Here's a modified example:

\documentclass[preview,border=12pt,12pt]{standalone}
\usepackage{amsmath}
% <* f[x_] := x^2 - 5 x +6 *>
\begin{document}
\section{Problem}
Evaluate $<* f[x] *>$ for $x=\frac 1 2$.

\section{Solution}
$$<* f[1/2] *>$$

\end{document}


The definition f[x_] will be available to Mathematica throughout the splice operation and we can use this to make the text replacement as well. I think it would be a much simpler solution than hacking something together with TeX/interpreting the macro in Mathematica. Note that I commented out the f[x_] definition in TeX, because Mathematica outputs Null for that operation, which gets inserted as \text{Null} and we don't want that. The result is the same (perhaps better than using the TeX macro):