やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

AsciiDocのラベルリストで定義リストをつくってみた

甘い罠がある。

成果物

GitHubAsciiDoctor.LabeledList.201705101950

参考

http://asciidoctor.org/docs/user-manual/#labeled-list

定義リスト

f:id:ytyaru:20170510181243p:plain

test.asc

OS:: Linux Mint
DBMS:: SQLite
SDK:: Python

test.html

<dl>
<dt>OS</dt>
<dd>
<p>Linux Mint</p>
</dd>
<dt>DBMS</dt>
<dd>
<p>SQLite</p>
</dd>
<dt>SDK</dt>
<dd>
<p>Python</p>
</dd>
</dl>

見やすくするためclassなど細かいところは省いた。

オプション

オプション 意味
[horizontal] 水平
[vertical] 垂直

オプションで垂直と水平を指定できる。オプションがないラベルリストは最後に付与されたラベルリストのオプションを継承する。明示しないと表示が狂う可能性がある。

horizontalは<table>になる

f:id:ytyaru:20170510183303p:plain

test.asc

[horizontal]
OS:: Linux Mint
DBMS:: SQLite
SDK:: Python
<table>
<tr><td>OS</td><td><p>Linux Mint</p></td></tr>
<tr><td>DBMS</td><td><p>SQLite</p></td></tr>
<tr><td>SDK</td><td><p>Python</p></td></tr>
</table>

水平は垂直より行数が少なくてコンパクトになる。

しかし<table>テーブル要素になってしまう。定義リスト<dl>ではなく。それなら素直にテーブルにしたほうがいい。見た目だけのために<table>を使うのは悪習。HTMLは要素の意味付けのために使うのが望ましい。

水平の使いどころがわからない。メリットよりデメリットのほうが大きい。結果的に、ラベルリストの使用自体控えたくなってしまう。

メリット

  • テーブル表記より楽

デメリット

  • オプション継承により<table>になってしまう可能性を孕んでいる
    • 回避するためには[vertical]オプションを省略できない
      • 冗長な記述を余儀なくされる
  • 水平表示やネストが中途半端
    • 後述のとおり。素直にテーブルを使ったほうが良い

ネスト

垂直ネスト

f:id:ytyaru:20170510184501p:plain

[vertical]
OS::
    Linux Mint::: Mintです。
    Zorin::: Zorinです。
DBMS::
    SQLite::: SQLiteです。
    MySQL::: MySQLです。
SDK:: SDKです。

以下、残念ポイント。:::::の違いが面倒。

  • 1階層のみネスト可能
  • 2階層目はなぜか:::

水平ネスト

f:id:ytyaru:20170510184509p:plain

[horizontal]
OS::
    Linux Mint::: Mintです。
    Zorin::: Zorinです。
DBMS::
    SQLite::: SQLiteです。
    MySQL::: MySQLです。
SDK:: SDKです。

以下、残念ポイント。これはもう使う気が失せる。

  • 1階層のみネスト可能
  • 2階層目はなぜか:::
  • <dl>でなく<table>である
  • なぜか末尾は水平になっておらず垂直

複合

リストと複合できる。複合する意味がわからない。ネストするならリストだけでやったほうが良い。

垂直複合

f:id:ytyaru:20170510184641p:plain

[vertical]
OS::
    Linux Mint:::
        * 17.3
        ** MATE
        ** Cinamon
        * 18
    Zorin::: Zorinです。
DBMS:: DBMSです。
SDK:: SDKです。

水平複合

f:id:ytyaru:20170510184702p:plain

[horizontal]
OS::
    Linux Mint:::
        * 17.3
        ** MATE
        ** Cinamon
        * 18
    Zorin::: Zorinです。
DBMS:: DBMSです。
SDK:: SDKです。

「できる」だけであって、良いとは思えない。

Q&A

http://asciidoctor.org/docs/user-manual/#question-and-answer-style-list

f:id:ytyaru:20170510201731p:plain

[qanda]
あなたは誰ですか?::
  わかりません。
なぜ生きているのですか?::
  生きることがどういうことか知らないので答えられません。
質問に答える気はありますか?::
  ご覧の通り、答えております。
あなたは私ですか?::
  はい。私はあなたです。

番号がついたものをQ&Aスタイルというらしい。QやAのアイコンにしてくれたほうがわかりやすい。

所感

AsciiDocのラベルリストはなるべく使わないほうが無難か。

  • 定義リストを作りたいときは使う。ただし[vertical]をつけることで<table>化を防ぐこと
  • 水平にしたいならテーブルを使う
  • ツリーにしたいならリストを使う

前回までのAsciiDoc学習

開発環境