% \iffalse meta-comment % % File: thumbs.dtx % Version: 2014/03/09 v1.0q % % Copyright (C) 2010 - 2014 by % H.-Martin M"unch % % 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. See http://www.ctan.org/license/lppl1.3 for the details. % % 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, % the README, and the derived files % thumbs.sty, thumbs.pdf, % thumbs.ins, thumbs.drv, % thumbs-example.tex, thumbs-example.pdf. % % Distribution: % http://mirror.ctan.org/macros/latex/contrib/thumbs/thumbs.dtx % http://mirror.ctan.org/macros/latex/contrib/thumbs/thumbs.pdf % http://mirror.ctan.org/install/macros/latex/contrib/thumbs.tds.zip % % see http://www.ctan.org/pkg/thumbs (catalogue) % % 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:doc/latex/thumbs/thumbs-example.pdf % 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 % %<*install> \input docstrip.tex \Msg{**************************************************************************} \Msg{* Installation *} \Msg{* Package: thumbs 2014/03/09 v1.0q Thumb marks and overview page(s) (HMM)*} \Msg{**************************************************************************} \keepsilent \askforoverwritefalse \let\MetaPrefix\relax \preamble This is a generated file. Project: thumbs Version: 2014/03/09 v1.0q Copyright (C) 2010 - 2014 by H.-Martin M"unch The usual disclaimer applies: 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, the README, and the derived files thumbs.sty, thumbs.pdf, thumbs.ins, thumbs.drv, thumbs-example.tex, thumbs-example.pdf. In memoriam Tommy Muench + 2014/01/02. \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 % %<*ignore> \fi % % % \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}[2011/06/27] \ProvidesFile{thumbs.drv}% [2014/03/09 v1.0q Thumb marks and overview page(s) (HMM)] \documentclass[landscape]{ltxdoc}[2007/11/11]% v2.0u \usepackage[maxfloats=20]{morefloats}[2012/01/28]% v1.0f \usepackage{geometry}[2010/09/12]% v5.6 \usepackage{holtxdoc}[2012/03/21]% v0.24 %% 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 overview page(s) (HMM)},% pdfkeywords={LaTeX, thumb, thumbs, thumb index, thumbs index, index, H.-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} % % \end{macrocode} % % \fi % % \CheckSum{2779} % % \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{\MessageBreak} % \DoNotIndex{\NeedsTeXFormat,\DoNotIndex,\verb} % \DoNotIndex{\def,\edef,\gdef,\xdef,\global} % \DoNotIndex{\ifx,\listfiles,\mathord,\mathrm} % \DoNotIndex{\kvoptions,\SetupKeyvalOptions,\ProcessKeyvalOptions} % \DoNotIndex{\smallskip,\bigskip,\space,\thinspace,\ldots} % \DoNotIndex{\indent,\noindent,\newline,\linebreak,\pagebreak,\newpage} % \DoNotIndex{\textbf,\textit,\textsf,\texttt,\textsc,\textrm} % \DoNotIndex{\textquotedblleft,\textquotedblright} % \DoNotIndex{\plainTeX,\TeX,\LaTeX,\pdfLaTeX} % \DoNotIndex{\chapter,\section} % \DoNotIndex{\Huge,\Large,\large} % \DoNotIndex{\arabic,\the,\value,\ifnum,\setcounter,\addtocounter,\advance,\divide} % \DoNotIndex{\setlength,\textbackslash,\,} % \DoNotIndex{\csname,\endcsname,\color,\copyright,\frac,\null} % \DoNotIndex{\@PackageInfoNoLine,\thumbsinfo,\thumbsinfoa,\thumbsinfob} % \DoNotIndex{\hspace,\thepage,\do,\empty,\ss} % % \title{The \xpackage{thumbs} package} % \date{2014/03/09 v1.0q} % \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 method for large documents. % It must be loaded after the page size has been set, % when printing the document \textquotedblleft shrink to % page\textquotedblright{} should not be used, and a printer capable of % printing up to the border of the sheet of paper is needed % (or afterwards cutting the paper). % \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 \LaTeX{} 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.\\ % \xpackage{thumbs} must be loaded after the page size has been set, % when printing the document \textquotedblleft shrink to % page\textquotedblright\ should not be used, a printer capable of % printing up to the border of the sheet of paper is needed % (or afterwards cutting the paper).\\ % Usage with |\usepackage[landscape]{geometry}|, % |\documentclass[landscape]{|\ldots|}|, |\usepackage[landscape]{geometry}|, % |\usepackage{lscape}|, or |\usepackage{pdflscape}| is possible.\\ % 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.\\ % The \xpackage{thumbs} package takes the dimensions of the page % |\AtBeginDocument| and does not react to changes afterwards. % Therefore this package must be loaded \emph{after} the page dimensions % have been set, e.\,g. with package \xpackage{geometry} % (\url{http://ctan.org/pkg/geometry}). Of course it is also OK to just keep % the default page/paper settings, but when anything is changed, it must be % done before \xpackage{thumbs} executes its |\AtBeginDocument| code.\\ % The format of the paper, where the document shall be printed upon, % should also be used for creating the document. Then the document can % be printed without adapting the size, like e.\,g. \textquotedblleft shrink % to page\textquotedblright . That would add a white border around the document % and by moving the thumb marks from the edge of the paper they no longer appear % at the side of the stack of paper. (Therefore e.\,g. for printing the example % file to A4 paper it is necessary to add |a4paper| option to the document class % and recompile it! Then the thumb marks column change will occur at another % point, of course.) It is also necessary to use a printer % capable of printing up to the border of the sheet of paper. Alternatively % it is possible after the printing to cut the paper to the right size. % While performing this manually is probably quite cumbersome, % printing houses use paper, which is slightly larger than the % desired format, and afterwards cut it to format.\\ % Some faulty \xfile{pdf}-viewer adds a white line at the bottom and % right side of the document when presenting it. This does not change % the printed version. To test for this problem, a page of the example % file has been completely coloured. (Probably better exclude that page from % printing\ldots)\\ % When using the thumb marks overview page, it is necessary to |\protect| % entries like |\pi| (same as with entries in tables of contents, figures, % tables,\ldots).\\ % % \subsection{Options} % \DescribeMacro{options} % \indent The \xpackage{thumbs} package takes the following options: % % \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!) Option |width={autoauto}| leads to thumb marks, which are % just wide enough to fit the widest thumb mark text. % % \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 |\th@bmsvoffset| plus |\topmargin|. Dimensions (e.\,g. $1\unit{cm}$) % are also accepted. % % \pagebreak % % \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+\topmargin-\th@mbsdistance+\th@mbheighty+\headheight+\headsep+\textheight| % |+\footskip-\th@mbsdistance|\newline % |-\th@mbheighty|.\\ % Dimensions (e.\,g. $1\unit{cm}$) are also accepted. % % \subsubsection{eventxtindent\label{sss:eventxtindent}} % \DescribeMacro{eventxtindent} % \indent Option |eventxtindent| expects a dimension (default value: $5\unit{pt}$, % negative values are possible, of course), % by which the text inside of thumb marks on even pages is moved away from the % page edge, i.e. to the right. Probably using the same or at least a similar value % as for option |oddtxtexdent| makes sense. % % \subsubsection{oddtxtexdent\label{sss:oddtxtexdent}} % \DescribeMacro{oddtxtexdent} % \indent Option |oddtxtexdent| expects a dimension (default value: $5\unit{pt}$, % negative values are possible, of course), % by which the text inside of thumb marks on odd pages is moved away from the % page edge, i.e. to the left. Probably using the same or at least a similar value % as for option |eventxtindent| makes sense. % % \subsubsection{evenmarkindent\label{sss:evenmarkindent}} % \DescribeMacro{evenmarkindent} % \indent Option |evenmarkindent| expects a dimension (default value: $0\unit{pt}$, % negative values are possible, of course), % by which the thumb marks (background and text) on even pages are moved away from the % page edge, i.e. to the right. This might be usefull when the paper, % onto which the document is printed, is later cut to another format. % Probably using the same or at least a similar value as for option |oddmarkexdent| % makes sense. % % \subsubsection{oddmarkexdent\label{sss:oddmarkexdent}} % \DescribeMacro{oddmarkexdent} % \indent Option |oddmarkexdent| expects a dimension (default value: $0\unit{pt}$, % negative values are possible, of course), % by which the thumb marks (background and text) on odd pages are moved away from the % page edge, i.e. to the left. This might be usefull when the paper, % onto which the document is printed, is later cut to another format. % Probably using the same or at least a similar value as for option |oddmarkexdent| % makes sense. % % \subsubsection{evenprintvoffset\label{sss:evenprintvoffset}} % \DescribeMacro{evenprintvoffset} % \indent Option |evenprintvoffset| expects a dimension (default value: $0\unit{pt}$, % negative values are possible, of course), % by which the thumb marks (background and text) on even pages are moved downwards. % This might be usefull when a duplex printer shifts recto and verso pages % against each other by some small amount, e.g. a~millimeter or two, which % is not uncommon. Please do not use this option with another value than $0\unit{pt}$ % for files which you submit to other persons. Their printer probably shifts the % pages by another amount, which might even lead to increased mismatch % if both printers shift in opposite directions. Ideally the pdf viewer % would correct the shift depending on printer (or at least give some option % similar to \textquotedblleft shift verso pages by % \hbox{$x\unit{mm}$\textquotedblright{}.} % % \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} % % \subsubsection{nophantomsection\label{sss:nophantomsection}} % \DescribeMacro{nophantomsection} % \indent Option |nophantomsection| globally disables the automatical placement of a % |\phantomsection| before the thumb marks. Generally it is desirable to have a % hyperlink from the thumbs overview page to lead to the thumb mark and not to some % earlier place. Therefore automatically a |\phantomsection| is placed before each % thumb mark. But for example when using the thumb mark after a |\chapter{...}| % command, it is probably nicer to have the link point at the top of that chapter's % title (instead of the line below it). When automatical placing of the % |\phantomsection|s has been globally disabled, nevertheless manual use of % |\phantomsection| is still possible. The other way round: When automatical placing % of the |\phantomsection|s has \emph{not} been globally disabled, it can be disabled % just for the following thumb mark by the command |\thumbsnophantom|. % % \subsubsection{ignorehoffset, ignorevoffset\label{sss:ignoreoffset}} % \DescribeMacro{ignorehoffset} % \DescribeMacro{ignorevoffset} % \indent Usually |\hoffset| and |\voffset| should be regarded, % but moving the thumb marks away from the paper edge probably % makes them useless. Therefore |\hoffset| and |\voffset| are ignored % by default, or when option |ignorehoffset| or |ignorehoffset=true| is used % (and |ignorevoffset| or |ignorevoffset=true|, respectively). % But in case that the user wants to print at one sort of paper % but later trim it to another one, regarding the offsets would be % necessary. Therefore |ignorehoffset=false| and |ignorevoffset=false| % can be used to regard these offsets. (Combinations % |ignorehoffset=true, ignorevoffset=false| and % |ignorehoffset=false, ignorevoffset=true| are also possible.)\\ % % \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. % Look for\\ % |************** THUMB dimensions **************|\\ % in the \xfile{log} file for height and width of the thumb marks as well as % top and bottom thumb marks margins. % % \subsubsection{draft\label{sss:draft}} % \DescribeMacro{draft} % \indent Option |draft| (\emph{not} the default) sets the thumb mark width to % $2\unit{pt}$, thumb mark text colour to black and thumb mark background colour % to grey (|gray|). Either do not use this option with the \xpackage{thumbs} package at all, % or use |draft=false|, or |final|, or |final=true| to get the original appearance % of the thumb marks.\\ % % \subsubsection{hidethumbs\label{sss:hidethumbs}} % \DescribeMacro{hidethumbs} % \indent Option |hidethumbs| (\emph{not} the default) prevents \xpackage{thumbs} % to create thumb marks (or thumb marks overview pages). This could be useful % when thumb marks were placed, but for some reason no thumb marks (and overview pages) % shall be placed. Removing |\usepackage[...]{thumbs}| would not work but % create errors for unknown commands (e.\,g. |\addthumb|, |\addtitlethumb|, % |\thumbnewcolumn|, |\stopthumb|, |\continuethumb|, |\addthumbsoverviewtocontents|, % |\thumbsoverview|, |\thumbsoverviewback|, |\thumbsoverviewverso|, and % |\thumbsoverviewdouble|). (A~|\jobname.tmb| file is created nevertheless.)~-- % Either do not use this option with the \xpackage{thumbs} % package at all, or use |hidethumbs=false| to get the original appearance % of the thumb marks.\\ % % \subsubsection{pagecolor (obsolete)\label{sss:pagecolor}} % \DescribeMacro{pagecolor} % \indent Option |pagecolor| is obsolete. Instead the \xpackage{pagecolor} % package is used.\\ % Use |\pagecolor{...}| \emph{after} |\usepackage[...]{thumbs}| % and \emph{before} |\begin{document}| to define a background colour of the pages.\\ % % \subsubsection{evenindent (obsolete)\label{sss:evenindent}} % \DescribeMacro{evenindent} % \indent Option |evenindent| is obsolete and was replaced by |eventxtindent|.\\ % % \subsubsection{oddexdent (obsolete)\label{sss:oddexdent}} % \DescribeMacro{oddexdent} % \indent Option |oddexdent| is obsolete and was replaced by |oddtxtexdent|.\\ % % \pagebreak % % \subsection{Commands to be used in the document} % \subsubsection{\textbackslash addthumb} % \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).\\ % % \subsubsection{\textbackslash addtitlethumb} % \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.\\ % % \subsubsection{\textbackslash stopthumb and \textbackslash continuethumb} % \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.\\ % % \subsubsection{\textbackslash thumbsoverview/back/verso/double} % \DescribeMacro{\thumbsoverview} % \DescribeMacro{\thumbsoverviewback} % \DescribeMacro{\thumbsoverviewverso} % \DescribeMacro{\thumbsoverviewdouble} % The commands |\thumbsoverview|, |\thumbsoverviewback|, |\thumbsoverviewverso|, and/or % |\thumbsoverviewdouble| is/are used to place the overview page(s) for the thumb marks. % Their single parameter is used to mark this page/these pages (e.\,g. in the page header). % If these marks are not wished, |\thumbsoverview...{}| will generate empty marks in the % page header(s). |\thumbsoverview| can be used more than once (for example at the % beginning and at the end of the document, or |\thumbsoverview| at the beginning and % |\thumbsoverviewback| at the end). The overviews have labels |TableOfThumbs1|, % |TableOfThumbs2|, and so on, which can be referred to with e.\,g. |\pageref{TableOfThumbs1}|. % The reference |TableOfThumbs| (without number) aims at the last used Table of Thumbs % (for compatibility with older versions of this package). % \begin{description} % \item[-] |\thumbsoverview| prints the thumb marks at the right side % and (in |twoside| mode) skips left sides (useful e.\,g. at the beginning % of a document) % % \item[-] |\thumbsoverviewback| prints the thumb marks at the left side % and (in |twoside| mode) skips right sides (useful e.\,g. at the end % of a document) % % \item[-] |\thumbsoverviewverso| prints the thumb marks at the right side % and (in |twoside| mode) repeats them at the next left side and so on % (useful anywhere in the document and when one wants to prevent empty % pages) % % \item[-] |\thumbsoverviewdouble| prints the thumb marks at the left side % and (in |twoside| mode) repeats them at the next right side and so on % (useful anywhere in the document and when one wants to prevent empty % pages) % \end{description} % \smallskip % % \subsubsection{\textbackslash thumbnewcolumn} % \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|.\\ % % \subsubsection{\textbackslash addthumbsoverviewtocontents} % \DescribeMacro{\addthumbsoverviewtocontents} % |\addthumbsoverviewtocontents| with two arguments is a replacement for % |\addcontentsline{toc}{}{}|, where the first argument of % |\addthumbsoverviewtocontents| is for || and the second for ||. % 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|. % % \subsubsection{\textbackslash thumbsnophantom} % \DescribeMacro{\thumbsnophantom} % When automatical placing of the |\phantomsection|s has \emph{not} been globally % disabled by using option |nophantomsection| (see subsection~\ref{sss:nophantomsection}), % it can be disabled just for the following thumb mark by the command |\thumbsnophantom|. % % \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 Newer versions might be available (and better suited). % You programmed or found another alternative, % which is available at \url{CTAN.org}? % OK, send an e-mail to me with the name, location at \url{CTAN.org}, % 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 \usepackage{lipsum}[2011/04/14]% v1.2 \usepackage{eurosym}[1998/08/06]% v1.1 \usepackage[extension=pdf,% pdfpagelayout=TwoPageRight,pdfpagemode=UseThumbs,% plainpages=false,pdfpagelabels=true,% hyperindex=false,% pdflang={en},% pdftitle={thumbs package example},% pdfauthor={H.-Martin Muench},% pdfsubject={Example for the thumbs package},% pdfkeywords={LaTeX, thumbs, thumb marks, H.-Martin Muench},% pdfview=Fit,pdfstartview=Fit,% linktoc=all]{hyperref}[2012/11/06]% v6.83m \usepackage[thumblink=rule,linefill=dots,height={auto},minheight={47pt},% width={auto},distance={2mm},topthumbmargin={auto},bottomthumbmargin={auto},% eventxtindent={5pt},oddtxtexdent={5pt},% evenmarkindent={0pt},oddmarkexdent={0pt},evenprintvoffset={0pt},% nophantomsection=false,ignorehoffset=true,ignorevoffset=true,final=true,% hidethumbs=false,verbose=true]{thumbs}[2014/03/09]% v1.0q \nopagecolor% use \pagecolor{white} if \nopagecolor does not work \gdef\unit#1{\mathord{\thinspace\mathrm{#1}}} \makeatletter \ltx@ifpackageloaded{hyperref}{% hyperref loaded }{% hyperref not loaded \usepackage{url}% otherwise the "\url"s in this example must be removed manually } \makeatother \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.0q as of 2014/03/09 (HMM). The used options were \texttt{thumblink=rule}, \texttt{linefill=dots}, \texttt{height=auto}, \texttt{minheight=\{47pt\}}, \texttt{width={auto}}, \texttt{distance=\{2mm\}}, \newline \texttt{topthumbmargin=\{auto\}}, \texttt{bottomthumbmargin=\{auto\}}, \newline \texttt{eventxtindent=\{5pt\}}, \texttt{oddtxtexdent=\{5pt\}}, \texttt{evenmarkindent=\{0pt\}}, \texttt{oddmarkexdent=\{0pt\}}, \texttt{evenprintvoffset=\{0pt\}}, \texttt{nophantomsection=false}, \texttt{ignorehoffset=true}, \texttt{ignorevoffset=true}, \newline \texttt{final=true},\texttt{hidethumbs=false}, and \texttt{verbose=true}. \noindent 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{teal} 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.}\newline \bigskip \textbf{% For testing purpose page \pageref{greenpage} has been completely coloured! \newline Better exclude it from printing\ldots \newline} \bigskip Some thumb mark texts are too large for the thumb mark by intention (especially when the paper size and therefore also the thumb mark size is decreased). When option \texttt{width=\{autoauto\}} would be used, the thumb mark width would be automatically increased. Please see page~\pageref{HugeText} for details! \bigskip For printing this example to another format of paper (e.\,g. A4) it is necessary to add the according option (e.\,g. \verb|a4paper|) to the document class and recompile it! (In that case the thumb marks column change will occur at another point, of course.) With paper format equal to document format the document can be printed without adapting the size, like e.\,g. \textquotedblleft shrink to page\textquotedblright . That would add a white border around the document and by moving the thumb marks from the edge of the paper they no longer appear at the side of the stack of paper. It is also necessary to use a printer capable of printing up to the border of the sheet of paper. Alternatively it is possible after the printing to cut the paper to the right size. While performing this manually is probably quite cumbersome, printing houses use paper, which is slightly larger than the desired format, and afterwards cut it to format. \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 \verb|\addthumbsoverviewtocontents| adds the thumb marks overview page to the table of contents. \smallskip Generally it is desirable to have a hyperlink from the thumbs overview page to lead to the thumb mark and not to some earlier place. Therefore automatically a \verb|\phantomsection| is placed before each thumb mark. But for example when using the thumb mark after a \verb|\chapter{...}| command, it is probably nicer to have the link point at the top of that chapter's title (instead of the line below it). The automatical placing of the \verb|\phantomsection| can be disabled either globally by using option \texttt{nophantomsection}, or locally for the next thumb mark by the command \verb|\thumbsnophantom|. (When disabled globally, still manual use of \verb|\phantomsection| is possible.) % \end{macrocode} % \pagebreak % \begin{macrocode} \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 thumb marks for some page(s): \newpage \stopthumb The command \begin{verbatim} \stopthumb \end{verbatim} was used here. Until another \verb|\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 paragraph}{\Huge{Huge\\ \ Text}}{yellow}{green} \bigskip \textquotedblleft {\Huge{Huge Text}}\textquotedblright\ is too large for the thumb mark. When option \texttt{width=\{autoauto\}} would be used, the thumb mark width would be automatically increased. Now the text is either split over two lines (try \verb|Huge\\ \ Text| for another format) or (in case \verb|Huge~Text| is used) is written over the border of the thumb mark. When the text is too wide for the thumb mark and cannot be split, \LaTeX{} might nevertheless place the text into the next line. By this the text is placed too low. Adding a \hbox{\verb|\protect\vspace*{-| some lenght \verb|}|} to the text could help, for example\\ \verb|\addthumb{Huge Text}{\protect\vspace*{-3pt}\Huge{Huge~Text}}...|. \label{HugeText} \addthumb{Huge Text}{\Huge{Huge~Text}}{red}{blue} \addthumb{Huge Bold Text}{\Huge{\textbf{HBT}}}{black}{yellow} \bigskip When there is more than one thumb mark at one page, this is also no problem. \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. (About automatically increasing the thumb mark width to the thumb mark text width please see the note at page~\pageref{HugeText}.) \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 column is started (which will happen here). \newpage \addthumb{B mark}{\Huge{\textbf{B}}}{brown}{pink} There! A new thumb column 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 curious 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 Let us have a look at \verb|\thumbsoverviewverso|: \addthumbsoverviewtocontents{section}{Table of Thumbs, verso mode}% \thumbsoverviewverso{Table of Thumbs, verso mode} \newpage And, of course, also at \verb|\thumbsoverviewdouble|: \addthumbsoverviewtocontents{section}{Table of Thumbs, double mode}% \thumbsoverviewdouble{Table of Thumbs, double mode} \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 column was started manually! \newpage Some text. \newpage \addthumb{G mark}{\Huge{\textbf{G}}}{orange}{violet} I just added another thumb mark. \newpage \pagecolor{green} \makeatletter \ltx@ifpackageloaded{hyperref}{% hyperref loaded \phantomsection% }{% hyperref not loaded }% \makeatother % \end{macrocode} % \pagebreak % \begin{macrocode} \label{greenpage} Some faulty pdf-viewer sometimes (for the same document!) adds a white line at the bottom and right side of the document when presenting it. This does not change the printed version. To test for this problem, this page has been completely coloured. (Probably better exclude this page from printing!) \textsc{Heiko Oberdiek} wrote at Tue, 26 Apr 2011 14:13:29 +0200 in the \newline comp.text.tex newsgroup (see e.\,g. \newline \url{http://groups.google.com/group/de.comp.text.tex/msg/b3aea4a60e1c3737}):\newline \textquotedblleft Der Ursprung ist 0 0, da gibt es nicht viel zu runden; bei den anderen Seiten werden pt als bp in die PDF-Datei geschrieben, d.h. der Balken ist um 72.27/72 zu gro\ss{}, das sollte auch Rundungsfehler abdecken.\textquotedblright (The origin is 0 0, there is not much to be rounded; for the other sides the $\unit{pt}$ are written as $\unit{bp}$ into the pdf-file, i.\,e. the rule is too large by $72.27/72$, which should cover also rounding errors.) The thumb marks are also too large - on purpose! This has been done to assure, that they cover the page up to its (paper) border, therefore they are placed a little bit over the paper margin. Now I red somewhere in the net (should have remembered to note the url), that white margins are presented, whenever there is some object outside of the page. Thus, it is a feature, not a bug?! What I do not understand: The same document sometimes is presented with white lines and sometimes without (same viewer, same PC).\newline But at least it does not influence the printed version. \newpage \pagecolor{white} It is possible to use the Table of Thumbs more than once (for example at the beginning and the end of the document) and to refer to them via e.\,g. \verb|\pageref{TableOfThumbs1}, \pageref{TableOfThumbs2}|,... , here: page \pageref{TableOfThumbs1}, page \pageref{TableOfThumbs2}, and via e.\,g. \verb|\pageref{TableOfThumbs}| it is referred to the last used Table of Thumbs (for compatibility with older package versions). If there is only one Table of Thumbs, this one is also the last one, of course. Here it is at page \pageref{TableOfThumbs}.\newline Now let us have a look at \verb|\thumbsoverviewback|: \addthumbsoverviewtocontents{section}{Table of Thumbs, back mode}% \thumbsoverviewback{Table of Thumbs, back mode} \newpage Text can be placed after any of the Tables of Thumbs, of course. \end{document} % % \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}[2011/06/27] \ProvidesPackage{thumbs}[2014/03/09 v1.0q Thumb marks and overview 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 method for large documents, %% as well as an overview page. % \end{macrocode} % % For possible SW(P) users, we issue a warning. Unfortunately, we cannot check % for the used software (Can we? \xfile{tcilatex.tex} is \emph{probably} exactly there % when SW(P) is used, but it \emph{could} also be there without SW(P) for compatibility % reasons.), 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. The options for those packages might be changed by the user~-- % I~neither tested all available options nor the current \xpackage{thumbs} package, % thus first test, whether the document can be compiled with these options, % and then try to change them according to your wishes % (\emph{or just get a current \TeX{} distribution instead!}). % % \begin{macrocode} \IfFileExists{tcilatex.tex}{% Quite probably SWP/SW/SN \PackageWarningNoLine{thumbs}{% When compiling with SWP 5.50 Build 2960\MessageBreak% (copyright MacKichan Software, Inc.)\MessageBreak% and using an older version of the thumbs package\MessageBreak% these additional packages were needed:\MessageBreak% \string\usepackage[T1]{fontenc}\MessageBreak% \string\usepackage{amsfonts}\MessageBreak% \string\usepackage[math]{cellspace}\MessageBreak% \string\usepackage{xcolor}\MessageBreak% \string\pagecolor{white}\MessageBreak% \string\providecommand{\string\QTO}[2]{\string##2}\MessageBreak% especially before hyperref and thumbs,\MessageBreak% but best right after the \string\documentclass!% }% }{% Probably not SWP/SW/SN } % \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}[2011/06/30]% v3.11 % \end{macrocode} % % as well as some other packages: % % \begin{macrocode} \RequirePackage{atbegshi}[2011/10/05]% v1.16 \RequirePackage{xcolor}[2007/01/21]% v2.11 \RequirePackage{picture}[2009/10/11]% v1.3 \RequirePackage{alphalph}[2011/05/13]% v2.4 % \end{macrocode} % % For the total number of the current page we need the \xpackage{pageslts} % package of myself (see subsection~\ref{ss:Downloads}). It also loads % the \xpackage{undolabl} package, which is needed for |\overridelabel|: % % \begin{macrocode} \RequirePackage{pageslts}[2014/01/19]% v1.2c \RequirePackage{pagecolor}[2012/02/23]% v1.0e \RequirePackage{rerunfilecheck}[2011/04/15]% v1.7 \RequirePackage{infwarerr}[2010/04/08]% v1.3 \RequirePackage{ltxcmds}[2011/11/09]% v1.22 \RequirePackage{atveryend}[2011/06/30]% v1.8 % \end{macrocode} % % A last information for the user: % % \begin{macrocode} %% thumbs may work with earlier versions of LaTeX2e and those packages, %% but this was not tested. Please consider updating your LaTeX contribution %% and 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.\\ % % \LaTeXe{} 2011/06/27 changed the |\enddocument| command and thus % broke the \xpackage{atveryend} package, which was then fixed. % If new \LaTeXe{} and old \xpackage{atveryend} are combined, % |\AtVeryVeryEnd| will never be called. % |\@ifl@t@r\fmtversion| is from |\@needsf@rmat| as in % \texttt{File L: ltclass.dtx Date: 2007/08/05 Version v1.1h}, line~259, % of The \LaTeXe{} Sources % by \textsc{Johannes Braams, David Carlisle, Alan Jeffrey, Leslie Lamport, % % Frank Mittelbach, Chris Rowley, and Rainer Sch\"{o}pf} % as of 2011/06/27, p.~464. % % \begin{macrocode} \@ifl@t@r\fmtversion{2011/06/27}% or possibly even newer {\@ifpackagelater{atveryend}{2011/06/29}% {% 2011/06/30, v1.8, or even more recent: OK }{% else: older package version, no \AtVeryVeryEnd \PackageError{thumbs}{Outdated atveryend package version}{% LaTeX 2011/06/27 has changed \string\enddocument\space and thus broken the\MessageBreak% \string\AtVeryVeryEnd\space command/hooking of atveryend package as of\MessageBreak% 2011/04/23, v1.7. Package versions 2011/06/30, v1.8, and later work with\MessageBreak% the new LaTeX format, but some older package version was loaded.\MessageBreak% Please update to the newer atveryend package.\MessageBreak% For fixing this problem until the updated package is installed,\MessageBreak% \string\let\string\AtVeryVeryEnd\string\AtEndAfterFileList\MessageBreak% is used now, fingers crossed.% }% \let\AtVeryVeryEnd\AtEndAfterFileList% \AtEndAfterFileList{% if there is \AtVeryVeryEnd inside \AtEndAfterFileList \let\AtEndAfterFileList\ltx@firstofone% } } }{% else: older fmtversion: OK % \end{macrocode} % % In this case the used \TeX{} format is outdated, but when\\ % |\NeedsTeXFormat{LaTeX2e}[2011/06/27]|\\ % is executed at the beginning of \xpackage{regstats} package, % the appropriate warning message is issued automatically % (and \xpackage{thumbs} probably also works with older versions). % % \begin{macrocode} } % \end{macrocode} % % The options are introduced: % % \begin{macrocode} \SetupKeyvalOptions{family=thumbs,prefix=thumbs@} \DeclareStringOption{linefill}[dots]% \thumbs@linefill \DeclareStringOption[rule]{thumblink}[rule] \DeclareStringOption[47pt]{minheight}[47pt] \DeclareStringOption{height}[auto] \DeclareStringOption{width}[auto] \DeclareStringOption{distance}[2mm] \DeclareStringOption{topthumbmargin}[auto] \DeclareStringOption{bottomthumbmargin}[auto] \DeclareStringOption[5pt]{eventxtindent}[5pt] \DeclareStringOption[5pt]{oddtxtexdent}[5pt] \DeclareStringOption[0pt]{evenmarkindent}[0pt] \DeclareStringOption[0pt]{oddmarkexdent}[0pt] \DeclareStringOption[0pt]{evenprintvoffset}[0pt] \DeclareBoolOption[false]{txtcentered} \DeclareBoolOption[true]{ignorehoffset} \DeclareBoolOption[true]{ignorevoffset} \DeclareBoolOption{nophantomsection}% false by default, but true if used \DeclareBoolOption[true]{verbose} \DeclareComplementaryOption{silent}{verbose} \DeclareBoolOption{draft} \DeclareComplementaryOption{final}{draft} \DeclareBoolOption[false]{hidethumbs} % \end{macrocode} % % \DescribeMacro{obsolete options} % The options |pagecolor|, |evenindent|, and |oddexdent| are obsolete now, % but for compatibility with older documents they are still provided % at the time being (will be removed in some future version). % % \begin{macrocode} %% Obsolete options: \DeclareStringOption{pagecolor} \DeclareStringOption{evenindent} \DeclareStringOption{oddexdent} \ProcessKeyvalOptions* % \end{macrocode} % % \pagebreak % % The (background) page colour is set to |\thepagecolor| (from the % \xpackage{pagecolor} package), because the \xpackage{xcolour} package % needs a defined colour here (it~can be changed later). % % \begin{macrocode} \ifx\thumbs@pagecolor\empty\relax \pagecolor{\thepagecolor} \else \PackageError{thumbs}{Option pagecolor is obsolete}{% Instead the pagecolor package is used.\MessageBreak% Use \string\pagecolor{...}\space after \string\usepackage[...]{thumbs}\space and\MessageBreak% before \string\begin{document}\space to define a background colour\MessageBreak% of the pages} \pagecolor{\thumbs@pagecolor} \fi \ifx\thumbs@evenindent\empty\relax \else \PackageError{thumbs}{Option evenindent is obsolete}{% Option "evenindent" was renamed to "eventxtindent",\MessageBreak% the obsolete "evenindent" is no longer regarded.\MessageBreak% Please change your document accordingly} \fi \ifx\thumbs@oddexdent\empty\relax \else \PackageError{thumbs}{Option oddexdent is obsolete}{% Option "oddexdent" was renamed to "oddtxtexdent",\MessageBreak% the obsolete "oddexdent" is no longer regarded.\MessageBreak% Please change your document accordingly} \fi % \end{macrocode} % % \DescribeMacro{ignorehoffset} % \DescribeMacro{ignorevoffset} % Usually |\hoffset| and |\voffset| should be regarded, but moving the % thumb marks away from the paper edge probably makes them useless. % Therefore |\hoffset| and |\voffset| are ignored by default, or % when option |ignorehoffset| or |ignorehoffset=true| is used % (and |ignorevoffset| or |ignorevoffset=true|, respectively). % But in case that the user wants to print at one sort of paper % but later trim it to another one, regarding the offsets would be % necessary. Therefore |ignorehoffset=false| and |ignorevoffset=false| % can be used to regard these offsets. (Combinations % |ignorehoffset=true, ignorevoffset=false| and % |ignorehoffset=false, ignorevoffset=true| are also possible.) % % \begin{macrocode} \ifthumbs@ignorehoffset \PackageInfo{thumbs}{% Option ignorehoffset NOT =false:\MessageBreak% hoffset will be ignored.\MessageBreak% To make thumbs regard hoffset use option\MessageBreak% ignorehoffset=false} \gdef\th@bmshoffset{0pt} \else \PackageInfo{thumbs}{% Option ignorehoffset=false:\MessageBreak% hoffset will be regarded.\MessageBreak% This might move the thumb marks away from the paper edge} \gdef\th@bmshoffset{\hoffset} \fi \ifthumbs@ignorevoffset \PackageInfo{thumbs}{% Option ignorevoffset NOT =false:\MessageBreak% voffset will be ignored.\MessageBreak% To make thumbs regard voffset use option\MessageBreak% ignorevoffset=false} \gdef\th@bmsvoffset{-\voffset} \else \PackageInfo{thumbs}{% Option ignorevoffset=false:\MessageBreak% voffset will be regarded.\MessageBreak% This might move the thumb mark outside of the printable area} \gdef\th@bmsvoffset{\voffset} \fi % \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} % % \pagebreak % % 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@mbposyB \newdimen\th@mbposytop \newdimen\th@mbposybottom \newdimen\th@mbwidthxtoc \newdimen\th@mbwidthtmp \newdimen\th@mbsposytocy \newdimen\th@mbsposytocyy % \end{macrocode} % % Horizontal indention of thumb marks text on odd/even pages % according to the choosen options: % % \begin{macrocode} \newdimen\th@mbHitO \setlength{\th@mbHitO}{\thumbs@oddtxtexdent} \newdimen\th@mbHitE \setlength{\th@mbHitE}{\thumbs@eventxtindent} % \end{macrocode} % % Horizontal indention of whole thumb marks on odd/even pages % according to the choosen options: % % \begin{macrocode} \newdimen\th@mbHimO \setlength{\th@mbHimO}{\thumbs@oddmarkexdent} \newdimen\th@mbHimE \setlength{\th@mbHimE}{\thumbs@evenmarkindent} % \end{macrocode} % % Vertical distance between thumb marks on odd/even pages % according to the choosen option: % % \begin{macrocode} \newdimen\th@mbsdistance \ifx\thumbs@distance\empty% \setlength{\th@mbsdistance}{1mm} \else \setlength{\th@mbsdistance}{\thumbs@distance} \fi % \end{macrocode} % % \begin{macrocode} \ifthumbs@verbose% \relax \else \PackageInfo{thumbs}{% Option verbose=false (or silent=true) found:\MessageBreak% You will lose some information} \fi % \end{macrocode} % % We create a new |Box| for the thumbs and make some global definitions. % % \begin{macrocode} \newbox\ThumbsBox \gdef\th@mbs{0} \gdef\th@mbsmax{0} \gdef\th@umbsperpage{0}% will be set via .aux file \gdef\th@umbsperpagecount{0} \gdef\th@mbtitle{} \gdef\th@mbtext{} \gdef\th@mbtextcolour{\thepagecolor} \gdef\th@mbbackgroundcolour{\thepagecolor} \gdef\th@mbcolumn{0} \gdef\th@mbtextA{} \gdef\th@mbtextcolourA{\thepagecolor} \gdef\th@mbbackgroundcolourA{\thepagecolor} \gdef\th@mbprinting{1} \gdef\th@mbtoprint{0} \gdef\th@mbonpage{0} \gdef\th@mbonpagemax{0} \gdef\th@mbcolumnnew{0} \gdef\th@mbs@toc@level{} \gdef\th@mbs@toc@text{} \gdef\th@mbmaxwidth{0pt} \gdef\th@mb@titlelabel{} \gdef\th@mbstable{0}% number of thumb marks overview tables % \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} % % \begin{macro}{\th@mb@txtBox} % |\th@mb@txtBox| writes its second argument (most likely |\th@mb@tmp@text|) % in normal text size. Sometimes another text size could % \textquotedblleft leak\textquotedblright{} from the respective page, % |\normalsize| prevents this. If another text size is whished for, % it can always be changed inside |\th@mb@tmp@text|. % The colour given in the first argument (most likely |\th@mb@tmp@textcolour|) % is used and either |\centering| (depending on the |txtcentered| option) or % |\raggedleft| or |\raggedright| (depending on the third argument). % The forth argument determines the width of the |\parbox|. % % \begin{macrocode} \newcommand{\th@mb@txtBox}[4]{% \parbox[c][\th@mbheighty][c]{#4}{% \settowidth{\th@mbwidthtmp}{\normalsize #2}% \addtolength{\th@mbwidthtmp}{-#4}% \ifthumbs@txtcentered% {\centering{\color{#1}\normalsize #2}}% \else% \def\th@mbstest{#3}% \def\th@mbstestb{r}% \ifx\th@mbstest\th@mbstestb% \ifdim\th@mbwidthtmp >0sp\relax\hspace*{-\th@mbwidthtmp}\fi% {\raggedleft\leftskip 0sp minus \textwidth{\hfill\color{#1}\normalsize{#2}}}% \else% \th@mbstest = l {\raggedright{\color{#1}\normalsize\hspace*{1pt}\space{#2}}}% \fi% \fi% }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\setth@mbheight} % In |\setth@mbheight| the height of a thumb mark % (for automatical thumb heights) is computed as\\ % \textquotedblleft |((Thumbs extension) / (Number of Thumbs)) - (2| % $\times $\ |distance between Thumbs)|\textquotedblright. % % \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 \@tempcnta=\th@mbsmax\relax \ifnum\@tempcnta>1 \divide\th@mbheighty\th@mbsmax \fi \advance\th@mbheighty-\th@mbsdistance \advance\th@mbheighty-\th@mbsdistance } % \end{macrocode} % \end{macro} % % \pagebreak % % At the beginning of the document |\AtBeginDocument| is executed. % |\th@bmshoffset| and |\th@bmsvoffset| are set again, because % |\hoffset| and |\voffset| could have been changed. % % \begin{macrocode} \AtBeginDocument{% \ifthumbs@ignorehoffset \gdef\th@bmshoffset{0pt} \else \gdef\th@bmshoffset{\hoffset} \fi \ifthumbs@ignorevoffset \gdef\th@bmsvoffset{-\voffset} \else \gdef\th@bmsvoffset{\voffset} \fi \xdef\th@mbpaperwidth{\the\paperwidth} \setlength{\@tempdima}{1pt} \ifdim \thumbs@minheight < \@tempdima% too small \setlength{\thumbs@minheight}{1pt} \else \ifdim \thumbs@minheight = \@tempdima% small, but ok \else \ifdim \thumbs@minheight > \@tempdima% ok \else \PackageError{thumbs}{Option minheight has invalid value}{% As value for option minheight please use\MessageBreak% a number and a length unit (e.g. mm, cm, pt)\MessageBreak% and no space between them\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{\@tempdima}{\thumbs@minheight} % \end{macrocode} % % Thumb height |\th@mbheighty| is treated. If the value is empty, % it is set to |\@tempdima|, which was just defined to be $47\unit{pt}$ % (by default, or to the value chosen by the user with package option % |minheight={...}|): % % \begin{macrocode} \ifx\thumbs@height\empty% \setlength{\th@mbheighty}{\@tempdima} \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 enough:\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 by \@tempdima% = \thumbs@minheight \fi \else % \end{macrocode} % % When a value has been given for the thumb marks' height, this fixed value is used. % % \begin{macrocode} \ifthumbs@verbose \edef\thumbsinfo{\the\th@mbheighty} \PackageInfo{thumbs}{Now setting thumbs' height to \thumbsinfo .} \fi \setlength{\th@mbheighty}{\thumbs@height} \fi \fi % \end{macrocode} % % Read in the |\jobname.tmb|-file: % % \begin{macrocode} \newread\@instreamthumb% % \end{macrocode} % % Inform the users about the dimensions of the thumb marks (look in the \xfile{log} file): % % \begin{macrocode} \ifthumbs@verbose \message{^^J} \@PackageInfoNoLine{thumbs}{************** THUMB dimensions **************} \edef\thumbsinfo{\the\th@mbheighty} \@PackageInfoNoLine{thumbs}{The height of the thumb marks is \thumbsinfo} \fi % \end{macrocode} % % Setting the thumb mark width (|\th@mbwidthx|): % % \begin{macrocode} \ifthumbs@draft \setlength{\th@mbwidthx}{2pt} \else \setlength{\th@mbwidthx}{\paperwidth} \advance\th@mbwidthx-\textwidth \divide\th@mbwidthx by 4 \setlength{\@tempdima}{0sp} \ifx\thumbs@width\empty% \else % \end{macrocode} % \pagebreak % \begin{macrocode} \def\th@mbstest{auto} \ifx\thumbs@width\th@mbstest% \else \def\th@mbstest{autoauto} \ifx\thumbs@width\th@mbstest% \@ifundefined{th@mbmaxwidtha}{% \if@filesw% \gdef\th@mbmaxwidtha{0pt} \setlength{\th@mbwidthx}{\th@mbmaxwidtha} \AtEndAfterFileList{ \PackageWarningNoLine{thumbs}{% \string\th@mbmaxwidtha\space undefined.\MessageBreak% Rerun to get the thumb marks width right% } } \else \PackageError{thumbs}{% You cannot use option autoauto without \jobname.aux file.% } \fi }{%\else \setlength{\th@mbwidthx}{\th@mbmaxwidtha} }%\fi \else \ifdim \thumbs@width > \@tempdima% OK \setlength{\th@mbwidthx}{\thumbs@width} \else \PackageError{thumbs}{Thumbs not wide enough}{% 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 \fi \fi \ifthumbs@verbose \edef\thumbsinfo{\the\th@mbwidthx} \@PackageInfoNoLine{thumbs}{The width of the thumb marks is \thumbsinfo} \ifthumbs@draft \@PackageInfoNoLine{thumbs}{because thumbs package is in draft mode} \fi \fi % \end{macrocode} % % \pagebreak % % Setting the position of the first/top thumb mark. Vertical (y) position % is a little bit complicated, because option |\thumbs@topthumbmargin| must be handled: % % \begin{macrocode} % Thumb position x \th@mbposx \setlength{\th@mbposx}{\paperwidth} \advance\th@mbposx-\th@mbwidthx \ifthumbs@ignorehoffset \advance\th@mbposx-\hoffset \fi \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+\th@bmsvoffset \advance\th@mbposy+\topmargin \advance\th@mbposy-\th@mbsdistance \advance\th@mbposy+\th@mbheighty \else \setlength{\@tempdima}{-1pt} \ifdim \thumbs@topthumbmargin > \@tempdima% 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-\th@mbsdistance \advance\th@mbposy+\th@mbheighty \fi \setlength{\th@mbposytop}{\th@mbposy} \ifthumbs@verbose% \setlength{\@tempdimc}{\th@mbposytop} \advance\@tempdimc-\th@mbheighty \advance\@tempdimc+\th@mbsdistance \edef\thumbsinfo{\the\@tempdimc} \@PackageInfoNoLine{thumbs}{The top thumb margin is \thumbsinfo} \fi % \end{macrocode} % % \pagebreak % % 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} \ifthumbs@ignorevoffset% \relax \else \advance\th@mbposybottom+\th@bmsvoffset \fi \advance\th@mbposybottom+\topmargin \advance\th@mbposybottom-\th@mbsdistance \advance\th@mbposybottom+\th@mbheighty \advance\th@mbposybottom+\headheight \advance\th@mbposybottom+\headsep \advance\th@mbposybottom+\textheight \advance\th@mbposybottom+\footskip \advance\th@mbposybottom-\th@mbsdistance \advance\th@mbposybottom-\th@mbheighty \else \setlength{\@tempdima}{\paperheight} \advance\@tempdima by -\thumbs@bottomthumbmargin \advance\@tempdima by -\th@mbposytop \advance\@tempdima by -\th@mbsdistance \advance\@tempdima by -\th@mbheighty \advance\@tempdima by -\th@mbsdistance \ifdim \@tempdima > 0sp \relax \else \setlength{\@tempdima}{\paperheight} \advance\@tempdima by -\th@mbposytop \advance\@tempdima by -\th@mbsdistance \advance\@tempdima by -\th@mbheighty \advance\@tempdima by -\th@mbsdistance \advance\@tempdima by -1pt \PackageWarning{thumbs}{Thumbs column ending too high.\MessageBreak% Option bottomthumbmargin has value "\thumbs@bottomthumbmargin ".\MessageBreak% bottomthumbmargin will be set to "\the\@tempdima".\MessageBreak% } \xdef\thumbs@bottomthumbmargin{\the\@tempdima} \fi % \end{macrocode} % \pagebreak % \begin{macrocode} \setlength{\@tempdima}{\thumbs@bottomthumbmargin} \setlength{\@tempdimc}{-1pt} \ifdim \@tempdima < \@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 \ifthumbs@verbose% \setlength{\@tempdimc}{\paperheight} \advance\@tempdimc by -\th@mbposybottom \edef\thumbsinfo{\the\@tempdimc} \@PackageInfoNoLine{thumbs}{The bottom thumb margin is \thumbsinfo} \@PackageInfoNoLine{thumbs}{**********************************************} \message{^^J} \fi % \end{macrocode} % % |\th@mbposyA| is 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} % % \begin{macro}{\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% \thumborigaddthumb{}{}{\string\thepagecolor}{\string\thepagecolor}% \th@mb@dvance% \fi% } % \end{macrocode} % \end{macro} % % \begin{macro}{\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} % \end{macro} % % \begin{macro}{\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]{% \xdef\th@mb@titlelabel{#5}% \addthumb{#1}{#2}{#3}{#4}% \xdef\th@mb@titlelabel{}% } % \end{macrocode} % \end{macro} % % \pagebreak % % \begin{macro}{\thumbsnophantom} % To locally disable the setting of a |\phantomsection| before a thumb mark, % the command |\thumbsnophantom| is provided. (But at first it is not disabled.) % % \begin{macrocode} \gdef\th@mbsphantom{1} \newcommand{\thumbsnophantom}{\gdef\th@mbsphantom{0}} % \end{macrocode} % \end{macro} % % \begin{macro}{\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% \PackageInfo{thumbs}{% Thumbs column full, starting another column.\MessageBreak% }% \setlength{\th@mbposy}{\th@mbposytop}% \advance\th@mbposy\th@mbsdistance% \ifx\th@mbcolumn\pagesLTS@zero% \xdef\th@umbsperpagecount{\th@mbs}% \gdef\th@mbcolumn{1}% \fi% \fi% \@tempcnta=\th@mbs\relax% \advance\@tempcnta by 1% \xdef\th@mbs{\the\@tempcnta}% % \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} % % The width of the thumb mark text is determined and compared to the width of the % thumb mark (rule). When the text is wider than the rule, this has to be changed % (either automatically with option |width={autoauto}| in the next compilation run % or manually by changing |width={|\ldots|}| by the user). It could be acceptable % to have a thumb mark text consisting of more than one line, of course, in which % case nothing needs to be changed. Possible horizontal movement (|\th@mbHitO|, % |\th@mbHitE|) has to be taken into account. % % \begin{macrocode} \settowidth{\@tempdima}{\th@mbtext}% \ifdim\th@mbHitO>\th@mbHitE\relax% \advance\@tempdima+\th@mbHitO% \else% \advance\@tempdima+\th@mbHitE% \fi% \ifdim\@tempdima>\th@mbmaxwidth% \xdef\th@mbmaxwidth{\the\@tempdima}% \fi% \ifdim\@tempdima>\th@mbwidthx% \ifthumbs@draft% \relax \else% \edef\thumbsinfoa{\the\th@mbwidthx} \edef\thumbsinfob{\the\@tempdima} \PackageWarning{thumbs}{% Thumb mark too small (width: \thumbsinfoa )\MessageBreak% or its text too wide (width: \thumbsinfob )\MessageBreak% }% \fi% \fi% % \end{macrocode} % % Into the |\jobname.tmb| file a |\thumbcontents| entry is written. % If \xpackage{hyperref} is found, a |\phantomsection| is placed (except when % globally disabled by option |nophantomsection| or locally by |\thumbsnophantom|), % 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} \ltx@ifpackageloaded{hyperref}{% hyperref loaded \ifthumbs@nophantomsection% \relax \else% \ifx\th@mbsphantom\pagesLTS@one% \phantomsection% \else% \gdef\th@mbsphantom{1}% \fi% \fi% }{% hyperref not loaded }% \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). % % \begin{macrocode} \ifx\th@mbcolumnnew\pagesLTS@one% \else% \@tempcnta=\th@mbonpage\relax% \advance\@tempcnta by 1% \xdef\th@mbonpage{\the\@tempcnta}% \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 page break?\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% \@tempcnta=1\relax% \edef\th@mbonpagetest{\the\@tempcnta}% \@whilenum\th@mbonpagetest<\th@mbonpage\do{% \advance\@tempcnta by 1% \xdef\th@mbonpagetest{\the\@tempcnta}% \ifnum\th@mbonpage=\th@mbonpagetest% \ifnum\th@mbonpagemax<\th@mbonpage% \xdef\th@mbonpagemax{\th@mbonpage}% \fi% \edef\th@mbtmpdef{\csname th@mbtext\AlphAlph{\the\@tempcnta}\endcsname}% \expandafter\gdef\th@mbtmpdef{#2}% \edef\th@mbtmpdef{\csname th@mbtextcolour\AlphAlph{\the\@tempcnta}\endcsname}% \expandafter\gdef\th@mbtmpdef{#3}% \edef\th@mbtmpdef{\csname th@mbbackgroundcolour\AlphAlph{\the\@tempcnta}\endcsname}% \expandafter\gdef\th@mbtmpdef{#4}% \fi% }% \else% \ifnum\th@mbonpagemax<\th@mbonpage% \xdef\th@mbonpagemax{\th@mbonpage}% \fi% \fi% \fi% \ifx\th@mbcolumnnew\pagesLTS@two% \gdef\th@mbcolumnnew{0}% \fi% \gdef\th@mbtoprint{1}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\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} % \end{macro} % % \begin{macro}{\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} % \end{macro} % % \pagebreak % % \begin{macro}{\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 issuing 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\pagesLTS@two% \def\th@mb@tmp@column{0}% \fi% \setlength{\th@mbwidthxtoc}{\paperwidth}% \advance\th@mbwidthxtoc-1in% % \end{macrocode} % % Depending on which side the thumb marks should be placed % the according dimensions have to be adapted. % % \begin{macrocode} \def\th@mbstest{r}% \ifx\th@mbstest\th@mbsprintpage% r \advance\th@mbwidthxtoc-\th@mbHimO% \advance\th@mbwidthxtoc-\oddsidemargin% \setlength{\@tempdimc}{1in}% \advance\@tempdimc+\oddsidemargin% \else% l \advance\th@mbwidthxtoc-\th@mbHimE% \advance\th@mbwidthxtoc-\evensidemargin% \setlength{\@tempdimc}{\th@bmshoffset}% \advance\@tempdimc-\hoffset \fi% \setlength{\th@mbposyB}{-\th@mbposy}% \if@twoside% \ifodd\c@CurrentPage% \ifx\th@mbtikz\pagesLTS@zero% \else% \setlength{\@tempdimb}{-\th@mbposy}% \advance\@tempdimb-\thumbs@evenprintvoffset% \setlength{\th@mbposyB}{\@tempdimb}% \fi% \else% \ifx\th@mbtikz\pagesLTS@zero% \setlength{\@tempdimb}{-\th@mbposy}% \advance\@tempdimb-\thumbs@evenprintvoffset% \setlength{\th@mbposyB}{\@tempdimb}% \fi% \fi% \fi% \def\th@mbstest{l}% \ifx\th@mbstest\th@mbsprintpage% l \advance\@tempdimc+\th@mbHimE% \fi% \put(\@tempdimc,\th@mbposyB){% \ifx\th@mbstest\th@mbsprintpage% l % \end{macrocode} % % Increase |\th@mbwidthxtoc| by the absolute value of |\evensidemargin|.\\ % With the \xpackage{bigintcalc} package it would also be possible to use:\\ % |\setlength{\@tempdimb}{\evensidemargin}%|\\ % |\@settopoint\@tempdimb%|\\ % |\advance\th@mbwidthxtoc+\bigintcalcSgn{\expandafter\strip@pt \@tempdimb}\evensidemargin%| % % \begin{macrocode} \ifdim\evensidemargin <0sp\relax% \advance\th@mbwidthxtoc-\evensidemargin% \else% >=0sp \advance\th@mbwidthxtoc+\evensidemargin% \fi% \fi% \begin{picture}(0,0)% % \end{macrocode} % % When the option |thumblink=rule| was chosen, 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@mbsprintpage| is |l|, before the picture |\th@mbwidthxtoc| was changed, % which must be reverted now. % % \begin{macrocode} \ifx\th@mbstest\th@mbsprintpage% l \advance\th@mbwidthxtoc-\evensidemargin% \fi% % \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% \setlength{\th@mbwidthxtoc}{\paperwidth}% \advance\th@mbwidthxtoc-1in% \advance\th@mbwidthxtoc-\hoffset% \ifx\th@mbstest\th@mbsprintpage% l \advance\th@mbwidthxtoc-\evensidemargin% \else% \advance\th@mbwidthxtoc-\oddsidemargin% \fi% \advance\th@mbwidthxtoc-\th@mbwidthx% \advance\th@mbwidthxtoc-20pt% \ifdim\th@mbwidthxtoc>\textwidth% \setlength{\th@mbwidthxtoc}{\textwidth}% \fi% % \end{macrocode} % % \pagebreak % % Depending on which side the thumb marks should be placed the % according dimensions have to be adapted here, too. % % \begin{macrocode} \ifx\th@mbstest\th@mbsprintpage% l \begin{picture}(-\th@mbHimE,0)(-6pt,-0.5\th@mbheighty+384930sp)% \bgroup% \setlength{\parindent}{0pt}% \setlength{\@tempdimc}{\th@mbwidthx}% \advance\@tempdimc-\th@mbHitO% \setlength{\@tempdimb}{\th@mbwidthx}% \advance\@tempdimb-\th@mbHitE% \ifodd\c@CurrentPage% \if@twoside% \ifx\th@mbtikz\pagesLTS@zero% \hspace*{-\th@mbHitO}% \th@mb@txtBox{\th@mb@tmp@textcolour}{\protect\th@mb@tmp@text}{r}{\@tempdimc}% \else% \hspace*{+\th@mbHitE}% \th@mb@txtBox{\th@mb@tmp@textcolour}{\protect\th@mb@tmp@text}{l}{\@tempdimb}% \fi% \else% \hspace*{-\th@mbHitO}% \th@mb@txtBox{\th@mb@tmp@textcolour}{\protect\th@mb@tmp@text}{r}{\@tempdimc}% \fi% \else% \if@twoside% \ifx\th@mbtikz\pagesLTS@zero% \hspace*{+\th@mbHitE}% \th@mb@txtBox{\th@mb@tmp@textcolour}{\protect\th@mb@tmp@text}{l}{\@tempdimb}% \else% \hspace*{-\th@mbHitO}% \th@mb@txtBox{\th@mb@tmp@textcolour}{\protect\th@mb@tmp@text}{r}{\@tempdimc}% \fi% \else% \hspace*{-\th@mbHitO}% \th@mb@txtBox{\th@mb@tmp@textcolour}{\protect\th@mb@tmp@text}{r}{\@tempdimc}% \fi% \fi% \egroup% \end{picture}% \setlength{\@tempdimc}{-1in}% \advance\@tempdimc-\evensidemargin% \else% r \setlength{\@tempdimc}{0pt}% \fi% \begin{picture}(0,0)(\@tempdimc,-0.5\th@mbheighty+384930sp)% \bgroup% \setlength{\parindent}{0pt}% \vbox% {\hsize=\th@mbwidthxtoc {% % \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, except when we are printing at the left side. % % \begin{macrocode} \ifx\th@mbstest\th@mbsprintpage% l; relax \else% \begin{picture}(0,0)(1in+\oddsidemargin-\th@mbxpos+20pt,-0.5\th@mbheighty+384930sp)% \bgroup% \setlength{\parindent}{0pt}% \setlength{\@tempdimc}{\th@mbwidthx}% \advance\@tempdimc-\th@mbHitO% \setlength{\@tempdimb}{\th@mbwidthx}% \advance\@tempdimb-\th@mbHitE% \ifodd\c@CurrentPage% \if@twoside% \ifx\th@mbtikz\pagesLTS@zero% \hspace*{-\th@mbHitO}% \th@mb@txtBox{\th@mb@tmp@textcolour}{\protect\th@mb@tmp@text}{r}{\@tempdimc}% \else% \hspace*{+\th@mbHitE}% \th@mb@txtBox{\th@mb@tmp@textcolour}{\protect\th@mb@tmp@text}{l}{\@tempdimb}% \fi% \else% \hspace*{-\th@mbHitO}% \th@mb@txtBox{\th@mb@tmp@textcolour}{\protect\th@mb@tmp@text}{r}{\@tempdimc}% \fi% \else% \if@twoside% \ifx\th@mbtikz\pagesLTS@zero% \hspace*{+\th@mbHitE}% \th@mb@txtBox{\th@mb@tmp@textcolour}{\protect\th@mb@tmp@text}{l}{\@tempdimb}% \else% \hspace*{-\th@mbHitO}% \th@mb@txtBox{\th@mb@tmp@textcolour}{\protect\th@mb@tmp@text}{r}{\@tempdimc}% \fi% \else% \hspace*{-\th@mbHitO}% \th@mb@txtBox{\th@mb@tmp@textcolour}{\protect\th@mb@tmp@text}{r}{\@tempdimc}% \fi% \fi% \egroup% \end{picture}% \fi% \fi% }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\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} % \end{macro} % % \DescribeMacro{tikz, hyperref} % To determine whether to place the thumb marks at the left or right side of a % two-sided paper, \xpackage{thumbs} must determine whether the page number is % odd or even. Because |\thepage| can be set to some value, the |CurrentPage| % counter of the \xpackage{pageslts} package is used instead. When the current % page number is determined |\AtBeginShipout|, it is usually the number of the % next page to be put out. But when the \xpackage{tikz} package has been loaded % before \xpackage{thumbs}, it is not the next page number but the real one. % But when the \xpackage{hyperref} package has been loaded before the % \xpackage{tikz} package, it is the next page number. (When first \xpackage{tikz} % and then \xpackage{hyperref} and then \xpackage{thumbs} was loaded, it is % the real page, not the next one.) Thus it must be checked which package was % loaded and in what order. % % \begin{macrocode} \ltx@ifpackageloaded{tikz}{% tikz loaded before thumbs \ltx@ifpackageloaded{hyperref}{% hyperref loaded before thumbs, %% but tikz and hyperref in which order? To be determined now: %% Code similar to the one from David Carlisle: %% http://tex.stackexchange.com/a/45654/6865 % \end{macrocode} % \url{http://tex.stackexchange.com/a/45654/6865} % \begin{macrocode} \xdef\th@mbtikz{-1}% assume tikz loaded after hyperref, %% check for opposite case: \def\th@mbstest{tikz.sty} \let\th@mbstestb\@empty \@for\@th@mbsfl:=\@filelist\do{% \ifx\@th@mbsfl\th@mbstest \def\th@mbstestb{hyperref.sty} \fi \ifx\@th@mbsfl\th@mbstestb \xdef\th@mbtikz{0}% tikz loaded before hyperref \fi } %% End of code similar to the one from David Carlisle }{% tikz loaded before thumbs and hyperref loaded afterwards or not at all \xdef\th@mbtikz{0}% } }{% tikz not loaded before thumbs \xdef\th@mbtikz{-1} } % \end{macrocode} % % \newpage % % \begin{macro}{\th@mbprint} % |\th@mbprint| places a |picture| containing the thumb mark on the page. % % \begin{macrocode} \newcommand{\th@mbprint}[3]{% \setlength{\th@mbposyB}{-\th@mbposyA}% \if@twoside% \ifodd\c@CurrentPage% \ifx\th@mbtikz\pagesLTS@zero% \else% \setlength{\@tempdimc}{-\th@mbposyA}% \advance\@tempdimc-\thumbs@evenprintvoffset% \setlength{\th@mbposyB}{\@tempdimc}% \fi% \else% \ifx\th@mbtikz\pagesLTS@zero% \setlength{\@tempdimc}{-\th@mbposyA}% \advance\@tempdimc-\thumbs@evenprintvoffset% \setlength{\th@mbposyB}{\@tempdimc}% \fi% \fi% \fi% \put(\th@mbxpos,\th@mbposyB){% \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}% \setlength{\@tempdimc}{\th@mbwidthx}% \advance\@tempdimc-\th@mbHitO% \setlength{\@tempdimb}{\th@mbwidthx}% \advance\@tempdimb-\th@mbHitE% \ifodd\c@CurrentPage% \if@twoside% \ifx\th@mbtikz\pagesLTS@zero% \hspace*{-\th@mbHitO}% \th@mb@txtBox{#2}{#1}{r}{\@tempdimc}% \else% \hspace*{+\th@mbHitE}% \th@mb@txtBox{#2}{#1}{l}{\@tempdimb}% \fi% \else% \hspace*{-\th@mbHitO}% \th@mb@txtBox{#2}{#1}{r}{\@tempdimc}% \fi% \else% \if@twoside% \ifx\th@mbtikz\pagesLTS@zero% \hspace*{+\th@mbHitE}% \th@mb@txtBox{#2}{#1}{l}{\@tempdimb}% \else% \hspace*{-\th@mbHitO}% \th@mb@txtBox{#2}{#1}{r}{\@tempdimc}% \fi% \else% \hspace*{-\th@mbHitO}% \th@mb@txtBox{#2}{#1}{r}{\@tempdimc}% \fi% \fi% \egroup% \end{picture}% }% } % \end{macrocode} % \end{macro} % % \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% \@tempcnta=\value{CurrentPage}\relax% \advance\@tempcnta by \th@mbtikz% % \end{macrocode} % % because |CurrentPage| is already the number of the next page, % except if \xpackage{tikz} was loaded before thumbs, % then it is still the |CurrentPage|.\\ % Changing the paper size mid-document will probably cause some problems. % But if it works, we try to cope with it. (When the change is performed % without changing |\paperwidth|, we cannot detect it. Sorry.) % % \begin{macrocode} \edef\th@mbstmpwidth{\the\paperwidth}% \ifdim\th@mbpaperwidth=\th@mbstmpwidth% OK \else% \PackageWarningNoLine{thumbs}{% Paperwidth has changed. Thumb mark positions become now adapted% }% \setlength{\th@mbposx}{\paperwidth}% \advance\th@mbposx-\th@mbwidthx% \ifthumbs@ignorehoffset% \advance\th@mbposx-\hoffset% \fi% \advance\th@mbposx+1pt% \xdef\th@mbpaperwidth{\the\paperwidth}% \fi% % \end{macrocode} % % Determining the correct |\th@mbxpos|: % % \begin{macrocode} \edef\th@mbxpos{\the\th@mbposx}% \ifodd\@tempcnta% \relax \else% \if@twoside% \ifthumbs@ignorehoffset% \setlength{\@tempdimc}{-\hoffset}% \advance\@tempdimc-1pt% \edef\th@mbxpos{\the\@tempdimc}% \else% \def\th@mbxpos{-1pt}% \fi% % \end{macrocode} % % | \else \relax%| % % \begin{macrocode} \fi% \fi% \setlength{\@tempdimc}{\th@mbxpos}% \if@twoside% \ifodd\@tempcnta \advance\@tempdimc-\th@mbHimO% \else \advance\@tempdimc+\th@mbHimE% \fi% \else \advance\@tempdimc-\th@mbHimO% \fi% \edef\th@mbxpos{\the\@tempdimc}% \AtBeginShipoutUpperLeft{% \ifx\th@mbprinting\pagesLTS@one% \th@mbprint{\th@mbtextA}{\th@mbtextcolourA}{\th@mbbackgroundcolourA}% \@tempcnta=1\relax% \edef\th@mbonpagetest{\the\@tempcnta}% \@whilenum\th@mbonpagetest<\th@mbonpage\do{% \advance\@tempcnta by 1% \edef\th@mbonpagetest{\the\@tempcnta}% \th@mb@yA% \def\th@mbtmpdeftext{\csname th@mbtext\AlphAlph{\the\@tempcnta}\endcsname}% \def\th@mbtmpdefcolour{\csname th@mbtextcolour\AlphAlph{\the\@tempcnta}\endcsname}% \def\th@mbtmpdefbackgroundcolour{\csname th@mbbackgroundcolour\AlphAlph{\the\@tempcnta}\endcsname}% \th@mbprint{\th@mbtmpdeftext}{\th@mbtmpdefcolour}{\th@mbtmpdefbackgroundcolour}% }% \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} \@tempcnta=\th@mbonpage\relax% \ifnum\@tempcnta<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} % % \DescribeMacro{\AfterLastShipout} % |\AfterLastShipout| is executed after the last page has been shipped out. % It is still possible to e.\,g. write to the \xfile{aux} file at this time. % % \begin{macrocode} \AfterLastShipout{% \ifx\th@mbcolumnnew\pagesLTS@zero% ok \else \PackageWarningNoLine{thumbs}{% Still missing \string\addthumb\space after \string\thumbnewcolumn\space after\MessageBreak% last ship-out: 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, % the total number of thumb marks, and the maximal thumb mark text width % 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 \xdef\th@umbsperpagecount{\th@mbs} \gdef\th@mbcolumn{1} \fi \ifx\th@umbsperpagecount\pagesLTS@zero \gdef\th@umbsperpagecount{\th@mbs}% \th@mbs was increased with each \addthumb \fi \ifdim\th@mbmaxwidth>\th@mbwidthx \ifthumbs@draft% \relax \else % \end{macrocode} % % \pagebreak % % \begin{macrocode} \def\th@mbstest{autoauto} \ifx\thumbs@width\th@mbstest% \AtEndAfterFileList{% \PackageWarningNoLine{thumbs}{% Rerun to get the thumb marks width right% } } \else \AtEndAfterFileList{% \edef\thumbsinfoa{\th@mbmaxwidth} \edef\thumbsinfob{\the\th@mbwidthx} \PackageWarningNoLine{thumbs}{% Thumb mark too small or its text too wide:\MessageBreak% The widest thumb mark text is \thumbsinfoa\space wide,\MessageBreak% but the thumb marks are only \space\thumbsinfob\space wide.\MessageBreak% Either shorten or scale down the text,\MessageBreak% or increase the thumb mark width,\MessageBreak% or use option width=autoauto% } } \fi \fi \fi \if@filesw \immediate\write\@auxout{\string\gdef\string\th@mbmaxwidtha{\th@mbmaxwidth}} \immediate\write\@auxout{\string\gdef\string\th@umbsperpage{\th@umbsperpagecount}} \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} % % \begin{macro}{\addthumbsoverviewtocontents} % |\addthumbsoverviewtocontents| with two arguments is a replacement for % |\addcontentsline{toc}{}{}|, where the first argument of % |\addthumbsoverviewtocontents| is for || and the second for ||. % 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} % \end{macro} % % \begin{macro}{\clearotherdoublepage} % We need a command to clear a double page, thus that the following text % is \emph{left} instead of \emph{right} as accomplished with the usual % |\cleardoublepage|. For this we take the original |\cleardoublepage| code % and revert the |\ifodd\c@page\else| (i.\,e. if even |\c@page|) condition. % % \begin{macrocode} \newcommand{\clearotherdoublepage}{% \clearpage\if@twoside \ifodd\c@page% removed "\else" from \cleardoublepage \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi% } % \end{macrocode} % \end{macro} % % \begin{macro}{\th@mbstablabeling} % When the \xpackage{hyperref} package is used, one might like to refer to the % thumb overview page(s), therefore |\th@mbstablabeling| command is defined % (and used later). First a~|\phantomsection| is added. % With or without \xpackage{hyperref} a label |TableOfThumbs1| (or |TableOfThumbs2| % or\ldots) is placed here. For compatibility with older versions of this % package also the label |TableOfThumbs| is created. Equal to older versions % it aims at the last used Table of Thumbs, but since version~1.0g \textbf{without}\\ % |Error: Label TableOfThumbs multiply defined| - thanks to |\overridelabel| from % the \xpackage{undolabl} package (which is automatically loaded by the % \xpackage{pageslts} package).\\ % When |\addthumbsoverviewtocontents| was used, the entry is placed into the % table of contents. % % \begin{macrocode} \newcommand{\th@mbstablabeling}{% \ltx@ifpackageloaded{hyperref}{\phantomsection}{}% \let\label\thumbsoriglabel% \ifx\th@mbstable\pagesLTS@one% \label{TableOfThumbs}% \label{TableOfThumbs1}% \else% \overridelabel{TableOfThumbs}% \label{TableOfThumbs\th@mbstable}% \fi% \let\label\@gobble% \ifx\th@mbs@toc@level\empty%\relax \else \addcontentsline{toc}{\th@mbs@toc@level}{\th@mbs@toc@text}% \fi% } % \end{macrocode} % \end{macro} % % \DescribeMacro{\thumbsoverview} % \DescribeMacro{\thumbsoverviewback} % \DescribeMacro{\thumbsoverviewverso} % \DescribeMacro{\thumbsoverviewdouble} % For compatibility with documents created using older versions of this package % |\thumbsoverview| did not get a second argument, but it is renamed to % |\thumbsoverviewprint| and additional to |\thumbsoverview| new commands are % introduced. It is of course also possible to use |\thumbsoverviewprint| with % its two arguments directly, therefore its name does not include any |@| % (saving the users the use of |\makeatother| and |\makeatletter|).\\ % \begin{description} % \item[-] |\thumbsoverview| prints the thumb marks at the right side % and (in |twoside| mode) skips left sides (useful e.\,g. at the beginning % of a document) % % \item[-] |\thumbsoverviewback| prints the thumb marks at the left side % and (in |twoside| mode) skips right sides (useful e.\,g. at the end % of a document) % % \item[-] |\thumbsoverviewverso| prints the thumb marks at the right side % and (in |twoside| mode) repeats them at the next left side and so on % (useful anywhere in the document and when one wants to prevent empty % pages) % % \item[-] |\thumbsoverviewdouble| prints the thumb marks at the left side % and (in |twoside| mode) repeats them at the next right side and so on % (useful anywhere in the document and when one wants to prevent empty % pages) % \end{description} % % The |\thumbsoverview...| commands are used to place the overview page(s) % for the thumb marks. Their parameter is used to mark this page/these pages % (e.\,g. in the page header). If these marks are not wished, % |\thumbsoverview...{}| will generate empty marks in the page header(s). % |\thumbsoverview...| can be used more than once (for example at the % beginning and at the end of the document). The overviews have labels % |TableOfThumbs1|, |TableOfThumbs2| and so on, which can be referred to with % e.\,g. |\pageref{TableOfThumbs1}|. % The reference |TableOfThumbs| (without number) aims at the last used Table of Thumbs % (for compatibility with older versions of this package). % % \begin{macro}{\thumbsoverview} % \begin{macrocode} \newcommand{\thumbsoverview}[1]{\thumbsoverviewprint{#1}{r}} % \end{macrocode} % \end{macro} % \begin{macro}{\thumbsoverviewback} % \begin{macrocode} \newcommand{\thumbsoverviewback}[1]{\thumbsoverviewprint{#1}{l}} % \end{macrocode} % \end{macro} % \begin{macro}{\thumbsoverviewverso} % \begin{macrocode} \newcommand{\thumbsoverviewverso}[1]{\thumbsoverviewprint{#1}{v}} % \end{macrocode} % \end{macro} % \begin{macro}{\thumbsoverviewdouble} % \begin{macrocode} \newcommand{\thumbsoverviewdouble}[1]{\thumbsoverviewprint{#1}{d}} % \end{macrocode} % \end{macro} % % \begin{macro}{\thumbsoverviewprint} % |\thumbsoverviewprint| works by calling the internal command |\th@mbs@verview| % (see below), repeating this until all thumb marks have been processed. % % \begin{macrocode} \newcommand{\thumbsoverviewprint}[2]{% % \end{macrocode} % % It would be possible to just |\edef\th@mbsprintpage{#2}|, but % |\thumbsoverviewprint| might be called manually and without valid second argument. % % \begin{macrocode} \edef\th@mbstest{#2}% \def\th@mbstestb{r}% \ifx\th@mbstest\th@mbstestb% r \gdef\th@mbsprintpage{r}% \else% \def\th@mbstestb{l}% \ifx\th@mbstest\th@mbstestb% l \gdef\th@mbsprintpage{l}% \else% \def\th@mbstestb{v}% \ifx\th@mbstest\th@mbstestb% v \gdef\th@mbsprintpage{v}% \else% \def\th@mbstestb{d}% \ifx\th@mbstest\th@mbstestb% d \gdef\th@mbsprintpage{d}% \else% \PackageError{thumbs}{% Invalid second parameter of \string\thumbsoverviewprint % }{The second argument of command \string\thumbsoverviewprint\space must be\MessageBreak% either "r" or "l" or "v" or "d" but it is neither.\MessageBreak% Now "r" is chosen instead.\MessageBreak% }% \gdef\th@mbsprintpage{r}% \fi% \fi% \fi% \fi% % \end{macrocode} % % Option |\thumbs@thumblink| is checked for a valid and reasonable value here. % % \begin{macrocode} \def\th@mbstest{none}% \ifx\thumbs@thumblink\th@mbstest% OK \else% \ltx@ifpackageloaded{hyperref}{% 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 invalid 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% }{% hyperref not loaded \PackageError{thumbs}{Option thumblink not "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}% }% \fi% % \end{macrocode} % % When the thumb overview is printed and there is already a thumb mark set, % for example for the front-matter (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}% \ifnum \th@mbsmax > \pagesLTS@zero% \if@twoside% \def\th@mbstest{r}% \ifx\th@mbstest\th@mbsprintpage% \cleardoublepage% \else% \def\th@mbstest{v}% \ifx\th@mbstest\th@mbsprintpage% \cleardoublepage% \else% l or d \clearotherdoublepage% \fi% \fi% \else \clearpage% \fi% \stopthumb% \markboth{\MakeUppercase #1 }{\MakeUppercase #1 }% \fi% \setlength{\th@mbsposytocy}{\th@mbposy}% \setlength{\th@mbposy}{\th@mbsposytocyy}% \ifx\th@mbstable\pagesLTS@zero% \newcounter{th@mblinea}% \newcounter{th@mblineb}% \newcounter{FileLine}% \newcounter{thumbsstop}% \fi% % \end{macrocode} % \pagebreak % \begin{macrocode} \setcounter{th@mblinea}{\th@mbstable}% \addtocounter{th@mblinea}{+1}% \xdef\th@mbstable{\arabic{th@mblinea}}% \setcounter{th@mblinea}{1}% \setcounter{th@mblineb}{\th@umbsperpage}% \setcounter{FileLine}{1}% \setcounter{thumbsstop}{1}% \addtocounter{thumbsstop}{\th@mbsmax}% % \end{macrocode} % % We do not want any labels or index or glossary entries confusing the % table of thumb marks entries, but the commands must work outside of it: % % \begin{macro}{\thumbsoriglabel} % \begin{macrocode} \let\thumbsoriglabel\label% % \end{macrocode} % \end{macro} % \begin{macro}{\thumbsorigindex} % \begin{macrocode} \let\thumbsorigindex\index% % \end{macrocode} % \end{macro} % \begin{macro}{\thumbsorigglossary} % \begin{macrocode} \let\thumbsorigglossary\glossary% % \end{macrocode} % \end{macro} % \begin{macrocode} \let\label\@gobble% \let\index\@gobble% \let\glossary\@gobble% % \end{macrocode} % % Some preparation in case of double printing the overview page(s): % % \begin{macrocode} \def\th@mbstest{v}% r l r ... \ifx\th@mbstest\th@mbsprintpage% \def\th@mbsprintpage{l}% because it will be changed to r \def\th@mbdoublepage{1}% \else% \def\th@mbstest{d}% l r l ... \ifx\th@mbstest\th@mbsprintpage% \def\th@mbsprintpage{r}% because it will be changed to l \def\th@mbdoublepage{1}% \else% \def\th@mbdoublepage{0}% \fi% \fi% \def\th@mb@resetdoublepage{0}% \@whilenum\value{FileLine}<\value{thumbsstop}\do% % \end{macrocode} % % \pagebreak % % For double printing the overview page(s) we just change between printing % left and right, and we need to reset the line number of the |\jobname.tmb| file % which is read, because we need to read things twice. % % \begin{macrocode} {\ifx\th@mbdoublepage\pagesLTS@one% \def\th@mbstest{r}% \ifx\th@mbsprintpage\th@mbstest% \def\th@mbsprintpage{l}% \else% \th@mbsprintpage is l \def\th@mbsprintpage{r}% \fi% \clearpage% \ifx\th@mb@resetdoublepage\pagesLTS@one% \setcounter{th@mblinea}{\theth@mblinea}% \setcounter{th@mblineb}{\theth@mblineb}% \def\th@mb@resetdoublepage{0}% \else% \edef\theth@mblinea{\arabic{th@mblinea}}% \edef\theth@mblineb{\arabic{th@mblineb}}% \def\th@mb@resetdoublepage{1}% \fi% \else% \if@twoside% \def\th@mbstest{r}% \ifx\th@mbstest\th@mbsprintpage% \cleardoublepage% \else% l \clearotherdoublepage% \fi% \else% \clearpage% \fi% \fi% % \end{macrocode} % % When the very first page of a thumb marks overview is generated, % the label is set (with the |\th@mbstablabeling| command). % % \begin{macrocode} \ifnum\value{FileLine}=1% \ifx\th@mbdoublepage\pagesLTS@one% \ifx\th@mb@resetdoublepage\pagesLTS@one% \th@mbstablabeling% \fi% \else \th@mbstablabeling% \fi% \fi% \null% \th@mbs@verview% \pagebreak% % \end{macrocode} % \pagebreak % \begin{macrocode} \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} % % When double page mode is active and |\th@mb@resetdoublepage| is one, % the last page of the thumbs mark overview must be repeated, but\\ % | \@whilenum\value{FileLine}<\value{thumbsstop}\do|\\ % would prevent this, because |FileLine| is already too large % and would only be reset \emph{inside} the loop, but the loop would % not be executed again. % % \begin{macrocode} \ifx\th@mb@resetdoublepage\pagesLTS@one% \setcounter{FileLine}{\theth@mblinea}% \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} % % as well as the |\label|, |\index|, and |\glossary| commands: % % \begin{macrocode} \let\label\thumbsoriglabel% \let\index\thumbsorigindex% \let\glossary\thumbsorigglossary% % \end{macrocode} % % and |\th@mbs@toc@level| and |\th@mbs@toc@text| need to be emptied, % otherwise for each following Table of Thumb Marks the same entry % in the table of contents would be added, if no new % |\addthumbsoverviewtocontents| would be given. % ( But when no |\addthumbsoverviewtocontents| is given, it can be assumed % that no |thumbsoverview|-entry shall be added to contents.) % % \begin{macrocode} \addthumbsoverviewtocontents{}{}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\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 % \@whilenum\value{FileLine}<\value{th@mblineb}\do% {\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\space \space X \string\space 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\space \space \string\space to proceed.\MessageBreak% ! If that does not work,\MessageBreak% ! please 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}% \@tempcnta=\th@mbsmax\relax% \ifnum \value{th@mblineb}>\@tempcnta\relax% \setcounter{th@mblineb}{\@tempcnta}% \fi% }{% else % \end{macrocode} % % When |\jobname.tmb| was not found, we cannot read from that file, therefore % the |FileLine| is set to |thumbsstop|, stopping the calling of |\th@mbs@verview| % in |\thumbsoverview|. (And we issue a warning, of course.) % % \begin{macrocode} \setcounter{FileLine}{\arabic{thumbsstop}}% \AtEndAfterFileList{% \PackageWarningNoLine{thumbs}{% File \jobname.tmb not found.\MessageBreak% Rerun to get thumbs overview page(s) right.\MessageBreak% }% }% }% }% }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\thumborigaddthumb} % When we are in |draft| mode, the thumb marks are % \textquotedblleft de-coloured\textquotedblright{}, % their width is reduced, and a warning is given. % % \begin{macrocode} \let\thumborigaddthumb\addthumb% % \end{macrocode} % \end{macro} % % \begin{macrocode} \ifthumbs@draft \setlength{\th@mbwidthx}{2pt} \renewcommand{\addthumb}[4]{\thumborigaddthumb{#1}{#2}{black}{gray}} \PackageWarningNoLine{thumbs}{thumbs package in draft mode:\MessageBreak% Thumb mark width is set to 2pt,\MessageBreak% thumb mark text colour to black, and\MessageBreak% thumb mark background colour to gray.\MessageBreak% Use package option final to get the original values.\MessageBreak% } \fi % \end{macrocode} % % \pagebreak % % When we are in |hidethumbs| mode, there are no thumb marks % and therefore neither any thumb mark overview page. A~warning is given. % % \begin{macrocode} \ifthumbs@hidethumbs \renewcommand{\addthumb}[4]{\relax} \PackageWarningNoLine{thumbs}{thumbs package in hide mode:\MessageBreak% Thumb marks are hidden.\MessageBreak% Set package option "hidethumbs=false" to get thumb marks% } \renewcommand{\thumbnewcolumn}{\relax} \fi % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % \pagebreak % % \section{Installation} % % \subsection{Downloads\label{ss:Downloads}} % % Everything is available on \url{http://www.ctan.org/} % 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[-] document class \xclass{ltxdoc}, 2007/11/11, v2.0u, % \url{http://ctan.org/pkg/ltxdoc} % % \item[-] package \xpackage{morefloats}, 2012/01/28, v1.0f, % \url{http://ctan.org/pkg/morefloats} % % \item[-] package \xpackage{geometry}, 2010/09/12, v5.6, % \url{http://ctan.org/pkg/geometry} % % \item[-] package \xpackage{holtxdoc}, 2012/03/21, v0.24, % \url{http://ctan.org/pkg/holtxdoc} % % \item[-] package \xpackage{hypdoc}, 2011/08/19, v1.11, % \url{http://ctan.org/pkg/hypdoc} % \end{description} % % \DescribeMacro{thumbs.sty} % The |thumbs.sty| for \LaTeXe{} (i.\,e. each document using % the \xpackage{thumbs} package) requires: % \begin{description} % \item[-] \TeX{} Format \LaTeXe{}, \url{http://www.CTAN.org/} % % \item[-] package \xpackage{xcolor}, 2007/01/21, v2.11, % \url{http://ctan.org/pkg/xcolor} % % \item[-] package \xpackage{pageslts}, 2014/01/19, v1.2c, % \url{http://ctan.org/pkg/pageslts} % % \item[-] package \xpackage{pagecolor}, 2012/02/23, v1.0e, % \url{http://ctan.org/pkg/pagecolor} % % \item[-] package \xpackage{alphalph}, 2011/05/13, v2.4, % \url{http://ctan.org/pkg/alphalph} % % \item[-] package \xpackage{atbegshi}, 2011/10/05, v1.16, % \url{http://ctan.org/pkg/atbegshi} % % \item[-] package \xpackage{atveryend}, 2011/06/30, v1.8, % \url{http://ctan.org/pkg/atveryend} % % \item[-] package \xpackage{infwarerr}, 2010/04/08, v1.3, % \url{http://ctan.org/pkg/infwarerr} % % \item[-] package \xpackage{kvoptions}, 2011/06/30, v3.11, % \url{http://ctan.org/pkg/kvoptions} % % \item[-] package \xpackage{ltxcmds}, 2011/11/09, v1.22, % \url{http://ctan.org/pkg/ltxcmds} % % \item[-] package \xpackage{picture}, 2009/10/11, v1.3, % \url{http://ctan.org/pkg/picture} % % \item[-] package \xpackage{rerunfilecheck}, 2011/04/15, v1.7, % \url{http://ctan.org/pkg/rerunfilecheck} % \end{description} % % \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, % \url{http://ctan.org/pkg/eurosym} % % \item[-] package \xpackage{lipsum}, 2011/04/14, v1.2, % \url{http://ctan.org/pkg/lipsum} % % \item[-] package \xpackage{hyperref}, 2012/11/06, v6.83m, % \url{http://ctan.org/pkg/hyperref} % % \item[-] package \xpackage{thumbs}, 2014/03/09, v1.0q, % \url{http://ctan.org/pkg/thumbs}\\ % (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 % (newer versions might be available) % \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, % \url{http://ctan.org/pkg/eso-pic} % % \item[-] \xpackage{fancytabs}, 2011/04/16 v1.1, % \url{http://ctan.org/pkg/fancytabs} % % \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, % \url{http://ctan.org/pkg/thumb} % % \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, % \url{http://ctan.org/pkg/fancyhdr} % % \item[-] \xpackage{thumbpdf}, 2010/07/07, v3.11, % \url{http://ctan.org/pkg/thumbpdf} % % \item[-] \xpackage{thumby}, 2010/01/14, v0.1, % \url{http://ctan.org/pkg/thumby} % \end{description} % % \DescribeMacro{Oberdiek} % \DescribeMacro{holtxdoc} % \DescribeMacro{alphalph} % \DescribeMacro{atbegshi} % \DescribeMacro{atveryend} % \DescribeMacro{infwarerr} % \DescribeMacro{kvoptions} % \DescribeMacro{ltxcmds} % \DescribeMacro{picture} % \DescribeMacro{rerunfilecheck} % All packages of \textsc{Heiko Oberdiek}'s bundle `oberdiek' % (especially \xpackage{holtxdoc}, \xpackage{alphalph}, \xpackage{atbegshi}, \xpackage{infwarerr}, % \xpackage{kvoptions}, \xpackage{ltxcmds}, \xpackage{picture}, and \xpackage{rerunfilecheck}) % are also available in a TDS compliant ZIP archive:\\ % \url{http://mirror.ctan.org/install/macros/latex/contrib/oberdiek.tds.zip}.\\ % It is probably best to download and use this, because the packages in there % are quite probably both recent and compatible among themselves.\\ % % \vspace{6em} % % \DescribeMacro{hyperref} % \noindent \xpackage{hyperref} is not included in that bundle and needs to be % downloaded separately,\\ % \url{http://mirror.ctan.org/install/macros/latex/contrib/hyperref.tds.zip}.\\ % % \DescribeMacro{M\"{u}nch} % A hyperlinked list of my (other) packages can be found at % \url{http://www.ctan.org/author/muench-hm}.\\ % % \subsection{Package, unpacking TDS} % \paragraph{Package.} This package is available on \url{CTAN.org} % \begin{description} % \item[\url{http://mirror.ctan.org/macros/latex/contrib/thumbs/thumbs.dtx}]\hspace*{0.1cm} \\ % The source file. % \item[\url{http://mirror.ctan.org/macros/latex/contrib/thumbs/thumbs.pdf}]\hspace*{0.1cm} \\ % The documentation. % \item[\url{http://mirror.ctan.org/macros/latex/contrib/thumbs/thumbs-example.pdf}]\hspace*{0.1cm} \\ % The compiled example file, as it should look like. % \item[\url{http://mirror.ctan.org/macros/latex/contrib/thumbs/README}]\hspace*{0.1cm} \\ % The README file. % \end{description} % There is also a thumbs.tds.zip available: % \begin{description} % \item[\url{http://mirror.ctan.org/install/macros/latex/contrib/thumbs.tds.zip}]\hspace*{0.1cm} \\ % Everything in \xfile{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, please see the preceding subsection. % % \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting % \docstrip{} archive. The files are extracted by running the % \xext{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/thumbs.sty\\ % thumbs.pdf & doc/latex/thumbs/thumbs.pdf\\ % thumbs-example.tex & doc/latex/thumbs/thumbs-example.tex\\ % thumbs-example.pdf & doc/latex/thumbs/thumbs-example.pdf\\ % thumbs.dtx & source/latex/thumbs/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 % \xfile{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 the following % 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.dtx %makeindex -s gind.ist thumbs.idx %pdflatex thumbs.dtx %makeindex -s gind.ist thumbs.idx %pdflatex thumbs.dtx %\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. % % \bigskip % % \section{Acknowledgements} % % I would like to thank \textsc{Heiko Oberdiek} 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 and everybody at \url{http://tex.stackexchange.com/} % for their help in all things \TeX{} (especially \textsc{David Carlisle} % for \url{http://tex.stackexchange.com/a/45654/6865}). % Thanks for bug reports go to \textsc{Veronica Brandt} and % \textsc{Martin Baute} (even two bug reports). % % \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 \url{http://www.ctan.org/pkg/thumbs}. % \end{Version} % \begin{Version}{2011/05/18 v1.0b} % \item When more than one thumb mark is places at one single page, % the variables containing the values (text, colour, backgroundcolour) % of those thumb marks are now created dynamically. Theoretically, % one can now have $2\,147\,483\,647$ thumb marks at one page instead of % six thumb marks (as with \xpackage{thumbs} version~1.0a), % but I am quite sure that some other limit will be reached before the % $2\,147\,483\,647^ \textrm{th} $ thumb mark. % \item Bug fix: When a document using the \xpackage{thumbs} package was compiled, % and the \xfile{.aux} and \xfile{.tmb} files were created, and the % \xfile{.tmb} file was deleted (or renamed or moved), % while the \xfile{.aux} file was not deleted (or renamed or moved), % and the document was compiled again, and the \xfile{.aux} file was % reused, then reading from the then empty \xfile{.tmb} file resulted % in an endless loop. Fixed. % \item Minor details. % \end{Version} % \begin{Version}{2011/05/20 v1.0c} % \item The thumb mark width is written to the \xfile{log} file (in |verbose| mode % only). The knowledge of the value could be helpful for the user, % when option |width={auto}| was used, and one wants the thumb marks to be % half as big, or with double width, or a little wider, or a little % smaller\ldots\ Also thumb marks' height, top thumb margin and bottom thumb % margin are given. Look for\\ % |************** THUMB dimensions **************|\\ % in the \xfile{log} file. % \item Bug fix: There was a\\ % | \advance\th@mbheighty-\th@mbsdistance|,\\ % where\\ % | \advance\th@mbheighty-\th@mbsdistance|\\ % | \advance\th@mbheighty-\th@mbsdistance|\\ % should have been, causing wrong thumb marks' height, thereby wrong number % of thumb marks per column, and thereby another endless loop. Fixed. % \item The \xpackage{ifthen} package is no longer required for the \xpackage{thumbs} % package, removed from its |\RequirePackage| entries. % \item The \xpackage{infwarerr} package is used for its |\@PackageInfoNoLine| command. % \item The \xpackage{warning} package is no longer used by the \xpackage{thumbs} % package, removed from its |\RequirePackage| entries. Instead, % the \xpackage{atveryend} package is used, because it is loaded anyway % when the \xpackage{hyperref} package is used. % \item Minor details. % \end{Version} % \begin{Version}{2011/05/26 v1.0d} % \item Bug fix: labels or index or glossary entries were gobbled for the thumb marks % overview page, but gobbling leaked to the rest of the document; fixed. % \item New option |silent|, complementary to old option |verbose|. % \item New option |draft| (and complementary option |final|), which % \textquotedblleft de-coloures\textquotedblright\ the thumb marks % and reduces their width to~$2\unit{pt}$. % \end{Version} % \begin{Version}{2011/06/02 v1.0e} % \item Gobbling of labels or index or glossary entries improved. % \item Dimension |\thumbsinfodimen| no longer needed. % \item Internal command |\thumbs@info| no longer needed, removed. % \item New value |autoauto| (not default!) for option |width|, setting the thumb marks % width to fit the widest thumb mark text. % \item When |width={autoauto}| is not used, a warning is issued, when the thumb marks % width is smaller than the thumb mark text. % \item Bug fix: Since version v1.0b as of 2011/05/18 the number of thumb marks at one % single page was no longer limited to six, but the example still stated this. % Fixed. % \item Minor details. % \end{Version} % \begin{Version}{2011/06/08 v1.0f} % \item Bug fix: |\th@mb@titlelabel| should be defined |\empty| at the beginning % of the package: fixed. (Bug reported by \textsc{Veronica Brandt}. Thanks!) % \item Bug fix: |\thumbs@distance| versus |\th@mbsdistance|: There should be only % two times |\thumbs@distance|, the value of option |distance|, % otherwise it should be the length |\th@mbsdistance|: fixed. % (Also this bug reported by \textsc{Veronica Brandt}. Thanks!) % \item |\hoffset| and |\voffset| are now ignored by default, % but can be regarded using the options |ignorehoffset=false| % and |ignorevoffset=false|. % (Pointed out again by \textsc{Veronica Brandt}. Thanks!) % \item Added to documentation: The package takes the dimensions |\AtBeginDocument|, % thus later the page dimensions should not be changed. % Now explicitly stated this in the documentation. |\paperwidth| changes % are probably possible. % \item Documentation and example now give a lot more details. % \item Changed diverse details. % \end{Version} % \begin{Version}{2011/06/24 v1.0g} % \item Bug fix: When \xpackage{hyperref} was \textit{not} used, % then some labels were not set at all~- fixed. % \item Bug fix: When more than one Table of Tumbs was created with the % |\thumbsoverview| command, there were some % |counter ... already defined|-errors~- fixed. % \item Bug fix: When more than one Table of Tumbs was created with the % |\thumbsoverview| command, there was a % |Label TableofTumbs multiply defined|-error and it was not possible % to refer to any but the last Table of Tumbs. Fixed with labels % |TableofTumbs1|, |TableofTumbs2|,\ldots\ (|TableofTumbs| still aims % at the last used Table of Thumbs for compatibility.) % \item Bug fix: Sometimes the thumb marks were stopped one page too early % before the Table of Thumbs~- fixed. % \item Some details changed. % \end{Version} % \begin{Version}{2011/08/08 v1.0h} % \item Replaced |\global\edef| by |\xdef|. % \item Now using the \xpackage{pagecolor} package. Empty thumb marks now % inherit their colour from the pages's background. Option |pagecolor| % is therefore obsolete. % \item The \xpackage{pagesLTS} package has been replaced by the % \xpackage{pageslts} package. % \item New kinds of thumb mark overview pages introduced additionally to % |\thumbsoverview|: |\thumbsoverviewback|, |\thumbsoverviewverso|, % and |\thumbsoverviewdouble|. % \item New option |hidethumbs=true| to hide thumb marks (and their % overview page(s)). % \item Option |ignorehoffset| did not work for the thumb marks overview page(s)~- % neither |true| nor |false|; fixed. % \item Changed a huge number of details. % \end{Version} % \begin{Version}{2011/08/22 v1.0i} % \item Hot fix: \TeX{} 2011/06/27 has changed |\enddocument| and % thus broken the |\AtVeryVeryEnd| command/hooking % of \xpackage{atveryend} package as of 2011/04/23, v1.7. % Version 2011/06/30, v1.8, fixed it, but this version was not available % at \url{CTAN.org} yet. Until then |\AtEndAfterFileList| was used. % \end{Version} % \begin{Version}{2011/10/19 v1.0j} % \item Changed some Warnings into Infos (as suggested by \textsc{Martin Baute}). % \item The SW(P)-warning is now only given |\IfFileExists{tcilatex.tex}|, % otherwise just a message is given. (Warning questioned by % \textsc{Martin Baute}, thanks.) % \item New option |nophantomsection| to \emph{globally} disable the automatical % placement of a |\phantomsection| before \emph{all} thumb marks. % \item New command |\thumbsnophantom| to \emph{locally} disable the automatical % placement of a |\phantomsection| before the \emph{next} thumb mark. % \item README fixed. % \item Minor details changed. % \end{Version} % \begin{Version}{2012/01/01 v1.0k} % \item Bugfix: Wrong installation path given in the documentation, fixed. % \item No longer uses the |th@mbs@tmpA| counter but uses |\@tempcnta| instead. % \item No longer abuses the |\th@mbposyA| dimension but |\@tempdima|. % \item Update of documentation, README, and \xfile{dtx} internals. % \end{Version} % \begin{Version}{2012/01/07 v1.0l} % \item Bugfix: Used a |\@tempcnta| where a |\@tempdima| should have been. % \end{Version} % \begin{Version}{2012/02/23 v1.0m} % \item Bugfix: Replaced |\newcommand{\QTO}[2]{#2}| (for SWP) by % |\providecommand{\QTO}[2]{#2}|. % \item Bugfix: When the \xpackage{tikz} package was loaded before \xpackage{thumbs}, % in |twoside|-mode the thumb marks were printed at the wrong side % of the page. (Bug reported by \textsc{Martin Baute}, thanks!) With % \xpackage{hyperref} it really depends on the loading order of the % three packages. % \item Now using |\ltx@ifpackageloaded| from the \xpackage{ltxcmds} package % to check (after |\begin{document}|) whether the \xpackage{hyperref} % package was loaded. % \item For the thumb marks |\parbox|es instead of |\makebox|es are used % (just in case somebody wants to place two lines into a thumb mark, e.\,g.\\ % |Sch |\\ % |St|\\ % in a phone book, where the other |S|es are placed in another chapter). % \item Minor details changed. % \end{Version} % \begin{Version}{2012/02/25 v1.0n} % \item Check for loading order of \xpackage{tikz} and \xpackage{hyperref} replaced % by robust method. (Thanks to \textsc{David Carlisle}, % \url{http://tex.stackexchange.com/a/45654/6865}!) % \item Fixed \texttt{url}-handling in the example in case the \xpackage{hyperref} % package was not loaded. % \item In the index the line-numbers of definitions were not underlined; fixed. % \item In the \xfile{thumbs-example} there are now a few words about % \textquotedblleft paragraph-thumbs\textquotedblright{} % (i.\,e.~text which is too long for the width of a thumb mark). % \end{Version} % \begin{Version}{2013/08/22 v1.0o, not released to the general public} % \item \textsc{Stephanie Hein} requested the feature to be able to increase % the horizontal space between page edge and the text inside of the % thumb mark. Therefore options |evenindent| and |oddexdent| were % implemented (later renamed to |eventxtindent| and |oddtxtexdent|). % \item \textsc{Bjorn Victor} reported the same problem and also the one, % that two marks are not printed at the exact same vertical position % on recto and verso pages. Because this can be seen with a lot of % duplex printers, the new option |evenprintvoffset| allows to % vertically shift the marks on even pages by any length. % \end{Version} % \begin{Version}{2013/09/17 v1.0p, not released to the general public} % \item The thumb mark text is now set in |\parbox|es everywhere. % \item \textsc{Heini Geiring} requested the feature to be able to % horizontally move the marks away from the page edge, % because this is useful when using brochure printing % where after the printing the physical page edge is changed % by cutting the paper. Therefore the options |evenmarkindent| and % |oddmarkexdent| were introduced and the options |evenindent| and % |oddexdent| were renamed to |eventxtindent| and |oddtxtexdent|. % \item Changed a lot of internal details. % \end{Version} % \begin{Version}{2014/03/09 v1.0q} % \item New version of the \xpackage{atveryend} package is now available at % \url{CTAN.org} (see entry in this history for % \xpackage{thumbs} version |[2011/08/22 v1.0i]|). % \item Support for SW(P) drastically reduced. No more testing is performed. % Get a current \TeX{} distribution instead! % \item New option |txtcentered|: If it is set to |true|, % the thumb's text is placed using |\centering|, % otherwise either |\raggedright| or |\raggedleft| % (depending on left or right page for double sided documents). % \item |\normalsize| added to prevent % \textquotedblleft font size leakage\textquotedblright{} % from the respective page. % \item Handling of obsolete options (mainly from version 2013/08/22 v1.0o) % added. % \item Changed (hopefully improved) a lot of details. % \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.)\\ % % \bigskip % % Note: \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