Ich habe ein tikzpicture, das auf mehreren Slides eine unterschiedliche Opazität aufweisen soll.

Open in Online-Editor
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\begin{tikzpicture}
  \only<1>{\draw[blue,line width=2mm] (0,0) -- (3,0);}
  \only<2->{\draw[blue,line width=2mm,opacity=0.3] (0,0) -- (3,0);}
\end{tikzpicture}
\end{frame}
\end{document}

Ich möchte dies nun so gestalten, dass ich den Code nicht für jeden Slide kopieren und anpassen muss. Ausgehend von dieser Antwort auf tex.se habe ich dies wie folgt versucht:

Open in Online-Editor
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\newcommand*{\myOpacity}{}
\only<1>{\renewcommand*{\myOpacity}{opacity=1}}
\only<2->{\renewcommand*{\myOpacity}{opacity=0.3}}
\begin{tikzpicture}
  \draw[blue,line width=2mm,\myOpacity] (0,0) -- (3,0);
\end{tikzpicture}
\end{frame}
\end{document}

Dies führt zur Fehlermeldung

Package pgfkeys Error: I do not know the key '/tikz/opacity=1' and I am going to ignore it. Perhaps you misspelled it. end{frame}

Wenn ich das ganze mit Farben, statt mit Opazität, mache, funktioniert es:

Open in Online-Editor
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\newcommand*{\myColor}{}
\only<1>{\renewcommand*{\myColor}{red}}
\only<2->{\renewcommand*{\myColor}{blue}}
\begin{tikzpicture}
  \draw[blue,line width=2mm,\myColor] (0,0) -- (3,0);
\end{tikzpicture}
\end{frame}
\end{document}

gefragt 18 Feb, 14:53

tom75's gravatar image

tom75
1.9k1445
Akzeptiert: 83%

bearbeitet 18 Feb, 14:54


Ich habe von dieser TeX.SX-Antwort abgeschrieben, da sie sehr elegant ist. Man definiert dabei einen neuen TikZ-Key

Open in Online-Editor
\tikzset{
  onslide/.code args={<#1>#2}{%
    \only<#1>{\pgfkeysalso{#2}}%
  }
}

Dieser wird in den Optionen des Pfades verwendet und wendet diese Optionen nur auf der entsprechenden Folie an. Im Beispiel

Open in Online-Editor
\documentclass{beamer}
\usepackage{tikz}
\tikzset{
  onslide/.code args={<#1>#2}{%
    \only<#1>{\pgfkeysalso{#2}}%
  }
}
\begin{document}
\begin{frame}
\begin{tikzpicture}
  \draw[blue,line width=2mm,onslide=<1>{opacity=1},onslide=<2->{opacity=0.3}] (0,0) -- (3,0);
\end{tikzpicture}
\end{frame}
\end{document}

alt text alt text

Permanenter link

beantwortet 18 Feb, 15:02

Henri's gravatar image

Henri
10.0k31730

Vielen Dank. Das ist wesentlich eleganter.

(18 Feb, 15:39) tom75

Mein Versuch war fehlerhaft. Es funktioniert so:

Open in Online-Editor
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\newcommand*{\myOpacity}{}
\only<1>{\renewcommand*{\myOpacity}{1}}
\only<2->{\renewcommand*{\myOpacity}{0.3}}
\begin{tikzpicture}
  \draw[blue,line width=2mm,opacity=\myOpacity] (0,0) -- (3,0);
\end{tikzpicture}
\end{frame}
\end{document}
Permanenter link

beantwortet 18 Feb, 15:38

tom75's gravatar image

tom75
1.9k1445

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
×3

Frage gestellt: 18 Feb, 14:53

Frage wurde angeschaut: 822 Mal

Zuletzt aktualisiert: 18 Feb, 15:39