“正确”的方式是在括号中引用最早的出版日期,然后是所用最新版本的出版日期——ASA 格式

“正确”的方式是在括号中引用最早的出版日期,然后是所用最新版本的出版日期——ASA 格式

有关我的最终解决方案,请参阅 2013-11-12 10:26:36Z 的更新

在美国社会学协会风格指南中。第 3 版(第 2 页)链接,PDF!它解释并演示了如何引用从先前出版的版本转载的作品。

应该ASA 指南,看起来像这样,

在此处输入图片描述

我很好奇,想知道是否有一个官方的或“正确”的方式来做到这一点biblatex?我用下面的代码制作了上面的例子,

\documentclass[11pt]{article}

\usepackage[backend=bibtex,
style=authoryear, natbib=true, 
        ]{biblatex}

\usepackage{hyperref}

\begin{filecontents}{bibfile.bib}

@book{Veblen2005:1899,
    Author = {Veblen, Thorstein},
    Isbn = {9788187879299},
    Language = {en},
    Month = jan,
    Publisher = {Aakar Books},
    Title = {{The Theory of the Leisure Class; An Economic Study of Institutions}},
    Year = {[1899] 2005}}

\end{filecontents}

\addbibresource{bibfile.bib}

\begin{document}

\noindent
\ldots \citep{Veblen2005:1899} stated that \ldots\\

\printbibliography

\end{document}

更新于 2013-11-12 10:26:36Z

按照建议将后端从 切换bibtexbiber以下是 moewe 的回答,事实证明这比预期的更具挑战性,因为我无法biber直接从TeXShop版本 3.26在 OSX 10.8.5 上)。不过,在这个答案经过哈里什·库马尔,使用阿拉拉。因此解决方案确实需要我添加一些阿拉拉线到.tex 文件之前,\documentclass{}并从终端编译我的.tex 文件,我在下面粘贴了我的代码和屏幕截图。

\documentclass{article}
\usepackage[backend=biber, style=authoryear, natbib=true]{biblatex}
\usepackage{hyperref}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@book{Veblen2005:1899,
    author = {Veblen, Thorstein},
    Isbn = {978-81-87879-29-9},
    publisher = {Aakar Books},
    title = {The Theory of the Leisure Class},
    subtitle = {An Economic Study of Institutions},
    date = {2005-01},
    origyear = {1899}}

@book{Weber2013,
    Author = {Weber, Max},
    Isbn = {9781135973988},
    Keywords = {Reference / General, Religion / General},
    Language = {en},
    Month = jul,
    Publisher = {Routledge},
    Title = {{The Protestant Ethic and the Spirit of Capitalism}},
    Year = {2013},
       origdate = {1905}}    
\end{filecontents*}

\addbibresource{\jobname.bib}

\renewbibmacro*{date+extrayear}{%
      \iffieldundef{\thefield{datelabelsource}year}
        {}
        {\printtext[parens]{%
           \iffieldundef{origyear}% this is new ...
             {}
             {\printtext[brackets]{\printorigdate}
              \setunit{\addspace}}% ... till here
           \iffieldsequal{year}{\thefield{datelabelsource}year}
             {\printdateextralabel}%
             {\printfield{labelyear}%
              \printfield{extrayear}}}}}%
    \renewbibmacro*{date}{}%
    \renewbibmacro*{issue+date}{%
      \iffieldundef{issue}
        {}
        {\printtext[parens]{\printfield{issue}}}%
      \newunit}

    \renewbibmacro*{cite:labelyear+extrayear}{%
      \iffieldundef{labelyear}
        {}
        {\printtext[bibhyperref]{%moved this
          \iffieldundef{origyear}% this is new
            {}
            {\printtext[brackets]{\printorigdate}
             \setunit{\addspace}}% everything beyond this point is old
          \printfield{labelyear}%
          \printfield{extrayear}}}}

\usepackage{hyperref}
            \hypersetup{
          pdfborderstyle={/S/U/W 1}, % thanks, https://tex.stackexchange.com/a/26085/22939
         }

% arara: pdflatex 
% arara: biber
% arara: pdflatex 
\begin{document}
\ldots \citep{Veblen2005:1899} stated that \ldots\\

However \citet{Weber2013} demonstrates that \ldots

\printbibliography
\end{document}

在此处输入图片描述

当我了解到后端TeXShop。如果您知道更好的解决方案,请随时发表评论。谢谢。

答案1

方法biblatex是使用origdate,但是默认样式支持origdate得不太好。

您可能喜欢以下重新定义。这将适用于mergedate=compact的标准选项biblatex

我们只需在适当的地方添加一个调用\printorigdate,并确保origdate不使用它来labeldate避免重复。

\documentclass{article}
\usepackage[backend=biber, style=authoryear, natbib=true]{biblatex}
\usepackage{hyperref}

\DeclareLabeldate{%
  \field{date}
  \field{year}
  \field{eventdate}
  \field{urldate}
  \literal{nodate}
}

\renewbibmacro*{date+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{%
       \iffieldundef{origyear}
         {}
         {\printtext[brackets]{\printorigdate}%
          \setunit{\addspace}}%
       \iflabeldateisdate
         {\printdateextra}
         {\printlabeldateextra}}}}

\renewbibmacro*{cite:labeldate+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[bibhyperref]{%
       \iffieldundef{origyear}
         {}
         {\printtext[brackets]{\printorigdate}%
          \setunit{\addspace}}%
       \printlabeldateextra}}}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@book{Veblen2005:1899,
  author    = {Veblen, Thorstein},
  isbn      = {978-81-87879-29-9},
  publisher = {Aakar Books},
  title     = {The Theory of the Leisure Class},
  subtitle  = {An Economic Study of Institutions},
  date      = {2005-01},
  origdate  = {1899},
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}

\begin{document}
\ldots \citep{Veblen2005:1899,wilde} stated that \ldots

\printbibliography
\end{document}

产量

在此处输入图片描述

请注意,.bib条目应该使用origdate而不是origyear(通常,只有...date字段应该出现在.bib文件中,后端会解析日期并生成日期部分等...day...month和 存在向后兼容例外,可以使用 而不是year)。monthdate

编辑已更新至和 Biber 的最新版本biblatex。请参阅旧版本的编辑历史。

答案2

由于上述答案已经过时,而且我费了一番功夫才以 biblatexauthoryear风格复制了这种行为,因此我将在此提供更新的代码。这在 biber 版本 2.12 中有效:

\renewbibmacro*{date+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{%
      \iffieldundef{origyear}% new code
        {}
        {\printtext[brackets]{\printorigdate}\setunit{\addspace}}% end new
        \printlabeldateextra}}}%

\renewbibmacro*{cite:labeldate+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[bibhyperref]{%
      \iffieldundef{origyear}% new code
        {}
        {\printtext[brackets]{\printorigdate}\setunit{\addspace}}% end new
        \printlabeldateextra}}}

因此 MVE 变为

\documentclass{article}
\usepackage[backend=biber, style=authoryear, natbib=true]{biblatex}
\usepackage{filecontents}

\begin{filecontents*}{\jobname.bib}
@book{Veblen2005:1899,
    author = {Veblen, Thorstein},
    Isbn = {978-81-87879-29-9},
    publisher = {Aakar Books},
    title = {The Theory of the Leisure Class},
    subtitle = {An Economic Study of Institutions},
    date = {2005-01},
    origyear = {1899},
}
\end{filecontents*}

\addbibresource{\jobname.bib}

\renewbibmacro*{date+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[parens]{%
      \iffieldundef{origyear}% new code
        {}
        {\printtext[brackets]{\printorigdate}\setunit{\addspace}}% end new
        \printlabeldateextra}}}%

\renewbibmacro*{cite:labeldate+extradate}{%
  \iffieldundef{labelyear}
    {}
    {\printtext[bibhyperref]{%
      \iffieldundef{origyear}% new code
        {}
        {\printtext[brackets]{\printorigdate}\setunit{\addspace}}% end new
        \printlabeldateextra}}}

\begin{document}
\ldots \textcite{Veblen2005:1899} stated that \ldots

\printbibliography
\end{document}

希望这能帮助那些再次遇到此问题的人!

相关内容