diff --git a/CHANGES b/CHANGES index 7e865801719..52df4057d56 100644 --- a/CHANGES +++ b/CHANGES @@ -71,6 +71,8 @@ Bugs fixed :confval:`man_make_section_directory` is not correct * #9306: Linkcheck reports broken link when remote server closes the connection on HEAD request +* #9330: changeset domain: :rst:dir:`versionchanged` with contents being a list + will cause error during pdf build * #9280: py domain: "exceptions" module is not displayed * #9224: ``:param:`` and ``:type:`` fields does not support a type containing whitespace (ex. ``Dict[str, str]``) diff --git a/sphinx/domains/changeset.py b/sphinx/domains/changeset.py index 1b31e0248a2..e0c5dd4e543 100644 --- a/sphinx/domains/changeset.py +++ b/sphinx/domains/changeset.py @@ -74,8 +74,10 @@ def run(self) -> List[Node]: if self.content: self.state.nested_parse(self.content, self.content_offset, node) classes = ['versionmodified', versionlabel_classes[self.name]] - if len(node): - if isinstance(node[0], nodes.paragraph) and node[0].rawsource: + if len(node) > 0 and isinstance(node[0], nodes.paragraph): + # the content starts with a paragraph + if node[0].rawsource: + # make the first paragraph translatable content = nodes.inline(node[0].rawsource, translatable=True) content.source = node[0].source content.line = node[0].line @@ -84,10 +86,16 @@ def run(self) -> List[Node]: para = cast(nodes.paragraph, node[0]) para.insert(0, nodes.inline('', '%s: ' % text, classes=classes)) + elif len(node) > 0: + # the content does not starts with a paragraph + para = nodes.paragraph('', '', + nodes.inline('', '%s: ' % text, classes=classes), + translatable=False) + node.insert(0, para) else: + # the content is empty para = nodes.paragraph('', '', - nodes.inline('', '%s.' % text, - classes=classes), + nodes.inline('', '%s.' % text, classes=classes), translatable=False) node.append(para)