Tim Cross writes: > Just FYI for those who don't know, you can use the org-latex-classes > variable to define your own pseudo document classes, possibly using the > DEFAULT_PACKAGES, PACKAGES, EXTRA_PACKAGES macros and other latex > settings. So for example, you can add the babel or other packages you > want and either make that the 'default' class or specify which class you > want with the #+LATEX_CLASS header. I use this quite a bit because then > I don't have to remember which LATEX_HEADER lines to include in the > document, the specific option settings etc. I don't need support for > multilingual documents, but I do have a number of 'special' documents > (such as one with colours, logos and specific fonts for an employer to > match their 'style guide'. I also have ones for generating project > documents, letters, meeting minutes etc. They all use various different > Latex extensions (particularly ones which don't mix well and cannot be > included with other packages).
I agree. `Org-latex-classes' is a very good option for create LaTeX templates, and I have a few classes defined as well. The problem is when you need really long and complex preambles (it is not a problem that most users may have, though). In a recent project (a book) my preamble had about 2000 lines (including macros and environments defined by me, some functions in Lua for LuaTeX, etc.). With long or complex preambles it's a bit awkward to do it in Elisp and org-latex-classes. In that case, I usually write the preamble to an Org document and generate a *.tex file using org-babel-tangle. Then I include that file at the very beginning of my document with an \input macro. On the LaTeX side, there is also the option to create your own sty file: https://tex.stackexchange.com/questions/77/how-to-make-a-standard-preamble-into-a-package As an alternative to #+LaTeX_Header you can also include the preamble in the Org document itself using a LaTeX block: #+NAME: preamble #+begin_src latex :exports none ... a lot of latex code #+end_src and then, in another block with the keyword `:noweb': #+begin_src latex :noweb yes :results raw ,#+LaTeX_Header: <<preamble>> #+end_src (This useful trick came from Charles Berry in this thread: https://orgmode.org/list/225a3d45-0f47-4ffe-8bba-f023cb8c9...@health.ucsd.edu/#r) Best regards, Juan Manuel