Sorry, my last comment was incorrect.

>2. To enable the name of hyperlink target, you need to call
>`self.state.document.note_implicit_target(container_node)`.

Please use `note_explicit_target()` instead.
You can see the difference between implicit and explicit targets here:
https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html#implicit-hyperlink-targets

In addition, please use `lambda node: node[0].astext(),` for
add_enumerable_node() instead.
With current Sphinx, node['names'] was removed on transformation of
doctree. (This would be fixed in future release)

Thanks,
Takeshi KOMIYA

2020年2月6日(木) 14:16 Myne <[email protected]>:
>
> Hi Takeshi KOMIYA,
>
> I tried those steps here
>
> https://github.com/jtrakk/sphinx-demo (commit: 
> https://github.com/jtrakk/sphinx-demo/commit/cf699f43e29e39af312f182df3a332454b6b7b8b)
>
> but I get an error
>
>
> Traceback (most recent call last):
>   File 
> "/home/user/.cache/pypoetry/virtualenvs/sphinx-demo-4JCgFyEV-py3.7/lib/python3.7/site-packages/sphinx/cmd/build.py",
>  line 276, in build_main
>     app.build(args.force_all, filenames)
>   File 
> "/home/user/.cache/pypoetry/virtualenvs/sphinx-demo-4JCgFyEV-py3.7/lib/python3.7/site-packages/sphinx/application.py",
>  line 353, in build
>     self.builder.build_update()
>   File 
> "/home/user/.cache/pypoetry/virtualenvs/sphinx-demo-4JCgFyEV-py3.7/lib/python3.7/site-packages/sphinx/builders/__init__.py",
>  line 299, in build_update
>     len(to_build))
>   File 
> "/home/user/.cache/pypoetry/virtualenvs/sphinx-demo-4JCgFyEV-py3.7/lib/python3.7/site-packages/sphinx/builders/__init__.py",
>  line 311, in build
>     updated_docnames = set(self.read())
>   File 
> "/home/user/.cache/pypoetry/virtualenvs/sphinx-demo-4JCgFyEV-py3.7/lib/python3.7/site-packages/sphinx/builders/__init__.py",
>  line 418, in read
>     self._read_serial(docnames)
>   File 
> "/home/user/.cache/pypoetry/virtualenvs/sphinx-demo-4JCgFyEV-py3.7/lib/python3.7/site-packages/sphinx/builders/__init__.py",
>  line 439, in _read_serial
>     self.read_doc(docname)
>   File 
> "/home/user/.cache/pypoetry/virtualenvs/sphinx-demo-4JCgFyEV-py3.7/lib/python3.7/site-packages/sphinx/builders/__init__.py",
>  line 479, in read_doc
>     doctree = read_doc(self.app, self.env, self.env.doc2path(docname))
>   File 
> "/home/user/.cache/pypoetry/virtualenvs/sphinx-demo-4JCgFyEV-py3.7/lib/python3.7/site-packages/sphinx/io.py",
>  line 350, in read_doc
>     pub.publish()
>   File "/home/user/Documents/docutils/docutils/docutils/core.py", line 219, 
> in publish
>     self.apply_transforms()
>   File "/home/user/Documents/docutils/docutils/docutils/core.py", line 200, 
> in apply_transforms
>     self.document.transformer.apply_transforms()
>   File 
> "/home/user/.cache/pypoetry/virtualenvs/sphinx-demo-4JCgFyEV-py3.7/lib/python3.7/site-packages/sphinx/transforms/__init__.py",
>  line 86, in apply_transforms
>     super().apply_transforms()
>   File 
> "/home/user/Documents/docutils/docutils/docutils/transforms/__init__.py", 
> line 171, in apply_transforms
>     transform.apply(**kwargs)
>   File 
> "/home/user/.cache/pypoetry/virtualenvs/sphinx-demo-4JCgFyEV-py3.7/lib/python3.7/site-packages/sphinx/transforms/__init__.py",
>  line 177, in apply
>     self.document.note_implicit_target(node)
>   File "/home/user/Documents/docutils/docutils/docutils/nodes.py", line 1489, 
> in note_implicit_target
>     self.set_name_id_map(target, id, msgnode, explicit=None)
>   File "/home/user/Documents/docutils/docutils/docutils/nodes.py", line 1436, 
> in set_name_id_map
>     self.set_duplicate_name_id(node, id, name, msgnode, explicit)
>   File "/home/user/Documents/docutils/docutils/docutils/nodes.py", line 1475, 
> in set_duplicate_name_id
>     dupname(node, name)
>   File "/home/user/Documents/docutils/docutils/docutils/nodes.py", line 2290, 
> in dupname
>     node['names'].remove(name)
> ValueError: list.remove(x): x not in list
>
>
> Did I miss something?
>
> On Sunday, February 2, 2020 at 5:46:50 AM UTC-8, Komiya Takeshi wrote:
>>
>> Sounds good. I just saw your extension and I found some problem.
>>
>> 1. It assigned the value of `name` to `container_node.names`.
>> Correctly, it should be stored into `container_node['names']`.
>> 2. To enable the name of hyperlink target, you need to call
>> `self.state.document.note_implicit_target(container_node)`.
>> 3. At present, Sphinx does not support assigning numbers to container
>> node. So you should inherit another node (ex. Element) instead.
>>
>> With I rewrite your extension by above rules, I got a number of
>> container_node via `:numref:` role.
>> Please try it.
>>
>> Thanks,
>> Takeshi KOMIYA
>>
>> 2020年2月2日(日) 8:37 Myne <[email protected]>:
>> >
>> > Hi,
>> >
>> > I tried to make an extension which will number and reference the 
>> > containers but did not succeed.
>> > https://github.com/jtrakk/sphinx-demo
>> >
>> > How can I fix it?
>> >
>> > Thanks.
>> >
>> > On Saturday, February 1, 2020 at 3:22:52 AM UTC-8, Komiya Takeshi wrote:
>> >>
>> >> Hi,
>> >>
>> >> "numref" only does referring by number as it named. To refer something
>> >> by number, you need to assign numbers to each object before
>> >> referencing. But Sphinx does not have a feature to assign numbers to
>> >> containers. So you need to write some extensions to do that.
>> >>
>> >> Personally, I can't imagine how containers get numbered. How is it 
>> >> displayed?
>> >>
>> >> Thanks,
>> >> Takeshi KOMIYA
>> >>
>> >> 2020年2月1日(土) 13:36 Myne <[email protected]>:
>> >> >
>> >> > Hi,
>> >> >
>> >> > I want to make a numref to a container.
>> >> >
>> >> >
>> >> > .. container::
>> >> >    :name: mycontainer
>> >> >
>> >> >
>> >> >      spam eggs
>> >> >
>> >> >
>> >> >
>> >> >
>> >> > Bar
>> >> > -----
>> >> >
>> >> >
>> >> > Let's reference :numref:`mycontainer` .
>> >> >
>> >> >
>> >> > I want it to appear as "Let's reference Cont. 1" . In my conf.py I put
>> >> >
>> >> >
>> >> > numfig_format = {'container': 'Cont. %s'}
>> >> >
>> >> >
>> >> >
>> >> > But that doesn't seem to work, I get
>> >> >
>> >> > WARNING: undefined label: mycontainer
>> >> >
>> >> > I am wondering how to make numref work on containers and other types.
>> >> >
>> >> > --
>> >> > You received this message because you are subscribed to the Google 
>> >> > Groups "sphinx-users" group.
>> >> > To unsubscribe from this group and stop receiving emails from it, send 
>> >> > an email to [email protected].
>> >> > To view this discussion on the web visit 
>> >> > https://groups.google.com/d/msgid/sphinx-users/f6167e37-ef86-416a-9355-7138bfa82345%40googlegroups.com.
>> >
>> > --
>> > You received this message because you are subscribed to the Google Groups 
>> > "sphinx-users" group.
>> > To unsubscribe from this group and stop receiving emails from it, send an 
>> > email to [email protected].
>> > To view this discussion on the web visit 
>> > https://groups.google.com/d/msgid/sphinx-users/7dfe936b-8b9c-4b73-8fc4-88229d1ed703%40googlegroups.com.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "sphinx-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sphinx-users/e90bf62d-420e-44ad-90e4-65652add714d%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups 
"sphinx-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sphinx-users/CAFmkQAM1PHG8%3DKmeqesXJh%2BsFmi9gxnr33pHZNsVXs01NS5BCQ%40mail.gmail.com.

Reply via email to