我不明白什么意思?你能解释下吗?附上一张图片,举例子时或许能用得上。
- 在org文档中插入一张图片
- 按c-c c-x c-v来让他在行内显示
有是有插入的尺寸尺寸很大,会超出EMACS的编辑器范围,这时候希望能保持图片长宽比例的情况下把图片缩小。
有调查过 org-image-actual-width
选项吗?或许值得一试。C-h v org-image-actual-width:
org-image-actual-width is a variable defined in `org.el'.
Its value is t
Documentation:
Should we use the actual width of images when inlining them?
When set to t, always use the image width.
When set to a number, use imagemagick (when available) to set
the image's width to this value.
When set to a number in a list, try to get the width from any
#+ATTR.* keyword if it matches a width specification like
#+ATTR_HTML: :width 300px
and fall back on that number if none is found.
When set to nil, try to get the width from an #+ATTR.* keyword
and fall back on the original width if none is found.
This requires Emacs >= 24.1, build with imagemagick support.
You can customize this variable.
This variable was introduced, or its default value was changed, in
version 24.4 of Emacs.
Emacs 编译的期间需要开启 imagemagick 支持,查看有没有支持:
(image-type-available-p 'imagemagick)
⇒ t
我是在图片上一行加入:
#+ATTR_ORG: :width 300px
我自己刚刚试了下,是有效果的。
调整默认设置:
(setq org-image-actual-width nil)
⇒ nil
测试 Org
#+ATTR_foo: :width 600px
[[file:Desktop/foo.png]]
Org mode version 9.0.3 (release_9.0.3-140-ged0c8c @ /Users/xcy/src/org-mode/lisp/)
没人这么用吗?我用着挺好的:
;;if there is a #+ATTR.*: width="200", resize to 200, otherwise resize to 400
(setq org-image-actual-width '(400))
关于org-image-actual-width
:
(setq org-image-actual-width 300) => always resize inline images to 300 pixels
(setq org-image-actual-width '(400)) => if there is a #+ATTR.*: width=“200”, resize to 200, otherwise resize to 400
(setq org-image-actual-width nil) => if there is a #+ATTR.*: width=“200”, resize to 200, otherwise don’t resize
(setq org-image-actual-width t) => Never resize and use original width (the default)
谢谢你们的帮助,但你们提供的设置我这里都不起作用。 我的操作系统是windows 7。
(setq org-image-actual-width nil)
⇒ nil
这个代码是一个整体吗?包括下面的箭头和nil?
我把这个箭头加入到init.el里后,启动emacs会报错:
Symbol's value as variable is void: ⇒
请通过 C-h v
看下 org-image-actual-width
的说明,确保你明白这个选项的用法和使用前提(比如你的 Emacs 需要有 imagemagick 支持,假如压根就不支持的话,就不要再期望这个选项会起作用;假如你不是已经知道是否有 imagemagick 支持的话,可以看看 C-h v image-types
是否包含 imagicmagick)。
不是,不包括。那个 nil
是 (setq org-image-actual-width nil)
的返回值,⇒
是用来提示这个返回值(这是 Emacs Lisp Manual 中采用的记号: (info “(elisp) Evaluation Notation”))。
我感觉这条命令不起作用跟操作系统应该没关系
谢谢你耐心的解答,由于之前我自己无法解决这个问题,索性没管它。但是最近一个文档需要插入很多大图片,导致非常难受。
我按照你说的办法看了一下,我的EMACS版本是
GNU Emacs 25.1.1 (x86_64-w64-mingw32) of 2016-09-22
并不支持imagicmagick
我不是程序员,仅使用orgmode来写文档,不知道如何获得支持imagicmagick的EMACS windows版,我应该怎么办?
你需要安装 imagemagick: ImageMagick – Download 最下面是 windows 版本
windows下编译好的 emacs 一般都支持 imagemagick 的,你的不支持估计是没有安装 imagemagick 自身,安装完后记得设置路径环境变量
请问如何设置路径环境变量?
我安装了imagemagick,但没设置环境变量,现在依然不能改变图片大小
网络上有很多这方面教程
感谢你的帮助。 我的操作系统是windows 7 64位,我下载了最新版的imagemagick,安装到目录“c:\Program Files\ImageMagick-7.0.5-Q16\” ,把这个路径添加到了“系统属性→高级→系统变量→path”
没有重启电脑,重启emacs之后尝试设置images宽度
#+attr.*: :width 100
[[file:imgs/screenshot_20170221_211651.png]]
仍然不起作用
用C-h v image-types
查看,得到
我觉得你的环境变量设置的可能有问题:
检查你的 imagemagick 是否在 path 中,因为很多应用的可执行文件是在程序文件夹下面的 bin 文件夹下。你可以在你的 cmd 中执行 mogrify -help
命令验证一下,看是否可以执行。
能不能看看 module 文件夹里的内容?我用的 linux 没法帮你看
如果 path 设置正确,在 emacs 里
M-: (image-type-available-p 'imagemagick) RET
应该会在 minibuffer 内显示 t
下面三张截图是modules文件夹里面的内容
另外我在这里找到了一个信息:
John Kitchin回答说,不仅要安装ImageMagick还需要Emacs支持它才行。我怀疑我安装的Emacs不支持ImageMagick,请问你知道如何才能获得支持它的Emacs吗?
如果不能下载的话,用下面的链接,然后点第一个(下载的次数最多的那个):
非常感谢你的帮助,时间不早,我先下载文件,明天再继续研究,你也早点休息吧!