我正在使用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
和 的调用。\usebibmacro
url+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}