Emacs中pdf-tools的安裝與配置指南
Table of Contents
使用 pdf-tools 的理由
在用 Emacs 編寫 LaTeX 文檔的過程中, 你是否…
預(yù)覽 pdf 需要來回在編輯器和 pdf 閱讀器之間切換?
pdf 閱讀器想實(shí)現(xiàn)一些新功能?
想給 pdf 閱讀器的常用功能定義新的快捷鍵?
又或者, 你想用 Emacs 做讀書筆記, 需要同時(shí):
輸入大量的數(shù)學(xué)符號(hào)
對(duì) pdf 文件進(jìn)行批注
同步 Emacs 筆記文件和 pdf 文件批注的位置
pdf-tools 可以完美實(shí)現(xiàn)這些目標(biāo).
pdf-tools 的優(yōu)點(diǎn)
與 DocView (Emacs 中內(nèi)置的 pdf 閱讀器) 比較
DocView: 不清晰, 閱讀效果差, 讀取速度慢
pdf-tools:
速度快, 圖片渲染效果好
正常鼠標(biāo)操作 + 大量 (可自定義) 快捷鍵
演示
功能:
基礎(chǔ)的 pdf 閱讀功能應(yīng)有盡有, 包括超鏈接跳轉(zhuǎn)和返回, 展開目錄等
與 auctex 配合使用, 支持對(duì)編譯后 pdf 進(jìn)行正向/反向搜索
pdf 批注, 高亮, 下劃線 (可保存在 pdf 文件上)
使用場景
編寫 latex 文檔
配合 org-noter 在 pdf 上做讀書筆記
安裝流程
分為兩部分
Emacs 包的安裝
保證 melpa-stable 在 Emacs 包的列表中 可以通過查看 package-archives 變量進(jìn)行確認(rèn)
用 M-x package-list-package 打開 Emacs 包的列表
用 C-s pdf-tools 找到 pdf-tools
安裝 melpa-stable 版本 ?(2023.3: melpa 版本仍有 bug)
epdfinfo.exe 的安裝
epdfinfo.exe 及其它一些依賴文件 (例如 libpopper-<version>.dll) 可以幫助 Emacs 讀取 pdf 文件
兩種方法
把預(yù)編譯好的文件直接放進(jìn) Emacs 的安裝目錄 (將上傳一個(gè)可用的版本: ? https://www.jianguoyun.com/p/DTiBwxMQ856tCxiflP0EIAA)
利用 msys2
用 msys2 安裝 epdfinfo
什么是 msys2?
可以將許多開源程序本地化編譯為 Windows 程序的平臺(tái)
優(yōu)點(diǎn)
軟件管理和升級(jí)方便
Emacs 一些高階功能依賴的不少開源程序都能在上面下載
其它可以安裝的開源軟件: Git, Emacs, texlive, gcc, python …
步驟
到 msys2 官網(wǎng)上 https://www.msys2.org/ 下載安裝程序 msys2-x86_x64-<date>.exe. 默認(rèn)安裝目錄為 C:/msys64/.
打開 C:/msys64/ 下 mingw64.exe. 會(huì)彈出一個(gè)命令行終端
在命令行終端中輸入
以上命令可以在這里: https://packages.msys2.org/package/mingw-w64-x86_64-emacs-pdf-tools-server?repo=mingw64找到.
確認(rèn)并安裝所有依賴包.
安裝完成后, 你應(yīng)該能在 C:\msys64\mingw64\bin 中找到 epdfinfo.exe.
將 C:\msys64\mingw64\bin 加入環(huán)境變量 PATH
基本配置
啟動(dòng) pdf-tools
在 init.el 文件中加入
如果想延遲啟動(dòng) (如打開 pdf 文件后再啟動(dòng), 節(jié)省 Emacs 啟動(dòng)時(shí)間), 可以用下面的代碼替換
配合 AucTeX 使用的配置
保持不變的設(shè)置
使用 Sumatra PDF 的配置
pdf-tools 的配置
操作與個(gè)性化: 移動(dòng)
向下/上小滑動(dòng): 鼠標(biāo)滾輪, C-n / C-p
向下/上大滑動(dòng): <space> / S-<space>
向后/前翻頁: n / p
我的設(shè)置: 盡量把移動(dòng)綁定在左手 (awsd), 空出右手進(jìn)行鼠標(biāo)操作.
操作與個(gè)性化: 批注
高亮: 右鍵菜單, 或 C-C C-a h (h=highlight)
直線下劃線: 右鍵菜單, 或 C-c C-a u (u=underline)
波浪下劃線: 右鍵菜單, 或 C-c C-a s (s=squiggly)
文字批注: 右鍵菜單, 或 C-c C-a t (t=text)
刪除批注: 右鍵菜單, 或 C-c C-a D (d=delete)
我的設(shè)置:
操作與個(gè)性化: 文檔跳轉(zhuǎn)
展示目錄: o
跳到目錄位置: <enter> / M-<enter>
關(guān)閉目錄: q
返回上一個(gè)位置: l
跳到下一個(gè)位置: r
這里重新綁定常用的返回功能 (小知識(shí): 在 Sumatra PDF 里對(duì)應(yīng) Alt-<right>)
操作與個(gè)性化: 放縮
放大/縮小: + / -
放大到頁寬/頁高/屏幕: W / H / P
重置: 0
打開 pdf 文件時(shí)自動(dòng)放縮
其它可能出現(xiàn)的 bug
無法進(jìn)行高亮/劃線等
這可能是安裝了 2023 年后 pdf-tools 的版本導(dǎo)致的. 可以從 M-x package-list-package 界面中確認(rèn)是從 melpa-stable 中安裝的
形同 (invalid-function pdf-view-current-page) 的錯(cuò)誤信息
這是因?yàn)樵?28.x 以后的 Emacs 版本中會(huì)開啟本地化編譯 (native compilation), 而 pdf-tools 中有一些語法過時(shí)了, 在本地化編譯時(shí)會(huì)報(bào)錯(cuò). 如果這個(gè) bug 不解決的話, 不影響 pdf-tools 的使用, 但是會(huì)稍微降低 pdf 渲染的速度.
如何確認(rèn)你的 Emacs 版本支持本地化編譯
用 C-h v <enter> system-configuration-options <enter> 查詢, 如果變量包含字段 --with-native-compilation, 則說明當(dāng)前版本支持本地化編譯
本地化編譯后的文件會(huì)放在 .emacs.d/eln-cache/ 中, 以 .elc 結(jié)尾.
解決方法
如果在上面的目錄下已經(jīng)產(chǎn)生了 pdf-*.elc 文件, 請先刪除.
完全禁用本地化編譯
只禁止 pdf-tools 的本地化編譯
完整配置:
相關(guān)資源
pdf-tools 的 Github 倉庫: https://github.com/vedang/pdf-tools
msys2 官網(wǎng) https://www.msys2.org/
epdfinfo.exe 可用版本: ?https://www.jianguoyun.com/p/DTiBwxMQ856tCxiflP0EIAA