Hyperref 没有跳转到回忆录子底部的适当位置

Hyperref 没有跳转到回忆录子底部的适当位置

我正在尝试使用原生的 Memoirsubbottom命令。但是,我无法让hyperref链接跳转到“图片”,而不是“标题”。只有指向 (a) 和 (d) 的链接可以正常工作。

\documentclass[a4paper,14pt]{memoir}
\usepackage{graphicx}
\usepackage{hyperref}
% \usepackage[all]{hypcap}

\newsubfloat{figure} % allows to use "subbottom"

\begin{document}
This link jumps to the figure caption: \ref{fig:1}. 
% This one could be fixed with "\usepackage[all]{hypcap}", 
% but is it the correct approach?

This link jumps to the picture (the way I like): \ref{sf:1}. 

This link jumps to slightly-above-subcaption: \ref{sf:2}. 

This link jumps to slightly-above-subcaption: \subcaptionref{sf:3}, same as \ref{sf:3}.

This link jumps to the picture (the way I like): \ref{sf:4}.

This link jumps to slightly-above-subcaption: \ref{sf:5}.

\begin{figure}
\centering
% \hfill   % if uncommented, link to sf:1 jumps to incorrect vertical position too. Why?
\subbottom[Subfigure 1\label{sf:1}]{\includegraphics[width=3cm]{example-image-a}}
\hfill
\subbottom[Subfigure 2\label{sf:2}]{\includegraphics[width=3cm]{example-image-b}}
\hfill
\subbottom[\label{sf:3}Subfigure 3]{\includegraphics[width=3cm]{example-image-c}}
\\
\subbottom[Subfigure 4\label{sf:4}]{\includegraphics[width=3cm]{example-image-b}}
\hfill
\subbottom[\label{sf:5}Subfigure 5]{\includegraphics[width=3cm]{example-image-a}}
\caption{Figure with five subfigures\label{fig:1}}
\end{figure}        


\clearpage
This text is here to add more space for scrolling.

\end{document}

这是我看到的结果(TexLive 2018,Windows 10): 点击链接至 sf:1 和 sf:2

我的示例与文档图 10.19 于 v3.7g 版本,2018/04/04)。而且看起来问题出在 docs pdf 本身上。

类似代码,利用subcaptionbox即可。并且“超链接跳转到哪里?“在subcaption 包文档。但似乎subcaptionbox不鼓励与 Memoir 一起使用 - 会生成以下警告:

您正在使用带有 memoir 类的 caption 包。为了做好准备,我们现在将所有字幕宏和配置重置为内核默认值,然后让 caption 包接管。请记住使用 caption 包接口来配置您的字幕。

  • 难道我做错了什么?

  • caption除了使用和subcaption包之外,还有其他方法可以让链接跳转到“图片”吗?

答案1

这是一个更合适的补丁,它可以做正确的事情(将 refstepcoocounter 移入格式)。它已经用、和进行了测试,\subbottom并且\contsubbottom锚点\subtop似乎\contsubtop做了正确的事情

[sub optimal version removed]

编辑

这个看起来更简单。我们在 的开头添加步数计数器\vtop,这会让锚点比内容略高,这样看起来会更好。它与 和 一起工作没有 hyperref,早期版本没有。我也会看看\subcaption

\usepackage{xpatch}

\makeatletter
% less typing     
\newcommand\mem@step@subcounter{%
  \refstepcounter{sub\@captype}\@contkeep%
}

\xpatchcmd{\@memsubbody}%
{\refstepcounter{sub\@captype}\@contkeep}% search pattern
{}% replacement
{\typeout{@memsubbody is patched}}%
{\typeout{@memsubbody is NOT patched}}%

\xpatchcmd{\@memcontsubbody}%
{\refstepcounter{sub\@captype}\@contkeep}% pattern
{}% replacement
{\typeout{@memcontsubbody is patched}}%
{\typeout{@memcontsubbody is NOT patched}}%

\xpatchcmd{\@memsubfloat}%
{\vtop\bgroup}% search pattern
{\vbox\bgroup\mem@step@subcounter}% replacement
{\typeout{@memsubfloat patch is ok}}%
{\typeout{@memsubfloat patch is NOT ok}}%


\makeatother

为了\subcaption

\xpatchcmd{\subcaption}%
{\refstepcounter{sub\@captype}}% search pattern
{\H@refstepcounter{sub\@captype}}% replacement
{\typeout{subcaption second patch is ok}}%
{\typeout{subcaption second patch is NOT ok}}%

下都可以使用hypcap,只是注意链接名称会错误。

相关内容