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.cnf
TeX 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