emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: svg file from tikz picture


From: Ihor Radchenko
Subject: Re: svg file from tikz picture
Date: Sun, 25 Sep 2022 15:52:20 +0800

Akira Kyle <akira@akirakyle.com> writes:

> I've been using the attached patch for the last few years and I've meaning to 
> send it here/start a discussion about ob-latex.el since I used it pretty much 
> daily to write tikz figures in org mode. So I'm glad to see this discussion 
> has been started!
>
> I've found it to be incredibly productive to use babel to develop tikz 
> diagrams as I can make come changes and quickly `org-ctrl-c-ctrl-c` to render 
> them in the same buffer.
>
> I think when I made this patch I had been caught by some of the quirks of the 
> svg export. For example, sometimes I would have some latex equation which I 
> use ~org-latex-preview~ on as I was writing it, but then it would fail to 
> render as mathjax upon html export since I would use some latex package that 
> isn't available under mathjax. So by using ob-latex I could easily fix this 
> by using the ~:file .svg~ header and get a nice html export. However due to 
> the different way of assembling the ~.tex~ file sometimes ~org-latex-preview~ 
> would work but ob-latex wouldn't. I think my use case may be fairly common 
> and so I think ob-latex really should be updated so svg uses the 
> ~org-latex-preview~ code. o

Thanks a lot for the patch!
I am not very familiar with the code here, but I will try to cross-check
things as much as possible as an initial feedback.

> Also I think the ~.tikz~ extension doesn't really make any sense since one 
> really can but arbitrary tex code in such a block, and I think that's why I 
> renamed it in my patch. However I'm now realizing that this evaluation method 
> probably doesn't make much since `:tangle` will already do this, with the 
> added benefit of handling noweb references correctly. So perhaps this should 
> be removed and document using tangling in lieu of ~:file *.tikz~?

This sounds reasonable, but we must not remove it just yet. Instead, we
need to support .tex extension _and_ .tikz extension as backwards
compatibility. For .tikz extension we may also display a warning that it
is obsolete.

> -(defcustom org-babel-latex-htlatex-packages
> -  '("[usenames]{color}" "{tikz}" "{color}" "{listings}" "{amsmath}")
> -  "Packages to use for htlatex export."
> -  :group 'org-babel
> -  :type '(repeat (string)))

Removing this defcustom will be a regression. Maybe we can instead
append it to org-latex-packages-alist? Note that {color} and {tikz} are
not loaded by default in `org-format-latex-header'.

> +          (org-format-latex-header
> +           (concat org-format-latex-header
> +                   (mapconcat #'identity (cdr (assq :headers params)) "\n")
> +                   (if fit "\n\\usepackage[active, tightpage]{preview}\n" "")

(concat "a" nil "b") is perfectly acceptable. There is no need to supply
empty strings as `concat' arguments.
Can simply use (when fit ...)

> +(defun org-babel-latex-format-tex (tex-file body)
> +  "Generate a temporary tex file from execute params."
> +  (with-temp-file tex-file
> +    (insert
> +     (org-latex-make-preamble
> +      (org-export-get-environment (org-export-get-backend 'latex))
> +      org-format-latex-header)
> +     (concat "\n\\begin{document}\n" body "\n\\end{document}\n"))))

I note that `org-export-get-environment' will be ran inside a temporary
file. It means that Org buffer LaTeX export settings for the source
buffer will not affect the return value. I assume that it is
intentional. If so, it is worth adding a comment about it into the code.

>  
> -(defun org-babel-latex-tex-to-pdf (file)
> -  "Generate a pdf file according to the contents FILE."
> -  (require 'ox-latex)
> -  (org-latex-compile file))
> -

This is removing a non-private function. Even though this function is
nothing but trivial, we still cannot remove it without notice.
The function should be moved to org-compat.el and marked obsolete.

Finally, please note that we follow certain commit message standards in
Org mode. See https://orgmode.org/worg/org-contribute.html#commit-messages

-- 
Ihor Radchenko,
Org mode contributor,
Learn more about Org mode at https://orgmode.org/.
Support Org development at https://liberapay.com/org-mode,
or support my work at https://liberapay.com/yantar92



reply via email to

[Prev in Thread] Current Thread [Next in Thread]