我喜欢在 Texmaker 中编辑文件时使用 SyncTeX 进行向前和向后搜索。
但是,现在我正在写一篇很长的论文,需要我定期修改文档的开头(因此需要在实际写作位置和开头之间跳转)。我发现 SyncTeX 在编译时总是跳转到最后一个编辑位置,这很麻烦,因为对我来说,在 PDF 查看器中打开实际写作位置、在开头进行更改并编译以查看一切是否正常,然后通过从 PDF 向后搜索跳回到写作位置会容易得多。
有没有办法在 Texmaker 中仅部分启用 Synctex,以便向前/向后搜索有效,但在编译时不会自动跳转?我正在使用 LuaLaTeX 进行编译。
编辑:我刚刚意识到我原来的问题完全是胡说八道。在“快速构建”中,PDF 查看器不会跳转到上次编辑的位置,而是跳转到光标。所以实际上我的问题如下:如何实现当我点击“快速构建”时,文档会更新,但 PDF 查看器不会跳转到光标位置?相反,显示的位置应该只在我明确向前搜索时更改。
例如:假设我在 Texmaker 中打开了我的 .tex 文件和编译后的 PDF。我将 PDF 查看器滚动到第 15 页。现在,我需要对文档进行更改,该更改将显示在第 1 页。我在 .tex 文件中执行此操作并点击编译。现在,PDF 查看器将跳转到我的光标所在的位置(现在光标位于 tex 文件的顶部,因为我刚刚进行了这些更改),显示编译后的文档的第 1 页。我不想这样。相反,我希望 PDF 查看器继续显示第 15 页,只有当我明确按下 Ctrl+Space 进行向前搜索时才会改变其位置。
答案1
问题
据我所知,我思考有问题的行为或多或少被硬编码到编辑器中。如果你懂一些 C++,你可以编辑源代码,或者使用texmaker 网站上的联系表,但我不会屏住呼吸。
其他选项
这里有一些选择,但没有一个是完美的。
- 当然,您可以
-synctex=1
删除编译选项;这样它就不会在编译时跳转,但您也无法进行手动正向/反向搜索,至少除非您分配一个使用 synctex 标志进行编译的不同自定义命令并事先运行该命令。 - 您可以从 QuickBuild 命令中删除“查看 PDF”。缺点是,当您运行 QuickBuild 时,PDF 查看器根本不会更新,您必须手动使用“查看 PDF”/F7 按钮才能查看新输出。
- 您可以使用外部查看器并尝试将其配置为以这种方式工作。(可能取决于查看器。)
- 你可以尝试一下我提出的这个 hack 技巧。见下文。
部分有效的 Hack 式 hack
在选项 > 配置 Texmaker > 快速构建下,选择“用户:”选项作为自定义快速构建命令。现在使用向导按钮并选择您通常使用的选项。例如,我假设您选择“Pdflatex”,然后选择“Pdf Viewer”。这将为您填写一个例程。对于我在 Linux 上的情况,它看起来像这样:
pdflatex -synctex=1 -interaction=nonstopmode %.tex|xdg-open %.pdf
如果您不使用 Linux,它可能是除 之外的其他东西xdg-open %.pdf
;它甚至可能是一个外部工具,但我认为如果您将 texmaker 设置为使用内部查看器,那么无论它是什么都会被内部查看器命令替换。现在在 Pdf Viewer 命令之前插入用于将 synctex 记录重命名为临时名称的命令,然后插入用于将其重命名的命令,例如:
pdflatex -synctex=1 -interaction=nonstopmode %.tex|mv %.synctex.gz %.temp.gz|xdg-open %.pdf|mv %.temp.gz %.synctex.gz
现在,当它更新 PDF 时,它将无法找到 synctex 文件,从而破坏了它在更新 PDF 时跳转的能力。不过,PDF 会在查看器中更新而不会跳转。然后 synctex 文件会恢复。
根据我的测试,这会部分破坏之后的正向和反向搜索:之后,源代码中的 Ctrl-Space 和 PDF 查看器中的 Ctrl-Click 不会立即起作用。但是,如果您使用工具栏按钮或“F7”手动运行“查看 PDF”命令,它不仅可以工作,并将您带到与光标匹配的位置,而且它之后会重新启用正向和反向搜索(Ctrl-Space、Ctrl-Click),甚至无需重新编译文件。
这种黑客式的破解可能不是一个很好的解决方案。也许 TeXmaker 开发人员愿意为此提供一个选项。使用 TeXStudio fork 可能会更好。(例如,它已经有一个自动重新编译选项,激活时不会跳转到当前光标位置。)