让我们考虑以下 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
宏用于测试应该使用两个宏中的哪一个。\ifdefempty
etoolbox
梅威瑟:
\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}
结果: