为什么 Beamer 会破坏这张 tikz 图片

为什么 Beamer 会破坏这张 tikz 图片

我正在尝试让这张图形工作,并且它可以工作,如果不是在投影仪中使用而是在文章中使用的话。

这会产生一些错误:

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

\begin{document}

\tikzset{%
  box/.style={%
    minimum height=5mm,
    inner sep=.7mm,
    outer sep=0mm,
    text width=10mm,
    text centered,
    draw,
    fill=white,
    line width=.25mm,
    rounded corners=2.3mm,
    rotate=0,
  },
  link/.style={-latex,line width=.3mm},
}
\begin{frame}{title}
  \begin{tikzpicture}[x=13mm,y=9mm]
    % Pascal's triangle
    % row #0 => value is 1
    \node[box] (p-0-0) at (0,0) {1};
    \foreach \row in {1,...,5} {%
      % col #0 => value is 1
      \node[box] (p-\row-0) at (-\row/2,-\row) {1};
      \pgfmathsetmacro{\value}{1};
      \foreach \col in {1,...,\row} {%
        % iterative formula : val = precval * (row-col+1)/col
        % (+ 0.5 to bypass rounding errors)
        \pgfmathtruncatemacro{\value}{\value*((\row-\col+1)/\col)+0.5};
        \global\let\value=\value
        % position of each value
        \coordinate (pos) at (-\row/2+\col,-\row);
        % odd color for odd value and even color for even value
        \pgfmathtruncatemacro{\rest}{mod(\value,2)}
        \ifnum \rest=0
        \node[box] (p-\row-\col) at (pos) {\value};
        \else
        \node[box] (p-\row-\col) at (pos) {\value};
        \fi
        % for arrows and plus sign
        \ifnum \col<\row
        \node[above=0mm of p-\row-\col]{+};
        \pgfmathtruncatemacro{\prow}{\row-1}
        \pgfmathtruncatemacro{\pcol}{\col-1}
        \draw[link] (p-\prow-\pcol) -- (p-\row-\col);
        \draw[link] ( p-\prow-\col) -- (p-\row-\col);
        \fi
      }
    }
  \end{tikzpicture}
\end{frame}

\end{document}

错误:

! Missing number, treated as zero.
<to be read again> 
                   {
l.56 \end{frame}

? 
! Illegal unit of measure (pt inserted).
<to be read again> 
                   {
l.56 \end{frame}

? 
! Missing number, treated as zero.
<to be read again> 
                   \kern 
l.56 \end{frame}

? 
! Illegal unit of measure (pt inserted).
<to be read again> 
                   \kern 
l.56 \end{frame}

? 

有什么想法我可以做些什么来让 beamer 与这个 tikz 合作?

答案1

该宏\value在 LaTeX 中已经有意义,而在行中\global\let\value=\value您正在覆盖它。 beamer抱怨因为它\value在框架技巧中使用。 article不会仅在图表上抱怨,因为\value如果这张图片是全部的话就不会使用,但是只要您尝试使用计数器执行某项操作(因为这就是它的用途\value),它就会抱怨。

简而言之,将\value其重命名为“安全”的内容,然后\myvalue进行编译。

相关内容