
Как указано в заголовке, есть ли способ сделать номера страниц в старом стиле, сохранив при этом нумерацию страниц («стр.» и «стр.»)?
Вот что я уже сделал:
Мой код 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