RTF帳票で脚注が長くて,本体部分の合計のセル幅を超えて,見栄えが悪くってしまう時の対策

 



























ちょっとマニアックな話.
治験分野の内輪話になっちゃうかもですが,英語で解析帳票作ることが増えて,略語を脚注に入れたり,1帳票内での情報の完結といった観点から,なんか昔より解析についての脚注記載も多くなった気がします

上記のRTF出力は

ods escapechar="~";
options orientation=landscape;
ods rtf file="test.rtf"; 
proc odstable data=sashelp.class(where=(monotonic()<=5)); 
  column name age ;
  define header header1; start=name; end=name; text "AAAA";end;
  define header header2; start=age; end=age;    text "BBBB";end;
  define footer MYFOOT1;  just=left; style={borderbottomstyle=hidden borderrightstyle=hidden  borderleftstyle=hidden  background = white}; text "寿限無寿限無五劫の擦り切れ海砂利水魚の水行末雲来末風来末食う寝る処に住む処藪ら柑子の藪柑子パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナーの長久命の長助"; end;
  define name; print_headers=off; just=left;   style={cellwidth=30mm};end;
  define age; print_headers=off; just=center; style={cellwidth=20mm};end;

run;
ods rtf close;


で描いたのですが(罫線などのスタイル制御は通常,別途templateプロシジャで作っておきますが,今回は本筋ではないので,長くなって申し訳ないですがodstable内ですませてます),これだと脚注が,レポート本体部分のnameとageの出力セルの合計幅に制限されてしまい,折り返しが多くなります.帳票全体の右側に余裕がある場合,ここでコンパクトに折りたたまれて,縦伸びされると見た目がバッド.

プロシジャの出力をつかわずods rtftextとかで別途出すのも一つの手ですが,

 startpage=noなどで1ページ内複合表を作ってる場合などではods rtftextだと不可避の1行空行が生じたりとか,具合悪い場合も多く,やっぱりodstableのfootnoteで出したいなぁってこともあったりします

その際に,正解なのは不明で,もっといい方法があれば教えて欲しいのですが

ods escapechar="~";
options orientation=landscape;
ods rtf file="test.rtf";
proc odstable data=sashelp.class(where=(monotonic()<=5)); 
  column name age  gap;
 define header header1; start=name; end=name; text "AAAA";end;
  define header header2; start=age; end=age;    text "BBBB";end;
  define header gaphed;  start=gap; end=gap; style={background = white borderbottomstyle=hidden bordertopstyle=hidden borderrighttyle=hidden}; text " "; end;
  define footer MYFOOT1;  just=left; style={borderbottomstyle=hidden borderrightstyle=hidden  borderleftstyle=hidden  background = white}; text "寿限無寿限無五劫の擦り切れ海砂利水魚の水行末雲来末風来末食う寝る処に住む処藪ら柑子の藪柑子パイポパイポパイポのシューリンガンシューリンガンのグーリンダイグーリンダイのポンポコピーのポンポコナーの長久命の長助"; end;
   define name; print_headers=off; just=left;   style={cellwidth=30mm};end;
  define age; print_headers=off; just=center; style={cellwidth=20mm};end;
  define gap;     compute as (""); style={borderbottomstyle=hidden  borderrightstyle=hidden cellwidth=150mm };                      
run;
ods rtf close;
 
と,データセットにダミーを用意しなくても,プロシジャ内で作ってやって,それに幅を持たせてやれば











こんな感じで,帳票本体を大幅に超えるボリュームの脚注がきても大丈夫っていう感じです.

こっからは余計なお世話ですが,脚注が増えると,目視での整合チェックも量によっては限界があって,ダブルやってるなら補助的にでも脚注もコンペアかけておいた方がいいと思うので,コンペアデータセットに,なんらのカテゴリ変数で抽出できるようにいれておいて
それをodstableに入れる前にマクロ変数にでも吸収させてfootnoteで展開するとか,色々工夫するといいと思います