
【Asciidoc】条件文 ー たまにしか使わない・・・ ー
昨日の「【Asciidoc】カスタム属性 ー 再利用:議事録雛形 ー」にて
「見出しを表示しない」設定を利用するはデフォルトでは「PDF」のみ有効で、「HTML」の場合、カスタム「CSS」を利用する必要がると紹介しました。
もうひとつの方法として、別のヘッダーファイルを用意するのも一案です。
この時に条件文のお世話になると少し楽しいよという話。
別のヘッダファイルを用意しておいて「example-03-1.adoc」側で条件分岐
ifdef::backend-pdf[]
include::example-hederr-03-1.adoc[]
endif::backend-pdf[]
ifdef::backend-html5[]
include::example-hederr-03-1-2.adoc[]
endif::backend-html5[]
とするか「example-hederr-03-1.adoc」の中で予め条件分岐
ifdef::backend-pdf[]
[id=chain-{会議名},options=notitle]
=== {会議名}
//[cols="2,6,2",frame="none",grid="none"]
[cols="2,6,2"]
|====
^.^| 取り扱い注意 +
社内限り
^a| [id=chain-{会議名}-discrete,discrete]
=== {会議名}
>.^| 文書番号: {文書番号} +
{編集日}
| 日時 2+| {開催日時}
| 場所 2+| {開催場所}
| 出席者 2+| {出席者}
|====
endif::backend-pdf[]
ifdef::backend-html5[]
//[cols="2,6,2",frame="none",grid="none"]
[cols="2,6,2"]
|====
^.^| 取り扱い注意 +
社内限り
^a| [id=chain-{会議名}]
=== {会議名}
>.^| 文書番号: {文書番号} +
{編集日}
| 日時 2+| {開催日時}
| 場所 2+| {開催場所}
| 出席者 2+| {出席者}
|====
endif::backend-html5[]
とするか・・・2種類考えられるけど・・・。
まあ、ユーザーに余計な構文を見せないためには「example-hederr-03-1.adoc」側で処理するほうが良いと思う。
さて条件分の基本構文は
ifdef
指定した属性が存在する場合
ifndef
指定した属性が存在しない場合
ifeval
属性の値が条件内の場合
動作を記述し終わったら
endif
で閉じます。
どの様に利用するかを考えると「ifeval」等は「セクション番号がXX以上なら・・・実行」等の場合に利用するのだが余り状況が思い浮かばない。「if(n)def」は上記例のように出力媒体によって変化させる事ができるので使いどころはある。
例えば「【Asciidoc】EPUBに変換する ー 検証:「パススルー」と属性コンフリクト ー」で相互干渉した「script」属性をコメントアウトしていますが、
ifdef::backend-pdf[]
:script: cjk
endif::backend-pdf[]
ifdef::backend-epub[]
:script: multilingual
endif::backend-epub[]
とすれば上手く回避できます。(媒体別属性は別ファイルで処理したほうが良いかもしれません。)
まあ、本文中で積極的に執筆者が利用する機能では無いと思います。
(振り仮名をこれで制御するとか考えたくもない・・・)
利用方法を考えていくと条件文は予めテンプレートなどに仕込んでおくのが効率の良い使い方だと思います。
「やはり、あまり利用することはないかな・・・」
取り敢えず今回はここまで。
…ではまた。
当Noteは下記の「AsciiDoc Language Documentation」の文法に従っています。