\input 内带有可选参数的宏

\input 内带有可选参数的宏

我目前面临的问题是我不知道如何正确地将带有可选参数的宏作为参数放入里面\input

如果我用这样的东西

\newcommand{\test}[1][Hi]{#1}
\input{\test}

我在编译过程中陷入无限循环,控制台输出以下内容:

kpathsea: Running mktextfm at0

mktextfm: Running mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input at0

This is METAFONT, Version 2.7182818 (TeX Live 2017/Arch Linux) (preloaded base=mf) kpathsea: Running mktexmf at0

! I can't find file `at0'. <*> \mode:=ljfour; mag:=1; nonstopmode; input at0 Please type another input file name ! Emergency stop. <*> \mode:=ljfour; mag:=1; nonstopmode; input at0 Transcript written on mfput.log.

grep: at0.log: No such file or directory

mktextfm: `mf-nowin -progname=mf \mode:=ljfour; mag:=1; nonstopmode; input at0' failed to make at0.tfm.

kpathsea: Appending font creation commands to missfont.log.

然而,我真正需要的是以下代码:

\newcommand{\regression}[1]{\input{|"java -jar /home/raven/Documents/Programming/Regression.jar #1"}}
\newcommand{\logarithmic}[1][e]{-mode=log-#1 }

\regression{
    \logarithmic
}

当编译上述代码时,LaTeX 会抛出一个错误,指出\\logarithmic does not match its definition. } 当从一切中删除可选参数时,\logarithmic一切正常。

我已经在 Google 上搜索过该错误信息,它总是指出一些有关脆弱命令的问题,但我无法使用 或 使其\protected工作\DeclareRobustCommand

另外,对我来说似乎奇怪的是,在第一个例子中,可选参数导致了无限循环,而在第二个例子中,它给出了错误消息...有人可以帮助我理解发生了什么以及如何解决我的问题吗?

相关内容