Я хотел бы создать шаблон для списка публикаций, который затем может использоваться несколькими людьми. Идея заключается в том, что есть один bib-файл, который содержит все публикации. Рецензируемые записи помечены ключевым словом = pr. Затем есть главный файл типа scriptreport, в который каждый может интегрировать свой файл глав, чтобы объединить списки публикаций всех в один файл. Файл глав является ядром всего и должен быть многоразовым. Он должен отфильтровывать записи для соответствующего автора из bib-файла и выводить их в двух списках (рецензируемых и нерецензируемых). Моя проблема в том, что я действительно не знаю, как фильтровать по автору в этом случае. Вот приблизительные коды двух файлов:
Владелец:
\documentclass[a4paper]{scrreprt}
\usepackage{biblatex}
\title{Publication list}
\addbibresource{sample.bib}
\begin{document}
\maketitle
\tableofcontents
\newpage
\include{Researcher}
\newpage
\end{document}
глава:
\chapter*{Researcher}
\addcontentsline{toc}{chapter}{Researcher}
\nocite{*}
\printbibliography[keyword={pr}, title={Peer-reviewed}]
\nocite{*}
\printbibliography[notkeyword={pr}, title={Non-peer-reviewed}]
решение1
Фильтрация по имени не так проста. Одним из способов было бы использование sourcemap и regex для сопоставления имен и добавления ключевых слов (например,biblatex: выделение публикаций определенного автора в библиографии).
Другой способ использования сравнения строк/макросов показан на рисунке.biblatex: динамически отфильтровывать публикации определенного автора в ссылках. Похожий наВыделите конкретного автора жирным шрифтом с помощью biblatexЯ бы предпочел использовать хэши вместо сравнения строк/макросов.
Ниже приведена адаптация моего ответа.https://tex.stackexchange.com/a/416416/35864для жирных имен для фильтрации имен. Большую часть кода оттуда можно просто скопировать, новое — определить два bibcheck для фильтрации записей библиографии по произвольным условиям.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[backend=biber,style=authoryear]{biblatex}
\addbibresource{biblatex-examples.bib}
\makeatletter
\def\fnblx@bibfile@name{\jobname -fnblx.bib}
\newwrite\fnblx@bibfile
\immediate\openout\fnblx@bibfile=\fnblx@bibfile@name
\immediate\write\fnblx@bibfile{%
@comment{Auto-generated file}\blx@nl}
\newcounter{fnblx@name}
\setcounter{fnblx@name}{0}
\newcommand*{\fnblx@writenametobib}[1]{%
\stepcounter{fnblx@name}%
\edef\fnblx@tmp@nocite{%
\noexpand\AfterPreamble{%
\noexpand\setbox0\noexpand\vbox{%
\noexpand\fnblx@getmethehash{fnblx@name@\the\value{fnblx@name}}}}%
}%
\fnblx@tmp@nocite
\immediate\write\fnblx@bibfile{%
@misc{fnblx@name@\the\value{fnblx@name}, author = {\unexpanded{#1}}, %
options = {dataonly=true},}%
}%
}
\AtEndDocument{%
\closeout\fnblx@bibfile}
\addbibresource{\fnblx@bibfile@name}
\newcommand*{\fnblx@namehashes}{}
\DeclareNameFormat{fnblx@hashextract}{%
\xifinlist{\thefield{hash}}{\fnblx@namehashes}
{}
{\listxadd{\fnblx@namehashes}{\thefield{hash}}}}
\DeclareCiteCommand{\fnblx@getmethehash}
{}
{\printnames[fnblx@hashextract][1-999]{author}}
{}
{}
\newtoggle{fnblx@tempa}
\DeclareIndexNameFormat{fnblx@checkfilternames}{%
\xifinlist{\thefield{hash}}{\fnblx@namehashes}
{\global\toggletrue{fnblx@tempa}}
{}}
\newcommand*{\addbfilternames}{\forcsvlist\fnblx@writenametobib}
\newcommand*{\resetfilternames}{\def\fnblx@namehashes{}}
\defbibcheck{filternames}{%
\global\togglefalse{fnblx@tempa}
\indexnames[fnblx@checkfilternames][1-999]{labelname}%
\iftoggle{fnblx@tempa}
{}
{\skipentry}}
\defbibcheck{notfilternames}{%
\global\togglefalse{fnblx@tempa}
\indexnames[fnblx@checkfilternames][1-999]{labelname}%
\iftoggle{fnblx@tempa}
{\skipentry}
{}}
\makeatother
\begin{document}
\cite{sigfridsson,worman,geer,knuth:ct:a,knuth:ct:b}
\addbfilternames{Emma Sigfridsson}
\printbibliography[check=filternames, title={Works by Emma Sigfridsson}]
\printbibliography[check=notfilternames, title={Works not by Emma Sigfridsson}]
\resetfilternames
\addbfilternames{{Knuth, Donald E.}}
\printbibliography[check=filternames, title={Works by Donald Knuth}]
\printbibliography[check=notfilternames, title={Works not by Donald Knuth}]
\end{document}
Пользовательский интерфейс должен быть понятен без объяснений с примерами использования выше. Если у вас есть какие-либо вопросы о реализации, которые не охваченыhttps://tex.stackexchange.com/a/416416/35864, пожалуйста, спрашивайте заранее в комментариях.