emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Cannot get the EXPORT_FILE_NAME override to work
@ 2017-05-04 15:30 Kaushal Modi
  2017-05-04 15:36 ` Kaushal Modi
  2017-05-04 16:40 ` Nick Dokos
  0 siblings, 2 replies; 7+ messages in thread
From: Kaushal Modi @ 2017-05-04 15:30 UTC (permalink / raw)
  To: emacs-org list

[-- Attachment #1: Type: text/plain, Size: 823 bytes --]

Hello,

I am trying to use the EXPORT_FILE_NAME property for the first time, but it
is not working.

Here is the MWE:

===== override-export-file-name.org =====
#+TITLE: Test overriding of export file name

* Heading 1
:PROPERTIES:
:EXPORT_FILE_NAME: foo
:END:
I want to name the exported file as =foo.=(something). If I export to HTML,
it should be named =foo.html=.
=====

I am using emacs and org version built from master today.

Attempt 1: Export the whole file using C-c C-e h h. But
override-export-file-name.html gets created instead of foo.html.

Attempt 2: Select just the Heading 1 subtree, narrow to it, and export that
using C-c C-e h h. Again override-export-file-name.html gets created
instead of foo.html.

So when does the EXPORT_FILE_NAME property work? What am I doing wrong?

Thanks.

-- 

Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 1286 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Cannot get the EXPORT_FILE_NAME override to work
  2017-05-04 15:30 Cannot get the EXPORT_FILE_NAME override to work Kaushal Modi
@ 2017-05-04 15:36 ` Kaushal Modi
  2017-05-04 16:40 ` Nick Dokos
  1 sibling, 0 replies; 7+ messages in thread
From: Kaushal Modi @ 2017-05-04 15:36 UTC (permalink / raw)
  To: emacs-org list

[-- Attachment #1: Type: text/plain, Size: 1412 bytes --]

Here's the motive for this question.

I am working on this project ( https://github.com/kaushalmodi/eless ) that
is basically a bash script.

I have eless.org and am tangling the bash script eless from that, plus all
the documentation (HTML, Info, README.md, CONTRIBUTING.md, etc.). The
publish project alist is here:
https://github.com/kaushalmodi/eless/blob/master/build/build.el

If EXPORT_FILE_NAME starting working for me, I would not need these
completion functions for publish that just do the file renaming:

(defun eless/readme-completion-fn (proj-plist)
  (let* ((pub-dir (plist-get proj-plist :publishing-directory))
         (before-name (concat pub-dir "eless.md"))
         (after-name (concat pub-dir "README.md")))
    (rename-file before-name after-name :ok-if-already-exists)))

(defun eless/contributing-completion-fn (proj-plist)
  (let* ((pub-dir (plist-get proj-plist :publishing-directory))
         (before-name (concat pub-dir "eless.md"))
         (after-name (concat pub-dir "CONTRIBUTING.md")))
    (rename-file before-name after-name :ok-if-already-exists)))

(defun eless/wiki-tcsh-completion-fn (proj-plist)
  (let* ((pub-dir (plist-get proj-plist :publishing-directory))
         (before-name (concat pub-dir "eless.md"))
         (after-name (concat pub-dir "Example eless Config in tcsh.md")))
    (rename-file before-name after-name :ok-if-already-exists)))

-- 

Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 2193 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Cannot get the EXPORT_FILE_NAME override to work
  2017-05-04 15:30 Cannot get the EXPORT_FILE_NAME override to work Kaushal Modi
  2017-05-04 15:36 ` Kaushal Modi
@ 2017-05-04 16:40 ` Nick Dokos
  2017-05-04 17:02   ` Kaushal Modi
  1 sibling, 1 reply; 7+ messages in thread
From: Nick Dokos @ 2017-05-04 16:40 UTC (permalink / raw)
  To: emacs-orgmode

Kaushal Modi <kaushal.modi@gmail.com> writes:

> Hello,
>
> I am trying to use the EXPORT_FILE_NAME property for the first time, but it is not working.
>
> Here is the MWE:
>
> ===== override-export-file-name.org =====
> #+TITLE: Test overriding of export file name
>
> * Heading 1
> :PROPERTIES:
> :EXPORT_FILE_NAME: foo
> :END:
> I want to name the exported file as =foo.=(something). If I export to HTML, it should be named =foo.html
> =.
> =====
>
> I am using emacs and org version built from master today.
>
> Attempt 1: Export the whole file using C-c C-e h h. But override-export-file-name.html gets created
> instead of foo.html.
>
That does not work: you have to set #+EXPORT_FILE_NAME: foo for that.

> Attempt 2: Select just the Heading 1 subtree, narrow to it, and export that using C-c C-e h h. Again
> override-export-file-name.html gets created instead of foo.html.
>

I don't know how narrowing interacts with export but the following

   C-c C-e C-s h h

works (assuming you are in the correct subtree at the time).

> So when does the EXPORT_FILE_NAME property work? What am I doing wrong?
>
> Thanks.
>
> --
>
> Kaushal Modi
>

-- 
Nick

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Cannot get the EXPORT_FILE_NAME override to work
  2017-05-04 16:40 ` Nick Dokos
@ 2017-05-04 17:02   ` Kaushal Modi
  2017-05-04 17:33     ` Nick Dokos
  0 siblings, 1 reply; 7+ messages in thread
From: Kaushal Modi @ 2017-05-04 17:02 UTC (permalink / raw)
  To: Nick Dokos, emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 3867 bytes --]

On Thu, May 4, 2017 at 12:41 PM Nick Dokos <ndokos@gmail.com> wrote:

> That does not work: you have to set #+EXPORT_FILE_NAME: foo for that.
>

That works.

But the node property should also have worked:

In (org) Export settings:

When exporting only a subtree, each of the previous keywords(4) can
be overridden locally by special node properties.  These begin with
‘EXPORT_’, followed by the name of the keyword they supplant, unless the
keyword already beging with ‘EXPORT_’.  For example, ‘DATE’ and
‘EXPORT_FILE_NAME’ keywords become, respectively, ‘EXPORT_DATE’ and
‘EXPORT_FILE_NAME’ properties.



> I don't know how narrowing interacts with export but the following
>
>    C-c C-e C-s h h
>
> works (assuming you are in the correct subtree at the time).
>

I tried with narrowing and that works.

=====
#+TITLE: Test overriding of export file name
# Below works
#+EXPORT_FILE_NAME: baz

* Heading 1
:PROPERTIES:
:EXPORT_FILE_NAME: foo
:END:
# Above override does not work
I want to name the exported file as =foo.=(something). If I export to HTML,
it should be named =foo.html=.
#+EXPORT_FILE_NAME: hd2
* Heading 2
Stuff in heading 2
=====

I narrowed down to

=====
#+EXPORT_FILE_NAME: hd2
* Heading 2
Stuff in heading 2
=====

And that exported to hd2.html.. But this does not fit my requirement.. I
need to specify the export file name to be different for different
subtrees. So that publishing the whole project "eless-all" would put stuff
in their correct files in one go:

(setq org-publish-project-alist
      `(;; HTML
        ("eless-html"
         :base-directory ,eless-root-dir
         :with-tags nil
         :exclude-tags ("noexport" "readme" "wiki")
         :publishing-function org-html-publish-to-html
         :publishing-directory ,eless-doc-dir)
        ;; Info
        ("eless-info"
         :base-directory ,eless-root-dir
         :with-tags nil
         :exclude-tags ("noexport" "readme" "wiki")
         :publishing-function org-texinfo-publish-to-texinfo
         :publishing-directory ,eless-doc-dir
         :completion-function my/org-texinfo-publish-to-info)

        ;; eless script
        ("eless-tangle"
         :base-directory ,eless-root-dir
         :publishing-function org-babel-tangle-publish
         :publishing-directory ,eless-root-dir)

        ;; README.md
        ("eless-readme"
         :base-directory ,eless-root-dir
         :with-toc nil
         :with-tags nil
         :select-tags ("readme")     ;Cannot have hyphens in tags!
         :publishing-function org-gfm-publish-to-gfm
         :publishing-directory ,eless-root-dir
         :completion-function eless/readme-completion-fn)

        ;; CONTRIBUTING.md
        ("eless-contributing"
         :base-directory ,eless-root-dir
         :with-toc nil
         :with-tags nil
         :select-tags ("contributing")     ;Cannot have hyphens in tags!
         :publishing-function org-gfm-publish-to-gfm
         :publishing-directory ,eless-root-dir
         :completion-function eless/contributing-completion-fn)

        ;; Wiki Pages
        ("eless-wiki-tcsh"
         :base-directory ,eless-root-dir
         :with-toc nil
         :with-tags nil
         :select-tags ("wikitcsh")     ;Cannot have hyphens in tags!
         :publishing-function org-gfm-publish-to-gfm
         :publishing-directory ,eless-wiki-dir
         :completion-function eless/wiki-tcsh-completion-fn)
        ("eless-wiki"
         :components ("eless-wiki-tcsh"))

        ("eless-all-docs"
         :components ("eless-html" "eless-info"
                      "eless-readme" "eless-contributing" "eless-wiki"))

        ("eless-all"
         :components ("eless-all-docs" "eless-tangle"))))


-- 

Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 5946 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Cannot get the EXPORT_FILE_NAME override to work
  2017-05-04 17:02   ` Kaushal Modi
@ 2017-05-04 17:33     ` Nick Dokos
  2017-05-04 18:28       ` Kaushal Modi
  0 siblings, 1 reply; 7+ messages in thread
From: Nick Dokos @ 2017-05-04 17:33 UTC (permalink / raw)
  To: emacs-orgmode

Kaushal Modi <kaushal.modi@gmail.com> writes:


>>     I don't know how narrowing interacts with export but the following
>>    
>>       C-c C-e C-s h h
>>     works (assuming you are in the correct subtree at the time).
>>

I meant that this works with the property set in the subtree.

> ...
> And that exported to hd2.html.. But this does not fit my requirement.. I need to specify the export file
> name to be different for different subtrees.

So add the EXPORT_FILE_NAME property to each subtree, and then do

  C-c C-e C-s h h

*for each subtree of interest*. You could probably org-map your way
through the subtrees and export each one by calling

   (org-export-as 'html t)

N.B. the subtreep setting in this call.

-- 
Nick

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Cannot get the EXPORT_FILE_NAME override to work
  2017-05-04 17:33     ` Nick Dokos
@ 2017-05-04 18:28       ` Kaushal Modi
  2017-05-04 19:56         ` Kaushal Modi
  0 siblings, 1 reply; 7+ messages in thread
From: Kaushal Modi @ 2017-05-04 18:28 UTC (permalink / raw)
  To: Nick Dokos, emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 848 bytes --]

On Thu, May 4, 2017 at 1:34 PM Nick Dokos <ndokos@gmail.com> wrote:

> I meant that this works with the property set in the subtree.
>

Ah, I understand now.

So add the EXPORT_FILE_NAME property to each subtree, and then do
>
>   C-c C-e C-s h h
>
> *for each subtree of interest*.


Got it. So the EXPORT_FILE_NAME property is exclusive to subtree scope
exporting. Even though a tag is present on only one subtree, exporting by
selecting that tag will not do the same thing. (I assumed, hoped that would
happen :))


> You could probably org-map your way
> through the subtrees and export each one by calling
>
>    (org-export-as 'html t)
>
> N.B. the subtreep setting in this call.
>

org-map is a golden suggestion! I'll dive into that.

All said, looks like ox-publish misses an ":export_file_name" option. Don't
you think?
-- 

Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 1577 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: Cannot get the EXPORT_FILE_NAME override to work
  2017-05-04 18:28       ` Kaushal Modi
@ 2017-05-04 19:56         ` Kaushal Modi
  0 siblings, 0 replies; 7+ messages in thread
From: Kaushal Modi @ 2017-05-04 19:56 UTC (permalink / raw)
  To: Nick Dokos, emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1407 bytes --]

>
> On Thu, May 4, 2017 at 1:34 PM Nick Dokos <ndokos@gmail.com> wrote:
>
>> You could probably org-map your way
>> through the subtrees and export each one by calling
>>
>>    (org-export-as 'html t)
>>
>> N.B. the subtreep setting in this call.
>
>
Thanks for the tip. I ended up with this:

(let ((subtree-tags-to-export '("readme" "contributing"
                                "wikitcsh"))
      ;; If a subtree matches a tag, do not try to export further
      ;; subtrees separately that could be under that.
      (org-use-tag-inheritance nil)
      (org-export-with-toc nil)  ;Do not export TOC
      (org-export-with-tags nil)) ;Do not print tag names in exported files
  (dolist (tag subtree-tags-to-export)
    (let* ((exported-file-list (org-map-entries
'(org-gfm-export-to-markdown nil :subtreep) tag))
           ;; The assumption is that for each tag, *only* one file is
exported
           (exported-file (when exported-file-list
                            (car exported-file-list))))
      (when (string-match-p "\\`wiki.+" tag) ;Move the wiki files to the
correct directory
        (rename-file (expand-file-name exported-file eless-root-dir)
                     (expand-file-name exported-file eless-wiki-dir)
                     :ok-if-already-exists)))))

https://github.com/kaushalmodi/eless/blob/4c4aea14f7293b25644d48ebf90dbc68cf1b3654/build/build.el#L88-L104

-- 

Kaushal Modi

[-- Attachment #2: Type: text/html, Size: 2466 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-05-04 19:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-04 15:30 Cannot get the EXPORT_FILE_NAME override to work Kaushal Modi
2017-05-04 15:36 ` Kaushal Modi
2017-05-04 16:40 ` Nick Dokos
2017-05-04 17:02   ` Kaushal Modi
2017-05-04 17:33     ` Nick Dokos
2017-05-04 18:28       ` Kaushal Modi
2017-05-04 19:56         ` Kaushal Modi

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).