无法使用带有“\inputminted”的变量

无法使用带有“\inputminted”的变量

我正在重构开源书籍的构建https://github.com/hmemcpy/milewski-ctfp-pdf。基本上,它使用非常旧的依赖项,我正在刷新所有内容。

升级 LaTeX 版本和 Python 版本后,我发现无法构建文档。我现在陷入困境,因为\inputminted它没有像我预期的那样工作。显然,我可能是错的,但它似乎没有使用变量的值,而是变量本身。我昨天花了一整天时间试图找出我做错了什么,但没有成功。

我尝试重现一个最小的工作环境,如下所示:

\documentclass{book}

\usepackage[cache=false,kpsewhich]{minted}

\def\OPTCustomLanguage{ocaml}
\def\OPTCustomLanguageExt{ml}

\NewDocumentCommand{\src}{m}{
  \srcsnippet{code/haskell/#1.hs}{haskell}
  \srcsnippet{code/\OPTCustomLanguage/#1.\OPTCustomLanguageExt}{\OPTCustomLanguage}
}
\NewDocumentCommand{\srcsnippet}{mm}{
  \inputminted{#2}{#1}
}
\begin{document}

\src{snippet01}

\end{document}

创建src文件:

touch code/haskell/snippet01.hs
touch code/ocaml/snippet01.ml

然后编译该文档...错误是:

(/nix/store/nr191iv6nas2ayhwg86v6rdnrymn5lmn-texlive-combined-2022/share/texmf/
tex/latex/l3backend/l3backend-xetex.def) (build/ctfp-ocaml.aux)
(/nix/store/nr191iv6nas2ayhwg86v6rdnrymn5lmn-texlive-combined-2022/share/texmf/
tex/latex/base/ts1cmr.fd) (./ctfp-ocaml.out.pyg) (./ctfp-ocaml.out.pyg)Error: no lexer for alias '\\OPTCustomLanguage ' found
system returned with code 256

你能告诉我我在这里做错了什么吗?

PS:经过一番搜索stackchange,我发现了这些相关问题:

答案1

直接来自作者minted(有关 Github 问题的更多信息,请参阅https://github.com/gpoore/minted/issues/353):

扩展问题。在 \inputminted 吸收参数之前,将其完全扩展即可解决问题。

固定代码:

\documentclass{book}

\usepackage[cache=false,kpsewhich]{minted}

\def\OPTCustomLanguage{ocaml}
\def\OPTCustomLanguageExt{ml}

\NewDocumentCommand{\src}{m}{%
  \srcsnippet{code/haskell/#1.hs}{haskell}%
  \srcsnippet{code/\OPTCustomLanguage/#1.\OPTCustomLanguageExt}{\OPTCustomLanguage}%
}
\NewDocumentCommand{\srcsnippet}{mm}{%
  \ExpandArgs{ee}%
  \inputminted{#2}{#1}%
}

\begin{document}

\src{snippet01}

\end{document}

相关内容