如何强制 TexStudio 告诉预览直接转到新更新的文本

如何强制 TexStudio 告诉预览直接转到新更新的文本

我正在写论文,并且我有调用所有其他 chapter.tex 文件的 main.tex。

每当我做出更改时,TexStudio 的内部查看器都会突出显示它。但我不喜欢内部查看器。问题是当文件已经在预览中打开时,更新后的 pdf 会在每次编译/新编辑后回到开头,这浪费了我一路滚动到目录然后到文本的时间。我使用过其他 Tex 编辑器,即使是预览也不会回到开头。

有什么设置吗?希望问题清楚。

答案1

您可能不太擅长预览(例如,这个问题这个问题在我们的 Apple 姊妹网站上)。事实上,Preview 并不是为这种情况而设计的。

这个问题在 StackOverflow 上提供了一个可行的解决方案,通过添加脚本来强制关闭 PDF,然后在更新时重新打开。由于预览会记住上次使用的位置,因此这可能有效,但可能会遇到时间问题(脚本是在预览之前还是之后获取文件事件?)并且似乎需要打开终端窗口。

或者,由于 TeXStudio 可以发送文件和行信息到外部程序,编写一个脚本来获取这些信息并非不可能,使用synctex实用程序(包含在 MacTeX 中)找到相应的 PDF 位置,并使用类似此脚本中的 osascript 命令至少让预览到正确的页面。类似这样(这不进行任何错误检查,我还没有真正测试过它):

#!/bin/sh

PDFFILE=$1
TEXFILE=$2
LINE=$3

PAGE=$(synctex view -i "$LINE:0:$TEXFILE" -o "$PDFFILE" | grep 'Page' | head -n 1 | sed 's/Page://g')

if [$PAGE -eq '']; then PAGE=1; fi

open -a Preview "$PDFFILE"
sleep .5
osascript -e 'tell application "Preview" to activate' \
              -e 'delay 0.25' \
              -e 'tell application "System Events" to tell process "Preview" to click menu item "Go to Page…" of menu "Go" of menu bar 1' \
              -e 'delay 0.25' \
              -e "tell application \"System Events\" to keystroke \"$PAGE\"" \
              -e 'delay 0.25' \
              -e 'tell application "System Events" to key code 36'

可以将其保存为某处open_preview,标记为可执行文件(chmod u+x open_preview),然后通过将查看器命令设置为从 TeXStudio 中使用:

</path/to/open_preview> ?am.pdf ?c:am.tex @

这不会保持滚动位置,但它至少应该打开与您在 TeXStudio 中处理的页面相同的页面。

然而,最明智的做法是安装撇去并使用它来预览文档,因为它实现了重新加载和停留功能和 TeXStudio包括与之集成的说明

相关内容