我已在 PythonTeX 手册中阅读了有关如何将 LaTeX 值传递给 PythonTeX 的信息,但我找不到任何文档(或方法)来执行相反的操作。例如,在 LaTeX 包 datenumber 中,传递<year>
、<month>
和<day>
到\setdatenumber{<year>}{<month>}{<day>}
以设置\thedatenumber
(包定义的计数器)。我想做这样的事情:
\documentclass{article}
\usepackage{pythontex}
\usepackage{datenumber}
\begin{document}
\pyc{year = 2015}
\pyc{day = 2}
\pyc{month = 3}
\setdatenumber{\py{year}}{\py{month}}{\py{day}}
\end{document}
但是 datenumber 却出错了,并告诉我缺少数字。问题出在我使用 PythonTeX 的方式上,还是 datenumber 的工作方式有问题?
先感谢您。
答案1
datenumber
可能需要数字,或者至少是完全可扩展的宏。PythonTeX 宏不是完全可扩展的。
让它工作起来类似于使用 PythonTeXsiunitx
。您可以创建一个包装命令的命令datenumber
。包装命令接受参数,执行任何处理,然后datenumber
使用处理后的结果发回命令。您可能想要类似的东西。
\documentclass{article}
\usepackage{pythontex}
\usepackage{datenumber}
\begin{document}
\newcommand{\pysetdatenumber}[3]{%
%Store variables on Python side
\pyc{year = #1; day = #2; month = #3}%
%Send back datenumber command to use variables on TeX side
%Could also use \pyc with print()
\py{r'\setdatenumber{{{0}}}{{{1}}}{{{2}}}'.format(year, day, month)}}
\pysetdatenumber{2015}{3}{2}
\datedate
\end{document}