natbib 与 \setcitestyle

natbib 与 \setcitestyle

根据natbib手册,您可以通过包选项来设置选项,也可以通过将它们提供给来设置选项\setcitestyle,但它们不会给出相同的结果

尝试使用下面的 MWE

\usepackage{natbib}
\setcitestyle{
  super,
  numbers,
  square,
}

或者

\usepackage[super,numbers,square]{natbib}

后者给了我想要的(相当于\textsuperscript{[1]}),但是在我们试图解决的情况下,我们不能直接给出选项natbib(我知道我可以先手动加载natbib,但这不是重点,两种解决方案都应该给出相同的结果)。

知道为什么吗?

\listfiles
\documentclass[a4paper]{article}
\usepackage{filecontents}
\begin{filecontents*}{xxx.bib}
\@article{xxx,
  title={My Title},
  author={An Author},
  year={2017},
  pages={92--93},
  publisher={My Publisher}
}
\end{filecontents*}
% shouldn't the below be equivalent to 
%\usepackage[super,numbers,square]{natbib}
\usepackage{natbib}
\setcitestyle{
  super,
  numbers,
  square,
}
\bibliographystyle{plainnat}
\begin{document}

test\cite{xxx}

 \bibliography{xxx}


\end{document}

答案1

回答我自己的问题

  • 包选项和 中的选项的\setcitestyle实现方式不同,numbers包选项设置numbers为 true,但numbers选项\setcitestyle设置numbers为 true 并super明确设置为错误的
  • \setcitestyle{...}使用其自己的低级逗号解析器,并且它不会删除关键字开头或结尾的空格。

所以

[super,numbers,square]

相当于

\setcitestyle{numbers,square,super}

super必须最后走。

正如约瑟夫提到的,numbers这里可能不需要,但也不会造成损害。

相关内容