コードのプレゼンテーション
reveal.js には、highlight.js によって提供される構文強調表示されたコードのプレゼンテーションを目的とした強力な機能セットが含まれています。この機能は highlight プラグインにあり、デフォルトのプレゼンテーションテンプレートに含まれています。
以下は、構文が強調表示される Clojure コードの例です。data-trim 属性が存在する場合、<code> 内の周囲の空白は自動的に削除されます。
HTML はデフォルトでエスケープされます。これを回避するには、<code> 要素に data-noescape を追加します。
<section>
<pre><code data-trim data-noescape>
(def lazy-fib
(concat
[0 1]
((fn rfib [a b]
(lazy-cons (+ a b) (rfib b (+ a b)))) 0 1)))
</code></pre>
</section>テーマ
ドキュメントに構文強調表示のテーマが含まれていることを確認してください。デフォルトでは Monokai を含めており、reveal.js リポジトリの plugin/highlight/monokai.css で配布されています。使用可能なテーマの完全なリストは、https://highlightjs.org/demo/ で確認できます。
<link rel="stylesheet" href="plugin/highlight/monokai.css" />
<script src="plugin/highlight/highlight.js"></script>
<script>
Reveal.initialize({
plugins: [RevealHighlight],
});
</script>行番号と強調表示
<code> タグに data-line-numbers を追加することで、行番号を有効にできます。特定の行を強調表示する場合は、同じ属性を使用してコンマ区切りの行番号リストを指定できます。たとえば、次の例では、3 行目と 8 行目から 10 行目が強調表示されます。
<pre><code data-line-numbers="3,8-10">
<table>
<tr>
<td>Apples</td>
<td>$1</td>
<td>7</td>
</tr>
<tr>
<td>Oranges</td>
<td>$2</td>
<td>18</td>
</tr>
</table>
</code></pre>行番号のオフセット 4.2.0
より長いコードの一部分を強調表示したい場合は、行番号をオフセットできます。下の例では、data-ln-start-from="7" を設定して、行番号を 7 から開始するようにしています。
<pre><code data-line-numbers data-ln-start-from="7">
<tr>
<td>Oranges</td>
<td>$2</td>
<td>18</td>
</tr>
</code></pre>ステップバイステップの強調表示
同じコードブロックで複数のコード強調表示をステップ実行できます。各強調表示ステップを `|` 文字で区切ります。たとえば、data-line-numbers="1|2-3|4,6-10" は 3 つのステップを作成します。1 行目を強調表示し、次のステップは 2 行目から 3 行目、最後に 4 行目と 6 行目から 10 行目を強調表示します。
<pre><code data-line-numbers="3-5|8-10|13-15">
<table>
<tr>
<td>Apples</td>
<td>$1</td>
<td>7</td>
</tr>
<tr>
<td>Oranges</td>
<td>$2</td>
<td>18</td>
</tr>
<tr>
<td>Kiwi</td>
<td>$3</td>
<td>1</td>
</tr>
</table>
</code></pre>HTMLエンティティ 4.1.0
<code> ブロック内に追加されたコンテンツは、Web ブラウザによって HTML として解析されます。コードに HTML 文字 (<>) がある場合は、それらをエスケープする必要があります ($lt; $gt;)。
これらの文字を手動でエスケープする必要がないように、コードを<script type="text/template">でラップすると、自動的に処理されます。
<pre><code><script type="text/template">
sealed class Either<out A, out B> {
data class Left<out A>(val a: A) : Either<A, Nothing>()
data class Right<out B>(val b: B) : Either<Nothing, B>()
}
</script></code></pre>highlight.js API と beforeHighlight 4.2.0
コードが強調表示される前に highlight.js と対話したい場合は、beforeHighlight コールバックを使用できます。たとえば、highlight.js API を介して新しい言語を登録する場合に便利です。
Reveal.initialize({
highlight: {
beforeHighlight: (hljs) => hljs.registerLanguage(/*...*/),
},
plugins: [RevealHighlight],
});手動による強調表示
reveal.js の起動時に、すべてのコードブロックが自動的に構文強調表示されます。この動作を無効にして独自に強調表示をトリガーする場合は、highlightOnLoad フラグを false に設定できます。
Reveal.initialize({
highlight: {
highlightOnLoad: false,
},
plugins: [RevealHighlight],
}).then(() => {
const highlight = Reveal.getPlugin('highlight');
highlight.highlightBlock(/* code block element to highlight */);
});