有没有办法在 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 的手动方式,因为它可以确保您不会意外引用表中的错误行。