Juan Manuel Macías <maciasch...@posteo.net> writes:
> 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) > Yes, I do pretty much the same. I have a number of personal *.sty files which contain a lot of additional setup information which would be difficult to include directly in org-latex-classes. I have also used the idea of latex blocks and tangling, especially when working out the details for a specific latex configuration. Once I have it working, unless this is strictly a 'one off', I will typically move that information into a *.sty file or similar. I also use a couple of templates via either company or yasnipet which I use for some org documents which have a 'standard' outline and header setup. I find the combination of these techniques makes it easy to create new documents and maintain existing ones. I have a terrible memory for the low level configuration stuff, so the more I can rely on pre-defined configurations, the better. The nice thing about how I have things setup now is that it seems pretty robust. I rarely encounter any problems when updating org and am able to get 'up and running' on a new system fairly quickly. The biggest challenge I've had lately has been my move from my own standard configuration to using spacemacs. It has taken a bit of work to get spacemacs to work the way I want, but I have grown to love the modal editing of evil mode (probably because VI was my first editor). I'm now very happy with my configuration and workflow. -- Tim Cross