Usage¶
To use LaTeXiPy in a project:
import latexipy as lp
Set up for LaTeX with:
lp.latexify()
And make your figures with:
with lp.figure('filename'):
draw_the_plot()
Import from LaTeX with:
\usepackage{pgf}
\input{filename.pgf}
Minimum Working Example¶
import numpy as np
import matplotlib.pyplot as plt
import latexipy as lp
lp.latexify()
with lp.figure('sincos'):
x = np.linspace(-np.pi, np.pi)
y_sin = np.sin(x)
y_cos = np.cos(x)
plt.plot(x, y_sin, label='sine')
plt.plot(x, y_cos, label='cosine')
plt.title('Sine and cosine')
plt.xlabel(r'$\theta$')
plt.ylabel('Value')
plt.legend()
\documentclass{article}
\usepackage{pgf}
\begin{document}
\begin{figure}[h]
\centering
\input{img/filename.pgf}
\caption[LOF caption]{Regular caption.}
\label{fig:pgf_example}
\end{figure}
\end{document}
Plotting¶
Without LaTeX¶
If you are not making your plots for LaTeX, Matplotlib’s defaults are used.
The typeface is sans-serif, and the font, a bit large.
The default arguments save a PGF and PNG file in the img/ directory.
with lp.figure('sincos'):
plot_sin_and_cos()
With LaTeX¶
If you are building for LaTeX, just lp.latexify()!
lp.latexify()
with lp.figure('sincos'):
plot_sin_and_cos()
Using custom parameters¶
By default, lp.latexify() uses lp.PARAMS, which has the following values:
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | FONT_SIZE = 8
PARAMS = {
'pgf.texsystem': 'xelatex', # pdflatex, xelatex, lualatex
'text.usetex': True,
'font.family': 'serif',
'font.serif': [],
'font.sans-serif': [],
'font.monospace': [],
'pgf.preamble': [
r'\usepackage[utf8x]{inputenc}',
r'\usepackage[T1]{fontenc}',
],
'font.size': FONT_SIZE,
'axes.labelsize': FONT_SIZE,
'axes.titlesize': FONT_SIZE,
'legend.fontsize': FONT_SIZE,
'xtick.labelsize': FONT_SIZE,
'ytick.labelsize': FONT_SIZE,
}
|
Passing a different dictionary to lp.latexify() causes these changes to be permanent in the rest of the code.
For example, to increase the font size throughout:
93 94 95 96 97 98 99 100 101 | font_size = 10
params = lp.PARAMS.copy()
params.update({param: font_size
for param in params
if 'size' in param})
lp.latexify(params)
with figure('sincos_big_font_permanent'):
plot_sin_and_cos()
|
You can call lp.latexify() multiple times throughout your code, but if you want to change the setting only for a few figures, the recommended approach is to use lp.temp_params(). This automatically reverts to the previous settings after saving (or attempting to save) the plot.
87 88 89 90 | font_size = 10
with lp.temp_params(font_size=font_size):
with figure('sincos_big_font_temp'):
plot_sin_and_cos()
|
Either way, the font size would have increased uniformly from 8 to 10 pt.
Note that lp.temp_params() can also take a custom dictionary which can do more fine-grained tuning of fonts.
111 112 113 114 115 116 | with lp.temp_params(font_size=10, params_dict={
'axes.labelsize': 12,
'axes.titlesize': 12,
}):
with lp.figure('sincos_big_label_title'):
plot_sin_and_cos()
|
Reverting¶
To revert all changes made with lp.latexify() and other commands, just run lp.revert().
Avoiding repetition¶
If you keep passing the same arguments to lp.figure() (for example, an output directory, a set of filetypes, or a certain size), you can save it for reuse by using functools.partial().
After that, you can use it just like lp.figure().
Note that you would not be able to redifine an argument that you had previously applied.
figure = partial(lp.figure, directory=DIRECTORY)
with figure('sincos_partial'):
plot_sin_and_cos()
where DIRECTORY is the default output directory.
This pattern was used extensively in the Python file from the examples directory.
Using in LaTeX¶
To include a PGF file in your LaTeX document, make sure that the pgf package is loaded in the preamble.
\usepackage{pgf}
After that, you can include it in the correct location with:
\input{<filename>.pgf}
A minimum working example of an image within a figure is shown below.
\documentclass{article}
\usepackage{pgf}
\begin{document}
\begin{figure}[h]
\centering
\input{img/filename.pgf}
\caption[LOF caption]{Regular caption.}
\label{fig:pgf_example}
\end{figure}
\end{document}
Note that figures using additional raster images can only be included by \input{} if they are in the same directory as the main LaTeX file.
To load figures from other directories, you can use the import package instead.
\usepackage{import}
\import{<path to file>}{<filename>.pgf}
A minimum working example of that scenario is shown below.
\documentclass{article}
\usepackage{import}
\usepackage{pgf}
\begin{document}
\begin{figure}[h]
\centering
\import{/path/to/file/}{filename.pgf} % Note trailing slash.
\caption[LOF caption]{Regular caption.}
\label{fig:pgf_example}
\end{figure}
\end{document}