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, 09:08

jan12's gravatar image

jan12
760172732
Akzeptiert: 66%


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, 09:22

stefan's gravatar image

stefan ♦♦
5.8k12134

bearbeitet 27 Sep '15, 10:32

esdd's gravatar image

esdd
14.2k53251

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, 09:24) stefan ♦♦

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

(07 Jul '13, 15:59) Johannes

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

(07 Jul '13, 16: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, 07:14) saputello

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

(08 Jul '13, 07:32) Herbert
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×94
×4
×4
×1

Frage gestellt: 07 Jul '13, 09:08

Frage wurde angeschaut: 5,971 Mal

Zuletzt aktualisiert: 27 Sep '15, 10:32