【问题标题】:How to adjust the order of author names in Latex references (Journal of Finance style)如何调整 Latex 参考文献中作者姓名的顺序(Journal of Finance 风格)
【发布时间】:2021-08-16 14:25:58
【问题描述】:

我尝试复制 Journal of Finance 的参考风格。为此,参考文献中的名称应按以下顺序排列并使用全名书写:

  • 对于两个作者:LastName1、FirstName1 和 FirstName2 LastName2
  • 对于三位或更多作者:LastName1、FirstName1、FirstName2 LastName2 和 FirstName3 LastName3

这是示例参考:

@article{examplesource,
  title={Title of article},
  author={LastName1, FirstName1 and LastName2, FirstName2 and LastName3, FirstName3},
  journal={Journal of Finance},
  volume={40},
  number={1},
  pages={3--73},
  year={2005}}

这是我迄今为止定义的(基于:https://tex.stackexchange.com/questions/379901/biblatex-how-to-match-the-journal-of-finance-bibliographic-style)

\documentclass{article}

\usepackage[style=ext-authoryear, backend=biber, giveninits=true, uniquelist = false, uniquename=init, isbn=false, maxcitenames=3, dashed=false, maxbibnames=999, doi=false, url=false]{biblatex}

\addbibresource{biblatex-examples.bib}

\setlength{\bibhang}{15pt}
\DeclareNameAlias{sortname}{family-given}
\renewcommand*{\labelnamepunct}{\addspace}

\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished]{title}{#1}

\DeclareFieldFormat{titlecase}{\MakeSentenceCase*{#1}}

\renewbibmacro*{in:}
    {\ifentrytype{article}
    {\setunit{\addcomma\space}}
    {\printtext{\bibstring{in}\intitlepunct}}}

\DeclareFieldFormat{journaltitlecase}{#1}

\renewbibmacro*{journal}{
  \ifboolexpr{
    test {\iffieldundef{journaltitle}}
    and
    test {\iffieldundef{journalsubtitle}}}
    {\printtext[journaltitle]{
       \printfield[journaltitlecase]{journaltitle}
       \setunit{\subtitlepunct}
       \printfield[journaltitlecase]{journalsubtitle}}}}

\renewbibmacro*{volume+number+eid}{
  \printfield{volume}
  \setunit{\addcomma\space}
  \printfield{eid}}

\DeclareFieldFormat[article,periodical]{volume}{{#1}}

\DeclareFieldFormat{pages}{#1}

\UndeclareInnerCiteDelims{parencite}
\DeclareInnerCiteDelims{parencite}{(}{)}

\DeclareFieldFormat{biblabeldate}{#1}
\DeclareDelimFormat[bib]{nameyeardelim}{\addcomma\space}

\ExecuteBibliographyOptions{innamebeforetitle=true} \DeclareDelimFormat[bib]{nametitledelim}{\addcomma\space}



\begin{document}
\textcite{examplesource} lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\\

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua \parencite{examplesource}.

\printbibliography
\end{document}

【问题讨论】:

  • 请不要在一篇文章中提出多个不相关的问题。如果每个帖子都是关于一个问题,那么问答系统效果最好。

标签: reference latex


【解决方案1】:
  • 你会得到完整的名字giveninits=false
  • 您正在查看的排序实际上是默认行为,因此您只需要不使用\DeclareNameAlias{sortname}{family-given} 覆盖它

\documentclass{article}

\usepackage[style=ext-authoryear, backend=biber, giveninits=true, uniquelist = false, uniquename=init, isbn=false, maxcitenames=3, dashed=false, maxbibnames=999, doi=false, url=false,giveninits=false]{biblatex}

\addbibresource{biblatex-examples.bib}

\setlength{\bibhang}{15pt}
%\DeclareNameAlias{sortname}{family-given}
\renewcommand*{\labelnamepunct}{\addspace}

\DeclareFieldFormat[article,inbook,incollection,inproceedings,patent,thesis,unpublished]{title}{#1}

\DeclareFieldFormat{titlecase}{\MakeSentenceCase*{#1}}

\renewbibmacro*{in:}
    {\ifentrytype{article}
    {\setunit{\addcomma\space}}
    {\printtext{\bibstring{in}\intitlepunct}}}

\DeclareFieldFormat{journaltitlecase}{#1}

\renewbibmacro*{journal}{
  \ifboolexpr{
    test {\iffieldundef{journaltitle}}
    and
    test {\iffieldundef{journalsubtitle}}}
    {\printtext[journaltitle]{
       \printfield[journaltitlecase]{journaltitle}
       \setunit{\subtitlepunct}
       \printfield[journaltitlecase]{journalsubtitle}}}}

\renewbibmacro*{volume+number+eid}{
  \printfield{volume}
  \setunit{\addcomma\space}
  \printfield{eid}}

\DeclareFieldFormat[article,periodical]{volume}{{#1}}

\DeclareFieldFormat{pages}{#1}

\UndeclareInnerCiteDelims{parencite}
\DeclareInnerCiteDelims{parencite}{(}{)}

\DeclareFieldFormat{biblabeldate}{#1}
\DeclareDelimFormat[bib]{nameyeardelim}{\addcomma\space}

\ExecuteBibliographyOptions{innamebeforetitle=true} \DeclareDelimFormat[bib]{nametitledelim}{\addcomma\space}



\begin{document}
\textcite{baez/article} lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.\\

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua \parencite{aksin}.

\printbibliography
\end{document}

【讨论】:

    猜你喜欢
    • 2020-08-26
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多