From f114f14b8b351c58103bc0f55f69778175ab57b6 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Sun, 15 Sep 2019 20:19:16 -0400 Subject: [PATCH] Add index support. --- GNUmakefile | 23 +++++++++++++++++++++++ examples.tex | 13 ++++++++++--- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index a248258..a2e2ec2 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -36,6 +36,8 @@ MJOTEX += mjo-theorem-star.tex mjo-topology.tex mjo.bst SAGE_LISTING_SRCS = $(wildcard sage_listings/*.listing) SAGE_LISTING_DSTS = $(patsubst %.listing,%.py,$(SAGE_LISTING_SRCS)) +INDICES = $(PN) + # Use kpsewhich (from the kpathsea suite) to find the absolute paths # of the bibtex/mjotex files listed in in $(BIBS)/$(MJOTEX). The SRCS # variable should contain all (Bib)TeX source files for the document. @@ -52,6 +54,12 @@ ifdef SAGE_LISTING_DSTS SRCS += $(SAGE_LISTING_DSTS) endif +ifdef INDICES +INDEX_SRCS = $(addsuffix .idx,$(INDICES)) +INDEX_DSTS = $(addsuffix .ind,$(INDICES)) +SRCS += $(INDEX_DSTS) +endif + # The first target is the default, so put the PDF document first. # # This voodoo is all designed to find a "fixed point" of calling @@ -112,6 +120,21 @@ $(PN).aux: $(SRCS) $(LATEX) $(PN).tex +ifdef INDICES +# We need to be able to build the index source files without involving +# the main $(PN).pdf rule, in order to avoid a chicken-and-egg problem. +# This is similar to the $(PN).aux rule above, except that an index is +# optional and there might be more than one of them. +$(INDEX_SRCS): $(PN).tex + $(LATEX) $(PN).tex +endif + +ifdef INDICES +# Create real indices from source files by running "makeindex" on them. +%.ind: %.idx + makeindex $< +endif + # The pipe below indicates an "order-only dependency" on the aux file. # Without it, every compilation of $(PN).tex would produce a new # $(PN).aux, and thus $(PN).bbl would be rebuilt. This in turn causes diff --git a/examples.tex b/examples.tex index 07db38e..4005cdd 100644 --- a/examples.tex +++ b/examples.tex @@ -5,15 +5,20 @@ \usepackage[nonumberlist]{glossaries} \makenoidxglossaries +% If you want an index, we can do that too. You'll need to define +% the "INDICES" variable in the GNUmakefile, though. +\usepackage{makeidx} +\makeindex + \usepackage{mjotex} \usepackage{mathtools} \begin{document} \begin{section}{Algebra} - If $R$ is a commutative ring, then $\polyring{R}{X,Y,Z}$ is a - multivariate polynomial ring with indeterminates $X$, $Y$, and - $Z$, and coefficients in $R$. If $R$ is a moreover an integral + If $R$ is a \index{commutative ring}, then $\polyring{R}{X,Y,Z}$ + is a multivariate polynomial ring with indeterminates $X$, $Y$, + and $Z$, and coefficients in $R$. If $R$ is a moreover an integral domain, then its fraction field is $\Frac{R}$. \end{section} @@ -329,4 +334,6 @@ \setglossarystyle{listdotted} \glsaddall \printnoidxglossaries + + \printindex \end{document} -- 2.44.2