@@ -42,8 +42,10 @@ def _get_documentclass():
42
42
else:
43
43
return _DOCUMENTCLASS
44
44
45
- def _get_preamble():
45
+ def _get_preamble(commands=None ):
46
46
"""Prepare a LaTeX preamble based on the rcParams configuration."""
47
+ if commands is None:
48
+ commands = []
47
49
font_size_pt = FontProperties(
48
50
size=mpl.rcParams["font.size"]
49
51
).get_size_in_points()
@@ -68,6 +70,7 @@ def _get_preamble():
68
70
for family in ["serif", "sans\\-serif", "monospace"]]
69
71
)
70
72
] + [r"\fi"] if mpl.rcParams["pgf.rcfonts"] else []),
73
+ *commands,
71
74
# Documented as "must come last".
72
75
mpl.texmanager._usepackage_if_not_loaded("underscore", option="strings"),
73
76
])
@@ -201,12 +204,13 @@ class LatexManager:
201
204
@staticmethod
202
205
def _build_latex_header():
203
206
latex_header = [
204
- _get_preamble(),
205
- # Include TeX program name as a comment for cache invalidation.
206
- # TeX does not allow this to be the first line.
207
- rf"% !TeX program = {mpl.rcParams['pgf.texsystem']}",
208
- # Test whether \includegraphics supports interpolate option.
209
- r"\usepackage{graphicx}",
207
+ _get_preamble(commands=[
208
+ # Include TeX program name as a comment for cache invalidation.
209
+ # TeX does not allow this to be the first line.
210
+ rf"% !TeX program = {mpl.rcParams['pgf.texsystem']}",
211
+ # Test whether \includegraphics supports interpolate option.
212
+ r"\usepackage{graphicx}",
213
+ ]),
210
214
r"\begin{document}",
211
215
r"\typeout{pgf_backend_query_start}",
212
216
]
@@ -832,11 +836,12 @@ def print_pdf(self, fname_or_fh, *, metadata=None, **kwargs):
832
836
"\n".join([
833
837
r"\PassOptionsToPackage{pdfinfo={%s}}{hyperref}" % pdfinfo,
834
838
r"\PassOptionsToPackage{%s}{geometry}" % geometry_options,
835
- _get_preamble(),
836
- r"\usepackage{hyperref}",
837
- r"\usepackage{geometry}",
838
- r"\geometry{reset, %s}" % geometry_options,
839
- r"\usepackage{pgf}",
839
+ _get_preamble(inserted_lines=[
840
+ r"\usepackage{hyperref}",
841
+ r"\usepackage{geometry}",
842
+ r"\geometry{reset, %s}" % geometry_options,
843
+ r"\usepackage{pgf}",
844
+ ]),
840
845
r"\begin{document}",
841
846
r"\centering",
842
847
r"\input{figure.pgf}",
@@ -945,11 +950,12 @@ def _write_header(self, width_inches, height_inches):
945
950
latex_header = "\n".join([
946
951
r"\PassOptionsToPackage{pdfinfo={%s}}{hyperref}" % pdfinfo,
947
952
r"\PassOptionsToPackage{%s}{geometry}" % geometry_options,
948
- _get_preamble(),
949
- r"\usepackage{hyperref}",
950
- r"\usepackage{geometry}",
951
- r"\geometry{reset, %s}" % geometry_options,
952
- r"\usepackage{pgf}",
953
+ _get_preamble(inserted_lines=[
954
+ r"\usepackage{hyperref}",
955
+ r"\usepackage{geometry}",
956
+ r"\geometry{reset, %s}" % geometry_options,
957
+ r"\usepackage{pgf}",
958
+ ]),
953
959
r"\setlength{\parindent}{0pt}",
954
960
r"\begin{document}%",
955
961
])
0 commit comments