使用 latexmk 从不同的目录进行编译?

使用 latexmk 从不同的目录进行编译?

我有两个问题:

1)如果我在目录中parent,如何将main.tex目录中的文件编译为 PDF 文件parent/subfolder/subfolder1/并保存到相同的最后位置?

我已经尝试过latexmk -pdf subfolder/subfolder/main.tex,它确实有效,但它会将所有辅助文件和生成的 PDF 文件编译到运行脚本的目录中(parent)。有没有办法让它将辅助文件和 PDF 输出到目标所在的目录中main.tex,同时仍然从中运行此命令parent

2) 我的main.tex引用位于不同目录中的文件夹中的文件,即:../commands/command.tex。使用\input{../commands/command.tex}并从同一目录进行编译是可行的,但是一旦我进入目录parent并尝试执行相同的操作,我就会收到消息! LaTeX Error: File ../commands/command.tex' not found.如何成功导入此文件并从中进行编译parent

这是我的文件的简化版本main.tex

\documentclass{article}

\input{../commands/command.tex}

\begin{document}

\begin{equation}
    \label{simple_equation}
    \alpha = \sqrt{ \beta }
\end{equation}

\test % my defined command

\end{document}

和我的command.tex文件:

\newcommand{\test}{dummy text}

请记住文件夹结构是:

parent
       subfolder
                subfolder1
                          main.tex
                commands 
                          command.tex

我想从目录编译 main.texparent

答案1

正如评论中提到的那样,-cdlatexmk 的选项完全符合您的要求

latexmk -pdf -cd subfolder/subfolder/main.tex

答案2

在 Linux 系统上(也可能是 Mac)您可以创建一个#!/bin/bash脚本(我们将其命名为 myLTXRun.sh 并将其保存在 main.tex 的目录中):

该脚本将包含以下行:

#!/bin/bash
COMMAND1="cd /path/of/main/latex/file"
COMMAND2="latexmk main.tex"
echo "Running:"$COMMAND1
$COMMAND1
echo "Running:"$COMMAND2
$COMMAND2

然后您将使用以下命令(从 main.tex 文件的目录中)为 .sh 文件授予所需的权限:

chmod +775 myLTXRun.sh

然后您可以从任何目录运行以下命令:

sh /path/to/mainFile/dir/myLTXRun.sh

(在 Debian GNU/Linux 上测试)

在 Windows 10 上你可以在安装完 Windows 子系统后使用与 Linux 完全相同的步骤:以下是说明

(我还没有测试过!)

从命令提示符中,最后一个命令必须替换为:

bash -c "sh /path/to/mainFile/dir/myLTXRun.sh"

相关内容