我是一名学生,自从了解到emacs之后,尤其是org-mode,就十分喜欢。希望用这个记录自己的学术与生活。但是在使用的过程中遇到了一些问题:
一是org-mode里图片的插入并不是十分方便,经常需要先保存图片到本地再插入。org-download 我一直没有配置成功。同时我希望再org里编辑时能观看源码,而不是插入图片后只能看到图片的标题。
二是预览的效果不尽人意。尤其是org-mode导出latex-pdf,过程十分缓慢,难以缓解。即使我利用emacs写markdown,似乎也没有比较理想的预览方案。
请问大家对于以上问题有什么解决办法,或者自己的经历吗?希望大家能够分享,让我学习学习。
1 个赞
既然是数理方向,个人经验,与其折腾这些不如直接写 TeX……
2 个赞
(setq org-download-image-dir "~/pic")
(setq org-download-screenshot-method 'screencapture)
(setq org-download-abbreviate-filename-function 'expand-file-name)
(setq org-download-timestamp "%Y%m%d%H%M%S")
(setq org-download-display-inline-images nil)
(setq org-download-heading-lvl nil)
(setq org-download-annotate-function (lambda (_link) ""))
(setq org-download-image-attr-list '("#+NAME: fig: " "#+CAPTION: " "#+ATTR_ORG: :width 500px" "#+ATTR_LATEX: :width 10cm :placement [!htpb]" "#+ATTR_HTML: :width 600px"))
(setq org-download-screenshot-basename ".png")
(add-hook 'org-mode-hook 'org-download-enable)
以上是我的 org-download 配置,我一般使用 org-download-clipboard这个命令保存图片,其他的方式很少用。
预览的话,如果只是预览公式,我使用 math-preview (如果你使用linux,推荐你使用eaf),如果要临时导出看,我会看导出html看一下。如果要导出pdf,那么不要写过大的org文档(或局部编译),编译会很慢。有两个方式可以试试,第一,只编译一遍,最终导出pdf的时候再编译四遍。第二,在导言部份加入下面一行:
#+LATEX_HEADER: \special{dvipdfmx:config z 0}
这样导出pdf时不会压缩pdf文档,速度会快一点。
1 个赞
可能有点跑题…我之前试过用 Org-mode/Markdown 作笔记, 也遇到类似问题, 一是输入慢 (公式多的时候), 二是预览不方便. 后来发现还是手写最合适 . 但是有时候又想电子化保存下来, 所以现在正考虑买台 ipad 或者大屏电纸书之类, 笔记可以直接导出 PDF 然后人工加个索引.
预览使用 xenops ,输入一个公式就可以立即预览,不用编译成pdf
1 个赞
插入图片这个事,如果你是用的windows环境,我就比较有发言权了,可以用命令行调用剪贴板 ,我写了几行函数
(defun org-screenshot-on-windows10 ()
(interactive)
(setq full-file-name (file-name-sans-extension (file-name-nondirectory buffer-file-name)))
;; 如果文件名的长度小于14,放到mainImage文件夹下面
(if (< (length full-file-name) 14)
(setq before-file-name-part "main")
;;否则,判断文件中是否含有中文(专门给org roam做的优化,不通用,但是也不想改了)
(if (string-match "\\cc" full-file-name)
(setq before-file-name-part (substring (file-name-sans-extension (file-name-nondirectory buffer-file-name)) 0 14))
(setq before-file-name-part (substring (file-name-sans-extension (file-name-nondirectory buffer-file-name)) 15))))
(setq imagefile (concat "./" before-file-name-part "Image/"))
(unless (file-exists-p imagefile)
(make-directory imagefile))
(setq filename (concat (make-temp-name (concat imagefile
"_"
(format-time-string "%Y%m%d_%H%M%S_")))
".png"))
(shell-command (concat "powershell -command \"Add-Type -AssemblyName System.Windows.Forms;if ($([System.Windows.Forms.Clipboard]::ContainsImage())) {$image = [System.Windows.Forms.Clipboard]::GetImage();[System.Drawing.Bitmap]$image.Save('"
filename "',[System.Drawing.Imaging.ImageFormat]::Png); Write-Output 'clipboard content saved as file'} else {Write-Output 'clipboard does not contain image data'}\""))
(insert (concat "[[file:" filename "]]"))
(org-display-inline-images))
1 个赞
dian-yu-luo:
ine-image
预览的话,如果使用latex进行编译的话,别想了,啥都这么慢,但是你可以选择使用 org-latex-preview 临时查看图片,相当于编译图片到orgmode里,
一般来说导出PDF就是准备归档了,不会频繁的改动,慢就慢吧,出去喝个咖啡
手写是最方便的,但是存在各种问题,(比如 字太丑,难更改)
输入慢是因为没有练出来,有两个包 cd-latex 和 laas 如果用上了之后能赶上老师讲课的速度,号称最快的latex公式输入器
1 个赞
这是我的 org-download
配置
(use-package org-download
:ensure t
:defer t
:bind (("C-S-y" . org-download-screenshot)
("C-S-p" . org-download-clipboard))
:config
(setq-default org-download-image-dir "./images/")
(add-hook 'dired-mode-hook 'org-download-enable))
需要注意的是 Ctrl + Shift + y
不知道为什么不起作用,需要插入图片的时候先复制图片内容,再 Ctrl + Shift + p
,会在当前目录下新建一个 images
目录保存图片
预览方面我没怎么折腾过,这是配置
(setq org-startup-indented t
org-export-preserve-breaks t)
)
一个是编辑时候自动缩进,一个是导出的时候不用按两下空格才渲染下一行
试用过xenops,有个问题一直没解决,就是字体颜色。使用暗色背景的时候,xenops生成出来的图片是png格式的,背景色透明,字体颜色则是黑色,这样一来就完全看不清楚了。
目前还是在用org-fragtog,每当离开一个公式环境时会生成相应图片的缓存,会卡顿一下;除此以外倒是没什么问题了,如果能解决这个顿卡问题,把生成图片的过程放到后台,不要冻结当前的操作就完美了。
我用的时候没有遇上字体颜色的问题,预览的公式和正文颜色一致
配置用的是 doom emacs,xenops 安装后直接使用,没有进行过额外设置
记理科笔记用Orgmode已经足够,记笔记的时候不需要过于在意排版问题,注意好层次以及富文本标记即可。
如果想要参考一下怎样记笔记,可以看一下 Gilles Castel 的系列博客: https://castel.dev ,只不过人家使用 Vim 手写 tex,用 Emacs 的话就可以写 Org 然后输出TeX, 轻松了不止一点半点。
如果觉得公式输入效率不高的话可以使用 yasnippet 等模板系统大幅度提高输入效率。我的org-mode光是公式输入就已经有将近400个模板了,平时输入速度基本可以做到和手写齐平。
至于图片的话论坛里有很多大佬分享了自己的解决方法,比如pasteex-mode 等等。网上也能找到一些比较好用的elisp代码,比如我现在还在用的一个一键截图插入的函数:
;; ros - Rahul's Org-Mode Screenshot
;;
;; ros is invoked with "M-x ros", then it waits for your selection, takes a
;; screenshot and saves it as orgfileopened.org_YYYYMMDD_hhmmss.png.
;;
;; Finally, it keeps working by inserting a link and turning ON the
;; display-inline-images, showing the taken screenshot directly into
;; your file.
;;
;; Track updates, contact the author and see a demo on github.com/Lionyx/ros
;; or http://rahuljuliato.com
;;
(add-hook 'org-mode-hook
(lambda ()
(defun ros ()
(interactive)
(if buffer-file-name
(progn
(message "Waiting for region selection with mouse...")
(let ((filename
(concat "./"
(file-name-nondirectory buffer-file-name)
"_"
(format-time-string "%Y%m%d_%H%M%S")
".png")))
(if (executable-find "scrot")
(call-process "scrot" nil nil nil "-s" filename)
(call-process "screencapture" nil nil nil "-s" filename))
(insert (concat "[[" filename "]]"))
(org-display-inline-images t t)
)
(message "File created and linked...")
)
(message "You're in a not saved buffer! Save it first!")
)
)
)
)
预览的话不知道你是想预览什么,如果是想预览公式的话 org 有 org-latex-preview (C-c C-x C-l)
,对我来讲不需要经常渲染预览整个文档,org-mode的显示搞的漂亮一些,用类似 org-bars
, org-num
之类的minor mode,再设置一下各种face, 编辑体验就上去了,不需要经常预览渲染出来的文档,甚至不用渲染,直接在org-mode里面看更方便。
而且也可以设置 LaTeX 导出 PDF 文档或者导出带样式的HTML文件的模板,可以发给别人或者放到云服务器上闲暇时用手机浏览复习。
综上,用 Orgmode 记笔记是可以非常舒服的,多多了解并利用前人的经验并自己根据实际情况修改创新,便可以达到事半功倍的效果。
6 个赞
我这里使用xenops就非常的奇怪
我目前用的主题是modus-vivendi
EDIT:
似乎真的是主题的问题,切换到tango-dark就正常了
去读一下xenops获取前后景色的代码试试看下
不知道为什么 在windows上org-latex-preview并不能正常工作
org-compile-file: File “c:/Users/…/AppData/Local/Temp/orgtexrRiG9R.dvi” wasn’t produced. Please adjust ‘dvipng’ part of ‘org-preview-latex-process-alist’.
mouse-minibuffer-check: Minibuffer window is not active
在
我在path中添加了 “d:/texlive/2022/bin/win32”
在emacs里检查也有这个path
找到导出的.tex缓存的目录,单独去编译看看具体报什么错,我估计可能是编译参数缺少
-shell-escape
的问题
排查下来确实是xenops的问题,我也提了issue 给xenops,排查的过程中还一度以为是theme的问题,错误地给modus-theme提了issue,prot大佬真是非常nice,帮忙测试、定位了问题。
目前是只要default字体的background是"black",相应的svg就会被渲染上错误的背景色;如果用png,问题就没了。关于这个问题我试着读了xenops的源码,感觉它获取前后景色的代码是正确的,但是emacs当中渲染svg相关的部分我实在不懂,只能暂时先提issue希望原作者能修一下了。
另一个问题是,xenops有个比较奇怪的地方,对于行间公式,比如
正常地渲染并没有问题
但是再将光标移动上去,回车reveal之后:
预览的公式仍然存在,同时\end{equation*}
的部分没有了。