我在 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 文件
- 它将
-synctex
synctex 文件复制回你的工作目录