PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : LyX: Quellcode-Beispiele in Textblock einfügen?



solquery
08-11-2008, 20:21
Damit ich mit meinem Programmierhandbuch loslegen kann, muss ich noch wissen, wie Programmierquellcodes eingefügt werden können.

Ich entwickle Software mit Eclipse. Ich könnte den Quellcode von Eclipse raus kopieren und dort einfügen. Dann würde das schöne Syntax-Highlighting von Eclipse verloren gehen. Nicht unbedingt tragisch.

Ich habe folgende Konfiguration:



\textclass scrbook
\language ngerman


Kann ich diesem "scrbook" irgendwie beibringen, das es einen Stil für Programmierquellcodes gibt? Also ein hellgrauer Kasten, in dem Programmierquellcode in Courier New oder ähnliches auftaucht?

Das erscheint mir alles noch sehr suboptimal. Gibt es für scrbook vielleicht bereits gute Erweiterungen für genau so etwas?

Andere Möglichkeit: Ich mache von Eclipse Screenshots, und füge diese direkt in das Buch ein. Sehr aufwendig. Bei Änderungen sehr "witzig". Wenn es über mehrere Seiten geht, goldene A-Karte. Also wohl keine gute Lösung.

Bin für jeden Tipp dankbar.

Donalduck
08-11-2008, 20:25
Das Listings-Paket (http://en.wikibooks.org/wiki/LaTeX/Packages/Listings) ist dafür gemacht worden.
Damit kannst du auch direkt die Quellcode-Dateien einbinden, so dass du sie nicht in dein Dokuemnt kopierne musst.

solquery
08-11-2008, 20:33
Klingt gut.

Kann ich denn trotzdem noch die scrbook Klasse benutzen, und dieses Listings-Paket dort einbinden?

Und ist es trotzdem möglich Beispiel-Programmiercode direkt einzufügen anstatt ihn per Referenz auf eine Datei einzubinden? Denn oft sind es nur Fetzen aus einer größeren Anwendung, oder auch einfach nur exemplarische Code-Schnippsel.

Hier mal der Quelltext meines scrbook welches ich heute mit LyX angelegt habe:



#LyX 1.5.6 created this file. For more info see http://www.lyx.org/
\lyxformat 276
\begin_document
\begin_header
\textclass scrbook
\language ngerman
\inputencoding auto
\font_roman default
\font_sans default
\font_typewriter default
\font_default_family default
\font_sc false
\font_osf false
\font_sf_scale 100
\font_tt_scale 100
\graphics default
\paperfontsize 11
\spacing single
\papersize a4paper
\use_geometry false
\use_amsmath 1
\use_esint 1
\cite_engine basic
\use_bibtopic false
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\defskip medskip
\quotes_language danish
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\author ""
\end_header

\begin_body


Ich nehme mal an das ich dort dann irgendwo das Listings-Package referenzieren müsste?

Donalduck
08-11-2008, 20:37
Ja, klar kannst du den auch so als Schnipsel einbinden.
Und ja, die Klasse ändert sich dadurch natürlich nicht.
Wie du Pakete einbindest? umm... Du kannst doch auch LaTeX Code einfügen, dann schreibst du in den Header:
\usepackage{listings}

Stefan_K
08-11-2008, 20:38
Hallo,

listings kannst Du mit scrbook verwenden. Versuche im LyX-Menü: Einfügen -> Programmlisting. Listings brauchen nicht als externe Dateien vorzuliegen, Du kannst Code-Teile direkt im Dokument zitieren. Siehe listings-Doku (http://www.ctan.org/tex-archive/macros/latex/contrib/listings/listings.pdf).

Viele Grüße,

Stefan

solquery
08-11-2008, 21:29
Danke! Ich hatte tatsächlich diesen Menüpunkt. D.h. das Listings-Paket ist bei scrbook bereits enthalten?

In einer Textdatei (Notepad unter Windows) hatte ich folgendes Beispiel:



public static void main() {
test();
}


man beachte die Einrückung durch den Tabulator. In LyX kann ich ja keine Tabulatoren setzen, richtig? In LyX war der Quellcode nach dem einfügen in einer Zeile. Die Zeilen konnte ich mit ENTER hinzufügen, aber ich konnte das test(); nicht einrücken. Nehme an das es dafür noch einen Trick gibt.

So schaut der Quellcode des Dokuments an der Stelle aus:



\begingroup
\inputencoding{latin1}
\begin{lstlisting}
public static void main() {
test();
}
\end{lstlisting}
\endgroup


Kann man in LyX auch selbst Stile für bestimmte Dinge definieren, die man dann immer irgendwo auswählen kann? Ich möchte die Quellcode-Boxen hellgrau darstellen.

Und wie ist das mit Zeilennummerierungen? Gibt es dafür auch etwas entsprechendes, oder muss ich die von Hand einbauen?

Stefan_K
08-11-2008, 21:48
D.h. das Listings-Paket ist bei scrbook bereits enthalten?

Nein, das bedeutet, es wird von LyX unterstützt und durch LyX bereits eingebunden. Mit LaTeX müsstest Du es wie weiter oben geschrieben per \usepackage einbinden. Mit scrbook hängt es nicht zusammen, sollte jedoch kompatibel sein (war es nicht in jeder Version).


Kann man in LyX auch selbst Stile für bestimmte Dinge definieren, die man dann immer irgendwo auswählen kann? Ich möchte die Quellcode-Boxen hellgrau darstellen.
Das geht durch Einstellungen bzw. Optionen des listing-Pakets. Näheres steht in der oben verlinkten Doku.


Und wie ist das mit Zeilennummerierungen? Gibt es dafür auch etwas entsprechendes, oder muss ich die von Hand einbauen?
Das kann listings auch, siehe Doku.

Stefan

solquery
08-11-2008, 21:58
Danke für die Infos. Was ich der Doku leider noch nicht entnehmen konnte ist, wie das mit den Einrückungen funktioniert. Muss ich dafür spezielle Zeichenfolgen eingeben?

Donalduck
08-11-2008, 22:04
Das ganze steht genauer auf Seite 11+13 der Doku erklärt.
Im Prinzip musst du nur ganz normale Tabs machen, das wird genauso übersetzt.

solquery
08-11-2008, 22:47
Ich stelle gerade einen großen Unterschied zwischen LyX > "Einfügen" > Programmlisting und der Syntax in dem Listings-Tutorial fest.



\begingroup
\inputencoding{latin1}
\begin{lstlisting}
public static void main() {
test();
}
\end{lstlisting}
\endgroup


und in der Doku sieht die Sache ganz anders aus:



\begin{lstlisting}[firstnumber=100]
for i:=maxint to 0 do
begin
{ do nothing }
end;
\end{lstlisting}
And we continue the listing:
\begin{lstlisting}[firstnumber=last]
Write(’Case insensitive ’);
WritE(’Pascal keywords.’);
\end{lstlisting}


wobei letzteres überhaupt keine Wirkung auf das Dokument hat, wenn ich es mit einem anderen Editor manuell in den Quellcode einfüge.

Wenn ich ein TAB eingebe (Tabulator), erscheint unten links in LyX eine Meldung "Befehl deaktiviert".