使用exsheets
,我想将问题链接到他们的解决方案,并将解决方案链接到他们的问题。这个问题也在问题中讨论过如何使用 Exsheets 包自动链接问题和解决方案?,尽管接受的答案只解决了一半的问题(即解决方案-->问题链接)。
我尝试使用solution/pre-body-hook=\label{sol:\CurrentQuestionID}
来标记解决方案,然后使用 插入指向它们的链接question/pre-body-hook
。(这种方法被建议作为一种可能的方法,在我上面链接的问题中)。
我的问题是,所有解决方案标签似乎都没有指向正确的位置。也就是说,它们都指向解决方案部分,而不是单个解决方案。请参阅下面的完整代码。(注意:exsheets
需要 0.19 版本。)
\documentclass{article}
\usepackage[auto-label]{exsheets} %Requires version 0.19
\usepackage{hyperref}
\hypersetup{colorlinks=true, linkcolor=blue}
\usepackage{lipsum}
\SetupExSheets{
question/pre-body-hook = {%
\hyperref[sol:\CurrentQuestionID]{Link to Solution}%
\dots ref value is \ref{sol:\CurrentQuestionID}\\%
},
solution/pre-body-hook = {%
\label{sol:\CurrentQuestionID}%
\hyperref[qu:\CurrentQuestionID]{Link to Question}\\
},
solution/post-body-hook = \newpage,
}
\begin{document}
\section{Problems}
\begin{question}
\lipsum[1]
\end{question}
\begin{solution}
\lipsum[2]
\end{solution}
\begin{question}
\lipsum[3]
\end{question}
\begin{solution}
\lipsum[4]
\end{solution}
\newpage
\section{Answers}
\printsolutions
\end{document}
有趣的是,如果我使用
solution/pre-body-hook = {%
\begin{align}\label{sol:\CurrentQuestionID}
1+1=2
\end{align}
}
然后问题-->解决方案链接就可以正常工作了。(当然,我不希望每个解决方案的开头都有一个愚蠢的等式。)
答案1
解决方案没有自己的计数器,因此设置\label
是没有用的。\label
总是设置对最后一个已步进的计数器的引用\refstepcounter
。这就是为什么您的方程式示例似乎有效。但事实并非如此:标签指的是方程式而不是解决方案。
您可以做的是添加\hypertarget
并使用 链接到该内容\hyperlink
。
相应的问题编号可用作问题属性,其名称为counter
。类似这样的代码Link to Solution \GetQuestionProperty{counter}{\CurrentQuestionID}
应该会给出你想要的链接文本:
\SetupExSheets{
question/pre-body-hook = {%
\hyperlink{sol:\CurrentQuestionID}{Link to Solution
\GetQuestionProperty{counter}{\CurrentQuestionID}}\par
},
solution/pre-hook = {
\hypertarget{sol:\CurrentQuestionID}{}%
} ,
solution/pre-body-hook = {%
\hyperref[qu:\CurrentQuestionID]{Link to Question
\GetQuestionProperty{counter}{\CurrentQuestionID}}\par
}
}
完整文档:
\documentclass{article}
\usepackage[auto-label]{exsheets} %Requires version 0.19
\usepackage{hyperref}
\usepackage{lipsum}
\SetupExSheets{
question/pre-body-hook = {%
\hyperlink{sol:\CurrentQuestionID}{Link to Solution
\GetQuestionProperty{counter}{\CurrentQuestionID}}\par
},
solution/pre-hook = {
\hypertarget{sol:\CurrentQuestionID}{}%
} ,
solution/pre-body-hook = {%
\hyperref[qu:\CurrentQuestionID]{Link to Question
\GetQuestionProperty{counter}{\CurrentQuestionID}}\par
}
}
\begin{document}
\section{Problems}
\begin{question}
\lipsum[1]
\end{question}
\begin{solution}
\lipsum[2]
\end{solution}
\begin{question}
\lipsum[3]
\end{question}
\begin{solution}
\lipsum[4]
\end{solution}
\newpage
\section{Answers}
\printsolutions
\end{document}