%%
%% This is file `menu.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% menu.dtx  (with options: `package')
%% ----------------------------------------------------------------------
%% Name of contribution: Menu
%% Name and email:       Knut Lickert <knut@lickert.net>
%% Location on CTAN:     tex-archive/macros/latex/contrib/menu
%% More details:         http://www.lickert.net/tex/menu
%% Summary description:  Package for writing menus
%% 
%% Announcement text:
%% Menu.sty provide a command
%%     \menu{Programm!!Menu1!Command}
%% and expand it to something like Programm=>Menu1->Command
%% ----------------------------------------------------------------------
\def\fileversion{v0.994}
\def\filedate{2007/11/18}
%%
%% \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         \~}
%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{menu}[
    \filedate\space\fileversion\space menu-Package]
\typeout{menu.sty: Support of typeout menus}
\RequirePackage{xspace}
\newcommand{\menu}[1]{\@menusymbolStart\@menu #1!<\@menusymbolEnd}
\newcommand{\menutext}[1]{\texttt{#1}}
\def\@menu#1!#2<{%
\def\@menuParOne{#1}%
\def\@menuParTwo{#2}%
\def\gt{!}%
\ifx\@empty\@menuParOne%
{\ifx\@menuParTwo\gt%
 \else\expandafter\@menuTo\@menuParTwo <\@menu#2<%
 \fi}%
\else%
\menutext{#1}%
 \ifx\@menuParTwo\@empty%
 \else%
  \expandafter\@menuto\@menuParTwo <\@menu#2!<%
 \fi%
\fi%
}
\def\@menuto#1#2<{\ifx!#1\else\@menusymbolOne\allowbreak\fi}
\def\@menuTo#1#2<{\ifx!#1\else\@menusymbolTwo\allowbreak\fi}
\newcommand*\@menusymbolStart{}
\newcommand*\@menusymbolEnd{}
\newcommand*\@menusymbolOne{\ensuremath{\rightarrow}}
\newcommand*\@menusymbolTwo{\ensuremath{\Rightarrow}}
\newcommand*\menusymbols[3][]{%
\renewcommand*\@menusymbolStart{#1}%
\renewcommand*\@menusymbolOne{#2}%
\renewcommand*\@menusymbolTwo{#3}%
\@menusymbols%
}
\newcommand*\@menusymbols[1][]{%
\renewcommand*\@menusymbolEnd{#1}%
}
\newcommand*\menumathsymbols[3][]{
\renewcommand*\@menusymbolStart{\ensuremath{#1}}
\renewcommand*\@menusymbolOne{\ensuremath{#2}}
\renewcommand*\@menusymbolTwo{\ensuremath{#3}}
}
\menumathsymbols{\rightarrow}{\Rightarrow}
\newlength{\menuitemlength}
\newlength{\menusep}
\setlength{\menuitemlength}{6em}
\setlength{\menusep}{3em}
\newcommand\menuitemactivesymbol{\ensuremath{\Leftarrow}}%
\newenvironment{menufolder}[2][\menuitemlength]{%
    \begin{minipage}{2#1}%
    \setlength{\parskip}{0pt}%
    \menufolderentry[#1]{#2}\par%
    \addtolength{\leftskip}{\menusep}%
    }{%
    \end{minipage}%
}
\newcommand\menufolderentry[2][\menuitemlength]{%
    \makebox[#1][l]{\menutext{#2}\hfill}%
}
\newcommand\menuitem[2][\menuitemlength]{%
    \makebox[#1][l]{\menutext{#2}\hfill}\par%
}
\newcommand\menuitemactive[2][\menuitemlength]{%
    \makebox[#1][l]{\menutext{\emph{#2}}\hfill\menuitemactivesymbol}\par%
}
\newcommand\menuseparator[1][\menuitemlength]{%
    \makebox[#1][l]{~\hrulefill~}\par%
}
\newif\ifmenuoptionhand
\DeclareOption{hand}{
\menuoptionhandtrue
}
\newif\ifmenuoptionframed
\DeclareOption{framed}{
\menuoptionframedtrue
}
\newif\ifmenuoptiongrey
\DeclareOption{grey}{
\menuoptiongreytrue
}
\ProcessOptions\relax
\ifmenuoptionhand
\RequirePackage{bbding}%fuer  \HandLeftUp
\renewcommand\menuitemactivesymbol{\HandLeftUp}%
\fi%ifmenuoptionhand
\ifmenuoptionframed
\RequirePackage{fancybox}%fuer shadowbox
\renewcommand\menufolderentry[2][\menuitemlength]{%
    \framebox[#1][l]{\menutext{#2}\hfill}%
}
\renewcommand\menuitem[2][\menuitemlength]{%
    \framebox[#1][l]{\menutext{#2}\hfill}\par%
}
\renewcommand\menuitemactive[2][\menuitemlength]{%
    \shadowbox to #1{\menutext{\emph{#2}}\hfill\menuitemactivesymbol}\par%
}
\fi%Option framed
\ifmenuoptiongrey
\RequirePackage{fancybox}%fuer shadowbox
\RequirePackage{color}%fuer farbige Boxen
\definecolor{menugrey}{rgb}{0.9,0.9,0.9}
\renewcommand\menufolderentry[2][\menuitemlength]{%
    \fcolorbox{white}{black}{\makebox[#1]{\menutext{\textcolor{white}{#2}}}}\par%
}
\renewcommand\menuitem[2][\menuitemlength]{%
    \fcolorbox{black}{menugrey}{\makebox[#1]{\menutext{\textcolor{white}{#2\hfill}}}}\par%
}
\renewcommand\menuitemactive[2][\menuitemlength]{%
    \textsf{\hspace*{1ex}\shadowbox to #1 {\menutext{#2}\hfill\menuitemactivesymbol}}\par%fixme
}
\renewcommand\menuseparator[1][\menuitemlength]{%
    \makebox[#1][l]{~\hrulefill~}\par%
}
\fi%Option grey
\endinput
%%
%% End of file `menu.sty'.
