2016-11-14 10 views
2

Sphinxを使用しているときにインラインコードスニペットを強調表示しようとしています。Sphinx(reST)のインラインコードハイライト

私はInline code highlighting in reStructuredTextで提供された解決策を見てきましたが、それは私のためには機能しません。私はSphinx 1.4.8を使用しています。

ハイライトされるインラインコードをマーキングするもう1つのシンプルでエレガントな方法はありますか?

真の言語ベースのハイライトをサポートする完全な解決策がない場合、私はインラインコードに黒以外の色を設定することができてうれしいです。それは可能ですか?

EDIT1: はここに私のコードです:

.. role:: py(code) 
    :language: python 

here is some inline code :py:`def func():` 

テキスト行は、ここですべての 別の色の黒の代わりに、キーワード「DEF」にレンダリングされます。強調表示は、コードブロックではなくインラインでは完全に機能します。

EDIT2:

Humbalanの提案は、私はほとんどこの問題を解決する助けました。 私は$SPHINX_PROJECT_DIR/_templates/layout.htmlに次の追加:

{# layout.html #} 
{# Import the theme's layout. #} 
{% extends "!layout.html" %} 
{% set css_files = css_files + ['_static/style.css'] %} 

その後、私はspan.preを上書きするには、以下の内容で$SPHINX_PROJECT_DIR/_templates/style.cssを作成しました:

span.pre{ 
    color: red; 
    border: 1px solid black; 
    padding: 2px; 
    background: #feeaea 
} 

私はまだなく、かなりそこにソリューションに近いんだけど。私は今、出力を以下の取得:

enter image description here

+1

が何を意味するか "それは動作しません" と、あなたのコードを投稿し説明してください。 – Humbalan

+0

あなたの "Edit2"はあなたが*望んでいないものを再度教えてくれます。あなたが望む結果を記述してください。私の視点からは、赤いテキスト、テキストとの距離が2pxの黒い境界線、定義された色のバックグラウンドなど、あなたがプログラムしたことがあります。 – Humbalan

答えて

0

をこれは私が私のドキュメントにコードスニペットを強調表示する方法を示します。

.. sourcecode:: python 

    a code line 
    another code line 

んが、あなたを助けていますか?


編集:私はあまりにも答えに興味がありますよう

は、私はいくつかの研究をしました。私にとっては、灰色のコードがいくつか(またはすべて?)テーマでデフォルトであると思われます。スフィンクスドックbizstyleです。あなたは(Firefoxのデバッガと例えば)スニペットのhtmlコードをチェックする場合は、sphinxdocここ

<p>here is some inline code 
<code class="code py python docutils literal"> 
<span class="keyword"> 
    <span class="pre">def</span> 
</span> 
<span class="name function"> 
    <span class="pre">func</span> 
</span> 
<span class="punctuation"> 
    <span class="pre">():</span> 
</span> 
</code> 
</p> 

を使用する場合は、あなたが「DEF」のスタイルを定義することができることを見ることができる」ための別のものをこれを取得しますあなたのスフィンクスプロジェクトのlayout.cssに "func"と3番目の "():"を追加します。例:

code.py.python.docutils.literal { background-color: Bisque; padding: 5px; border: 1px solid maroon; } 
code.py.python.docutils.literal span.keyword { background-color: red; color:white; } 
code.py.python.docutils.literal span.name.function { background-color: pink; color:green; } 
code.py.python.docutils.literal span.punctuation { background-color: yellow; color:brown; } 

結果:

syntax highlight with role

+0

返事をありがとう。 残念ながら。私が言ったように、ハイライトはコードブロックで意図したとおりに動作しますが、インラインコードには通常、2つの末尾のバッククォートでマークされた色付きのテキストを取得したいと考えています。 –

+0

OK、わかりました。 :py: 'myfunc'で強調表示した場合、ハイライト表示は実際には名前が" myfunc "の文書化されたメソッド(または関数)がある場合にのみ機能します。そして、このメソッドが別のモジュールにある場合は、py:meth: 'module.class.myfunc'のようなパスを指定する必要があります。 – Humbalan

+0

申し訳ありませんが、 "myfunc"を含むキャラクターを表示する方法がわかりませんでした。だから私はあなたのexampelのような構文ですグレーのバックグラウンドを持つテキストを参照してください ":py:..." – Humbalan