スマートデバイスアプリ開発のあれやこれや

AsciiDocでテーブルの中に画像やコードを表示したい!

 AsciiDocが便利なので近頃ちょくちょく活用しています。もうWordやExcelには戻りたくないほど感動的な体験で,「今後作る設計書は全てAsciiDocで作ってやろう……!」と堅く心に誓ってしまうほどです。どの部分に惹かれるかは人それぞれですが,私にとっては以下の特徴が魅力的に感じました。

  • 表紙や目次を持ったフォーマルな文書作成をサポートする機能が多い
  • 下手にWordで頑張るより小奇麗なファイルが生成される
  • ドキュメント作成時のデザイン崩壊事故が起きにくい
    (デザイン定義が別ファイルになるので基本触らない)
  • ソースコードのSyntaxHighlightが効く

 そんなわけで便利なAsciiDocなのですが,ちょっと困ったことがあったので今日はその紹介を……。

テーブルの中に画像を表示したい!

 要するに↓みたいなことをやりたかったのです。

f:id:cross-xross:20180616080352p:plain

 でも普通にAsciiDocを書くと

|===
|1-1|2-1

|image::sample.jpg[width="100", align="center"]
|2-2

|1-3
|2-3
|===

f:id:cross-xross:20180616080744p:plain

 こんな感じで残念な表示をされてしまいます。

対策は……?

 意外と簡単に対策できました。

|===
|1-1|2-1

a|image::sample.jpg[width="100", align="center"]
|2-2

|1-3
|2-3
|===

 内部でAsciiDocの文法を解釈させたいセルの直前に「a」を追加します。

f:id:cross-xross:20180616080352p:plain

 出た!

 画像だけでなくSyntaxHighlightも効くので↓みたいなことも可能です。

f:id:cross-xross:20180616081535p:plain

別解

 テーブルのヘッダ定義部分をイジっても同じことが出来ます。

[cols="1a,1"]
|===
|1-1|2-1

|image::sample.jpg[width="100", align="center"]
|2-2

|1-3
|2-3
|===

 特定列だけ常にAsciiDocを解釈して欲しいなら,こちらの方がラクですね!