表の書き方だけは何度書いても記号の順番を忘れてしまうので、今回は自分用の早見表を兼ねてまとめました。特にセル結合の記法は使用頻度が低く、毎回検索し直していた部分です。

要素の全体マップ

リスト・表・コードブロック・画像・admonitionの記法を一覧化した図

図1: 各要素は開始・終了の記号が明確で、長文でも構造が崩れにくい

AsciiDocのブロック要素は、いずれも「何の要素か」を示す記号やマーカーが明示的です。これにより、長い文書でも要素の境界が曖昧になりにくいという特徴があります。

リスト — 箇条書き・番号付き・説明リスト

AsciiDoc — リスト3種
// 箇条書き(* の数でネストの深さを表現)
* 項目A
* 項目B
** 項目B-1(ネスト)
** 項目B-2(ネスト)
* 項目C

// 番号付きリスト(. の数でネスト、番号は自動採番)
. 手順1:環境を準備する
. 手順2:ファイルを作成する
.. サブ手順2-1
.. サブ手順2-2
. 手順3:変換コマンドを実行する

// 説明リスト(用語 :: 説明)
AsciiDoc:: 軽量マークアップ言語の一種。
Asciidoctor:: AsciiDocの変換エンジン。Ruby実装。
xref:: 相互参照を行うためのマクロ。

💡 番号付きリストは自動採番

.を使う番号付きリストは、明示的に数字を書かなくても自動的に連番が振られます。途中で項目を入れ替えても番号がずれる心配がありません。

表(テーブル)

表は|===で囲んだブロックとして書きます。1行に複数セルをまとめて書くことも、セルごとに改行して書くこともできます。

AsciiDoc — 基本の表
[cols="1,2,1", options="header"]
|===
|項目 |説明 |必須

|name
|ユーザー名を指定する
|○

|email
|連絡先メールアドレスを指定する
|×
|===
記法意味
[cols="1,2,1"]列幅の比率を指定(この例では2列目が2倍幅)
options="header"先頭行をヘッダー行として扱う
|セル内容1つのセルを表す。改行して複数セルをまとめて書ける
2+|セル横方向に2セル分結合する
.2+|セル縦方向に2セル分結合する

CSVから直接取り込むこともできる

[format=csv]属性を付けると、カンマ区切りのテキストをそのまま表として扱えます。Excelから貼り付けたデータをそのまま表にしたい場合に便利です。

コードブロックとシンタックスハイライト

コードブロックは----で囲み、直前に[source,言語名]を付けることで言語別のシンタックスハイライトが適用されます。

AsciiDoc — コードブロックの書き方
[source,python]
----
def greet(name: str) -> str:
    return f"Hello, {name}!"

print(greet("AsciiDoc"))
----

// 行番号を表示する場合
[source,python,linenums]
----
import sys
print(sys.version)
----

// インラインコードはバッククォート1つ
本文中では `pip install asciidoctor` のように書きます。

⚠️ シンタックスハイライトには追加設定が必要

ハイライト表示させるには、文書属性で:source-highlighter: rouge(またはhighlight.js等)を宣言しておく必要があります(PART 03の組み込み属性を参照)。属性がない場合、コードは装飾なしの等幅フォントで表示されます。

画像の挿入

画像には、行内に埋め込むインライン画像image:コロン1つ)と、独立したブロックとして表示するブロック画像image::コロン2つ)の2種類があります。

AsciiDoc — 画像の挿入
// ブロック画像(独立した図として表示、キャプション付き)
.システム構成図
image::img/architecture.png[システム構成図,600,400]

// インライン画像(文中に埋め込み、アイコンなどに使う)
ステータスは image:img/ok-icon.png[OK,16,16] のように表示されます。

// 画像の役割:alt="説明文", width, height の順で指定

💡 キャプションは . 始まりの行で指定

画像ブロックの直前に.キャプション文を書くと「図1: キャプション文」のような形式で自動的に採番・表示されます(:figure-caption:属性で表記をカスタマイズ可能)。

admonition(注意書き)

NOTE・TIP・IMPORTANT・WARNING・CAUTIONの5種類が標準で用意されており、種類ごとに異なるアイコン・色で強調表示されます。

AsciiDoc — admonition 5種
NOTE: これは補足情報です。読み飛ばしても本筋には影響しません。

TIP: 作業を効率化するコツです。

IMPORTANT: 見落とすと後工程で問題になる重要事項です。

WARNING: 実行すると元に戻せない操作の前に置きます。

CAUTION: 一時的な不具合やデータ破損の可能性がある操作に使います。

// 複数行にわたる場合はブロック形式で書く
[NOTE]
====
複数段落にわたる長い補足説明も、
====で囲むことでまとめて1つのadmonitionにできます。
====
種類用途の目安
NOTE読み飛ばしても支障のない補足情報
TIP効率化のためのヒント・裏技
IMPORTANT見落としてはいけない重要事項
WARNING元に戻せない操作への注意喚起
CAUTION予期しない不具合の可能性がある操作への注意

早見表

要素開始記号備考
箇条書き*ネストは*を重ねる
番号付きリスト.自動採番
説明リスト用語::用語と説明を1行で対応付け
|===セルは|で開始
コードブロック[source,言語] + ----言語名でハイライト対象を指定
ブロック画像image::コロン2つ・キャプション対応
インライン画像image:コロン1つ・文中に埋め込み
admonitionNOTE:5種類、複数行は====で囲む

次の章では…

最終回のPART 05では、複数ファイルへの分割を可能にするincludeマクロ、目次の自動生成、環境ごとに内容を出し分ける条件付きコンテンツ(ifdef)を扱い、シリーズ全体を振り返ります。

→ PART 05 — 応用構文とまとめへ