我正在尝试包含一个文件,其相对于主 tex 文件的路径是../folder/chapter.tex
。我试过了
\input{../folder/chapter.tex}
但它不起作用:我收到文件未找到的错误。我在 Windows 下使用 MikTex 2.9。
答案1
在使用 xelatex.exe 从命令行进行一些测试后,似乎 Latex 要求源文件中的相对路径相对于执行 Latex 编译器的文件夹进行定义(而不是相对于主 Latex 文件的位置)。这实际上很有道理。这些相对路径不会传递给主 Latex 文件;它们会传递给 Latex 编译器。它将根据调用位置解释相对路径。
由于您使用的是 GUI,我不知道 MikTeX 将哪个文件夹视为执行 Latex 编译器的文件夹。
我看到两种不同的解决方案:
第一,放弃相对路径,使用绝对路径。你甚至可以包含驱动器号。只需记住继续使用 Latex 首选的正斜杠作为目录级别,例如:
\input{C:/project/latexfiles/mychapter.tex}
第二,您可以从命令行开始编译。打开 DOS 框,进入主 Latex 文件所在的文件夹。当您准备好编译时,运行命令进行编译。以下是我使用的参数:
xelatex -synctex=-1 -shell-escape -halt-on-error mymainfile.tex
当我需要重新编译时,我会进入 DOS 框并按下向上键以获取最后一个命令,然后按回车键。非常方便。当然,您可以使用 pdflatex.exe 或您需要的任何 Latex 编译器,并且您可以通过 Google 了解有关各种命令行参数及其效果的更多信息。
答案2
通常来说,使用 IDE 比使用命令行更实用。当要求 IDE 排版文件时,它会以某种方式转到文件所在目录并启动排版工具,这样相对文件路径就会相对于主文件所在的目录进行解析。
一些 IDE 实现了项目的概念(LaTeX Workshop
...),而其他 IDE 仅排版当前文件。TeXworks
还有一些 IDE 支持魔术注释来指定主文件。
在这种情况下,你chapter.tex
可以从类似的事情开始
% !TEX root = ../Main/main.tex
告诉 IDE 要排版的主文件位于何处。