Covington con líneas como argumentos de macro envolvente.

Covington con líneas como argumentos de macro envolvente.

Necesito algunos brillos y uso.covington.stypor eso (si puedes resolver mi problema conotro paqueteNo me importa, de todos modos necesitaría refactorizar todo para encontrar la solución). \gllespera dos líneas: el texto que se va a glosar ( Hallo Welten el ejemplo) y la glosa del texto ( Hello Worlden el ejemplo). Ahora quiero un comando \autoglossque escriba automáticamente la segunda línea. Es decir, los comandos \hello{} \world{}que son comunes a ambas líneas de \gllse convierten en el primer argumento de \autogloss. Sin embargo, esto no se puede compilar con Something's wrong--perhaps a missing \item..

Supuse que podría deberse a que el argumento no está ampliado, aunque aún así debería haberlo glosado (pero no correctamente), y ninguna cantidad \expandafterparece funcionar.

Recibo el mismo mensaje cuando coloco un %al final de las líneas del ejemplo de trabajo, así que pensé en la solución deeste problemapodría funcionar, pero no parece (pero tal vez hice algo mal allí).

\documentclass{article}
\usepackage{etoolbox}
\usepackage{covington}

\newcounter{@language}
\setcounter{@language}{0}
\def\english{\setcounter{@language}{0}}
\def\german{\setcounter{@language}{1}}

\newcommand\hello{\ifnumcomp{\value{@language}}{=}{0}{Hello}{Hallo}}
\newcommand\world{\ifnumcomp{\value{@language}}{=}{0}{World}{Welt}}

\newcommand\autogloss[2]{%
    \gll \german{}#1
    \english{}#1
    \glt `#2'
    \glend
}

\begin{document}
\begin{examples}
\item this one works:
    \gll \german{}\hello{} \world{}
    \english{}\hello{} \world{}
    \glt `Hello World.'
    \glend
\item this one doesn't: % comment next line to compile.
    \autogloss{\hello{} \world{}}{`Hello World.'}
\end{examples}
\end{document}

Respuesta1

Con gb4e?

\documentclass{article}
\usepackage{etoolbox}
\usepackage{gb4e}

\newcounter{@language}
\setcounter{@language}{0}
\def\english{\setcounter{@language}{0}}
\def\german{\setcounter{@language}{1}}

\newcommand\hello{\ifnumcomp{\value{@language}}{=}{0}{Hello}{Hallo}}
\newcommand\world{\ifnumcomp{\value{@language}}{=}{0}{World}{Welt}}

\newcommand\autogloss[2]{%
    \gll \german{}#1\\
    \english{}#1\\
    \glt `#2'
}

\let\eachwordone=\it

\begin{document}
\begin{exe}
\ex this one works:
    \gll \german{}\hello{} \world{}\\
    \english{}\hello{} \world{}\\
    \glt `Hello World.'
\ex this one does, as well:
    \autogloss{\hello{} \world{}}{Hello World.}
\end{exe}
\end{document} 

Producción

ingrese la descripción de la imagen aquí

información relacionada