在 > 数组前导中插入 { 并在 < 数组前导中插入 }

在 > 数组前导中插入 { 并在 < 数组前导中插入 }

>该包(以及可能的其他表格包)的和<前言选项允许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}

答案2

您可以使用collcell。如果您想使用列类型p,则需要添加宽度,因此暂时我选择了c

\documentclass{article}
\usepackage{collcell}
\usepackage{hyperref}
\newcommand{\Foo}[1]{\hyperlink{foo}{#1}}
\newcolumntype{H}{>{\collectcell\Foo}c<{\endcollectcell}}
\begin{document}
\begin{tabular}{H}
a\\
b\\
\end{tabular}
\end{document}

在此处输入图片描述

相关内容