我正在翻譯一些使用該comment
包的文本,它的用法如下:
\begin{en}
... some English text
\end{en}
\begin{zh}
... corresponding Chinese text
\end{zh}
在使用\excludecommand{en}
or\includecommand{en}
之前\begin{document}
,我們可以控制最終 PDF 文件中的文字。
但這太麻煩了,無法\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
環境是先保存as的定義\OldXxx
:
\let\OldXxx\xxx
然後\xxx
使用\OldXxx
and重新定義巨集\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}