cmu2014.bst
我通过创建了自己的makebst
。我可以通过 引用文章,\citep
但\citeauthor
和\citet
无法按预期工作。它们反而显示(作者?)。
这是我的 TeX 文件的一部分
\usepackage[sort,compress,numbers]{natbib}
\bibliographystyle{./bst/cmu2014}
\bibliography{./bib/Ref}
答案1
有办法解决。几天前我也遇到过同样的问题。解决方案如下http://osl.ugr.es/CTAN/macros/latex/contrib/natbib/natbib.pdf,第 2.4 和 3 节。
首先,您需要创建文件.bst
(使用makebst
)作为作者年份参考样式。这很重要。所以也许你得再跑makebst
一次。
然后,据我记得,您不必更改.tex
代码中的任何内容,即:
\usepackage[sort,compress,numbers]{natbib}
\bibliographystyle{./bst/cmu2014} % created as author-year
\bibliography{./bib/Ref}
只需确保多次编译代码,就像当您更改与参考书目相关的内容时一样。
如果这对你不起作用,请尝试添加
\setcitestyle{numbers}
包括之后natbib
,但这将是多余的。
请让我知道这是否对您有用。
编辑:我更改了对文档的引用natbib
,感谢@Mico。更准确地说,我在第 2.4 节中获得了这些信息。关于\citeauthor
和其他类似命令,那里清楚地说:
.bst
注意:如果使用作者年份文件,这些命令也可以与数字引用一起使用。
.bst
我遇到了与@BonSai 相同的问题。@ BonSai遇到的问题是,他试图从作为数字引用样式。如果您创建.bst
文件作为作者年份\citeauthor
样式(并且只有这样),当您使用诸如即使使用natbib
选项时也可以获得正确的结果numbers
。这也与文档的第 3 节有关,该节指定了如何使用作者年份参考样式数字引用样式。
编辑:正如@Mico 指出的那样,这个答案无法解决\citet
帖子所有者(PO;@BonSai)报告的问题。不过,我仍然认为问题与文件有关.bst
。必须将其重新创建为作者年份參考文獻风格。
无论如何,PO 方面当然希望有 MWE。
答案2
您没有告诉我们makebst
您在创建自己的参考书目样式文件时向实用程序传递了哪些选项。不过,根据您提供的信息,我怀疑您说过makebst
您想要数字样式的引文标注(这是实用程序的默认样式)。也就是说,请考虑以下使用plain
参考书目样式生成的输出,该样式称为不是与作者年份样式的标注兼容。请注意,\citep
和\cite
会在括号中产生数字,而\citet
和\citeauthor
会产生“(作者?)“。
这个问题确实不是如果代码重新运行的样式设置为,例如,plainnat
或apalike
——两者都可以产生作者年份样式和数字样式的引文标注,则会发生这种情况。因此,补救措施是确保makebst
使用合适的样式标注系统重新运行authoryear
。
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{abc,
author = "Anne Author",
title = "Thoughts",
journal= "Circularity Today",
year = 3001,
}
\end{filecontents*}
\usepackage[numbers]{natbib}
\bibliographystyle{plain}
\begin{document}
\cite{abc}, \citep{abc}
\citet{abc}, \citeauthor{abc}
\bibliography{\jobname}
\end{document}
答案3
我最近遇到了同样的问题,但无法使用作者年份样式,因为期刊需要他们自己的数字bst
文件。
因此,我使用了下面的解决方法,以便能够使用简单的\citet
命令。我希望这对处于这种情况的其他人有用。
\usepackage{xifthen}
\usepackage{xstring}
\usepackage{etoolbox}
\usepackage{usebib}
\newbibfield{author} % allow manual retrieval of "author" field; must precede \bibinput
\newcounter{numAuthors}
% N.B. only accepts a single reference.
\renewrobustcmd{\citet}[1]{%
\edef\expAuthors{\usebibentry{#1}{author}}%
%
\setcounter{numAuthors}{1}% % reset and start from 1
%
\def\numAuthorsInt{}%
\StrCount{\expAuthors}{and}[\numAuthorsInt]%
\addtocounter{numAuthors}{\numAuthorsInt}%
%
\ifthenelse{\value{numAuthors} = 1}{%
% a single author
\StrBefore{\expAuthors}{,}~\cite{#1}%
}%
{\ifthenelse{\value{numAuthors} = 2}{%
% two authors
\def\secondAuthInt{}%
\StrBehind{\expAuthors}{and}[\secondAuthInt]%
%
\StrBefore{\expAuthors}{,}~and \StrBefore{\secondAuthInt}{,}~\cite{#1}%
}{%
% more than 2 authors
\StrBefore{\expAuthors}{,}~et~al.\@{}~\cite{#1}%
}}%
}