Как изменить порядок сортировки, чтобы разместить ссылки на онлайн-ресурсы в конце библиографии?

Как изменить порядок сортировки, чтобы разместить ссылки на онлайн-ресурсы в конце библиографии?

Я хочу придать меньший вес записям @misc в моей библиографии, переместив их в конец, после публикаций академических конференций. Мне нравится, как abbrvnat представляет элементы библиографии в остальном. Я также использую natbib для получения числовых ссылок и уплотнения.

По умолчанию он сортирует цитаты по именам авторов (что нормально), а когда имя автора не указано, похоже, что он использует что-то другое (название?) в качестве поля сортировки в библиографии.

Какой самый простой способ отправить все ссылки @misc в конец документа, сохранив их относительный порядок?

Пример документа:

\documentclass[11pt]{article}
\usepackage[hyphens]{url}
\usepackage[numbers,sort&compress]{natbib}

\begin{document}

Articles: \cite{bogus, greenwade93}

Website: \cite{example}

\bibliographystyle{abbrvnat}
\bibliography{biblio}

\end{document}

\bibliographystyle{myabbrvnat}
\bibliography{biblio}

Пример библиографии:

@misc{example,
  title = {{Example.org Home Page}},
  howpublished = {\url{http://example.org/}},
  note = {Accessed: June 2017.}
}

@article{bogus,
  aurhor =  {Bogus Redwade},
  title = {A Bogus Article},
  year = {1993},
}

@article{greenwade93,
  author  = {George D. Greenwade},
  title   = {The {C}omprehensive {T}ex {A}rchive {N}etwork ({CTAN})},
  year    = {1993},
  journal = {TUGBoat},
  volume  = {14},
  number  = {3},
  pages   = {342--351}
}

В этом примере я хотел бы, чтобы веб-сайт переместился в конец списка. Если веб-сайтов несколько, то их относительный порядок должен быть сохранен.

Скриншот

решение1

Учитывая, что вы готовы изменить файл библиографии, вы можете воспользоваться известным \noopsortобходным решением (см.https://tex.stackexchange.com/search?q=noopsort) для сортировки записей misc после остальных. Поскольку сортировка выполняется по автору, вам также следует изменить поле заголовка записей misc на author. Для этого решения вам не нужно изменять -file .bst.

Пример:

@PREAMBLE{ {\providecommand{\noopsort}[1]{}} }

@misc{example,
  author = {{\noopsort{zzz-example}}{Example.org Home Page}},
  howpublished = {\url{http://example.org/}},
  note = {Accessed: June 2017.}
}

Результат:

введите описание изображения здесь

В качестве альтернативы, biblatexего можно использовать без изменения файла библиографии, распечатав отдельные разделы ссылок в зависимости от типа. Адаптировано изhttps://tex.stackexchange.com/a/6966:

\printbibliography[nottype=misc,title={References}]
\vspace{-6mm}
\printbibliography[heading=none,type=misc]

Небольшая проблема здесь заключается в том, что второй раздел библиографии, даже без заголовка, все равно вводит дополнительный пробел, который необходимо удалить (например, с помощью отрицательного знака vspace).

решение2

Я нашел один способ, но он требует редактирования BST-файла. Что кажется излишеством. Однако, похоже, что BST-файл отвечает за сортировку.

Сначала я попробовал изменить то, что, по моему мнению, было ключом записи, например, изменить @misc{foo,...}на , @misc{z-foo,...}но это не дало никакого эффекта, поэтому я копнул глубже.

Шаг 1. Редактирование bst-файла

  1. скопировать abbrvnat.bst в каталог проекта ( $ cp /usr/share/texlive/texmf-dist/bibtex/bst/natbib/abbrvnat.bst ./myabbrtnat.bst)
  2. В верхней части файла обратите внимание, что написано: «Работы с идентичными авторами и годом далее сортируются по ключу цитирования, чтобы сохранить естественную последовательность». Abbrvnat сортирует сначала по авторам. Что, вероятно, означает, что сортировка выполняется по кортежу: (author(s), year, key).

  3. отредактируйте скопированный файл:

    1. В ENTRYразделе после keyдобавьте новое поле, названное sortkeyв отдельной строке.
    2. Есть функция author.sort. Я изменил ее для обработки поля 'sortkey', чтобы переопределить поле author:

(некоторые типы ссылок не используют сортировку по автору (например, сортировка по редактору), поэтому это может потребоваться повторить в других местах в зависимости от вашей библиографии)

FUNCTION {author.sort}
{ sortkey empty$
    { author empty$
      { key empty$
          { "to sort, need author or key in " cite$ * warning$
          ""
          }
          { key sortify }
    if$
      }
      { author sort.format.names }
      if$
    }
    { sortkey sortify }
  if$
}

Шаг 2. Используйте модифицированный BST

  1. В основном файле latex: изменить на\bibliographystyle{myabbrvnat}

  2. Для каждого элемента библиографии, порядок которого необходимо изменить, добавьте поле sortkeyс новым значением, которое следует использовать для определения его порядка.Я добавляю «zz-» к названию записи, если хочу отправить ее последней..

В текс:

...
Website: F~\cite{example-f}, E~\cite{example-e}, A~\cite{example-a}
...

И библио:

@misc{example-a,
  sortkey = {axample}, % will go before others - starts with 'a'
  title = {{Axample.org Home Page}},
  howpublished = {\url{http://example.org/}},
}

@misc{example-e,
  sortkey = {zzz-example},     % send to the back. prefix with 'zzz-'
  title = {{Example.org Home Page}},
  howpublished = {\url{http://example.org/}},
}

@misc{example-f,
  sortkey = {zzz-fxample},     % send to the back. prefix with 'zzz-'
  title = {{Fxample.org Home Page}},
  howpublished = {\url{http://example.org/}},
}

Производит:

результат

Связанный контент