Форма абзаца Idxlayout — добавление точки к определенным номерам страниц

Форма абзаца Idxlayout — добавление точки к определенным номерам страниц

Это продолжениеАвтоматически добавлять точку после номера последней страницы в каждой записи указателя

Рассмотрим MWE:

\begin{filecontents*}{style.ist}
delim_t "." 
\end{filecontents*}

\documentclass[12pt]{article}
\usepackage{imakeidx}
%\makeindex
\makeindex[options=-s style.ist]
\newcommand\pagedot[1]{#1.} % Adds a period to a particular entry.
\usepackage[itemlayout=singlepar]{idxlayout}

\begin{document}
This is a sentence.\index{Index entry}

This is another sentence.\index{Yet another index entry}

\newpage
This is another sentence.\index{Yet another index entry!subentry}
\idxlayout{columns=1}
\printindex
\end{document}

Это создает вывод индекса:

введите описание изображения здесь

Поскольку записи указателя отображаются в виде абзацев, я бы хотел, чтобы только последний номер страницы каждой записи имел точку после номера страницы. (Так, в этом случае, например, «Еще одна запись указателя, 1.;» будет отображаться вместо «Еще одна запись указателя, 1;»).

Как можно изменить приведенный выше код, чтобы добиться этого?

Спасибо.

решение1

Определите новую команду \checknextcharдля проверки, если номер страницы следует за subitemили subsubitem, если нет, добавьте точку. Затем используйте \\checknextcharв качестве ключевого значения дляdelim_t

\begin{filecontents*}[overwrite]{style.ist}
delim_t "\\checknextchar" 
\end{filecontents*}
\documentclass[12pt]{article}
\newcommand{\checknextchar}[1]{%
\ifx\subitem#1\subitem\else\ifx\subsubitem#1\subsubitem\else.\fi\fi%
}
\usepackage{imakeidx}
\makeindex[options=-s style.ist]
\newcommand\pagedot[1]{#1.} % Adds a period to a particular entry.
\usepackage[itemlayout=singlepar]{idxlayout}

\begin{document}
This is a sentence.\index{Index entry}

This is another sentence.\index{Yet another index entry}

This is another sentence.\index{this is another index entry}

\newpage
This is another sentence.\index{this is another index entry!subentry}

This is another sentence.\index{Yet another index entry!subentry}

\newpage
This is another sentence.\index{Yet another index entry!subentry!subsubentry}

\idxlayout{columns=1}
\printindex
\end{document}

введите описание изображения здесь

Связанный контент