下列的这个问题,我有一个新挑战给你!简要总结:
对于出现在第 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