使Sphinx在PDF输出中生成未经过编码的代码块

时间:2013-04-22 23:49:18

标签: python latex python-sphinx

PDF输出中的代码块看起来很丑(检查引号):

enter image description here

我使用Sphinx的1.1.3版,并使用以下命令生成doc:

$ make latexpdf

此外,从PDF复制代码段会在粘贴时破坏缩进:

@view_config(route_name=’hello’)
def hello_world(request):
return Response(’Hello World!’)

我希望如此:

@view_config(route_name=’hello’)
def hello_world(request):
    return Response(’Hello World!’)

这会更好:

@view_config(route_name='hello')
def hello_world(request):
    return Response('Hello World!')

3 个答案:

答案 0 :(得分:3)

Sphinx确实是一个很好的工具,但我对latexpdf目标的默认PDF输出也有一些问题。

具体做法是:

  • 代码块中的单引号转换为急性样式引号,但在源代码中看起来不正确。
  • 代码块不会从主文本缩进。对我来说,这使他们的可读性降低。
  • 我更喜欢其他字体和pygments,但这只是个人选择,可以进行配置。

其中一些可以在Sphinx conf.py的LaTeX pre-amble部分修复,但是Sphinx将引号修改为自定义LaTeX实体,因此upquote LaTeX包不能用于纠正它们

经过对不同配置选项的大量实验后,我最终编写了一个小脚本来修改LaTeX源,然后再构建PDF。该脚本为here,我想要生成的输出为here。 (对于比较here是同一文档的默认输出。)

如果有人有一个更清洁的解决方案,例如可以通过Sphinx conf.py完成的解决方案,那么ReadTheDocs会收到更改,那么我会感兴趣。

此外,从PDF复制和粘贴时丢失缩进的问题可能不是Sphinx / LaTeX问题。

答案 1 :(得分:2)

这只是部分答案,可能导致最终解决方案。要在Sphinx中禁用HTML输出的typographer引号(也称为卷曲或智能引号),请更改SmartyPants from True to False的conf.py中的默认设置。

我假设可以在Sphinx中找到转换引号的函数,并使用HTML输出中的相同逻辑并将其应用于PDF输出。

答案 2 :(得分:0)

The option proposed by Steve Piercy现在已不再适用(因为Sphinx 1.6):

Deprecated since version 1.6: Use the smart_quotes option 
in the Docutils configuration file (docutils.conf) instead.

对我来说不明显的是如何应用此设置。您需要创建一个docutils.conf文件并将其放入one of these locations

  • /etc/docutils.conf
  • ./ docutils.conf
  • 〜/ .docutils

最简单的选择是将它放在你正在构建文档的地方--YMMV。它至少应该包含:

[general]
smart_quotes: no