Terminé encontrando una solución para Sphinx. Sobreescribo los escritores HTML y LaTeX para convertir el carácter ~
en un espacio sin interrupciones. Aquí está el código HTML uno:
import sphinx.writers.html
BaseTranslator = sphinx.writers.html.SmartyPantsHTMLTranslator
class CustomHTMLTranslator(BaseTranslator):
def bulk_text_processor(self, text):
if '~' in text:
text = text.replace('~', ' ')
return text
sphinx.writers.html.SmartyPantsHTMLTranslator = CustomHTMLTranslator
y el látex uno:
import sphinx.writers.latex
BaseTranslator = sphinx.writers.latex.LaTeXTranslator
class DocTranslator(BaseTranslator):
def visit_Text(self, node):
if self.verbatim is not None:
self.verbatim += node.astext()
else:
text = self.encode(node.astext())
if '\\textasciitilde{}' in text:
text = text.replace('\\textasciitilde{}', '~')
if not self.no_contractions:
text = educate_quotes_latex(text)
self.body.append(text)
sphinx.writers.latex.LaTeXTranslator = DocTranslator
No es tan bonito, y que ni siquiera dejó escapar el carácter ~
, pero funciona para mis propósitos.
un carácter no visible no es útil – jterrace
Luego puede configurar su editor para hacerlo visible o usar un pase de preprocesamiento adicional en sus archivos de entrada ... –