covington com linhas como argumentos de macro envolvente

covington com linhas como argumentos de macro envolvente

Eu preciso de alguns glosses e usocovington.stypara isso (se você puder resolver meu problema comoutro pacoteNão me importo, precisaria refatorar tudo para a solução, de qualquer maneira). \gllespera duas linhas: o texto a ser glosado ( Hallo Weltno exemplo) e o glossário do texto ( Hello Worldno exemplo). Agora quero um comando \autoglossque escreva automaticamente a segunda linha para mim. Ou seja, os comandos \hello{} \world{}que são comuns às duas linhas de \glltornam-se o primeiro argumento de \autogloss. No entanto, isso não consegue compilar com Something's wrong--perhaps a missing \item..

Eu imaginei que poderia ser porque o argumento não foi expandido, embora ainda devesse ter sido encoberto (mas não corretamente) - e nenhuma quantidade \expandafterparece funcionar.

Recebo a mesma mensagem quando coloco um %no final das linhas do exemplo de trabalho, então pensei na solução deeste problemapode funcionar, mas não parece (mas talvez eu tenha feito algo errado aí).

\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}

Responder1

Com 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} 

Saída

insira a descrição da imagem aqui

informação relacionada