emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* is there a macro to have backend-specific behavior?
@ 2018-02-01  9:58 Alan Schmitt
  2018-02-01 12:02 ` Nicolas Goaziou
  2018-03-03 17:33 ` Adonay Felipe Nogueira
  0 siblings, 2 replies; 4+ messages in thread
From: Alan Schmitt @ 2018-02-01  9:58 UTC (permalink / raw)
  To: emacs-orgmode

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

Hello,

Is there a way to define a macro that has different behaviors depending
on export backend? I have macros that use the @@latex:foo@@ syntax, but
in that case I "foo" is supposed to be literal latex.

My use case is this one: I have a link to a custom id, and I want to
export it as [[#id]] in latex and [[file:file.org::#id]] for html
*before* link resolution happens (so that the custom id in the latex
export is substituted with the correct label).

Is this possible?

Thanks,

Alan

-- 
OpenPGP Key ID : 040D0A3B4ED2E5C7
Monthly Athmospheric CO₂, Mauna Loa Obs. 2017-12: 406.82, 2016-12: 404.42

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 528 bytes --]

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

* Re: is there a macro to have backend-specific behavior?
  2018-02-01  9:58 is there a macro to have backend-specific behavior? Alan Schmitt
@ 2018-02-01 12:02 ` Nicolas Goaziou
  2018-02-01 13:46   ` Alan Schmitt
  2018-03-03 17:33 ` Adonay Felipe Nogueira
  1 sibling, 1 reply; 4+ messages in thread
From: Nicolas Goaziou @ 2018-02-01 12:02 UTC (permalink / raw)
  To: Alan Schmitt; +Cc: emacs-orgmode

Hello,

Alan Schmitt <alan.schmitt@polytechnique.org> writes:

> Is there a way to define a macro that has different behaviors depending
> on export backend? I have macros that use the @@latex:foo@@ syntax, but
> in that case I "foo" is supposed to be literal latex.
>
> My use case is this one: I have a link to a custom id, and I want to
> export it as [[#id]] in latex and [[file:file.org::#id]] for html
> *before* link resolution happens (so that the custom id in the latex
> export is substituted with the correct label).
>
> Is this possible?

Could you simply preprocess the document to export with a function doing
the change above? Functions in `org-export-before-parsing-hook' are
called with the back-end as the sole argument.

Regards,

-- 
Nicolas Goaziou

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

* Re: is there a macro to have backend-specific behavior?
  2018-02-01 12:02 ` Nicolas Goaziou
@ 2018-02-01 13:46   ` Alan Schmitt
  0 siblings, 0 replies; 4+ messages in thread
From: Alan Schmitt @ 2018-02-01 13:46 UTC (permalink / raw)
  To: Nicolas Goaziou; +Cc: emacs-orgmode

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

On 2018-02-01 13:02, Nicolas Goaziou <mail@nicolasgoaziou.fr> writes:

>> My use case is this one: I have a link to a custom id, and I want to
>> export it as [[#id]] in latex and [[file:file.org::#id]] for html
>> *before* link resolution happens (so that the custom id in the latex
>> export is substituted with the correct label).
>>
>> Is this possible?
>
> Could you simply preprocess the document to export with a function doing
> the change above? Functions in `org-export-before-parsing-hook' are
> called with the back-end as the sole argument.

Thank you for the suggestion, I think this is the simplest solution.

Best,

Alan

-- 
OpenPGP Key ID : 040D0A3B4ED2E5C7
Monthly Athmospheric CO₂, Mauna Loa Obs. 2017-12: 406.82, 2016-12: 404.42

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 528 bytes --]

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

* Re: is there a macro to have backend-specific behavior?
  2018-02-01  9:58 is there a macro to have backend-specific behavior? Alan Schmitt
  2018-02-01 12:02 ` Nicolas Goaziou
@ 2018-03-03 17:33 ` Adonay Felipe Nogueira
  1 sibling, 0 replies; 4+ messages in thread
From: Adonay Felipe Nogueira @ 2018-03-03 17:33 UTC (permalink / raw)
  To: emacs-orgmode

> Is there a way to define a macro that has different behaviors depending
> on export backend? I have macros that use the @@latex:foo@@ syntax, but
> in that case I "foo" is supposed to be literal latex.

Perhaps this might do something similar  to what you expect:

--8<---------------cut here---------------start------------->8---
#+macro: make-hyperlink-to-custom-id (eval (cond ((org-export-derived-backend-p org-export-current-backend 'html) (concat "[[file:" (buffer-file-name) ":$1]]")) ((org-export-derived-backend-p org-export-current-backend 'latex) "[[$1]]") (t "[[$1]]")))
--8<---------------cut here---------------end--------------->8---

It could have been shorter, some other people might be able to help out.

There is a flaw though, since the branch from the 'html conditional
returns an absolute path, and I don't know if this is what you want, and
it of course refers to the Org mode original document as you asked ---
that is: it won't link to the object in the HTML that actually has that
custom identity.

I hope this helps.

-- 
- https://libreplanet.org/wiki/User:Adfeno
- Palestrante e consultor sobre /software/ livre (não confundir com
  gratis).
- "WhatsApp"? Ele não é livre. Por favor, veja formas de se comunicar
  instantaneamente comigo no endereço abaixo.
- Contato: https://libreplanet.org/wiki/User:Adfeno#vCard
- Arquivos comuns aceitos (apenas sem DRM): Corel Draw, Microsoft
  Office, MP3, MP4, WMA, WMV.
- Arquivos comuns aceitos e enviados: CSV, GNU Dia, GNU Emacs Org, GNU
  GIMP, Inkscape SVG, JPG, LibreOffice (padrão ODF), OGG, OPUS, PDF
  (apenas sem DRM), PNG, TXT, WEBM.

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

end of thread, other threads:[~2018-03-03 17:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-01  9:58 is there a macro to have backend-specific behavior? Alan Schmitt
2018-02-01 12:02 ` Nicolas Goaziou
2018-02-01 13:46   ` Alan Schmitt
2018-03-03 17:33 ` Adonay Felipe Nogueira

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