创建一个与 \kern 等效的命令,用于注释

创建一个与 \kern 等效的命令,用于注释

我用它gb4e来修饰环境内部的光泽linguex

为了识别词单元,我们不仅要在每个我们想要单独注释的单元后输入空格,还要在相应的注释后输入空格。

例如如果我想写学校并计划输入注释“学校”,我必须输入l' école

但显然,你并不总是想要真实的排版空间:在某些情况下,即当对应部分较小时,这只会给您带来不想要的额外空间。例如:

\gll lorsqu' il est venu\\
     when he came\\

会给你一个空格洛斯夸伊尔(参见图片中的 1a),这显然是我们不想要的。

为了抑制空间,我使用\kern0.01em (注意命令后的空格),效果非常好:引擎在分词时会考虑空间,但实际上并没有排版;参见(2a–b)。

但是,当我需要输入许多分隔符时,我更喜欢使用一个简单的命令,比如说\sep,它相当于\kern0.01em

但是,由于我们都知道的原因,后面的空间\sep将不会被考虑;参见(3)。

现在如果我尝试\sep{},情况并不会更好,因为考虑到了空间,但是作为一个真实的空间;参见(4)。

您认为我该如何进行?

编辑 wipet建议使用 \def\sep#1{kern0.01em},如果传递带有空分隔符的命令,即\sep{},则该命令有效。这样,问题就解决了。

然而,从辅助意义上讲,找到一种方法可能会更加方便,不是需要空括号。

平均能量损失

\documentclass{article}
\usepackage{linguex}

\newcommand{\sep}{\kern0.01em}

\begin{document}

\ex.
    \a. \gll    lorsqu' il est~venu\\
                when he came\\
    \b. \gll    un trompe- la- mort\\
                a deceives- the- death\\
% I do not want extra spaces. Spaces are only typed as word boundaries.
            
                    
\ex.
    \a. \gll    lorsqu'\kern0.01em il est~venu\\
                when he came\\
    \b. \gll    un trompe- la- mort\\
                a deceives-\kern0.01em the-\kern0.01em death\\
% This is what I want: the space after the kern is only regarded as a word boundary, not actually typeset.
            
            
\ex.
    \a. \gll    lorsqu'\sep il est~venu\\
                when he came\\
    \b. \gll    un trompe- la- mort\\
                a deceives-\sep the-\sep death\\ % The space is ignored.

\ex.
    \a. \gll    lorsqu'\sep{} il est~venu\\
                when he came\\
    \b. \gll    un trompe- la- mort\\
                a deceives-\sep{} the-\sep{} death\\
% The space is regarded as a true space: back to the original problem.


\end{document}

在此处输入图片描述

答案1

您可以尝试定义

\def\sep#1{\kern0.01em}

并使用在这种情况下\sep{}参数#1为空,并且 TeX 基元\kern插入所需的 kern 并忽略“em”单位后的空格,即 后的空格\sep{}

如果你不想写{},你可以定义

\def\sep/{\kern0.01em}

并使用\sep/与上述相同的结果。

相关内容