tikz - pgfmathresult 不打印任何内容

tikz - pgfmathresult 不打印任何内容

我正在尝试使用 foreach 语句打印 2 的幂。我首先将 n 定义为 2,然后打印 n 并将其乘以 2 10 次。代码确实编译无误,但我在输出中看到的唯一数字是页码。我是否误用了 pgfmathresult?

下面的代码 ----

\documentclass{article}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\pgfmathsetmacro{\n}{2}
\foreach \i in {1,...,10} {
    \pgfmathparse{\n}\pgfmathresult
    \pgfmathsetmacro{\n}{2*\n}
}

\end{tikzpicture}
\end{document}

答案1

尝试这个:

\documentclass{article}
\usepackage{tikz,siunitx,calc}
\sisetup{round-mode = places, round-precision = 0}
\begin{document}
    
    \begin{tikzpicture}
        \foreach \i in {1,...,10} {
            \pgfmathsetmacro{\n}{2*\i}
            \node at (\i,1) () {\num{\i}};
            \node at (\i,0) () {\num{\n}};
        }       
    \end{tikzpicture}
\end{document}

输出:

在此处输入图片描述

答案2

两种不使用任何库的情况:

\documentclass{article}
\usepackage{tikz}

\begin{document}
with \verb+\pgfmathparse+

\begin{tikzpicture}
\foreach \i in {1,...,10} 
    \node at (\i,0) {\pgfmathparse{int(2*\i)}\pgfmathresult};
\end{tikzpicture}

\medskip
with \verb+evaluate+ defined in \verb+\foreach+ macro

\begin{tikzpicture}
\foreach \i [evaluate=\i as \n using int(2*\i)] in {1,...,10}
    \node[red] at (\i,0) {\n};
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

对你的问题的评论已经给出了一些有用的提示:

tikzpicture如果不需要,请不要使用环境。节点外的文本不会在环境内打印,但您也可以在此环境外tikzpicture使用宏。\pgfmath

由于\foreach循环创建了一个范围,因此每次循环后的新值\n都会丢失。您可以通过remember=\n\foreach宏添加选项来避免这种情况。您可能希望使用int()将去掉小数的函数。最后,只需输入\n即可打印其值。

\documentclass{article}
\usepackage{tikz}

\begin{document}

foo 
\pgfmathsetmacro{\n}{2}%
\foreach [remember=\n] \i in {1,...,10} {%
    \n%
    \pgfmathsetmacro{\n}{int(2*\n)}
}%
bar

\end{document}

在此处输入图片描述

相关内容