2016-08-18 4 views
-1

Здесь A SAS код образца:SAS ODS PDF: Содержание

ODS LISTING CLOSE; 
GOPTIONS DEV=SASPRTC; 
ODS PDF FILE="test_toc.pdf" CONTENTS=YES ; 
ODS DOCUMENT NAME=REPORTTOC(WRITE); 

ODS PROCLABEL="1 - Title level 1" ; 
TITLE1 "1 - Title level 1" ; 
TITLE2 "1.1 - Title level 2: Horsepower" ; 
PROC REPORT DATA=SASHELP.CARS(obs=5) NOWINDOWS CONTENTS="1.1 - Title level 2: Horsepower"; 
    COLUMN Horsepower ; 
    DEFINE Horsepower/DISPLAY PAGE CONTENTS="" ;*Note1: According to SAS documentation, contents="" should delete "Table 1" from the TOC but it does not work; 
RUN; 
TITLE2 "1.2 - Title level 2: Type" ; 
PROC REPORT DATA=SASHELP.CARS(obs=5) NOWINDOWS CONTENTS="1.2 - Title level 2: Type"; 
    COLUMN type ; 
    DEFINE type/DISPLAY PAGE CONTENTS="" ;*Note2: idem; 
RUN; 

ODS PROCLABEL="2 - Title level 1" ; 
TITLE1 "2 - Title level 1" ; 
TITLE2 "2.1 - Title level 2: Horsepower" ; 
TITLE3 "2.1.1 - Title level 3: Horsepower" ; 
PROC REPORT DATA=SASHELP.CARS(obs=5) NOWINDOWS CONTENTS="2.1 - Title level 2: Horsepower"; 
    COLUMN Horsepower ; 
    DEFINE Horsepower/DISPLAY PAGE CONTENTS="2.1.1 - Title level 3: Horsepower" ; 
RUN; 
TITLE2 "2.2 - Title level 2: Type" ; 
TITLE3 "2.2.1 - Title level 3: Type" ; 
*Note3: Can I add another level of title (TITLE4) in the TOC before the display of this PROC REPORT? ; 
PROC REPORT DATA=SASHELP.CARS(obs=5) NOWINDOWS CONTENTS="2.2 - Title level 2: Type"; 
    COLUMN type ; 
    DEFINE type/DISPLAY PAGE CONTENTS="2.2.1 - Title level 3: Type" ; 
RUN; 

ODS DOCUMENT CLOSE; 
ODS PDF CLOSE; 
GOPTIONS RESET=ALL; 
ODS LISTING; 

PROC DOCUMENT NAME=REPORTTOC(update); 

MOVE Report#2\Report#1 TO report#1 ; 

MOVE Report#4\Report#1 TO report#3; 
RUN; 

ODS PDF FILE='test_toc.pdf' CONTENTS=YES ; 
REPLAY; RUN; 
ODS PDF CLOSE; 
QUIT; 

This code produces this TOC

Моя проблема заключается в том, что я хотел бы иметь возможность добавлять уровни в оглавлении без использования большего количества процедур (Cf . Примечание3 в примере кода).

Я хотел бы напрямую связать инструкцию TITLE в TOC без использования ODS PROCLABEL = "text" или CONTENTS = "text".

Возможно ли (я бегу SAS 9.2)?

+1

В то время как сообщество переполнения стека любит помогать людям решать проблемы, они ожидают, что люди задают вопросы, чтобы показать, что они сначала попытались решить проблему. В Google много примеров содержимого. Если вы это сделали и имеете конкретную проблему с созданием оглавления, укажите соответствующий код, который показывает проблему, с которой вы сталкиваетесь. –

+0

Что такое «автоматический набор номера»? Это ссылки/закладки? – Reeza

+0

@RobertPenridge Сначала я попытался решить мою проблему, и я видел много вещей в оглавлении, но только с 2 или 3 уровнями. «Лучший» TOC, который я сделал, использует «ODS PROCLABEL =« My Label »и с PROC DOCUMENT для реорганизации моего отчета. Но если я хочу иметь более 2 или 3 уровней, я не знаю, как это сделать. –

ответ

0

Думаю, я вижу часть проблемы. Похоже, что это опция PROCLABEL и ключевые слова CONTENTS, которые используются для создания TOC, а не ключевых слов TITLE. В ключевых словах TITLE просто подробно описывается заголовок на каждой странице. Я взял свой пример и упростили его немного, чтобы проиллюстрировать этот момент:

ODS LISTING CLOSE; 
ODS PDF FILE="test_toc.pdf" CONTENTS=YES ; 
ODS DOCUMENT NAME=REPORTTOC(WRITE); 

GOPTIONS DEV=SASPRTC; 

ODS PROCLABEL="Proc Label 1" ; 
TITLE1 "1 - Title level 1 "; 
TITLE2 "1.1 - Title level 2 " ; 
TITLE3 "1.1.1 - Title level 3 " ; 
TITLE4 "1.1.1.1 - Title level 4 " ; 
PROC REPORT DATA=SASHELP.CARS(obs=5) NOWINDOWS CONTENTS="Contents 1"; 
    COLUMN Horsepower ; 
    DEFINE Horsepower/DISPLAY PAGE CONTENTS="Contents 2" ; 
RUN; 

ODS DOCUMENT CLOSE; 
ODS PDF CLOSE; 
ODS LISTING; 

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

+0

Да, это моя проблема, не следует использовать ключевые слова «TITLE» для создания TOC. –

+0

@ A.Beauvais. Для этого вам понадобится немного больше, похожее на 'proc document'. У меня нет времени прямо сейчас, но я попытаюсь вернуться позже. –

+0

Я начал читать некоторые документы о 'proc document'. Я дам вам знать, найду ли что-нибудь интересное для решения проблемы. –