我最近开始使用 amsrefs 来编制参考书目,我喜欢用字母格式(例如 [Abc12])。现在 amsrefs 似乎要求每个条目都有一个数字日期字段,但问题是,当这些条目在文本中被引用时,年份的最后两位数字会出现,让这些未发表的论文(我的想法)看起来像是已发表的论文(可能它们出现在它们衍生的其他已发表作品之前)。(我不记得在使用 bibtex 时遇到过这个问题,但对于某些文档,我更喜欢使用 amsrefs。)
现在,我正在手动重置每个条目中未发表论文的标签(例如,label={Abc}),但我的问题是:是否有更好的(更自动化的)解决方案(使用 amsrefs)?理想情况下,我希望年份字段不是必填的(因此未发表论文的年份也不会出现在书目条目中),但我也对一种半自动分离未发表论文和已发表论文的引文标签的方法感兴趣。也许是修改后的字母书目样式?
编辑这是我正在做的事情的示例代码。
\documentclass{article}
\usepackage{amsrefs}
\begin{document}
This essay will attempt to refute some claims made in \cite{potter}.
\begin{bibdiv}
\begin{biblist}*{labels={alphabetic}}
\bib{potter}{article}{
author={Potter, Harry},
title={A better approach to horocruxes},
status={preprint},
year={2014},
% label={Pot} %to force label
}
\end{biblist}
\end{bibdiv}
\end{document}
答案1
这是一个解决方法/修复方法。我在代码中添加了一个测试,用于生成短年份,以检查年份是否至少为 10,即至少有 2 位数字。
\documentclass{article}
\usepackage{amsrefs}
\makeatletter
\def\append@label@year@{%
\safe@set\@tempcnta\bib@year
\edef\bib@citeyear{\the\@tempcnta}%
\ifnum\bib@citeyear>9
\append@to@stem{%
\ifx\bib@year\@empty
\else
\@xp\year@short \bib@citeyear \@nil
\fi
}%
\fi
}
\makeatother
\begin{document}
This essay will attempt to refute some claims made in \cite{potter}.
See also \cite{author}.
\begin{bibdiv}
\begin{biblist}*{labels={alphabetic}}
\bib{potter}{article}{
author={Potter, Harry},
title={A better approach to horocruxes},
status={preprint},
}
\bib{author}{article}{
author={Author, X.},
title={Title},
journal={J. J.},
year={2005},
volume={10},
pages={5-6},
}
\end{biblist}
\end{bibdiv}
\end{document}