Biblatex:编辑 APA 书目样式

Biblatex:编辑 APA 书目样式

我正在使用biblatex-apa。我的问题在于 biblatex 显示网页引用的方式。Biblatex 在urldate之前显示url。我希望情况相反。

现在它看起来是这样的(它是法语,但我认为这并不那么重要)

Duben,R.(2022 年)。会议和工作室。查阅于 2022 年 9 月 14 日,在线网站https://remydubern.com/conferences/

我希望它是这样:

Duben,R.(2022 年)。会议和工作室。在线访问网站https://remydubern.com/conferences/查阅 2022 年 9 月 14 日

我试图修改apa.bbx我计算机中的/opt/texlive/2022/texmf-dist/tex/latex/biblatex-apa/

我设法改变了 url 和日期的顺序,但没有改变“consulté le”和“En ligne sur le site”部分(这类似于英语中的“retrieved”和“from”;这些是通过 french-apa.lbx 翻译的)

我相信我的解决方案就在这里。我成功地搞定了它DeclareFieldFormat{urldate}\renewbibmacro*{url+urldate}但我不知道它是如何工作的。

\DeclareFieldFormat{url}{\url{#1}\nopunct}

\DeclareFieldFormat{urldate}{%
  \bibstring{retrieved}\space#1%
  \urldatecomma\bibstring{from}}

\newbibmacro*{doi+url}{%
  \ifboolexpr{          test {\iffieldundef{doi}}
                 or not togl {bbx:doi}}
    {\ifboolexpr{       test {\iffieldundef{url}}
                 or not togl {bbx:url}}
       {\newunit}
       {\usebibmacro{url+urldate}%
        \setunit{\addspace}}}
    {\printfield{doi}%
     \setunit{\addspace}}}

\renewbibmacro*{url+urldate}{%
  \ifthenelse{\iffieldundef{url}\OR\NOT\iffieldundef{doi}}
    {}
    {\iffieldundef{urlyear}
      {}
      {\printurldate
       \setunit{\addspace}}%
     \printfield{url}}}

这是我的.tex文件

\documentclass[12pt,a4paper]{article}
\usepackage{fontspec}
\usepackage{xunicode}
\usepackage{polyglossia}
\usepackage{csquotes}
\usepackage[style=apa,dateera=astronomical,seconds=true,urldate=short]{biblatex}
\bibliography{biblio.bib}
\setmainlanguage{french}

\begin{document}

\title{APA test}
\author{}
\date{}

\maketitle


\printbibliography
\nocite{*}

\end{document}

这是我的 .bib 的摘录

@online{duben_conferences_nodate,
    title = {Conférences \& ateliers},
    date = {2022},
    url = {https://remydubern.com/conferences/},
    author = {Duben, Remy},
    urldate = {2022-09-14},
    langid = {french},
}

我对任何类型的解决方案都感兴趣。

答案1

绝不直接修改 TeX 发行版中的文件/opt/texlive/2022/texmf-dist/tex/latex/biblatex-apa/。仅适用于重命名的副本。如果您已经修改了文件,则不能保证以下内容有效。如果迫不得已,请biblatex-apa在您的机器上重新安装相关软件包。


您想要重新排序对bibmacro 定义中的\printfield和 的调用。\usebibmacrourl+urldate

\documentclass[12pt,a4paper]{article}
\usepackage{polyglossia}
\usepackage{csquotes}
\usepackage[style=apa,dateera=astronomical,seconds=true,urldate=short]{biblatex}
\setmainlanguage{french}

\DefineBibliographyStrings{french}{
  urlfrom = {en ligne sur le site},
  urlseen = {consulté le},
}

\DeclareFieldFormat{url}{%
  \bibstring{urlfrom}\space\url{#1}}
\DeclareFieldFormat{urldate}{%
  \bibstring{urlseen}\space#1}

\renewbibmacro*{url+urldate}{%
  \ifthenelse{\iffieldundef{url}\OR\NOT\iffieldundef{doi}}
    {}
    {\printfield{url}%
     \setunit{\addspace\bibsentence}%
     \printurldate}}

\begin{filecontents}{\jobname.bib}
@online{duben_conferences_nodate,
  title   = {Conférences \& ateliers},
  date    = {2022},
  url     = {https://remydubern.com/conferences/},
  author  = {Duben, Remy},
  urldate = {2022-09-14},
  langid  = {french},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\printbibliography
\nocite{*}
\end{document}

Duben,R.(2022 年)。会议和工作室。在线访问网站 https://remydubern.com/conferences/ 查阅于 2022 年 9 月 14 日。

相关内容