[Tex/LaTex] LaTeX: Syntax highlighting for Maple, Mathematica, Sage

highlightingwolfram-mathematica

I'm typing up a short comparison of Maple, Mathematica, and Sage in LaTeX. My problem is this: I'd like to include highlighted source code in one column (left) and output in another (right).

I know how to split the view with minipage, and about the listings and minted packages. I've got nice highlighting for Sage by using the python language setting for minted and would like to stick with that package. However, I have not been able to get minted to properly highlight Maple or Mathematica code. Since these two programs are well-known among TeX users, I was thinking that someone might have a solution. It would be nice if I could download the Maple and Mathematica styles.

Otherwise, is there some "best fit" style that I could use for acceptable highlighting?

Best Answer

Short answer: I'm not aware of a single solution that will do all three languages, at least not without some work on your part. listings will likely be easiest.

minted uses the Pygments syntax highlighter. Pygments currently doesn't support Maple or Mathematica (at least, not unless you can track down someone's custom lexer). So the only way to proceed with minted is probably to write your own lexer (might not be that difficult, but I've never tried).

listings supports Mathematica and Python, but not Maple (but you might look at this). So if you go that route, you will need to define a language (this shouldn't be too difficult; you could start with the link above, and customize to your needs).

Regarding other options: The program highlight can highlight Maple and export a LaTeX version. It also does Python, but not Sage or Mathematica. GNU Source-highlight doesn't have Mathematica or Maple. I've never used either of these. I think that covers all the standard and fallback syntax highlighters (there's also t-vim, but that's for ConTeXt). There are also some language specific options, for example, evidently there's a maple2e package (see this).

You should keep in mind that Sage and Python aren't completely identical (for example, ^ vs. ** for exponents). If you want a more Sage-specific solution, you might see the sagetex package's approach to using Sage with listings. Basically, it defines a new Sage language based on Python, for the Sage console (just search the sagetex documentation for \lstdefinelanguage{Sage}, and take a look at what follows).