tabularx 环境的开头超链接位置略有错误

tabularx 环境的开头超链接位置略有错误

我正在编写一个文档,其中必须放置许多类似的表格(并且必须使它们保持“相似”)。因此,我正在编写一些宏来自动生成并部分填充表格。(我生成表格并将项目键传递给宏,以便我可以自动获取 ID、标题和其他一些信息。)这是为了解释我需要使用宏。

效果(令人惊讶)不错,除了表格链接位置稍微有点错误,它会“切断”标题行。也就是说,如果您单击“链接”,它会在页面上(稍微)向下移动太远,表格无法完全显示,您必须向上滚动。我认为这取决于使用的查看器(一些链接到页面,一些链接到确切的行)。我使用的是 TexStudio 中集成的查看器。

这是一个最小的工作示例:

\documentclass[11pt]{report}       
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{hyperref}   

\newcommand\mytitle[1]{\phantomsection A title generated from a key\label{test}}

\newcommand\mytab[1]{
        \begin{center}
            \begin{tabularx}{\textwidth}{ l  X } 
                \toprule
                \multicolumn{2}{c}{\mytitle}  \\
                \midrule
                ID & \dots \\ 
                \addlinespace[1em] 
                etc. &  \dots \\
                \bottomrule
            \end{tabularx}
        \end{center}
        }

\begin{document} 
    Link to title table: \hyperref[test]{link}

    \pagebreak

    \mytab

\end{document} 

我究竟做错了什么?

非常感谢!

答案1

正如@ChristianHupfer 在评论中指出的那样,您遇到的问题主要与您使用的 pdf 浏览器有关。

如果切换 pdf 浏览器不是一个可行的选择,您可以尝试以下补救措施:将\phantomsection\label语句移动到宏的最开始\mytab

\documentclass[11pt]{report}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{tabularx}
\usepackage{hyperref}

\newcommand\mylink[1]{\phantomsection\label{#1}}
\newcommand\mytitle[1]{\textbf{#1}}  % set appearance of title string

% \mytab now takes two arguments: the label string and the title string
\newcommand\mytab[2]{\mylink{#1}
        \begin{center}
            \begin{tabularx}{\textwidth}{ l  X }
                \toprule
                \multicolumn{2}{c}{\mytitle{#2}}  \\
                \midrule
                ID & \dots \\
                \addlinespace[1em]
                etc. &  \dots \\
                \bottomrule
            \end{tabularx}
        \end{center}
        }

\begin{document}
    Link to table's title line: \hyperref[lab:test]{link}

    \pagebreak

    \mytab{lab:test}{A title generated from a key}

\end{document} 

相关内容