HTML-сборщик Sphinx не может экранировать специальные символы - PullRequest
0 голосов
/ 06 июня 2019

Я автоматически генерирую файлы reStructuredText, которые отображаются Sphinx в нескольких форматах, включая HTML.Файлы reStructuredText иногда содержат специальные символы HTML, такие как <, из-за которых построителю HTML не удается выйти, что приводит к неверному выводу HTML.Это мешает мне автоматизировать процесс создания документации, заставляя меня вручную исправлять выходные файлы.Конкретный пример проблемы:

<div class="line">
    <code class="docutils literal notranslate">
        <span class="pre">public</span>
    </code>
    <span class="xref std std-ref">heap(
    </span>
</div>

Это происходит на текстовом фрагменте heap(<).Выходные данные в настоящее время должны быть вручную установлены на:

<div class="line">
    <code class="docutils literal notranslate">
        <span class="pre">public</span>
    </code>
    <a class="reference internal" href="heap_1.html#heap-1">
        <span class="std std-ref">heap(&lt;)</span>
    </a>
</div>

Я не могу найти в документации Sphinx для HTML-компоновщика никакого решения этой проблемы.Есть ли обходной путь?Исправление проблемы в исходном тексте не вариант (текст является исходным кодом, который должен компилироваться без ошибок; экранирование символов, таких как <, может привести к сбою компиляции).Соответствующий фрагмент файла reStructuredText:

| **Extends:**
|    ``public`` :ref:`heap(<) <heap/1>`

, который автоматически генерируется из фрагмента файла XML:

<extends>
    <name><![CDATA[heap(<)]]></name>
    <functor><![CDATA[heap/1]]></functor>
    <scope>public</scope>
    <file><![CDATA[heap_1]]></file>
</extends>
...