Мне нужно отсортировать записи в библатексе только по первому автору (стиль authortitle), но мне нужен полный список авторов в библиографии. Я могу использовать что-то вроде
\DeclareSortingScheme{mio}{
\sort{\field{author}}
}
но как мне извлечь только первого автора? Иначе говоря, как мне извлечь частичную информацию из записей bibtex (первый автор в качестве примера?)
Может кто-нибудь мне помочь?
Спасибо
Я использую biblatex biber teklive
Порядок ссылок здесь должен быть обратным.
Пример:
\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{filecontents}
\usepackage[natbib = true, backend = biber, style = authoryear, sorting = nyt]{biblatex}
\begin{filecontents}{\jobname.bib}
@article{A2014,
author={A,B and C,D},
title={Test},
year = {2014}
}
@article{A2000,
author={A,B and D,E},
title={Test},
year = {2000}
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
ОБНОВЛЯТЬ
У меня сейчас есть ответ, но я все равно отредактировал вопрос, потому что думаю, что это может быть распространенной проблемой для новичков, таких как я, и я не нашел примера в сети.
Поэтому, пожалуйста, ответьте на этот вопрос, предоставив также некоторые подробности об использовании sortname
, \DeclareSourcemap
\DeclareSortingScheme
чтобы помочь мне в обучении.
решение1
Как я уже прокомментировал в вашем вопросе, я вижу две возможности сортировки записей библиографии:
Первый: использование только фамилии первого автора.
Как вы используете biber
, вы можете использовать labelalpha
(biblatex.pdf. страница 59). Используя labelalpha
вы можете использовать только одного автора, с maxalphanames
. Затем, если он установлен на 1
biber, используйте только первого автора (на самом деле фамилию) для создания labelalpha
. Наконец, необходимо указать схему сортировки, которая использует, labelalpha
например anyt
(страница 254, biblatex.pdf). Затем загрузите biblatex
с помощью:
\usepackage[maxalphanames=1,labelalpha,maxbibnames=99, sorting=anyt, style=authoryear, natbib=true, backend=biber]{biblatex}
МВЭ
\documentclass{article}
\begin{filecontents}{MWE.bib}
@article{A2014,
author={A,B and C,D},
title={Test},
year = {2014}
}
@article{A2000,
author={A,B and D,E},
title={Test},
year = {2000}
}
\end{filecontents}
\usepackage[maxalphanames=1,labelalpha,maxbibnames=99, sorting=anyt, style=authoryear, natbib=true, backend=biber]{biblatex}
\addbibresource{MWE.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}
maxbibanames=99
В библиографии указаны полные имена авторов .
Второе: использование полного имени Первого Автора
Это возможно с помощью DeclareStyleSourcemap
. Большинство схем сортировки по алфавиту по умолчанию biblatex
могут использовать sortname
поле. Тогда можно использовать DeclareStyleSourcemap
для копирования полное имя первого автора в sortname
поле. Для объяснений о Regular Expressions
прочтите perl
документациюздесь.
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=author, match=\regexp{(.+)\sand}, final]
\step[fieldset=sortname, fieldvalue=$1, final] }
}}
МВЭ
\documentclass{article}
\begin{filecontents}{MWE.bib}
@article{A2014,
author={A,Bo and M,M},
title={Test},
year = {2014}
}
@article{A2000,
author={A,Co and D,E},
title={Test},
year = {2000}
}
\end{filecontents}
\RequirePackage[maxbibnames=99, sorting=nyt, style=authoryear, backend=biber]{biblatex}
\DeclareStyleSourcemap{
\maps[datatype=bibtex]{
\map{
\step[fieldsource=author, match=\regexp{(.+)\sand}, final]
\step[fieldset=sortname, fieldvalue=$1, final] }
}}
\addbibresource{MWE.bib}
\begin{document}
\nocite{*}
\printbibliography
\end{document}