2011-09-19 31 views
5

我有一个包含源代码,文档和乳胶代码的组织文件。乳胶东西绘制了一堆图解释功能如何相互作用。据悉,org-mode html export

http://orgmode.org/manual/LaTeX-fragments.html

组织模式应该使用HTML出口时,出口的乳胶代码为图像。

#+TITLE: Test 
#+AUTHOR: Blah 
#+LATEX_HEADER: \usepackage{tikz} 
#+OPTIONS: LaTeX:dvipng 

#+begin_latex 

    \begin{tikzpicture} 
    \draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle; 
    \end{tikzpicture} 

#+end_latex 

上述工作,如果我使用PDF导出,所以我的乳胶安装工作也dvipng存在我的系统上,但出口到HTML乳胶块时完全被忽略。

+1

我想知道你对html出口商有什么期望。 – kindahero

+1

@ kindahero,我当然不指望它让我喝杯咖啡,但我确实希望它用dvipng呈现图形并将其嵌入到html中。 –

+0

然后我想你应该使用babel http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-LaTeX.html – kindahero

回答

2

我无法使tikzpicture块正常工作,但不应使用#+begin_latex#+end_latex,正如您在链接到组织文档时所述,只需要\begin{...} LATEX_CODE end{...}即可。

这段代码应该可以工作。

#+OPTIONS:  LaTeX:dvipng 
* Test 
    Blah 

    \begin{equation}       % arbitrary environments, 
    x=\sqrt{b}        % even tables, figures 
    \end{equation}       % etc 

    If $a^2=b$ and \(b=2 \), then the solution must be either $$ 
    a=+\sqrt{2} $$ or \[ a=-\sqrt{2} \]. 

    Done ! 
3

dvipng不处理tikz。我用下面的shell脚本替换dvipng围绕这个工作对我的安装:

#! /bin/bash 
shift 
shift 
dvips $9 
gm convert -trim $9 ${9/dvi/png} 

现在,我可以预览与C-X C-C C-L A tikz片段,或将其导出为HTML。不是一个理想的解决方案,但它适用于我。

+0

任何运气与此,或者你仍然使用相同的解决方法?我无法完成这项工作。 –

7

我能够从组织导出tikz图片的HTML(使用实际上,到 reveal.js [ORG-揭示] [1])从有机8.2.5h具有以下

#+OPTIONS: tex:imagemagick 
#+LaTeX_HEADER: \usepackage{tikz} 

* Slide Title 

\begin{tikzpicture} 
    \draw [blue,fill] (0,0) rectangle (5,3); 
    \draw [red,fill] (0,0) rectangle (3,2); 
\end{tikzpicture} 

我希望有帮助。没有#+LaTeX_Header行,LaTeX 进程不知道包含tikz,并且构建失败。如果我尝试 tex:dvipng而不是tex:imagemagick,那么我得到一个图像,但 错误地呈现了一个。

+0

这正是我一直在寻找的一整天(也让它在org揭示顺便说一句)工作! – rockt

4

随着最近版本的组织模式(但是,比版本9旧---见下面的编辑),你可以使用类似下面的东西,可以导出到LaTeX以及HTML。在后一种情况下,convert(来自ImageMagick工具包)用于将从tikz代码段生成的PDF转换为尺寸为100px×100px的PNG图像。

#+TITLE: Test 
#+AUTHOR: Blah 
#+LATEX_CLASS: article 
#+LATEX_CLASS_OPTIONS: [american] 
# 
# Setup tikz package for both LaTeX and HTML export: 
#+LATEX_HEADER: \usepackage{tikz} 
#+PROPERTY: header-args:latex+ :packages '(("" "tikz")) 
# 
#+PROPERTY: header-args:latex+ :imagemagick (by-backend (latex nil) (t "yes")) 
#+PROPERTY: header-args:latex+ :exports results :fit yes 

* One Diamond 

#+name: diamond 
#+header: :iminoptions -density 600 -resample 100x100 
#+header: :file (by-backend (latex "diamond.tikz") (t "diamond.png")) 
#+begin_src latex :results raw file 
    \begin{tikzpicture} 
    \draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle; 
    \end{tikzpicture} 
#+end_src 

#+attr_latex: :float nil :width "" 
#+results: diamond 

* COMMENT setup 

#+name: setup 
#+begin_src emacs-lisp :results silent :exports none 
    (defmacro by-backend (&rest body) 
    `(case (if (boundp 'backend) (org-export-backend-name backend) nil) ,@body)) 
#+end_src 

# Local variables: 
# eval: (org-sbe "setup") 
# End: 

此外,可以通过使用添加一个标题,并插入图片浮动figure环境乳胶:

#+caption: A diamond. 
#+attr_latex: :float t :width "" 
#+results: diamond 

注意:width属性设置为空字符串擦除组织模式的默认行为,将图片的宽度设置为导出到LaTeX时的0.9\textwidth


this page,还可以代替PNG,只需通过diamond.svg更换diamond.png和删除的ImageMagick相关的头,因为出口在SVG图片:

#+TITLE: Test 
#+AUTHOR: Blah 
#+LATEX_CLASS: article 
#+LATEX_CLASS_OPTIONS: [american] 
# 
# Setup tikz package for both LaTeX and HTML export: 
#+LATEX_HEADER: \usepackage{tikz} 
#+PROPERTY: header-args:latex+ :packages '(("" "tikz")) 
# 
#+PROPERTY: header-args:latex+ :exports results 

* One Diamond 

#+name: diamond 
#+header: :file (by-backend (latex "diamond.tikz") (t "diamond.svg")) 
#+begin_src latex :results raw file 
    \begin{tikzpicture} 
    \draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle; 
    % \node at (0,0) {\(x_i\)}; 
    \end{tikzpicture} 
#+end_src 

#+caption: A diamond. 
#+attr_latex: :float t :width "" 
#+results: diamond 

* COMMENT setup 

#+name: setup 
#+begin_src emacs-lisp :results silent :exports none 
    ;; (setq org-babel-latex-htlatex "htlatex") 
    (defmacro by-backend (&rest body) 
    `(case (if (boundp 'backend) (org-export-backend-name backend) nil) ,@body)) 
#+end_src 

# Local variables: 
# eval: (org-sbe "setup") 
# End: 

然而要注意此解决方案不支持tikz代码中的数学宏。 htlatex应该支持基本的数学结构(通过取消注释上面的2个tikz和lisp行来尝试),但是这个功能显然需要一些返工,因为产生的SVG是无效的。


编辑

从版本9,上面的代码变为(与参考该图,为了说明的目的):

#+TITLE: Test 
#+AUTHOR: Blah 
#+LATEX_CLASS: article 
#+LATEX_CLASS_OPTIONS: [american] 
# 
# Setup tikz package for both LaTeX and HTML export: 
# 
#+LATEX_HEADER: \usepackage{tikz} 
#+PROPERTY: header-args:latex+ :packages '(("" "tikz")) 
#+PROPERTY: header-args:latex+ :imagemagick yes :fit yes 

* One Diamond 

#+name: diamond 
#+header: :iminoptions -density 600 -resample 100x100 
#+header: :file (by-backend (latex "diamond.tikz") (t "diamond.png")) 
#+begin_src latex :results raw graphics 
    \begin{tikzpicture} 
    \draw (1,0) -- (0,1) -- (-1,0) -- (0,-1) -- cycle; 
    \end{tikzpicture} 
#+end_src 

#+name: fig:diamond 
#+caption: A diamond. 
#+attr_latex: :float t :width "" 
#+results: diamond 

Figure [[fig:diamond]] is a diamond. 

* Setup               :noexport: 
#+name: setup 
#+begin_src emacs-lisp :exports none :results silent 
    (defmacro by-backend (&rest body) 
    `(case org-export-current-backend ,@body)) 
#+end_src 

# Local variables: 
# eval: (org-sbe "setup") 
# End: 

的主要区别是在“COMMENT “成为设置部分的”noexport“标签(请参阅this answer),代码为by-backend宏,以及乳胶代码块结果的”图形“属性。

+0

你好,你能告诉什么是'乳胶+'的exaclty? – DJJ

+0

'#+ PROPERTY:header-args:latex + '追加''到名为'header-args:latex'的头部参数。这在某种程度上是“可以猜测的”[在文档中](http://orgmode.org/manual/Property-syntax.html#Property-syntax)(尽管我同意这可以改进)。 – nberth

+0

太棒了! 我正在为OrgMode9开发几个小时的解决方案...... –