适用于 Gnome 的支持 SyncTeX 的 PDF 查看器

适用于 Gnome 的支持 SyncTeX 的 PDF 查看器

我正在寻找一个可以在 Gnome 下使用 LaTeX 和 SyncTeX(正向和反向搜索)的 PDF 查看器。我从各种论坛上的先前问题中了解到 Okular 具有此功能,但我不想为此而拖拽 KDE 依赖项。

有没有一种替代方案可以在 Gnome 中很好地工作,而没有太多的依赖关系?我不介意使用 PPA、从源代码构建、使用旧的 X 样式工具或编写小脚本 - 但我需要一些已知可以工作并且不会使我的设置过于混乱的东西。

答案1

正如我在评论中指出的那样,如果您心中有想要与之一起使用的特定编辑器,这将会很有帮助。

gedit-latex-插件为 gEdit 添加内置 PDF 预览,我了解到它支持 SyncTeX 正向/反向搜索。当然,当我想到为 GNOME 用户提供某些功能时,我首先想到的就是这个。

还有其他带有内置预览器的 LaTeX 编辑器支持 SyncTeX 跳转,例如:特克斯沃克斯纺织机械商TeXmakerX。这些都是基于 Qt 而不是基于 GTK,但是它们都不需要 KDE 或其库(如 Kile/Okular 那样)。(橡胶基于 GTK 并具有内置预览器 -- 一个实时更新的预览器 -- 但我不认为它支持 synctex...)

正如另一个答案所指出的,evince 据称正在获得此功能,人们正在开发编辑器端交互所需的插件。我了解到它使用 DBus 进行交互——如果你问我,这是一个很大的错误——但你无法弄清楚它是如何工作的。然而,Arch Linux 用户存储库中的旧版本 evince 已修补,可以更直接地提供 SyncTeX 支持。我从未尝试在 Ubuntu 上编译它,尽管理论上应该可以。不过我在 Arch 上用过它,而且运行良好。

不过,我个人使用多媒体PDF作为我的 LaTeX 排版查看器,我之所以选择它,是因为它是我所知道的最快的 PDF 查看器,并且是唯一一个速度足够快以适应我与 Vim 作为编辑器一起使用的实时更新预览脚本的查看器。

虽然 MuPDF 不直接支持 SyncTeX,但我还是拼凑了一些工具提供部分 SyncTeX 支持的脚本。基本上,对于正向搜索,脚本从 vim 调用 synctex 来确定哪个页面与源中的位置匹配,然后将适当的击键发送到 MuPDF 以跳转到该页面。我使用 vim 脚本执行此操作,但使用 bash,类似下面的操作可能会奏效:

#!/bin/bash
# mupdf-forward.sh
# usage mupdf-forward.sh <line number> <column number> <tex file> <pdf file>
SEARCHLINE="$1"
SEARCHCOL="$2"
TEXFILE="$3"
PDFFILE="$4"
PAGEFORWARD=0
PAGEFORWARD="$(synctex view -i $SEARCHLINE:$SEARCHCOL:"'"'"$TEXFILE"'"'" -o "'"'"$PDFFILE"'"'" | grep -m1 'Page:' | sed 's/Page://' | tr -d '\n'")"
if [ $PAGEFORWARD -gt 0 ] ; then
   xdotool search --class MuPDF type --window %@ "${PAGEFORWARD}g"
fi

如果您拥有最新版本的 xdotool(甚至比 Maverick 存储库中的版本还要新),您可以通过让 xdotool 读取 MuPDF 从其标题栏显示的页码、调用 synctex,然后向编辑器发送适当的命令来跳转到该页面的代码所在的位置( - 不如使用真正的兼容 SyncTeX 的 PDF 查看器那么精确,但对于像 MuPDF 这样轻量级的东西来说也不算太差)。

无论如何,你可以阅读并下载我实际使用的 vim 脚本这篇博文。但如果您想使用不同的编辑器,则必须根据需要调整这个想法。

但希望 evince 的情况也能很快得到解决。

答案2

只需使用 Evince,它是 GNOME 和 Ubuntu 的默认文档查看器。自 GNOME 2.32(Ubuntu 10.10 和即将推出的 Ubuntu 11.04 中提供)以来,Evince 支持 SyncTex。有关更多信息,请参阅 http://library.gnome.org/misc/release-notes/2.32/

相关内容