2013-04-22 2 views
8

コードブロックは、PDF出力で(引用符を確認してください)醜いPDF出力にuntypogrifiedコードブロックを生成作る:私はスフィンクスのバージョン1.1.3を使用しスフィンクスが

enter image description here

、および生成するために、次のコマンドを使用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!') 
+0

さらに最近のSphinx(1.3.5でテスト済み)では、引用符がコードブロック内にあるときに引用変換を避けるために特別なことはないことに注意してください。 – jfbu

答えて

3

スフィンクスが本当に優れたツールですが、私はまたlatexpdfターゲットのデフォルトのPDF出力を持ついくつかの問題があります。

は、具体的に:コードブロック内

  • 単一引用符は、ソースコード中に右を見ていない急性スタイルの引用符に変換されます。
  • コードブロックはメインテキストから字下げされません。私にとっては、これはそれらを読みにくくする。
  • 私は他のフォントや文章を好みますが、これは個人的な選択であり、設定することができます。

これのいくつかはスフィンクスのconf.pyのLaTeXのプリアンブル部分に固定することができますが、upquote LaTeXのパッケージには、それらを修正するために使用することはできませんので、引用符がカスタムLaTeXのエンティティにスフィンクスによって変更されています。

さまざまな設定オプションを使って実験したところ、PDFをビルドする前にLaTeXソースを修正するための小さなスクリプトを作成しました。スクリプトはhereで、生成する出力はhereです。 (比較のためhereが同じドキュメントのデフォルト出力です)

誰かが清潔なソリューションを持っている場合、例えば、スフィンクスのconf.pyで完全に行うことができますので、変更はReadTheDocsで取り上げられます興味がある。

また、PDFからコピー&ペーストするときにインデントを失う問題は、おそらくSphinx/LaTeXの問題ではありません。

2

これは究極の解決策につながる部分的な答えです。 SphinxでHTML出力にタイポグラフィー引用符(中括弧またはスマート引用符)を無効にするには、conf.pyのデフォルト設定をSmartyPantsfrom True to Falseに変更します。

私は、Sphinxで引用符を変換し、HTML出力から同じロジックを使用してPDF出力に適用する機能を見つけることができると仮定します。

+0

このオプションは動作しなくなりました(Sphinx 1.6.2?と1.7.dev20170612)。そして興味深いのタイミング(5日前) - ≥1.6スフィンクスのための – johndodo

+0

@johndodoは、https://github.com/rtfd/readthedocs.org/issues/2940 –

+0

ニースを参照してください。残念なことに私はあなたのページを見つけられませんでした。私は時間を節約できました。代わりにdocutils docsを使いました。しかし、ドキュメントを修正することは良い考えです。 – johndodo

0

The option proposed by Steve Piercy今、もはや(スフィンクス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 
+1

この(有効な)情報はコードブロックには必要ではないと指摘しています。私はSphinx 1.3.5との確認のためだけにテストしました。現在の1.6.2では、コードブロックの真っ直ぐな引用符は変更されていません。 – jfbu

+0

真。私が最初に思ったのは、スフィンクスの欠陥は、実際に私がどこか他の場所からブロックをコピーしていたことで、すでに壊れていました。しかし、私のスフィンクスへの不満は、この設定をどのように適用するかを理解するのには時間がかかりました。 – johndodo