PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verschiedene Listings vordefinieren



thenktor
15-01-2009, 02:12
Hallo
Ich versuche mich gerade darin, etwas mit Latex zu schreiben und stehe vor einem Problem, das mich jetzt schon den ganzen Abend gekostet hat.

Ich möchte verschiedene Sachen in meinem Text einbetten:
1. Zitate aus der Linux Dokumentation, z.B.:

CONFIG_IKCONFIG:
This option enables the complete Linux kernel ".config" file
contents to be saved in the kernel. It provides documentation
of which kernel options are used in a running kernel or in an
on-disk kernel. This information can be extracted from the kernel
image file with the script scripts/extract-ikconfig and used as
input to rebuild the current kernel or to build another kernel.
It can also be extracted from a running kernel by reading
/proc/config.gz if enabled (below).

2. Bash Befehle, z.B.:

# cd /usr/src/linux-2.6.28elan
# make menuconfig

3. Quellcode



Für den Quellcode benutze ich momentan das listings Paket, was auch gut funktioniert. Habe mir da so etwas definiert:

\lstset{
basicstyle=\scriptsize\ttfamily\bfseries,
keywordstyle=\color{Indigo},
commentstyle=\color{DarkOliveGreen},
stringstyle=\color{FireBrick},
tabsize=2,
captionpos=tb,
framexleftmargin=3pt,
backgroundcolor=\color{Honeydew},
breaklines=true}

Für 1. und 2. nutze ich momentan das fancyvrb Paket. Habe mir da auch 2 Vorlagen gemacht:

\DefineVerbatimEnvironment
{bash}{Verbatim}
{frame=single, numbers=left, fontsize=\small, fontseries=b}


\DefineVerbatimEnvironment
{kernelquote}{Verbatim}
{fontfamily=helvetica, fontshape=it}
Das funktioniert aber mehr schlecht als recht. Bei den bash-Befehlen braucht man manchmal Zeilenumbrüche, was mit Verbatim wohl nicht geht. Für die Zitate aus den Kernelquellen ist das auch irgendwie unflexibel.

Ich würde mir also am liebsten solche Vorlagen wie bei fancyvrb auch für listings machen, damit ich dann an passender Stelle mit einem Befehl wie \begin{kernelquote} blablabla \end{kernelquote} das passende listing zur Verfügung habe.

Xenara
15-01-2009, 08:10
Wenn ich dich richtig verstehe, willst du einfach ein paar listings-Umgebungen vordefinieren?
Das geht über \lstnewenvironment (S. 39 der Listings-Doku).

Man kann den Code auch in einer externen Datei lassen und diese Einbinden (also wie input/include oder includegraphics).
Einen eigenen Befehl dazu kann man mit \newcommand basteln.

thenktor
15-01-2009, 15:45
Danke, das war der richtige Tip. Ich habe jetzt folgende listings definiert:

\lstnewenvironment{bash}
{\lstset{
basicstyle=\ttfamily\bfseries,
backgroundcolor=\color{white!90!black},
breaklines=true}}
{}

\lstnewenvironment{kernquote}
{\lstset{
basicstyle=\itshape\small,
backgroundcolor=\color{white},
breaklines=true}}
{}

\lstnewenvironment{bashscript}
{\lstset{
language=Bash,
basicstyle=\scriptsize\ttfamily\bfseries,
%basicstyle=\scriptsize\ttfamily,
keywordstyle=\color{Indigo},
commentstyle=\color{DarkOliveGreen},
stringstyle=\color{FireBrick},
tabsize=2,
captionpos=tb,
framexleftmargin=3pt,
backgroundcolor=\color{Honeydew},
breaklines=true,
numbers=left,
stepnumber=2,
numberblanklines=false,
numberstyle=\tiny,
numbersep=5pt}}
{}

Allerdings weiß ich jetzt nicht, wie ich mit dem bashscript listing externe Dateien einbinden kann. Habe das vorher ja einfach so gemacht:

\lstinputlisting[caption={Erstinstallation und Konfiguration der CF-Karten},label=lst:zenntp-setup.sh]{quellcode/zenntp-setup.sh}

Xenara
15-01-2009, 16:23
Das ist ein Fall für newcommand. Bei mir klappts so:



\newcommand{\mymakro}[3]%
{\lstinputlisting[%
caption={#1},
label={#2},
% Sonstige Definitionen ...
]% {#3}%
}


Aufruf über
\mymakro{Caption}{Label}{Meine-Datei}

thenktor
15-01-2009, 17:53
Ja, aber wie bringe ich Latex dazu die Einstellungen aus \lstnewenvironment{bashscript} zu benutzen? Also ich bräuchte dafür jetzt nicht unbedingt ein Kurzkommando, mir ist nur nicht klar, wie ich die externe Datei mit den in "bashscript" definierten Einstellungen laden kann.

Danke schonmal für die Hilfe bis jetzt.

rais
15-01-2009, 22:34
Moin moin,

Ja, aber wie bringe ich Latex dazu die Einstellungen aus \lstnewenvironment{bashscript} zu benutzen?
in dem Fall würde ich anders vorgehen:


\lstdefinestyle{irgendwas}{%
basicstyle=...,
(etc.)
}

und dann entsprechend


\lstinputlisting[style=irgendwas]{datei}

vgl. `Languages and styles' in der listings-Doku.

MfG

thenktor
15-01-2009, 22:43
Moin moin,

in dem Fall würde ich anders vorgehen:


\lstdefinestyle{irgendwas}{%
basicstyle=...,
(etc.)
}

und dann entsprechend


\lstinputlisting[style=irgendwas]{datei}

vgl. `Languages and styles' in der listings-Doku.

MfG

Hey, genau das habe ich auch vor einer Stunde gefunden. Allerdings hat er da immer irgendwelche Fehlermeldungen gebracht, die ich gern nochmal herbeiführen kann.

thenktor
15-01-2009, 22:51
Oh man, ich Volldepp :o

Statt

\lstdefinestyle{irgendwas}{
basicstyle=...,
(etc.)
}

hatte ich

\lstdefinestyle{irgendwas}{
\lstset{
basicstyle=...,
(etc.)
}
}

Da hat auch nichts gemeckert, solange man nicht irgendwo style=irgendwas benutzt hat. So kann man wunderbar mal 1,5 Stunden vergeuden :D

Danke an alle erstmal. Ich komm bestimmt bald wieder mit der nächsten Frage :rolleyes: