ods escapechar=で、Unicodeの特殊文字を使ったり、文字を修飾したりする話

深夜にカイジのアニメ(再放送)がやっていて、それを見ていると、無性にSASで星マークをprintしたくなりました。

さて、まずSASで特殊文字をアウトプットに出力したい場合、unicodeで対応する文字を検索します
(例は:http://www.decodeunicode.org/で探しました)

































そこで、出力したい文字を見つけたら、上の星でいうと「2605」という文字列に注目します。

そしたら、今回の大事な呪文

ods escapechar='^';

を実行します。これによって^はエスケープ文字となります。
ここで指定したエスケープ文字に様々な表現を足すことで、拡張的な文字表現ができます。

で、以下のようにして

data Q1;
X="^{style [color=yellow] ^{unicode '2605'x}}";
KAIJI=repeat(X,2);
run;

proc print data=Q1;
 var KAIJI;
run;

実行すると









みたいな感じです。
※追記:html出力がデフォでない場合はods rtf;やods html;、ods pdf;と、対応するods html close;やods rtf close; ods pdf close;でプロシジャ部分を囲んで出力ファイル形式を指定ください。通常のlistingアウトプットでは展開されません


例えば、

data Q2;
X="^{unicode '2721'x}";output;
X="^{unicode '2603'x}";output;
X="^{unicode '263A'x}";output;
run;

は、データセットの中身は当然









って感じで、意味不明なんですが、ひとたび出力するとunicodeが解釈されて

proc print data=Q2;
run;














絵文字みたいな感じでかわいいですね。


最後に真面目な話
ods escapecharを実務で使う場合は、

data Q3;
X=cats('χ','^{super 2}');output;
X=cats('H','^{sub 2}','O');output;
run;

proc print data=Q3;
run;











みたいに上付き文字とか下付き文字とかを入れたい場合ですかね?
主にタイトルとかフットノートとか、ラベルで使うことが多いと思います。
(やり方は同じです)

あ、最後に、ちょっと帰省等、用事があって、しばらく更新止まります。

また今まで書いた記事で、最近ちゃんとラベルの設定してなかったんですけど
その辺をちょっと、ちゃんと整理していきます。



0 件のコメント:

コメントを投稿