使用 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=1參數也可能無法建立 SyncTeX 檔案)
  • 確保您透過 Texmaker 使用批次檔和 SumatraPDF 啟動了 Texmaker(此鍊是強制性的)

答案3

這是對上方 Vlastimil 的答案的回應。我發現反向搜尋在沒有批次文件的情況下也可以正常工作。我只是在 Sumatra PDF Options 中使用以下行(它作為選項自動出現)。我正在使用 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 的步驟

德克斯馬克

  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
    

在此輸入影像描述

相關內容