Org-modus: hoe latex binnen ~ ~ te renderen

Dit lijkt een catch-22: ik wil code renderen in een org-modus export (html of latex pdf) waar het onderstaande fragment is gedaan als een ~ codeblok

> (cons 1 nil) \to (1)

geeft in feite \ tot weer als een juiste pijl naar rechts (opbrengsten). Natuurlijk als ik het fragment als inline-latex doe

$> (cons 1 nil) \to (1)$

Ik krijg de juiste juiste pijl naar rechts, maar nu is deze niet in het sans mono-codefont. Wat kan ik doen om mijn cake te eten en te eten?

5
Waarom niet gewoon het Unicode-teken gebruiken? ?
toegevoegd de auteur PythonNut, de bron

2 antwoord

Ik zou een van de volgende gebruiken:

~> (cons 1 nil)~ \to ~(1)~

~> (cons 1 nil) → (1)~
1
toegevoegd
@JeanPierre, zoals je vermoedde, gebruikte ik de TeX-invoermethode, C- \ TeX RET \ tot . Je kunt ook van elders kopiëren en plakken.
toegevoegd de auteur andrewb, de bron
Zou je kunnen uitleggen hoe je het pijlteken invoegt? (invoermethode denk ik)
toegevoegd de auteur jorgepc, de bron

Vanuit de orgmodus handleiding :

U kunt woorden vet ,/italic /, onderstreept , '= verbatim =' en   '~ Code ~', en, indien nodig, '+ doorhalen +'. Tekst in de code en   Woordelijke tekenreeks wordt niet verwerkt voor de syntaxis van de Org-modus, dat is het   woordelijk geëxporteerd.

Indeed ~> (cons 1 nil) \to (1)~ is exported as LaTeX \texttt{> (cons 1 nil) \textbackslash{}to (1)}.

Maar dit suggereert een oplossing voor LaTeX: gebruik een filter om ongedaan te maken de conversie van \ naar \ textbackslash {} .

(defun my-latex-filter-allow-latex-in-code (text backend info)
  "Undo backslash escaping"
  (when (org-export-derived-backend-p backend 'latex)
    (replace-regexp-in-string "textbackslash{}" "" text)))

(add-to-list 'org-export-filter-code-functions
         #'my-latex-filter-allow-latex-in-code)

Het exportfilter kan ook worden uitgebreid voor het afhandelen van html. Hier is een eerste concept waarmee alleen \ tot wordt afgehandeld:

(defun my-filter-allow-latex-in-code (text backend info)
  "Allow LaTeX symbols in code"
  (cond 
   ((org-export-derived-backend-p backend 'latex)
    (replace-regexp-in-string "textbackslash{}" "" text))
   ((org-export-derived-backend-p backend 'html)
    ;; either extend this or find the html export function doing these conversions
    (replace-regexp-in-string "\\\\to" "→" text))))

(add-to-list 'org-export-filter-code-functions
         #'my-filter-allow-latex-in-code)
0
toegevoegd