PDF 读书笔记插件 org-noter
org-noter 是什么?
- 实现功能: 用一个
.org笔记文件作为书本页边空间的延展, 记录任何信息, 包括截图, 数学公式, 代码等 pdf窗口和org窗口双向同步- 在浏览
pdf文件时, 笔记窗口光标会跟随到相应位置 - 在笔记文件中移动光标,
pdf文件会跟随滚动
- 在浏览
选择 org-noter 的理由
… 或者选择 org 文件的理由
- 电子笔记: 无纸化, 便携, 可检索
- 纯文本格式, 易于保存和同步 (如用
Git) - 基于
org-mode的强大功能和生态- 诞生于 2003 年 (Markdown 诞生于 2004 年)
org-mode是 Emacs 中最强大的插件- 天生为笔记而生. 核心是"大纲式浏览" + “标记语言” + “任务管理”
- 可以输出成
markdown,html,latex,odt等多种格式 - 本身支持 LaTeX 公式的编辑与预览
安装
org-mode: Emacs 自带, 可以通过 M-x package-list-package 更新到Melpa最新版pdf-tools: 阅读pdf必备, 参考往期视频: 【Emacs+LaTeX教程】Emacs最强内置pdf阅读功能pdf-tools简介org-noter: M-x package-list-package 安装Melpa最新版- 2023 年 3 月更新内容
- 2 维笔记定位
djvu,epub文件支持- 批注小标题优化
- 如果安装了
use-package, 可将以下代码加入init.el自动安装(use-package org-noter :ensure t )
- 2023 年 3 月更新内容
基本操作
打开 org-noter
org-noter 打开需要执行 M-x org-noter 命令. 有两种方式
- 从
pdf文件打开 需要指定org文件名及路径. 这时会自动生成一个org文件, 并在org文件中保存pdf文件的路径名 - 从
org文件打开 这里org文件里须包含pdf文件的路径名, 一般来说是由第一种方式生成的org文件.
未来的计划: 结合 org-roam + org-roam-bibtex + Zotero, 我们可以生成一个包含 pdf 路径的 org-noter 读书笔记模板
- 作为
org-noter的笔记文件使用 - 作为个人知识库一个节点被引用
大纲导入及 org-mode 基本操作
在 pdf 界面, M-x org-noter-create-skeleton 可以导入 pdf 大纲
小技巧: 在 pdf-tools 中, o / q 可以显示/关闭大纲.
org-mode 常用快捷键:
- <tab> : 展开/折叠光标下标题, 进行如下循环: “只显示标题” -> “显示子标题” -> “显示子标题内容” -> “只显示标题”
- <shift>-<tab>: 同时展开/折叠所有标题
- M-<left> / M-<right> : 当前标题升级/降级
- M-S-<left> / M-S-<right>: 当前标题及其子标题升级/降级
插入笔记
org-noter 通过记录页码及位置保持笔记文件与 pdf 文件的同步. 根据定位的精度, 在 pdf 界面, 有 3 种插入笔记方式
- 方法 1
- 按 i 在当前页插入笔记 (page note)
- 方法 2
- 按 M-i 在鼠标点击位置插入笔记 (precise note)
- 方法 3
- 选中文字后, 按 <tab> / M-i 或 i 在选中文字位置插入笔记
在笔记中还可以使用 CDLaTeX 编辑数学公式, 以及用 org-download 插入截图. 请到教程的最后查看这些功能的基本设置.
位置同步
pdf->org: 自动org->pdf: 手动- M-p / M-. / M-n: 上一/当前/下一页笔记
- C-M-p / C-M-. / C-M-n: 上一/当前/下一条笔记
- 以上命令也可以在
pdf界面中使用
高级设置
默认笔记目录
(setq org-noter-notes-search-path '("your/path/to/note-directory/" "2nd-path" "3rd-path"))设置后, 从 pdf 文件中使用 org-noter 命令会自动在上述目录中寻找与文件名同名的 .org 笔记文件.
两种 org-noter 使用模式
- (推荐) 笔记在不同的
.org文件中 - 所有笔记在同一个
.org文件中: 将上述变量设置为一个文件名(setq org-noter-notes-search-path '("your/path/to/notes.org"))
自动保存上次位置
(setq org-noter-auto-save-last-location t)选中文字后插入笔记自动高亮
(setq org-noter-highlight-selected-text t)这是全局设置. 如果想对某一条笔记临时启用或禁用, 可以使用 C-u 前缀.
例如: 当前高亮默认设置为 t, 但当前笔记不想高亮文字, 可以使用 C-u M-e 插入 precise note
长文本和短文本
- 短文本默认标题为全文
- 长文本默认标题为
Note for page XXX
修改长/短文本标准:
(setq org-noter-max-short-selected-text-length 20) ;; 默认为 80修改短文本默认标题:
(setq org-noter-default-heading-title "第 $p$ 页的笔记")修改快捷键
(global-set-key (kbd "C-c n n") 'org-noter) ;; 与 org-roam 配合
(define-key org-noter-doc-mode-map (kbd "e") 'org-noter-insert-note) ;; 加入左手键位
(define-key org-noter-doc-mode-map (kbd "M-e") 'org-noter-insert-precise-note) ;; 加入左手键位代码汇总
自定义设置的全部代码
(setq org-noter-notes-search-path '("your/path/to/note-directory/")) ;; 默认笔记路径
(setq org-noter-auto-save-last-location t) ;; 自动保存上次阅读位置
(setq org-noter-max-short-selected-text-length 20) ;; 默认为 80
(setq org-noter-default-heading-title "第 $p$ 页的笔记") ;; 默认短标题格式
(global-set-key (kbd "C-c n n") 'org-noter) ;; 与 org-roam 配合
(define-key org-noter-doc-mode-map (kbd "e") 'org-noter-insert-note) ;; 加入左手键位
(define-key org-noter-doc-mode-map (kbd "M-e") 'org-noter-insert-precise-note) ;; 加入左手键位将上述代码写在 use-package 代码块中:
(use-package org-noter
:ensure t
:custom
(org-noter-notes-search-path '("your/path/to/note-directory/")) ;; 默认笔记路径
(org-noter-auto-save-last-location t) ;; 自动保存上次阅读位置
(org-noter-max-short-selected-text-length 20) ;; 默认为 80
(org-noter-default-heading-title "第 $p$ 页的笔记") ;; 默认短标题格式
:bind
(("C-c n n" . org-noter) ;; 与 org-roam 配合
:map org-noter-doc-mode-map ;; 加入左手键位
("e" . org-noter-insert-note)
("M-e" . org-noter-insert-precise-note)))LaTeX 公式
org-mode 中与 LaTex 有关的设置
(use-package org
:defer t ;; 延迟加载
:custom
(org-highlight-latex-and-related '(native latex entities)) ;; LaTeX 高亮设置
(org-pretty-entities t) ;; LaTeX 代码的 prettify
(org-pretty-entities-include-sub-superscripts nil) ;; 不隐藏 LaTeX 的上下标更容易编辑
(org-format-latex-options
'(:foreground default :background default :scale 1.8 :html-foreground "Black" :html-background "Transparent" :html-scale 1.0 :matchers ("begin" "$1" "$" "$$" "\\(" "\\["))) ;; 增大公式预览的图片大小
:config
(add-hook 'org-mode-hook #'org-cdlatex-mode) ;; 打开 cdlatex
)CDLaTeX 的设置可以参考我的视频
我会在另一期教程中详细介绍 org-mode 中 LaTeX 编辑的设置.
截图功能
需要借助 org-download 实现. 在这里只给出实现截图功能的设置代码, 以后的教程再详细讲解.
使用方法
- 使用系统截图工具 (
Windows下用 <Win>+<shift>+s) 将截图保存到剪贴板 - 用 C-M-y (绑定了 org-download-clipboard 函数) 将剪贴板中图片粘贴到
org文件中.
安装方法
Linux/MacOS(未测试) 用以下use-package代码安装及设置(use-package org-download :ensure t ;; 自动从 melpa 上安装 :defer t ;; 延迟加载 :bind (:map org-mode-map ("C-M-y" . org-download-clipboard)) ;; 绑定从剪贴版粘贴截图的快捷键 :custom (org-download-heading-lvl 1) ;; 用一级标题给截图文件命名 :config (setq-default org-download-image-dir "./img")) ;; 用同级 ./img 目录放置截图文件Windows- 需要安装
ImageMagick, 并保证magick.exe在PATH变量的路径中 用msys2安装pacman -S mingw-w64-x86_64-imagemagick - 从这里或网盘下载
org-download.el文件, 置于你的.emacs.d文件夹合适的路径中 (如~/.emacs.d/lisp/) - 使用以下
use-package代码及设置(use-package org-download :ensure async ;; 因为不是从melpa安装, 需要手动保证async安装 :defer t ;; 延迟加载 :load-path "~/.emacs.d/lisp/" :bind (:map org-mode-map ("C-M-y" . org-download-clipboard)) ;; 绑定从剪贴版粘贴截图的快捷键 :custom (org-download-heading-lvl 1) ;; 用一级标题给截图文件命名 :config (setq-default org-download-image-dir "./img")) ;; 用同级 ./img 目录放置截图文件
- 需要安装