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