指示 org-mode 将我的样式表中的所有 css 嵌入到单个 HTML 文件中的最佳方法是什么,而不是像默认情况下那样包含指向它的链接?
问问题
5885 次
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 回答