\batchinput (docstrip) 在不同目录中

\batchinput (docstrip) 在不同目录中

docstrip提供宏\batchinput,它调用一个单独的ins文件。此文件可以位于不同的目录中,例如:

\batchinput{../contrib/xx.ins}

并且它们已生成,但位于与 master 相同的目录中ins。但是,我希望它们在与文件相同的目录中生成dtx/ins。我试过了

\def\WriteToDir{../contrib/}

但后来我明白了

! I can't write on file `../contrib/xx.ldf'.

编辑... 因为 TeXLive 不允许以两个点开头的路径。

我知道\BaseDirectory,但这是为了指定 TEX 层次结构的根目录(本地,由管理员)。

我怎样才能知道docstrip文件必须与文件生成在同一个目录中dtx/ins编辑换句话说,我想知道这些ins文件是否可以在无需设置相应文件的路径(仅一个ins)的情况下运行。

答案1

texmf.cnfTeX Live 在位于的文件中设置其选项,texlive/20XX/texmf/web2c/但是此文件不需要编辑。您应该编辑texmf.cnf目录中的文件texlive/20XX/

在主文件中你会发现以下提示:

% Allow TeX \openin, \openout, or \input on filenames starting with `.'
% (e.g., .rhosts) or outside the current tree (e.g., /etc/passwd)?
% a (any)        : any file can be opened.
% r (restricted) : disallow opening "dotfiles".
% p (paranoid)   : as `r' and disallow going to parent directories, and
%                  restrict absolute paths to be under $TEXMFOUTPUT.
openout_any = p
openin_any = a

根据此信息,您可以编辑文件texmf.cnf并设置openout_any=a

相关内容