版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于SAS软件的高级RTF排版作者信息:Katja Gla, Bayer Schering Pharma AG, Berlin, GER摘要: SAS9的结果输出系统(ODS)RTF功能提供了多种设计多文本格式的可能性,包括RTF命令在内的附加功能使得RTF的布局设计几乎有无限种可能。本文的目的是列出使用SAS设计RTF的不同方法。重点陈述使用直接RTF命令进行自动编码或创建不同类型表单等操作的优势。此外,本文进一步探讨了一般方法下如何实现用新的RTF命令丰富结果输出功能。前言SAS中ODS的主要优势是可以创建按单元格组织的逻辑表,这些逻辑表更易于处理,排版和阅读。目前,临床研究文献倾向于使用
2、MS文档格式,SAS提供的ODSRTF可用于生成符合当前布局要求且可调整格式的表单 ,此外,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通道只需要输入两条简单
3、的命令,一条标志程序开始,一条标志结束:ODS RTF; ODS RTF CLOSE; 在这两行命令间产生的所有SAS输出结果都自动放置在了RTF文件中。文件的结构和内容与相应的输出清单一致。基本RTF文档建立程序如下:ODS RTF FILE=”C:tempclass.rtf”AUTHOR=”Katja Gla”TITLE =”Output of SASHELP.CLASS”;PROC PRINT DATA=sashelp.class; RUN;ODS RTF CLOSE;图 1: RTF输出的简单例子“FILE”命令重定向输出到另一个文件并成为SAS的缺省设置。使用ODS RTF的AURH
4、OR和TITLE语句可以将一些文档元数据信息写入RTF文件。BODYTITLE是一个非常实用的语句,可以使标题和脚注在文中而不是页眉和页脚显示。当新表格需要另起一页显示时可以使用STARTPAGE=YES语句。ODS RTF最重要的功能是排版。总布置图,边缘距离,颜色等很多选项可以通过程序来定义。使用不同的SAS语句可以产生完全不同的页面:ODS RTF FILE=”C:tempclass.rtf”BODYTITLE STARPAGE=YESSTYLE=journal;TITLE1 “Printout of sashelp.class”;FOOTNOTE1 “Note: Created on
5、February 2007”;PROC PRINT DATA=sashelp.class; RUN;ODS RTF CLOSE;更多关于ODSRTF版式的基础语句可在很多文献中找到,例如SUGI文摘125-29 1.1.3.ODSESCAPECHAR 调用字段函数和其他元素需要使用一个特殊字符,其前置代码需已在SAS中注册,后面的代码才能被定义。定义这个特殊的字符需要用到ESCAPECHAR语句:ODS ESCAPECHAR=;2.使用ODSRTF进行排版2.1.总体布局功能 一些基本的标题和脚注样式可能已经存在于系统中。例如可以选择粗体字体,字体颜色,背景色,字体大小和高度。此外还可设置对齐
6、,下划线和链接。下例将对这些用法加以说明:ODS RTF FILE=C:tempexample.rtf;TITLE1 BOLD COLOR=blue BCOLOR=yellow bold blue title on yellow background;TITLE2 FONT=arial HEIGHT=20 UNDERLIN=1 tall underlined arial title;TITLE3 JUSTIFY=R LINK= left aligned SAS link title;PROC PRINT DATA=sashelp.class;RUN;ODS RTF CLOSE;表格布局也存在一
7、些标准样式。我们主要通过PROC REPORT过程来实现各种类型表格的输出,故本文重点讨论该过程,涉及到的一些语句也适用于其他过程。布局选项可应用于报告的不同位置,最常用于页眉,列,行或完整的报告。诸如颜色,字体,对准线和边缘距离等的不同选项可根据位置进行调整。在SAS文件编制中可找到完整目录。以下例子可加以解释:ODS RTF FILE=C:tempexample.rtf;PROC REPORT DATA=sashelp.shoes NOWINDOWS HEADLINE MISSINGstyle(header)= just=center font_size=10ptfont_weight=b
8、old background=whitestyle(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_, Style, S
9、TYLE=indent=1cm);endcomp;compute stores;IF stores 字段选择一个字段)然后按Alt+F9就可以显示字段函数。当需要创建的表格较为复杂,内容中包含了不同的格式时也可以用该方法。在Word下可以看到相关语法。编程时应将欲嵌入文档的字段置于能表示下文描述了一个字段的特殊标签中,相应的标签为“fieldfldinst ”。这些标签不应在文档中被遮蔽,为此,需要使用之前介绍的方法。下例简答说明了这些不同的字段函数的用法:OPTIONS NODATE NONUMBER;ODS RTF FILE=C:tempexample.rtf;TITLE1 j=r pag
10、e fieldfldinstpage of fieldfldinstnumpages;FOOTNOTE file R/RTFfieldfldinstfilename created onR/RTFfieldfldinstcreatedate saved onR/RTFfieldfldinstsavedate d.M.yyyy;PROC REPORT DATA=sashelp.class NOWINDOWS HEADLINE MISSING;column sex name age height weight;compute before _page_;line Table R/RTFfieldf
11、ldinstSEQ table: Listing of class;endcomp;RUN;ODS RTF CLOSE;图 4: 字段函数示例标题包括了“页数 第X页/共X页”,脚注包括了文件名,保存和创建日期等信息。如示例中所见,日期有不同的表现形式。在Word下使用与检测字段函数同样的方法可得到表述这些日期形式的特殊语句。在表格中标题是已插入的序列。以上函数可用于自动编码。3.3.索引实验得出,SAS的CONTENTS函数可支持内容目录。在一些情况下,该函数是可行的,但在大多数情况下需要手动建立不同的TOC。在RTF中,一个索引也是一个简单的字段函数。Word中的标准内容目录是TOC o
12、1-3 h z u。此外,格式和水平深度可用TOC t 标题 1;1;标题 2;2;标题 3;3语句手动定义。创建其他索引也可使用这种内容目录。当使用table格式来创建表时,表集合中的一个表格的标题可用 TOC h z c Table 语句创建。在微软文字处理软件的语言版本中,有时表格内容中的分隔符是“,”而不是“;”。很多文章中包括了RTF文档格式指派的问题。在下一步中,字段函数必须嵌入到文档中。RTF中用反斜杠这个特殊字符来表示后面衔接的是标签。为了使反斜杠起到字段函数说明的功能,双反斜杠中的字符会被遮蔽。最后一个布局手法是,可以在字段不更新的情况下添加一个可视的文本,做法是在fldrs
13、lt 文本中以临时结果的形式给出文本。ODS RTF FILE=C:tempexample.rtf bodytitle;ODS RTF TEXT=R/RTFfieldfldinstTOC o 1-3 h z ufldrslt table of contents ;ODS RTF CLOSE;使用ODS RTF TEXT的一个缺点是包含文本的单元格总是以其所包含最长文本的长度作为其单元格的长度。为了更好地显示编译的TOC,单元格的宽度应该100%的利用起来,用OUTPUTWIDTH格式可以达到这种效果:ODS RTF FILE=C:tempexample.rtf bodytitle;ODS RT
14、F TEXT=S=outputwidth=100% just=lR/RTFfieldfldinstTOC o 1-3 h z ufldrslt table of contents ;ODS RTF CLOSE;3.4.行标记 当一个特定的布局需要添加特别用途线时无法用ODS格式来实现。此时,可以在指定位置创建一条线。然而,表格和单元格的划线不受SAS的影响。但使用段落制表或许能在不同位置创建线条。有关内容可参见参考文献5。以下示例简单展示了这些标签的功能:ODS RTF FILE=C:tempexample.rtf style=journal;PROC REPORT DATA=sashelp.
15、class NOWINDOWS HEADLINE MISSING;column sex name age height weight;define sex / group;compute before _page_;line R/RTFbrdrbbrdrsbrdrw15 Table: Listing;endcomp;compute after sex;line R/RTFbrdrtbrdrsbrdrw15;endcomp;RUN;ODS RTF CLOSE; 在本例中表格标题下面和每个性别组上面都有一条线。有时在处理程序中没有显示这些线,但在打印或其他视图中这些线都会显示。3.5.RTF中的缩
16、进 另一个常常用到的功能是缩进,在ASCII中前导空格常被缩进。事实上,SAS中的AXIS功能可进行缩进且不删除前导空格和RTF输出。通常,我们更需要缩进功能而不是前导空格。ODS的格式代码“INDENT”不仅可以创建模拟缩进还可以创建真正的缩进。在大多数情况下,这个代码不够灵活,无法根据不同的前导空格数来进行缩进。缩进的RTF标签是li加上一个指出缩进宽度的数字。 要显示下列例子需要先创建有前导空格的数据集:PROC SORT DATA=sashelp.class OUT=class; BY sex name; RUN;DATA class2;SET class;BY sex;LENGTH
17、text $20;text = | TRIM(name);sort=2;OUTPUT;IF first.sexTHEN DO;IF sex = F THEN text = Female;ELSE text = Male;sort = 1;age=.; height=.; weight=.;OUTPUT;END;RUN;PROC SORT DATA=class2; BY sex sort; RUN;OPTIONS MISSING=; “ASIS”代码的用法如下:ODS RTF FILE=C:tempexample.rtf style=journal;PROC REPORT DATA=class2
18、 NOWINDOWS HEADLINE MISSING style(column)=asis=on;column text age height weight;RUN;ODS RTF CLOSE; 可用以下代码来创建根据前导空格数进行缩进的程序:ODS RTF FILE=C:tempexample.rtf style=journal;PROC REPORT DATA=class2 NOWINDOWS HEADLINE MISSING;COLUMN text age height weight;DEFINE sex / GROUP noprint;COMPUTE text;spacediff =
19、 rxmatch(rxparse( ), text) * 70;IF spacediff 70THEN CALL DEFINE(_col_, Style,STYLE=cellwidth=3cmpretext=R/RTFkeepnli |compress(spacediff) | );ENDCOMP;RUN;ODS RTF CLOSE;图 5: 缩进示例 解释一下最后一个例子,我们一开始先用一个规则表达式求出了前导空格数。这个数又乘以一个常数。在本例中选用70作为宽度因为这是Times New Roman体的10号字空格的典型宽度。当存在前导空格时,这一行会按计算值(pretext)进行缩进。
20、然而,SAS在计算列宽时不会算入缩进值。因此宽度需要手动设置以避免不当断行。4.后处理 后处理是指对RTF文档设计进行可能的优化的最后一个步骤。所有前期未能体现的特征均可在后处理步骤中产生。以遇到重复标题进行自动编号的过程为例,这里有一个问题,该过程可能存在重复的字段函数,为同一个表格编了两个号码。无论在使用page变量或为表格规定宽度时,同一个表格都会被分成几个不同的表从而出现上述问题。在后处理步骤中这些重复的标题可被删除或可用引用的最后字段替换自动编号的字段。 另外一个值得注意的地方是,在使用BODYTITLE 语句时,SAS会自动为新建的表格创建一个标题行一个注脚行,有时会引起一些问题。
21、而这两行可以通过一个简单的数据步删除。此外,分页符有时不太好用;ODS RTF STARTPAGE=NOW语句常常无法运行。此外,当表格太宽太分散时,SAS不会内嵌分页符,只能在后处理中设置。 后处理如何执行并不重要。使用数据步和编程语言PEARL即可满足程序的需要,此外还可以运用微软文字处理软件所需的脚本语言VB。最重要的地方是执行的效率,对方法的认知和结果的稳定性。结论 运用前述提到的方法结合直接RTF命令和后处理过程对ODS进行操作可以实现RTF的全部过程。ODS系统提供了很多简单实用的基本功能。在进一步的发展中,我们渴望新功能的实施以减少需要进行的特殊处理。 值得注意的是,ODS MA
22、RKUP中RTF的标签集的一个大优点是不会在每一个报告中使用特殊标签而是在默认标签集中包含了这些特殊标签。在SAS9.2版本中我们将会知道这个功能是否灵活好用。总的来说,SAS中有不同复杂度,不同范围且灵活的操作可用于RTF布局。首先,尽可能用ODS RTF来实现操作。源代码应是明白易懂的。接下来,缺失的功能应尝试给出直接RTF命令来实现。如果这样还不能解决问题,最后一步才是后处理。因为后处理程序可能非常复杂,所以应尽量少使用后处理。在SAS系统中灵活使用这三步可以实现一切过程。参考文献1 Lauren Haworth 2004 SAS with Style: Creating your own ODS Style Template for RTF Output”, SUGI 29 Paper 125-29, 2 SAS Support “OD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 张家口市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(培优a卷)
- 2026年崇左市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(满分必刷)
- 茂名市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)有完整答案详解
- 汕头市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(考试直接用)
- 2026年崇左市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(综合卷)
- 上海市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)附答案详解(黄金题型)
- 安庆市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)及答案详解(名师系列)
- 铜陵市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解ab卷
- 枣庄市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(典型题)
- 宝鸡市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解
- 消防安全知识培训课件及考试题库
- 永久起搏器植入术课件
- 中国移动杭州市2025秋招笔试行测题库及答案通信技术类
- 卫生厅课题申报书范文
- 2025年甘肃省平凉市庄浪县第五幼儿园教育集团保健医招聘考试参考试题及答案解析
- 消防维保业务培训课件
- 信息技术基础教程(WPS版)课件 第3章 Windows 10 操作系统的使用
- 螺杆空压机工作原理
- 湖北大数据集团有限公司招聘笔试题库2025
- 全国计算机一级B级考试模拟试题集锦
- 2025年蜀道集团笔试题目及答案
评论
0/150
提交评论