From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/ltxdockit/ltxdockit.sty | 579 +++++++++++++++++++++++++++ 1 file changed, 579 insertions(+) create mode 100644 macros/latex/contrib/ltxdockit/ltxdockit.sty (limited to 'macros/latex/contrib/ltxdockit/ltxdockit.sty') diff --git a/macros/latex/contrib/ltxdockit/ltxdockit.sty b/macros/latex/contrib/ltxdockit/ltxdockit.sty new file mode 100644 index 0000000000..fe20f10445 --- /dev/null +++ b/macros/latex/contrib/ltxdockit/ltxdockit.sty @@ -0,0 +1,579 @@ +% $Id: ltxdockit.sty,v 1.2d 2011/03/25 20:33:14 lehman stable $ +% +% Copyright (c) 2008-2011 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. + +\def\ltd@rcsid$#1: #2 #3 #4 #5${#4 v#3} + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{ltxdockit} +[\ltd@rcsid $Id: ltxdockit.sty,v 1.2d 2011/03/25 20:33:14 lehman stable $ + LaTeX documentation kit] + +\RequirePackage{etoolbox} +\RequirePackage{listings} +\RequirePackage{color} +\RequirePackage{xspace} +\RequirePackage{ifpdf} +\RequirePackage{hyperref} + +\newcount\ltd@tempcnta +\newlength{\ltd@tempdima} +\newlength{\marglistwidth} +\newlength{\marglistsep} + +\AtEndPreamble{% + \deflength{\marglistwidth}{(\oddsidemargin+1in)*85/100}% + \deflength{\marglistsep}{10pt}} + +\newcommand*{\marglistfont}{\bfseries} +\newcommand*{\margnotefont}{} +\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}[1]{\mbox{\verbatimfont\textbackslash#1}} +\newrobustcmd*{\env}[1]{\mbox{\verbatimfont#1}} +\newrobustcmd*{\len}[1]{\mbox{\verbatimfont\textbackslash#1}} +\newrobustcmd*{\cnt}[1]{\mbox{\verbatimfont#1}} +\newrobustcmd*{\prm}[1]{% + \ifblank{#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}} + +\csdef{*}{\textasteriskcentered} +\newrobustcmd*{\file}[1]{\mbox{\verbatimfont#1}} +\newrobustcmd*{\sty}[1]{\mbox{\verbatimfont#1}} +\newrobustcmd*{\bin}[1]{\mbox{\verbatimfont#1}} +\newrobustcmd*{\acr}[1]{\mbox{% + \ifx\f@family\rmdefault + \textsc{\MakeLowercase{#1}}% + \else + #1% + \fi}} +\newrobustcmd*{\keyval}{% + \begingroup\verbatimfont + \prm{key}=\penalty\hyphenpenalty + \prm{value}\endgroup + \xspace} + +\ifpdf + \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@pdfbookmark#1#2{% + \edef\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 + \string:\detokenize{#1}}% + \belowpdfbookmark{#2}{\ltd@pdfanchor}} +\else + \let\ltd@pdfbookmark\@gobbletwo +\fi + +\newenvironment*{marglist} + {\list{}{% + \setlength{\labelwidth}{\marglistwidth}% + \setlength{\labelsep}{\marglistsep}% + \setlength{\leftmargin}{0pt}% + \renewcommand*{\makelabel}[1]{\hss\marglistfont##1}}} + {\endlist} + +\newenvironment*{keymarglist} + {\marglist + \setlength{\itemsep}{0pt}% + \raggedright} + {\endmarglist} + +% references + +\newcommand*{\secref}{\refs{\S}{\S\S}} +\newcommand*{\Secref}{\refs{\S}{\S\S}} +\newcommand*{\apxref}{\refs{appendix}{appendices}} +\newcommand*{\Apxref}{\refs{Appendix}{Appendices}} +\newcommand*{\tabref}{\refs{table}{tables}} +\newcommand*{\Tabref}{\refs{Table}{Tables}} + +\newrobustcmd*{\refs}[3]{% + \begingroup + \@tempcnta\z@ + \def\do##1{\advance\@tempcnta\@ne}% + \docsvlist{#3}% + \@tempcntb\@ne + \def\@tempa{\def\@tempa{% + \advance\@tempcntb\@ne + \ifnumequal{\@tempcnta}{2} + { and } + {, }}}% + \def\do##1{\@tempa\ref{##1}}% + \ifnumgreater{\@tempcnta}{1}{#2}{#1}~\docsvlist{#3}% + \endgroup} + +% syntax + +\newenvironment*{ltxsyntax} + {\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} + +\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{% + \leavevmode + \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} + {\list{}{% + \setlength{\labelwidth}{\marglistwidth}% + \setlength{\labelsep}{\z@}% + \setlength{\leftmargin}{0pt}% + \renewcommand*{\makelabel}[1]{\hss\optionlistfont##1}}% + \ltd@optionlist} + {\endlist} + +\newenvironment*{optionlist*} + {\list{}{% + \setlength{\labelwidth}{0pt}% + \setlength{\labelsep}{0pt}% + \setlength{\leftmargin}{0pt}% + \renewcommand*{\makelabel}[1]{\hss\optionlistfont##1}}% + \ltd@optionlist + \let\ltd@pdfbookmark\@gobbletwo + \let\ltd@option@i\ltd@option@ii + \def\legitem##1{\item[##1]\item\relax}} + {\endlist} + +\def\ltd@optionlist{% + \let\optitem\ltd@ol@optitem + \let\varitem\ltd@ol@varitem + \let\valitem\ltd@ol@valitem + \let\choitem\ltd@ol@choitem + \let\boolitem\ltd@ol@boolitem + \let\intitem\ltd@ol@intitem + \let\legitem\ltd@ol@legitem} + +\newcommand*{\ltd@ol@optitem}[3][]{% + \ifblank{#1} + {\ltd@option{#2}{#2}{#3}{}} + {\ltd@option{#2}{#2}{#3}{\ltd@textverb{#1}}}}% + +\newcommand*{\ltd@ol@varitem}[3][]{% + \ifblank{#1} + {\ltd@option{#2}{\prm{#2}}{#3}{}} + {\ltd@option{#2}{\prm{#2}}{#3}{\ltd@textverb{#1}}}}% + +\newcommand*{\ltd@ol@valitem}[3][]{% + \ifblank{#1} + {\ltd@option{#2}{#2}{\prm{#3}}{}} + {\ltd@option{#2}{#2}{\prm{#3}}{\ltd@textverb{#1}}}}% + +\newcommand*{\ltd@ol@choitem}[3][]{% + \ifblank{#1} + {\ltd@option{#2}{#2}{\ltd@verblist{#3}}{}} + {\ltd@option{#2}{#2}{\ltd@verblist{#3}}{\ltd@textverb{#1}}}}% + +\newcommand*{\ltd@ol@boolitem}[2][]{% + \ifblank{#1} + {\ltd@option{#2}{#2}{\ltd@verblist{true,false}}{}} + {\ltd@option{#2}{#2}{\ltd@verblist{true,false}}{\ltd@textverb{#1}}}}% + +\newcommand*{\ltd@ol@intitem}[2][]{% + \ifblank{#1} + {\ltd@option{#2}{#2}{\prm{integer}}{}} + {\ltd@option{#2}{#2}{\prm{integer}}{\ltd@textverb{#1}}}}% + +\def\ltd@ol@legitem#1{% + \item[#1\hspace{\marglistsep}]% + \ltd@pdfbookmark{#1}{#1}}% + +\def\ltd@textverb#1{{\displayverbfont#1}} + +\def\ltd@verblist#1{% + \begingroup + \let\@tempa\@empty + \def\do##1{\@tempa\ltd@textverb{##1}\def\@tempa{, }}% + \docsvlist{#1}% + \endgroup} + +\def\ltd@option#1#2#3#4{% + \@ifnextchar[%] + {\ltd@option@i{#1}{#2}{#3}{#4}} + {\ltd@option@i{#1}{#2}{#3}{#4}[]}} + +\def\ltd@option@i#1#2#3#4[#5]{% + \item[#2]% + \ltd@pdfbookmark{#1}{#1}% + \begingroup\raggedright + \ltd@textverb{=}% + \settowidth\@tempdimb{\ltd@textverb{=}}% + \@tempdima=\dimexpr\linewidth-\@tempdimb\relax + \ifblank{#4} + {} + {\settowidth\@tempdimb{default: #4}% + \@tempdima=\dimexpr\@tempdima-\@tempdimb-2em\relax}% + \parbox[t]{\@tempdima}{\raggedright #3}% + \ifblank{#4} + {} + {\hfill default:~#4}% + \ifblank{#5} + {} + {\marginpar{\margnotefont #5}}% + \par\endgroup + \nobreak\vspace{\itemsep}} + +\def\ltd@option@ii#1#2#3#4[#5]{% + \item[#2]% + \ltd@pdfbookmark{#1}{#1}% + \begingroup\raggedright + \ltd@textverb{=}% + \settowidth\@tempdimb{{\optionlistfont#2}\ltd@textverb{=}}% + \@tempdima=\dimexpr\linewidth-\@tempdimb\relax + \ifblank{#4} + {} + {\settowidth\@tempdimb{default: #4}% + \@tempdima=\dimexpr\@tempdima-\@tempdimb-2em\relax}% + \parbox[t]{\@tempdima}{\raggedright #3}% + \ifblank{#4} + {} + {\hfill default:~#4}% + \ifblank{#5} + {} + {\marginpar{\margnotefont #5}}% + \par\endgroup + \nobreak\vspace{\itemsep}} + +\newenvironment*{valuelist}[1][] + {\list{}{% + \ifblank{#1} + {\setlength{\labelwidth}{5em}} + {\settowidth{\labelwidth}{\optionlistfont#1}}% + \setlength{\labelsep}{1em}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \setlength{\itemsep}{0pt}% + \renewcommand*{\makelabel}[1]{\optionlistfont##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} + {\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[3em][l]{\ref{##1}}}} + {\endlist} + +% 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 -- cgit v1.2.3