使用 Texmaker + SumatraPDF 配置正向搜索

使用 Texmaker + SumatraPDF 配置正向搜索

Texmaker 有一个内置的 pdf 查看器,支持开箱即用的 synctex 正向/反向搜索。此内置查看器可以嵌入或显示在单独的窗口中,外部查看器始终有一个单独的窗口。由于我有两个屏幕,因此我使用双窗口布局。

现在我想切换到苏门答腊PDF作为外部查看器,但找不到如何配置 Texmaker 以使正向搜索正常工作。
我已提交功能要求将该信息添加到Texmaker 文档已经。这里有人知道怎么做吗?可能使用一些DDE 命令...

答案1

似乎 Texmaker 不允许 DDE 命令,但是自 1.9 版 SumatraPDF不仅支持通过 DDE 命令进行前向搜索,还支持通过命令行开关进行前向搜索。 自 3.2.1 版 Texmaker具有使用前向搜索所需的所有变量。这些变量包括

  • %对于主文件的基本名称(不带路径和扩展名),
  • !获取主文档所在目录的完整路径,
  • #当前活动文件的基本名称(无路径、无扩展名)和
  • @为行号。

因此通常可以采取以下措施:

""C:/Program Files (x86)/SumatraPDF/SumatraPDF.exe" -reuse-instance "!/%.pdf" -forward-search "!/#.tex" @

当包含子目录时,此操作将失败。一种解决方法是手动将 subDirName 添加到路径:

""C:/Program Files (x86)/SumatraPDF/SumatraPDF.exe" -reuse-instance "!/%.pdf" -forward-search "!/subDirName/#.tex" @

但是 subDirName 在所有项目中都应该相同,所以这更多的是一种变通方法而不是真正的解决方案。

以下是我的 Texmaker 配置的屏幕截图: 在此处输入图片描述

答案2

我刚刚制作了一份文档,描述了如何设置 Texmaker 和 SumatraPDF 以及正向和反向搜索,但完全可移植,这有点棘手。操作方法链接http://goo.gl/hxDeu(无重定向:http://goo.gl/hxDeu+)或参见下文:

1. 配置 Texmaker 使用 SumatraPDF 作为具有正向搜索功能的外部 PDF 查看器 打开便携式 Texmaker 并将路径设置为外部查看器,如下所示:

./SumatraPDF/SumatraPDF.exe %.pdf -reuse-instance -forward-search %.tex @

请注意,SumatraPDF.exe 的路径与 Texmaker 可执行文件相关,您可能需要编辑此路径以匹配您的文件夹结构。

Texmaker -> 配置 Texmaker -> 命令

2. 在 SumatraPDF 中配置反向搜索

默认情况下,SumatraPDF 不允许通过 GUI 配置反向搜索。运行以下命令:

SumatraPDF.exe -inverse-search "texmaker.exe %f -line %l"

您不应更改 texmaker.exe 文件的路径,即使您的文件夹结构与我的不同。

SumatraPDF 选项窗口,其中未隐藏反向搜索设置

3.创建启动批处理文件

由于 SumatraPDF 中的一些限制,每次我们想要使用 SumatraPDF 作为外部查看器时,我们都必须使用以下批处理文件启动 Texmaker。将以下命令放入 texmaker-portable.bat 中,并将此文件保存到与 Texmaker.exe 相同的文件夹中。另请注意,您可以将任何参数传递给 texmaker.exe 本身,并将其传递给 texmaker-portable.bat。

@echo off
set PATH=%~dp0;%PATH%
start /D "%~dp0" texmaker.exe %*

4.运行texmaker-portable.bat并测试设置

故障排除

  • 确保在格式化 tex 文件时使用-synctex=1或参数-synctex=-1
  • tex 文件的名称中不应包含空格(Texmaker 和 SumatraPDF 可以很好地处理空格,但即使使用参数也可能无法创建 SyncTeX 文件-synctex=1
  • 确保使用批处理文件启动了 Texmaker,并通过 Texmaker 启动了 SumatraPDF(此链是强制性的)

答案3

这是对上面 Vlastimil 的回答的回应。我发现反向搜索在没有批处理文件的情况下也能正常工作。我只需在 Sumatra PDF 选项中使用以下行(它会自动显示为选项)。我使用的是 Sumatra 2.1.1 和 Texmaker 3.5。

"C:\Program Files (x86)\Texmaker\texmaker.exe" "%f" -line %l

正如其他人所说,前向搜索也可以通过 Texmaker 选项中的命令行进行:

"C:/Program Files (x86)/SumatraPDF/SumatraPDF.exe" -reuse-instance %.pdf -forward-search "#.tex" @

答案4

这个答案旨在理解 TeXmaker v4.5 和 TeXstudio v2.12.22 与 SumatraPDF v3.2 的步骤

TeXmaker

  1. 在 Texmaker 中,转到Options > Configure Texmaker > Commands
  2. External Viewer字段中(如果您使用 SumatraPDF),输入

    "C:\Program Files\SumatraPDF\SumatraPDF.exe" -1 -s @%.tex %.pdf
    

在此处输入图片描述

  1. 在 SumatraPDF 中,转到Settings > Options,然后输入Set inverse search command-line

    "C:\Program Files (x86)\Texmaker\texmaker.exe" "%f" -line %l
    

在此处输入图片描述

特克斯工作室

如果你使用 TeXstudio

  1. 在 TeXstudio 中,转到Options > Configure TeXstudio > Commands
  2. External PDF Viewer字段中输入

    "C:\Program Files\SumatraPDF\SumatraPDF.exe" -reuse-instance -inverse-search "\"C:/Program Files (x86)/texstudio/texstudio.exe\" \"%%f\" -line %%l" -forward-search "?c:am.tex" @ "?am.pdf"
    

在此处输入图片描述

  1. 在 SumatraPDF 中,转到Settings > Options,然后在 中Set inverse search command-line输入

    "C:/Program Files (x86)/texstudio/texstudio.exe" "%f" -line %l
    

在此处输入图片描述

相关内容