如何在没有参考书目条目的情况下进行 \cite?

如何在没有参考书目条目的情况下进行 \cite?

尽管听起来很奇怪:是否有可能有一个\cite{key}-command 来引用书目项目没有将此项目纳入参考书目吗?

可以说,我正在寻找的对立面\nocite{key}

我想过创建自己的\newcommand,但这需要使用诸如\citeauthor{key}\citetitle{key}之类的命令\newcommand,这样该项目就会出现在参考书目中......

我想要以下内容:

源文件有如下内容:

\documentclass{scrbook}
\usepackage{biblatex}
\addbibresource{my_bib.bib}
\begin{document}
Let me reference one work: \nobibcite{key-1}. And another: \cite{key-2}.
\printbibliography
\end{document}

PDF 文件中的参考书目列出了仅有的该项目key-2(被 引用\cite)和不是该项目key-1(由我正在寻找的命令引用)。尽管如此,这两个项目的书目信息都出现在全文中。

PDF 看起来应如下:

让我引用一部作品:作者。标题. 一.出版商,2013 年。另有:作者。标题. 二.出版商,2013 年。

参考书目

作者。标题. 二.出版商,2013 年。

那么我应该如何设计命令\nobibcite{key},或者是否已经有类似的命令biblatex或其他包附带?

答案1

你可以:

  1. skipbib在 .bib 文件中的特定键上设置选项。

  2. 用 和 定义一个类别\DeclareBibliographyCategory{dontbib},然后\addtocategory{dontbib}{key}将各个作品放入该类别,后跟\printbibliography[notcategory=dontbib]

  3. 如果你经常需要这样做,可以创建一个引用命令来自动添加到该类别。此时,你必须决定是否\cite应该以普通方式覆盖将您的内容排除在参考书目之外。要做到这一点,我认为您需要两个类别,其中一个普通类别\cite有效地设置一个标志,而您的特殊类别设置另一个标志,然后您设置一个来bibfilter在它们之间进行裁决。

如果您使用 的数字排序方案biblatex,跳过的引用仍将被计算在内,因此参考书目中的编号将存在间隙。为了避免这种情况,您可以将包选项添加defernumbers=truebiblatex。这将使只有出现在参考书目中的引用才会收到编号。参考书目中的引用将首先按引用顺序显示为未编号,然后根据其在参考书目中的位置获得编号。

答案2

稍有变化。

用例是:引用用作章节题词,并\fullcite提供给读者以在需要时追踪来源,但参考书目不应引用该作品,因为题词作为文学装饰,对文档的论点没有贡献。但是,如果同一作品恰好以通常的方式在文档中被引用,那么它应该出现在参考书目中。

使用 biblatex 的文档级解决方案无需编辑文件.bib,只需在文档中定义一个切换按钮,然后在非书目上下文中引用作品时将其添加到参考书目印刷类别中。

仅限题词:

仅题词

题词加贡献:

题词和引用

平均能量损失



\begin{filecontents*}{\jobname.bib}
@book{book1,
  title={A Title},
  author={B Auctoritas},
  year={1828},
  publisher={Holmes and Sons},
}
@book{book2,
  title={Another Title},
  author={C Author},
  year={2020},
  publisher={P Publisher},
}

@book{eco,
author={Umberto Eco},
title={Come si fa una tesi di laurea},
subtitle={Le materie umanistiche},
publisher={Bompiani},
date={2004},
origdate={1977},
edition={15},
}

\end{filecontents*}





\documentclass[12pt]{article}
\usepackage[style=authoryear]{biblatex}

\addbibresource{\jobname.bib}

\DeclareBibliographyCategory{yesinbib}
\DeclareBibliographyCategory{notinbib}

\newtoggle{putinbib}
\toggletrue{putinbib}

\newcommand\qcite[2]{%
\togglefalse{putinbib}%
\footfullcite[#2]{#1}%
\toggletrue{putinbib}%
}

\AtEveryCitekey{%
\iftoggle{putinbib}{%true
   \addtocategory{yesinbib}{\thefield{entrykey}}
}{%false
   \addtocategory{notinbib}{\thefield{entrykey}}
}%
}


%------------------
\begin{document}
x

\vfill %demo purpose only

\noindent ``Certi nomi sono citati da tutti''\qcite{eco}{110-111}\\
%\togglefalse{putinbib}%
%\noindent ``Certi nomi sono citati da tutti''\footfullcite[110-111]{eco}\\
%\toggletrue{putinbib}%
Some names are cited by everybody.
\hrule
\bigskip

This is an ordinary cite\footcite[ch 4]{book1}... 

Eco's thesis that theses are written in a metalanguage\footcite[163]{eco} ... 
And another\footcite{book2} ...

\printbibliography[category=yesinbib]

\printbibliography[category=notinbib,title={Quotation sources}]

\end{document}

相关内容