自动从 CTAN 下载并安装软件包来编译特定文档

自动从 CTAN 下载并安装软件包来编译特定文档

在与一些同事合作时,我们使用的是不同版本的 TeXLive。因此,由于缺少软件包,他们中的一些人无法编译我的文档。

我想到了一个问题:如果可以检测到用于特定文档的所有包和版本,看看该包/版本是否已安装在系统中,如果没有,则下载并安装在特定文件夹中,那会怎样?

对于编译,我总是使用自己制作的 Makefile,如果该文档需要,我会在其中添加sty和文件。但我手动执行此操作。因此我有这个变量:bst

TEXVAR = TEXINPUTS=./sty//:${TEXINPUTS:-:} &&\ BSTINPUTS=./bst//:${BSTINPUTS:-:} &&\ export TEXINPUTS BSTINPUTS

我从这个问题知道检查我是否安装了 LaTeX 软件包生成所有已安装的 (La)TeX 文件的列表可以确定已安装软件包的完整列表。

\RequirePackage{snapshot}此外,我知道通过和的结合bundledoc可以生成用于编译的所有包的列表并将它们复制到我的sty文件夹中。

这包含在主文件中\documentclass

% List the files used in compilation
% It generates a 'job.dep' file that can be post-processed by 'bundledoc'
% Required for package-gen.sh
\RequirePackage{snapshot}

还有 bash 脚本package-gen.sh

#!/bin/sh
# package-gen.sh -- Generates the list of packages required for compilation

# Dependency file
MAIN=job

# Styles folder
STYDIR=sty

# List of files to copy (sty, def, cls)
#LIST=`bundledoc --listdeps=only $MAIN.dep | egrep -iw 'sty|def|cls'`
LIST=`bundledoc --listdeps=only $MAIN.dep | egrep -iw 'texlive/2015'`

# Create styles folder if it doesn't exist
if [ ! -d "$STYDIR" ]; then
    mkdir $STYDIR
fi

# Copy files to temporary folder
for file in $LIST; do
    cp -rf $file $STYDIR
done

所以问题是:有人知道我该如何自动执行此操作...从CTAN系统中下载未安装的软件包并将其复制到sty文件夹中?最好是在编译开始后立即进行此操作。

相关内容