如何从 Python 变量编写化学式?

如何从 Python 变量编写化学式?

我想存储/读取一些 Python 代码中的化学名称,并使用包漂亮地打印它们mhchem。但是,以下代码不起作用。我预计这与宏展开时有关\py,但我能想到的所有方法\edef似乎\expandafter都不起作用。我怎样才能像第一种形式那样打印出字符串中的化学方程式?

\documentclass{article}
\usepackage[gobble=auto]{pythontex}
\usepackage[version=4]{mhchem}
\begin{document}
    \ce{C8H18}

    \begin{pycode}
        chem_form = 'C8H18'
    \end{pycode}
    \py{chem_form}

    \ce{\py{chem_form}}

    \expandafter\ce{\py{chem_form}}

    \edef\chemform{\py{chem_form}}
    \edef\cee{\chemform}
    \cee
\end{document}

在此处输入图片描述

答案1

\py宏不可扩展,但您可以按照手册第 8 节所示解决这个问题,其中\SI解释了一个示例(第 55-56 页)。

\documentclass{article}

\usepackage{pythontex}
\usepackage[version=4]{mhchem}

\begin{pycode}
chem_form = 'C8H18'
def ce(formula):
    return '\\ce{' + str(formula) + '}'
\end{pycode}

\newcommand\pyce[1]{\py{'\\ce{' + str(#1) + '}'}}

\begin{document}

\ce{C8H18}

\py{ce(chem_form)}

\pyce{chem_form}

\end{document}

在此处输入图片描述

相关内容