nowox
nowox

Reputation: 29096

Inline index entry in Sphinx?

I sometime would like to add an index entry, but written differently. For example:

.. index:: bitwise operator

Bitwise operators are ...

In this case, I cannot use :index: because I don't want my index entry to have a capital case and be in plural. However, moving the index entry at the beginning of the paragraph can be bad because the anchor or the page number (for LaTeX output) can be wrong.

Is there a way to have index entries in the text?

I have other issues with indexing for instance with links:

Among all other animals, one can cite the `elephant <https://wikipedia...>`_

Here I cannot really put the index:

Among all other animals, one can cite the `:index:`elephant` <https://wikipedia...>`_

I have other issues with bold text or code that I want to index easily in place:

This text is **:index:`bold`** and this :code:`:index:`code`` is indexed...

Any example of any workaround?

EDIT for Steve Piercy

With this example where on latex output where the bold word tristique is on a paragraph starting on page 1 and finishing on page 2, the index entry is pointing on the wrong page. As that word is bolded. I cannot do :index:'tristique'.

Document
========

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque vehicula nulla auctor sem elementum, et ultricies dolor ultricies. Cras et tortor arcu. Phasellus auctor tortor elit, eget pretium dui tincidunt vitae. Sed et erat a ipsum mollis sodales id eget lorem. Aliquam non risus malesuada, vulputate lorem in, molestie dui. Vestibulum tincidunt, metus sit amet commodo fermentum, ligula eros posuere velit, ut consectetur elit tortor ut nulla.

Nullam hendrerit et tellus molestie pretium. Pellentesque a eros nulla. Nullam lacus libero, tristique eget pulvinar ut, vulputate sed dolor. Nulla porttitor nunc luctus, lobortis risus eu, cursus enim. Proin et laoreet risus. Donec in sodales orci. Praesent eleifend ipsum at dignissim sodales. Ut et mauris est. Donec vel efficitur nulla. Phasellus hendrerit sodales ullamcorper. Aliquam accumsan feugiat eros, quis luctus risus ullamcorper vel. In et urna id massa consectetur luctus. Nullam semper neque in dictum ornare.

Suspendisse potenti. Maecenas commodo neque ac erat suscipit, eget convallis sem viverra. In viverra tempus lobortis. Proin vel pulvinar mauris, at eleifend lectus. Ut est lacus, tempus vitae porttitor congue, fringilla nec massa. Curabitur sed arcu sit amet augue facilisis hendrerit. Nullam fringilla felis non imperdiet accumsan.

Etiam faucibus efficitur lacus, vitae commodo tellus imperdiet non. Phasellus feugiat odio libero, at pharetra ex maximus interdum. Etiam sed commodo ipsum. Nam eros elit, pharetra sit amet nisi suscipit, vehicula efficitur mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Vestibulum gravida nunc eget dictum luctus. Suspendisse eget ligula augue. Nunc ullamcorper commodo faucibus.

In fringilla bibendum quam eu laoreet. Donec finibus sem lacus, quis eleifend eros suscipit eget. In quis rhoncus felis, non porta tortor. Maecenas fermentum mi sit amet mauris condimentum, sed viverra justo fringilla. Nulla commodo id risus non fringilla. Nunc id velit id erat sodales bibendum. Proin dictum, mi id pellentesque ullamcorper, tellus elit consectetur ex, eget lobortis mauris quam eu elit. Suspendisse sagittis volutpat accumsan. Sed ut nulla nulla. Phasellus in ante felis.

Suspendisse potenti. Maecenas commodo neque ac erat suscipit, eget convallis sem viverra. In viverra tempus lobortis. Proin vel pulvinar mauris, at eleifend lectus. Ut est lacus, tempus vitae porttitor congue, fringilla nec massa. Curabitur sed arcu sit amet augue facilisis hendrerit. Nullam fringilla felis non imperdiet accumsan.

Etiam faucibus efficitur lacus, vitae commodo tellus imperdiet non. Phasellus feugiat odio libero, at pharetra ex maximus interdum. Etiam sed commodo ipsum. Nam eros elit, pharetra sit amet nisi suscipit, vehicula efficitur mi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Suspendisse potenti. Vestibulum gravida nunc eget dictum luctus. Suspendisse eget ligula augue. Nunc ullamcorper commodo faucibus.

In fringilla bibendum quam eu laoreet. Donec finibus sem lacus, quis eleifend eros suscipit eget. In quis rhoncus felis, non porta tortor. Maecenas fermentum mi sit amet mauris condimentum, sed viverra justo fringilla. Nulla commodo id risus non fringilla. Nunc id velit id erat sodales bibendum. Proin dictum, mi id pellentesque ullamcorper, tellus elit consectetur ex, eget lobortis mauris quam eu elit. Suspendisse sagittis volutpat accumsan. Sed ut nulla nulla. Phasellus in ante felis.

.. index:: tristique

Praesent sodales leo semper, gravida ligula at, varius metus. Nullam cursus porta venenatis. Sed non dictum risus. Morbi eget elit vel metus vulputate consequat vel a nibh. Etiam felis nisl, mollis a hendrerit eu, accumsan non felis. Nullam lacinia libero sed leo iaculis lacinia. Pellentesque sit amet vestibulum felis. In id blandit leo, eget consectetur massa. Quisque ante orci, interdum ac placerat nec, aliquet at leo. Vestibulum fermentum egestas pellentesque. Morbi non felis a lorem convallis efficitur. Integer risus sem, porta vehicula neque nec, consequat euismod erat. Morbi eget rutrum lorem. Curabitur velit metus, interdum id facilisis sed, ornare vel nisi. Fusce vehicula risus nibh, nec porta magna volutpat quis. Phasellus molestie arcu purus, quis facilisis leo volutpat non. Ut nec euismod metus, eu rutrum lectus. Duis consectetur neque mi, a ornare nulla pulvinar a. Pellentesque id mattis felis. Quisque felis orci, finibus id odio id, feugiat scelerisque velit. Sed vehicula rhoncus condimentum. Integer eget nibh facilisis, lobortis urna ac, lobortis libero. Sed posuere eget enim tristique eleifend. Ut elementum mattis turpis eu cursus. Curabitur ac leo ornare, laoreet mauris quis, feugiat dolor. In laoreet posuere nunc, nec tristique lacus vulputate sed. Vestibulum egestas felis sagittis, hendrerit est et, tincidunt tortor. Donec et lobortis turpis. Ut venenatis congue tincidunt. Sed egestas a ex nec tempor. Sed lectus tellus, faucibus sit amet gravida nec, varius non enim. Mauris facilisis dui est, sed molestie augue faucibus nec. Curabitur id magna eleifend, placerat ligula eget, sagittis leo. Quisque tincidunt ligula ac dolor vehicula volutpat. Mauris porta odio congue, fringilla justo id, sodales nisl. Nam finibus mi metus, sed sollicitudin mi convallis semper. Nunc risus metus, placerat scelerisque lacinia in, rhoncus a sapien. Aliquam erat volutpat. Duis tincidunt massa in orci tristique vestibulum. Nunc placerat ex et purus lobortis bibendum. Proin pellentesque dui id mattis vehicula. In hac habitasse platea dictumst. Donec eget tellus eu tortor vulputate vulputate. Morbi maximus lacus eu pretium tempus. Pellentesque blandit lacinia mauris, vitae accumsan urna vehicula eget. In commodo posuere odio sit amet porttitor. Sed enim ipsum, molestie sit amet viverra in, tincidunt a purus. Nullam molestie erat vitae arcu volutpat, ut tempor libero porta. Aliquam ullamcorper rutrum nisi sed **tristique**. Mauris ut fermentum enim. Nam eu diam vel orci fermentum dignissim id nec lorem. Mauris metus mi, porta id feugiat non, dignissim et lorem. Nulla sit amet nisi in sapien iaculis vestibulum. Aliquam fermentum metus quis congue cursus. Nunc massa augue, pharetra id lorem in, sodales mollis dui. In vehicula, tortor vitae vehicula dignissim, turpis felis luctus lectus, sit amet facilisis felis ipsum quis sapien. In viverra interdum cursus. Nulla enim nunc, sagittis quis varius vel, hendrerit sed erat. Donec ultrices erat a commodo lacinia.

Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`

Upvotes: 0

Views: 205

Answers (1)

Steve Piercy
Steve Piercy

Reputation: 15055

The documentation for index states:

.. index::
   single: execution; context
   module: __main__
   module: sys
   triple: module; search; path

The execution context
---------------------

This directive contains five entries, which will be converted to entries in the generated index which link to the exact location of the index statement (or, in case of offline media, the corresponding page number).

Have you actually tried out index as described in the documentation, and verified that the documentation is not correct, in other words, not a "link to the exact location of the index statement"? In the rendered HTML, for example, I get a <span> with an anchor immediately preceding an <h2>, which is fine.

Update

Somehow I missed that you wanted inline indexing, not block indexing. Regardless, the terms used for indexing are similar. Further down the page to which I linked earlier, is the inline index role :index:.

The content of the role can be a simple phrase, which is then kept in the text and used as an index entry. It can also be a combination of text and index entry, styled like with explicit targets of cross-references. In that case, the “target” part can be a full entry as described for the directive above. For example:

This is a normal reST :index:`paragraph` that contains several
:index:`index entries <pair: index; entry>`.

These are the two syntaxes. You can use the second syntax to get the desired index entry.

:index:`Bitwise operators <single: bitwise operators>` are ...

Regarding your other questions, reStructuredText does not support nesting of roles or directives. That means you cannot format links or index entries with markup, but you can format them with CSS on their resulting HTML selectors. It also means you cannot index links.

Upvotes: 2

Related Questions