Emacs 终生个人知识库
- 第 0 节: 什么是双链笔记与 org-roam 初体验 (视频)
- 第 1 节: PDF 读书笔记插件 org-noter (视频)
- 第 1 节: Zotero文献管理系统简介 (视频)
- 第 3 节: 用org-roam管理Zotero文献笔记 (视频)
笔记核心功能:
笔记类型举例
…
从笔记高效地提取信息很难
LaTeX, org, markdown 等原子化笔记 + 网状结构链接 串连笔记, 自下而上生成结构Roam Research, Obsidian, Logseq, Notion …org-roam 的知识管理系统org-roam… 而不是 Roam Research, Obsedian, Logseq, Notion, …
Zotero 整合Roam Research: 创建于 2020.1., 双链+图形界面, 订阅制 (基础版 180$/年)Obsidian: 创建于 2020.3. 基于 Markdown 文件, 有强大插件生态, 基础版免费, 全平台使用Logseq: 创建于 2020. 开源, 基于 Markdown 或 org 文件. 与 Obsedian 非常像org-mode + Emacs链接链接 体现org-roam 记录学习 org-roam 的笔记Zotero 文献管理整合 (org-ref, helm-bibtex, org-roam-bibtex)org-noter 整合org 笔记流程优化org-cdlatex, org-preview)company)pyim)org-ref)org 界面优化 (org-modern, org-face …)org-agenda)org-roam-daily)org-roam-ui)……
以 Emacs 28 为准
gcc 编译器: 用于编译 emacsql-sqlite (Emacs 29 后应该不再需要)Windows 下可通过 msys2 安装 (推荐), 并保证在系统可执行文件目录下 pacman -S mingw-w64-x86_64-gccLinux 或 MacOS 下大概率系统自带org-roam 插件package-el 安装: M-x package-install <return> org-roam <return>use-package 模块中 :ensure t (见后面示例)org-roam-ui 插件package-el 安装: M-x package-install <return> org-roam-ui <return>use-package 模块中 :ensure t (见后面示例)emacsql-sqliteorg-roam, Emacs 会提示正在编译 emacsql-sqlite, 请耐心等待..emacs.d/elpa/emacsql-sqlite-XXXXX/sqlite 的目录org-roam (use-package org-roam
:ensure t ;; 自动安装
:custom
(org-roam-directory "~/roam-notes/") ;; 默认笔记目录, 提前手动创建好
(org-roam-dailies-directory "daily/") ;; 默认日记目录, 上一目录的相对路径
(org-roam-db-gc-threshold most-positive-fixnum) ;; 提高性能
:bind (("C-c n f" . org-roam-node-find)
;; 如果你的中文输入法会拦截非 ctrl 开头的快捷键, 也可考虑类似如下的设置
;; ("C-c C-n C-f" . org-roam-node-find)
("C-c n i" . org-roam-node-insert)
("C-c n c" . org-roam-capture)
("C-c n l" . org-roam-buffer-toggle) ;; 显示后链窗口
("C-c n u" . org-roam-ui-mode)) ;; 浏览器中可视化
:bind-keymap
("C-c n d" . org-roam-dailies-map) ;; 日记菜单
:config
(require 'org-roam-dailies) ;; 启用日记功能
(org-roam-db-autosync-mode)) ;; 启动时自动同步数据库
(use-package org-roam-ui
:ensure t ;; 自动安装
:after org-roam
:custom
(org-roam-ui-sync-theme t) ;; 同步 Emacs 主题
(org-roam-ui-follow t) ;; 笔记节点跟随
(org-roam-ui-update-on-save t))创建链接是最基础也是最重要的功能!
org-roam-capture (快捷键 C-c n c)
创建一条新笔记. 未来可以预设不同主题的默认模板. 每一条笔记就是一个 org 文件
org-roam-find (快捷键 C-c n f) 通过关键词查找笔记并跳转
org-roam-insert (快捷键 C-c n i) 插入一条笔记的链接
删除笔记: 直接删除笔记文件即可, 如 M-x delete-file
org-mode 内链接跳转: 鼠标点击或 C-c C-o (org-open-at-point)
加入标签: 普通的标签可以看作一个特殊的笔记条目, 可以用 org-roam-insert 去插入一些以关键字为标题的笔记充当标签.
一个通用惯例是在笔记头部用 org 的列表格式罗列标签, 如
- tag :: <tag-1>, <tag-2>, <tag-3>以后我们也可以把这一行加入笔记模板
vertico + orderless
(use-package vertico ;; 补全界面优化
:ensure t
:config
(vertico-mode))
(use-package orderless ;; 无序搜索
:ensure t
:custom
(completion-styles '(orderless basic))
(completion-category-defaults nil)
(completion-category-overrides '((file (styles partial-completion)))))org-roam 的笔记文件是纯文本文件, 用任意网盘同步即可org-roam-directory 变量 (或者直接放在网盘目录下)git 同步: 可控制文件类型, 版本控制org-roam.db../emacs.d/ 目录下org 文件自动生成的 ((org-roam-db-autosync-mode))Windows 下执行这一命令可能会出现 Error ....... Selecting deleted buffer 的错误信息. 只要 emacs-sqlite 已经正常安装, 无视这条错误信息并再次执行 org-roam-db-sync 即可..org 笔记文件作为书本页边空间的延展, 记录任何信息, 包括截图, 数学公式, 代码等pdf 窗口和 org 窗口双向同步pdf 文件时, 笔记窗口光标会跟随到相应位置pdf 文件会跟随滚动… 或者选择 org 文件的理由
Git)org-mode 的强大功能和生态org-mode 是 Emacs 中最强大的插件markdown, html, latex, odt 等多种格式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 最新版djvu, epub 文件支持use-package, 可将以下代码加入 init.el 自动安装 (use-package org-noter
:ensure t )org-noterorg-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 常用快捷键:
org-noter 通过记录页码及位置保持笔记文件与 pdf 文件的同步. 根据定位的精度, 在 pdf 界面, 有 3 种插入笔记方式
在笔记中还可以使用 CDLaTeX 编辑数学公式, 以及用 org-download 插入截图. 请到教程的最后查看这些功能的基本设置.
pdf -> org: 自动org -> pdf: 手动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)))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) 将截图保存到剪贴板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 目录放置截图文件WindowsImageMagick, 并保证 magick.exe 在 PATH 变量的路径中
用 msys2 安装 pacman -S mingw-w64-x86_64-imagemagickorg-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 目录放置截图文件Emcas 中读取 Zotero 文献数据库并进行引用Zotero 文献建立一则 org-roam 笔记org-noter 笔记文件, 在 Emacs 中阅读 Zotero 文献的 pdf 附件ZoteroBetter BibTeX 导出文献数据至 bib 文件ZotFile 保存 PDF 文件 (一般是网盘文件夹)helm/ivy-bibtex:bib 文件的信息读入 Emacs, 并提取文献的标题, 作者, 引用键名等org-roam:
准备一个符合 org-noter 的笔记格式的 org-roam 模板org-roam-bibtex + org-roamorg-roam 笔记bibtex 条目等org-noter + pdf-tools
打开 org-roam 笔记中的 PDF 文件并阅读, 做读书笔记.org-roam 基本设置:【从零搭建Emacs个人知识库】什么是双链笔记与 org-roam 初体验
use-package 和插件管理方法:
【省时省力写LaTeX】新手Emacs快速配置与插件管理 ;; 第一步: 告诉 Emacs 从哪里读取 Zotero 的信息
(setq zot_bib '("~/Nutstore/1/Nutstore/Zotero-Library/Better BibTeX Export/My Library.bib"
"<另一个Zotero bib 文件>.bib") ; Zotero 用 Better BibTeX 导出的 .bib 文件. 可以是多个文件
zot_pdf "~/Nutstore/1/Nutstore/Zotero-Library" ; Zotero 的 ZotFile 同步文件夹
org_refs "~/repos/notes/ref/" ) ; 自定义的 org-roam 文献笔记目录. 我的 org-roam 根目录是 ~/repos/notes
;; 第二步: 让 helm-bibtex 读取 Zotero 的信息
(use-package helm-bibtex ; 这里也可以用 ivy-bibtex 替换 helm-bibtex
:ensure t
:custom
(bibtex-completion-notes-path org_refs)
(bibtex-completion-bibliography zot_bib)
(bibtex-completion-library-path zot_pdf))
;; 第三步: 让 org-roam-bibtex 使用 helm-bibtex 的信息, 并绑定 orb 的快捷键
(use-package org-roam-bibtex
:ensure t
:after org-roam
:hook (org-roam-mode . org-roam-bibtex-mode)
:bind (("C-c n k" . orb-insert-link)
("C-c n a" . orb-note-action))
:custom
(orb-insert-interface 'helm-bibtex) ; 与上面 helm-bibtex/ivy-bibtex 的选择保持一致
(orb-insert-link-description 'citekey) ; 默认是用标题, 但是论文的标题一般很长, 不适合作为笔记链接的名字
(orb-preformat-keywords
'("citekey" "title" "url" "author-or-editor" "keywords" "file"))
(orb-process-file-keyword t)
(orb-attached-file-extensions '("pdf")))第四步: 加入一个文献笔记的 org-roam 模板
(use-package org-roam
:ensure t ;; 自动安装
:custom
(org-roam-directory "~/repos/notes/") ;; 默认笔记目录, 提前手动创建好
(org-roam-dailies-directory "daily/") ;; 默认日记目录, 上一目录的相对路径
(org-roam-db-gc-threshold most-positive-fixnum) ;; 提高性能
:bind (("C-c n f" . org-roam-node-find)
("C-c n i" . org-roam-node-insert)
("C-c n c" . org-roam-capture)
("C-c n l" . org-roam-buffer-toggle) ;; 显示后链窗口
("C-c n u" . org-roam-ui-mode)) ;; 浏览器中可视化
:bind-keymap
("C-c n d" . org-roam-dailies-map) ;; 日记菜单
:config
(require 'org-roam-dailies) ;; 启用日记功能
;;============= 新增内容 =================
;; 第四步: 用 org-roam 生成文献笔记, 放在 org-roam 的 use-package 代码块 :config 关键字之后
;; 下面的 (setq my/ref-template ...) 可以放到 use-package 代码块之外
(setq my/ref-template
(concat "#+FILETAGS: reading research \n"
"- tags :: %^{keywords} \n"
"* %^{title}\n"
":PROPERTIES:\n"
":Custom_ID: %^{citekey}\n"
":URL: %^{url}\n"
":AUTHOR: %^{author-or-editor}\n"
":NOTER_DOCUMENT: ~/Nutstore/1/Nutstore/Zotero-Library/%^{citekey}.pdf\n"
":NOTER_PAGE:\n"
":END:"))
(add-to-list 'org-roam-capture-templates
`("r" "Zotero 文献模板" plain ; 文献笔记模板
,my/ref-template
:target
(file+head "ref/${citekey}.org" "#+title: ${title}\n")))
;;============= 新增内容结束 =================
(org-roam-db-autosync-mode)) ;; 启动时自动同步数据库 (setq my/ref-template
(concat "#+FILETAGS: reading research \n"
"- tags :: %^{keywords} \n"
"* %^{title}\n"
":PROPERTIES:\n"
":Custom_ID: %^{citekey}\n"
":URL: %^{url}\n"
":AUTHOR: %^{author-or-editor}\n"
":NOTER_DOCUMENT: ~/Nutstore/1/Nutstore/Zotero-Library/%^{citekey}.pdf\n"
":NOTER_PAGE:\n"
":END:"))
(add-to-list 'org-roam-capture-templates
`("r" "Zotero 文献模板" plain ; 文献笔记模板
,my/ref-template
:target
(file+head "ref/${citekey}.org" "#+title: ${title}\n")))zot_pdf 一致org_refs 一致org-noter 识别的关键字, 不建议修改org-roam 笔记标签, 会显示在 C-c n f 搜索界面并可搜索. 以空格分隔. 可以根据自己需要设置在 Org-mode 中获得和 LaTeX 模式 一致 的 LaTeX 代码体验:
prettify\(...\), $...$\[...\], $$...$$, \begin{XXX}...\end{XXX}org-mode 的 LaTeX 编辑模式是采用 latex-mode) ;; 你自己的 LaTeX 模式设置
(defun my/latex-hook ()
(turn-on-cdlatex)
(turn-on-reftex))
(add-hook 'LaTeX-mode-hook 'my/latex-hook)
(add-hook 'latex-mode-hook 'my/latex-hook)Org-mode 有一个专属的 org-cdlatex-mode, 打开后可以使用 CDLaTeX 模式中定义的所有快捷键命令. 关于 CDLaTeX 可以参考
(add-hook 'org-mode-hook #'org-cdlatex-mode) ;; 在 org-mode 中使用 cdlatex主要区别:
org-mode 中的展开/折叠功能equ + Tab = \begin{equation}\end{equation}qq + Tab = \quad$, ( 等不再自动匹配. (setq org-highlight-latex-and-related '(native latex entities)) ;; LaTeX 语法高亮设置
(setq org-pretty-entities t) ;; LaTeX 代码的 prettify
(setq org-pretty-entities-include-sub-superscripts nil) ;; 不隐藏 LaTeX 的上下标更容易编辑org-pretty-entities 和 LaTeX 模式中 prettify-symbol-mode 共享变量 tex--prettify-symbols-alist 的设置tex--prettify-symbols-alist 可参考 【Emacs+LaTeX教程】如何优雅地预览数学公式$ 匹配问题其实也可以用 cdlatex-mode 替代 org-cdlatex-mode, 但是确实有一些副作用.
折衷的解决方法: 复写 cdlatex-mode 中的括号和 $ 匹配函数.
;; org-cdlatex-mode 中使用 cdlatex 的自动匹配括号, 并把 $...$ 换成 \( ... \)
(defun my/insert-inline-OCDL ()
(interactive)
(insert "\\(") ;; 把 "\\(" 和 "\\)" 替换成 "$" 就能实现输入成对 "$" 的功能.
(save-excursion (insert "\\)" )))
(defun my/insert-bra-OCDL ()
(interactive)
(insert "(")
(save-excursion (insert ")" )))
(defun my/insert-sq-bra-OCDL ()
(interactive)
(insert "[")
(save-excursion (insert "]" )))
(defun my/insert-curly-bra-OCDL ()
(interactive)
(insert "{")
(save-excursion (insert "}" )))
(define-key org-cdlatex-mode-map (kbd "$") 'my/insert-inline-OCDL)
(define-key org-cdlatex-mode-map (kbd "(") 'my/insert-bra-OCDL)
(define-key org-cdlatex-mode-map (kbd "[") 'my/insert-square-bra-OCDL)
(define-key org-cdlatex-mode-map (kbd "{") 'my/insert-curly-bra-OCDL)这里还做了一个优化: 把 $ 绑定成输入 \(?\), 原因有二:
$ 输入行内公式, 要求公式内紧临 $ 的字符不能是空格, 否则不能识别为数学环境. 识别失败又会导致语法高亮、 cdlatex-mode 不能触发等问题$ 输入行内公式, 后面必须是空格. 这和 LaTeX 模式下输入习惯不同.用 \(?\) 替代就没有以上所有问题.
基本命令
预览图片大小调整
(setq my/latex-preview-scale 2) ;; 一般来说这里的 scale 约等于 set-face-attribute 中的 :height /100
(setq org-format-latex-options
`(:foreground default :background default :scale ,my/latex-preview-scale :html-foreground "Black" :html-background "Transparent" :html-scale ,my/latex-preview-scale :matchers ("begin" "$1" "$" "$$" "\\(" "\\["))) ;; 增大公式预览的图片大小org-previeworg-preview 是一个非正式的包, 极大 提高 了数学公式预览速度 (异步编译, 有望加入未来版本的 Org).
;; 快速编译数学公式
(use-package org-preview
:load-path "lisp/" ; 需要手动从网盘或 https://github.com/karthink/org-preview/ 下载 org-preview.el 文件, 并置于 ~/.emacs.d/lisp/ 文件夹下
;; straight 用户用下一行取代上一行
;; :straight (:host github :repo "karthink/org-preview")
:hook (org-mode . org-preview-mode))org-fragtog (use-package org-fragtog
:hook (org-mode . org-fragtog-mode))Org-mode 如何用上自定义的 LaTeX 宏命令?
#+LATEX_HEADER: 关键字在 Org 文件开头加入 =
#+LATEX_HEADER: \newcommand{\R}{\mathbb{R}}
就可以在整个文件中使用 \mathbb{R}
#+SETUPFILE: 关键字可以创建一个叫 latex-preamble.org 放在 Org-roam 目录下, 然后给所有的笔记文件开头 (可以放在笔记模板里) 加上
#+SETUPFILE: ./latex-preamble.org
然后把所有要用的导言区命令每一行加上 #+LATEX_HEARDER: 放在 latex-preamble.org 文件中.
.sty 文件与 LaTeX 文件共享自定义命令~/texmf/tex/latex/ 目录下的 mysymbol.sty 文件中 ;; 在 ~/texmf/tex/latex/ 下的 .sty 文件
(setq org-latex-packages-alist '(("" "mysymbol" t)))原理:
~/texmf 是正常情况下 $TEXMF 的目录. 可以通过命令行 kpsewhich --var-value TEXMF 确认$TEXMF/tex/latex/ 目录下的 .sty 的文件可以被 \usepackage 引用.\usepackage{mysymbol} 命令; 而在 LaTeX 文件中也可以使用同样的命令.Org-mode 和 CDLaTeX 的强强联合
代码汇总
;; 你自己的 LaTeX 模式设置
(defun my/latex-hook ()
(turn-on-cdlatex)
(turn-on-reftex))
(add-hook 'LaTeX-mode-hook 'my/latex-hook)
(add-hook 'latex-mode-hook 'my/latex-hook)
(add-hook 'org-mode-hook #'org-cdlatex-mode) ;; 在 org-mode 中使用 cdlatex
(setq org-highlight-latex-and-related '(native latex entities)) ;; LaTeX 语法高亮设置
(setq org-pretty-entities t) ;; LaTeX 代码的 prettify
(setq org-pretty-entities-include-sub-superscripts nil) ;; 不隐藏 LaTeX 的上下标更容易编辑
;; org-cdlatex-mode 中使用 cdlatex 的自动匹配括号, 并把 $...$ 换成 \( ... \)
(defun my/insert-inline-OCDL ()
(interactive)
(insert "\\(") ;; 把 "\\(" 和 "\\)" 替换成 "$" 就能实现输入成对 "$" 的功能.
(save-excursion (insert "\\)" )))
(defun my/insert-bra-OCDL ()
(interactive)
(insert "(")
(save-excursion (insert ")" )))
(defun my/insert-sq-bra-OCDL ()
(interactive)
(insert "[")
(save-excursion (insert "]" )))
(defun my/insert-curly-bra-OCDL ()
(interactive)
(insert "{")
(save-excursion (insert "}" )))
(define-key org-cdlatex-mode-map (kbd "$") 'my/insert-inline-OCDL)
(define-key org-cdlatex-mode-map (kbd "(") 'my/insert-bra-OCDL)
(define-key org-cdlatex-mode-map (kbd "[") 'my/insert-square-bra-OCDL)
(define-key org-cdlatex-mode-map (kbd "{") 'my/insert-curly-bra-OCDL)
(setq my/latex-preview-scale 2) ;; 一般来说这里的 scale 约等于 set-face-attribute 中的 :height /100
(setq org-format-latex-options
`(:foreground default :background default :scale ,my/latex-preview-scale :html-foreground "Black" :html-background "Transparent" :html-scale ,my/latex-preview-scale :matchers ("begin" "$1" "$" "$$" "\\(" "\\["))) ;; 增大公式预览的图片大小
;; 快速编译数学公式
(use-package org-preview
:load-path "lisp/" ; 需要手动从网盘或 https://github.com/karthink/org-preview/ 下载 org-preview.el 文件, 并置于 ~/.emacs.d/lisp/ 文件夹下
;; straight 用户用下一行取代上一行
;; :straight (:host github :repo "karthink/org-preview")
:hook (org-mode . org-preview-mode))
(use-package org-fragtog
:hook (org-mode . org-fragtog-mode))
;; 在 ~/texmf/tex/latex/ 下的 .sty 文件
(setq org-latex-packages-alist '(("" "mysymbol" t)))Zotero 界面:
收藏夹 - 文献列表 - 文献信息.bib 或其它文件pdf 文件作为附件.Zotero 内置 pdf 阅读器打开 pdf 文件Zotero Connector 插件 (下载链接)Edge, Chrome, FireFox, Safaripdf 全文DOI, ISBN 或者 Arxiv ID 等pdf 文件创建. Zotero 会尝试获取文献信息为保证参考文献信息准确, 建议多使用前两种方法
手动添加 pdf 附件: 适用于非官方手段获取的 pdf 文件
合并文献信息: Duplicate Items
Zotero 核心功能
.bib 等多种格式引用文件pdf两个有用的插件
Better BibTeX:.bib 文件, 与 Org-roam, Obsidian, Roam Research 等笔记软件交互必备!Zotfile:pdf 文件pdf 文件至个人网盘同步.xpi 文件并下载Tools -> Add Ons 选择从文件进行安装ZoteroBetter BibTeX 设置设置界面在 Edit -> Preference -> Better BibTeX 下
bibtex 中的 alpha 风格; 单作者取姓的前 3 字母, 2 个以上取首字母keey citekey unique -> across all libraries.bib 文件自动导出与更新Automatic Export -> Automatic Export -> On changeZotFile 同步设置Zotero 登录后有 500M 的同步空间, 因此最好有第 3 方网盘同步 pdf 文件
Zotero 帐号负责同步文献信息ZotFlie 负责用网盘同步 pdf 文件Better BibTeX 的键名无法同步, 但是相同规则的键名是一样的.Better BibTeX, 再登录 Zotero 帐号进行同步.Zotfile 设置: Tools -> ZotFile Preference
General Settings -> Custom Locationspdf 文件重命名规则: Renaming Rulesbibtex 键名命名 pdfAdvance Settings -> Automatically rename new attachment -> always renameZotero 自动下载的 pdf 有效pdf, 右键点击并选择 rename and move 即可在 org-roam 笔记流程中整合 Zotero, 包括
Emcas 中读取 Zotero 文献数据库并进行引用Zotero 文献建立一则 org-roam 笔记org-noter 笔记文件, 在 Emacs 中阅读 Zotero 文献的 pdf 附件