Отдельная библиография римскими цифрами, цитируемая везде

Отдельная библиография римскими цифрами, цитируемая везде

Я хотел бы иметь две библиографии в моей докторской диссертации, где первая перечисляет мои собственные публикации, которые включены в диссертацию, и появляется в начале, пронумерованная римскими цифрами. Затем основная часть текста должна иметь возможность ссылаться на эту библиографию, с римскими цифрами, и на основную библиографию с обычными цифрами.

Моя лучшая попытка на данный момент, послеСуббиблиография с римскими цифрами и Biblatexи некоторые другие темы, имеет два недостатка: ссылки на первую библиографию пронумерованы латинскими цифрами, и я вообще не могу сослаться на первую библиографию из основного текста (а именно там я бы хотел ее сослаться).

Минимальный (не совсем) рабочий пример:

\documentclass{article}
\usepackage[backend=biber]{biblatex}
\DeclareFieldFormat{Roman}{\RN{#1}}
% The following definition is copied from numeric.bbx
\defbibenvironment{roman-numerals}
  {\list
     {\printtext[labelnumberwidth]{%
    \printfield{prefixnumber}%
    \printfield[Roman]{labelnumber}}}
     {\setlength{\labelwidth}{\labelnumberwidth}%
      \setlength{\leftmargin}{\labelwidth}%
      \setlength{\labelsep}{\biblabelsep}%
      \addtolength{\leftmargin}{\labelsep}%
      \setlength{\itemsep}{\bibitemsep}%
      \setlength{\parsep}{\bibparsep}}%
      \renewcommand*{\makelabel}[1]{\hss##1}}
  {\endlist}
  {\item}

\begin{filecontents}{\jobname.bib}
@misc{A01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
}
@misc{B02,
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo},
}
\end{filecontents}

\begin{filecontents}{\jobname-mine.bib}
@misc{Mine1,
  author = {Me, M.},
  year = {2001},
  title = {Alpha},
}
@misc{Mine2,
  author = {Me, M.},
  year = {2002},
  title = {Bravo},
}
@misc{Mine3,
  author = {Me, M.},
  year = {2003},
  title = {Charlie},
}

\end{filecontents}

\addbibresource{\jobname.bib}
\addbibresource{\jobname-mine.bib}

\begin{document}
\begin{refsection}[\jobname-mine.bib]
\nocite{*}
\printbibliography[title={My publications}, env=roman-numerals]
\end{refsection}
Some text that won't be here, but note roman numerals don't work even here \cite{Mine1, Mine3}.

\section{Main text}

\begin{refsection}[\jobname.bib]
Citing things in body \cite{A01, B02}. Would like to cite things in section mine    \cite{Mine1}
\printbibliography[title=References]
\end{refsection}

\end{document}

решение1

Я нашел решение, которое достаточно хорошо для моих собственных целей, поэтому я отвечаю на свой собственный вопрос. Как и предложил @cfr, использование поля сокращений для римских цифр в основном решает проблему. Часть разделения работает, не используя refsection для основного текста.

Оставшиеся недостатки для тех, кто хочет попытаться улучшить это:

  • необходимо вручную ввести римские цифры в поля сокращений
  • DeclareSourceMap кажется немного излишним, чтобы просто не допустить повторного появления моих публикаций в основной библиографии. Есть ли лучший способ сделать это?
  • это не будет работать, если кто-то захочет использовать отдельные секции ссылок в основном теле (я, к счастью, этого не делаю)

Код:

\documentclass{article}
\usepackage[backend=biber]{biblatex}

%test data: other references
\begin{filecontents}{\jobname.bib}
@misc{A01,
  author = {Author, A.},
  year = {2001},
  title = {Alpha},
}
@misc{B02,
  author = {Buthor, B.},
  year = {2002},
  title = {Bravo},
}
\end{filecontents}

%test data: my papers
\begin{filecontents}{\jobname-mine.bib}
@misc{Mine1,
  author = {Me, M.},
  year = {2001},
  title = {My Alpha},
  shorthand={\RN{1}}
}
@misc{Mine2,
  author = {Me, M.},
  year = {2002},
  title = {My Bravo},
  shorthand={\RN{2}}
}
@misc{Mine3,
  author = {Me, M.},
  year = {2003},
  title = {My Charlie},
  shorthand={\RN{3}}
}

\end{filecontents}

%Auto-add the keyword thpaper. Not strictly necessary, but saves some trouble
\DeclareSourcemap{
 \maps[datatype=bibtex]{
  \map{\perdatasource{\jobname-mine.bib} \step[fieldset = keywords, fieldvalue = {thpaper}]
  }
 }
}


\addbibresource{\jobname.bib}    
\addbibresource{\jobname-mine.bib}

\begin{document}

%Print the references to my papers. Refsection allows easy shortcutting with nocite{*} limited to the correct file
\begin{refsection}[\jobname-mine.bib]
\nocite{*}
\printbibliography[title={My publications}]
\end{refsection}

\section{Main text}

Citing things in body \cite{A01, B02}. Would like to cite my own publications \cite{Mine1}, and now it works, with the roman numerals even.
%Print the main bibliography, notkeyword=thpaper keeps my papers from re-appearing. 
%Using a refsection with a filename would be nicer, but that breaks the citations to my 
%publications.
\printbibliography[title=References, notkeyword=thpaper]

\end{document} 

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