6

For my project, I've been using the listings package in order to color the keywords, comments, strings, and digits in the code.

The thing is, I've managed to color the keywords, comments and strings, however, I couldn't color the digits within the code without coloring those in the comments/strings.

I've tried using the solution proposed in Coloring digits with the listings package; however, it didn't work. The digits weren't colored in the strings, but they were in the comments.

Would you be kind to suggest me a solution?

4
  • 3
    Welcome to TeX.SE. It is always best to compose a fully compilable MWE that illustrates the problem including the \documentclass and the appropriate packages so that those trying to help don't have to recreate it. Commented Jan 6, 2012 at 19:02
  • 1
    We don't even know the syntax of your code so it will be pretty hard for us to help.
    – someonr
    Commented Jan 7, 2012 at 1:09
  • 1
    Did you read this question which is link the the one you found already? If that doesn’T help too, please add an MWE as Peter said.
    – Tobi
    Commented Jan 9, 2012 at 16:02
  • Solution at tex.stackexchange.com/a/163911/21891.
    – jub0bs
    Commented Mar 6, 2014 at 0:54

1 Answer 1

4

Based on “Listings package: How can I format all numbers?” I build this code

\documentclass{minimal}
\usepackage{listings}
\usepackage{xcolor}

\newcommand{\textcolordummy}[2]{#2}

\lstset{
    language=TeX,
    commentstyle={\color{green}\let\textcolor\textcolordummy},
}

\lstdefinestyle{FormattedNumber}{%
    literate={0}{{\textcolor{blue}{0}}}{1}%
             {1}{{\textcolor{blue}{1}}}{1}%
             {2}{{\textcolor{blue}{2}}}{1}%
             {3}{{\textcolor{blue}{3}}}{1}%
             {4}{{\textcolor{blue}{4}}}{1}%
             {5}{{\textcolor{blue}{5}}}{1}%
             {6}{{\textcolor{blue}{6}}}{1}%
             {7}{{\textcolor{blue}{7}}}{1}%
             {8}{{\textcolor{blue}{8}}}{1}%
             {9}{{\textcolor{blue}{9}}}{1}%
             {.0}{{\textcolor{blue}{.0}}}{2}% Following is to ensure that only periods
             {.1}{{\textcolor{blue}{.1}}}{2}% followed by a digit are changed.
             {.2}{{\textcolor{blue}{.2}}}{2}%
             {.3}{{\textcolor{blue}{.3}}}{2}%
             {.4}{{\textcolor{blue}{.4}}}{2}%
             {.5}{{\textcolor{blue}{.5}}}{2}%
             {.6}{{\textcolor{blue}{.6}}}{2}%
             {.7}{{\textcolor{blue}{.7}}}{2}%
             {.8}{{\textcolor{blue}{.8}}}{2}%
             {.9}{{\textcolor{blue}{.9}}}{2}%
             ,
   basicstyle=\ttfamily,%  Optional to use this
}

\begin{document}

\begin{lstlisting}[style=FormattedNumber]
Text ... 123 4.5 % 123 comment
123
\end{lstlisting}
\end{document}

The trick is to let the commentstyle disable the \textcolor command.

result

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .