今天用了 org-download package,直接elpa上安装的。 往 org 里面加图片很方便,可以直接从浏览器或者本地拖放图片到 org 中。
spacemacs org layer 自带了
插入图片时的效果是这样,能不能把图片上面的那一行说明给去掉啊?
在官网已找到答案。(setq org-download-annotate-function 'ignore)
能从剪贴板粘贴吗?
你这个不行呀,可以参考 issue:
为什么我拖文件进去是打开而不是插入链接呢
我也用 org-download,不过我用 posframe 预览插入的图片,不太习惯直接在org显示图片
(use-package org-download
:after org
:bind (:map org-mode-map
("<f2>" . org-download-screenshot))
:ensure nil
:config
(setq org-download-method 'attach)
(setq org-download-display-inline-images 'posframe)
(setq org-download-screenshot-file (concat temporary-file-directory "image.png"))
(setq org-download-image-attr-list
'("#+ATTR_HTML: :width 80% :align center"))
(when (eq system-type 'windows-nt)
(setq org-download-screenshot-method "convert clipboard: %s"))
(org-download-enable))
我也用 org-download 。
Surface Pro 上 用 OneNote 记录一些图像性质的笔记,剪贴版和 Desktop 分享,一键粘贴到 Org 笔记中,补充 org mode 这方面的不足。
需要看的时候怎么显示图片呢?
C-c C-x C-v
org-toggle-inline-image
想问一下在wsl 的emacs 里是否就不能使用了呢?尤其是截屏,能否调用从wsl的emacs 调用宿主windows10 的截屏工具呢? 尝试了一下,确实是可以调用宿主的程序的,比如可以调用windows系统里的i_view64.exe
;; 可以执行
(shell-command "i_view64.exe /capture=4 /convert=\"d:\\temp.jpg\"")
只是因为调用了win上的程序,所以保存路径也要写成win下的格式,这挺不方便的,需要自己转换,还有一个不方便的是,你没法将emacs窗口最小化
;;wsl 中无效
(lower-frame)
这就很尴尬了,不知道大伙有没有什么比较好的方法。
我看posframe 官网说Mac系统需要emacs26以上,gnome需要emacs27以上,2年前emacs还没有出到27吧?你的电脑是Mac?
他是 posframe 作者,支不支持他说了算
其实支持不支持,是emacs核心开发者说了算,我就是做个包装
How to paste images into Emacs org-mode running in Windows Subsystem for Linux - Alex Rampp
可以看看这个解决方案,我在这个基础上自己做了一些调整就可以用了。
感谢,已经解决了,前面按照某位大佬魔改的李杀版本就ok了
;;image cut settings
(defun my-yank-image-from-win-clipboard-through-powershell()
"to simplify the logic, use c:/Users/Public as temporary directoy, and move it into current directoy"
(interactive)
(let* ((powershell "/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe")
(file-name (format-time-string "screenshot_%Y%m%d_%H%M%S.png"))
;; (file-path-powershell (concat "c:/Users/\$env:USERNAME/" file-name))
(file-path-wsl (concat "./img/" file-name))
)
;; (shell-command (concat powershell " -command \"(Get-Clipboard -Format Image).Save(\\\"C:/Users/\\$env:USERNAME/" file-name "\\\")\""))
(shell-command (concat powershell " -command \"(Get-Clipboard -Format Image).Save(\\\"C:/Users/Public/" file-name "\\\")\""))
(rename-file (concat "/mnt/c/Users/Public/" file-name) file-path-wsl)
(insert (concat "#+ATTR_LATEX: :width 0.5\\textwidth\n"))
(org-indent-line)
(insert (concat "[[file:" file-path-wsl "]] "))
))