Markdownにはできない。
成果物
AsciiDoctor.Table.Cell.CodeBlock.201705100845
開発環境
前回まで
- http://ytyaru.hatenablog.com/entry/2018/02/02/000000
- http://ytyaru.hatenablog.com/entry/2018/02/03/000000
- http://ytyaru.hatenablog.com/entry/2018/02/04/000000
テーブルにコード
python2と3のコードを比較しやすい。
inline版
test.asc
[cols="2", options="header, autowidth"] |==== ^|python2 ^|python3 a| [source, python] ---- import datetime print "%s" %(datetime.datetime.now()) print datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') ---- a| [source, python] ---- import datetime print("{0}".format(datetime.datetime.now())) print("{0:%Y-%m-%d %H:%M:%S}".format(datetime.datetime.now())) ---- |====
include版
test.asc
[cols="2", options="header, autowidth"] |==== ^|python2 ^|python3 a| [source, python] ---- include::python2.py[lines=5..7] ---- a| [source, python] ---- include::python3.py[lines=5..7] ---- |====
python2.py
#!python2 # -*- coding: utf-8 -*- import datetime print "%s" %(datetime.datetime.now()) print datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') print datetime.datetime.strptime("2000-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
python3.py
#!python3 # -*- coding: utf-8 -*- import datetime print("{0}".format(datetime.datetime.now())) print("{0:%Y-%m-%d %H:%M:%S}".format(datetime.datetime.now())) print(datetime.datetime.strptime("2000-01-01 00:00:00", "%Y-%m-%d %H:%M:%S"))
ファイル構成
- ./test.asc
- ./python2.py
- ./python3.py
良い点
こういうコードの比較形式を書きたかった。しかしMarkdownでテーブルのセル内で改行するには<br>
記入が必要なため実用性がなかった。include機能などないため修正があるとHTML内から探さねばならず面倒になる。AsciiDocのおかげで楽になる。
- セル内改行に
<br>
記述不要 - includeなのでファイル分離できて修正しやすい
悪い点
かなり冗長なソース。もはや手で書きたくないレベルだし読みづらい。
- 冗長なので書きづらく読みづらい
- 暗号じみて読みづらく編集しづらい
もっとスマートに表現できないものか。とくにinclude版はファイル拡張子で察して欲しい。コードブロックを書かずにそうして欲しい。a|
も同じく。たとえば以下くらい簡単に書けると嬉しいのだが。
|==== |python2|python3 |include::python2.py|include::python3.py |====
所感
表現の幅が広がる。ただし手で書くのはまだ辛い。もういっそ独自の文法や形式を定義できるようになればいいかもしれない。方法はあるのかもしれないが知らない。