我正在尝试为我的幻灯片和演讲建立一个存储库,因此我有一个包含两个文件夹的存储库
slides/
talks/
现在由于这里提到的安全设置(如何)我可以将文件 somedir/file.tex 包含在文件 somedir/subdir/anotherfile.tex 中它对我的幻灯片不起作用\include
。我想运行 xelatex 或 latexmk,那么如果我实际上做想要包含这些文件吗?我到处找到了一些答案,但似乎无法解决错误消息,即在过去一个小时内无法写入辅助文件。
那么:在这种情况下,什么设置可以让我运行 xelatex (或 latexmk)?
我在 VS 代码上设置输出目录
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"--output-directory=%OUTDIR%",
"%DOC%"
]
},
没有帮助。修补这个问题是我最喜欢的解决方法。
答案1
一种方法是设置环境变量 TEXINPUTS,使其将父目录作为 .tex 文件的搜索路径的一部分。这可以通过 latexmk 和适当的命令行方便地完成。
在类 Unix 操作系统上,以下操作有效:
latexmk -pdfxe -e '$ENV{TEXINPUTS}="..:"' main
在 Windows 上,引用的规则不同,并且 TEXINPUTS 中的分隔符也不同。以下方法有效:
latexmk -pdfxe -e "$ENV{TEXINPUTS}='..;'" main
可以使用 latexmk 的文档子程序制作独立于操作系统的版本:
latexmk -pdfxe -e "ensure_path('TEXINPUTS','..')" main
当然,命令行可以转换为 VS 代码所需的任何内容。
该\include
行必须不再包含../
父目录。我使用
\include{sub/ch.tex}
我的相对于顶级目录的目录/文件是document/main.tex
和sub/ch.tex
,并且编译是在文档子目录中完成的。