在参考书目中使用语言字段前缀

在参考书目中使用语言字段前缀

如何在参考书目中的语言前添加前缀“in”?我想要得到这个:

爱因斯坦,A.《一般相对论的基础》。德语。物理学年鉴 1916; 354(7), 769-822。

我以为像\DeclareFieldFormat{pages}{#1}(用于删除 pages 字段的前缀) 这样的东西会起作用,但我搞不懂。我尝试了几个字段名,如languagelangid,但都没有起作用(可能是因为它是一个列表而不是字符串)。

感谢并致以最诚挚的问候!

答案1

您需要重新定义列表格式。为了在适当的位置插入“in”,我们可以稍微修改负责列表分隔符的宏。

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=authoryear, backend=biber]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{appleby,
  author  = {Humphrey Appleby},
  title   = {Über die Bedeutung des Berufsbeamtentums},
  language = {german},
  date    = {1980},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\newbibmacro*{list:in:delim}[1]{%
  \ifnumgreater{\value{listcount}}{\value{liststart}}
    {\ifboolexpr{
       test {\ifnumless{\value{listcount}}{\value{liststop}}}
       or
       test \ifmoreitems
     }
       {\printdelim{multilistdelim}}
       {\lbx@finallistdelim{#1}}}
    {\bibstring{in}\addspace}}

\DeclareListFormat{language}{%
  \usebibmacro{list:in:delim}{%
    \ifbibstring{#1}
      {\bibxstring{#1}}
      {\ifbibstring{lang#1}
         {\bibxstring{lang#1}}
         {#1}}}%
  \ifbibstring{#1}
    {\bibstring{#1}}
    {\ifbibstring{lang#1}
       {\bibstring{lang#1}}
       {#1}}%
  \usebibmacro{list:andothers}}

\begin{document}
\cite{appleby}
\printbibliography
\end{document}

在此处输入图片描述

相关内容