可破坏的斜线到处都是URL

时间:2016-09-19 08:22:40

标签: python-sphinx restructuredtext

我使用python sphinx(1.4.6)从重构文本生成pdf(latex)。

我使用窄表列标题和“stuff / misc / other”之类的文本。我需要斜杠是易碎的,因此表头不会溢出到下一列。

LaTeX解决方案是在必要时使用\BreakableSlash\slash 。我可以使用python代码替换所有斜杠:

from sphinx.util.texescape import tex_replacements

# \BreakableSlash needs package hyphenat to be loaded
tex_replacements.append((u'/', ur'\BreakableSlash ') ) 
# tex_replacements.append((u'/', ur'\slash ') ) 

但是这会将http://www.example.com/之类的网址分解为类似

的内容
http:\unhbox\voidb@x\penalty\@M\hskip\z@skip/\discretionary{-}{}{}\penalty\@M\hskip\z@skip\unhbox\voidb@x\penalty\@M\hskip\z@skip/\discretionary{-}{}{}\penalty\@M\hskip\z@skipwww.example.com

http:/\penalty\exhyphenpenalty/\penalty\exhyphenpenaltywww.example.com

我想使用适用于这两种情况的通用解决方案,其中文档的编辑器仍然可以使用正常的ReST,而不必担心乳胶。

知道如何在URL和其他地方使用可破坏的斜线获取经典斜线吗?

2 个答案:

答案 0 :(得分:1)

你还没有真正给出数据和源代码而且只询问了一个想法,所以我冒昧地只用伪代码草拟解决方案:

  • 使用.split()
  • 将文档拆分为空格每个位置的字符串列表
  • 对于每个字符串,通过将其左侧与http://(也可能是ftp://,https://或类似标签)进行比较来检查它是否为URL
  • 执行替换,但仅限于没有网址的字符串
  • 使用" ".join(my_list)
  • 等命令重新包含所有字符串,包括空格

答案 1 :(得分:0)

一种方法,可能是编写 Transform 子类。然后在setup(app)中使用add transform在每次阅读中使用它。

我可以使用DefaultSubstitutions from transforms.py作为我自己班级的模板。