我创建了一个包含问题的文档。我实现的一个功能是单击问题编号,即可在文档末尾找到答案,反之亦然(参见 MWE)。
我的实现基于ntheorem
和answers
包。
但是现在我想用tcolorbox
( tcbtheorem
) 包实现这样的功能。我不知道该怎么做,tcbtheorem
如下所示:
\item[\theorem@headerfont\hyperlink{solution:\@roman{##2}}
-
% !TeX program = pdflatex
% !TeX encoding = utf8
\documentclass{book}
\usepackage{ntheorem}
\usepackage{answers}
\usepackage{lipsum}
\usepackage{hyperref}
\usepackage[many]{tcolorbox}
\makeatletter
%========================================================================================================
%
% Problem environment
%
%========================================================================================================
\newtheoremstyle{problemstyle}%
{%
\hypertarget{problem:\@roman{##2}}{}%
\ifcsname r@solution\@roman{##2}\endcsname
\item[\theorem@headerfont\hyperlink{solution:\@roman{##2}}{##2\theorem@separator}]
\else
\item[\theorem@headerfont##2\theorem@separator]
\fi
}%
{%
\hypertarget{problem:\@roman{##2}}{}%
\ifcsname r@solution\@roman{##2}\endcsname
\item[\theorem@headerfont\hyperlink{solution:\@roman{##2}}{##2\theorem@separator}] (##3)
\else
\item[\theorem@headerfont##2\theorem@separator] (##3)
\fi
}
\theoremstyle{problemstyle}
\newtheorem{problem}{}[chapter]
%========================================================================================================
%
% Answer environment
%
%========================================================================================================
\Newassociation{solution}{Solution}{answer}
\renewenvironment{Solution}[1]{%
\par%
\addpenalty{-\@lowpenalty}%
\noindent%
\hypertarget{solution:\@roman{#1}}{\noindent\hyperlink{problem:\@roman{#1}}{#1.}\label{solution\@roman{#1}}}
}{%
\par%
\addpenalty{-\@lowpenalty}%
}
\makeatother
%========================================================================================================
%
% Document
%
%========================================================================================================
\begin{document}
\chapter{Chapter}
\Opensolutionfile{answer}[Answers]
\begin{problem}
\lipsum[10]
\begin{solution}
\lipsum[20]
\end{solution}
\end{problem}
\Closesolutionfile{answer}
\newpage
\input{Answers}
\end{document}