forked from mirrors/org-mode
Export back-ends: Install smart quotes module
* contrib/lisp/org-e-ascii.el (org-e-ascii-plain-text): Install smart quotes module. * contrib/lisp/org-e-html.el (org-e-html-plain-text): Install smart quotes module. Fix :preseve-breaks option. (org-e-html--quotation-marks): Remove function. (org-e-html-quotes): Remove variable. * contrib/lisp/org-e-latex.el (org-e-latex-plain-text): Install smart quotes module. (org-e-latex--quotation-marks): Remove function. (org-e-latex-quotes): Remove variable. * contrib/lisp/org-e-odt.el (org-e-odt-plain-text): Install smart quotes module. (org-e-odt--quotation-marks): Remove function. (org-e-odt-quotes): Remove variable. * contrib/lisp/org-md.el (org-md-plain-text): Install smart quotes module. Fix characters escaping. * contrib/lisp/org-e-texinfo.el (org-e-texinfo-center-block, org-e-texinfo-special-block): new functions. (org-e-texinfo-quotes): Remove variable. (org-e-texinfo--quotations-marks): Remove function. (org-e-texinfo-plain-text): Install smart quotes module. * contrib/lisp/org-e-groff.el (org-e-groff-plain-text): Install smart quotes module. Fix line break preservation. (org-e-groff--quotation-marks): Remove function. (org-e-groff-quotes): Remove variable. (org-e-groff-entity): Fix property name. * contrib/lisp/org-e-man.el (org-e-man-entity): Fix property name. (org-e-man-plain-text): Install smart quotes module. Fix line break preservation. (org-e-man-quotes): Remove variable. (org-e-man--quotation-marks): Remove function.
This commit is contained in:
parent
b2047a2565
commit
f04a5bcea1
|
@ -1407,15 +1407,18 @@ contextual information."
|
|||
(defun org-e-ascii-plain-text (text info)
|
||||
"Transcode a TEXT string from Org to ASCII.
|
||||
INFO is a plist used as a communication channel."
|
||||
(let ((utf8p (eq (plist-get info :ascii-charset) 'utf-8)))
|
||||
(when (and utf8p (plist-get info :with-smart-quotes))
|
||||
(setq text (org-export-activate-smart-quotes text :utf-8 info)))
|
||||
(if (not (plist-get info :with-special-strings)) text
|
||||
(setq text (replace-regexp-in-string "\\\\-" "" text))
|
||||
(if (not (eq (plist-get info :ascii-charset) 'utf-8)) text
|
||||
(if (not utf8p) text
|
||||
;; Usual replacements in utf-8 with proper option set.
|
||||
(replace-regexp-in-string
|
||||
"\\.\\.\\." "…"
|
||||
(replace-regexp-in-string
|
||||
"--" "–"
|
||||
(replace-regexp-in-string "---" "—" text))))))
|
||||
(replace-regexp-in-string "---" "—" text)))))))
|
||||
|
||||
|
||||
;;;; Planning
|
||||
|
|
|
@ -430,38 +430,6 @@ language.")
|
|||
|
||||
;;; Plain text
|
||||
|
||||
(defcustom org-e-groff-quotes
|
||||
'(("fr"
|
||||
("\\(\\s-\\|[[(]\\|^\\)\"" . "«~")
|
||||
("\\(\\S-\\)\"" . "~»")
|
||||
("\\(\\s-\\|(\\|^\\)'" . "'"))
|
||||
("en"
|
||||
("\\(\\s-\\|[[(]\\|^\\)\"" . "``")
|
||||
("\\(\\S-\\)\"" . "''")
|
||||
("\\(\\s-\\|(\\|^\\)'" . "`")))
|
||||
"Alist for quotes to use when converting english double-quotes.
|
||||
|
||||
The CAR of each item in this alist is the language code.
|
||||
The CDR of each item in this alist is a list of three CONS:
|
||||
- the first CONS defines the opening quote;
|
||||
- the second CONS defines the closing quote;
|
||||
- the last CONS defines single quotes.
|
||||
|
||||
For each item in a CONS, the first string is a regexp
|
||||
for allowed characters before/after the quote, the second
|
||||
string defines the replacement string for this quote."
|
||||
:group 'org-export-e-groff
|
||||
:type '(list
|
||||
(cons :tag "Opening quote"
|
||||
(string :tag "Regexp for char before")
|
||||
(string :tag "Replacement quote "))
|
||||
(cons :tag "Closing quote"
|
||||
(string :tag "Regexp for char after ")
|
||||
(string :tag "Replacement quote "))
|
||||
(cons :tag "Single quote"
|
||||
(string :tag "Regexp for char before")
|
||||
(string :tag "Replacement quote "))))
|
||||
|
||||
(defcustom org-e-groff-special-char
|
||||
'(("(c)" . "\\\\(co")
|
||||
("(tm)" . "\\\\(tm")
|
||||
|
@ -553,20 +521,6 @@ For non-floats, see `org-e-groff--wrap-label'."
|
|||
;; Standard caption format.
|
||||
(t (format "\\fR%s\\fP" (org-export-data main info))))))
|
||||
|
||||
(defun org-e-groff--quotation-marks (text info)
|
||||
"Export quotation marks depending on language conventions.
|
||||
TEXT is a string containing quotation marks to be replaced. INFO
|
||||
is a plist used as a communication channel."
|
||||
(mapc (lambda(l)
|
||||
(let ((start 0))
|
||||
(while (setq start (string-match (car l) text start))
|
||||
(let ((new-quote (concat (match-string 1 text) (cdr l))))
|
||||
(setq text (replace-match new-quote t t text))))))
|
||||
(cdr (or (assoc (plist-get info :language) org-e-groff-quotes)
|
||||
;; Falls back on English.
|
||||
(assoc "en" org-e-groff-quotes))))
|
||||
text)
|
||||
|
||||
(defun org-e-groff--wrap-label (element output)
|
||||
"Wrap label associated to ELEMENT around OUTPUT, if appropriate.
|
||||
This function shouldn't be used for floats. See
|
||||
|
@ -919,7 +873,7 @@ holding contextual information. See `org-export-data'."
|
|||
"Transcode an ENTITY object from Org to Groff.
|
||||
CONTENTS are the definition itself. INFO is a plist holding
|
||||
contextual information."
|
||||
(let ((ent (org-element-property :utf8 entity))) ent))
|
||||
(org-element-property :utf-8 entity))
|
||||
|
||||
;;; Example Block
|
||||
|
||||
|
@ -1447,24 +1401,27 @@ contextual information."
|
|||
"Transcode a TEXT string from Org to Groff.
|
||||
TEXT is the string to transcode. INFO is a plist holding
|
||||
contextual information."
|
||||
;; Protect
|
||||
(setq text (replace-regexp-in-string
|
||||
(let ((output text))
|
||||
;; Protect various characters.
|
||||
(setq output (replace-regexp-in-string
|
||||
"\\(?:[^\\]\\|^\\)\\(\\\\\\)\\(?:[^%$#&{}~^_\\]\\|$\\)"
|
||||
"$\\" text nil t 1))
|
||||
;; Handle quotation marks
|
||||
(setq text (org-e-groff--quotation-marks text info))
|
||||
"$\\" output nil t 1))
|
||||
;; Activate smart quotes. Be sure to provide original TEXT string
|
||||
;; since OUTPUT may have been modified.
|
||||
(when (plist-get info :with-smart-quotes)
|
||||
(setq output (org-export-activate-smart-quotes output :utf-8 info text)))
|
||||
;; Handle Special Characters
|
||||
(if org-e-groff-special-char
|
||||
(dolist (special-char-list org-e-groff-special-char)
|
||||
(setq text
|
||||
(setq output
|
||||
(replace-regexp-in-string (car special-char-list)
|
||||
(cdr special-char-list) text))))
|
||||
(cdr special-char-list) output))))
|
||||
;; Handle break preservation if required.
|
||||
(when (plist-get info :preserve-breaks)
|
||||
(setq text (replace-regexp-in-string
|
||||
"\\(\\\\\\\\\\)?[ \t]*\n" " \\\\\\\\\n" text)))
|
||||
(setq output (replace-regexp-in-string
|
||||
"\\(\\\\\\\\\\)?[ \t]*\n" ".br\n" output)))
|
||||
;; Return value.
|
||||
text)
|
||||
output))
|
||||
|
||||
;;; Planning
|
||||
|
||||
|
|
|
@ -506,38 +506,6 @@ default we use here encompasses both."
|
|||
:type '(repeat (cons (string :tag "Character")
|
||||
(string :tag "HTML equivalent"))))
|
||||
|
||||
(defcustom org-e-html-quotes
|
||||
'(("fr"
|
||||
("\\(\\s-\\|[[(]\\|^\\)\"" . "« ")
|
||||
("\\(\\S-\\)\"" . " »")
|
||||
("\\(\\s-\\|(\\|^\\)'" . "’"))
|
||||
("en"
|
||||
("\\(\\s-\\|[[(]\\|^\\)\"" . "“")
|
||||
("\\(\\S-\\)\"" . "”")
|
||||
("\\(\\s-\\|(\\|^\\)'" . "‘")))
|
||||
"Alist for quotes to use when converting english double-quotes.
|
||||
|
||||
The CAR of each item in this alist is the language code.
|
||||
The CDR of each item in this alist is a list of three CONS:
|
||||
- the first CONS defines the opening quote;
|
||||
- the second CONS defines the closing quote;
|
||||
- the last CONS defines single quotes.
|
||||
|
||||
For each item in a CONS, the first string is a regexp
|
||||
for allowed characters before/after the quote, the second
|
||||
string defines the replacement string for this quote."
|
||||
:group 'org-export-e-html
|
||||
:type '(list
|
||||
(cons :tag "Opening quote"
|
||||
(string :tag "Regexp for char before")
|
||||
(string :tag "Replacement quote "))
|
||||
(cons :tag "Closing quote"
|
||||
(string :tag "Regexp for char after ")
|
||||
(string :tag "Replacement quote "))
|
||||
(cons :tag "Single quote"
|
||||
(string :tag "Regexp for char before")
|
||||
(string :tag "Replacement quote "))))
|
||||
|
||||
|
||||
;;;; Src Block
|
||||
|
||||
|
@ -1230,20 +1198,6 @@ Replaces invalid characters with \"_\"."
|
|||
(date date)
|
||||
(t (format-time-string "%Y-%m-%d %T %Z")))))
|
||||
|
||||
(defun org-e-html--quotation-marks (text info)
|
||||
"Export quotation marks depending on language conventions.
|
||||
TEXT is a string containing quotation marks to be replaced. INFO
|
||||
is a plist used as a communication channel."
|
||||
(mapc (lambda(l)
|
||||
(let ((start 0))
|
||||
(while (setq start (string-match (car l) text start))
|
||||
(let ((new-quote (concat (match-string 1 text) (cdr l))))
|
||||
(setq text (replace-match new-quote t t text))))))
|
||||
(cdr (or (assoc (plist-get info :language) org-e-html-quotes)
|
||||
;; Falls back on English.
|
||||
(assoc "en" org-e-html-quotes))))
|
||||
text)
|
||||
|
||||
|
||||
|
||||
;;; Template
|
||||
|
@ -2402,19 +2356,23 @@ Possible conversions are set in `org-export-html-protect-char-alist'."
|
|||
"Transcode a TEXT string from Org to HTML.
|
||||
TEXT is the string to transcode. INFO is a plist holding
|
||||
contextual information."
|
||||
(let ((output text))
|
||||
;; Protect following characters: <, >, &.
|
||||
(setq text (org-e-html-encode-plain-text text))
|
||||
;; Handle quotation marks.
|
||||
(setq text (org-e-html--quotation-marks text info))
|
||||
(setq output (org-e-html-encode-plain-text output))
|
||||
;; Handle smart quotes. Be sure to provide original string since
|
||||
;; OUTPUT may have been modified.
|
||||
(when (plist-get info :with-smart-quotes)
|
||||
(setq output (org-export-activate-smart-quotes output :html info text)))
|
||||
;; Handle special strings.
|
||||
(when (plist-get info :with-special-strings)
|
||||
(setq text (org-e-html-convert-special-strings text)))
|
||||
(setq output (org-e-html-convert-special-strings output)))
|
||||
;; Handle break preservation if required.
|
||||
(when (plist-get info :preserve-breaks)
|
||||
(setq text (replace-regexp-in-string "\\(\\\\\\\\\\)?[ \t]*\n" " \\\\\\\\\n"
|
||||
text)))
|
||||
(setq output
|
||||
(replace-regexp-in-string
|
||||
"\\(\\\\\\\\\\)?[ \t]*\n" "<br/>\n" output)))
|
||||
;; Return value.
|
||||
text)
|
||||
output))
|
||||
|
||||
|
||||
;; Planning
|
||||
|
|
|
@ -709,41 +709,6 @@ during latex export it will output
|
|||
\\end{pythoncode}")
|
||||
|
||||
|
||||
;;;; Plain text
|
||||
|
||||
(defcustom org-e-latex-quotes
|
||||
'(("fr"
|
||||
("\\(\\s-\\|[[(]\\|^\\)\"" . "«~")
|
||||
("\\(\\S-\\)\"" . "~»")
|
||||
("\\(\\s-\\|(\\|^\\)'" . "'"))
|
||||
("en"
|
||||
("\\(\\s-\\|[[(]\\|^\\)\"" . "``")
|
||||
("\\(\\S-\\)\"" . "''")
|
||||
("\\(\\s-\\|(\\|^\\)'" . "`")))
|
||||
"Alist for quotes to use when converting english double-quotes.
|
||||
|
||||
The CAR of each item in this alist is the language code.
|
||||
The CDR of each item in this alist is a list of three CONS:
|
||||
- the first CONS defines the opening quote;
|
||||
- the second CONS defines the closing quote;
|
||||
- the last CONS defines single quotes.
|
||||
|
||||
For each item in a CONS, the first string is a regexp
|
||||
for allowed characters before/after the quote, the second
|
||||
string defines the replacement string for this quote."
|
||||
:group 'org-export-e-latex
|
||||
:type '(list
|
||||
(cons :tag "Opening quote"
|
||||
(string :tag "Regexp for char before")
|
||||
(string :tag "Replacement quote "))
|
||||
(cons :tag "Closing quote"
|
||||
(string :tag "Regexp for char after ")
|
||||
(string :tag "Replacement quote "))
|
||||
(cons :tag "Single quote"
|
||||
(string :tag "Regexp for char before")
|
||||
(string :tag "Replacement quote "))))
|
||||
|
||||
|
||||
;;;; Compilation
|
||||
|
||||
(defcustom org-e-latex-pdf-process
|
||||
|
@ -928,20 +893,6 @@ nil."
|
|||
options
|
||||
","))
|
||||
|
||||
(defun org-e-latex--quotation-marks (text info)
|
||||
"Export quotation marks depending on language conventions.
|
||||
TEXT is a string containing quotation marks to be replaced. INFO
|
||||
is a plist used as a communication channel."
|
||||
(mapc (lambda(l)
|
||||
(let ((start 0))
|
||||
(while (setq start (string-match (car l) text start))
|
||||
(let ((new-quote (concat (match-string 1 text) (cdr l))))
|
||||
(setq text (replace-match new-quote t t text))))))
|
||||
(cdr (or (assoc (plist-get info :language) org-e-latex-quotes)
|
||||
;; Falls back on English.
|
||||
(assoc "en" org-e-latex-quotes))))
|
||||
text)
|
||||
|
||||
(defun org-e-latex--wrap-label (element output)
|
||||
"Wrap label associated to ELEMENT around OUTPUT, if appropriate.
|
||||
This function shouldn't be used for floats. See
|
||||
|
@ -1911,36 +1862,41 @@ contextual information."
|
|||
"Transcode a TEXT string from Org to LaTeX.
|
||||
TEXT is the string to transcode. INFO is a plist holding
|
||||
contextual information."
|
||||
(let ((specialp (plist-get info :with-special-strings)))
|
||||
(let ((specialp (plist-get info :with-special-strings))
|
||||
(output text))
|
||||
;; Protect %, #, &, $, ~, ^, _, { and }.
|
||||
(while (string-match "\\([^\\]\\|^\\)\\([%$#&{}~^_]\\)" text)
|
||||
(setq text
|
||||
(replace-match (format "\\%s" (match-string 2 text)) nil t text 2)))
|
||||
(while (string-match "\\([^\\]\\|^\\)\\([%$#&{}~^_]\\)" output)
|
||||
(setq output
|
||||
(replace-match
|
||||
(format "\\%s" (match-string 2 output)) nil t output 2)))
|
||||
;; Protect \. If special strings are used, be careful not to
|
||||
;; protect "\" in "\-" constructs.
|
||||
(let ((symbols (if specialp "-%$#&{}~^_\\" "%$#&{}~^_\\")))
|
||||
(setq text
|
||||
(setq output
|
||||
(replace-regexp-in-string
|
||||
(format "\\(?:[^\\]\\|^\\)\\(\\\\\\)\\(?:[^%s]\\|$\\)" symbols)
|
||||
"$\\backslash$" text nil t 1)))
|
||||
"$\\backslash$" output nil t 1)))
|
||||
;; Activate smart quotes. Be sure to provide original TEXT string
|
||||
;; since OUTPUT may have been modified.
|
||||
(when (plist-get info :with-smart-quotes)
|
||||
(setq output (org-export-activate-smart-quotes output :latex info text)))
|
||||
;; LaTeX into \LaTeX{} and TeX into \TeX{}.
|
||||
(let ((case-fold-search nil)
|
||||
(start 0))
|
||||
(while (string-match "\\<\\(\\(?:La\\)?TeX\\)\\>" text start)
|
||||
(setq text (replace-match
|
||||
(format "\\%s{}" (match-string 1 text)) nil t text)
|
||||
(while (string-match "\\<\\(\\(?:La\\)?TeX\\)\\>" output start)
|
||||
(setq output (replace-match
|
||||
(format "\\%s{}" (match-string 1 output)) nil t output)
|
||||
start (match-end 0))))
|
||||
;; Handle quotation marks.
|
||||
(setq text (org-e-latex--quotation-marks text info))
|
||||
;; Convert special strings.
|
||||
(when specialp
|
||||
(setq text (replace-regexp-in-string "\\.\\.\\." "\\ldots{}" text nil t)))
|
||||
(setq output
|
||||
(replace-regexp-in-string "\\.\\.\\." "\\ldots{}" output nil t)))
|
||||
;; Handle break preservation if required.
|
||||
(when (plist-get info :preserve-breaks)
|
||||
(setq text (replace-regexp-in-string "\\(\\\\\\\\\\)?[ \t]*\n" " \\\\\\\\\n"
|
||||
text)))
|
||||
(setq output (replace-regexp-in-string
|
||||
"\\(\\\\\\\\\\)?[ \t]*\n" " \\\\\\\\\n" output)))
|
||||
;; Return value.
|
||||
text))
|
||||
output))
|
||||
|
||||
|
||||
;;;; Planning
|
||||
|
|
|
@ -205,44 +205,6 @@ during man export."
|
|||
)
|
||||
|
||||
|
||||
|
||||
|
||||
;;; Plain text
|
||||
|
||||
(defcustom org-e-man-quotes
|
||||
'(("fr"
|
||||
("\\(\\s-\\|[[(]\\|^\\)\"" . "«~")
|
||||
("\\(\\S-\\)\"" . "~»")
|
||||
("\\(\\s-\\|(\\|^\\)'" . "'"))
|
||||
("en"
|
||||
("\\(\\s-\\|[[(]\\|^\\)\"" . "``")
|
||||
("\\(\\S-\\)\"" . "''")
|
||||
("\\(\\s-\\|(\\|^\\)'" . "`")))
|
||||
|
||||
"Alist for quotes to use when converting english double-quotes.
|
||||
|
||||
The CAR of each item in this alist is the language code.
|
||||
The CDR of each item in this alist is a list of three CONS:
|
||||
- the first CONS defines the opening quote;
|
||||
- the second CONS defines the closing quote;
|
||||
- the last CONS defines single quotes.
|
||||
|
||||
For each item in a CONS, the first string is a regexp
|
||||
for allowed characters before/after the quote, the second
|
||||
string defines the replacement string for this quote."
|
||||
:group 'org-export-e-man
|
||||
:type '(list
|
||||
(cons :tag "Opening quote"
|
||||
(string :tag "Regexp for char before")
|
||||
(string :tag "Replacement quote "))
|
||||
(cons :tag "Closing quote"
|
||||
(string :tag "Regexp for char after ")
|
||||
(string :tag "Replacement quote "))
|
||||
(cons :tag "Single quote"
|
||||
(string :tag "Regexp for char before")
|
||||
(string :tag "Replacement quote "))))
|
||||
|
||||
|
||||
;;; Compilation
|
||||
|
||||
(defcustom org-e-man-pdf-process
|
||||
|
@ -291,7 +253,6 @@ These are the .aux, .log, .out, and .toc files."
|
|||
|
||||
;;; Internal Functions
|
||||
|
||||
|
||||
(defun org-e-man--caption/label-string (element info)
|
||||
"Return caption and label Man string for ELEMENT.
|
||||
|
||||
|
@ -311,21 +272,6 @@ For non-floats, see `org-e-man--wrap-label'."
|
|||
;; Standard caption format.
|
||||
(t (format "\\fR%s\\fP" (org-export-data main info))))))
|
||||
|
||||
|
||||
|
||||
(defun org-e-man--quotation-marks (text info)
|
||||
"Export quotation marks depending on language conventions.
|
||||
TEXT is a string containing quotation marks to be replaced. INFO
|
||||
is a plist used as a communication channel."
|
||||
(mapc (lambda(l)
|
||||
(let ((start 0))
|
||||
(while (setq start (string-match (car l) text start))
|
||||
(let ((new-quote (concat (match-string 1 text) (cdr l))))
|
||||
(setq text (replace-match new-quote t t text))))))
|
||||
(cdr (or (assoc (plist-get info :language) org-e-man-quotes)
|
||||
;; Falls back on English.
|
||||
(assoc "en" org-e-man-quotes)))) text)
|
||||
|
||||
(defun org-e-man--wrap-label (element output)
|
||||
"Wrap label associated to ELEMENT around OUTPUT, if appropriate.
|
||||
This function shouldn't be used for floats. See
|
||||
|
@ -335,6 +281,7 @@ This function shouldn't be used for floats. See
|
|||
output
|
||||
(concat (format "%s\n.br\n" label) output))))
|
||||
|
||||
|
||||
|
||||
;;; Template
|
||||
|
||||
|
@ -448,7 +395,7 @@ holding contextual information. See `org-export-data'."
|
|||
"Transcode an ENTITY object from Org to Man.
|
||||
CONTENTS are the definition itself. INFO is a plist holding
|
||||
contextual information."
|
||||
(let ((ent (org-element-property :utf8 entity))) ent))
|
||||
(org-element-property :utf-8 entity))
|
||||
|
||||
|
||||
;;; Example Block
|
||||
|
@ -461,6 +408,8 @@ information."
|
|||
example-block
|
||||
(format ".RS\n.nf\n%s\n.fi\n.RE"
|
||||
(org-export-format-code-default example-block info))))
|
||||
|
||||
|
||||
;;; Export Block
|
||||
|
||||
(defun org-e-man-export-block (export-block contents info)
|
||||
|
@ -764,21 +713,21 @@ contextual information."
|
|||
"Transcode a TEXT string from Org to Man.
|
||||
TEXT is the string to transcode. INFO is a plist holding
|
||||
contextual information."
|
||||
;; Protect
|
||||
(setq text (replace-regexp-in-string
|
||||
(let ((output text))
|
||||
;; Protect various chars.
|
||||
(setq output (replace-regexp-in-string
|
||||
"\\(?:[^\\]\\|^\\)\\(\\\\\\)\\(?:[^%$#&{}~^_\\]\\|$\\)"
|
||||
"$\\" text nil t 1))
|
||||
|
||||
;; Handle quotation marks
|
||||
(setq text (org-e-man--quotation-marks text info))
|
||||
|
||||
"$\\" output nil t 1))
|
||||
;; Activate smart quotes. Be sure to provide original TEXT string
|
||||
;; since OUTPUT may have been modified.
|
||||
(when (plist-get info :with-smart-quotes)
|
||||
(setq output (org-export-activate-smart-quotes output :utf-8 info text)))
|
||||
;; Handle break preservation if required.
|
||||
|
||||
(when (plist-get info :preserve-breaks)
|
||||
(setq text (replace-regexp-in-string "\\(\\\\\\\\\\)?[ \t]*\n" " \\\\\\\\\n"
|
||||
text)))
|
||||
(setq output (replace-regexp-in-string "\\(\\\\\\\\\\)?[ \t]*\n" ".br\n"
|
||||
output)))
|
||||
;; Return value.
|
||||
text)
|
||||
output))
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -770,42 +770,6 @@ Images in ODT export' for more information."
|
|||
:version "24.1")
|
||||
|
||||
|
||||
;;;; Plain text
|
||||
|
||||
(defcustom org-e-odt-quotes
|
||||
'(("fr"
|
||||
("\\(\\s-\\|[[(]\\|^\\)\"" . "« ")
|
||||
("\\(\\S-\\)\"" . "» ")
|
||||
("\\(\\s-\\|(\\|^\\)'" . "'"))
|
||||
("en"
|
||||
("\\(\\s-\\|[[(]\\|^\\)\"" . "“")
|
||||
("\\(\\S-\\)\"" . "”")
|
||||
("\\(\\s-\\|(\\|^\\)'" . "‘")
|
||||
("\\(\\S-\\)'" . "’")))
|
||||
"Alist for quotes to use when converting english double-quotes.
|
||||
|
||||
The CAR of each item in this alist is the language code.
|
||||
The CDR of each item in this alist is a list of three CONS:
|
||||
- the first CONS defines the opening quote;
|
||||
- the second CONS defines the closing quote;
|
||||
- the last CONS defines single quotes.
|
||||
|
||||
For each item in a CONS, the first string is a regexp
|
||||
for allowed characters before/after the quote, the second
|
||||
string defines the replacement string for this quote."
|
||||
:group 'org-export-e-odt
|
||||
:type '(list
|
||||
(cons :tag "Opening quote"
|
||||
(string :tag "Regexp for char before")
|
||||
(string :tag "Replacement quote "))
|
||||
(cons :tag "Closing quote"
|
||||
(string :tag "Regexp for char after ")
|
||||
(string :tag "Replacement quote "))
|
||||
(cons :tag "Single quote"
|
||||
(string :tag "Regexp for char before")
|
||||
(string :tag "Replacement quote "))))
|
||||
|
||||
|
||||
;;;; Src Block
|
||||
|
||||
(defcustom org-e-odt-create-custom-styles-for-srcblocks t
|
||||
|
@ -1477,10 +1441,6 @@ holding contextual information. See `org-export-data'."
|
|||
"Transcode an ENTITY object from Org to ODT.
|
||||
CONTENTS are the definition itself. INFO is a plist holding
|
||||
contextual information."
|
||||
;; (let ((ent (org-element-property :latex entity)))
|
||||
;; (if (org-element-property :latex-math-p entity)
|
||||
;; (format "$%s$" ent)
|
||||
;; ent))
|
||||
(org-element-property :utf-8 entity))
|
||||
|
||||
|
||||
|
@ -2609,40 +2569,29 @@ contextual information."
|
|||
(if no-whitespace-filling text
|
||||
(org-e-odt--encode-tabs-and-spaces text)))
|
||||
|
||||
(defun org-e-odt--quotation-marks (text info)
|
||||
"Export quotation marks depending on language conventions.
|
||||
TEXT is a string containing quotation marks to be replaced. INFO
|
||||
is a plist used as a communication channel."
|
||||
(mapc (lambda(l)
|
||||
(let ((start 0))
|
||||
(while (setq start (string-match (car l) text start))
|
||||
(let ((new-quote (concat (match-string 1 text) (cdr l))))
|
||||
(setq text (replace-match new-quote t t text))))))
|
||||
(cdr (or (assoc (plist-get info :language) org-e-odt-quotes)
|
||||
;; Falls back on English.
|
||||
(assoc "en" org-e-odt-quotes))))
|
||||
text)
|
||||
|
||||
(defun org-e-odt-plain-text (text info)
|
||||
"Transcode a TEXT string from Org to ODT.
|
||||
TEXT is the string to transcode. INFO is a plist holding
|
||||
contextual information."
|
||||
(let ((output text))
|
||||
;; Protect &, < and >.
|
||||
(setq text (org-e-odt--encode-plain-text text t))
|
||||
;; Handle quotation marks
|
||||
(setq text (org-e-odt--quotation-marks text info))
|
||||
(setq output (org-e-odt--encode-plain-text output t))
|
||||
;; Handle smart quotes. Be sure to provide original string since
|
||||
;; OUTPUT may have been modified.
|
||||
(setq output (org-export-activate-smart-quotes output :utf-8 info text))
|
||||
;; Convert special strings.
|
||||
(when (plist-get info :with-special-strings)
|
||||
(mapc
|
||||
(lambda (pair)
|
||||
(setq text (replace-regexp-in-string (car pair) (cdr pair) text t nil)))
|
||||
(setq output
|
||||
(replace-regexp-in-string (car pair) (cdr pair) output t nil)))
|
||||
org-e-odt-special-string-regexps))
|
||||
;; Handle break preservation if required.
|
||||
(when (plist-get info :preserve-breaks)
|
||||
(setq text (replace-regexp-in-string
|
||||
"\\(\\\\\\\\\\)?[ \t]*\n" "<text:line-break/>\n" text t)))
|
||||
(setq output (replace-regexp-in-string
|
||||
"\\(\\\\\\\\\\)?[ \t]*\n" "<text:line-break/>\n" output t)))
|
||||
;; Return value.
|
||||
text)
|
||||
output))
|
||||
|
||||
|
||||
;;;; Planning
|
||||
|
|
|
@ -82,14 +82,11 @@
|
|||
(footnote-definition . org-e-texinfo-footnote-definition)
|
||||
(footnote-reference . org-e-texinfo-footnote-reference)
|
||||
(headline . org-e-texinfo-headline)
|
||||
(horizontal-rule . org-e-texinfo-horizontal-rule)
|
||||
(inline-src-block . org-e-texinfo-inline-src-block)
|
||||
(inlinetask . org-e-texinfo-inlinetask)
|
||||
(italic . org-e-texinfo-italic)
|
||||
(item . org-e-texinfo-item)
|
||||
(keyword . org-e-texinfo-keyword)
|
||||
(latex-environment . org-e-texinfo-latex-environment)
|
||||
(latex-fragment . org-e-texinfo-latex-fragment)
|
||||
(line-break . org-e-texinfo-line-break)
|
||||
(link . org-e-texinfo-link)
|
||||
(paragraph . org-e-texinfo-paragraph)
|
||||
|
@ -104,7 +101,6 @@
|
|||
(special-block . org-e-texinfo-special-block)
|
||||
(src-block . org-e-texinfo-src-block)
|
||||
(statistics-cookie . org-e-texinfo-statistics-cookie)
|
||||
(strike-through . org-e-texinfo-strike-through)
|
||||
(subscript . org-e-texinfo-subscript)
|
||||
(superscript . org-e-texinfo-superscript)
|
||||
(table . org-e-texinfo-table)
|
||||
|
@ -113,7 +109,6 @@
|
|||
(target . org-e-texinfo-target)
|
||||
(template . org-e-texinfo-template)
|
||||
(timestamp . org-e-texinfo-timestamp)
|
||||
(underline . org-e-texinfo-underline)
|
||||
(verbatim . org-e-texinfo-verbatim)
|
||||
(verse-block . org-e-texinfo-verse-block))
|
||||
:export-block "TEXINFO"
|
||||
|
@ -359,36 +354,6 @@ in order to mimic default behaviour:
|
|||
;;
|
||||
;; Src Blocks are example blocks, except for LISP
|
||||
|
||||
;;; Plain text
|
||||
|
||||
(defcustom org-e-texinfo-quotes
|
||||
'(("quotes"
|
||||
("\\(\\s-\\|[[(]\\|^\\)\"" . "``")
|
||||
("\\(\\S-\\)\"" . "''")
|
||||
("\\(\\s-\\|(\\|^\\)'" . "`")))
|
||||
"Alist for quotes to use when converting english double-quotes.
|
||||
|
||||
The CAR of each item in this alist is the language code.
|
||||
The CDR of each item in this alist is a list of three CONS:
|
||||
- the first CONS defines the opening quote;
|
||||
- the second CONS defines the closing quote;
|
||||
- the last CONS defines single quotes.
|
||||
|
||||
For each item in a CONS, the first string is a regexp
|
||||
for allowed characters before/after the quote, the second
|
||||
string defines the replacement string for this quote."
|
||||
:group 'org-export-e-texinfo
|
||||
:type '(list
|
||||
(cons :tag "Opening quote"
|
||||
(string :tag "Regexp for char before")
|
||||
(string :tag "Replacement quote "))
|
||||
(cons :tag "Closing quote"
|
||||
(string :tag "Regexp for char after ")
|
||||
(string :tag "Replacement quote "))
|
||||
(cons :tag "Single quote"
|
||||
(string :tag "Regexp for char before")
|
||||
(string :tag "Replacement quote "))))
|
||||
|
||||
;;; Compilation
|
||||
|
||||
(defcustom org-e-texinfo-info-process
|
||||
|
@ -445,18 +410,6 @@ nil."
|
|||
options
|
||||
","))
|
||||
|
||||
(defun org-e-texinfo--quotation-marks (text info)
|
||||
"Export quotation marks using ` and ' as the markers.
|
||||
TEXT is a string containing quotation marks to be replaced. INFO
|
||||
is a plist used as a communication channel."
|
||||
(mapc (lambda(l)
|
||||
(let ((start 0))
|
||||
(while (setq start (string-match (car l) text start))
|
||||
(let ((new-quote (concat (match-string 1 text) (cdr l))))
|
||||
(setq text (replace-match new-quote t t text))))))
|
||||
(cdr org-e-texinfo-quotes))
|
||||
text)
|
||||
|
||||
(defun org-e-texinfo--text-markup (text markup)
|
||||
"Format TEXT depending on MARKUP text markup.
|
||||
See `org-e-texinfo-text-markup-alist' for details."
|
||||
|
@ -790,10 +743,6 @@ holding export options."
|
|||
|
||||
;;; Transcode Functions
|
||||
|
||||
;;; Babel Call
|
||||
;;
|
||||
;; Babel Calls are ignored.
|
||||
|
||||
;;; Bold
|
||||
|
||||
(defun org-e-texinfo-bold (bold contents info)
|
||||
|
@ -803,8 +752,12 @@ contextual information."
|
|||
(org-e-texinfo--text-markup contents 'bold))
|
||||
|
||||
;;; Center Block
|
||||
;;
|
||||
;; Center blocks are ignored
|
||||
|
||||
(defun org-e-texinfo-center-block (center-block contents info)
|
||||
"Transcode a CENTER-BLOCK element from Org to Texinfo.
|
||||
CONTENTS holds the contents of the block. INFO is a plist used
|
||||
as a communication channel."
|
||||
contents)
|
||||
|
||||
;;; Clock
|
||||
|
||||
|
@ -912,10 +865,6 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
|||
(org-e-texinfo--sanitize-content
|
||||
(org-element-property :value fixed-width)))))
|
||||
|
||||
;;; Footnote Definition
|
||||
;;
|
||||
;; Footnote Definitions are ignored.
|
||||
|
||||
;;; Footnote Reference
|
||||
;;
|
||||
|
||||
|
@ -1093,14 +1042,6 @@ holding contextual information."
|
|||
(format (replace-regexp-in-string "%]" "%%]" section-fmt) full-text
|
||||
(concat pre-blanks contents))))))))
|
||||
|
||||
;;; Horizontal Rule
|
||||
;;
|
||||
;; Horizontal rules are ignored
|
||||
|
||||
;;; Inline Babel Call
|
||||
;;
|
||||
;; Inline Babel Calls are ignored.
|
||||
|
||||
;;; Inline Src Block
|
||||
|
||||
(defun org-e-texinfo-inline-src-block (inline-src-block contents info)
|
||||
|
@ -1179,14 +1120,6 @@ CONTENTS is nil. INFO is a plist holding contextual information."
|
|||
((string= key "TINDEX") (format "@tindex %s" value))
|
||||
((string= key "VINDEX") (format "@vindex %s" value)))))
|
||||
|
||||
;;; Latex Environment
|
||||
;;
|
||||
;; Latex environments are ignored
|
||||
|
||||
;;; Latex Fragment
|
||||
;;
|
||||
;; Latex fragments are ignored.
|
||||
|
||||
;;; Line Break
|
||||
|
||||
(defun org-e-texinfo-line-break (line-break contents info)
|
||||
|
@ -1335,25 +1268,30 @@ contextual information."
|
|||
"Transcode a TEXT string from Org to Texinfo.
|
||||
TEXT is the string to transcode. INFO is a plist holding
|
||||
contextual information."
|
||||
;; First protect @, { and }.
|
||||
(let ((output (org-e-texinfo--sanitize-content text)))
|
||||
;; Activate smart quotes. Be sure to provide original TEXT string
|
||||
;; since OUTPUT may have been modified.
|
||||
(when (plist-get info :with-smart-quotes)
|
||||
(setq output
|
||||
(org-export-activate-smart-quotes output :texinfo info text)))
|
||||
;; LaTeX into @LaTeX{} and TeX into @TeX{}
|
||||
(let ((case-fold-search nil)
|
||||
(start 0))
|
||||
(while (string-match "\\(\\(?:La\\)?TeX\\)" text start)
|
||||
(setq text (replace-match
|
||||
(format "@%s{}" (match-string 1 text)) nil t text)
|
||||
(while (string-match "\\(\\(?:La\\)?TeX\\)" output start)
|
||||
(setq output (replace-match
|
||||
(format "@%s{}" (match-string 1 output)) nil t output)
|
||||
start (match-end 0))))
|
||||
;; Handle quotation marks
|
||||
(setq text (org-e-texinfo--quotation-marks text info))
|
||||
;; Convert special strings.
|
||||
(when (plist-get info :with-special-strings)
|
||||
(while (string-match (regexp-quote "...") text)
|
||||
(setq text (replace-match "@dots{}" nil t text))))
|
||||
(while (string-match (regexp-quote "...") output)
|
||||
(setq output (replace-match "@dots{}" nil t output))))
|
||||
;; Handle break preservation if required.
|
||||
(when (plist-get info :preserve-breaks)
|
||||
(setq text (replace-regexp-in-string "\\(\\\\\\\\\\)?[ \t]*\n" " @*\n"
|
||||
text)))
|
||||
;; Return value with @ { and } protected.
|
||||
(org-e-texinfo--sanitize-content text))
|
||||
(setq output (replace-regexp-in-string
|
||||
"\\(\\\\\\\\\\)?[ \t]*\n" " @*\n" output)))
|
||||
;; Return value.
|
||||
output))
|
||||
|
||||
;;; Planning
|
||||
|
||||
|
@ -1439,8 +1377,12 @@ holding contextual information."
|
|||
contents)
|
||||
|
||||
;;; Special Block
|
||||
;;
|
||||
;; Are ignored at the moment
|
||||
|
||||
(defun org-e-texinfo-special-block (special-block contents info)
|
||||
"Transcode a SPECIAL-BLOCK element from Org to Texinfo.
|
||||
CONTENTS holds the contents of the block. INFO is a plist used
|
||||
as a communication channel."
|
||||
contents)
|
||||
|
||||
;;; Src Block
|
||||
|
||||
|
@ -1467,10 +1409,6 @@ contextual information."
|
|||
CONTENTS is nil. INFO is a plist holding contextual information."
|
||||
(org-element-property :value statistics-cookie))
|
||||
|
||||
;;; Strike-Through
|
||||
;;
|
||||
;; Strikethrough is ignored
|
||||
|
||||
;;; Subscript
|
||||
|
||||
(defun org-e-texinfo-subscript (subscript contents info)
|
||||
|
@ -1640,10 +1578,6 @@ information."
|
|||
(format org-e-texinfo-inactive-timestamp-format value))
|
||||
(t (format org-e-texinfo-diary-timestamp-format value)))))
|
||||
|
||||
;;; Underline
|
||||
;;
|
||||
;; Underline is ignored
|
||||
|
||||
;;; Verbatim
|
||||
|
||||
(defun org-e-texinfo-verbatim (verbatim contents info)
|
||||
|
|
|
@ -355,6 +355,8 @@ a communication channel."
|
|||
"Transcode a TEXT string into Markdown format.
|
||||
TEXT is the string to transcode. INFO is a plist holding
|
||||
contextual information."
|
||||
(when (plist-get info :with-smart-quotes)
|
||||
(setq text (org-export-activate-smart-quotes text :html info)))
|
||||
;; Protect ambiguous #. This will protect # at the beginning of
|
||||
;; a line, but not at the beginning of a paragraph. See
|
||||
;; `org-md-paragraph'.
|
||||
|
@ -362,9 +364,7 @@ contextual information."
|
|||
;; Protect ambiguous !
|
||||
(setq text (replace-regexp-in-string "\\(!\\)\\[" "\\\\!" text nil nil 1))
|
||||
;; Protect `, *, _ and \
|
||||
(setq text
|
||||
(replace-regexp-in-string
|
||||
"[`*_\\]" (lambda (rep) (concat "\\\\" (match-string 1 rep))) text))
|
||||
(setq text (replace-regexp-in-string "[`*_\\]" "\\\\\\&" text))
|
||||
;; Handle special strings, if required.
|
||||
(when (plist-get info :with-special-strings)
|
||||
(setq text (org-e-html-convert-special-strings text)))
|
||||
|
|
Loading…
Reference in New Issue