首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果没有问题号biblatex,则在卷后添加逗号

如果没有问题号biblatex,则在卷后添加逗号
EN

Stack Overflow用户
提问于 2018-10-16 15:50:54
回答 1查看 2.2K关注 0票数 0

对于我的论文的参考书目,当一篇期刊文章没有发行号时,我想在卷号后面加一个逗号。

代码语言:javascript
复制
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{xpatch}
\usepackage[backend=biber, citestyle=nejm, sorting=none, natbib=true, isbn=false, url=false, doi=true, eprint = false, giveninits]{biblatex}

% remove pp
\DeclareFieldFormat{pages}{#1}

% No dot before number of articles
\xpatchbibmacro{volume+number+eid}{%
  \setunit*{\adddot}%
 }{%
}{}{}

% Number of articles in parentheses
\DeclareFieldFormat[article]{number}{\mkbibparens{#1}\addcomma}

% Comma before date; date not in parentheses
\renewbibmacro*{issue+date}{%
 \setunit*{\addcomma\space}% 
\iffieldundef{issue}
  {\usebibmacro{date}}
  {\printfield{issue}%
   \setunit*{\addspace}%
   \usebibmacro{date}}% 
\newunit}

% comma after journal 
\renewbibmacro*{journal+issuetitle}{%
 \usebibmacro{journal}%
 \setunit*{\addcomma\space}%
 \iffieldundef{series}
 {}
{\newunit
 \printfield{series}%
 \setunit{\addspace}}%
\usebibmacro{volume+number+eid}%
 \setunit{\addspace}%
\usebibmacro{issue+date}%
 \setunit{\addcolon\space}%
\usebibmacro{issue}%
\newunit}

\usepackage{filecontents}
\begin{filecontents}{sample.bib}
@article{einstein,
 author = {Albert Einstein},
 title = {On the electrodynamics of moving bodies},
 journal = {Annalen der Physik},
 volume = {322},
 number = {10},
 pages = {891--921},
 year = {1905},
 DOI = {http://dx.doi.org/10.1002/andp.19053221004}
}
@article{test,
 author = {Example, Author},
 journal = {Journal},
 pages = {2},
 title = {{Test paper}},
 volume = {5},
 year = {2018}
}
\end{filecontents}
\addbibresource{sample.bib} 

\begin{document}
\nocite{*}
\printbibliography

\end{document}

当前代码输出如下所示:

我已尝试修改此问题中的代码,该问题询问在不存在卷号时更改分隔符(https://tex.stackexchange.com/questions/199301/change-separator-for-articles-in-journals-without-volume-number-biblatex),用于问题编号:

代码语言:javascript
复制
\renewcommand*{\bibpagespunct}{%
 \ifentrytype{article}{%
  \iffieldundef{number}
  {\addcomma\space}}
  {\space}} 

然而,当存在问题编号时,这会删除年份和页面范围之间的空格和逗号,这根本不是我想要的。有人能帮我指出我哪里出错了吗?

EN

回答 1

Stack Overflow用户

发布于 2019-08-04 15:26:16

我通过在\DeclareBibliographyDriver中插入以下代码解决了这个问题。

代码语言:javascript
复制
\iffieldundef{number}
    {\addcomma\space}
    {\printfield{number}\addcomma\space}

这是我的代码块。

代码语言:javascript
复制
\DeclareBibliographyDriver{article}{%
    \printnames{author}%
    \printfield{year}%  
    \printfield{title}%
    \usebibmacro{journal}%
%   \usebibmacro{volume+number+eid}%
    \printfield{volume}%
    \iffieldundef{number}
    {\addcomma\space}
    {\printfield{number}\adddot\space}%
    \iffieldundef{pages}
    {}
    {\printfield{pages}\adddot}%

尽管参考格式可能会有所不同,但您可能会理解我在这里尝试传递的主要思想。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52830454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档