如何防止 hyperref 包改变布局(行距)?

如何防止 hyperref 包改变布局(行距)?

我的 LaTeX 论文中有一个布尔值,我用它来创建自定义作者版本(包括版权框和可点击的链接和参考资料)。对于作者版本,我包括了包\hyperref(在另一种情况下,我使用\nohyperref,按照我之前的问题https://tex.stackexchange.com/a/53316/2090)。

然而,我注意到,当包含时hyperref,我的布局略有变化(我将其归咎于行距,但不是 100% 确定),最终结果是我的论文的最后几行被推到了新的页面上。

有没有办法不让 hyperref 影响布局(行距)?或者用一种简单的方法抵消它的影响?

我目前使用的 hyperref 选项如下。但即使禁用这些选项也会产生相同的结果。

\hypersetup{
    pdfborder={0 0 0},
    colorlinks=true, linkcolor=blue, urlcolor=blue, citecolor=blue,
    pdfpagemode=UseNone}

答案1

只是报告我最终使用的解决方法。
我在适用的地方插入了命令\linespread{0.99}

\ifthenelse{\boolean{AuthorVersion}}{
    \linespread{0.99}       % apparently hyperref changes layout for this paper, so adjust slightly
    \usepackage{hyperref}   % for hyper references of citations, sections, etc.
    ...
 }{
    \linespread{0.99}       % do here also, to have same layout in camready and author version
    \usepackage{nohyperref} % to disable links (EDAS doesn't want them)
    \usepackage{url}        % hyperref includes \url but nohyperref doesn't 
}

答案2

hyperref或包的草稿选项nohyperref还删除了超级功能(如链接和目标)的特殊功能。这些特殊功能可能会影响段落和页面的分页。

以下示例在pdftex使用驱动程序时禁用大多数超级功能。通过重新定义 pdfTeX 的原语(依赖于它们在 中的调用方式)来删除链接和目标hyperref。替换定义将添加一个 whatsit,将 whatsit 写入日志文件,以保持对段落和页面中断的影响。

\documentclass{article}
\usepackage{makeidx}
\makeindex

% Disable information and catalog entries
\makeatletter
\AtBeginDocument{%
  \let\PDF@SetupDoc\relax
}
\makeatother

% Disable links, hyperref usually ends \pdfstartlinks arguments with \relax
\protected\def\pdfstartlink#1\relax{%
  \immediate\write-1{- \string\pdfstartlink#1}%
}
\protected\def\pdfendlink{%
  \immediate\write-1{- \string\pdfendlink}%
}

% Disable destinations, \pdfdest usually ended by \relax in hyperref
\protected\def\pdfdest#1\relax{%
  \immediate\write-1{- \string\pdfdest#1}%
}

\usepackage[
  % disable features independent from typesetting
  bookmarks=false,
  pdfpagelabels=false,
]{hyperref}

\begin{document}
\tableofcontents
\section{Hello World}
\index{Einstein}
\begin{equation}
  \label{eq:einstein}
  E=mc^2
\end{equation}
See equation (\ref{eq:einstein}) on page \pageref{eq:einstein}.

\section{TeX user groups}
\begin{itemize}
\item[\href{http://www.tug.org/}{TUG}:] \url{http://www.tug.org/}
\item[\href{http://www.dante.de/}{DANTE}:] \url{http://www.dante.de/}
\end{itemize}

\printindex
\end{document}

禁用功能的列表并不完整,例如表格和选项ocgcolorlinks仍然留下痕迹。

日志文件包含:

- \pdfdestname{Doc-Start}XYZ
- \pdfdestname{section*.1}XYZ
- \pdfstartlinkattr{/Border[0 0 1]/H/I/C[1 0 0]}goto name{section.1}
- \pdfendlink
- \pdfstartlinkattr{/Border[0 0 1]/H/I/C[1 0 0]}goto name{section.2}
- \pdfendlink
- \pdfdestname{section.1}XYZ
- \pdfdestname{equation.1.1}XYZ
- \pdfdestname{equation.1.1}XYZ
- \pdfdestname{equation.1.1}XYZ
- \pdfdestname{equation.1.1}XYZ
- \pdfstartlinkattr{/Border[0 0 1]/H/I/C[1 0 0]}goto name{equation.1.1}
- \pdfendlink
- \pdfstartlinkattr{/Border[0 0 1]/H/I/C[1 0 0]}goto name{equation.1.1}
- \pdfendlink
- \pdfdestname{section.2}XYZ
- \pdfstartlinkattr{/Border[0 0 1]/H/I/C[0 1 1]}user{/Subtype/Link/A<</Type/Act
- \pdfendlink
- \pdfstartlinkattr{/Border[0 0 1]/H/I/C[0 1 1]}user{/Subtype/Link/A<</Type/Act
- \pdfendlink
- \pdfstartlinkattr{/Border[0 0 1]/H/I/C[0 1 1]}user{/Subtype/Link/A<</Type/Act
- \pdfendlink
- \pdfstartlinkattr{/Border[0 0 1]/H/I/C[0 1 1]}user{/Subtype/Link/A<</Type/Act
- \pdfendlink
- \pdfdestname{page.1}XYZ
- \pdfdestname{section*.2}XYZ
- \pdfstartlinkattr{/Border[0 0 1]/H/I/C[1 0 0]}goto name{page.1}
- \pdfendlink
- \pdfdestname{page.2}XYZ

这对您的文档有帮助吗?

答案3

我遇到过类似的问题,但不是行距变化引起的。hyperref 包将纸张大小从 A4 格式更改为美国信纸格式,从而导致页面高度降低 18 毫米,并将一些文本移到下一页。我通过在文档类中声明页面大小解决了该问题:

\documentclass[a4paper]{letter}

另一种解决方案是将纸张高度声明为所需值(例如 A4 -> 297mm):

\setlength{\paperheight}{some value}

相关内容