在注释中使用缩写命令

在注释中使用缩写命令

该包xspace允许定义如下缩写\NOM

\newcommand{\NOM}{\textsc{nom}\xspace}

\xspace使得可以\NOM在文本中使用而不使用。否则会占用{}命令后面的空白。\NOM\NOM

我希望在langsci-gb4e软件包中设置注释时有这种行为,不知道这是否可行。不知何故,这\xspace似乎在这里产生了奇怪的效果。它似乎被解释为一个单词和后面的单词。

\documentclass{article}

\usepackage{langsci-gb4e,xspace}

\newcommand{\NOM}{\textsc{nom}\xspace}

\begin{document}

\ea
\gll der      Mann\\
     the.\NOM man\\
\z

\ea
\gll der      Mann\\
     the.\NOM{} man\\
\z


\end{document}

在此处输入图片描述

\gll注释命令调用\twosent,它做了一些我无法理解的魔法... 该代码最初来自cgloss4e

\gdef\twosent#1\\ #2\\{% #1 = first line, #2 = second line 
  \getwords(\lineone,\eachwordone)#1 \\%
  \getwords(\linetwo,\eachwordtwo)#2 \\%
  \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}

答案1

正则表达式可以转换.nom.NOM

使用正则表达式

这意味着将 gll/glt/etc 包装在命令中,以便正则表达式可以获取它。

平均能量损失

\documentclass{article}
\usepackage{langsci-gb4e}
\usepackage{xparse}
\usepackage{xcolor}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\setsansfont{Noto Sans}
\setmonofont{Noto Sans Mono}
%--------------------
\ExplSyntaxOn

\NewDocumentCommand { \glsm } { +m } { 

        \tl_set:Nn \l_tmpa_tl { #1 }

%    .text  >  .{{\posformat text}}
        \regex_replace_all:nnN
                { (\.)(\w+) }
                { \1 \cB\{\cB\{ \c{posformat} \2 \cE\}\cE\} }
                \l_tmpa_tl

        \tl_use:N \l_tmpa_tl

}

\NewDocumentCommand { \glsmm } { +m } { 

        \tl_set:Nn \l_tmpa_tl { #1 }

%    x.text  >  x.{{\posformat text}}
        \regex_replace_all:nnN
                { (\.)(\w+) }
                { \1 \cB\{\cB\{ \c{posformat} \2 \cE\}\cE\} }
                \l_tmpa_tl

%    [space].text  >  [space]text
        \regex_replace_all:nnN
                { (\s\.)(.) }
                { \ \2 }
                \l_tmpa_tl

        \tl_use:N \l_tmpa_tl

}


%--------------------
\NewDocumentCommand { \posformat } { } { 
            \scshape
}
%--------------------
\NewDocumentCommand { \setposformat } { m } { 
            \renewcommand{\posformat}{#1}
}

\ExplSyntaxOff


\begin{document}
Original:
\ea
\gll der      Mann\\
     the.nom man\\
\z

\bigskip
Small caps:
\ea
\glsm{%
\gll der      Mann\\
     the.nom man\\
}
\z

\bigskip
SC, blue, bold, sans
\setposformat{\scshape\bfseries\color{blue}\sffamily}
\ea
\glsm{%
\gll der      Mann\\
     the.nom man\\
}
\z
\bigskip
\ea
    \glsm{%
\gll    kma t'-əlčqu-(ɣ)in\\ 
 .1sg  .1sg.sub-see-.2sg.obj\\
\glt `I saw you.' (S1:71)
        }
\z

\bigskip
No initial dot
\ea
    \glsmm{%
\gll    kma t'-əlčqu-(ɣ)in\\ 
 .1sg  .1sg.sub-see-.2sg.obj\\
\glt `I saw you.' (S1:71)
        }
\z


\end{document}

相关内容