html-экспорт в режиме org - PullRequest
       15

html-экспорт в режиме org

6 голосов
/ 19 сентября 2011

У меня есть файл org с исходным кодом, документацией и латексным кодом.Материал латекса рисует кучу графиков, объясняющих, как функции взаимодействуют друг с другом.Согласно,

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

org-mode должен экспортировать латексный код как изображения при использовании экспорта 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 блок латекса полностью игнорируется.

Ответы [ 4 ]

7 голосов
/ 08 апреля 2014

Мне удалось экспортировать картинку tikz из org в html (на самом деле, чтобы show.js, используя [org -карт] [1]) из org 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 процесс не знает, чтобы включить тикз, и сборка не удается. Если я попробую tex:dvipng вместо tex:imagemagick, тогда я получаю изображение, но неправильно отрендерено.

5 голосов
/ 27 июня 2014

В последних версиях режима Org (все же, более старых, чем версия 9 - см. Редактирование ниже), вы можете использовать что-то вроде следующего, которое можно экспортировать в LaTeX, а также в HTML.В последнем случае convert (из инструментария ImageMagick) используется для перевода PDF-файла, созданного из фрагмента кода tikz, в изображение PNG размером 100 на 100 пикселей.

#+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 среду в LaTeX, используя:

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

Обратите внимание, что атрибут :width установлен в пустую строку, чтобы стереть поведение по умолчанию в режиме Org, который устанавливает ширину изображения на 0.9\textwidth при экспорте в LaTeX.


Согласно этой странице , также возможно экспортировать изображения в 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» для результатаблок латексного кода.

3 голосов
/ 02 июля 2012

dvipng не обрабатывает тикз.Я решил эту проблему в своей установке, заменив dvipng следующим сценарием оболочки:

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

Теперь я могу просмотреть фрагмент tikz с помощью Cx Cc Cl или экспортировать его в HTML.Не идеальное решение, но оно работает для меня.

2 голосов
/ 20 сентября 2011

Я не смог заставить работать блоки tikzpicture, но #+begin_latex и #+end_latex не следует использовать, как сказано в вашей ссылке на документацию в режиме Org, требуется только \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 !
...