Im beamer-Handbuch las ich, dass die verbatim-Umgebung in einem beamer-frame nur funktioniert, wenn man die fragile-Option setzt, also \begin{frame}[fragile] schreibt.

Nun fand ich hier auf TeXwelt, dass mit TikZ unter Umständen fragile auch nötig sein kann.

Welche Befehle, Umgebungen oder Pakete erfordern fragile frames?

gefragt 07 Jul '13, 15:08

jan12's gravatar image

jan12
770272732
Akzeptiert-Rate: 100%


Man benötigt fragile z.B. für folgende verbatim-ähnliche Umgebungen und Befehle:

  • verbatim von Standard-LaTeX
  • verbatim und verbatim* vom Paket verbatim
  • comment vom Paket comment
  • lstlisting vom Paket lstlisting
  • minted vom Paket minted
  • \verb von Standard-LaTeX abhängig von den Zeichen, die man verbatim setzen möchte
  • \lstinline vom Paket listings abhängig von den Zeichen, die man als Listing setzen möchte
  • alltt des gleichnamigen Paketes abhängig von den Zeichen, die man in der Umgebung verwendet

Ohne fragile funktionieren:

  • semiverbatim-Umgebung von beamer
  • alltt des gleichnamigen Paketes abhängig von den Zeichen, die man in der Umgebung verwendet
  • \verb von Standard-LaTeX abhängig von den Zeichen, die man verbatim setzen möchte.
  • \lstinline vom Paket listings abhängig von den Zeichen, die man als Listing setzen möchte
  • algorithm und algorithmic aus den Paketen algorithm bzw. algorithmic

Weitere Umgebungen und Pakete, bei denen man fragile braucht:

  • die tikzpicture-Umgebung, wenn darin die quotes Syntax verwendet wird
  • die matrix-Umgebung von TikZ, wenn das Ampersand-Symbol darin nicht ersetzt wird
  • die tikzcd-Umgebung des tikzcd-Pakets aus selbem Grund wie TikZ' matrix
  • die bytefield-Umgebung des bytefield-Pakets

Mehr theoretische Antwort:

fragil wird immer dann benötigt, wenn mit Befehlen oder Umgebungen gearbeitet wird, die den \catcode ändern, bevor ein Argument oder der Inhalt einer Umgebung gelesen wird. Der Grund dafür ist darin zu suchen, wie das Paket normalerweise den Inhalt einer frame-Umgebung liest. Teilweise trifft das Paket Vorsorge, dass Befehle trotzdem funktionieren. Das geschieht aber nicht umfassend. So genügt beispielsweise die Verwendung von

Open in Online-Editor
Das ist ein Prozent-Zeichen: \verb|%|

oder das gleiche mit \lstinline in einer frame-Umgebung, um einen Fehler zu provozieren.

Die Ursache liegt darin, dass die frame-Umgebung ihr Argument nicht wie eine gewöhnliche Umgebung, sondern eher wie ein Argument behandelt. Argumente werden aber komplett mit den Category Codes gelesen, die vor dem Lesens gelten. Änderungen innerhalb des Arguments gelten also nicht mehr für das Argument selbst.

Permanenter link
Dieser Antwort ist "Community Wiki" markiert.

beantwortet 07 Jul '13, 15:22

stefan's gravatar image

stefan ♦♦
18.1k143048
Akzeptiert-Rate: 48%

bearbeitet 27 Sep '15, 16:32

esdd's gravatar image

esdd
17.7k254256

Wenn noch jemand etwas kennt, das fragile benötigt, wäre es toll wenn es direkt in diesen Community-Wiki-Beitrag hineingeschrieben wird. Jeder kann hier editieren.

(07 Jul '13, 15:24) stefan ♦♦

alltt des gleichnamigen Paketes steht auch fast genauso in der anderen Liste? Welches ist richtig?

(07 Jul '13, 21:59) Johannes

@Johannes Danke, war verrutscht und nicht mehr gesehen, hab es korrigiert.

(07 Jul '13, 22:15) stefan ♦♦

@Johannes, @stefan alltt, \verb und \lstinline funktionieren nicht generell, sondern abhängig von den Zeichen, die man dabei setzt. Siehe das %-Beispiel, das ich angegeben habe, das auch auf alltt übertragbar ist.

(08 Jul '13, 13:14) saputello

man kann auch stur alle frames mit [fragile] setzen.

(08 Jul '13, 13:32) Herbert
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:

×138
×7
×5
×1

gestellte Frage: 07 Jul '13, 15:08

Frage wurde gesehen: 19,996 Mal

zuletzt geändert: 27 Sep '15, 16:32