有没有办法从\fullcite{Doe2013}
参考书目中排除文中指定的引用?(我正在使用 biblatex+biber。)
答案1
您可以使用多种方法从印刷书目中排除特定条目:
在文件中的该条目中设置
skipbib=true
为。option
.bib
为此类条目设置
keyword
,然后打印使用过滤器排除它们的参考书目notkeyword
。\DeclareBibliographyCategory
使用和\addtocategory
过滤器将此类条目添加到类别中notcategory
。
如果你要处理一个或两个特定条目,那么 (1) 或 (2) 可能是最简单的。如果你想要一般的机制,那么第三种机制可能是最好的。比如
\documentclass{article}
\usepackage{biblatex}
\DeclareBibliographyCategory{fullcited}
\newcommand{\mybibexclude}[1]{\addtocategory{fullcited}{#1}}
\addbibresource{biblatex-examples.bib}
\begin{document}
Chemists deserve numbers: \cite{cotton}. But historians get a full citation in the text
and are excluded from the bibliography: \fullcite{reese}.\mybibexclude{reese}
\printbibliography[notcategory=fullcited]
\end{document}
如果你非常需要这个,你可以构建一个新的引用命令来自动执行此操作。但这可能有点过头了。
答案2
我知道这是一个老话题,但不知怎么的今天我又看到了,我觉得这个问题可能从另一个角度看会更好。原帖者要求如果用 完成的话就排除引用\fullcite
。Paul Stanley 的回答当然可以完成工作。但是,他提出的三种解决方案将排除该条目,而不管文档其余部分发生什么。即使该条目后来被引用\cite
或另一个引用命令引用。这个答案提出了一种\fullcite
从参考书目中排除 s 的方法,但不妨碍受影响的条目以其他方式引用时进入参考书目。当然,对于许多需求来说,这可能有点过头了,但对于特定要求可能很有用。
\documentclass{article}
\usepackage{biblatex}
\DeclareBibliographyCategory{inbib}
\makeatletter
\AtEveryCitekey{%
\ifcsstring{blx@delimcontext}{fullcite}
{}
{\addtocategory{inbib}{\thefield{entrykey}}}}
\makeatother
\addbibresource{biblatex-examples.bib}
\begin{document}
Chemists deserve numbers: \cite{cotton}. But historians get a full citation in the text and are excluded from the bibliography: \fullcite{reese}.
%But may reach the bibliography if cited with a standard cite command: \cite{reese}.
\printbibliography[category=inbib]
\end{document}
答案3
另一个解决方案是将fullcite
引用包装在refsection
环境中,使其“本地化”到文本中出现引用的位置。以下是一个例子:
\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
Chemists deserve numbers: \cite{cotton}. But historians get a full
citation in the text and are excluded from the bibliography:
\begin{refsection}
\fullcite{reese}
\end{refsection}
\printbibliography
\end{document}
然后,如果您想以通常的方式在文档的后面引用相同的参考文献并将其包含在参考书目中,您可以:
\documentclass{article}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}
\begin{document}
Chemists deserve numbers: \cite{cotton}. But historians get a full
citation in the text and are excluded from the bibliography:
\begin{refsection}
\fullcite{reese}
\end{refsection}
If you cite a physicist~\cite{glashow}, and then cite the historian
later~\cite{reese}, everything works as expected.
\printbibliography
\end{document}