我需要一些光泽和使用考文顿对于(如果你能解决我的问题另一个包裹我不介意,无论如何,我需要重构一切以找到解决方案)。\gll
需要两行:要注释的文本(Hallo Welt
在示例中)和文本的注释(Hello World
在示例中)。现在我想要一个命令\autogloss
自动为我写第二行。也就是说,\hello{} \world{}
两行通用的命令\gll
成为 的第一个参数\autogloss
。但是,这无法用 编译Something's wrong--perhaps a missing \item.
。
我猜可能是因为论点没有展开,尽管它仍然应该对其进行解释(只是不正确)——而且\expandafter
似乎无论多少都不起作用。
当我输入%
当我在工作示例的行尾这个问题可能会有效,但似乎没有用(但也许我做错了什么)。
\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}
输出