From e6b754ddd8bdcc1242d8acf0517fa8a694a960c5 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 25 Sep 2018 08:30:26 +0900 Subject: aeb-minitoc (new) --- texmf-dist/tex/latex/aeb-minitoc/aeb-minitoc.sty | 256 +++++++++++++++++++++++ 1 file changed, 256 insertions(+) create mode 100644 texmf-dist/tex/latex/aeb-minitoc/aeb-minitoc.sty (limited to 'texmf-dist/tex/latex') diff --git a/texmf-dist/tex/latex/aeb-minitoc/aeb-minitoc.sty b/texmf-dist/tex/latex/aeb-minitoc/aeb-minitoc.sty new file mode 100644 index 00000000..44e53789 --- /dev/null +++ b/texmf-dist/tex/latex/aeb-minitoc/aeb-minitoc.sty @@ -0,0 +1,256 @@ +%% +%% This is file `aeb-minitoc.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% aeb-minitoc.dtx (with options: `copyright,package') +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% aeb-minitoc.sty package, %% +%% Copyright (C) 2012--2018 D. P. Story %% +%% dpstory@uakron.edu dpstory@acrotex.net %% +%% %% +%% This program can redistributed and/or modified under %% +%% the terms of the LaTeX Project Public License %% +%% Distributed from CTAN archives in directory %% +%% macros/latex/base/lppl.txt; either version 1.2 of the %% +%% License, or (at your option) any later version. %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{aeb-minitoc} + [2018/09/21 v1.6 Creates a simple mini-toc] +\newif\ifMiniTocListings \MiniTocListingstrue +\DeclareOption{nominitocs}{\AtEndOfPackage{\MiniTocListingsfalse + \let\insertminitoc\insertminitocNOT}} +\DeclareOption{!nominitocs}{\MiniTocListingstrue} +\ProcessOptions +\let\mtoc@contentsline\contentsline +\let\mtoc@starttoc\@starttoc +\let\mtoc@tableofcontents\tableofcontents +\let\mtoc@addtocontents\addtocontents +\newcount\@minitocCnt \@minitocCnt=0\relax +\def\csarg#1#2{\expandafter#1\csname#2\endcsname} +\let\mtoc@One=1 \let\mtoc@Zero=0 +\let\mtocgobble\@gobble +\def\TOPLevel#1{\def\x{#1}\ifx\x\@empty\else + \def\mtoc@TOPLevel{#1}\edef\TOPLevelNum{\@nameuse{sl@#1}}\fi} +\def\BTMLevel#1{\def\x{#1}\ifx\x\@empty\else + \def\mtoc@BTMLevel{#1}\edef\BTMLevelNum{\@nameuse{sl@#1}}\fi} +\def\TOCLevels#1#2{\TOPLevel{#1}\BTMLevel{#2}} +\@ifclassloaded{book}{% + \TOCLevels{chapter}{subsection} + \def\sl@part{-1}\def\sl@chapter{0} + \csarg{\edef}{sl@part*}{\sl@part} + \csarg{\edef}{sl@chapter*}{\sl@chapter} +}{% + \@ifclassloaded{report}{% + \TOCLevels{chapter}{subsection} + \def\sl@part{-1}\def\sl@chapter{0} + \csarg{\edef}{sl@part*}{\sl@part} + \csarg{\edef}{sl@chapter*}{\sl@chapter} + }{% + \TOCLevels{section}{subsubsection} + \def\sl@part{0}\csarg{\edef}{sl@part*}{\sl@part} + }% +} +\def\sl@section{1}\def\sl@subsection{2}\def\sl@subsubsection{3} +\def\sl@paragraph{4}\def\sl@subparagraph{5}%\def\sl@all{17} +\csarg{\edef}{sl@section*}{\sl@section} +\csarg{\edef}{sl@subsection*}{\sl@subsection} +\csarg{\edef}{sl@subsubsection*}{\sl@subsubsection} +\csarg{\edef}{sl@paragraph*}{\sl@paragraph} +\csarg{\edef}{sl@subparagraph*}{\sl@subparagraph} +\newif\if@foundTOPLevel \@foundTOPLevelfalse +\def\mtoc@@contentsline#1#2#3#4#5{\def\mtoc@PgNum{#3}% + \def\mtoc@HY@anchor{#4}\def\TOCEntryNum{#5}% + \mtoc@contentsline{#1}{#2}{#3}{#4}} +\long\def\cl@LOOKFORSEC@LX#1#2#3#4{% + \cl@LOOKFORSEC@HY{#1}{#2}{#3}{\@empty}{#4}} +\long\def\cl@LOOKFORSEC@HY#1#2#3#4#5{\def\mt@rgi{#1}% dps + \if@foundTOPLevel\ifx\mtocCL\@gobbletwo\else + \edef\NUMLevel{\@nameuse{sl@#1}}% + \ifnum\NUMLevel > \TOPLevelNum\relax\else + \let\mtocCL\@gobbletwo + \fi + \fi\fi + \@chkForNl#2\@nil % is it a * section + \ifx\mtocCL\@gobbletwo\else + \edef\mtoc@tmp{\the\mtocs@toks@}% + \ifx\mt@rgi\mtoc@TOPLevel + \def\SECNUM{MTOC.#5}% + \set@display@protect + \edef\mtoc@sec{\mtoc@sec}% + \ifx\SECNUM\mtoc@sec + \@foundTOPLeveltrue + \else + \@foundTOPLevelfalse\fi + \set@typeset@protect + \else + \if@foundTOPLevel + \ifnum\NUMLevel > \BTMLevelNum\relax\else + \ifx\@nlrtn\relax + \mtocs@toks@=\expandafter{\mtoc@tmp + \mtoc@@contentsline{#1}{#2}{#3}{#4}{#5}}\else + \mtocs@toks@=\expandafter{\mtoc@tmp + \mtoc@@contentsline{#1*}{#2}{#3}{#4}{#5}}\fi + \fi + \fi + \fi + \fi +} +\@ifpackageloaded{hyperref}{\let\cl@LOOKFORSEC\cl@LOOKFORSEC@HY} + {\let\cl@LOOKFORSEC\cl@LOOKFORSEC@LX} +\def\@chkForNl#1#2\@nil{% check for number line + \ifx#1\numberline\let\@nlrtn\relax\else + \def\@nlrtn{\numberline{\hfill}}\fi} +\def\mtoc@st@rttoc#1{\begingroup + \if@filesw \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax + \fi\global\@nobreakfalse\endgroup} +\let\mtoc@@starttoc\mtoc@One +\def\mtoc@start@toc{\let\mtoc@start@next\relax + \@ifundefined{aebLastPage} + {% + \ifx\mtoc@@starttoc\mtoc@One + \global\let\mtoc@@starttoc\mtoc@Zero + \def\mtoc@start@next{\mtoc@st@rttoc{toc}}\fi + \mtoc@start@next + }{% + \ifnum\aebLastPage<\thepage\relax + \def\mtoc@start@next{\mtoc@st@rttoc{toc}}\fi + \mtoc@start@next + }% +} +\AtEndDocument{\mtoc@start@toc} +\def\mtoc@TOC{toc} +\def\mtocCL#1#2{#1} +\renewcommand\addtocontents[2]{% + \def\mt@rgi{#1}\ifx\mt@rgi\mtoc@TOC + \global\advance\@minitocCnt\@ne + \mtoc@addtocontents{#1}{\protect\mtocCL{#2}{\the\@minitocCnt}}\else + \mtoc@addtocontents{#1}{#2}\fi} +\def\tableofcontents{% + \def\@starttoc##1{\makeatletter + \@input{\jobname.##1}\makeatother}% + \NoFmtTOCEntry + \mtoc@tableofcontents + \global\let\@starttoc\mtoc@starttoc} +\newcommand{\mtoc@CL@mtoc}[1]{\mtoc@parse#1\@nil} +\def\mtoc@parse#1#2\@nil{\ifx#1\contentsline + \def\mtoc@next##1{#1#2{##1}}\else + \let\mtoc@next\@gobble\fi\mtoc@next} +\let\@startsection@mtoc@SAVE\@startsection +\def\@startsection#1{\def\@currentsecname{#1}% + \@startsection@mtoc@SAVE{#1}} +\def\mtoclabel#1{\label{#1}\@bsphack + \protected@write\@auxout{}{\string + \csarg{\string\gdef}{mtoclbl#1}{\the\@minitocCnt} + }% + \@esphack +} +\def\mtocref#1{\@nameuse{mtoclbl#1}} +\newif\if@minitoc \@minitocfalse +\newif\if@MiniTocListings \@MiniTocListingstrue +\def\NoFmtTOCEntry{\@minitocfalse} +\def\FmtTOCEntry{\@minitoctrue} +\def\miniorfulltoc#1#2{\if@minitoc + {{#1{#2}}}\else{#2}\fi} +\newcommand{\insertminitoc}[1][]{% + \def\mtoc@rgi{#1}\ifx\mtoc@rgi\@empty + \edef\mtoc@rgi{MTOC.\the\@minitocCnt}\else + \edef\mtoc@rgi{MTOC.\mtocref{#1}}\fi + \ifnum\TOPLevelNum > \BTMLevelNum + \PackageError{aeb-minitoc}{% + The top level (\mtoc@TOPLevel) must be\MessageBreak + must be higher on the hierarchy then at bottom level} + {Try switching the two}\fi + \begingroup + \edef\mtoc@sec{\mtoc@rgi}\mtocs@toks@={}% + \let\contentsline\cl@LOOKFORSEC + \let\mtocCL\mtoc@CL@mtoc + \@foundTOPLevelfalse + \let\mtoc@numberline\numberline + \def\numberline##1{\makebox[\mtoc@numBoxWidth][l]% + {\sl@@sNumFmt{##1}}\sl@@EntryFmt}% + \makeatletter\InputIfFileExists{\jobname.toc}% + {\PackageInfo{aeb-minitoc}{TOC file read}} + {\PackageInfo{aeb-minitoc}{TOC file not available}}% + \edef\x{\the\mtocs@toks@}\ifx\x\@empty + \global\@MiniTocListingsfalse\else + \global\@MiniTocListingstrue\fi + \the\mtocs@toks@\par\makeatother + \if@MiniTocListings\else + \PackageWarning{aeb-mintoc}{No mini-toc built here}\fi + \endgroup +} +\newcommand{\insertminitocNOT}[1][]{} +\def\numBoxWidth#1{\def\mtoc@numBoxWidth{#1}} +\numBoxWidth{2.5em} +\newtoks\mtoc@toks +\newtoks\mtocs@toks@ +\def\sl@dots#1{\def\sl@@dots{% + \@dottedtocline{\sl@current}{#1}{\mtoc@numBoxWidth}}} +\let\sl@@dots\@gobble +\def\sl@nodots#1{\def\sl@@dots{% + \no@dottedtocline{\sl@current}{#1}{\mtoc@numBoxWidth}}} +\let\sl@@nodots\@gobble +\def\sl@EntryFmt#1{\def\sl@@EntryFmt{#1}} % dps +\let\sl@@EntryFmt\relax % dps +\def\sl@sNumFmt#1{\def\sl@@sNumFmt{#1}} +\let\sl@@sNumFmt\relax +\def\sl@pNumFmt#1{\def\sl@@pNumFmt{#1}} +\let\sl@@pNumFmt\relax +\def\sl@tocrmarg#1{\def\@tocrmarg{#1}} +\def\sl@dotsep#1{\def\@dotsep{#1}} +\def\mtoc@star#1*#2\@nil{\def\@rgii{#2}\ifx\@rgii\@empty + \let\mtoc@@star\mtoc@Zero\else\let\mtoc@@star\mtoc@One\fi} +\long\def\declaretocfmt#1#2{% + \xdef\sl@current{\@nameuse{sl@#1}}% + \global\@namedef{\mtoc@CmdName @l@#1}##1##2{% + \normalfont\normalcolor\let\@E\TOCEntryNum + \let\@L\mtoc@HY@anchor\let\@Pg\mtoc@PgNum + \let\sl@@dots\@empty\let\sl@@sNumFmt\relax + \let\sl@@pNumFmt\relax\let\sl@@EntryFmt\relax + \let\@W\numBoxWidth\let\@R\sl@tocrmarg\let\@D\sl@dots + \let\@B\sl@nodots\let\@F\sl@EntryFmt\let\@N\sl@sNumFmt + \let\@P\sl@pNumFmt + #2\ifx\sl@@dots\@empty\let\sl@next\relax\else + \mtoc@star#1*\@nil % dps + \ifx\mtoc@@star\mtoc@Zero + \def\sl@next{\sl@@dots{##1}{\sl@@pNumFmt{##2}}}\else + \def\sl@next{\sl@@dots{\sl@@EntryFmt##1}{\sl@@pNumFmt{##2}}}\fi + \fi\sl@next}% + \edef\x{\expandafter\noexpand\csname l@#1\endcsname}% + \edef\y{\expandafter\noexpand\csname\mtoc@CmdName @l@#1\endcsname}% + \edef\mtoc@@tmp{\the\mtoc@toks\let\expandafter\noexpand\x= + \expandafter\noexpand\y} + \global\mtoc@toks=\expandafter{\mtoc@@tmp}} +\def\mtoc@getCmdName#1{\edef\mtoc@CmdName{\expandafter + \@gobble\string#1}} +\newenvironment{minitocfmt}[1]{\makeatletter + \gdef\@mtoc@cmd@@{#1}\let\@A\mtoc@addto + \mtoc@getCmdName{#1}\mtoc@toks={\let\@PW\mtoc@PW\let\@DS\sl@dotsep + \let\@R\sl@tocrmarg}% +}{\expandafter\xdef\@mtoc@cmd@@{\the\mtoc@toks}} +\def\mtoc@addto#1{\edef\mtoc@@tmp{\the\mtoc@toks}% + \global\mtoc@toks=\expandafter{\mtoc@@tmp #1}} +\def\mtoc@PW#1{\def\@pnumwidth{#1}} +\def\no@dottedtocline#1#2#3#4#5{% + \ifnum #1>\c@tocdepth \else + \vskip \z@ \@plus.2\p@ + {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip + \parindent #2\relax\@afterindenttrue + \interlinepenalty\@M + \leavevmode + \@tempdima #3\relax + \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip + {#4}\nobreak + \hfill + \nobreak + \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}% + \par}% + \fi} +\endinput +%% +%% End of file `aeb-minitoc.sty'. -- cgit v1.2.3