平均能量损失

平均能量损失

我使用 biblatex 来列出我引用的科学资源。但我还想为所有我引用的在线资源添加第二个列表。我将参考书目分成两个文件,references.bib然后online.bib打印两个参考书目:

\printbibliography[heading=bibintoc, nottype=online]
\printbibliography[title={Web References}, type=online]

我用alphabetic-verb参考书目样式,其中使用像 [ABD+14] 这样的键/标签,即作者姓名首字母和出版日期。

问题是,对于在线资料,我经常不知道作者或出版日期。如果我不知道作者,我会使用标题的首字母来构建密钥。

如果未指定作者,如何自定义根据标题构建参考书目关键词?

我的 MWE:

\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{english}
\usepackage{filecontents}
\usepackage[natbib=true,backend=biber,style=alphabetic-verb]{biblatex}

\begin{filecontents}{references.bib}
@Article{a,
  author    = {Some Author and Some Otherauthor and More Of Thiskind and A Longlist},
  title     = {Some Paper Title},
  journal   = {Journal of Papers},
  year      = {2018},
}
@InProceedings{b,
  author    = {Some Author and Some Otherauthor},
  title     = {Some Other Paper Title},
  journal   = {Journal of Papers},
  year      = {2019},
}
\end{filecontents}
\begin{filecontents}{online.bib}
@online{texoverflow,
  title={TeX Stack Exchange},
  shorttitle={TeX},
  urldate={2020-01},
  url={https://tex.stackexchange.com/},
  note   = {\url{https://web.archive.org/web/20200101144309/https://tex.stackexchange.com/}},
}
\end{filecontents}

\addbibresource{references.bib}
\addbibresource{online.bib}

\begin{document}

Two papers \cite{a,b}.

Tex StackExchange is an online community\footnote{Stackoverflow: \cite{texoverflow}}.

\printbibliography[heading=bibintoc, nottype=online]
\printbibliography[title={Web References}, type=online]

\end{document}

结果是:

在此处输入图片描述

但我希望有像 [Tex] 这样的东西作为在线参考的关键词。

编辑我添加了一个只有两位作者的条目来介绍这个案例。

答案1

这很简单。标签由 控制\DeclareLabelalphaTemplate

默认定义是:

\DeclareLabelalphaTemplate{
  \labelelement{
    \field[final]{shorthand}
    \field{label}
    \field[strwidth=3,strside=left,ifnames=1]{labelname}
    \field[strwidth=1,strside=left]{labelname}
  }
  \labelelement{
    \field[strwidth=2,strside=right]{year}
  }
}

因此您只需将其添加shorthand={TeX}到您的条目中并将其用作标签。

在评论中@moewe 建议(你应该听他的)将其添加label={TeX}到你的条目中是最好的选择。手册中对此字段的描述biblatex解释了它的工作原理:

如果生成常规标签所需的任何数据缺失,则引用样式将使用 来替代常规标签。例如,当作者-年份引用样式为缺少作者或年份的条目生成引用时,它可能会回退到label。有关详细信息,请参阅 § 2.3.2。请注意,与 相比shorthandlabel仅用作后备。另请参阅shorthand

如果您想使用标题,则需要\DeclareLabelalphaTemplate稍微调整定义。您必须告诉定义使用字段labeltitle

\DeclareLabelalphaTemplate{
  \labelelement{
    \field[final]{shorthand}
    \field{label}
    \field[strwidth=3,strside=left,ifnames=1]{labelname}
    \field[strwidth=1,strside=left]{labelname}
    \field{labeltitle}
  }
  \labelelement{
    \field[strwidth=2,strside=right]{year}
  }
}

默认情况下,这将使用TeX 堆栈交换作为标签,这有点长。但是,如果您shorttitle在条目中添加字段,则将改用此字段。

除非您需要让您的 bib 条目在样式之间保持灵活性,并且使用该shorthand字段会使事情变得混乱,否则简单地使用shorthand={TeX}可能是最简单和最好的选择。

平均能量损失

这个 MWE 演示了如何使用标题作为标签。

\documentclass{article}

\begin{filecontents}[overwrite]{\jobname.bib}
@Article{a,
  author    = {Some Author and Some Otherauthor and More Of Thiskind and A Longlist},
  title     = {Some Paper Title},
  journal   = {Journal of Papers},
  year      = {2018},
}
@online{texoverflow,
  title={TeX Stack Exchange},
  shorttitle={TeX},
  urldate={2020-01},
  url={https://tex.stackexchange.com/},
  note   = {\url{https://web.archive.org/web/20200101144309/https://tex.stackexchange.com/}},
}
\end{filecontents}

\usepackage{polyglossia}
\setmainlanguage{english}

\usepackage[natbib=true,backend=biber,style=alphabetic-verb]{biblatex}
\addbibresource{\jobname.bib}

\DeclareLabelalphaTemplate{
  \labelelement{
    \field[final]{shorthand}
    \field{label}
    \field[strwidth=3,strside=left,ifnames=1]{labelname}
    \field[strwidth=1,strside=left,final]{labelname}
    \field{labeltitle}
  }
  \labelelement{
    \field[strwidth=2,strside=right]{year}
  }
}

\begin{document}

A Paper \cite{a}

Tex StackExchange is an online community\footnote{Stackoverflow: \cite{texoverflow}}.

\printbibliography[heading=bibintoc, nottype=online]
\printbibliography[title={Web References}, type=online]

\end{document}

MWE 输出

相关内容