Emacs中pdf-tools的安装与配置指南
Table of Contents
使用 pdf-tools 的理由
在用 Emacs 编写 LaTeX 文档的过程中, 你是否…
预览 pdf 需要来回在编辑器和 pdf 阅读器之间切换?
pdf 阅读器想实现一些新功能?
想给 pdf 阅读器的常用功能定义新的快捷键?
又或者, 你想用 Emacs 做读书笔记, 需要同时:
输入大量的数学符号
对 pdf 文件进行批注
同步 Emacs 笔记文件和 pdf 文件批注的位置
pdf-tools 可以完美实现这些目标.
pdf-tools 的优点
与 DocView (Emacs 中内置的 pdf 阅读器) 比较
DocView: 不清晰, 阅读效果差, 读取速度慢
pdf-tools:
速度快, 图片渲染效果好
正常鼠标操作 + 大量 (可自定义) 快捷键
演示
功能:
基础的 pdf 阅读功能应有尽有, 包括超链接跳转和返回, 展开目录等
与 auctex 配合使用, 支持对编译后 pdf 进行正向/反向搜索
pdf 批注, 高亮, 下划线 (可保存在 pdf 文件上)
使用场景
编写 latex 文档
配合 org-noter 在 pdf 上做读书笔记
安装流程
分为两部分
Emacs 包的安装
保证 melpa-stable 在 Emacs 包的列表中 可以通过查看 package-archives 变量进行确认
用 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 文件
两种方法
把预编译好的文件直接放进 Emacs 的安装目录 (将上传一个可用的版本: https://www.jianguoyun.com/p/DTiBwxMQ856tCxiflP0EIAA)
利用 msys2
用 msys2 安装 epdfinfo
什么是 msys2?
可以将许多开源程序本地化编译为 Windows 程序的平台
优点
软件管理和升级方便
Emacs 一些高阶功能依赖的不少开源程序都能在上面下载
其它可以安装的开源软件: Git, Emacs, texlive, gcc, python …
步骤
到 msys2 官网上 https://www.msys2.org/ 下载安装程序 msys2-x86_x64-<date>.exe. 默认安装目录为 C:/msys64/.
打开 C:/msys64/ 下 mingw64.exe. 会弹出一个命令行终端
在命令行终端中输入
以上命令可以在这里: https://packages.msys2.org/package/mingw-w64-x86_64-emacs-pdf-tools-server?repo=mingw64找到.
确认并安装所有依赖包.
安装完成后, 你应该能在 C:\msys64\mingw64\bin 中找到 epdfinfo.exe.
将 C:\msys64\mingw64\bin 加入环境变量 PATH
基本配置
启动 pdf-tools
在 init.el 文件中加入
如果想延迟启动 (如打开 pdf 文件后再启动, 节省 Emacs 启动时间), 可以用下面的代码替换
配合 AucTeX 使用的配置
保持不变的设置
使用 Sumatra PDF 的配置
pdf-tools 的配置
操作与个性化: 移动
向下/上小滑动: 鼠标滚轮, C-n / C-p
向下/上大滑动: <space> / S-<space>
向后/前翻页: n / p
我的设置: 尽量把移动绑定在左手 (awsd), 空出右手进行鼠标操作.
操作与个性化: 批注
高亮: 右键菜单, 或 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)
我的设置:
操作与个性化: 文档跳转
展示目录: o
跳到目录位置: <enter> / M-<enter>
关闭目录: q
返回上一个位置: l
跳到下一个位置: r
这里重新绑定常用的返回功能 (小知识: 在 Sumatra PDF 里对应 Alt-<right>)
操作与个性化: 放缩
放大/缩小: + / -
放大到页宽/页高/屏幕: W / H / P
重置: 0
打开 pdf 文件时自动放缩
其它可能出现的 bug
无法进行高亮/划线等
这可能是安装了 2023 年后 pdf-tools 的版本导致的. 可以从 M-x package-list-package 界面中确认是从 melpa-stable 中安装的
形同 (invalid-function pdf-view-current-page) 的错误信息
这是因为在 28.x 以后的 Emacs 版本中会开启本地化编译 (native compilation), 而 pdf-tools 中有一些语法过时了, 在本地化编译时会报错. 如果这个 bug 不解决的话, 不影响 pdf-tools 的使用, 但是会稍微降低 pdf 渲染的速度.
如何确认你的 Emacs 版本支持本地化编译
用 C-h v <enter> system-configuration-options <enter> 查询, 如果变量包含字段 --with-native-compilation, 则说明当前版本支持本地化编译
本地化编译后的文件会放在 .emacs.d/eln-cache/ 中, 以 .elc 结尾.
解决方法
如果在上面的目录下已经产生了 pdf-*.elc 文件, 请先删除.
完全禁用本地化编译
只禁止 pdf-tools 的本地化编译
完整配置:
相关资源
pdf-tools 的 Github 仓库: https://github.com/vedang/pdf-tools
msys2 官网 https://www.msys2.org/
epdfinfo.exe 可用版本: https://www.jianguoyun.com/p/DTiBwxMQ856tCxiflP0EIAA