emacs-orgmode
[Top][All Lists]
Advanced

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

Re: File generation from LaTeX src fails due to temporary PDF in wrong d


From: Christian Moe
Subject: Re: File generation from LaTeX src fails due to temporary PDF in wrong directory
Date: Fri, 31 Mar 2023 09:36:03 +0200
User-agent: mu4e 1.2.0; emacs 27.2

chris writes:

>> [ ... snip ... ]
>> Solution:
>>
>> Redefine org-babel-latex-preamble to remove
>> the offending line.
>>
>>   (setq org-babel-latex-preamble
>>     '(lambda (_)
>>       "\\documentclass[preview]{standalone}"))
>>
>> With this setup, my example
>>
>>   #+header: :fit yes :headers '("\\usepackage{tikz}")
>>   #+begin_src latex :exports results :results raw file :file 
>> test-tikz-triangle.svg
>>     \begin{tikzpicture}
>>       \draw[draw=black, fill=blue!10] (0,4) -- (3,0) -- (-3,0) -- cycle;
>>     \end{tikzpicture}
>>   #+end_src
>>
>> exports correctly to an .svg file.
>
> Hmm, your fix works perfectly! And it's a `defcustom` variable so it's not 
> even a hack.

Yes, I only thought about that afterwards.

> I guess that since you haven't selected specific method like:
> `#+header: :imagemagick yes`, the method used is `inkscape`
> (`ob-latex.el` file):
> ```
> (defcustom org-babel-latex-pdf-svg-process
>   "inkscape \
> --pdf-poppler \
> --export-area-drawing \
> --export-text-to-path \
> --export-plain-svg \
> --export-filename=%O \
> %f"
>   "Command to convert a PDF file to an SVG file."
>   :group 'org-babel
>   :type 'string
>   :package-version '(Org . "9.6"))
> ```
>

I would have been, but I've got inkscape installed via Linux Mint apt
repo and it appears to be just a bit too old to have the --pdf-poppler
option. Right now, for testing, I'm just using the first thing I have at
hand that works, which is pdftocairo:

: (setq org-babel-latex-pdf-svg-process "pdftocairo -svg %f %O")

I'll probably switch to inkscape for options like not exporting text to
paths.

I also considered dvisvgm, which I use for snippet preview, but I
*think* that using xetex, I could not use dvisvgm for Babel blocks
because the Babel latex-to-svg process expects a pdf to be produced,
whereas xelatex only outputs dvi (actually an extended dvi format called
xdv) if you use the -no-pdf option. Could be wrong.

> I don't know if you use `org-latex-preview` for `tikz` snippets? Maybe you 
> don't because that doesn't export to `html`.
>
> I use `(setq org-preview-latex-default-process 'dvipng)`, and I guess it 
> would be nice to add an new option in `(defcustom 
> org-preview-latex-process-alist` to add `inkscape`.

I imagine that's possible.

But on raw tikz snippets (not src blocks), this already works well for
me with dvisvgm. To get it working with xetex I have customized the
dvisvgm option in org-preview-latex-process-alist:

   ...
   (dvisvgm :programs
            ("xelatex" "dvisvgm")
            :description "xdv > svg"
            :message "you need to install the programs: xetex and dvisvgm."
            :image-input-type "xdv" :image-output-type "svg"
            :image-size-adjust (1.7 . 1.5)
            :latex-compiler ("xelatex -no-pdf -interaction nonstopmode 
-output-directory %o %f")
            :image-converter ("dvisvgm %f --no-fonts --exact-bbox
            --scale=%S --output=%O")))
   ...


> So with you solution, I guess when we export to `html`, the "normal" `latex` 
> formulas are rendered by `mathjax`, which works very well, and the `tikz` 
> diagrams are automatically exported as a `svg` image, while the code to 
> produce them is not exported.
>
> I suppose you use those `latex` code block for exporting to `html` purpose?

Yes, that's my aim.

Yours,
Christian



reply via email to

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