如何使 3 - 4 个 glwords 居中?

如何使 3 - 4 个 glwords 居中?
\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}

ExPex 代码的输出

答案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 的观点,制作一张小桌子比强制这种特殊环境要简单得多。

相关内容