BibLaTeX — старый стиль нумерации страниц, сохранение «стр.» и «пп.» в библиографии

BibLaTeX — старый стиль нумерации страниц, сохранение «стр.» и «пп.» в библиографии

Как указано в заголовке, есть ли способ сделать номера страниц в старом стиле, сохранив при этом нумерацию страниц («стр.» и «стр.»)?

Вот что я уже сделал:

Мой код MWE:

% !TEX program = xelatex

\documentclass{article}

\usepackage{filecontents}
\usepackage{hyperref}

\begin{filecontents}{mybib.bib}
@Article{Cormos2012,
  Title        = {Integrated assessment of IGCC power generation technology with carbon capture and storage (CCS)},
  Author       = {Cormos, C.},
  Journal      = {Energy},
  Year         = {2012},
  Number       = {1},
  Pages        = {434-445},
  Volume       = {42},
  ISBN         = {0360-5442},
  Publisher    = {Elsevier Ltd},
  Url          = {http://dx.doi.org/10.1016/j.energy.2012.03.025}
}

@Article{Mumford2015,
  Title        = {Review of solvent based carbon-dioxide capture technologies},
  Author       = {Mumford, Kathryn a. and Wu, Yue and Smith, Kathryn H. and Stevens, Geoffrey W.},
  Journal      = {Frontiers of Chemical Science and Engineering},
  Year         = {2015},
  Number       = {2},
  Pages        = {125-141},
  Volume       = {9},
  Doi          = {10.1007/s11705-015-1514-6},
  ISBN         = {2095-0179},
  Keywords     = {absorption,carbon capture,carbon dioxide,large scale,solvent},
  Url          = {http://link.springer.com/10.1007/s11705-015-1514-6}
}

\end{filecontents}

\usepackage[%
    backend      = biber,
    style        = numeric-comp,
    firstinits   = true, 
    isbn         = false,
    doi          = true,
    url          = false,
    maxcitenames = 4,
    maxbibnames  = 4
]{biblatex}

\DeclareFieldFormat*{pages}{\mkpageprefix[pagination]{\oldstylenums{#1}}}

\addbibresource{mybib.bib}

\begin{document}
Here comes the 1st citation\autocite{Cormos2012} and the 2nd one\autocite{Mumford2015}.

\printbibliography
\end{document}

Как вы видите, номер страницы первой [1] вообще не меняется, а вот вторая успешно меняется. В обеих теряются "p." и "pp." которые я намерен сохранить.

Извините, я новичок и у меня возникли некоторые проблемы с «репутацией», чтобы опубликовать изображение.

решение1

С помощью \NumCheckSetupможно игнорировать \oldstylenumsпри проверке, является ли поле страниц числом. (См. такжеBiblatex не печатает «p.», когда номер страницы заканчивается на некоторые буквы,Составные номера страниц с одним тиреи\DeclareNumChars и команды в поле страницы)

Вероятно, самое безопасное решение —

\newcommand{\myosn}[1]{\ifpages{#1}{\oldstylenums{#1}}{#1}}

\DeclareFieldFormat*{pages}{\mkpageprefix[pagination]{\myosn{#1}}}
\NumCheckSetup{\renewcommand{\myosn}[1]{#1}}

В качестве альтернативы вы можете просто игнорировать\oldstylenums

\DeclareFieldFormat*{pages}{\mkpageprefix[pagination]{\oldstylenums{#1}}}
\NumCheckSetup{\def\oldstylenums#1{#1}}

Другое быстрое решение — добавить \oldstylenumsво внутренний макрос, отвечающий за\mkpageprefix

\makeatletter
\protected\long\def\blx@mkpageprefix#1[#2]#3{%
  \ifnumeral{#3}
    {\bibstring{#1}\ppspace}
    {\ifnumerals{#3}
       {\bibstring{#1s}\ppspace}
       {\def\pno{\bibstring{#1}}%
        \def\ppno{\bibstring{#1s}}}}%
  \blx@mkpageprefix@i[#2]{\oldstylenums{#3}}}
\makeatother

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