패키지를 사용하는 일부 텍스트를 번역하고 있는데 comment
사용법은 다음과 같습니다.
\begin{en}
... some English text
\end{en}
\begin{zh}
... corresponding Chinese text
\end{zh}
\excludecommand{en}
또는 \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
과 같이 저장하는 것입니다 \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}