銀の弾丸

プログラミングに関して、いろいろ書き残していければと思っております。

AsciiDocのテーブルを入れ子にするにはビックリマーク

f:id:takamints:20200714090741j:plain
photo credit: Trey Ratcliff Boston Library via photopin (license)


AsciiDocのテーブル(表)のセル内に、これまたAsciiDocのテーブルを記述する方法です。

ごくたま~に、これをやりたくなるのですが、いつも書き方を忘れておりまして、 検索しても、なぜか上位のサイトで書き方が説明されていません。

「どこかの英文サイトの深~いところで確か見つけた記憶があるんだけどなあ~」と時間をかけて、やっと見つけて「あぁこれこれよ」という毎度の始末。

ということで、AsciiDocでネストしたテーブルを書く方法を、未来の自分のために書いておきます。時間がもったいないですからね。書いて覚えるスタイルで。


B07JHZMH9C
技術者のためのテクニカルライティング入門講座
髙橋 慈子(著)

新品 ¥2,178 5つ星のうち4.2 27個の評価
Amazon.co.jpで詳細を見る


目次

以降、このページ内の AsciiDocの変換は、npm miceroux を使っています。 使い方などは以下のページで説明しています。 takamints.hatenablog.jp


素のテーブル内にAsciiDocは書けません

そもそも AsciiDocの素のテーブル内に、AsciiDocを書いても、AsciiDocとして解釈されません。
以下のように、書いた内容がそのまま表示されてしまいます。

[cols="2,2,5"]
|===
|Firefox
|ブラウザ
|FirefoxはオープンソースのWEBブラウザです。

下記のような特徴があります。:

* 標準仕様準拠
* 高パフォーマンス
* 高い可搬性

http://getfirefox.com[Firefoxをダウンロードする]!
|===

ちょっとわかりにくいですが、箇条書きが箇条書きになっていませんね。
リンクが正しく解釈されているのはよくわかりません。

テーブル内にAsciiDocを記述する

セルの中のAsciiDocが正しく表示されるようにするには、セルの属性に a を設定する必要があります。おそらく asciidoc の意味ですよね。よく知りませんが。

AsciiDocのテーブルは(当たり前ですが)AsciiDocの文書ですから、この設定をしておかないとテーブルは書けません。

このことは Asciidoctor 文法クイックリファレンス(日本語訳) にしっかり書かれておりまして、文書も丸パクリしています。ちなみにワタシのメインブラウザはChromeです。

以下の例では、AsciiDocを記述する列全体に a 属性を設定しています。

[cols="2,2,5a"]
|===
|Firefox
|ブラウザ
|FirefoxはオープンソースのWEBブラウザです。

下記のような特徴があります。:

* 標準仕様準拠
* 高パフォーマンス
* 高い可搬性

http://getfirefox.com[Firefoxをダウンロードする]!
|===

以下のように、列単位ではなくセル単体に a 属性を設定することも可能です。

a|FirefoxはオープンソースのWEBブラウザです。

セルの中では「| (パイプ or 縦棒)」は使えない

AsciiDocのテーブルは | (パイプ or 縦棒) を使用して記述します。 テーブル自体が |=== の行で始まって |=== の行で終わります。 また、その中のセルの区切りにも | を使用します。

しかしセルの中にネストしたテーブルを書くために、これらの記号は使えません。 |=== が出てきたところで、外側のテーブルが終了してしまって意図通りの表示にはなりません。

ネストされたテーブルでは「!」を使う

じゃあ、どうするか?

ネストしたテーブルでは、| の代わりに ! (エクスクラメーション or ビックリマーク)を使います」ってことでした。

[cols="2,2,5a"]
|===
|Firefox
|ブラウザ
|FirefoxはオープンソースのWEBブラウザです。

下記のような特徴があります。:

* 標準仕様準拠
* 高パフォーマンス
* 高い可搬性

http://getfirefox.com[Firefoxをダウンロードする]!

[cols="2,2,5a"]
!===
!Firefox
!ブラウザ
!FirefoxはオープンソースのWEBブラウザです。
下記のような特徴があります。:

* 標準仕様準拠
* 高パフォーマンス
* 高い可搬性

http://getfirefox.com[Firefoxをダウンロードする]
!===

|===

それなら3段重ねはどうするの?

「じゃあ、3段階のネストはどうする?」って言うと、、、ワタシそれは知りません(あいすみません)。 できるのかどうかもわからないです。

ま、「そんなテーブルは見にくいだろうし、書かないでしょ?」ってことかもしれませんね。