Hyperref 与定义的命令配合不好吗?

Hyperref 与定义的命令配合不好吗?

我想使用 hyperref 包,用于超链接文档中的引文和图片。但是,当我将 hyperref 添加到序言中时,发生了一些奇怪的事情。

我使用了一些自定义命令,例如斜体的定义:

\let\i\textit

但是,出于某种原因,hyperref 无法很好地处理此定义。我的所有斜体都消失了,斜体命令变成了看起来像微型数字 1 的东西。

有人知道如何解决这个问题吗?

答案1

我可以用

\documentclass{article}

\let\i\textit
\usepackage{hyperref}

\begin{document}

\i{xyz}

\end{document}

发生这种情况的原因是hyperref恢复了的定义以\i产生“无点的 i”(您会误认为是小数字 1)。

然而,推迟重新定义也不是一个好主意。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{hyperref}

\let\i\textit

\begin{document}

\i{xyz}

naïve

\end{document}

会产生一些神秘的错误:

! You can't use a prefix with `\aftergroup'.
<to be read again> 
                   \aftergroup 
l.10 naï
         ve
? 
! Missing number, treated as zero.
<to be read again> 
                   \accent@spacefactor 
l.10 naï
         ve
? 
! Bad space factor (0).
<to be read again> 
                   \accent@spacefactor 
l.10 naï
         ve
? 

如果您不知道自己在做什么,切勿使用\let。避免重新定义您不了解的命令,并且一般来说,避免重新定义所有与输出字形相关的命令,例如\i

相关内容