我想使用 biblatex 将期刊名称改为非斜体。有没有办法使用 DeclareFieldFormat 来实现这一点?
我可以使用 DeclareFieldFormat 将文章名称改为斜体,并且我想以类似的方式将期刊名称改为非斜体。我使用
\documentclass[11pt]{amsart}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{csquotes}
\usepackage{graphicx}
\usepackage[style=alphabetic, backend=biber, giveninits=true]{biblatex}
\DeclareLabelalphaTemplate{
\labelelement{
\field[final]{shorthand}
\field{label}
\field[strwidth=2, strside=left, ifnames=1]{labelname}
\field[strwidth=1, strside=left]{labelname}
}
}
\DeclareFieldFormat{extraalpha}{#1}
\DeclareNameAlias{author}{first-last}
\renewbibmacro{in:}{}
\DefineBibliographyExtras{english}{%
\renewcommand*{\finalnamedelim}{\addcomma\addspace}%
}
\DeclareFieldFormat[article]{title}{\textit{#1}}
\DeclareFieldFormat{citetitle}{\textit{#1}}
\DeclareFieldFormat*[article]{title}{\textit{#1}}
\DeclareFieldFormat[article,book]{title}{\textit{#1}}
\DeclareFieldFormat*[article]{citetitle}{\textit{#1}}
\DeclareFieldFormat[article,book, thesis]{citetitle}{\textit{#1}}
\bibliography{sample}
\begin{document}
\printbibliography
\end{document}
当我运行这个程序时,sample.bib 中的所有期刊名称(文章)都以斜体显示。
答案1
内部journal
调用字段journaltitle
(准确地说,调用字段journaltitle
,并且journal
只是自动重新映射到的别名journal
)。因此,您需要重新定义字段格式journaltitle
\DeclareFieldFormat{journaltitle}{#1\isdot}
我还建议你使用
\mkbibitalic
而不是在指令\textit
中。如果您想允许在斜体和直立字体之间切换,\DeclareFieldFormat
也可以使用。\mkbibemph
在 MWE 中,您似乎误用了 的带星号版本。带星号的版本会清除所有类型特定的格式,因此直接使用可选的类型参数似乎是多余的。带有和\DeclareFieldFormat
重新定义的整个块可能可以压缩为title
citetitle
\DeclareFieldFormat*{title}{\mkbibitalic{#1}}
\DeclareFieldFormat*{citetitle}{\mkbibitalic{#1}}
\DeclareNameAlias{author}{first-last}
应替换为
\DeclareNameAlias{author}{given-family}
但这应该是默认设置,所以根本没有必要。
最后,finalnamedelim
通常不需要重新定义\DefineBibliographyExtras
,而现在应该使用上下文敏感的分隔符接口重新定义。对于你的情况,我猜最干净的方法是
\DeclareDelimAlias{finalnamedelim}{multinamedelim}