如何向 tikz 命令添加可选参数

如何向 tikz 命令添加可选参数

tikz-qtree我使用了Ignasi 建议的在图表上添加叠加动画的代码(tex.SE 回答这里)。通过此代码,我可以创建以下动画:

\documentclass{beamer}

\usepackage{tikz}
\usepackage{tikz-qtree}

\tikzset{% add overlay animations to qtrees
    invisible/.style={opacity=0,text opacity=0},
    visible on/.style={alt=#1{}{invisible}},
    alt/.code args={<#1>#2#3}{%
        \alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}} % \pgfkeysalso doesn't change the path
    },
}

\begin{document}
    \begin{frame}
        \begin{tikzpicture}
            
            \Tree
            [.\node [visible on=<1->] {Root};
                \edge [visible on=<2->];\node [visible on=<2->] {Leaf 1};
                \edge [visible on=<3>];\node [visible on=<3>] {Leaf 2};
            ]

        \end{tikzpicture}
    \end{frame}
\end{document}

但是,我不知道如何修改代码以允许命令使用两个参数来visible on产生如下内容:

[visible on=<1,5-6>]

当我向命令添加第二个(可选)参数时,出现错误“扫描 \pgfkeys@code 的使用时文件结束。”我该如何修改代码以允许使用可选的第二个参数?

答案1

,赋予键的值中的A需要受到保护,以免被解析器发现。

在这种特殊情况下,最好的办法是

[visible on=<{1,5-6}>]

通常

[visible on={<1,5-6>}]

也很好,但visible on风格也犯了同样的错误,应该是

visible on/.style={alt={#1{}{invisible}}}

但即使overlay-beamer-styles图书馆犯了同样的错误。

不过,我会使用一种@alt需要两个或三个括号参数的样式和alt一个需要一个<…>然后是一或两个组的键。

代码

\documentclass{beamer}
\usepackage{tikz-qtree}
\tikzset{
    invisible/.style={opacity=0,text opacity=0},
    visible on/.style args={<#1>}{@alt={#1}{}{invisible}},
    alt/.style args={<#1>#2#3}{@alt={#1}{#2}{#3}},
    @alt/.code n args={3}{\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}}}
\begin{document}
\begin{frame}
\begin{tikzpicture}
\Tree
[.\node [visible on=<1->] {Root};
    \edge [visible on=<2->];
      \node [visible on=<2->] {Leaf 1};
    \edge [visible on=<3>];
      \node [visible on={<1,5-6>}, alt=<{1,6}>{green}] {Leaf 2};
]
\end{tikzpicture}
\end{frame}
\end{document}

相关内容