这个问题基本上之前问过,但我认为唯一的答案并没有完全理解这个问题,所以我想我会再试一次。我正在写一篇论文,其中我需要在两个地方显示参考文献:在其自己的部分中有一个特殊的“关键参考文献”列表,以及一个包含文中引用的其余参考文献的参考书目。我认为 bibentry 可以做到这一点,所以文档看起来像这样:
\documentclass[11pt]{article}
\usepackage{natbib}
\usepackage{bibentry}
\nobibliography*
\begin{document}
\section{Amazing idea}
Chicken chicken chicken \citep{chicken:2010fj}. Chicken chicken, chicken \citep{turkey:2010jk}.
\section{Key References}
\begin{enumerate}
\item \bibentry{lemur:2009ii}
\item \bibentry{gibbon:2011jk}
\end{enumerate}
\bibliographystyle{apalike}
\bibliography{amazing.bib}
\end{document}
不幸的是,这并没有完全实现这一点,因为生成的文档在“关键参考文献”部分正确地呈现了狐猴和长臂猿的参考文献,但是还将它们打印在文档末尾的参考书目中。理想情况下,参考书目中唯一的条目将是鸡肉和火鸡 \citep 参考资料。我希望它看起来像:
主要参考文献
- Lemur,L.(2009 年)。狐猴《自然·医学杂志》2015年第18期,第12(4):1-7.
- Gibbon,G.(2011)。长臂猿, 135: 1002-1009。
参考
Chicken,C.(2010 年)。鸡. 鸡肉压榨机,Coop。
土耳其,T.(2010 年)。火鸡, 7(4):E231。
实际情况是这样的:
主要参考文献
- Lemur,L.(2009 年)。狐猴《自然·医学杂志》2015年第18期,第12(4):1-7.
- Gibbon,G.(2011)。长臂猿, 135: 1002-1009。
参考
Chicken,C.(2010 年)。鸡. 鸡肉压榨机,Coop。
Gibbon,G.(2011)。长臂猿, 135: 1002-1009。
Lemur,L.(2009 年)。狐猴《自然·医学杂志》2015年第18期,第12(4):1-7.
土耳其,T.(2010 年)。火鸡, 7(4):E231。
有没有办法用当前的方法实现这一点,或者有没有其他(可能更简单!?)的方法来做到这一点?
答案1
正如另一个问题的答案中所述,bibentry
它不适合手头的任务(未经修改)。如果您想尝试一下biblatex
,可以很容易地根据您想要实现的目标进行设置。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\usepackage{csquotes}
\usepackage[natbib,style=authoryear]{biblatex}
\begin{filecontents}{\jobname.bib}
@article{nature,
author = {Rosa Rademakers and Manuela Neumann and Ian R. Mackenzie},
title = {Advances in understanding the molecular basis of frontotemporal dementia - elongated title},
journal = {Nature Reviews Neurology},
volume = {8},
year = {2012},
pages = {423-434},
doi = {10.1038/nrneurol.2012.117}}
@article{fuente,
author = {D. de la Fuente and J.G. Castaño and M. Morcillo},
title = {Long-term atmospheric corrosion of zinc},
journal = {Corrosion Science},
volume = {49},
year = {2007},
pages = {1420-1436},
url = {www.elsevier.com/locate/corsci},
}
@incollection{Rocca2007a,
author = {Rocca, Emmanuel and Mirambet, Fran\c{c}ois},
booktitle = {Corrosion of Metallic Heritage Artefacts: Investigation, Conservation and Prediction of Long Term Behaviour},
chapter = {18},
editor = {Philippe Dillmann and Pedro Piccardo and Gerard Beranger},
pages = {308-334},
title = {{Corrosion inhibitors for metallic artefacts: temporary protection}},
year = {2007}}
\end{filecontents}
\addbibresource{\jobname.bib}
\DeclareBibliographyCategory{keyreferences}
\defbibenvironment{keyrefs}
{\begin{enumerate}}
{\end{enumerate}}
{\item}
\begin{document}
Test \citet{nature}\addtocategory{keyreferences}{nature}
another test \cite{fuente} and \citep{Rocca2007a}
\printbibliography[env=keyrefs,category=keyreferences,title={Key References}]
\printbibliography[notcategory=keyreferences]
\end{document}
关键问题是category
为关键参考文献创建一个。之后,我们可以使用category
和notcategory
选项命令\printbibliography
来过滤参考文献。此外,该natbib
选项还允许我们使用标准natbib
命令进行引用。
由于希望将关键引用打印为enumerate
列表,我们可以使用命令\defbibenviornment
作为enumerate
它们的包装环境,并使用该env=...
选项来指定它。
答案2
这是一个老问题,但是有一个仅使用 BibTeX 的解决方案可能会很有用。将multibib
和bibentry
一起使用相对简单:定义并显示一个额外的参考书目(此处q
:)用于常规参考(使用\citeq
、citepq
等),并将关键参考显示为,bibentry
同时使用抑制这些参考的列表\nobibliography
。multibib
与兼容natbib
。编译顺序:
pdflatex mbib.tex
bibtex q
bibtex mbib
pdflatex mbib
pdflatex mbib
梅威瑟:
mbib.tex
\documentclass[11pt]{article}
\usepackage{natbib}
\usepackage{multibib}
\newcites{q}{References}
\usepackage{bibentry}
\nobibliography*
\begin{document}
\section{Amazing idea}
Chicken chicken chicken \citepq{chicken:2010fj}. Chicken chicken, chicken \citepq{turkey:2010jk}.
\section*{Key references}
\begin{enumerate}
\item \bibentry{lemur:2009ii}.
\item \bibentry{gibbon:2011jk}.
\end{enumerate}
\bibliographystyleq{apalike}
\bibliographyq{mbibref.bib}
\bibliographystyle{apalike}
\nobibliography{mbibref.bib}
\end{document}
参考文献
@book{chicken:2010fj,
author = {Chicken, C},
title = {Chicken},
publisher = {Chicken Press},
year = {2010}
}
@book{turkey:2010jk,
author = {Turkey, T},
title = {Turkey},
publisher = {Turkey Press},
year = {2010}
}
@book{lemur:2009ii,
author = {Lemur, L},
title = {Lemur},
publisher = {Lemur Press},
year = {2009}
}
@book{gibbon:2011jk,
author = {Gibbon, G},
title = {Gibbon},
publisher = {Gibbon Press},
year = {2011}
}
如果您不想在现有文档中更改,那么您可以将的定义复制\citep
到其中并继续使用文档中的原始命令名称。\citepq
\citepq
\citep
但是,因为在内部\citepq
使用\citep
,您应该首先将原始定义存储在辅助命令中\origcitep
,然后在新定义中使用它。
相关代码片段:
\usepackage{natbib}
\usepackage{multibib}
\newcites{q}{References}
\makeatletter
\let\origcitep\citep
\def\citep{\let \@citex \mb@@citex \let \@newciteauxhandle \@auxoutq \csname origcitep\endcsname}
\makeatother
\usepackage{bibentry}
\nobibliography*
\begin{document}
\section{Amazing idea}
Chicken chicken chicken \citep{chicken:2010fj}. Chicken chicken, chicken \citep{turkey:2010jk}.
同样,您也可以重新\citet
定义\cite
。