using gb4e keeping interlinear glosses together on the same page
\glt
is a very simple macro and it seems you can add \nobreak
and it works in this case at least...
\documentclass[11pt,letterpaper]{article}
\usepackage{lipsum}
\usepackage{gb4e}
\def\glt{\nobreak\vskip.17\baselineskip}
\noautomath
\begin{document}
\lipsum[1-4]
\begin{exe}
\ex \gll wuz x̃ũch it-ak xohish-em\\
1\textsc{sg.prn} bread eat-\textsc{inf} want.\textsc{prs}-1\textsc{sg}\\
\glt `I want to eat bread.'
\end{exe}
\end{document}
Here is a different solution that works for both gb4e
and linguex
(which doesn't require the use of the \glt
macro to introduce the translation line):
With gb4e
\documentclass[11pt,letterpaper]{article}
\usepackage{lipsum}
\usepackage{etoolbox}
\usepackage{gb4e}
\makeatletter
\apptocmd{\gl@stop}{\nobreak}{}{}
\makeatother
\noautomath
\begin{document}
\lipsum[1-4]
\begin{exe}
\ex
\begin{xlist}
\ex \gll wuz x̃ũch it-ak xohish-em\\
1\textsc{sg.prn} bread eat-\textsc{inf} want.\textsc{prs}-1\textsc{sg}\\
\glt `I want to eat bread.'
\ex This is another example.
\end{xlist}
\end{exe}
\end{document}
With linguex
\documentclass[11pt,letterpaper]{article}
\usepackage{lipsum}
\usepackage{etoolbox}
\usepackage{linguex}
\makeatletter
\apptocmd{\gl@stop}{\nobreak}{}{}
\makeatother
\begin{document}
\lipsum[1-4]
\exg. wuz x̃ũch it-ak xohish-em\\
1\textsc{sg.prn} bread eat-\textsc{inf} want.\textsc{prs}-1\textsc{sg}\\
`I want to eat bread.'
\ex. This is another example.
\end{document}