我正在尝试让这张图形工作,并且它可以工作,如果不是在投影仪中使用而是在文章中使用的话。
这会产生一些错误:
\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
进行编译。