7

reST 経由でドキュメントを生成したいのですが、手動で reST ソースを書きたくないのですが、Python スクリプトにそれをさせてから、sphinx で他の形式 (HTML、PDF) を生成します。

バイナリ形式の電話帳があるとします。次に、Python スクリプトを使用してこれを解析し、すべての名前と番号を含むドキュメントを生成します。

  phone_book = PhonebookParser("somefile.bin")

  restdoc = restProducer.NewDocument()
  for entry in phone_book:
    restdoc.add_section( title = entry.name, body = entry.number )

  restdoc.write_to_file("phonebook.rst")

次に、pdf と html を生成するために sphinx を呼び出します。

  > sphinx phonebook.rst -o phonebook.pdf
  > sphinx phonebook.rst -o phonebook.html

reSTを生成するためのAPIを提供するpythonモジュール(上記の例ではrestProducer)はありますか?または、いくつかの print ステートメントを介して reST マークアップをダンプする最良の方法はありますか?

4

3 に答える 3

5
  1. すべての Python パッケージ コンテンツのドキュメントを自動的に生成するを参照してください。

  2. 今後のSphinx 1.1リリースには、sphinx-apidoc.pyスクリプトが含まれています。

編集:

問題をもう少し説明したので、「いくつかの印刷ステートメントを介してreSTマークアップをダンプする」オプションを選択してください。あなたはすでにそれらの線に沿って考えているようです。ミニマルな を実装してみませんrestProducerか?

于 2011-03-13T12:17:32.410 に答える
3

docs-without-writing-docs (実際のドキュメントではなく、せいぜい API リファレンスを提供するだけ)が必要な場合は、Sphinx のautosummaryおよびautodoc拡張機能を使用することをお勧めします。

于 2011-03-13T11:55:16.200 に答える
0

目的がプログラムでドキュメントを一度作成し、複数の形式で出力できるようにすることである場合は、PyQt Framework の QTextDocument を見ることができます。しかし、それはやり過ぎです。

from PyQt4.QtGui import *
import sys

doc = QTextDocument()
cur = QTextCursor(doc)

d_font = QFont('Times New Roman')
doc.setDefaultFont(d_font)

table_fmt = QTextTableFormat()
table_fmt.setColumnWidthConstraints([
    QTextLength(QTextLength.PercentageLength, 30),
    QTextLength(QTextLength.PercentageLength, 70)
    ])
table = cur.insertTable(5,2, table_fmt)
cur.insertText('sample text 1')
cur.movePosition(cur.NextCell)
cur.insertText('sample text 2')

# Print to a pdf file
# QPrinter: Must construct a QApplication before a QPaintDevice
app = QApplication(sys.argv)
printer = QPrinter(QPrinter.HighResolution)
printer.setOutputFormat(QPrinter.PdfFormat)
printer.setOutputFileName('sample.pdf')

# Save to file
writer = QTextDocumentWriter()
writer.setFormat(writer.supportedDocumentFormats()[1])
writer.setFileName('sample.odt')
writer.write(doc)

QTextDocumentWriterはプレーンテキスト、html、および ODF をサポートしています。QPrinterを使用して、物理プリンターまたは PDF ファイルに印刷できます。

ただし、あなたが言及したように、Jinja2 のようなテンプレート エンジンは、より適切な方法です。

于 2014-11-19T09:31:28.320 に答える