質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.48%

  • Sphinx

    7questions

    Sphinxは、reStructuredText記法で記述されたテキストファイルをHTML/PDF/epubといった様々な形式へ変換するドキュメントツールです。Pythonの公式ドキュメントを始め、多くのプロジェクトがSphinxを用いて記述されています。

Sphinx文書のadmonitionカスタマイズ

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 424

matsuand

score 59

実現したいこと=質問

Sphinx 初心者ながら、Sphinx ドキュメント(日本語)を構築しています。今はまず html ドキュメントへの変換作業を行っているところです。

sphinx-build の引数として -D language=ja とすることで、自分で記述した文章以外で、所定の箇所も日本語化されています。その中の代表的なものが admonition であり、"warning" は「警告」、"note" は「注釈」と表示されています。

この admonition をカスタマイズして、例えば "warning" は「注意」、"note" は「メモ」といったように変更したいと思っていますが、どこでどのように設定できるのかがわかりません。これを教えていただきたく思います。

例えば docbook-xml、docbook-xsl の場合、XMLファイル内にて lang="ja" を指定して、ja.xsl を読み込むようにすれば、ja.xsl 内にて admonition に対する定義が含まれていて、これをカスタマイズする方法があることを承知しています。こういったことが、Sphinx ドキュメント構築においてできないか、と思っているところです。

ご教示よろしくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hotta

    2017/09/14 12:22

    使用 OS と Sphinx のバージョン、およびインストール方法を追記願います。

    キャンセル

  • matsuand

    2017/09/14 16:47

    Debian 9.1.0、Sphinx (sphinx-build) 1.4.9 です。apt-get install python-sphinx による標準インストール。

    キャンセル

回答 2

check解決した方法

0

強引に(とりあえず)自己解決しました・・・ もっとスマートな方法、ないでしょうか?・・・

sphinx/locale/init.py に以下を発見:

admonitionlabels = {
    'attention': l_('Attention'),
    'caution':   l_('Caution'),
    'danger':    l_('Danger'),
    'error':     l_('Error'),
    'hint':      l_('Hint'),
    'important': l_('Important'),
    'note':      l_('Note'),
    'seealso':   l_('See also'),
    'tip':       l_('Tip'),
    'warning':   l_('Warning'),
}  # type: Dict[unicode, unicode]

sphinx/locale/ja/LC_MESSAGES/sphinx.po に以下:

#: sphinx/locale/__init__.py:198
msgid "Attention"
msgstr "注意"
...
#: sphinx/locale/__init__.py:204
msgid "Note"
msgstr "注釈"

これより強引に、自文書内の conf.py 最終に以下を定義:

from sphinx.locale import admonitionlabels
admonitionlabels['note'] = u'メモ'
admonitionlabels['warning'] = u'注意'

以下の index.rst 文書を処理し、所望の結果を得ました:

テスト
======
.. note:: これは note です。
   デフォルトでは「注釈」と表記されます。
.. warning:: これは warning です。
   デフォルトでは「警告」と表記されます。

もっと標準的な方法ってないのでしょうか・・・

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

CentOS 7.3 + python-sphinx-1.1.3-11.el7.noarch と少し古い環境ですが、
http://www.sphinx-doc.org/ja/stable/intl.html
の通りにやったらうまくいったようです。
一応ログを載せておきます。

$ sudo pip install sphinx-intl
$ mkdir admonition
$ cd admonition
$ sphinx-quickstart (適当に設定)
$ mkdir -p locale/ja
$ vi conf.py
$ diff -Nu /tmp/conf.py conf.py
--- /tmp/conf.py        2017-09-15 08:45:29.837151366 +0900
+++ conf.py     2017-09-15 08:45:57.780002232 +0900
@@ -64,6 +64,8 @@
 # This is also used if you do content translation via gettext catalogs.
 # Usually you set "language" from the command line for these cases.
 language = 'ja'
+locale_dirs = ['locale/']
+gettext_compact = False

 # List of patterns, relative to source directory, that match files and
 # directories to ignore when looking for source files.
$ vi index.rst ("warning""note" を追加)
$ make gettext
$ sphinx-intl update -p _build/gettext -l ja
Create: locale/ja/LC_MESSAGES/index.po
$ vi locale/ja/LC_MESSAGES/index.po
$ diff /tmp/index.po locale/ja/LC_MESSAGES/index.po
26c26
< msgstr ""
---
> msgstr "警告だよ"
30c30
< msgstr ""
---
> msgstr "注釈だよ"index.po が JIS になっていたので UTF-8 に変換)
$ sphinx-intl build( 1.2.x 以前の場合のみ必要らしい)
$ make -e SPHINXOPTS="-D language='ja'" html
$ w3m -dump_source _build/html/index.html | grep 警 告
<p>警告だよ</p>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/15 09:27 編集

    質問の趣旨が伝わっていないように思いますが・・・
    以下のように index.rst を生成して処理したときに、「注釈」と出力される結果を、例えば「メモ」に変えたい、という質問です。po ファイルの msgid に、msgid "注釈" という行が作り出されますか? 作られないと思うのですが。

    cat > index.rst << "EOF"
    テスト
    ======

    .. note:: これは note です。
    デフォルトでは「注釈」と表記されます。
    EOF

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    tkinterでタブを実装

    python3のtkinterを使ってブラウザのようなタブを実装したいのですが、どうすれば良いでしょうか? ttkを使えば良さそうなことは分かりますがいまいち構文が分かりません。

  • 解決済

    文字色について

    intent = new Intent().setClass(this, Tab2.class);         spec = tabHost.newTabSpec("Tab2"

  • 解決済

    JUnit用に読み込むメッセージプロパティファイルを動的に変えたい

    MessageSource ReloadableResourceBundleMessageSource を使って メッセージ内容を読み込んでいますが、 読み込む対象のメッセージプロ

  • 解決済

    google spreadsheet Importxmlについて質問です。

    <?xml version="1.0" encoding="UTF-8"?> <countset xmlns="http://www.sitemaps.org/schemas/si

  • 解決済

    JSPでデータが表示できません

    前提・実現したいこと 閲覧有難う御座います。 eqlipceを使用しJSPとservletとmysqlで システムを制作しています。 ある画面の備考欄を表示させたいのですが

  • 解決済

    UPDATEされない....

    PDOを使用してユーザーデータの更新と新規作成をしようと思ったのですがUpdate処理で実行してもUpdateされず行き詰まってしまいどうしたら良いのでしようか? if($t

  • 解決済

    fscanfがうまく動作しない

    前提・実現したいこと テキストファイルから情報を取り込みたい。 中身は Dbrenlhsij,11,162.2,55.9 Ijnpwthy,14,163.8,62.6 Csaztv

  • 解決済

    ヒストグラムの正規化実行時のエラー

    matplotlibでヒストグラムの正規化を行ったところ、グラフ表示と共に、下記のことが表示されました。 Pythonは3.6のバージョンです。アップデートか何かした方がよろしいで

同じタグがついた質問を見る

  • Sphinx

    7questions

    Sphinxは、reStructuredText記法で記述されたテキストファイルをHTML/PDF/epubといった様々な形式へ変換するドキュメントツールです。Pythonの公式ドキュメントを始め、多くのプロジェクトがSphinxを用いて記述されています。