Với các phiên bản Org gần đây (cũ hơn phiên bản 9 --- xem chỉnh sửa bên dưới), bạn có thể sử dụng một cái gì đó như sau, có thể xuất sang LaTeX cũng như HTML. Trong trường hợp thứ hai, convert
(từ bộ công cụ ImageMagick) được sử dụng để dịch một tệp PDF được tạo từ đoạn mã tikz thành hình ảnh PNG có kích thước 100px x 100px.
#+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:
Bên cạnh đó, người ta có thể thêm một chú thích, và chèn các hình ảnh trong một figure
môi trường trôi nổi trong LaTeX, bằng cách sử dụng:
#+caption: A diamond.
#+attr_latex: :float t :width ""
#+results: diamond
Note thuộc tính :width
được thiết lập để các chuỗi rỗng để xóa hành vi mặc định của chế độ Org, thiết lập chiều rộng của hình ảnh thành 0.9\textwidth
khi xuất sang LaTeX.
Theo this page, nó cũng có thể xuất những bức tranh trong SVG thay vì PNG, chỉ đơn giản bằng cách thay thế diamond.png
bởi diamond.svg
và loại bỏ tiêu đề ImageMagick liên quan, như trong:
#+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:
Lưu ý tuy nhiên đó giải pháp này không hỗ trợ các macro toán học trong mã tikz. htlatex
nên hỗ trợ các cấu trúc toán học cơ bản (được thử bằng cách không nhận xét 2 dòng tikz và lisp ở trên), nhưng tính năng này cần một số làm lại rõ ràng, vì SVG kết quả là không hợp lệ.
Sửa
Kể từ phiên bản 9, các mã trên sẽ trở thành (với một tham chiếu đến con số này, cho mục đích minh họa):
#+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:
Sự khác biệt chính là ở "COMMENT "trở thành thẻ": noexport "cho phần thiết lập (xem this answer), mã của macro by-backend
và thuộc tính" đồ họa "cho kết quả của khối mã latex.
Tôi tự hỏi bạn mong đợi điều gì từ nhà xuất khẩu html. – kindahero
@kindahero, tôi chắc chắn không mong đợi nó để làm cho tôi một tách cà phê nhưng tôi hy vọng nó để làm cho đồ thị với dvipng và nhúng nó vào html. –
Sau đó, tôi đoán bạn nên sử dụng babel http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-LaTeX.html – kindahero