summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/bracketkey/bracketkey.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/bracketkey/bracketkey.sty')
-rw-r--r--macros/latex/contrib/bracketkey/bracketkey.sty96
1 files changed, 96 insertions, 0 deletions
diff --git a/macros/latex/contrib/bracketkey/bracketkey.sty b/macros/latex/contrib/bracketkey/bracketkey.sty
new file mode 100644
index 0000000000..83806db228
--- /dev/null
+++ b/macros/latex/contrib/bracketkey/bracketkey.sty
@@ -0,0 +1,96 @@
+%% bracketkey.sty
+%% Copyright 2009 C. Heibl
+%
+% This work may be distributed and/or modified under the conditions of the LaTeX
+% Project Public License, either version 1.3 of this license or (at your option) any later % version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX version 2005/12/01 or
+% later.
+%
+% For a description of how to use bracketkey, see the files README and
+% Malva.txt
+%
+% Load required packages
+\usepackage{calc}
+\usepackage{xifthen}
+\usepackage{coolstr}
+\usepackage{hyperref}
+\hypersetup{backref, pdfpagemode=FullScreen, colorlinks=true}
+%
+%\let\HyperRaiseLinkHook\@empty
+%\def\HyperRaiseLinkDefault{\baselineskip}
+%
+\def\hang{\hangindent\parindent}
+\newcounter{index}%
+\newcounter{backindex}%
+\newcounter{key}\setcounter{key}{0}
+\newboolean{named}%
+\newboolean{back}%
+\newboolean{nameornumber}% true if alternative results in a name
+\newsavebox{\gprefix}% Abbreviation of genus name, parameter for key
+\newlength{\altindent}% additional indentation of each key level
+\setlength{\altindent}{0mm}
+\newlength{\keylabelwidth}% width of label of each key step
+\setlength{\keylabelwidth}{2em}%
+\newlength{\oldparindent}
+%
+% define command 'keytitle'
+\newcommand{\keytitle}[2][it]{
+ \vspace{2pt}
+ \ifthenelse{\equal{#1}{it}}
+ {\noindent\textbf{Key to \textit{#2}}} % taxonname in italis
+ {\noindent\textbf{Key to #2}} % normal taxonname
+ \vspace{2pt}
+}
+%
+% define environment 'key'
+\newenvironment{key}[1]%
+ {\setcounter{index}{0}
+ \stepcounter{key}
+ \setboolean{nameornumber}{true}%
+ \sbox{\gprefix}{\textit{\textbf{#1}}}%
+ \setlength{\oldparindent}{\parindent}%
+ \setlength{\hangindent}{0pt}%
+ \setlength{\parindent}{0pt}%
+ }
+ {\par\setlength{\parindent}{\oldparindent}}
+%
+% define command 'name'
+\newcommand{\name}[4][\usebox{\gprefix}]%
+ {\unskip\nobreak\hfil
+ \penalty 150
+ \leaders\hbox{\thinspace.\thinspace}\hskip 12pt plus 1fill
+ \vadjust{}\hfil
+ \isint{#3}{nameornumber}
+ \ifthenelse{\boolean{nameornumber}}
+ {#2\hspace{6pt}\textbf{\mbox{ \hyperlink{\thekey:#3}{#3}}}} %
+ {\hbox{\textbf{#2}\hspace{4pt}\textit{\textbf{#1}\textit{\textbf{\mbox{#3}}}}}\hspace{4pt}#4}%
+ {\parfillskip=0pt\par}}
+%
+% define command 'leadONE'
+\newcommand{\leadONE}[2]%
+ {\par%
+ \stepcounter{index}%
+ \setcounter{backindex}{\theindex-1}
+ \hspace*{-\keylabelwidth}\hspace*{-2mm}%
+ %\parbox[t]{\keylabelwidth}{\hfill{\textbf{\hypertarget{\thekey:\theindex}{\theindex}}}}%
+ %\parbox[t]{\keylabelwidth}{\hfill{\textbf{ \raisebox{\baselineskip}[0pt]{\hypertarget
+ % {\thekey:\theindex}{}}\theindex}}}%
+ \parbox[t]{\keylabelwidth}{\hfill{\textbf{\raisebox{\baselineskip}[0pt]{\hypertarget
+ {\thekey:\theindex}{}}\hyperlink{\thekey:\thebackindex}{\theindex}}}}%
+ \ifthenelse{\isempty{#1}}
+ {\hspace*{2mm}#2}
+ {\hspace*{1.4pt}\textbf{(\hyperlink{\thekey:#1}{#1})}\hspace*{2pt}#2}
+}
+%
+% Anker nach oben verschieben:
+% Instead of '\hypertarget{abc}{def}' you can also use
+% '\raisebox{\baselineskip}[0pt]{\hypertarget{abc}{}}def'
+%
+% define command 'leadTWO'
+\newcommand{\leadTWO}%
+ {\par
+ \hspace*{-\keylabelwidth}\hspace{-4mm}
+ \parbox[t]{2em}{\hfill{\textbf{-}}}% die indexe eine Textbox
+ \hspace*{2.7mm}% hier kommt der Text % \leadTWO
+}%