[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] [PATCH] Override the default class name with a new one.
From: |
Feng Shu |
Subject: |
Re: [O] [PATCH] Override the default class name with a new one. |
Date: |
Fri, 14 Jun 2013 07:55:09 +0800 |
User-agent: |
Gnus/5.130008 (Ma Gnus v0.8) Emacs/24.2 (gnu/linux) |
Feng Shu <address@hidden> writes:
> #+LATEX_CLASS: article
>
> %%output:
>
> \documentclass[11pt]{article}
>
> ...
>
> --------------------------------------
>
> #+LATEX_CLASS: article
> #+LATEX_CLASS_NAME: ctexart
>
> %%output:
>
> \documentclass[11pt]{ctexart}
Hi:
If possible, please merge this patch to master, thanks!
I think it is a way reusing the exist class defines in `org-latex-classes
If your class is similar with a exist one,
For example:
#+begin_example
("article"
"\\documentclass[11pt]{article}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
("ctexart"
"\\documentclass[11pt]{ctexart}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
#+end_example
You don't need to add "ctexart" to `org-latex-classes,
just type:
#+LATEX_CLASS: article
#+LATEX_CLASS_NAME: ctexart
>
> ....
>
> --
>
> From 338ce85c306ae400ba8c62bfaecaf8973346faa0 Mon Sep 17 00:00:00 2001
> From: Feng Shu <address@hidden>
> Date: Thu, 13 Jun 2013 13:36:50 +0800
> Subject: [PATCH] Override the default latex class name with a new one
>
> * lisp/ox-latex.el (latex): Add :latex-class-name to :options-alist.
> (org-latex-default-latex-class-name): The default name of LaTeX class file.
> (org-latex-template): Replace default latex class name with :latex-class-name.
>
> Override the default latex class name in template. It will be very
> useful if you are using a class and it's setting is very similar to
> one which has been defined in the `org-latex-classes, for example:
>
> If you want to use latex class: "ctexart" and you find that it's
> setting will be very similar to "article", you don't need to add a
> new list to `org-latex-classes, just type:
>
> #+LATEX_CLASS: article
> #+LATEX_CLASS_NAME: ctexart
> ---
> lisp/ox-latex.el | 16 ++++++++++++++--
> 1 个文件被修改,插入 14 行(+),删除 2 行(-)
>
> diff --git a/lisp/ox-latex.el b/lisp/ox-latex.el
> index 9172cd7..ecfb0ce 100644
> --- a/lisp/ox-latex.el
> +++ b/lisp/ox-latex.el
> @@ -98,6 +98,7 @@
> (if a (org-latex-export-to-pdf t s v b)
> (org-open-file (org-latex-export-to-pdf nil s v b)))))))
> :options-alist '((:latex-class "LATEX_CLASS" nil org-latex-default-class t)
> + (:latex-class-name "LATEX_CLASS_NAME" nil
> org-latex-default-latex-class-name t)
> (:latex-class-options "LATEX_CLASS_OPTIONS" nil nil t)
> (:latex-header "LATEX_HEADER" nil nil newline)
> (:latex-header-extra "LATEX_HEADER_EXTRA" nil nil newline)
> @@ -182,6 +183,11 @@
> :group 'org-export-latex
> :type '(string :tag "LaTeX class"))
>
> +(defcustom org-latex-default-latex-class-name ""
> + "The default name of LaTeX class file."
> + :group 'org-export-latex
> + :type '(string :tag "LaTeX class"))
> +
> (defcustom org-latex-classes
> '(("article"
> "\\documentclass[11pt]{article}"
> @@ -1061,15 +1067,21 @@ holding export options."
> (format-time-string "%% Created %Y-%m-%d %a %H:%M\n"))
> ;; Document class and packages.
> (let ((class (plist-get info :latex-class))
> + (latex-class-name (plist-get info :latex-class-name))
> (class-options (plist-get info :latex-class-options)))
> (org-element-normalize-string
> (let* ((header (nth 1 (assoc class org-latex-classes)))
> - (document-class-string
> + (document-class-string-tmp
> (and (stringp header)
> (if (not class-options) header
> (replace-regexp-in-string
> "^[ \t]*\\\\documentclass\\(\\(\\[[^]]*\\]\\)?\\)"
> - class-options header t nil 1)))))
> + class-options header t nil 1))))
> + (document-class-string
> + (if (not latex-class-name) document-class-string-tmp
> + (replace-regexp-in-string
> + "^[ \t]*\\\\documentclass\\[[^]]*\\]?{\\(.*\\)}"
> + latex-class-name document-class-string-tmp t nil 1))))
> (if (not document-class-string)
> (user-error "Unknown LaTeX class `%s'" class)
> (org-latex-guess-babel-language
--
Re: [O] [PATCH] Override the default class name with a new one., Nicolas Goaziou, 2013/06/14