Create LaTeX labels in Mathematica.
See the blog post for a detailed introduction to MaTeX and up to date troubleshooting information.
In Mathematica 11.3 or later, simply evaluate ResourceFunction["MaTeXInstall"][]
to install or upgrade MaTeX.
In older versions that do not support resource functions, follow the manual installation instructions:
Download the latest release, distributed as a .paclet
file, and install it using the PacletInstall
function in Mathematica. For example, assuming that the file MaTeX-1.7.10.paclet
was downloaded into the directory ~/Downloads
, evaluate
Needs["PacletManager`"]
PacletInstall["~/Downloads/MaTeX-1.7.10.paclet"]
The most convenient way to obtain the path to a file is Mathematica's Insert → File Path... menu command.
Make sure that a TeX system and Ghostscript 9.15 or later are installed.
For Windows and Linux, the latest Ghostscript is available from its official download page.
On OS X, MacTeX 2015 and later already include a compatible version of Ghostscript. If you use an older TeX distribution that doesn't, please obtain a recent Ghostscript from Richard Koch's page.
Evaluate <<MaTeX`
. MaTeX will attempt to auto-configure itself when it is loaded for the first time. If auto-configuration fails, it will display instructions on how to configure the path to the pdflatex
and Ghostscript executables manually. Note: On Windows systems use the command line Ghostscript executable, i.e. the one with the name ending in c: gswin32c.exe
or gswin64c.exe
.
Test MaTeX using MaTeX["x^2"]
.
Open the documentation center and search for "MaTeX" to get started.
A newer version can be safely installed when an older version is already present. <<MaTeX`
will always load the latest installed MaTeX that is compatible with your version of Mathematica.
A list of all installed versions can be retrieved using
PacletFind["MaTeX"]
Any of the items in the list can be uninstalled by applying PacletUninstall
to it. To uninstall all versions at once, use
PacletUninstall["MaTeX"]
To see more information about the version that gets loaded by Needs
, use
PacletInformaton["MaTeX"]
Note: If you installed MaTeX before it started using the paclet distribution format (i.e. version 1.6.2), uninstall it by removing the MaTeX
directory from the following location:
SystemOpen@FileNameJoin[{$UserBaseDirectory, "Applications"}]
The following function will automatically download the latest release of MaTeX and install it:
updateMaTeX[] :=
Module[{json, download, target},
Check[
json = Import["https://api.github.com/repos/szhorvat/MaTeX/releases/latest", "JSON"];
download = Lookup[First@Lookup[json, "assets"], "browser_download_url"];
target = FileNameJoin[{CreateDirectory[], "MaTeX.paclet"}];
If[$Notebooks,
PrintTemporary@Labeled[ProgressIndicator[Appearance -> "Necklace"], "Downloading...", Right],
Print["Downloading..."]
];
URLSave[download, target]
,
Return[$Failed]
];
If[FileExistsQ[target], PacletManager`PacletInstall[target], $Failed]
]
After evaluating the function definition above, just run updateMaTeX[]
, then <<MaTeX`
to load the updated version.
Use MaTeX[texcode]
or MaTeX[expression]
to typeset using LaTeX. The latter will automatically apply TeXForm
to expression
.
The LaTeX code is interpreted in math mode. Remember to escape backlashes (i.e. type two \
characters when you mean one) when writing LaTeX code in Mathematica strings, e.g.
MaTeX["\\sum_{k=1}^{\\infty} \\frac{1}{k}"]
Multiple expressions can also be processed in one go:
MaTeX[{
"\\frac{x^2}{\\sqrt{3}}",
HoldForm[Integrate[Sin[x], {x, 0, 2 Pi}]],
Expand[(1 + x)^5]
}]
Processing a list of expressions together involves a single run of LaTeX, thus is much faster than processing each separately.
For many usage instructions, search for "MaTeX" in the documentation center.
The limiting factor in the speed of MaTeX
calls is running the pdflatex
process, which might take as long as a second and cannot be sped up further. However, MaTeX caches results, making subsequent calls with the same TeX code near-instantaneous. MaTeX can also process a list of expressions using a single run of LaTeX, which is much faster than processing each separately.
PATH
no longer cause MaTeX to issue messages with Mathematica 13.1 and later"WorkingDirectory"
configuration option. This allows users to work around a RunProcess
bug in some Mathematica versions on Windows where RunProcess
would fail in a directory with non-ASCII characters in its name.MaTeX`Developer`Texify
, to allow users to customize the expression to TeX code conversion. See Neat Examples in the MaTeX symbol documentation page.RunProcess
bug that affects some Mathematica 10.0 installations on LinuxMaTeX`Developer`
to aid troubleshootingLD_LIBRARY_PATH
MaTeX
now threads over lists. A list is batch-processed using a single run of LaTeX, which is much faster than element-wise processing. Implemented by Andreas Ahlrichs.
Note that this changes behaviour slightly. Previous versions of MaTeX compiled MaTeX[{1, x^2, x/2}]
as a single expression. Now each element of the list is converted to a separate result. To restore the old behaviour, apply TeXForm
explicitly: MaTeX[TeXForm[{1, x^2, x/2}]
.
Expressions with head TeXForm
are now automatically handled.
Bug fixes: Better handling of CR/LF line endings and character encodings.
Off[MaTeX::warn]
."Preamble"
and "BasePreamble"
options. The default preamble is now in "BasePreamble"
. The "Preamble"
option can be set without needing to worry about the default.MaTeX.m
) into $UserBaseDirectory/Applications
to install."TeXFileFunction"
and "LogFileFunction"
options for easier debugging. Set them to Print
to see the generated LaTeX code or the LaTeX log file.ContentPadding
option: ContentPadding -> True
ensures that the the output height is at least one line heightLineSpacing
optionLineSpacing -> {0, 14.4}
to reproduce the older behaviour/
as path separatorFontSize
option (now requires the lmodern
package)Magnification
handlingMaTeX was primarily created for my own needs. However, if you find it useful, feel free to drop me an email.
Send feedback or bug reports to szhorvat
at gmail.com
or open an issue in the tracker.