emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] Using Buffer name in :include export property


From: Julien Cubizolles
Subject: Re: [O] Using Buffer name in :include export property
Date: Fri, 29 Aug 2014 11:40:07 +0200
User-agent: Gnus/5.130012 (Ma Gnus v0.12) Emacs/24.4.50 (gnu/linux)

Nick Dokos <address@hidden> writes:

> Julien Cubizolles <address@hidden> writes:
>
>> I'm using the following elisp source block in my org files to choose the
>> publication options.
>>
>>   (setq org-publish-project-alist
>>         '(("TeX"
>>            :base-directory "./"
>>            :publishing-directory "./"
>>            :publishing-function org-beamer-publish-to-latex
>>            :exclude ".*"
>>            :latex-class "mpsi_beamer"
>>            :include ("test.org"))
>>           ))
>>
>> I'd like to define it once and for all in my emacs
>> configuration files but I'd need to replace the
>>
>>            :include ("test.org")
>>
>> line with the result of (buffer-name). Is it possible ?
>>
>
> Do you mean buffer-file-name? 

Yes that's better.

> When you publish a project, it does not matter what your current buffer
> is. So why would you want to include the random file that you just
> happen to be visiting?  And what if the buffer is not associated with a
> file at all (so buffer-file-name returns nil)?

> Can you explain what exactly you are trying to do?

I need to export the same org file with different latex classes and
package options. I do so by using different projects for the same file.

> The usual method of splicing in a variable into a list is with
> backquote - see e.g.
>
>           http://thread.gmane.org/gmane.emacs.orgmode/9583/focus=9603
>           
> but I don't think that would work here in any case.

Thanks for the pointer, it works:

--8<---------------cut here---------------start------------->8---
(defun jc-org-publish-project-options ()
  (setq org-publish-project-alist
        `(("TeX"
           :base-directory "./"
           :publishing-directory "./"
           :publishing-function org-beamer-publish-to-latex
           :exclude ".*"
           :latex-class "mpsi_beamer"
           :include , (list (file-name-nondirectory buffer-file-name))
           )
          ( several other projects...)
          )))

(add-hook 'org-mode-hook 'jc-org-publish-project-options)
(add-hook 'org-export-before-processing-hook 'jc-org-publish-project-options)
--8<---------------cut here---------------end--------------->8---

I'm not sure file-name-nondirectory is necessary. As you can see I need
to hook this function twice:

 - the org-mode-hook is so that the project names are available in any
   org file
 - the org-export-before-processing-hook is to adapt the :include option
   to each org file before export.

That's not very elegant, if someone has any idea.

Julien.




reply via email to

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