diff options
author | Karl Berry <karl@freefriends.org> | 2008-10-14 00:11:30 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-10-14 00:11:30 +0000 |
commit | 0dd3821cd09d820b62f1874fcd9f9bb1fd0ca5a5 (patch) | |
tree | 43670b2375bd793bb36e55084d3a7d154780cdd6 /Master/texmf-dist/tex/latex/ltxdockit/ltxdockit.sty | |
parent | 5c7ba0728c13989826a965d19761067ab8691130 (diff) |
new package ltxdockit (13oct08)
git-svn-id: svn://tug.org/texlive/trunk@10965 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/ltxdockit/ltxdockit.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/ltxdockit/ltxdockit.sty | 501 |
1 files changed, 501 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/ltxdockit/ltxdockit.sty b/Master/texmf-dist/tex/latex/ltxdockit/ltxdockit.sty new file mode 100644 index 00000000000..11ea12c6189 --- /dev/null +++ b/Master/texmf-dist/tex/latex/ltxdockit/ltxdockit.sty @@ -0,0 +1,501 @@ +% $Id: ltxdockit.sty,v 1.1 2008/10/12 19:50:56 lehman stable $ +% +% Copyright (c) 2008 Philipp Lehman. +% +% Permission is granted to copy, distribute and/or modify this +% software under the terms of the LaTeX Project Public License +% (LPPL), version 1.3. +% +% The LPPL maintenance status of this software is +% 'author-maintained'. +% +% This software is provided 'as is', without warranty of any kind, +% either expressed or implied, including, but not limited to, the +% implied warranties of merchantability and fitness for a +% particular purpose. + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{ltxdockit}[2008/10/12 v1.1 latex documentation kit] +\RequirePackage{etoolbox} +\RequirePackage{listings} +\RequirePackage{color} +\RequirePackage{xspace} +\RequirePackage{ifpdf} +\RequirePackage{hyperref} + +\newcount\ltd@tempcnta +\newdimen\ltd@tempdima +\newlength{\marglistwidth} +\newlength{\marglistsep} +\newif\ifpdfbookmarks + +\AtEndPreamble{% + \setlength{\marglistwidth}{\oddsidemargin}% + \addtolength{\marglistwidth}{1in}% + \setlength{\marglistwidth}{0.85\marglistwidth}% + \setlength{\marglistsep}{10pt}} + +\newcommand*{\marglistfont}{\bfseries} +\newcommand*{\optionlistfont}{\bfseries} +\newcommand*{\ltxsyntaxfont}{\ttfamily} +\newcommand*{\ltxsyntaxlabelfont}{\bfseries} +\newcommand*{\changelogfont}{\normalfont} +\newcommand*{\changeloglabelfont}{\bfseries} +\newcommand*{\verbatimfont}{\ttfamily} +\newcommand*{\displayverbfont}{\ttfamily} +\renewcommand*{\verbatim@font}{\verbatimfont} + +\definecolor{spot}{rgb}{0,0.2,0.6} +\definecolor{boxframe}{gray}{0.8} +\definecolor{boxfill}{rgb}{0.95,0.95,0.99} +\newcommand*{\defaultcolor}{\color{black}} +\newcommand*{\spotcolor}{\color{spot}} + +% markup + +\newrobustcmd*{\cs}[1]{\mbox{\verbatimfont\textbackslash#1}} +\newrobustcmd*{\cmd}{\@ifstar\ltd@scmd\ltd@cmd} +\def\ltd@cmd#1{\mbox{\verbatimfont\textbackslash#1}} +\begingroup +\catcode`\ =\active% +\gdef\ltd@scmd#1{\mbox{\verbatimfont% +\catcode`\ =\active\let \textvisiblespace% +\textbackslash\scantokens{#1\relax}}}% +\endgroup +\newrobustcmd*{\env}[1]{\mbox{\verbatimfont#1}} +\newrobustcmd*{\len}[1]{\mbox{\verbatimfont\textbackslash#1}} +\newrobustcmd*{\cnt}[1]{\mbox{\verbatimfont#1}} +\newrobustcmd*{\prm}[1]{% + \mbox{% + \ensuremath\langle + \normalfont\textit{#1}% + \ensuremath\rangle}} +\newrobustcmd*{\mprm}[1]{% + \mbox{% + {\verbatimfont\{}% + \prm{#1}% + {\verbatimfont\}}}} +\newrobustcmd*{\oprm}[1]{% + \mbox{% + {\verbatimfont[}% + \prm{#1}% + {\verbatimfont]}}} +\newrobustcmd*{\opt}[1]{\mbox{\verbatimfont#1}} +\newrobustcmd*{\kvopt}[2]{{% + \verbatimfont#1\penalty\@M + \hskip 0em plus 0.15em\relax + =\penalty\hyphenpenalty + \hskip 0em plus 0.15em\relax #2}} + +\newrobustcmd*{\file}[1]{\mbox{\verbatimfont#1}} +\newrobustcmd*{\sty}[1]{\mbox{\verbatimfont#1}} +\newrobustcmd*{\bin}[1]{\mbox{\verbatimfont#1}} +\newrobustcmd*{\acr}[1]{% + \ifx\f@family\rmdefault + \textsc{\MakeLowercase{#1}}% + \else + #1% + \fi} +\csdef{*}{\textasteriskcentered} +\newrobustcmd*{\keyval}{% + \begingroup\verbatimfont + \prm{key}=\penalty\hyphenpenalty + \prm{value}\endgroup + \xspace} + +\ifpdf + \pdfbookmarkstrue + \pdfstringdefDisableCommands{% + \def\cs#1{\textbackslash#1}% + \def\cmd#1{\textbackslash#1}% + \def\env#1{'#1'}% + \def\len#1{\textbackslash#1}% + \def\cnt#1{'#1'}% + \def\prm#1{'#1'}% + \def\mprm#1{\{#1\}}% + \def\oprm#1{[#1]}% + \def\opt#1{'#1'}% + \def\kvopt#1#2{'#1'='#2'}% + \def\keyval{'key'='value'}% + \let\file\@firstofone + \let\sty\@firstofone + \let\bin\@firstofone + \let\acr\@firstofone}% + \def\ltd@pdfinit{% + \ifpdfbookmarks + \let\ltd@pdflast\Hy@currentbookmarklevel + \numdef\ltd@pdflevel{\Hy@currentbookmarklevel+1} + \fi} + \def\ltd@pdfrestore{% + \ifpdfbookmarks + \global\let\Hy@currentbookmarklevel\ltd@pdflast + \fi} + \def\ltd@pdfbookmark#1#2{% + \ifpdfbookmarks + \def\ltd@pdfanchor{% + \the\c@part\ifundef\c@chapter{}{\the\c@chapter}% + \the\c@section\the\c@subsection\the\c@subsubsection + \the\c@paragraph\the\c@subparagraph:\detokenize{#1}}% + \pdfbookmark[\ltd@pdflevel]{#2}{\ltd@pdfanchor} + \fi} +\else + \pdfbookmarksfalse + \let\ltd@pdfinit\relax + \let\ltd@pdfrestore\relax + \let\ltd@pdfbookmark\@gobbletwo +\fi + +\newenvironment*{marglist} + {\list{}{% + \setlength{\labelwidth}{\marglistwidth}% + \setlength{\labelsep}{\marglistsep}% + \setlength{\leftmargin}{0pt}% + \renewcommand*{\makelabel}[1]{\hss\marglistfont##1}}} + {\endlist} + +% syntax + +\newenvironment*{ltxsyntax} + {\ltd@pdfinit + \list{}{% + \setlength{\labelwidth}{\marglistwidth}% + \setlength{\labelsep}{0pt}% + \setlength{\leftmargin}{0pt}% + \renewcommand*{\makelabel}[1]{% + \hss\ltxsyntaxfont\ltxsyntaxlabelfont##1}}% + \let\csitem\ltd@csitem + \let\cmditem\ltd@cmditem + \let\envitem\ltd@envitem + \let\lenitem\ltd@csitem + \let\boolitem\ltd@boolitem + \let\cntitem\ltd@item + \let\optitem\ltd@item} + {\endlist + \ltd@pdfrestore} + +\def\ltd@itemsave{% + \ltd@tempcnta\@itempenalty + \ltd@tempdima\itemsep + \@itempenalty\@M} +\def\ltd@itemrest{% + \@itempenalty\ltd@tempcnta + \itemsep\ltd@tempdima} + +\def\ltd@syntaxsetup{% + \@makeother\[% + \@makeother\]% + \@makeother\<% + \@makeother\>% + \@makeother\|}% + +\def\ltd@itembreak{% + \ltd@goodbreak + \let\ltd@goodbreak\goodbreak} +\let\ltd@goodbreak\relax + +\def\ltd@item{% + \@ifstar + {\boolfalse{@tempswa}\ltd@item@i} + {\booltrue{@tempswa}\ltd@item@i}} +\def\ltd@item@i#1{% + \ifbool{@tempswa} + {\ltd@item@ii{#1\hspace\marglistsep}{#1}} + {\ltd@item@ii{#1\hspace\marglistsep}{}}} +\def\ltd@item@ii#1#2{% + \ltd@itemsave + \ifhmode + \itemsep\z@ + \else + \ltd@itembreak + \fi + \item[#1]% + \ltd@itemrest + \ifblank{#2}{}{\ltd@pdfbookmark{#2}{#1}}} + +\def\ltd@csitem{% + \@ifstar + {\boolfalse{@tempswa}\ltd@csitem@i} + {\booltrue{@tempswa}\ltd@csitem@i}} +\def\ltd@csitem@i#1{% + \ifbool{@tempswa} + {\ltd@item@ii{\textbackslash#1\hspace\marglistsep}{#1}} + {\ltd@item@ii{\textbackslash#1\hspace\marglistsep}{}}} + +\def\ltd@boolitem#1{% + \ltd@item@ii{\textbackslash#1true\hspace\marglistsep}{}% + \leavevmode\vspace{-\parsep}% + \ltd@item@ii{\textbackslash#1false\hspace\marglistsep}{}% + \leavevmode\vspace{\numexpr-2\baselineskip}} + +\def\ltd@cmditem{% + \@ifstar + {\boolfalse{@tempswa}\ltd@cmditem@i} + {\booltrue{@tempswa}\ltd@cmditem@i}} +\def\ltd@cmditem@i#1{% + \ifbool{@tempswa} + {\ltd@cmditem@ii{\textbackslash#1}{#1}} + {\ltd@cmditem@ii{\textbackslash#1}{}}} +\def\ltd@cmditem@ii#1#2{% + \ltd@itemsave + \ifhmode + \itemsep-\topsep + \else + \ltd@itembreak + \fi + \item[#1]% + \ltd@itemrest + \ifblank{#2}{}{\ltd@pdfbookmark{#2}{#1}}% + \begingroup + \ltd@syntaxsetup + \ltxsyntaxfont + \let\@tempa\@empty + \ltd@parseargs} + +\def\ltd@envitem#1{% + \ltd@itembreak + \item[\textbackslash begin]\{{\ltxsyntaxfont\ltxsyntaxlabelfont#1}\}% + \ltd@pdfbookmark{#1}{#1}% + \begingroup + \ltd@syntaxsetup + \ltxsyntaxfont + \def\@tempa{% + \ltd@itemsave + \itemsep\z@ + \item[\textbackslash end]\{{\ltxsyntaxfont\ltxsyntaxlabelfont#1}\}% + \ltd@itemrest}% + \ltd@parseargs} + +\def\ltd@parseargs{% + \futurelet\@let@token\ltd@parseargs@space} +\def\ltd@parseargs@space{% + \ifx\@let@token\@sptoken + \expandafter\ltd@gobblespace + \else + \expandafter\ltd@parseargs@i + \fi} +\def\ltd@parseargs@i{% + \ifx\@let@token\\% + \expandafter\ltd@printarg@i + \else + \expandafter\ltd@parseargs@ii + \fi} +\def\ltd@parseargs@ii{% + \ifx\@let@token*% + \expandafter\ltd@printarg@ii + \else + \expandafter\ltd@parseargs@iii + \fi} +\def\ltd@parseargs@iii{% + \ifx\@let@token[%] + \expandafter\ltd@printarg@iii + \else + \expandafter\ltd@parseargs@iv + \fi} +\def\ltd@parseargs@iv{% + \ifx\@let@token(%) + \expandafter\ltd@printarg@iv + \else + \expandafter\ltd@parseargs@v + \fi} +\def\ltd@parseargs@v{% + \ifx\@let@token<%> + \expandafter\ltd@printarg@v + \else + \expandafter\ltd@parseargs@vi + \fi} +\def\ltd@parseargs@vi{% + \ifx\@let@token|% + \expandafter\ltd@printarg@vi + \else + \expandafter\ltd@parseargs@vii + \fi} +\def\ltd@parseargs@vii{% + \ifx\@let@token\bgroup + \expandafter\ltd@printarg@vii + \else + \expandafter\ltd@parseargs@end + \fi} +\def\ltd@parseargs@end{% + \@tempa\endgroup + \nobreak\vspace*{\itemsep}} + +\def\ltd@printarg@i#1{\%\nobreak\par\ltd@parseargs} +\def\ltd@printarg@ii#1{{\ltxsyntaxfont\ltxsyntaxlabelfont#1}\ltd@parseargs} +\def\ltd@printarg@iii[#1]{[\prm{#1}]\ltd@parseargs} +\def\ltd@printarg@iv(#1){(\prm{#1})\ltd@parseargs} +\def\ltd@printarg@v<#1>{\prm{#1}\ltd@parseargs} +\def\ltd@printarg@vi|#1|{#1\ltd@parseargs} +\def\ltd@printarg@vii#1{\{\prm{#1}\}\ltd@parseargs} +\csdef{ltd@gobblespace} {\ltd@parseargs} + +% options + +\newenvironment*{optionlist} + {\ltd@pdfinit + \list{}{% + \setlength{\labelwidth}{\marglistwidth}% + \setlength{\labelsep}{\z@}% + \setlength{\leftmargin}{0pt}% + \renewcommand*{\makelabel}[1]{\hss\optionlistfont##1}}% + \ltd@optionlist} + {\endlist + \ltd@pdfrestore} + +\newenvironment*{optionlist*} + {\ltd@pdfinit + \list{}{% + \setlength{\labelwidth}{0pt}% + \setlength{\labelsep}{0pt}% + \setlength{\leftmargin}{0pt}% + \renewcommand*{\makelabel}[1]{\hss\optionlistfont##1}}% + \ltd@optionlist + \def\legitem##1{\item[##1]\item\relax}} + {\endlist + \ltd@pdfrestore} + +\def\ltd@optionlist{% + \newcommand*{\optitem}[3][]{% + \ifblank{##1} + {\ltd@option{##2}{##3}{}} + {\ltd@option{##2}{##3}{\ltd@textverb{##1}}}}% + \newcommand*{\valitem}[3][]{% + \ifblank{##1} + {\ltd@option{##2}{\prm{##3}}{}} + {\ltd@option{##2}{\prm{##3}}{\ltd@textverb{##1}}}}% + \newcommand*{\boolitem}[2][]{% + \ifblank{##1} + {\ltd@option{##2}{\ltd@textverb{true}, + \ltd@textverb{false}}{}} + {\ltd@option{##2}{\ltd@textverb{true}, + \ltd@textverb{false}}{\ltd@textverb{##1}}}}% + \newcommand*{\intitem}[2][]{% + \ifblank{##1} + {\ltd@option{##2}{\prm{integer}}{}} + {\ltd@option{##2}{\prm{integer}}{\ltd@textverb{##1}}}}% + \newcommand*{\legitem}[1]{% + \item[##1\hspace{\marglistsep}]% + \ltd@pdfbookmark{##1}{##1}}% + \def\ltd@textverb##1{{\displayverbfont##1}}% + \def\ltd@option##1##2##3{% + \item[##1]% + \ltd@pdfbookmark{##1}{##1}% + \ltd@textverb{=}{##2}% + \ifblank{##3}{}{\hfill default: ##3}% + \par\nobreak\vspace{\itemsep}}} + +\newenvironment*{valuelist} + {\list{}{% + \setlength{\labelwidth}{5em}% + \setlength{\labelsep}{0.5em}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \setlength{\itemsep}{0pt}% + \renewcommand*{\makelabel}[1]{\displayverbfont##1\hss}}} + {\endlist} + +\newenvironment*{valuelist*} + {\list{}{% + \setlength{\labelwidth}{0pt}% + \setlength{\labelsep}{0pt}% + \setlength{\leftmargin}{0pt}% + \renewcommand*{\makelabel}[1]{\hss\optionlistfont##1}% + \let\@@item\item + \def\item[##1]{% + \@itempenalty-\@highpenalty + \@@item[##1]% + \@itempenalty\@M + \@@item\relax}}} + {\endlist} + +\newenvironment*{argumentlist}[1] + {\list{}{% + \settowidth{\labelwidth}{\displayverbfont#1}% + \setlength{\labelsep}{1em}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \setlength{\itemsep}{0pt}% + \renewcommand*{\makelabel}[1]{\displayverbfont##1\hss}}} + {\endlist} + +% changelog + +\newenvironment*{changelog} + {\ltd@pdfinit + \list{}{% + \setlength{\leftmargin}{0pt}% + \setlength{\itemsep}{0pt}% + \renewcommand*{\makelabel}[1]{##1\hss}% + \raggedright\changelogfont}% + \def\release##1##2{% + \@release{##1}{##2}% + \list{}{% + \setlength{\leftmargin}{1.5em}% + \setlength{\itemindent}{-1.5em}% + \setlength{\itemsep}{0pt}}% + \samepage + \begingroup + \def\item{\endgroup\item\@itempenalty\z@}}% + \def\endrelease{\endlist}% + \def\@release##1##2{% + \begingroup + \changeloglabelfont + \item\relax + \ltd@pdfbookmark{##1}{##1 (##2)}% + ##1\quad##2\par\nobreak + \endgroup} + \def\see##1{% + \leaders\hbox{$\m@th\mkern4.5mu\hbox{.}\mkern4.5mu$}% + \hfill\makebox[2.75em][l]{\ref{##1}}}} + {\endlist + \ltd@pdfrestore} + +% verbatim + +\newlength{\lstenvsep} +\setlength{\lstenvsep}{\partopsep} +\addtolength{\lstenvsep}{\topsep} + +\lstset{% + aboveskip=\lstenvsep, + belowskip=\lstenvsep, + basicstyle=\displayverbfont\small, + commentstyle=\itshape, + keywordstyle=\spotcolor, + emphstyle=\spotcolor, + numbers=none, + basewidth=0.5em, + fontadjust=true, + flexiblecolumns=true, + keepspaces=false} + +\lstdefinestyle{plain}{% + escapechar={\#}} +\lstdefinestyle{highlight}{% + moredelim=[is][\spotcolor]{<<}{>>}} +\lstdefinestyle{latex}{% + alsoletter={\\}, + moredelim=[is][\spotcolor]{<<}{>>}} +\lstdefinestyle{ifthen}{% + alsoletter={\\}, + keywords={\\and,\\or,\\not,\\AND,\\OR,\\NOT}, + otherkeywords={=,<,>,\\(,\\)}} + +\lstnewenvironment{ltxcode}[1][] + {\lstset{style=latex,#1}} + {} + +\lstnewenvironment{ltxexample}[1][] + {\lstset{% + aboveskip=1.5\lstenvsep, + xleftmargin=3pt, + xrightmargin=3pt, + frame=single, + backgroundcolor=\color{boxfill}, + fillcolor=\color{white}, + rulecolor=\color{boxframe}, + framesep=2.5pt, + framerule=0.5pt, + style=latex,#1}} + {} + +\endinput |