当使用 moderncv 时,hyperref(和 pageref)链接指向部分而不是实际目标

当使用 moderncv 时,hyperref(和 pageref)链接指向部分而不是实际目标

我正在使用 moderncv - 并且有许多cventry包含个人的项目item

\section{Work Experience}
\cventry{Jan.~2010 -- Mar.~2013}{Project1}{Company1}{}{}{I worked on the following: \begin{itemize*}
    \item Wrote foo \label{tocBar}
    \item Made bar \label{tocBaz}
    \item Improved baz 
\end{itemize*}
}
\cventry{Apr.~2013 -- Mar.~2014}{Project2}{Company2}{}{}{I worked on the following: \begin{itemize*}
    \item Wrote more stuff \label{tocTheory}
    \item And improved theory of everything 
\end{itemize*}
}

现在,我想创建指向某些特定 \item(例如 tocBar)的内部(可点击)链接。不幸的是,当我尝试使用时\hyperref[some text]{tocBar},PDF 中生成的链接指向该节的开头,而不是它\item本身。

如果我使用\pageref{tocBar}- 则会出现类似的行为,尽管在这种情况下,创建的页码是正确的;只是生成的链接是错误的(它将我带到该部分的开头而不是\item)。

我能做些什么来创建指向各个项目的正常工作的链接?

编辑:我在这里添加了一个完整、可重现的示例:https://gist.github.com/ttsiodras/76572cb3446cb8b1ad878640337e45b5 尝试单击第一页中生成的链接,您会看到它导航到第二页而不是第三页(实际上包含指向的元素)。

答案1

您正在使用\usepackage[options...]{hyperref},您应该使用\AtBeginDocument{\hypersetup{colorlinks=true,urlcolor=color1,linkcolor=color1}}来设置选项。

这是因为文件hyperref中已经调用moderncv.sty并且包的设置已经定义AtBeginDocument,所以如果您只是尝试使用该hypersetup命令,它将不起作用或引发错误。

中的部分和项目定义与moderncv中的不同article。没有计数器,深度也全部关闭。因此,当您放置 时,\label{}它将指向最新的部分。要解决此问题,只需使用\phantomsection{}您希望交叉引用指向的位置即可。

另外,我使用它color1作为链接的颜色,否则,你会得到与其余格式不一致的蓝色。

我的 MWE:

\documentclass[11pt,a4paper,sans]{moderncv}
\moderncvstyle{classic}
\moderncvcolor{blue}
\usepackage{mdwlist}
\usepackage{lipsum}
%\usepackage[colorlinks=true,urlcolor=blue,linkcolor=blue]{hyperref} <-- This will throw an error

\firstname{John}
\familyname{Doe}
\email{[email protected]}
\homepage{www.johndoe.com}
\makeatletter
\makeatother
\AtBeginDocument{\hypersetup{colorlinks=true,urlcolor=color1,linkcolor=color1}} %<--- This is how you set it up
\begin{document}
\makecvtitle
\section{Summmary}
\begin{itemize*}
    \item For my work on foo, please see \hyperref[tocAlpha]{this information}. %<-- notice color
\end{itemize*}
\section{Experience}\label{sec:experience}
\subsection{Professional coding}
    \cventry{Jan.~2016 -- today}{Software Engineer}{Space colony}{}{}{Over the last 4 years...
    \begin{itemize*}
        \item Work on \lipsum[1-2] %Shorter and easier, no?
        \item More work on \lipsum[1-2]
        \item Extra work on \lipsum[1-2]
        %\item 
\end{itemize*}
}
    \cventry{year--year}{Job title}{Employer}{City}{}{See section \hyperref[sec:experience]{some text}}

    \cventry{Jan.~2010 -- Jan.~2016}{Software Engineer}{Mars colony}{}{}{Over the last 6 years...\begin{itemize*}
            \phantomsection{}\label{tocAlpha}
        \item Work on foo \lipsum[1-2]
        \item More work on \lipsum[1-2]
        \item Extra work on \lipsum[1-2]
\end{itemize*}
}
\end{document}

注意,我使用lipsum包作为示例,以使其更加......简约:)

相关内容