我有两个问题:
是否可以
\pause
在交换图上添加命令,我想在说话时显示每个箭头。我怎样才能改变箭头方向,例如我想要的
$A \leftarrow B$
。
\documentclass{beamer}
\usepackage{tikz-cd}
\begin{document}
\begin{frame}[fragile]
\begin{center}
\begin{tikzcd}
A\arrow{r}{e}\arrow{d}[swap]{f} & B\arrow{d}{g} \\
C\arrow{r}[swap]{h} & D \\
\end{tikzcd}
\end{center}
\end{frame}
\end{document}
答案1
正如解释的那样这个答案fragile
,使用框架的选项不允许使用覆盖,作为您可以用来ampersand replacement=\&
克服错误的替代方案。
visible on
ps:我在这里某处看到了这个技巧。
以下代码在切换箭头位置后保留箭头标签的位置,切换是逐步完成的(一次一个箭头),并且出现的顺序相同。
\documentclass{beamer}
\usepackage{tikz-cd}
\tikzset{
invisible/.style={opacity=0},
visible on/.style={alt={#1{}{invisible}}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
}
}
\begin{document}
\begin{frame}
\begin{tikzcd}[ampersand replacement=\&]
A \arrow[visible on=<2-5>]{r}{e} \arrow[visible on=<5-8>]{d}[swap]{f} \&
\arrow[visible on=<6->]{l}[swap]{e} B \arrow[visible on=<3-6>]{d}{g} \\
\arrow[visible on=<9->]{u}{f} C \arrow[visible on=<4-7>]{r}[swap]{h} \&
\arrow[visible on=<8->]{l}[swap]{h} D \arrow[visible on=<7->]{u}[swap]{g}
\end{tikzcd}
\end{frame}
\end{document}
命令的顺序很重要,以确保问题的第二部分(关于改变箭头方向)没有错误。
如果您也想切换标签位置,请用以下代码片段替换:
\begin{tikzcd}[ampersand replacement=\&]
A \arrow[visible on=<2-5>]{r}{e} \arrow[visible on=<5-8>]{d}[swap]{f} \&
\arrow[visible on=<6->]{l}{e} B \arrow[visible on=<3-6>]{d}{g} \\
\arrow[visible on=<9->]{u}[swap]{f} C \arrow[visible on=<4-7>]{r}[swap]{h} \&
\arrow[visible on=<8->]{l}[swap]{h} D \arrow[visible on=<7->]{u}{g}
\end{tikzcd}
- 同时切换箭头方向,并将标签位置保持在外面(如果您也想反转它们,请
[swap]
根据箭头位置使用/删除)。
代码:
\documentclass{beamer}
\usepackage{tikz-cd}
\tikzset{
invisible/.style={opacity=0},
visible on/.style={alt={#1{}{invisible}}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}%
}
}
\begin{document}
\begin{frame}
\begin{tikzcd}[ampersand replacement=\&]
A \arrow[visible on=<2-5>]{r}{e} \arrow[visible on=<5>]{d}[swap]{f} \&
\arrow[visible on=<6->]{l}[swap]{e} B \arrow[visible on=<3-5>]{d}{g} \\
\arrow[visible on=<6->]{u}{f} C \arrow[visible on=<4-5>]{r}[swap]{h} \&
\arrow[visible on=<6->]{l}{h} D \arrow[visible on=<6->]{u}[swap]{g}
\end{tikzcd}
\end{frame}
\end{document}
这里也是一样,如果您想切换标签位置,请用这个 ocde 片段替换:
\begin{tikzcd}[ampersand replacement=\&]
A \arrow[visible on=<2-5>]{r}{e} \arrow[visible on=<5>]{d}[swap]{f} \&
\arrow[visible on=<6->]{l}{e} B \arrow[visible on=<3-5>]{d}{g} \\
\arrow[visible on=<6->]{u}[swap]{f} C \arrow[visible on=<4-5>]{r}[swap]{h} \&
\arrow[visible on=<6->]{l}[swap]{h} D \arrow[visible on=<6->]{u}{g}
\end{tikzcd}