在 longtabu 单元格中的 \href 中有一个 #(井号)

在 longtabu 单元格中的 \href 中有一个 #(井号)

我有一个 longtabu 表(外部生成),其中一个单元格中有一个href带有一个url包含 has 符号的。使用 pdflatex 编译时,我得到:

! Illegal parameter number in definition of \Hy@tempa.
<to be read again>
                   c
l.18 \end{longtabu}

妇女权利委员会:

\documentclass[twoside]{book}

\usepackage{longtable}
\usepackage{tabu}
\usepackage{hyperref}

\begin{document}
\begin{longtabu}spread 0pt [c]{*{2}{|X[-1]}|}
\hline
{ test  }&{ URL   }\\\cline{1-2}
\endfirsthead
\hline
\endfoot
\hline
{ test  }&{ URL   }\\\cline{1-2}
\endhead
test & \href{http://www.stack.nl/~dimitri/doxygen/manual/commands.html#cmdpage}{\texttt{ URL with hash}}   \\\cline{1-2}
\end{longtabu}

\end{document}

在该包的文档中,hyperref我找到了\href段落“4 附加用户宏”中的命令:

\href[options]{URL}{text}文本被设为指向 URL 的超链接;这必须是完整的 URL(相对于基本 URL,如果已定义)。特殊字符#~不需要以任何方式转义。

因此看起来href和之间存在某种相互作用longtabu

我可以通过转义#中的 -hash 符号来解决这个问题url

\href{http://www.stack.nl/~dimitri/doxygen/manual/commands.html\#cmdpage}

但我不确定这是否是正确的方法。

  • 我的方法正确吗?
  • \href从我的角度来看,这是错误的用法吗longtabu
  • 这是一个错误吗?

答案1

如果你不想逃避#,你需要使它可打印:

\documentclass[twoside]{book}

\usepackage{longtable}
\usepackage{tabu}
\usepackage{hyperref}

\begin{document}

\begingroup\catcode`#=12
\begin{longtabu} spread 0pt [c]{*{2}{|X[-1]}|}
\hline
test & URL \\ \cline{1-2}
\endfirsthead
\hline
test & URL \\ \cline{1-2}
\endhead
\hline
\endfoot
test & \href{http://www.stack.nl/~dimitri/doxygen/manual/commands.html#cmdpage}
            {\texttt{ URL with hash}}
\\
\cline{1-2}
\end{longtabu}
\endgroup

\end{document}

在此处输入图片描述

相关内容