![如何检查宏是否扩展为大于常数的值?](https://linux22.com/image/246427/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E5%AE%8F%E6%98%AF%E5%90%A6%E6%89%A9%E5%B1%95%E4%B8%BA%E5%A4%A7%E4%BA%8E%E5%B8%B8%E6%95%B0%E7%9A%84%E5%80%BC%EF%BC%9F.png)
假设我有一个循环:
\begin{tikzpicture}
\foreach \frm \in {1,...,6}{ \only<\frm>{
% if \frm > 4: set \x to 1, 0 otherwise
\node (foo) at (10+5*\x,7) {hello};
}}
\end{tikzpicture}
我想在给定的幻灯片上“移动”节点,但我很难找到合适的方法来表达 TeX 中注释中的条件。
编辑:我试过\ifthenelse
但没有成功:
\node (foo) at (10+5*\ifthenelse{\frm<5}{0}{1},7) {hello};
出现此错误,我根本无法解析
! Use of \beamer@only doesn't match its definition.
\new@ifnextchar ...served@d = #1\def \reserved@a {
#2}\def \reserved@b {#3}\f...
答案1
以下技巧应该可以解决问题。我稍微修改了坐标,以便它们保留在屏幕上。
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}[fragile]
\begin{tikzpicture}
\foreach \frm in {1,...,6}{
\draw (0,0) node {origin};
\only<\frm>{
% if \frm > 4: set \x to 1, 0 otherwise
\ifnum\frm>4\relax\def\x{1}\else\def\x{0}\fi%
\node (foo) at (5+5*\x,7) {hello};
}}
\end{tikzpicture}
\end{frame}
\end{document}
答案2
我不知道您为什么这样做,而且我猜这是在投影仪演示中进行的,因此下面的操作似乎可以实现您想要的效果。
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}{title}
\begin{tikzpicture}
\foreach \frm in {1,...,6}{
\onslide<\frm>{
% if \frm > 4: set \x to 1, 0 otherwise
\pgfmathparse{\frm > 4? 1 : 0}
\node (foo) at (10 + 5*\pgfmathresult,7) {hello};
}
}
\end{tikzpicture}
\end{frame}
\end{document}