更改顺序集合:页数:编辑书名,

更改顺序集合:页数:编辑书名,

我目前正在撰写我的学士论文,并且必须使用以下风格@incollection

Mulkay, MJ,1977:《英国科学社会学》。第 224-257 页,收录于:RK Merton 和 J. Gaston (Hrsg.),《欧洲科学社会学》。Carbondale:南伊利诺伊大学出版社。

目前,它看起来有点像这样:

Mulkay, MJ,1977:《英国科学社会学》。收录于:《欧洲科学社会学》。RK Merton & J. Gaston (Hrsg.)。Carbondale:南伊利诺伊大学出版社,第 224-257 页。

我怎样才能改变它的顺序?

举一个简单的例子:

\documentclass{article}
\usepackage{lmodern} % 
\usepackage[ngerman]{babel} % 
\usepackage[utf8]{inputenc} % 
\usepackage[T1]{fontenc} % 


\usepackage[backend=bibtex, style=authoryear-comp, dashed=false, 
sorting=nyt, hyperref=true, firstinits=true, indexing=cite]{biblatex}

% So that editors in incollections stand after the names
\renewbibmacro*{byeditor+others}{%
    \ifnameundef{editor}
    {}
    {\printnames[byeditor]{editor}%
        \setunit{\addspace}%
        \usebibmacro{byeditor+othersstrg}%
        \clearname{editor}%
        \newunit}%
    \usebibmacro{byeditorx}%
    \usebibmacro{bytranslator+others}}
\usepackage{xpatch}
\xpatchbibmacro{byeditor+othersstrg}{\printtext}{\printtext[parens]}{}        
{}

\begin{filecontents*}{lit.bib}

@incollection{maazschuler,
    title={Sch{\"u}ler als Informanten? Die Qualit{\"a}t von     
Sch{\"u}lerangaben zum sozialen Hintergrund},
    author={Maaz, Kai and Kreuter, Frauke and Watermann, Rainer},
    editor={Baumert, J{\"u}rgen and Stanat, Petra and Watermann, 
Rainer},
    booktitle={Herkunftsbedingte Disparit{\"a}ten im Bildungswesen: 
Differenzielle Bildungsprozesse und Probleme der     
Verteilungsgerechtigkeit},
    pages={31--59},
    year={2006},
    publisher={Springer VS},
address={Wiesbaden}
}

\end{filecontents*}
\addbibresource{lit.bib}

\begin{document}

\cite{maazschuler}

\printbibliography
\end{document}

输出如下:

Maaz, K., Kreuter, F. & Watermann, R. (2006). Schüler als Informanten?     
Die Qualität von Schülerangaben zum sozialen Hintergrund. In: 
Herkunftsbedingte Disparitäten im Bildungswesen: Differenzielle 
Bildungsprozesse und Probleme der Verteilungsgerechtigkeit. J. 
Baumert, P. Stanat & R. Watermann (Hrsg.). Wiesbaden: Springer VS, S. 
31–59.

在此先感谢您的帮助!

答案1

稍微改变一下书中事物的顺序\DeclareBibliographyDriver,将书页移到书名之前

\documentclass{article}
\usepackage{lmodern} % 
\usepackage[ngerman]{babel} % 
\usepackage[utf8]{inputenc} % 
\usepackage[T1]{fontenc} % 


\usepackage[backend=bibtex, style=authoryear-comp, dashed=false, 
sorting=nyt, hyperref=true, firstinits=true, indexing=cite]{biblatex}

% So that editors in incollections stand after the names
\renewbibmacro*{byeditor+others}{%
    \ifnameundef{editor}
    {}
    {\printnames[byeditor]{editor}%
        \setunit{\addspace}%
        \usebibmacro{byeditor+othersstrg}%
        \clearname{editor}%
        \newunit}%
    \usebibmacro{byeditorx}%
    \usebibmacro{bytranslator+others}}
\usepackage{xpatch}
\xpatchbibmacro{byeditor+othersstrg}{\printtext}{\printtext[parens]}{}{}

\DeclareBibliographyDriver{incollection}{%
  \usebibmacro{bibindex}%
  \usebibmacro{begentry}%
  \usebibmacro{author/translator+others}%
  \setunit{\printdelim{nametitledelim}}\newblock
  \usebibmacro{title}%
  \newunit
  \printlist{language}%
  \newunit\newblock
  \usebibmacro{byauthor}%
  \newunit\newblock % <- change
  \usebibmacro{chapter+pages}% <- change
  \newunit\newblock  
  \usebibmacro{in:}%
  \usebibmacro{maintitle+booktitle}%
  \newunit\newblock
  \usebibmacro{byeditor+others}%
  \newunit\newblock
  \printfield{edition}%
  \newunit
  \iffieldundef{maintitle}
    {\printfield{volume}%
     \printfield{part}}
    {}%
  \newunit
  \printfield{volumes}%
  \newunit\newblock
  \usebibmacro{series+number}%
  \newunit\newblock
  \printfield{note}%
  \newunit\newblock
  \usebibmacro{publisher+location+date}%
  \newunit\newblock
  \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
  \newunit\newblock
  \usebibmacro{doi+eprint+url}%
  \newunit\newblock
  \usebibmacro{addendum+pubstate}%
  \setunit{\bibpagerefpunct}\newblock
  \usebibmacro{pageref}%
  \newunit\newblock
  \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
     \usebibmacro{related}}
    {}%
  \usebibmacro{finentry}}



\begin{filecontents*}{lit.bib}

@incollection{maaz2006schuler,
    title={Sch{\"u}ler als Informanten? Die Qualit{\"a}t von     
Sch{\"u}lerangaben zum sozialen Hintergrund},
    author={Maaz, Kai and Kreuter, Frauke and Watermann, Rainer},
    editor={Baumert, J{\"u}rgen and Stanat, Petra and Watermann, 
Rainer},
    booktitle={Herkunftsbedingte Disparit{\"a}ten im Bildungswesen: 
Differenzielle Bildungsprozesse und Probleme der     
Verteilungsgerechtigkeit},
    pages={31--59},
    year={2006},
    publisher={Springer VS},
address={Wiesbaden}
}

\end{filecontents*}
\addbibresource{lit.bib}

\begin{document}

\cite{maaz2006schuler}

\printbibliography
\end{document}

答案2

非常感谢您的回复,我已经可以修复很多问题了。我在代码中更改了两处小地方,因此编辑器位于“in:”之后和书名之前。

\renewcommand*{\bibpagespunct}{\ifentrytype{incollection}{\addperiod}{\addcomma}\space} % suggested by moewe: now there is a period after the title of the work/chapter and before the Pages

% So that editors in incollections stand after the names
\renewbibmacro*{byeditor+others}{%
    \ifnameundef{editor}
    {}
    {\printnames[byeditor]{editor}%
        \setunit{\addspace}%
        \usebibmacro{byeditor+othersstrg}%
        \clearname{editor}%
        \newunit}%
    \usebibmacro{byeditorx}%
    \usebibmacro{bytranslator+others}}
\usepackage{xpatch}
\xpatchbibmacro{byeditor+othersstrg}{\printtext}{\printtext}{}{} % removed [parens] as it was printed out in parentheses - now it is (eds.)

\DeclareBibliographyDriver{incollection}{%
    \usebibmacro{bibindex}%
    \usebibmacro{begentry}%
    \usebibmacro{author/translator+others}%
    \setunit{\printdelim{nametitledelim}}\newblock
    \usebibmacro{title}%
    \newunit
    \printlist{language}%
    \newunit\newblock
    \usebibmacro{byauthor}%
    \newunit\newblock % <- 
    \usebibmacro{chapter+pages}% <- 
    \setunit{\space}\newblock  % as suggested by moewe to write a comma instead of a full stop after the pages
    \usebibmacro{in:}%
    \usebibmacro{byeditor+others}% <- Jonathan, I changed this: I put the editors here to have them before the booktitle
    \setunit{\addcomma\space}\newblock % again, following a suggestion by moewe, I made latex do a comma instead of a full stop between the editors and the booktitle
    \usebibmacro{maintitle+booktitle}%
    \newunit\newblock
    \newunit\newblock
    \printfield{edition}%
    \newunit
    \iffieldundef{maintitle}
    {\printfield{volume}%
        \printfield{part}}
    {}%
    \newunit
    \printfield{volumes}%
    \newunit\newblock
    \usebibmacro{series+number}%
    \newunit\newblock
    \printfield{note}%
    \newunit\newblock
    \usebibmacro{publisher+location+date}%
    \newunit\newblock
    \iftoggle{bbx:isbn}
    {\printfield{isbn}}
    {}%
    \newunit\newblock
    \usebibmacro{doi+eprint+url}%
    \newunit\newblock
    \usebibmacro{addendum+pubstate}%
    \setunit{\bibpagerefpunct}\newblock
    \usebibmacro{pageref}%
    \newunit\newblock
    \iftoggle{bbx:related}
    {\usebibmacro{related:init}%
        \usebibmacro{related}}
    {}%
    \usebibmacro{finentry}}

现在看起来像这样:

Maaz, K., Kreuter, F. & Watermann, R. (2006). Schüler als Informanten? Die Qualität
von Schülerangaben zum sozialen Hintergrund. S. 31–59 in: J. Baumert, P. Stanat &
R. Watermann (Hrsg.), Herkunftsbedingte Disparitäten im Bildungswesen: Differenzielle
Bildungsprozesse und Probleme der Verteilungsgerechtigkeit. Wiesbaden: Springer VS.

感谢您的帮助!

相关内容