概要
asciidoctorのエスケープのまとめです。
大抵は、バックスラッシュ(\)を使う方法でうまくいき、他のサイトもその方法を紹介しています。それももう少し複雑なマークアップ(入れ子)をしていくとうまくいかないため、Predefined Attributesを使った方法も含めて、エスケープ方法のまとめ記事を書いてみました。
大雑把に言えば、次の表にあるような書き方もあるよ。ということです。

方法1: バックスラッシュ(\)を使う
見栄えを保てること、リファレンスを見なくても想像つく点で、とっつきやすい方法。include, pass マクロ等の無効にも使える。
例
-
X.\*.*->X.*.*
補足
- エスケープする文字、しない文字が混在してくると訳が分からなくなるので、その場合は、Predefined Attributes をお勧めしたい。
*を含む文章を強調する場合だとか。
方法2: Predefined Attributes を使う
Predefined Attributes (定義済みの属性) を使う。これが一番副作用のない方法。意味的な部分とマークアップで別の表記となるから、エスケープした文字列を強調するだとかができるようになります。
以下、よく使うものを挙げておく。
-
{vbar}...|に置換される。table書式中で有用。 -
{asterisk}...*に置換される -
{backslash}...\に置換される -
{startsb}...[に置換される -
{endsb}...]に置換される
例
-
X.{asterisk}.{asterisk}->X.*.*
注意
- {amp} は、
&(特殊文字)に置き換えられる
文字として表示したければ&を使う
参考にある表で、置換後に&#nnnnnとなっているのは文字として置換されるが、それ以外は、置換後の文字そのものとなる。
方法3: Passthrough をする
pass:[~] を使う。エスケープする目的での使用はあまりお勧めしない。
例
-
pass:[X.*.*]->X.*.*
補足
- 良くも悪くも そのまま出力 なので、HTMLでいうと特殊文字を含むと出力が壊れるし、スタイルシート周りも周囲と異なる結果となる
- PDF出力時でも、対応する Passthrough された内容が解釈できなければ表示できない
→ マニアックな話をすると、asciidoctor-pdfは<strong>Foo</strong>といった 特定のHTMLタグ をPDF上の表現に置き換える仕組みのようです。
その他: テーブルのセル中で | をバンバン使う
separator を使う。ただ、セパレーターに | 以外を使うと、エディターのSyntax highlight が効かなくなるので、数が多くなければ {vbar} を使うやり方を推奨する。
[cols="3" separator="¦"]
|===
¦ Equations ¦ English ¦ Mean
¦ |A × B|
¦ magnitude A cross B
¦ 外積の大きさ
|===
参考
-
Predefined Attributes for Character Replacements | Asciidoctor User Manual
日本語がよいという人は以下を参照-
Asciidoctor 文法クイックリファレンス(日本語訳) > 17. 属性 > 17.2. 属性の優先順位 (高いものから列挙)
※ 訳のアンカーの付け方が微妙で、翻訳が修正されるとリンク切れになるかもしれない。
-
Asciidoctor 文法クイックリファレンス(日本語訳) > 17. 属性 > 17.2. 属性の優先順位 (高いものから列挙)