我有一个问题,尽管我查阅了文档、网页和代码(虽然我对这些东西还很陌生),但还是无法解决。apacite.bst
问题如下:
使用apacite
引用样式包,我想
\citeA{ref} argued that the value of ...
被渲染为
博尔赫斯 (Borges) 及其合作者 (2006) 认为......的价值
同时,如果引用不是文本,则代码
was proved \cite{ref}.
应呈现为
已得到证实(Borges 等,2006)。
总之,当引用导致“et al.”时,我希望它有不同的输出,无论是文本引用(和合作者)还是普通引用(et al.)。
已经测试过renewcommand \BOthers
但它会影响两种类型的引用。
你能帮助我吗?
答案1
在 的定义中\BOthers
,我们可以测试我们是否在\citeA
引用命令中,并排版相应的字符串。查看apacite.sty
,内部\@BAY
宏(“after year”字符串)是一个很好的测试候选——它的定义\BBCP
在“citeA”引用中,否则为空。为了方便起见,我使用etoolbox
包及其\ifdefstring
宏来修改的定义\BOthers
。
\documentclass{article}
\usepackage{apacite}
\usepackage{etoolbox}
\makeatletter
\AtBeginDocument{%
\renewcommand{\BOthers}[1]{%
\ifdefstring{\@BAY}{\BBCP}{%
and collaborators\hbox{}%
}{%
et al.\hbox{}%
}%
}%
}
\makeatother
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A. and B and C and D and E and F},
year = {2001},
title = {Alpha},
}
\end{filecontents}
\begin{document}
\citeA{A01} argued~\dots
\dots\ was proved \cite{A01}.
\bibliographystyle{apacite}
\bibliography{\jobname}
\end{document}