在 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>
的参数来调用所有页码。\mknormrange
biblatex
\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}
答案2
这是完全可能的:将此代码添加到您的序言中以定义scroman
编号:
\makeatletter
\def\scroman#1{\expandafter\@scroman\csname c@#1\endcsname}
\def\@scroman#1{{\scshape\romannumeral #1}}
\makeatother
如果需要,我们也可以定义一个 scosroman
编号,与上面相同,不同之处在于诸如xviii
(几个最后的i
s)之类的数字被打印为xviij
,即最后的 i 被替换为(小型大写字母)j。