20

I want to include some Mathematica code in a LaTeX document.

It's along the lines of f[a_,b_]:=a^2+b^2+4b^3+25a*b*c ;

However, when I build my PDF, the _ and ^ always render. Is there a way to get it to just show up as it shows above?

1

4 Answers 4

21

As rdhs mentionned, you can use the listings package. A sample example is:

\documentclass{article}

\usepackage{listings}
\lstloadlanguages{[5.2]Mathematica}

\begin{document}

\begin{lstlisting}
f[a_,b_]:=a^2+b^2+4b^3+25a*b*c ;
\end{lstlisting}

For inline stuff you can use \lstinline$f[a_,b_]:=a^2+b^2+4b^3+25a*b*c ;$
 instead of the lstlisting environment. 
    \end{document}

Note the verb like delimiters for lstinline. One thing however, the listings manual indicates verb like delimiters, but in all of my work I use the usual { and } and it works fine (maybe a quirk, but I find it easier to read and will continue using it as long as possible)

enter image description here

There are other ways also. For example the minted package does what you what, but it requires that you install Pygments, which is a Python library.

3
  • \lstinline has \verb-style delimiters: \lstinline$f[a_,b_]:=a^2+b^2+4b^3+25a*b*c ;$. The big difference is that it also has an optional keyval argument.
    – Chel
    Commented Jan 26, 2012 at 16:42
  • @rdhs: thanks for the correction. I edited the code. However, when I use { and } it works fine.
    – Frédéric
    Commented Jan 26, 2012 at 16:56
  • Why is there no syntax highlighting in the Mathematica code? I also see this for Mathematica, but not for other languages? Is it because the most recent version of Mathematica included in the listings package is 5.2, whereas Mathematica is currently at version 8?
    – user001
    Commented Feb 25, 2012 at 4:23
14

Use \verb, as in \verb|f[a_,b_]:=a^2+b^2+4b^3+25a*b*c ;|. For longer programs, use the listings package. Or use Mathematica's Save selection as PDF feature and include the PDF as an image.

10

To include an image of your Mathematica code, you can evaluate the cell

Function in Mathematica 8

and then select it (by clicking on the right square bracket ]). Then, following the menu's File>Save Selection As... and saving as a PDF produces the PDF output:

enter image description here

One advantage of this approach is that it will include the embedded Mathematica font, as well as the same spacing and layout as in the actual Mathematica display. If you which to get rid of the input/output indicators, you can either clip the image using graphicx's trim=lx ly ux uy,clip key-value, or extract the image before it is evaluated.

3
  • 2
    Or, you could just click on the In[1] and hit Delete to get rid of it before saving to pdf.
    – QuantumDot
    Commented Aug 25, 2014 at 22:28
  • Hahaha what? @QuantumDot Commented Sep 5, 2015 at 9:15
  • This answer is so underrated! I think is the best solution Commented Sep 16, 2023 at 18:08
6

In addition to lstlisting solution, here is an alternative way of doing it.

In Mathematica, under save as menu, choose LaTex Document format, .tex and the code will be generated for you automatically.

For example, the following code

mathematica code

will be converted to

\documentclass{article}
\usepackage{amsmath, amssymb, graphics, setspace}

\newcommand{\mathsym}[1]{{}}
\newcommand{\unicode}[1]{{}}

\newcounter{mathematicapage}
\begin{document}

\begin{doublespace}
\noindent\(\pmb{f[\text{x$\_$}]\text{:=}\text{Exp}[-a*(x-y){}^{\wedge}2];}\\
\pmb{f\text{''}[x]}\)
\end{doublespace}

\begin{doublespace}
\noindent\(-2 a e^{-a (x-y)^2}+4 a^2 e^{-a (x-y)^2} (x-y)^2\)
\end{doublespace}

\end{document}

And the resulting document is like

mathematica code pdf

If you would like it to be centered, use \centerline instead of \noindent

\documentclass{article}
\usepackage{amsmath, amssymb, graphics, setspace}

\newcommand{\mathsym}[1]{{}}
\newcommand{\unicode}[1]{{}}

\newcounter{mathematicapage}
\begin{document}

\begin{doublespace}
\centerline{$\pmb{f[\text{x$\_$}]\text{:=}\text{Exp}[-a*(x-y){}^{\wedge}2];}$}

\centerline{$\pmb{f\text{''}[x]}$}
\end{doublespace}

\begin{doublespace}
\centerline{$-2 a e^{-a (x-y)^2}+4 a^2 e^{-a (x-y)^2} (x-y)^2$}
\end{doublespace}

\end{document}
1
  • 1
    that's the LaTeX code. The question asks how to include the code.
    – percusse
    Commented Mar 7, 2016 at 0:23

Not the answer you're looking for? Browse other questions tagged .