在 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 的代码,但这超出了我的能力范围。