限制 gb4e 使用的空间并在右侧添加语言信息

限制 gb4e 使用的空间并在右侧添加语言信息

作者通常会将语言名称与示例一起提供。语言名称会向右对齐。这对于简短的示例很有效,但对于较长的示例则不太好看。以下代码生成了此代码:

\documentclass{article}

\usepackage{langsci-gb4e}


\usepackage{hyperref}

\begin{document}


\ea
\gll Das ist ein deutsches Beispiel.\\
     this is a   German    example\\ \hfill(German)
\z

\ea
\gll Das  ist einer dieser sehr langen Sätze, die es im Deutschen gibt.\\
     this is  one   of.these very long sentences that it in.the German gives\\ \hfill(German)
\z

\end{document}

在此处输入图片描述

更好的办法是,有某种方法来限制 gb4e 占用的空间,并将语言与 gb4e 所做操作的顶部对齐。

像这样:

在此处输入图片描述

有没有办法做到这一点?

答案1

两个小页面就足够了。

迷你页面

(例如 2)

平均能量损失

\documentclass{article}

\usepackage{langsci-gb4e}

%\usepackage{tabularx}

\usepackage{calc}
\usepackage{lipsum}

\newcommand{\longexampleandlanguage}[2]{
%\begin{tabularx}{\linewidth}[t]{@{}X@{}p{\widthof{(#2)}}@{}}
\begin{minipage}[t]{\linewidth-1em-\widthof{(#2)}}
#1
\end{minipage} 
\hfill
\begin{minipage}[t]{\widthof{(#2)}}
 (#2)
\end{minipage}

%\end{tabularx}
}


\begin{document}


\ea
\gll Das ist ein deutsches Beispiel.\\
     this is a   German    example\\ \hfill(German)
\z

\lipsum[1][1-4]


\ea
\longexampleandlanguage{
    \gll Das  ist einer dieser   sehr langen Sätze,    die  es in der a b deutschen Sprache gibt.\\
         this is  one   of.these very long   sentences that it in the a b German    language gives\\
}{German}
\z

\lipsum[1][1-4]




\end{document}

可以在 expl3 中定义一个通用命令\glnote来采用多行第一个参数;并且 expl3 还可以处理宽度计算,因此calc也不需要加载包。

格莱特

(均为例子)

平均能量损失

\documentclass{article}

\usepackage{langsci-gb4e}
\usepackage{lipsum}
\usepackage{xparse} % now part of the kernel


\ExplSyntaxOn
\NewDocumentCommand { \glnote } { +m m } { 
    % 1==data
    % 2==note
    \tl_set:Nx \l_tmpa_tl { ( #2 ) }
    \hbox_set:Nn \l_tmpa_box { \l_tmpa_tl }
    \dim_set:Nn \l_tmpa_dim { \box_wd:N \l_tmpa_box  }
    \dim_set:Nn \l_tmpb_dim { \textwidth-4em-\l_tmpa_dim }
\begin{minipage}[t]{\dim_use:N \l_tmpb_dim}
            #1
\end{minipage} 
\hfill
\begin{minipage}[t]{\dim_use:N \l_tmpa_dim}
  \tl_use:N \l_tmpa_tl
\end{minipage}

}
\ExplSyntaxOff




\begin{document}

B:

\ea
\glnote{\gll Das ist ein deutsches Beispiel.\\
     this is a   German    example\\
     }{German}
\z

\lipsum[1][1-4]


\ea
\glnote{
    \gll Das  ist einer dieser   sehr langen Sätze,    die  es in der a b deutschen Sprache gibt.\\
         this is  one   of.these very long   sentences that it in the a b German    language gives\\
}{German}
\z

\lipsum[1][1-4]




\end{document}

答案2

我找到了答案。也许它太复杂了,但它确实有效。

\documentclass{article}

\usepackage{langsci-gb4e}

\usepackage{tabularx}

\usepackage{calc}
\usepackage{lipsum}

\newcommand{\longexampleandlanguage}[2]{
\begin{tabularx}{\linewidth}[t]{@{}X@{}p{\widthof{(#2)}}@{}}
\begin{minipage}[t]{\linewidth-1em}
#1
\end{minipage} & (#2)\\
\end{tabularx}}


\begin{document}


\ea
\gll Das ist ein deutsches Beispiel.\\
     this is a   German    example\\ \hfill(German)
\z

\lipsum[1][1-4]


\ea
\longexampleandlanguage{
    \gll Das  ist einer dieser   sehr langen Sätze,    die  es in der a b deutschen Sprache gibt.\\
         this is  one   of.these very long   sentences that it in the a b German    language gives\\
}{German}
\z

\lipsum[1][1-4]




\end{document}

在此处输入图片描述

答案3

这里的权衡是在长示例的自动换行与手动干预之间。您的解决方案涉及大量标记,以保留示例的自动换行。我会采取另一种方式,手动将示例拆分到您想要的位置,以便语言名称注释适合而无需额外的标记。

\documentclass{article}

\usepackage{langsci-gb4e}


\begin{document}


\ea
\gll Das ist ein deutsches Beispiel.\\
     this is a   German    example\\ \hfill(German)
\z

\ea
\gll Das  ist einer dieser sehr langen Sätze,\\ 
     this is  one   of.these very long sentences\\ \hfill(German)
\sn \gll die es im Deutschen gibt.\\
    that it in.the German gives\\
\z

\end{document}

代码输出

相关内容