TeXwelt wurde neu installiert. Es funktionieren noch nicht alle Features und auch an den deutschsprachigen Formulierungen wird verbessert. Danke für eure Geduld.

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.1k17182
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
14.5k53340
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.1k17182
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:

×671
×115
×4

gestellte Frage: 18 Feb '16, 20:53

Frage wurde gesehen: 4,280 Mal

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