在前面的文章我介绍了SAS中如何使用Unicode输出特殊字符?,特殊字符的常用的方式都有介绍过。今天我来介绍一下GTL(Graph Template Language)语句中如何输出上下标字符,为什么要单单讲在GTL语句呢?因为我在官方文档中看了一句话:
The sup and sub specifications must not appear escaped and in quotes in the GTL. They must appear outside of quotes.
这句话的含义是什么?上标sup
和下标sub
在GTL中使用时,不能出现转义和引号,它们必须出现在引号之外。单单看文字理解起来有些抽象,我们来看两个例子。
第一个例子是,正常出现在Title、Footnote中的上下标字符,这里的上标我没有使用缩写sup
,因为我发现不知道是什么原因上标的缩写在这个代码中是没有作用的,下标的缩写可以正常使用。上下标可以正常显示,参见下面输出结果。
title "Special char:sup a, x(*ESC*){super a}";
footnote "Special char: sub b, y(*ESC*){sub b}";
proc print data=sashelp.class;
run;
输出的结果如下:
Output 1
第二个例子是,GTL语句中的Title、Footnote的输出。先看我们向之前那样正常引用上下标会出现什么问题?
***Create a template for output;
proc template;
define statgraph boxplot;
begingraph;
entrytitle "Special char:sup a, x(*ESC*){super a}";
entryfootnote "Special char: sub b, y(*ESC*){sub b}";
layout overlay;
boxplot y = height/ display = (caps mean median outliers);
endlayout;
endgraph;
end;
run;
***Render the template;
proc sgrender data=sashelp.class template=boxplot;
run;
输出结果如下:
Output 2
Figure中的Title、Footnote中的上下标无法正常显现。下面将上下标语句从引号内拿出,不加转义字符。
***Create a template for output;
proc template;
define statgraph boxplot;
begingraph;
entrytitle "Special char:sup a, x"{sup a};
entryfootnote "Special char: sub b, y"{sub b};
layout overlay;
boxplot y = height/ display = (caps mean median outliers);
endlayout;
endgraph;
end;
run;
***Render the template;
proc sgrender data=sashelp.class template=boxplot;
run;
输出结果如下:
Output 3
Figure中的Title、Footnote也可以正常输出。这里提醒下代码的变化,除了上下标语句不加转义字符拿到引号外,上标语句由super
改为sup
以及上下标a、b字母都加了引号。可能因为GTL语言的编译运行更之前不同,如果不怎么做,SAS会提示以下Warning和Error:
WARING: Assuming the symbol SUP was misspell as super.
ERROR: Syntax error: expecting a constant or a dynamic.
以上就是GTL语句中输出上下标字符的分享。
若有疑问,欢迎评论区交流!
网友评论