[Tex/LaTex] LaTeX, BibTeX and keyword Reference

bibliographiessectioning

Is there a way of preventing LaTeX class article from printing keyword References. Namely, I would like to get LaTeX to print references from my database processed by BibTeX in the regular fashion but I do not word References to appear on the document.

Best Answer

article defines the thebibliography environment to typeset the references as a \section*. Additionally, it also modifies the headers appropriately to denote a *References "section". If you want to completely remove this from your output and just set the bibliography items, you could use

\begingroup
  \makeatletter
  \renewcommand{\@startsection}[6]{}% gobble \section*
  \let\@mkboth\@gobbletwo% gobble \@mkboth
  \makeatother
  \bibliographystyle{plain}
  \bibliography{references}% References in references.bib
\endgroup

The first two command redefinitions (of \@startsection and \@mkboth) just gobbles their arguments. Grouping keeps the redefinition local so you can still use \section (and friends) afterword. A "cleaner" redefinition would be to use

\begingroup
  \renewcommand{\section}[5]{}% gobble \section*{..} and \@mkboth{..}{..}
  \bibliographystyle{plain}
  \bibliography{references}% References in references.bib
\endgroup

Here's the original definition of thebibliography, giving rise to the above redefinitions (I've marked the two commands we want to "remove" via the redefinitions):

\newenvironment{thebibliography}[1]
  {\section*{\refname}%                                       <--- want to remove this
   \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}%  <--- want to remove this
   \list{\@biblabel{\@arabic\c@enumiv}}%
        {\settowidth\labelwidth{\@biblabel{#1}}%
         \leftmargin\labelwidth
         \advance\leftmargin\labelsep
         \@openbib@code
         \usecounter{enumiv}%
         \let\p@enumiv\@empty
         \renewcommand\theenumiv{\@arabic\c@enumiv}}%
   \sloppy
   \clubpenalty4000
   \@clubpenalty \clubpenalty
   \widowpenalty4000%
   \sfcode`\.\@m}
  {\def\@noitemerr
      {\@latex@warning{Empty `thebibliography' environment}}%
   \endlist}

The latter redefinition of \section assumes the 5 arguments (or tokens) absorbed are

  • #1: *
  • #2: \refname (the braces { } are dropped by default)
  • #3: \@mkboth
  • #4: \MakeUppercase\refname
  • #5: \MakeUppercase\refname

and is therefore class-specific. You could even go one step further and redefine it (\section) to do whatever you want as a replacement. For example

\renewcommand{\section}[5]{\par\vspace{20pt}}%

would leave a 20pt vertical space before printing the bibliography entries.

Related Question