
使用linguex
範例編號打包時,如果我\defaultfontfeatures{Numbers=OldStyle}
與 xetex 或 luatex 一起使用,則對於某些超過 99 的範例編號,範例編號和文字之間沒有空格:
最小範例(省略實際重複範例,以將編號推至 99 以上):
\documentclass{article}[12pt]
\usepackage{fontspec}
\defaultfontfeatures{Numbers=OldStyle}
\setmainfont{Junicode}
\usepackage{linguex}
\begin{document}
\ex. Hello, world! Quit. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
....
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\end{document}
除了不使用舊式數字之外,還有其他方法可以解決這個問題嗎?我嘗試為 linguex's 使用不同的值\Exlabelwidth
,但這些值似乎都沒有任何區別。
答案1
問題的根源
這個問題是由以下事實引起的:Junicode 字體具有真正的比例舊樣式數字,而其他一些字體同時具有固定寬度舊樣式數字和比例舊樣式數字。此linguex
套件設定的內部長度是目前字體中最小寬度數字的倍數。 Junicode 字體中最小寬度的數字是1
,而事實證明,相對於字體中的其他一些數字寬度來說,這個數字太小,因此標籤間距的計算被拋棄。
透過比較 Junicode 舊式數字與具有這兩種類型的 Linux Libertine 字體的寬度,我們可以看到這一點。對於成比例的舊樣式數字,會出現問題,但對於固定寬度的舊樣式數字,則不會出現問題。 (感謝傑森指出了這一點。)
\documentclass[varwidth]{standalone}
\usepackage{fontspec}
\newfontfamily\Junicode[Numbers=OldStyle]{Junicode}
\newfontfamily\LibertineFixed[Numbers=OldStyle]{Linux Libertine O}
\newfontfamily\LibertineProportional[Numbers={OldStyle,Proportional}]{Linux Libertine O}
\usepackage{linguex}
\usepackage{pgffor}
\newlength{\tmplen}
\newcommand{\displaywidthof}[1]
{\settowidth{\tmplen}{#1}\parbox{.8in}{#1: \the\tmplen}}
\begin{document}
\foreach \x in {Junicode,LibertineProportional,LibertineFixed}{
\csname\x\endcsname
\x
\foreach \y in {0,...,9}{
\displaywidthof{\y}
}
\setcounter{ExNo}{99}
\ex. XXX.
\ex. YYY.
}
\end{document}
問題的解決方案
幸運的是,有一種方法可以解決這個問題:套件中的一些未記錄的命令允許您設定標籤間距的寬度。作者linguex
在文件中提示了問題
我希望字體能夠透過保持數字寬度之間的差異最小來進行協作。否則你可能會遇到奇怪的行為
\Exlabelwidth
事實上,我用另一種字體幫助解決了類似的問題,這就是此程式碼的最初原因。命令:
\philabeldefault
執行以下操作:
\renewcommand{\philarge}{4\mindigitwidth}
\renewcommand{\philmiddle}{3\mindigitwidth}
\renewcommand{\philsmall}{2\mindigitwidth}}
這裡的數字分別是 100、10 和 1 的乘數。請注意,每組的乘數都不同,這將導致間距不均勻。
因此解決該問題的一種方法是更改長度的乘數\philarge
:
\renewcommand{\philarge}{4.5\mindigitwidth}
工作正常。
但是,您也可以使用以下命令為所有三個長度指定固定長度:
\phlabelwidth
這或許是更好的解決方案。所以設定
\phlabelwidth{1.4em}
很好地解決了問題。
\documentclass{article}[12pt]
\usepackage{fontspec}
\defaultfontfeatures{Numbers=OldStyle}
\setmainfont{Junicode}
\usepackage{linguex}
\phlabelwidth{1.4em}
\begin{document}
\ex. Hello, world! Quit. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\setcounter{ExNo}{9}
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\setcounter{ExNo}{99}
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\ex. Hello, world! Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\end{document}