我一直在尝试找出原因,但我的 Latex 技能太弱,无法理解看似类似的问题。当我尝试这样做时:
\documentclass{memoir}
\usepackage{graphicx}
\usepackage{exsheets}
\usepackage{tcolorbox}
%#####################
\begin{document}
\newenvironment{oppg}{\begin{tcolorbox}\begin{question}}{\end{question}\end{tcolorbox}}
\begin{oppg}
Exercise text in a box
\end{oppg}
\begin{oppg}
Exercise text in a box
\end{oppg}
\end{document}
我收到一大堆错误。
我不明白为什么这不起作用。
我怎样才能将我的练习题包装到彩色盒子里?
谢谢!
答案1
可以将question
环境包装在\tcolorboxenvironment
重新定义中。
\documentclass{memoir}
\usepackage{graphicx}
\usepackage{exsheets}
\usepackage[most]{tcolorbox}
\begin{document}
\tcolorboxenvironment{question}{colback=yellow} % 2nd arg is for tcolorbox options.
\begin{question}
Exercise text in a box
\end{question}
\end{document}
编辑稍微灵活一点,不必question
永远都是tcolorbox
,我通过复制\LetLtxMacro
并命名\oppg
。
这可以与 一起使用,\tcolorboxenvironment
而question
仍然是相同的环境。但是,两个环境共享相同的计数器(到目前为止)。
\documentclass{memoir}
\usepackage{graphicx}
\usepackage{exsheets}
\usepackage[most]{tcolorbox}
\usepackage{letltxmacro}
\begin{document}
\LetLtxMacro\oppg\question
\tcolorboxenvironment{oppg}{colback=yellow,colframe=red}
\begin{question}%[print=false]
Exercise text in a box
\end{question}
\begin{oppg}[print=false]
Another box
\end{oppg}
\begin{oppg}
Another box
\end{oppg}
\end{document}
答案2
我刚刚(2015/07/04)向 CTAN 发送了更新,exsheets
它允许以下(推荐)解决方案:
\SetupExSheets{
question/pre-hook = \begin{tcolorbox} ,
question/post-hook = \end{tcolorbox}
}
更新应该会在几天后在 TeX Live 和 MiKTeX 中推出。如果您不想等待:更新版本 (v0.19) 也可以在此处获得:https://bitbucket.org/cgnieder/exsheets/commits/tag/v0.19
完整示例:
\documentclass{article}
\usepackage{exsheets}[2015/07/04]
\usepackage{tcolorbox}
\usepackage{showframe} % just for showing page dimensions
\SetupExSheets{
question/pre-hook = \begin{tcolorbox} ,
question/post-hook = \end{tcolorbox} ,
solution/pre-hook = \begin{tcolorbox} ,
solution/post-hook = \end{tcolorbox} ,
no-skip-below ,
headings = tcolorbox
}
\DeclareInstance{exsheets-heading}{tcolorbox}{default}{
join = { title[r,B]number[l,B](.333em,0pt) } ,
attach = {
main[l,vc]title[l,vc](0pt,0pt) ;
main[r,vc]points[l,vc](\marginparsep+5.5mm,0pt) % depending on the
% colorbox the 5.5mm may need adapting
}
}
\begin{document}
\begin{question}{2}
This is sample question 1.
\end{question}
\begin{solution}
This is sample solution 1.
\end{solution}
\begin{question}{1}
This is sample question 2.
\end{question}
\begin{solution}
This is sample solution 2.
\end{solution}
\begin{question}[print=false]
This is sample question 3 -- not printed.
\end{question}
\printsolutions
\end{document}
顺便说一句:您对 的使用\newenvironment
并没有错。但是,exsheets
' 环境和tcolorbox
' 环境都不是简单环境。在内部exsheets
使用并将内容放在一个框中……这是提供钩子以在问题/解决方案之前和之后放置代码的主要原因。environ
tcolorbox
exsheets