我有一个 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}