抑制 urldate(apacite)

抑制 urldate(apacite)

我正在使用apacite包,并且我一直在尝试在可用url时抑制doi,按照提供的解决方案网址中换行

\documentclass[11pt,a4paper]{article}

\usepackage{hyperref} 
\usepackage{apacite}
\usepackage{etoolbox}
\usepackage{environ}

\newtoggle{bibdoi}
\newtoggle{biburl}
\makeatletter

\undef{\APACrefURL}
\undef{\endAPACrefURL}
\undef{\APACrefDOI}
\undef{\endAPACrefDOI}

\long\def\collect@url#1{\global\def\bib@url{#1}}
\long\def\collect@doi#1{\global\def\bib@doi{#1}}
\newenvironment{APACrefURL}{\global\toggletrue{biburl}\Collect@Body\collect@url}{\unskip\unskip}
\newenvironment{APACrefDOI}{\global\toggletrue{bibdoi}\Collect@Body\collect@doi}{}

\AtBeginEnvironment{thebibliography}{
 \pretocmd{\PrintBackRefs}{%
  \iftoggle{bibdoi}
    {\iftoggle{biburl}{\unskip\unskip doi:\bib@doi}{}}
    {\iftoggle{biburl}{Retrieved from\bib@url}{}}
  \togglefalse{bibdoi}\togglefalse{biburl}%
  }{}{}
}

\begin{document}

\nocite{*}
\bibliographystyle{apacite}
\bibliography{references}
\end{document}

其中references.bib有以下引用:

@misc{american_cancer_society_melanoma_2018,
    title = {Melanoma {skin} {cancer}},
    url = {https://www.cancer.org/cancer/melanoma-skin-cancer},
    urldate = {2018-02-20},
    author = {{American Cancer Society}},
    year = {2018}
}

我面临着该帖子末尾指出的相同问题,但尚未得到答复:

如果定义了条目 urldate(或 lastchecked)(但未定义 DOI),则此解决方案似乎效果不佳。参考资料将显示为 Retrieved from [2018-12-20]http://www.example.com

因此,使用提供的代码后,我会得到这样的结果:

参考

有没有办法抑制或重新格式化urldate

答案1

是的,@pablos 和 @Guido 的解决方案没有考虑可选的 urldate。要使其工作,请插入以下内容(环境APACrefURL中的原始定义apacite.sty):

\newcommand{\APAurl}[1][]{%
  \ifx\@empty#1\@empty
    \BRetrievedFrom%  Retrieved from
  \else
    \BRetrieved{#1}%  Retrieved <date>, from
  \fi}%

并将此行替换为:

{\iftoggle{biburl}{Retrieved from\bib@url}{}}

有了这个:

{\iftoggle{biburl}{\expandafter\APAurl\bib@url}{}}

我还发现了之前解决方案中的一个错误,导致不是如果打印 DOIURL 可用(很奇怪,对吧?)。为此,您只需替换此行:

{\iftoggle{biburl}{\unskip\unskip doi:\bib@doi}{}}

有了这个:

{\unskip\unskip doi:\bib@doi}

相关内容