Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I am writing a book on Python and IPython. I want to insert in this book code listings of Python and IPython. For the code itself I have no problem customizing listings for my intents. Including code from IPython is a bit more tricky. I would like to make the In [x]: and Out [x]: of IPython in bold. For that I used so far the package fancyvrb, like that:

\begin{ipython}
\textbf{In [20]:} FirstQ*2
\textbf{Out[20]:} ['Jan', 'Feb', 'Mar', 'Jan', 'Feb', 'Mar']

\textbf{In [21]:} SomeList=[0]*6

\textbf{In [22]:} SomeList
\textbf{Out[22]:} [0, 0, 0, 0, 0, 0]
\end{ipython}

However it's a bit annoying to type the \textbf everytime for all the In's and Out's.

Can some one point a way in which I can define that first X columns in a verbatim environment are made in bold ?

I also tried with listings that:

\lstset{classoffset=0,
        morekeywords={In, Out,27},keywordstyle=\textbf,
    classoffset=1        
}
\begin{lstlisting}
In [27]: x=2
\end{lstlisting}

but only the words In and Out are made in Bold not the number and the brackets ...

Maybe I am asking the wrong question also ? Any insights on that will be welcomed ...

share|improve this question
    
Shouldn't it be the other way around, bold the actual input and output and gray-out or normal text the In[n]/Out[n] ? –  Yossi Farjoun Dec 22 '10 at 11:57
    
it's a matter of taste. When you use IPython on real, the "In" is Blue, the "Out" is red. I managed also to define that with morecomment=[n][\color{red}\textbf]{In\ [}{]\:}, this will be gray in the printed version. But I'd like to keep things simple - so I chose bold face for now. Maybe if I release my book as PDF I will make everything in color. But the book should be as convenient as possible to read on gray scale. –  Oz123 Dec 23 '10 at 9:11
add comment

1 Answer

up vote 16 down vote accepted

Whoof, I found a solution myself - I share it with you guys, since I see many people are giving positive feedback to my question:

\lstset{
morecomment=[n][\textbf]{In\ [}{]\:},
morecomment=[n][\textbf]{Out\ [}{]\:},
}

\begin{lstlisting}
In [27]: x=2, x=[123]
Out [27]: 2
\end{lstlisting}

Ipython Listings

share|improve this answer
    
Well done! And thanks for remembering to share your answer. –  Andrew Stacey Dec 21 '10 at 12:20
    
That's a nice solution, but there's a worry that what's actually going on is you're defining the in and out to be comments, (right?), which means that they aren't "semantically" treated like code. I don't think this is a problem, but the purist would surely want a solution that still treats the text as code, rather than comment... –  Seamus Dec 21 '10 at 16:24
    
@Seamus, well so to speak, but what I care about is to differentiate the look of "In:" and "Out:" so one who reads my book, knows that in not code to type. –  Oz123 Dec 22 '10 at 11:40
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.