LoginSignup
7
5

More than 3 years have passed since last update.

Asciidoctor で <br> 的なものを定義する

Last updated at Posted at 2019-06-20

Asciidoctor で 属性と Passthrough を使いこなす

passマクロを色々試していたら、自己解決。なんで用意されていないのか分かった。標準機能で普通に実現できるから。

:br: pass:p[ +]

a{br}b

結果のイメージ(AsciiDocが使えないのでMarkdown記法で結果を再現)

a
b

解説

  • pass:[~] は入力されたものを加工せずに出力する。
  • p は Post Replacements の略。Post Replacementsは[~]のテキスト中に + を見つけると、改行に置き換える。(この記法、実はpdfでもうまくいく。)
  • pass:q,p,...[~]は、「~」で書式適用、改行置換などを適用したテキストを、そのまま出力する。

passマクロの応用例

PDF向けには画像を出して、HTML出力向けにはフォントを使う。

image は macros でマクロを置換してから、passすれば良い。

ifeval::["{backend}" == "html5"]
:phi: pass:r[&#120601;]
endif::[]

ifeval::["{backend}" == "pdf"]
:phi: pass:macros[image:U03D5_phi_straight.svg[]]
endif::[]

{phi}

そもそも、PDFはいらない子という話はあるかもしれないが、アイコン等を埋め込んだ文書を作るには良いのかもしれない。

HTMLタグを埋め込む

ルビを入れることもできる。PDFは無理。
この例は、pass 指定しないと、 AsciiDoc 文書と思われて、&や<>などの記号が通常の文字に置換されてしまう。pass指定で、生のHTMLをそのまま出力できる。

ifeval::["{backend}" == "html5"]
pass:[<ruby><rb>hello world</rb><rp>(</rp><rt>こんにちは世界</rt><rp>)</rp></ruby>]
endif::[]

こういうのは、属性とあわせて使うと力を発揮するものと思われる。
ただ、外道(道を外れた使い方)ではある。こういうのに頼らずに済めばよいのだが、まずは出来ることが重要。

太字のマークアップ付きの属性を定義する

q は quote の略。太字/斜体(slant?)/オーバーライン/アンダーラインなど、マークアップを変換した後、passthrough する。html的に言うと、 Z --quote--> <strong>Z</strong> --pass--> <strong>Z</strong> という感じで適用される。

:ZZ: pass:q[**Z**]

{ZZ}

一旦メモしたものを少し加工して見栄えを良くする。

ノートを取った直後

----
  i     j
1 2 3 4 5 6
1 2 3 5 4 6
1 2 5 3 4 6
1 5 2 3 4 6

1 5 2 3 4 6
1 5 3 2 4 6
1 5 3 4 2 6
  ^     ^
----

強調したい場所にマークアップを入れる

[subs="quotes"]
----
  i     j
1 2 3 4 *5* 6
1 2 3 *5* 4 6
1 2 *5* 3 4 6
1 *5* 2 3 4 6

1 5 *2* 3 4 6
1 5 3 *2* 4 6
1 5 3 4 *2* 6
  ^     ^
----

表示結果
capture_20190621_012515.png

おわりに

AsciiDocって attribute を使いこなすと、太字・斜体を含めた入力を簡略化できる。ノートを取るのにも実用的な感じがしている。

参考

マクロの表

マニュアル見れば載ってるが、一応。
capture_20190621_013916.png

7
5
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
7
5