我正在重构开源书籍的构建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}