0

Python でペリカンを使用して静的ページを生成しています。Pygment でマークダウンを使用してコード ブロックを強調表示することは問題ありませんが、インラインの強調表示に関しては大きな違いがあります。

マイページをご確認ください。ページは暗い背景になっていますが、後ろの目盛り ` が付いたインライン ハイライトは白い背景になっています。

マークダウンコードは

To clearify what exactly the command returns, 
one can use `pack('>i', -2500).encode('hex')`{.python}. 
Or I have a more complex solution like, `''.join(r'\x%02X' 
% ord(ch) for ch in src)`{.python}.

ここでの質問は、インライン ハイライト スタイルを定義する方法です。

ペリカンテーマの pygments default.css ファイルを変更しようとしましたが、うまくいきませんでした。

関連リンクがいくつか見つかりました:

  1. GitHub マークダウンでのインライン コード構文の強調表示?
  2. reStructuredText でのインライン コードの強調表示
4

2 に答える 2

1

Pelican はPython-MarkdownCodeHilite拡張機能を使用して、コードブロックを Pygments に渡します。コードブロックにはインライン コード スニペットは含まれないことに注意してください。実際、インライン コードの強調表示をサポートする Markdown パーサーは知りません。一般に、インライン コード スニペットは短すぎて効果的に強調表示できず、ほとんどの場合、Pygments の言語推測アルゴリズムを利用するには短すぎます。

Attribute List Extensionを使用して Markdown に言語を通知しようとしたようです。ただし、<code>コード スニペットをラップする HTML タグにクラスを追加するだけです。CodeHilite 拡張機能はブロックでのみ機能するため、ブロックを確認することも、Pygments に渡すこともありません。

利用可能ないくつかの異なるオプションがあります (それぞれに必要な作業量が増えます)。

  1. ブロックと一致するように背景とテキストの色を変更する独自の CSS を作成できます。構文の強調表示は得られませんが、インライン コード スニペットは少なくともテーマに一致します。ここで言語を定義する必要はありません。

  2. JavaScript コードの強調表示ライブラリを使用して、属性リスト拡張で定義した言語に基づいてすべてのコード スニペットを強調表示できます。ただし、これには JS ライブラリの CSS を再定義して、Pygments の出力と一致させる必要がある場合があります。

  3. ブロックに加えてインラインコードスニペットも強調表示する独自の Python-Markdown 拡張 (またはおそらく CodeHilite をフォーク) を作成できます。

個人的には上記(1)をお勧めします。実際、ページを見ると、コード ブロックに次のように定義されているように見えます。

.highlight pre, .highlighttable pre {
    background: #272822;
    color: #f8f8f2;
}

つまり<pre>、「highlight」クラス (または「highlighttable」クラス) が割り当てられた親を持つ要素は、それらの色で表示されます。インライン コードに同じ色を割り当てるには、次のルールを追加します。

code {
    background: #272822;
    color: #f8f8f2;
}

Pelican テーマ ( http://vfxware.com/theme/css/bootstrap.slate.min.cssにあるようです) で定義されたスタイルの後に必ず定義してください。

確かに、既存の CSS を変更することはできますが、後で新しいバージョンのテーマに更新したり、テーマを完全に変更したりする場合は、独自のルールを再定義する必要があります。したがって、私は独自の一連のオーバーライドを別のファイルに定義するのが好きです。このファイルは常に最後にロードされるようにします。

于 2014-12-29T15:57:36.437 に答える