Covington mit Linien als Argumente des umschließenden Makros

Covington mit Linien als Argumente des umschließenden Makros

Ich brauche ein paar Glossen und benutzecovington.stydafür (wenn Sie mein Problem lösen können mitein anderes PaketMir macht das nichts aus, ich müsste für die Lösung sowieso alles umgestalten). \gllerwartet zwei Zeilen: den zu erläuternden Text ( Hallo Weltim Beispiel) und die Erläuterung des Textes ( Hello Worldim Beispiel). Jetzt möchte ich einen Befehl \autogloss, der die zweite Zeile automatisch für mich schreibt. Das heißt, die Befehle \hello{} \world{}, die in beiden Zeilen von vorkommen, \gllwerden zum ersten Argument von \autogloss. Dies kann jedoch nicht mit kompiliert werden Something's wrong--perhaps a missing \item..

Ich vermute, dass es daran liegen könnte, dass das Argument nicht weiter ausgeführt wird, obwohl es dann trotzdem erläutert werden sollte (nur nicht richtig) – und nichts davon \expandafterscheint zu funktionieren.

%Ich bekomme die gleiche Meldung, wenn ich am Ende der Zeilen des Arbeitsbeispiels ein setze, also dachte ich, die Lösung vondieses Problemkönnte funktionieren, scheint aber nicht zu funktionieren (aber vielleicht habe ich da etwas falsch gemacht).

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

Antwort1

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

Ausgabe

Bildbeschreibung hier eingeben

verwandte Informationen