有关我的最终解决方案,请参阅 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
按照建议将后端从 切换bibtex
到biber
以下是 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
)。month
date
编辑已更新至和 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}
希望这能帮助那些再次遇到此问题的人!