«Файл закончился при сканировании с использованием \next...» вызывается использованием многострочной новой команды

«Файл закончился при сканировании с использованием \next...» вызывается использованием многострочной новой команды

Ошибка при использовании новой команды \reponse, созданной в преамбуле.

Что не так с определением newcommand? Оно должно быть связано с комментарием package ...

Пример, который работает, кажется таким же:Как использовать `\begin` и `\end` в новой команде

Спасибо за помощь.

Ошибка: Файл закончился при сканировании с использованием \next \end{answer} при использовании команды \reponse

\documentclass{article}
\usepackage{comment}
\includecomment{answer}
\newcommand{\reponse}[1]{%
\begin{answer}
{\textbf{The answer is :}#1}
\end{answer}}


\begin{document}
% i would like to write :
\reponse{ok}
\reponse{ok}
% ...
% instead of :
\begin{answer}
{\textbf{The answer is:} ok}
\end{answer}                       <- error line 
\begin{answer}
{\textbf{The answer is:} ok}
\end{answer}
%...

\end{document}

решение1

Как сказал @egreg, вы не можете использовать commentокружение в качестве аргументов. Трудность возникает из-за специального условия, указанного в документации пакета:Команды открытия и закрытия должны располагаться на отдельной строке. Никаких начальных пробелов, ничего после них.

Но вот что я могу предложить (трюк взят из раздела2 Использованиедокументации comment):

\documentclass[english]{article}
\usepackage{comment}
\usepackage{babel}
\includecomment{answer}
\makeatletter 
\newcommand{\reponse}[1]{\@bsphack\@esphack}
\makeatother 
\begin{answer}
\renewcommand{\reponse}[1]{\textbf{The answer is :}#1}
\end{answer}


\begin{document}
% i would like to write :
\reponse{ok}
\reponse{ok}
% ...
% instead of :
\begin{answer}
{\textbf{The answer is:} ok}
\end{answer}

\begin{answer}
{\textbf{The answer is:} ok}
\end{answer}
%...
\end{document}

РЕДАКТИРОВАТЬПринимая во внимание комментарий Ульриха Диеза.

Связанный контент