在 TeXShop 中,在“首选项”->“引擎”下,我通过添加 修改了 LaTeX 命令-output-dir=/tmp
。我的所有辅助文件和最终输出文件都位于此目录中,而不是我的源文件所在的目录中。这就是我想要的,目前它可以正常工作。
但是,当 output-dir 设置为任意值时,输出 pdf 不会在成功排版后在 TeXShop Preview 窗口中打开。我可以使用另一个 pdf 查看器从 /tmp 手动打开 pdf。此外,窗口-> 源<=>预览菜单项不执行任何操作。
有没有办法结合不同的输出目录来恢复自动预览功能?
答案1
让我进一步解释一下我上述评论中建议的解决方案。在 TeXShop 中,您可以选择在按下Typeset
。一个“引擎”基本上是一个调用标准 TeX 命令的 shell 脚本,有时甚至更多(请参阅 TeXShop 帮助面板或这个帖子例如)。在您的案例中,修改 TeXShop 首选项中的 pdfTeX 命令会更改标准 LaTeX 引擎。由于您的修改,TeXShop 无法在排版后自动打开 PDF 预览。恢复此行为的一种方法是编写一个新引擎。
为此,您只需创建一个包含以下代码的 shell 脚本
#!/bin/bash
pdflatex --output-dir=/tmp "$1"
open -a TeXShop /tmp/$(echo $1 | sed 's/\(.*\)\..*/\1\.pdf/')
确保执行位处于活动状态(chmod +x
),将扩展名更改为.engine
并将脚本移动到~/Library/TeXShop/Engines
文件夹。启动 TeXShop 并在按钮旁边的弹出菜单中选择新引擎Typeset
,然后按Typeset
。
可能有更优雅的解决方案,但是这个有效。
答案2
我的解决方案是使用latexmklatexmkrc
引擎。然后我将目录中的以下文件与我的源 ( .tex
) 文件一起使用。(您也可以将其添加到全局~/latexmkrc
文件中。):
# latexmk Init File; -*-perl-*-
$pdf_mode = 1;
$out_dir = '_build';
mkdir $out_dir;
$pdflatex = 'pdflatex --synctex=1 %O %S; cp %D .';
这将首先确保$out_dir
(在此处设置为_build
)存在,然后将pdflatex
使用标志调用--output-directory=_build
(latexmk
执行此操作)。最后,在每次调用之后pdflatex
,生成的.pdf
文件(由%D
将被复制到当前目录,覆盖本地文件,触发TeXShop的预览器重新加载文件。(正如原始海报所提到的,创建符号链接是不够的。)
我发现将生成的 pdf 文件复制出_build
目录的行为很有用,因为我通常想保留它,即使删除所有辅助文件(只需通过删除目录即可完成_build
)。
通过添加以下评论
% !TEX TS-program = pdflatexmk
在来源顶部(.tex
,你可以确保TeXShoppdflatexmk
将默认使用引擎。
这种方法的优点是,通过分发文件latexmkrc
,.tex
文件一起分发,对于使用TeXShop– 即使他们忘记选择pdflatexmk
引擎。
* 如果满足以下条件,此方法将“有效”TeXShop安装在 3.07 或更高版本。否则,您将需要(让您的同事)将非活动pdflatexmk.engine
文件复制到活动引擎目录(注意:~/Library/
是文件夹Library
中的文件夹$HOME
,而不是系统/Library
文件夹):
cp ~/Library/TeXShop/Engines/Inactive/Latexmk/pdflatexmk.engine ~/Library/TeXShop/Engines/
也可以看看
答案3
在之前的回答中,我发现platexmkrc
需要一个文件名(这里的字符“p”很重要),这样一切都可以按预期运行。Herbert SchulzTexShop
在文件中解释了这个细节(TexShop/Engines/Inactive/Latexmk/Latexmk For TeXShop.pdf
[电子邮件保护]),也引用于这回答。
我发现,因为latexmk -commands
响应了To run pdflatex, I use 'pdflatex -synctex=1 -halt-on-error %O %S; cp %D .'
,但 TeXShop 完全忽略了 中的这一行latexmkrc
(尽管它解释了其他行,创建了一个新目录并将文件放入 中定义的目录$out_dir = '_build';
中latexmkrc
)。因此我现在有两个文件,一个latexmkrc
和一个platexmkrc
。
我跑
Latexmk, John Collins, 19 Jan. 2017. Version 4.52c
pdfTeX 3.14159265-2.6-1.40.18 (TeX Live 2017)
TeXShop Version 3.62 (3.62)
(这是我的第一篇帖子,因此我无法编辑/评论)