我怎样才能使新结构化非打破空间?(How can I make a non-breaking spa

2019-06-26 19:34发布

我怎样才能使新结构化非打破空间?

一个明显的问题,但解决办法是:

`word A`

但也可能是由不同的实现方式,如rst2latex或rst2pdf区别对待。 加上它以斜体呈现。

Answer 1:

我没有看到这里的问题,运行docutils的V0.9。 至少rst2latex和rst2html都表现正常关于非打破空白。 胶乳生成〜和HTML生成  当你输入一个非中断字符(\ XA0,\ 0240)。

也许你有一个编辑器的问题? 如果你能够输入字符,docutils的将做的工作。



Answer 2:

您需要unicode的指令,但它只能在替换使用。 所以,你需要像这样定义一个替代:

.. |nbsp| unicode:: 0xA0 
   :trim:

然后用它是这样的:

xx |nbsp| xx

:trim:有没有摆脱围绕替代的空间。



Answer 3:

您也可以使用|_| 代替|nbsp| 其小于有碍观瞻,给出的是可读作为纯文本reStructuredText的的目标。



Answer 4:

最后我想出了狮身人面像一个解决办法。 我重写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

这不是那么漂亮,而且它不会甚至让你逃脱~字符,但它适合我的目的。



Answer 5:

我没有测试它,但也许你可以使用http://docutils.sourceforge.net/docs/ref/rst/directives.html#unicode-character-codes和Unicode“无间断空格”字符: HTTP:// WWW .fileformat.info /信息/ Unicode的/炭/ A0 / index.htm的



文章来源: How can I make a non-breaking space in reStructuredText?