更改 chemnum 中超链接的目标

更改 chemnum 中超链接的目标

我今天正在阅读手册chemnum,第一次注意到超链接选项。这是一个好主意,这样当我在定义“化合物 4” 30 页后引用它时,很容易点击链接查看它是什么。

但是,它并没有到达最有用的地方。你看,我\refcmpd在章节标题中使用了它,因为手册中有一个关于混合使用 \cmpd 和目录的警告。同样,我不在图片标题中使用 \cmpd。

这意味着,当您单击链接时,它会将该行文本放在页面顶部,您看到的是一段文本,而且您不清楚应该看什么,因为链接目标不在焦点中心附近。

示例:您能找到链接目标吗?它不在页面中心附近(眼睛自然会看的地方)。它也不是页面上任何彩色的链接目标。它是页面右上角的粗体数字。未显示:使整个事情有意义的数字,就在页面顶部。 显示一页文本的图像,其中链接目标远未达到焦点中心。

是否可以将此目标更改为指向定义复合的节/小节/小子节的顶部,或指向手动设置的锚点(然后我可以在该节的顶部放置一个 \cmpdlabel 命令,这样您首先看到的就是节标题和开头的图?)

想要移动文档中的每个链接,因为这会搞乱图形、章节和参考文献的超链接,而这些超链接现在都运行良好。

我添加了一个 MWE 来显示问题并可以进行尝试:

\documentclass{article}
\usepackage{chemnum}
\setchemnum{hyperlinks=true}

\usepackage{lipsum} % just for dummy text
\usepackage{graphicx} 

\usepackage{hyperref}

\begin{document}
\section{Title} %Link going here, good
\label{sec:one} %I could manually set a target like this

\begin{figure}[tbh]
    \includegraphics[width=\textwidth]{example-image}
    \caption[\refcmpd{a}]%
        {This figure is included in the MWE as every section starts with one.
        In fact, it is part fo the reason the first cmpd is so far down the page.
        It is one of the things I'd like to appear when the link is clicked on. \refcmpd{a}.}
    \label{fig:PictureOfA}%
\end{figure}

\cmpd{a} %Link puts this at the top of the page
\lipsum[1-2]
\cmpd{a} 


\end{document}

您现在通过 MWE 看到的内容:同样的问题,我想展示的东西被切断了

我希望看到的是:章节标题和图表

编辑:事实证明,这在我的 MWE 之外不起作用,而是将我带到论文的第一页,所以我对此感到紧张是正确的。包括在内,因此这不被用作答案的基础。

做过想办法让它工作,但是......有点可怕,因为我担心将我的数字系统锚定到浮点数上可能会对我产生不利影响。

\documentclass{article}
\usepackage{chemnum}
\setchemnum{hyperlinks=true}

\usepackage{lipsum} % just for dummy text
\usepackage{graphicx} 

\usepackage{hyperref}

\begin{document}
\section{Title} %Link going here, good
\label{sec:one} %I could manually set a target like this

\begin{figure}[tbh]
    \includegraphics[width=\textwidth]{example-image}
    \caption[\refcmpd{a}]%
        {This figure is included in the MWE as every section starts with one.
        In fact, it is part fo the reason the first cmpd is so far down the page.
        It is one of the things I'd like to appear when the link is clicked on. \cmpd{a}.} 
        %I'm now using \refcmpd{a} in the text sent to the TOC, and \cmpd{a} in the actual caption
    \label{fig:PictureOfA}%
\end{figure}

\cmpd{a} %This is IN THEORY no longer the first link
\lipsum[1-2]
\cmpd{a} 

\end{document}

这给了我以下结果,它似乎是图表所在的页面顶部,这...更好,但不是理想的。首先,如果我出于某种原因没有将该图表作为该部分的第一项,或者使用环绕图或图表漂移到下一页,这个技巧将不再有效。

现在这个链接会带我到该页面的顶部

答案1

谢谢Ulrike Fischer 的回答

\documentclass{article}
\usepackage{chemnum}
\setchemnum{hyperlinks=true}

%%%%THIS IS THE CODE THAT MAKES THIS WORK
\ExplSyntaxOn
    \newcommand\cmpdtarget[1]{
        \chemnum_use_compound:n {#1}
        \chemnum_hyper_target:nn {#1}
    }
\ExplSyntaxOff
%%%%END OF NEW CODE

\usepackage{lipsum} % just for dummy text
\usepackage{graphicx} 

\usepackage{hyperref}

\begin{document}
\section{Title} %Link going here, good
\label{sec:one}
\cmpdtarget{a} %This is the manual target

\begin{figure}[tbh]
    \includegraphics[width=\textwidth]{example-image}
    \caption[\refcmpd{a}]%
        {This figure is included in the MWE as every section starts with one.
        In fact, it is part fo the reason the first cmpd is so far down the page.
        It is one of the things I'd like to appear when the link is clicked on. \cmpd{a}.} 
        %I'm now using \refcmpd{a} in the text sent to the TOC, and \cmpd{a} in the actual caption
    \label{fig:PictureOfA}%
\end{figure}

\cmpd{a} %This is IN THEORY no longer the first link
\lipsum[1-2]
\cmpd{a} 

\end{document}

它并不完美,它只是位于章节标题下方,而不是章节标题本身,但它比以前的版本好得多,所以我会使用它。谢谢。

相关内容