带排序的多重引用页码范围

带排序的多重引用页码范围

我希望引用多个来源,并自动排序,并能够指定每个来源的页码范围。我使用 biblatex 并采用以下配置:

\usepackage[
   firstinits=true,
   sortcites=true,  %řadit zdroje
   backend=biber,
   style=iso-numeric,
   ]{biblatex}
\addbibresource{literatura.bib}
\renewcommand\multicitedelim{\addsemicolon\space}%Change coma to semicolon

引用如下

\cite{a,c,b}

会给我

[a;b;c]

因为我已经解决了排序和用分号分隔的问题。但是我需要类似

[a,第 10-12 页;b;c,第 25 页]

\cites[p.~10-12]{a}[p.~25]{c}[]{b}

由于它似乎无法对引用进行排序,因此并没有起到什么作用。

这个问题有解决办法吗?或者我是否应该以某种方式解决它?

答案1

一般方法使用 biblatex 中的 \cites 命令对引用进行排序仍可使用。但它需要更新 再次。

在 Audrey 的原始代码中替换

\def\cbx@sortkeysinit{%
  \ifcsundef{blx@sort@\the\c@refsection}
    {\global\letcs{\cbx@sortkeys}
       {blx@slists@\the\c@refsection @entry@\blx@sorting}}% Biber
    {\global\letcs{\cbx@sortkeys}{blx@sort@\the\c@refsection}}}% BibTeX

\def\cbx@sortkeysinit{%
  \ifcsundef{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}
    {}
    {\global\csletcs{cbx@sortkeys}{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}}}

然后一切都应该再次像宣传的那样运作

\documentclass{article}
\usepackage[style=authortitle,sorting=ynt,sortcites]{biblatex}

\makeatletter

% original definition of \cites
\DeclareMultiCiteCommand{\cbx@cites}{\cite}{\multicitedelim}

% new definition
\DeclareMultiCiteCommand{\cites}[\cbx@cite@wrapper\cbx@cites]{\cbx@cite}{}

% first pass saves keys, prenotes, postnotes
\DeclareCiteCommand{\cbx@cite}
  {\csxdef{prenote:\thefield{entrykey}}{\thefield{prenote}}}
  {\listxadd\cbx@savekeys{\thefield{entrykey}}}
  {}
  {\csxdef{postnote:\thefield{entrykey}}{\thefield{postnote}}}

% second pass outputs sorted citation list
\newrobustcmd{\cbx@cite@wrapper}[2]{%
  \def\cbx@savekeys{}%
  \def\cbx@citecall{#1}%
  #2\cbx@sortkeysinit\cbx@citesort\cbx@citecall}

% internal list of saved keys => sorted argument list
\def\cbx@citesort{%
  \def\do##1{%
    \ifinlist{##1}{\cbx@savekeys}
      {\protected@xappto\cbx@citecall{%
         [\csuse{prenote:##1}][\csuse{postnote:##1}]{##1}}}
      {}}%
  \dolistloop{\cbx@sortkeys}}

% internal list of sorted entry keys
\def\cbx@sortkeysinit{%
  \ifcsundef{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}
    {}
    {\global\csletcs{cbx@sortkeys}{blx@dlist@entry@\the\c@refsection @\blx@refcontext@context}}}
\def\cbx@sortkeys{}

\makeatother

\addbibresource{biblatex-examples.bib}
\newcommand{\cmd}[1]{\texttt{\textbackslash #1}}
\setlength{\parindent}{0pt}
\begin{document}
\cmd{cite}: \cite{companion,ctan,vangennep,markey} \\
\cmd{cites}: \cites[e.g.][10]{companion}{ctan}{markey}[10--11]{vangennep} \\
\cmd{Cites}: \Cites{ctan}{markey}[e.g.][5--10]{companion}[10--11]{vangennep}
\printbibliography
\end{document}

在此处输入图片描述

相关内容