将作者分隔符从英语改为德语 - .bst 文件中的更改不起作用

将作者分隔符从英语改为德语 - .bst 文件中的更改不起作用

为了写一篇论文,我必须将我的整个 Tex 文件设置为德语。我在 Windows 上使用 MikTex 2.9。除脚注和参考书目中不同作者姓名之间的“and”外,所有作品。

我已经尝试了推荐的解决方案,通过查看文件来更改此问题.bst,但不起作用。FUNCTION {format.lab.names}在我的文件中不存在,我找到的唯一位置" and "FUNCTION {output:write:list}似乎不正确,而且当我在那里更改它时也不起作用。我检查了整个文件,但找不到任何可能合适的函数代码。

我在 中进行了更改,biblatex.bst因为在.bst文件夹 (MixTex/bibtex/bst) 中,它是唯一与我的代码相关的文件夹。没有natbib.bstauthoryear.bst或 ,biber.bst就像 stackexchange 中其他解决方案中描述的那样。

也许我拿错了.bst文件?或者我已经做了一些修改,改变了 .bst 代码?

我也尝试了\renewcommand*{\betweenauthors}{\und}序言中的选项,但它也不起作用。

我只需要对一个家庭作业进行这种更改,因此一个简单的(可能有点粗糙的)修复就可以了。这是我的最小工作示例(希望它不会太长):

\documentclass[12pt, listof=totoc, bibliography=totoc]{scrreprt}

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

\usepackage[style=authoryear-icomp, natbib=true, bibencoding = utf8, maxbibnames=10, 
            maxcitenames=3, isbn=false, backend=biber, dashed=false,
            firstinits=true, uniquename=init, sorting=nyt]{biblatex}

\addbibresource{Minimalbeispiel_German.bib}

\DeclareNameFormat{labelname}{
    \usebibmacro{name:last-first}{#1}{#4}{#5}{#8}
    \usebibmacro{name:andothers}}

\renewbibmacro*{cite:labelyear+extrayear}{%
\iffieldundef{labelyear}
  {}
  {\printtext[bibhyperref]{%
   \printtext[parens]{% <- space
   \printfield{labelyear}%
   \printfield{extrayear}}}}}

\renewbibmacro{in:}{%
  \ifentrytype{article}{%
    \setunit{\addsemicolon\space}%
    \printtext{\bibstring{in}\intitlepunct}%
  }{%
    \printtext{\bibstring{in}\intitlepunct}%
  }%
}

%usepackage{germbib}
\usepackage{chngcntr} \counterwithout{footnote}{chapter}
\setlength{\bibhang}{1cm}  % Einzug der umgebrochenen Zeile
\setlength{\bibitemsep}{0.5cm}     % Abstand zw. Literaturangaben

\DeclareNameAlias{sortname}{last-first} %% erst Nachname, dann Vorname
\renewcommand*{\labelnamepunct}{\addcolon\space} % Doppelpunkt nach dem letzten Namen
\renewcommand*{\multinamedelim}{\addsemicolon\space} %% Trenner zwischen den Namen ein Semikolon
\renewcommand*{\finalnamedelim}{\space~and~\space} %% Trenner zwischen den Namen ein Semikolon
%\renewcommand*{\betweenauthors}{\und}

\renewbibmacro*{bbx:editor}[1]{% 
   \ifboolexpr{ 
     test \ifuseeditor 
     and 
     not test {\ifnameundef{editor}} 
   } 
     {\usebibmacro{bbx:dashcheck} 
        {\bibnamedash} 
        {\printnames{editor}% 
    \setunit{\space}%
    \usebibmacro{bbx:savehash}}% 
      \usebibmacro{#1}% 
      \clearname{editor}% 
      \setunit{\addspace}}% 
     {\global\undef\bbx@lasthash 
      \usebibmacro{labeltitle}% 
      \setunit*{\addspace}}% 
   \usebibmacro{date+extrayear}} 

        \AtEveryBibitem{%
  \ifentrytype{misc}{%
      \clearfield{note}%
    \clearfield{type}%      %hier einfach auflisten was nicht erscheinen soll
  }%
 }
        \AtEveryBibitem{%
  \ifentrytype{electronic}{%
      \clearfield{note}%
    \clearfield{type}%      
  }%
 }
\AtEveryBibitem{%
  \ifentrytype{book}{%
      \clearfield{note}%
    \clearfield{url}%       
  }%
 }

\DeclareNameAlias{editor}{sortname}

\begin{document}
Some Text\footcite[Vgl.][S. 30]{Example2012} and then even more text\footcite[Vgl.][S. 30]{Doe2013}. And continuing with other text\footcite[Vgl.][S. 30]{Professor2000} and more words\footcite[][S. 30]{Professor2000}.

\printbibliography
\end{document}

以及与之配套的.bib文件:Minimalbeispiel_German.bib

\begin{bibliography}

@ELECTRONIC{Example2012,
  title = {The Top 100},
  year = {2012},
  url = {http://somepage.de/uploads/files/fd3323c9a2.pdf},
  month = {9},
  day = {25},
  editor = {Webeditor, Mike},
  type = {Whitepaper},
  lastchecked = {2013-07-01},
  urldate = {2013-07-01},
}

@BOOK{Doe2013,
  author = {Doe, John and Smith, Jane and Jamesson, James},
  title = {The Quintessence of Everything},
  publisher = {Springer},
  year = {2010},
  address = {New York, London},
   }

 @unpublished{Professor2000,
  author = {Jackson, Jack},
  title = {Book from my Professor},
  year = {2000},
  month = {6},
  type = {Seminar Book},
  note = {Seminar Book},
  timestamp = {2013-07-18}
}

\end{bibliography}

答案1

biblatex不再真正使用.bst文件,现在重要的文件是biblatex.bbx参考书目)、.cbx(引文)、.dbx(数据模型)和.lbx(本地化)。你可以说

\DeclareDelimFormat{finalnamedelim}{\addspace\bibstring{and}\space}

在序言中,biblatex提供了“和”的翻译,因此只需使用。但in\bibstring{and}的原始定义是finalnamedelimbiblatex.def

\DeclareDelimFormat{finalnamedelim}{%
  \ifnumgreater{\value{liststop}}{2}{\finalandcomma}{}%
  \addspace\bibstring{and}\space}

其中\finalandcomma,德语为空。这意味着标准定义将为您提供相同的输出,而您实际上根本不需要重新定义finalnamedelim


文件中不需要\begin{bibliography}和,事实上,我很惊讶你没有抱怨(我收到了类似的警告)。\end{bibliography}.bibbiber20 characters of junk seen at toplevel


编辑:针对biblatex3.8 及以上版本进行了现代化处理。请注意,问题中的代码适用于biblatex3.3 之前的版本(Biblatex 3.3 名称格式),并且许多其他习语现在可以被更优雅的技术所取代。

相关内容