Fix \usepackage{inputenc} in LaTeX export

The option will now reflect the coding system of the file that was
created by exporting the buffer.
This commit is contained in:
Carsten Dominik 2010-01-10 10:18:27 +01:00
parent 35a8ec1537
commit bb488fa3b1
2 changed files with 51 additions and 0 deletions

View File

@ -1,5 +1,8 @@
2010-01-10 Carsten Dominik <carsten.dominik@gmail.com>
* org-latex.el (org-export-latex-fix-inputenc): New function.
(org-export-latex-inputenc-alist): New option.
* org-exp.el (org-export): New key SPC to publish enclosing
subtree.

View File

@ -197,6 +197,21 @@ sectioning list in the cdr."
(string :tag "Closing (unnumbered)"))
(function :tag "Hook computing sectioning"))))))
(defcustom org-export-latex-inputenc-alist nil
"Alist of inputenc coding system names, and what should really be used.
For example, adding an entry
(\"utf8\" . \"utf8x\")
will cause \\usepackage[utf8x]{inputenc} to be used for buffers that
are written as utf8 files."
:group 'org-export-latex
:type '(repeat
(cons
(string :tag "Derived from buffer")
(string :tag "Use this instead"))))
(defcustom org-export-latex-emphasis-alist
'(("*" "\\textbf{%s}" nil)
("/" "\\emph{%s}" nil)
@ -746,6 +761,7 @@ when PUB-DIR is set, use this as the publishing directory."
(run-hooks 'org-export-latex-final-hook)
(or to-buffer (save-buffer))
(org-export-latex-fix-inputenc)
(run-hooks 'org-export-latex-after-save-hook)
(goto-char (point-min))
(or (org-export-push-to-kill-ring "LaTeX")
@ -1991,6 +2007,22 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
(org-if-unprotected
(replace-match "")))))
(defun org-export-latex-fix-inputenc ()
"Set the codingsystem in inputenc to what the buffer is."
(let* ((cs buffer-file-coding-system)
(opt (latexenc-coding-system-to-inputenc cs)))
(when opt
;; Translate if that is requested
(setq opt (or (cdr (assoc opt org-export-latex-inputenc-alist)) opt))
;; find the \usepackage statement and replace the option
(goto-char (point-min))
(while (re-search-forward "\\\\usepackage\\[\\(.*?\\)\\]{inputenc}"
nil t)
(goto-char (match-beginning 1))
(delete-region (match-beginning 1) (match-end 1))
(insert opt))
(save-buffer))))
;;; List handling:
(defun org-export-latex-lists ()
@ -2200,3 +2232,19 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
;; arch-tag: 23c2b87d-da04-4c2d-ad2d-1eb6487bc3ad
;;; org-latex.el ends here
(defun org-export-latex-fix-inputenc ()
"Set the codingsystem in inputenc to what the buffer is."
(let* ((cs buffer-file-coding-system)
(opt (latexenc-coding-system-to-inputenc cs)))
(when opt
;; Translate if that is requested
(setq opt (or (cdr (assoc opt org-export-latex-inputenc-alist) opt)))
;; find the \usepackage statement and replace the option
(goto-char (point-min))
(while (re-search-forward "\\\\usepackage\\[\\(.*?\\)\\]{inputenc}"
nil t)
(goto-char (match-beginning 1))
(delete-region (match-beginning 1) (match-end 1))
(insert opt))
(save-buffer))))