# Re: new lines disappearing in program listings

Daniel,

Thanks for your post, it's helped me with the problem I've been having as well. I was trying to create a new environment that used the lstlisting latex environment. This was to be able to easily create consistent program listings (as well as making it easy for users who have no latex experience) and not having to use ERT. The other goal was to be able to get floating listings with captions/ labels. The big problem I was having was that lyx was inserting extra newlines in the output. My next thought was to hack the source of LyX to add an option for the layouts of 'IsVerbatim' to better support environments that are supposed to be verbatim environments. But I quickly found that I was out of my depth, as I couldn't even find where to start for this ;) If I don't find a solution to getting the layout method to work, at least your post has given me an acceptable workaround.

Thanks again,

Michael

On Mar 5, 2008, at 1:39 AM, Daniel Lohmann wrote:



On 05.03.2008, at 05:55, Bo Peng wrote:


Have you checked out the support for lstlisting in LyX 1.5.x? I gather from the wiki that Bo Peng is responsible for it (props to Bo). It's
not on the environment roster; you get it with Insert -> Program

Listing. Right click the widget handle to see all the controllable stuff.

I know the mentioned problems with listings but they are not easy to
solve. I also recommend using a listings child document for long
listings.



I have been using the listings package quite a lot. Since LyX 1.4 it works perfectly if used in ERT boxes (pre 1.4 versions added an extra new-line after every hard line break, which required some trickery with negative linkeskip values to yield a good result.)


I never used the new listings inset, though. In my opinion, ERT boxes are just perfect for in-text listings of code. Listings clearly is one of the best documented packages available in the LaTeX world and has a very convenient interface, so "hand coding" listings options is not at all painful. All one should do is to define a listings style with all necessary default settings in the preamble (a good practice anyway). Then only two actual LaTeX lines have to be in each ERT box:

\begin{lstlisting}[style=ac]
#include "Win32Error.h"
aspect ThrowWin32Errors {
advice call( win32::Win32API() ) : after() {
if( win32::IsError( *tjp->result() ) {
throw win32::Exception();
}
}
};
\end{lstlisting}


Keeping (short) listings in ERT boxes this way has a some clear advantages:


- The on-screen formatting is easy, as within ERT a typewriter font is used. - The spell checker skips ERT boxes, hence the listings do not get spell checked (that always annoyed me with LyxCode) - Extra options can easily be passed as additional optional parameters in the square brackets.


For longer listings I recommend to not input them as LyX child documents, but keep them in ordinary text files using the \lstinputlisting command in ERT:

\lstinputlisting[style=aclisting]{../src/win32eh-app.cpp}

Just my two cents,

Daniel