科文顿以线条作为封闭宏的参数

科文顿以线条作为封闭宏的参数

我需要一些光泽和使用考文顿对于(如果你能解决我的问题另一个包裹我不介意,无论如何,我需要重构一切以找到解决方案)。\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} 

输出

在此处输入图片描述

相关内容