如何在 reStructuredText 中创建一个不间断的空间?
一个明显但有问题的解决方案是:
`word A`
但它可能会被不同的实现区别对待,例如 rst2latex 或 rst2pdf。此外,它以斜体显示。
如何在 reStructuredText 中创建一个不间断的空间?
一个明显但有问题的解决方案是:
`word A`
但它可能会被不同的实现区别对待,例如 rst2latex 或 rst2pdf。此外,它以斜体显示。
您需要 unicode 指令,但它只能用于替换。所以你需要定义一个这样的替换:
.. |nbsp| unicode:: 0xA0
:trim:
然后像这样使用它:
xx |nbsp| xx
:trim:
是否可以摆脱替换周围的那些空间。
考虑到 reStructuredText 的目标是像纯文本一样可读,你也可以使用它|_|
来代替视觉上的干扰。|nbsp|
我在这里看不到问题,运行 docutils v0.9。至少 rst2latex 和 rst2html 在不间断空白方面表现得很好。Latex 生成 ~ 和 html 生成 当您输入一个不间断字符(\xa0、\0240)时。
也许你有编辑问题?如果您可以设法输入字符,则 docutils 将完成这项工作。
我最终想出了一个解决 Sphinx 的方法。我覆盖 HTML 和 LaTeX 编写器以将~
字符转换为不间断空格。这是HTML之一:
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
和乳胶一个:
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
它不是那么漂亮,它甚至不会让你逃脱这个~
角色,但它适用于我的目的。
我没有测试过,但也许你可以使用http://docutils.sourceforge.net/docs/ref/rst/directives.html#unicode-character-codes和 unicode“无中断空间”字符:http://www .fileformat.info/info/unicode/char/a0/index.htm