如何设置 biblatex 不将第一作者姓氏大写

如何设置 biblatex 不将第一作者姓氏大写

我的参考书目中带有前缀的德语名称有问题。如果第一作者姓氏以小写字母开头,则该名称无论如何都会大写。对于第二作者等来说这不是问题... 可以在 .bib 文件中将名称括起来,但不幸的是,我的引文管理器像这样导出 .bib 文件。

有人知道该如何修复吗?我将不胜感激!

MWE 在这里:

\documentclass[british]{scrartcl}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}    
\usepackage{babel}

\usepackage{filecontents}

\usepackage{csquotes}
\usepackage[style=chem-acs,maxbibnames=10,articletitle=true]{biblatex}

\begin{filecontents}{\jobname.bib}
    @book{Test1,
        author = {von Kling, Alfred and von Klade, Otto},
        booktitle = {This is just a test},
        title = {{This is just a test}},
        year = {2012}
    }
    
    @book{Test2,
        author = {{von} Kling, Alfred and von Klade, Otto},
        booktitle = {This is just a test2},
        title = {{This is just a test2}},
        year = {2012}
    }
\end{filecontents}

\addbibresource{\jobname.bib}

\begin{document}
    
    % !TEX TS-program = pdflatex
    % !TEX encoding = UTF-8 Unicode 
    % !BIB TS-program = biber
    
    Doesn't work. \autocite{Test1,Test2}
    
    \printbibliography
    
\end{document}

得出的结果为:

结果

答案1

我猜想这个想法是,新 bib 条目的开头有点像句子的开头。即使是句子开头的“von”通常也是大写的,因此这里“von”自然也会大写。

如果您不希望出现这种行为,您可以通过发出来告诉biblatex不要将参考书目条目的开头视为句子的开头。\midsentencebegentry

\documentclass[british]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}    
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=chem-acs, maxbibnames=10, articletitle=true]{biblatex}

\renewbibmacro*{begentry}{\midsentence}

\begin{filecontents}{\jobname.bib}
@book{Test1,
  author    = {von Kling, Alfred and von Klade, Otto},
  booktitle = {This is just a test},
  title     = {This is just a test},
  year      = {2012}
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
  Doesn't work. \autocite{Test1}

  \printbibliography
\end{document}

冯克林,A.; von Klade,O.,这只是一次测试,2012年。

或者你告诉biblatex不要将句首的“von”大写。

\documentclass[british]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}    
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=chem-acs, maxbibnames=10, articletitle=true]{biblatex}

\renewbibmacro*{name:family}[4]{%
  \ifuseprefix
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \mkbibcompletenamefamily{%
       \ifdefvoid{#3}
         {}
         {\mkbibnameprefix{#3}\isdot
          \ifprefchar{}{\bibnamedelimc}}%
       \mkbibnamefamily{#1}\isdot}}
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}%
     \mkbibcompletenamefamily{%
       \mkbibnamefamily{#1}\isdot}}}%

\renewbibmacro*{name:family-given}[4]{%
  \ifuseprefix
    {\usebibmacro{name:delim}{#3#1}%
     \usebibmacro{name:hook}{#3#1}%
     \mkbibcompletenamefamilygiven{%
       \ifdefvoid{#3}
         {}
         {\mkbibnameprefix{#3}\isdot
          \ifprefchar{}{\bibnamedelimc}}%
       \mkbibnamefamily{#1}\isdot
       \ifdefvoid{#4}
         {}
         {\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
       \ifdefvoid{#2}
         {}
         {\revsdnamepunct\bibnamedelimd\mkbibnamegiven{#2}\isdot}}}
    {\usebibmacro{name:delim}{#1}%
     \usebibmacro{name:hook}{#1}%
     \mkbibcompletenamefamilygiven{%
       \mkbibnamefamily{#1}\isdot
       \ifdefvoid{#4}
         {}
         {\bibnamedelimd\mkbibnamesuffix{#4}\isdot}%
       \ifboolexpe{%
         test {\ifdefvoid{#2}}
         and
         test {\ifdefvoid{#3}}}
         {}
         {\revsdnamepunct}%
       \ifdefvoid{#2}
         {}
         {\bibnamedelimd\mkbibnamegiven{#2}\isdot}%
       \ifdefvoid{#3}
         {}
         {\bibnamedelimd\mkbibnameprefix{#3}\isdot}}}}

\begin{filecontents}{\jobname.bib}
@book{Test1,
  author    = {von Kling, Alfred and von Klade, Otto},
  booktitle = {This is just a test},
  title     = {This is just a test},
  year      = {2012}
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
  Doesn't work. \autocite{Test1}

  \printbibliography
\end{document}

这个 MWE 中的输出是相同的,但是如果你使用,比如\Textcite{Test1}在句子开头,你会看到差异。

相关内容