diff options
5 files changed, 46 insertions, 41 deletions
diff --git a/docutils/docutils/parsers/rst/states.py b/docutils/docutils/parsers/rst/states.py index 3427c4694..f2c2d5144 100644 --- a/docutils/docutils/parsers/rst/states.py +++ b/docutils/docutils/parsers/rst/states.py @@ -1857,6 +1857,8 @@ class Body(RSTState): else: # anonymous target if refuri: target['refuri'] = refuri + else: + self.document.note_internal_target(target) target['anonymous'] = 1 self.document.note_anonymous_target(target) diff --git a/docutils/docutils/transforms/references.py b/docutils/docutils/transforms/references.py index 8fda16c77..c8989f2a6 100644 --- a/docutils/docutils/transforms/references.py +++ b/docutils/docutils/transforms/references.py @@ -448,7 +448,10 @@ class InternalTargets(Transform): element.walk(visitor) except nodes.NodeFound: target.parent.remove(target) - visitor.found.insert(0, target) + for child in visitor.found: + target += child + visitor.found.children = [] + visitor.found += target return else: # At end of section or container; try parent's sibling diff --git a/docutils/test/functional/expected/standalone_rst_html4css1.html b/docutils/test/functional/expected/standalone_rst_html4css1.html index b4e932b8d..c54bf046d 100644 --- a/docutils/test/functional/expected/standalone_rst_html4css1.html +++ b/docutils/test/functional/expected/standalone_rst_html4css1.html @@ -211,7 +211,7 @@ live link to PEP 258 here.</p> </ul> </div> <div class="section" id="enumerated-lists"> -<h2><a class="toc-backref" href="#id33" name="enumerated-lists">2.3 <span class="target" id="target"></span>Enumerated Lists</a></h2> +<h2><a class="toc-backref" href="#id33" name="enumerated-lists">2.3 <span class="target" id="target">Enumerated Lists</span></a></h2> <ol class="arabic"> <li><p class="first">Arabic numerals.</p> <ol class="loweralpha simple"> @@ -490,9 +490,9 @@ citation.</p> </div> <div class="section" id="targets"> <h2><a class="toc-backref" href="#id43" name="targets">2.13 Targets</a></h2> -<p><span class="target" id="example"></span>This paragraph is pointed to by the explicit "example" target. A +<p><span class="target" id="example">This paragraph is pointed to by the explicit "example" target. A reference can be found under <a class="reference" href="#inline-markup">Inline Markup</a>, above. <a class="reference" href="#inline-hyperlink-targets">Inline -hyperlink targets</a> are also possible.</p> +hyperlink targets</a> are also possible.</span></p> <p>Section headers are implicit targets, referred to by name. See <a class="reference" href="#targets">Targets</a>, which is a subsection of <a class="reference" href="#body-elements">Body Elements</a>.</p> <p>Explicit external targets are interpolated into references such as diff --git a/docutils/test/functional/expected/standalone_rst_latex.tex b/docutils/test/functional/expected/standalone_rst_latex.tex index 847e1749e..a65919472 100644 --- a/docutils/test/functional/expected/standalone_rst_latex.tex +++ b/docutils/test/functional/expected/standalone_rst_latex.tex @@ -374,7 +374,7 @@ This nested list should be compacted by the HTML writer. \hypertarget{enumerated-lists}{} \pdfbookmark[1]{2.3~~~Enumerated Lists}{enumerated-lists} -\subsection*{2.3~~~\hypertarget{target}{}Enumerated Lists} +\subsection*{2.3~~~\hypertarget{target}{Enumerated Lists}} \newcounter{listcnt1} \begin{list}{\arabic{listcnt1}.} { @@ -773,9 +773,9 @@ citation. \pdfbookmark[1]{2.13~~~Targets}{targets} \subsection*{2.13~~~Targets} -\hypertarget{example}{}This paragraph is pointed to by the explicit ``example'' target. A +\hypertarget{example}{This paragraph is pointed to by the explicit ``example'' target. A reference can be found under \href{\#inline-markup}{Inline Markup}, above. \href{\#inline-hyperlink-targets}{Inline -hyperlink targets} are also possible. +hyperlink targets} are also possible.} Section headers are implicit targets, referred to by name. See \href{\#targets}{Targets}, which is a subsection of \href{\#body-elements}{Body Elements}. diff --git a/docutils/test/test_transforms/test_hyperlinks.py b/docutils/test/test_transforms/test_hyperlinks.py index 3a09e0207..e82a3580d 100755 --- a/docutils/test/test_transforms/test_hyperlinks.py +++ b/docutils/test/test_transforms/test_hyperlinks.py @@ -68,9 +68,9 @@ direct_ internal <document source="test data"> <paragraph> <target id="direct" name="direct"> - <reference name="direct" refid="direct"> - direct - internal + <reference name="direct" refid="direct"> + direct + internal """], ["""\ .. _ztarget: @@ -84,9 +84,9 @@ indirect_ internal <document source="test data"> <paragraph> <target id="ztarget" name="ztarget"> - <reference name="indirect" refid="ztarget"> - indirect - internal + <reference name="indirect" refid="ztarget"> + indirect + internal <target id="indirect2" name="indirect2" refid="ztarget"> <target id="indirect" name="indirect" refid="ztarget"> """], @@ -226,10 +226,10 @@ __ """, """\ <document source="test data"> - <target anonymous="1" id="id1"> <paragraph> - <reference anonymous="1" name="direct internal" refid="id1"> - direct internal + <target anonymous="1" id="id1"> + <reference anonymous="1" name="direct internal" refid="id1"> + direct internal """], ["""\ .. _ztarget: @@ -242,8 +242,8 @@ __ ztarget_ <document source="test data"> <paragraph> <target id="ztarget" name="ztarget"> - <reference anonymous="1" name="indirect internal" refid="ztarget"> - indirect internal + <reference anonymous="1" name="indirect internal" refid="ztarget"> + indirect internal <target anonymous="1" id="id1" refid="ztarget"> """], ["""\ @@ -263,13 +263,13 @@ __ ztarget_ <document source="test data"> <paragraph> <target dupname="ztarget" id="ztarget"> - First + First <system_message backrefs="id1" level="2" line="5" source="test data" type="WARNING"> <paragraph> Duplicate explicit target name: "ztarget". <paragraph> <target dupname="ztarget" id="id1"> - Second + Second <paragraph> <problematic id="id4" refid="id3"> `indirect internal`__ @@ -324,7 +324,7 @@ By this `internal hyperlink`_ referemce. <document source="test data"> <paragraph> <target id="internal-hyperlink" name="internal hyperlink"> - This paragraph referenced. + This paragraph referenced. <paragraph> By this \n\ <reference name="internal hyperlink" refid="internal-hyperlink"> @@ -346,8 +346,8 @@ The results of the transform are not visible at the XML level. <document source="test data"> <paragraph> <target id="internal-hyperlink" name="internal hyperlink"> - <target id="chained" name="chained"> - This paragraph referenced. + <target id="chained" name="chained"> + This paragraph referenced. <paragraph> By this \n\ <reference name="internal hyperlink" refid="internal-hyperlink"> @@ -461,23 +461,23 @@ __ <target anonymous="1" id="id3" refuri="http://simplified"> <target id="external" name="external" refuri="http://indirect.external"> <target anonymous="1" id="id4" refuri="http://indirect.external"> - <target anonymous="1" id="id5"> <paragraph> - <reference anonymous="1" name="Full syntax anonymous external hyperlink reference" refuri="http://full"> - Full syntax anonymous external hyperlink reference - , - <reference anonymous="1" name="chained anonymous external reference" refuri="http://simplified"> - chained anonymous external reference - , - <reference anonymous="1" name="simplified syntax anonymous external hyperlink reference" refuri="http://simplified"> - simplified syntax anonymous external hyperlink reference - , - <reference anonymous="1" name="indirect anonymous hyperlink reference" refuri="http://indirect.external"> - indirect anonymous hyperlink reference - , - <reference anonymous="1" name="internal anonymous hyperlink reference" refid="id5"> - internal anonymous hyperlink reference - . + <target anonymous="1" id="id5"> + <reference anonymous="1" name="Full syntax anonymous external hyperlink reference" refuri="http://full"> + Full syntax anonymous external hyperlink reference + , + <reference anonymous="1" name="chained anonymous external reference" refuri="http://simplified"> + chained anonymous external reference + , + <reference anonymous="1" name="simplified syntax anonymous external hyperlink reference" refuri="http://simplified"> + simplified syntax anonymous external hyperlink reference + , + <reference anonymous="1" name="indirect anonymous hyperlink reference" refuri="http://indirect.external"> + indirect anonymous hyperlink reference + , + <reference anonymous="1" name="internal anonymous hyperlink reference" refid="id5"> + internal anonymous hyperlink reference + . """], ["""\ Duplicate external target_'s (different URIs): @@ -542,7 +542,7 @@ __ http://example.org <target id="indirect" name="indirect" refuri="http://uri"> <reference name="external_" refuri="http://uri"> <target id="internal" name="internal"> - <image uri="picture.png"> + <image uri="picture.png"> <reference name="indirect_" refuri="http://uri"> <image uri="picture.png"> <reference name="internal_" refid="internal"> @@ -594,7 +594,7 @@ Let's reference it (`explicit target`_) to avoid an irrelevant error. <section id="title" name="title"> <title> <target id="explicit-target" name="explicit target"> - Title + Title <paragraph> Let's reference it ( <reference name="explicit target" refid="explicit-target"> |