我使用的是 Mac、OS X 10.10.1、TeXLive,所有软件包都是最新的。MacTeX-2014 发行版。
该文档基于该moderncv
包并使用multibib
。我可以在该文件上运行 LaTeX,它会生成所需的三个.aux
文件,每个参考书目一个。
然后我尝试在终端窗口中使用bibtex
以下命令对每个文件进行运行.aux
bibtex /Users/mbc/Desktop/moderncv/examples/book.aux
bibtex
返回以下错误
bibtex: Not writing to /Users/mbc/Desktop/moderncv/examples/book.blg (openout_any = p).
I couldn't open file name `/Users/mbc/Desktop/moderncv/examples/book.blg'
我尝试使用相同的命令运行sudo
- 出现与上述相同的错误。搜索解决方案建议texmf.cnf
编辑文件以更改openout_any = p
为openout_any = a
,但我根本无法texmf.cnf
在我的计算机上找到。
我怀疑 MacTeX-2014 发行版中的配置处理方式有所不同。
任何指点都将不胜感激。
答案1
根据TeX 常见问题解答,评论中引用:
LaTeX 不会包含来自其他目录的内容
你想这样做
\include{../bar/xyz.tex}
,但 LaTeX 说:latex: Not writing to ../bar/xyz.aux (openout_any = p). ! I can't write on file `../bar/xyz.aux'.
该错误源自 TeX 的保护,即禁止写入非文档所在目录的子目录。(该限制可防止因使用 LaTeX 处理他人的恶意或损坏的文档而引起的问题。如果此类文档覆盖了您想要保留的内容,则显然可能会造成严重破坏。)
可能导致此问题的文档目录结构看起来像虚构的我的书:
./base/mybook.tex ./preface/Preface.tex ./preface/*** ./chapter1/Intro.tex ...
有了这样的结构,任何文档目录(除了所在的目录
mybook.tex
)似乎都位于基目录的“上方”。(对此类文件的引用将如下所示\include{../preface/Preface}
:“..”是提示。)但它为什么想要写呢?——“我发生了什么事
\include
”\include
通过.aux
为每个\include
d 文件编写一个文件来 解释工作原理。解决这个问题的方法往往是激烈的:
重新构建保存文档的目录,以便主文件位于树的根目录:
./mybook.tex ./mybook/preface/Preface.tex ./mybook/preface/*** ./mybook/chapter1/Intro.tex ...
等等。
您真的需要
\include
? — 如果不需要,您可以用 替换\include
整个\input
过程。(这仅在您不需要 时才有效\includeonly
。)您可以修补您的系统texmf.cnf
— 如果您知道自己在做什么,错误消息应该足以提示您;绝对不建议执行此操作,这留给那些在这方面可以“自助”的人。
答案2
很多时候,不需要修补/编辑 texmf.cnf。而是从主 tex 文件的根目录创建一个符号链接,指向执行 \include 或 \includeonly 的目录(\input 不需要符号链接)。