
Ao usar linguex
embalagem de numeração de exemplo, se eu usar \defaultfontfeatures{Numbers=OldStyle}
com xetex ou luatex, então com certos números de exemplo excedendo 99, não há espaçamento entre o número do exemplo e o texto:
Exemplo mínimo (com reticências de exemplos reais repetidos necessários para aumentar a numeração acima de 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}
Além de não usar números antigos, existe uma maneira de contornar isso? Tentei brincar com valores diferentes para o linguex \Exlabelwidth
, mas nenhum dos valores pareceu fazer qualquer diferença.
Responder1
A origem do problema
O problema é causado pelo fato de a fonte Junicode ter números de estilo antigo proporcionais verdadeiros, enquanto algumas outras fontes têm números de estilo antigo de largura fixa e números de estilo antigo proporcionais. O linguex
pacote define um comprimento interno que é um múltiplo do menor dígito de largura na fonte atual. O menor dígito de largura na fonte Junicode é o 1
, e isso acaba sendo muito pequeno em relação a algumas das outras larguras numéricas na fonte, de modo que o cálculo do espaçamento do rótulo é prejudicado.
Podemos ver isso em ação comparando a largura dos números do estilo antigo do Junicode com a fonte Linux Libertine, que possui os dois tipos. Com os números proporcionais do estilo antigo, o problema surge, mas com os números do estilo antigo com largura fixa, isso não acontece. (Obrigado a Jason por apontar isso.)
\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}
A solução para o problema
Felizmente, existe uma maneira de corrigir isso: alguns comandos não documentados no pacote permitem que você defina larguras para o espaçamento das etiquetas. O autor das linguex
dicas sobre o problema na documentação
Espero que as fontes sejam cooperativas, mantendo mínima a diferença entre a largura dos dígitos. Caso contrário, você poderá experimentar um comportamento estranho de
\Exlabelwidth
Na verdade, ajudei a resolver um problema semelhante com outra fonte que foi a razão original deste código. O comando:
\philabeldefault
faz o seguinte:
\renewcommand{\philarge}{4\mindigitwidth}
\renewcommand{\philmiddle}{3\mindigitwidth}
\renewcommand{\philsmall}{2\mindigitwidth}}
Onde os números aqui são os multiplicadores de 100, 10 e 1, respectivamente. Observe que os multiplicadores são diferentes para cada conjunto, o que resultará em espaçamento não uniforme.
Portanto, uma maneira de resolver o problema é apenas alterar o multiplicador do \philarge
comprimento:
\renewcommand{\philarge}{4.5\mindigitwidth}
funciona bem.
No entanto, você também pode fornecer um comprimento fixo para todos os três comprimentos usando o comando:
\phlabelwidth
Esta é talvez uma solução melhor. Então, definindo
\phlabelwidth{1.4em}
resolve bem o problema.
\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}