索引后缀和页面范围

索引后缀和页面范围

下列的这个问题,我有一个新挑战给你!简要总结:

对于出现在第 1 至第 4 页上的给定索引条目,我需要索引上的页面范围显示为“ 1 s.”而不是“1--4”。

这就是答案,使用.ist包含以下代码的文件:

suffix_2p " s"
suffix_3p " s"
suffix_mp " s"

但是:这里有个窍门。如果页面范围是较长列表的一部分,则需要以下结果:

字,1,4,7秒,12,15秒。

现在,我可以得到:

字,1,4,7秒,12,15秒。

或者 :

单词,1、4、7、12、15。

有人对此有什么想法吗?

这是我的代码:


\begin{filecontents*}{alphab.ist}

headings_flag 1
delim_0 "} , "
delim_1 ", "
delim_2 ", "
delim_t ". "
item_0 "\n  \\item \\textbf{"
item_1 "\n    \\subitem "
item_01 "\n    \\subitem "
item_x1 "}.\n    \\subitem "

suffix_2p " s."
suffix_3p " s."
suffix_mp " s."


\end{filecontents*}







\documentclass[12pt,twoside]{book}
\usepackage[paperheight=240mm,paperwidth=160mm, left=22mm, right = 20mm, top = 20mm, bottom = 22mm]{geometry}

\usepackage[cam,width=17.5truecm,height=25.54truecm,center,dvips,noinfo]{crop}
\usepackage[french]{babel}


\usepackage{fontspec}
\usepackage{xltabular}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{lipsum}
\usepackage[newparttoc]{titlesec}%
\usepackage{titletoc}
\usepackage{supertabular}
\usepackage{xcolor}
\definecolor{gray}{HTML}{BCBDC0}
\definecolor{white}{HTML}{FFFFFF}
\usetikzlibrary{positioning,shapes.misc}
\usepackage{emptypage}







\newcounter{subpara}
\setcounter{subpara}{0}
\newcommand\numsubpara[1]{\vspace{0.5cm}\par\refstepcounter{subpara} \fontsize{10}{12}\selectfont \thesubpara. \fontsize{12}{12}\selectfont \space#1\space\vspace{0.3cm}\\  \fontsize{12}{12}\selectfont}


\usepackage{multicol}
\setlength{\columnsep}{0.6cm}


\usepackage{imakeidx}
\indexsetup{othercode=\footnotesize}

\renewcommand*{\seename}{V.}
\renewcommand*{\alsoname}{V. aussi}

\makeatletter
\renewcommand\@idxitem{\par}
\renewcommand\subitem{}
\makeatother

\makeatletter
\newcommand{\Index}[1]{\imki@wrindexentry{MyIndex}{#1}{\thesubpara}}
\makeatother

\makeindex[name=MyIndex, options= -s alphab.ist]%

\indexsetup{
  %level=\chapter,% <-- already default
  othercode={%
    \thispagestyle{alphab-title}%
    \small\raggedright
  }
}

\makeatletter
\renewcommand{\indexname}{}

\makeatother


\begin{document}

\chapter{Test1}
\section{Test2}
\numsubpara{title1}
\Index{Test}
\section{Test2}
\numsubpara{title1}
\Index{Test}

\newpage bla \newpage bla \chapter{Test3} \numsubpara{title3} \Index{Bla} \chapter{Test4} \numsubpara{title4} \Index{Bla}

\numsubpara{title5}
\numsubpara{title6}
\Index{Bla}

\newpage
\setlength{\columnsep}{-9.6cm}
\begin{multicols}{2}
\printindex[MyIndex]
\end{multicols}
\setlength{\columnsep}{0.6cm}

\end{document}

答案1

其实这并不难。将.ist改为

suffix_2p " s\\maybeadddot"
suffix_3p " s\\maybeadddot"
suffix_mp " s\\maybeadddot"

并在上下文中添加以下内容\makeatletter

\newcommand{\maybeadddot}{\@ifnextchar.{}{.}}

这样,文件中的s后面将会跟着;如果它后面跟着一个句点,则宏不执行任何操作,否则它会打印一个句点。\maybeadddot.ind

相关内容