
Я хочу придать меньший вес записям @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-файла
- скопировать abbrvnat.bst в каталог проекта (
$ cp /usr/share/texlive/texmf-dist/bibtex/bst/natbib/abbrvnat.bst ./myabbrtnat.bst
) В верхней части файла обратите внимание, что написано: «Работы с идентичными авторами и годом далее сортируются по ключу цитирования, чтобы сохранить естественную последовательность». Abbrvnat сортирует сначала по авторам. Что, вероятно, означает, что сортировка выполняется по кортежу:
(author(s), year, key)
.отредактируйте скопированный файл:
- В
ENTRY
разделе послеkey
добавьте новое поле, названноеsortkey
в отдельной строке. - Есть функция 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
В основном файле latex: изменить на
\bibliographystyle{myabbrvnat}
Для каждого элемента библиографии, порядок которого необходимо изменить, добавьте поле
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/}},
}
Производит: