![更改参考书目条目中的页码位置并删除括号](https://linux22.com/image/378345/%E6%9B%B4%E6%94%B9%E5%8F%82%E8%80%83%E4%B9%A6%E7%9B%AE%E6%9D%A1%E7%9B%AE%E4%B8%AD%E7%9A%84%E9%A1%B5%E7%A0%81%E4%BD%8D%E7%BD%AE%E5%B9%B6%E5%88%A0%E9%99%A4%E6%8B%AC%E5%8F%B7.png)
我想更改馆藏参考书目条目中的页码位置并删除它们周围的括号。此外,编辑和书名的顺序也必须更改。它必须大致像这样(只是顺序,我认为他们不太在意逗号或点 - 如果更改起来太复杂)
PAIL,R.(2017 年)。 GOCE 示例的全球边界模型。在《地球测量与卫星测量学》中,R. RUMMEL 和 W. FREEDEN(Hrsg.)。柏林: Springer Spektrum, 217–257
代替
这是我第一次使用 Latex,代码如下
\documentclass[10pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[citestyle=authoryear-ibid,bibstyle = apa, apamaxprtauth=999,
uniquelist=false, backend=biber, natbib=true]{biblatex}
\addbibresource{Quellen.bib}
\DefineBibliographyStrings{ngerman}{andothers = {et\,al\adddot}}
\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}
\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}
\DeclareDelimFormat{nameyeardelim}{\space}
\renewcommand*{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\DeclareFieldFormat{pages}{#1}
\renewcommand{\bibpagespunct}{\ifentrytype{article}{\addcolon\addspace}
{\addcomma\addspace}}
\begin{document}
\parencite[220]{Pail.2017}
\printbibliography
\end{document}
和
@incollection{Pail.2017,
author = {Pail, Roland},
title = {Globale Schwerefeldmodellierung am Beispiel von GOCE},
pages = {217--257},
publisher = {{Springer Spektrum}},
editor = {Rummel, Reinhard and Freeden, Willi},
booktitle = {Erdmessung und Satellitengeod{\"a}sie},
year = {2017},
address = {Berlin}
}
答案1
通过使用标准书目样式而不是 ,您可以更接近您想要的内容biblatex-apa
。
一些所需的修改更容易biblatex-ext
,所以我现在使用它的ext-authoryear-ibid
样式而不是authoryear-ibid
。
\documentclass[10pt,a4paper]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{csquotes}
\usepackage[style=ext-authoryear-ibid, giveninits=true, uniquelist=false, backend=biber, natbib=true]{biblatex}
\DefineBibliographyStrings{ngerman}{andothers = {et\,al\adddot}}
\DeclareNameAlias{sortname}{family-given}
\renewcommand*{\mkbibnamefamily}[1]{\textsc{#1}}
\DeclareDelimFormat{finalnamedelim}{\addspace\&\space}
\DeclareDelimFormat{nameyeardelim}{\space}
\DeclareFieldFormat
[article,inbook,incollection,inproceedings,patent,thesis,unpublished]
{title}{#1\isdot}
\renewcommand*{\jourvoldelim}{\addcomma\space}
\renewcommand*{\volnumdelim}{}
\DeclareFieldFormat[article,periodical]{number}{\mkbibparens{#1}}
\makeatletter
\DeclareDelimFormat{editortypedelim}{\addspace}
\DeclareFieldFormat{editortype}{\mkbibparens{#1}}
\DeclareDelimFormat{translatortypedelim}{\addspace}
\DeclareFieldFormat{translatortype}{\mkbibparens{#1}}
\renewbibmacro*{byeditor}{%
\ifnameundef{editor}
{}
{\printnames{editor}%
\setunit{\printdelim{editortypedelim}}%
\usebibmacro{editorstrg}%
\newunit}%
\usebibmacro{byeditorx}}
\renewbibmacro*{byeditorx}{%
\ifnameundef{editora}
{}
{\printnames[byeditora]{editora}%
\setunit{\printdelim{editortypedelim}}%
\usebibmacro{bytypestrg}{editora}{editor}%
\newunit}%
\ifnameundef{editorb}
{}
{\printnames[byeditorb]{editorb}%
\setunit{\printdelim{editortypedelim}}%
\usebibmacro{bytypestrg}{editorb}{editor}%
\newunit}%
\ifnameundef{editorc}
{}
{\printnames[byeditorc]{editorc}%
\setunit{\printdelim{editortypedelim}}%
\usebibmacro{bytypestrg}{editorc}{editor}%
\newunit}}
\renewbibmacro*{bytranslator}{%
\printtext[translatortype]{%
\ifboolexpr{
test {\ifnumgreater{\value{translator}}{1}}
or
test {\ifandothers{translator}}
}
{\bibstring{translators}}
{\bibstring{translator}}}}
\renewbibmacro*{byeditor+others}{%
\ifnameundef{editor}
{}
{\printnames{editor}%
\setunit{\printdelim{editortypedelim}}%
\usebibmacro{editor+othersstrg}%
\clearname{editor}%
\newunit}%
\usebibmacro{byeditorx}%
\usebibmacro{bytranslator+others}}
\renewbibmacro*{bytranslator+others}{%
\ifnameundef{translator}
{}
{\printnames{translator}%
\setunit{\printdelim{translatortypedelim}}%
\usebibmacro{translator+othersstrg}%
\clearname{translator}%
\newunit}%
\usebibmacro{withothers}}
\renewbibmacro*{bytypestrg}[2]{%
\printtext[by#2type]{%
\iffieldundef{#1type}
{\ifboolexpr{
test {\ifnumgreater{\value{#1}}{1}}
or
test {\ifandothers{#1}}
}
{\bibstring{#2}}
{\bibstring{#2}}}
{\ifbibxstring{\thefield{#1type}}
{\ifboolexpr{
test {\ifnumgreater{\value{#1}}{1}}
or
test {\ifandothers{#1}}
}
{\bibstring{\thefield{#1type}s}}
{\bibstring{\thefield{#1type}}}}
{\thefield{#1type}}}}}
\makeatother
\DeclareFieldFormat{pages}{#1}
\renewcommand{\bibpagespunct}{%
\ifentrytype{article}
{\addcolon\addspace}
{\addcomma\addspace}}
\DeclareFieldFormat{url}{\url{#1}}
\renewcommand*{\postnotedelim}{\addcolon\space}
\DeclareFieldFormat{postnote}{\mknormrange{#1}}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@incollection{Pail.2017,
author = {Pail, Roland},
title = {Globale Schwerefeldmodellierung am Beispiel von GOCE},
pages = {217--257},
publisher = {Springer Spektrum},
editor = {Rummel, Reinhard and Freeden, Willi},
booktitle = {Erdmessung und Satellitengeodäsie},
year = {2017},
address = {Berlin}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
\parencite[220]{Pail.2017} and \cite{sigfridsson}
\printbibliography
\end{document}