我正在写一本教科书山猫其中包括 (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}
我想要了解以下信息:
- 是否
xsim
受 Lyx 支持或者至少与 Lyx 兼容? - 我是否能够以通常的 Lyx UI 方式在该包的环境中编写和查看公式?
- 还有其他更好的替代解决方案可以满足我的需要吗?
- 如何在 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。
现在您应该能够在可用的模块列表中看到新的模块:
问题是,
- 更改模块命令
- 重新配置 LyX
- 重启 LyX
- 检查您是否适合新配置
- 再次做出一些改变
非常慢。因此,首先确保您熟悉在本地布局中设置的模块,然后快速验证它。然后才进行更改并更新布局目录中的模块文件。