我想定义一个与我的乳胶页面标题交互的“问题”环境。
问题环境将修改命令所在页面的页眉。理想情况下,以下代码将生成以下页面。
\begin{question}[1.5 (a)]
What is $a+b$}
\end{question}
\begin{sources}
Grothendieck
\end{sources}
\begin{answer}
$c$
\end{answer}
\begin{question}[1.6 (b)]
What is the value of the following determinant?
\end{question}
\begin{sources}
None
\end{sources}
\begin{answer}
$0$
\end{answer}
我已经通过以下代码定义了源和答案环境。
\newenvironment{answer}{\paragraph{\emph{Answer:}\\\noindent}}{\hfill$\square$ \bigskip \hrule \medskip}
\newenvironment{sources}{\paragraph{\emph{Sources and Collaborators:}}}{\vspace{0.2cm}}
这尤其具有挑战性,因为我们需要获取页面上出现的所有问题的列表,并以某种方式将其附加到 \llhead。希望了解 TeX 字符串魔法的人可以帮助我。
答案1
这用于fancyhdr
放置所需信息。练习是为每个问题构建的宏,并在页面发送后删除。由于它使用\global\edef
和\gdef
,因此在 LaTeX-3 中可能会更简单,但我对此不太了解。
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{fancyhdr}
\newcommand{\exerciselist}{}
\fancyhead[L]{\exerciselist}
\fancyhead[R]{Your Name}
\pagestyle{fancy}
\newenvironment{answer}{\paragraph{\emph{Answer:}\\\noindent}}{\hfill$\square$ \bigskip \hrule \medskip}
\newenvironment{sources}{\paragraph{\emph{Sources and Collaborators:}}}{\vspace{0.2cm}}
\newenvironment{question}[1][]{%
\global\edef\exerciselist{\exerciselist Exercise #1 }%
\noindent #1 Question\\%
}{}
\AddToHook{shipout/after}{\gdef\exerciselist{}}
\begin{document}
\begin{question}[1.5 (a)]
What is $a+b$?
\end{question}
\begin{sources}
Grothendieck
\end{sources}
\begin{answer}
$c$
\end{answer}
%\newpage
\begin{question}[1.6 (b)]
What is the value of the following determinant?
\end{question}
\begin{sources}
None
\end{sources}
\begin{answer}
$0$
\end{answer}
\end{document}