AsciiDocのワイド文字対応手抜きパッチ
主流は、reStructuredTextのようですね。
AsciiDocいいのになあ。
- DocBookに変換できる。
- お手軽なわりにOutputの完成度高い。
- (個人的に)ソースがreStructuredTextより見やすい。
いまいちなのは、ワイド文字だと見栄えがよろしくないこと。タイトルや見出しは、まあ、我慢するとしても、表だけはさすがに激しく面倒。
`-----------`--- くだもの 数 ---------------- りんご 3個 みかん 10個 さくらんぼ 20個 梨 2個 ----------------
とやっても、うまく判定してくれません。
AsciiDocでは、文字の見栄えの幅ではなく、数であわせるため、下のように空白を調整する必要があります。
`------`--- くだもの 数 ----------- りんご 3個 みかん 10個 さくらんぼ 20個 梨 2個 -----------
はっきりいって、見にくい。いや、醜い。
そこで、適当なパッチを作ってみました。ずいぶん昔に作ったものです。
見た目の幅ではなく、バイト数でアンダーラインの文字数を決めるようにしています。手抜き。
以下、そのパッチ。
--- org_asciidoc.py 2006-03-07 10:25:38.000000000 +0900 +++ asciidoc.py 2006-06-15 19:08:27.760867200 +0900 @@ -1466,8 +1466,8 @@ if not Title.pattern: return False # Single-line titles only. if len(lines) < 2: return False title,ul = lines[:2] - title_len = char_len(title) - ul_len = char_len(ul) + title_len = len(title) + ul_len = len(ul) if ul_len < 2: return False # Fast elimination check. if ul[:2] not in Title.underlines: return False @@ -2528,17 +2528,15 @@ for row in rows: data = [] start = 0 - # build an encoded representation - row = char_decode(row) for c in self.columns: end = start + c.rulerwidth if c is self.columns[-1]: # Text in last column can continue forever. # Use the encoded string to slice, but convert back # to plain string before further processing - data.append(string.strip(char_encode(row[start:]))) + data.append(string.strip(row[start:])) else: - data.append(string.strip(char_encode(row[start:end]))) + data.append(string.strip(row[start:end])) start = end result.append(data) return result