> On May 19, 2026, at 03:42, Christian Moe <[email protected]> wrote:
>
> Perry Smith <[email protected]> writes:
>
>> From my experimentation, it appears that how exporting (at least
>> during “publishing” is far different than I thought. So, the essence
>> of my question is, where are macros suppose to be defined? I assumed I
>> could define them once before they were used and then use them
>> anywhere but that doesn’t seem to be the case.
>
> You can define global macros in org-export-global-macros.
>
> See (info "(Org)Macro Replacement") /
> https://orgmode.org/manual/Macro-Replacement.html
>
> Macros defined with =#+MACRO:= keywords are defined for that document.
> Org-publish will not remember them for other files. Inclusion is done
> before macro expansion and should work, so my guess is that in some file
> you're trying to invoke a macro that hasn't been included in that file
> (see reply to Paul downthread).
>
> You can also place macros in one or more separate "setup files", which
> can live outside the publishing directory, and include them with
> =#+SETUPFILE: <path/to/setupfile>= in each document. This is really the
> suggested approach for including in-buffer settings like export options,
> though INCLUDE works much the same.
>
> See (info "(Org)Export Settings") /
> https://orgmode.org/manual/Export-Settings.html
>
> Whichever way you include them, your macro definitions can live in files
> outside the publishing directory, or you can exclude the files
> containing them with =:exclude <regexp>= in org-publish-project-alist.
Thank you. I deduced some of what you said but I didn’t know about
org-export-global-macros. I need at least one macro that is the device’s
name defined globally in the top file. org-export-global-macros is the thing
I needed.!!
Curiously I managed to do what I needed to do via a Makefile.
Thank you again…