[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: how to export an org file, to 2 different locations (in to different
From: |
Juan Manuel Macías |
Subject: |
Re: how to export an org file, to 2 different locations (in to different formats) |
Date: |
Sat, 28 May 2022 00:18:18 +0000 |
Juan Manuel Macías writes:
> One (pedestrian) way to achieve it, with this function:
I think it can be done better this way, defining an advice around
'org-export-output-file-name'.
In your org file you should add these two local variables:
# my-latex-export-path: "~/path/to/myfile.tex"
# my-html-export-path "~/path/to/myfile.html"
And this is the define-advice code. It should export to one or another
path/file every
time you export your document to LaTeX or html. I haven't tried it much:
(define-advice org-export-output-file-name (:around (old-func extension &rest
args))
(setq old-func (lambda (extension &optional subtreep pub-dir)
(let* ((visited-file (buffer-file-name (buffer-base-buffer)))
(base-name
(concat
(file-name-sans-extension
(or
;; Check EXPORT_FILE_NAME subtree property.
(and subtreep (org-entry-get nil
"EXPORT_FILE_NAME" 'selective))
;; Check #+EXPORT_FILE_NAME keyword.
(org-with-point-at (point-min)
(catch :found
(let ((case-fold-search t))
(while (re-search-forward
"^[ \t]*#\\+EXPORT_FILE_NAME:[
\t]+\\S-" nil t)
(let ((element (org-element-at-point)))
(when (eq 'keyword (org-element-type
element))
(throw :found
(org-element-property :value
element))))))))
;; Extract from buffer's associated file, if any.
(and visited-file
(file-name-nondirectory
;; For a .gpg visited file, remove the .gpg
extension:
(replace-regexp-in-string "\\.gpg\\'" ""
visited-file)))
;; Can't determine file name on our own: ask user.
(read-file-name
"Output file: " pub-dir nil nil nil
(lambda (n) (string= extension
(file-name-extension n t))))))
extension))
(output-file
;; Build file name. Enforce EXTENSION over whatever
user
;; may have come up with. PUB-DIR, if defined,
always has
;; precedence over any provided path.
(cond
(pub-dir (concat (file-name-as-directory pub-dir)
(file-name-nondirectory
base-name)))
((file-name-absolute-p base-name) base-name)
(t base-name))))
;; If writing to OUTPUT-FILE would overwrite original
file, append
;; EXTENSION another time to final name.
(if (and visited-file (file-equal-p visited-file
output-file))
(concat output-file extension)
output-file))))
(if (and my-latex-export-path my-html-export-path)
(cond ((equal extension ".tex")
my-latex-export-path)
((equal extension ".html")
my-html-export-path))
(apply old-func args)))
Best regards,
Juan Manuel
- how to export an org file, to 2 different locations (in to different formats), Uwe Brauer, 2022/05/27
- Re: how to export an org file, to 2 different locations (in to different formats), Juan Manuel Macías, 2022/05/27
- Re: how to export an org file, to 2 different locations (in to different formats),
Juan Manuel Macías <=
- Re: how to export an org file, to 2 different locations (in to different formats), Uwe Brauer, 2022/05/28
- Re: how to export an org file, to 2 different locations (in to different formats), Juan Manuel Macías, 2022/05/28
- Re: how to export an org file, to 2 different locations (in to different formats), Uwe Brauer, 2022/05/28
- Re: how to export an org file, to 2 different locations (in to different formats), Juan Manuel Macías, 2022/05/28
- Re: how to export an org file, to 2 different locations (in to different formats), Ihor Radchenko, 2022/05/29
Re: how to export an org file, to 2 different locations (in to different formats), Uwe Brauer, 2022/05/28
[ODT?] (was: how to export an org file, to 2 different locations (in to different formats)), Uwe Brauer, 2022/05/28
Re: how to export an org file, to 2 different locations (in to different formats), Nick Dokos, 2022/05/31