From 6635b72356192c3b0be500984b327d0b4ebd8e2b Mon Sep 17 00:00:00 2001 From: TEC Date: Wed, 4 May 2022 18:53:10 +0800 Subject: [PATCH 02/13] ox-latex: Refactor `org-latex-inline-src-block' * lisp/ox-latex.el (org-latex-inline-src-block, org-latex-inline-src-block--minted, org-latex-inline-src-block--listings): Extract the minted and listings specific logic out of `org-latex-inline-src-block` into the new functions `org-latex-inline-src-block--minted` and `org-latex-inline-src-block--listings`. --- lisp/ox-latex.el | 62 +++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el index c2f728a1c..38f36a1f3 100644 --- a/lisp/ox-latex.el +++ b/lisp/ox-latex.el @@ -2127,36 +2127,38 @@ (defun org-latex-inline-src-block (inline-src-block _contents info) "Transcode an INLINE-SRC-BLOCK element from Org to LaTeX. CONTENTS holds the contents of the item. INFO is a plist holding contextual information." - (let* ((code (org-element-property :value inline-src-block)) - (separator (org-latex--find-verb-separator code))) - (cl-case (plist-get info :latex-listings) - ;; Do not use a special package: transcode it verbatim, as code. - ((nil) (org-latex--text-markup code 'code info)) - ;; Use minted package. - (minted - (let* ((org-lang (org-element-property :language inline-src-block)) - (mint-lang (or (cadr (assq (intern org-lang) - (plist-get info :latex-minted-langs))) - (downcase org-lang))) - (options (org-latex--make-option-string - (plist-get info :latex-minted-options)))) - (format "\\mintinline%s{%s}{%s}" - (if (string= options "") "" (format "[%s]" options)) - mint-lang - code))) - ;; Use listings package. - (otherwise - ;; Maybe translate language's name. - (let* ((org-lang (org-element-property :language inline-src-block)) - (lst-lang (or (cadr (assq (intern org-lang) - (plist-get info :latex-listings-langs))) - org-lang)) - (options (org-latex--make-option-string - (append (plist-get info :latex-listings-options) - `(("language" ,lst-lang)))))) - (concat (format "\\lstinline[%s]" options) - separator code separator)))))) - + (let ((code (org-element-property :value inline-src-block)) + (lang (org-element-property :language inline-src-block))) + (pcase (plist-get info :latex-listings) + ('nil (org-latex--text-markup code 'code info)) + ('minted (org-latex-inline-src-block--minted info code lang)) + (_ (org-latex-inline-src-block--listings info code lang))))) + +(defun org-latex-inline-src-block--minted (info code lang) + "Transcode an inline src block's content from Org to LaTeX, using minted. +INFO, CODE, and LANG are provided by `org-latex-inline-src-block'." + (let ((mint-lang (or (cadr (assq (intern lang) + (plist-get info :latex-minted-langs))) + (downcase lang))) + (options (org-latex--make-option-string + (plist-get info :latex-minted-options)))) + (format "\\mintinline%s{%s}{%s}" + (if (string= options "") "" (format "[%s]" options)) + mint-lang + code))) + +(defun org-latex-inline-src-block--listings (info code lang) + "Transcode an inline src block's content from Org to LaTeX, using lstlistings. +INFO, CODE, and LANG are provided by `org-latex-inline-src-block'." + (let* ((lst-lang (or (cadr (assq (intern lang) + (plist-get info :latex-listings-langs))) + lang)) + (separator (org-latex--find-verb-separator code)) + (options (org-latex--make-option-string + (append (plist-get info :latex-listings-options) + `(("language" ,lst-lang)))))) + (concat (format "\\lstinline[%s]" options) + separator code separator))) ;;;; Inlinetask -- 2.35.3