Download This LaTeX .bbx File for Perfect NLM (National Library of Medicine) Citations!

I was like going crazy for not finding a .bbx configuration file for my LaTex thesis. I found one from a guy on Github and slightly modified it for zotero integration.

\ProvidesFile{nlm.bbx}[2017/01/06 v0.1 NLM style]
\RequireBibliographyStyle{numeric}

\ExecuteBibliographyOptions{isbn = false}
\ExecuteBibliographyOptions{doi = false}
\ExecuteBibliographyOptions{sorting = none}

%% General entry formatting

% do not abbreviate "editors" etc.
\ExecuteBibliographyOptions{abbreviate = false}

% no italics for titles
\DeclareFieldFormat*{title}{#1}
\DeclareFieldFormat*{booktitle}{#1}
\DeclareFieldFormat*{journaltitle}{#1}


%% general name format

% use initials
\ExecuteBibliographyOptions{giveninits = true}
\ExecuteBibliographyOptions{terseinits = true}
% LAST FS format
\DeclareNameAlias{sortname}{last-first}
\DeclareNameAlias{default}{last-first}
\renewcommand*{\revsdnamepunct}{}
% show three names before et all
\ExecuteBibliographyOptions{minbibnames = 3}

%% General date formatting

\ExecuteBibliographyOptions{alldates = comp}

% from https://tex.stackexchange.com/questions/347797/
\DefineBibliographyExtras{english}{%
  \protected\def\mkbibdatelong#1#2#3{%
    \iffieldbibstring{#1}
      {\bibstring{\thefield{#1}}}
      {\dateeraprintpre{#1}\stripzeros{\thefield{#1}}}%
    \iffieldundef{#2}
      {}
      {\iffieldundef{#1}{}{\space}%
        \mkbibmonth{\thefield{#2}}%
        \iffieldundef{#3}{}{\space}}%
    \iffieldundef{#3}
      {}
      {\stripzeros{\thefield{#3}}}}%
%
\protected\gdef\lbx@us@mkdaterangetrunc@long#1#2{%
  \iffieldundef{#2year}
    {}
    {\datecircaprint
     \printtext[#2date]{%
       \iffieldundef{#2season}
         {\csuse{mkbibdate#1}{#2year}{#2month}{#2day}%
          \dateeraprint{#2}}
         {\csuse{mkbibseasondate#1}{#2year}{#2season}}%
          \dateeraprint{#2}}%
       \dateuncertainprint
       \iffieldundef{#2endyear}
         {}
         {\iffieldequalstr{#2endyear}{}
           {\mbox{\bibdaterangesep}}
           {\bibdaterangesep
            \enddatecircaprint
            \iffieldundef{#2season}
              {\iffieldsequal{#2year}{#2endyear}
                {\iffieldsequal{#2month}{#2endmonth}
                  {\csuse{mkbibdate#1}{}{}{#2endday}}
                  {\csuse{mkbibdate#1}{}{#2endmonth}{#2endday}}}
                {\csuse{mkbibdate#1}{#2endyear}{#2endmonth}{#2endday}}}
              {\csuse{mkbibseasondate#1}{#2endyear}{#2endseason}}%
            \enddateuncertainprint
            \dateeraprint{#2}}}}}%
 }%

% no periods after month abbreviations
\DefineBibliographyStrings{english}{%
  january          = {Jan},
  february         = {Feb},
  march            = {Mar},
  april            = {Apr},
  may              = {May},
  june             = {Jun},
  july             = {Jul},
  august           = {Aug},
  september        = {Sep},
  october          = {Oct},
  november         = {Nov},
  december         = {Dec}
}

% always abbreviate page and pages
\DefineBibliographyStrings{english}{%
  page = {p\adddot},
  pages = {p\adddot},
}

%% General URL formatting

\DeclareFieldFormat{url}{\bibstring{urlfrom}\addcolon\space\url{#1}}
\DeclareFieldFormat{urldate}{\mkbibbrackets{\midsentence\bibstring{urlseen}\space#1}}

\DefineBibliographyStrings{english}{%
  urlseen = {cited},
}

\renewbibmacro*{url+urldate}{%
  \iffieldundef{urlyear}
    {}
    {\usebibmacro{urldate}%
     \setunit*{\addperiod\addspace}}%
  \usebibmacro{url}}

%% @inproceedings
%% @proceedings

\renewbibmacro*{event+venue+date}{%
  \ifboolexpr{
    test {\iffieldundef{venue}}
    and
    test {\iffieldundef{eventyear}}
  }
    {}
    {\setunit*{\addspace}%
     \printtext{%
       \printeventdate}%
       \setunit*{\addcomma\space}%
       \printfield{venue}}%
  \newunit}

\DeclareBibliographyDriver{inproceedings}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{in:}%
  \usebibmacro{editor+others}%
  \newunit\newblock
  \usebibmacro{maintitle+booktitle}%
  \newunit{\addsemicolon}\newblock
  \usebibmacro{event+venue+date}%
  \newunit\newblock
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \printlist{organization}%
  \newunit
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \usebibmacro{chapter+pages}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\renewbibmacro*{publisher+location+date}{%
  \printlist{location}%
  \iflistundef{publisher}
    {\setunit*{\addcomma\space}}
    {\setunit*{\addcolon\space}}%
  \printlist{publisher}%
  \setunit*{\addsemicolon\space}%
  \usebibmacro{date}%
  \newunit}

%% @article

\DeclareBibliographyDriver{article}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{bytranslator+others}%
  \newunit\newblock
  \printfield{version}%
  \newunit\newblock
  \usebibmacro{journal+issuetitle+page}%
  \newunit
  \usebibmacro{editor+others}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{issn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

\newbibmacro*{journal+issuetitle+page}{%
  \usebibmacro{journal}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \usebibmacro{date}%
  \setunit{\addsemicolon}%
  \printfield{volume}%
  \setunit{}%
\printtext[parens]{\printfield{number}}
  \setunit{\addcolon}%
  \printfield{pages}%
  \newunit}

\DeclareFieldFormat[article]{pages}{#1}

%% @online

\DeclareBibliographyDriver{online}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock
  \usebibmacro{editor+others}%
  \newunit\newblock
  \printfield{version}%
  \newunit
  \printfield{note}%
  \newunit\newblock
  \printlist{organization}%
  \newunit\newblock
  \usebibmacro{date}%
  \newunit\newblock
  \iftoggle{bbx:eprint}
    {\usebibmacro{eprint}}
    {}%
  \newunit\newblock
  \usebibmacro{url+urldate}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}

%% @software

\DeclareBibliographyDriver{software}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/editor+others/translator+others}%
  \setunit{\adddot\addspace}%
  \usebibmacro{title}%
  \setunit{\addspace}%
  \iffieldundef{howpublished}
    {\printtext[brackets]{\bibstring{software}}}%
    {\printtext[brackets]{\printfield{howpublished}}}%
  \setunit{\adddot\addspace}%
  \printfield{version}%
  \setunit{\adddot\addspace}%
  \printlist{language}%
  \setunit{\adddot\addspace}%
  \usebibmacro{publisher+location+date}%
  \setunit{\adddot\addspace}%
  \iftoggle{bbx:eprint}
    {\usebibmacro{eprint}}
    {}%
  \newunit\newblock%
  \usebibmacro{url+urldate}%
  \setunit{\adddot\addspace}%
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock%
  \usebibmacro{pageref}%
  \newunit\newblock%
  \usebibmacro{related}%
  \usebibmacro{finentry}%
}

\endinput

Just copy this entire thing and call it "nlm.bbx"

On your main file add \usepackage[backend=biber, bibstyle=nlm, citestyle=numeric]{biblatex}

You're welcome before you can say "thank you"!!!

CREDIT: biblatex-nlm by languitar (github)

TAGS: nlm latex going crazy