我正在(重新)排版一本关于代数数论的法语古典数学书。主要部分已经完成,但索引的外观不太令人满意。下面的 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
:
- 对于长文本,如果有自动换行符,则点并不总是垂直对齐(即使
\leaders
使用了);下面是 MWE 中出现的一个示例: - 页码并不总是放在右侧,例如:
- 当文本占据大部分空间时,有时点不会显示;与上一点相同的例子;
- 文本超出页面边界,例如:
简而言之,理想的行为是所有页码均显示在右侧(如有必要,将页码推至下一行),并始终页码前至少有两个点(如果需要,可以分解文本)。
为了实现这一点,应该如何修改\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
左缩进已经由\item
and控制\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
在\index
es 中需要换行的每个位置(这应该从索引的草稿版本中清楚看出——无需任何手动干预)。