Of course whatever other solution different from the alias system is
absolutely welcomed.
As often I recommend biblatex
. However the solution below doesn't use biblatex
.
Your example has some errors listed below.
Errors related to multibib
If you define a new bibliography with \newcites{<ext>}{<headind>}
, the new commands \bibliographystyle<ext>
, \bibliography<ext>
and \cite<ext>
will be defined. So in your case the line
\newcites{sec}{Other bibliographic references}
leads to the commands:
\bibliographystylesec
\bibliographysec
and a new file <ext>.aux
will be created. This new file needs his own bibtex run.
Errors related to your bibliography style plainnat
your style writes the following lines to your included bbl
file (included by \bibliography
).
\newcommand{\noopsort}[1]{}
\newcommand{\printfirst}[2]{#1}
\newcommand{\singleletter}[1]{#1}
\newcommand{\switchargs}[2]{#2#1}
You want to have two bibliographies and so the definition of the commands are done twice. This occurs to the error that the commands are defined. One approach would be to set the commands undefined before including the second bibliography.
\bibliographystyle{plainnat}
\bibliography{xampl}
\let\noopsort\undefined
\let\printfirst\undefined
\let\singleletter\undefined
\let\switchargs\undefined
\bibliographystylesec{plainnat}
\bibliographysec{xampl}
the style plainnat
is a numerical citation style. The manual of natbib
provides the following information
By default, natbib is in author–year mode. This can be changed by
- selecting a numerical bibliography style with predefined citation style, defined either in the package or in the local configuration
file;
Errors related to natbib
's \defcitealias
the command \defcitealias
is described in the documentation with the following sentence:
Sometimes one wants to refer to a reference with a special
designation, rather than by the authors
that means your key of \defcitealias
must be a given entry of you bib file. You doesn't show us your bib file so I used the file xampl.bib
which is located in your texmf tree.
the command \defcitealias
makes no differences between the different bibliographies, so you can use it as described in the documentation.
multibib
defines the command \citep<ext>
etc. The defined commands are all listed in the command \@mb@citenamelist
. In the documentation of multibib
you find the following hint:
Packages which define new cite commands can add these commands using
\@mb@citenamelist
. The default definition, which already includes
natbib’s cite variants, is given below.
\def\@mb@citenamelist{cite,citep,citet,citealp,citealt}
You see the commands citepalias
and citetalias
are missed. So before the package multibib
is loaded add the following lines:
\makeatletter
\def\@mb@citenamelist{cite,citep,citet,citealp,citealt,citepalias,citetalias}
\makeatother
Based on the given information here the result as a minimal example with the resulting output. The compilation steps are done by the great tool arara:
% arara: pdflatex
% arara: bibtex : { files :[test , sec] }
% arara: pdflatex
% arara: pdflatex
%: Start Header
\documentclass[a4paper]{article}
\usepackage[numbers]{natbib}
\makeatletter
\def\@mb@citenamelist{cite,citep,citet,citealp,citealt,citepalias,citetalias}
\makeatother
\usepackage{multibib}
\newcites{sec}{Other bibliographic references}
\defcitealias{manual-full}{International journal of logistics, issue 91}
\begin{document}
\cite{article-full}
\citesec{booklet-full}
Something something something and then \citepaliassec{manual-full}.
\bibliographystyle{plainnat}
\bibliography{xampl}
\let\noopsort\undefined
\let\printfirst\undefined
\let\singleletter\undefined
\let\switchargs\undefined
\bibliographystylesec{plainnat}
\bibliographysec{xampl}
\end{document}
Your second observation, that "natbib doesn't support UTF-8 in the bibliography file", isn't quite accurate: it is bibtex
, not natbib
, that suffers from the ASCII-128 limitation. If you can run bibtex8
instead of bibtex
, you can use many more Latin alphabet based character encodings.
Regarding your points 1 and 3: I'm not sure what the concerns you raise are founded on. (You did issue the command \bibliographystyle{cell}
, right?) To get natbib
to place square brackets rather than round parentheses around the author,year
pair, just load the package with the square
option and use the \citep
command (for "parenthetical citations").
The output of the MWE below shows that \citeyear
and \citeauthor
work as one would expect them to. In particular, natbib
knows perfectly well how to append a
, b
, etc automatically to the year if the need to do so arises.
Here's the "cellcite.tex" driver file:
\documentclass{article}
\usepackage[square]{natbib}
\bibliographystyle{cell}
\begin{document}
\citep{abcd:2006a,abcd:2006b}
\citeauthor{abcd:2006a}
\citeyear{abcd:2006b}
\bibliography{cellcite}
\end{document}
Finally, the MWE's bib file ("cellcite.bib"):
@incollection{abcd:2006a,
author = "Torben G. Andersen and Tim Bollerslev and
Peter F. Christoffersen and Francis X.
Diebold",
title = "Volatility and correlation forecasting",
chapter = 15,
pages = "777--878",
editor = "Graham Elliott and Clive W. J. Granger and
Allan Timmermann",
booktitle = "Handbook of Economic Forecasting,
Volume~1",
publisher = "Elsevier",
address = "Amsterdam",
year = 2006,
}
@incollection{abcd:2006b,
author = "Torben G. Andersen and Tim Bollerslev and
Peter F. Christoffersen and Francis X.
Diebold",
title = "Practical volatility and correlation
modeling for financial market risk
management (with discussion)",
chapter = 11,
pages = "513--548",
editor = "Mark S. Carey and Ren{\'e} M. Stulz",
booktitle = "The Risks of Financial Institutions",
publisher = "University of Chicago Press",
address = "Chicago and London",
year = 2006,
}
Best Answer
As you have already noted in a comment to your own answer, you have to use one of the
multibib
variants of the usual cite commands before you can use\citeyear
and\citeauthor
, for which there is nomultibib
variant, unfortunately.However, there is a
multibib
variant for the\nocite
command, which technically causes a citation but is invisible. Thus, if\citealpbook
is not an option, you can avoid adding additional useless citations and do this instead: