我正在翻译一些使用该comment
包的文本,它的用法似乎是这样的:
\begin{en}
... some English text
\end{en}
\begin{zh}
... corresponding Chinese text
\end{zh}
通过在之前使用\excludecommand{en}
或,我们可以控制最终 PDF 文档中的文本。\includecommand{en}
\begin{document}
\begin{}/\end{}
但是每一段都添加太麻烦了,我想要的是以下内容:
\en{
... some English text
}
\zh{
... corresponding Chinese text
}
这输入起来更简单。我创建了如下命令:
\newcommand{\zh}[1]{\begin{zh}#1\end{zh}}
\newcommand{\en}[1]{\begin{en}#1\end{en}}
但这会导致编译错误runaway argument
,在这种情况下如何使用它来使它工作newcommand
?
答案1
问题是,你试图重新定义一个现有的命令,该命令在定义环境\en
时被定义(就像 一样)。重新定义的解决方案en
\enden
最多环境首先要保存的定义xxx
如下\OldXxx
:
\let\OldXxx\xxx
然后\xxx
使用\OldXxx
和重新定义宏\endxxx
:
\renewcommand{\xxx}[1]{\OldXxx#1\endxxx}
笔记:
- 根据评论,这惯于适用于任何逐字类型的环境。
代码:
\documentclass{article}
\newenvironment{en}{%
}{%
}%
\begin{document}
\begin{en}
\ldots some English text in environment
\end{en}
\let\OldEn\en
\renewcommand{\en}[1]{\OldEn#1\enden}
\en{\ldots some more English text in macro \ldots}
\end{document}
答案2
仅使用一该命令的其他字符:
\documentclass{article}
\newenvironment{en}{}{}
\newenvironment{zh}{}{}
\newcommand\Zh[1]{\begin{zh}#1\end{zh}}
\newcommand\En[1]{\begin{en}#1\end{en}}
%\renewcommand\Zh[1]{} %%% enable if it should be excluded
%\renewcommand\En[1]{} %%% enable if it should be excluded
\begin{document}
\En{ \ldots some English text in environment (En)}
\Zh{ \ldots some more English text in macro \ldots (Zh)}
\end{document}