expex 中 \glft 的一致格式

expex 中 \glft 的一致格式

在 ExPeX 文档中,所有示例都用\glft单引号将 glos 括起来;我的文档中的示例看起来相同:

\pex
\begingl
\gla bu nɛmə //
\glb this what //
\glft `What's this?' //
\endgl
\xe

为了将语义与格式分开,我更希望自动插入这些单引号。该everyglft参数将在行首插入一个宏。有没有办法自动完成此操作。

我有这个解决方法,但这有点尴尬,因为我必须确保//分隔符立即出现在注释句的末尾,这样才能避免多余的空格。

\def\myglft#1//{\glft `#1' //}

答案1

解决方案 1: 我个人使用艾克斯和...一起文本。 虽然文本适用于文内示例,它似乎不会造成任何问题艾克斯示例。只需将您的自由翻译放入 textglos 的\gl{}宏中。请参阅 textglos 的文档以调整/重新定义\gl{}并理解其语法(那里有一些棘手的东西)。这里是:

在序言中:

\usepackage{expex}
\usepackage{textglos}

按照您的意愿自定义\gl{}(默认为单引号),在序言中或者在文档正文中:

\lingexample{gl}{<<~X~>>}

然后用以下方式格式化翻译\gl{}

\pex
\begingl
\gla bu nɛmə //
\glb this what //
\glft \gl{What's this?} //
\endgl
\xe

解决方案 1': textglos 允许定义任何进一步的格式化命令,因此您可以\gl{}不加改变,只需用来lingexample{}{}制作您自己的宏:

\lingexample{ft}{<<~X~>>}

解决方案 1'': 现在我想起来了,我不确定 textpos 是否比任何用户定义的宏做得更好,例如:

\newcommand{\ft}[1]{<<~#1~>>}
...
\glft \ft{What's this?} //

然后,基本上,只有当您乐意在代码中添加宏而不是进行黑客攻击时,我的答案才是一种选择\glft

答案2

解决方案 2: 这似乎可以解决问题:(但请参阅最后的编辑!)

\glft在序言中,加载 expex 之后,破解其周围的定义#1,例如像这样(在破解之前,代码刚从 expex.tex 复制而来):

\makeatletter
\long\def\glw@glft@a #1//{%
\glw@printilgsetup
\glw@printilg@a
\vskip\lingaboveglftskip
\nointerlineskip
\egroup
\@glfttrue
\ifx\glstrut\strut
   \ifdim\gl@maxdplast>\dp\strutbox \prevdepth=\gl@maxdplast \fi
  \fi
\ling@usearg
\@ilgborderadjustment
\ling@everyglft
\strut <<~#1~>>\par
}
\makeatother

解决方案 2':为了更容易定制,定义两个钩子,并将它们添加到的重新定义中\glft

\newcommand{\fthooka}{<<~}% put here what should appear at the beginning of the free translation
\newcommand{\fthookb}{~>>}% put here what should appear at the end of the free translation

\makeatletter
\long\def\glw@glft@a #1//{%
\glw@printilgsetup
\glw@printilg@a
\vskip\lingaboveglftskip
\nointerlineskip
\egroup
\@glfttrue
\ifx\glstrut\strut
   \ifdim\gl@maxdplast>\dp\strutbox \prevdepth=\gl@maxdplast \fi
  \fi
\ling@usearg
\@ilgborderadjustment
\ling@everyglft
\strut \fthooka{}#1\fthookb{}\par
}
\makeatother

如果需要,可以随时在文档中的任何位置使用 重新定义挂钩\renewcommand

我会将这个答案发送给 ExPex 的作者,因为我认为这可以在包中很好地实现。

编辑:此解决方案以及 OP 的解决方案与 交互效果不佳\trailingcitation。事实上,末尾的引用位于引号内。如下所示:

\glft Free Translation. \trailingcitation{(Citation)}//

或者

\myglft Free Translation. \trailingcitation{(Citation)}//

看起来会像这样:

“自由翻译。(引文)”

因此,黑客必须更深入地研究 ExPex 的代码,但这超出了我的能力范围。

相关内容