我正在写论文,并且我有调用所有其他 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包括与之集成的说明。