Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8b02ed1

Browse files
authored
Merge pull request #19753 from anntzer/pgfs
Cleanup string formatting in backend_pgf.
2 parents a4a508b + a9b2731 commit 8b02ed1

File tree

1 file changed

+31
-50
lines changed

1 file changed

+31
-50
lines changed

lib/matplotlib/backends/backend_pgf.py

Lines changed: 31 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -855,38 +855,35 @@ def print_pgf(self, fname_or_fh, **kwargs):
855855

856856
def print_pdf(self, fname_or_fh, *, metadata=None, **kwargs):
857857
"""Use LaTeX to compile a pgf generated figure to pdf."""
858-
w, h = self.figure.get_figwidth(), self.figure.get_figheight()
858+
w, h = self.figure.get_size_inches()
859859

860860
info_dict = _create_pdf_info_dict('pgf', metadata or {})
861-
hyperref_options = ','.join(
861+
pdfinfo = ','.join(
862862
_metadata_to_str(k, v) for k, v in info_dict.items())
863863

864+
# print figure to pgf and compile it with latex
864865
with TemporaryDirectory() as tmpdir:
865866
tmppath = pathlib.Path(tmpdir)
866-
867-
# print figure to pgf and compile it with latex
868867
self.print_pgf(tmppath / "figure.pgf", **kwargs)
869-
870-
latexcode = """
871-
\\PassOptionsToPackage{pdfinfo={%s}}{hyperref}
872-
\\RequirePackage{hyperref}
873-
\\documentclass[12pt]{minimal}
874-
\\usepackage[paperwidth=%fin, paperheight=%fin, margin=0in]{geometry}
875-
%s
876-
%s
877-
\\usepackage{pgf}
878-
879-
\\begin{document}
880-
\\centering
881-
\\input{figure.pgf}
882-
\\end{document}""" % (hyperref_options, w, h, get_preamble(), get_fontspec())
883-
(tmppath / "figure.tex").write_text(latexcode, encoding="utf-8")
884-
868+
(tmppath / "figure.tex").write_text(
869+
"\n".join([
870+
r"\PassOptionsToPackage{pdfinfo={%s}}{hyperref}" % pdfinfo,
871+
r"\RequirePackage{hyperref}",
872+
r"\documentclass[12pt]{minimal}",
873+
r"\usepackage[papersize={%fin,%fin}, margin=0in]{geometry}"
874+
% (w, h),
875+
get_preamble(),
876+
get_fontspec(),
877+
r"\usepackage{pgf}",
878+
r"\begin{document}",
879+
r"\centering",
880+
r"\input{figure.pgf}",
881+
r"\end{document}",
882+
]), encoding="utf-8")
885883
texcommand = mpl.rcParams["pgf.texsystem"]
886884
cbook._check_and_log_subprocess(
887885
[texcommand, "-interaction=nonstopmode", "-halt-on-error",
888886
"figure.tex"], _log, cwd=tmpdir)
889-
890887
with (tmppath / "figure.pdf").open("rb") as orig, \
891888
cbook.open_file_cm(fname_or_fh, "wb") as dest:
892889
shutil.copyfileobj(orig, dest) # copy file contents to target
@@ -990,36 +987,20 @@ def __init__(self, filename, *, keep_empty=True, metadata=None):
990987
self._file = BytesIO()
991988

992989
def _write_header(self, width_inches, height_inches):
993-
hyperref_options = ','.join(
990+
pdfinfo = ','.join(
994991
_metadata_to_str(k, v) for k, v in self._info_dict.items())
995-
996-
latex_preamble = get_preamble()
997-
latex_fontspec = get_fontspec()
998-
latex_header = r"""\PassOptionsToPackage{{
999-
pdfinfo={{
1000-
{metadata}
1001-
}}
1002-
}}{{hyperref}}
1003-
\RequirePackage{{hyperref}}
1004-
\documentclass[12pt]{{minimal}}
1005-
\usepackage[
1006-
paperwidth={width}in,
1007-
paperheight={height}in,
1008-
margin=0in
1009-
]{{geometry}}
1010-
{preamble}
1011-
{fontspec}
1012-
\usepackage{{pgf}}
1013-
\setlength{{\parindent}}{{0pt}}
1014-
1015-
\begin{{document}}%%
1016-
""".format(
1017-
width=width_inches,
1018-
height=height_inches,
1019-
preamble=latex_preamble,
1020-
fontspec=latex_fontspec,
1021-
metadata=hyperref_options,
1022-
)
992+
latex_header = "\n".join([
993+
r"\PassOptionsToPackage{pdfinfo={%s}}{hyperref}" % pdfinfo,
994+
r"\RequirePackage{hyperref}",
995+
r"\documentclass[12pt]{minimal}",
996+
r"\usepackage[papersize={%fin,%fin}, margin=0in]{geometry}"
997+
% (width_inches, height_inches),
998+
get_preamble(),
999+
get_fontspec(),
1000+
r"\usepackage{pgf}",
1001+
r"\setlength{\parindent}{0pt}",
1002+
r"\begin{document}%",
1003+
])
10231004
self._file.write(latex_header.encode('utf-8'))
10241005

10251006
def __enter__(self):

0 commit comments

Comments
 (0)