该包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}