使用时every edge/.append style = {thick}
,Mod
无法按预期工作。不确定问题是否是我推断的,还是其他问题。
例如,考虑
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc,positioning}
\tikzset{
every edge/.append style = {thick}% commenting this solves the problem
}
\begin{document}
\begin{frame}
\begin{tikzpicture}
\node (table) {};
\foreach \i in {1,...,5}{
\pgfmathparse{mod(\i*72+18,360)}
\node[] at (\pgfmathresult:3cm) (table) (p\i) {$F_\i$};
\pgfmathparse{mod(\i*72+54,360)}
\node[] at (\pgfmathresult:2cm) (table) (c\i) {$C_\i$};
}
\foreach \i in {1,...,5}{
\pgfmathparse{Mod(\i-2,5)+1}
\draw[->, red] (p\i) edge (c\pgfmathresult);
\node[right=.5cm of p\i] {\pgfmathresult};% see the result of the operation, they are random numbers
}
\end{tikzpicture}
\end{frame}
\end{document}
此代码会导致问题,Mod
因为它会抛出随机数(至少看起来是这样)
我添加了\node[right=.5cm of p\i] {\pgfmathresult};
来查看操作结果。有趣的是,如果删除 ,every edge/.append style = {thick}
操作将按预期进行。
我遗漏了什么?有没有办法将边缘设置得较厚并使其Mod
工作?
答案1
这个怎么样
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{calc,positioning}
\tikzset{
every edge/.append style = {thick}% commenting this solves the problem
}
\begin{document}
\begin{frame}
\begin{tikzpicture}
\node (table) {};
\foreach \i in {1,...,5}{
\pgfmathsetmacro\myresult{int(mod(\i*72+18,360))}
\node[] at ($(\myresult:3cm)+(table)$) (p\i) {$F_\i$};
\pgfmathsetmacro\myresult{int(mod(\i*72+54,360))}
\node[] at ($(\myresult:2cm)+(table)$) (c\i) {$C_\i$};
}
\foreach \i in {1,...,5}{
\pgfmathparse{int(Mod(\i-2,5)+1)}
\edef\myresult{\pgfmathresult}%%
\draw[->, red,every edge/.append style={thick}] (p\i) edge (c\myresult);
\node[right=.5cm of p\i] {\myresult};% see the result of the operation, they are random numbers
}
\end{tikzpicture}
\end{frame}
\end{document}
生成的图像(不太确定你想要什么样子)
你的节点语法有点混乱。我不确定你的意思是什么
\node at (<location>) (<node name>) (<node name>) {<content>};
所以我稍微修改了你的语法。
此外,mod
将返回十进制值。您需要整数值。因此,我修改了您\pgfmathparse
计算的这一部分。
我也说明更安全检索和使用 的值的方法\pgfmathparse
。请执行以下两项操作之一
\pgfmathsetmacro\myresult{<computation>}
或者
\pgfmathparse{<computation>}
\edef\myresult{\pgfmathresult}
问题是TikZ
和pgf
都积极使用\pgfmathresult
。因此,在执行可能需要它的任何操作之前,您需要先保存该值。