为什么非 pdf latex 引擎的行为与 pdflatex 不同?

为什么非 pdf latex 引擎的行为与 pdflatex 不同?

在问题中 \label 后枚举 一个令人钦佩的答案解决了当定理以枚举列表开始时如何标记和链接定理编号的问题,以及在这样做的同时,如何在与定理标题同一行上开始列表。

答案(由 Heiko Oberdiek 提出)涉及在定理标题和列表开头之间放置一个唯一的超锚点。

不幸的是,这只适用于直接 pdf 输出,不适用于将作业编译为dvi然后转换为 的情况ps/pdf。在.dvi输出中,列表的开头总是会移到下一行。

这里的问题是,这两个 TeX 引擎之间有什么不同,导致输出.dvi结果不一致.pdf?是否有一个软件包可以弥补这一缺陷?

基本原理

我们需要修复dvips定理以 开头时添加多行的问题enumerate,因为 AMS 生产流需要用于dvi打印的输出路由,因此使用pdftexxetex不是一个选项。而且,由于用于在线发布的链接输出是使用 创建的pdflatex,因此两个不同输出的分页将不同,这也不是选项。

人们经常会问这样的问题:为什么 AMS 的生产依赖于 dvips

提出这一要求的原因dvi主要涉及在出版之前需要评估图形的质量(这也是 AMS 要求提供.eps文件的原因)。目标是使图形能够准确地在印刷页面上以及以电子形式传达预期信息;胶印的要求与屏幕上的显示效果截然不同。

当图形文件为 PostScript 格式时,即使通过 应用缩放,自动检查线宽、颜色区分(包括区分颜色密度和对比度以及灰度效果的能力)和上下文中的类型大小等特征也相对简单,但是一旦图形嵌入到\includegraphics最终.pdf文件中,就几乎不可能了,因为(正如一位同事所描述的)所有内容都变成了汉堡包。确实存在用于检查 pdf 图形的 GUI 工具,但这些工具需要单独评估每个图形,并增加了检查所需的时间;这反过来又增加了生产成本,以及将校样返回给作者并进而返回给打印机所需的时间。

答案1

你只需要把锚点放在安全的地方,在这里我将它附加到定理标题(尚未排版,它挂在框中\@labels等待段落开始)。

我添加了一些分页符,以便更容易看到单击链接时发生的情况。

\documentclass[12pt]{article}

\usepackage{amsthm}
\usepackage[colorlinks]{hyperref}

\newtheorem{thm}{Theorem}
\def\thmautorefname{Theorem}

\begin{document}


aa
\clearpage
\begin{thm}

\makeatletter
\setbox\@labels\hbox{\hyper@anchor{\@currentHref}\box\@labels}%
\makeatother
\label{thm:test}
\begin{enumerate}
\item First thing.
\item Second thing.
\item Third thing.
\end{enumerate}
\end{thm}

\clearpage
Theorem~\ref{thm:test} and \autoref{thm:test}.

\end{document}

相关内容