8

ソース、ドキュメント、ラテックスコードを含む組織ファイルがあります。ラテックス関連のものは、関数が互いにどのように相互作用するかを説明する一連のグラフを描画します。によると、

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

org-modeは、html exportを使用する場合、ラテックスコードを画像としてエクスポートする必要があります。

#+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にエクスポートする場合はlatexブロックは完全に無視されます。

4

4 に答える 4

7

org 8.2.5hから次のようにtikz画像をorgからhtmlにエクスポートすることができました(実際には、[org-reveal] [1]を使用してreveal.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、画像が表示されますが、正しくレンダリングされていません。

于 2014-04-08T14:57:02.493 に答える
6

最近のバージョンのOrg-mode(ただし、バージョン9より古い---以下の編集を参照)では、次のようなものを使用して、HTMLだけでなくLaTeXにもエクスポートできます。後者の場合、convert(ImageMagickツールキットから)tikzコードスニペットから生成されたPDFをサイズ100pxx100pxの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:

さらに、次を使用して、キャプションを追加し、figureLaTeXのフローティング環境に画像を挿入できます。

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

LaTeXにエクスポートするときに:width画像の幅を設定するOrg-modeのデフォルトの動作を消去するために、属性が空の文字列に設定されていることに注意してください。0.9\textwidth


このページによると、次のようにImageMagick関連のヘッダーを置き換えdiamond.pngて削除するだけで、PNGではなくSVGで画像をエクスポートすることもできます。diamond.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」タグになり(この回答を参照)、マクロのコードby-backend、およびラテックスコードブロックの結果の「graphics」属性になります。

于 2014-06-27T13:25:44.857 に答える
3

dvipngはtikzを処理しません。dvipngを次のシェルスクリプトに置き換えることで、インストールでこれを回避しました。

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

これで、Cx Cc Clを使用してtikzスニペットをプレビューしたり、HTMLにエクスポートしたりできます。理想的な解決策ではありませんが、私にとってはうまくいきます。

于 2012-07-01T21:22:16.010 に答える
2

私はtikzpictureブロックを機能させることができませんでしたが、Org-Modeドキュメントへのリンクで述べられているように、使用すべきではありませ#+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 !
于 2011-09-20T19:47:55.573 に答える