diff --git a/CHANGES b/CHANGES index 38a06251650..fe2ec0e9a72 100644 --- a/CHANGES +++ b/CHANGES @@ -141,6 +141,7 @@ Bugs fixed * #7646: handle errors on event handlers * #4187: LaTeX: EN DASH disappears from PDF bookmarks in Japanese documents * #7701: LaTeX: Anonymous indirect hyperlink target causes duplicated labels +* #7723: LaTeX: pdflatex crashed when URL contains a single quote * #7756: py domain: The default value for positional only argument is not shown * #7760: coverage: Add :confval:`coverage_show_missing_items` to show coverage result to console diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 6e7f5021b6b..113e2839066 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -1977,7 +1977,8 @@ def encode_uri(self, text: str) -> str: # mainly, %, #, {, } and \ need escaping via a \ escape # in \href, the tilde is allowed and must be represented literally return self.encode(text).replace('\\textasciitilde{}', '~').\ - replace('\\sphinxhyphen{}', '-') + replace('\\sphinxhyphen{}', '-').\ + replace('\\textquotesingle{}', "'") def visit_Text(self, node: Text) -> None: text = self.encode(node.astext())