从...开始这个问题我编辑了那里提供的代码,以实现如下引用,journal-title+volume+pages+year
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\printfield{volume}%
\setunit{\addcomma\space}%
\printfield{pages}%
\setunit{\space (}%
\usebibmacro{date})%
\newunit}
可以做得更好吗?很可能,我不知道宏是如何使用的,但它按预期工作,但有一个小问题。一年后,页面再次添加。我认为这是因为宏journal+issuetitle
不包含页面,所以尝试添加+pages
到名称中,但它没有任何作用。
想知道在重新定义宏时需要做哪些更改以便页面在最后不再显示。
编辑:
一个没有其他版本的最小工作示例,以便更短
\documentclass{article}
\usepackage[backend=biber, style=numeric-comp, sortcites=true, sorting=none, url=false,maxbibnames=99]{biblatex}
\addbibresource{biblatex-examples.bib}
\usepackage[utf8]{inputenc}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\printfield{volume}%
\setunit{\addcomma\space}%
\printfield{pages}%
\setunit{\space (}%
\usebibmacro{date})%
\newunit}
\title{mwe}
\begin{document}
\maketitle
Lorem ipsum~\cite{sigfridsson} dolor~\cite{worman}.
\printbibliography
\end{document}
谢谢!
答案1
页面被再次添加,因为它们是由note+pages
驱动程序中的宏打印的@article
。如果您还打印 中的页面journal+issuetitle
,则需要抑制pages
中的note+pages
。
下面的重新定义journal+issuetitle
是基于的标准定义standard.bbx
。唯一的变化是增加了页面打印。
请注意,在 中使用像(
and这样的裸括号通常是不好的风格。在下面的解决方案中,我使用了现成的宏,它添加了括号并处理了一些其他事情。)
\setunit
issue+date
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=numeric, backend=biber]{biblatex}
\DeclareFieldFormat[article,periodical]{pages}{#1}
\renewbibmacro*{journal+issuetitle}{%
\usebibmacro{journal}%
\setunit*{\addspace}%
\iffieldundef{series}
{}
{\newunit
\printfield{series}%
\setunit{\addspace}}%
\usebibmacro{volume+number+eid}%
\setunit{\bibpagespunct}%
\printfield{pages}%
\setunit{\addspace}%
\usebibmacro{issue+date}%
\setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}
\renewbibmacro*{note+pages}{%
\printfield{note}%
\newunit}
\addbibresource{biblatex-examples.bib}
\begin{document}
\cite{sigfridsson}
\printbibliography
\end{document}
如果你想了解这些宏是如何工作的,以及为什么其他的东西被打印,你应该看看standard.bbx
,其中调用的大多数相关宏要么定义在standard.bbx
或者biblatex.def
。
在biblatex
3.12 中,驱动程序@article
可以在第 26-62 页standard.bbx
.journal+issuetitle
位于746-761以及note+pages
第 857-861 页。