TITLE: A better system for referencing
DATE: 2018-11-25
AUTHOR: John L. Godlee
====================================================================


For a long time I was using Mendeley as a way of managing papers 
and references. However, the last few months I've found that 
Mendeley has been getting more and more clunky on my laptop, even 
with regular updating, and once or twice even doing an entirely 
fresh install. I also didn't like the idea of things not being in 
my control. After a recent report that I wrote, I got pulled up for 
dodgy referencing, this being because Mendeley is fairly 
inconsistent with how it labels things like author names, issue 
numbers etc.

I write all of my important work in LaTeX, so I generally exported 
my Mendeley reference lists to BibTeX files, so I figured I would 
cut out Mendeley completely and try to just hold my references in 
simple flat .bib files. Here is a sample of my master BibTeX file, 
lib.bib:

    @article{brusa2014,
      author = {Brusa, A. and Bunker, D. E.},
      year = 2014,
      title = {Increasing the precision of canopy closure estimates 
from hemispherical photography: Blue channel analysis and 
under-exposure},
      journal = {Agricultural and Forest Meteorology},
      volume = {195-196},
      number = {},
      pages = {102--107},
      FILE = {~/Documents/papers/brusa_bunker_2014.pdf},
      DOI = { http://dx.doi.org/10.1016/j.agrformet.2014.05.001 }
    }

    @article{williams2017,
      author = {Williams, L. J. and Paquette, A. and 
Cavender-Bares, J. and Messier, C. and Reich, P. B.},
      title = {Spatial complementarity in tree crowns explains 
overyielding in species mixtures},
      year = 2017,
      journal = {Nature Ecology \& Evolution},
      volume = {1},
      number = {},
      pages = {1--7},
      FILE = {~/Documents/papers/williams_2017.pdf},
      DOI = { http://dx.doi.org/10.1038/s41559-016-0063 }
    }

    @article{sahin2016,
      author = {Sahin, C.},
      title ={Comparison and Calibration of Mobile Phone Fisheye 
Lens and Regular Fisheye Lens via Equidistant Model},
      year = 2016,
      journal = {Journal of Sensors},
      volume = {2016},
      number = {  },
      pages = {11},
      FILE = {~/Documents/papers/sahin_2016.pdf},
      DOI = { http://dx.doi.org/10.1155/2016/9379203 }
    }

Whenever I read an article of interest, or want to save any 
reference for that matter, it goes in lib.bib. I normally keep 
notes for the articles I've read in a separate set of files related 
to whatever project I'm working on, so I search those to find 
references that I can't quite remember the details of. Papers are 
all stored in a papers/ directory which gets backed up regularly, 
it's just a flat directory. I suppose I could make it into a 
heirarchy based on theme, but I feel that would get complicated too 
fast, for example, if a paper should be included in two themes, or 
papers should be retro-actively added to emerging themes.

Typing all the BibTeX markup by hand is very laborious. I use Vim 
for text editing and I felt it was time to learn about snippets, 
which are just small chunks of customisable text that can be 
entered into documents by typing a keyword and hitting tab. I use 
the 'SirVer/ultisnips' plugin, which you can find here. An example 
of a .bib snippet that I use to generate an article template:

  [here]: https://github.com/SirVer/ultisnips

    snippet article "Bibtex for article" b
    @article{$1,
      author = {$2},
      title = {$3},
      year = $4,
      journal = {$5},
      volume = {$6},
      number = {$7},
      pages = {${8:1--10}},
      FILE = {~/Documents/papers/$9},
      DOI = { http://dx.doi.org/$10 }
    }
    endsnippet

The $1 codes are placeholders which are filled by the user, these 
placeholders can be quickly traversed using C-l and C-h. Some, like 
the page numbers, contain example text to remind me how to format 
certain inputs. Here is the snippet for a book:

    snippet book "Bibtex for book" b
    @book{$1,
      ${2:author/editor} = {$3},
      title = {$4},
      year = $5,
      publisher = {$6},
      address = {${7:City, Country}}
    }
    endsnippet

Here are the .vimrc settings I have for UltiSnips:

    let g:UltiSnipsExpandTrigger="<tab>"
    let g:UltiSnipsJumpForwardTrigger="<c-l>"
    let g:UltiSnipsJumpBackwardTrigger="<c-h>"

    let g:UltiSnipsEditSplit="vertical"

    let g:UltiSnipsSnippetDirectories=[$HOME.'/.vim/Ultisnips']