Anzeige:
Ergebnis 1 bis 6 von 6

Thema: SAS-Code in LaTeX darstellen

  1. #1
    Registrierter Benutzer
    Registriert seit
    15.11.2009
    Beiträge
    69

    SAS-Code in LaTeX darstellen

    Hallo,

    ich muss einige Seiten SAS-Code in LaTeX darstellen und würde gerne wissen, ob jemand Erfahrung damit hat und mir sagen kann, ob ich auf dem richtigen Weg bin.

    Bisher nutze ich nur das listings-Paket. Dabei treten allerdings einige Probleme auf.

    1. Beispielsweise werden lange Programmzeilen nicht umgebrochen und gehen über den Seitenrand hinaus.

    2. Auch die Farbdarstellung von SAS, die den Code wesentlich übersichtlicher macht, wird nicht automatisch angewendet. Wie die entsprechenden Wörter farbig dargestellt werden sollen, muss manuell eingegeben werden (wie unten für DATA, INPUT usw. geschehen). Hierfür muss es doch eine Lösung geben, wenn sogar in Foren eingegebener SAS-Code http://redscope.org/node/1344 farbig richtig dargestellt wird?

    3. Ich habe es auf meinem Arbeits-Rechner noch nie geschafft, ein LaTeX-Paket so zu installieren, dass es gefunden wird... Darum vorab die Frage: Hat ZUFÄLLIG jemand Erfahrung mit dem Paket SASdisplay und wäre diese Lösung meiner bisherigen vorzuziehen?

    Vielen Dank im Voraus,
    Myri

    Code:
    \documentclass[oneside,parskip=full-]{scrbook}
    
    \usepackage[T1]{fontenc}
    
    \usepackage[ngerman]{babel}
    
    \usepackage{listings,color,xcolor}
    
    
    \colorlet{SAS_darkblue}{blue!80!black}
    \colorlet{SAS_blue}{blue}
    
    \begin{document}
    
    \lstset{language=S,
        emph={DATA}, emphstyle=\color{SAS_darkblue},
        emph={[2]INPUT,DATALINES,{CREATE TABLE}}, emphstyle={[2]\color{SAS_blue}}
        }
    
    \begin{lstlisting}
    DATA Quell;
        INPUT Menge Preis;
    DATALINES;
    10 4.99
    12 4.99
    ;
    
    PROC SQL;
        CREATE TABLE
                Quell2
            AS SELECT Menge2, Preis2
            FROM Quell (RENAME=Menge=Menge2 RENAME=Preis=Preis2);
    QUIT;
    \end{lstlisting}
    
    
    \end{document}

  2. #2
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Zitat Zitat von Myri Beitrag anzeigen
    1. Beispielsweise werden lange Programmzeilen nicht umgebrochen und gehen über den Seitenrand hinaus.
    Dafür gibt es die Option breaklines

    Zitat Zitat von Myri Beitrag anzeigen
    2. Auch die Farbdarstellung von SAS, die den Code wesentlich übersichtlicher macht, wird nicht automatisch angewendet.
    Dafür musst du wirklich einige Wörter entsprechend angeben.
    Einige funktionieren aber schon mit:
    Code:
    \lstset{language=SAS,
       keywordstyle=\color{green},
        }


    Code:
    \documentclass[oneside,parskip=full-]{scrbook}
    
    \usepackage[T1]{fontenc}
    
    \usepackage[ngerman]{babel}
    
    \usepackage{listings,xcolor}
    
    
    \colorlet{SAS_darkblue}{blue!80!black}
    \colorlet{SAS_blue}{blue}
    
    \begin{document}
    
    \lstset{language=SAS,
       keywordstyle=\color{green},
        }
    
    \begin{lstlisting}
    DATA Quell;
        INPUT Menge Preis;
    DATALINES;
    10 4.99
    12 4.99
    ;
    
    PROC SQL;
        CREATE TABLE
                Quell2
            AS SELECT Menge2, Preis2
            FROM Quell (RENAME=Menge=Menge2 RENAME=Preis=Preis2);
    QUIT;
    \end{lstlisting}
    
    
    \end{document}
    Gruß
    Marco

  3. #3
    Registrierter Benutzer
    Registriert seit
    15.11.2009
    Beiträge
    69
    Danke für die Antwort und den Hinweis mit breaklines!

    Dann werd ich mich jetzt mal intensiver mit listings beschäftigen...


    P.S.: keywordstyle ordnet leider Wörtern die gleiche Farbe zu, die in SAS in unterschiedlichen Farben angezeigt werden.

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.11.2009
    Beiträge
    69
    Hmmm... leider verstehe ich trotz intensiver Beschäftigung mit dem Paket listings nicht, welchen Mehrwert es zur Darstellung von Programm-Code liefern soll...

    Oder vielleicht wollte man es so breit aufstellen (alle möglichen Sprachen), dass es für vereinzelte Sprachen (wie eben SAS) unbrauchbar ist.

    Hat jemand positive Erfahrungen gemacht oder eine andere Empfehlung?

    Sonst werde ich wohl langsam anfangen müssen, alles per Hand in LaTeX einzugeben. Dann lassen sich wenigstens die farblichen Hervorhebungen korrekt setzen (insbesondere bei im Programm-Code enthaltenen Kommentaren zur Abgrenzung sehr wichtig) und das Ganze in einen Node von tikz gepackt sieht sauberer aus als der unkonsistente Hintergrund, den listings zeichnet.

  5. #5
    Registrierter Benutzer
    Registriert seit
    09.07.2004
    Beiträge
    2.365
    Schau mal hier: http://data.imf.au.dk/system/latex/l...SASdisplay.pdf

    Vielleicht hilft's so:

    Code:
    \documentclass{article}
    
    \usepackage[utf8x]{inputenc}
    \usepackage[ngerman]{babel}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}
    \usepackage[scaled=.8]{beramono}
    
    \usepackage{listings}
    \usepackage[svgnames]{xcolor}
    
    
    \begin{document}
    
    \section*{Listing -- SAS code}
    \lstset{%
      language    = SAS,%
      basicstyle=\ttfamily\small,%
      keywordstyle= \color{DarkGreen},%
      %
      morekeywords={SASAUTOS,LABEL},
      morekeywords={PROC,INSIGHT,SCATTER,QUIT,FORMAT,VALUE},
      morekeywords={DISCRIM,WCOV,WSSCP,METHOD,POOL},
      morekeywords={DATALINES,WITH,OPTIONS,GPLOT,LS,PS},
      morekeywords={SYSLIN,INSTRUMENTS,ENDOGENOUS,EXOGENOUS,IDENTITY,%
        WEIGHT,OLS,2SLS,LIML,SUR,ITSUR,3SLS,IT3SLS,FIML,MELO},
      morekeywords={MODEL,OUT,STDR,STDP,H,R,STUDENT,RSTUDENT,PRESS,%
        UCL,LCL,UCLM,LCLM,CL},
      morekeywords={FREQ,TABLES},
      morekeywords={GLM,CLASS,LSMEANS,MANOVA,MTEST,REG,PRINTE,%
        FILENAME,GOPTIONS,DEV,CTEXT,GACCESS,NOPRINT,CONTRAST,ESTIMATE,RANDOM},
      morekeywords={SS1,SS2,SS3,SSD,SS4,CLI,CLM,CLPARM},
      morekeywords={NOUNI,OUTPUT},
      morekeywords={E,E1,E2,E3,SOLUTION,TEST},%
      morekeywords={IML,USE,READ,ALL,INTO,PRINT,COLNAME,ROWNAME,CREATE,%
        FROM,APPEND},
      morekeywords={MIXED,DDFM,REPEATED,PARMS,PRIOR,ALPHA,TYPE},
      morekeywords={GREPLAY,NOFS,NOBYLINE,IGOUT,TC,TEMPLATE,TREPLAY,GOUT},
      morekeywords={GSFMODE,TARGETDEVICE,ROTATE,CBACK,GUNIT,HTITLE,HTEXT,%
        FTEXT,CSYMBOL,ANNOTATE},
      morekeywords={SYMBOL,SYMBOL1,SYMBOL2,SYMBOL3,SYMBOL4,SYMBOL5,SYMBOL6,%
        SYMBOL7,SYMBOL8},
      morekeywords={LEGEND1,LEGEND2,LEGEND3,ANGLE},
      morekeywords={INTERPOL,I},
      morekeywords={AXIS,AXIS1,AXIS2,AXIS3,AXIS4,AXIS5,AXIS6,AXIS7,AXIS8,%
        HAXIS,VAXIS,ORDER},
      morekeywords={MINOR,WIDTH,COLOR,GPLOT,PLOT,OVERLAY},
      morekeywords={I,V,L,H,C,ANGLE,NOLEGEND,USS,OF},
      morekeywords={TITLE,TITLE1,TITLE2,TITLE3,TITLE4,TITLE5,TITLE6},
      morekeywords={PRINCOMP,COV},
      morekeywords={GSFNAME,GSASFILE,INCLUDE},
      morekeywords={GENMOD,LINK,FWDLINK,INVLINK,ASSESS,ASSESSMENT,OBSTATS,%
        SCALE,DSCALE,PSCALE},
      morekeywords={TYPE1,TYPE3,WALD,WALDCI,XVARS},
      morekeywords={DIST,TOTAL,NOINT,OFFSET},
      morekeywords={ODS,LISTING,ParameterEstimates,RESDEV,STDRESDEV,%
        PREDICTED,RESCHI,RESLIK,STDRESCHI},
      morekeywords={XBETA,STDXBETA,LOWER,UPPER,HESSWGT},
      morekeywords={FWDLINK,INVLINK,VARIANCE,DEVIANCE},
      % 
      commentstyle= \color{gray}\slshape,
      morecomment = [s]{[]},% Kommentare in eckigen Klammern
      stringstyle = \color{gray}\slshape,
      morestring  = [b]",% Zitate in " "
      breaklines  = true,%
      frame=single,% rahmen eine linie
      framesep=3pt,% abstand rahmen-inhalt
      xleftmargin=0em,%
      xrightmargin=5pt,% rand rechts
      belowcaptionskip=7pt,%
      aboveskip=10pt plus 3pt minus 5pt,%
      belowskip=10pt plus 3pt minus 5pt,%
    }
    
    \begin{lstlisting}[caption={Beispiel SAS Code}]
    DATA Quell;
        INPUT Menge Preis;
    DATALINES;
    10 4.99
    12 4.99
    ;
                [Alle Kommentare in eckigen Klammern] 
                "Alle Zitate in Anfuehrungsstrichen"
    PROC SQL;
        CREATE TABLE
                Quell2
            AS SELECT Menge2, Preis2
            FROM Quell (RENAME=Menge=Menge2 RENAME=Preis=Preis2);
    QUIT;
    \end{lstlisting}
    
    \end{document}
    edico

  6. #6
    Registrierter Benutzer
    Registriert seit
    15.11.2009
    Beiträge
    69
    Hallo und danke für die Antwort!

    Ich denke auch, dass man mit SASDisplay vielleicht mehr reißen kann (ist ja offenbar für SAS ausgelegt).

    Sobald ich Zeit habe und rausfinde, wie man auf meinem Arbeitsrechner (MacOS) die Pakete so installiert, dass LaTeX sie auch erkennt, melde ich mich noch mal in diesem Thread.

    Momentan sieht der von Hand eingegebene Code einfach besser und übersichtlicher aus als meine bisherigen listings-Versuche.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •