Here's a biblatex
solution that satisfies your main requirement -- a combination of local bibliographies and a global one, with congruent local/global entry labels. However, instead of individual .bib
files for each section I use a global file including special keywords
fields to indicate an entry's affiliation with one or several sections.
\documentclass{article}
\usepackage[style=alphabetic]{biblatex}
\defbibheading{subbibforsec}[\refname\ for section~\thesection]{%
\subsection*{#1}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
keywords = {foo,bar},
author = {Author, A.},
year = {2001},
title = {Alpha},
}
@misc{B02x,
keywords = {foo},
author = {Buthor, B.},
year = {2002},
title = {Bravo},
}
@misc{B02y,
keywords = {bar},
author = {Buthor, B.},
year = {2002},
title = {Bravissimo},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\nocite{*}
\begin{document}
\section{Foo}
Some text \autocite{B02x}.
\printbibliography[heading=subbibforsec,keyword=foo]
\section{Bar}
Some text \autocite{B02y}.
\printbibliography[heading=subbibforsec,keyword=bar]
\printbibliography
\end{document}
The thebibliography
environment is a list
environment and you should change the parameters for it. Basically, instead of setting the \leftmargin
we set the \itemindent
to contain the label and the separation, while keeping the \leftmargin
to zero.
\begin{filecontents*}{\jobname.bib}
@article{A,
author={Author, A.},
title={The title of this article that should be long enough to wrap},
journal={Journal of Irreproducible Results},
year={2042},
}
@article{B,
author={Buthor, B.},
title={The title of this article that should be long enough to wrap},
journal={Journal of Irreproducible Results},
year={2042},
}
\end{filecontents*}
\documentclass{scrreprt}
%%% Code to add to your document
\usepackage{etoolbox}
\patchcmd{\thebibliography}
{\advance\leftmargin\labelsep}
{\leftmargin=0pt\itemindent=\labelwidth\advance\itemindent\labelsep}
{}{}
%%% end of code to add
\begin{document}
\nocite{*}
\bibliographystyle{alpha}
\bibliography{\jobname}
\end{document}
The example uses a filecontents*
environment, but all you need is the marked code.
If you want that the labels are rendered in boldface, with a normal space after them, the code to add is
\patchcmd{\thebibliography}
{\advance\leftmargin\labelsep}
{\leftmargin=0pt\labelwidth=0pt\labelsep=0pt}
{}{}
\makeatletter
\renewcommand{\@biblabel}[1]{[\textbf{#1}]~}
\makeatother
Here's a picture:
Best Answer
Something like this should work (type it in the preamble):