我在模板中格式化引用样式时遇到了困难。我已将\PassOptionsToPackage{square,comma,numbers,sort&compress,super}{natbib}
强制压缩引用样式添加到我的文档中,但它没有给我想要的结果。它不是将引用格式化为 [1-5],而是将其格式化为 [1,2,3,4,5]。我附上了一张截图以供参考。有什么关于如何解决这个问题的想法吗?谢谢
我已将以下文档的主要定义列出
\documentclass[journal]{elsarticle}
\usepackage{lineno}
\usepackage{hyperref}
\usepackage{amsmath}
\PassOptionsToPackage{square,comma,numbers,sort&compress,super}{natbib}
\usepackage{natbib}
\modulolinenumbers[5]
\journal{Optik}
答案1
文档elsarticle
类会natbib
自动加载包。因此,指令
\PassOptionsToPackage{square,comma,numbers,sort&compress,super}{natbib}
如果 LaTeX 遇到这种情况,那就太晚了后该\documentclass
指令。
顺便说一句,选项numbers
和super
是互相排斥的;您实际上需要哪种引用标注样式?
选项square
和comma
默认处于活动状态,因此无需明确设置它们。
假设您想要numbers
,这也是elsarticle
文档类的默认设置,我能想到的最简单的解决方法是将选项放在指令sort&compress
的参数之中\documentclass
,即编写
\documentclass[journal,sort&compress]{elsarticle}
为了便于管理,我还会删除(或注释掉)多余的\usepackage{natbib}
指令。
\documentclass[journal,sort&compress]{elsarticle}
% create a sample bib file "on the fly"
\begin{filecontents}[overwrite]{mybib.bib}
@misc{a:3001,author={A},title={KLM},year=3001}
@misc{b:3002,author={B},title={NOP},year=3002}
@misc{c:3003,author={C},title={QRS},year=3003}
\end{filecontents}
\usepackage{lineno}
\usepackage[colorlinks,allcolors=blue]{hyperref}
\usepackage{amsmath}
\modulolinenumbers[5]
\journal{Optik}
\bibliographystyle{elsarticle-num} % select a suitable bib style
\begin{document}
\noindent
\cite{a:3001,c:3003},
\cite{a:3001,b:3002,c:3003}
\bibliography{mybib} % entries are listed in order of first citation in doc.
\end{document}
答案2
折腾了一段时间后,我找到了一个适合我的情况的解决方案。首先,我将其更改\usepackage[journal]{elsarticle}
为\usepackage[journal,nonatbib]{elsarticle}
禁用natbib
类模板的使用。该行\usepackage[square,comma,numbers,sort&compress]{natbib}
现在按预期工作。因此,显然模板类中的某些内容阻止了 natbib 接受可选参数。为清楚起见,最终代码如下所示。
\documentclass[journal,nonatbib]{elsarticle}
\usepackage[square,comma,numbers,sort&compress]{natbib}