设置\answertrue
就打印答案,设置\answerfalse
就隐藏答案,保留答案所需的空格。
\documentclass{ctexart} \usepackage{xparse} % make \phantom a long macro \newtoks\patchtoks % helper token register \def\longpatch#1% % worker macro {\let\myoldmac#1% \long\def#1##1{\patchtoks={##1}\myoldmac{\the\patchtoks}}} \longpatch\phantom %% define an answer environment that can be hidden \NewDocumentEnvironment{answer}{ +b }{% \par \ifanswer \textbf{解}\quad {#1} \else \phantom{#1} \fi }{\par} \newif\ifanswer %\answertrue %% Set \answertrue to show the answer environment \answerfalse %% Set \answerfalse to hide the answer environment \begin{document} 这是答案开始: \begin{answer} 1+2=3 2+2=4 \end{answer} 这是答案结束。 \end{document}
\documentclass{ctexart} \usepackage{xparse} % make \phantom a long macro \newtoks\patchtoks % helper token register \def\longpatch#1% % worker macro {\let\myoldmac#1% \long\def#1##1{\patchtoks={##1}\myoldmac{\the\patchtoks}}} \longpatch\phantom %% define an answer environment that can be hidden \NewDocumentEnvironment{answer}{ +b }{% \par \ifanswer \textbf{解}\quad {#1} \else \phantom{#1} \fi }{\par} \newif\ifanswer %\answertrue %% Set \answertrue to show the answer environment \answerfalse %% Set \answerfalse to hide the answer environment \begin{document} 这是答案开始: \begin{answer} 1+2=3 2+2=4 \end{answer} 这是答案结束。 \end{document}