Sphinx Advent Calendar 2012 (全部俺) http://advent-calendar2012.usaturn.net/ 初心者がどのようにSphinxを使ってきたかという記録 en-us Thu, 13 Dec 2012 00:00:00 +0900 http://advent-calendar2012.usaturn.net/2012/12/13/write_rest10.html http://advent-calendar2012.usaturn.net/2012/12/13/write_rest10.html 第13日目 Sphinxドキュメントを編集する その10

第13日目 Sphinxドキュメントを編集する その10

昨日は画像やファイルへのリンクについて説明しました。 今日は 索引(インデックス) について説明します。

索引(インデックス)

  • 一般の技術書等には、大抵最後の方に索引が記載されていると思います。Sphinxでもドキュメントに .. index:: ディレクティブを記述する事により索引を作成する事ができます。

singleオプション

記述例:

.. index::
   single: TERRA:THE GUNSLINGER

テラ:ザ・ガンスリンガーとは
============================

single オプションを使うと、このように表示されます。

../../../_images/index_single.png

pairオプション

記述例:

.. index::
   pair: テラ:ザ・ガンスリンガー; シーン制TRPG

テラ:ザ・ガンスリンガーとは
============================

pair オプションを使うと、このように表示されます。

../../../_images/index_pair1.png

pairオプションを使ったインデックスを複数配置する

  • pair オプションを使っても、今一つありがたみが感じられなかったかもしれませんが、複数のインデックスを配置するとなんとなくわかります。

    記述例:

    .. index::
       pair: テラ:ザ・ガンスリンガー; シーン制TRPG
    
    テラ:ザ・ガンスリンガーとは
    ============================
    
    
    .. index::
       pair: トーキョーN◎VA; シーン制TRPG
    
    トーキョーN◎VAとは
    =======================
    

    このように表示されます。

    ../../../_images/index_pair2.png

    シーン制 TRPG という項目に2つのセクションタイトルがまとめて出てきた事がわかりますね。

オプションを複数使う

  • singlepair その他オプションを複数使う事もできます。

    記述例:

    .. index::
       single: TERRA:THE GUNSLINGER
       single: 井上純弌
       pair: テラ:ザ・ガンスリンガー; シーン制TRPG
    
    テラ:ザ・ガンスリンガーとは
    ============================
    
    .. index::
       single: トーキョーノヴァ
       single: F.E.A.R.
       pair: トーキョーN◎VA; シーン制TRPG
    
    トーキョーN◎VAとは
    =======================
    
    .. index::
       single: Night Wizard!
       single: 鈴吹太郎、F.E.A.R.
       pair: ナイトウィザード; シーン制TRPG
    
    ナイトウィザードとは
    =====================
    

    このように表示されます。

    ../../../_images/index_pair3.png

明日は脚注について説明します。

※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。

]]>
Thu, 13 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/12/write_rest9.html http://advent-calendar2012.usaturn.net/2012/12/12/write_rest9.html 第12日目 Sphinxドキュメントを編集する その9

第12日目 Sphinxドキュメントを編集する その9

昨日は他のドキュメント( rstファイル )やセクションへのリンクについて説明しました。 今日はファイルのダウンロードリンクや画像へのリンクについて説明します。

ファイルをダウンロードさせるリンク

  • プロジェクト 内に存在するファイルへのダウンロード用リンクを張る事ができます。

    記述例:

    :download:`ダウンロードできます <../../../files/build_and_browsing.zip>`
    

    このように表示されます。

    ダウンロードできます

画像を表示する ~imageディレクティブ~

  • 画像を表示させたい場合は .. image:: というディレクティブを使います。

    まずはPythonの pillowパッケージ をインストールしましょう。

    easy_install -U pillow
    

    pillowパッケージ がインストール出来たら imageディレクティブのオプションが使えるようになります。

    記述例:

    .. image:: ../../../img/background.png
       :scale: 50
       :align: left
       :target: http://sphinx-users.jp/
    

    htmlこのように表示されます。

    ../../../_images/background.png
    • scale は縮小、拡大をする時のオプションです。100が1/1スケールです。
    • target リンク先を指定する事ができます。

明日は索引(インデックス)について説明します。

※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。

]]>
Wed, 12 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/11/write_rest8.html http://advent-calendar2012.usaturn.net/2012/12/11/write_rest8.html 第11日目 Sphinxドキュメントを編集する その8

第11日目 Sphinxドキュメントを編集する その8

昨日は外部リンクの張り方を説明しました。今日は プロジェクト 内へのリンクを説明します。

ドキュメントへのリンク

  • 他のドキュメント( rstファイル )へリンクを張りたい時は :doc: というマークアップをします。

    記述例:

    昨日のタイトルは :doc:`../10/write_rest7` です。一昨日は :doc:`toctree <../09/write_rest6>` について説明しましたね。
    

    このように表示されます。

    昨日のタイトルは 第10日目 Sphinxドキュメントを編集する その7 です。一昨日は toctree について説明しましたね。

  • ファイルへのパスは拡張子が不要です。

  • ファイルパスはドキュメントの起点となる index.rst/ (ルート) とした絶対パスか、相対パスで記述して下さい。

]]>
Tue, 11 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/10/make_on_sakura.html http://advent-calendar2012.usaturn.net/2012/12/10/make_on_sakura.html 本家 Sphinx Advent Calendar 2012 10日目 ~サクラエディタから make html~

本家 Sphinx Advent Calendar 2012 10日目 ~サクラエディタから make html~

9日目の 波田野さん ( @tcsh )から受け取りました。

ドキュメント作成の歴史を紐解きながら、ドキュメントの構造化~システマティックなドキュメント作成への期待を語られていて興味深く感じました。

さて 本家 Sphinx Advent Calendar 2012 の10日目です。全部俺版とは別に投稿したいと思います。

サクラエディタとマクロ

最近では VimSublime Text 2Emacs だとかが流行っているらしいですが、Windows使ってるなら サクラエディタ でしょう。

仕事柄、色々な現場に入るのですが、どこでも サクラエディタ は必ず使われています。かくいう私も10年程 サクラエディタ を使っておりました。 第3日目 Sphinxドキュメントを書く道具 も参照して頂けると幸いです。

この サクラエディタ 、マクロが PPA と WSHが使えます。 詳しくは こちらへ

makeからブラウザ確認までを1動作で

  • タイトルの通りです。サクラエディタで編集する際に 編集 -> make html -> ブラウザを起動して確認 ..... というサイクルの手間を少し省く事ができます。

使い方

  1. これ をダウンロードし、任意のディレクトリに配置します。

    例:

    C:\tools\Editor\macro\build_and_browsing.vbs
  2. 設定 -> 共通設定 -> マクロ タブにて マクロ一覧 にマクロを配置したディレクトリを指定します。

    ../../../_images/make_on_sakura01.png
  3. マクロの登録一覧の空欄の部分を選択します。初めて登録するならば 0 を選択しましょう。

    ../../../_images/make_on_sakura03.png
  4. 名前 に任意の名前を付けます。とりあえず make html としておきましょう。

    ../../../_images/make_on_sakura04.png
  5. File にてドロップダウンメニューからマクロのファイルを選択します。

    ../../../_images/make_on_sakura05.png
  6. 設定 をクリックします。

    ../../../_images/make_on_sakura06.png
  7. マクロ一覧0make html が登録された事を確認します。

    ../../../_images/make_on_sakura07.png
  8. キー割り当て タブをクリックします。

    ../../../_images/make_on_sakura071.png
  9. 種別外部マクロ にします。

    ../../../_images/make_on_sakura08.png
  10. make html をクリックします。

../../../_images/make_on_sakura09.png
  1. 任意のキーを割付して下さい。

    Alt + B を設定する場合

    1. Alt にチェックを入れる

      ../../../_images/make_on_sakura10.png
    2. キー欄をスクロールして Alt+B をクリック

    ../../../_images/make_on_sakura11.png
    1. 割付 を押下します。
    ../../../_images/make_on_sakura12.png
    1. 機能に割り当てられているキーAlt+B が、 機能に割り当てられている機能make html が表示されている事を確認し OK をクリックします。
    ../../../_images/make_on_sakura13.png
  2. プロジェクト 内のreSTファイルをサクラエディタで開き、おもむろに割付したキー(例では Alt+B )を押しましょう。

  3. make html の結果がポップアップされ、編集している reSTファイル のhtmlがWebブラウザで開かれれば成功です。

../../../_images/make_on_sakura14.png

マクロの中身

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Option Explicit

Dim objWshShell
Dim objFso
Dim objFile
Dim inFileName
Dim objParentFolder
Dim parentfolder
Dim makebat
Dim objFolder
Dim bat
Dim WshScriptExec

Set objWshShell = CreateObject("WScript.Shell")
Set objFso = CreateObject("Scripting.FileSystemObject")

Function getParentFolder()
    inFileName = ExpandParameter("$F")
    If objFso.FileExists(inFileName) = True Then
        Set objFile = objFso.GetFile(inFileName)
        getParentFolder = objFile.ParentFolder
    End If
End Function


Function existsMakebat(parentfolder)
    bat = true
    Do until (bat = false)
        makebat = parentfolder & "\make.bat"
        set objFolder = objFso.GetFolder(parentfolder)
        If objFso.FileExists(makebat) Then
            objWshShell.CurrentDirectory = parentfolder
            existsMakebat = makebat
            exit function
        ElseIf objFolder.IsRootFolder Then
            existsMakebat = false
            bat = false
            exit function
        Else
            parentfolder = objFolder.ParentFolder
        End If
    loop
End Function


Function main()
    parentfolder = getParentFolder
    makebat = existsMakebat(parentfolder)
    if makebat = false Then
        msgbox "makeに失敗しました", 16, "Result"
    Elseif makebat = null Then
        msgbox "makeに失敗しました", 16, "Result"
    Else
        Set WshScriptExec = objWshShell.Exec("make.bat html")
        Do While (WshScriptExec.Status = 0)
            objWshShell.run "ping -n 2 localhost", 0, True
        loop
        objWshShell.run("_build\html\" & ExpandParameter("$g") & ".html")
        msgbox WshScriptExec.StdOut.ReadAll, 64, "Result"
    End If
End Function


main


Set objWshShell = nothing
Set objFso = nothing
Set objFile = nothing
Set objFolder = nothing
Set WshScriptExec = nothing

さ~て、明日のSphinxアドベントカレンダーは?

  • 明日は @grimroseさん担当 です。手順書を作成した時の過程を書かれるそうです。楽しみですね!
]]>
Mon, 10 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/10/write_rest7.html http://advent-calendar2012.usaturn.net/2012/12/10/write_rest7.html 第10日目 Sphinxドキュメントを編集する その7

第10日目 Sphinxドキュメントを編集する その7

昨日は toctree ディレクティブを使用してSphinxドキュメントを ツリー構造化 する方法を説明しました。

今日からドキュメントのネットワーク構造(リンクの張り方)の説明をします。

外部URLへのリンク

  • 一番単純なURLへのリンクの張り方は、単にURLを記述する事です。

    記述例:

    http://sphinx-users.jp/
    

    このように表示されます。

  • URLを見せずに文字列を見せたい場合は下記のように記述します。

    記述例:

    `sphinx <http://sphinx-users.jp/>`_
    

    このように表示されます。

    もし、同じリンクを使いまわしたい時は、

    まず ターゲット定義 を書く:

    .. _`sphinx`: http://sphinx-users.jp/
    

    記述例:

    この `sphinx`_ を会得すると、身も心も `sphinx`_ 化してしまい、 どんなドキュメントも `sphinx`_ にしないと気が済まなくなるらしい。
    

    このように表示されます。

    この sphinx を会得すると、身も心も sphinx 化してしまい、 どんなドキュメントも sphinx にしないと気が済まなくなるらしい。

明日はSphinxドキュメント内へのリンクを説明します。

※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。

]]>
Mon, 10 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/09/write_rest6.html http://advent-calendar2012.usaturn.net/2012/12/09/write_rest6.html 第9日目 Sphinxドキュメントを編集する その6

第9日目 Sphinxドキュメントを編集する その6

昨日までに、基本的な reStructuredText を説明しましたので index.rst 1つなら十分編集する事が出来るようになったと思います。

今日から、複数のファイルを作成しSphinxでドキュメントを構造化する方法を説明します。

まずはドキュメントを構造化する際に骨となる toctree ディレクティブの説明です。 とても重要なディレクティブですので必ず読んで下さい。

ドキュメントを構造化する

ドキュメントを作成する際は、大抵、大項目をいくつか挙げ、その下に紐付く中項目、小項目をぶら下げる ツリー構造 で考える事が多いのではないでしょうか? ツリー構造 であれば見通しがよくなりドキュメントの作成を進めやすいですよね。

Sphinxの場合は ツリー構造 にする方法が2つあります。

1. toctree ディレクティブ

  • index.rst と同じディレクトリ階層に2つのreSTファイルを置くと仮定します。

    1. first.rst:

      1つ目のファイル
      ================
      * これは1つ目のファイルです。
      
    2. second.rst:

      2つ目のファイル
      ================
      * これは2つ目のファイルです。
      

    これらのファイルを index.rst に読み込ませるには下記のように記述します。

    .. toctree::
    
       first
       second
    

    html化すると このようになるはずです。

2. ディレクトリ管理

  • 単純にreSTファイルをディレクトリに小分けして格納するだけです。

    .. toctree::
    
       unyo/tejun01
       unyo/tejun02
       unyo/tejun03
       kochiku/network
       kochiku/kanshi
       kochiku/server
    

    例では index.rst と同じ階層に unyo , kochiku というディレクトリを作成し、それぞれのディレクトリ配下にreSTファイルを作成してあります。

    • unyoディレクトリ
      • tejun01.rst
      • tejun02.rst
      • tejun03.rst
    • kochikuディレクトリ
      • network.rst
      • kanshi.rst
      • server.rst

    ※例は省きます

明日はネットワーク構造(リンクの張り方)の説明をします。

※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。

]]>
Sun, 09 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/08/write_rest5.html http://advent-calendar2012.usaturn.net/2012/12/08/write_rest5.html 第8日目 Sphinxドキュメントを編集する その5

第8日目 Sphinxドキュメントを編集する その5

昨日に引き続き リテラルブロック (コードブロック) 関連の説明です。

ソースコード等をファイルから読み込む

  • 別のファイルを読み込みリテラルブロックの表示をしたい時は literalinclude ディレクティブを使います。

    記述例:

    .. literalinclude:: ../../../files/yes_or_no.sh
       :language: bash
       :linenos:

    このように表示されます。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #!/bin/bash
    
    function yes_or_no_recursive(){
        echo
        echo "Type yes or no."
        read answer
        case $answer in
            yes)
                echo -e "tyeped yes.\n"
                return 0
                ;;
            no)
                echo -e "tyeped no.\n"
                return 1
                ;;
            *)
                echo -e "cannot understand $answer.\n"
                yes_or_no_recursive
                ;;
        esac
    }
    
    yes_or_no_recursive
    
  • language オプションを付ける事によりシンタックスハイライトが表示されます。

  • linenos オプションを付ける事により行番号が表示されます。

シンタックスハイライトで使える言語

  • Sphinxのシンタックスハイライトは pygments というライブラリを使っており、次のコマンドで対応一覧が出力できます。

    > pygmentize -L lexers

出力結果

  • * (アスタリスク) の行にある文字列が highlightcode-blockliteralincludelanguage オプションの引数として使えます。
Pygments version 1.5, (c) 2006-2011 by Georg Brandl.

Lexers:
~~~~~~~
* Cucumber, cucumber, Gherkin, gherkin:
    Gherkin (filenames *.feature)
* abap:
    ABAP (filenames *.abap)
* ada, ada95ada2005:
    Ada (filenames *.adb, *.ads, *.ada)
* ahk:
    autohotkey (filenames *.ahk, *.ahkl)
* antlr-as, antlr-actionscript:
    ANTLR With ActionScript Target (filenames *.G, *.g)
* antlr-cpp:
    ANTLR With CPP Target (filenames *.G, *.g)
* antlr-csharp, antlr-c#:
    ANTLR With C# Target (filenames *.G, *.g)
* antlr-java:
    ANTLR With Java Target (filenames *.G, *.g)
* antlr-objc:
    ANTLR With ObjectiveC Target (filenames *.G, *.g)
* antlr-perl:
    ANTLR With Perl Target (filenames *.G, *.g)
* antlr-python:
    ANTLR With Python Target (filenames *.G, *.g)
* antlr-ruby, antlr-rb:
    ANTLR With Ruby Target (filenames *.G, *.g)
* antlr:
    ANTLR 
* apacheconf, aconf, apache:
    ApacheConf (filenames .htaccess, apache.conf, apache2.conf)
* applescript:
    AppleScript (filenames *.applescript)
* as, actionscript:
    ActionScript (filenames *.as)
* as3, actionscript3:
    ActionScript 3 (filenames *.as)
* aspx-cs:
    aspx-cs (filenames *.aspx, *.asax, *.ascx, *.ashx, *.asmx, *.axd)
* aspx-vb:
    aspx-vb (filenames *.aspx, *.asax, *.ascx, *.ashx, *.asmx, *.axd)
* asy, asymptote:
    Asymptote (filenames *.asy)
* awk, gawk, mawk, nawk:
    Awk (filenames *.awk)
* basemake:
    Base Makefile 
* bash, sh, ksh:
    Bash (filenames *.sh, *.ksh, *.bash, *.ebuild, *.eclass, .bashrc, bashrc, .bash_*, bash_*)
* bat:
    Batchfile (filenames *.bat, *.cmd)
* bbcode:
    BBCode 
* befunge:
    Befunge (filenames *.befunge)
* blitzmax, bmax:
    BlitzMax (filenames *.bmx)
* boo:
    Boo (filenames *.boo)
* brainfuck, bf:
    Brainfuck (filenames *.bf, *.b)
* bro:
    Bro (filenames *.bro)
* c-objdump:
    c-objdump (filenames *.c-objdump)
* c:
    C (filenames *.c, *.h, *.idc)
* cfengine3, cf3:
    CFEngine3 (filenames *.cf)
* cfm:
    Coldfusion HTML (filenames *.cfm, *.cfml, *.cfc)
* cfs:
    cfstatement 
* cheetah, spitfire:
    Cheetah (filenames *.tmpl, *.spt)
* clojure, clj:
    Clojure (filenames *.clj)
* cmake:
    CMake (filenames *.cmake, CMakeLists.txt)
* coffee-script, coffeescript:
    CoffeeScript (filenames *.coffee)
* common-lisp, cl:
    Common Lisp (filenames *.cl, *.lisp, *.el)
* console:
    Bash Session (filenames *.sh-session)
* control:
    Debian Control file (filenames control)
* coq:
    Coq (filenames *.v)
* cpp, c++:
    C++ (filenames *.cpp, *.hpp, *.c++, *.h++, *.cc, *.hh, *.cxx, *.hxx)
* cpp-objdump, c++-objdumb, cxx-objdump:
    cpp-objdump (filenames *.cpp-objdump, *.c++-objdump, *.cxx-objdump)
* csharp, c#:
    C# (filenames *.cs)
* css+django, css+jinja:
    CSS+Django/Jinja 
* css+erb, css+ruby:
    CSS+Ruby 
* css+genshitext, css+genshi:
    CSS+Genshi Text 
* css+mako:
    CSS+Mako 
* css+myghty:
    CSS+Myghty 
* css+php:
    CSS+PHP 
* css+smarty:
    CSS+Smarty 
* css:
    CSS (filenames *.css)
* cython, pyx:
    Cython (filenames *.pyx, *.pxd, *.pxi)
* d-objdump:
    d-objdump (filenames *.d-objdump)
* d:
    D (filenames *.d, *.di)
* dart:
    Dart (filenames *.dart)
* delphi, pas, pascal, objectpascal:
    Delphi (filenames *.pas)
* diff, udiff:
    Diff (filenames *.diff, *.patch)
* django, jinja:
    Django/Jinja 
* dpatch:
    Darcs Patch (filenames *.dpatch, *.darcspatch)
* dtd:
    DTD (filenames *.dtd)
* duel, Duel Engine, Duel View, JBST, jbst, JsonML+BST:
    Duel (filenames *.duel, *.jbst)
* dylan:
    Dylan (filenames *.dylan, *.dyl)
* ec:
    eC (filenames *.ec, *.eh)
* ecl:
    ECL (filenames *.ecl)
* elixir, ex, exs:
    Elixir (filenames *.ex, *.exs)
* erb:
    ERB 
* erl:
    Erlang erl session (filenames *.erl-sh)
* erlang:
    Erlang (filenames *.erl, *.hrl, *.es, *.escript)
* evoque:
    Evoque (filenames *.evoque)
* factor:
    Factor (filenames *.factor)
* fan:
    Fantom (filenames *.fan)
* fancy, fy:
    Fancy (filenames *.fy, *.fancypack)
* felix, flx:
    Felix (filenames *.flx, *.flxh)
* fortran:
    Fortran (filenames *.f, *.f90, *.F, *.F90)
* fsharp:
    FSharp (filenames *.fs, *.fsi)
* gas:
    GAS (filenames *.s, *.S)
* genshi, kid, xml+genshi, xml+kid:
    Genshi (filenames *.kid)
* genshitext:
    Genshi Text 
* glsl:
    GLSL (filenames *.vert, *.frag, *.geo)
* gnuplot:
    Gnuplot (filenames *.plot, *.plt)
* go:
    Go (filenames *.go)
* gooddata-cl:
    GoodData-CL (filenames *.gdc)
* gosu:
    Gosu (filenames *.gs, *.gsx, *.gsp, *.vark)
* groff, nroff, man:
    Groff (filenames *.[1234567], *.man)
* groovy:
    Groovy (filenames *.groovy)
* gst:
    Gosu Template (filenames *.gst)
* haml, HAML:
    Haml (filenames *.haml)
* haskell, hs:
    Haskell (filenames *.hs)
* html+cheetah, html+spitfire:
    HTML+Cheetah 
* html+django, html+jinja:
    HTML+Django/Jinja 
* html+evoque:
    HTML+Evoque (filenames *.html)
* html+genshi, html+kid:
    HTML+Genshi 
* html+mako:
    HTML+Mako 
* html+myghty:
    HTML+Myghty 
* html+php:
    HTML+PHP (filenames *.phtml)
* html+smarty:
    HTML+Smarty 
* html+velocity:
    HTML+Velocity 
* html:
    HTML (filenames *.html, *.htm, *.xhtml, *.xslt)
* http:
    HTTP 
* hx, haXe:
    haXe (filenames *.hx)
* hybris, hy:
    Hybris (filenames *.hy, *.hyb)
* iex:
    Elixir iex session 
* ini, cfg:
    INI (filenames *.ini, *.cfg)
* io:
    Io (filenames *.io)
* ioke, ik:
    Ioke (filenames *.ik)
* irc:
    IRC logs (filenames *.weechatlog)
* jade, JADE:
    Jade (filenames *.jade)
* java:
    Java (filenames *.java)
* js+cheetah, javascript+cheetah, js+spitfire, javascript+spitfire:
    JavaScript+Cheetah 
* js+django, javascript+django, js+jinja, javascript+jinja:
    JavaScript+Django/Jinja 
* js+erb, javascript+erb, js+ruby, javascript+ruby:
    JavaScript+Ruby 
* js+genshitext, js+genshi, javascript+genshitext, javascript+genshi:
    JavaScript+Genshi Text 
* js+mako, javascript+mako:
    JavaScript+Mako 
* js+myghty, javascript+myghty:
    JavaScript+Myghty 
* js+php, javascript+php:
    JavaScript+PHP 
* js+smarty, javascript+smarty:
    JavaScript+Smarty 
* js, javascript:
    JavaScript (filenames *.js)
* json:
    JSON (filenames *.json)
* jsp:
    Java Server Page (filenames *.jsp)
* kotlin:
    Kotlin (filenames *.kt)
* lhs, literate-haskell:
    Literate Haskell (filenames *.lhs)
* lighty, lighttpd:
    Lighttpd configuration file 
* llvm:
    LLVM (filenames *.ll)
* logtalk:
    Logtalk (filenames *.lgt)
* lua:
    Lua (filenames *.lua, *.wlua)
* make, makefile, mf, bsdmake:
    Makefile (filenames *.mak, Makefile, makefile, Makefile.*, GNUmakefile)
* mako:
    Mako (filenames *.mao)
* maql:
    MAQL (filenames *.maql)
* mason:
    Mason (filenames *.m, *.mhtml, *.mc, *.mi, autohandler, dhandler)
* matlab:
    Matlab (filenames *.m)
* matlabsession:
    Matlab session 
* minid:
    MiniD (filenames *.md)
* modelica:
    Modelica (filenames *.mo)
* modula2, m2:
    Modula-2 (filenames *.def, *.mod)
* moocode:
    MOOCode (filenames *.moo)
* moon, moonscript:
    MoonScript (filenames *.moon)
* mupad:
    MuPAD (filenames *.mu)
* mxml:
    MXML (filenames *.mxml)
* myghty:
    Myghty (filenames *.myt, autodelegate)
* mysql:
    MySQL 
* nasm:
    NASM (filenames *.asm, *.ASM)
* nemerle:
    Nemerle (filenames *.n)
* newlisp:
    NewLisp (filenames *.lsp, *.nl)
* newspeak:
    Newspeak (filenames *.ns2)
* nginx:
    Nginx configuration file 
* nimrod, nim:
    Nimrod (filenames *.nim, *.nimrod)
* numpy:
    NumPy 
* objdump:
    objdump (filenames *.objdump)
* objective-c, objectivec, obj-c, objc:
    Objective-C (filenames *.m)
* objective-j, objectivej, obj-j, objj:
    Objective-J (filenames *.j)
* ocaml:
    OCaml (filenames *.ml, *.mli, *.mll, *.mly)
* octave:
    Octave (filenames *.m)
* ooc:
    Ooc (filenames *.ooc)
* opa:
    Opa (filenames *.opa)
* openedge, abl, progress:
    OpenEdge ABL (filenames *.p, *.cls)
* perl, pl:
    Perl (filenames *.pl, *.pm)
* php, php3, php4, php5:
    PHP (filenames *.php, *.php[345])
* plpgsql:
    PL/pgSQL 
* postgresql, postgres:
    PostgreSQL SQL dialect 
* postscript:
    PostScript (filenames *.ps, *.eps)
* pot, po:
    Gettext Catalog (filenames *.pot, *.po)
* pov:
    POVRay (filenames *.pov, *.inc)
* powershell, posh, ps1:
    PowerShell (filenames *.ps1)
* prolog:
    Prolog (filenames *.prolog, *.pro, *.pl)
* properties:
    Properties (filenames *.properties)
* protobuf:
    Protocol Buffer (filenames *.proto)
* psql, postgresql-console, postgres-console:
    PostgreSQL console (psql) 
* py3tb:
    Python 3.0 Traceback (filenames *.py3tb)
* pycon:
    Python console session 
* pypylog, pypy:
    PyPy Log (filenames *.pypylog)
* pytb:
    Python Traceback (filenames *.pytb)
* python, py:
    Python (filenames *.py, *.pyw, *.sc, SConstruct, SConscript, *.tac)
* python3, py3:
    Python 3 
* ragel-c:
    Ragel in C Host (filenames *.rl)
* ragel-cpp:
    Ragel in CPP Host (filenames *.rl)
* ragel-d:
    Ragel in D Host (filenames *.rl)
* ragel-em:
    Embedded Ragel (filenames *.rl)
* ragel-java:
    Ragel in Java Host (filenames *.rl)
* ragel-objc:
    Ragel in Objective C Host (filenames *.rl)
* ragel-ruby, ragel-rb:
    Ragel in Ruby Host (filenames *.rl)
* ragel:
    Ragel 
* raw:
    Raw token data 
* rb, ruby, duby:
    Ruby (filenames *.rb, *.rbw, Rakefile, *.rake, *.gemspec, *.rbx, *.duby)
* rbcon, irb:
    Ruby irb session 
* rconsole, rout:
    RConsole (filenames *.Rout)
* rebol:
    REBOL (filenames *.r, *.r3)
* redcode:
    Redcode (filenames *.cw)
* rhtml, html+erb, html+ruby:
    RHTML (filenames *.rhtml)
* rst, rest, restructuredtext:
    reStructuredText (filenames *.rst, *.rest)
* sass, SASS:
    Sass (filenames *.sass)
* scala:
    Scala (filenames *.scala)
* scaml, SCAML:
    Scaml (filenames *.scaml)
* scheme, scm:
    Scheme (filenames *.scm, *.ss, *.rkt)
* scilab:
    Scilab (filenames *.sci, *.sce, *.tst)
* scss:
    SCSS (filenames *.scss)
* smalltalk, squeak:
    Smalltalk (filenames *.st)
* smarty:
    Smarty (filenames *.tpl)
* sml:
    Standard ML (filenames *.sml, *.sig, *.fun)
* snobol:
    Snobol (filenames *.snobol)
* sourceslist, sources.list:
    Debian Sourcelist (filenames sources.list)
* splus, s, r:
    S (filenames *.S, *.R)
* sql:
    SQL (filenames *.sql)
* sqlite3:
    sqlite3con (filenames *.sqlite3-console)
* squidconf, squid.conf, squid:
    SquidConf (filenames squid.conf)
* ssp:
    Scalate Server Page (filenames *.ssp)
* sv:
    systemverilog (filenames *.sv, *.svh)
* tcl:
    Tcl (filenames *.tcl)
* tcsh, csh:
    Tcsh (filenames *.tcsh, *.csh)
* tea:
    Tea (filenames *.tea)
* tex, latex:
    TeX (filenames *.tex, *.aux, *.toc)
* text:
    Text only (filenames *.txt)
* trac-wiki, moin:
    MoinMoin/Trac Wiki markup 
* urbiscript:
    UrbiScript (filenames *.u)
* v:
    verilog (filenames *.v)
* vala, vapi:
    Vala (filenames *.vala, *.vapi)
* vb.net, vbnet:
    VB.net (filenames *.vb, *.bas)
* velocity:
    Velocity (filenames *.vm, *.fhtml)
* vhdl:
    vhdl (filenames *.vhdl, *.vhd)
* vim:
    VimL (filenames *.vim, .vimrc, .exrc, .gvimrc, _vimrc, _exrc, _gvimrc, vimrc, gvimrc)
* xml+cheetah, xml+spitfire:
    XML+Cheetah 
* xml+django, xml+jinja:
    XML+Django/Jinja 
* xml+erb, xml+ruby:
    XML+Ruby 
* xml+evoque:
    XML+Evoque (filenames *.xml)
* xml+mako:
    XML+Mako 
* xml+myghty:
    XML+Myghty 
* xml+php:
    XML+PHP 
* xml+smarty:
    XML+Smarty 
* xml+velocity:
    XML+Velocity 
* xml:
    XML (filenames *.xml, *.xsl, *.rss, *.xslt, *.xsd, *.wsdl)
* xquery, xqy:
    XQuery (filenames *.xqy, *.xquery)
* xslt:
    XSLT (filenames *.xsl, *.xslt)
* yaml:
    YAML (filenames *.yaml, *.yml)

明日はSphinxドキュメントを構造化する重要な toctree ディレクティブについて説明します。

※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。

]]>
Sat, 08 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/07/write_rest4.html http://advent-calendar2012.usaturn.net/2012/12/07/write_rest4.html 第7日目 Sphinxドキュメントを編集する その4

第7日目 Sphinxドキュメントを編集する その4

今日ご紹介するのは リテラルブロック (コードブロック) の書き方です。

Sphinxで リテラルブロック とはプログラムのソースコードやコマンドライン、他にエスケープ文字やSphinxで解釈されてしまうreST表記やディレクティブ等をそのまま表示させたい時に使う方法です。

リテラルブロック

  • :: (コロン×2) の次に空行を空けてインデントをして記述します。

    記述例:

    ::
    
     def fizzbuzz(a):
         if not(a%15):
             print "fizzbuzz"
         elif not(a%5):
             print "buzz"
         elif not(a%3):
             print "fizz"
         else:
             print a
    
     map(fizzbuzz,range(1,100))
    

    このように表示されます。:

    def fizzbuzz(a):
        if not(a%15):
            print "fizzbuzz"
        elif not(a%5):
            print "buzz"
        elif not(a%3):
            print "fizz"
        else:
            print a
    
    map(fizzbuzz,range(1,100))
    
  • :: (コロン×2) の前に文字列を入れた場合は、文字列の後に : (コロン) が1つ表示されます。上記の例で使用している 記述例:: を見て下さい。

シンタックスハイライト

  • :: (コロン×2) より前に highlight ディレクティブを入れる事によりシンタックスハイライトする事ができます。

    記述例:

    .. highlight:: python
       :linenothreshold: 5
    
    記述例::
    
      def fizzbuzz(a):
        if not(a%15):
          print "fizzbuzz"
        elif not(a%5):
          print "buzz"
        elif not(a%3):
          print "fizz"
        else:
          print a
    
      map(fizzbuzz,range(1,100))
    

    このように表示されます。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    import os
    def fizzbuzz(a):
        not(a%15):
            print "fizzbuzz"
        elif not(a%5):
            print "buzz"
        elif not(a%3):
            print "fizz"
        else:
            print a
    
    map(fizzbuzz,range(1,100))
    
  • 1つのreSTファイルの頭に .. highlight:: python を入れておくと以降のリテラルブロックはPythonのシンタックスハイライトが適用されます。

  • linenothreshold というオプションを付けると行番号が表示されます。 :linenothreshold: 5 の場合は5行以上ある場合に行番号が表示されます。

  • highlightcode-block で使える言語の引数は こちら

code-blockディレクティブ

  • :: (コロン×2)highlight ディレクティブの組み合わせで、リテラルブロック+シンタックスハイライトを表示させてきましたが code-block ディレクティブのみで表示させる事も可能です。1つのreSTファイルの中に異なるシンタックスハイライトで表示させたい場合に使います。

    記述例:

    .. code-block:: awk
       :linenos:
    
       #!/usr/bin/gawk
       BEGIN{i=0
           while (i<100) {
                          i++
                          fizzbuzz(i)
                          }
       }
       function fizzbuzz(a){
           if (!index(a / 15,".")) print "FizzBuzz"
               else
                   if (!index(a / 3,".")) print "Fizz"
                       else
                           if (!index(a / 5,".")) print "Buzz"
                               else
                                   print a
       }
    

    このように表示されます。

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    #!/usr/bin/gawk
    BEGIN{i=0
        while (i<100) {
                       i++
                       fizzbuzz(i)
                       }
    }
    function fizzbuzz(a){
        if (!index(a / 15,".")) print "FizzBuzz"
            else
                if (!index(a / 3,".")) print "Fizz"
                    else
                        if (!index(a / 5,".")) print "Buzz"
                            else
                                print a
    }
    

明日は引き続き リテラルブロック 関連について説明します。

※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。

]]>
Fri, 07 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/06/write_rest3.html http://advent-calendar2012.usaturn.net/2012/12/06/write_rest3.html 第6日目 Sphinxドキュメントを編集する その3

第6日目 Sphinxドキュメントを編集する その3

今日のご紹介するのは 表 (テーブル) の書き方です。

ディレクティブについて

  • 今日からディレクティブという命令文のような物を使います。前に ..(ピリオド×2 半角スペース) 、 後に :: (セミコロン×2) を付けます。 例えば csv-table ディレクティブを使う際は .. csv-table:: のように記述します。

表について

  • ちょっと残念ですがSphinxは表があまり得意ではありません それでも表は多用しますので、便利かな?と思われる方法についてご紹介します。

CSVテーブル

  • CSV(カンマ区切り)形式を利用して表を作る事ができます。

  • csv-table ディレクティブを使用します。

    記述例:

    .. csv-table::
       :header-rows: 1
       :widths: 2, 6
    
       種別, タイトル
       サプリメント, グランド×クロス The Detonation
       サプリメント, ストレイライト
       基本ルールブック, トーキョーN◎VA The Detonation クロニクル
       サプリメント, マーダーインク
       サプリメント, ナイトウォッチ
       サプリメント, ワールドオーダー
       サプリメント, アウターエッジ
       リプレイ, ビューティフルデイ
       リプレイ, ヴァニティ・エンジェル
       リプレイ, カウンターグロウ

    このように表示されます。

    種別

    タイトル

    サプリメント

    グランド×クロス The Detonation

    サプリメント

    ストレイライト

    基本ルールブック

    トーキョーN◎VA The Detonation クロニクル

    サプリメント

    マーダーインク

    サプリメント

    ナイトウォッチ

    サプリメント

    ワールドオーダー

    サプリメント

    アウターエッジ

    リプレイ

    ビューティフルデイ

    リプレイ

    ヴァニティ・エンジェル

    リプレイ

    カウンターグロウ

  • :header-rows: オプションで表のヘッダを何行目にするかを指定できます。

  • :widths: オプションでカラムの長さを調整できます。

  • :file: オプションでファイルから読み込ませる事もできます。表の記述量が多い場合はCSVファイルを作成し読み込ませる事をお勧めします。

    記述例:

    .. csv-table::
       :file: subdir/piyo.csv

リストテーブル

  • 表にした際、横に並ぶカラムを縦に伸ばしていく記述方法です。1カラムが長くなってしまう時に非常に便利です。

  • list-table ディレクティブを使用します。

    記述例:

    .. list-table::
       :header-rows: 1
       :widths: 5,5
    
       * - 都市名
         - 読み方
       * - オーサカM○●N
         - オーサカムーン
       * - トーキョーN◎VA
         - トーキョーノヴァ
       * - ホンコンHEAVEN
         - ホンコンヘブン
       * - キャンベラAXYZ
         - キャンベラアクシズ
       * - ミトラスE△EN
         - ミトラスエデン
       * - ゴーストEYEランド
         - ゴーストアイランド
       * - サーガSATANN
         - サーガサターン

    このように表示されます。

    都市名

    読み方

    オーサカM○●N

    オーサカムーン

    トーキョーN◎VA

    トーキョーノヴァ

    ホンコンHEAVEN

    ホンコンヘブン

    キャンベラAXYZ

    キャンベラアクシズ

    ミトラスE△EN

    ミトラスエデン

    ゴーストEYEランド

    ゴーストアイランド

    サーガSATANN

    サーガサターン

  • オプションは header-rowswidths がリストテーブルと同様に使えます。

セルの中で改行する

  • | (パイプ) を使います。

    記述例:

    .. list-table::
      :header-rows: 1
      :widths: 5,5
    
      * - マイナスナンバー
        - データ
      * - -1
        - | ヒルコ
          | ミューテーション
      * - -7
        - | アラシ
          | ブレイクスルー
      * - -9
        - | カゲムシャ
          | チェンジ
      * - -18
        - | アヤカシ
          | ディスアペア

    このように表示されます。

    マイナスナンバー

    データ

    -1

    ヒルコ
    ミューテーション

    -7

    アラシ
    ブレイクスルー

    -9

    カゲムシャ
    チェンジ

    -18

    アヤカシ
    ディスアペア
  • 他のテーブルディレクトリでも同様の事ができます。

セルの中にリストを入れる

  • セルの中にリストを入れる事もできます。

    記述例:

    .. list-table::
      :header-rows: 1
      :widths: 5,5
    
      * - 傾向
        - 基本スタイル
      * - 攻撃系
        - * バサラ
          * カブト
          * カタナ
          * カゲ
          * カブトワリ
      * - 支援系
        - * ミストレス
          * マヤカシ
          * マネキン
          * タタラ
      * - 非物理攻撃系
        - * カリスマ
          * クグツ
          * ニューロ

    このように表示されます。

    傾向

    基本スタイル

    攻撃系

    • バサラ
    • カブト
    • カタナ
    • カゲ
    • カブトワリ

    支援系

    • ミストレス
    • マヤカシ
    • マネキン
    • タタラ

    非物理攻撃系

    • カリスマ
    • クグツ
    • ニューロ
  • 他のテーブルディレクトリでも同様の事ができます。

セルの結合について

  • 可能ですが グリッドテーブル という面倒な記述をする必要があるのでお勧めしません。

    記述例:

    +--------------+-----------+------------------+
    |OS                        | Client           |
    +==============+===========+==================+
    |Name          |Plan9      | Yes              |
    +--------------+-----------+                  +
    |Name          |Cho-KANJI  |                  |
    +--------------+-----------+------------------+

    このように表示されます。

    OS

    Client

    Name

    Plan9

    Yes

    Name

    Cho-KANJI

明日も引き続き、よく使う記述をご紹介していきます。

※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。

]]>
Thu, 06 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/05/write_rest2.html http://advent-calendar2012.usaturn.net/2012/12/05/write_rest2.html 第5日目 Sphinxドキュメントを編集する その2

第5日目 Sphinxドキュメントを編集する その2

昨日は reStructuredText で記述されたサンプルをコピペし HTMLドキュメント を生成しましたね。 今日は、サンプルの中で使用した reStructuredText の記法をご紹介します。

インラインマークアップ(文字の修飾)

  • 斜体にするには次のように * (アスタリスク) で囲みます。

    • 文中に入れる場合は、前後に 半角スペース を入れて下さい。

    記述例:

    *index.rst*
    *UTF-8*
    *サクラエディタ*
    *メジャーなツール*

    このように表示されます。

    index.rst
    UTF-8
    サクラエディタ
    メジャーなツール
  • 太字にするには ** (アスタリスク×2) で囲みます。

    記述例:

    **あふw**
    **Paper Plane xUI**
    **内骨格**

    このように表示されます。

    あふw
    Paper Plane xUI
    内骨格
  • リテラルに(そのまま表示)するには `` (バッククォート×2) で囲みます。

    記述例:

    ``C:\cygwin\bin\vim-nox.exe``

    このように表示されます。

    C:\cygwin\bin\vim-nox.exe

    • Windowsのパス等、エスケープ文字を含む場合に使うといいでしょう。

タイトルリファレンス

  • 書籍などの説明に使われる記法です。種別を : セミコロン で挟み、半角スペースを入れた後に名称を記述します。

    記述例:

    :ファイラ: あふw
    :エディタ: Vim
    :処理系: AutoHotKey
    :処理系: Python
    :シェル: nyaos

    このように表示されます。

    ファイラ:あふw
    エディタ:Vim
    処理系:AutoHotKey
    処理系:Python
    シェル:nyaos

番号無しリスト(箇条書き)

  • 箇条書きにする為には * (アスタリスク) - (ハイフン) + (プラス) のいずれかを文頭に置きます。

    記述例:

    * TortoiseHg
    * TortoiseBzr
    
    - Cygwin
    - gow
    
    + xyzzy
    + Gvim

    このように表示されます。

    • TortoiseHg
    • TortoiseBzr
    • Cygwin
    • gow
    • xyzzy
    • Gvim

    入れ子にする事もできます。

    記述例:

    * TortoiseHg
    * TortoiseBzr
    
      * Cygwin
      * gow
    
        * xyzzy
        * Gvim

    このように表示されます。

    • TortoiseHg
    • TortoiseBzr
      • Cygwin
      • gow
        • xyzzy
        • Gvim
  • インデントの半角スペースの数や、空行などにより表示が変化します。後日また説明します。

番号付きリスト(箇条書き)

  • 番号付きのリストを使う事もできます。番号には 半角英数 が使えます。

    記述例:

    1. Python
    2. Mercurial
    3. Sphinx
    4. Vim

    このように表示されます。

    1. Python
    2. Mercurial
    3. Sphinx
    4. Vim

    入れ子にする事もできます。

    記述例:

    A. Editor
    
       i. Vim
       ii. Emacs
       iii. SakuraEditor
       iv. ed
    
    B. Filer
    
       i. Afxw
       ii. mfiler4
       iii. VimFiler
    
    C. Launcher
    
       i. CraftLaunch
       ii. HoeKey
       iii. Bluewind

    このように表示されます。

    1. Editor
      1. Vim
      2. Emacs
      3. SakuraEditor
      4. ed
    2. Filer
      1. Afxw
      2. mfiler4
      3. VimFiler
    3. Launcher
      1. CraftLaunch
      2. HoeKey
      3. Bluewind
  • 使用するThemeにより、表示は変わります。今回は全て数字になりましたがThemeによっては、アルファベットがそのまま表示されます。

セクション(ブロックの区切り)

  • 下記記号をアンダーラインのように使う事によりセクションにする事ができます。
    • #
    • *
    • =
    • -
    • ^
    • ~

記号を使った順にレベル分けされます。

記述例:

レベル2
-------

レベル3
~~~~~~~

レベル4
"""""""

レベル2
-------

次のように表示されます。

レベル2

レベル3

レベル4

レベル2

明日も引き続き、よく使う記述をご紹介していきます。

※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。

]]>
Wed, 05 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/04/write_rest1.html http://advent-calendar2012.usaturn.net/2012/12/04/write_rest1.html 第4日目 Sphinxドキュメントを編集する その1

第4日目 Sphinxドキュメントを編集する その1

今度こそ、Sphinxドキュメントの作成に入ります。

reStructuredText を覚えよう!

  • Sphinxドキュメントは reStructuredText という記法を使用して、テキストファイル(拡張子.rst)を作成します。

reSTファイル(拡張子 .rst)の編集例

まず、実際にコピペでSphinxドキュメントを作成してみましょう。

  1. index.rst をテキストエディタで開きます。

  2. 記載してある内容を全て削除してください。 index.rstsphinx-quickstart を打てば何度でも作成できますのでバックアップは不要です。

  3. 文字コードを UTF-8 に変更して下さい。サクラエディタを利用しているのならば ここ を参考にして下さい。 Vim を使っているならば :set fenc=utf8 ですね。その他のエディタについては各自で調べて下さい。

  4. 次の内容をコピー&ペーストし、上書き保存してください。

    新しい現場での利用ツール申請
    ==============================
    
    TortoiseHg編
    -------------
    私「利用希望ツールの件ですがリスト作成しましたのでご確認お願い致します」
    
    
    :バージョン管理ツール: TortoiseHg
    :ファイラ: あふw
    :エディタ: Vim
    :ランチャ兼スクリプトエンジン: AutoHotKey
    :プログラミング言語処理系: Python
    :シェル: nyaos
    :ターミナルエミュレータ: ckw
    :UNIXライク環境: Cygwin
    :ターミナルエミュレータ: ck
    
    リーダー「ふむ、 **バージョン管理ツール** は要らないでしょう。 *ファイル名に日付* とか付けて保存しといてよ」
    
    被害にあったツール
    ~~~~~~~~~~~~~~~~~~~
    * TortoiseHg
    * 他、バージョン管理という概念
    
    Python編
    ---------
    リーダー「 **Python** って何に使うの?」
    
    私「色々と便利な拡張を入れたり手軽にスクリプトを書いたりですね、」
    
    リーダー「うーん、そんなに色々と作成してくれなくても大丈夫だから」
    
    被害にあったツール
    ~~~~~~~~~~~~~~~~~~~
    1. Mercurial
    2. Sphinx
    3. fabricその他
    4. 他、自動化という概念
    
    Vim編
    ------
    リーダー「なになにヴィ...?」
    
    私「 **ビム** です」
    
    リーダー「もう少し *メジャーなツール* は無いの?」
    
    私「 **Vim** は全世界的に使われているエディタで、秀丸の数倍、いや数千倍のユーザ数を誇りLinuxディストリの99%に同梱されている、これぞメジャー!」
    
    リーダー「 *サクラエディタ* じゃダメかな」
    
    私「はい、喜んで!」
    
    Vimはサクラエディタ以下の知名度!
    
    被害にあったツール
    ~~~~~~~~~~~~~~~~~~~
    * Vim
    
    あふw編
    ---------
    リーダー「ファイラって何?」
    
    私「エクスプローラのようにファイルを効率よく操作する為のツールです」
    
    リーダー「なるほど。しかし名前が怪しげだねぇ『あふw』って」
    
    私「確かに名前は変ですが10年以上利用しており信頼性も高いツールです」
    
    リーダー「でもねぇ、あふwって。あふwwww」
    
    被害にあったツール
    ~~~~~~~~~~~~~~~~~~~
    * あふw
    
    Cygwin編
    ---------
    私(号泣しながら)「こ、これではあまりにも非効率すぎます。せめてCygwinだけでも!」
    
    リーダー「ああCygwinとWinmergeは前例があるからいいよ」
    
    私(狂喜)「よっしゃー!Python,Mercurial,Sphinx,Vimゲット!!!」
    
    ゲットしたツール
    ~~~~~~~~~~~~~~~~~~
    A. Python
    B. Mercurial
    C. Sphinx
    D. Vim
    E. その他なんでも
    F. 番外編でCygwinのVimのパス ``C:\cygwin\bin\vim-nox.exe`` *vim-nox* が実体らしい
    
  5. 張り付けたらコマンドプロンプトより index.rst があるディレクトリに移動し make html を実行して下さい。

  6. 下記ディレクトリの html をブラウザで閲覧して下さい。

    index.rst があるディレクトリの \_build\html\index.html

    下記リンクのように表示されるはずです。

    http://usaturn.net/sample/01/

今回は、

  • インラインマークアップ(文字の修飾)
  • タイトルリファレンス
  • 番号無しリスト(箇条書き)
  • 番号付きリスト(箇条書き)
  • セクション(ブロックの区切り)

を利用してサンプルを作成しました。詳しくは明日、説明しますので、どのように書くと、どのように表示されるかを確認してみてください。

※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。

]]>
Tue, 04 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/03/writing_tool.html http://advent-calendar2012.usaturn.net/2012/12/03/writing_tool.html 第3日目 Sphinxドキュメントを書く道具

第3日目 Sphinxドキュメントを書く道具

昨日はプロジェクトを作成した直後にhtmlを生成できる事を確認しました。 今日は、やっとSphinxドキュメントの作成に入ります・・・と思わせておいて、重要なテキストエディタについての説明をさせて下さい。

テキストエディタを使おう

ドキュメント作成を始める前に、ちょっと待って下さい!あなたは普段、どんなテキストエディタを使ってますか? もしもWindows標準の メモ帳 を使っているのなら、

文字コードをUTF-8に変更できるテキストエディタ

を探して来て下さい。もしもよくわからなければ、今日は サクラエディタ の使い方を覚えましょう。

  • 秀丸、Emacs、Vim、Eclipse等々、既にお気に入りのエディタやIDEがあるのなら、今日は読み飛ばして下さい。

サクラエディタについて

サクラエディタ はWindows用のフリーのテキストエディタとして長年親しまれ、今もなお開発が活発です。 標準で色々な機能が付いていますので、Windows標準の メモ帳 を使っているならば乗り換える事をお勧めします。

サクラエディタのインストール

文字コードの変更方法

  • Sphinxドキュメントを作成するには 文字コードUTF-8 に変更する必要があります。毎回、下記の作業を行う必要がありますので必ず覚えて下さい!
  1. サクラエディタで文字コードを変更したいテキストを開き、右下に表示されている文字コードを確認して下さい。 SJIS と表示されているはずです。

    ../../../_images/writing_tool01.png
  2. メニューの ファイル -> 名前を付けて保存 をクリックします。

    ../../../_images/writing_tool02.png
  3. 文字コードセットを UTF-8 に変更します。

    ../../../_images/writing_tool03.png
    • 改行コードの変更は不要です。UNIX/Linuxの LF でも Windowsの CRLF でも問題ありません。
  4. 保存 をクリックします。

    ../../../_images/writing_tool04.png
  5. 上書きしますか?と聞かれますので はい をクリックして下さい。

    ../../../_images/writing_tool05.png
  6. 右下に表示される文字コードが UTF-8 に変わった事を確認して下さい。

    ../../../_images/writing_tool06.png

シンタックスハイライト

  • シンタックスハイライトとは特定の単語や構造に色を付けて分かり易くする機能です。 Sphinxで使用する reStructuredText という記法をサクラエディタでシンタックスハイライトする為の設定を公開されている方がいらっしゃいます。

    SakuraEditorTypeRest

    ここで有り難く使わせて頂きましょう。

  1. 下記リンク先のZIPファイルをダウンロードします。

    https://github.com/tohosaku/SakuraEditorTypeRest/archive/master.zip

  2. 任意の場所にZIPファイルの中身を展開し reST.ini が存在する事を確認して下さい。

  3. サクラエディタを起動し、メニューの タイプ別設定一覧 をクリックして下さい。

    ../../../_images/writing_tool07.png
  4. 設定(数字) をクリックしてから ** をクリックして下さい。

    ../../../_images/writing_tool08.png
    • 今回は 設定18 で進めます。
  5. 2で展開した reST.ini をクリックし 開く をクリックして下さい。

    ../../../_images/writing_tool09.png
  6. バージョンが異なります と出ますが無視して はい をクリックして下さい。

    ../../../_images/writing_tool10.png
  7. インポート条件を聞かれますので OK をクリックして下さい。

    ../../../_images/writing_tool11.png
  8. OK をクリックして下さい。

    ../../../_images/writing_tool12.png
  9. Sphinxドキュメントを開くと、色が付くようになります。

    ../../../_images/writing_tool13.png

便利なショートカット

サクラエディタのキーバインド
効果 キー
もとに戻す Ctrl + z
やり直し Ctrl + y
一行切り取り Shift + Delete
一行コピー Ctrl + c
現在行を複製 F10
先頭(左側)の空白を削除 Alt + l
末尾(右側)の空白を削除 Alt + r
矩形選択開始 Shift + F6
矩形貼り付け Shift + F9
   
  • 便利なショートカットや機能はまだまだ沢山ありますので、時間のある時にメニューバーを1つずつ開いてじっくり調べてみて下さい。

さあ、明日はSphinxドキュメントを書く為に必要な reStructuredText の説明です。

※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。

]]>
Mon, 03 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/02/start_sphinx_project.html http://advent-calendar2012.usaturn.net/2012/12/02/start_sphinx_project.html 第2日目 Sphinxでドキュメント作成を開始する

第2日目 Sphinxでドキュメント作成を開始する

2日目はドキュメント作成用のひな形となる プロジェクト を作成しhtmlを生成します。

プロジェクト編集の基本的な流れ

  • 下記の流れでドキュメント作成を進めます。
    1. Sphinxのプロジェクトを作成
    2. テキストエディタでreSTファイル(拡張子 .rst)の作成、編集
    3. make html コマンドを打って、htmlファイルの生成

Sphinxのプロジェクトを作成する

  • Sphinxでドキュメント作成を始める際は、作りたいドキュメント毎に プロジェクト を作成します。
  1. コマンドプロンプトを起動し、下記のような作業ディレクトリを作成します。

    作業フォルダを C:\work\sphinx\testproject に作成する場合

    > mkdir C:\work\sphinx\testproject\
    ※エクスプローラから作っても構いません。
  2. カレントを作成したディレクトリにします。

    C:\work\sphinx\testproject の場合

    > cd \work\sphinx\testproject\
  3. プロジェクトを作成するコマンドを打ち込みます。

    > sphinx-quickstart
  4. 対話形式で進むので必要に応じて入力をします。必須なのは 4項目 だけですので、あとはEnterキーを押すだけです。

    C:\work\sphinx\testdir>sphinx-quickstart
    Welcome to the Sphinx 1.1.3 quickstart utility.
    
    Please enter values for the following settings (just press Enter to
    accept a default value, if one is given in brackets).
    
    Enter the root path for documentation.
    > Root path for the documentation [.]:

    何も指定せずにEnterキーを押します。

    You have two options for placing the build directory for Sphinx output.
    Either, you use a directory "_build" within the root path, or you separate
    "source" and "build" directories within the root path.
    > Separate source and build directories (y/N) [n]:

    何も指定せずにEnterキーを押します。

    Inside the root directory, two more directories will be created; "_templates"
    for custom HTML templates and "_static" for custom stylesheets and other static
    files. You can enter another prefix (such as ".") to replace the underscore.
    > Name prefix for templates and static dir [_]:

    何も指定せずにEnterキーを押します。

    The project name will occur in several places in the built documentation.
    > Project name: learning

    プロジェクト名を指定しEnterキーを押します。※例は learning という名前を指定

    > Author name(s): hoge

    作成者の名前を指定しEnterキーを押します。※例は hoge という名前を指定

    Sphinx has the notion of a "version" and a "release" for the
    software. Each version can have multiple releases. For example, for
    Python the version is something like 2.5 or 3.0, while the release is
    something like 2.5.1 or 3.0a1.  If you don't need this dual structure,
    just set both to the same value.
    > Project version: 0.1

    プロジェクトのバージョン番号を指定しEnterキーを押します。※例は 0.1 を指定しています。

    > Project release [0.1]:

    次にリリース番号を聞かれますので拘りがなければ、そのままEnterキーを押して同じ番号にして下さい。

    この後は対話形式が終わるまでEnterキー連打で構いません。

    The file name suffix for source files. Commonly, this is either ".txt"
    or ".rst".  Only files with this suffix are considered documents.
    > Source file suffix [.rst]:

    何も指定せずにEnterキーを押します。

    One document is special in that it is considered the top node of the
    "contents tree", that is, it is the root of the hierarchical structure
    of the documents. Normally, this is "index", but if your "index"
    document is a custom template, you can also set this to another filename.
    > Name of your master document (without suffix) [index]:
    
    Sphinx can also add configuration for epub output:
    > Do you want to use the epub builder (y/N) [n]:

    何も指定せずにEnterキーを押します。

    Please indicate if you want to use one of the following Sphinx extensions:
    > autodoc: automatically insert docstrings from modules (y/N) [n]:

    何も指定せずにEnterキーを押します。

    > doctest: automatically test code snippets in doctest blocks (y/N) [n]:

    何も指定せずにEnterキーを押します。

    > intersphinx: link between Sphinx documentation of different projects (y/N) [n]:

    何も指定せずにEnterキーを押します。

    > todo: write "todo" entries that can be shown or hidden on build (y/N) [n]:

    何も指定せずにEnterキーを押します。

    > coverage: checks for documentation coverage (y/N) [n]:

    何も指定せずにEnterキーを押します。

    > pngmath: include math, rendered as PNG images (y/N) [n]:

    何も指定せずにEnterキーを押します。

    > mathjax: include math, rendered in the browser by MathJax (y/N) [n]:

    何も指定せずにEnterキーを押します。

    > ifconfig: conditional inclusion of content based on config values (y/N) [n]:

    何も指定せずにEnterキーを押します。

    > viewcode: include links to the source code of documented Python objects (y/N) [n]:

    何も指定せずにEnterキーを押します。

    A Makefile and a Windows command file can be generated for you so that you
    only have to run e.g. `make html' instead of invoking sphinx-build
    directly.
    > Create Makefile? (Y/n) [y]:

    何も指定せずにEnterキーを押します。

    > Create Windows command file? (Y/n) [y]:

    何も指定せずにEnterキーを押します。

    Creating file .\source\conf.py.
    Creating file .\source\index.rst.
    Creating file .\Makefile.
    Creating file .\make.bat.
    
    Finished: An initial directory structure has been created.
    
    You should now populate your master file .\source\index.rst and create other documentation
    source files. Use the Makefile to build the docs, like so:
       make builder
    where "builder" is one of the supported builders, e.g. html, latex or linkcheck.
  5. これでプロジェクトの作成は終了です。いくつかのディレクトリとファイルが生成されているので確認してください。コマンドプロンプトでdirコマンドを打ちましょう。 ※もちろんエクスプローラで確認しても構いません。

    C:\work\sphinx\testdir>dir /b
    
    conf.py
    index.rst
    make.bat
    Makefile
    _build
    _static
    _templates

HTMLを生成する

  1. 最後にHTMLを生成してみましょう。コマンドプロンプトで make html コマンドを打ちます。

    C:\work\sphinx\testdir>make html
    
    Making output directory...
    Running Sphinx v1.1.3
    loading pickled environment... not yet created
    building [html]: targets for 1 source files that are out of date
    updating environment: 1 added, 0 changed, 0 removed
    reading sources... [100%] index
    
    looking for now-outdated files... none found
    pickling environment... done
    checking consistency... done
    preparing documents... done
    writing output... [100%] index
    
    writing additional files... genindex search
    copying static files... done
    dumping search index... done
    dumping object inventory... done
    build succeeded.
    
    Build finished. The HTML pages are in _build/html.
  2. 正常に終了していれば \_build\html 配下にhtmlが生成されているはずです。

    C:\work\sphinx\testdir>dir /b _build\html
    
    .buildinfo
    genindex.html
    index.html
    objects.inv
    search.html
    searchindex.js
    _sources
    _static
  3. 続けて index.html をWebブラウザで開いてみましょう。コマンドプロンプトから _build\html\index.html と打てばWebブラウザでindex.htmlが開きます。

    C:\work\sphinx\testdir>_build\html\index.html
    alternate text

以上でプロジェクトの作成からhtmlの生成まで一通り流しました。明日からはいよいよドキュメントの編集に入ります。

※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。

]]>
Sun, 02 Dec 2012 00:00:00 +0900
http://advent-calendar2012.usaturn.net/2012/12/01/first_time.html http://advent-calendar2012.usaturn.net/2012/12/01/first_time.html 第1日目 Sphinx環境を構築しよう!

第1日目 Sphinx環境を構築しよう!

初日は私が普段Windows上でどのようにSphinx環境を構築しているかをご紹介します。

Pythonのインストール

  • SphinxはPythonの拡張モジュールなので、まずPythonのインストールが必要です。 下記ページよりインストーラーをダウンロードします。

  • Windows用インストーラ python-2.7.3.msi

    http://www.python.jp/Zope/download/pythoncore

ノート

Windowsの64bit(x64)版の場合も、上記のバージョンをダウンロードして下さい。

パッケージ管理ツール easy_install のインストール

  1. Pythonの拡張モジュール easy_installコマンド をインストールします。

    1. 下記をダウンロードします。

      http://python-distribute.org/distribute_setup.py

    2. distribute_setup.py をPythonをインストールしたディレクトリに配置します。

      標準では下記ディレクトリに配置して下さい。

      C:\Python27\
    3. コマンドプロンプトを起動し、 distribute_setup.py を配置したディレクトリへ移動します。

      > cd \Python27
    4. Pythonで distribute_setup.py を実行します。

      > python.exe distribute_setup.py
    5. 大量のメッセージが流れるが、最後に下記のようなメッセージが出ていれば成功。

      Creating C:\Python27\Lib\site-packages\setuptools-0.6c11-py2.7.egg-info
      Creating C:\Python27\Lib\site-packages\setuptools.pth

環境変数PATHの設定

  1. コントロールパネルより システムとセキュリティ を選択します。

  2. システム を選択します。

  3. システムの詳細設定 を選択します。

  4. システムのプロパティが開くので、 詳細設定 タブを選択します。

  5. 右下の 環境変数 を選択します。

  6. 環境変数PATHにディレクトリを追加します。

    1. 今Windowsにログインしているアカウントに Admin権限が有る 場合

      • ユーザー環境変数(上側)の 新規 を選択します。

      • 新しいユーザー変数 に下記のように入力します。

        変数名:Path
        変数値:C:\Python27;C:\Python27\Scripts
    2. 今Windowsにログインしているアカウントに Admin権限が無い 場合

      • システム環境変数(下側)の変数 Path を選択します。

      • 編集 を選択し下記のようにディレクトリ名を追加します。

        変数値:C:\Python27;C:\Python27\Scripts
  7. 入力し終わったら全てのウィンドウを OK を押下して閉じて下さい。

  8. Windowsをリブートします。

  9. コマンドプロンプトよりバージョンを確認します。

    > python -V
        Python 2.7.3 ※このように出力されればOK

ノート

バージョン確認に失敗した場合は、コマンドプロンプトに path と打ち込みPython27のパスが入っているか確認して下さい。

パッケージ管理ツール pip のインストール

  • Pythonの拡張モジュール pip をインストールします。

    • コマンドプロンプトを開き下記コマンドを実行します

      easy_install -U pip

Sphinxのインストール

  1. コマンドプロンプトを起動しインストールコマンドを実行します。

    pip install sphinxjp.themes.bizstyle -U
  2. 大量のメッセージが出力されるが下記メッセージが最後にでれば問題ありません。

    Finished processing dependencies for sphinx

この手順では私がよく利用させて頂いている @shkumagaiさん作sphinxjp.themes.bizstyle をSphinxとその関連パッケージを同時に入れています。

さあ、これでSphinx環境が出来上がりました。明日はSphinxでドキュメントの作成を開始しましょう。

ノート

手軽にSphinxを始めたい場合は @shimizukawaさん が作成された Windowsへのインストール(スタンドアロンインストール) が良いかもしれません。

ノート

他に、 @GoingMyWayNetさん の書かれた Sphinx on windows (Admin権限なし版) も非常に参考になります。

※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。

]]>
Sat, 01 Dec 2012 00:00:00 +0900