3

これは本当に奇妙な質問です:

Sphinxを使用してhtmlおよびpdf出力を生成することができました。そして、ユーザーが両方にアクセスできるように、両方を(PyPIへの)ディストリビューションにバンドルする必要がありました。

HTMLドキュメントを直接アップロードしてPyPIでホストすることはできますが、PDFLaTeXバージョンもアップロードできません。実際のコードは50K未満であるため、これを実行したいと思いますが、ドキュメントをバンドルすると、最大で約300Kに膨れ上がります。

最終的には、ユーザーが数ページのスフィンクスドキュメントをダウンロードしなくても、オフラインバージョンのドキュメントを入手できるようにしたいと思います。

だから私の質問はこれです:エンドユーザーがオフラインで使用するためにPDFを直接ダウンロードできるように、PDFをHTMLに自動的にバンドルすることは可能ですか?(PDFだけをディストリビューションにバンドルできることはわかっていますが、これはよりクリーンなアプローチのようです)

4

3 に答える 3

3

ReinoutvanReesのソリューションを変更しました。

実行downloadMe.rst時にHTMLに自動的に組み込まれる(lorem ipsumテキストを含む)を作成したため、loremipsumテキストを使用します。make htmldownloadMe.html

次に、Makefileのhtmlターゲットを次のように編集しました。

  1. LaTeX pdfをビルドして、にコピーし_build/html/staticます。
  2. スクリプトを使用しsedて、のloremipsumテキストdownloadMe.htmlをのPDFへのHTMLハイパーリンクに置き換えます_build/html/_static

Makefileそれがすべて完了すると、次のようなhtmlターゲットが表示されます。

html:
        @echo "Making LaTeX"
        make latex
        ( cd _build/latex/; make ) # the LaTeX needs to be built separately. This can be done in a subshell
        @echo "Done making LaTeX"
        @echo "Copying PDF to Static"
        cp _build/latex/Genetic.pdf _build/html/_static/
        @echo "Copy PDF to Static... DONE"
        @echo "Adding PDF to HTML"
        sed -i '' 's/lorem\ ipsum/\<a href="_static\/Genetic.pdf"\>Download\ Me\<\/a\>/g' _build/html/downloadPDF.html
        @echo "Done adding PDF to HTML"
        @echo "Removing LaTeX dir"
        rm -rf _build/latex
        @echo "Done removing LaTeX dir"

        $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
        @echo
        @echo "Build finished. The HTML pages are in $(BUILDDIR)/html."

このmakefileターゲットは、少し重いですが、ファイアアンドフォーゲットであるという利点があります。すべてのドキュメントを一度に作成するだけで、完了make html時にファイルを編集する必要はありませんmake。これにより、PyPIにアップロードする前に、ファイルなどを編集してドキュメントを正しく作成することを忘れる余地が少なくなります。

于 2012-11-19T16:56:10.463 に答える
2

(私の他の答えにも)別の方法は、http://readthedocs.orgにドキュメントを作成してホストさせることです。彼らはPDFを作成することもできるので、ドキュメントやのでPDFへのリンク(readthedocsによって作成およびホストされる)を提供できますREADME.rst

例については、https://readthedocs.org/projects/zestreleaser/downloads/を参照してください。PDF、ePub、およびzip形式のhtmlダウンロードへのリンクがそこに表示されます。まさにあなたが望むものかもしれません。

于 2012-11-19T10:57:12.013 に答える
1

Makefileスフィンクスがディレクトリに配置したものを変更できますdoc/build/。ターゲットの最後にlatexpdf、PDFをhtmlビルドディレクトリにコピーする行を追加します。次に例を示します(最後の行のみを追加しました)。

latexpdf:
    $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex
    @echo "Running LaTeX files through pdflatex..."
    $(MAKE) -C $(BUILDDIR)/latex all-pdf
    @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex."
    cp $(BUILDDIR)/latex/*pdf $(BUILDDIR)/html/

次に、のPDFへのリンクを追加できますREADME.rst

(READMEがSphinxに含まれている場合、ターゲットファイルが見つからない場合はSphinxの警告が表示される可能性があります。ただし、PDFをソースディレクトリにコピーしない限り、古いバージョンがコピーされるリスクがあります。 )。

私の提案:「生のhtml」エントリをに追加しますREADME.rst。これには、PDF出力に表示されないという利点もあります:-)

.. raw:: html

    <a href="pypi/link/to/pdf">PDF version</a>
于 2012-11-19T10:49:31.733 に答える