Как добавить запись в индекс на уровне элемента без номера страницы?

Как добавить запись в индекс на уровне элемента без номера страницы?

В моем индексе я хотел бы сгруппировать определенные элементы под именем групповой записи. Поскольку я уже использую три доступных уровня (элемент, подэлемент, подподэлемент), я попытался создать запись без номера страницы. В приведенном ниже примере за "Weird Languages" не должен следовать номер страницы, поскольку он предназначен как заголовок класса того, что следует далее.

 \documentclass[12pt,twoside,a4paper,openright]{book}

 \usepackage{xunicode}
 \usepackage{imakeidx} 
 \makeindex[name=texts,title=Texts,columns=1,options=-s mystyle -c -l] 
 \begin{document}

 \index[texts]{Script@\string\textbf{Weird Languages}}

 3.28\index[texts]{Script!Aramaic!3.28}
 5.1\index[texts]{Script!Greek!5.1}
 8.1\index[texts]{Script!Demotic!8.1}

 \printindex[texts]

 \end{document}

На данный момент результат таков:

Вывод в формате PDF

Как скрыть номер страницы отдельной записи, в данном случае «Странные языки», или как добавить элемент без номера страницы, сохранив при этом обычные номера страниц для других элементов?

решение1

Вот один трюк, который сработал, когда я его использовал.

в преамбуле добавить следующие определения:

\newcommand{\idxnopage}[1]{{}}
\providecommand{\gobble}[1]{{}}
\newcommand{\idxsechead}[1]{\textbf{#1}\gobble}

используйте его следующим образом, вставив соответствующий аргумент сортировки и текст:

\index{<sort argument>@\idxsechead{<header text>} |idxnopage}

Я не смог придумать «комбинированное» определение, которое включало бы \idxnopage. (возможно, david или egreg смогут улучшить это.)

редактировать:Вот небольшой пример, который создаст описанный выше вывод. Обратите внимание, что важно запустить makeindexфайл .idx, созданный при первом запуске Latex, а затем снова обработать .texфайл через Latex, чтобы фактически включить индекс в вывод.

\documentclass{article}
\usepackage{makeidx}
\newcommand{\idxnopage}[1]{{}}
\providecommand{\gobble}[1]{{}}
\newcommand{\idxsechead}[1]{\textbf{#1}\gobble}
\makeindex

\begin{document}
Here is some text\index{some text} that we want indexed.

We also want a ``header'' in the index.
\index{00@\idxsechead{Header} |idxnopage}
\printindex
\end{document}

решение2

Просто для доказательства концепции. Взяв .indфайл, сгенерированный из файла-примера, приведенного выше, вы имеете:

\begin{theindex}

  \item Script
    \subitem Aramaic
      \subsubitem 3.28, 1
    \subitem Demotic
      \subsubitem 8.1, 1
    \subitem Greek
      \subsubitem 5.1, 1
  \item \string, \textbf{Weird Languages}{1}

\end{theindex}

Если изменить на:

\begin{theindex}

  \item \textbf{Weird Languages}
  \item Script
    \subitem Aramaic
      \subsubitem 3.28, 1
    \subitem Demotic
      \subsubitem 8.1, 1
    \subitem Greek
      \subsubitem 5.1, 1

\end{theindex}

и запустите xelatexеще раз с noautomaticопциейimakeidx , вы получите 'Странные языки' выше 'Script' и на том же уровне, но без ссылки на страницу. Для разового редактирования или двух это довольно просто.

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