74

What is the best way of inserting python/C++ code in a Lyx document? The code is small examples less than 20 lines.

My Lyx document is using the Book document class.

Orjanp

Orjanp
  • 10,641
  • 12
  • 36
  • 39
  • Here's a related answer for javascript syntax highlighting: http://stackoverflow.com/questions/10420757/syntax-highlighting-javascript-in-lyx-insert-child-program-listing – acronym Jul 28 '14 at 20:23

3 Answers3

74

I prefer to insert the listings as a child document, so the code is grabbed directly from a file that you can further edit and keep updated (you avoid to duplicate an information and maintenance is a lot easier). To do this in Lyx:
Insert->File->Child document
Then in the window that will appear change the type to program listing and configure it as you need, for example you could want to enter the parameter language=Python (you can type a ? to view all the parameters).
A set of parameters I usually use is:

breaklines=true //--> breaks lines to margin
captionpos=b  //--> caption at the bottom of the listing (default is "t")
frame=tb  //--> frame at the top and at the bottom of the listing
language=Python  //--> syntax highlighting for python
Vincenzo Pii
  • 18,961
  • 8
  • 39
  • 49
67

There should be an Insert -> Program Listing option. That uses listings Latex package, so you should have that installed. The support seems to have been added in Lyx 1.5, and from their screenshot, it seems it gives you a lot of customization options.

Alok Singhal
  • 93,253
  • 21
  • 125
  • 158
  • Thanks. I'll have a look at it. – Orjanp Jan 24 '10 at 18:03
  • 7
    What I did was this. First I inserted a , then a , and in the end a . By having a box around it I can have a visible frame around the code. – Orjanp Jan 27 '10 at 14:41
  • 11
    Is there any way to have syntax highlighting and line numbers? – Arun Jan 17 '11 at 01:01
  • 4
    To add a caption, place your cursor inside the listing and click on "Insert -> Caption". By default the caption will be shown above the listing. To move the caption to the bottom, open the listing settings dialog ("Edit -> Listing Settings") and switch to the "Advanced" tab. Then add the parameter "captionpos=b". – tsauerwein May 28 '12 at 09:35
  • 1
    One further tip: If you want to change the numbering from "Listing 1.1/1.2/..." to "Listing 1/2/...", add "\lstset{numberbychapter=false}" to your document preamble. See also [Continuous v. per-chapter/section numbering of figures, tables, and other document elements](http://tex.stackexchange.com/a/28334). – tsauerwein Jun 03 '12 at 10:35
  • 6
    @Arun Under "Edit -> Listing Settings" you can choose a programming language (Python, C, ...) – Kipton Barros Aug 23 '13 at 23:45
  • 1
    An alternative to @Orjanp's suggested is the built-in option "frame=lines", which you can enter under "Advanced Settings" from within the "Edit -> List Settings" menu item. – Kipton Barros Aug 23 '13 at 23:53
6

The insert->Program Listing feature works great. I just want to add that if you are on Mac, and try to directly paste, using command+V or right-click+paste, a block of code into the program listing, the whitespace will not be preserved, and you have to manually insert the whitespace by typing tabs, returns, etc.

A very easy way to get around this is is to paste using shift+command+V. This preserves all the whitespace of your original source code.

xdavidliu
  • 2,411
  • 14
  • 33
  • How can i center it into the middle of the page? And can change the background color? like grey. – rld Jan 16 '18 at 23:11