包含页面上所有元素列表的标题

包含页面上所有元素列表的标题

我想定义一个与我的乳胶页面标题交互的“问题”环境。

问题环境将修改命令所在页面的页眉。理想情况下,以下代码将生成以下页面。

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

代码输出

相关内容