从父目录中“包含”独立文件的最佳方法

从父目录中“包含”独立文件的最佳方法

我正在尝试为我的幻灯片和演讲建立一个存储库,因此我有一个包含两个文件夹的存储库

  • 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.texsub/ch.tex,并且编译是在文档子目录中完成的。

相关内容