I am on an Ubuntu system with TeXLive as my TeX-distribution. I would like to write a common style file and include this file in every document. What should the extension of such a file be?

And, another question is: Where should I put this file?

On my computer there is a directory called /etc/texmf/ and there are some relevant files such as:

  1. tex
  2. texdoc

Also, how do I configure Kile with Okular for SyncTeX? That is, I'd like to view the relevant part of my source file on click in the Okular window.

  • 1
    As for the 'where', use this command kpsewhich --var-value=TEXINPUTS: it will return a list of where 'latex' searches for files, etc. It will probably mention one like /home/<user>/texmf, which means you could put personal .sty files in a place like /home/<user>/texmf/tex/latex/, and it will be found. You can do kpsewhich --var-value=BIBINPUTS to do similar things for .bib files, probably ending up with putting your .bib in /home/<user>/texmf/bibtex/bib. The one thing you want to do is make the 'local' tree mimic the system tree in terms of directory structure. – jon Aug 23 '12 at 21:13

Maybe this is a little much for one question. Especially the part about SyncTeX should probably be put in a separate question. Also I can only answer the rest.

To put common commands into a dedicated file, you could either just create a simple mypreamble.tex file and execute \input{mypreamble} to use it. A more sophisticated approach is to write a custom package, i.e. a .sty file. As I described before essentially you only need these two lines:


at the beginning of the .sty file, which give the name of your package (in this case the file should be names mypreamble.sty) and the date of the last changes. It can be loaded with \usepackage{mypreamble}.

In any case you should put the file in a directory where it can be found by tex. Of course you don't want to always copy it to the projects directory. Although there may be other ways, I think the best approach for this kind of style file is to put it in a special directory, like e.g. /home/myname/tex/ and add that directory to the TEXINPUTS environment variable. Where you can do that depends on the window manager or shell you are using. The command line should look something like this:

export TEXINPUTS="$TEXINPUTS:.:/home/myname/tex:"

I had to put this line into ~/.zshrc, but it could also belong into ~/.xinitrc, ~/.bashrc, ~/.profile or others depending on your setup.

  • \input rather than \include for .tex files of commands although .sty (and \usepackage)is better. (\include is really for files with text in like including chapters of a book, and executes \clearpage and checkpoints all counters etc.) – David Carlisle Aug 23 '12 at 20:01
  • @DavidCarlisle: Oh, seems I mixed that up. Thanks for the hint. – bodo Aug 23 '12 at 20:22
  • @canaaerus: I got some LaTeX Warning: "You have requested package but the package provides mypreamble"---How do I rectify this? – user31526 Aug 24 '12 at 13:20
  • @user31526: Make sure that the file name matches the packagename in \ProvidesPackage. So with my example code you need to name the file mypreamble.sty. – bodo Aug 24 '12 at 13:26
  • @canaaerus: New problem "You have requested package but the package provides `mypreamble.sty' – user31526 Aug 24 '12 at 16:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.