在 gb4e 的示例数字中使用等宽数字,但在其他地方按比例显示

在 gb4e 的示例数字中使用等宽数字,但在其他地方按比例显示

我在文档中使用了比例数字。但在gb4e的示例数字,我希望有等宽数字,以便示例括号的宽度在整个文档中保持不变。

在下面的 MWE 中,换句话说,我希望示例数字(1)(2)等宽字体,以便它们的宽度相同,但数字序列021345应该使用比例数字。

\documentclass{article}
\usepackage{fontspec}
    \setmainfont[Numbers = {OldStyle, Proportional}]{Linux Libertine O}
\usepackage{gb4e}
    \exewidth{(9)} % change the default (999) to one digit (9)
\begin{document}
\begin{exe}
\ex 012345
\ex 012345
\end{exe}
\end{document}

在此处输入图片描述

答案1

您可以pnum在创建标签时禁用该功能:

\documentclass{article}
\usepackage{fontspec}
\usepackage{gb4e}
\usepackage{etoolbox}

\makeatletter
\patchcmd{\@exe}
  {(\thexnumi)}
  {(\addfontfeatures{RawFeature=-pnum}\thexnumi)}
  {}{}
\makeatother

\setmainfont[Numbers = {OldStyle, Proportional}]{Linux Libertine O}

\exewidth{(9)} % change the default (999) to one digit (9)

\begin{document}
\begin{exe}
\ex 012345
\ex 012345
\end{exe}
\end{document}

在此处输入图片描述

答案2

我不是专家,gb4e而且它看起来很复杂,这个解决方案可能会在更现实的文档中引起问题,但它适用于您的示例。

\documentclass{article}
\usepackage{fontspec}
    \setmainfont[Numbers = {OldStyle, Proportional}]{Linux Libertine O}
\usepackage{gb4e}
    \exewidth{(9)} % change the default (999) to one digit (9)
% ----------------------------  
\makeatletter
\renewcommand{\thexnumi}{\makebox[.6em][c]{\@xsi{xnumi}}}
\makeatother
% ----------------------------
\begin{document}
\begin{exe}
\ex 012345
\ex 012345
\end{exe}
\end{document}

这个想法是将示例数字放入固定宽度的框中。

在此处输入图片描述

相关内容