如何在自己的 \DeclareCiteCommand 中添加 IEEE 的数字?

如何在自己的 \DeclareCiteCommand 中添加 IEEE 的数字?

我添加了第二个参考书目,以便单独列出视频游戏的游戏目录。我使用以下biblatex包配置:

\usepackage[%
  backend=biber,
  url=true,
  style=ieee,
  maxnames=4,
  minnames=3,
  maxbibnames=99,
  giveninits,
  uniquename=init,
  dashed=false]{biblatex}

我按照以下网站的教程进行操作:https://www.davideaversa.it/blog/manage-videogames-bibliography-latex/

因此我添加了两个参考书目,如下所示:

\bibliography{bibliography}
\addbibresource{ludography.bib}

并像这样打印它们:

\printbibliography[title={Bibliography},nottype=software]{}
\printbibliography[title={Ludography},type=software]

我添加了以下新的引用命令以便在文中引用视频游戏:

\DeclareCiteCommand{\citegame}
{\boolfalse{citetracker}%
    \boolfalse{pagetracker}%
    \usebibmacro{prenote}}
{\ifentrytype{software}{%
        \printfield{title}%
        \setunit{\addspace}%
        \printtext[parens]{%
            \printnames{author}%
            \setunit{\addcomma\space}%
            \printfield{year}}}{\GenericError{}{Not a game entry}{}{}}}
{\multicitedelim}
{\usebibmacro{postnote}}

它工作正常,但它在文本中的显示方式不包括典型的 IEEE 参考编号,例如 [4]。- .bibentry

@software{bioshockinfinite,
  author = {{Irrational Games}},
  title = {BioShock: Infinite},
  url = {http://www.bioshockinfinite.com/main.php},
  version = {1.1.25},
  date = {2013-03-26},
}

将显示为生化奇兵无限(Irrational Games,2013)在文中以及例如

[4] 非理性游戏.生化奇兵无限。版本 1.1.25。2013年3月26日。

在游戏学中。

第一个问题:我该如何编辑\DeclareCiteCommand才能让数字显示在文本中?它应该显示生化奇兵无限(Irrational Games,2013 年)[4]。该数字还应充当游戏目录中条目的超链接,就像普通\cite命令一样。

第二个问题:我如何将出版商添加到图书目录的条目中?当我像在正常书目中一样将其.bib作为“ publisher = {{abc}}”添加到文件中时,它不会显示出来。

答案1

这里尝试稍微重新定义一下,\gamecite以便能够同时产生<title> (<author>, <year>)和数字引用。

<title> (<author>, <year>)首先,我们将打印分离\gamecite到 bibmacro 中,以便于理解。然后,\citegame如果合适,只需调用新的 bibmacro,就可以使用 打印数字引用标签cite:print:subentry:full

理想情况下,人们会尝试将其集成到正常的\autocite\cite命令中,这样就不需要新的命令了,但是style=ieee,,基于的style=numeric-comp,,这是极其难的。

请注意,此解决方案需要最新版本的biblatex。它已使用 v3.16(2020-12-31)进行了测试,但它也适用于 v3.15(2020-08-16)。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[%
  backend=biber,
  style=ieee,
  minnames=3,
  maxcitenames=4,
  maxbibnames=99,
  giveninits,
  uniquename=init,
  dashed=false,
  url=true,
]{biblatex}
\usepackage[colorlinks]{hyperref}

\newbibmacro{gamecite}{%
  \printfield[citetitle]{labeltitle}%
  \setunit{\addspace}%
  \printtext[parens]{%
    \printnames{labelname}%
    \setunit{\addcomma\space}%
    % hack to display the date only as year
    \csdef{blx@dateformat@date}{year}%
    \mkdaterangeyear{}%
  }%
}

\DeclareCiteCommand{\citegame}
  {\usebibmacro{prenote}}
  {\ifentrytype{software}
     {\usebibmacro{gamecite}%
      \setunit{\addspace}}
     {\GenericError{}{Not a game entry}{}{}}%
   \printtext[brackets]{%
     \ifbool{bbx:subentry}
       {\usebibmacro{cite:print:subentry:full}}
       {\usebibmacro{cite:print:labelnumber}}}}
  {\multicitedelim}
  {\usebibmacro{postnote}}

\begin{filecontents}[overwrite]{\jobname.bib}
@software{bioshockinfinite,
  author  = {{Irrational Games}},
  title   = {BioShock: Infinite},
  url     = {http://www.bioshockinfinite.com/main.php},
  version = {1.1.25},
  date    = {2013-03-26},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
Lorem \autocite{sigfridsson}
ipsum \citegame{bioshockinfinite}

\printbibliography
\end{document}

Lorem [1] ipsum 生化奇兵:无限 (Irrational Games,2013) [2]

相关内容