2014-11-03 3 views
0

Это может быть достигнуто с помощью ODS, но у меня есть ограничение, что я не предполагается использовать ODS, как я использую каталог. Мне нужно генерировать RTF-отчеты, в которых есть супер и индексный текст. Ниже приведен пример кода, к которому я обращался, который использует ODS.печати надстрочный или подстрочный в SAS без ODS

ods rtf file='temp.rtf'; 
ods escapechar='^'; 

proc print data=sashelp.class; 
    title 'this value is superscripted ^{super 2} '; 
    title2 'this value is subscripted ^{sub 2} '; 
run; 

ods rtf close; 

Я хочу напечатать надстрочный или подстрочный текст в заголовке или сносках отчета Proc.

+0

Подождите, я действительно не понимаю этого сейчас, когда прочитал его снова. ЛИСТИНГ отличается от RTF, они не связаны друг с другом. Можете ли вы объяснить ограничение более подробно (дословно, если это возможно, особенно если это вопрос домашней работы)? – Joe

ответ

0

Я не верю, что это возможно в ODS LISTING. (Любой, кто говорит вам, что вы не используете ODS, ошибочен, потому что листинг - это выход для вывода ODS, как и все другие адресаты, но я предполагаю, что вы имеете в виду, что вы не можете использовать ничего, кроме листинга ODS, или использовать некоторые от общих трюков ODS, таких как ODS ESCAPECHAR).

Однако в листинге ODS нет доступа к нему с точки зрения воспроизведения шрифтов. Вы можете поставить супер-2:

ods listing; 
proc print data=sashelp.class; 
title "Fun²"; 
run; 
ods listing close; 

буквально введя символ в текст, но это не для всех возможных надстрочный, и я не думаю, что есть подстрочные эквиваленты в списке шрифтов.

Вы можете найти список персонажей онлайн, например in this paper. Вы можете вставить их с помощью '##'x, где ## - двухзначный шестнадцатеричный код для символа, или путем ввода их (например, alt + 0178 для ², или используйте карту символов, чтобы найти их, убедитесь, что вы используете правильный шрифт.)

1

Глупые ограничения требуют одинаково глупого решения - кому нужно ODS escapechar, когда вы можете жестко закодировать rtf control sequences for subscripts and superscripts?

x 'cd c:\temp'; 
/*Produce initial rtf without superscripts/subscripts*/ 
ods rtf file='temp.rtf'; 

proc print data=sashelp.class; 
    title 'this value is superscripted 2'; 
    title2 'this value is subscripted 2'; 
run; 

ods rtf close; 

/*Add them in manually as per .rtf file format specification*/ 
data _null_; 
    infile "c:\temp\temp.rtf" lrecl = 32767; 
    file "c:\temp\want.rtf"; 
    input; 
    length rtf $32767; 
    rtf = _infile_; 
    rtf = tranwrd(rtf, 'this value is superscripted 2', 'this value is superscripted \super 2 \nosupersub'); 
    rtf = tranwrd(rtf, 'this value is subscripted 2', 'this value is subscripted \sub 2 \nosupersub'); 
    put rtf; 
run; 
+0

Я полностью смущен вопросом, но мне нравится этот ответ, действительно ли он исправляет проблему! – Joe