ココログでpygmentsを使ってコードのハイライト
from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import HtmlFormatter
def py2htmlcss(codeblock, basename='test', style='monokai'):
with open(basename+'.html', 'w') as htmlfile:
highlight(codeblock, PythonLexer(), HtmlFormatter(), htmlfile)
with open(basename+'.css', 'w') as cssfile:
CSS = HtmlFormatter(style=style).get_style_defs('.highlight')
cssfile.write(CSS)
Pythonのライブラリであるpygmentsで出てきたHTMLとCSSを使ってココログに綺麗にコードを貼っつけるtestです。ハイライトされてない。。。
追記。そうか、HtmlFormatter(full=True)でフルオプションを指定して、スタイル指定を含んだHTMLを出力して、スタイルの部分をブログのサブタイトル(キャッチフレーズ)の部分に埋め込めばいいのか。(紆余曲折しましたが、ちゃんとカスカムCSSからできました。)
追記2。pygmentize.exeを使えば、こんなコード書かなくともよいのですね。まだmonokaiの背景色のグレーっぽい色が来ないなぁ。
追記3 HtmlFormatter(style='monokai')でmonokaiを指定すべきところ、あほでHtmlFormatter().get_style_defs('.monokai')なんてやっていたのでCSSに.monokaiというクラスの定義で60行できて、HTMLの方ではクラス名がデフォルトのhighlightになっているのがうまくいかない原因だった。
まとめ
普通はpygmentize.exeでやるのかもしれませんが、出てくるCSSが.hll { background-color: #49483e }からはじまっていて、.highlightを各行の頭に追加しないとhighlightのクラスだけに有効にしたいデザインが他のところにも影響してしまいます。
上のコードでやると、そのまま使えるHTMLとCSSが出てきます。
使い方:
codeblockに整形済みテキストでコードを渡すと、basenameで指定したファイル名でtest.htmlとかtest.cssとかができます。できたcssはそのままカスタムCSSに貼っつけ、あとはhtmlの方も記事そのままはっつけます。ちゃんとHTMLの編集タブの方に切り替えてから貼っつけましょう。わかってしまえば結構、簡単。
まあSyntaxHighlighterというjavascriptのライブラリを使うのが普通かもしれませんし、ココログでも使えるようです。どっちで行くかまよったんですが、pygmentsで先にレンダリングすると変換がないのでおそらくページの読み込みが速いのと、javascriptを切っていれもちゃんと見れるあたりがちょっと利点ですね。
追記4 コードに長い行があると右端で切れてしまうのでスクロールバーを足しました。CSSにpre { line-height: 125%; white-space: pre; overflow: auto; }を追加でうまくいきました。
« IPython Notebook使ってみた。 | トップページ | TortoiseHgでDropbox上にリポジトリを置いてみる »
「パソコン・インターネット」カテゴリの記事
- Gemma4が凄いよね。Draft modelサポートで更に凄い。(2026.05.26)
- NotebookLMを活用したBadlands Mediaの視聴方法(2025.11.22)
- Linuxのデスクトップ環境にログインした時にxmodmapコマンド実行(2023.12.30)
- youtube-dlでrumbleをダウンロード(2023.12.06)
- Pop!_OSのアプデがfcitxを繰り返し葬る件(2023.05.22)
「Python」カテゴリの記事
- Noteの記事をPythonでバックアップしといた。(2021.05.05)
- JupyterLabでも好きな外部エディターを使いたい!(2018.05.02)
- ローカルエリア内のJupyterLabサーバーにLAN経由で接続する。(2018.05.02)
- Juliaやってみよう。五日目。Pythonと速度比較。(2017.08.01)
- Juliaやってみよう。四日目。@timeでプロファイリング(2017.07.16)
「ココログ」カテゴリの記事
- Feedlyで自分のブログの登録人数を調べる(2016.05.30)
- Pythonでココログのサイトマップから全文配信のRSS1.0を作ってみた。(2014.09.07)
- ココログフリーの記事の下にZenbackつけてみた。(2013.12.08)
- ココログのアクセス解析ログのダウンロードお助けアプリ作ってみた。(2013.11.26)
- ココログでpygmentsを使ってコードのハイライト(2013.01.31)
« IPython Notebook使ってみた。 | トップページ | TortoiseHgでDropbox上にリポジトリを置いてみる »



コメント