在 bibtex else-harv 书目样式中包含“访问时间:日期”

在 bibtex else-harv 书目样式中包含“访问时间:日期”

问题

与我在这里提出的问题相关Lyx - 更改 bibtex 书目中的 URL 外观,我想在我的参考书目中包含类似“访问时间:日期 (dd.mm.yyyy)”的内容。我不能 100% 确定“访问时间”在英语中是否正确,但这个问题更侧重于如何实现这一点。

我正在使用 Lyx 的 Natbib 设置和 else-harv 书目样式。我只想要书目中显示的所有 URL 的访问日期。我不知道该如何开始,除了可能需要在 .bst 文件中进行一些更改?或者有更简单的解决方案吗?

它看起来应该是这样的:

URL:www.whatever.com(访问时间:日期)

我不确定这种风格是否常见,在访问处周围有括号还是没有括号,但我猜两者都可以。

代码

documentclass[11pt,twoside,english,openright, bibliography=totoc]{scrreprt}
\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage[a4paper]{geometry}
\geometry{verbose,tmargin=2.5cm,bmargin=2.5cm,lmargin=2.75cm,rmargin=2.5cm,headheight=18pt,headsep=8pt,footskip=26pt}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}
\setlength{\parskip}{\smallskipamount}
\setlength{\parindent}{0pt}
\usepackage{verbatim}
\usepackage{textcomp}
\usepackage{amstext}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage[authoryear]{natbib}
\usepackage{nomencl}
% the following is useful when we have the old nomencl.sty package
\providecommand{\printnomenclature}{\printglossary}
\providecommand{\makenomenclature}{\makeglossary}
\makenomenclature
\onehalfspacing

\makeatletter
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands.
\usepackage{lscape} 
{scrpage2} &oldpackage
\usepackage[automark, headsepline, footsepline, plainfootsepline]{scrlayer-scrpage}
\pagestyle{scrheadings}
\clearpairofpagestyles
\ohead{\headmark}
\ifoot[Test]{Test}
\cfoot[]{}
\ofoot[\pagemark]{\pagemark}
\ihead[]{}
\chead[]{}
\automark[chapter]{chapter} 
\usepackage{pdfpages}
\renewcommand\nomname{List of Acronyms}


\RedeclareSectionCommand[beforeskip=12pt,afterskip=12pt]{chapter}
\setkomafont{chapter}{\sffamily\LARGE}
\RedeclareSectionCommand[beforeskip=12pt,afterskip=10pt]{section}
\RedeclareSectionCommand[beforeskip=12pt,afterskip=8pt]{subsection}
\RedeclareSectionCommand[beforeskip=-12pt,afterskip=8pt]{paragraph}
\setkomafont{paragraph}{\sffamily\normalsize}

\usepackage {blindtext} 

\setkeys{Gin}{width=\textwidth} 
\raggedbottom
\usepackage[section]{placeins} 
\usepackage {media9} 
\usepackage[hyphens]{url}
\usepackage[colorlinks=true, urlcolor=black, linkcolor=black,  citecolor=black]{hyperref} 

\@ifundefined{showcaptionsetup}{}{%
 \PassOptionsToPackage{caption=false}{subfig}}
\usepackage{subfig}
\makeatother

\usepackage{babel}
\begin{document}

\bibliographystyle{elsarticle-harv}
\nocite{*}
\bibliography{_bib}

\end{document}

答案1

这是 elsarticle-harv 样式的补丁文件:

--- /usr/share/texmf-dist/bibtex/bst/elsarticle/elsarticle-harv.bst 2016-08-03 08:15:22.000000000 +0200
+++ elsarticle-harv.bst 2016-08-26 11:28:47.873108598 +0200
@@ -67,6 +67,7 @@
     title
     type
     url
+    urldate
     volume
     year
   }
@@ -368,7 +369,14 @@
 FUNCTION {write.url}
 { url empty$
     { skip$ }
-    { "\newline\urlprefix\url{" url * "}" * write$ newline$ }
+    {
+      "\newline\urlprefix\url{" url * "}" *
+      urldate empty$
+        'skip$
+        { " (Accessed at " * urldate * ")" * }
+      if$
+      write$ newline$
+    }
   if$
 }

将您的复制elsarticle-harv-bst到您的项目并应用此补丁。如果您使用的是 unix,请将补丁保存在patch.txt并运行

cp /usr/share/texmf-dist/bibtex/bst/elsarticle/elsarticle-harv.bst . && patch < patch.txt

此补丁扩展了该write.url功能以包括字段中定义的日期urldate

梅威瑟:

bib.bib

@article{key,
  author={foo},
  year={2016},
  url={http://example.com},
  urldate={2016-08-26}
}

test.tex

\documentclass{article}

\usepackage{natbib}

\begin{document}

\citet{key}

\bibliographystyle{my_elsarticle-harv}
\bibliography{bib}

\end{document}

答案2

我来这里是为了解决与 OP 相同的问题。同时,elsearticle-harv.bst 的结构发生了变化。为了在 2.1 版中实现与 OP 建议的相同结果马丁·尼奥尔特,变量网址日期需要添加到.bst文件顶部的 ENTRY 中:

ENTRY
  { address
    ...
    url
    urldate
    doi
  }

并且函数print.url(以前write.url)必须更新(解决方案复制自Martin):

FUNCTION {print.url}
 {url duplicate$ empty$
   { pop$ "" }
   { new.sentence
     urlprefix "\url{" * swap$  * "}" * urldate empty$

      'skip$
              { " (accessed " * urldate * ")" * }
      if$
   }
   if$
 }

这应该会产生期望的结果。

相关内容