Linguex 的间距问题

Linguex 的间距问题

我在更改 linguex 参数值时遇到问题。在文档它说你可以改变 的值\Extopsep,它负责环境前后的间距。我尝试了\setlength{\Extopsep}{.3\baselineskip}。我正在使用的 linguex 与 setspace 包的结合可能会有问题吗?

这就是我的程序的样子

\documentclass[12pt, a4paper]{article}
\usepackage{setspace}

\usepackage{linguex}
\let\eachwordone=\it
\setlength{\Extopsep}{.3\baselineskip}

\begin{document}

\begin{spacing}{1.5}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
\exg.
At vero eos et accusam \\
et justo duo dolores et \\

ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
\end{spacing}
\end{document}

代码创建的 PDF

示例之前的间距似乎比示例之后的间距大得多。我似乎无法找出我的代码的问题。有人能帮我解决这个问题吗?

编辑:

似乎只要您尝试baselinestretch以任何方式进行修改,间距就会变得不正确。我也尝试过不使用 setspace,但\linespread{1.5}还是不正确——使用 setspace 似乎没有什么区别。

\documentclass[12pt, a4paper]{article}
\linespread{1.5}

\usepackage{linguex}
\let\eachwordone=\it
\AtBeginDocument{\setlength{\Extopsep}{.3\baselineskip}}

\begin{document}

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
\exg.
At vero eos et accusam \\
et justo duo dolores et \\

ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
\end{document} 

PDF 行距问题

间距仍然不均匀,即使在没有setspace环境的情况下,问题似乎只是因为linguex本身的原因而发生的

答案1

linguex无法控制显示后的间距以及显示前的空间,因为它构建了一个两行 vbox,其参考点位于第一行的基线,这允许\baselineskip在顶部自动计算以控制基线到基线的空间,然而在底部,Tex 将第二行的所有内容视为深度,因此放弃并仅插入\lineskip(1pt)空间。

@wipet 前几天在这里给出了一个很好的简单示例和解决问题的方法

表格周围的垂直间距

这里唯一的问题是找到要保存的 vbox\prevdepth以及要恢复它的位置。盯着看\tracingall一会儿,就会\twosentcgloss4e包中找到。以下是\prevdepth在正确位置保存的一种方法(可能不是最好的方法),将其设置为(此处)第二行的 j 的深度。

\documentclass[12pt, a4paper]{article}
\usepackage{setspace}

\usepackage{linguex}
\makeatletter
\gdef\twosent#1\\ #2\\{% #1 = first line, #2 = second line
    \getwords(\lineone,\eachwordone)#1 \\%
    \getwords(\linetwo,\eachwordtwo)#2 \\%
%%%%
\xdef\zz{\prevdepth\the\dp\linetwo\relax}%
\aftergroup\aftergroup\aftergroup\zz
%%%%
    \loop\lastword{\eachwordone}{\lineone}{\wordone}%
         \lastword{\eachwordtwo}{\linetwo}{\wordtwo}%
         \global\setbox\gline=\hbox{\unhbox\gline
                                    \hskip\glossglue
                                    \vtop{\box\wordone   % vtop was vbox
                                          \nointerlineskip
                                          \box\wordtwo
                                         }%
                                   }%
         \testdone
         \ifnotdone
    \repeat
    \egroup % matches \bgroup in \gloss
   \gl@stop}





\begin{document}

\begin{spacing}{1.5}\setlength{\Extopsep}{0pt}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 


\exg.
At vero eos et accusam \\
et justo duo doloregs et \\


ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
\end{spacing}
\end{document}

在此处输入图片描述

答案2

您的示例有两个问题。首先,linguex包使用 重置了所有默认长度\AtBeginDocument,因此您在序言中对它们所做的任何更改都将被覆盖。因此,您所做的更改实际上并未在文档中使用;它仍然使用默认值,即.66\baselineskip。要实际更改文档的全局长度,您需要使用:

\AtBeginDocument{\setlength{\Extopsep}{.3\baselineskip}}

但这可能并不是您所期望的,因为这会将长度设置为.3*14.5pt,即 12pt 普通文本的基线跳过的 .3。此值不会在环境中更改spacing,除非您在其中本地设置它。

要了解这一点,请考虑下面的文档。在第一个未设置间距因子的示例中,示例的间距正确,但只要我们添加环境spacing,就会出现额外的空间。这个空间与长度的设置没有直接关系\Extopsep,而是环境的文本行spacing添加了出现在示例“顶部”的额外空间。

\documentclass[12pt, a4paper]{article}
\usepackage{setspace}

\usepackage{linguex}
\let\eachwordone=\it
\AtBeginDocument{\setlength{\Extopsep}{.3\baselineskip}}
\newcommand\showskips{Baseline skip: \the\baselineskip\ Extopsep: \the\Extopsep\par}
\begin{document}

\showskips
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
\exg.
At vero eos et accusam \\
et justo duo dolores et \\

ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 

\begin{spacing}{1.5}\showskips
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
\exg.
At vero eos et accusam \\
et justo duo dolores et \\

ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
\end{spacing}

\begin{spacing}{1.5}\setlength{\Extopsep}{.3\baselineskip}\showskips
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 
\exg.
At vero eos et accusam \\
et justo duo dolores et \\

ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
\end{spacing}
\end{document}

代码输出

\Extopsep如果我们调整长度,我们可以更清楚地看到这种效果0pt

\begin{spacing}{1.5}\setlength{\Extopsep}{0pt}\showskips
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. 

\exg.
At vero eos et accusam \\
et justo duo dolores et \\

ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. 
\end{spacing}

代码片段的输出

大卫卡莱尔的回答给出了一个解决方案,但我会保留这个答案,因为它可能有助于其他人首先了解如何设置间距参数。

相关内容