![在 pythontex 环境中扩展宏](https://linux22.com/image/371840/%E5%9C%A8%20pythontex%20%E7%8E%AF%E5%A2%83%E4%B8%AD%E6%89%A9%E5%B1%95%E5%AE%8F.png)
我想将“变量”传递给我的代码。
最小示例(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"
答案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
。