我自动生成了 bibtex 文件,其中包含许多长罗马卷号,如 LXXXVIII。这通常会导致排版参考书目中的水平框过满,因为它们无法用连字符连接。
可以告诉 biblatex 自动将它们转换为阿拉伯语吗,如本例中的 88?
答案1
该etoolbox
包提供了将罗马数字转换为阿拉伯数字的宏\rmntonum
。Biblatex 允许声明字段格式来修改字段的内容。因此使用\rmntonum
with\DeclareFieldFormat
可实现所需的功能。
为了确保当卷号不是罗马数字时仍能正确打印,您可以使用\ifrmnum
(也来自etoolbox
)并且仅当卷号实际上是罗马数字时才进行转换(否则只打印未转换的数字)。
梅威瑟:
\documentclass{article}
\usepackage{filecontents}
\usepackage{biblatex}
\usepackage{etoolbox}
\begin{filecontents*}{\jobname.bib}
@article{myarticle,
author={John Doe},
title={Some Article},
journal={A Journal},
volume={LXXXVIII},
year={2020},
publisher={Roman Publishing}
}
@article{myotherarticle,
author={John Smith},
title={Other Article},
journal={Some Journal},
volume={23},
year={2020},
publisher={Arabic Publishing}
}
\end{filecontents*}
\addbibresource{\jobname.bib}
\DeclareFieldFormat[article]{volume}{\ifrmnum{#1}{\rmntonum{#1}}{#1}}
\begin{document}
\cite{myarticle,myotherarticle}
\printbibliography
\end{document}
结果: