PIYO - Tech & Life -

highlightjs-line-numbers.jsの結果に変な出力 "{1}" が混じる

このブログではソースコードのシンタックスハイライトにhighlight.jsを使っており、行番号の表示にはhighlightjs-line-numbers.jsを使用しています。

Hugoブログのシンタックスハイライトに行番号をつける - PIYO - Tech & Life -
このブログ、ソースコードを載せることが多いです。載せたコードについて書く時、◯行目とかいいたくなったので行番号を表示したいなと思いました。 でも、Hugoってどうやってソースコード出してるんだろう?とい

あるとき、行番号の処理の結果として{1}のような不思議な文字列が紛れ込むことに気が付きました。 たとえば↓のようなものです。

本来はただの空行なのに変なのが混じっています。

内容のせいかなと色々試行錯誤しても駄目だったので、さきほど本格的に調べてみることにしました。

そこでようやく気がついたのが、highlight.js本体ではなくて、highlightjs-line-numbers.jsのほうだったということ。 本体側だと思いこんでいました。

そこでissueをあたってみると、まさにこれというissueがありました。 単なる不具合だったようで、すでにマージされ、リリースまでされていました。

PHP Code Block extra line containing '{1}' · Issue #42 · wcoder/highlightjs-line-numbers.js · GitHub
When using php as language and an html element contains a class attribute the result contains an extra line containing only: {1} To Reproduce Minimal bug example: <head> <!-- HighlightJs --> <link rel="stylesheet" href="https://cdnjs.clo...

2週間ほど前に対応されており、ちょうどいいタイミングで調べたなーという感じです。

参照しているファイルを変更することで対応できました。

<script src="//cdnjs.cloudflare.com/ajax/libs/highlightjs-line-numbers.js/2.3.0/highlightjs-line-numbers.min.js"></script>

<script src="//cdnjs.cloudflare.com/ajax/libs/highlightjs-line-numbers.js/2.4.0/highlightjs-line-numbers.min.js"></script>