Вы можете исправить директиву LiteralInclude sphinx в sphinx / directives / code.py
- Там вам нужно будет сделать что-то такое, чтобы при включении кода вы могли указать начальную / конечную строку для выделения в этом фрагменте.
- Второй шаг потребует создания некоторых способов выделить вещи по-другому. Самый простой подход состоит в том, что часть без акцента не выделяется, а часть с акцентом выделяется. Это позволит избежать более сложного взлома стилей и выделения.
Это дает, например, новую опцию выделения строк в директиве literalinclude, которую вы можете использовать следующим образом:
.. literalinclude:: ../sphinx/directives/code.py
:pyobject: Highlight
:lines-emphasis: 6,13
где выделение строки - начальная строка, конечная строка относительно включенного кода, первая строка - 1.
Использование sphinx 0.6.5 на pypi.python.org/pypi/Sphinx/0.6.5 в качестве основы для быстрого исправления code.py: http://paste.pocoo.org/show/194456/
Обратите внимание, что следующее будет эквивалентно:
Используя стандартного сфинкса (почти то, что предложил С.Лотт):
.. literalinclude:: ../sphinx/directives/code.py
:language: none
:lines: 0-36
.. literalinclude:: ../sphinx/directives/code.py
:lines: 36-46
.. literalinclude:: ../sphinx/directives/code.py
:language: none
:lines: 37-
... и используя исправленного сфинкса:
.. literalinclude:: ../sphinx/directives/code.py
:lines-emphasis: 37,47
Следовательно, это может быть не совсем то, что вы ищете. Патч создает новый узел для каждого из подсвеченных или не подсвеченных разделов кода. Каждый из них будет представлен Sphinx как отдельный раздел
и
. Чтобы выйти за рамки этого, вы можете создать таблицу стилей, которая лучше выделит строки с акцентом. Дальнейшим хакам, возможно, придется углубиться в кишки Сфинкса и Пигментов, чтобы прямо на них генерировался цельный подчеркнутый стиль: не тривиально.
/ НТН