Ausgehend von den Kommentaren unter der Antwort zu dieser Frage, habe ich das Beispiel wie folgt zum laufen gebracht:

Open in writeLaTeX
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{angles,quotes,babel}

\begin{document}
\begin{frame}[fragile=singleslide]
\begin{tikzpicture}
\draw (2,-2) coordinate (A) -- (0,0) coordinate (B) -- (2,2) coordinate (C);
\pic["$\ldotp$",draw] {angle};
\end{tikzpicture}
\end{frame}
\end{document}

Nun möchte ich das Bild in eine \scalebox packen.

Open in writeLaTeX
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{angles,quotes,babel}

\begin{document}
\begin{frame}[fragile=singleslide]
\scalebox{2}{%
\begin{tikzpicture}
\draw (2,-2) coordinate (A) -- (0,0) coordinate (B) -- (2,2) coordinate (C);
\pic["$\ldotp$",draw] {angle};
\end{tikzpicture}%
}
\end{frame}
\end{document}

Dieser Code lässt sich nicht übersetzen:

Argument of language@active@arg" has an extra }. }

Es scheint auch hier an den Anführungszeichen zu liegen.

Eine Möglichkeit ist es, auf quotes zu verzichten und pic text={$\ldotp$} zu verwenden. Gibt es auch eine Möglichkeit, die Sache mit quotes zum Laufen zu bringen?

gefragt 22 Jan '15, 12:25

tom75's gravatar image

tom75
1.9k1545
Akzeptiert: 83%

bearbeitet 22 Jan '15, 12:27

Ganz tolle Frage. Das steckt eine Grundeigenschaft von TeX selbst dahinter, die auch von Paketautoren nicht immer verstanden wird und u. a. auch dafür verantwortlich ist, warum beamer überhaupt Option fragile für bestimmte Arten von frame-Umgebungen benötigt, warum \verb in einem Argument oft nicht funktioniert, warum \url in einem Argument starken Einschränkungen unterworfen ist, warum das Paket ngerman besser nicht verwendet werden sollten u. v. m.

(22 Jan '15, 12:48) saputello

In dem Fall ist das \catcode-Problem doppelt. Zu dem bekannten Problem innerhalb einer frame-Umgebung kommt noch: Die Token der Argumente eines Befehls (im Beispiel \scalebox) haben den \catcode, den sie beim Lesen des Arguments bekommen haben. Beim Lesen des Argument werden sie nicht ausgeführt, so dass die tikzpicture-Umgebung innerhalb des Arguments den \catcode von " nicht mehr ändern kann. Es gibt nun zwei Möglichkeiten, das Problem zu lösen:

Open in writeLaTeX
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{angles,quotes,babel}

\newsavebox\tikzsavebox

\begin{document}

\begin{lrbox}{\tikzsavebox}
\begin{tikzpicture}
\draw (2,-2) coordinate (A) -- (0,0) coordinate (B) -- (2,2) coordinate (C);
\pic["$\ldotp$",draw] {angle};
\end{tikzpicture}%
\end{lrbox}
\begin{frame}
\scalebox{2}{\usebox{\tikzsavebox}}
\end{frame}
\end{document}

Wie Du siehst, braucht man hier nicht einmal mehr fragile. Die andere Möglichkeit besteht wieder darin, das babel shorthand " zu deaktivieren, bevor das Argument gelesen wird:

Open in writeLaTeX
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{angles,quotes,babel}

\begin{document}
\begin{frame}[fragile=singleslide]
\shorthandoff{"}
\scalebox{2}{%
\begin{tikzpicture}
\draw (2,-2) coordinate (A) -- (0,0) coordinate (B) -- (2,2) coordinate (C);
\pic["$\ldotp$",draw] {angle};
\end{tikzpicture}%
}
\end{frame}
\end{document}

Was Dir besser gefällt, musst Du selbst entscheiden. Die lrbox-Variante ist universeller und dürfte auch für andere Zeichen funktionieren, die TikZ in einem ganz bestimmen \catcode benötigt. lrbox ist übrigens im usrguide dokumentiert.

Permanenter link

beantwortet 22 Jan '15, 12:37

saputello's gravatar image

saputello
18.4k22352

bearbeitet 22 Jan '15, 13:49

@saputello Vielen Dank, das ist super erklärt!

(22 Jan '15, 15:35) tom75

Der Vollständigkeithalber kommt hier noch der Vorschlag, einfach auf die quotes Syntax zu verzichten, d.h. "$\ldotp$" durch pic text=\ldotp zu ersetzen.

Open in Online-Editor
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{
  angles,
  %quotes,babel% werden nur benötigt, wenn quotes Syntax verwendet wird
}

\begin{document}
\begin{frame}
\scalebox{2}{%
\begin{tikzpicture}
\draw (2,-2) coordinate (A) -- (0,0) coordinate (B) -- (2,2) coordinate (C);
\pic[pic text=$\ldotp$,draw] {angle};
\end{tikzpicture}%
}
\end{frame}
\end{document}
Permanenter link

beantwortet 01 Feb '15, 12:36

esdd's gravatar image

esdd
14.2k53251

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:

×492
×94
×2
×1

Frage gestellt: 22 Jan '15, 12:25

Frage wurde angeschaut: 2,368 Mal

Zuletzt aktualisiert: 01 Feb '15, 12:36