Сортировать только по первому автору (не по всем именам), а не по году или сортировать по частичной записи в biblatex

Сортировать только по первому автору (не по всем именам), а не по году или сортировать по частичной записи в biblatex

Мне нужно отсортировать записи в библатексе только по первому автору (стиль 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. Затем, если он установлен на 1biber, используйте только первого автора (на самом деле фамилию) для создания 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}

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

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