1

SAS からの出力を、tagsets.latex、tagsets.simpleLatex、tagsets.tablesOnlyLatex タグセット用にカスタマイズしようとしています。必要なものはほとんどあります。データ行のみで、ヘッダーはなく、他のタグはまったくありません。

これは私が得ている出力です:

\tabularnewline
\tabularnewline
Internet    & 1    & 1    & 150.00    & 150.00    & .    & 150.00    & 150.00   \tabularnewline
Mobile    & 1    & 1    & 200.00    & 200.00    & .    & 200.00    & 200.00   \tabularnewline
Phone    & 1    & 1    & 100.00    & 100.00    & .    & 100.00    & 100.00   \tabularnewline

これは私が望む出力です:

Internet    & 1    & 1    & 150.00    & 150.00    & .    & 150.00    & 150.00   \tabularnewline
Mobile    & 1    & 1    & 200.00    & 200.00    & .    & 200.00    & 200.00   \tabularnewline
Phone    & 1    & 1    & 100.00    & 100.00    & .    & 100.00    & 100.00   \tabularnewline

サンプル タグセットの作成方法は次のとおりです。

*Running this creates a new template;
Proc template;
    define tagset Tagsets.minimal;
    define event byline;end;
    define event proc_title;end;
    define event note;end;
    define event Error;end;
    define event Warn;end;
    define event Fatal;end;
    define event system_footer;end;
    define event leaf;end;
    define event proc_branch;end;
    define event branch;end;
    define event pagebreak;end;
    define event system_title;end;
    define event table;end;
    define event table_head;end;
    define event colspecs;end;
    define event colspec_entry;end;
    define event row;
            break /if ^contains( $HTMLCLASS, "data");
            put "                " NL "  " /if ^exists( $colspan);
        finish:     
            break /if cmp( $sascaption, "true");
            break /if contains( HTMLCLASS, "data");
            put "\tabularnewline" NL /if ^exists( $colspan);
    end;

    define event data;
        start:
            put VALUE /if cmp( $sascaption, "true");

            break /if cmp( $sascaption, "true");
            break /if ^contains( HTMLCLASS, "data");
            break /if exists( $colspan) | exists ( $cell_align );

            put %nrstr(" & ") /if ^cmp( COLSTART, "1");

            unset $colspan;
            set $colspan colspan;     

            put tranwrd(VALUE,"-","$-$") /if contains( HTMLCLASS, "data");
            put VALUE /if ^contains( HTMLCLASS, "data");
            put "   ";

        finish:
            break /if ^contains( HTMLCLASS, "data");
            break /if cmp( $sascaption, "true");
            break /if exists( $colspan) | exists ( $cell_align );
    end;

    parent = tagsets.simplelatex;
    end;
quit;

これにより、いくつかのサンプル データが作成されます。

data have;
   input stake bet_channel $;
   datalines; 
150 Internet  
200 Mobile 
100 Phone 
run;
 PROC PRINT data=have; RUN;

 ods tagsets.minimal file='C:\Temp\betChannel_data.tex' (notop nobot) newfile=table;
proc means data = have N MEAN MEDIAN STDDEV MIN MAX MAXDEC=2;
        VAR stake;
        label bet_channel = "Channel";
        CLASS bet_channel;
run;
ods tagsets.minimal close;    
x 'notepad C:\Temp\betChannel_data.tex';

コードから残りのすべてのタグを選別し、必要に応じて残りのタグをフォーマットすることができたので、ソリューションに非常に近づいています。たとえば、行が空の場合に「\ tabularnewline」をスキップする方法が必要です。問題は、テンプレートのこのメソッドにあると思います。

define event row;
        break /if ^contains( $HTMLCLASS, "data");
        put "                " NL "  " /if ^exists( $colspan);
    finish:     
        break /if cmp( $sascaption, "true");
        break /if contains( HTMLCLASS, "data");
        put "\tabularnewline" NL /if ^exists( $colspan);
end;

何か助けていただければ幸いです。ありがとう。

4

1 に答える 1