PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit \lstinline



milten24
17-07-2012, 20:39
Hallo zusammen,

ich würde gerne einen Befehl definieren, mit dem ich Quellcode mit
\lstinline|| eingügen kann. Ich habe den Befehl
\code genannt und mit
\newcommand definiert. Der eingegebene Text wird auch wie Quelltext formatiert, allerdings sobald ich Befehle eingebe (im Beispiel
\begin{document}) bekomme ich Fehlermeldungen. Mit
\lstinline|| funktioniert es allerdings.

Hier ein Minimalbeispiel:


\documentclass{scrartcl}
\usepackage{listings}
\newcommand{\code}[1]{\lstinline|#1|}
\begin{document}

\code{begin}
%\code{\begin{document}}

\lstinline|\begin{document}|

\end{document}

Sobald das Kommentarzeichen vor dem 2. Code-Befehl entfernt wird, erscheint die Fehlermeldung. Habe ich einen Fehler im Quelltext oder muss ich den Befehl ändern?

Danke schonmal und viele Grüße,
milten 24

PS: Ist der Befehl richtig
\lstinline|| oder
\lstinline$$ ? Ich bin auf beide Schreibweisen gestoßen?

Edit: Oh, das Forum rückt jeden Code in eine eigene Zeile. Kann man das ändern?? ;-)

hakaze
17-07-2012, 21:18
Siehe hier bei stackexchange (http://tex.stackexchange.com/questions/17153/any-ideas-why-this-newcommand-n-lstinline-n-macro-doesnt-work).


\lstinline is a verbatim-like command. It has to do a lot of \catcode-magic to disable commands and parse its argument. You can't use it in another command. http://www.tex.ac.uk/cgi-bin/texfaq2html?label=verbwithin.

u_fischer
18-07-2012, 09:25
\documentclass{scrartcl}
\usepackage{listings}
\let\code\lstinline

%oder
%\newcommand\code{\lstinline}

\begin{document}

\code|\begin{document}|

\lstinline|\begin{document}|
\end{document}




Ich bin auf beide Schreibweisen gestoßen?

Es gehen auch beide – und weitere: Wie bei \verb kannst du als Start- und Endmarker so ziemlich jedes Zeichen benutzen, das nicht im Code ist ("[" solltest du vermeiden, siehe Doku).

Verwende keine normale Argumentklammern, \lstinline{code} funktioniert nicht immer. Den Ärger, immer an die Ausnahmen denken zu müssen, solltest du dir ersparen.