【发布时间】:2012-08-03 12:57:22
【问题描述】:
如何在 reStructuredText 中创建一个不间断的空间?
一个明显但有问题的解决方案是:
`word A`
但它可能会被不同的实现区别对待,例如 rst2latex 或 rst2pdf。另外,它以斜体显示。
【问题讨论】:
标签: restructuredtext
如何在 reStructuredText 中创建一个不间断的空间?
一个明显但有问题的解决方案是:
`word A`
但它可能会被不同的实现区别对待,例如 rst2latex 或 rst2pdf。另外,它以斜体显示。
【问题讨论】:
标签: restructuredtext
您需要 unicode 指令,但它只能用于替换。所以你需要像这样定义一个替换:
.. |nbsp| unicode:: 0xA0
:trim:
然后像这样使用它:
xx |nbsp| xx
:trim: 可以消除替换周围的那些空格。
【讨论】:
:trim: 添加到指令中以使其忽略替换周围的空格。如果你用修剪更新答案,赏金就是你的 - 谢谢!
您也可以使用|_| 代替|nbsp|,因为reStructuredText 的目标是作为纯文本可读。
【讨论】:
我在这里没有看到问题,正在运行 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
还有 LaTeX 的:
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
【讨论】: