如何用章节、节...标题来分割索引部分?

如何用章节、节...标题来分割索引部分?

可能标题不太清楚。

事实上,我在上课时会做笔记,有时老师会说,考试时要用到的东西就是管道(提示,需要了解的东西)。由于文本中有几行管道,完成后有 1000 多行,所以我习惯于使用管道来\usepackage[makeindex]{imakeidx}创建多个索引,并且只使用管道创建索引(但其他一些索引使用相同的方式创建了其他内容)。

工作正常,但问题是,我没有部分章节部分小节小节标题引用(并且有段落和小标题引用也很好)。

有办法吗?通过添加一列,将整个标题(章节等)放在索引句子之前?

下面是我希望它看起来像的一个例子:

越好,我就越喜欢。

或者,如果不可能,例如如果标题(部分、章节等)添加到页码之前(或之后,我不在乎):

如果第一不可能做到。

我把页码用粗体标出以便更清楚,但这不是必要的。

这里的目的是为了能够立即知道,而不必查看页码的位置(与部分/章节/部分的编号相同......因为它很容易改变),索引文本在文档中的位置,等等正在谈论的内容。

谢谢阅读。

答案1

以下解决方案使用与生成目录相同的方法。重要事项列表的条目被写入文件.aux,然后在文档末尾,LaTeX 将其写入文件\jobname.imp。在下一次运行中,将读取此文件并设置表格。

\documentclass{report}
\usepackage{longtable}

\makeatletter
\newlength\ImpLineWidth
\newtoks\ImpToks
\newcommand*{\printimportant}{%
  \clearpage
  \section*{\centering Index of important things}%
  \setlength{\ImpLineWidth}{\linewidth}%
  \addtolength{\ImpLineWidth}{-2\tabcolsep}
  \begin{longtable}{@{}p{.6\ImpLineWidth}p{.4\ImpLineWidth}@{}}%
  \global\ImpToks{}%
  \@starttoc{imp}%  
  \the\ImpToks
  \end{longtable}%
}
\newcommand*{\importantentry}[2]{%
  \global\ImpToks\expandafter{%   
    \the\ImpToks
    \centering #1&
    \centering #2\tabularnewline
  }%
  \ignorespaces
}
\newcommand*{\important}[1]{%
  \addtocontents{imp}{%
    \protect\importantentry{#1}{%
      \ifnum\value{part}=0 %
      \else
        part~\thepart, %
      \fi
      \ifnum\value{chapter}=0 %
      \else
        chapter~\thechapter, %
        \ifnum\value{section}=0 %
        \else
          section~\thesection, %
        \fi
      \fi  
      page~\thepage
    }%
  }%  
}     
\makeatother
\begin{document}
\part{First part}
\important{Some indexed \dots}
\chapter{First chapter}
\important{Again}
\section{First section}
\important{Idem 1}
\chapter{Second chapter}
\important{Idem 2}
\printimportant   
\end{document}    

结果

基于索引的变体

以下使用索引机制。对于已经有一个索引的情况,我使用包index来获取第二个索引。(还有其他包multind,例如……)

titleref章节标题通常不可用。例外是像、nameref或 这样的软件包的最新标题zref-titleref。为了最好地控制编号和标题,需要修补章节命令。在这里,我使用了一种快捷方式,即\addcontentsline假设只有章节标题是相关的,并且也进入了目录。仍然存在一个小故障,零件编号和零件标题之间的空间很大,标准类\hspace{1em}在这里使用硬编码。但无论如何,您正在使用不同的未知设置,如单词编号所示。为简单起见,还假设零件标题始终存在。

第一次运行 LaTeX 会test.tex生成test.imx。最终的索引文件test.imp通过以下方式生成:

makeindex -o test.imp test.imx

还可以使用与标准设置不同的样式文件来控制最终索引文件的输出。

\documentclass{report}
\usepackage{index}
\newindex{imp}{imx}{imp}{Index of important things}

\makeatletter
\newlength\ImpLineWidth
\newtoks\ImpToks
\newcommand*{\printimportant}{%
  \begingroup
    \def\numberline##1{##1:~}%
    \renewcommand*{\theindex}{%
      \clearpage
      \section*{\centering Index of important things}%
      \setlength{\parskip}{1ex plus .5ex minus .25ex}%
      \setlength{\parindent}{0pt}%
      \let\item\@idxitem
    }{%
      \clearpage
    }%
    \printindex[imp]%
  \endgroup
}

% Remember sectioning titles
\newcommand*{\imp@toc}{toc}
\@ifdefinable{\imp@org@addcontentsline}{%
  \let\imp@org@addcontentsline\addcontentsline
  \renewcommand*{\addcontentsline}[3]{%
    \edef\imp@temp{#1}%
    \ifx\imp@temp\imp@toc
      \begingroup
        \expandafter\protected@xdef\csname imp@current@#2\endcsname{#3}%
        \csname imp@cleanup@#2\endcsname
      \endgroup
    \fi
    \imp@org@addcontentsline{#1}{#2}{#3}%
  }%
}
% Clear subordinate sectioning titles
\def\imp@temp#1#2{%
  \expandafter\newcommand\csname imp@cleanup@#1\endcsname{%
    \global\expandafter\let\csname imp@current@#2\endcsname\@empty
    \csname imp@cleanup@#2\endcsname
  }%
}
\imp@temp{part}{chapter}
\imp@temp{chapter}{section}
\imp@temp{section}{subsection}

\newcommand*{\important}[2][]{%
  \def\imp@temp{#1}%
  \protected@edef\imp@temp{%
    \noexpand\index[imp]{%  
      \ifx\imp@temp\@empty 
      \else
        #1@%
      \fi
      #2; %
      % assuming the part is always present.
      part~\csname imp@current@part\endcsname
      \ifx\imp@current@chapter\@empty
      \else
        , chapter~\csname imp@current@chapter\endcsname
        % section, ...
      \fi
      |textbf%
    }%
  }%
  \imp@temp
}
\makeatother
\begin{document}
\tableofcontents
\part{First part}
\important{Some indexed \dots}
\chapter{First chapter}
\important{Again}
\section{First section}
\important{Idem 1}
\chapter{Second chapter}
\important{Idem 2}
\printimportant
\end{document}

结果

相关内容