Biblatex:罗马数字页面的小写字母

Biblatex:罗马数字页面的小写字母

在 Biblatex 中,我可以在页面字段和引用命令中使用罗马数字。例如:

@InBook{id,
author    = {Surname, Name},
title     = {Title},
booktitle = {Book Title},
date      = {2000},
pages     = {x-cx},

}

或者:

\footcite[xc]{id}

我想以小写字母打印页码。可以吗?

答案1

以下说明如何使罗马页码biblatex以小写形式显示。

首先,我们定义一个宏\mknormrangescromannums,用于检测给定的数字是否为罗马数字,并在这种情况下应用额外的格式。罗马数字的测试基于其他数字测试biblatex\ifinteger\ifnumeral\ifnumerals、 ...)。

然后我们使用( 3.13 [2019-08-17]中引入)<itempostpro>的参数来调用所有页码。\mknormrangebiblatex\mknormrangescromannums

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

\usepackage[style=authoryear, backend=biber]{biblatex}

\makeatletter
\def\blx@hook@ifromannum{%
  \def\do##1{\uccode`##1=`\%}%
  \do\i\do\v\do\x\do\l\do\c\do\d\do\m
  \do\I\do\V\do\X\do\L\do\C\do\D\do\M}

\protected\def\blx@imc@ifromannumeral{%
  \blx@ifnum\blx@hook@ifromannum}

\blx@regimcs{\ifromannumeral}
\makeatother

\newrobustcmd*{\smallcapsromannums}[1]{%
  \ifromannumeral{#1}
    {\textsc{\lowercase{#1}}}
    {#1}}

\newcommand*{\mknormrangescromannums}{\mknormrange[][\smallcapsromannums]}

\DeclareFieldFormat{postnote}{\mkpageprefix[pagination][\mknormrangescromannums]{#1}}
\DeclareFieldFormat{pages}{\mkpageprefix[bookpagination][\mknormrangescromannums]{#1}}

\begin{filecontents}{\jobname.bib}
@InBook{id,
  author    = {Surname, Name},
  title     = {Title},
  booktitle = {Book Title},
  date      = {2000},
  pages     = {x-cx},
}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\autocite[xxi]{id}

\autocite[12-45]{id}

\autocite[hello]{id}

\printbibliography
\end{document}

(姓氏 2000,第 xxi 页)其中“xxi”采用小写字母

答案2

这是完全可能的:将此代码添加到您的序言中以定义scroman编号:

\makeatletter
    \def\scroman#1{\expandafter\@scroman\csname c@#1\endcsname}
    \def\@scroman#1{{\scshape\romannumeral #1}}
\makeatother

如果需要,我们也可以定义一个 scosroman编号,与上面相同,不同之处在于诸如xviii(几个最后的is)之类的数字被打印为xviij,即最后的 i 被替换为(小型大写字母)j。

相关内容