Linguex에서는 이전 스타일 숫자를 사용할 때 99보다 큰 특정 값이 있는 숫자와 예제 사이의 간격이 잘못되었습니다.

Linguex에서는 이전 스타일 숫자를 사용할 때 99보다 큰 특정 값이 있는 숫자와 예제 사이의 간격이 잘못되었습니다.

예제 번호 매기기 패킹을 사용할 때 xetex 또는 luatex와 함께 linguex사용하면 \defaultfontfeatures{Numbers=OldStyle}특정 예제 번호가 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에 대해 다른 값을 사용해 보았지만 \Exlabelwidth어떤 값도 아무런 차이가 없는 것 같습니다.

답변1

문제의 근원

문제는 Junicode 글꼴이 실제 비례 구 스타일 번호를 갖는 반면 일부 다른 글꼴에는 고정 너비 구 스타일 번호와 비례 구 스타일 번호가 모두 있다는 사실로 인해 발생합니다. 패키지 linguex는 현재 글꼴에서 가장 작은 너비 숫자의 배수인 내부 길이를 설정합니다. Junicode 글꼴에서 가장 작은 너비 숫자는 1이며 이는 글꼴의 다른 숫자 너비에 비해 너무 작아서 레이블 간격 계산이 중단됩니다.

Junicode 이전 스타일 숫자의 너비를 두 종류가 모두 있는 Linux Libertine 글꼴과 비교하여 실제로 이를 확인할 수 있습니다. 비례적인 이전 스타일 숫자에서는 문제가 발생하지만 고정 너비 이전 스타일 숫자에서는 문제가 발생하지 않습니다. (이 점을 지적해주신 Jason에게 감사드립니다.)

\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}

코드 출력

관련 정보