练习包:如何在答案中引用问题环境?

练习包:如何在答案中引用问题环境?

让我们考虑以下 MWE。

\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}

\usepackage[lastexercise]{exercise}

%Environnement exercice
\newenvironment{exo}[1][\unskip]{%
\begin{Exercise}[title={#1}]}
{\end{Exercise}}

%Problème
\newcounter{prob}
\newenvironment{prob}[1][\unskip]{%
\begin{Exercise}[name={Problème}, counter={prob}, title={#1}]} {\end{Exercise}}

\renewcommand{\AnswerName}{Solution}
\renewcommand{\AnswerHeader}{\medskip\centerline{\textbf{ Answer (\ExerciseName\ \ExerciseHeaderNB)}\smallskip}}
%%%%%%%%%%%%
\begin{document}

ABCDE

\begin{exo}
ABCDE   
\end{exo}

\begin{Answer}
A
\end{Answer}

\begin{prob}
ABC
\end{prob}
\begin{Answer}
A
\end{Answer}
\end{document}

输出 :

在此处输入图片描述

是否可以更改线路答案(练习 1)答案(问题 1)自动根据锻炼类型进行调整?

答案1

如果提供了自定义名称,则该exercise包会将其存储在内部宏中\@ExerciseName。这在手册的第 17 页中列出:

\define@key{PPExercise}{name}%
{\global\@ExeReNametrue\gdef\@ExerciseName{#1}}

您可以在答案标头的定义中使用此宏。请注意,由于它是一个内部宏(它包含),因此您需要用和@包围宏的使用。\makeatletter\makeatother

当没有提供自定义名称时(例如exo示例中的环境),则此宏未定义(如果到目前为止未使用任何自定义名称)或为空。在这种情况下,您应该使用原始的。在下面的代码中,包中的\ExerciseName宏用于测试应该使用两个宏中的哪一个。\ifdefemptyetoolbox

梅威瑟:

\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[frenchb]{babel}
\usepackage{etoolbox}

\usepackage[lastexercise]{exercise}

%Environnement exercice
\newenvironment{exo}[1][\unskip]{%
\begin{Exercise}[title={#1}]}
{\end{Exercise}}

%Problème
\newcounter{prob}
\newenvironment{prob}[1][\unskip]{%
\begin{Exercise}[name={Problème}, counter={prob}, title={#1}]} {\end{Exercise}}

\makeatletter
\def\myExerciseName{\ifdefempty{\@ExerciseName}{\ExerciseName}{\@ExerciseName}}
\makeatother
\renewcommand{\AnswerName}{Solution}
\renewcommand{\AnswerHeader}{\medskip\centerline{\textbf{ Answer (\myExerciseName\ \ExerciseHeaderNB)}\smallskip}}
%%%%%%%%%%%%
\begin{document}

ABCDE

\begin{exo}
ABCDE   
\end{exo}

\begin{Answer}
A
\end{Answer}

\begin{prob}
ABC
\end{prob}
\begin{Answer}
A
\end{Answer}

\begin{exo}
XYZ   
\end{exo}

\begin{Answer}
QWE
\end{Answer}

\end{document}

结果:

在此处输入图片描述

相关内容