\documentclass{article} % xelatex engine
\usepackage{expex}
\begin{document}
\begingl
\centering % just right-align
\gla This is a test//
\glb This is a test//
\endgl
\end{document}
答案1
我不会使用 ExPex 来完成这项任务,除非你有非常复杂的上光需求,而只有它才能满足。但在那种情况下,我不太明白你正在寻找的居中方法是否明智。
解决方案使用cgloss4e
相反,您可以使用软件包提供的注释宏gb4e
。您可以使用软件包单独加载注释宏cgloss4e
,如果您将 ExPex 用于其他目的,这不会干扰 ExPex。您不能同时使用 ExPex 和 ,gb4e
除非进行一些额外的调整,因为这两个软件包都提供了一个\ex
命令。
在下面的例子中,我创建了一个\clg
使用包将其内容居中的命令varwidth
,它提供了minipage
适合内容自然宽度的环境。
该cgloss4e
包由 加载gb4e
。您可以查看其文档以了解其工作原理的详细信息。我已使用选项加载了该geometry
包,showframe
只是为了显示居中。
\documentclass{article} % xelatex engine
\usepackage[showframe]{geometry}
\usepackage{cgloss4e}
\usepackage{varwidth}
\newcommand{\cgl}[1]{%
\centering
\begin{varwidth}[t]{\linewidth}{#1}\end{varwidth}%
}
\begin{document}
\cgl{
\gll Le livre est sur la table.\\
The book is on the table\\
}
\end{document}
使用 ExPex 的解决方案
有一种方法可以使用 ExPex 来实现这一点,但语法略微复杂一些。这是 Fran 解决方案的一个版本,但间距计算更自动。还要感谢 David Carlisle 提供的代码来计算参数中的空格数。此计数用于计算要添加的额外空间。
\documentclass{article} % xelatex engine
\usepackage[showframe]{geometry}
\usepackage{expex}
\usepackage{calc}
\newlength{\cgllen}
% code from David Carlisle to count spaces in an argument
\def\countspc#1{\xspc0#1 \xspc}
\def\xspc#1#2 #3{%
\ifx\xspc#3%
\the#1%
\else
\afterfi
\xspc{\numexpr#1+1\relax}%
\fi}
\def\afterfi#1\fi{\fi#1}
% Command takes two arguments: the longest line of the gloss (\gla or \glb
% and then the \begingl ... \endgl environment
\newcommand{\expexcgl}[2]{%
\setlength{\cgllen}{\widthof{#1}+\countspc{#1}\lingglspace*\real{.5}}
\centering
\begin{minipage}{\cgllen}%
#2
\end{minipage}}
\begin{document}
\expexcgl{Le livre est sur la table que j’ai achetée.}
{\begingl
\gla Le livre est sur la table que j’ai achetée.//
\glb The book is on the table that I-have bought//
\endgl
}
\expexcgl{Le livre est sur la grande table.}
{\begingl
\gla Le livre est sur la grande table.//
\glb The book is on the big table//
\endgl
}
\end{document}
答案2
使用居中的小页面,其宽度仅比文本略宽,文本仍然没有真正居中,但差异几乎不明显:
\documentclass{article}
\usepackage{expex,calc}
\begin{document}
\centering
\begin{minipage}{\widthof{This is a test}+2pt}
\begingl
\gla This is a test//
\glb This is a test//
\endgl
\end{minipage}
\end{document}
尽管如此,我同意 Alan Munn 的观点,制作一张小桌子比强制这种特殊环境要简单得多。