diff options
author | Karl Berry <karl@freefriends.org> | 2011-05-15 22:18:59 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2011-05-15 22:18:59 +0000 |
commit | 84add25b1941f4a2447c8d13da3b056007dd98b4 (patch) | |
tree | 9c8d4cea2c1cc0b5493f2b1b6c0ba664aefb2a57 /Master | |
parent | 97d9b8c347a2c6a0056e2372681aafa786726fbe (diff) |
new latex package thumbs 1.0a (14may11)
git-svn-id: svn://tug.org/texlive/trunk@22486 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/latex/thumbs/README | 145 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/thumbs/thumbs-example.pdf | bin | 0 -> 152393 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/thumbs/thumbs-example.tex | 339 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/thumbs/thumbs.pdf | bin | 0 -> 426650 bytes | |||
-rw-r--r-- | Master/texmf-dist/source/latex/thumbs/thumbs.drv | 78 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/thumbs/thumbs.dtx | 2579 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/thumbs/thumbs.ins | 125 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/thumbs/thumbs.sty | 948 | ||||
-rwxr-xr-x | Master/tlpkg/bin/tlpkg-ctan-check | 2 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc | 1 | ||||
-rw-r--r-- | Master/tlpkg/tlpsrc/thumbs.tlpsrc | 0 |
11 files changed, 4216 insertions, 1 deletions
diff --git a/Master/texmf-dist/doc/latex/thumbs/README b/Master/texmf-dist/doc/latex/thumbs/README new file mode 100644 index 00000000000..0602f9a74b5 --- /dev/null +++ b/Master/texmf-dist/doc/latex/thumbs/README @@ -0,0 +1,145 @@ +README for thumbs package, 2011/05/14, v1.0a + + +TABLE OF CONTENTS +================= + +1 Introduction +2 Download +3 Installation +4 Additional Packages +5 New Features +6 Package Compatibility +7 Authors/Maintainers +8 Bug Reports +9 Known Problems + + +1 INTRODUCTION +============== + +This package puts running, customizable thumb marks in the +outer margin, moving downward as the chapter number (or +whatever shall be marked by the thumb marks) increases. +Additionally an overview page/table of thumb marks can be +added automatically, which gives the respective names of the +thumbed objects, the page where the object/thumb mark first +appears, and the thumb mark itself at the respective +position. The thumb marks are probably useful for documents, +where a quick and easy way to find e.g. a chapter is needed, +for example in reference guides, anthologies, or quite +large documents. + + +2 DOWNLOAD +========== + +`thumbs' is available on CTAN: + CTAN:macros/latex/contrib/thumbs/ + +Also a ZIP file is provided that contains the files, already +sorted in a TDS tree: + CTAN:install/macros/latex/contrib/thumbs.tds.zip + +`CTAN:' means one of the `Comprehensive TeX Archive Network' +nodes or one of its mirrors. This is explained in + http://www.tex.ac.uk/cgi-bin/texfaq2html?label=archives + +The CTAN stuff will be mirrored automatically from the +ftp server, so + ftp://ftp.tug.org/pub/tex/thumbs/ +corresponds to + CTAN:macros/latex/contrib/thumbs/ + + +3 INSTALLATION +============== + +Installation with ZIP file in TDS format +---------------------------------------- +The ZIP file `thumbs.tds.zip' contains the files sorted +in a TDS tree. Thus you can directly unpack the ZIP file +inside a TDS tree. +(See CTAN:tds.zip for an explanation of TDS.) +Example: + cd /...somewhere.../texmf + unzip /...downloadpath.../thumbs.tds.zip +Do not forget to refresh the file name database of this +TDS tree. +Example: + texhash /...somewhere.../texmf + +Manual installation +------------------- +a) Download the thumbs files from CTAN or the TUG server. + If necessary, unpack them. +b) Generate the package and driver files: + tex thumbs.ins +c) Install the file `*.sty' in your TDS tree: + cp *.sty TDS:tex/latex/thumbs/ + Replace `TDS:' by the prefix of your TDS tree + (texmf directory). +d) Copy the documentation files to + "TDS:doc/latex/thumbs/": + README, thumbs.pdf, thumbs-example.tex, + thumbs-example.pdf. +e) Update the databases if necessary, e.g. for teTeX: + mktexlsr .../texmf + + +4 ADDITIONAL PACKAGES +===================== + +Depending on the driver and option settings, thumbs loads +other packages: kvoptions, atbegshi, xcolor, picture, +alphalph, pagesLTS, rerunfilecheck, ifthen, and warning, +which again load other packages +(see the result of the \listfiles command in the log-file + of the example). + + +5 PACKAGE COMPATIBILITY +======================= + +thumbs should be loaded AFTER the required packages, +but loding it before those packages schould be possible, +too. + + +6 AUTHOR/MAINTAINER +===================== + +* Hans-Martin Münch + + +7 BUG REPORTS +============== + +A bug report should contain: +* Comprehensive problem description. This includes error or + warning messages. + * \errorcontextlines=\maxdimen can be added in the + TeX code to get more informations in TeX error messages. +* Minimal test file that shows the problem, but does not + contain any unnecessary packages and code. +* Used drivers/programs. +* Version information about used packages and programs. + * If you are using LaTeX, then add "\listfiles". Then + a list of version informations is printed at the end + of the LaTeX run. +* Please no other files than the minimal test file. + The other files .log, .dvi, .ps, .pdf are seldom + necessary, so send them only on request. +* Please .zip or .tar.gz your file(s) before sending them! + +Bug address +----------- +Bug reports can be send to the maintainer: + Hans-Martin Münch + <Martin [dot] Muench [at] Uni-Bonn [dot] de> + + +8 KNOWN PROBLEMS +================= + +* as yet: none...
\ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/thumbs/thumbs-example.pdf b/Master/texmf-dist/doc/latex/thumbs/thumbs-example.pdf Binary files differnew file mode 100644 index 00000000000..87f2719777e --- /dev/null +++ b/Master/texmf-dist/doc/latex/thumbs/thumbs-example.pdf diff --git a/Master/texmf-dist/doc/latex/thumbs/thumbs-example.tex b/Master/texmf-dist/doc/latex/thumbs/thumbs-example.tex new file mode 100644 index 00000000000..b462f664b55 --- /dev/null +++ b/Master/texmf-dist/doc/latex/thumbs/thumbs-example.tex @@ -0,0 +1,339 @@ +%% +%% This is file `thumbs-example.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% thumbs.dtx (with options: `example') +%% +%% This is a generated file. +%% +%% Project: thumbs +%% Version: 2011/05/14 v1.0a +%% +%% Copyright (C) 2010, 2011 by +%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> +%% +%% The usual disclaimer applys: +%% If it doesn't work right that's your problem. +%% (Nevertheless, send an e-mail to the maintainer +%% when you find an error in this package.) +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. This version of this license is in +%% http://www.latex-project.org/lppl/lppl-1-3c.txt +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is H.-Martin Muench. +%% +%% This work consists of the main source file thumbs.dtx +%% and the derived files +%% thumbs.sty, thumbs.pdf, thumbs.ins, thumbs.drv, +%% thumbs-example.tex. +%% +\documentclass[twoside,british]{article}[2007/10/19]% v1.4h +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% When compiling with SWP 5.50. Build 2960, % +%% these additional packages are needed: % +%% \usepackage[T1]{fontenc} % +%% \usepackage{amsfonts} % +%% \usepackage[math]{cellspace} % +%% \usepackage{xcolor} % +%% \pagecolor{white} % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{lipsum}[2011/04/14]% v1.2 +\usepackage{eurosym}[1998/08/06]% v1.1 +\usepackage[extension=pdf,% + pdfpagelayout=TwoPageRight,pdfpagemode={UseNone},% + plainpages=false,% + pdfpagelabels=true,% + hyperindex=false,% + pdflang={en},% + pdftitle={thumbs package example},% + pdfauthor={Hans-Martin Muench},% + pdfsubject={Example for the thumbs package},% + pdfkeywords={LaTeX, thumbs, thumb marks, Hans-Martin Muench},% + pdfview=Fit,pdfstartview=Fit,% + linktoc=all]{hyperref}[2011/04/17]% v6.82g +\usepackage[pagecolor=white,thumblink=rule,linefill=dots,height={auto},minheight={47pt},% + width={auto},distance={2mm},topthumbmargin={auto},bottomthumbmargin={auto},% + verbose=true]{thumbs}[2011/05/14]% 1.0a +\gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}% +\listfiles +\begin{document} +\pagenumbering{arabic} +\section*{Example for thumbs} +\addcontentsline{toc}{section}{Example for thumbs} +\markboth{Example for thumbs}{Example for thumbs} + +This example demonstrates the most common uses of package +\textsf{thumbs}, v1.0a as of 2011/05/14 (HMM). +The used options were \texttt{pagecolor=white}, +\texttt{thumblink=rule}, \texttt{linefill=dots}, +\texttt{height=auto}, \texttt{minheight=\{47pt\}}, +width={auto}, \texttt{distance=\{2mm\}}, \texttt{topthumbmargin=\{auto\}}, +\texttt{bottomthumbmargin=\{auto\}}, and \texttt{verbose=true}. +These are the default options, except \texttt{verbose=true}. +For more details please see the documentation!\newline + +\textbf{Hyperlinks or not:} If the \textsf{hyperref} package is loaded, +the references in the overview page for the thumb marks are also hyperlinked +(except when option \texttt{thumblink=none} is used).\newline + +\bigskip + +{\color{green} Save per page about $200\unit{ml}$ water, $2\unit{g}$ CO$_{2}$ +and $2\unit{g}$ wood:\newline +Therefore please print only if this is really necessary.} + +\newpage + +\addtitlethumb{Frontmatter}{0}{white}{gray}{pagesLTS.0} + +At the first page no thumb mark was used, but we want to begin with thumb marks +at the first page, therefore a +\begin{verbatim} +\addtitlethumb{Frontmatter}{0}{white}{gray}{pagesLTS.0} +\end{verbatim} +was used at the beginning of this page. + +\newpage + +\tableofcontents + +\newpage + +To include an overview page for the thumb marks, +\begin{verbatim} +\addthumbsoverviewtocontents{section}{Thumb marks overview}% +\thumbsoverview{Table of Thumbs} +\end{verbatim} +is used, where \textbackslash addthumbsoverviewtocontents adds the thumb +marks overview page to the table of contents. + +\addthumbsoverviewtocontents{section}{Thumb marks overview}% +\thumbsoverview{Table of Thumbs} + +That were the overview pages for the thumb marks. + +\newpage + +\section{The first section} +\addthumb{First section}{\space\Huge{\textbf{$1^ \textrm{st}$}}}{yellow}{green} + +\begin{verbatim} +\addthumb{First section}{\space\Huge{\textbf{$1^ \textrm{st}$}}}{yellow}{green} +\end{verbatim} + +A thumb mark is added for this section. The parameters are: title for the thumb mark, +the text to be displayed in the thumb mark (choose your own format), +the colour of the text in the thumb mark, +and the background colour of the thumb mark (parameters in this order).\newline + +Now for some pages of \textquotedblleft content\textquotedblright\ldots + +\newpage +\lipsum[1] +\newpage +\lipsum[1] +\newpage +\lipsum[1] +\newpage + +\section{The second section} +\addthumb{Second section}{\Huge{\textbf{\arabic{section}}}}{green}{yellow} + +For this section, the text to be displayed in the thumb mark was set to +\begin{verbatim} +\Huge{\textbf{\arabic{section}}} +\end{verbatim} +i.\,e. the number of the section will be displayed (huge \& bold).\newline + +Let us change the thumb mark on a page with an even number: + +\newpage + +\section{The third section} +\addthumb{Third section}{\Huge{\textbf{\arabic{section}}}}{blue}{red} + +No problem! + +And you do not need to have a section to add a thumb: + +\newpage + +\addthumb{Still third section}{\Huge{\textbf{\arabic{section}b}}}{red}{blue} + +This is still the third section, but there is a new thumb mark. + +On the other hand, you can even get rid of the the thumb marks +for some page(s): + +\newpage + +\stopthumb + +The command +\begin{verbatim} +\stopthumb +\end{verbatim} +was used here. Until another addthumb (with parameters) or +\begin{verbatim} +\continuethumb +\end{verbatim} +is used, there will be no more thumb marks. + +\newpage + +Still no thumb marks. + +\newpage + +Still no thumb marks. + +\newpage + +Still no thumb marks. + +\newpage + +\continuethumb + +Thumb mark continued (unchanged). + +\newpage + +Thumb mark continued (unchanged). + +\newpage + +Time for another thumb, + +\addthumb{Another heading}{Small text}{white}{black} + +and another. + +\addthumb{Huge Text}{\Huge{Huge Text}}{yellow}{green} + +\addthumb{bold text }{\textbf{Bf Text}}{pink}{blue} + +\addthumb{Huge Bold Text}{\Huge{\textbf{HBT}}}{black}{yellow} + +When there is more than one thumb mark at one page, this is no problem. +When more than six (6) thumb marks are at one (1) page, +only the first six will be shown, +while all will appear in the thumbs overview page. +On the following pages the correct, last thumb mark will appear. +More than one thumb mark at one page probably does not make much sense. +This package was not created to create decorations at the page margin, +but if you really need more than six thumb marks at one page, +feel free to send an e-mail to the maintainer. +If you have got an idea how to dynamically create thumb +\textquotedblleft registers\textquotedblright\ (thereby overcomming +this limitation), please send an e-mail to the maintainer, too. + +\newpage + +Some text + +\newpage + +Some text + +\newpage + +Some text + +\newpage + +\section{xcolor} +\addthumb{xcolor}{\Huge{\textbf{xcolor}}}{magenta}{cyan} + +It is probably a good idea to have a look at the \textsf{xcolor} package +and use other colours than used in this example. + +\newpage + +\addthumb{A mark}{\Huge{\textbf{A}}}{lime}{darkgray} + +I just need to add further thumb marks to get them reaching the bottom of the page. + +Generally the vertical size of the thumb marks is set to the value given in the +height option. If it is \texttt{auto}, the size of the thumb marks is decreased, +so that they fit all on one page. But when they get smaller than \texttt{minheight}, +instead of decreasing their size further, a~new thumbs colum is started +(which will happen here). + +\newpage + +\addthumb{B mark}{\Huge{\textbf{B}}}{brown}{pink} + +There! A new thumb colum was started automatically! + +\newpage + +\addthumb{C mark}{\Huge{\textbf{C}}}{brown}{pink} + +You can, of course, keep the colour for more than one thumb mark. + +\newpage + +\addthumb{$1/1.\,955\,83$\, EUR}{\Huge{\textbf{D}}}{orange}{violet} + +I am just adding further thumb marks. + +If you are curiouse why the thumb mark between +\textquotedblleft C mark\textquotedblright\ and \textquotedblleft E mark\textquotedblright\ has +not been named \textquotedblleft D mark\textquotedblright\ but +\textquotedblleft $1/1.\,955\,83$\, EUR\textquotedblright : + +$1\unit{DM}=1\unit{D\ Mark}=1\unit{Deutsche\ Mark}$\newline +$=\frac{1}{1.\,955\,83}\,$\euro $\,=1/1.\,955\,83\unit{Euro}=1/1.\,955\,83\unit{EUR}$. + +\newpage + +\addthumb{E mark}{\Huge{\textbf{E}}}{lightgray}{black} + +I am just adding further thumb marks. + +\newpage + +\addthumb{F mark}{\Huge{\textbf{F}}}{magenta}{black} + +Some text. + +\newpage +\thumbnewcolumn +\addthumb{New thumb marks column}{\Huge{\textit{NC}}}{magenta}{black} + +There! A new thumb colum was started manually! + +\newpage + +Some text. + +\newpage + +\addthumb{G mark}{\Huge{\textbf{G}}}{orange}{violet} + +I just added another thumb mark. + +\newpage + +Well, I think that are enough thumb marks. + +Good bye! + +\end{document} + +\endinput +%% +%% End of file `thumbs-example.tex'. diff --git a/Master/texmf-dist/doc/latex/thumbs/thumbs.pdf b/Master/texmf-dist/doc/latex/thumbs/thumbs.pdf Binary files differnew file mode 100644 index 00000000000..ae3ee003f78 --- /dev/null +++ b/Master/texmf-dist/doc/latex/thumbs/thumbs.pdf diff --git a/Master/texmf-dist/source/latex/thumbs/thumbs.drv b/Master/texmf-dist/source/latex/thumbs/thumbs.drv new file mode 100644 index 00000000000..e0669fd4026 --- /dev/null +++ b/Master/texmf-dist/source/latex/thumbs/thumbs.drv @@ -0,0 +1,78 @@ +%% +%% This is file `thumbs.drv', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% thumbs.dtx (with options: `driver') +%% +%% This is a generated file. +%% +%% Project: thumbs +%% Version: 2011/05/14 v1.0a +%% +%% Copyright (C) 2010, 2011 by +%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> +%% +%% The usual disclaimer applys: +%% If it doesn't work right that's your problem. +%% (Nevertheless, send an e-mail to the maintainer +%% when you find an error in this package.) +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. This version of this license is in +%% http://www.latex-project.org/lppl/lppl-1-3c.txt +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is H.-Martin Muench. +%% +%% This work consists of the main source file thumbs.dtx +%% and the derived files +%% thumbs.sty, thumbs.pdf, thumbs.ins, thumbs.drv, +%% thumbs-example.tex. +%% +\NeedsTeXFormat{LaTeX2e}[2009/09/24] +\ProvidesFile{thumbs.drv}% + [2011/05/14 v1.0a Thumb marks and overwiew page(s) (HMM)]% +\documentclass[landscape]{ltxdoc}[2007/11/11]% v2.0u +\usepackage{geometry}[2010/09/12]% v5.6 +\usepackage{holtxdoc}[2011/02/04]% v0.21 +%% thumbs may work with earlier versions of LaTeX2e and those +%% class and packages, but this was not tested. +%% Please consider updating your LaTeX, class, and packages +%% to the most recent version (if they are not already the most +%% recent version). +\hypersetup{% + pdfsubject={Thumb marks and overwiew page(s) (HMM)},% + pdfkeywords={LaTeX, thumb, thumbs, thumb index, thumbs index, index, Hans-Martin Muench},% + pdfencoding=auto,% + pdflang={en},% + breaklinks=true,% + linktoc=all,% + pdfstartview=FitH,% + pdfpagelayout=OneColumn,% + bookmarksnumbered=true,% + bookmarksopen=true,% + bookmarksopenlevel=3,% + pdfmenubar=true,% + pdftoolbar=true,% + pdfwindowui=true,% + pdfnewwindow=true% +} +\CodelineIndex +\hyphenation{printing docu-ment docu-menta-tion} +\gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}% +\begin{document} + \DocInput{thumbs.dtx}% +\end{document} + +\endinput +%% +%% End of file `thumbs.drv'. diff --git a/Master/texmf-dist/source/latex/thumbs/thumbs.dtx b/Master/texmf-dist/source/latex/thumbs/thumbs.dtx new file mode 100644 index 00000000000..d30c931ca4d --- /dev/null +++ b/Master/texmf-dist/source/latex/thumbs/thumbs.dtx @@ -0,0 +1,2579 @@ +% \iffalse meta-comment +% +% File: thumbs.dtx +% Version: 2011/05/14 v1.0a +% +% Copyright (C) 2010, 2011 by +% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3c of this license or (at your option) any later +% version. This version of this license is in +% http://www.latex-project.org/lppl/lppl-1-3c.txt +% and the latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is H.-Martin Muench. +% +% This work consists of the main source file thumbs.dtx +% and the derived files +% thumbs.sty, thumbs.ins, thumbs.drv, +% thumbs-example.tex, thumbs.pdf. +% +% Distribution: +% CTAN:macros/latex/contrib/thumbs/thumbs.dtx +% CTAN:macros/latex/contrib/thumbs/thumbs.pdf +% CTAN:install/macros/latex/contrib/thumbs.tds.zip +% +% Unpacking: +% (a) If thumbs.ins is present: +% tex thumbs.ins +% (b) Without thumbs.ins: +% tex thumbs.dtx +% (c) If you insist on using LaTeX +% latex \let\install=y\input{thumbs.dtx} +% (quote the arguments according to the demands of your shell) +% +% Documentation: +% (a) If thumbs.drv is present: +% (pdf)latex thumbs.drv +% makeindex -s gind.ist thumbs.idx +% (pdf)latex thumbs.drv +% makeindex -s gind.ist thumbs.idx +% (pdf)latex thumbs.drv +% (b) Without thumbs.drv: +% (pdf)latex thumbs.dtx +% makeindex -s gind.ist thumbs.idx +% (pdf)latex thumbs.dtx +% makeindex -s gind.ist thumbs.idx +% (pdf)latex thumbs.dtx +% +% The class ltxdoc loads the configuration file ltxdoc.cfg +% if available. Here you can specify further options, e.g. +% use DIN A4 as paper format: +% \PassOptionsToClass{a4paper}{article} +% +% Installation: +% TDS:tex/latex/thumbs/thumbs.sty +% TDS:doc/latex/thumbs/thumbs.pdf +% TDS:doc/latex/thumbs/thumbs-example.tex +% TDS:source/latex/thumbs/thumbs.dtx +% +%<*ignore> +\begingroup + \catcode123=1 % + \catcode125=2 % + \def\x{LaTeX2e}% +\expandafter\endgroup +\ifcase 0\ifx\install y1\fi\expandafter + \ifx\csname processbatchFile\endcsname\relax\else1\fi + \ifx\fmtname\x\else 1\fi\relax +\else\csname fi\endcsname +%</ignore> +%<*install> +\input docstrip.tex +\Msg{*************************************************************************} +\Msg{* Installation} +\Msg{* Package: thumbs 2011/05/14 v1.0a Thumb marks and overwiew page(s) (HMM)} +\Msg{*************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: thumbs +Version: 2011/05/14 v1.0a + +Copyright (C) 2010, 2011 by + H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> + +The usual disclaimer applys: +If it doesn't work right that's your problem. +(Nevertheless, send an e-mail to the maintainer + when you find an error in this package.) + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3c of this license or (at your option) any later +version. This version of this license is in + http://www.latex-project.org/lppl/lppl-1-3c.txt +and the latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3c or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +The Current Maintainer of this work is H.-Martin Muench. + +This work consists of the main source file thumbs.dtx +and the derived files + thumbs.sty, thumbs.pdf, thumbs.ins, thumbs.drv, + thumbs-example.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{thumbs.ins}{\from{thumbs.dtx}{install}}% + \file{thumbs.drv}{\from{thumbs.dtx}{driver}}% + \usedir{tex/latex/thumbs}% + \file{thumbs.sty}{\from{thumbs.dtx}{package}}% + \usedir{doc/latex/thumbs}% + \file{thumbs-example.tex}{\from{thumbs.dtx}{example}}% +} + +\catcode32=13\relax% active space +\let =\space% +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* thumbs.sty*} +\Msg{*} +\Msg{* To produce the documentation run the file `thumbs.drv'} +\Msg{* through (pdf)LaTeX, e.g.} +\Msg{* pdflatex thumbs.drv} +\Msg{* makeindex -s gind.ist thumbs.idx} +\Msg{* pdflatex thumbs.drv} +\Msg{* makeindex -s gind.ist thumbs.idx} +\Msg{* pdflatex thumbs.drv} +\Msg{*} +\Msg{* At least three runs are necessary e.g. to get the} +\Msg{* references right!} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile +%</install> +%<*ignore> +\fi +%</ignore> +% +% \section{The documentation driver file} +% +% The next bit of code contains the documentation driver file for +% \TeX{}, i.\,e., the file that will produce the documentation you +% are currently reading. It will be extracted from this file by the +% \texttt{docstrip} programme. That is, run \LaTeX\ on \texttt{docstrip} +% and specify the \texttt{driver} option when \texttt{docstrip} +% asks for options. +% +% \begin{macrocode} +%<*driver> +\NeedsTeXFormat{LaTeX2e}[2009/09/24] +\ProvidesFile{thumbs.drv}% + [2011/05/14 v1.0a Thumb marks and overwiew page(s) (HMM)]% +\documentclass[landscape]{ltxdoc}[2007/11/11]% v2.0u +\usepackage{geometry}[2010/09/12]% v5.6 +\usepackage{holtxdoc}[2011/02/04]% v0.21 +%% thumbs may work with earlier versions of LaTeX2e and those +%% class and packages, but this was not tested. +%% Please consider updating your LaTeX, class, and packages +%% to the most recent version (if they are not already the most +%% recent version). +\hypersetup{% + pdfsubject={Thumb marks and overwiew page(s) (HMM)},% + pdfkeywords={LaTeX, thumb, thumbs, thumb index, thumbs index, index, Hans-Martin Muench},% + pdfencoding=auto,% + pdflang={en},% + breaklinks=true,% + linktoc=all,% + pdfstartview=FitH,% + pdfpagelayout=OneColumn,% + bookmarksnumbered=true,% + bookmarksopen=true,% + bookmarksopenlevel=3,% + pdfmenubar=true,% + pdftoolbar=true,% + pdfwindowui=true,% + pdfnewwindow=true% +} +\CodelineIndex +\hyphenation{printing docu-ment docu-menta-tion} +\gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}% +\begin{document} + \DocInput{thumbs.dtx}% +\end{document} +%</driver> +% \end{macrocode} +% +% \fi +% +% \CheckSum{1663} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \GetFileInfo{thumbs.drv} +% +% \begingroup +% \def\x{\#,\$,\^,\_,\~,\ ,\&,\{,\},\%}% +% \makeatletter +% \@onelevel@sanitize\x +% \expandafter\endgroup +% \expandafter\DoNotIndex\expandafter{\x} +% \expandafter\DoNotIndex\expandafter{\string\ } +% \begingroup +% \makeatletter +% \lccode`9=32\relax +% \lowercase{%^^A +% \edef\x{\noexpand\DoNotIndex{\@backslashchar9}}%^^A +% }%^^A +% \expandafter\endgroup\x +% +% \DoNotIndex{\\} +% \DoNotIndex{\documentclass,\usepackage,\ProvidesPackage,\begin,\end} +% \DoNotIndex{\NeedsTeXFormat,\DoNotIndex,\verb} +% \DoNotIndex{\def,\edef,\gdef,\global} +% \DoNotIndex{\ifx,\kvoptions,\listfiles,\mathord,\mathrm,\ProcessKeyvalOptions} +% \DoNotIndex{\SetupKeyvalOptions} +% \DoNotIndex{\bigskip,\space,\thinspace,\Huge,\Large,\large,\linebreak,\MessageBreak} +% \DoNotIndex{\ldots,\indent,\noindent,\newline,\pagebreak,\pagenumbering} +% \DoNotIndex{\textbf,\textit,\textsf,\texttt,\textquotedblleft,\textquotedblright} +% \DoNotIndex{\plainTeX,\TeX,\LaTeX,\pdfLaTeX} +% \DoNotIndex{\chapter,\section} +% \DoNotIndex{\arabic,\c@th@mbs@tmpA,\endcsname,\ifnum,\newpage,\setcounter,\advance} +% \DoNotIndex{\setlength,\the,\value,\textbackslash,\,} +% +% \title{The \xpackage{thumbs} package} +% \date{2011/05/14 v1.0a} +% \author{H.-Martin M\"{u}nch\\\xemail{Martin.Muench at Uni-Bonn.de}} +% +% \maketitle +% +% \begin{abstract} +% This \LaTeX\ package allows to create one or more customizable thumb index(es), +% providing a quick and easy reference methode for large documents. +% \end{abstract} +% +% \bigskip +% +% \noindent Disclaimer for web links: The author is not responsible for any contents +% referred to in this work unless he has full knowledge of illegal contents. +% If any damage occurs by the use of information presented there, only the +% author of the respective pages might be liable, not the one who has referred +% to these pages. +% +% \bigskip +% +% \noindent {\color{green} Save per page about $200\unit{ml}$ water, +% $2\unit{g}$ CO$_{2}$ and $2\unit{g}$ wood:\\ +% Therefore please print only if this is really necessary.} +% +% \newpage +% +% \tableofcontents +% +% \newpage +% +% \section{Introduction} +% \indent This package puts running, customizable thumb marks in the outer +% margin, moving downward as the chapter number (or whatever shall be marked +% by the thumb marks) increases. Additionally an overview page/table of thumb +% marks can be added automatically, which gives the respective names of the +% thumbed objects, the page where the object/thumb mark first appears, +% and the thumb mark itself at the respective position. The thumb marks are +% probably useful for documents, where a quick and easy way to find +% e.\,g.~a~chapter is needed, for example in reference guides, anthologies, +% or quite large documents.\\ +% There \emph{are} already some packages for creating thumbs, but because +% none of them did what I wanted, I wrote this new package.\footnote{Probably% +% this holds true for the motivation of the authors of quite a lot of packages.} +% +% \section{Usage} +% +% \subsection{Loading} +% \indent Load the package placing +% \begin{quote} +% |\usepackage[<|\textit{options}|>]{thumbs}| +% \end{quote} +% \noindent in the preamble of your \LaTeXe\ source file. +% +% \subsection{Options} +% \DescribeMacro{options} +% \indent The \xpackage{thumbs} package takes the following options: +% +% \subsubsection{pagecolor\label{sss:pagecolor}} +% \DescribeMacro{pagecolor} +% \indent Option |pagecolor| wants to know the background colour of the pages +% for use with the \texttt{xcolor} package. The default value is |white|. +% +% \subsubsection{linefill\label{sss:linefill}} +% \DescribeMacro{linefill} +% \indent Option |linefill| wants to know how the line between object +% (e.\,g.~chapter name) and page number shall be filled at the overview +% page. Empty option will result in a blank line, |line| will fill the distance +% with a line, |dots| will fill the distance with dots. +% +% \subsubsection{minheight\label{sss:minheight}} +% \DescribeMacro{minheight} +% \indent Option |minheight| wants to know the minimal vertical extension +% of each thumb mark. This is only useful in combination with option |height=auto| +% (see below). When the height is automatically calculated and smaller than +% the |minheight| value, the height is set equal to the given |minheight| value +% and a new column/page of thumb marks is used. The default value is +% $47\unit{pt}$\ $(\approx 16.5\unit{mm} \approx 0.65\unit{in})$. +% +% \subsubsection{height\label{sss:height}} +% \DescribeMacro{height} +% \indent Option |height| wants to know the vertical extension of each thumb mark. +% The default value \textquotedblleft |auto|\textquotedblright\ calculates +% an appropriate value automatically decreasing with increasing number of thumb +% marks (but fixed for each document). When the height is smaller than |minheight|, +% this package deems this as too small and instead uses a new column/page of thumb +% marks. If smaller thumb marks are really wanted, choose a smaller |minheight| +% (e.\,g.~$0\unit{pt}$). +% +% \subsubsection{width\label{sss:width}} +% \DescribeMacro{width} +% \indent Option |width| wants to know the horizontal extension of each thumb mark. +% The default option-value \textquotedblleft |auto|\textquotedblright\ calculates +% a width-value automatically: (|\paperwidth| minus |\textwidth|), which is the +% total width of inner and outer margin, divided by~$4$. Instead of this, any +% positive width given by the user is accepted. (Try |width={\paperwidth}| +% in the example!) +% +% \subsubsection{distance\label{sss:distance}} +% \DescribeMacro{distance} +% \indent Option |distance| wants to know the vertical spacing between +% two thumb marks. The default value is $2\unit{mm}$. +% +% \subsubsection{topthumbmargin\label{sss:topthumbmargin}} +% \DescribeMacro{topthumbmargin} +% \indent Option |topthumbmargin| wants to know the vertical spacing between +% the upper page (paper) border and top thumb mark. The default (|auto|) +% is 1 inch plus |\voffset| plus |\topmargin|. Dimensions (e.\,g. $1\unit{cm}$) +% are also accepted. +% +% \subsubsection{bottomthumbmargin\label{sss:bottomthumbmargin}} +% \DescribeMacro{bottomthumbmargin} +% \indent Option |bottomthumbmargin| wants to know the vertical spacing between +% the lower page (paper) border and last thumb mark. The default (|auto|) for the +% position of the last thumb is\\ +% |1in+\voffset+\topmargin-\thumbs@distance+\th@mbheighty+\headheight+|% +% |\headsep+\textheight+\footskip|\newline% +% |-\thumbs@distance-\th@mbheighty|.\\ +% Dimensions (e.\,g. $1\unit{cm}$) are also accepted. +% +% \subsubsection{thumblink\label{sss:thumblink}} +% \DescribeMacro{thumblink} +% \indent Option |thumblink| determines, what is hyperlinked at the thumb marks +% overview page (when the \xpackage{hyperref} package is used): +% +% \begin{description} +% \item[- |none|] creates \emph{none} hyperlinks +% +% \item[- |title|] hyperlinks the \emph{titles} of the thumb marks +% +% \item[- |page|] hyperlinks the \emph{page} numbers of the thumb marks +% +% \item[- |titleandpage|] hyperlinks the \emph{title and page} numbers of the thumb marks +% +% \item[- |line|] hyperlinks the whole \emph{line}, i.\,e. title, dots (or line or whatsoever)% +% and page numbers of the thumb marks +% +% \item[- |rule|] hyperlinks the whole \emph{rule}. +% \end{description} +% +% \pagebreak +% +% \subsubsection{verbose\label{sss:verbose}} +% \DescribeMacro{verbose} +% \indent Option |verbose=false| (the default) suppresses some messages, +% which otherwise are presented at the screen and written into the \xfile{log}~file. +% +% \subsection{Commands to be used in the document} +% \DescribeMacro{\addthumb} +% To add a thumb mark, use the |\addthumb| command, which has these four parameters: +% \begin{enumerate} +% \item a title for the thumb mark (for the thumb marks overview page, +% e.\,g. the chapter title), +% +% \item the text to be displayed in the thumb mark (for example the chapter +% number: |\thechapter|), +% +% \item the colour of the text in the thumb mark, +% +% \item and the background colour of the thumb mark +% \end{enumerate} +% (parameters in this order) at the page where you want this thumb mark placed +% (for the first time).\\ +% +% \DescribeMacro{\addtitlethumb} +% When a thumb mark shall not or cannot be placed on a page, e.\,g.~at the title page or +% when using |\includepdf| from \xpackage{pdfpages} package, but the reference in the thumb +% marks overview nevertheless shall name that page number and hyperlink to that page, +% |\addtitlethumb| can be used at the following page. It has five arguments. The arguments +% one to four are identical to the ones of |\addthumb| (see above), +% and the fifth argument consists of the label of the page, where the hyperlink +% at the thumb marks overview page shall link to. The \xpackage{thumbs} package does +% \emph{not} create that label! But for the first page the label +% \texttt{pagesLTS.0} can be use, which is already placed there by the used +% \xpackage{pagesLTS} package.\\ +% +% \DescribeMacro{\stopthumb} +% \DescribeMacro{\continuethumb} +% When a page (or pages) shall have no thumb marks, use the |\stopthumb| command +% (without parameters). Placing another thumb mark with |\addthumb| or |\addtitlethumb| +% or using the command |\continuethumb| continues the thumb marks.\\ +% +% \DescribeMacro{\thumbsoverview} +% The command |\thumbsoverview| is used to place the overview page(s) for the thumb marks. +% Its single parameter is used to mark this page/these pages (e.\,g. in the page header). +% If these marks are not whished, |\thumbsoverview{}| will generate empty marks in the +% page header(s). |\thumbsoverview| could be used more than once (for example at the +% beginning and at the end of the document), but the label |TableOfThumbs| would than +% be multilpy defined (no great harm done, but hyperlinks will only link to one of the +% labels).\\ +% +% \DescribeMacro{\thumbnewcolumn} +% With the command |\thumbnewcolumn| a new column can be started, even if the current one +% was not filled. This could be useful e.\,g. for a dictionary, which uses one column for +% translations from language A to language B, and the second column for translations +% from language B to language A. But in that case one probably should increase the +% size of the thumb marks, so that $26$~thumb marks (in~case of the latin alphabet) +% fill one thumb column. Do not use |\thumbnewcolumn| on a page where |\addthumb| was +% already used, but use |\addthumb| immediately after |\thumbnewcolumn|.\\ +% +% \DescribeMacro{\addthumbsoverviewtocontents} +% |\addthumbsoverviewtocontents| with two arguments is a replacement for +% |\addcontentsline{toc}{<level>}{<text>}|, where the first argument of +% |\addthumbsoverviewtocontents| is for |<level>| and the second for |<text>|. +% If an entry of the thumbs mark overview shall be placed in the table of contents, +% |\addthumbsoverviewtocontents| with its arguments should be used immediately before +% |\thumbsoverview|. +% +% \pagebreak +% +% \section{Alternatives\label{sec:Alternatives}} +% +% \begin{description} +% \item[-] \xpackage{chapterthumb}, 2005/03/10, v0.1, by \textsc{Markus Kohm}, available at\\ +% \url{http://mirror.ctan.org/info/examples/KOMA-Script-3/Anhang-B/source/chapterthumb.sty};\\ +% unfortunately without documentation, which is probably available in the book:\\ +% Kohm, M., \& Morawski, J.-U. (2008): KOMA-Script. Eine Sammlung von Klassen und Paketen f\"{u}r \LaTeX2e, +% 3.,~\"{u}berarbeitete und erweiterte Auflage f\"{u}r KOMA-Script~3, +% Lehmanns Media, Berlin, Edition dante, ISBN-13:~978-3-86541-291-1, +% \url{http://www.lob.de/isbn/3865412912}; in German. +% +% \item[-] \xpackage{eso-pic}, 2010/10/06, v2.0c by \textsc{Rolf Niepraschk}, available at +% \url{http://www.ctan.org/pkg/eso-pic}, was suggested as alternative. If I understood its code right, +% |\AtBeginShipout{\AtBeginShipoutUpperLeft{\put(...| is used there, too. Thus I do not see +% its advantage. Additionally, while compiling the \xpackage{eso-pic} test documents with +% \TeX Live2010 worked, compiling them with \textsl{Scientific WorkPlace}{}\ 5.50 Build 2960\ % +% (\copyright~MacKichan Software, Inc.) led to significant deviations of the placements +% (also changing from one page to the other). +% +% \item[-] \xpackage{fancytabs}, 2011/04/16 v1.1, by \textsc{Rapha\"{e}l Pinson}, available at +% \url{http://www.ctan.org/pkg/fancytabs}, but requires TikZ from the +% \href{http://www.ctan.org/pkg/pgf}{pgf} bundle. +% +% \item[-] \xpackage{thumb}, 2001, without file version, by \textsc{Ingo Kl\"{o}ckel}, available at\\ +% \url{ftp://ftp.dante.de/pub/tex/info/examples/ltt/thumb.sty}, +% unfortunately without documentation, which is probably available in the book:\\ +% Kl\"{o}ckel, I. (2001): \LaTeX2e.\ Tips und Tricks, Dpunkt.Verlag GmbH, +% \href{http://amazon.de/o/ASIN/3932588371}{ISBN-13:~978-3-93258-837-2}; in German. +% +% \item[-] \xpackage{thumb} (a completely different one), 1997/12/24, v1.0, +% by \textsc{Christian Holm}, available at\\ +% \url{http://www.ctan.org/pkg/thumb}. +% +% \item[-] \xpackage{thumbindex}, 2009/12/13, without file version, by \textsc{Hisashi Morita}, +% available at\\ +% \url{http://hisashim.org/2009/12/13/thumbindex.html}. +% +% \item[-] \xpackage{thumb-index}, from the \xpackage{fancyhdr} package, 2005/03/22 v3.2, +% by~\textsc{Piet van Oostrum}, available at\\ +% \url{http://www.ctan.org/pkg/fancyhdr}. +% +% \item[-] \xpackage{thumbpdf}, 2010/07/07, v3.11, by \textsc{Heiko Oberdiek}, is for creating +% thumbnails in a \xfile{pdf} document, not thumb marks (and therefore \textit{no} alternative); +% available at \url{http://www.ctan.org/pkg/thumbpdf}. +% +% \item[-] \xpackage{thumby}, 2010/01/14, v0.1, by \textsc{Sergey Goldgaber}, +% \textquotedblleft is designed to work with the \href{http://www.ctan.org/pkg/memoir}{memoir} +% class, and also requires \href{http://www.ctan.org/pkg/perltex}{Perl\TeX} and +% \href{http://www.ctan.org/pkg/pgf}{tikz}\textquotedblright\ % +% (\url{http://www.ctan.org/pkg/thumby}), available at \url{http://www.ctan.org/pkg/thumby}. +% \end{description} +% +% \bigskip +% +% \noindent (You programmed or found another alternative, +% which is available at \CTAN{}?\\ +% OK, send an e-mail to me with the name, location at \CTAN{}, +% and a short notice, and I will probably include it in +% the list above.) +% +% \newpage +% +% \section{Example} +% +% \begin{macrocode} +%<*example> +\documentclass[twoside,british]{article}[2007/10/19]% v1.4h +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% When compiling with SWP 5.50. Build 2960, % +%% these additional packages are needed: % +%% \usepackage[T1]{fontenc} % +%% \usepackage{amsfonts} % +%% \usepackage[math]{cellspace} % +%% \usepackage{xcolor} % +%% \pagecolor{white} % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{lipsum}[2011/04/14]% v1.2 +\usepackage{eurosym}[1998/08/06]% v1.1 +\usepackage[extension=pdf,% + pdfpagelayout=TwoPageRight,pdfpagemode={UseNone},% + plainpages=false,% + pdfpagelabels=true,% + hyperindex=false,% + pdflang={en},% + pdftitle={thumbs package example},% + pdfauthor={Hans-Martin Muench},% + pdfsubject={Example for the thumbs package},% + pdfkeywords={LaTeX, thumbs, thumb marks, Hans-Martin Muench},% + pdfview=Fit,pdfstartview=Fit,% + linktoc=all]{hyperref}[2011/04/17]% v6.82g +\usepackage[pagecolor=white,thumblink=rule,linefill=dots,height={auto},minheight={47pt},% + width={auto},distance={2mm},topthumbmargin={auto},bottomthumbmargin={auto},% + verbose=true]{thumbs}[2011/05/14]% 1.0a +\gdef\unit#1{\mathord{\thinspace\mathrm{#1}}}% +\listfiles +\begin{document} +\pagenumbering{arabic} +\section*{Example for thumbs} +\addcontentsline{toc}{section}{Example for thumbs} +\markboth{Example for thumbs}{Example for thumbs} + +This example demonstrates the most common uses of package +\textsf{thumbs}, v1.0a as of 2011/05/14 (HMM). +The used options were \texttt{pagecolor=white}, +\texttt{thumblink=rule}, \texttt{linefill=dots}, +\texttt{height=auto}, \texttt{minheight=\{47pt\}}, +width={auto}, \texttt{distance=\{2mm\}}, \texttt{topthumbmargin=\{auto\}}, +\texttt{bottomthumbmargin=\{auto\}}, and \texttt{verbose=true}. +These are the default options, except \texttt{verbose=true}. +For more details please see the documentation!\newline + +\textbf{Hyperlinks or not:} If the \textsf{hyperref} package is loaded, +the references in the overview page for the thumb marks are also hyperlinked +(except when option \texttt{thumblink=none} is used).\newline + +\bigskip + +{\color{green} Save per page about $200\unit{ml}$ water, $2\unit{g}$ CO$_{2}$ +and $2\unit{g}$ wood:\newline +Therefore please print only if this is really necessary.} + +\newpage + +\addtitlethumb{Frontmatter}{0}{white}{gray}{pagesLTS.0} + +At the first page no thumb mark was used, but we want to begin with thumb marks +at the first page, therefore a +\begin{verbatim} +\addtitlethumb{Frontmatter}{0}{white}{gray}{pagesLTS.0} +\end{verbatim} +was used at the beginning of this page. + +\newpage + +\tableofcontents + +\newpage + +To include an overview page for the thumb marks, +\begin{verbatim} +\addthumbsoverviewtocontents{section}{Thumb marks overview}% +\thumbsoverview{Table of Thumbs} +\end{verbatim} +is used, where \textbackslash addthumbsoverviewtocontents adds the thumb +marks overview page to the table of contents. + +\addthumbsoverviewtocontents{section}{Thumb marks overview}% +\thumbsoverview{Table of Thumbs} + +That were the overview pages for the thumb marks. + +\newpage + +\section{The first section} +\addthumb{First section}{\space\Huge{\textbf{$1^ \textrm{st}$}}}{yellow}{green} + +\begin{verbatim} +\addthumb{First section}{\space\Huge{\textbf{$1^ \textrm{st}$}}}{yellow}{green} +\end{verbatim} + +A thumb mark is added for this section. The parameters are: title for the thumb mark, +the text to be displayed in the thumb mark (choose your own format), +the colour of the text in the thumb mark, +and the background colour of the thumb mark (parameters in this order).\newline + +Now for some pages of \textquotedblleft content\textquotedblright\ldots + +\newpage +\lipsum[1] +\newpage +\lipsum[1] +\newpage +\lipsum[1] +\newpage + +\section{The second section} +\addthumb{Second section}{\Huge{\textbf{\arabic{section}}}}{green}{yellow} + +For this section, the text to be displayed in the thumb mark was set to +\begin{verbatim} +\Huge{\textbf{\arabic{section}}} +\end{verbatim} +i.\,e. the number of the section will be displayed (huge \& bold).\newline + +Let us change the thumb mark on a page with an even number: + +\newpage + +\section{The third section} +\addthumb{Third section}{\Huge{\textbf{\arabic{section}}}}{blue}{red} + +No problem! + +And you do not need to have a section to add a thumb: + +\newpage + +\addthumb{Still third section}{\Huge{\textbf{\arabic{section}b}}}{red}{blue} + +This is still the third section, but there is a new thumb mark. + +On the other hand, you can even get rid of the the thumb marks +for some page(s): + +\newpage + +\stopthumb + +The command +\begin{verbatim} +\stopthumb +\end{verbatim} +was used here. Until another addthumb (with parameters) or +\begin{verbatim} +\continuethumb +\end{verbatim} +is used, there will be no more thumb marks. + +\newpage + +Still no thumb marks. + +\newpage + +Still no thumb marks. + +\newpage + +Still no thumb marks. + +\newpage + +\continuethumb + +Thumb mark continued (unchanged). + +\newpage + +Thumb mark continued (unchanged). + +\newpage + +Time for another thumb, + +\addthumb{Another heading}{Small text}{white}{black} + +and another. + +\addthumb{Huge Text}{\Huge{Huge Text}}{yellow}{green} + +\addthumb{bold text }{\textbf{Bf Text}}{pink}{blue} + +\addthumb{Huge Bold Text}{\Huge{\textbf{HBT}}}{black}{yellow} + +When there is more than one thumb mark at one page, this is no problem. +When more than six (6) thumb marks are at one (1) page, +only the first six will be shown, +while all will appear in the thumbs overview page. +On the following pages the correct, last thumb mark will appear. +More than one thumb mark at one page probably does not make much sense. +This package was not created to create decorations at the page margin, +but if you really need more than six thumb marks at one page, +feel free to send an e-mail to the maintainer. +If you have got an idea how to dynamically create thumb +\textquotedblleft registers\textquotedblright\ (thereby overcomming +this limitation), please send an e-mail to the maintainer, too. + +\newpage + +Some text + +\newpage + +Some text + +\newpage + +Some text + +\newpage + +\section{xcolor} +\addthumb{xcolor}{\Huge{\textbf{xcolor}}}{magenta}{cyan} + +It is probably a good idea to have a look at the \textsf{xcolor} package +and use other colours than used in this example. + +\newpage + +\addthumb{A mark}{\Huge{\textbf{A}}}{lime}{darkgray} + +I just need to add further thumb marks to get them reaching the bottom of the page. + +Generally the vertical size of the thumb marks is set to the value given in the +height option. If it is \texttt{auto}, the size of the thumb marks is decreased, +so that they fit all on one page. But when they get smaller than \texttt{minheight}, +instead of decreasing their size further, a~new thumbs colum is started +(which will happen here). + +\newpage + +\addthumb{B mark}{\Huge{\textbf{B}}}{brown}{pink} + +There! A new thumb colum was started automatically! + +\newpage + +\addthumb{C mark}{\Huge{\textbf{C}}}{brown}{pink} + +You can, of course, keep the colour for more than one thumb mark. + +\newpage + +\addthumb{$1/1.\,955\,83$\, EUR}{\Huge{\textbf{D}}}{orange}{violet} + +I am just adding further thumb marks. + +If you are curiouse why the thumb mark between +\textquotedblleft C mark\textquotedblright\ and \textquotedblleft E mark\textquotedblright\ has +not been named \textquotedblleft D mark\textquotedblright\ but +\textquotedblleft $1/1.\,955\,83$\, EUR\textquotedblright : + +$1\unit{DM}=1\unit{D\ Mark}=1\unit{Deutsche\ Mark}$\newline +$=\frac{1}{1.\,955\,83}\,$\euro $\,=1/1.\,955\,83\unit{Euro}=1/1.\,955\,83\unit{EUR}$. + +\newpage + +\addthumb{E mark}{\Huge{\textbf{E}}}{lightgray}{black} + +I am just adding further thumb marks. + +\newpage + +\addthumb{F mark}{\Huge{\textbf{F}}}{magenta}{black} + +Some text. + +\newpage +\thumbnewcolumn +\addthumb{New thumb marks column}{\Huge{\textit{NC}}}{magenta}{black} + +There! A new thumb colum was started manually! + +\newpage + +Some text. + +\newpage + +\addthumb{G mark}{\Huge{\textbf{G}}}{orange}{violet} + +I just added another thumb mark. + +\newpage + +Well, I think that are enough thumb marks. + +Good bye! + +\end{document} +%</example> +% \end{macrocode} +% +% \pagebreak +% +% \StopEventually{ +% } +% +% \section{The implementation} +% +% We start off by checking that we are loading into \LaTeXe\ and +% announcing the name and version of this package. +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e}[1994/06/01]% or later +\ProvidesPackage{thumbs}[2011/05/14 v1.0a + Thumb marks and overwiew page(s) (HMM)] + +% \end{macrocode} +% +% A short description of the \xpackage{thumbs} package: +% +% \begin{macrocode} +%% This package allows to create a customizable thumb index, +%% providing a quick and easy reference methode for large documents, +%% as well as an overview page. + +% \end{macrocode} +% +% For SW(P) users, we issue a warning. Unfortunately, we cannot check for the used +% software (can we?), and there will be a stack overflow when using \xpackage{hyperref} +% even before the \xpackage{thumbs} package is loaded, thus the warning might not +% even reach the users. (Thus: RTFM of thumbs!) +% The options for those packages might be changed by the user -- I did not +% test all available options, thus first test, whether the document can be compiled +% with these options, and then try to change them according to your whishes. +% +% \begin{macrocode} +\message{^^J *** Compiling with SW(P)? ^^J% + Please see the sw(p)*.log or \jobname.log-file! *** ^^J} +\PackageWarningNoLine{thumbs}{% + When compiling with SWP 5.50 Build 2960,\MessageBreak% + these additional packages are needed:\MessageBreak% + \string\usepackage[T1]{fontenc}\MessageBreak% + \string\usepackage{amsfonts}\MessageBreak% + \string\usepackage[math]{cellspace}\MessageBreak% + \string\usepackage{xcolor}\MessageBreak% + \string\pagecolor{white}\MessageBreak% + especially before hyperref and thumbs,\MessageBreak% + but best right after the \string\documentclass!\MessageBreak% + } + +% \end{macrocode} +% +% For the handling of the options we need the \xpackage{kvoptions} +% package of \textsc{Heiko Oberdiek} (see subsection~\ref{ss:Downloads}): +% +% \begin{macrocode} +\RequirePackage{kvoptions}[2010/12/23]% v3.10 +% \end{macrocode} +% +% as well as some other packages: +% +% \begin{macrocode} +\RequirePackage{atbegshi}[2011/01/30]% v1.15 +\RequirePackage{xcolor}[2007/01/21]% v2.11 +\RequirePackage{picture}[2009/10/11]% v1.3 +\RequirePackage{alphalph}[2010/04/18]% v2.3 +% \end{macrocode} +% +% For the total number of the current page we need the \xpackage{pagesLTS} +% package of myself (see subsection~\ref{ss:Downloads}): +% +% \begin{macrocode} +\RequirePackage{pagesLTS}[2011/03/17]% v1.1o +\RequirePackage{rerunfilecheck}[2011/04/15]% v1.7 +\RequirePackage{ifthen}[2001/05/26]% v1.1c; for \whiledo +\RequirePackage{warning}[2001/08/17]% v0.01 +% \end{macrocode} +% +% A last information for the user: +% +% \begin{macrocode} +%% thumbs may work with earlier versions of those packages, +%% but this was not tested. Please consider updating your packages +%% to the most recent version (if they are not already the most +%% recent version). + +% \end{macrocode} +% See subsection~\ref{ss:Downloads} about how to get them.\\ +% +% The options are introduced: +% +% \begin{macrocode} +\SetupKeyvalOptions{family=thumbs,prefix=thumbs@} +\DeclareStringOption[white]{pagecolor}[white]% \thumbs@pagecolor +\DeclareStringOption{linefill}[dots] +\DeclareStringOption[rule]{thumblink}[rule] +\DeclareStringOption[47pt]{minheight}[47pt] +\DeclareStringOption{height}[auto] +\DeclareStringOption{width}[auto] +\DeclareStringOption{distance}[2mm] +\DeclareStringOption{topthumbmargin}[auto] +\DeclareStringOption{bottomthumbmargin}[auto] +\DeclareBoolOption[true]{verbose} + +\ProcessKeyvalOptions* + +\ifthumbs@verbose +\else + \PackageWarningNoLine{thumbs}{Option verbose=false found:\MessageBreak% + You will lose some information.} +\fi + +% \end{macrocode} +% +% \DescribeMacro{pagecolor} +% We set the (background) page colour to |\thumbs@pagecolor|, because the +% \texttt{xcolour} package needs a defined colour here (it~can be changed later). +% +% \begin{macrocode} +\pagecolor{\thumbs@pagecolor} + +% \end{macrocode} +% +% \DescribeMacro{linefill} +% We process the |linefill| option value: +% +% \begin{macrocode} +\ifx\thumbs@linefill\empty% + \gdef\th@mbs@linefill{\hspace*{\fill}} +\else + \def\th@mbstest{line}% + \ifx\thumbs@linefill\th@mbstest% + \gdef\th@mbs@linefill{\hrulefill} + \else + \def\th@mbstest{dots}% + \ifx\thumbs@linefill\th@mbstest% + \gdef\th@mbs@linefill{\dotfill} + \else + \PackageError{thumbs}{Option linefill with invalid value}{% + Option linefill has value '\thumbs@linefill'.\MessageBreak% + Valid values are '' (empty), 'line', or 'dots'.\MessageBreak% + '' (empty) will be used now.\MessageBreak% + } + \gdef\th@mbs@linefill{\hspace*{\fill}} + \fi + \fi +\fi + +% \end{macrocode} +% +% We introduce new dimensions for width, height, position of and vertical distance +% between the thumb marks and some helper dimensions. +% +% \begin{macrocode} +\newdimen\th@mbwidthx + +\newdimen\th@mbheighty% Thumb height y +\setlength{\th@mbheighty}{\z@} + +\newdimen\th@mbposx +\newdimen\th@mbposy +\newdimen\th@mbposyA +\newdimen\th@mbposytop +\newdimen\th@mbposybottom +\newdimen\th@mbwidthxtoc +\newdimen\th@mbsposytocy +\newdimen\th@mbsposytocyy + +\newdimen\th@mbsdistance% vertical distance between thumb marks +\ifx\thumbs@distance\empty% + \setlength{\th@mbsdistance}{1mm} +\else + \setlength{\th@mbsdistance}{\thumbs@distance} +\fi + +% \end{macrocode} +% +% We create a new |Box| for the thumbs, a~temporary counter and make some +% global definitions. +% +% \begin{macrocode} +\newbox\ThumbsBox + +% \end{macrocode} +% +% Generally it is not necessary to initialise a counter, because this is done +% automatically. But some packages change the handling of counters +% (e.\,g.~the \xpackage{localloc} package as of 1995/09/24, v1.1b), and then +% a~new counter might have a value different from zero (or the register might +% even contain something which is not a number value at all but some other +% string). +% +% \begin{macrocode} +\newcounter{th@mbs@tmpA} +\setcounter{th@mbs@tmpA}{0} + +\gdef\th@mbs{0} +\gdef\th@mbsmax{0} +\gdef\th@umbsperpage{0} + +\gdef\th@mbtitle{} +\gdef\th@mbtext{} +\gdef\th@mbtextcolour{\thumbs@pagecolor} +\gdef\th@mbbackgroundcolour{\thumbs@pagecolor} +\gdef\th@mbcolumn{0} + +\gdef\th@mbtextA{} +\gdef\th@mbtextcolourA{\thumbs@pagecolor} +\gdef\th@mbbackgroundcolourA{\thumbs@pagecolor} + +\gdef\th@mbprinting{1} +\gdef\th@mbtoprint{0} +\gdef\th@mbonpage{0} +\gdef\th@mbonpagemax{0} + +\gdef\th@mbcolumnnew{0} + +\gdef\thumb@two{2}% There is no \pagesLTS@two (yet). + +\gdef\th@mbs@toc@level{} +\gdef\th@mbs@toc@text{} + +% \end{macrocode} +% +% It is checked whether writing to \jobname.tmb is allowed. +% +% \begin{macrocode} +\if@filesw% \relax +\else + \PackageWarningNoLine{thumbs}{No auxiliary files allowed!\MessageBreak% + It was not allowed to write to files.\MessageBreak% + A lot of packages do not work without access to files\MessageBreak% + like the .aux one. The thumbs package needs to write\MessageBreak% + to the \jobname.tmb file. To exit press\MessageBreak% + Ctrl+Z\MessageBreak% + .\MessageBreak% + } +\fi + +% \end{macrocode} +% +% \pagebreak +% +% In |\setth@mbheight| the height of a thumb mark (for automatically thumb heights) +% is computed as +%\begin{verbatim} +% "round down{((Thumbs extension) / (Number of Thumbs)) - (distance between Thumbs)}" +%\end{verbatim} +% . +% +% \begin{macrocode} +\newcommand{\setth@mbheight}{% + \setlength{\th@mbheighty}{\z@} + \advance\th@mbheighty+\headheight + \advance\th@mbheighty+\headsep + \advance\th@mbheighty+\textheight + \advance\th@mbheighty+\footskip + \setcounter{th@mbs@tmpA}{\th@mbsmax} + \ifnum\value{th@mbs@tmpA}>1 + \divide\th@mbheighty\th@mbsmax + \fi + \advance\th@mbheighty-\th@mbsdistance + % Remove numbers behind the decimal seperator, e.g. 13.67777 pt -> 13 pt: + \@settopoint\th@mbheighty% + } + +% \end{macrocode} +% +% At the beginning of the document |\AtBeginDocument| is executed. +% +% \begin{macrocode} +\AtBeginDocument{% + \setlength{\th@mbposyA}{1pt} + \ifdim \thumbs@minheight < \th@mbposyA% too small + \setlength{\thumbs@minheight}{1pt} + \else + \ifdim \thumbs@minheight = \th@mbposyA% small, but ok + \else + \ifdim \thumbs@minheight > \th@mbposyA% ok + \else + \PackageError{thumbs}{Option minheight has invalid value}{% + Please use a number and a length unit (e.g. mm, cm, pt)\MessageBreak% + and no space between as value for option minheight\MessageBreak% + and include this value+unit combination in curly brackets\MessageBreak% + (please see the thumbs-example.tex file).\MessageBreak% + When pressing return, minheight will now be set to 47pt.\MessageBreak% + } + \setlength{\thumbs@minheight}{47pt} + \fi + \fi + \fi + \setlength{\th@mbposyA}{\thumbs@minheight} +% \end{macrocode} +% +% This should be a temporary dimension, but we do not want to waste +% a~|newdimension|, and |\th@mbposyA| is not used here yet and +% will be set later.\\ +% Thumb height |\th@mbheighty| is treated. If the value is empty, +% it is set to |\th@mbposyA|, which was just defined to be $47\unit{pt}$ +% (by default, or to the value choosen by the user with package option +% |minheight={...}|): +% +% \begin{macrocode} + \ifx\thumbs@height\empty% + \setlength{\th@mbheighty}{\th@mbposyA} + \else + \def\th@mbstest{auto} + \ifx\thumbs@height\th@mbstest% +% \end{macrocode} +% +% If it is not empty but \texttt{auto}(matic), the value is computed +% via |\setth@mbheight| (see above). +% +% \begin{macrocode} + \setth@mbheight +% \end{macrocode} +% +% When the height is smaller than |\thumbs@minheight| (default: $47\unit{pt}$), +% this is too small, and instead a now column/page of thumb marks is used. +% +% \begin{macrocode} + \ifdim \th@mbheighty < \thumbs@minheight + \PackageWarningNoLine{thumbs}{Thumbs not high enought:\MessageBreak% + Option height has value 'auto'. For \th@mbsmax\space thumbs per page\MessageBreak% + this results in a thumb height of \the\th@mbheighty.\MessageBreak% + This is lower than the minimal thumb height, \thumbs@minheight,\MessageBreak% + therefore another thumbs column will be opened.\MessageBreak% + If you do not want this, choose a smaller value\MessageBreak% + for option 'minheight'% + } + \setlength{\th@mbheighty}{\z@} + \advance\th@mbheighty+\th@mbposyA% = \thumbs@minheight + \fi + \else +% \end{macrocode} +% +% When a value has been given for the thumb marks' height, this fixed value is used. +% +% \begin{macrocode} + \PackageInfo{thumbs}{Now setting thumbs' height to \thumbs@height.\MessageBreak} + \setlength{\th@mbheighty}{\thumbs@height} + \fi + \fi +% \end{macrocode} +% +% Read in the |\jobname.tmb|-file: +% +% \begin{macrocode} + \newread\@instreamthumb% +% \end{macrocode} +% +% Setting the thumb mark width (|\th@mbwidthx|): +% +% \begin{macrocode} + \setlength{\th@mbwidthx}{\paperwidth} + \advance\th@mbwidthx-\textwidth + \divide\th@mbwidthx4 + \setlength{\th@mbposyA}{0sp} + \ifx\thumbs@width\empty% + \else + \def\th@mbstest{auto} + \ifx\thumbs@width\th@mbstest% + \else + \ifdim \thumbs@width > \th@mbposyA% OK + \setlength{\th@mbwidthx}{\thumbs@width} + \else + \PackageError{thumbs}{Thumbs not wide enought}{% + Option width has value '\thumbs@width'.\MessageBreak% + This is not a valid dimension larger than zero.\MessageBreak% + Width will be set automatically.\MessageBreak% + } + \fi + \fi + \fi +% \end{macrocode} +% +% Setting the position of the first/top thumb mark. Vertical (y) position +% is a little bit complicated, because option |\thumbs@topthumbmargin| must be handeled: +% +% \begin{macrocode} + % Thumb position x \th@mbposx + \setlength{\th@mbposx}{\paperwidth} + \advance\th@mbposx-\th@mbwidthx + \advance\th@mbposx+1pt + % Thumb position y \th@mbposy + \ifx\thumbs@topthumbmargin\empty% + \def\thumbs@topthumbmargin{auto} + \fi + \def\th@mbstest{auto} + \ifx\thumbs@topthumbmargin\th@mbstest% + \setlength{\th@mbposy}{1in} + \advance\th@mbposy+\voffset + \advance\th@mbposy+\topmargin + \advance\th@mbposy-\thumbs@distance + \advance\th@mbposy+\th@mbheighty + \else + \setlength{\th@mbposyA}{-1pt} + \ifdim \thumbs@topthumbmargin > \th@mbposyA% OK + \else + \PackageWarning{thumbs}{Thumbs column starting too high.\MessageBreak% + Option topthumbmargin has value '\thumbs@topthumbmargin'.\MessageBreak% + topthumbmargin will be set to -1pt.\MessageBreak% + } + \gdef\thumbs@topthumbmargin{-1pt} + \fi + \setlength{\th@mbposy}{\thumbs@topthumbmargin} + \advance\th@mbposy-\thumbs@distance + \advance\th@mbposy+\th@mbheighty + \fi + \setlength{\th@mbposytop}{\th@mbposy} +% \end{macrocode} +% +% Setting the lowest position of a thumb mark, according to option |\thumbs@bottomthumbmargin|: +% +% \begin{macrocode} + % Max. thumb position y \th@mbposybottom + \ifx\thumbs@bottomthumbmargin\empty% + \gdef\thumbs@bottomthumbmargin{auto} + \fi + \def\th@mbstest{auto} + \ifx\thumbs@bottomthumbmargin\th@mbstest% + \setlength{\th@mbposybottom}{1in} + \advance\th@mbposybottom+\voffset + \advance\th@mbposybottom+\topmargin + \advance\th@mbposybottom-\thumbs@distance + \advance\th@mbposybottom+\th@mbheighty + \advance\th@mbposybottom+\headheight + \advance\th@mbposybottom+\headsep + \advance\th@mbposybottom+\textheight + \advance\th@mbposybottom+\footskip + \advance\th@mbposybottom-\thumbs@distance + \advance\th@mbposybottom-\th@mbheighty + \else + \setlength{\th@mbposyA}{\paperheight} + \advance\th@mbposyA-\thumbs@bottomthumbmargin + \advance\th@mbposyA-\th@mbposytop + \advance\th@mbposyA-\thumbs@distance + \advance\th@mbposyA-\th@mbheighty + \advance\th@mbposyA-\thumbs@distance + \ifdim \th@mbposyA > 0sp%ok + \else + \setlength{\th@mbposyA}{\paperheight} + \advance\th@mbposyA-\th@mbposytop + \advance\th@mbposyA-\thumbs@distance + \advance\th@mbposyA-\th@mbheighty + \advance\th@mbposyA-\thumbs@distance + \advance\th@mbposyA-1pt + \PackageWarning{thumbs}{Thumbs column ending too high.\MessageBreak% + Option bottomthumbmargin has value '\thumbs@bottomthumbmargin'.\MessageBreak% + bottomthumbmargin will be set to '\the\th@mbposyA'.\MessageBreak% + } + \global\edef\thumbs@bottomthumbmargin{\the\th@mbposyA} + \fi + \setlength{\th@mbposyA}{\thumbs@bottomthumbmargin} + \setlength{\@tempdimc}{-1pt} + \ifdim \th@mbposyA < \@tempdimc% + \PackageWarning{thumbs}{Thumbs column ending too low.\MessageBreak% + Option bottomthumbmargin has value '\thumbs@bottomthumbmargin'.\MessageBreak% + bottomthumbmargin will be set to -1pt.\MessageBreak% + } + \gdef\thumbs@bottomthumbmargin{-1pt} + \fi + \setlength{\th@mbposybottom}{\paperheight} + \advance\th@mbposybottom-\thumbs@bottomthumbmargin + \fi +% \end{macrocode} +% +% \pagebreak +% +% |\th@mbposyA| is no longer used as temporary dimension here, but set to the top-most +% vertical thumb position~(y). Because it will be increased (i.\,e.~the thumb positions +% will move downwards on the page), |\th@mbsposytocyy| is used to remember this position +% unchanged. +% +% \begin{macrocode} + \advance\th@mbposy-\th@mbheighty% because it will be advanced also for the first thumb + \setlength{\th@mbposyA}{\th@mbposy}% \th@mbposyA will change. + \setlength{\th@mbsposytocyy}{\th@mbposy}% \th@mbsposytocyy shall not be changed. + } + +% \end{macrocode} +% +% \DescribeMacro{\th@mb@dvance} +% The internal command |\th@mb@dvance| is used to advance the position of the current +% thumb by |\th@mbheighty| and |\th@mbsdistance|. If the resulting position +% of the thumb is lower than the |\th@mbposybottom| position (i.\,e.~|\th@mbposy| +% \emph{higher} than |\th@mbposybottom|), a~new thumb column will be started by the next +% |\addthumb|, otherwise a blank thumb is created and |\th@mb@dvance| is calling itself +% again. This loop continues until a new thumb column is ready to be started. +% +% \begin{macrocode} +\newcommand{\th@mb@dvance}{% + \advance\th@mbposy+\th@mbheighty% + \advance\th@mbposy+\th@mbsdistance% + \ifdim\th@mbposy>\th@mbposybottom% + \advance\th@mbposy-\th@mbheighty% + \advance\th@mbposy-\th@mbsdistance% + \else% + \advance\th@mbposy-\th@mbheighty% + \advance\th@mbposy-\th@mbsdistance% + \addthumb{}{}{\thumbs@pagecolor}{\thumbs@pagecolor}% + \th@mb@dvance% + \fi% + } + +% \end{macrocode} +% +% \DescribeMacro{\thumbnewcolumn} +% With the command |\thumbnewcolumn| a new column can be started, even if the current one +% was not filled. This could be useful e.\,g. for a dictionary, which uses one column for +% translations from language A to language B, and the second column for translations +% from language B to language A. But in that case one probably should increase the +% size of the thumb marks, so that $26$~thumb marks (in~case of the latin alphabet) +% fill one thumb column. Do not use |\thumbnewcolumn| on a page where |\addthumb| was +% already used, but use |\addthumb| immediately after |\thumbnewcolumn|. +% +% \begin{macrocode} +\newcommand{\thumbnewcolumn}{% + \ifx\th@mbtoprint\pagesLTS@one% + \PackageError{thumbs}{\string\thumbnewcolumn\space after \string\addthumb }{% + On page \thepage\space (approx.) \string\addthumb\space was used and *afterwards* \string\thumbnewcolumn .\MessageBreak% + When you want to use \string\thumbnewcolumn , do not use an \string\addthumb\space on the same\MessageBreak% + page before \string\thumbnewcolumn . Thus, either remove the \string\addthumb , or use a\MessageBreak% + \string\pagebreak , \string\newpage\space etc. before \string\thumbnewcolumn .\MessageBreak% + (And remember to use an \string\addthumb\space*after* \string\thumbnewcolumn .)\MessageBreak% + Your command \string\thumbnewcolumn\space will be ignored now.% + }% + \else% + \PackageWarning{thumbs}{% + Starting of another column requested by command\MessageBreak% + \string\thumbnewcolumn.\space Only use this command directly\MessageBreak% + before an \string\addthumb\space - did you?!\MessageBreak% + }% + \gdef\th@mbcolumnnew{1}% + \th@mb@dvance% + \gdef\th@mbprinting{0}% + \gdef\th@mbcolumnnew{2}% + \fi% + } + +% \end{macrocode} +% +% \DescribeMacro{\addtitlethumb} +% When a thumb mark shall not or cannot be placed on a page, e.\,g.~at the title page or +% when using |\includepdf| from \xpackage{pdfpages} package, but the reference in the thumb +% marks overview nevertheless shall name that page number and hyperlink to that page, +% |\addtitlethumb| can be used at the following page. It has five arguments. The arguments +% one to four are identical to the ones of |\addthumb| (see immediately below), +% and the fifth argument consists of the label of the page, where the hyperlink +% at the thumb marks overview page shall link to. For the first page the label +% \texttt{pagesLTS.0} can be use, which is already placed there by the used +% \xpackage{pagesLTS} package. +% +% \begin{macrocode} +\newcommand{\addtitlethumb}[5]{% + \global\edef\th@mb@titlelabel{#5}% + \addthumb{#1}{#2}{#3}{#4}% + \global\edef\th@mb@titlelabel{}% + } + +% \end{macrocode} +% +% \DescribeMacro{\addthumb} +% Now the |\addthumb| command is defined, which is used to add a new +% thumb mark to the document. +% +% \begin{macrocode} +\newcommand{\addthumb}[4]{% + \gdef\th@mbprinting{1}% + \advance\th@mbposy\th@mbheighty% + \advance\th@mbposy\th@mbsdistance% + \ifdim\th@mbposy>\th@mbposybottom% + \PackageWarning{thumbs}{% + Thumbs column full, starting another column.\MessageBreak% + }% + \setlength{\th@mbposy}{\th@mbposytop}% + \advance\th@mbposy\thumbs@distance% + \ifx\th@mbcolumn\pagesLTS@zero% + \global\edef\th@umbsperpage{\th@mbs}% + \gdef\th@mbcolumn{1}% + \fi% + \fi% + \setcounter{th@mbs@tmpA}{\th@mbs}% + \addtocounter{th@mbs@tmpA}{+1}% + \global\edef\th@mbs{\arabic{th@mbs@tmpA}}% +% \end{macrocode} +% +% We do not want any labels or index or glossary entries confusing the +% table of thumbs entries: +% +% \begin{macrocode} + {\let\label\@gobble% + \let\index\@gobble% + \let\glossary\@gobble% +% \end{macrocode} +% +% The |\addthumb| command has four parameters: +% \begin{enumerate} +% \item a title for the thumb mark(for the thumb marks overview page, +% e.\,g. the chapter title), +% +% \item the text to be displayed in the thumb mark (for example a chapter number), +% +% \item the colour of the text in the thumb mark, +% +% \item and the background colour of the thumb mark +% \end{enumerate} +% (parameters in this order). +% +% \begin{macrocode} + \gdef\th@mbtitle{#1}% + \gdef\th@mbtext{#2}% + \gdef\th@mbtextcolour{#3}% + \gdef\th@mbbackgroundcolour{#4}% + } +% \end{macrocode} +% +% |\@ifpackageloaded| cannot be used after |\AtBeginDocument|, so here +% it is not checked for the \xpackage{hyperref} package, but for its +% |\Hy@Warning| command. If some other package or user is defining |\Hy@Warning|, +% \xpackage{thumbs} will falsely assume, that \xpackage{hyperref} has been loaded, +% but by my humble opinion, defining |\Hy@Warning| does not make sense and +% is bad style (except definition by the \xpackage{hyperref} package itself, +% of course). Into the |\jobname.tmb| file a |\thumbcontents| entry is written. +% If \xpackage{hyperref} is found, a |\phantomsection| is placed, a~label +% for the thumb mark created, and the |\thumbcontents| entry will be hyperlinked +% to that label (except when |\addtitlethumb| was used, then the label reported +% from the user is used -- the \xpackage{thumbs} package does \emph{not} create +% that label!). +% +% \begin{macrocode} + \@ifundefined{Hy@Warning}{% hyperref not loaded + }{% hyperref loaded + \phantomsection% + \label{thumbs.\th@mbs}% + }% + \if@filesw% + \ifx\th@mb@titlelabel\empty% + \addtocontents{tmb}{\string\thumbcontents{#1}{#2}{#3}{#4}{\thepage}{thumbs.\th@mbs}{\th@mbcolumnnew}}% + \else% + \addtocounter{page}{-1}% + \edef\th@mb@page{\thepage}% + \addtocontents{tmb}{\string\thumbcontents{#1}{#2}{#3}{#4}{\th@mb@page}{\th@mb@titlelabel}{\th@mbcolumnnew}}% + \addtocounter{page}{+1}% + \fi% + %\else there is a problem, but the according warning message was already given earlier. + \fi% +% \end{macrocode} +% +% Maybe there is a rare case, where more than one thumb mark will be placed +% at one page. Probably a |\pagebreak|, |\newpage| or something similar +% would be advisable, but nevertheless we should prepare for this case. +% We save the properties of the thumb mark(s). Instead of using |\...A|, +% |\...B| and so on, I really would like to generate this dynamically. +% If anybody could tell me how to do this, please send me an e-mail, thanks! +% +% \pagebreak +% +% \begin{macrocode} + \ifx\th@mbcolumnnew\pagesLTS@one% + \else% + \setcounter{th@mbs@tmpA}{\th@mbonpage}% + \addtocounter{th@mbs@tmpA}{+1}% + \global\edef\th@mbonpage{\arabic{th@mbs@tmpA}}% + \fi% + \ifx\th@mbtoprint\pagesLTS@zero% + \else% + \ifx\th@mbcolumnnew\pagesLTS@zero% + \PackageWarning{thumbs}{More than one thumb at one page:\MessageBreak% + You placed more than one thumb mark (at least \th@mbonpage)\MessageBreak% + on page \thepage \space (page is approximately).\MessageBreak% + Maybe insert a pagebreak?\MessageBreak% + }% + \fi% + \fi% + \ifnum\th@mbonpage=1% + \ifnum\th@mbonpagemax>0% \relax + \else \gdef\th@mbonpagemax{1}% + \fi% + \gdef\th@mbtextA{#2}% + \gdef\th@mbtextcolourA{#3}% + \gdef\th@mbbackgroundcolourA{#4}% + \setlength{\th@mbposyA}{\th@mbposy}% + \else% + \ifx\th@mbcolumnnew\pagesLTS@zero% + \ifnum\th@mbonpage=2% + \ifnum\th@mbonpagemax>1% + \else \gdef\th@mbonpagemax{2}% + \fi% + \gdef\th@mbtextB{#2}% + \gdef\th@mbtextcolourB{#3}% + \gdef\th@mbbackgroundcolourB{#4}% + \else% + \ifnum\th@mbonpage=3% + \ifnum\th@mbonpagemax>2% + \else \gdef\th@mbonpagemax{3}% + \fi% + \gdef\th@mbtextC{#2}% + \gdef\th@mbtextcolourC{#3}% + \gdef\th@mbbackgroundcolourC{#4}% + \else% + \ifnum\th@mbonpage=4% + \ifnum\th@mbonpagemax>3% + \else \gdef\th@mbonpagemax{4}% + \fi% + \gdef\th@mbtextD{#2}% + \gdef\th@mbtextcolourD{#3}% + \gdef\th@mbbackgroundcolourD{#4}% + \else% + \ifnum\th@mbonpage=5% + \ifnum\th@mbonpagemax>4% + \else \gdef\th@mbonpagemax{5}% + \fi% + \gdef\th@mbtextE{#2}% + \gdef\th@mbtextcolourE{#3}% + \gdef\th@mbbackgroundcolourE{#4}% + \else% + \ifnum\th@mbonpage=6% + \ifnum\th@mbonpagemax>5% + \else \gdef\th@mbonpagemax{6}% + \fi% + \gdef\th@mbtextF{#2}% + \gdef\th@mbtextcolourF{#3}% + \gdef\th@mbbackgroundcolourF{#4}% + \else% +% \end{macrocode} +% +% Dynamical creation also would overcome the limitation of six thumb marks on +% a single page. It would be possible to continue with |\...G| and so on, but +% this increases the code further -- and where to stop? +% +% \begin{macrocode} + \PackageError{thumbs}{Too many thumbs on one page!}{% + You tried to placed more than six (!) thumb marks on a single page,\MessageBreak% + (approximate page number: \thepage ).\MessageBreak% + Maybe insert a \string\pagebreak or \string\newpage?\MessageBreak% + No following thumb marks will show on this page, sorry.\MessageBreak% + If you absolutly need more marks on one page,\MessageBreak% + please write an e-mail to the package maintainer.\MessageBreak% + }% + \fi% + \fi% + \fi% + \fi% + \fi% + \else% + \ifnum\th@mbonpagemax<\th@mbonpage% + \global\edef\th@mbonpagemax{\th@mbonpage}% + \fi% + \fi% + \fi% + \ifx\th@mbcolumnnew\thumb@two% There is no \pagesLTS@two (yet). + \gdef\th@mbcolumnnew{0}% + \fi% + \gdef\th@mbtoprint{1}% + } + +% \end{macrocode} +% +% \DescribeMacro{\stopthumb} +% When a page (or pages) shall have no thumb marks, |\stopthumb| stops +% the issuing of thumb marks (until another thumb mark is placed or +% |\continuethumb| is used). +% +% \begin{macrocode} +\newcommand{\stopthumb}{\gdef\th@mbprinting{0}} + +% \end{macrocode} +% +% \DescribeMacro{\continuethumb} +% |\continuethumb| continues the issuing of thumb marks (equal to the one +% before this was stopped by |\stopthumb|). +% +% \begin{macrocode} +\newcommand{\continuethumb}{\gdef\th@mbprinting{1}} + +% \end{macrocode} +% +% \DescribeMacro{\thumbcontents} +% The \textbf{internal} command |\thumbcontents| (which will be read in from the +% |\jobname.tmb| file) creates a thumb mark entry on the overview page(s). +% Its seven parameters are +% \begin{enumerate} +% \item the title for the thumb mark, +% +% \item the text to be displayed in the thumb mark, +% +% \item the colour of the text in the thumb mark, +% +% \item the background colour of the thumb mark, +% +% \item the first page of this thumb mark, +% +% \item the label where it should hyperlink to +% +% \item and an indicator, whether |\thumbnewcolumn| is just issueing blank thumbs +% to fill a column +% \end{enumerate} +% (parameters in this order). Without \xpackage{hyperref} the $6^ \textrm{th} $ parameter +% is just ignored. +% +% \begin{macrocode} +\newcommand{\thumbcontents}[7]{% + \advance\th@mbposy\th@mbheighty% + \advance\th@mbposy\th@mbsdistance% + \ifdim\th@mbposy>\th@mbposybottom% + \setlength{\th@mbposy}{\th@mbposytop}% + \advance\th@mbposy\th@mbsdistance% + \fi% + \def\th@mb@tmp@title{#1}% + \def\th@mb@tmp@text{#2}% + \def\th@mb@tmp@textcolour{#3}% + \def\th@mb@tmp@backgroundcolour{#4}% + \def\th@mb@tmp@page{#5}% + \def\th@mb@tmp@label{#6}% + \def\th@mb@tmp@column{#7}% + \ifx\th@mb@tmp@column\thumb@two% + \def\th@mb@tmp@column{0}% + \fi% + \setlength{\th@mbwidthxtoc}{\paperwidth}% + \advance\th@mbwidthxtoc-1in% + \advance\th@mbwidthxtoc-\hoffset% + \advance\th@mbwidthxtoc-\oddsidemargin% +% \end{macrocode} +% +% \pagebreak +% +% \begin{macrocode} + \put(1in+\hoffset+\oddsidemargin,-\th@mbposy){% + \begin{picture}(0,0)% +% \end{macrocode} +% +% When the option |thumblink=rule| was choosen, the whole rule is made into a hyperlink. +% Otherwise the rule is created without hyperlink (here). +% +% \begin{macrocode} + \def\th@mbstest{rule}% + \ifx\thumbs@thumblink\th@mbstest% + \ifx\th@mb@tmp@column\pagesLTS@zero% + {\color{\th@mb@tmp@backgroundcolour}\hyperref[\th@mb@tmp@label]{\rule{\th@mbwidthxtoc}{\th@mbheighty}}}% + \else% +% \end{macrocode} +% +% When |\th@mb@tmp@column| is not zero, then this is a blank thumb mark from |thumbnewcolumn|. +% +% \begin{macrocode} + {\color{\th@mb@tmp@backgroundcolour}\rule{\th@mbwidthxtoc}{\th@mbheighty}}% + \fi% + \else% + {\color{\th@mb@tmp@backgroundcolour}\rule{\th@mbwidthxtoc}{\th@mbheighty}}% + \fi% + \end{picture}% +% \end{macrocode} +% +% When |\th@mb@tmp@column| is zero, then this is \textbf{not} a blank thumb mark from |thumbnewcolumn|, +% and we need to fill it with some content. If it is not zero, it is a blank thumb mark, +% and nothing needs to be done here. +% +% \begin{macrocode} + \ifx\th@mb@tmp@column\pagesLTS@zero% + \begin{picture}(0,0)(0,-0.5\th@mbheighty+384930sp)% + \bgroup% + \setlength{\parindent}{0pt}% + \vbox% to \textwidth + {\hsize=\textwidth {% +% \end{macrocode} +% +% Depending on the value of option |thumblink|, parts of the text are made into hyperlinks: +% \begin{description} +% \item[- |none|] creates \emph{none} hyperlink +% +% \begin{macrocode} + \def\th@mbstest{none} + \ifx\thumbs@thumblink\th@mbstest% + {\color{\th@mb@tmp@textcolour}\noindent \th@mb@tmp@title% + \leaders\box \ThumbsBox {\th@mbs@linefill \th@mb@tmp@page}% + }% + \else% +% \end{macrocode} +% +% \item[- |title|] hyperlinks the \emph{titles} of the thumb marks +% +% \begin{macrocode} + \def\th@mbstest{title}% + \ifx\thumbs@thumblink\th@mbstest% + {\color{\th@mb@tmp@textcolour}\noindent% + \hyperref[\th@mb@tmp@label]{\th@mb@tmp@title}% + \leaders\box \ThumbsBox {\th@mbs@linefill \th@mb@tmp@page}% + }% + \else% +% \end{macrocode} +% +% \item[- |page|] hyperlinks the \emph{page} numbers of the thumb marks +% +% \begin{macrocode} + \def\th@mbstest{page}% + \ifx\thumbs@thumblink\th@mbstest% + {\color{\th@mb@tmp@textcolour}\noindent% + \th@mb@tmp@title% + \leaders\box \ThumbsBox {\th@mbs@linefill \pageref{\th@mb@tmp@label}}% + }% + \else% +% \end{macrocode} +% +% \item[- |titleandpage|] hyperlinks the \emph{title and page} numbers of the thumb marks +% +% \begin{macrocode} + \def\th@mbstest{titleandpage}% + \ifx\thumbs@thumblink\th@mbstest% + {\color{\th@mb@tmp@textcolour}\noindent% + \hyperref[\th@mb@tmp@label]{\th@mb@tmp@title}% + \leaders\box \ThumbsBox {\th@mbs@linefill \pageref{\th@mb@tmp@label}}% + }% + \else% +% \end{macrocode} +% +% \item[- |line|] hyperlinks the whole \emph{line}, i.\,e. title, dots (or line or whatsoever)% +% and page numbers of the thumb marks +% +% \begin{macrocode} + \def\th@mbstest{line}% + \ifx\thumbs@thumblink\th@mbstest% + {\color{\th@mb@tmp@textcolour}\noindent% + \hyperref[\th@mb@tmp@label]{\th@mb@tmp@title% + \leaders\box \ThumbsBox {\th@mbs@linefill \th@mb@tmp@page}}% + }% + \else% +% \end{macrocode} +% +% \item[- |rule|] hyperlinks the whole \emph{rule}, but that was already done above,% +% so here no linking is done +% +% \begin{macrocode} + \def\th@mbstest{rule}% + \ifx\thumbs@thumblink\th@mbstest% + {\color{\th@mb@tmp@textcolour}\noindent% + \th@mb@tmp@title% + \leaders\box \ThumbsBox {\th@mbs@linefill \th@mb@tmp@page}% + }% + \else% +% \end{macrocode} +% +% \end{description} +% Another value for |\thumbs@thumblink| should never be encountered here. +% +% \begin{macrocode} + \PackageError{thumbs}{\string\thumbs@thumblink\space invalid}{% + \string\thumbs@thumblink\space has an invalid value,\MessageBreak% + although it did not have an invalid value before,\MessageBreak% + and the thumbs package did not change it.\MessageBreak% + Therefore some other package (or the user)\MessageBreak% + manipulated it.\MessageBreak% + Now setting it to 'none' as last resort.\MessageBreak% + }% + \gdef\thumbs@thumblink{none}% + {\color{\th@mb@tmp@textcolour}\noindent% + \th@mb@tmp@title% + \leaders\box \ThumbsBox {\th@mbs@linefill \th@mb@tmp@page}% + }% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + }% + }% + \egroup% + \end{picture}% +% \end{macrocode} +% +% The thumb mark (with text) as set in the document outside of the thumb marks overview page(s) +% is also presented here. +% +% \begin{macrocode} + \begin{picture}(0,0)(1in+\hoffset+\oddsidemargin-\th@mbxpos,-0.5\th@mbheighty+384930sp)% + \bgroup% + \setlength{\parindent}{0pt}% + \makebox[\th@mbwidthx][r]{{\color{\th@mb@tmp@textcolour}\th@mb@tmp@text \space}}% + \egroup% + \end{picture}% + \fi% + }% + } + +% \end{macrocode} +% +% \DescribeMacro{\th@mb@yA} +% |\th@mb@yA| sets the y-position to be used in |\th@mbprint|. +% +% \begin{macrocode} +\newcommand{\th@mb@yA}{% + \advance\th@mbposyA\th@mbheighty% + \advance\th@mbposyA\th@mbsdistance% + \ifdim\th@mbposyA>\th@mbposybottom% + \PackageWarning{thumbs}{You are not only using more than one thumb mark at one\MessageBreak% + single page, but also thumb marks from different thumb\MessageBreak% + columns. May I suggest the use of a \string\pagebreak\space or\MessageBreak% + \string\newpage ?% + }% + \setlength{\th@mbposyA}{\th@mbposytop}% + \fi% + } + +% \end{macrocode} +% +% \pagebreak +% +% \DescribeMacro{\th@mbprint} +% |\th@mbprint| places a |picture| containing the thumb mark on the page. +% +% \begin{macrocode} +\newcommand{\th@mbprint}[3]{% + \put(\th@mbxpos,-\th@mbposyA){% + \begin{picture}(0,0)% + {\color{#3}\rule{\th@mbwidthx}{\th@mbheighty}}% + \end{picture}% + \begin{picture}(0,0)(0,-0.5\th@mbheighty+384930sp)% + \bgroup% + \setlength{\parindent}{0pt}% + \ifodd\c@CurrentPage% + \if@twoside% + \makebox[\th@mbwidthx][l]{{\color{#2}\hspace*{1pt}\space #1}}% + \else% + \makebox[\th@mbwidthx][r]{{\color{#2}#1\space}}% + \fi% + \else% + \makebox[\th@mbwidthx][r]{{\color{#2}#1\space}}% + \fi% + \egroup% + \end{picture}% + }% + } + +% \end{macrocode} +% +% \DescribeMacro{\AtBeginShipout} +% |\AtBeginShipoutUpperLeft| calls the |\th@mbprint| macro for each thumb mark +% which shall be placed on that page. +% When |\stopthumb| was used, the thumb mark is omitted. +% +% \begin{macrocode} +\AtBeginShipout{% + \ifx\th@mbcolumnnew\pagesLTS@zero% ok + \else% + \PackageError{thumbs}{Missing \string\addthumb\space after \string\thumbnewcolumn }{% + Command \string\thumbnewcolumn\space was used, but no new thumb placed with \string\addthumb\MessageBreak% + (at least not at the same page). After \string\thumbnewcolumn\space please always use an\MessageBreak% + \string\addthumb . Until the next \string\addthumb , there will be no thumb marks on the\MessageBreak% + pages. Starting a new column of thumb marks and not putting a thumb mark into\MessageBreak% + that column does not make sense. If you just want to get rid of column marks,\MessageBreak% + do not abuse \string\thumbnewcolumn\space but use \string\stopthumb .\MessageBreak% + (This error message will be repeated at all following pages,\MessageBreak% + \space until \string\addthumb\space is used.)\MessageBreak% + }% + \fi% + \setcounter{th@mbs@tmpA}{\value{CurrentPage}}% + \addtocounter{th@mbs@tmpA}{-1}% because CurrentPage is already the one of the next page + \def\th@mbxpos{\th@mbposx}% + \ifodd\c@th@mbs@tmpA% \relax + \else% + \if@twoside \def\th@mbxpos{-1pt}% \else \relax + \fi% + \fi% + \AtBeginShipoutUpperLeft{% + \setcounter{th@mbs@tmpA}{\th@mbonpage}% + \ifx\th@mbprinting\pagesLTS@one% + \th@mbprint{\th@mbtextA}{\th@mbtextcolourA}{\th@mbbackgroundcolourA}% + \ifnum\value{th@mbs@tmpA}>1% + \th@mb@yA% + \th@mbprint{\th@mbtextB}{\th@mbtextcolourB}{\th@mbbackgroundcolourB}% + \ifnum\value{th@mbs@tmpA}>2% + \th@mb@yA% + \th@mbprint{\th@mbtextC}{\th@mbtextcolourC}{\th@mbbackgroundcolourC}% + \ifnum\value{th@mbs@tmpA}>3% + \th@mb@yA% + \th@mbprint{\th@mbtextD}{\th@mbtextcolourD}{\th@mbbackgroundcolourD}% + \ifnum\value{th@mbs@tmpA}>4% + \th@mb@yA% + \th@mbprint{\th@mbtextE}{\th@mbtextcolourE}{\th@mbbackgroundcolourE}% + \ifnum\value{th@mbs@tmpA}>5% + \th@mb@yA% + \th@mbprint{\th@mbtextF}{\th@mbtextcolourF}{\th@mbbackgroundcolourF}% + \ifnum\value{th@mbs@tmpA}>6% + \PackageWarning{thumbs}{Too many thumbs on one page,\MessageBreak% + please see error message already given above.\MessageBreak% + }% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% +% \end{macrocode} +% +% When more than one thumb mark was placed at that page, on the following pages +% only the last issued thumb mark shall appear. +% +% \begin{macrocode} + \ifnum\value{th@mbs@tmpA}<2% \relax + \else% + \gdef\th@mbtextA{\th@mbtext}% + \gdef\th@mbtextcolourA{\th@mbtextcolour}% + \gdef\th@mbbackgroundcolourA{\th@mbbackgroundcolour}% + \gdef\th@mbposyA{\th@mbposy}% + \fi% + \gdef\th@mbonpage{0}% + \gdef\th@mbtoprint{0}% + }% + } + +% \end{macrocode} +% +% \pagebreak +% +% \DescribeMacro{\AfterLastShipout} +% +% \begin{macrocode} +\AfterLastShipout{% + \ifx\th@mbcolumnnew\pagesLTS@zero% ok + \else + \PackageWarningNoLine{thumbs}{% + Still missing \string\addthumb\space after \string\thumbnewcolumn\space after\MessageBreak% + last shipout: Command \string\thumbnewcolumn\space was used,\MessageBreak% + but no new thumb placed with \string\addthumb\space anywhere in the\MessageBreak% + rest of the document. Starting a new column of thumb\MessageBreak% + marks and not putting a thumb mark into that column\MessageBreak% + does not make sense. If you just want to get rid of\MessageBreak% + thumb marks, do not abuse \string\thumbnewcolumn\space but use\MessageBreak% + \string\stopthumb % + } + \fi +% \end{macrocode} +% +% |\AfterLastShipout| the number of thumb marks per overview page +% and the total number of thumb marks are determined and saved +% for the next \LaTeX\ run via the \xfile{.aux}\ file. +% +% \begin{macrocode} + \ifx\th@mbcolumn\pagesLTS@zero% if there is only one column of thumbs + \global\edef\th@umbsperpage{\th@mbs} + \gdef\th@mbcolumn{1} + \fi + \ifx\th@umbsperpage\pagesLTS@zero + \gdef\th@umbsperpage{\th@mbs}% \th@mbs was increased with each \addthumb + \fi + \if@filesw + \immediate\write\@auxout{\string + \gdef\string\th@umbsperpage{\th@umbsperpage}} + \immediate\write\@auxout{\string + \gdef\string\th@mbsmax{\th@mbs}} + \expandafter\newwrite\csname tf@tmb\endcsname +% \end{macrocode} +% +% And a rerun check is performed: Did the |\jobname.tmb| file change? +% +% \begin{macrocode} + \RerunFileCheck{\jobname.tmb}{% + \immediate\closeout \csname tf@tmb\endcsname + }{Warning: Rerun to get list of thumbs right!% + } + \immediate\openout \csname tf@tmb\endcsname = \jobname.tmb\relax + %\else there is a problem, but the according warning message was already given earlier. + \fi + } + +% \end{macrocode} +% +% \pagebreak +% +% \DescribeMacro{\addthumbsoverviewtocontents} +% |\addthumbsoverviewtocontents| with two arguments is a replacement for +% |\addcontentsline{toc}{<level>}{<text>}|, where the first argument of +% |\addthumbsoverviewtocontents| is for |<level>| and the second for |<text>|. +% If an entry of the thumbs mark overview shall be placed in the table of contents, +% |\addthumbsoverviewtocontents| with its arguments should be used immediately before +% |\thumbsoverview|. +% +% \begin{macrocode} +\newcommand{\addthumbsoverviewtocontents}[2]{% + \gdef\th@mbs@toc@level{#1} + \gdef\th@mbs@toc@text{#2} + } + +% \end{macrocode} +% +% \DescribeMacro{\thumbsoverview} +% |\thumbsoverview| is used to place the overview page(s) for the thumb marks. +% Its parameter is used to mark this page/these pages (e.\,g. in the page header). +% If these marks are not whished, |\thumbsoverview{}| will generate empty marks in the +% page header(s). |\thumbsoverview| could be used more than once (for example at the +% beginning and at the end of the document), but the label |TableOfThumbs| would than +% be multilpy defined (no great harm done, but hyperlinks will only link to one of the +% labels). |\thumbsoverview| works by calling the internal command |\th@mbs@verview| +% (see below), repeating this until all thumb marks have been processed. +% +% \begin{macrocode} +\newcommand{\thumbsoverview}[1]{% +% \end{macrocode} +% +% Option |\thumbs@thumblink| is checked for a valid and resonable value here. +% +% \begin{macrocode} + \def\th@mbstest{none}% + \ifx\thumbs@thumblink\th@mbstest% OK + \else% + \@ifundefined{Hy@Warning}{% hyperref not loaded + \PackageError{thumbs}{Option thumblink != none, but hyperref not loaded}{% + The option thumblink of the thumbs package was not set to 'none',\MessageBreak% + but to some kind of hyperlinks, without using package hyperref.\MessageBreak% + Either choose option 'thumblink=none', or load package hyperref.\MessageBreak% + When pressing return, 'thumblink=none' will be set now.\MessageBreak% + }% + \gdef\thumbs@thumblink{none}% + }{% hyperref loaded + \def\th@mbstest{title}% + \ifx\thumbs@thumblink\th@mbstest% OK + \else% + \def\th@mbstest{page}% + \ifx\thumbs@thumblink\th@mbstest% OK + \else% + \def\th@mbstest{titleandpage}% + \ifx\thumbs@thumblink\th@mbstest% OK + \else% + \def\th@mbstest{line}% + \ifx\thumbs@thumblink\th@mbstest% OK + \else% + \def\th@mbstest{rule}% + \ifx\thumbs@thumblink\th@mbstest% OK + \else% + \PackageError{thumbs}{Option thumblink with invalid value}{% + Option thumblink has value '\thumbs@thumblink'.\MessageBreak% + Valid values are 'none', 'title', 'page',\MessageBreak% + 'titleandpage', 'line', or 'rule'.\MessageBreak% + 'rule' will be used now.\MessageBreak% + }% + \gdef\thumbs@thumblink{rule}% + \fi% + \fi% + \fi% + \fi% + \fi% + }% + \fi% +% \end{macrocode} +% +% When the thumb overview is printed and there is already a thumb mark set, +% for example for the frontmatter (e.\,g. title page, bibliographic information, +% acknowledgements, dedication, preface, abstract, tables of content, tables, +% and figures, lists of symbols and abbreviations, and the thumbs overview itself, +% of course) or when the overview is placed near the end of the document, +% the current y-position of the thumb mark must be remembered (and later restored) +% and the printing of that thumb mark must be stopped (and later continued). +% +% \begin{macrocode} + \edef\th@mbprintingovertoc{\th@mbprinting}% + \stopthumb% + \markboth{\MakeUppercase #1 }{\MakeUppercase #1 } + \setlength{\th@mbsposytocy}{\th@mbposy} + \setlength{\th@mbposy}{\th@mbsposytocyy} + \newcounter{th@mblinea} + \setcounter{th@mblinea}{1} + \newcounter{th@mblineb} + \setcounter{th@mblineb}{\th@umbsperpage} + \newcounter{FileLine} + \setcounter{FileLine}{1} + \newcounter{thumbsstop} + \setcounter{thumbsstop}{1} + \addtocounter{thumbsstop}{\th@mbsmax} + \whiledo{\value{FileLine}<\value{thumbsstop}} + {\if@twoside \cleardoublepage% + \else \clearpage% + \fi% +% \end{macrocode} +% +% When the \xpackage{hyperref} package is used, one might like to refer to the +% thumb overview page(s), therefore a phantomsection is added and a label +% |TableOfThumbs| is placed here. When |\addthumbsoverviewtocontents| was used, +% the entry is placed into the table of contents. +% +% \begin{macrocode} + \ifnum\value{FileLine}=1% + \@ifundefined{Hy@Warning}{}{\phantomsection \label{TableOfThumbs}}% + \ifx\th@mbs@toc@level\empty% + \else \addcontentsline{toc}{\th@mbs@toc@level}{\th@mbs@toc@text}% + \fi% + \fi% + \null% + \th@mbs@verview% + \pagebreak% + \ifthumbs@verbose% + \message{THUMBS: Fileline: \arabic{FileLine}, a: \arabic{th@mblinea}, % + b: \arabic{th@mblineb}, per page: \th@umbsperpage, max: \th@mbsmax.^^J}% + \fi% + }% +% \end{macrocode} +% +% After the overview, the current thumb mark (if there is any) is restored. +% +% \begin{macrocode} + \setlength{\th@mbposy}{\th@mbsposytocy}% + \ifx\th@mbprintingovertoc\pagesLTS@one% + \continuethumb% + \fi% + } + +% \end{macrocode} +% +% \DescribeMacro{\th@mbs@verview} +% The internal command |\th@mbs@verview| reads a line from file |\jobname.tmb| and +% executes the content of that line~-- if that line has not been processed yet, +% in which case it is just ignored (see |\@unused|). +% +% \begin{macrocode} +\newcommand{\th@mbs@verview}{% + \ifthumbs@verbose% + \message{^^JPackage thumbs Info: Processing line \arabic{th@mblinea} to \arabic{th@mblineb} of \jobname.tmb.}% + \fi% + \setcounter{FileLine}{1}% + \AtBeginShipoutNext{% + \AtBeginShipoutUpperLeftForeground{% + \IfFileExists{\jobname.tmb}{% then + \openin\@instreamthumb=\jobname.tmb % + \whiledo{\value{FileLine}<\value{th@mblineb}} + {\ifthumbs@verbose% + \message{THUMBS: Processing \jobname.tmb line \arabic{FileLine}.}% + \fi% + \ifnum \value{FileLine}<\value{th@mblinea}% + \read\@instreamthumb to \@unused% + \ifthumbs@verbose% + \message{Can be skipped.^^J}% + \fi% + % NIRVANA: ignore the line by not executing it, + % i.e. not executing \@unused. + % % \@unused + \else% + \ifnum \value{FileLine}=\value{th@mblinea}% + \read\@instreamthumb to \@thumbsout% execute the code of this line + \ifthumbs@verbose% + \message{Executing \jobname.tmb line \arabic{FileLine}.^^J}% + \fi% + \@thumbsout% + \else% + \ifnum \value{FileLine}>\value{th@mblinea}% + \read\@instreamthumb to \@thumbsout% execute the code of this line + \ifthumbs@verbose% + \message{Executing \jobname.tmb line \arabic{FileLine}.^^J}% + \fi% + \@thumbsout% + \else% THIS SHOULD NEVER HAPPEN! + \PackageError{thumbs}{Unexpected error! (Really!)}{% + ! You are in trouble here.\MessageBreak% + ! Type X \string<return\string> to quit.\MessageBreak% + ! Delete temporary auxiliary files\MessageBreak% + ! (like \jobname.aux, \jobname.tmb, \jobname.out)\MessageBreak% + ! and retry the compilation.\MessageBreak% + ! If the error persists, cross your fingers\MessageBreak% + ! and try typing \string<return\string> to proceed.\MessageBreak% + ! If that does not work,\MessageBreak% + ! you might contact the maintainer of the thumbs package.\MessageBreak% + }% + \fi% + \fi% + \fi% + \stepcounter{FileLine}% + }% + \ifnum \value{FileLine}=\value{th@mblineb} + \ifthumbs@verbose% + \message{THUMBS: Processing \jobname.tmb line \arabic{FileLine}.}% + \fi% + \read\@instreamthumb to \@thumbsout% Execute the code of that line. + \ifthumbs@verbose% + \message{Executing \jobname.tmb line \arabic{FileLine}.^^J}% + \fi% + \@thumbsout% Well, really execute it here. + \stepcounter{FileLine}% + \fi% + \closein\@instreamthumb% +% \end{macrocode} +% +% And on to the next overview page of thumb marks (if there are so many thumb marks): +% +% \begin{macrocode} + \addtocounter{th@mblinea}{\th@umbsperpage}% + \addtocounter{th@mblineb}{\th@umbsperpage}% + \setcounter{th@mbs@tmpA}{\th@mbsmax}% + \ifnum \value{th@mblineb}>\value{th@mbs@tmpA} + \setcounter{th@mblineb}{\value{th@mbs@tmpA}}% + \fi% + }{% else + \addglobalwarning{% + \PackageWarningNoLine{thumbs}{% + File \jobname.tmb not found.\MessageBreak% + Rerun to get thumbs overview page(s) right.\MessageBreak% + }% + }% + }% + }% + }% + } + +% \end{macrocode} +% +% \begin{macrocode} +%</package> +% \end{macrocode} +% +% \pagebreak +% +% \section{Installation} +% +% \subsection{Downloads\label{ss:Downloads}} +% +% Everything should be available on \CTAN{}, \url{http://www.ctan.org/tex-archive/}, +% but may need additional packages themselves.\\ +% +% \DescribeMacro{thumbs.dtx} +% For unpacking the |thumbs.dtx| file and constructing the documentation it is required: +% \begin{description} +% \item[-] \TeX Format \LaTeXe: \url{http://www.CTAN.org/} +% +% \item[-] package \xpackage{geometry}, 2010/09/12, v5.6, \CTAN{macros/latex/contrib/geometry/geometry.dtx} +% +% \item[-] document class \textsf{ltxdoc}, 2007/11/11, v2.0u, \CTAN{macros/latex/base/ltxdoc.dtx} +% +% \item[-] package \xpackage{holtxdoc}, 2011/02/04, v0.21, \CTAN{macros/latex/contrib/oberdiek/holtxdoc.dtx} +% +% \item[-] package \xpackage{hypdoc}, 2010/03/26, v1.9, \CTAN{macros/latex/contrib/oberdiek/hypdoc.dtx} +% \end{description} +% +% \DescribeMacro{thumbs.sty} +% The \texttt{thumbs.sty} for \LaTeXe\ (i.\,e. all documents using +% the \xpackage{thumbs} package) requires: +% \begin{description} +% \item[-] \TeX Format \LaTeXe, \url{http://www.CTAN.org/} +% +% \item[-] package \xpackage{kvoptions}, 2010/12/23, v3.10, \CTAN{macros/latex/contrib/oberdiek/kvoptions.dtx} +% +% \item[-] package \xpackage{atbegshi}, 2011/01/30, v1.15, \CTAN{macros/latex/contrib/oberdiek/atbegshi.dtx} +% +% \item[-] package \xpackage{xcolor}, 2007/01/21, v2.11, \CTAN{macros/latex/contrib/xcolor/xcolor.dtx} +% +% \item[-] package \xpackage{picture}, 2009/10/11, v1.3, \CTAN{macros/latex/contrib/oberdiek/picture.dtx} +% +% \item[-] package \xpackage{alphalph}, 2010/04/18, v2.3, \CTAN{macros/latex/contrib/oberdiek/alphalph.dtx} +% +% \item[-] package \xpackage{pagesLTS}, 2011/03/17, v1.1o, \CTAN{macros/latex/contrib/pageslts/pagesLTS.dtx} +% +% \item[-] package \xpackage{rerunfilecheck}, 2011/04/15, v1.7, \CTAN{macros/latex/contrib/oberdiek/rerunfilecheck.dtx} +% +% \item[-] package \xpackage{ifthen}, 2001/05/26, v1.1c, \CTAN{macros/latex/base/ifthen.dtx} +% +% \item[-] package \xpackage{warning}, 2001/08/17, v0.01, \CTAN{macros/latex/contrib/warning/warning.sty} +% +% \end{description} +% +% \DescribeMacro{SW/SWP} +% When compiling with SWP 5.50 Build 2960, these additional packages are needed: +% +% \begin{quote} +%\begin{verbatim} +%\usepackage[T1]{fontenc} +%\usepackage{amsfonts} +%\usepackage[math]{cellspace} +%\usepackage{xcolor} +%\pagecolor{white} +%\end{verbatim} +% \end{quote} +% +% \noindent especially before \xpackage{hyperref} and \xpackage{thumbs}, but best right after the |\documentclass|! +% (The options for those packages might be changed by the user -- I did not test all available options, +% thus first test, whether the document can be compiled with these options, and then try to change them +% according to your whishes.) +% +% \pagebreak +% +% \DescribeMacro{thumb-example.tex} +% The |thumb-example.tex| requires the same files as all documents using the \xpackage{thumbs} +% package and additionally: +% \begin{description} +% \item[-] package \xpackage{eurosym}, 1998/08/06, v1.1, \CTAN{fonts/eurosym.zip} + +% \item[-] package \xpackage{lipsum}, 2011/04/14, v1.2, \CTAN{macros/latex/contrib/lipsum/lipsum.dtx} +% +% \item[-] package \xpackage{hyperref}, 2011/04/17, v6.82g, \CTAN{macros/latex/contrib/hyperref/hyperref.dtx} +% +% \item[-] package \xpackage{thumbs}, 2011/05/14, v1.0a, \CTAN{macros/latex/contrib/thumbs/thumbs.dtx}\\ +% (Well, it is the example file for this package, and because you are reading the +% documentation for the \xpackage{thumbs} package, it can be assumed that you already +% have some version of it -- is it the current one?) +% \end{description} +% +% \DescribeMacro{Alternatives} +% As possible alternatives in section \ref{sec:Alternatives} there are listed +% \begin{description} +% \item[-] \xpackage{chapterthumb}, 2005/03/10, v0.1, \CTAN{info/examples/KOMA-Script-3/Anhang-B/source/chapterthumb.sty} +% +% \item[-] \xpackage{eso-pic}, 2010/10/06, v2.0c, \CTAN{macros/latex/contrib/eso-pic/eso-pic.dtx} +% +% \item[-] \xpackage{fancytabs}, 2011/04/16 v1.1, \CTAN{macros/latex/contrib/fancytabs/fancytabs.dtx} +% +% \item[-] \xpackage{thumb}, 2001, without file version, \url{ftp://ftp.dante.de/pub/tex/info/examples/ltt/thumb.sty} +% +% \item[-] \xpackage{thumb} (a completely different one), 1997/12/24, v1.0, \CTAN{macros/latex/contrib/thumb/thumb.dtx} +% +% \item[-] \xpackage{thumbindex}, 2009/12/13, without file version, \url{http://hisashim.org/2009/12/13/thumbindex.html}. +% +% \item[-] \xpackage{thumb-index}, from the \xpackage{fancyhdr} package, 2005/03/22 v3.2, +% \CTAN{macros/latex/contrib/fancyhdr/fancyhdr.pdf} +% +% \item[-] \xpackage{thumbpdf}, 2010/07/07, v3.11, \CTAN{support/thumbpdf/thumbpdf.sty} +% +% \item[-] \xpackage{thumby}, 2010/01/14, v0.1, \CTAN{macros/latex/contrib/thumby/thumby.sty} +% \end{description} +% +% \DescribeMacro{Oberdiek} +% \DescribeMacro{holtxdoc} +% \DescribeMacro{alphalph} +% \DescribeMacro{atbegshi} +% \DescribeMacro{kvoptions} +% \DescribeMacro{picture} +% \DescribeMacro{rerunfilecheck} +% All packages of Heiko Oberdiek's bundle `oberdiek' +% (especially \xpackage{holtxdoc}, \xpackage{alphalph}, \xpackage{atbegshi}, \xpackage{kvoptions}, +% \xpackage{picture}, and \xpackage{rerunfilecheck}) +% are also available in a TDS compliant ZIP archive:\\ +% \CTAN{install/macros/latex/contrib/oberdiek.tds.zip}.\\ +% It is probably best to download and use this, because the packages in there +% should be both recent and compatible.\\ +% +% \vspace{1.5cm} +% +% \DescribeMacro{M\"{u}nch} +% A hyperlinked list of my (other) packages can be found at \url{http://www.Uni-Bonn.de/~uzs5pv/LaTeX.html}. +% +% \pagebreak +% +% \subsection{Package, unpacking TDS} +% +% \paragraph{Package.} This package should be available on \CTAN{}: +% \begin{description} +% \item[\CTAN{macros/latex/contrib/thumbs/thumbs.dtx}]\hspace*{0.1cm} \\ +% The source file. +% \item[\CTAN{macros/latex/contrib/thumbs/thumbs.pdf}]\hspace*{0.1cm} \\ +% The documentation. +% \item[\CTAN{macros/latex/contrib/thumbs/thumbs-example.pdf}]\hspace*{0.1cm} \\ +% The compiled example file, as it should look like. +% \item[\CTAN{macros/latex/contrib/thumbs/README}]\hspace*{0.1cm} \\ +% The README file. +% \item[\CTAN{install/macros/latex/contrib/thumbs.tds.zip}]\hspace*{0.1cm} \\ +% Everything in TDS compliant, compiled format, +% \end{description} +% which additionally contains\\ +% \begin{tabular}{ll} +% thumbs.ins & The installation file.\\ +% thumbs.drv & The driver to generate the documentation.\\ +% thumbs.sty & The \xext{sty}le file.\\ +% thumbs-example.tex & The example file.% +% \end{tabular} +% +% \bigskip +% +% \noindent For required other packages, see the preceding subsection. +% +% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting +% \docstrip\ archive. The files are extracted by running the +% \xfile{.dtx} through \plainTeX: +% \begin{quote} +% \verb|tex thumbs.dtx| +% \end{quote} +% +% About generating the documentation see paragraph~\ref{GenDoc} below.\\ +% +% \paragraph{TDS.} Now the different files must be moved into +% the different directories in your installation TDS tree +% (also known as \xfile{texmf} tree): +% \begin{quote} +% \def\t{^^A +% \begin{tabular}{@{}>{\ttfamily}l@{ $\rightarrow$ }>{\ttfamily}l@{}} +% thumbs.sty & tex/latex/thumbs.sty\\ +% thumbs.pdf & doc/latex/thumbs.pdf\\ +% thumbs-example.tex & doc/latex/thumbs-example.tex\\ +% thumbs-example.pdf & doc/latex/thumbs-example.pdf\\ +% thumbs.dtx & source/latex/thumbs.dtx\\ +% \end{tabular}^^A +% }^^A +% \sbox0{\t}^^A +% \ifdim\wd0>\linewidth +% \begingroup +% \advance\linewidth by\leftmargin +% \advance\linewidth by\rightmargin +% \edef\x{\endgroup +% \def\noexpand\lw{\the\linewidth}^^A +% }\x +% \def\lwbox{^^A +% \leavevmode +% \hbox to \linewidth{^^A +% \kern-\leftmargin\relax +% \hss +% \usebox0 +% \hss +% \kern-\rightmargin\relax +% }^^A +% }^^A +% \ifdim\wd0>\lw +% \sbox0{\small\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\footnotesize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\scriptsize\t}^^A +% \ifdim\wd0>\linewidth +% \ifdim\wd0>\lw +% \sbox0{\tiny\t}^^A +% \ifdim\wd0>\linewidth +% \lwbox +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \else +% \lwbox +% \fi +% \else +% \usebox0 +% \fi +% \end{quote} +% If you have a \xfile{docstrip.cfg} that configures and enables \docstrip's +% TDS installing feature, then some files can already be in the right +% place, see the documentation of \docstrip. +% +% \subsection{Refresh file name databases} +% +% If your \TeX~distribution (\teTeX, \mikTeX,\dots) relies on file name +% databases, you must refresh these. For example, \teTeX\ users run +% \verb|texhash| or \verb|mktexlsr|. +% +% \subsection{Some details for the interested} +% +% \paragraph{Unpacking with \LaTeX.} +% The \xfile{.dtx} chooses its action depending on the format: +% \begin{description} +% \item[\plainTeX:] Run \docstrip\ and extract the files. +% \item[\LaTeX:] Generate the documentation. +% \end{description} +% If you insist on using \LaTeX\ for \docstrip\ (really, +% \docstrip\ does not need \LaTeX), then inform the autodetect routine +% about your intention: +% \begin{quote} +% \verb|latex \let\install=y\input{thumbs.dtx}| +% \end{quote} +% Do not forget to quote the argument according to the demands +% of your shell. +% +% \paragraph{Generating the documentation.\label{GenDoc}} +% You can use both the \xfile{.dtx} or the \xfile{.drv} to generate +% the documentation. The process can be configured by a +% configuration file \xfile{ltxdoc.cfg}. For instance, put this +% line into this file, if you want to have A4 as paper format: +% \begin{quote} +% \verb|\PassOptionsToClass{a4paper}{article}| +% \end{quote} +% +% \noindent An example follows how to generate the +% documentation with \pdfLaTeX : +% +% \begin{quote} +%\begin{verbatim} +%pdflatex thumbs.drv +%makeindex -s gind.ist thumbs.idx +%pdflatex thumbs.drv +%makeindex -s gind.ist thumbs.idx +%pdflatex thumbs.drv +%\end{verbatim} +% \end{quote} +% +% \subsection{Compiling the example} +% +% The example file, \textsf{thumbs-example.tex}, can be compiled via\\ +% \indent |latex thumbs-example.tex|\\ +% or (recommended)\\ +% \indent |pdflatex thumbs-example.tex|\\ +% and will need probably at least four~(!) compiler runs to get everything right. +% +% \section{Acknowledgements} +% +% I would like to thank \textsc{Heiko Oberdiek} +% (heiko dot oberdiek at googlemail dot com) for providing +% the \xpackage{hyperref} as well as a~lot~(!) of other useful packages +% (from which I also got everything I know about creating a file in +% \xext{dtx} format, ok, say it: copying), +% and the \Newsgroup{comp.text.tex} and \Newsgroup{de.comp.text.tex} +% newsgroups for their help in all things \TeX. +% +% \bigskip +% \phantomsection +% \begin{History}\label{History} +% \begin{Version}{2010/04/01 v0.01 -- 2011/05/13 v0.46} +% \item Diverse $\beta $-versions during the creation of this package.\\ +% \end{Version} +% \begin{Version}{2011/05/14 v1.0a} +% \item Upload to \CTAN{}. +% \end{Version} +% \end{History} +% +% \bigskip +% +% When you find a mistake or have a suggestion for an improvement of this package, +% please send an e-mail to the maintainer, thanks! (Please see BUG REPORTS in the README.)\\ +% +% Note: \textsf{Q}, \textsf{X}, and \textsf{Y} are not missing in the following index, +% but no command \emph{beginning} with any of these letters has been used in this +% \xpackage{thumbs} package. +% +% \pagebreak +% +% \PrintIndex +% +% \Finale +\endinput
\ No newline at end of file diff --git a/Master/texmf-dist/source/latex/thumbs/thumbs.ins b/Master/texmf-dist/source/latex/thumbs/thumbs.ins new file mode 100644 index 00000000000..fc53f2d1467 --- /dev/null +++ b/Master/texmf-dist/source/latex/thumbs/thumbs.ins @@ -0,0 +1,125 @@ +%% +%% This is file `thumbs.ins', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% thumbs.dtx (with options: `install') +%% +%% This is a generated file. +%% +%% Project: thumbs +%% Version: 2011/05/14 v1.0a +%% +%% Copyright (C) 2010, 2011 by +%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> +%% +%% The usual disclaimer applys: +%% If it doesn't work right that's your problem. +%% (Nevertheless, send an e-mail to the maintainer +%% when you find an error in this package.) +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. This version of this license is in +%% http://www.latex-project.org/lppl/lppl-1-3c.txt +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is H.-Martin Muench. +%% +%% This work consists of the main source file thumbs.dtx +%% and the derived files +%% thumbs.sty, thumbs.pdf, thumbs.ins, thumbs.drv, +%% thumbs-example.tex. +%% +\input docstrip.tex +\Msg{*************************************************************************} +\Msg{* Installation} +\Msg{* Package: thumbs 2011/05/14 v1.0a Thumb marks and overwiew page(s) (HMM)} +\Msg{*************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix\relax +\preamble + +This is a generated file. + +Project: thumbs +Version: 2011/05/14 v1.0a + +Copyright (C) 2010, 2011 by + H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> + +The usual disclaimer applys: +If it doesn't work right that's your problem. +(Nevertheless, send an e-mail to the maintainer + when you find an error in this package.) + +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3c of this license or (at your option) any later +version. This version of this license is in + http://www.latex-project.org/lppl/lppl-1-3c.txt +and the latest version of this license is in + http://www.latex-project.org/lppl.txt +and version 1.3c or later is part of all distributions of +LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status "maintained". + +The Current Maintainer of this work is H.-Martin Muench. + +This work consists of the main source file thumbs.dtx +and the derived files + thumbs.sty, thumbs.pdf, thumbs.ins, thumbs.drv, + thumbs-example.tex. + +\endpreamble +\let\MetaPrefix\DoubleperCent + +\generate{% + \file{thumbs.ins}{\from{thumbs.dtx}{install}}% + \file{thumbs.drv}{\from{thumbs.dtx}{driver}}% + \usedir{tex/latex/thumbs}% + \file{thumbs.sty}{\from{thumbs.dtx}{package}}% + \usedir{doc/latex/thumbs}% + \file{thumbs-example.tex}{\from{thumbs.dtx}{example}}% +} + +\catcode32=13\relax% active space +\let =\space% +\Msg{************************************************************************} +\Msg{*} +\Msg{* To finish the installation you have to move the following} +\Msg{* file into a directory searched by TeX:} +\Msg{*} +\Msg{* thumbs.sty*} +\Msg{*} +\Msg{* To produce the documentation run the file `thumbs.drv'} +\Msg{* through (pdf)LaTeX, e.g.} +\Msg{* pdflatex thumbs.drv} +\Msg{* makeindex -s gind.ist thumbs.idx} +\Msg{* pdflatex thumbs.drv} +\Msg{* makeindex -s gind.ist thumbs.idx} +\Msg{* pdflatex thumbs.drv} +\Msg{*} +\Msg{* At least three runs are necessary e.g. to get the} +\Msg{* references right!} +\Msg{*} +\Msg{* Happy TeXing!} +\Msg{*} +\Msg{************************************************************************} + +\endbatchfile + +\endinput +%% +%% End of file `thumbs.ins'. diff --git a/Master/texmf-dist/tex/latex/thumbs/thumbs.sty b/Master/texmf-dist/tex/latex/thumbs/thumbs.sty new file mode 100644 index 00000000000..67b1fecfeb2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/thumbs/thumbs.sty @@ -0,0 +1,948 @@ +%% +%% This is file `thumbs.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% thumbs.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Project: thumbs +%% Version: 2011/05/14 v1.0a +%% +%% Copyright (C) 2010, 2011 by +%% H.-Martin M"unch <Martin dot Muench at Uni-Bonn dot de> +%% +%% The usual disclaimer applys: +%% If it doesn't work right that's your problem. +%% (Nevertheless, send an e-mail to the maintainer +%% when you find an error in this package.) +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3c of this license or (at your option) any later +%% version. This version of this license is in +%% http://www.latex-project.org/lppl/lppl-1-3c.txt +%% and the latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is H.-Martin Muench. +%% +%% This work consists of the main source file thumbs.dtx +%% and the derived files +%% thumbs.sty, thumbs.pdf, thumbs.ins, thumbs.drv, +%% thumbs-example.tex. +%% +\NeedsTeXFormat{LaTeX2e}[1994/06/01]% or later +\ProvidesPackage{thumbs}[2011/05/14 v1.0a + Thumb marks and overwiew page(s) (HMM)] + +%% This package allows to create a customizable thumb index, +%% providing a quick and easy reference methode for large documents, +%% as well as an overview page. + +\message{^^J *** Compiling with SW(P)? ^^J% + Please see the sw(p)*.log or \jobname.log-file! *** ^^J} +\PackageWarningNoLine{thumbs}{% + When compiling with SWP 5.50 Build 2960,\MessageBreak% + these additional packages are needed:\MessageBreak% + \string\usepackage[T1]{fontenc}\MessageBreak% + \string\usepackage{amsfonts}\MessageBreak% + \string\usepackage[math]{cellspace}\MessageBreak% + \string\usepackage{xcolor}\MessageBreak% + \string\pagecolor{white}\MessageBreak% + especially before hyperref and thumbs,\MessageBreak% + but best right after the \string\documentclass!\MessageBreak% + } + +\RequirePackage{kvoptions}[2010/12/23]% v3.10 +\RequirePackage{atbegshi}[2011/01/30]% v1.15 +\RequirePackage{xcolor}[2007/01/21]% v2.11 +\RequirePackage{picture}[2009/10/11]% v1.3 +\RequirePackage{alphalph}[2010/04/18]% v2.3 +\RequirePackage{pagesLTS}[2011/03/17]% v1.1o +\RequirePackage{rerunfilecheck}[2011/04/15]% v1.7 +\RequirePackage{ifthen}[2001/05/26]% v1.1c; for \whiledo +\RequirePackage{warning}[2001/08/17]% v0.01 +%% thumbs may work with earlier versions of those packages, +%% but this was not tested. Please consider updating your packages +%% to the most recent version (if they are not already the most +%% recent version). + +\SetupKeyvalOptions{family=thumbs,prefix=thumbs@} +\DeclareStringOption[white]{pagecolor}[white]% \thumbs@pagecolor +\DeclareStringOption{linefill}[dots] +\DeclareStringOption[rule]{thumblink}[rule] +\DeclareStringOption[47pt]{minheight}[47pt] +\DeclareStringOption{height}[auto] +\DeclareStringOption{width}[auto] +\DeclareStringOption{distance}[2mm] +\DeclareStringOption{topthumbmargin}[auto] +\DeclareStringOption{bottomthumbmargin}[auto] +\DeclareBoolOption[true]{verbose} + +\ProcessKeyvalOptions* + +\ifthumbs@verbose +\else + \PackageWarningNoLine{thumbs}{Option verbose=false found:\MessageBreak% + You will lose some information.} +\fi + +\pagecolor{\thumbs@pagecolor} + +\ifx\thumbs@linefill\empty% + \gdef\th@mbs@linefill{\hspace*{\fill}} +\else + \def\th@mbstest{line}% + \ifx\thumbs@linefill\th@mbstest% + \gdef\th@mbs@linefill{\hrulefill} + \else + \def\th@mbstest{dots}% + \ifx\thumbs@linefill\th@mbstest% + \gdef\th@mbs@linefill{\dotfill} + \else + \PackageError{thumbs}{Option linefill with invalid value}{% + Option linefill has value '\thumbs@linefill'.\MessageBreak% + Valid values are '' (empty), 'line', or 'dots'.\MessageBreak% + '' (empty) will be used now.\MessageBreak% + } + \gdef\th@mbs@linefill{\hspace*{\fill}} + \fi + \fi +\fi + +\newdimen\th@mbwidthx + +\newdimen\th@mbheighty% Thumb height y +\setlength{\th@mbheighty}{\z@} + +\newdimen\th@mbposx +\newdimen\th@mbposy +\newdimen\th@mbposyA +\newdimen\th@mbposytop +\newdimen\th@mbposybottom +\newdimen\th@mbwidthxtoc +\newdimen\th@mbsposytocy +\newdimen\th@mbsposytocyy + +\newdimen\th@mbsdistance% vertical distance between thumb marks +\ifx\thumbs@distance\empty% + \setlength{\th@mbsdistance}{1mm} +\else + \setlength{\th@mbsdistance}{\thumbs@distance} +\fi + +\newbox\ThumbsBox + +\newcounter{th@mbs@tmpA} +\setcounter{th@mbs@tmpA}{0} + +\gdef\th@mbs{0} +\gdef\th@mbsmax{0} +\gdef\th@umbsperpage{0} + +\gdef\th@mbtitle{} +\gdef\th@mbtext{} +\gdef\th@mbtextcolour{\thumbs@pagecolor} +\gdef\th@mbbackgroundcolour{\thumbs@pagecolor} +\gdef\th@mbcolumn{0} + +\gdef\th@mbtextA{} +\gdef\th@mbtextcolourA{\thumbs@pagecolor} +\gdef\th@mbbackgroundcolourA{\thumbs@pagecolor} + +\gdef\th@mbprinting{1} +\gdef\th@mbtoprint{0} +\gdef\th@mbonpage{0} +\gdef\th@mbonpagemax{0} + +\gdef\th@mbcolumnnew{0} + +\gdef\thumb@two{2}% There is no \pagesLTS@two (yet). + +\gdef\th@mbs@toc@level{} +\gdef\th@mbs@toc@text{} + +\if@filesw% \relax +\else + \PackageWarningNoLine{thumbs}{No auxiliary files allowed!\MessageBreak% + It was not allowed to write to files.\MessageBreak% + A lot of packages do not work without access to files\MessageBreak% + like the .aux one. The thumbs package needs to write\MessageBreak% + to the \jobname.tmb file. To exit press\MessageBreak% + Ctrl+Z\MessageBreak% + .\MessageBreak% + } +\fi + +\newcommand{\setth@mbheight}{% + \setlength{\th@mbheighty}{\z@} + \advance\th@mbheighty+\headheight + \advance\th@mbheighty+\headsep + \advance\th@mbheighty+\textheight + \advance\th@mbheighty+\footskip + \setcounter{th@mbs@tmpA}{\th@mbsmax} + \ifnum\value{th@mbs@tmpA}>1 + \divide\th@mbheighty\th@mbsmax + \fi + \advance\th@mbheighty-\th@mbsdistance + % Remove numbers behind the decimal seperator, e.g. 13.67777 pt -> 13 pt: + \@settopoint\th@mbheighty% + } + +\AtBeginDocument{% + \setlength{\th@mbposyA}{1pt} + \ifdim \thumbs@minheight < \th@mbposyA% too small + \setlength{\thumbs@minheight}{1pt} + \else + \ifdim \thumbs@minheight = \th@mbposyA% small, but ok + \else + \ifdim \thumbs@minheight > \th@mbposyA% ok + \else + \PackageError{thumbs}{Option minheight has invalid value}{% + Please use a number and a length unit (e.g. mm, cm, pt)\MessageBreak% + and no space between as value for option minheight\MessageBreak% + and include this value+unit combination in curly brackets\MessageBreak% + (please see the thumbs-example.tex file).\MessageBreak% + When pressing return, minheight will now be set to 47pt.\MessageBreak% + } + \setlength{\thumbs@minheight}{47pt} + \fi + \fi + \fi + \setlength{\th@mbposyA}{\thumbs@minheight} + \ifx\thumbs@height\empty% + \setlength{\th@mbheighty}{\th@mbposyA} + \else + \def\th@mbstest{auto} + \ifx\thumbs@height\th@mbstest% + \setth@mbheight + \ifdim \th@mbheighty < \thumbs@minheight + \PackageWarningNoLine{thumbs}{Thumbs not high enought:\MessageBreak% + Option height has value 'auto'. For \th@mbsmax\space thumbs per page\MessageBreak% + this results in a thumb height of \the\th@mbheighty.\MessageBreak% + This is lower than the minimal thumb height, \thumbs@minheight,\MessageBreak% + therefore another thumbs column will be opened.\MessageBreak% + If you do not want this, choose a smaller value\MessageBreak% + for option 'minheight'% + } + \setlength{\th@mbheighty}{\z@} + \advance\th@mbheighty+\th@mbposyA% = \thumbs@minheight + \fi + \else + \PackageInfo{thumbs}{Now setting thumbs' height to \thumbs@height.\MessageBreak} + \setlength{\th@mbheighty}{\thumbs@height} + \fi + \fi + \newread\@instreamthumb% + \setlength{\th@mbwidthx}{\paperwidth} + \advance\th@mbwidthx-\textwidth + \divide\th@mbwidthx4 + \setlength{\th@mbposyA}{0sp} + \ifx\thumbs@width\empty% + \else + \def\th@mbstest{auto} + \ifx\thumbs@width\th@mbstest% + \else + \ifdim \thumbs@width > \th@mbposyA% OK + \setlength{\th@mbwidthx}{\thumbs@width} + \else + \PackageError{thumbs}{Thumbs not wide enought}{% + Option width has value '\thumbs@width'.\MessageBreak% + This is not a valid dimension larger than zero.\MessageBreak% + Width will be set automatically.\MessageBreak% + } + \fi + \fi + \fi + % Thumb position x \th@mbposx + \setlength{\th@mbposx}{\paperwidth} + \advance\th@mbposx-\th@mbwidthx + \advance\th@mbposx+1pt + % Thumb position y \th@mbposy + \ifx\thumbs@topthumbmargin\empty% + \def\thumbs@topthumbmargin{auto} + \fi + \def\th@mbstest{auto} + \ifx\thumbs@topthumbmargin\th@mbstest% + \setlength{\th@mbposy}{1in} + \advance\th@mbposy+\voffset + \advance\th@mbposy+\topmargin + \advance\th@mbposy-\thumbs@distance + \advance\th@mbposy+\th@mbheighty + \else + \setlength{\th@mbposyA}{-1pt} + \ifdim \thumbs@topthumbmargin > \th@mbposyA% OK + \else + \PackageWarning{thumbs}{Thumbs column starting too high.\MessageBreak% + Option topthumbmargin has value '\thumbs@topthumbmargin'.\MessageBreak% + topthumbmargin will be set to -1pt.\MessageBreak% + } + \gdef\thumbs@topthumbmargin{-1pt} + \fi + \setlength{\th@mbposy}{\thumbs@topthumbmargin} + \advance\th@mbposy-\thumbs@distance + \advance\th@mbposy+\th@mbheighty + \fi + \setlength{\th@mbposytop}{\th@mbposy} + % Max. thumb position y \th@mbposybottom + \ifx\thumbs@bottomthumbmargin\empty% + \gdef\thumbs@bottomthumbmargin{auto} + \fi + \def\th@mbstest{auto} + \ifx\thumbs@bottomthumbmargin\th@mbstest% + \setlength{\th@mbposybottom}{1in} + \advance\th@mbposybottom+\voffset + \advance\th@mbposybottom+\topmargin + \advance\th@mbposybottom-\thumbs@distance + \advance\th@mbposybottom+\th@mbheighty + \advance\th@mbposybottom+\headheight + \advance\th@mbposybottom+\headsep + \advance\th@mbposybottom+\textheight + \advance\th@mbposybottom+\footskip + \advance\th@mbposybottom-\thumbs@distance + \advance\th@mbposybottom-\th@mbheighty + \else + \setlength{\th@mbposyA}{\paperheight} + \advance\th@mbposyA-\thumbs@bottomthumbmargin + \advance\th@mbposyA-\th@mbposytop + \advance\th@mbposyA-\thumbs@distance + \advance\th@mbposyA-\th@mbheighty + \advance\th@mbposyA-\thumbs@distance + \ifdim \th@mbposyA > 0sp%ok + \else + \setlength{\th@mbposyA}{\paperheight} + \advance\th@mbposyA-\th@mbposytop + \advance\th@mbposyA-\thumbs@distance + \advance\th@mbposyA-\th@mbheighty + \advance\th@mbposyA-\thumbs@distance + \advance\th@mbposyA-1pt + \PackageWarning{thumbs}{Thumbs column ending too high.\MessageBreak% + Option bottomthumbmargin has value '\thumbs@bottomthumbmargin'.\MessageBreak% + bottomthumbmargin will be set to '\the\th@mbposyA'.\MessageBreak% + } + \global\edef\thumbs@bottomthumbmargin{\the\th@mbposyA} + \fi + \setlength{\th@mbposyA}{\thumbs@bottomthumbmargin} + \setlength{\@tempdimc}{-1pt} + \ifdim \th@mbposyA < \@tempdimc% + \PackageWarning{thumbs}{Thumbs column ending too low.\MessageBreak% + Option bottomthumbmargin has value '\thumbs@bottomthumbmargin'.\MessageBreak% + bottomthumbmargin will be set to -1pt.\MessageBreak% + } + \gdef\thumbs@bottomthumbmargin{-1pt} + \fi + \setlength{\th@mbposybottom}{\paperheight} + \advance\th@mbposybottom-\thumbs@bottomthumbmargin + \fi + \advance\th@mbposy-\th@mbheighty% because it will be advanced also for the first thumb + \setlength{\th@mbposyA}{\th@mbposy}% \th@mbposyA will change. + \setlength{\th@mbsposytocyy}{\th@mbposy}% \th@mbsposytocyy shall not be changed. + } + +\newcommand{\th@mb@dvance}{% + \advance\th@mbposy+\th@mbheighty% + \advance\th@mbposy+\th@mbsdistance% + \ifdim\th@mbposy>\th@mbposybottom% + \advance\th@mbposy-\th@mbheighty% + \advance\th@mbposy-\th@mbsdistance% + \else% + \advance\th@mbposy-\th@mbheighty% + \advance\th@mbposy-\th@mbsdistance% + \addthumb{}{}{\thumbs@pagecolor}{\thumbs@pagecolor}% + \th@mb@dvance% + \fi% + } + +\newcommand{\thumbnewcolumn}{% + \ifx\th@mbtoprint\pagesLTS@one% + \PackageError{thumbs}{\string\thumbnewcolumn\space after \string\addthumb }{% + On page \thepage\space (approx.) \string\addthumb\space was used and *afterwards* \string\thumbnewcolumn .\MessageBreak% + When you want to use \string\thumbnewcolumn , do not use an \string\addthumb\space on the same\MessageBreak% + page before \string\thumbnewcolumn . Thus, either remove the \string\addthumb , or use a\MessageBreak% + \string\pagebreak , \string\newpage\space etc. before \string\thumbnewcolumn .\MessageBreak% + (And remember to use an \string\addthumb\space*after* \string\thumbnewcolumn .)\MessageBreak% + Your command \string\thumbnewcolumn\space will be ignored now.% + }% + \else% + \PackageWarning{thumbs}{% + Starting of another column requested by command\MessageBreak% + \string\thumbnewcolumn.\space Only use this command directly\MessageBreak% + before an \string\addthumb\space - did you?!\MessageBreak% + }% + \gdef\th@mbcolumnnew{1}% + \th@mb@dvance% + \gdef\th@mbprinting{0}% + \gdef\th@mbcolumnnew{2}% + \fi% + } + +\newcommand{\addtitlethumb}[5]{% + \global\edef\th@mb@titlelabel{#5}% + \addthumb{#1}{#2}{#3}{#4}% + \global\edef\th@mb@titlelabel{}% + } + +\newcommand{\addthumb}[4]{% + \gdef\th@mbprinting{1}% + \advance\th@mbposy\th@mbheighty% + \advance\th@mbposy\th@mbsdistance% + \ifdim\th@mbposy>\th@mbposybottom% + \PackageWarning{thumbs}{% + Thumbs column full, starting another column.\MessageBreak% + }% + \setlength{\th@mbposy}{\th@mbposytop}% + \advance\th@mbposy\thumbs@distance% + \ifx\th@mbcolumn\pagesLTS@zero% + \global\edef\th@umbsperpage{\th@mbs}% + \gdef\th@mbcolumn{1}% + \fi% + \fi% + \setcounter{th@mbs@tmpA}{\th@mbs}% + \addtocounter{th@mbs@tmpA}{+1}% + \global\edef\th@mbs{\arabic{th@mbs@tmpA}}% + {\let\label\@gobble% + \let\index\@gobble% + \let\glossary\@gobble% + \gdef\th@mbtitle{#1}% + \gdef\th@mbtext{#2}% + \gdef\th@mbtextcolour{#3}% + \gdef\th@mbbackgroundcolour{#4}% + } + \@ifundefined{Hy@Warning}{% hyperref not loaded + }{% hyperref loaded + \phantomsection% + \label{thumbs.\th@mbs}% + }% + \if@filesw% + \ifx\th@mb@titlelabel\empty% + \addtocontents{tmb}{\string\thumbcontents{#1}{#2}{#3}{#4}{\thepage}{thumbs.\th@mbs}{\th@mbcolumnnew}}% + \else% + \addtocounter{page}{-1}% + \edef\th@mb@page{\thepage}% + \addtocontents{tmb}{\string\thumbcontents{#1}{#2}{#3}{#4}{\th@mb@page}{\th@mb@titlelabel}{\th@mbcolumnnew}}% + \addtocounter{page}{+1}% + \fi% + %\else there is a problem, but the according warning message was already given earlier. + \fi% + \ifx\th@mbcolumnnew\pagesLTS@one% + \else% + \setcounter{th@mbs@tmpA}{\th@mbonpage}% + \addtocounter{th@mbs@tmpA}{+1}% + \global\edef\th@mbonpage{\arabic{th@mbs@tmpA}}% + \fi% + \ifx\th@mbtoprint\pagesLTS@zero% + \else% + \ifx\th@mbcolumnnew\pagesLTS@zero% + \PackageWarning{thumbs}{More than one thumb at one page:\MessageBreak% + You placed more than one thumb mark (at least \th@mbonpage)\MessageBreak% + on page \thepage \space (page is approximately).\MessageBreak% + Maybe insert a pagebreak?\MessageBreak% + }% + \fi% + \fi% + \ifnum\th@mbonpage=1% + \ifnum\th@mbonpagemax>0% \relax + \else \gdef\th@mbonpagemax{1}% + \fi% + \gdef\th@mbtextA{#2}% + \gdef\th@mbtextcolourA{#3}% + \gdef\th@mbbackgroundcolourA{#4}% + \setlength{\th@mbposyA}{\th@mbposy}% + \else% + \ifx\th@mbcolumnnew\pagesLTS@zero% + \ifnum\th@mbonpage=2% + \ifnum\th@mbonpagemax>1% + \else \gdef\th@mbonpagemax{2}% + \fi% + \gdef\th@mbtextB{#2}% + \gdef\th@mbtextcolourB{#3}% + \gdef\th@mbbackgroundcolourB{#4}% + \else% + \ifnum\th@mbonpage=3% + \ifnum\th@mbonpagemax>2% + \else \gdef\th@mbonpagemax{3}% + \fi% + \gdef\th@mbtextC{#2}% + \gdef\th@mbtextcolourC{#3}% + \gdef\th@mbbackgroundcolourC{#4}% + \else% + \ifnum\th@mbonpage=4% + \ifnum\th@mbonpagemax>3% + \else \gdef\th@mbonpagemax{4}% + \fi% + \gdef\th@mbtextD{#2}% + \gdef\th@mbtextcolourD{#3}% + \gdef\th@mbbackgroundcolourD{#4}% + \else% + \ifnum\th@mbonpage=5% + \ifnum\th@mbonpagemax>4% + \else \gdef\th@mbonpagemax{5}% + \fi% + \gdef\th@mbtextE{#2}% + \gdef\th@mbtextcolourE{#3}% + \gdef\th@mbbackgroundcolourE{#4}% + \else% + \ifnum\th@mbonpage=6% + \ifnum\th@mbonpagemax>5% + \else \gdef\th@mbonpagemax{6}% + \fi% + \gdef\th@mbtextF{#2}% + \gdef\th@mbtextcolourF{#3}% + \gdef\th@mbbackgroundcolourF{#4}% + \else% + \PackageError{thumbs}{Too many thumbs on one page!}{% + You tried to placed more than six (!) thumb marks on a single page,\MessageBreak% + (approximate page number: \thepage ).\MessageBreak% + Maybe insert a \string\pagebreak or \string\newpage?\MessageBreak% + No following thumb marks will show on this page, sorry.\MessageBreak% + If you absolutly need more marks on one page,\MessageBreak% + please write an e-mail to the package maintainer.\MessageBreak% + }% + \fi% + \fi% + \fi% + \fi% + \fi% + \else% + \ifnum\th@mbonpagemax<\th@mbonpage% + \global\edef\th@mbonpagemax{\th@mbonpage}% + \fi% + \fi% + \fi% + \ifx\th@mbcolumnnew\thumb@two% There is no \pagesLTS@two (yet). + \gdef\th@mbcolumnnew{0}% + \fi% + \gdef\th@mbtoprint{1}% + } + +\newcommand{\stopthumb}{\gdef\th@mbprinting{0}} + +\newcommand{\continuethumb}{\gdef\th@mbprinting{1}} + +\newcommand{\thumbcontents}[7]{% + \advance\th@mbposy\th@mbheighty% + \advance\th@mbposy\th@mbsdistance% + \ifdim\th@mbposy>\th@mbposybottom% + \setlength{\th@mbposy}{\th@mbposytop}% + \advance\th@mbposy\th@mbsdistance% + \fi% + \def\th@mb@tmp@title{#1}% + \def\th@mb@tmp@text{#2}% + \def\th@mb@tmp@textcolour{#3}% + \def\th@mb@tmp@backgroundcolour{#4}% + \def\th@mb@tmp@page{#5}% + \def\th@mb@tmp@label{#6}% + \def\th@mb@tmp@column{#7}% + \ifx\th@mb@tmp@column\thumb@two% + \def\th@mb@tmp@column{0}% + \fi% + \setlength{\th@mbwidthxtoc}{\paperwidth}% + \advance\th@mbwidthxtoc-1in% + \advance\th@mbwidthxtoc-\hoffset% + \advance\th@mbwidthxtoc-\oddsidemargin% + \put(1in+\hoffset+\oddsidemargin,-\th@mbposy){% + \begin{picture}(0,0)% + \def\th@mbstest{rule}% + \ifx\thumbs@thumblink\th@mbstest% + \ifx\th@mb@tmp@column\pagesLTS@zero% + {\color{\th@mb@tmp@backgroundcolour}\hyperref[\th@mb@tmp@label]{\rule{\th@mbwidthxtoc}{\th@mbheighty}}}% + \else% + {\color{\th@mb@tmp@backgroundcolour}\rule{\th@mbwidthxtoc}{\th@mbheighty}}% + \fi% + \else% + {\color{\th@mb@tmp@backgroundcolour}\rule{\th@mbwidthxtoc}{\th@mbheighty}}% + \fi% + \end{picture}% + \ifx\th@mb@tmp@column\pagesLTS@zero% + \begin{picture}(0,0)(0,-0.5\th@mbheighty+384930sp)% + \bgroup% + \setlength{\parindent}{0pt}% + \vbox% to \textwidth + {\hsize=\textwidth {% + \def\th@mbstest{none} + \ifx\thumbs@thumblink\th@mbstest% + {\color{\th@mb@tmp@textcolour}\noindent \th@mb@tmp@title% + \leaders\box \ThumbsBox {\th@mbs@linefill \th@mb@tmp@page}% + }% + \else% + \def\th@mbstest{title}% + \ifx\thumbs@thumblink\th@mbstest% + {\color{\th@mb@tmp@textcolour}\noindent% + \hyperref[\th@mb@tmp@label]{\th@mb@tmp@title}% + \leaders\box \ThumbsBox {\th@mbs@linefill \th@mb@tmp@page}% + }% + \else% + \def\th@mbstest{page}% + \ifx\thumbs@thumblink\th@mbstest% + {\color{\th@mb@tmp@textcolour}\noindent% + \th@mb@tmp@title% + \leaders\box \ThumbsBox {\th@mbs@linefill \pageref{\th@mb@tmp@label}}% + }% + \else% + \def\th@mbstest{titleandpage}% + \ifx\thumbs@thumblink\th@mbstest% + {\color{\th@mb@tmp@textcolour}\noindent% + \hyperref[\th@mb@tmp@label]{\th@mb@tmp@title}% + \leaders\box \ThumbsBox {\th@mbs@linefill \pageref{\th@mb@tmp@label}}% + }% + \else% + \def\th@mbstest{line}% + \ifx\thumbs@thumblink\th@mbstest% + {\color{\th@mb@tmp@textcolour}\noindent% + \hyperref[\th@mb@tmp@label]{\th@mb@tmp@title% + \leaders\box \ThumbsBox {\th@mbs@linefill \th@mb@tmp@page}}% + }% + \else% + \def\th@mbstest{rule}% + \ifx\thumbs@thumblink\th@mbstest% + {\color{\th@mb@tmp@textcolour}\noindent% + \th@mb@tmp@title% + \leaders\box \ThumbsBox {\th@mbs@linefill \th@mb@tmp@page}% + }% + \else% + \PackageError{thumbs}{\string\thumbs@thumblink\space invalid}{% + \string\thumbs@thumblink\space has an invalid value,\MessageBreak% + although it did not have an invalid value before,\MessageBreak% + and the thumbs package did not change it.\MessageBreak% + Therefore some other package (or the user)\MessageBreak% + manipulated it.\MessageBreak% + Now setting it to 'none' as last resort.\MessageBreak% + }% + \gdef\thumbs@thumblink{none}% + {\color{\th@mb@tmp@textcolour}\noindent% + \th@mb@tmp@title% + \leaders\box \ThumbsBox {\th@mbs@linefill \th@mb@tmp@page}% + }% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + }% + }% + \egroup% + \end{picture}% + \begin{picture}(0,0)(1in+\hoffset+\oddsidemargin-\th@mbxpos,-0.5\th@mbheighty+384930sp)% + \bgroup% + \setlength{\parindent}{0pt}% + \makebox[\th@mbwidthx][r]{{\color{\th@mb@tmp@textcolour}\th@mb@tmp@text \space}}% + \egroup% + \end{picture}% + \fi% + }% + } + +\newcommand{\th@mb@yA}{% + \advance\th@mbposyA\th@mbheighty% + \advance\th@mbposyA\th@mbsdistance% + \ifdim\th@mbposyA>\th@mbposybottom% + \PackageWarning{thumbs}{You are not only using more than one thumb mark at one\MessageBreak% + single page, but also thumb marks from different thumb\MessageBreak% + columns. May I suggest the use of a \string\pagebreak\space or\MessageBreak% + \string\newpage ?% + }% + \setlength{\th@mbposyA}{\th@mbposytop}% + \fi% + } + +\newcommand{\th@mbprint}[3]{% + \put(\th@mbxpos,-\th@mbposyA){% + \begin{picture}(0,0)% + {\color{#3}\rule{\th@mbwidthx}{\th@mbheighty}}% + \end{picture}% + \begin{picture}(0,0)(0,-0.5\th@mbheighty+384930sp)% + \bgroup% + \setlength{\parindent}{0pt}% + \ifodd\c@CurrentPage% + \if@twoside% + \makebox[\th@mbwidthx][l]{{\color{#2}\hspace*{1pt}\space #1}}% + \else% + \makebox[\th@mbwidthx][r]{{\color{#2}#1\space}}% + \fi% + \else% + \makebox[\th@mbwidthx][r]{{\color{#2}#1\space}}% + \fi% + \egroup% + \end{picture}% + }% + } + +\AtBeginShipout{% + \ifx\th@mbcolumnnew\pagesLTS@zero% ok + \else% + \PackageError{thumbs}{Missing \string\addthumb\space after \string\thumbnewcolumn }{% + Command \string\thumbnewcolumn\space was used, but no new thumb placed with \string\addthumb\MessageBreak% + (at least not at the same page). After \string\thumbnewcolumn\space please always use an\MessageBreak% + \string\addthumb . Until the next \string\addthumb , there will be no thumb marks on the\MessageBreak% + pages. Starting a new column of thumb marks and not putting a thumb mark into\MessageBreak% + that column does not make sense. If you just want to get rid of column marks,\MessageBreak% + do not abuse \string\thumbnewcolumn\space but use \string\stopthumb .\MessageBreak% + (This error message will be repeated at all following pages,\MessageBreak% + \space until \string\addthumb\space is used.)\MessageBreak% + }% + \fi% + \setcounter{th@mbs@tmpA}{\value{CurrentPage}}% + \addtocounter{th@mbs@tmpA}{-1}% because CurrentPage is already the one of the next page + \def\th@mbxpos{\th@mbposx}% + \ifodd\c@th@mbs@tmpA% \relax + \else% + \if@twoside \def\th@mbxpos{-1pt}% \else \relax + \fi% + \fi% + \AtBeginShipoutUpperLeft{% + \setcounter{th@mbs@tmpA}{\th@mbonpage}% + \ifx\th@mbprinting\pagesLTS@one% + \th@mbprint{\th@mbtextA}{\th@mbtextcolourA}{\th@mbbackgroundcolourA}% + \ifnum\value{th@mbs@tmpA}>1% + \th@mb@yA% + \th@mbprint{\th@mbtextB}{\th@mbtextcolourB}{\th@mbbackgroundcolourB}% + \ifnum\value{th@mbs@tmpA}>2% + \th@mb@yA% + \th@mbprint{\th@mbtextC}{\th@mbtextcolourC}{\th@mbbackgroundcolourC}% + \ifnum\value{th@mbs@tmpA}>3% + \th@mb@yA% + \th@mbprint{\th@mbtextD}{\th@mbtextcolourD}{\th@mbbackgroundcolourD}% + \ifnum\value{th@mbs@tmpA}>4% + \th@mb@yA% + \th@mbprint{\th@mbtextE}{\th@mbtextcolourE}{\th@mbbackgroundcolourE}% + \ifnum\value{th@mbs@tmpA}>5% + \th@mb@yA% + \th@mbprint{\th@mbtextF}{\th@mbtextcolourF}{\th@mbbackgroundcolourF}% + \ifnum\value{th@mbs@tmpA}>6% + \PackageWarning{thumbs}{Too many thumbs on one page,\MessageBreak% + please see error message already given above.\MessageBreak% + }% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \fi% + \ifnum\value{th@mbs@tmpA}<2% \relax + \else% + \gdef\th@mbtextA{\th@mbtext}% + \gdef\th@mbtextcolourA{\th@mbtextcolour}% + \gdef\th@mbbackgroundcolourA{\th@mbbackgroundcolour}% + \gdef\th@mbposyA{\th@mbposy}% + \fi% + \gdef\th@mbonpage{0}% + \gdef\th@mbtoprint{0}% + }% + } + +\AfterLastShipout{% + \ifx\th@mbcolumnnew\pagesLTS@zero% ok + \else + \PackageWarningNoLine{thumbs}{% + Still missing \string\addthumb\space after \string\thumbnewcolumn\space after\MessageBreak% + last shipout: Command \string\thumbnewcolumn\space was used,\MessageBreak% + but no new thumb placed with \string\addthumb\space anywhere in the\MessageBreak% + rest of the document. Starting a new column of thumb\MessageBreak% + marks and not putting a thumb mark into that column\MessageBreak% + does not make sense. If you just want to get rid of\MessageBreak% + thumb marks, do not abuse \string\thumbnewcolumn\space but use\MessageBreak% + \string\stopthumb % + } + \fi + \ifx\th@mbcolumn\pagesLTS@zero% if there is only one column of thumbs + \global\edef\th@umbsperpage{\th@mbs} + \gdef\th@mbcolumn{1} + \fi + \ifx\th@umbsperpage\pagesLTS@zero + \gdef\th@umbsperpage{\th@mbs}% \th@mbs was increased with each \addthumb + \fi + \if@filesw + \immediate\write\@auxout{\string + \gdef\string\th@umbsperpage{\th@umbsperpage}} + \immediate\write\@auxout{\string + \gdef\string\th@mbsmax{\th@mbs}} + \expandafter\newwrite\csname tf@tmb\endcsname + \RerunFileCheck{\jobname.tmb}{% + \immediate\closeout \csname tf@tmb\endcsname + }{Warning: Rerun to get list of thumbs right!% + } + \immediate\openout \csname tf@tmb\endcsname = \jobname.tmb\relax + %\else there is a problem, but the according warning message was already given earlier. + \fi + } + +\newcommand{\addthumbsoverviewtocontents}[2]{% + \gdef\th@mbs@toc@level{#1} + \gdef\th@mbs@toc@text{#2} + } + +\newcommand{\thumbsoverview}[1]{% + \def\th@mbstest{none}% + \ifx\thumbs@thumblink\th@mbstest% OK + \else% + \@ifundefined{Hy@Warning}{% hyperref not loaded + \PackageError{thumbs}{Option thumblink != none, but hyperref not loaded}{% + The option thumblink of the thumbs package was not set to 'none',\MessageBreak% + but to some kind of hyperlinks, without using package hyperref.\MessageBreak% + Either choose option 'thumblink=none', or load package hyperref.\MessageBreak% + When pressing return, 'thumblink=none' will be set now.\MessageBreak% + }% + \gdef\thumbs@thumblink{none}% + }{% hyperref loaded + \def\th@mbstest{title}% + \ifx\thumbs@thumblink\th@mbstest% OK + \else% + \def\th@mbstest{page}% + \ifx\thumbs@thumblink\th@mbstest% OK + \else% + \def\th@mbstest{titleandpage}% + \ifx\thumbs@thumblink\th@mbstest% OK + \else% + \def\th@mbstest{line}% + \ifx\thumbs@thumblink\th@mbstest% OK + \else% + \def\th@mbstest{rule}% + \ifx\thumbs@thumblink\th@mbstest% OK + \else% + \PackageError{thumbs}{Option thumblink with invalid value}{% + Option thumblink has value '\thumbs@thumblink'.\MessageBreak% + Valid values are 'none', 'title', 'page',\MessageBreak% + 'titleandpage', 'line', or 'rule'.\MessageBreak% + 'rule' will be used now.\MessageBreak% + }% + \gdef\thumbs@thumblink{rule}% + \fi% + \fi% + \fi% + \fi% + \fi% + }% + \fi% + \edef\th@mbprintingovertoc{\th@mbprinting}% + \stopthumb% + \markboth{\MakeUppercase #1 }{\MakeUppercase #1 } + \setlength{\th@mbsposytocy}{\th@mbposy} + \setlength{\th@mbposy}{\th@mbsposytocyy} + \newcounter{th@mblinea} + \setcounter{th@mblinea}{1} + \newcounter{th@mblineb} + \setcounter{th@mblineb}{\th@umbsperpage} + \newcounter{FileLine} + \setcounter{FileLine}{1} + \newcounter{thumbsstop} + \setcounter{thumbsstop}{1} + \addtocounter{thumbsstop}{\th@mbsmax} + \whiledo{\value{FileLine}<\value{thumbsstop}} + {\if@twoside \cleardoublepage% + \else \clearpage% + \fi% + \ifnum\value{FileLine}=1% + \@ifundefined{Hy@Warning}{}{\phantomsection \label{TableOfThumbs}}% + \ifx\th@mbs@toc@level\empty% + \else \addcontentsline{toc}{\th@mbs@toc@level}{\th@mbs@toc@text}% + \fi% + \fi% + \null% + \th@mbs@verview% + \pagebreak% + \ifthumbs@verbose% + \message{THUMBS: Fileline: \arabic{FileLine}, a: \arabic{th@mblinea}, % + b: \arabic{th@mblineb}, per page: \th@umbsperpage, max: \th@mbsmax.^^J}% + \fi% + }% + \setlength{\th@mbposy}{\th@mbsposytocy}% + \ifx\th@mbprintingovertoc\pagesLTS@one% + \continuethumb% + \fi% + } + +\newcommand{\th@mbs@verview}{% + \ifthumbs@verbose% + \message{^^JPackage thumbs Info: Processing line \arabic{th@mblinea} to \arabic{th@mblineb} of \jobname.tmb.}% + \fi% + \setcounter{FileLine}{1}% + \AtBeginShipoutNext{% + \AtBeginShipoutUpperLeftForeground{% + \IfFileExists{\jobname.tmb}{% then + \openin\@instreamthumb=\jobname.tmb % + \whiledo{\value{FileLine}<\value{th@mblineb}} + {\ifthumbs@verbose% + \message{THUMBS: Processing \jobname.tmb line \arabic{FileLine}.}% + \fi% + \ifnum \value{FileLine}<\value{th@mblinea}% + \read\@instreamthumb to \@unused% + \ifthumbs@verbose% + \message{Can be skipped.^^J}% + \fi% + % NIRVANA: ignore the line by not executing it, + % i.e. not executing \@unused. + % % \@unused + \else% + \ifnum \value{FileLine}=\value{th@mblinea}% + \read\@instreamthumb to \@thumbsout% execute the code of this line + \ifthumbs@verbose% + \message{Executing \jobname.tmb line \arabic{FileLine}.^^J}% + \fi% + \@thumbsout% + \else% + \ifnum \value{FileLine}>\value{th@mblinea}% + \read\@instreamthumb to \@thumbsout% execute the code of this line + \ifthumbs@verbose% + \message{Executing \jobname.tmb line \arabic{FileLine}.^^J}% + \fi% + \@thumbsout% + \else% THIS SHOULD NEVER HAPPEN! + \PackageError{thumbs}{Unexpected error! (Really!)}{% + ! You are in trouble here.\MessageBreak% + ! Type X \string<return\string> to quit.\MessageBreak% + ! Delete temporary auxiliary files\MessageBreak% + ! (like \jobname.aux, \jobname.tmb, \jobname.out)\MessageBreak% + ! and retry the compilation.\MessageBreak% + ! If the error persists, cross your fingers\MessageBreak% + ! and try typing \string<return\string> to proceed.\MessageBreak% + ! If that does not work,\MessageBreak% + ! you might contact the maintainer of the thumbs package.\MessageBreak% + }% + \fi% + \fi% + \fi% + \stepcounter{FileLine}% + }% + \ifnum \value{FileLine}=\value{th@mblineb} + \ifthumbs@verbose% + \message{THUMBS: Processing \jobname.tmb line \arabic{FileLine}.}% + \fi% + \read\@instreamthumb to \@thumbsout% Execute the code of that line. + \ifthumbs@verbose% + \message{Executing \jobname.tmb line \arabic{FileLine}.^^J}% + \fi% + \@thumbsout% Well, really execute it here. + \stepcounter{FileLine}% + \fi% + \closein\@instreamthumb% + \addtocounter{th@mblinea}{\th@umbsperpage}% + \addtocounter{th@mblineb}{\th@umbsperpage}% + \setcounter{th@mbs@tmpA}{\th@mbsmax}% + \ifnum \value{th@mblineb}>\value{th@mbs@tmpA} + \setcounter{th@mblineb}{\value{th@mbs@tmpA}}% + \fi% + }{% else + \addglobalwarning{% + \PackageWarningNoLine{thumbs}{% + File \jobname.tmb not found.\MessageBreak% + Rerun to get thumbs overview page(s) right.\MessageBreak% + }% + }% + }% + }% + }% + } + + +\endinput +%% +%% End of file `thumbs.sty'. diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index a317020c1f9..a77b10cf3b6 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -351,7 +351,7 @@ my @TLP_working = qw( textcase textfit textgreek textmerg textopo textpath textpos tfrupee thailatex theoremref thesis-titlepage-fhac thinsp thmbox thmtools threeddice threeparttable threeparttablex - thumb thumbpdf thumby thuthesis + thumb thumbpdf thumbs thumby thuthesis ticket tikz-3dplot tikz-inet tikz-qtree tikz-timing timetable tipa tipa-de titlefoot titlepages titlepic titleref titlesec titling tkz-base tkz-doc tkz-linknodes tkz-orm tkz-tab diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc index e38c2341dcd..b515fedba87 100644 --- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc @@ -666,6 +666,7 @@ depend threeparttablex depend thinsp depend thmtools depend thumb +depend thumbs depend thumby depend ticket depend timesht diff --git a/Master/tlpkg/tlpsrc/thumbs.tlpsrc b/Master/tlpkg/tlpsrc/thumbs.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d --- /dev/null +++ b/Master/tlpkg/tlpsrc/thumbs.tlpsrc |