diff --git a/CHANGES b/CHANGES index 303dae009..577c1c783 100644 --- a/CHANGES +++ b/CHANGES @@ -16,6 +16,8 @@ Features added Bugs fixed ---------- +* #10944: imgmath: Fix resolving image paths for files in nested folders. + Testing -------- diff --git a/sphinx/ext/imgmath.py b/sphinx/ext/imgmath.py index 0c034a599..5ebf8d8d2 100644 --- a/sphinx/ext/imgmath.py +++ b/sphinx/ext/imgmath.py @@ -207,10 +207,9 @@ def render_math( """Render the LaTeX math expression *math* using latex and dvipng or dvisvgm. - Return the filename relative to the built document and the "depth", + Return the image absolute filename and the "depth", that is, the distance of image bottom and baseline in pixels, if the option to use preview_latex is switched on. - Also return the temporary and destination files. Error handling may seem strange, but follows a pattern: if LaTeX or dvipng (dvisvgm) aren't available, only a warning is generated (since that enables @@ -317,7 +316,8 @@ def html_visit_math(self: HTMLTranslator, node: nodes.math) -> None: image_format = self.builder.config.imgmath_image_format.lower() img_src = render_maths_to_base64(image_format, rendered_path) else: - relative_path = path.relpath(rendered_path, self.builder.outdir) + bname = path.basename(rendered_path) + relative_path = path.join(self.builder.imgpath, 'math', bname) img_src = relative_path.replace(path.sep, '/') c = f' None image_format = self.builder.config.imgmath_image_format.lower() img_src = render_maths_to_base64(image_format, rendered_path) else: - relative_path = path.relpath(rendered_path, self.builder.outdir) + bname = path.basename(rendered_path) + relative_path = path.join(self.builder.imgpath, 'math', bname) img_src = relative_path.replace(path.sep, '/') self.body.append(f'

\n')