![参考书目排序](https://linux22.com/image/397615/%E5%8F%82%E8%80%83%E4%B9%A6%E7%9B%AE%E6%8E%92%E5%BA%8F.png)
URL 的列表方式与我想要的并不完全一致。URL-2 应该位于 URL-1 之后。但是,URL-10 和 URL-11 位于它们之间。
我的bst文件:链接 1
bst 文件的替代链接:链接 2
我的 MWE 是:
\documentclass[12pt]{report}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{r1,
title = {},
author = {{URL-1}},
year = {2019},
url = {https://earth.esa.int/web/guest/missions/esa-eo-missions/ers/mission-summary},
note = {2 Ocak 2019}
}
@misc{r2,
title = {},
author = {{URL-2}},
year = {2019},
url = {https://www.dlr.de/dlr/en/desktopdefault.aspx/tabid-10377/565_read-436/#/gallery/350},
note = {5 Ocak 2019}
}
@misc{r3,
title = {},
author = {{URL-3}},
year = {2019},
url = {http://global.jaxa.jp/projects/sat/alos/},
note = {5 Ocak 2019}
}
@misc{r10,
title = {},
author = {{URL-10}},
year = {2019},
url = {http://www.cosmo-skymed.it/en/index.htm},
note = {5 Ocak 2019}
}
@misc{r11,
title = {},
author = {{URL-11}},
year = {2018},
url = {https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/acquisition-modes/interferometric-wide-swath},
note = {13 Kasım 2018}
}
\end{filecontents}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[main=turkish,english,shorthands=:!]{babel}
\usepackage{titlesec}
\usepackage[normalem]{ulem}
\usepackage{etoolbox}
\usepackage{apacite}
%%% Same fonts for URL
\AtBeginDocument{\urlstyle{APACsame}} %
\usepackage{natbib}
%---------------------------
\usepackage[none]{hyphenat}
\usepackage[unicode]{hyperref} %
\urlstyle{same}
% BEGIN
\begin{document}
\sloppy % working with the \usepackage[none]{hyphenat} code
% CHAPTER-------------
\chapter{Chapter 1}
\cite{r1}\\
\cite{r2}\\
\cite{r3}\\
\cite{r10}\\
\cite{r11}\\
%---------------------
%BIBLIOGRAPHY---------
\setlength{\bibsep}{1\itemsep}
\bibliographystyle{tez}
\bibliography{\jobname}
%.....................
\end{document}
答案1
正如 David Carlisle 在评论中指出的那样,URL-1
在 ASCII 表中,后面跟着URL-10
和URL-11
,不是 URL-2
和URL-3
。
有一种成熟的方法可以覆盖 BibTeX 处理的书目中的默认排序顺序:在实际作者姓名前加上适当选择的\noopsort
指令。此处,\noopsort
应通过以下方式定义
\providecommand{\noopsort}[1]{}
然后,author
按如下方式修改该字段:
author = {{\noopsort{URL10}}URL-10},
\noopsort
就 LaTeX 而言,该指令“什么也不做”。但是,当 BibTeX 执行其操作时,它可以覆盖默认排序顺序,而这正是所需要的。
在以下示例中,请注意这五个\noopsort
语句。我不得不对您的代码进行一些更改,因为 (a) 我无法访问tez
书目样式,并且 (b) 同时加载apacite
和natbib
包是一个错误。我选择继续加载natbib
引文管理包并采用plainnat
书目样式。当然,您可以自由修改这些更改。
最后一条评论:我认为省略字段是一个错误——不是语法错误,而是内容错误title
。参考书目的首要目的是告知读者。我真的不明白你为什么不写title = {{ERS} Mission Summary},
条目r1
等等。
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@preamble{ "\providecommand{\noopsort}[1]{}" } % <-- new
@misc{r1,
title = {},
author = {{\noopsort{URL01}}URL-1},
year = {2019},
url = {https://earth.esa.int/web/guest/missions/esa-eo-missions/ers/mission-summary},
note = {2 Ocak 2019}
}
@misc{r2,
title = {},
author = {{\noopsort{URL02}}URL-2},
year = {2019},
url = {https://www.dlr.de/dlr/en/desktopdefault.aspx/tabid-10377/565_read-436/#/gallery/350},
note = {5 Ocak 2019}
}
@misc{r3,
title = {},
author = {{\noopsort{URL03}}URL-3},
year = {2019},
url = {http://global.jaxa.jp/projects/sat/alos/},
note = {5 Ocak 2019}
}
@misc{r10,
title = {},
author = {{\noopsort{URL10}}URL-10},
year = {2019},
url = {http://www.cosmo-skymed.it/en/index.htm},
note = {5 Ocak 2019}
}
@misc{r11,
title = {},
author = {{\noopsort{URL11}}URL-11},
year = {2018},
url = {https://sentinel.esa.int/web/sentinel/user-guides/sentinel-1-sar/acquisition-modes/interferometric-wide-swath},
note = {13 Kasım 2018}
}
\end{filecontents}
\documentclass[12pt]{report}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[main=turkish,english,shorthands=:!]{babel}
\usepackage{titlesec}
\usepackage[normalem]{ulem}
\usepackage{etoolbox}
%\usepackage[natbibapa]{apacite}
%\bibliographystyle{apacite}%{tez}
%%% Same fonts for URL
%\AtBeginDocument{\urlstyle{APACsame}} %
%r
\usepackage[round]{natbib}
\bibliographystyle{plainnat} % or some other suitable bib style
\usepackage[none]{hyphenat}
\usepackage[spaces,obeyspaces,hyphens]{xurl} % allow arbitrary line breaks in URL strings
\urlstyle{same}
\usepackage[colorlinks,allcolors=blue]{hyperref}
\begin{document}
\sloppy % working with the \usepackage[none]{hyphenat} code
\noindent
\cite{r1},
\cite{r2},
\cite{r3},
\cite{r10},
\cite{r11}
\setlength{\bibsep}{1\itemsep} % a dubious choice, in my opinion
\bibliography{\jobname}
\end{document}