帮助改进索引点填充

帮助改进索引点填充

我正在(重新)排版一本关于代数数论的法语古典数学书。主要部分已经完成,但索引的外观不太令人满意。下面的 MWE 包含直接复制的文件内容.ind。为了让点填充浅灰色,我定义了以下内容:

\newcommand*{\IndexDotfill}
  {
    \null\nobreak
    \leaders \hbox to .67em {\hss \textcolor{gray!55}{.} \hss} \hskip 1em plus1fill
  }

我在这个网站上找到了原始版本,例如这个答案,并做了一些修改。这\null\nobreak是我试图改进先前这个问题\hskip 1em plus1fill来自这个答案尝试使页码出现在同一行(但结果并不令人满意,请参阅下面的第 2 点)。

我的当前版本存在几个问题\IndexDotfull

  1. 对于长文本,如果有自动换行符,则点并不总是垂直对齐(即使\leaders使用了);下面是 MWE 中出现的一个示例: 在此处输入图片描述
  2. 页码并不总是放在右侧,例如: 在此处输入图片描述
  3. 当文本占据大部分空间时,有时点不会显示;与上一点相同的例子;
  4. 文本超出页面边界,例如: 在此处输入图片描述

简而言之,理想的行为是所有页码均显示在右侧(如有必要,将页码推至下一行),并始终页码前至少有两个点(如果需要,可以分解文本)。

为了实现这一点,应该如何修改\IndexDotfill


以下是 MWE。

\documentclass[11pt]{article}
\usepackage[french]{babel}
\usepackage{hyperref}
\usepackage{xcolor}
\usepackage{amssymb}

\ExplSyntaxOn
\makeatletter

\newcommand*{\IndexHeading}[1]{\centerline{\textbf{#1}}}
\newcommand*{\IndexDotfill}
  {
    \null\nobreak
    \leaders \hbox to .67em {\hss \textcolor{gray!55}{.} \hss} \hskip 1em plus1fill
  }

\makeatother
\ExplSyntaxOff


\begin{document}

\begin{theindex}
\IndexHeading{A}

  \item abélienne (extension)\IndexDotfill \hyperpage{88}
  \item algébrique (élément algébrique sur un corps)\IndexDotfill 
        \hyperpage{21}
  \item algébrique (extension)\IndexDotfill \hyperpage{21}
  \item algébriquement clos (corps)\IndexDotfill \hyperpage{23}
  \item anneau
    \subitem de Dedekind\IndexDotfill \hyperpage{45}
    \subitem nœthérien\IndexDotfill \hyperpage{41}
    \subitem réduit\IndexDotfill \hyperpage{64}
  \item anneau de fractions\IndexDotfill \hyperpage{67}
  \item associés (éléments)\IndexDotfill \hyperpage{1}
  \item automorphisme de Frobenius\IndexDotfill \hyperpage{90}, 
        \hyperpage{93}

  \indexspace
\IndexHeading{B}

  \item base canonique\IndexDotfill \hyperpage{8}
  \item base d'un module\IndexDotfill \hyperpage{9}
  \item bases duales (pour la trace)\IndexDotfill \hyperpage{32}
  \item Bézout (identité de)\IndexDotfill \hyperpage{2}

  \indexspace
\IndexHeading{C}

  \item caractéristique (d'un corps)\IndexDotfill \hyperpage{13}
  \item caractéristique (polynôme)\IndexDotfill \hyperpage{27}
  \item classes d'idéaux\IndexDotfill \hyperpage{47}
  \item clôture intégrale\IndexDotfill \hyperpage{19}
  \item conjugués (corps)\IndexDotfill \hyperpage{23}
  \item conjugués (éléments)\IndexDotfill \hyperpage{23}
  \item conjugués (idéaux premiers)\IndexDotfill \hyperpage{91}
  \item corps cubique\IndexDotfill \hyperpage{34}
  \item corps cyclotomique\IndexDotfill \hyperpage{34}
  \item corps de nombres, ou corps de nombres algébriques\IndexDotfill 
        \hyperpage{21}
  \item corps parfait\IndexDotfill \hyperpage{24}
  \item corps quadratique\IndexDotfill \hyperpage{25}
    \subitem imaginaire\IndexDotfill \hyperpage{27}
    \subitem réel\IndexDotfill \hyperpage{27}
  \item cyclique (extension)\IndexDotfill \hyperpage{88}
  \item cyclotomique (corps)\IndexDotfill \hyperpage{34}
  \item cyclotomique (extension)\IndexDotfill \hyperpage{90}
  \item cyclotomique (polynôme)\IndexDotfill \hyperpage{34}

  \indexspace
\IndexHeading{D}

  \item décomposé (nombre premier)\IndexDotfill \hyperpage{76}
  \item décomposition (groupe de)\IndexDotfill \hyperpage{92}
  \item Dedekind (anneau de)\IndexDotfill \hyperpage{45}
  \item degré résiduel\IndexDotfill \hyperpage{70}
  \item dépendance intégrale (équation de)\IndexDotfill 
        \hyperpage{18}
  \item descente infinie\IndexDotfill \hyperpage{5}
  \item diophantienne (équation)\IndexDotfill \hyperpage{3}
  \item discriminant\IndexDotfill \hyperpage{30}
  \item discriminant (idéal)\IndexDotfill \hyperpage{31}, 
        \hyperpage{73}
  \item discriminant absolu (d'un corps de nombres)\IndexDotfill 
        \hyperpage{34}
  \item domaine fondamental\IndexDotfill \hyperpage{52}

  \indexspace
\IndexHeading{E}

  \item Eisenstein (critère d')\IndexDotfill \hyperpage{35}
  \item entier (anneau entier sur un autre)\IndexDotfill \hyperpage{19}
  \item entier (élément entier sur un anneau)\IndexDotfill 
        \hyperpage{18}
  \item entier (idéal)\IndexDotfill \hyperpage{44}
  \item entier d'un corps de nombres\IndexDotfill \hyperpage{34}
  \item entier de Gauss\IndexDotfill \hyperpage{80}
  \item équation de dépendance intégrale\IndexDotfill \hyperpage{18}
  \item équation de Fermat\IndexDotfill \hyperpage{3}
  \item équation de Pell-Fermat\IndexDotfill \hyperpage{62}
  \item équation diophantienne\IndexDotfill \hyperpage{3}
  \item étrangers (éléments)\IndexDotfill \hyperpage{3}
  \item Euler (critère d')\IndexDotfill \hyperpage{77}
  \item Euler (indicateur d')\IndexDotfill \hyperpage{6}
  \item extension
    \subitem abélienne\IndexDotfill \hyperpage{88}
    \subitem algébrique\IndexDotfill \hyperpage{21}
    \subitem cyclique\IndexDotfill \hyperpage{88}
    \subitem cyclotomique\IndexDotfill \hyperpage{90}
    \subitem galoisienne\IndexDotfill \hyperpage{88}
    \subitem quadratique\IndexDotfill \hyperpage{89}

  \indexspace
\IndexHeading{F}

  \item facteurs invariants\IndexDotfill \hyperpage{11}
  \item Fermat (équation de)\IndexDotfill \hyperpage{3}
  \item fermeture intégrale\IndexDotfill \hyperpage{19}
  \item fractionnaire (idéal)\IndexDotfill \hyperpage{44}
  \item fractions (anneau de)\IndexDotfill \hyperpage{67}
  \item Frobenius (automorphisme de)\IndexDotfill \hyperpage{90}, 
        \hyperpage{93}

  \indexspace
\IndexHeading{G}

  \item Galois (groupe de)\IndexDotfill \hyperpage{88}
  \item galoisienne (extension)\IndexDotfill \hyperpage{88}
  \item Gauss (entier de)\IndexDotfill \hyperpage{80}
  \item Gauss (somme de)\IndexDotfill \hyperpage{78}
  \item groupe d'inertie\IndexDotfill \hyperpage{92}
  \item groupe de décomposition\IndexDotfill \hyperpage{92}
  \item groupe de Galois\IndexDotfill \hyperpage{88}

  \indexspace
\IndexHeading{I}

  \item idéal
    \subitem maximal\IndexDotfill \hyperpage{43}
    \subitem premier\IndexDotfill \hyperpage{43}
  \item idéal discriminant\IndexDotfill \hyperpage{31}, \hyperpage{73}
  \item idéal entier\IndexDotfill \hyperpage{44}
  \item idéal fractionnaire\IndexDotfill \hyperpage{44}
  \item identité de Bézout\IndexDotfill \hyperpage{2}
  \item imaginaire (corps quadratique)\IndexDotfill \hyperpage{27}
  \item indicateur d'Euler\IndexDotfill \hyperpage{6}
  \item indice de ramification\IndexDotfill \hyperpage{70}
  \item inerte (nombre premier)\IndexDotfill \hyperpage{76}
  \item inertie (groupe d')\IndexDotfill \hyperpage{92}
  \item intégrale (fermeture, clôture)\IndexDotfill \hyperpage{19}
  \item intégralement clos (anneau)\IndexDotfill \hyperpage{20}

  \indexspace
\IndexHeading{L}

  \item Legendre (symbole de)\IndexDotfill \hyperpage{77}
  \item libre (module)\IndexDotfill \hyperpage{9}
  \item loi de réciprocité quadratique\IndexDotfill \hyperpage{78}

  \indexspace
\IndexHeading{M}

  \item maximal (idéal)\IndexDotfill \hyperpage{43}
  \item minimal (polynôme)\IndexDotfill \hyperpage{22}
  \item module
    \subitem de type fini\IndexDotfill \hyperpage{9}
    \subitem libre\IndexDotfill \hyperpage{9}
    \subitem nœthérien\IndexDotfill \hyperpage{41}
    \subitem sans torsion\IndexDotfill \hyperpage{12}
  \item monogène (extension)\IndexDotfill \hyperpage{24}

  \indexspace
\IndexHeading{N}

  \item nœthérien (anneau, module)\IndexDotfill \hyperpage{41}
  \item non-résidu\IndexDotfill \hyperpage{76}
  \item norme\IndexDotfill \hyperpage{28}
  \item norme d'un idéal\IndexDotfill \hyperpage{48}

  \indexspace
\IndexHeading{P}

  \item p.g.c.d.\IndexDotfill \hyperpage{2}
  \item p.p.c.m.\IndexDotfill \hyperpage{2}
  \item parfait (corps)\IndexDotfill \hyperpage{24}
  \item plongement canonique d'un corps de nombres\IndexDotfill 
        \hyperpage{54}
  \item polynôme caractéristique\IndexDotfill \hyperpage{28}
  \item polynôme minimal\IndexDotfill \hyperpage{22}
  \item premier (corps)\IndexDotfill \hyperpage{13}
  \item premier (idéal)\IndexDotfill \hyperpage{43}
  \item premiers entre eux\IndexDotfill \hyperpage{3}
  \item primitif (élément primitif d'une extension)\IndexDotfill 
        \hyperpage{25}
  \item primitive (racine primitive de l'unité)\IndexDotfill 
        \hyperpage{13}
  \item primitive (racine primitive modulo \( p \))\IndexDotfill 
        \hyperpage{14}
  \item principal (anneau)\IndexDotfill \hyperpage{2}
  \item principal (idéal)\IndexDotfill \hyperpage{1}
  \item produit d'idéaux\IndexDotfill \hyperpage{43}

  \indexspace
\IndexHeading{Q}

  \item quadratique (corps)\IndexDotfill \hyperpage{25}
  \item quadratique (extension)\IndexDotfill \hyperpage{89}
  \item quasi-algébriquement clos (corps)\IndexDotfill \hyperpage{14}
  \item quaternions\IndexDotfill \hyperpage{82}
  \item quaternions d'Hurwitz\IndexDotfill \hyperpage{83}

  \indexspace
\IndexHeading{R}

  \item racine primitive de l'unité\IndexDotfill \hyperpage{13}
  \item racine primitive modulo \( p \)\IndexDotfill \hyperpage{14}
  \item ramification (indice de)\IndexDotfill \hyperpage{70}
  \item ramifie (nombre premier)\IndexDotfill \hyperpage{76}
  \item ramifie (se ramifie)\IndexDotfill \hyperpage{72}
  \item rang (d'un module)\IndexDotfill \hyperpage{10}
  \item réduit (anneau)\IndexDotfill \hyperpage{64}
  \item réel (corps quadratique)\IndexDotfill \hyperpage{27}
  \item représente zéro\IndexDotfill \hyperpage{16}
  \item réseau (dans \( \mathbb{R}^n \))\IndexDotfill \hyperpage{52}
  \item résidu quadratique\IndexDotfill \hyperpage{76}
  \item résiduel (degré)\IndexDotfill \hyperpage{70}

  \indexspace
\IndexHeading{S}

  \item sans facteurs carrés (entier)\IndexDotfill \hyperpage{26}
  \item somme de Gauss\IndexDotfill \hyperpage{78}
  \item symbole de Legendre\IndexDotfill \hyperpage{77}

  \indexspace
\IndexHeading{T}

  \item torsion (module sans)\IndexDotfill \hyperpage{12}
  \item trace\IndexDotfill \hyperpage{28}
  \item transcendant (élément transcendant sur un corps)\IndexDotfill 
        \hyperpage{21}
  \item type fini (module de)\IndexDotfill \hyperpage{9}

  \indexspace
\IndexHeading{U}

  \item unités (d'un anneau)\IndexDotfill \hyperpage{1}
  \item unités (d'un corps de nombres)\IndexDotfill \hyperpage{58}
  \item unités fondamentales\IndexDotfill \hyperpage{60}, 
        \hyperpage{62}

  \indexspace
\IndexHeading{V}

  \item volume d'un réseau\IndexDotfill \hyperpage{53}

\end{theindex}
    
\end{document}

答案1

这是一个无需人工干预的解决方案:不要在两个页码之间换行,例如

Frobenius (automorphisme de) . 90, 
           93

我更喜欢在点之间断线,就像

Frobenius (automorphisme de) . .
 . . . . . . . . . . . . .  90, 93

为此,您必须在 中插入一个换行机会\IndexDotfill,例如

\leaders \hbox to .67em {\hss \textcolor{gray!55}{.} \hss}\hfil
\penalty0\vadjust{}
\leaders \hbox to .67em {\hss \textcolor{gray!55}{.} \hss}\hskip1em plus1fill

左缩进已经由\itemand控制\subitem。要控制右缩进(以便页码与右边距齐平,但 1pc 点,比如说),你可以使用

\rightskip=1pc \parfillskip=-\rightskip

最后,悬挂线中的点没有对齐,因为悬挂缩进量 (40pt) 不是“点宽” .67em 的倍数。使用 10pt 的“点宽”可以获得更好的效果:

在此处输入图片描述

答案2

您的点填充没有错。问题是索引条目 (\item) 没有设置为合适的自动换行。如果您检查日志,您将看到有关所有那些页码对齐不良的行上的框已满的警告。可能有一个包提供更好的索引格式。(也许试试索引包;我不知道。)

为了直接修补您的文档,请\\在任何导致行过满的条目中手动插入换行符。

为了更自动地修复插入

\setlength{\rightskip}{0pt plus 100pt}

紧接着\begin{theindex}

另外,使用以下方法可以防止页码列表中出现换行符

\IndexDotfill \hyperpage{90},~\hyperpage{93}

答案3

根据 Donald Arseneau 关于手动干预的建议,我特别定义了以下命令,它在索引条目文本内添加手动换行符,同时保持点垂直对齐(我用它来\item\hspace*{\hangindent}确保点垂直对齐并且是\hangindent正确的,如果你已正确配置它们,那么通常的换行符可能也适用于此):

\newcommand*{\IndexLinebreak}
  {
    \nobreakspace\textcolor{gray}{\raisebox{.25ex}{.}\raisebox{.05ex}{.}}
    \item\hspace*{\hangindent}
    \textcolor{gray}{\raisebox{.35ex}{.}\raisebox{.15ex}{.}}\,
    \unskip
  }

它在上一行的末尾和下一行的开头另外添加了一个两个点的符号,例如下图所示:

在此处输入图片描述

这样就更能区分子条目和换行符了:现在可以立刻知道这是一个通常的换行符,而不是子条目(不使用它,虽然缩进和悬挂缩进不一样,可以用来区分它们,但对于第一次看到索引的读者或不熟悉印刷规则的读者来说,仍然会有点困惑)。由于这不是一个标准的符号/传统,因此如果您对此有更好的建议,我也愿意知道。

唯一的问题是需要\IndexLinebreak手动将 添加到相应的索引条目中,例如\index{first line\IndexLinebreak second line}。此外,由于正确的分页点与页面几何形状有关,如果您希望将文档编译成不同的页面大小,那么您确实需要分别处理每种情况。因此,此命令应仅在最后阶段使用,当您已确定页面几何形状和索引文本并已makeindex运行后,将其放置\IndexLinebreak\indexes 中需要换行的每个位置(这应该从索引的草稿版本中清楚看出——无需任何手动干预)。

相关内容