Ich möchte mit dem Paket listings und dem Befehl \lstinline eine Codezeile farbig hinterlegen. Das Beispiel fand ich hier:

Der Beispielcode lautet

Open in Online-Editor
\colorbox{blue}{\lstinline[basicstyle=\ttfamily\color{white}]|<List>|}

und ergibt ein blau hinterlegtes . Wenn ich jedoch einen Befehl der mit backslash beginnt

Open in Online-Editor
\colorbox{blue}{\lstinline[basicstyle=\ttfamily\color{white}]| \node |}

so darstellen will, erhalte ich eine Fehlermeldung: ! Improper alphabetic constant.

gefragt 16 Mai '15, 09:11

butts's gravatar image

butts
674163440
Akzeptiert-Rate: 40%

bearbeitet 13 Sep '15, 08:47

saputello's gravatar image

saputello
11.1k174365

1

Könntest Du bitte ein Minimalbeispiel einfügen? Also ein möglichst kurzes, aber komplettes Dokument, von \documentclass{...} bis zu \end{document}, was das Problem zeigt. Das vereinfacht die Bearbeitung erheblich und ist meist eine Garantie für eine Lösung. Und kann es wirklich sein, dass jemand mit 27 Fragen, der seit 1½ Jahren dabei ist, noch explizit darum gebeten werden muss?

(16 Mai '15, 11:02) saputello

Warum es nicht funktioniert

\lstinline ist eine Anweisung ähnlich \verb oder \url, die eine spezielle Verarbeitung des Arguments benötigt. Dazu muss die Anweisung u. a. die \catcode-Einstellungen diverser Zeichen ändern. Nur so ist es möglich, dass alle Token mit der korrekten Kategorie erstellt werden und beispielsweise \ nicht als Anfang einer Anweisung interpretiert wird.

Wird eine solche Anweisung innerhalb des Arguments einer anderen Anweisung verwendet, so werden die Token bereits beim Lesen des Arguments der äußeren Anweisung gebildet. Spätere Änderungen der \catcode-Einstellungen haben dann keinen Einfluss mehr. Daher funktioniert etwas wie \lstinline innerhalb einer Anweisung wie \colorbox nur so lange, solange im Argument von \lstinline und damit im Argument von \colorbox keine Zeichen verwendet werden, die für \lstinline einer speziellen Behandlung bedürfen.

Ganz ähnlich ist es übrigens mit der Umgebung lstlisting und Umgebungen, die darauf basieren. Deshalb bietet das Paket listings auch eine eigene Anweisung, um solche Umgebungen definieren zu können. Näheres ist der Anleitung zum Paket zu entnehmen.

Permanenter link

beantwortet 16 Mai '15, 11:19

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 16 Mai '15, 11:23

Was ist denn ein TOKEN ? Wie heißt denn die Anweisung, mit der die Umgebungen von listings definiert werden können ?

(16 Mai '15, 12:02) butts

@butt: Ein Token ist die kleinste Verarbeitungseinheit, also beispielsweise ein Zeichen einer bestimmten Kategorie. Näheres zu Zeichenkategorien ist beispielsweise »Was machen eigentlich \makeatletter und \makeatother?« zu entnehmen. Sollte man übrigens als TeX-Anwender wissen, weil man sonst die Funktion von Token-Registern nicht verstehen kann.

(14 Sep '15, 11:16) saputello

In der Doku zu listings findet sich im Abschnitt 5.1 listings inside arguments folgender Hinweis:

You have to put a backslash in front of each of the following four characters: \ { } %

Wenn ich also vor \node noch einen weitere backslash setze, dann funktioniert es.

Open in Online-Editor
\documentclass{scrreprt}
\usepackage{listings}
\usepackage{xcolor}
\begin{document}
\colorbox{blue!25}{\lstinline[basicstyle=\ttfamily\color{white}]|\\node |} 
\end{document}
Permanenter link

beantwortet 16 Mai '15, 12:16

butts's gravatar image

butts
674163440
Akzeptiert-Rate: 40%

bearbeitet 12 Sep '15, 22:16

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×23

gestellte Frage: 16 Mai '15, 09:11

Frage wurde gesehen: 12,464 Mal

zuletzt geändert: 14 Sep '15, 11:16