emacs-orgmode
[Top][All Lists]

Re: [O] limitation for macro expansion

 From: Nicolas Goaziou Subject: Re: [O] limitation for macro expansion Date: Mon, 06 Mar 2017 09:22:35 +0100 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux)

Hello,

> Ah, you mean the parser is unable to distinguish the macro and
> subscript?

It's not the parser, but the syntax. Subscript is

a_{...}

whereas macro is

{{{macro(...)}}}

so, when you see

a_{{{something}}}

there are two ways to interpret it: the one you expect and

a_{CONTENTS} where CONTENTS is {{something}}.

Since subscript syntax started first, it has precedence over the macro.

> Doesn't seems to work.  When I export 'a_{{{{author}}}}', it
> generates:
>
>   a_{Yasushi SHOJI}
>
> I was expecting to see:
>
>   a_Yasushi SHOJI

This is correct if you use ascii' back-end. How could you tell the
difference between

a_{Yasushi SHOJI}

and

a_Yasushi SHOJI

otherwise?

OTOH, latex' back-end produces

a$$_{\text{Yasushi SHOJI}}$$

which means the parser and the export process correctly handle it.

>>
>> Indeed. This kind of link is not supported as you cannot follow it
>> (macros are an export-only feature).
>
> Hmm, that's true that you can't follow it.
>
> Would it be OK to say that it's a design decision to ignore the macro
> expansion in the link field at export time?

It is. Actually, macros are not allowed in many places, as a design
decision. See

(info "(org) Macro replacement")

for more details.

>> Feel free to provide a documentation patch if you think this needs to be
>
> Will do once I fully understand.
>
> Now, what I'm trying to achieve with a macro is to generate a
> filename-like string with a timestamp in it in my doc.
>
> ie)
>
>   #+MACRO: timestamp {{{date(%Y%m%d)}}}
>
>
> Would it be possible for org to do this?

You could try

#+MACRO: timestamp {{{time(%Y%m%d)}}}

> If not, would it be possible for me to modify the code to achieve this?
> My stupid idea is to:
>
>   - disable sub / superscript parser when org-use-sub-superscripts is nil

See org-export-with-sub-superscripts'.

>   - reverse the precedence order of subscript and macro

This would only move the problem elsewhere.

Regards,

--
Nicolas Goaziou                                                0x80A93738

`