在 Beamer 中编程 Tikz

在 Beamer 中编程 Tikz

附加的 .Rnw 代码生成了两个类似的幻灯片,但文本和箭头位置不同。我手动编写了这两个幻灯片,但由于我需要制作数百张类似的幻灯片,所以我更愿意只编写一个类型幻灯片,并使用与 R 表相关的变量名来绘制幻灯片。R 表中每行一张幻灯片。如何做到这一点?

更新:Tom Bombadil 给出了一个更好的例子(我用它替换了我的原版)。它是正确的,另外数字和箭头位置的来源来自 R 脚本。这是修改后的版本。

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{shapes}

\begin{document}

% Here are the numbers and coordinates that should be different on each slide (one row per slide).
<<input, echo=FALSE>>=
#input.data <- rbind(c(1, 1234, 1965, 3, 4),
#c(2, 5678, 1974, 7, 4))
#colnames(input.data) <- c("SlideNr", "LeftNr", "RightNr", "ArrowPos1", "ArrowPos2")
@

\begin{frame}
    \begin{tikzpicture}
        \draw (0,0) rectangle (10,4);
        \node[above right] at (0,0) {1234};
        \node[above left] at (10,0) {1965};
        \node[single arrow,shape border rotate=90,fill=white,below,draw] at (3,4) {1.};   
    \end{tikzpicture}
\end{frame}

\begin{frame}
    \begin{tikzpicture}
        \draw (0,0) rectangle (10,4);
        \node[above right] at (0,0) {5678};
        \node[above left] at (10,0) {1974};
        \node[single arrow,shape border rotate=90,fill=white,below,draw] at (7,4) {2.};   
    \end{tikzpicture}
\end{frame}

\end{document}

如何将 R 表中的字段与 Tikz 中的文本或数字“链接”?

更新 2。感谢 Tom 的回复和评论,我意识到我可以在 R 中进行格式化。如果我在 R 中创建此文件 (intext1.tex)(paste("\def\x{",variable,"}",sep="")):

\def\x{1234}
\def\z{3}

和 intext2.tex

\def\x{4321}
\def\z{7}

...然后我可以在 LaTex 中做到这一点:

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{shapes}

\begin{document}


\foreach \n in {1,...,2} {
\input{intext\n.tex}
\begin{frame}
    \begin{tikzpicture}
        \draw (0,0) rectangle (10,4);
        \node[above right] at (0,0) {\x};
        \node[above left] at (10,0) {1965};
        \node[single arrow,shape border rotate=90,fill=white,below,draw] at (\z,4) {1.};   
    \end{tikzpicture}
\end{frame}
}
\end{document}

答案1

您正在寻找这样的东西吗?

代码

\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{shapes}

\begin{document}

\begin{frame}
    \begin{tikzpicture}
        \draw (0,0) rectangle (10,4);
        \node[above right] at (0,0) {\only<1>{1234}\only<2>{5678}};
        \node[above left] at (10,0) {\only<1>{1965}\only<2>{1974}};
        \only<1>{\node[single arrow,shape border rotate=90,fill=white,below,draw] at (3,4) {1.};
            } 
        \only<2>{\node[single arrow,shape border rotate=90,fill=white,below,draw] at (7,4) {2.};
            }   
    \end{tikzpicture}
\end{frame}

\end{document}

输出

在此处输入图片描述

相关内容