使用 latexmk 将 pdf 和 .synctex.gz 复制到工作目录,适用于 Windows,不适用于 os x

使用 latexmk 将 pdf 和 .synctex.gz 复制到工作目录,适用于 Windows,不适用于 os x

我在 Mac 上使用 latexmk 时遇到问题。我使用 emacs 作为 latex 编辑器,并将其配置为使用 latexmk。我指定了一个输出目录,但为了让 synctex 正常工作,我需要工作目录中的 pdf 和 .synctex 文件。

在我的 Windows 计算机上,这可以完美地运行,只需使用 .latexmkrc 文件中的以下几行即可:

$out_dir = 'build';
$pdflatex = 'cmd /c lualatex -interaction=nonstopmode -synctex=1 %O %S && copy %D %R.pdf && copy %Z%B.synctex.gz';

但是,如果我尝试在 Mac 上使用同一行,则只会复制 pdf,而 .synctex 文件保持不变。我不明白为什么它不起作用。我还没有在 Linux 上测试它,看看它是否在那里有效。

这是我在 Mac 上使用的行:

$out_dir = 'build';
$pdflatex = 'lualatex -interaction=nonstopmode -synctex=1 %O %S;cp %D %R.pdf;cp %Z%B.synctex.gz';

根据 latexmks 手册,语法和占位符应该是正确的,而且正如我所说,它在 Windows 上确实有效。我尝试过直接寻址“build”目录,而不是使用占位符 %Z,但没有奏效。

我希望有人能帮助我解决这个问题,提前谢谢 ;-)

答案1

(从评论中复制,因此问题稍后可以标记为已回答)

Windowscopy应该只接受一个参数,即“将参数复制到当前工作目录”。Unix(包括 OS X)不会接受 的单个参数cp。您需要为其提供一个目标目录,可以是绝对路径或相对路径。如果%Z是实际目标下的目录,您应该能够使用%Z/..,例如cp %Z%B.synctex.gz %Z/..——您也可以使用cp %Z%B.synctex.gz .

答案2

这听起来像是ltx2any代替latexmk

  • 它自动使用构建目录
  • 自动复制回 pdf 文件
  • 它将-synctexsynctex 文件复制回你的工作目录

相关内容