如何在 org 模式下调整图像大小
Posted
技术标签:
【中文标题】如何在 org 模式下调整图像大小【英文标题】:How to resize images in org-mode 【发布时间】:2012-07-25 02:52:23 【问题描述】:有没有一种通用的方法来定义在org-mode
中链接的图像的大小(以百分比或像素为单位)?
假设我的.org
文件中有以下链接:
[[~/images/example.jpg]]
这个 JPG 太大了,所以如果我将它导出到 html 或 LaTeX 或在 org-mode
中用 C-c C-o i 打开它,只会看到一小部分图像。
【问题讨论】:
【参考方案1】:根据 Jacobo 的评论,将以下内容添加到您的 init.el 文件中:
(setq org-image-actual-width nil)
然后在 org-mode 中,您可以将其用于 JPG 和 PNG 的内联预览。
#+ATTR_ORG: :width 100
[[~/images/example.svg]]
如果你想为内联预览和 html 输出调整这个大小:
#+ATTR_HTML:
#+ATTR_ORG: :width 100
[[~/images/example.svg]]
【讨论】:
Adam,我认为可缩放矢量图形 (SVG) 图像没有固有尺寸,因为它们被设计为可缩放的。 嗨@NiclasBörlin 看起来这是我的Emacs 版本中的一个错误(但已经解决)。我可以确认,从 Emacs 27.2(Mitsuharu 的 Emacs 的 Railwaycat Homebrew 版本)开始,它也适用于 SVG。【参考方案2】:这是一种在 emacs Org 模式下调整图像大小以进行预览(不导出)的方法。通常,
-
我们希望在需要时将图像设置为特定宽度,例如 249 像素。
我们想要设置默认图像宽度,这样我们就不需要为每张图像指定
+attr_html
- 这会很乏味。
这可以通过如下配置org-image-actual-width
来实现:
(setq org-image-actual-width (list 550))
然后,在您的 .org
文件中,如果您有
#+attr_html :width 249
[[~/images/example1.jpg]]
然后图像将以 249px 的宽度在预览中显示。对于未指定+attr_*
的另一张图片,将应用默认宽度550px。
[[~/images/example2.jpg]]
您可以从org-mode source code 中的文档中看到此行为:
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.
我发现很难理解“列表中的数字”是什么意思,所以我查看了the implementation,确实,(list 550)
之类的东西有效。
【讨论】:
【参考方案3】:截至Org 8.0,“属性行现在采用plists”:
#+attr_html: :width 100px
#+attr_latex: :width 100px
[[~/images/example.jpg]]
【讨论】:
【参考方案4】:对于 LaTeX,要删除默认的 width=.9\linewidth
,请将 org-latex-image-default-width
设置为空字符串。通过这种方式,图像将具有其自然大小。
要即时执行此操作,请使用 set-variable
emacs 命令。或者要永久设置此变量,请在 init.el 中添加以下行:
(setq org-latex-image-default-width "")
【讨论】:
并将其设置为全线宽(或任何其他值),使用(setq org-latex-image-default-width "1.0\\linewidth")
【参考方案5】:
这是一个关于如何使用百分比调整图像大小的示例(组织模式版本 9.0.5):
#+CAPTION: Weight space
#+ATTR_HTML: :alt neural network :title Neural network representation :align right
#+ATTR_HTML: :width 50% :height 50%
https://i.stack.imgur.com/nzHSl.jpg
【讨论】:
其他答案不适用于基于 URL 的图像 这是否也适用于内联预览?【参考方案6】:#+ATTR_HTML:
[[~/images/example.jpg]]
【讨论】:
感谢您的回答 bzg!首先,我希望有一个不特定于 html 但也适用于 LaTex 并在 Emacs 本身中查看的选项。无论如何,即使根据官方文档 [1][2],您的建议似乎是正确的,但它在某种程度上对我不起作用。我正在使用没有任何自定义的 emacs 24.1.1,但是当我尝试您的代码时,图像仍然是原始的巨大尺寸。这适用于 Chrome 和 Firefox。 [1] orgmode.org/worg/org-tutorials/images-and-xhtml-export.html [2] w3schools.com/tags/tag_img.asp 我也试过 #+ATTR_HTML: 如果我理解正确,应该按 0.3 倍(或 0.003 = 0.3%?)进行缩放,但这也没有效果. :-/ 为了让它工作,你需要在你的 .emacs 文件中设置它:(setq org-image-actual-width nil)
。 Other possible values and behaviours are explained 在这篇文章中到 org-mode 的邮件列表以上是关于如何在 org 模式下调整图像大小的主要内容,如果未能解决你的问题,请参考以下文章
ImageMagick:如何在没有背景的情况下使用 mogrify 按比例调整大小