# How to mix LaTeX listings numbering with custom characters?

In order to display a command-line GAP session using the listings package, I need to distinguish between input and output. I tried to do this by appending a marker in front of every output line, so that those lines could be customized by for instance moredelim.

Now, is it possible to also edit the listings numbering? Ideally, I would like to redefine \thelstnumber so that default "input" lines are numbered and "output" lines are preceded by a fixed character, such as '>'.

This is the default behaviour:

With \renewcommand*\thelstnumber{>} the result is this:

This is the behaviour that I want:

MWE:

\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}

%code style
\lstset{basicstyle=\fontfamily{cmtt}\selectfont,
numbers=left,numberstyle=\fontfamily{cmtt}\selectfont\color{red}}
\lstdefinelanguage{GAP}{moredelim=[il][\itshape]{>}}

%OVERWRITES ALL NUMBERS TO '>'
\renewcommand*\thelstnumber{>}

%WANTED EFFECT
%\renewcommand*\thelstnumber{
%   IF (FIRST CHARACTER OF LINE IS '>') THEN ('>')
%   ELSE (normal numbering)
%}

%--------------------------------------------------------

\begin{document}

\begin{lstlisting}[language=GAP]
U := (1,3,8,6)(2,5,7,4)(9,33,25,17)(10,34,26,18)(11,35,27,19);
L := (9,11,16,14)(10,13,15,12)(1,17,41,40)(4,20,44,37)(6,22,46,35);
F := (17,19,24,22)(18,21,23,20)(6,25,43,16)(7,28,42,13)(8,30,41,11);
R := (25,27,32,30)(26,29,31,28)(3,38,43,19)(5,36,45,21)(8,33,48,24);
B := (33,35,40,38)(34,37,39,36)(3,9,46,32)(2,12,47,29)(1,14,48,27);
D := (41,43,48,46)(42,45,47,44)(14,22,30,38)(15,23,31,39)(16,24,32,40);

cube := Group(U,L,F,R,B,D);

Size( cube );
>43252003274489856000

Collected(Factors(Size(cube)));
>[ [ 2, 27 ], [ 3, 14 ], [ 5, 3 ], [ 7, 2 ], [ 11, 1 ] ]
\end{lstlisting}

\end{document}

• – jubobs Apr 6 '15 at 8:21
• Thanks @Jubobs. I already tried some fiddling with listings hooks but the main problem is how to switch between numbering and other characters in the \thelstnumber. – Jens Bossaert Apr 6 '15 at 10:06