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). \gll
erwartet zwei Zeilen: den zu erläuternden Text ( Hallo Welt
im Beispiel) und die Erläuterung des Textes ( Hello World
im 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, \gll
werden 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 \expandafter
scheint 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