16

指示 org-mode 将我的样式表中的所有 css 嵌入到单个 HTML 文件中的最佳方法是什么,而不是像默认情况下那样包含指向它的链接?

4

4 回答 4

14

我最近遇到了这个问题,没有任何建议/答案对我有用。终于在这个链接里找到了解决办法,就是自己写函数如下,放到你.emacs或者init.el文件中。

(defun my-org-inline-css-hook (exporter)
  "Insert custom inline css"
  (when (eq exporter 'html)
    (let* ((dir (ignore-errors (file-name-directory (buffer-file-name))))
           (path (concat dir "style.css"))
           (homestyle (or (null dir) (null (file-exists-p path))))
           (final (if homestyle "~/.emacs.d/org-style.css" path))) ;; <- set your own style file path
      (setq org-html-head-include-default-style nil)
      (setq org-html-head (concat
                           "<style type=\"text/css\">\n"
                           "<!--/*--><![CDATA[/*><!--*/\n"
                           (with-temp-buffer
                             (insert-file-contents final)
                             (buffer-string))
                           "/*]]>*/-->\n"
                           "</style>\n")))))

(add-hook 'org-export-before-processing-hook 'my-org-inline-css-hook)
于 2016-05-10T07:51:12.553 回答
9

对此还有另一种解决方案。

在您的 org 文件中,您可以使用#+SETUPFILE: file, 启用额外的缓冲区内设置:

#+SETUPFILE: style.css.org

在文件style.css.org中,您可以拥有:

#+OPTIONS: org-html-head-include-default-style:nil

#+HTML_HEAD: <style type="text/css">
#+HTML_HEAD:   ...your CSS here...
#+HTML_HEAD: </style>

的内容style.css.org是:

  • org-html-head-include-default-style:nil告诉不使用默认样式。
  • ...your CSS here...将由您的 CSS 代码替换。每行必须以 . 为前缀#+HTML_HEAD:

此解决方案的优点是您可以拥有style.css.org每个文件。我个人使用这个技巧让style.css.org每个 org 文件目录都有一个。

归功于 Paul Provost

请注意,这里的单行 CSS 比多行 CSS 更高效。

于 2019-06-01T14:29:14.893 回答
2

尝试:

#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="style1.css" />
#+HTML_HEAD_EXTRA: <link rel="alternate stylesheet" type="text/css" href="style2.css" />

还可以参考:http: //orgmode.org/manual/CSS-support.html

于 2013-10-27T02:50:00.810 回答
2

我不确定你是否找到了更好的方法,但你可以通过将你的 CSS 直接放入 org-export-html-style 变量中来做到这一点,像这样包装它:

<style type=\"text/css\">\n <!--/*--><![CDATA[/*><!--*/\n **YOUR CSS HERE** \n  /*]]>*  /-->\\n  >/*]]>*/-->\n</style>n</style>

以 org-export-html-style-default 为例。

我还希望能够在 org-export-html-file 中指定一个文件,并让 org 模式读取该文件并将其嵌入,但是,这种方式有效。

于 2014-07-24T17:31:51.373 回答