このエントリーをはてなブックマークに追加

sphinx-dev MLから

sphinx-dev MLに投稿されてる役に立つメールを訳して紹介してみます。

ただ、紹介するだけで、自分でちゃんと実行できるかは試していません。あしからず。(動かないよ!というのがあれば教えてください)

code-blockがちゃんとハイライトされないんだけど

元スレ1:

guessを使ってみたら?

例:

.. code-block:: guess

   pygmentsが勝手に推測してくれます。
   でも、pygmentsが理解できるものだけです。

自分でテーマ作ってその中でstyleを段落に適用したいんだけど

元スレ2:

containerを使うといいよ。

http://docutils.sourceforge.net/docs/ref/rst/directives.html#container

例:

.. container:: my-class

   ネストされた段落1

   ネストされた段落2

あるいは、noteやwarningを使うと、自分でクラスを指定できるよ。

http://sphinx.pocoo.org/markup/para.html

PDFにすると余分なページが出来るんだけど

元スレ3:

stack over flowにあるよ。

source/conf.py の "Options for LaTeX output" をこう書くといいよ。

latex_elements = {
  'classoptions': ',oneside',
  'babel': '\\usepackage[english]{babel}'
}

BibTeXから文献リストを取って来たいんだけど

元スレ4:

ubuntu 12.04でmake latexpdfが無効なページを作るんだけど

元スレ5:

LaTeXの新しいバージョンを入れたら直ったよ。

ここにやり方を書いたよ。

faviconがChromeで表示されないんだけど

元スレ6:

今年の最初の方にChrome(と多分FireFoxも)はアドレスバーにfaviconを表示するのをやめたよ。代わりにタブに表示するね。

アドレスバーに表示するにはこんな設定をしているよ。

  • faviconファイル

    • .static/favicon.ico
  • conf.py

    • html_static_path = ['.static', 'img']
    • html_favicon = 'favicon.ico'
  • HTMLの<head>に以下を追加

    <link rel='shortcut icon' href='_static/favicon.ico'/>
    

pngmathで透過pngを使いたいんだけど

sphinxのドキュメントにはこう書いてあるけど動かないんだ。

pngmath_dvipng_args = ['-gamma 1.5', '-D 110', '-bg Transparent']

元スレ7:

こうしたら動くよ。

pngmath_dvipng_args = ['gamma', '1.5', '-D', '110', '-bg', 'Transparent']

(注意: 2012-10-13現在まだdocumentは直ってないようです)

MiKTeXでPDFが作れないんだけど

MiKTeXWindows用のLaTeXツールのようです

元スレ8:

まず、make.exeが必要。

  • MSYS/Mingw tools at:http://www.mingw.org/wiki/MSYS

その後、以下のようにします。

  1. Sphinxでmakeを実行します。 make.bat latex
  2. Texworksを開きます (http://www.tug.org/texworks/)
  3. File > Open > myproject.tex
  4. ドロップダウンメニューから pdflatex+makeindex+bibtex を選びます
  5. "play" ボタンを押します
  6. ストップしたりエラーしても Continue を押します
  7. PDFのプレビューが表示されます
  8. 中身をチェックします。自分が見ると TOC, index, 参考文献が更新されないときがあります。そういう場合は緑のplayボタンを押してPDFを再生成します
  9. プレビューウィンドウで File > Save ... myproject.pdf

図にキャプションを付けてリンクを貼りたい

元スレ9:

こう書けばいいよ

こちら :ref:`link title <figure>`.

.. figure:: _static/UnixFileSystem.jpg
   :width: 50%
   :alt: Unix file system
   :align: center
   :name: figure

   図のキャプション

図のキャプションに番号を振りたい

(上から派生しましたので別にしてみました)

この拡張を使うといいよ。

sphinx-numfig

config.pyにはこんな感じ。

extensions = ['sphinx.ext.numfig']

# numfig:
number_figures = True
figure_caption_prefix = "図:"

実際に使うにはこんな感じ。

こちら :num:`link text #exfigure`.

.. _exfigure:


.. figure:: _static/UnixFileSystem.jpg
   :width: 50%
   :alt: Unix file system
   :align: center

   図のキャプション

ただ、以下の二つは気をつける必要がある。

  1. name:とは一緒に使えない
  2. buildする前にdoctreeを消す必要がある(make cleanが必要)

ついでにemacs用のnumfigを使う関数を書いたよ。

(defun rst-bk-numfigs (Fig Caption)

  "Inserts numbered firgure in sphinx, using numfig extension:
https://bitbucket.org/arjones6/sphinx-numfig"
  (interactive
  (list
    (file-name-nondirectory (read-file-name "Image file: " (if (file-exists-p "_static")
                                       "_static"
                                      default-directory) ))
    (read-string "Caption: ") ))

  (let (FigStripped FigStrippedLowerCase)


    (setq FigStripped
          (replace-regexp-in-string "[^a-zA-Z]" ""
                                    (file-name-sans-extension Fig)))

    (with-temp-buffer
      (insert FigStripped)
      (downcase-region (point-min) (point-max))
      (setq FigStrippedLowerCase (buffer-substring-no-properties (point-min) (point-max))))

    (insert (format "\
:num:`Fig. #%s`

.. _%s:

.. figure:: _static/%s
   :width: 50%s
   :alt: %s
   :align: center

   %s
" FigStrippedLowerCase FigStrippedLowerCase Fig "%" Fig Caption)))
  (search-backward-regexp "`")
  (forward-char 1))

縦書きにしたい

元スレ10:

cssをこう。

span.vertical {
    writing-mode:tb-rl;
    -webkit-transform:rotate(270deg);
    -moz-transform:rotate(270deg);
    -o-transform: rotate(270deg);
    display:block;
    width:20px;
    height:20px;
}

rstはこう。

.. role:: vertical

:vertical:`test`

テーブルをカラフルにしたい

元スレ11:

/* Table: */

th {
    background-color: #ede;
}

/* alternating colors in table rows */
table.docutils tr:nth-child(even) {
    background-color: #F3F3FF;
}
table.docutils tr:nth-child(odd) {
    background-color: #FFFFEE;
}

table.docutils tr {
    border-style: solid none solid none;
    border-width: 1px 0 1px 0;
    border-color: #AAAAAA;
}