引用与长表行链接的标签

引用与长表行链接的标签

有没有办法在 Longtabl 环境中链接到特定行。这在使用 hyperref 包时很有用,并允许查看者从文档中的某个位置跳转到表格的右行。目前,人们总是跳转到列的顶部?

例如:

\begin{longtable}
\label{r1}cell1a&cell1b&cell1c&cell1d&cell1e\\
\label{r2}cell2a&cell2b&cell2c&cell2d&cell2e\\
\label{r3}cell3a&cell3b&cell3c&cell3d&cell3e\\
\label{r4}cell4a&cell4b&cell4c&cell4d&cell4e\\
\end{longtable}

As one can see in \hyperref[r3]{row 3}...

答案1

看一下包中的宏\hypertarget\hyperlink内容hyperref

可以使用以下指令在文档中的几乎任何地方创建内部链接 - 包括表格环境中的某些行

\hypertarget{<name>}{<text>}

其中<name>应为 hyperref 将用来创建“目标”的唯一“标签”,并且<text>应为应放置在此处的任何内容。例如,在表格环境中,<text>可以是某一行的第一个单元格的内容。然后,您可以使用以下命令链接到文档中其他位置的该“标签”

\hyperlink{<name>}{<text>}

where<name>应该是您在命令中选择的标签\hypertarget<text>可以是任何符合 TeX 语法规则的内容;例如,它可以是字符串“there”。

答案2

如果您总是希望引用文本中的明确行(通过文本),那么显然您不会经常更改表格。因此,您可以使用 Mico 的建议自动执行引用。

我创建了一个新的表格环境,它可以根据用户定义的前缀自动为表格创建标签,此外还对锚点位置进行了修正以实现正确的链接:

\begin{refltable}{<table format>}{<ref prefix>}

可以按以下方式使用:

\documentclass{article}
\usepackage{hyperref,array,longtable}

\newcounter{tablerowno}
% New environment for the longtable, this will set it up correctly
\makeatletter
\newenvironment{refltable}[2]{%
    \setcounter{tablerowno}{0}
    \begin{longtable}{>{\stepcounter{tablerowno}\raisebox{\f@size pt}{\phantomsection}\label{#2\thetablerowno}}#1}}%
  {%
    \end{longtable}%
}
\makeatother
% In order for the link to pop-up the correct row we have to raise
% the anchor of the link, this is done using the size of the font (\f@size).
% This will also capture \Huge, \LARGE, etc.

\begin{document}

\begin{refltable}{cl}{r}
  Content of row 1 \\
  Content of row 2 \\  Content of row 3 \\
  Content of row 4 \\  Content of row 5 \\
  Content of row 6 \\  Content of row 7 \\
  Content of row 8 \\  Content of row 9 \\
  Content of row 10\\
  Content of row 11\\
  Content of row 12
\end{refltable}
As one can see in \hyperref[r10]{row 10} and \hyperref[r1]{row 1}.


\begin{refltable}{cl}{secr}
  Content of row 1 \\
  Content of row 2 \\  Content of row 3 \\
  Content of row 4 \\  Content of row 5 \\  
  Content of row 6 \\  Content of row 7 \\  
  Content of row 8 \\  Content of row 9 \\  
  Content of row 10\\
  Content of row 11\\
  Content of row 12
\end{refltable}
As one can see in \hyperref[secr10]{row 10} and \hyperref[secr1]{row 1} together with \hyperref[r1]{row 1} of the first table.

\end{document}

但是,您最好使用 Mico 的手动方式,因为它可以确保您不会意外引用表中的错误行。

相关内容