Означает ли \r что-то в сфинксе?

Я пишу свою строку документации, следуя рекомендациям по созданию строки документации. Затем я использую autodoc sphinx для создания своей документации. В некоторых строках документации я использую формулы LaTeX (sphinx.ext.mathjax). Кажется, что \r означает что-то особенное, например новую строку. Если у меня есть следующая команда:

"""
This :math:`\langle a, b\rangle` denotes the dot product of a and b
"""

он не отображается должным образом. Он помещает угол в новую строку и выдает ошибку: Встроенный интерпретируемый текст или ссылка на фразу start-string без end-string Если я заменю \rangle на \langle, все будет работать нормально. Как я могу это исправить?


person math    schedule 03.10.2017    source источник
comment
\r теперь является законным пространством SphinxQL sphinxsearch.com/bugs/view.php?id=332   -  person planet260    schedule 03.10.2017
comment
Не только в Sphinx — во многих местах \r является символом возврата каретки.   -  person jonrsharpe    schedule 03.10.2017
comment
@planet260, спасибо за комментарий. Но как я могу заставить это работать :)   -  person math    schedule 03.10.2017
comment
Экранируйте двойной косой чертой или поместите r (без кавычек) в тройные кавычки, это отключит интерпретацию косых черт внутри кавычек: r"""" text \langle """   -  person Pierre de Buyl    schedule 03.10.2017
comment
@planet260: Вопрос касается инструмента документации Sphinx, который не имеет отношения к поисковой системе Sphinx.   -  person mzjn    schedule 03.10.2017
comment
@PierredeBuyl большое спасибо! это работает как шарм! Если вы хотите добавить, это ответ, я приму его :)   -  person math    schedule 03.10.2017


Ответы (1)


Решение состоит в том, чтобы избежать двойной косой черты или поместить «r» (без кавычек) в тройные кавычки, это отключит интерпретацию косых черт внутри кавычек:

r"""
This :math:`\langle a, b\rangle` denotes the dot product of a and b
"""

Есть несколько префиксов, влияющих на определение строковых литералов, см. документация Python.

Соответствующие выдержки:

Символ обратной косой черты () используется для экранирования символов, которые в противном случае имели бы особое значение, таких как перевод строки, сама обратная косая черта или символ кавычек.

а также

Как строковые, так и байтовые литералы могут иметь префикс с буквой «r» или «R»; такие строки называются необработанными строками и обрабатывают обратную косую черту как буквальные символы. В результате в строковых литералах escape-символы '\U' и '\u' в необработанных строках не обрабатываются особым образом.

person Pierre de Buyl    schedule 03.10.2017