我想存储/读取一些 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}