我想定义一个aufgabe
使用包collect*
中的环境的环境collect
。如果我构建了这样的文件(没有自定义环境),一切都很好:
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{collect}
\theoremstyle{definition}
\definecollection{aufg}
\newcommand{\aufgabenblatt}{\newpage {\bf \Large Aufgabenblatt} \\[3ex] \includecollection{aufg}}
\newtheorem{aufgabe}{Aufgabe}
\begin{document}
\begin{aufgabe}%
\begin{collect*}{aufg}{}{}{{\bf\arabic{aufgabe}.%
Aufgabe:}}{}
Hund
\end{collect*} %
\end{aufgabe}
\aufgabenblatt
\end{document}
带有 的 aufgabecollect*
被收集并由命令显示\aufgabenblatt
。但如果尝试构建我自己的命令,它不起作用:
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{collect}
\theoremstyle{definition}
\definecollection{aufg}
\newcommand{\aufgabenblatt}{\newpage {\bf \Large Aufgabenblatt} \\[3ex] \includecollection{aufg}}
\newtheorem{aufgabe}{Aufgabe}
\makeatletter
\newenvironment{aufcollect}{\begin{aufgabe}%
\@nameuse{collect*}{aufg}{}{}{{\bf\arabic{aufgabe}.%
Aufgabe:}}{}}{\@nameuse{endcollect*} %
\end{aufgabe}}
\makeatother
\begin{document}
\begin{aufcollect}
Katze
\end{aufcollect}
\aufgabenblatt
\end{document}
\@nameuse
软件包文档鼓励使用。错误是"File ended while scanning use of \@tempa."
知道我做错了什么吗?
答案1
在我看来,中间environment
并没有真正划定界限,aufgabe
环境应该被用作\aufgabe
和\endaufgabe
,环绕着集合。
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{collect}
\theoremstyle{definition}
\definecollection{aufg}
\newcommand{\aufgabenblatt}{\clearpage {\bfseries \Large Aufgabenblatt} \\[3ex] \includecollection{aufg}}
\newtheorem{aufgabe}{Aufgabe}
\makeatletter
\newenvironment{aufcollect}{%
\aufgabe
\@nameuse{collect*}{aufg}{}{}{\bfseries \arabic{aufgabe}.Aufgabe:}{}%
}{%
\@nameuse{endcollect*} %
\endaufgabe
}
\makeatother
\begin{document}
\begin{aufcollect}
Katze
\end{aufcollect}
\begin{aufcollect}
Hund
\end{aufcollect}
\begin{aufcollect}
Igel
\end{aufcollect}
\aufgabenblatt
\end{document}
更新:
\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{collect}
\usepackage{xpatch}
\makeatletter
\xpatchcmd{\collect*}{%
\def\CE@prefileenv{#4}%
}{%
\edef\CE@prefileenv{#4}% Preexpand this argument
}{\typeout{Stuff!}}{\typeout{Failed!}}
\makeatother
\theoremstyle{definition}
\definecollection{aufg}
\newcommand{\aufgabenblatt}{\clearpage {\bfseries \Large Aufgabenblatt} \\[3ex] \includecollection{aufg}}
\newtheorem{aufgabe}{Aufgabe}
\makeatletter
\newenvironment{aufcollect}{%
\aufgabe
\@nameuse{collect*}{aufg}{}{}{\unexpanded{\bfseries} \arabic{aufgabe}.Aufgabe:}{}%
}{%
\@nameuse{endcollect*} %
\endaufgabe
}
\makeatother
\begin{document}
\begin{aufcollect}
Katze
\end{aufcollect}
\begin{aufcollect}
Hund
\end{aufcollect}
\begin{aufcollect}
Igel
\end{aufcollect}
\aufgabenblatt
\end{document}