警告
この記事は古い為 sphinx-users.jp を参照してください。
第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))
このように表示されます。
1import os 2def fizzbuzz(a): 3 not(a%15): 4 print "fizzbuzz" 5 elif not(a%5): 6 print "buzz" 7 elif not(a%3): 8 print "fizz" 9 else: 10 print a 11 12map(fizzbuzz,range(1,100))
1つのreSTファイルの頭に
.. highlight:: pythonを入れておくと以降のリテラルブロックはPythonのシンタックスハイライトが適用されます。linenothresholdというオプションを付けると行番号が表示されます。:linenothreshold: 5の場合は5行以上ある場合に行番号が表示されます。highlightやcode-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#!/usr/bin/gawk 2BEGIN{i=0 3 while (i<100) { 4 i++ 5 fizzbuzz(i) 6 } 7} 8function fizzbuzz(a){ 9 if (!index(a / 15,".")) print "FizzBuzz" 10 else 11 if (!index(a / 3,".")) print "Fizz" 12 else 13 if (!index(a / 5,".")) print "Buzz" 14 else 15 print a 16}
明日は引き続き リテラルブロック 関連について説明します。
※ このアドベントカレンダーについては このアドベントカレンダーについて を参照して下さい。