I have a lot of .cls, .sty, .bst files, and I want to put them in a folder to keep my project uncluttered. But my project is not finding them to compile correctly.

The good news is that we can specify custom TEXINPUTS directories using the latexmkrc file, so that Overleaf knows it needs to search in that directory for the package files.

To do this (let's say you've put these package files in a folder called tex:

  1. Click on “Add file” on the top of the Project side bar.
  2. Select “Blank file”, and save the file name as latexmkrc (if it's not already there).
  3. Put the following line in latexmkrc:
    $ENV{'TEXINPUTS'}='./tex//:' . $ENV{'TEXINPUTS'}; 
    (or change to the relevant folder name in your project)

Overleaf will now search the tex folder first before searching the system TEXINPUTS to locate package files.