[Tex/LaTex] alternative bibliography with specific entries, without assuming a global bibliography

bibliographiesbibtexmultibibsubdividing

Following question to this one.

I have a long document with a (single) bibliography at the end. For some reason, at two different points in my document I cite 3 sources, and need to typeset the bibliography for the 3 entries right there on the spot. These sources are not in the global bibliography. How can I do that?

I'm using bibtex, but not biblatex. (For now.)

Also, I'm not interested in typesetting the cite keys or the title of the bibliograpy. That can be in the solution, I'm just going remove it for my own purposes.

My current idea: Using multibib:

\usepackage{multibib}
\newcites{acks}{Acknowledgement page references}
\bibliographystyleacks{alpha}
...
\nociteacks{GKNR-foracks}
\nociteacks{FR2011-foracks}
\nociteacks{FR2007-foracks}
\begingroup
\renewcommand{\section}[2]{}%
\renewcommand{\chapter}[2]{}%
\bibliographyacks{front/acks}
\endgroup

The thing is, I don't want to actually issue a \bibliographyacks command, which typesets a bibliography – mainly because I don't want the cite keys, nor the indentation etc. I would like to be able to do something along the lines of the solutions to my other question ; that makes it easy for me to fiddle with the bibitems, enclose in a frame/minipage, change sizes etc.

Best Answer

Ok, I sort of worked a solution, and it should also clarify what I mean exactly.

% \butcheredbibliography - inserts an on-the-spot 'bibliography' -
% no title, no new section/chapter etc. - with no cite keys, smaller
% font and enclosed in a frame. Usable on the acknowledgement page
% of your thesis. This \nocite{}'s everything in the bib file, so
% have one with just those entries you need, or otherwise do your
% own nocites.
%
% arguments:
%  #1  the multibib bibliography name (appended to certain commands)
%  #2  the bibliography filename/s
%
\newsavebox{\butcheredbib@box}
\newcommand{\butcheredbibliography}[2]{
  \makeatletter
  \ifdefined\butcheredbib@acks
    % already used the #1 bibliography's source file/s, so
    % no need to re-indicate all items are necessary
  \else
    \@nameuse{nocite#1}{*} % e.g. \nociteacks{*}
  \fi
  \begingroup
  \let\etalchar\@undefined
  \def\thebibliography##1{%
    \begin{center}%
    \begin{spacing}{1}%
    \begin{lrbox}{\butcheredbib@box}%
    \footnotesize
    \begin{minipage}{0.9\textwidth}%
    \begin{list}{}{%
      \setlength{\leftmargin}{0in}%
      \setlength{\rightmargin}{0in}%
      %\setlength{\leftmargin}{0.1\textwidth}%
      %\setlength{\rightmargin}{0.1\textwidth}%
      }%
  }%
  \def\endthebibliography{%
    \end{list}%
    \end{minipage}%
    \end{lrbox}%
    \fbox{\usebox{\butcheredbib@box}}
    \end{spacing}%
    \end{center}%
  }%
  % the following works for 'alpha' bibliographystyle, and probably
  % most other styles in which a non-numeric key is generated - it uses
  % the generated cite key instead of the bullet
  \def\bibitem[##1]##2##3\par{\item[]##3}%
  % One can also filter the results, using an extra argument #3
  %\def\bibitem[##1]##2##3\par{\IfSubStr{,#3,}{,##2,}{\item[]##3}{}}%
  \ifdefined\butcheredbib@acks
    % already used the #1 bibliography's source file/s; we're
    % assuming the caller has not indicated other sources...
    \@input{#1.bbl}%
  \else
    \@nameuse{bibliography#1}{#2}
  \fi
  \global\expandafter\def\csname butcheredbib@#1\endcsname{}
  \endgroup%
  \makeatother
}

I use this thing twice in my Ph.D. thesis, on the Hebrew and English acknowledgements page - there's a silly requirement to this effect by our grad school. See the English page and the Hebrew page.

Anyway, the acks.bib file contains exactly those items I need to use. I could have done things differently (see the commented-out filtering), but it wasn't necessary eventually.