ExPex - 对词素及其注释应用相同的格式

ExPex - 对词素及其注释应用相同的格式

使用时expex包时,是否有一种优雅的方式将相同的格式应用于词素及其注释?例如,我想将数据中的每个前缀加粗和它的光泽,像这样:

所需格式

当然,这可以通过分别加粗前缀和其注释来实现,就像这个 MWE 中的那样:

\documentclass{article}
\usepackage{expex}
\begin{document}

\ex \begingl[glstyle=nlevel]
\glpreamble Niwaapamaa kimaamaa.\endpreamble
\textbf{ni-}[\textbf{1-}] % prefix and gloss bolded separately
waapam[see]
-aa[-\textsc{dir}]
\nogloss{\quad}
\textbf{ki-}[\textbf{2-}] % prefix and gloss bolded separately
maamaa[mother]
\glft `I see your mother.'
\xe

\end{document}

但是重复使用类似的格式命令\textbf{ni-}[\textbf{1-}]并不优雅。对于一次性操作来说还行,但在包含数百条注释的文档中效率低下。有没有办法一次性将类似的ni-[1-]命令应用于两个元素?我的天真尝试如下,这将允许将上例中的第一个前缀输入为\glprefix{ni-}{1-}

\newcommand{\glprefix}[2]{\textbf{#1}[\textbf{#2}]}

但事情不可能这么简单,因为将两个元素埋在单个命令中会妨碍expex正确注释它们。我想知道是否有某种技巧可以解决这个问题。

答案1

这是一个仅适用于ngloss样式输入的解决方案。这个想法是在第一个 gloss 元素中设置一个条件,然后让它在第二个元素中保持不变。突出显示的命令是\HL,它必须位于 gloss 对的第一个元素内,整个元素位于 中{...}。我没有对格式本身进行硬编码,而是创建了一个\hlight定义为 的宏\bfseries。这允许根据需要更改格式。

您的天真方法不起作用的原因是,解包样式中的元素对的宏ngloss是一个分隔宏,因此您不能以简单的方式将其包装在其他宏中。

\documentclass{article}

\usepackage{expex}
\newif\ifhilight
\newcommand*{\hilight}{\bfseries}
\makeatletter
\newcommand*\HL{\hilight\global\hilighttrue}
\newcommand*\@hilight{\global\hilightfalse\hilight}
\def\gln@word #1[#2]#3 {%
   \def\@currentitem{\\{\ifhilight\hilight#1\else#1\fi}}%
   \def\@diacritic{#3}%
   \gln@ilg@f \ifhilight\@hilight#2\else#2\fi/\@nil
   \gln@ilg@a
}
\makeatother
\begin{document}

\ex \begingl[glstyle=nlevel]
\glpreamble Niwaapamaa kimaamaa.\endpreamble
{\HL ni-}[1-] % prefix and gloss bolded separately
waapam[see]
-aa[-\textsc{dir}]
\nogloss{\quad}
{\HL ki-}[2-] % prefix and gloss bolded separately
maamaa[mother]
\glft `I see your mother.'
\xe

\end{document}

代码输出

相关内容