org-mode – ¿Cómo realizar acciones dependientes del backend en la exportación en modo org?

Pregunta:

¿Cómo especifico diferentes acciones para diferentes backends de exportación en modo org?

Para ser más específico, me gustaría exportar una figura en pdf en la exportación de látex, mientras uso un png en la exportación de html (de hecho, una miniatura de png que enlaza con el pdf, si eso es relevante):

#+CAPTION: cation of figure
#+NAME:    myfig
# case export to latex: [[file:./figure.pdf]]
# case export to html:  [[file:./figure.pdf][file:./figure.png]]

Probé macros y esta respuesta , que no funcionó. También hay respuestas sobre casos similares para la exportación de tikz pdf / svg / png como este hilo , que no parecen ser transferibles a mi caso.

Nota: inicialmente publiqué esta pregunta en stackoverflow. Más tarde se me ocurrió que emacs stackexchange es un sitio más apropiado para esta pregunta. Así que lo eliminé en stackoverflow (no hubo respuestas) para volver a publicarlo aquí.

Respuesta:

Finalmente encontré una manera de hacer esto, usando una macro proporcionada por fniessen :

#+MACRO: if-latex-else (eval (if (org-export-derived-backend-p org-export-current-backend 'latex) "$1" "$2"))

Si se usan más / otros backends de exportación que LaTeX y HTML, se puede usar una declaración de condición en su lugar:

#+MACRO: if-latex-html-else (eval (cond ((org-export-derived-backend-p org-export-current-backend 'latex) "$1") ((org-export-derived-backend-p org-export-current-backend 'html) "$2") (t "$3") ))

El uso sería algo como

{{{if-latex-html-else([[file:./figure.pdf]], [[file:./figure.pdf][file:./figure.png]], /Figure *figure.pdf* is supposed to be here/)}}}

No tan corto como un simple cambio, pero sustancialmente mejor que proporcionar LaTeX / HTML / cualquier código nativo para cada figura que se va a incluir.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım