Ich übersetze einen Text, der das comment
Paket verwendet. Die Verwendung scheint folgendermaßen zu sein:
\begin{en}
... some English text
\end{en}
\begin{zh}
... corresponding Chinese text
\end{zh}
Durch die Verwendung von \excludecommand{en}
oder \includecommand{en}
vor \begin{document}
können wir den Text im oder aus dem endgültigen PDF-Dokument steuern.
Es ist jedoch zu mühsam, dies jedem Absatz hinzuzufügen \begin{}/\end{}
. Ich möchte Folgendes:
\en{
... some English text
}
\zh{
... corresponding Chinese text
}
das ist viel einfacher einzutippen. Und ich erstelle die Befehle so:
\newcommand{\zh}[1]{\begin{zh}#1\end{zh}}
\newcommand{\en}[1]{\begin{en}#1\end{en}}
Dies führt jedoch zu einem Kompilierungsfehler. runaway argument
Wie kann es in dieser Situation mithilfe von zum Laufen gebracht werden newcommand
?
Antwort1
Das Problem besteht darin, dass Sie versuchen, einen vorhandenen Befehl neu zu definieren \en
, der definiert wird, wenn die en
Umgebung definiert wird (wie dies auch der Fall ist \enden
). Die Lösung zur Neudefinitionam meistenUmgebungen besteht darin, zunächst die Definition wie xxx
folgt zu speichern \OldXxx
:
\let\OldXxx\xxx
und definieren Sie das \xxx
Makro dann mit \OldXxx
und neu \endxxx
:
\renewcommand{\xxx}[1]{\OldXxx#1\endxxx}
Notiz:
- Wie in den Kommentaren, diesGewohnheitArbeiten Sie mit allen Verbatim-Umgebungen.
Code:
\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}
Antwort2
Verwenden Sie nureinsanderes Zeichen für den Befehl:
\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}