emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] LaTeX export problem


From: Thomas S. Dye
Subject: Re: [O] LaTeX export problem
Date: Fri, 21 Sep 2012 11:21:19 -1000

Alexander Vorobiev <address@hidden> writes:

> I tried the new exporter (using today's snapshot of the sources) and
> it produced invalid LaTeX (it calls hypersetup without loading
> hyperref package). It also ignored the #+LaTeX_CLASS: and all the
> #+LaTeX_HEADER:lines in my file. Are there any examples of org files
> which show how to customize the new LaTeX exporter?
>
> Thanks
> Alex

Aloha Alex,

I've been exploring the new exporter with a recent project. I have the
following probably too complex setup that lets me use biblatex in
conjunction with ebib.  I'm also using a customized setup for the Lucida
fonts (packages tsdlucida and lucidabr), which you'll most likely want
to change.

* Org-mode setup                                                   :noexport:
This is a setup for Nicolas Goaziou's new exporter

#+name: setup
#+begin_src emacs-lisp :noweb yes :results silent
    (require 'org-export)
    (require 'org-e-latex)
    (require 'org-e-html)
    (setq org-export-latex-packages-alist nil)
    (add-to-list 'org-export-latex-packages-alist 
'("colorlinks=true,urlcolor=SteelBlue4,linkcolor=Firebrick4,citecolor=Green4" 
"hyperref"))
    (add-to-list 'org-export-latex-packages-alist 
'("style=authoryear-comp,backend=bibtex8" "biblatex"))
    (add-to-list 'org-export-latex-packages-alist '("x11names" "xcolor"))
    (add-to-list 'org-export-latex-packages-alist '("" "microtype"))
    (add-to-list 'org-export-latex-packages-alist '("" "graphicx"))
    (add-to-list 'org-export-latex-packages-alist '("" "ragged2e"))
    (add-to-list 'org-export-latex-packages-alist '("" "booktabs"))
    (add-to-list 'org-export-latex-packages-alist '("" "tabularx"))
    (add-to-list 'org-export-latex-packages-alist '("" "tsdlucida"))
    (add-to-list 'org-export-latex-packages-alist '("" "wasysym"))
    (add-to-list 'org-export-latex-packages-alist '("" "paralist"))
    (add-to-list 'org-export-latex-packages-alist 
'("altbullet,lucidasmallscale,expert,vargreek" "lucidabr"))
    (add-to-list 'org-export-latex-packages-alist '("T1" "fontenc"))
    (add-to-list 'org-export-latex-packages-alist '("AUTO" "inputenc"))
    (setq org-entities-user nil) 
    (add-to-list 'org-entities-user '("space" "\\ " nil " " " " " " " "))
    (add-to-list 'org-entities-user '("amacron" "\\={a}" nil "&#0257" "a" "a" 
"ā"))
    (add-to-list 'org-entities-user '("emacron" "\\={e}" nil "&#0275" "e" "e" 
"ē"))
    (add-to-list 'org-entities-user '("imacron" "\\={i}" nil "&#0299" "i" "i" 
"ī"))
    (add-to-list 'org-entities-user '("omacron" "\\={o}" nil "&#0333" "o" "o" 
"ō"))
    (add-to-list 'org-entities-user '("umacron" "\\={u}" nil "&#0363" "u" "u" 
"ū"))
    (add-to-list 'org-entities-user '("Amacron" "\\={A}" nil "&#0256" "A" "A" 
"Ā"))
    (add-to-list 'org-entities-user '("Emacron" "\\={E}" nil "&#0274" "E" "E" 
"Ē"))
    (add-to-list 'org-entities-user '("Imacron" "\\={I}" nil "&#0298" "I" "I" 
"Ī"))
    (add-to-list 'org-entities-user '("Omacron" "\\={O}" nil "&#0332" "O" "O" 
"Ō"))
    (add-to-list 'org-entities-user '("Umacron" "\\={U}" nil "&#0362" "U" "U" 
"Ū"))
    (setq org-e-latex-pdf-process '("texi2dvi --pdf --clean --verbose --batch 
%f"))
    (require 'org-special-blocks)
    (define-key org-mode-map (kbd "C-c e") 'org-export-dispatch)
    (setq org-e-latex-tables-booktabs t)
    (setq org-export-latex-hyperref-format "\\ref{%s}")
    (setq org-e-latex-remove-logfiles nil)
    (setq org-e-latex-toc-command "\\tableofcontents\n\n")
    (add-to-list 'org-e-latex-classes
                 '("koma-article"
                   "\\documentclass{scrartcl}
      [NO-DEFAULT-PACKAGES]
      [PACKAGES]
      [EXTRA]
      \\let\\itemize\\compactitem
      \\let\\description\\compactdesc
      \\let\\enumerate\\compactenum
      \\bibliography{local}
      \\newcolumntype{Y}{>{\\RaggedRight\\arraybackslash}X}"
                   ("\\section{%s}" . "\\section*{%s}")
                   ("\\subsection{%s}" . "\\subsection*{%s}")
                   ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
                   ("\\paragraph{%s}" . "\\paragraph*{%s}")
                   ("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
    <<ngz-nbsp>>
    <<define-standard-biblatex-commands>>
    <<define-style-specific-biblatex-commands>>
#+end_src

** Standard Biblatex citation commands

#+name: define-standard-biblatex-commands
#+begin_src emacs-lisp :noweb yes :results silent :exports none
  <<define-biblatex-cite-link>>
  <<define-biblatex-cap-cite-link>>
  <<define-biblatex-parencite-link>>
  <<define-biblatex-cap-parencite-link>>
  <<define-biblatex-footcite-link>>
  <<define-biblatex-footcitetext-link>>

#+end_src

#+name: define-biblatex-cite-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "cite" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "cite:" desc)))
           (format "\\cite{%s}" path)
         (format "\\cite[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+end_src

#+name: define-biblatex-cap-cite-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "Cite" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "Cite:" desc)))
           (format "\\Cite{%s}" path)
         (format "\\Cite[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+end_src

#+name: define-biblatex-parencite-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "parencite" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "parencite:" desc)))
           (format "\\parencite{%s}" path)
         (format "\\parencite[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+end_src

#+name: define-biblatex-cap-parencite-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "Parencite" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "Parencite:" desc)))
           (format "\\Parencite{%s}" path)
         (format "\\Parencite[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+end_src

#+name: define-biblatex-footcite-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "footcite" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "footcite:" desc)))
           (format "\\footcite{%s}" path)
         (format "\\footcite[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+end_src

#+name: define-biblatex-footcitetext-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "footcitetext" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "footcitetext:" desc)))
           (format "\\footcitetext{%s}" path)
         (format "\\footcitetext[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+end_src

** Style-specific biblatex commands

#+name: define-style-specific-biblatex-commands
#+begin_src emacs-lisp :noweb yes :results silent :exports none
  <<define-biblatex-textcite-link>>
  <<define-biblatex-cap-textcite-link>>
  <<define-biblatex-smartcite-link>>
  <<define-biblatex-cap-smartcite-link>>
  <<define-biblatex-citestar-link>>
  <<define-biblatex-parencitestar-link>>
  <<define-biblatex-supercite-link>>
  <<define-biblatex-multicite-link>>
#+end_src

#+name: define-biblatex-multicite-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "multicite" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "multicite:" desc)))
           (format "{%s}" path)
         (format "[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
  
#+end_src

#+name: define-biblatex-textcite-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "textcite" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "textcite:" desc)))
           (format "\\textcite{%s}" path)
         (format "\\textcite[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+end_src

#+name: define-biblatex-cap-textcite-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "Textcite" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "Textcite:" desc)))
           (format "\\Textcite{%s}" path)
         (format "\\Textcite[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+end_src

#+name: define-biblatex-smartcite-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "smartcite" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "smartcite:" desc)))
           (format "\\smartcite{%s}" path)
         (format "\\smartcite[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+end_src

#+name: define-biblatex-cap-smartcite-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "Smartcite" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "Smartcite:" desc)))
           (format "\\Smartcite{%s}" path)
         (format "\\Smartcite[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+end_src

#+name: define-biblatex-citestar-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "cite*" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "cite*:" desc)))
           (format "\\cite*{%s}" path)
         (format "\\cite*[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+end_src

#+name: define-biblatex-parencitestar-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "parencite*" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (if (or (not desc) (equal 0 (search "parencite*:" desc)))
           (format "\\parencite*{%s}" path)
         (format "\\parencite*[%s][%s]{%s}"
                 (cadr (split-string desc ";"))
                 (car (split-string desc ";"))  path))))))
#+end_src

#+name: define-biblatex-supercite-link
#+begin_src emacs-lisp :results silent :exports none
  (org-add-link-type 
   "supercite" 'ebib
   (lambda (path desc format)
     (cond
      ((eq format 'html)
       (format "(<cite>%s</cite>)" path))
      ((eq format 'latex)
       (format "\\cite*{%s}" path)))))
#+end_src

** Nicolas Goaziou's filter for non-breaking spaces
#+name: ngz-nbsp
#+begin_src emacs-lisp
(defun ngz-latex-filter-nobreaks (text backend info)
  "Ensure \"_\" are properly handled in Beamer/LaTeX export."
  (when (memq backend '(e-beamer e-latex))
    (replace-regexp-in-string " " "~" text)))
(add-to-list 'org-export-filter-plain-text-functions
             'ngz-latex-filter-nobreaks)
#+end_src
 

The header of my org file looks like this:

#+TITLE:     A Regional Chronology of Leeward North Kohala District, Hawai`i 
Island
#+AUTHOR:    Thomas Dye
#+DATE:   
#+LANGUAGE:  en
#+OPTIONS:   H:3 num:t toc:1 \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
#+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
#+EXPORT_SELECT_TAGS: export
#+EXPORT_EXCLUDE_TAGS: noexport
#+LaTeX_CLASS: koma-article 
#+LaTeX_HEADER: \subtitle{Draft: Not for citation}
#+startup: fnadjust
#+TOC: figures
#+TOC: tables

Currently, I'm exporting with org-export-dispatch, but eventually I'll
tangle the setup into an init.el file and have a makefile that launches
emacs -q so I can be certain nothing in my .emacs has an influence.

Right now, though, I'm quite happy with the new exporter.

hth,
Tom

> On Fri, Sep 21, 2012 at 3:48 AM, Bastien <address@hidden> wrote:
>> Hi Alexander,
>>
>> Alexander Vorobiev <address@hidden> writes:
>>
>>> Could you point us to any documentation on how to switch to the new
>>> exporter?
>>
>> Add contrib/lisp to your load-path.
>>
>> (require 'org-e-latex)
>>
>> then M-x org-export-dispatch RET to get a menu and be able to
>> export to LaTeX from here.
>>
>>> Is the tutorial
>>> http://orgmode.org/worg/org-tutorials/org-latex-export.html still
>>> relevant?
>>
>> No, this tutorial is valid for the current exporter, not for
>> Nicolas exporter.
>>
>> HTH,
>>
>> --
>>  Bastien
>
>

-- 
Thomas S. Dye
http://www.tsdye.com



reply via email to

[Prev in Thread] Current Thread [Next in Thread]