% This file is public domain. See the "Examples" chapter
% in the bib2gls user manual for a more detailed description
% of this file.

% bib2gls must be run with the --cite-as-record switch

\documentclass[12pt,a4paper]{article}

\usepackage[record,% using bib2gls
nomain,% don't define main glossary
postdot,% full stop after descriptions
nostyles,% don't load default styles
% load glossary-tree and glossary-list and patch styles:
stylemods={tree,list}
]{glossaries-extra}

\newglossary*{contributors}{Authors}
\newglossary*{titles}{Titles}

\newcommand{\bibglsnewbibtexentry}[4]{%
 \longnewglossaryentry*{#1}{name={#3},#2,type={titles}}{#4}%
}

\GlsXtrLoadResources[
  src={citations},% data in citations.bib
  entry-type-aliases={\GlsXtrBibTeXEntryAliases},
  field-aliases={
    title=name
  },
  type={contributors},
  category={same as original entry},
  sort-field={category},
  sort-suffix={name}
]

\glsxtrsetgrouptitle{article}{Articles}
\glsxtrsetgrouptitle{book}{Books}

\newcommand{\contributorhandler}[1]{\par\glsentryname{#1} \cite{#1}}

\newcommand{\glsxtrpostdesccontributor}{%
  \glsxtrifhasfield{bibtexentry}{\glscurrententrylabel}%
  {%
    \glsxtrfieldforlistloop
    {\glscurrententrylabel}{bibtexentry}%
    {\contributorhandler}%
  }%
  {\par No titles.}%
}

\newcommand{\glsxtrpostdescarticle}{\cite{\glscurrententrylabel}}
\newcommand{\glsxtrpostdescbook}{\cite{\glscurrententrylabel}}

\begin{document}
This is a sample document with some citations~\cite{macaw,parrot}
and some more citations~\cite{duck2018,duck2016} and don't
forget~\cite{ing,parrot2012} and lastly~\cite{quackalot}.

\printunsrtglossary[type=contributors,style=altlist]
\printunsrtglossary*[type=titles,style=indexgroup]
{%
 \renewcommand{\glsxtrgroupfield}{category}%
 \renewcommand{\glstreenamefmt}[1]{\emph{#1}}%
 \renewcommand{\glstreegroupheaderfmt}[1]{\textbf{#1}}%
}

\bibliographystyle{unsrt}
\bibliography{citations}

\end{document}
