原稿作成とビルド¶
本章では、Sphinxの基本的な使い方を学びます。 Sphinxでプロジェクトを開始し、ビルドして成果物(HTML)ができるまでの一連の流れをまとめます。見栄えのよいHTMLが簡単に作成できることをを体験しましょう。
ドキュメントにおいて、最も大事なのはコンテンツです。読み手にとって必要な情報が、分かりやすく正確に記載されていることが大事です。コンテンツを効率的に作成する作業するために、エディタにもこだわった結果、Emacsを利用するようになりました。そこで出会ったOrg-modeが素晴らしく、もはや、Org-modeがあるから、 Emacsを使用していると言っても過言ではないほどお世話になっています。 Org-modeを利用することで、ドキュメントを構造的に把握し、体系的に編集することができます。
Pandocを利用し、用意したOrg-modeフォーマットのファイルから rst(reStructuredText)フォーマットへ変換します。そして、Sphinxでビルドし、見栄えのよいウェブサイトを作成します。
Sphnixの概要¶
Sphinxとはドキュメントを作成するPython製のツールです。何がうれしいのかを、以下にまとめてみます。
知的で美しいドキュメントを簡単に作成できること
出力形式: HTML ・ PDF (LaTeX を使用) ・ ePub
(インデックス等を自動で作成できる)
Python 製ドキュメンテーション作成ツールとして実績があること
reStructuredText の文書をドキュメンテーションに変換できる
(Python の公式ドキュメントも採用)
設定やデザインを記事と完全に独立できること
記事作成時に細かいデザインを気にしなくてよい
(レスポンシブに対応したデザインも多数存在)
Sphinxのプロジェクト作成¶
Sphinxでドキュメントを作成するために、プロジェクトを作成します。プロジェクトを作成する方法には、「対話方式」と「コマンドライン方式」の二つが存在します。
対話方式:新規プロジェクト作成¶
Sphinxは、sphinx-quickstartというツールを提供しています。本ツールを利用することで、ドキュメントのソースディレクトリを生成し、それにデフォルトの設定ファイル等を追加します。
sphinx-quickstart
コマンドライン方式:新規プロジェクト作成¶
コマンドラインでSphinxのプロジェクトを作成できる方法を紹介します。
project_name="sphinx-template"
auther="masatotoro"
sphinx-quickstart \
--quiet \
--project=${project_name} \
--author=${auther} \
--language=ja \
-v 1.0.0 \
--ext-todo \
--no-batchfile
作成された新規プロジェクトの中身確認¶
ウェブサイトのデザイン変更¶
デザインを変更しないとテンションが上がらないため、最近よく見かけるようになった Read the Docのデザインを適用します。
conf.py の変更¶
html_theme = "sphinx_rtd_theme"
Sphinxの課題と対応方針¶
Sphinxはとても簡単にウェブサイトが作成することができます。またデザインに関しても、ライブラリを入れて設定を行うことでいい感じになります。 Sphinxの問題点は、rst(reStructuredText) のフォーマットを覚えなければいけないことです。
Org-modeの概要¶
Org-modeとは、”高速で効率的なプレーンテキストのシステム”です。プレーンテキストで記載すると、様々なプラットフォームでファイルを編集をできるメリットがあります。 Dropbox などで同期すると、その利便性はさらに向上すると思います。
Org-modeはGTD(Getting Things Done)などのタスク管理や、体系的なドキュメント作成と相性がよいです。ここでは、ウェブサイト用のコンテンツを作成する視点で、 Org-modeの便利な機能を厳選してまとめます。紹介する内容はOrg-modeの機能の一部にすぎません。興味のある方は、ぜひ使いこんで理解を深めてください。
Org-mode の公式サイト¶
Org-mode の嬉しいところ¶
使用して嬉しいと感じる理由は以下の3つです。
テキストデータなので軽量であること
文章の構造を意識して記事作成ができること
作成した記事の活用できる幅が広いこと
サイトの記事を作成する際のフォーマットは Org-mode で統一します。
Org-mode でやりたいこと¶
Emacs の org-mode を用いてファイルを変更
Goemon によるリアルタイムプレビュ
Org-modeで可能な表現の整理¶
ウェブサイト作成を想定した場合に使用する Org-mode の記法を整理します。複雑なことを行わないことがポイントになります。早速、順番に確認していきましょう。
箇条書き¶
ルール
記号: 「-」
階層: 3 つまで
本文¶
本文
行の途中で改行しない
表¶
Key の見出し |
Value の見出し |
---|---|
key1 |
Value1 |
key2 |
Value2 |
Pandocによるフォーマット変換¶
Pandoc とは、以下の特徴をもつツールになります。
Haskell で書かれたライブラリおよびコマンドラインツール
マークアップ形式で書かれた文書を別の形式へ変換することが可能
Sphinx 実践入門では、Pandoc 用いて、Org-mode から reStructuredText に変換することを行います。
これができると、Org-mode で編集したコンテンツを Sphinx でウェブサイトに変換することができます。
-
“a universal document converter”
Haskell の Hello World¶
Haskell は不勉強のため、Hello World のみの紹介です。
ソースコード
main = putStrLn "Hello, World!"
実行例
ghc -o hello hello.hs
./hello
Pandocの対応フォーマット¶
変換元¶
Emacs Org-mode
markdown
Textile (のサブセット、以下同様)
reStructuredText
HTML
LaTeX
MediaWiki markup
Haddock markup
OPML
DocBook
変換後¶
HTML スライドショ: Slidy ・ Slideous ・ DZSlides ・ reveal.js ・ S5
プレーンテキスト
markdown
reStructuredText
XHTML
HTML 5
LaTeX (beamer スライドショを含む)
ConTeXt
RTF
OPML
DocBook
OpenDocument
ODT
Word docx
GNU Texinfo
MediaWiki markup
EPUB (v2 または v3)
FictionBook2
Textile
groff man ページ
Emacs Org-Mode
AsciiDoc
InDesign ICML
PDF 出力(LaTeX がインストールされているシステムで使用できます)
Pandocの変換能力ダイアグラム¶
Pandoc の変換をダイアグラムにした画像があったので紹介します。
Pandocを用いてOrg-modeからreStructuredTextに変換¶
ファイル名を指定して変換する場合¶
pandoc \
--standalone \
--from org \
--to rst \
--output test.rst \
test.txt
ディレクトリ内のファイルに適用する場合¶
テキストファイルの拡張子が “.txt” のファイルを順番に処理する
処理の内容は、org-mode から rst ファイルに変換すること
for file in source/*.txt; do
# pandoc -f org -t rst $f -o "source/`basename ${file} .txt`.rst";
pandoc \
--standalone \
--from org \
--to rst \
--output "source/`basename $f .txt`.rst" \
${file}
done