2

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: default behaviour

With \renewcommand*\thelstnumber{>} the result is this: enter image description here

This is the behaviour that I want: enter image description here

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}
  • related: tex.stackexchange.com/q/159218/21891 – 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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.