Мне нужны блески и использованиековингтон.styдля этого (если вы можете решить мою проблему сдругой пакетЯ не против, мне в любом случае нужно будет все рефакторить для решения). \gll
ожидает две строки: текст, который нужно скорректировать ( Hallo Welt
в примере) и скорректировать текст ( Hello World
в примере). Теперь мне нужна команда \autogloss
, которая автоматически записывает вторую строку за меня. То есть команды \hello{} \world{}
, которые являются общими для обеих строк, \gll
становятся первым аргументом \autogloss
. Однако это не компилируется с Something's wrong--perhaps a missing \item.
.
Я предположил, что это может быть связано с тем, что аргумент не развернут, хотя тогда его все равно следовало бы сформулировать (просто не так, как следует) — и никакие из этих выражений, \expandafter
похоже, не срабатывают.
Я получаю то же самое сообщение, когда ставлю 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}
решение1
С 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}
Выход