每次练习后都会出现Xsim简短解决方案

每次练习后都会出现Xsim简短解决方案

我想要一份包含一些练习和解决方案的文档。我知道有很多软件包可以做到这一点,我之所以选择它是xsim因为它符合我的许多标准。

现在,我希望每次练习后都能有一个简短的解决方案。我在软件包的文档中找到了一个例子,其中有这样的shortsolution环境。但我不知道如何让它们在每次练习后出现。

我尝试(但没有成功)使用一种接近环境的语法solution,该语法可以在每次练习后使用注释出现\xsimsetup{solution/print = true}

以下是我的 MWE:

% http://texwelt.de/wissen/fragen/23968/
\documentclass{article}
\usepackage{xsim}

% new property:
\DeclareExerciseProperty{shortsolution}

% new environment:
\NewDocumentEnvironment{shortsolution}{+b}
  {%
    \edef\ExerciseType{\csname g_xsim_exercise_type_tl\endcsname}%
    \edef\ExerciseID{\csname g_xsim_exercise_id_tl\endcsname}%
    \SetExerciseProperty{shortsolution}{#1}%
  }
  {}

% we'll use a description list for the list of short solutions:
\newcommand\printshortsolutions{%
  \begin{description}
    \ForEachUsedExerciseByType{%
      \GetExercisePropertyT{shortsolution}
        {\item[Short Solution ##3]####1}%
    }%
  \end{description}
}

\xsimsetup{ % This something I added and not working !
   shortsolution/print = true,
}

\begin{document}

\section{Problems}
% set shortsolution through option:
\begin{exercise}[subtitle=Pythagoras]
  This is the first problem.
\end{exercise}
\begin{shortsolution}
  This is a shortsolution to the first problem.
\end{shortsolution}
\begin{solution}
  This is the solution to the first problem.
\end{solution}

\begin{exercise}[subtitle=Another Problem]
  This is the second problem.
\end{exercise}
\begin{solution}
  This is the solution to the second problem.
\end{solution}

% set shortsolution with custom command:
\begin{exercise}[subtitle=Yet Another Problem]
  This is the third problem.
\end{exercise}
\begin{shortsolution}
  This is a shortsolution to the third problem.
\end{shortsolution}
\begin{solution}
  This is the solution to the third problem.
\end{solution}

\section{Shortsolutions}
\printshortsolutions

\section{Solutions}
\printsolutions[headings=false]

\end{document}

还有一个附加问题,如何改变显示环境的布局shortsolution

答案1

  1. 如果要shortsolution在文档中排版环境所在的简短解决方案,只需#1在定义中放置另一个,请参阅标有<<<<

     \NewDocumentEnvironment{shortsolution}{+b}
       {%
         \edef\ExerciseType{\csname g_xsim_exercise_type_tl\endcsname}%
         \edef\ExerciseID{\csname g_xsim_exercise_id_tl\endcsname}%
         \SetExerciseProperty{shortsolution}{#1}%
         before% <<<<
         #1%     <<<<
         after%  <<<<
       }
       {}
    
  2. 此处更改布局的方式与其他地方相同:\textbf{#1}将其以粗体打印、\textcolor{red}{#1}将其设为红色(假设您xcolor在序言中加载了包)等等。下一个示例将其放置在tcolorbox

     \usepackage{tcolorbox}
     \NewDocumentEnvironment{shortsolution}{+b}
       {%
         \edef\ExerciseType{\csname g_xsim_exercise_type_tl\endcsname}%
         \edef\ExerciseID{\csname g_xsim_exercise_id_tl\endcsname}%
         \SetExerciseProperty{shortsolution}{#1}%
         \begin{tcolorbox}
           #1
         \end{tcolorbox}
       }
       {}
    

    在此处输入图片描述

  3. 只需一个简单的开关即可实现此功能可选

     \newif\ifshortsolprint
    

     \ifshortsolprint
     \begin{tcolorbox}
       #1
     \end{tcolorbox}
     \fi
    

    可以通过\shortsolprinttrue\newif\shortsolprintfalse之后的任何地方进行控制\newif\ifshortsolprint

    当然\xsimsetup也可以定义一个键,但需要 expl3:

     \ExplSyntaxOn
     \bool_new:N \l_xsim_shortsolution_bool
    
     \keys_define:nn {xsim}
       { shortsolution/print .bool_set:N = \l_xsim_shortsolution_bool }
    
     % new environment:
     \NewDocumentEnvironment{shortsolution}{+b}
       {
         \tl_set:NV \ExerciseType \g_xsim_exercise_type_tl
         \tl_set:NV \ExerciseID \g_xsim_exercise_id_tl
         \SetExerciseProperty {shortsolution} {#1}
         \bool_if:NT \l_xsim_shortsolution_bool
           { \begin{tcolorbox} #1 \end{tcolorbox} }
       }
       {}
     \ExplSyntaxOff
    

    现在可以通过以下方式控制

     \xsimsetup{ shortsolution/print = true }
    

相关内容