.png)
No final de cada problema, gostaria de ter a indicação do número da página da solução desse problema.
Se eu fizer algo assim,
\documentclass{article}
\usepackage{amsthm,thmtools}
\declaretheoremstyle[
notefont=\bfseries,
notebraces={}{},
headformat={\large\NUMBER.\NOTE},
headpunct={\vspace{\topsep}\newline},
spacebelow=40pt,
prefoothook={\hfill Solução: pág. \pageref{solucao:\Currentlabel}}
]{problemastyle}
\declaretheorem[style=problemastyle]{problema}
\usepackage{answers}
\Newassociation{solucao}{Sol}{solucoes}
\renewenvironment{Sol}[1]{\begin{trivlist}
\item[\hskip\labelsep\textbf{#1.}] \label{solucao:#1} \ignorespaces}%
{\end{trivlist}}
\usepackage{hyperref}
\usepackage{lipsum}
\begin{document}
\Opensolutionfile{solucoes}
\begin{problema}[Primeiro problema]
Problema 1.
\begin{solucao}
\lipsum
\end{solucao}
\end{problema}
\begin{problema}[Segundo problema]
Problema 2.
\begin{solucao}
\lipsum[1]
\end{solucao}
\end{problema}
\begin{problema}[Terceiro problema]
Problema 3.
\begin{solucao}
\lipsum[1]
\end{solucao}
\end{problema}
\Closesolutionfile{solucoes}
\include{solucoes}
\end{document}
Consigo o que quero, mas os links nos números das páginas apontam todos para o mesmo lugar.
Como posso corrigir isso?
Responder1
Você precisa ter o ambienteSolpara não apenas produzir um rótulo de referência cruzada, mas também para criar um destino/destino/âncora nomeado para vinculação cujo nome é transformado na nova definição da macro \@currentHref
e, portanto, é usado pelo comando \label
ao criar o rótulo de referência cruzada. Você pode usar \phantomsection
, mas também pode implementar sua própria coisa que usa o argumento doSol-environment como o nome do destino/destino/âncora nomeado também. Neste caso o argumento doSol-o ambiente pode consistir apenas em coisas que os visualizadores de PDF podem processar como componentes de nomes de destinos/alvos/âncoras, e como dois destinos/alvos/âncoras não podem ter o mesmo nome, neste caso não há doisSol-ambiente pode ter argumentos que se expandem para as mesmas coisas.
\documentclass{article}
\usepackage{amsthm,thmtools}
\declaretheoremstyle[
notefont=\bfseries,
notebraces={}{},
headformat={\large\NUMBER.\NOTE},
headpunct={\vspace{\topsep}\newline},
spacebelow=40pt,
prefoothook={\hfill Solução: pág. \pageref{solucao:\Currentlabel}}
]{problemastyle}
\declaretheorem[style=problemastyle]{problema}
\usepackage{answers}
\Newassociation{solucao}{Sol}{solucoes}
\renewenvironment{Sol}[1]{\begin{trivlist}%
\item[\hskip\labelsep\SolutionAnchor{#1}\textbf{#1.}]\ignorespaces}%
{\end{trivlist}}%
\makeatletter
\DeclareRobustCommand\SolutionAnchor[1]{%
\begingroup
\Hy@localanchornametrue
\Hy@MakeCurrentHref{solution.#1}%
\Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
\label{solucao:#1}%
\endgroup
}%
%
% Alternatively, using \phantomsection:
%
% \DeclareRobustCommand\Hy@SolutionAnchor[1]{%
% \begingroup
% \Hy@localanchornametrue
% \phantomsection
% \label{solucao:#1}%
% \endgroup
% }%
%
% Or, with a very recent TeX installation, use \MakeLinkTarget*
%
%\DeclareRobustCommand\SolutionAnchor[1]{%
% \MakeLinkTarget*{solution.#1}%
% \label{solucao:#1}%
%}%
\makeatother
\usepackage{hyperref}
\usepackage{lipsum}
\begin{document}
\Opensolutionfile{solucoes}
\begin{problema}[Primeiro problema]
Problema 1.
\begin{solucao}
\lipsum
\end{solucao}
\end{problema}
\begin{problema}[Segundo problema]
Problema 2.
\begin{solucao}
\lipsum[1]
\end{solucao}
\end{problema}
\begin{problema}[Terceiro problema]
Problema 3.
\begin{solucao}
\lipsum[1]
\end{solucao}
\end{problema}
\Closesolutionfile{solucoes}
\include{solucoes}
\end{document}