使用bundledoc打包LaTeX宏包依赖

我遇到过由于宏包不够新导致的latex编译失败。那么有没有办法将我们编译当前文档需要的宏包打包呢?

办法就是使用bundledoc. 我用的texlive2017(脚本位置:E:\texlive\2016\texmf-dist\scripts\bundledoc\bundledoc), 看起来这个宏包有点旧了, 需要修复下。

脚本的修复

P.S. 最新版的bundledoc(2018/05/23, Version 3.3)一下两个问题都已经修复。请直接更新。

首先它是一个perl脚本, 其中有个新建临时目录的函数tmpnam已经弃用了, 这个好像不是非常影响。

其次, 它的正则表达式{([^\}]*)}不正确, 因为根据*.dep的结构, 我们需要将其改成\\{([^}]*)\\}.

如果我们只需要将2017年以后的宏包打包, 则可以将上述代码片段改为

脚本的使用

新建test.tex文档如下:

这里的关键是需要第一行的\RequirePackage{snapshot}产生宏包依赖列表test.dep. 例如上面的代码产生的宏包依赖列表为:

接着, 我们需要在test.tex同目录下创建bundledoc配置文件bundledoc.cfg

最后, 如果你使用修改后的脚本的话, 运行
bundledoc --config=bundledoc.cfg --verbose test.dep
则得到打包后的压缩文件test-all.tar.gz
需要注意的是, 我们需要压缩文件的软件tar与gzip.

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据