基于SAS软件的高级RTF排版
作者信息:Katja Gla?, Bayer Schering Pharma AG, Berlin, GER
摘要: SAS9的结果输出系统(ODS)RTF功能提供了多种设计多文本格式的可能性,包括RTF命令在内的附加功能使得RTF的布局设计几乎有无限种可能。本文的目的是列出使用SAS设计RTF的不同方法。重点陈述使用直接RTF命令进行自动编码或创建不同类型表单等操作的优势。此外,本文进一步探讨了一般方法下如何实现用新的RTF命令丰富结果输出功能。 前言
SAS中ODS的主要优势是可以创建按单元格组织的逻辑表,这些逻辑表更易于处理,排版和阅读。目前,临床研究文献倾向于使用MS文档格式,SAS提供的ODS RTF可用于生成符合当前布局要求且可调整格式的表单 ,此外,ODS RTF与以往的ASCII格式相比还具有很多其他优势。下文将介绍基于SAS设计RTF文件的方案及附加功能 1.基础知识
1.1.基本 OPTIONS PAPERSIZE=A4 ORIENTATION=landscape;使用ODS RTF最重要的选项是地址和纸型的设置。这些涉及到RTF创建的选项应在每段SAS程序的开头设定。例如在欧洲地区创建表格常用A4横向版式:OPTIONS PAPERSIZE=A4 ORIENTATION=landscape;
1.2.根据 使用ODS RTF通道只需要输入两条简单的命令,一条标志程序开始,一条标志结束:ODS RTF; ODS RTF CLOSE; 在这两行命令间产生的所有SAS输出结果都自动放置在了RTF文件中。文件的结构和内容与相应的输出清单一致。基本RTF文档建立程序如下: ODS RTF FILE=”C:\\temp\\class.rtf” AUTHOR=”Katja Gla?”
TITLE =”Output of SASHELP.CLASS”; PROC PRINT DATA=sashelp.class; RUN; ODS RTF CLOSE;
图 1: RTF输出的简单例子
“FILE”命令重定向输出到另一个文件并成为SAS的缺省设置。使用ODS RTF的AURHOR和TITLE语句可以将一些文档元数据信息写入RTF文件。
BODYTITLE是一个非常实用的语句,可以使标题和脚注在文中而不是页眉和页脚显示。当新
表格需要另起一页显示时可以使用STARTPAGE=YES语句。ODS RTF最重要的功能是排版。总布置图,边缘距离,颜色等很多选项可以通过程序来定义。使用不同的SAS语句可以产生完全不同的页面:
ODS RTF FILE=”C:\\temp\\class.rtf” BODYTITLE STARPAGE=YES STYLE=journal;
TITLE1 “Printout of sashelp.class”;
FOOTNOTE1 “Note: Created on February 2007”; PROC PRINT DATA=sashelp.class; RUN; ODS RTF CLOSE;
更多关于ODS RTF版式的基础语句可在很多文献中找到,例如SUGI文摘125-29 [1]. 1.3.ODS ESCAPECHAR 调用字段函数和其他RTF元素需要使用一个特殊字符,其前置代码需已在SAS中注册,后面的代码才能被定义。定义这个特殊的字符需要用到ESCAPECHAR语句:ODS ESCAPECHAR=’^’; 2.使用ODS RTF进行排版
2.1.总体布局功能 一些基本的标题和脚注样式可能已经存在于系统中。例如可以选择粗体字体,字体颜色,背景色,字体大小和高度。此外还可设置对齐,下划线和链接。下例将对这些用法加以说明:
ODS RTF FILE=\
TITLE1 BOLD COLOR=blue BCOLOR=yellow \TITLE2 FONT=arial HEIGHT=20 UNDERLIN=1 \TITLE3 JUSTIFY=R LINK=\PROC PRINT DATA=sashelp.class;RUN; ODS RTF CLOSE;
表格布局也存在一些标准样式。我们主要通过PROC REPORT过程来实现各种类型表格的输出,故本文重点讨论该过程,涉及到的一些语句也适用于其他过程。布局选项可应用于报告的不同位置,最常用于页眉,列,行或完整的报告。诸如颜色,字体,对准线和边缘距离等的不同选项可根据位置进行调整。在SAS文件编制中可找到完整目录。以下例子可加以解释: ODS RTF FILE=\
PROC REPORT DATA=sashelp.shoes NOWINDOWS HEADLINE MISSING style(header)=[ just=center font_size=10pt font_weight=bold background=white] style(report)=[cellpadding=6pt];
column region subsidiary product stores sales inventory returns; DEFINE region / display; DEFINE stores / display;
DEFINE inventory / display STYLE={FONT_STYLE=italic}; DEFINE returns / display STYLE={CELLWIDTH=3cm}; compute region;
CALL DEFINE(_col_, \endcomp; compute stores; IF stores < 4 THEN DO;
CALL DEFINE(1, \END; endcomp; RUN;
ODS RTF CLOSE;
2.2.嵌入式布局功能 上文中提到的样式元素同样也适用于使用ESCAPECHAR加“S”作为指示符的其他位置。在标题和脚注中这些元素可如下例设置: ODS RTF FILE = \title1 \
title2 \title3 \title4 \
title5 \
footnote1 \PROC PRINT DATA=sashelp.class;RUN; ODS RTF CLOSE;
同样,这些元素也可用ODS RTF TEXT语句调用: ODS RTF FILE=\ODS RTF TEXT = \
ODS RTF TEXT = \ODS RTF TEXT = \ODS RTF TEXT = \
ODS RTF TEXT = \ODS RTF CLOSE;
在PROC REPORT语句输出的表格中也可使用这些样式: ODS RTF FILE=\
PROC REPORT DATA=sashelp.class NOWINDOWS HEADLINE MISSING; COLUMN sex name age height weight; DEFINE sex / group noprint; COMPUTE BEFORE sex;
LINE '^S={just=left font_weight=bold}Sex=' sex $1.; ENDCOMP; RUN;
ODS RTF CLOSE;
图2: 在PROC REPORT语句中嵌入粗体式样
这些布局块也可应用于整个板块的不同位置。例如可以仅将第一个单词加粗而其余的不加粗: ODS RTF FILE=\
PROC REPORT DATA=sashelp.class NOWINDOWS HEADLINE MISSING; COLUMN sex name age height weight; DEFINE sex / group noprint; COMPUTE BEFORE sex;
LINE '^S={just=left font_weight=bold}S^S={font_weight=medium}ex=' sex $1.; ENDCOMP; RUN;
ODS RTF CLOSE;
有时命令的顺序也很重要,如下例所见只是多了一行命令就无法实现欲想中的左对齐。为了达到文本内容的左对齐,相应命令应位于有关陈述的第一行。 ODS RTF FILE=\
PROC REPORT DATA=sashelp.class NOWINDOWS HEADLINE MISSING; column sex name age height weight; define sex / group noprint; compute before sex; line '';
line '^S={just=left font_weight=bold}Sex=' sex $1.; endcomp; RUN;
ODS RTF CLOSE; 3.对RTF进行排版
3.1.添加嵌入式RTF标签 设计RTF文件最有趣,最灵活的方法是使用直接RTF命令和字段函数。各种各样的RTF命令(标签)有不同的使用方式。当在输出中使用包含RTF命令的RTF语句时,SAS会特别的遮蔽某些特殊字符,这使得PROTECTSPECIALCHAR语句可以使保护选项失效。为了避免由于数据(例:自由文本域)中包含那些特殊字符而报错,我认为只能命令SAS只在特殊位置暴露标签。当一段文本输出的开头是{ 且结尾是 }时,SAS并不遮蔽中间的特殊字符。此外也可以用ESCAPECHAR语句来避免字符遮蔽。例如,标签“\\b”意为令一段文本字体为黑体。接下来的例子
说明了遮蔽功能,在第一行的\\b并没有作为文本在输出中显示。第二个和第三个例子中遮蔽被去除了,因此最后一个单词显示成了粗体而标签\\b被隐藏。 1) ODS RTF TEXT = \2) ODS RTF TEXT = \3) ODS RTF TEXT = \
图 3: 使用加粗标签的例子
常见RTF标签的信息参见ODS FAQS及其概念的有关SAS页面,详细说明在RTF说明书中已给出。查找特殊标签的好方法是使用类如微软文字处理软件等其他能产生RTF的软件。当文件以RTF格式保存后,再用文本编辑器打开可进行语法分析。匹配的标签添加在合适的位置上。然而绝大多数程序产生的RTF文件中包含了过多的标签,以至于为了找到相应标签需要耗费大量时间来查找和测试。
3.2.使用字段函数 字段函数是一类与前不同但非常实用的标签。由打开文件的程序(例如微软文字处理软件)所支持的所有的函数都可以在文件中建立。常用的函数有{page},表示当前页面;{pageof}表示页数,{filename}表示文件名,{createdate}表示显示日期以及{savedate}。
使用微软文字处理软件时更容易检测到字段函数,只要创建一个字段(插入—>字段?—>选择一个字段)然后按[Alt]+[F9]就可以显示字段函数。当需要创建的表格较为复杂,内容中包含了不同的格式时也可以用该方法。在Word下可以看到相关语法。
编程时应将欲嵌入文档的字段置于能表示下文描述了一个字段的特殊标签中,相应的标签为“{\\field{\\fldinst <字段名> }}”。这些标签不应在文档中被遮蔽,为此,需要使用之前介绍的方法。下例简答说明了这些不同的字段函数的用法: OPTIONS NODATE NONUMBER; ODS RTF FILE=\
TITLE1 j=r \FOOTNOTE \^R/RTF'{\\field{\\fldinst{createdate}}}' saved on ^R/RTF'{\\field{\\fldinst{savedate \\\\@ \
PROC REPORT DATA=sashelp.class NOWINDOWS HEADLINE MISSING; column sex name age height weight; compute before _page_;
line 'Table ^R/RTF\endcomp; RUN;
ODS RTF CLOSE;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于SAS软件的高级RTF排版在线全文阅读。
相关推荐: