Sie sind hier

Markieren und nummerieren von Zeilen in Listings

Hallo, ich möchte gerne einzelne oder mehrere Zeilen in Listings markieren können, das habe ich auch mit den untenstehenden Code geschafft, den ich bei http://tug.org/TeXnik/mainFAQ.cgi gefunden habe. Aber das ist noch nicht alles, ich möchte gerne vor den markierten Zeilen eine Nummer darvorstellen, die ich mit dem Befehl \ding{202} erreichen will. Soweit habe ich das auch geschafft, nur dass es nicht funktioniert, so wie ich mir das vorstelle. Es sollte so funktionieren, dass der Befehl \HL{\ding{203}} einen Parameter entgegennimmt, dieses geht auch, nur dann bekomme ich ein unerwünschtes Ergebnis und ich habe schon alles versucht. Dafür reicht mein Latex Wissen nicht aus. Es fängt schon bei den Befehlen \gdef und \xdef an, deren Bedeutung ich nicht kenne.

Es ist für meine Diplo sehr wichtig, wäre für Hilfe sehr dankbar.

\documentclass{scrartcl}
\usepackage{pifont}
\usepackage{calc}
\usepackage{xcolor}
\definecolor{gray}{rgb}{0.87,0.87,0.87}
\usepackage{listings}

\newlength{\dinglength}
\setlength{\dinglength}{0pt-\widthof{\ding{202}}-5pt}
\makeatletter
\newcommand\HL[1][\ding{202}]{\hspace{\dinglength}#1\hspace{5pt}%
  \gdef\lst@alloverstyle##1{%
    \fboxrule=0pt
    \fboxsep=0pt
    \colorbox{gray}{\strut##1}%
  }%
}
\newcommand\HLoff{%
  \xdef\lst@alloverstyle##1{##1}%
}
\makeatother

\begin{document}
\begin{lstlisting}[escapechar=\%]
%\HL{\ding{203}}%int main(int argc, char **argv){%\HLoff%
printf("Hello world!\n");
%\HL%return 0;%\HLoff%
}
\end{lstlisting}
\end{document}
forum: 

Ich habe das Programm soweit verändert das ich mit keyval die Parameter übergeben kann, nur wenn ich eine Farbe ändern möchte, bleibt immer nur die Standard definierte Farbe erhalten. Hat vielleicht jemand eine Idee ???

\documentclass{scrartcl}
\usepackage{pifont}
\usepackage{calc}
\usepackage{keyval}
\usepackage{xcolor}
\definecolor{gray}{rgb}{0.87,0.87,0.87}
\definecolor{grayy}{rgb}{0.57,0.57,0.57}
\usepackage{listings}
%\lstset{language=C,escapechar=\%}



\newlength{\dinglength}
\makeatletter
\newcommand{\HL@farbe}{gray}
\newcommand{\HL@symbol}{\ding{202}}
\define@key{HL}{farbe}[\HL@farbe]{\renewcommand{\HL@farbe}{#1}}
\define@key{HL}{symbol}[\HL@symbol]{\renewcommand{\HL@symbol}{#1}}

\newcommand\HL[1][]{%
    \setkeys{HL}{#1}
    \setlength{\dinglength}{0pt-\widthof{\HL@symbol}-5pt}%
    \hspace{\dinglength}\HL@symbol\hspace{5pt}%
    \gdef\lst@alloverstyle##1{%
        \fboxrule=0pt
        \fboxsep=0pt
        \colorbox{\HL@farbe}{\strut##1}%
    }%
}
\newcommand\HLoff{%
    \xdef\lst@alloverstyle##1{##1}%
}
\makeatother

\begin{document}
\begin{lstlisting}[escapeinside={/*@}{@*/}]
/*@\HL[symbol=\ding{203},farbe=grayy]@*/int main(int argc, char **argv){/*@\HLoff@*/
printf("Hello world!\n"); /* das */
/*@\HL@*/return 0;/*@\HLoff@*/
}
\end{lstlisting}
\end{document}
Comments for "Markieren und nummerieren von Zeilen in Listings" abonnieren