控制铸造的缓存文件名(.pygtex)

控制铸造的缓存文件名(.pygtex)

我有两个几乎相同的文档,但设置略有不同(一个使用 11pt 字体,另一个使用 10pt),例如book10.texbook11.tex。他们使用 minted 导入代码片段\inputminted

我正在尝试将第一本书的缓存重新用于其他书,不幸的是,缓存文件名似乎不同。使用 xelatex 编译两本书后:

xelatex --shell-escape book10.tex && xelatex --shell-escape book11.tex

我似乎有两个 .pygtex 文件,其中哈希的第一部分相同,但第二部分不同:

$ ls
FCA5498F9EAF9E235804E47AA988230D31F590DAF3C4999269D16864F0C9105B.pygtex
FCA5498F9EAF9E235804E47AA988230D796938E665113EC976EFD1EDB1C66E95.pygtex
...

它们的内容完全相同,但是文件名不同。

根据文档,“缓存文件使用突出显示设置和突出显示文本的 MD5 哈希值命名”。我可以理解“突出显示文本”部分,但是突出显示设置是什么,为什么它们的哈希值不同?

我的 MWE 是:

你好.hs

module Main where

main :: IO ()
main = putStrLn "Hello world!

book10.texbook11.tex (简体)

\documentclass{article}
\usepackage[cachedir=_mycache]{minted}

\begin{document}
\inputminted{octave}{hello.hs}

\end{document}

问题:我可以覆盖生成的文件名吗?我想保留内容的哈希值,而忽略设置哈希值。

注意:该解决方案\finalizecache不适用于我的情况,因为某些文件使用导入不同语言的片段的宏。

答案1

我找到了解决办法!我仔细研究了minted.sty文件,并注意到被jobname视为哈希的一部分。所以我现在指定相同的-jobname为 xelatex 指定相同的值,它似乎有效!

我在mintedgithub 上问了这个问题,回答我建议做一些类似的事情,\minted@jobname直接在 .tex 文件中指定。

如果有帮助的话,我总结步骤在我的博客上。

相关内容