biblatex (authoryear-ibid):所有姓名的姓-名和姓名分隔符

biblatex (authoryear-ibid):所有姓名的姓-名和姓名分隔符

所以我已经大致满足了论文的正式要求。现状已完整地附在 MWE 中。它基本上包含了我在这个网站上要求的花絮。

需要修复一些与源无关的事情:

  • 参考文献中作者后面的逗号应该省略。

  • 所有姓名的顺序都应为姓氏在前,但这在参考文献和参考书目中不起作用,该顺序仅适用于名字。

  • 参考文献中的名称没有用 分隔/(目前是and)。

由于我自己获得了-keylast visit的工作位urlseen(这对于我对 biblatex 的了解来说非常重要),我认为只剩下与源相关的一些内容收藏中/诉讼中来源(这些出版物都应该按照这一样式定义进行格式化)。

以下元素的顺序应如下(未提及的元素应保持原样):

  1. 文章标题

  2. “在:”

  3. 编辑姓名,按姓氏从前到后的顺序排列,名字以首字母缩写

  4. “(編輯)”或“(編輯)”

  5. 论文集标题/合集标题/主标题

  6. 诉讼编号,如果有

  7. 论文集版本,如果高于 1

  8. 出版商所在地

  9. 页面

现状如下:

Brandt, A. von/E. Hoffmann (1987):
11 世纪至 1448 年位于中心的北欧各州,载于:欧洲的顶部和中部,Seibt,F./Smith,J. (编辑),第 4 版,《欧洲历史手册》,第 13 期。 2,Klett-Cotta,斯图加特,第 884-917 页。

它应该是这样的一个例子:

Brandt,A. von / Hoffmann,E. (1987):
位于中心的北欧各州,从 11 世纪到 1448 年,载于:欧洲最高和最低时期,载于:Seibt,F./Smith,J. (编辑):《欧洲历史手册》,第 13 期。 2,第 4 版,Klett-Cotta,斯图加特,第 884-917 页。

平均能量损失

\documentclass[
12pt,
a4paper
]
{scrreprt}

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

\usepackage{lmodern}
\renewcommand{\familydefault}{\sfdefault}


\usepackage[
language=auto,
style=authoryear-ibid,
backend=bibtex,
hyperref=true,
isbn=false,
doi=false,
citereset=chapter,
maxcitenames=3,
dashed=false,
sorting=nyt,
firstinits=true,
ibidtracker=true,
maxbibnames=99
]{biblatex}
\usepackage{xpatch}

%% comma after every item for bibiliography entries
\renewcommand*{\newunitpunct}{\addcomma\space}

%%  parentheses around year in references
\renewbibmacro*{cite:labelyear+extrayear}{%
\iffieldundef{labelyear}
{}
{%
\printtext[bibhyperref]{%
\printtext[parens]{%
\printfield{labelyear}%
\printfield{extrayear}}}}}

%% correct order of publisher and location
\renewbibmacro*{publisher+location+date}{%
\newunit
\printlist{publisher}%
\newunit
\printlist{location}%
\newunit}

%%  right order of words 'volume' und 'issue' with comma in front
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\renewbibmacro*{journal+issuetitle}{%
  \usebibmacro{journal}%
  \setunit*{\addspace}%
  \iffieldundef{series}
    {}
    {\newunit
     \printfield{series}%
     \setunit{\addspace}}%
  \usebibmacro{volume+number+eid}
  \setunit{\addcomma\space}% THIS LINE CHANGED to add comma
  \usebibmacro{issue+date}%
  \setunit{\addcolon\space}%
  \usebibmacro{issue}%
  \newunit}

%taken from standard.bbx
\renewbibmacro*{issue+date}{%
  \printtext{%   REMOVED parenthesis here
    \iffieldundef{issue}
      {\usebibmacro{date}}
      {\printfield{issue}%
       \setunit*{\addspace}%
       \usebibmacro{date}}}%
  \newunit}

%% bold bibliography "label" followed by colon and linebreak
\renewbibmacro*{begentry}{\mkbibbold\bgroup}
\xapptobibmacro{date+extrayear}{\addcolon\egroup}{}{}
\renewcommand*{\labelnamepunct}{\par\nobreak}

%% linebreak before URLs and colon before date of last visit
\xpretobibmacro{url+urldate}{\setunit{\newunitpunct\par\nobreak}}{}{}
\DefineBibliographyStrings{english}{%
urlseen = {last visit\addcolon}
}

%% colon before date of last visit
\DeclareFieldFormat{urldate}{\mkbibparens{\bibstring{urlseen}\addcolon\space#1}}

%% no indent
\setlength{\bibhang}{0pt} 

%% one empty line between to bib-entries
\setlength{\bibitemsep}{\baselineskip} %% \baselineskip gibt hier an, dass Zeilenabstand unterhalb des Absatzes der dokumentweite Abstand ist

%% ``(editor)'' or ``(editors)''

\renewbibmacro*{byeditor+others}{%
  \ifnameundef{editor}
    {}
    {\printnames[byeditor]{editor}%
     \setunit{\addspace}%
     \usebibmacro{byeditor+othersstrg}%
     \clearname{editor}%
     \newunit}%
  \usebibmacro{byeditorx}%
  \usebibmacro{bytranslator+others}}
\xpatchbibmacro{byeditor+othersstrg}{\printtext}{\printtext[parens]}{}{}

%%  ``(editor)'' or ``(editors)'' instead of ``(ed. by)''
\DefineBibliographyStrings{english}{%
byeditor = {editor},%
byeditor = {editors},%
issue  = {\lowercase{i}ss\adddot},%
}

%% all titles in references in normal formatting
\DeclareFieldFormat*{citetitle}{#1\isdot} 

%% annul format of any title whatsoever in bibliography and add comma+space
\DeclareFieldFormat*{title}{#1\addcomma\addspace} 

%% Format von Titeln als ganz normal!
\DeclareFieldFormat*{booktitle}{#1\addcomma\addspace}
\DeclareFieldFormat*{journaltitle}{#1\addcomma\addspace}
\DeclareFieldFormat*{issuetitle}{#1\addcomma\addspace}
\DeclareFieldFormat*{maintitle}{#1\addcomma\addspace}
\DeclareFieldFormat*{proceedingstitle}{#1\addcomma\addspace}
\DeclareFieldFormat*{collectiontitle}{#1\addcomma\addspace}
%new
\DeclareFieldFormat*{volume}{\bibstring{volume}~#1\space}
\DeclareFieldFormat*{issue}{\bibstring{issue}~#1}
\DeclareFieldFormat*{number}{\bibstring{number}~#1} %comment to leave number as before
\DeclareFieldFormat*{series}{{#1}\addcomma\space} %comment to leave number as before

%% Names: Lastname, Firstname
\DeclareNameAlias{default}{last-first}

\AtBeginBibliography{%
    %% only slash signs between authors
    \renewcommand{\multinamedelim}{\addslash}
    \renewcommand{\finalnamedelim}{\addslash}
    %% only slash signs between multiple locations
    \renewcommand{\multilistdelim}{\addslash}
    \renewcommand{\finallistdelim}{\addslash}
}

\begin{filecontents*}{lit.bib}
@InCollection{brandt,
  options     = {useprefix=false},
  hyphenation     = {german},
  author      = {von Brandt, Ahasver and Hoffmann, Erich},
  editor      = {Seibt, Ferdinand and Smith, John},
  title       = {Die nordischen L{\"a}nder von der Mitte des 11.~Jahrhunderts bis 1448},
  booktitle   = {Europa im Hoch- und Sp{\"a}tmittelalter},
  series      = {Handbuch der europ{\"a}ischen Geschichte},
  number      = {2},
    edition = {4},
  publisher   = {Klett-Cotta},
  location    = {Stuttgart},
  date        = {1987},
  pages       = {884--917}
}
\end{filecontents*}
\addbibresource{lit.bib}

\begin{document}
\chapter{References}
\begin{itemize}
    \item Something for the one \verb+InCollection+.\footcite[See][p. 5--11]{brandt}
    %\item For the \verb+book+-type.\footcite[See][p. 2]{cicero}
    %\item For the source type \verb+online+.\footcite[See][]{itzhaki}
    %\item For the \verb+article+: Some word.\footcite[See][p. 70]{gillies}
\end{itemize}

\printbibliography
\end{document}

答案1

对于名称列表格式,请添加到您的序言中:

\DeclareNameAlias{sortname}{last-first}

书目驱动程序\printfield{edition}直接发出。将打印推迟到系列/编号字段之后的一种简单方法是清除edition它并在稍后恢复它。以下代码演示了这种方法。它也可以添加到您的序言中。

\AtEveryBibitem{%
  \iffieldequalstr{edition}{1}
    {\clearfield{edition}}
    {\savefield*{edition}{\savededition}%
     \clearfield{edition}}}

\renewbibmacro*{series+number}{%
  \restorefield{edition}{\savededition}
  \printfield{series}%
  \setunit*{\addspace}%
  \printfield{number}%
  \setunit{\addcomma\space}%
  \printfield{edition}%
  \newunit}

如果您只想推迟打印@incollection@inproceedings条目类型,请使用此钩子:

\AtEveryBibitem{%
  \iffieldequalstr{edition}{1}
    {\clearfield{edition}}
    {\ifboolexpr{ test {\ifentrytype{proceedings}} or test {\ifentrytype{incollection}} }
       {\savefield*{edition}{\savededition}%
        \clearfield{edition}}
       {}}}

相关内容