2011-09-19 67 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開發幾個小時的解決方案...... –