如何在参考书目中的语言前添加前缀“in”?我想要得到这个:
爱因斯坦,A.《一般相对论的基础》。在德语。物理学年鉴 1916; 354(7), 769-822。
我以为像\DeclareFieldFormat{pages}{#1}
(用于删除 pages 字段的前缀) 这样的东西会起作用,但我搞不懂。我尝试了几个字段名,如language
或langid
,但都没有起作用(可能是因为它是一个列表而不是字符串)。
感谢并致以最诚挚的问候!
答案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}