前段时间,“doc”包显然将其默认设置从不包括 hyperref 更改为包含 hyperref,并且我注意到我的输出发生了变化(除了超链接的出现)。
我最初使用\SpecialUsageIndex
将几个宏的描述添加到索引中,因为这些宏的描述在一个table
环境中,并且使用DescribeMacro
不适用于浮动环境。SpecialUsageIndex
似乎已被弃用(?),所以我切换到\SpecialMacroIndex
,但无论哪种方式我都有同样的问题。
要点:\SpecialMacroIndex
在表格内使用(可能是任何浮动环境)会在命令位置插入额外的垂直空间。无论我在首字母后是否留出空格,或者在行尾%
是否包含%
或,都会发生这种情况。但是,如果我使用 ltxdoc 的 class 选项关闭 hyperref,则不会看到此行为。\relax
nohyperref
我做错了什么吗(例如,我不应该将其用于\SpecialMacroIndex
此目的),如果是的话,正确的方法是什么?
这是一个最小的工作示例:
% \iffalse
%
% To make the example, do this (saved as "reveal-bug.dtx"):
%
% pdflatex reveal-bug.dtx
% makeindex -s gind.ist -o reveal-bug.ind reveal-bug.idx
% pdflatex reveal-bug.dtx
% pdflatex reveal-bug.dtx
%
%<*driver>
\ProvidesFile{reveal-bug.dtx}
%</driver>
%
%<package>\NeedsTexFormat{LaTeX2e}
%
%<*driver>
%^^A\documentclass[nohyperref]{ltxdoc}
\documentclass{ltxdoc}
\PageIndex
\CodelineNumbered
\RecordChanges
\begin{document}
\DocInput{reveal-bug.dtx}
\end{document}
%</driver>
% \fi
%
% \GetFileInfo{reveal-bug.dtx}
% \title{Test Document}
% \author{Me}
% \date{\filedate}
% \maketitle
%
% \begin{table}
% \caption{Table with lots of macro descriptions in it.}
% \SpecialMacroIndex{\abc}\relax
% \SpecialMacroIndex{\def}\relax
% \SpecialMacroIndex{\ghi}\relax
% \SpecialMacroIndex{\jkl}\relax
% (This is just here to make a table and define its boundaries.)
% \end{table}
% \SpecialMacroIndex{\mno}\relax
% \SpecialMacroIndex{\pqr}\relax
% \SpecialMacroIndex{\stu}\relax
% \SpecialMacroIndex{\vwx}\relax
%
% \StopEventually{\PrintChanges}{\PrintIndex}
%
% \iffalse
%</package>
% \fi
% \Finale
\endinput
将该行更改\documentclass
为注释掉的行,并比较两种情况下的第一页以重现此情况。
日志文件中的一些版本信息:LaTeX2e <2022-06-01> 补丁级别 5 L3 编程层 <2022-12-17> 文档类别:ltxdoc 2022/06/22 v2.1h 文档类别:文章 2021/10/04 v1.4n 软件包:doc 2022/06/08 v3.0j
PS 如果有人想要一个不那么简单的工作示例,我正在使用的表格是热力学包文档的表 1 和表 2,可在 CTAN 上找到。
答案1
问题是,使用hypdoc
创建目标\llap
,而由于您处于垂直模式,它们会卷起。可能hypdoc
应该添加一个\leavevmode
以切换到水平模式(这在某些地方仍然会导致不必要的空格,但不会太多,无论如何我建议在 hmode 中始终使用索引命令):
% pdflatex reveal-bug.dtx
% makeindex -s gind.ist -o reveal-bug.ind reveal-bug.idx
% pdflatex reveal-bug.dtx
% pdflatex reveal-bug.dtx
\documentclass{ltxdoc}
\PageIndex
\CodelineNumbered
\RecordChanges
\begin{document}
\makeatletter
\def\HD@maketarget{%
\stepcounter{HD@hypercount}%
\def\HD@next{%
\leavevmode% new
\llap{\hypertarget{HD.\the\c@HD@hypercount}{}\,}%
}%
\ifHD@savedest
\expandafter\ifx\csname HD.\the\c@HD@hypercount\endcsname\@empty
\else
\let\HD@next\relax
\fi
\fi
\HD@next
}
\begin{table}
\caption{blub}
\SpecialMacroIndex{\def}\relax
\SpecialMacroIndex{\ghi}\relax
\SpecialMacroIndex{\jkl}\relax
some text
\end{table}
\PrintIndex
\end{document}