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). \gll
espera dos líneas: el texto que se va a glosar ( Hallo Welt
en el ejemplo) y la glosa del texto ( Hello World
en el ejemplo). Ahora quiero un comando \autogloss
que escriba automáticamente la segunda línea. Es decir, los comandos \hello{} \world{}
que son comunes a ambas líneas de \gll
se 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 \expandafter
parece 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