如何在书目项目标签中使用衬线数字?

如何在书目项目标签中使用衬线数字?

这类似于如何更改 amsrefs 中参考书目项目标签的外观?,但针对的是标准 BibTeX 样式。

我有一份文档,其正文中使用了旧式数字。我还有一个使用字母样式的参考书目。大多数参考文献都有不止一位作者,因此条目标签由大写字母和缩写年份组成。由于大写字母太多,旧式数字在这些标签中看起来有些错位。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[osf]{libertine-type1}
\usepackage{url,natbib}

\begin{document}
\cite{LaTeXbase,armtex}

\bibliographystyle{alpha}
\bibliography{minitoc} % bibtex/bib/minitoc/minitoc.bib
\end{document}

带有 osf 的商品标签

我怎样才能改变这些书目项目标签内的内衬数字?

答案1

首先我们设置一个宏来将字体切换为比例衬线数字。这当然取决于使用的字体。

\usepackage[osf]{libertine-type1}
\newcommand{\switchtoPLF}{\fontfamily{LinuxLibertineO-LF}\selectfont}

% \usepackage[osf]{mathpazo}
% \newcommand{\switchtoPLF}{\fontfamily{ppl}\selectfont}

% \usepackage{cfr-lm}
% \newcommand{\switchtoPLF}{\plstyle}

使用时natbib,将引用、参考项和内衬图切换为

\renewcommand{\bibnumfmt}[1]{[\switchtoPLF{}#1]}    % switch reference item
\renewcommand{\citenumfont}[1]{{\switchtoPLF{}#1}}  % switch citation item

如果没有natbib,则以下工作:

\usepackage{etoolbox}
\makeatletter
\renewcommand{\@biblabel}[1]{[\switchtoPLF{}#1]}        % switch reference item
\patchcmd{\@citex}%
         {\csname b@\@citeb\endcsname}%
         {\switchtoPLF\csname b@\@citeb\endcsname}{}{}  % switch citation item
\makeatother

这两种方法都适用于hyperref,并且也适用于编号参考书目样式,例如plain,或plainnat

答案2

我遇到了同样的问题,但使用的是biblatexfontspecmafp 的解决方案,重新定义\@biblabel,对我来说不起作用。以下方法有效:

\AtBeginBibliography{\renewcommand{\makelabel}[1]{\addfontfeatures{Numbers = Lining}#1}}

不需要改变标签的格式,只需在书写标签时选择正确的字体功能即可。

答案3

因为这是我在搜索如何使用 BibLaTeX 执行此操作时出现的第一个问题,所以在标签中使用内衬数字的最简单方法(无论是在引用时还是在参考书目中)是重新定义该labelalpha字段,如下所示:

\DeclareFieldFormat{labelalpha}{\liningnums{#1}}

\liningnums{...}是包提供的命令libertine。不同的字体包提供不同的命令(如\textlf{...}xcharter或根本没有命令。如果没有提供切换到衬线图形的命令,可以定义一个新的命令,类似于 mafp 的答案。

相关内容