簡體   English   中英

組織模式html導出

[英]org-mode html export

我有一個包含源代碼,文檔和乳膠代碼的組織文件。 Latex的東西繪制了一堆圖解,解釋了函數如何相互作用。 根據,

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

使用html導出時,org-mode應將乳膠代碼導出為圖像。

#+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乳膠塊完全被忽略。

我能夠從org 8.2.5h導出一個tikz圖片從org到html(實際上,使用[org-reveal] [1]來揭示.js)

#+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 ,那么我會得到一個圖像,但是會得到一個錯誤的圖像。

使用Org-mode的最新版本(但是,比版本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:

此外,可以使用以下命令添加標題,並將圖片插入LaTeX中的浮動figure環境中:

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

請注意:width屬性設置為空字符串以清除Org-mode的默認行為,它在導出到LaTeX時將圖片的寬度設置為0.9\\textwidth


根據這個頁面 ,也可以用SVG而不是PNG導出圖片,只需用diamond.png替換diamond.svg並刪除與ImageMagick相關的頭文件,如:

#+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”標簽(請參閱此答案 ), by-backend宏的代碼以及乳膠代碼塊結果的“graphics”屬性。

dvipng不處理tikz。 我通過使用以下shell腳本替換dvipng來解決我的安裝問題:

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

現在,我可以使用Cx Cc Cl預覽tikz片段,或將其導出為HTML。 不是一個理想的解決方案,但它適用於我。

我無法使tikzpicture塊工作但是#+begin_latex#+end_latex不應該使用,正如你在Org-Mode文檔的鏈接中所說,只有\\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 !

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM