>
该包(以及可能的其他表格包)的和<
前言选项允许array
分别在列的每个单元格之前和之后自动插入文本和命令。
它们能用来在每个单元格\hyperlink{foo}{
之前和}
之后插入内容吗?迄今为止的尝试:
>{ \hyperlink{foo}{ } c <{ } }
由于括号不平衡而导致错误。\{
通过将括号插入 PDF 中来转义括号。>{ \begin{hyperlink}{foo} } c <{ \end{hyperlink} }
有趣的是,这会导致 sharelatex 抱怨begin
和之间的闭合括号end
,但不会导致 latex 错误。但问题是
\begin{hyperlink}{foo}text in cell\end{hyperlink}
,这会导致只向第一个字母“t”添加超链接,而我需要的结果是\begin{hyperlink}{foo}{text in cell}\end{hyperlink}
,并且由于某种原因,甚至手动用括号括住每个单元格条目也无济于事。
有办法实现这个吗?
答案1
如果某一列中的所有项目共享一个目标,则只需指定它:在部分中只需要一对额外的括号\collectcell
。
\documentclass{article}
\usepackage{collcell}
\usepackage{hyperref}
\newcolumntype{h}[1]{%
>{\collectcell{\hyperlink{#1}}}c<{\endcollectcell}%
}
\begin{document}
\begin{tabular}{h{foo} h{bar}}
to foo 1 & to bar 1 \\
to foo 2 & to bar 2
\end{tabular}
\newpage\hypertarget{foo}{This is foo}
\newpage\hypertarget{bar}{This is bar}
\end{document}
如果需要指定不同的目标,请将各项目与其目标一起支撑。
\documentclass{article}
\usepackage{collcell}
\usepackage{hyperref}
\newcommand{\makehyperlink}[1]{\makehyperlinkaux#1}
\newcommand{\makehyperlinkaux}[2]{\hyperlink{#1}{#2}}
\begin{document}
\begin{tabular}{>{\collectcell\makehyperlink}c<{\endcollectcell}}
{foo}{a}\\
{bar}{b}\\
\end{tabular}
\newpage\hypertarget{foo}{FOO}
\newpage\hypertarget{bar}{BAR}
\end{document}