LoginSignup
0
0

More than 3 years have passed since last update.

asciidoctor の csv のテーブル表示でセンタリング・右寄せ・左寄せを制御する

Posted at

概要

csv でも、右寄せ、左寄せ、センタリングとか align 相当の指定はできる。
ただ、行単位の指定はできない。今更だけど、苦肉の策を思いついたので紹介してみる。

参考

Asciidocで作る請求書 - Qiita

右揃え左揃えはできない。
だから上から順番に書くデザインにする。

環境

  • Asciidoctor 2.0.10
  • ruby 2.6.4
  • Ubuntu 18.04 LTS

前知識

  • cols を使うと、列単位には右寄せ(<)、左寄せ(>)、センタリング(^)などの指定は できる
    → 詳細は、参考を見てください。

問題点を整理する

  • cols は 列単位 に制御できないので、ヘッダとヘッダ行以外とで寄せ方を変えたい場合はどうにもならない
    → 本当?ヘッダ自体は大抵は固定文字列だから、何とかなるんじゃね?

サンプルデータと実験結果

asciidoc_tables_sample.csv
全角空白でたっぷり詰め物をしたcsvです。
ヘッダーとフッターは、データ行のalignに影響されないように同じ幅でたっぷり詰めております。最終行は(無効にもできるが)asciidocとして解釈されることを前提に、左から、斜体、太字、マクロ展開(改行)を入れております。(良くも悪くも無効化できない)

"ID    ","金額     ","      備考"
1,"$100",Foo
2,"$20",Bar
"    __ID__","     〇**〇**","       たpass:p[ +]       て"

asciidoctor_tables_csv_align_sample.adoc

  • cols では、3列の指定でセンタリング(^)、左寄せ(>)、右寄せ(<)の指定をしております
  • 先頭の1行目は、ヘッダ行として太字にしております
  • 1列目に関しては、すべて下寄せの指定となります
[format="csv" cols="^.>,>,<" options="header,autowidth"]
,===
include::asciidoc_tables_sample.csv[]
,===

出力結果
苦肉の策の出力結果でございます。
asciidoctor_tables_csv_align.png

まとめ

csv自体の前処理・加工処理がなんらか存在するなら、別に csv に拘らなくてもよい気はする。
そういう意味で、割り切った状況下で、ヘッダを少し工夫すれば見栄えは変えられる程度の話です。

妥協したくなくて、csvに対して何等かのフィルターがあるなら、 |=== の形式に変換するほうが良いと思います。
|=== の形式なら、データを弄るような無駄なパディングをせずとも、>| aaa みたいにセル単位に配置を調整ができます。
(,| とかの変換は文字列置換のツールに慣れた人なら難しい処理ではない)

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0