带有练习编号的索引

带有练习编号的索引

我想创建一个练习集。为此,我为练习构建了一个环境:

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}

\newcounter{wf}
\setcounter{wf}{0}

\newcounter{Aufg}
\setcounter{Aufg}{0}

\newcommand{\Punkte}{0}

\newenvironment{Aufgabe}[1]{%
\renewcommand*{\Punkte}{#1}%
\nopagebreak%
\begin{list}{}{}
\item[]%
\makebox[0pt][l]{%  
    \hspace{-1cm}\refstepcounter{Aufg}\textbf{\arabic{Aufg}}}%}%
\ignorespaces}{
\ifnum \Punkte>0 \hspace*{0pt} \hfill \mbox{(\Punkte\ BE)} \fi%
\end{list}%
}

\begin{document}
\begin{Aufgabe}{5}
This is exercise number one. Topic: Alpha
\end{Aufgabe}
\begin{Aufgabe}{4}
And here we have exercise number two. Topic: Beta
\end{Aufgabe}
\begin{Aufgabe}{2}
Finally exercise number three. Topic: Gamma
\end{Aufgabe}
\end{document}

我也有练习的子结构(练习 A2.1.1 左右),但我想在这里保持简单,只看一下练习编号。

对于索引,我通常会在练习一中写下 \index{Alpha} (在练习二中写下 Beta,在练习三中写下 gamma ),这将给我:

Alpha 1

Beta 1

伽马 1

因为它指的是页码。但我真正想要的是能给我练习编号的索引。例如,在练习一中使用 \myindex{Alpha}(在练习二中使用 Beta,在练习三中使用 Gamma),结果应该是

Alpha 1

Beta 2

伽马 3

或者如果有更复杂的结构和相同主题的练习,它应该是这样的:

阿尔法A2.2; A3.4

贝塔 B1.1;B1.2.1;B1.2.2

伽马 A1;B5.4

等等。

您对这个特殊问题有什么想法吗?提前感谢您的帮助。

答案1

这是第二种设置,其中练习参考包含一个年份,后面跟着一个空格和章节编号。我们使用xindy而不是makeindex,因为它允许我们定义参考的结构。

首先是文档。主要的区别在于的定义\theAufg

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}

\newcounter{Aufg}[section]
\setcounter{Aufg}{0}

\newcounter{Jahr}
\setcounter{Jahr}{2016}
\renewcommand{\theAufg}{\arabic{Jahr} \thesection.\arabic{Aufg}}

\newcommand{\Punkte}{0}

\newenvironment{Aufgabe}[1]{%
\renewcommand*{\Punkte}{#1}%
\nopagebreak%
\begin{list}{}{}
\item[]%
\makebox[0pt][l]{%  
    \hspace{-1cm}\refstepcounter{Aufg}\textbf{\arabic{Aufg}}}%}%
\ignorespaces}{
\ifnum \Punkte>0 \hspace*{0pt} \hfill \mbox{(\Punkte\ BE)} \fi%
\end{list}%
}

\usepackage{index}
\newindex[theAufg]{aufg}{aidx}{aind}{Aufgaben Index}

\begin{document}
\section{A Section}

\begin{Aufgabe}{5}
This is exercise number one. Topic: Alpha \index[aufg]{Alpha}
\end{Aufgabe}
\begin{Aufgabe}{4}
And here we have exercise number two. Topic: Beta \index[aufg]{Beta}
\end{Aufgabe}

\section{Another Section}

\begin{Aufgabe}{2}
Finally exercise number three. Topic: Gamma \index[aufg]{Gamma}
\end{Aufgabe}

\printindex[aufg]
\end{document}

现在我们创建一个xindy“模块” aufg.xdy

(define-location-class "exercises" ("arabic-numbers" :sep " " "arabic-numbers" :sep "." "arabic-numbers"))

这支持数字后跟空格,后跟 2 个以“。”分隔的数字。您可以根据需要添加更多情况,例如对于附录字母,请使用“ALPHA”而不是“arabic-numbers”。

现在对索引进行排序,使用以下命令:

texindy -M aufg.xdy -o yourdocument.aind  yourdocument.aidx

并再次运行 LaTeX。

结果索引

答案2

该软件包index提供了创建新索引的功能。您还可以指定使用计数器来代替页码。

\usepackage{index}
\newindex[theAufg]{aufg}{aidx}{aind}{Aufgaben Index}

This is exercise number one. Topic: Alpha \index[aufg]{Alpha}

And here we have exercise number two. Topic: Beta \index[aufg]{Beta}

Finally exercise number three. Topic: Gamma \index[aufg]{Gamma}

然后你必须跑

makeindex -o yourdocument.aind yourdocument.aidx

对该索引进行排序和处理。

现在是关于复杂结构的问题。

只需定义\theAufg显示练习的结构化数字(例如section number . exercise number。然后您必须添加一个指定.分隔符的索引样式,否则makeindex会抱怨。

这是一个完整的例子:

\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}

\newcounter{Aufg}[section]
\setcounter{Aufg}{0}
\renewcommand{\theAufg}{\thesection.\arabic{Aufg}}

\newcommand{\Punkte}{0}

\newenvironment{Aufgabe}[1]{%
\renewcommand*{\Punkte}{#1}%
\nopagebreak%
\begin{list}{}{}
\item[]%
\makebox[0pt][l]{%  
    \hspace{-1cm}\refstepcounter{Aufg}\textbf{\arabic{Aufg}}}%}%
\ignorespaces}{
\ifnum \Punkte>0 \hspace*{0pt} \hfill \mbox{(\Punkte\ BE)} \fi%
\end{list}%
}

\usepackage{index}
\newindex[theAufg]{aufg}{aidx}{aind}{Aufgaben Index}

\begin{document}
\section{A Section}

\begin{Aufgabe}{5}
This is exercise number one. Topic: Alpha \index[aufg]{Alpha}
\end{Aufgabe}
\begin{Aufgabe}{4}
And here we have exercise number two. Topic: Beta \index[aufg]{Beta}
\end{Aufgabe}

\section{Another Section}

\begin{Aufgabe}{2}
Finally exercise number three. Topic: Gamma \index[aufg]{Gamma}
\end{Aufgabe}

\printindex[aufg]
\end{document}

运行makeindex

makeindex -o yourdocument.aind -s aufg.ist yourdocument.aidx

其中aufg.ist包含

page_compositor "."

结果索引

相关内容