领取包裹时号码错误

领取包裹时号码错误

我使用 collect 包来存储答案代码。当调用 \includecollection 注释时,问题编号是错误的。请帮我修改以下代码。在此处输入图片描述

\documentclass{article}
\usepackage{collect}
\definecollection{btcol}
\newcounter{cbt}
\newenvironment{bt}{\refstepcounter{cbt}\par\noindent {\bfseries Problem \thecbt}.}{\ignorespaces.}
\newcommand{\loigiai}[1]{
\begin{collect}{btcol}{\par\noindent {\bfseries AP\; \thecbt}.}{}{}{} 
    \begingroup
        #1
    \endgroup
\end{collect}
}

\begin{document}
\begin{bt}
Conntent 1
\loigiai{Answer for Pro.1}
\end{bt}
\begin{bt}
Conntent 2
\loigiai{Answer for Pro.2}
\end{bt}

\includecollection{btcol}
\end{document}

答案1

您需要\thecbt在调用collect环境之前进行扩展;最方便的方法是使用辅助宏。

\documentclass{article}
\usepackage{collect}
\definecollection{btcol}
\newcounter{cbt}

\newenvironment{bt}
 {%
  \par
  \noindent\refstepcounter{cbt}{\bfseries Problem \thecbt}.%
 }
 {\unskip.}
\makeatletter
\newcommand{\loigiai}[1]{%
  \@bsphack\expandafter\loigiai@aux\expandafter{\expanded{\thecbt}}{#1}\@esphack
}
\newcommand{\loigiai@aux}[2]{%
  \begin{collect}{btcol}{\par\noindent{\bfseries AP\; #1}.}{}{}{} 
    #2%
  \end{collect}
}
\makeatother

\begin{document}

\begin{bt}
Content 1
\loigiai{Answer for Pro.1}
\end{bt}

\begin{bt}
Content 2
\loigiai{Answer for Pro.2}
\end{bt}

\includecollection{btcol}

\end{document}

我会避免添加“自动”句点:我提供的代码并不是真正安全的,因为在之前不能有一个空行\loigiai

在此处输入图片描述

相关内容