【问题标题】:How to resize images in org-mode如何在 org 模式下调整图像大小
【发布时间】:2012-07-25 02:52:23
【问题描述】:

有没有一种通用的方法来定义在org-mode 中链接的图像的大小(以百分比或像素为单位)?

假设我的.org 文件中有以下链接:

[[~/images/example.jpg]]

这个 JPG 太大了,所以如果我将它导出到 HTML 或 LaTeX 或在 org-mode 中用 C-c C-o i 打开它,只会看到一小部分图像。

【问题讨论】:

    标签: html image resize export org-mode


    【解决方案1】:

    根据 Jacobo 的评论,将以下内容添加到您的 init.el 文件中:

    (setq org-image-actual-width nil)
    

    然后在 org-mode 中,您可以将其用于 JPG 和 PNG 的内联预览。

    #+ATTR_ORG: :width 100
    [[~/images/example.svg]]
    

    如果你想为内联预览和 html 输出调整这个大小:

    #+ATTR_HTML: width="100px"
    #+ATTR_ORG: :width 100
    [[~/images/example.svg]]
    

    【讨论】:

    • Adam,我认为可缩放矢量图形 (SVG) 图像没有固有尺寸,因为它们被设计为可缩放的。
    • 嗨@NiclasBörlin 看起来这是我的Emacs 版本中的一个错误(但已经解决)。我可以确认,从 Emacs 27.2(Mitsuharu 的 Emacs 的 Railwaycat Homebrew 版本)开始,它也适用于 SVG。
    【解决方案2】:

    这是一种在 emacs Org 模式下调整图像大小以进行预览(不导出)的方法。通常,

    1. 我们希望在需要时将图像设置为特定宽度,例如 249 像素。
    2. 我们想要设置默认图像宽度,这样我们就不需要为每张图像指定+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: width="100px"
        [[~/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: width="0.3" 如果我​​理解正确,应该按 0.3 倍(或 0.003 = 0.3%?)进行缩放,但这也没有效果. :-/
        • 为了让它工作,你需要在你的 .emacs 文件中设置它:(setq org-image-actual-width nil)Other possible values and behaviours are explained 在这篇文章中到 org-mode 的邮件列表
        猜你喜欢
        • 2018-01-01
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 2020-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多