将扩展引用样式更改为压缩引用样式

将扩展引用样式更改为压缩引用样式

我在模板中格式化引用样式时遇到了困难。我已将\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指令。

顺便说一句,选项numberssuper是互相排斥的;您实际上需要哪种引用标注样式?

选项squarecomma默认处于活动状态,因此无需明确设置它们。

假设您想要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}

相关内容