在 pythontex 环境中扩展宏

在 pythontex 环境中扩展宏

我想将“变量”传递给我的代码。

最小示例(example.tex):

\documentclass{article}
\usepackage[usefamily=bash]{pythontex}
\begin{document}
\bash|echo "\jobname"|
\end{document}

执行pdflatex -shell-escape example.tex

已查看内容example-minimal.pytxcode

=>PYTHONTEX#bash#default#default#0#i#####4#
echo "\jobname"

预期内容example-minimal.pytxcode

=>PYTHONTEX#bash#default#default#0#i#####4#
echo "example.tex"

背景:我想移植我的植物从普通 lua 包到pythontexa) 支持 pdflatex 和 b) 利用它的缓存功能。

答案1

我不确定这是否是您最终需要的,但就目前的目的而言,它应该可以工作。这个想法是逐字吸收参数,然后将所有序列“反斜杠+字母”替换为相应的控制序列,然后将整个内容传递给\bash

\documentclass{article}
\usepackage[usefamily=bash]{pythontex}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\ebash}{v}
 {
  \tl_set:Nn \l_ebash_input_tl { #1 }
  \regex_replace_all:nnN { \\([[:alpha:]]*) } { \c{\1} } \l_ebash_input_tl
  \tl_set:Nx \l_ebash_input_tl { \l_ebash_input_tl }
  \exp_args:NV \bash \l_ebash_input_tl
 }
\ExplSyntaxOff

\begin{document}

\ebash|echo "\jobname"|

\end{document}

您也可能对。。。有兴趣https://tex.stackexchange.com/a/155436/4427

答案2

这不是一个好的答案,我认为你不应该使用它,但你可以创建一个辅助宏,使用expl3它在将它提供给之前完全扩展它的参数\bash

\documentclass{article}
\usepackage{expl3}
\usepackage[usefamily=bash]{pythontex}
\ExplSyntaxOn
\newcommand\expandBASH[1]{ \exp_args:Nx \bash { #1 } }
\ExplSyntaxOff
\begin{document}
\bash|echo "\jobname"|
\expandBASH{echo "\jobname"}
\end{document}

您还可以使用xparse或提供不同的分隔符\def

相关内容