[Tex/LaTex] How to have local package override default package

installingtexinputs

I have an non-root account on a shared server which has an old version of a package available to all users, and I want to use a newer one on my account. I cannot just use $TEXINPUTS, because latex finds the shared version first. How can I get latex to use my version?

I.e. how can I get latex to use the first of these two files:

/home/fgregg/share/texmf/tex/latex/pgf/basiclayer/pgf.sty
/usr/share/texmf/tex/latex/pgf/pgf.sty

Best Answer

By default, local packages are expected to be in ~/texmf, not ~/share/texmf (they are expected to be in ~/Library/texmf on a Mac). So try putting your new version of the package in ~/texmf/tex. This directory should be found first when latex searches for packages.

Furthermore, the local texmf needs to follow the TeX Directory Structure: (you don't need to create all of these directories initially, but you do need to put things in the right places when you add new stuff.)

  •  bibtex directory    This is where bib files and bst files go
     ⁃  bst directory       Put bst files here
     ⁃  bib directory       Put bib files here 
  •  tex directory       This is where new packages go
     ⁃  latex directory     Put latex packages here
     ⁃  plain directory     Put plain tex files here
     ⁃  xelatex directory   Put xelatex specific packages here
     ⁃  xetex  directory    Put plain xetex files here
     ⁃  context directory   Put context files here
     ⁃  generic directory   Put files that are usable with any TeX flavour here
  •  doc directory
     ⁃  put documentation files from packages installed in the tex directory here.
        Putting the documentation files here allows them to be found by the texdoc  
        system.

For example, suppose you have the new package cool-new-package. If it's a latex package, the package will come with (at least) a .sty file, and some documentation files (often a .tex and .pdf version). You would create a directory in ~/texmf/tex/latex called cool-new-package and then put cool-new-package.sty there. You would also create a cool-new-package directory in ~/texmf/doc and put the documentation files there.

Note that in a brand new installation, a local texmf folder is not created and you will need to create one if one doesn't exist.

If you are using a Mac, I have created a standalone script to create the correct folder structure. You can get it here:

The source script is usable on Linux systems too, and is available here: