diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-13 00:05:23 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-13 00:05:23 +0000 |
commit | 03978611792c5cec10b87804630de3e1cbc52f57 (patch) | |
tree | e8e895865e4e47eb06753841dd38bc2b1d83656e /Master/texmf-dist | |
parent | 15f7206dd3f97a844cede7fb76358ba6a022981c (diff) |
repeatindex
git-svn-id: svn://tug.org/texlive/trunk@1276 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
-rw-r--r-- | Master/texmf-dist/tex/latex/repeatindex/repeatindex.sty | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/repeatindex/repeatindex.sty b/Master/texmf-dist/tex/latex/repeatindex/repeatindex.sty new file mode 100644 index 00000000000..62ab240c4f5 --- /dev/null +++ b/Master/texmf-dist/tex/latex/repeatindex/repeatindex.sty @@ -0,0 +1,134 @@ +%% +%% repeatindex.sty +%% +%% Copyright 2001 Harald Harders (h.harders@tu-bs.de) +%% License is LPPL. +%% +%% +%% This Package repeats item of an index if a page or column +%% break occurs within a list of subitems. +%% This helps to find out to which main item a subitem belongs. +%% +%% Example: +%% +%% Main Item A, 1, 3, 6 Main Item A... +%% Subitem a, 1 Subitem g, 1 +%% Subitem b, 1 Subitem h, 1 +%% Subitem c, 2 Subitem i, 1 +%% Subitem d, 3 Subitem j, 1 +%% Subitem d, 1 Main Item B, 3, 6 +%% Subitem e, 4 Subitem a, 3 +%% Subitem f, 2 Subitem b, 4 +%% +%% To get that behaviour you have to include the package into your +%% document using \usepackage{repeatindex}, and you have to produce +%% the .ind file in a special format in which the entries of the \item +%% are enclosed in [...] (example: \item [Main Item A], 1, 3, 6 ). +%% This can be achieved using repeatindex.ist: +%% makeindex -s repeatindex file +%% +%% Problems: +%% - When an item is repeated a small vertical space is included two +%% items later +%% - If the last item is a subitem and the only entry on the last page +%% of the index the repeation is omitted +%% +%% This package has not been tested much, yet. Please help me to find +%% more problems and if possible solutions to my problems. +%% I have had much trouble in solving the problem that the code +%% defined in afterpage is executed with a delay. +%% +%% Harald Harders, 2001/10/13 +%% h.harders@tu-bs.de +%% +\ProvidesPackage{repeatindex}[2001/10/13 v0.01 Repeats index entries] +% Write text at page and column breaks +\RequirePackage{afterpage} +% Include Index stuff +\RequirePackage{makeidx} + +% Command that replaces all contents of afterpage +\long\def\hhafterpage#1{% + \gdef\AP@{{#1\par}}% + \global\output{% + \the\AP@output + \ifnum\outputpenalty>-\@Mi + \global\output\expandafter{\the\AP@output}% + \aftergroup\AP@@ + \fi}% +} + +% Entry to be repeated +% temporary variable +\def\@entry{}% +% final variable +\def\@@entry{}% + +\def\@hhempty{\@empty} + +\def\entryprefix{\itshape} +\def\entrypostfix{\dots} + +\AtBeginDocument{% + % Save original item commands + \let\orig@idxitem\@idxitem + \let\orig@subitem\subitem + \let\orig@subsubitem\subsubitem + % + % New \item command, has to be used "\item [entry], pages" + \renewcommand{\@idxitem}[1][\@empty]{% + % call original command + \orig@idxitem #1% + % save entry in \@arg + \def\@arg{#1}% + \ifx\@arg\@hhempty + \else + % if entry not empty (which is the case if called by \subitem or + % \subsubitem) copy entry to \@entry + \xdef\@entry{#1}% + % Delete the contents to be repeated + \hhafterpage{}% + \fi + }% + % + % New \subitem command, to be used as usual + \renewcommand{\subitem}{% + % call original command + \orig@subitem + % set the contents to be repeated on the next page + \expandafter\hhafterpage\expandafter{\expandafter\par\expandafter{% + \expandafter\expandafter\entryprefix\@@entry\entrypostfix}}% + % copy \@entry to \@@entry. This is done to delay the entry to be + % put onto the page, due to a strange behaviour of afterpage (some + % text of the next page is executed before the afterpage text is + % put onto the page). + \xdef\@@entry{\@entry}% + }% + % + % New \subsubitem command, to be used as usual + \renewcommand{\subsubitem}{% + % call original command + \orig@subsubitem + % set the contents to be repeated on the next page + \expandafter\hhafterpage\expandafter{\expandafter\par\expandafter{% + \expandafter\expandafter\itshape\@@entry\dots}}% + % copy \@entry to \@@entry. This is done to delay the entry to be + % put onto the page, due to a strange behaviour of afterpage (some + % text of the next page is executed before the afterpage text is + % put onto the page). + \xdef\@@entry{\@entry}% + }% + % + % Copy original end of the theindex environment + \let\orig@endtheindex\endtheindex + % Redefine end of the theindex environment + \renewcommand{\endtheindex}{% + % switch off repeation + \hhafterpage{}% + % call original command + \orig@endtheindex + }% +% +} + +\endinput |