biblatex (authoryear-ibid) InCollection,主标题和书名之间带有“in:”的编辑

biblatex (authoryear-ibid) InCollection,主标题和书名之间带有“in:”的编辑

我希望收藏中(也称为:InProceedings)源类型需要改变。

所以我希望

  • 主题

  • (主) 源标题后面有一个“in:”

  • 所述来源标题后的编辑姓名

  • 然后是“:”

  • 书名

其余一切都很好,请不要改变。

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

Brandt,A. von / Hoffmann,E. (1987):
位于中心的北欧各州,第 11 个年头至 1448 年,收录于:Seibt,F./Smith,J.(编辑):《欧洲最高层和中层管理》,第 15 期。 2,第 4 版,Klett-Cotta,斯图加特,第 884-917 页。

MWE 制作的现状目前如下所示:

Brandt,A. von / Hoffmann,E. (1987):
1448 年之间位于中间的北欧各州,载于:欧洲的边界地带,Seibt,F./Smith,J. (编辑),号。 2,第 4 版,Klett-Cotta,斯图加特,第 884-917 页。

平均能量损失

\documentclass[
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},%
}

%% edition behind series number ("no.")
\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}

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

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

%% annul format of any other (parent) titles in bibliography
\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}
\DeclareNameAlias{sortname}{last-first}

\AtBeginBibliography{%
    %% only slash signs between names
    \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},
  number      = {2},
    edition = {4},
  publisher   = {Klett-Cotta},
  location    = {Stuttgart},
  date        = {1987},
  pages       = {884--917}
}
\end{filecontents*}
\addbibresource{lit.bib}

\begin{document}
\begin{itemize}
    \item Place holder for \verb+InCollection+.\footcite[See][p. 5--11]{brandt}
\end{itemize}

\printbibliography
\end{document}

答案1

我自己尝试了一下,目前看来是有效的。

  • {maintitle+booktitle}我从文件中获取了定义standard.bbx,然后简单地复制并粘贴为\renewbibmacro*{maintitle+booktitle}

  • \usebibmacro{booktitle}%我从上述代码中注释掉了

  • 然后我又补充道

    \setunit{\addcolon\space}
    \usebibmacro{booktitle}
    

    对已经包含的重新定义{byeditor+others}(参见上文或下文的 MWE),结果为:

    \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,
    dashed=false,
    doi=false,
    citereset=chapter,
    maxcitenames=3,
    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}
    
    %% booktitle after editors
    \renewbibmacro*{maintitle+booktitle}{%
      \iffieldundef{maintitle}
        {}
        {\usebibmacro{maintitle}%
         \newunit\newblock
         \iffieldundef{volume}
           {}
           {\printfield{volume}%
            \printfield{part}%
            \setunit{\addcolon\space}}}%
      %\usebibmacro{booktitle}%
      \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}
        \setunit{\addcolon\space}
        \usebibmacro{booktitle}}
    \xpatchbibmacro{byeditor+othersstrg}{\printtext}{\printtext[parens]}{}{}
    
    %%  ``(editor)'' or ``(editors)'' instead of ``(ed. by)''
    \DefineBibliographyStrings{english}{%
    byeditor = {editor},%
    byeditor = {editors},%
    issue  = {\lowercase{i}ss\adddot},%
    }
    
    %% edition behind number (no.)
    \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}
    
    %% all titles in references in normal formatting
    \DeclareFieldFormat*{citetitle}{#1\isdot} 
    
    %% annul format of any (main) title in bibliography and add comma+space
    \DeclareFieldFormat*{title}{#1\addcomma\addspace} 
    
    %% annul format of any other (parent) titles in bibliography
    \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}
    \DeclareNameAlias{sortname}{last-first}
    
    \AtBeginBibliography{%
        %% only slash signs between names
        \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},
      number      = {2},
        edition = {4},
      publisher   = {Klett-Cotta},
      location    = {Stuttgart},
      date        = {1987},
      pages       = {884--917}
    }
    \end{filecontents*}
    \addbibresource{lit.bib}
    
    \begin{document}
    \begin{itemize}
        \item Place holder for \verb+InCollection+.\footcite[See][p. 5--11]{brandt}
    \end{itemize}
    
    \printbibliography
    \end{document}
    

相关内容