“扫描使用 \next... 时文件结束”是由于使用多行 newcommand 导致的

“扫描使用 \next... 时文件结束”是由于使用多行 newcommand 导致的

使用序言中创建的新命令 \reponse 时出错。

newcommand 的定义有什么问题?它必须与注释包链接...

有效的例子看起来相同:如何在新命令中使用 `\begin` 和 `\end`

感谢帮助。

错误:使用命令 \reponse 扫描时使用 \next \end{answer} 文件结束

\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}

编辑考虑到 UlrichDiez 的评论。

相关内容