[Tex/LaTex] RGB colour macro: is it possible to divide by 255 in Latex

colormacros

I'm fiddling with source code display (Objective-C) and the listings package. I want to colour comments the same green that appears in XCode. I determined that it has an RGB value of 67, 133, 34. To use this I need to divide by 255 since this is the format/value range of input parameters to

\definecolor{green}{rgb}{0.34,0.52,0.14}

Is there any way to write a macro in latex that divides by 255? Thanks.

In response to comment:

If I do

\usepackage{listings} % For source code display.
\usepackage{courier} % For source code display.
\usepackage{xcolor}

\lstset{basicstyle=\footnotesize\ttfamily}
\lstset{language=[Objective]C}
\definecolor{green}{rgb}{67,133,34}
\lstset{commentstyle=\color{green}}

instead of

\usepackage{listings} % For source code display.
\usepackage{courier} % For source code display.
\usepackage{color}

\lstset{basicstyle=\footnotesize\ttfamily}
\lstset{language=[Objective]C}
\definecolor{green}{rgb}{0.34,0.52,0.14}
\lstset{commentstyle=\color{green}}

the comment in my source code listing vanishes.

Best Answer

With the package xcolor you can define colors using the range 0–255 with the RGB color model:

\definecolor{mygreen}{RGB}{67,133,34}

(notice the uppercase letters). A more complicated way using color would be

\documentclass{article}
\usepackage{color}
\makeatletter
\newcommand{\defineRGBcolor}[2]{%
  \begingroup
  \def\color@values{\@gobble}%
  \@for\next:=#2\do{%
    \count0=\next\relax
    \multiply\count0 100
    \divide\count0 255
    \edef\color@values{\color@values,0.\number\count0}%
  }%
  \edef\x{\endgroup\noexpand\definecolor{#1}{rgb}{\color@values}}\x
}
\makeatother
\defineRGBcolor{agreen}{67, 133, 34}
\definecolor{bgreen}{rgb}{0.26,0.52,0.13}
\begin{document}
\textcolor{agreen}{ABCDEF}

\textcolor{bgreen}{ABCDEF}
\end{document}

The rgb value 0.26,0.52,0.13 is what really corresponds to 67,133,34 dividing by 255.