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 '16, 20:53

tom75's gravatar image

tom75
2.2k277984
Akzeptiert-Rate: 57%

bearbeitet 18 Feb '16, 20: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 '16, 21:02

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

Vielen Dank. Das ist wesentlich eleganter.

(18 Feb '16, 21: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 '16, 21:38

tom75's gravatar image

tom75
2.2k277984
Akzeptiert-Rate: 57%

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:

×731
×141
×4

gestellte Frage: 18 Feb '16, 20:53

Frage wurde gesehen: 9,514 Mal

zuletzt geändert: 18 Feb '16, 21:39