我正在使用 tex live 2019,并且遇到了 hyperref 的问题。
当我使用 PDFLaTeX 时,不会发生错误,如第一张图片所示。
但是,当我使用 latex->dvips->ps2pdf 时,所有引用和参考文献都被彩色框隐藏。(第二张图片)
我怎么解决这个问题?
\documentclass[twocolumn, 10pt]{IEEEtran}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{cite}
\usepackage{stfloats}
\usepackage{subfigure}
\usepackage{epstopdf}
\usepackage{psfrag}
\usepackage[mathscr]{euscript}
\usepackage{acronym}
\usepackage{booktabs}
\usepackage[table]{xcolor}
\begin{document}
\begin{align}
A=B
\label{equation}
\end{align}
This is the equation \eqref{equation}.
\end{document}
以上是我使用的代码。
我正在使用 TexStudio。因此我通过以下方式编译了代码:
工具 > 命令 > LaTeX
工具 > 命令 > DVI->PS
工具 > 命令 > PS->PDF
答案1
笔记: hyperref
已更新,可检测所使用的 GhostScript 版本pstopdf
并在每种情况下使用适当的代码。因此,无需使用下面描述的解决方法(自 2020 年 1 月发布以来hyperref
)。
Ulrike 在聊天中提供了一个更简单的测试用例
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\url{www.abc.de}
\end{document}
对我来说(使用 gs 9.27)
但 9.50 产生
事实证明 GhostScript 在 9.50 版本中改变了对边框规范的解释
http://git.ghostscript.com/?p=ghostpdl.git;a=commitdiff;h=90bdf83d696562e4136b8f565cac06cc32b161ae
在问题下的评论中,Ulrike 展示了如何禁用 hyperref 中的代码,但这会使事情在 9.50 中工作,但在任何旧版本中都会失败,我希望下面的代码无论如何都能工作,它会在 gs 版本号上插入一个测试,该测试在 PostScript 中实现,因此推迟到您在 dvips 生成的 PostScript 上运行 ps2pdf。
如果有人尝试过这个,评论它是否有效或无效以及他们拥有哪个版本的 gs,那将会很有用,谢谢!
将下面的代码保存hdvips.def
在与测试文件相同的文件夹中(提供整个文件,因为修补它不方便)
%%
%% This is file `hdvips.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% hyperref.dtx (with options: `dvips')
%%
%% File: hyperref.dtx Copyright 1995-2001 Sebastian Rahtz,
%% with portions written by David Carlisle and Heiko Oberdiek,
%% 2001-2012 Heiko Oberdiek.
%% 2016-2019 Oberdiek Package Suport Group
%% 2019 LaTeX3 Project
%% https://github.com/latex3/hyperref/issues
%%
%% This file is part of the `Hyperref Bundle'.
%% -------------------------------------------
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%% http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status `maintained'.
%%
%% The Current Maintainer of this work is the LaTeX3 Project.
%%
%% The list of all files belonging to the `Hyperref Bundle' is
%% given in the file `manifest.txt'.
%%
\ProvidesFile{hdvips.def}
[2019/11/10 v7.00c %
Hyperref driver for dvips + gs test]
\Hy@VersionCheck{hdvips.def}
\providecommand*{\XR@ext}{pdf}
\let\Hy@raisedlink\@empty
\def\literalps@out#1{\special{ps:SDict begin #1 end}}%
\def\headerps@out#1{\special{! #1}}%
\input{pdfmark.def}%
\ifx\@pdfproducer\relax
\def\@pdfproducer{dvips + Distiller}%
\fi
\providecommand*\@pdfborder{0 0 1}
\providecommand*\@pdfborderstyle{}
\providecommand*\@pdfview{XYZ}
\providecommand*\@pdfviewparams{ H.V}
\def\Hy@BorderArrayPatch{BorderArrayPatch}
\g@addto@macro\Hy@FirstPageHook{%
\headerps@out{%
/DvipsToPDF{72.27 mul Resolution div} def%
/PDFToDvips{72.27 div Resolution mul} def%
/BPToDvips{72 div Resolution mul}def
%%%%%
%%%%%
%%%%% START CHANGE
%if using gs and release < 9.50 patch, otherwise make this a no-op
product (Ghostscript) search {pop pop pop revision 950 lt } {pop false} ifelse
{
/BorderArrayPatch{%
[exch{%
dup dup type/integertype eq exch type/realtype eq or%
{BPToDvips}if%
}forall]%
}def
}{
/BorderArrayPatch{} def
}
ifelse
% end of gs version test
%%%
%%% END
%%%
/HyperBorder {1 PDFToDvips} def%
/H.V {pdf@hoff pdf@voff null} def%
/H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def%
/H.S {%
currentpoint %
HyperBorder add /pdf@lly exch def %
dup DvipsToPDF 72 add /pdf@hoff exch def %
HyperBorder sub /pdf@llx exch def%
} def%
/H.L {%
2 sub dup%
/HyperBasePt exch def %
PDFToDvips /HyperBaseDvips exch def %
currentpoint %
HyperBaseDvips sub /pdf@ury exch def%
/pdf@urx exch def%
} def%
/H.A {%
H.L %
currentpoint exch pop %
vsize 72 sub exch DvipsToPDF %
HyperBasePt sub % baseline skip
sub /pdf@voff exch def%
} def%
/H.R {%
currentpoint %
HyperBorder sub /pdf@ury exch def %
HyperBorder add /pdf@urx exch def %
currentpoint exch pop vsize 72 sub %
exch DvipsToPDF sub /pdf@voff exch def%
} def%
}%
}
\AtBeginShipoutFirst{%
\ifHy@setpagesize
\begingroup
\@ifundefined{stockwidth}{%
\ifdim\paperwidth>\z@
\ifdim\paperheight>\z@
\special{papersize=\the\paperwidth,\the\paperheight}%
\fi
\fi
}{%
\ifdim\stockwidth>\z@
\ifdim\stockheight>\z@
\special{papersize=\the\stockwidth,\the\stockheight}%
\fi
\fi
}%
\endgroup
\fi
\Hy@DisableOption{setpagesize}%
}
\def\setpdflinkmargin#1{%
\begingroup
\setlength{\dimen@}{#1}%
\literalps@out{%
/HyperBorder{\strip@pt\dimen@\space PDFToDvips}def%
}%
\endgroup
}
\endinput
%%
%% End of file `hdvips.def'.