我正在尝试制作一份包含一项特定数学/物理练习的文档。当然,该练习包括输入数据(即 a = 2 cm、b = 3 cm,...)和执行计算的部分。
只需更改输入(例如 a = 4 cm),我就可以生成一个新文档,其中所做的所有计算都会自动更新。为此,我使用了 pythontex 包。
我已经设法在 Python 中生成计算,其中变量从一开始就明确定义,例如a + b
(第一次计算)。我如何将结果保存a + b
在新变量中z
并z
在 Python 下的后续计算中使用,例如z + a
?
\documentclass{article}
\usepackage{mathtools}
\usepackage{pythontex}
\newcommand{\mysum}[2]{#1 + #2}
\newcommand{\mysumpy}[2]{\py{#1 + #2}}
\begin{document}
Here are the inputs:\\
\pyc{a_py = 2} $a = \py{a_py}$ cm\\
\pyc{b_py = 3} $b = \py{b_py}$ cm\\
Here is my 1st calculation:\\
\begin{equation}
z = \mysum{a}{b} = \mysumpy{a_py}{b_py}
\end{equation}
Here is my 2st calculation involving previous result ("z"):\\
\end{document}
答案1
您可以修改\mysumpy
命令以采用可选参数,即应存储结果的变量的名称。我正在使用etoolbox
包(pythontex
已加载)来查看是否存在可选参数。然后您可以稍后使用访问变量的值\py
。例如,
\documentclass{article}
\usepackage{mathtools}
\usepackage{pythontex}
\newcommand{\mysum}[2]{#1 + #2}
\newcommand{\mysumpy}[3][]{%
\ifstrempty{#1}%
{\py{#2 + #3}}%
{\pyc{#1 = #2 + #3}\py{#1}}}
\begin{document}
Here are the inputs:\\
\pyc{a_py = 2} $a = \py{a_py}$ cm\\
\pyc{b_py = 3} $b = \py{b_py}$ cm\\
Here is my 1st calculation:\\
\begin{equation}
z = \mysum{a}{b} = \mysumpy[z_py]{a_py}{b_py}
\end{equation}
Here is my 2nd calculation involving previous result (``z''): \py{z_py}\\
\end{document}
如果您要进行大量类似的计算,您可能还会考虑创建一些更紧凑的命令以节省输入。如果您要使用单位,您可能考虑使用该siunitx
包。例如,
\documentclass{article}
\usepackage{mathtools}
\usepackage{siunitx}
\usepackage{pythontex}
\newcommand{\pyinputval}[2]{%
\pyc{#1 = #2}%
\ensuremath{#1 = \SI{#2}{cm}}}
\newcommand{\pysum}[3][]{%
\ifstrempty{#1}%
{\ensuremath{#2 + #3 = \py{'\\SI{0}{{cm}}'.format(#2 + #3)}}}%
{\pyc{#1 = #2 + #3}%
\ensuremath{#1 = #2 + #3 = \py{'\\SI{0}{{cm}}'.format(#1)}}}}
\begin{document}
Here are the inputs: \\
\pyinputval{a}{2} \\
\pyinputval{b}{3} \\
Here is my 1st calculation:\\
\begin{equation}
\pysum[z]{a}{b}
\end{equation}
Here is my 2nd calculation involving previous result (``z''): \py{z}\\
\end{document}