如何从 pythontex 访问通过 \pgfmathsetmacro 定义的浮点数?

如何从 pythontex 访问通过 \pgfmathsetmacro 定义的浮点数?

如何访问通过\pgfmathsetmacropythontex 定义的浮点变量?

就像是:

\documentclass{article}

\usepackage[gobble=auto]{pythontex}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
  \pgfmathsetmacro{\a}{1.7}
  \begin{pycode}
  a = \getvar{\a}
  \end{pycode}
\end{tikzpicture}


\end{document}

答案1

一种方法是定义一个用于分配 Python 变量的新命令。下面的示例将扩展一个宏一次,用于数字。处理字符串需要稍微不同的方法来插入引号并提供任何必要的字符转义。

\documentclass{article}

\usepackage{pythontex}
\usepackage{tikz}

\makeatletter
\newcommand{\pythontexassign}[2]{%
  \expandafter\pythontexassign@i\expandafter{#2}{#1}}
\newcommand{\pythontexassign@i}[2]{%
  \pyc{#2=#1}}
\makeatother

\begin{document}

\begin{tikzpicture}
\pgfmathsetmacro{\myvar}{1.7}
\pythontexassign{myvar}{\myvar}
\end{tikzpicture}

\begin{pycode}
print(myvar)
\end{pycode}

\end{document}

答案2

\setpythontexcontext我认为是为这类东西而制作的,但它只能在序言中使用。它采用逗号分隔的键值参数列表,这些参数将转换为名为的字典pytex.context

(另请注意,\a已经使用了,请参阅宏的简称,因此它可能不是一个好的宏名称。)

\documentclass{article}
\usepackage{pythontex}
\usepackage{tikz}
\pgfmathsetmacro{\MyVarA}{1.7}
\setpythontexcontext{a=\MyVarA}
\begin{document}

%\begin{tikzpicture}

\begin{pycode}
a = pytex.context['a']
print(a)
\end{pycode}
%\end{tikzpicture}
\end{document}

相关内容