CSV ファイルのデータを直接 tabular/supertabular に?

名前: 近藤 康之
日時: 2001-11-29 17:44:26
IPアドレス: 160.26.90.*

tabular や supertabular で整形したいデータを,ほとんどの場合に, CSV ファイルとして管理しています. 複雑に multirow や multicolumn を使っている場合は仕方がないのですが, \begin{tabular} から \end{tabular} までの間のすべての行を共通の方法で 整形する場合には,文書ファイル (*.tex) に書き直さずに,CSV ファイルを 直接読み込んで処理できるようにしたいと考えています. 例えば, \begin{tabular}{cccc} \hline\hline \multicolumn{2}{c}{ヘッダA} & \multicolumn{2}{c}{ヘッダB} \\ \hline ヘッダA1 & ヘッダA2 & ヘッダB1 & ヘッダB2 \\ \hline 1A1 & 1A2 & 1B1 & 1B2 \\ 2A1 & 2A2 & 2B1 & 2B2 \\ 3A1 & 3A2 & 3B1 & 3B2 \\ 4A1 & 4A2 & 4B1 & 4B2 \\ 5A1 & 5A2 & 5B1 & 5B2 \\ \hline \end{tabular} と書く代わりに, \begin{tabular}{cccc} \hline\hline \multicolumn{2}{c}{ヘッダA} & \multicolumn{2}{c}{ヘッダB} \\ \hline ヘッダA1 & ヘッダA2 & ヘッダB1 & ヘッダB2 \\ \hline \InputCSV{foo.csv} \hline \end{tabular} と書き,別に用意した CSV ファイル foo.csv --------^ foo.csv --------<< cut here 1A1,1A2,1B1,1B2 2A1,2A2,2B1,2B2 3A1,3A2,3B1,3B2 4A1,4A2,4B1,4B2 5A1,5A2,5B1,5B2 --------$ foo.csv --------<< cut here を直接読み込みながら整形をしたいと考えています. 実際には,もう少し複雑で,例えば上の CSV ファイルの第1行を, 1A1 & 1A2 & 1B1 & 1B2 \\ に変換するだけでなく, \FmtARow{1st}{2nd}{3rd}{4th} と入力しておくと, \FmtI{1st} & \FmtII{2nd} & \FmtIII{3rd} & \FmtIV{4th} \\ に変換してくれるコントロールシーケンス \FmtARow を用意しておき, 別に定義した \FmtI, \FmtII, \FmtIII, \FmtIV の処理を経た上で 行を整形したいと考えています. 実際に今整形したい表は,列数が 40 程度です. 各セルを整形する \FmtI, \FmtII などは,何もしない(引数を素通り させる)ものもありますし,数値の整形のために小数点よりも左と右の それぞれの桁の最大の個数を指定して, | 123.4 | | 1.23 | | 12.3 | | 000.00 | のように,小数点の位置を縦に揃えて,最も桁の多い数値をセルの中で センタリングするものもあります. 既にこのような整形を実現できるものの在り処,実現するためのコントロール シーケンスを定義するための考え方など,ご教示頂ければ幸いです. よろしくお願い申し上げます.

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)