Answering without full knowledge!
Thank you so much for the reply - your reply gave me several ideas. I think Q1
and Q3 are solved, but I still have no idea how to do Q2 or if it is possible.
Q1, I figured it out and started using it - the {{{n}}} macros are awesome!
2. I was wondering if it is possible use macro expansion for :EXPORT_FILE_NAME:
property of a subtree?
Since macros can be set to expand to arbitrary elisp, I would think this
*should* be possible. I forget the syntax but something like:
#+MACRO: efn (eval (get-export-file-name))
#+BEGIN_SRC emacs-lisp
(defun get-export-file-name ()
(org-element-property :export-file-name (org-element--current-element) ))
#+END_SRC
* some heading
:PROPERTIES
:EXPORT_FILE_NAME: test-me
:END:
will get you somewhat close. I don't understand the org-element api very well
though and it generally takes me a few tries to get this sort of thing right.
With this one, I was actually looking for using macros inside
:EXPORT_FILE_NAME: property. Ultimately what I want to do is:
* some heading
:PROPERTIES:
:EXPORT_FILE_NAME: {{{n('class',1)}}} test-me
:END:
However, it did not work, as the file name became literal {{{n('class',1)}}}
test-me.pdf.
3. Is it possible to create a file link which uses macro? I would like to
create a link to the exported pdf file dynamically. For example, if the value
of :EXPORT_FILE_NAME: is exported, how would I create a link which
automatically link to exported.pdf?
I don't think a macro will do this for you since, if I understand correctly,
macros are not aware of the export target. So probably you would need some
other mechanism to od this.
I figured it out using elisp link:
elisp:(org-open-link-from-string (concat "file:./" (org-entry-get nil
"EXPORT_FILE_NAME") ".pdf"))
Best Regards,
Joon