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). \gll
espera duas linhas: o texto a ser glosado ( Hallo Welt
no exemplo) e o glossário do texto ( Hello World
no exemplo). Agora quero um comando \autogloss
que escreva automaticamente a segunda linha para mim. Ou seja, os comandos \hello{} \world{}
que são comuns às duas linhas de \gll
tornam-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 \expandafter
parece 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