hugoのsyntax highlightを簡易カスタマイズ
記事の内容が古い場合がありますのでご容赦ください。

hugoで生成したブログサイトにPrismJSを組み込みます。
このブログを即席で立ち上げて最初の投稿から一週間経ってしまいました。
hugoやgo言語について分からないことだらけで試行錯誤しながらサイト構築しています。
ちょうどやっていることが覚書になるので記事にします。
目次 - CLICKで開閉します -
この記事の概要
このブログの仕組みや運用方針については別の機会に書かせていただくとして。
この記事では、「ブログとして一通り機能する状態から、記事を書くためにPrismJSの設定を自分仕様に設定した」事を覚書として記していきます。
PrismJSを設定する
PrismJS公式サイトのDownloadページからCSSとJSファイルを生成して、static/css
,static/js
配下に配置します。
PluginsにLine Numbers
のチェックを入れるのを忘れないようにしておきます。
- PrismJS 公式 https://prismjs.com/
config.tomlにCSSとJSを追加読み込みする設定をしておきます。
標準のsyntax highlightとPrismJSを無効化する
テーマやhugoのバージョンによってPrismJSの設定方法は変わりますが、私の場合は以下のように設定しています。 これをやっておかないと、シンタックスハイライトのライブラリが多重ロードされ、生成されるHTMLコードもやたら入れ子になってしまいます。
prismJSで行番号を表示する
hugoテーマのprismJSを読み込む機能は無効化してあるので、行番号や開始行の指定、行ハイライトの指定を自前でやる必要があります。 ショートコードやテンプレートで対応しようと思うのですが、先ずはサクッと動かすためにズルをします。
ちゃんとやったバージョンは別途記事を書こうと思います.
PrismJSの行番号とソースコード表示のレイアウトを調整する
行番号表示部分とコード表示部分はデフォルトでは別々のスタイルが適用されます。 その場合、フォントサイズやマージン、パディングが同じになっていないと行番号とコードの位置がずれてしまいます。
ファイル名(キャプション)を差し込む
記事内でソースコードを書く際、markdown形式に沿ってトリプルバッククオートで括っています。
hugoでは{}内に設定したAttributes
と言われるパラメータがHTMLのタグに設定されます。
これをJavaScriptで取得して上部に文字列として表示させます。
おまけ CSSファイルのURLにMD5クエリを付けて古いファイルがキャッシュされるのを防ぐ
.Site.Params.customCSS
はテーマに用意されていたconfig.tomlの設定です。
ヘッダー部分のテンプレートでCSSの読込を変更して古いスタイルシートをキャッシュさせないようにしました。
まとめ
現時点ではまだ完全ではないので、別途改良後の記事を書こうと思います。
今後はソースコード毎に行をハイライトさせたり、行番号表示の有無や開始行の指定が可能なようにする予定です。
以上、PrismJSを使ってこのブログでソースコードを書くためのsyntax highlightの設定を行いました。
関連記事
- ブログを改良しました。
- GitCast あると便利なもの。
- 1プログラマーがMacBookProを注文した後に準備したこと
- 1プログラマーがMacBookProを買うことに決めた最大の理由
- Macで自動スリープを簡単に止める方法