LoginSignup
2
2

More than 3 years have passed since last update.

asciidoctorのエスケープ応用編~ エスケープした文字列を強調するなど~

Last updated at Posted at 2019-11-03

概要

asciidoctorのエスケープのまとめです。

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

大雑把に言えば、次の表にあるような書き方もあるよ。ということです。
asciidoc-escape-examples.png

方法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
¦ 外積の大きさ
|===

参考

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2