@@ -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
])