Is “mon =” of any use in a bibtex file

biberbiblatexbibtexmultibibnatbib

In some of my bibtex entries I see the field mon, e.g.,

@Book{Abrial_96,
  author = {Jean-Raymond Abrial},
  title = {The {B}-Book},
  publisher = "Cambridge University Press",
  year = 2005,
  mon = nov
}

“mon” seems to be an abbreviation of “month”.
Is there any established, well-known package or program that processes the value of mon in a non-ignoring way? I don't recall typing in mon myself (except, hypothetically, to suppress printing out the month but saving the information internally in the source document for the future, though I don't remember such an intention of mine either). I looked into the documentation of certain bibliography-related programs and packages I typically use (bibtex, biblatex, natbib, biber, multibib) but failed to find any reference to “mon”.

Best Answer

It is data that could potentially be used by any bibtex style such as the one below, it does not need a different program.

enter image description here

file.tex

\documentclass{article}

\begin{document}

Something about \cite{Abrial_96}.

\bibliographystyle{month}
%\bibliographystyle{plain}
\bibliography{bbook}

\end{document}

bbook.bib

@Book{Abrial_96,
  author = {Jean-Raymond Abrial},
  title = {The {B}-Book},
  publisher = "Cambridge University Press",
  year = 2005,
  mon = nov
}

month.bst

ENTRY
  { address
    author
    booktitle
    chapter
    edition
    editor
    howpublished
    institution
    journal
    key
    mon
    month
    note
    number
    organization
    pages
    publisher
    school
    series
    title
    type
    volume
    year
  }
  {}
  { label }

INTEGERS { output.state before.all mid.sentence after.sentence after.block }

FUNCTION {init.state.consts}
{ #0 'before.all :=
  #1 'mid.sentence :=
  #2 'after.sentence :=
  #3 'after.block :=
}

STRINGS { s t }
MACRO {nov} {"November"}

FUNCTION {output.nonnull}
{ 's :=
  output.state mid.sentence =
    { ", " * write$ }
    { output.state after.block =
        { add.period$ write$
          newline$
          "\newblock " write$
        }
        { output.state before.all =
            'write$
            { add.period$ " " * write$ }
          if$
        }
      if$
      mid.sentence 'output.state :=
    }
  if$
  s
}

FUNCTION {output}
{ duplicate$ empty$
    'pop$
    'output.nonnull
  if$
}

FUNCTION {output.check}
{ 't :=
  duplicate$ empty$
    { pop$ "empty " t * " in " * cite$ * warning$ }
    'output.nonnull
  if$
}

FUNCTION {output.bibitem}
{ newline$
  "\bibitem{" write$
  cite$ write$
  "}" write$
  newline$
  ""
  before.all 'output.state :=
}

FUNCTION {fin.entry}
{ add.period$
  write$
  newline$
}

FUNCTION {new.block}
{ output.state before.all =
    'skip$
    { after.block 'output.state := }
  if$
}


FUNCTION {not}
{   { #0 }
    { #1 }
  if$
}

FUNCTION {and}
{   'skip$
    { pop$ #0 }
  if$
}

FUNCTION {or}
{   { pop$ #1 }
    'skip$
  if$
}

FUNCTION {new.block.checka}
{ empty$
    'skip$
    'new.block
  if$
}

FUNCTION {new.block.checkb}
{ empty$
  swap$ empty$
  and
    'skip$
    'new.block
  if$
}



FUNCTION {field.or.null}
{ duplicate$ empty$
    { pop$ "" }
    'skip$
  if$
}

FUNCTION {emphasize}
{ duplicate$ empty$
    { pop$ "" }
    { "{\em " swap$ * "}" * }
  if$
}

INTEGERS { nameptr namesleft numnames }


FUNCTION {format.mon}
{ mon empty$
    { "" }
    { "Who cares what year or by who, this was written in " mon *}
  if$
}

FUNCTION {format.btitle}
{ title emphasize
}


FUNCTION {book}
{ output.bibitem
  format.btitle "title" output.check
  format.mon output
  new.block
  fin.entry
}


FUNCTION {begin.bib}
{ 
  "\begin{thebibliography}{99}"  write$ newline$
}

READ

EXECUTE {begin.bib}

EXECUTE {init.state.consts}

ITERATE {call.type$}

FUNCTION {end.bib}
{ newline$
  "\end{thebibliography}" write$ newline$
}

EXECUTE {end.bib}