This answer has been updated in the light, particularly, of Audrey's perceptive comments.
Yes. There are a number of ways to do this.
The code below is a revision of my original suggestion, which (I hope) corrects various deficiencies in its general use. Specifically:
My original code didn't deal gracefully with empty years: this does.
My original code "hardwired" multind
's syntax and your chosen index names: in this version the index names are in macros which means they can be changed.
My original code didn't make use of the indexsorttitle
and indextitle
fields: this does, as it should.
My original code could cause problems with certain macros (e.g. \TeX
used in indextitles, as Audrey properly pointed out. This handles those properly, I hope.
On the example you gave, none of this changes anything -- but I've added two further example entries which the original version would have handled wrongly or stupidly, and this handles directly.
Oddly, \fullcite
doesn't seem to call the indexing macros, which is why I've used \cite
; I daresay there's an explanation for that, but I don't have time to dig into it.
\documentclass{report}
\usepackage{filecontents}
\begin{filecontents*}{testing.bib}
@article{Author2010,
author="Author, A and Writer, B",
journal="Slackers Monthly",
title="An overly long treatise on procrastination",
year=2010,
month=jun,
}
@article{Writer2011,
author="Writer, B and Scribe, C",
journal="Fake Online Journal",
title="Waste of time or time of waste: procrastination in a modern society",
year=2011,
month=oct,
}
@book{Writer2003,
author="Writer, B",
title="Procrastination for dummies",
year=2003,
publisher="Procrastination House",
address="Auckland",
}
@book{knuth:ct:b,
hyphenation = {american},
sortyear = {1986-1},
sorttitle = {Computers & Typesetting B},
indexsorttitle = {TeX: The Program},
author = {Knuth, Donald E.},
title = {\TeX: The Program},
shorttitle = {\TeX},
maintitle = {Computers \& Typesetting},
volume = {B},
publisher = {Addison-Wesley},
location = {Reading, Mass.},
date = {1986},
annotation = {The second volume of a five-volume book. Note the
\texttt{sorttitle} and \texttt{sortyear} fields. Also note the
\texttt{indexsorttitle} field}
}
@book{yearless,
author = {Lazy B. Ugger},
title = {I Can't Be Bothered with Years},
publisher = {Equally Lazee},
}
\end{filecontents*}
\usepackage[style=authoryear,indexing=cite]{biblatex}
\addbibresource{testing.bib}
\makeatletter
% For the "years" index, we redefine the ordinary bibmacro
% which indexes titles, so that it indexes into the years
% index instead
\renewbibmacro*{index:title}[2]{%
\iffieldundef{year}
{\usebibmacro{index:years}%
{\index}%
{\undated}%
{\thefield{indexsorttitle}}%
{\thefield{entrykey}}}
{\usebibmacro{index:years}%
{\index}%
{\thefield{year}}%
{\thefield{indexsorttitle}}%
{\thefield{entrykey}}}}
\newbibmacro*{index:years}[4]{%
\begingroup
\protected@edef\theindexentry{%
\unexpanded{#1}\yearsindex{#2!#3\actualoperator\unexpanded{\citefield}{#4}{indextitle}}}%
\theindexentry
\endgroup}
% For authors we just redefine the field format (so that it
% includes title and year information
\DeclareIndexNameFormat{default}{%
\iffieldundef{year}
{\usebibmacro{index:name}%
{\index}%
{#1}%
{#3}%
{#5}%
{#7}%
{\thefield{indexsorttitle}}%
{\thefield{entrykey}}%
{}}
{\usebibmacro{index:name}%
{\index}%
{#1}%
{#3}%
{#5}%
{#7}%
{\thefield{indexsorttitle}}%
{\thefield{entrykey}}%
{ (\thefield{year})}}}
% ... and modify the relevant bibmacro to add the extra information
\renewbibmacro*{index:name}[8]{%
\begingroup
\ifuseprefix
{\protected@edef\theindexentry{%
\unexpanded{#1}\authorsindex{%
\ifblank{#4}{}{#4 }%
\@firstofone #2% remove spurious braces
\ifblank{#5}{}{ #5}%
\ifblank{#3}{}{, #3}%
\actualoperator
\ifblank{#4}{}{\MakeCapital{#4} }%
#2%
\ifblank{#5}{}{ #5}%
\ifblank{#3}{}{, #3}!#6
\actualoperator\unexpanded{\citefield}{indextitle}#8}}}%
{\protected@edef\theindexentry{%
\unexpanded{#1}\authorsindex{%
\@firstofone #2% remove spurious braces
\ifblank{#5}{}{ #5}%
\ifblank{#3#4}{}{,}%
\ifblank{#3}{}{ #3}%
\ifblank{#4}{}{ #4}!#6\actualoperator
\unexpanded{\citefield}{#7}{indextitle}#8}}}%
\theindexentry
\endgroup}
\makeatother
% redefine this if the index for years is differently named, or if using
% index or imakeidx
\newcommand{\yearsindex}{{years}}
% redefine this if the index for authors is differently named, or if
% using index or imakeidx
\newcommand{\authorsindex}{{authors}}
% undated entries
\newcommand{\undated}{n.d.}
\usepackage{multind}
\makeindex{authors}
\makeindex{years}
\begin{document}
\chapter{Introductory works}
\section{An overly long treatise on procrastination}
\fullcite{Author2010}
This paper was really useful in telling me how to waste more time rather
than doing real work.
\section{Waste of time or time of waste: procrastination in a modern society}
\cite{Writer2011}
Applies post-modern philosophical theory to procrastination.
\section{Procrastination for dummies}
\cite{Writer2003}
A classic reference book for anybody starting a research position.
\section{The Awkward Squad}
\cite{knuth:ct:b}
An author who uses a title that indexing programs find hard to cope
with, but certainly no procrastinator.
\cite{yearless}
An author so lazy that he cannot be bothered to put a year of publication.
\printbibliography
\printindex{authors}{Author index}
\printindex{years}{Year index}
\end{document}
(If you need to, you can coax biblatex to do very complex indexing: I've just completed the first version of a style which can produce many, many, indexes (more than 33!), and which indexes based not just on title fields, but uses postnotes to set sub-items. It's not thrilling to set up, but it's absolutely do-able as biblatex stands.)
According to the class code documentation, “PRB requires superscript citations”. If you want to override the choice, reset \bibpunct
.
\begin{filecontents*}{\jobname.bib}
@book{Landau_Elasticity,
title = {Theory of Elasticity},
author = {L.D. Landau and E.M. Lifshitz},
isbn = {978-0750626330},
year = {1986},
publisher = {Pergamon Press}
}
\end{filecontents*}
\documentclass[aps,prb,reprint]{revtex4-1}
\bibpunct{[}{]}{;}{n}{}{}
\begin{document}
Arg! \cite{Landau_Elasticity}
\bibliography{\jobname}
\end{document}

Best Answer
A while back I created a package and some BibTeX styles for automatic journal abbreviations that uses the ISSN database to do exactly this: https://github.com/compholio/jabbrv
This is now included as an Overleaf template: https://www.overleaf.com/latex/templates/automatic-journal-abbreviations/mxfsdscmvxcr
Edit: Changed link to git repository (old link: http://www.compholio.com/latex/jabbrv/)