作者在自己的 bst 文件中引用了 miss

作者在自己的 bst 文件中引用了 miss

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会产生“(作者?)“。

在此处输入图片描述

这个问题确实不是如果代码重新运行的样式设置为,例如,plainnatapalike——两者都可以产生作者年份样式和数字样式的引文标注,则会发生这种情况。因此,补救措施是确保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}%
    }}%
}

相关内容