我正在尝试通过\input
命令从 LaTeX 内部调用一个程序。调用本身运行良好,但我想将所有内容打包在环境中,以使调用更具可读性。
问题是我每次都需要能够提供一些参数。我知道我可以使用带有多个参数的宏来实现这一点,但使用环境似乎更简洁。
\begin{regression}{pathToFile}
-param1=x
-param2=y
\end{regression}
我的目标是将上述代码扩展为
\input{|"java -jar pathToProgram -path=pathtoFile-param1=x -param2=y"}
我目前的方法是这样的:
\newenvironment{regression}[1]{\input{|"java -jar pathToProgram -path='#1'}{"}}
\input
所以我的想法是在环境开始时 打开命令并在结束时关闭它。
但问题是 Latex 将整个内容解释为\newenvironment
命令的一个大参数,就好像没有after
-definition 一样。
如何让 LaTeX 只复制命令参数中的花括号\newenvironment
,并在环境扩展后仅将它们视为组分隔符?
答案1
你可以这样做environ
:
\usepackage{environ}
\NewEnviron{regression}[1]{%
\input{|"java -jar pathToProgram -path=#1 \BODY"}%
}
但我认为这样做没有什么好处
\begin{regression}{pathtoFile}
-param1=x
-param2=y
\end{regression}
超过
\newcommand{\regression}[2]{%
\input{|"java -jar pathToProgram -path=#1 #2"}%
}
通过电话
\regression{pathtoFile}{
-param1=x
-param2=y
}