summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/imakeidx/imakeidx.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-05-09 21:52:59 +0000
committerKarl Berry <karl@freefriends.org>2012-05-09 21:52:59 +0000
commitce7e3c5a160f4301ec230a05878ddb206ab724f8 (patch)
tree7fdd9b6ba9dd251bb39b09602f776ad83e5aad28 /Master/texmf-dist/source/latex/imakeidx/imakeidx.dtx
parenta01f0a51f25da1ca929e78589d976ec767d00a38 (diff)
imakeidx 1.1 (9may12)
git-svn-id: svn://tug.org/texlive/trunk@26275 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/imakeidx/imakeidx.dtx')
-rw-r--r--Master/texmf-dist/source/latex/imakeidx/imakeidx.dtx143
1 files changed, 84 insertions, 59 deletions
diff --git a/Master/texmf-dist/source/latex/imakeidx/imakeidx.dtx b/Master/texmf-dist/source/latex/imakeidx/imakeidx.dtx
index ef2f86150e3..e6e31e5ec98 100644
--- a/Master/texmf-dist/source/latex/imakeidx/imakeidx.dtx
+++ b/Master/texmf-dist/source/latex/imakeidx/imakeidx.dtx
@@ -5,9 +5,9 @@
\keepsilent
\usedir{tex/latex/imakeidx}
\preamble
- ______________________________________________________
+ ___________________________________________________________
The imakeidx package for LaTeX
- Copyright (C) 2010 Claudio Beccari and Enrico Gregorio
+ Copyright (C) 2010-2012 Claudio Beccari and Enrico Gregorio
All rights reserved
License information appended
@@ -15,8 +15,8 @@
\endpreamble
\postamble
-Copyright 2010 Claudio Beccari <claudio dot beccari at gmail dot it>
-Copyright 2010 Enrico Gregorio <Enrico dot Gregorio at univr dot it>
+Copyright 2010--2012 Claudio Beccari <claudio dot beccari at gmail dot it>
+Copyright 2010--2012 Enrico Gregorio <Enrico dot Gregorio at univr dot it>
Distributable under the LaTeX Project Public License,
version 1.3c or higher (your choice). The latest version of
@@ -43,7 +43,7 @@ and the derived files imakeidx.sty and imakeidx.pdf.
%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
%<package>\ProvidesPackage{imakeidx}%
%<*package>
- [2010/07/12 v.1.0a Package for typesetting indices in a synchronous mode]
+ [2012/05/09 v1.1 Package for typesetting indices in a synchronous mode]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -56,13 +56,13 @@ and the derived files imakeidx.sty and imakeidx.pdf.
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[english]{babel}
-\usepackage{textcomp,lmodern,metalogo,booktabs}
+\usepackage{textcomp,metalogo,booktabs}
\begin{document}
\makeatletter
\GetFileInfo{imakeidx.dtx}% dtx extension required
-\title{Package \pack{imakeidx}\thanks{Version number \fileversion; last
+\title{The package \pack{imakeidx}\thanks{Version number \fileversion; last
revision \filedate.}}
-\author{Claudio Beccari\thanks{\texttt{claudio dot beccari at gmail dot it}}
+\author{Claudio Beccari\thanks{\texttt{claudio dot beccari at gmail dot com}}
\and Enrico Gregorio\thanks{\texttt{Enrico dot Gregorio at univr dot it}}}
\date{}
\maketitle
@@ -70,11 +70,17 @@ and the derived files imakeidx.sty and imakeidx.pdf.
\tableofcontents
\end{multicols}
\smallskip
+\RecordChanges
\DocInput{imakeidx.dtx}
\end{document}
%</driver>
% \fi
-% \CheckSum{737}
+% \CheckSum{743}
+%
+% \changes{v1.0}{2010/07/10}{First public version}
+% \changes{v1.0a}{2010/07/12}{Small bug correction}
+% \changes{v1.1}{2012/05/09}{Fixed compatibility with \pack{memoir}}
+% \changes{v1.1}{2012/05/09}{Modified interaction with Lua\TeX}
%
% \begin{abstract}
% This package exploits the |\write18| facility of modern \TeX\ system
@@ -92,17 +98,17 @@ and the derived files imakeidx.sty and imakeidx.pdf.
% system is just \prog{pdftex}; the original Knuthian \prog{tex} is
% still corrected by D.\,E.~Knuth himself, but is frozen, according to
% his will; it is still distributed by every \TeX\ distribution, but
-% in practice only \prog{pdftex} is used as the interpreter of every
-% macro package and the true typesetter engine. The latter is updated
-% with the original \prog{tex} corrections, but it is the only one
-% that the \LaTeX3 Team maintains and upgrades.
+% in practice only \prog{pdftex}, \prog{xetex} or \prog{luatex} are
+% used as the interpreter of every macro package and the true
+% typesetter engine.
%
% This program \prog{pdftex} was originally born with the facility of
% producing either a pdf output file, as its name suggests, or a dvi
% file. Since then it has been enriched with many upgrades, also with
% regard to the evolution of the PDF language itself. It also
% incorporates the extensions of \eTeX\ and has the ability to open a
-% shell so as to call system commands with their arguments.
+% shell so as to call system commands with their arguments. The same
+% is true for \prog{xetex} and \prog{luatex}.
%
% This facility, since the \TeX~Live 2010 distribution, is official,
% but is sort of restricted, in the sense that the \TeX\ system
@@ -130,8 +136,23 @@ and the derived files imakeidx.sty and imakeidx.pdf.
% used to work on a specific document, it is necessary to add
% \texttt{-shell-escape} (or \texttt{-\/-enable-write18} for MiK\TeX)
% to the command with which \prog{pdftex} is launched, possibly by the
-% shell editor. If Lua\LaTeX{} is used, it's necessary to specify the
-% \texttt{-shell-escape} command line option.
+% shell editor. What's been said for \prog{pdftex} goes without change
+% for the \prog{xetex} and \prog{luatex} typesetting engines.
+%
+% {\medskip\footnotesize If Lua\LaTeX{} is used and \prog{luatex} is
+% version 0.42 to 0.66, it's impossible to distinguish whether the
+% restricted shell escape is active or not, so the automatic procedure
+% will be tried anyway, unless disabled with the \texttt{noautomatic}
+% package option. With version 0.68 or later, the behavior is the same
+% as with the other engines.\par}
+%
+% \subsection*{Note}
+%
+% The first public version of this package was not compatible with the
+% \pack{memoir} class. Since version 1.1 it is; however, one has to
+% keep in mind that all index processing is done with the methods of
+% the present package, and \emph{not} with \pack{memoir}'s; however
+% the syntax used is the same and there should be no problem.
%
%\section{Package usage}
% This package is invoked as usual by means of a \cs{usepackage} command:
@@ -213,9 +234,9 @@ and the derived files imakeidx.sty and imakeidx.pdf.
% \Item[name] is the symbolic name for an index; if this key is not
% specified, it defaults to the value of the \cs{jobname} control
% sequence, in other words the name of the current main \texttt{.tex}
-% program file, i.e., the file that |\input|s and/or |\include|s all
-% the files of the complete document. This symbolic name is necessary
-% only when doing multiple indices and is used with the \cs{index}
+% file, i.e., the file that |\input|s and/or |\include|s all the files
+% of the complete document. This symbolic name is necessary only when
+% doing multiple indices and is used with the \cs{index}
% command to point to the right index.\\*
% Example: \texttt{name=nameidx}
% \Item[title] is the title that is typeset at the beginning of the
@@ -310,7 +331,8 @@ and the derived files imakeidx.sty and imakeidx.pdf.
% entries; the \meta{spacing} should be a vertical space command such
% as |\vspace{36pt}| (default is \cs{bigskip}), controlling the
% spacing between the prologue and the index proper. The command
-% affects only the next index produced by \cs{printindex}.
+% affects only the next index produced by \cs{printindex} and is best
+% placed just before this command.
% \Item[printindex] with the syntax:\\*[1ex]
% \cs{printindex}\oarg{name}\\[1ex]
% is used to typeset the particular index named \meta{name}; if no
@@ -368,13 +390,12 @@ and the derived files imakeidx.sty and imakeidx.pdf.
% If you use only \prog{makeindex} and \TeX~Live 2010 or later, then
% you shouldn't need anything special, since \prog{makeindex} is among
% the safe programs allowed to be called during a \LaTeX{} run, be it
-% \prog{latex}, \prog{pdflatex} or \prog{xelatex} (or even
-% \prog{lualatex}, at present with some glitches). When the options
-% \texttt{splitindex}, \texttt{xindy} or \texttt{texindy} are
-% specified (globally or locally), the \LaTeX{} run should be called
-% with \texttt{-shell-escape} (which is \texttt{--enable-write18} for
-% MiK\TeX) or the \texttt{noautomatic} option should be specified when
-% loading \pack{imakeidx}.
+% \prog{latex}, \prog{pdflatex}, \prog{xelatex}, or \prog{lualatex}.
+% When the options \texttt{splitindex}, \texttt{xindy} or
+% \texttt{texindy} are specified (globally or locally), the \LaTeX{}
+% run should be called with \texttt{-shell-escape} (which is
+% \texttt{--enable-write18} for MiK\TeX) or the \texttt{noautomatic}
+% option should be specified when loading \pack{imakeidx}.
%
% Let's look at a couple of examples. In both we suppose that the
% document \texttt{mybook.tex} defines two indices through
@@ -401,7 +422,8 @@ and the derived files imakeidx.sty and imakeidx.pdf.
% where |<...>| stands for the rest of the command line in the
% particular case. If this line is not present, then \prog{makeindex}
% has not been called; this happens when you didn't specify the shell
-% escape command line option for the \LaTeX{} run or if you set the
+% escape command line option for the \LaTeX{} run or the restricted
+% shell escape is not active; also, of course, if you set the
% \texttt{noautomatic} option for the index.
%
% When using \prog{splitindex}, the situation is different. During the
@@ -597,15 +619,15 @@ and the derived files imakeidx.sty and imakeidx.pdf.
% humans. Soooooo\dots
% \begin{center} HAPPY \TeX{}ING!\end{center}
%
-% \StopEventually{}
+% \StopEventually{\PrintChanges}
% \section{Implementation}
% The heading to the file is in common with the documentation file,
% and has already been taken care of. But we require the
% \pack{xkeyval} package, in order to handle the key-value lists.
%
-% Notice that in order to create e specific name space such as to
-% avoid possible conflicts with other packages, all the commands
-% defined in this package are prefixed with the string \texttt{imki@}.
+% Notice that in order to create a specific name space so as to avoid
+% possible conflicts with other packages, all the commands defined in
+% this package are prefixed with the string \texttt{imki@}.
% \begin{macrocode}
\RequirePackage{xkeyval}
% \end{macrocode}
@@ -616,8 +638,7 @@ and the derived files imakeidx.sty and imakeidx.pdf.
% which is incompatible with \pack{multicol}. We define also an
% internal alias for |\immediate\write18|, a rudimentary check for the
% typesetting engine and a macro for modifying the command line call
-% to \prog{splitindex}. Lua\TeX{} is recognized later by the
-% value~$255$ to the internal parameter \cs{imki@shellescape}.
+% to \prog{splitindex}.
% \begin{macrocode}
\DeclareOption{xindy}{\def\imki@progdefault{texindy}}
\DeclareOption{texindy}{\def\imki@progdefault{texindy}}
@@ -643,7 +664,14 @@ and the derived files imakeidx.sty and imakeidx.pdf.
\def\imki@engine{(pdf)latex}
\ifdefined\XeTeXversion\def\imki@engine{xelatex}\fi
\ifdefined\directlua % luatex doesn't have \(pdf)shellescape
- \def\imki@engine{lualatex}\chardef\imki@shellescape\@cclv
+ \def\imki@engine{lualatex}
+ \ifnum\luatexversion<68
+ \chardef\imki@shellescape\@ne % no way to know the value
+ \else
+ \RequirePackage{pdftexcmds} % provides \pdf@shellescape
+ \chardef\imki@shellescape\pdf@shellescape
+ \fi
+ \let\imki@exec\pdf@system
\fi
\edef\imki@splitindexoptions{-m \string"\string"}
\def\splitindexoptions#1{\g@addto@macro\imki@splitindexoptions{ #1}}
@@ -656,20 +684,16 @@ and the derived files imakeidx.sty and imakeidx.pdf.
% either incompatible with this one, or must be faked in order to
% pretend they have been loaded.
%
-% Unfortunately there is a serious incompatibility with the
-% \pack{memoir} class. In facts \pack{memoir} puts all index entries
-% in the main \texttt{.aux} file and extracts them to the various raw
-% index files at |\end{document}| time. This means that no raw index
-% file output stream has been defined, and therefore this package
-% can't close it; moreover it can't typeset the indices before
-% |\end{document}| because they are not yet available. Therefore if
-% this one is the active class chosen for typesetting the whole
-% document, this package outputs an error message and exits.
-% \begin{macrocode}
-\@ifclassloaded{memoir}{%
- \PackageError{imakeidx}{Incompatible package won't be loaded}
- {This package is incompatible with memoir, sorry}\endinput}{}
-% \end{macrocode}
+% There is a serious incompatibility with the \pack{memoir} class. In
+% facts \pack{memoir} puts all index entries in the main \texttt{.aux}
+% file and extracts them to the various raw index files at
+% |\end{document}| time. This means that no raw index file output
+% stream has been defined, and therefore this package can't close it;
+% moreover it can't typeset the indices before |\end{document}|
+% because they are not yet available. Therefore if \pack{memoir} is
+% the active class, we will hijack its index mechanism replacing it
+% with ours.
+%
% On the opposite we pretend that package \pack{makeidx} or package
% \pack{multind} have been loaded, so that \pack{hyperref} can play
% with their commands, that are substantially the same as those used
@@ -725,7 +749,7 @@ and the derived files imakeidx.sty and imakeidx.pdf.
}
% \end{macrocode}
%
-% Here are the keys. As usual, the \texttt{imki} prefix is used to
+% Here are the keys. As usual, the \texttt{imki@} prefix is used to
% distinguish anything that is being defined in this package, even the
% keys.
% \begin{macrocode}
@@ -876,21 +900,17 @@ and the derived files imakeidx.sty and imakeidx.pdf.
% \cs{pdfshellescape}, so we take care of this (hoping that users or
% packages don't define a \cs{shellescape} command). In any case we
% define an internal version of this command. In the case of
-% \prog{luatex} we can't emit the proper messages and hope that Heiko
-% Oberdiek will update \pack{pdftexcmds}; for the moment we set
-% \cs{imki@shellescape} to~$1$. The conditional
+% \prog{luatex} we can't emit the proper messages if \prog{luatex} is
+% not version 0.68 or later. The conditional
% \cs{ifKV@imki@noautomatic} is defined by \cs{define@boolkey} above.
%
% \begin{macrocode}
\def\imki@shellwarn{}
-\ifdefined\imki@shellescape % luatex >= 0.60
- \chardef\imki@shellescape=\@ne
-% \RequirePackage{pdftexcmds}%
-% \chardef\imki@shellescape=\pdf@shellescape
+\ifdefined\imki@shellescape % luatex
\else
\@ifundefined{shellescape}
- {\let\imki@shellescape\pdfshellescape}
- {\let\imki@shellescape\shellescape}
+ {\let\imki@shellescape\pdfshellescape} % pdftex
+ {\let\imki@shellescape\shellescape} % xetex
\fi
\ifnum\imki@shellescape=\z@
\let\KV@imki@noautomaticfalse\KV@imki@noautomatictrue
@@ -1154,5 +1174,10 @@ and the derived files imakeidx.sty and imakeidx.pdf.
\let\imki@putindexunique\@undefined
\fi
% \end{macrocode}
+% To end the code, we deal with \pack{memoir}:
+% \begin{macrocode}
+\@ifclassloaded{memoir}{\let\@wrindexm@m\@wrindex}{}
+% \end{macrocode}
+
% The end.
% \Finale