将值从 PythonTeX 传递到 LaTeX

将值从 PythonTeX 传递到 LaTeX

我已在 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}

相关内容