* [BUG] LaTeX preview should use a subdirectory in /tmp
@ 2024-03-25 10:40 Max Nikulin
2024-03-25 11:40 ` Ihor Radchenko
0 siblings, 1 reply; 16+ messages in thread
From: Max Nikulin @ 2024-03-25 10:40 UTC (permalink / raw)
To: emacs-orgmode
This is a follow-up to recent changes related to LaTeX preview.
This feature should not write temporary files to /tmp directly, some
subdirectory should be created for this purpose. The idea is to mitigate
consequences if a user opens a file from a compromised or a malicious
source and gets /tmp flooded with a crowd of files. It is easier to
delete single directory than to spent time trying to figure out what
files are necessary for other applications and what ones are generated
by LaTeX code.
P.S. I do not mind double level structure: all temporary Org mode files
(babel, etc.) are created in single (per Emacs process) directory in tmp
and each task creates its own subdirectory there.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-03-25 10:40 [BUG] LaTeX preview should use a subdirectory in /tmp Max Nikulin
@ 2024-03-25 11:40 ` Ihor Radchenko
2024-03-25 12:49 ` Max Nikulin
0 siblings, 1 reply; 16+ messages in thread
From: Ihor Radchenko @ 2024-03-25 11:40 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 534 bytes --]
Max Nikulin <manikulin@gmail.com> writes:
> This feature should not write temporary files to /tmp directly, some
> subdirectory should be created for this purpose. The idea is to mitigate
> consequences if a user opens a file from a compromised or a malicious
> source and gets /tmp flooded with a crowd of files. It is easier to
> delete single directory than to spent time trying to figure out what
> files are necessary for other applications and what ones are generated
> by LaTeX code.
See the attached tentative patch.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-org-create-formula-image-Keep-temporary-LaTeX-files-.patch --]
[-- Type: text/x-patch, Size: 1206 bytes --]
From df4d827d98063ee665d71906f358ca08ad4d0023 Mon Sep 17 00:00:00 2001
Message-ID: <df4d827d98063ee665d71906f358ca08ad4d0023.1711366791.git.yantar92@posteo.net>
From: Ihor Radchenko <yantar92@posteo.net>
Date: Mon, 25 Mar 2024 14:38:42 +0300
Subject: [PATCH] org-create-formula-image: Keep temporary LaTeX files in
subfir of /tmp
* lisp/org.el (org-create-formula-image): When compiling formula
images, keep temporary LaTeX logs in a subdirectory of
`temporary-file-directory' instead of littering the top-level /tmp.
Reported-by: Max Nikulin <manikulin@gmail.com>
Link: https://orgmode.org/list/utrkah$4s0$1@ciao.gmane.io
---
lisp/org.el | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lisp/org.el b/lisp/org.el
index f0f85822f..0793b72d6 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -16361,7 +16361,7 @@ (defun org-create-formula-image
org-format-latex-header
'snippet)))
(latex-compiler (plist-get processing-info :latex-compiler))
- (tmpdir temporary-file-directory)
+ (tmpdir (concat temporary-file-directory "orgtex/"))
(texfilebase (make-temp-name
(expand-file-name "orgtex" tmpdir)))
(texfile (concat texfilebase ".tex"))
--
2.44.0
[-- Attachment #3: Type: text/plain, Size: 224 bytes --]
--
Ihor Radchenko // yantar92,
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>
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-03-25 11:40 ` Ihor Radchenko
@ 2024-03-25 12:49 ` Max Nikulin
2024-03-26 11:29 ` Max Nikulin
0 siblings, 1 reply; 16+ messages in thread
From: Max Nikulin @ 2024-03-25 12:49 UTC (permalink / raw)
To: emacs-orgmode
On 25/03/2024 18:40, Ihor Radchenko wrote:
> Max Nikulin writes:
>> This feature should not write temporary files to /tmp directly
>
> See the attached tentative patch.
Thanks for prompt reaction.
> +++ b/lisp/org.el
> @@ -16361,7 +16361,7 @@ (defun org-create-formula-image
> org-format-latex-header
> 'snippet)))
> (latex-compiler (plist-get processing-info :latex-compiler))
> - (tmpdir temporary-file-directory)
> + (tmpdir (concat temporary-file-directory "orgtex/"))
> (texfilebase (make-temp-name
> (expand-file-name "orgtex" tmpdir)))
Since directory name already contains "org", it may be shortened to just
"tex"
> (texfile (concat texfilebase ".tex"))
I would use `make-temp-file' to create TEXFILE and would derive
TEXFILEBASE from it. In general it is safer.
To create directory I expect a call of a function similar to the
following one. Perhaps it exists already somewhere.
(defun org-ensure-tmp-dir (dir-symbol prefix)
(let ((dir (symbol-value dir-symbol)))
;; Temporary directory has not been cleaned.
(or (and dir (file-directory-p dir) dir)
(setf (symbol-value dir-symbol)
(make-temp-file (or prefix "orgtmp-") 'dir)))))
(defvar org-tex-tmpdir nil)
Usage example: (org-ensure-tmp-dir 'org-tex-tmpdir "orgtex-")
Fixed directory name is not friendly for multi-user systems and
predictable name in /tmp might be a source of security issues.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-03-25 12:49 ` Max Nikulin
@ 2024-03-26 11:29 ` Max Nikulin
0 siblings, 0 replies; 16+ messages in thread
From: Max Nikulin @ 2024-03-26 11:29 UTC (permalink / raw)
To: emacs-orgmode
On 25/03/2024 19:49, Max Nikulin wrote:
> (defun org-ensure-tmp-dir (dir-symbol prefix)
> (let ((dir (symbol-value dir-symbol)))
> ;; Temporary directory has not been cleaned.
> (or (and dir (file-directory-p dir) dir)
`if' should be used instead of `or' here.
> (setf (symbol-value dir-symbol)
> (make-temp-file (or prefix "orgtmp-") 'dir)))))
>
> (defvar org-tex-tmpdir nil)
>
> Usage example: (org-ensure-tmp-dir 'org-tex-tmpdir "orgtex-")
I do not like that the function may be called with different
`temporary-file-directory' and I can not figure out how to adjust API to
handle such case. On the other hand I am unsure if it is a realistic
case when this function is called with alternating
`temporary-file-directory'.
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
@ 2024-04-17 15:12 copropriete27ruemoret
0 siblings, 0 replies; 16+ messages in thread
From: copropriete27ruemoret @ 2024-04-17 15:12 UTC (permalink / raw)
To: manikulin, emacs-orgmode
On 25/03/2024 19:49, Max Nikulin wrote:
> > (defun org-ensure-tmp-dir (dir-symbol prefix)
> > (let ((dir (symbol-value dir-symbol)))
> > ;; Temporary directory has not been cleaned.
> > (or (and dir (file-directory-p dir) dir)
>
>
>`if' should be used instead of `or' here.
>
>
>
>>
>> (setf (symbol-value dir-symbol)
>> (make-temp-file (or prefix "orgtmp-") 'dir)))))
>>
>> (defvar org-tex-tmpdir nil)
>>
>> Usage example: (org-ensure-tmp-dir 'org-tex-tmpdir "orgtex-")
> I do not like that the function may be called with different `temporary-file-directory' and I can not figure out how to adjust API to handle such case. On the other hand I am unsure if it is a realistic case when this function is called with alternating `temporary-file-directory'.
I have a case where the current way of forcing the temporary directory to me `/tmp` is wrong. Running emacs on Ubuntu **under WSL2**,, exporting latex snippets to ODT *as images* fails : the `.dvi` files are correctly compiled and placed in `/tmp{, but the convert program tries to read them in `../../../../tmp/`, which is indeed `/tmp` in a "normal" filesystem but **is not** in WSL, where the root (`/`) is in fact a mounted tree.
Admittedly, this is a corner case, but it turned out to be necessary (exporting via mathml gave unsatisfying results).
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
@ 2024-04-17 15:21 Emmanuel Charpentier
2024-04-17 16:48 ` Ihor Radchenko
0 siblings, 1 reply; 16+ messages in thread
From: Emmanuel Charpentier @ 2024-04-17 15:21 UTC (permalink / raw)
To: manikulin, emacs-orgmode
On 25/03/2024 19:49, Max Nikulin wrote:
> > (defun org-ensure-tmp-dir (dir-symbol prefix)
> > (let ((dir (symbol-value dir-symbol)))
> > ;; Temporary directory has not been cleaned.
> > (or (and dir (file-directory-p dir) dir)
>
>
>`if' should be used instead of `or' here.
>
>
>
>>
>> (setf (symbol-value dir-symbol)
>> (make-temp-file (or prefix "orgtmp-") 'dir)))))
>>
>> (defvar org-tex-tmpdir nil)
>>
>> Usage example: (org-ensure-tmp-dir 'org-tex-tmpdir "orgtex-")
> I do not like that the function may be called with
different `temporary-file-directory' and I can not figure out how to
adjust API to handle such case. On the other hand I am unsure if it is
a realistic case when this function is called with
alternating `temporary-file-directory'.
I have a case where the current way of forcing the temporary directory
to me `/tmp` is wrong. Running emacs on Ubuntu **under WSL2**,,
exporting latex snippets to ODT *as images* fails : the `.dvi` files
are correctly compiled and placed in `/tmp{, but the convert program
tries to read them in `../../../../tmp/`, which is indeed `/tmp` in a
"normal" filesystem but **is not** in WSL, where the root (`/`) is in
fact a mounted tree.
Admittedly, this is a corner case, but it turned out to be necessary
(exporting via mathml gave unsatisfying results).
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-04-17 15:21 Emmanuel Charpentier
@ 2024-04-17 16:48 ` Ihor Radchenko
2024-04-17 20:04 ` Emmanuel Charpentier
0 siblings, 1 reply; 16+ messages in thread
From: Ihor Radchenko @ 2024-04-17 16:48 UTC (permalink / raw)
To: Emmanuel Charpentier; +Cc: manikulin, emacs-orgmode
Emmanuel Charpentier <emm.charpentier@free.fr> writes:
> I have a case where the current way of forcing the temporary directory
> to me `/tmp` is wrong. Running emacs on Ubuntu **under WSL2**,,
> exporting latex snippets to ODT *as images* fails : the `.dvi` files
> are correctly compiled and placed in `/tmp{, but the convert program
> tries to read them in `../../../../tmp/`, which is indeed `/tmp` in a
> "normal" filesystem but **is not** in WSL, where the root (`/`) is in
> fact a mounted tree.
>
> Admittedly, this is a corner case, but it turned out to be necessary
> (exporting via mathml gave unsatisfying results).
It looks like is a different bug. (probably even in Emacs, when
calculating relative path)
Assuming that your `org-preview-latex-default-process' is using the
default value of 'dvipng, does it help if you change the image convertor
command to use absolute path?
(plist-put (alist-get 'dvipng org-preview-latex-process-alist)
:image-converter
'("dvipng -D %D -T tight -o %O %F"))
--
Ihor Radchenko // yantar92,
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>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-04-17 16:48 ` Ihor Radchenko
@ 2024-04-17 20:04 ` Emmanuel Charpentier
2024-04-17 20:18 ` Ihor Radchenko
2024-05-02 10:30 ` Ihor Radchenko
0 siblings, 2 replies; 16+ messages in thread
From: Emmanuel Charpentier @ 2024-04-17 20:04 UTC (permalink / raw)
To: Ihor Radchenko, emacs-orgmode
Le mercredi 17 avril 2024 à 16:48 +0000, Ihor Radchenko a écrit :
> Emmanuel Charpentier <emm.charpentier@free.fr> writes:
>
> > I have a case where the current way of forcing the temporary
> > directory
> > to me `/tmp` is wrong. Running emacs on Ubuntu **under WSL2**,,
> > exporting latex snippets to ODT *as images* fails : the `.dvi`
> > files
> > are correctly compiled and placed in `/tmp{, but the convert
> > program
> > tries to read them in `../../../../tmp/`, which is indeed `/tmp` in
> > a
> > "normal" filesystem but **is not** in WSL, where the root (`/`) is
> > in
> > fact a mounted tree.
> >
> > Admittedly, this is a corner case, but it turned out to be
> > necessary
> > (exporting via mathml gave unsatisfying results).
>
> It looks like is a different bug. (probably even in Emacs, when
> calculating relative path)
That might also be an idiosyncratic bug of WSL2' implementation of the
virtual machine filesystem...
>
> Assuming that your `org-preview-latex-default-process' is using the
> default value of 'dvipng, does it help if you change the image
> convertor
> command to use absolute path?
I didn't know that one could do that : the placeholders are not well
documented...
>
> (plist-put (alist-get 'dvipng org-preview-latex-process-alist)
> :image-converter
> '("dvipng -D %D -T tight -o %O %F"))
Nope, same problem : the *Org Preview LaTeX Output* buffer says :
../../../../../tmp/orgtexSyy18r.dvi: No such file or directory
This is dvipng 1.15 Copyright 2002-2015 Jan-Ake Larsson
If I understand it correctly, the %F placeholder should be an
*absolute* filename. It is not...
Couldn't the output directory of the :latex-compiler element being
hardcoded to, say, the curerent directory or a subdirectory thereof,
and ditto for the input directory of :image-converter ?
Sincerely,
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-04-17 20:04 ` Emmanuel Charpentier
@ 2024-04-17 20:18 ` Ihor Radchenko
2024-04-17 20:41 ` Emmanuel Charpentier
2024-05-02 10:30 ` Ihor Radchenko
1 sibling, 1 reply; 16+ messages in thread
From: Ihor Radchenko @ 2024-04-17 20:18 UTC (permalink / raw)
To: Emmanuel Charpentier; +Cc: emacs-orgmode
Emmanuel Charpentier <emm.charpentier@free.fr> writes:
>> Assuming that your `org-preview-latex-default-process' is using the
>> default value of 'dvipng, does it help if you change the image
>> convertor
>> command to use absolute path?
>
> I didn't know that one could do that : the placeholders are not well
> documented...
Yeah. This particular option is missing from the docstring of
`org-preview-latex-process-alist'.
>> (plist-put (alist-get 'dvipng org-preview-latex-process-alist)
>> :image-converter
>> '("dvipng -D %D -T tight -o %O %F"))
>
> Nope, same problem : the *Org Preview LaTeX Output* buffer says :
>
> ../../../../../tmp/orgtexSyy18r.dvi: No such file or directory
> This is dvipng 1.15 Copyright 2002-2015 Jan-Ake Larsson
>
> If I understand it correctly, the %F placeholder should be an
> *absolute* filename. It is not...
>
> Couldn't the output directory of the :latex-compiler element being
> hardcoded to, say, the curerent directory or a subdirectory thereof,
> and ditto for the input directory of :image-converter ?
What if you do M-x trace-function <RET> org-compile-file-commands <RET>
and run the preview.
Then, a buffer should appear listing the command expansions used during
the preview process. May you then share that buffer?
--
Ihor Radchenko // yantar92,
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>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-04-17 20:18 ` Ihor Radchenko
@ 2024-04-17 20:41 ` Emmanuel Charpentier
2024-04-18 12:23 ` Emmanuel Charpentier
2024-04-19 11:56 ` Ihor Radchenko
0 siblings, 2 replies; 16+ messages in thread
From: Emmanuel Charpentier @ 2024-04-17 20:41 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: emacs-orgmode
Le mercredi 17 avril 2024 à 20:18 +0000, Ihor Radchenko a écrit :
> Emmanuel Charpentier <emm.charpentier@free.fr> writes:
[ Snip... ]
> What if you do M-x trace-function <RET> org-compile-file-commands
No such function : I just have org-compile-file , which I traced.
> <RET>
> and run the preview.
> Then, a buffer should appear listing the command expansions used
> during
> the preview process. May you then share that buffer?
Here it comes :
Buffer "Trace output" :
*****
======================================================================
1 -> (org-compile-file "/tmp/orgtexD0afvR.tex" ("latex -interaction
nonstopmode -output-directory %o %f") "dvi" "Please adjust `dvipng'
part of `org-preview-latex-process-alist'." #<buffer *Org Preview LaTeX
Output*>)
1 <- org-compile-file: "/tmp/orgtexD0afvR.dvi"
======================================================================
1 -> (org-compile-file "/tmp/orgtexD0afvR.dvi" ("dvipng -D %D -T tight
-bg Transparent -o %O %f") "png" "Please adjust `dvipng' part of `org-
preview-latex-process-alist'." #<buffer *Org Preview LaTeX Output*>
((68 . "140.0") (83 . "1.0")))
1 <- org-compile-file: !non-local\ exit!
*****
Buffer "*Org Preview LaTeX Output*" :
*****
../../../../../tmp/orgtexD0afvR.dvi: No such file or directory
This is dvipng 1.15 Copyright 2002-2015 Jan-Ake Larsson
*****
HTH,
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-04-17 20:41 ` Emmanuel Charpentier
@ 2024-04-18 12:23 ` Emmanuel Charpentier
2024-04-19 11:56 ` Ihor Radchenko
1 sibling, 0 replies; 16+ messages in thread
From: Emmanuel Charpentier @ 2024-04-18 12:23 UTC (permalink / raw)
To: Ihor Radchenko; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 765 bytes --]
Le mercredi 17 avril 2024 à 22:41 +0200, Emmanuel Charpentier a écrit :
[ Snip... ]
A couple more data points :
* The problem I described happens when I run `emacs` on files
belonging in a Windows tree, symlinked to the Linux tree. Running
`emacs` on files outside this symlinked tree works OK.
This suggests that it might be worth testing trhese exports from
network directories.
* Trying this with the current Org from the git directory succesfully
builds the images but fails at inserting them in the `.odt` file
(Org mistakenly inserts the "file:" string in the name of the needed
image file).
* Trying `dvisvgm` fails because Org does not recognize this as a
valid format and insists on `verbatim`.
HTH,
[-- Attachment #2: Type: text/html, Size: 1192 bytes --]
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-04-17 20:41 ` Emmanuel Charpentier
2024-04-18 12:23 ` Emmanuel Charpentier
@ 2024-04-19 11:56 ` Ihor Radchenko
2024-04-19 15:00 ` emm.charpentier
1 sibling, 1 reply; 16+ messages in thread
From: Ihor Radchenko @ 2024-04-19 11:56 UTC (permalink / raw)
To: Emmanuel Charpentier; +Cc: emacs-orgmode
Emmanuel Charpentier <emm.charpentier@free.fr> writes:
>> What if you do M-x trace-function <RET> org-compile-file-commands
>
> No such function : I just have org-compile-file , which I traced.
May you try the development branch of Org mode (main)?
--
Ihor Radchenko // yantar92,
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>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-04-19 11:56 ` Ihor Radchenko
@ 2024-04-19 15:00 ` emm.charpentier
2024-04-20 12:49 ` Max Nikulin
0 siblings, 1 reply; 16+ messages in thread
From: emm.charpentier @ 2024-04-19 15:00 UTC (permalink / raw)
To: Ihor Radchenko, emacs-orgmode
I can M-x trace-function org-compile-file-commands (whic now appears in the auocompletions) but, curiously, I *dp* **not** get a ttace output buffer.
Exporting still fails with :
========================================================
org-babel-exp process emacs-lisp at position 194...
Formatting LaTeX using dvipng
Creating LaTeX Image 1...
Creating LaTeX Image 2...
Embedding /home/charpent/WinFiles/Temporaire/Org/file:ltximg/EssaiSnippetsLaTeX_2923a1941c0e63eab69544afa1be2ec0d95a01c4.png as Images/0001.png...
condition-case: OpenDocument export failed: Opening input file: No such file or directory, /home/charpent/WinFiles/Temporaire/Org/file:ltximg/EssaiSnippetsLaTeX_2923a1941c0e63eab69544afa1be2ec0d95a01c4.png
Making completion list...
Quit [8 times]
========================================================
in the *Messages* buffer.
I am at loss..
--
Emmanuel Charpentier
----- Mail original -----
> De: "Ihor Radchenko" <yantar92@posteo.net>
> À: "Emmanuel Charpentier" <emm.charpentier@free.fr>
> Cc: emacs-orgmode@gnu.org
> Envoyé: Vendredi 19 Avril 2024 13:56:52
> Objet: Re: [BUG] LaTeX preview should use a subdirectory in /tmp
>
> Emmanuel Charpentier <emm.charpentier@free.fr> writes:
>
> >> What if you do M-x trace-function <RET> org-compile-file-commands
> >
> > No such function : I just have org-compile-file , which I traced.
>
> May you try the development branch of Org mode (main)?
>
> --
> Ihor Radchenko // yantar92,
> 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>
>
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-04-19 15:00 ` emm.charpentier
@ 2024-04-20 12:49 ` Max Nikulin
0 siblings, 0 replies; 16+ messages in thread
From: Max Nikulin @ 2024-04-20 12:49 UTC (permalink / raw)
To: emm.charpentier, emacs-orgmode
On 19/04/2024 22:00, emm.charpentier@free.fr wrote:
> Embedding /home/charpent/WinFiles/Temporaire/Org/file:ltximg/EssaiSnippetsLaTeX_2923a1941c0e63eab69544afa1be2ec0d95a01c4.png as Images/0001.png...
See
Ihor Radchenko. Re: strange export problem with a file: link. Sat, 20
Apr 2024 12:25:56 +0000.
https://list.orgmode.org/87cyqkmd9n.fsf@localhost
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-04-17 20:04 ` Emmanuel Charpentier
2024-04-17 20:18 ` Ihor Radchenko
@ 2024-05-02 10:30 ` Ihor Radchenko
2024-07-03 11:23 ` Ihor Radchenko
1 sibling, 1 reply; 16+ messages in thread
From: Ihor Radchenko @ 2024-05-02 10:30 UTC (permalink / raw)
To: Emmanuel Charpentier; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 632 bytes --]
Emmanuel Charpentier <emm.charpentier@free.fr> writes:
>> (plist-put (alist-get 'dvipng org-preview-latex-process-alist)
>> :image-converter
>> '("dvipng -D %D -T tight -o %O %F"))
>
> Nope, same problem : the *Org Preview LaTeX Output* buffer says :
>
> ../../../../../tmp/orgtexSyy18r.dvi: No such file or directory
> This is dvipng 1.15 Copyright 2002-2015 Jan-Ake Larsson
>
> If I understand it correctly, the %F placeholder should be an
> *absolute* filename. It is not...
May you try the attached patch?
I changed the default command templates to use absolute paths
everywhere.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-org-preview-latex-process-alist-Work-around-relative.patch --]
[-- Type: text/x-patch, Size: 5568 bytes --]
From 7ac1aacb977ded45dc713b24e18d9068baaa5148 Mon Sep 17 00:00:00 2001
Message-ID: <7ac1aacb977ded45dc713b24e18d9068baaa5148.1714645744.git.yantar92@posteo.net>
From: Ihor Radchenko <yantar92@posteo.net>
Date: Thu, 2 May 2024 13:19:37 +0300
Subject: [PATCH] org-preview-latex-process-alist: Work around relative path
oddities in WSL
* lisp/org-macs.el (org-compile-file-commands): Add new allowed
placeholder %P - absolute path to output dir.
* lisp/org.el (org-preview-latex-process-alist): Use absolute paths
in commands. List all the allowed placeholders in the docstring.
Reported-by: Emmanuel Charpentier <emm.charpentier@free.fr>
Link: https://orgmode.org/list/87zftr4uaj.fsf@localhost
---
lisp/org-macs.el | 18 ++++++++++--------
lisp/org.el | 18 ++++++++++--------
2 files changed, 20 insertions(+), 16 deletions(-)
diff --git a/lisp/org-macs.el b/lisp/org-macs.el
index 1254ddb54..53dc75425 100644
--- a/lisp/org-macs.el
+++ b/lisp/org-macs.el
@@ -1690,12 +1690,12 @@ (defun org-compile-file-commands (source process ext &optional spec err-msg)
the SOURCE file.
If PROCESS is a list of commands, each of them is called using
-`shell-command'. By default, in each command, %b, %f, %F, %o and
-%O are replaced with, respectively, SOURCE base name, relative
-file name, absolute file name, relative directory and absolute
-output file name. It is possible, however, to use more
-place-holders by specifying them in optional argument SPEC, as an
-alist following the pattern
+`shell-command'. By default, in each command, %b, %f, %F, %o, %P, and
+%O are replaced with, respectively, SOURCE base name, relative file
+name, absolute file name, relative output directory, absolute output
+directory, and absolute output file name. It is possible, however, to
+use more place-holders by specifying them in optional argument SPEC,
+as an alist following the pattern
(CHARACTER . REPLACEMENT-STRING).
@@ -1707,9 +1707,10 @@ (defun org-compile-file-commands (source process ext &optional spec err-msg)
(pwd (file-truename default-directory))
(absname (expand-file-name source pwd))
(relname (if (file-name-absolute-p source)
- (file-relative-name source pwd)
- source))
+ (file-relative-name source pwd)
+ source))
(relpath (or (file-name-directory relname) "./"))
+ (abspath (expand-file-name relpath))
(output (concat (file-name-sans-extension absname) "." ext))
(err-msg (if (stringp err-msg) (concat ". " err-msg) "")))
(pcase process
@@ -1720,6 +1721,7 @@ (defun org-compile-file-commands (source process ext &optional spec err-msg)
(?f . ,(shell-quote-argument relname))
(?F . ,(shell-quote-argument absname))
(?o . ,(shell-quote-argument relpath))
+ (?P . ,(shell-quote-argument abspath))
(?O . ,(shell-quote-argument output))))))
(mapcar (lambda (command) (format-spec command spec)) process)))
(_ (error "No valid command to process %S%s" source err-msg)))))
diff --git a/lisp/org.el b/lisp/org.el
index 809fd8ba3..1c78c2024 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -3326,10 +3326,10 @@ (defcustom org-preview-latex-process-alist
:image-input-type "dvi"
:image-output-type "png"
:image-size-adjust (1.0 . 1.0)
- :latex-compiler ("latex -interaction nonstopmode -output-directory %o %f")
- :image-converter ("dvipng -D %D -T tight -o %O %f")
+ :latex-compiler ("latex -interaction nonstopmode -output-directory %P %F")
+ :image-converter ("dvipng -D %D -T tight -o %O %F")
:transparent-image-converter
- ("dvipng -D %D -T tight -bg Transparent -o %O %f"))
+ ("dvipng -D %D -T tight -bg Transparent -o %O %F"))
(dvisvgm
:programs ("latex" "dvisvgm")
:description "dvi > svg"
@@ -3337,7 +3337,7 @@ (defcustom org-preview-latex-process-alist
:image-input-type "dvi"
:image-output-type "svg"
:image-size-adjust (1.7 . 1.5)
- :latex-compiler ("latex -interaction nonstopmode -output-directory %o %f")
+ :latex-compiler ("latex -interaction nonstopmode -output-directory %P %F")
:image-converter ("dvisvgm %f --no-fonts --exact-bbox --scale=%S --output=%O"))
(imagemagick
:programs ("latex" "convert")
@@ -3346,9 +3346,9 @@ (defcustom org-preview-latex-process-alist
:image-input-type "pdf"
:image-output-type "png"
:image-size-adjust (1.0 . 1.0)
- :latex-compiler ("pdflatex -interaction nonstopmode -output-directory %o %f")
+ :latex-compiler ("pdflatex -interaction nonstopmode -output-directory %P %F")
:image-converter
- ("convert -density %D -trim -antialias %f -quality 100 %O")))
+ ("convert -density %D -trim -antialias %F -quality 100 %O")))
"Definitions of external processes for LaTeX previewing.
Org mode can use some external commands to generate TeX snippet's images for
previewing or inserting into HTML files, e.g., \"dvipng\". This variable tells
@@ -3389,9 +3389,11 @@ (defcustom org-preview-latex-process-alist
Place-holders used by `:image-converter' and `:latex-compiler':
- %f input file name
+ %f input file name (relative)
+ %F input file name (absolute)
%b base name of input file
- %o base directory of input file
+ %o base directory of input file (relative)
+ %P base directory of input file (absolute)
%O absolute output file name
Place-holders only used by `:image-converter':
--
2.44.0
[-- Attachment #3: Type: text/plain, Size: 224 bytes --]
--
Ihor Radchenko // yantar92,
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>
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [BUG] LaTeX preview should use a subdirectory in /tmp
2024-05-02 10:30 ` Ihor Radchenko
@ 2024-07-03 11:23 ` Ihor Radchenko
0 siblings, 0 replies; 16+ messages in thread
From: Ihor Radchenko @ 2024-07-03 11:23 UTC (permalink / raw)
To: Emmanuel Charpentier; +Cc: emacs-orgmode
Ihor Radchenko <yantar92@posteo.net> writes:
>> Nope, same problem : the *Org Preview LaTeX Output* buffer says :
>>
>> ../../../../../tmp/orgtexSyy18r.dvi: No such file or directory
>> This is dvipng 1.15 Copyright 2002-2015 Jan-Ake Larsson
>>
>> If I understand it correctly, the %F placeholder should be an
>> *absolute* filename. It is not...
>
> May you try the attached patch?
> I changed the default command templates to use absolute paths
> everywhere.
No response after 2 months.
Since I do not have a reproducer, I cannot confirm that the patch is an
improvement. So, not merging.
Canceled.
If anyone else is experiencing the same problem, feel free to jump in to
revive the thread.
--
Ihor Radchenko // yantar92,
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>
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2024-07-03 11:22 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-03-25 10:40 [BUG] LaTeX preview should use a subdirectory in /tmp Max Nikulin
2024-03-25 11:40 ` Ihor Radchenko
2024-03-25 12:49 ` Max Nikulin
2024-03-26 11:29 ` Max Nikulin
-- strict thread matches above, loose matches on Subject: below --
2024-04-17 15:12 copropriete27ruemoret
2024-04-17 15:21 Emmanuel Charpentier
2024-04-17 16:48 ` Ihor Radchenko
2024-04-17 20:04 ` Emmanuel Charpentier
2024-04-17 20:18 ` Ihor Radchenko
2024-04-17 20:41 ` Emmanuel Charpentier
2024-04-18 12:23 ` Emmanuel Charpentier
2024-04-19 11:56 ` Ihor Radchenko
2024-04-19 15:00 ` emm.charpentier
2024-04-20 12:49 ` Max Nikulin
2024-05-02 10:30 ` Ihor Radchenko
2024-07-03 11:23 ` Ihor Radchenko
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).