executablebooks / MyST-Parser

An extended commonmark compliant parser, with bridges to docutils/sphinx
https://myst-parser.readthedocs.io
MIT License
759 stars 196 forks source link

Literal . (dot) or number (e.g. "3") in header yields local id not found [myst.xref_missing] #985

Open raoulbhatia opened 1 month ago

raoulbhatia commented 1 month ago

What version of myst-parser are you using?

2.0.0

What version dependencies are you using?

Sphinx v7.3.7

What operating system are you using?

Mac

Describe the Bug

(ATTN: Shortened examples)

File container_intro.md contains:

# lxc.env for environment variables

I have another document container_from_scratch.md where I want to reference this header in a link like

Please see the [container intro about environment](./container_intro.md#lxc-env-for-environment-variables)

This produces the following error:

[...]
writing output... [100%] index
docs/container/container_from_scratch.md:304: WARNING: local id not found in doc 'docs/container/container_intro': 'lxc-env-for-environment-variables' [myst.xref_missing]
generating indices... genindex done
[...]

Other combinations also do NOT work, e.g. adding an explicit (lxc-env)= target

[](container_intro.md#lxc-env)

:warning: The only way to resolve this WARNING is to REMOVE the dot from the header, e.g.

### lxcenv for environment variables

and changing the link to container_intro.md#lxc-env-for-environment-variables.

:warning: NOTE: The links work in the end, it is just a distracting, red WARNING

Expected Behavior

No WARNING is issued, parsing works.

To Reproduce

Create 2 documents like above and compile

raoulbhatia commented 1 month ago

Update: I've stumbled across another issue when using a header like ## 3rd party.

The auto-generated target is rd-party in this example.

Removing the 3 seems to resolve the issue.

raoulbhatia commented 1 month ago

I today noticed that MyST 4.0.0 is available and upgraded accordingly. Unfortunately, there is no change in behavior.