How can I link/reference another reST file in the documentation?

42,790

Solution 1

To referecnce other files I had to include the following in the conf.py. I took the code from the docs of Pillow(PIL fork) here.

extensions = ['sphinx.ext.intersphinx']

I think the inter-sphinx extension came to my help. It linked across the other doc pages.

Solution 2

To create links between different reStructuredText (.rst) files you can use the inline markup provided by sphinx. See the documentation under the heading Cross-referencing documents

on top of the file you define its label

.. _my-reference-label:

then you can link to it from other documents using

:ref:`my-reference-label`.

I do not believe you need to use the intersphinx extension, since it is for links between different projects. With this method you can link between different .rst files using their relative paths as described in the documentaion link above.

Solution 3

I write the link to another document using this:

:doc:`my document <../my_doc>` 

../my_doc is the path to my my_doc.rst file.

I also have inter-sphinx extension in my conf.py file.

extensions = ['sphinx.ext.intersphinx']

Solution 4

Simplifying @eme-eme's answer, you can just do:

:doc:`path/to/document`

You don't need to enclose the path in <> and provide a text to be displayed. In this case, a top-level header from the referenced document will be displayed as a link.

You don't need inter-sphinx extension for that.

Solution 5

To link from one page (.rst file) in your project to another page (different .rst file) use the following inline format:

See :ref: `topLevelHeadingofOtherPage`

For example:

See :ref:`Perform Bulk Actions`.

That's it. I agree, this information is hard to find in the Sphinx guide. It's because it's so simple I think that people assume you want to do something far more complicated.

Share:
42,790
Aditya ultra
Author by

Aditya ultra

I am the coolest fellow you might find here. And the geekest too.

Updated on July 11, 2021

Comments

  • Aditya ultra
    Aditya ultra almost 3 years

    I have simply no idea on how can I link to another document in the reST file.

    I want to link a file named install.rst to my quickstart guide in a paragraph. I don't know how can I achieve this.

    Please can you also refer to a great resource from where I can look up syntax for rest. The default quickstart is a little boring and not involves great depth discussion of using rest with sphinx.

    The doc in question is : http://todx.rtfd.io

  • Jindra Helcl
    Jindra Helcl over 7 years
    Would you please also describe how do you write the link to the other document?
  • luator
    luator about 6 years
    When using a label, it should be :ref: instead of :doc:. With :doc: you would need to specify the name of the other file instead of the label.
  • Padix Key
    Padix Key almost 5 years
    Having the intersphinx extension is not required if you link to documents in the same project
  • Jeyes Unterwegs
    Jeyes Unterwegs over 3 years
    I strongly discourage this solution: No element except an initial comment should precede the document title because many renderers rely on this. A label at the beginning of the document might, for example, screw the navigation links of your sphinx theme. Apart from that, the answer is over-specific when the question is how to link to a doc, not to a random place in a doc.
  • Sybille Peters
    Sybille Peters over 3 years
    The header label / target does not have to be on the top of the page. In fact you might have several in a file, for example one for each section so you can link directly to this. I do believe it is customary to place it directly before a headline (e.g. title or section header), see docs.readthedocs.io/en/stable/guides/…
  • Sybille Peters
    Sybille Peters over 3 years
    The TYPO3 cheat sheet you linked to has some TYPO3 specific stuff which is used in rendering the docs in TYPO3-land. For example, I believe the Settings.cfg is specific. Apart from that, this is a good resource. But I would link to general restructuredText / sphinx docs, e.g. docs.readthedocs.io/en/stable/guides/… If you want to link to a different manual, look for "intersphinx".
  • usernumber
    usernumber almost 3 years
    I tried this. When I build, I get the error undefined label.
  • SteveJ
    SteveJ over 2 years
    Note that your first and second examples differ in the space between the ref keyword and the label. I don't believe the first example will work (at lest it doesn't in my tests, but the second one does.)
  • SteveJ
    SteveJ over 2 years
    The documentation pointed to is under the section of "Cross Referencing an Arbitrary Location". Headings are already an anchor -- so you can simply reference a heading. In the example given here, simply reference the top heading, and no need to prepend the document with a reference.
  • michcio1234
    michcio1234 over 2 years
    @JeyesUnterwegs, do you have any specific renderer in mind that would have a problem with this? This syntax is a part of standard reStructuredText specification, and if a renderer can't deal with it properly, I'd say it's a renderer bug.
  • Jeyes Unterwegs
    Jeyes Unterwegs over 2 years
    @michcio1234 the example was mentioned in my comment: I have had this problem with a Sphinx theme, don't remember which one. That definitely was a bug.