是否仅使用 natbib 来抑制 \bibentry 引用的打印?

是否仅使用 natbib 来抑制 \bibentry 引用的打印?

这个问题基本上之前问过,但我认为唯一的答案并没有完全理解这个问题,所以我想我会再试一次。我正在写一篇论文,其中我需要在两个地方显示参考文献:在其自己的部分中有一个特殊的“关键参考文献”列表,以及一个包含文中引用的其余参考文献的参考书目。我认为 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 参考资料。我希望它看起来像:

主要参考文献

  1. Lemur,L.(2009 年)。狐猴《自然·医学杂志》2015年第18期,第12(4):1-7.
  2. Gibbon,G.(2011)。长臂猿, 135: 1002-1009。

参考

Chicken,C.(2010 年)。. 鸡肉压榨机,Coop。

土耳其,T.(2010 年)。火鸡, 7(4):E231。

实际情况是这样的:

主要参考文献

  1. Lemur,L.(2009 年)。狐猴《自然·医学杂志》2015年第18期,第12(4):1-7.
  2. 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为关键参考文献创建一个。之后,我们可以使用categorynotcategory选项命令\printbibliography来过滤参考文献。此外,该natbib选项还允许我们使用标准natbib命令进行引用。

由于希望将关键引用打印为enumerate列表,我们可以使用命令\defbibenviornment作为enumerate它们的包装环境,并使用该env=...选项来指定它。

在此处输入图片描述

答案2

这是一个老问题,但是有一个仅使用 BibTeX 的解决方案可能会很有用。将multibibbibentry一起使用相对简单:定义并显示一个额外的参考书目(此处q:)用于常规参考(使用\citeqcitepq等),并将关键参考显示为,bibentry同时使用抑制这些参考的列表\nobibliographymultibib与兼容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

相关内容