我有这个最小的工作示例:
\documentclass{book}
\usepackage{filecontents}
\begin{filecontents}{chapterref.dbx}
\DeclareDatamodelFields[type=field,datatype=literal]{
shortdesc,
}
\DeclareDatamodelEntryfields{shortdesc}
\end{filecontents}
\usepackage[backref, refsegment=chapter, datamodel=chapterref,
style=trad-alpha % https://tex.stackexchange.com/a/69706/38244
]{biblatex}
\usepackage[colorlinks]{hyperref}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A. and Duthor, D.},
year = {2001},
title = {Alpha},
shortdesc = {Conference1},
}
@misc{N02,
author = {Nuthor, C.},
title = {New title},
year = {2001},
}
@misc{N03,
author = {Nuthor, C},
title = {More new title},
year = {2000},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\chapter{First Chapter}
Some more text \cite{A01}. More citation \cite{N02} and again \cite{N03}
\printbibliography
\end{document}
它产生:
和
我想要做的是从参考书目条目(以黄色突出显示)中删除年份以及之前的逗号,同时保留其余部分。年份有点多余(因为年份已经在引用条目中提到{幸运的是,我不需要引用任何超过 100 年的论文})。
任何建议将被认真考虑。
编辑。
正如@AlanMunn 的评论所解释的那样,链接问题有很大不同。在这种情况下,另一个人要求删除重复的年份(后缀为a
等b
)。就我而言,我想从参考书目键中删除年份。
编辑2。(@AlanMunn 也评论道)我仍然得到与以前相同的结果接受的答案链接的问题。
答案1
您可以重新定义书目宏以不打印任何内容。这是标准样式用来避免打印两次年份的date
方法。authoryear
\documentclass{article}
\usepackage[style=trad-alpha]{biblatex}
\usepackage[colorlinks]{hyperref}
\renewbibmacro*{date}{}
\addbibresource{biblatex-examples.bib}
\begin{document}
Some more text \autocite{sigfridsson,worman,geer,nussbaum}.
\printbibliography
\end{document}
\AtEveryBibitem{\clearfield{year}}
正如 Alan Munn 和 Marijn 在评论中提到的那样,这里也应该起作用。
请注意,这\AtEveryBibitem
不会隐藏引文中的年份\fullcite
,因此您需要
\AtEveryCitekey{\clearfield{year}}
也一样。
我通常只喜欢将其\clearfield
作为最后的手段,并且更喜欢源映射(Biber 甚至不使用数据,这不是这里的选项)或使用输入处理程序清除字段。 有关抑制字段的几种方法的更详细比较,请参阅如何在使用 biblatex 时省略地址字段,删除 biblatex 参考文献中的标题。
在这种情况下,我发现简单地重新定义打印日期的 bibmacro 以使其不执行任何操作是很自然的,因为authoryear
在类似情况下样式就是这样做的,但这可能并不总是容易实现的。如果样式不同,可能必须重新定义几个不同的宏,此时不同的解决方案可能变得更有吸引力。