Lyx 是否支持贯穿教科书正文的练习,其解决方案写在每个练习之后但打印在教科书的末尾?

Lyx 是否支持贯穿教科书正文的练习,其解决方案写在每个练习之后但打印在教科书的末尾?

我正在写一本教科书山猫其中包括 (a) 贯穿各章正文的练习和 (b) 每章末尾的附加练习。章末练习将采用与常规教科书类似的编号列表格式。为了不丢失每个练习与其答案之间的联系,我想在相应的练习之后立即写出这两种练习的答案。但是,我希望 (a) 和 (b) 的答案打印在书的末尾。

xsim似乎是我想要的最新的 Latex 包。我计划将default练习的布局与每章的文本混合使用。对于章末练习,的作者 Clemensxsim建议我定义一个template模拟enumerate环境的布局:

\documentclass{book}
\usepackage{xsim}

\usepackage{kantlipsum}% dummy text
\DeclareExerciseType{xrcs}{
  exercise-env      = xrcs ,
  solution-env      = sltn ,
  exercise-name     = \XSIMtranslate{exercise} ,
  exercises-name    = \XSIMtranslate{exercises} ,
  solution-name     = \XSIMtranslate{solution} ,
  solutions-name    = \XSIMtranslate{solutions} ,
  exercise-template = enumerate ,
  solution-template = enumerate ,
  % counter           = exercise % if a shared counter is wanted
}

\DeclareExerciseEnvironmentTemplate{enumerate}
  {\begin{itemize}\item[\GetExerciseProperty{counter}.]}
  {\end{itemize}}

\begin{document}

\chapter{My chapter}
\section{Heading One}

\kant[1]

\begin{exercise}
  First exercise
\end{exercise}

\section{Heading Two}

\kant[2]

\section{Exercises}
\begin{xrcs}
  Exercise One
\end{xrcs}
\begin{xrcs}
  Exercise Two
\end{xrcs}
\begin{xrcs}
  Exercise Three
\end{xrcs}

\end{document}

我想要了解以下信息:

  1. 是否xsim受 Lyx 支持或者至少与 Lyx 兼容?
  2. 我是否能够以通常的 Lyx UI 方式在该包的环境中编写和查看公式?
  3. 还有其他更好的替代解决方案可以满足我的需要吗?
  4. 如何在 Lyx 中安装所需的软件包?

非常感谢,罗道夫

第一次编辑 非常感谢您的详细回答!

LyX GUI 中的一切都按预期运行。但我在尝试编译时遇到了问题。

我检查了 TexLife 和模拟软件包在列表中。但是,尝试编译时报告缺少该软件包。我安装了该软件包,问题就解决了。

我仍然无法编译:我将制作一些玩具示例来报告每个示例的错误消息。

第一个玩具示例:仅包括 xsimExercises 和 sximSolutions,我在编译时收到以下错误:未完待续。

从Clemens提供的代码中,我计划仅在序言中复制以下内容:

\usepackage{xsim}

\DeclareExerciseType{xrcs}{
  exercise-env      = xrcs ,
  solution-env      = sltn ,
  exercise-name     = \XSIMtranslate{exercise} ,
  exercises-name    = \XSIMtranslate{exercises} ,
  solution-name     = \XSIMtranslate{solution} ,
  solutions-name    = \XSIMtranslate{solutions} ,
  exercise-template = enumerate ,
  solution-template = enumerate ,
  % counter           = exercise % if a shared counter is wanted
}

\DeclareExerciseEnvironmentTemplate{enumerate}
  {\begin{itemize}\item[\GetExerciseProperty{counter}.]}
  {\end{itemize}}

我猜其余部分与他创建的文档相对应。有错误吗?

exercise在你编写的 Style xsimExercise 中,我看不到与xsim 包的命令连接以开始练习的指令。我看到的只有 LatexName xrcs

我对练习环境做了一些小改动,包括以下内容:

Counter xsimSolution                                        # adaptation
    Within         section
End

Counter solution                                            # adaptation
    Within         section
End

Style xsimSolution                                          # adaptation
    Category              Reasoning
    Margin                First_Dynamic
    LatexType             Environment
    LatexName             sltn                              # adaptation
    NextNoIndent          1
    ResetArgs             1
    Argument 1
        LabelString   "(string)"
        Decoration    Minimalistic
    EndArgument
    # AddToToc              Exercises                       # adaptation
    # IsTocCaption          1                               # adaptation
    LabelSep              xx
    ParIndent             MMM
    ParSkip               0.4
    ItemSep               0.2
    TopSep                0.7
    BottomSep             0.7
    ParSep                0.3
    Align                 Block
    AlignPossible         Left
    LabelType             Static
    LabelCounter          xsimSolution                      # adaptation
    LabelString           "xsimSolution \thexsimSolution"   # adaptation
    Font
      Shape               Up
      Size                Normal
    EndFont
    LabelFont
      Shape               Up
      Series              Bold
    EndFont
    RefPrefix             sltn                              # adaptation
    Requires              xsim                              # idem
End

Style Solution
    Category              Reasoning
    Margin                First_Dynamic
    LatexType             Environment
    LatexName             solution                          # adaptation
    ParagraphGroup        1
    NextNoIndent          1
    ResetArgs             1
    Argument 1
        LabelString   "(string)"
        Decoration    Minimalistic
    EndArgument
    # AddToToc              Exercises                       # adaptation
    # IsTocCaption          1                               # adaptation
    LabelSep              xx
    ParIndent             MMM
    ParSkip               0.4
    ItemSep               0.2
    TopSep                0.7
    BottomSep             0.7
    ParSep                0.3
    Align                 Block
    AlignPossible         Left
    LabelType             Static
    LabelCounter          solution                          # adaptation
    LabelString           "solution \thesolution"           # adaptation
    Font
      Shape               Up
      Size                Normal
    EndFont
    LabelFont
      Shape               Up
      Series              Bold
    EndFont
    RefPrefix             sol                               # adaptation
End

答案1

你需要的是将这些新环境定义到你的莱克斯文档。

您已经使用序言中写的上述设置完成了此操作,但 LyX 对此还一无所知。

在 LyX 中,转到文档->设置->本地布局,然后在文本框中输入以下内容:

Format 60

Counter xsimExercise
    Within         section
End

Counter exercise
    Within         section
End

Style xsimExercise
    Category              Reasoning
    Margin                First_Dynamic
    LatexType             Environment
    LatexName             xrcs
    NextNoIndent          1
    ResetArgs             1
    Argument 1
        LabelString   "(string)"
        Decoration    Minimalistic
    EndArgument
    AddToToc              Exercises
    IsTocCaption          1
    LabelSep              xx
    ParIndent             MMM
    ParSkip               0.4
    ItemSep               0.2
    TopSep                0.7
    BottomSep             0.7
    ParSep                0.3
    Align                 Block
    AlignPossible         Left
    LabelType             Static
    LabelCounter          xsimExercise
    LabelString           "xsimExercise \thexsimExercise"
    Font
      Shape               Up
      Size                Normal
    EndFont
    LabelFont
      Shape               Up
      Series              Bold
    EndFont
    RefPrefix             xrcs #label prefix when iserting a label
           Requires              xsim
End

Style Exercise
    Category              Reasoning
    Margin                First_Dynamic
    LatexType             Environment
    LatexName             exercise
    ParagraphGroup        1
    NextNoIndent          1
    ResetArgs             1
    Argument 1
        LabelString   "(string)"
        Decoration    Minimalistic
    EndArgument
    AddToToc              Exercises
    IsTocCaption          1
    LabelSep              xx
    ParIndent             MMM
    ParSkip               0.4
    ItemSep               0.2
    TopSep                0.7
    BottomSep             0.7
    ParSep                0.3
    Align                 Block
    AlignPossible         Left
    LabelType             Static
    LabelCounter          exercise
    LabelString           "exercise \theexercise"
    Font
      Shape               Up
      Size                Normal
    EndFont
    LabelFont
      Shape               Up
      Series              Bold
    EndFont
    RefPrefix             exer
End

单击“验证并应用”。现在您应该在左上角的组合框中看到两个新环境:

在此处输入图片描述

在此处输入图片描述

关于此代码块的简单解释:

LyX 允许用户通过以下方式为编辑器定义一些新的环境和命令定制

上面的代码块实际上就是做出这种改变的布局文件。

Format 60是布局文件的格式编号。LYX 当前版本的格式为 60 格式。

Counter xsimExercise为此环境设置一个计数器。在部分内添加 +1。如果您希望两个环境exercise共享xrcs同一个计数器,请将其更改为

Counter xsimExercise
    Within         section
End

Counter exercise
    Within         xsimExercise
End

然后我们定义新的环境以及它们在编辑器中的外观

Style xsimExercise
  defintions
End

看看手册中的第 5.3.7 节以便更好地理解这些命令。

然后将你在问题中写的代码前言添加到LyX中的前言中(Document->Settings->Preamble)。

您已准备出发。

还有一件事:

在您完成所有自定义过程后,为了使其更加用户化,请将我编写的上述代码块保存为模块文件(带有module文件扩展名)(例如xsim.module),并在其中附加以下几行:

#\DeclareLyXModule{Exercise Environments}
#DescriptionBegin
#Defines exercise environments with the xsim package
#DescriptionEnd

<Code block goes here>

然后将此模块文件移动到 Mac OS 中的 LyX 布局目录中

/Applications/LyX.app/Contents/Resources/layouts/

在 Windows 中(如果我没记错的话)

C:/Users/laba/AppData/Roaming/LyX2.3/layouts

然后重新配置 LyX(工具->重新配置)并重新启动 LyX。

现在您应该能够在可用的模块列表中看到新的模块:

在此处输入图片描述

问题是,

  1. 更改模块命令
  2. 重新配置 LyX
  3. 重启 LyX
  4. 检查您是否适合新配置
  5. 再次做出一些改变

非常慢。因此,首先确保您熟悉在本地布局中设置的模块,然后快速验证它。然后才进行更改并更新布局目录中的模块文件。

相关内容