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/fcltxdoc/fcltxdoc.dtx | 1757 ++++++++++++++++++++++++++++ macros/latex/contrib/fcltxdoc/fcltxdoc.ins | 89 ++ macros/latex/contrib/fcltxdoc/fcltxdoc.pdf | Bin 0 -> 721679 bytes 3 files changed, 1846 insertions(+) create mode 100644 macros/latex/contrib/fcltxdoc/fcltxdoc.dtx create mode 100644 macros/latex/contrib/fcltxdoc/fcltxdoc.ins create mode 100644 macros/latex/contrib/fcltxdoc/fcltxdoc.pdf (limited to 'macros/latex/contrib/fcltxdoc') diff --git a/macros/latex/contrib/fcltxdoc/fcltxdoc.dtx b/macros/latex/contrib/fcltxdoc/fcltxdoc.dtx new file mode 100644 index 0000000000..5570bb1846 --- /dev/null +++ b/macros/latex/contrib/fcltxdoc/fcltxdoc.dtx @@ -0,0 +1,1757 @@ +% \iffalse meta-comment +% fcltxdoc : 2011/03/12 v1.0 - Private additional ltxdoc support (FC)] +% +% 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 +% +% lppl copyright 2010-2011 by FC +%<*ignore> +\begingroup + \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 fcltxdoc: 2011/03/12 v1.0 - Private additional ltxdoc support (FC)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix \relax +\preamble + +This is a generated file. +Copyright (FC) 2010-2011 - lppl + +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 + +This work consists of the main source file fcltxdoc.dtx +and the derived files + fcltxdoc.sty, fcltxdoc.pdf, fcltxdoc.ins, fcltxdoc.drv. + + +fcltxdoc: 2011/03/12 v1.0 - Private additional ltxdoc support (FC) + +This package is not intended for public use. +It is required to compile some of my documentations files. + +------------------------------------------------------------------------------ +\endpreamble +\let\MetaPrefix \DoubleperCent +{ +\catcode164=9 +\generate{% + \file{fcltxdoc.ins}{\from{fcltxdoc.dtx}{install}}% + \file{fcltxdoc.sty}{\from{fcltxdoc.dtx}{package}}% +} +} +\askforoverwritefalse +\generate{% + \file{fcltxdoc.drv}{\from{fcltxdoc.dtx}{driver}}% +} +\obeyspaces +\Msg{************************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* file into a directory searched by TeX: *} +\Msg{* *} +\Msg{* fcltxdoc.sty *} +\Msg{* *} +\Msg{* To produce the documentation run the file `copypaste.dtx' *} +\Msg{* through pdfLaTeX. *} +\Msg{* *} +\Msg{************************************************************************} + +\endbatchfile +% +%<*ignore> +\fi +% +%<*driver> +\def\thisinfo {Private additional ltxdoc support} +\def\thisversion {1.0} +\PassOptionsToPackage{}{hyperref} +\PassOptionsToPackage{linegoal,full}{tabu} +\RequirePackage [latin1]{inputenc} +\RequirePackage [\detokenize{§§},scrartcl]{fcltxdoc} +\RequirePackage {calc} +\csname endofdump\endcsname +\let\microtypeYN=n +\RequirePackage {tabu} +\CheckDates {interfaces=2011/02/12,linegoal=2011/02/25} +\documentclass[a4paper,oneside]{ltxdoc} +\AtBeginDocument{\catcode164=14} +\RequirePackage{ragged2e,lmodern,pifont,upgreek} +\ifx y\microtypeYN + \usepackage[expansion=all,stretch=20,shrink=60]{microtype}\fi % font (microtype) +\usepackage {logbox} +\lstset{ +backgroundcolor=\color{GhostWhite!200}, +commentstyle=\ttfamily\color{violet}, +keywordstyle=[3]{\color{black}\bfseries}, +morekeywords=[3]{&,\\}, +keywordstyle=[4]{\color{red}\bfseries}, +%% morekeywords=[4]{red}, +keywordstyle=[5]{\color{blue}\bfseries}, +morekeywords=[5]{blue}, +keywordstyle=[6]{\color{green}\bfseries}, +morekeywords=[6]{green}, +keywordstyle=[7]{\color{yellow}\bfseries}, +morekeywords=[7]{yellow}, +keywordstyle=[8]{\color{FireBrick!80}\bfseries}, +morekeywords=[8]{ +}, +keywordstyle=[9]{\color{pkgcolor}\bfseries}, +morekeywords=[9]{ +}, +keywordstyle=[10]{\color{pkgcolor}\bfseries\slshape}, +morekeywords=[10]{}, +extendedchars={true}, +alsoletter={&}, +} +\CodelineNumbered +\RequirePackage {geometry} +\geometry {top=0pt,includeheadfoot,headheight=.6cm,headsep=.6cm,bottom=.6cm,footskip=.5cm,left=30mm,right=1.5cm} +\hypersetup{% + pdfsubject={Private additional ltxdoc support}, + pdfauthor={Florent CHERVET}, + pdfstartview=FitH 0, + pdfkeywords={tex, e-tex, latex, package, doc, doc.sty, dtx, documentation}, + } +\begin{document} + \DocInput{\thisfile.dtx} +\end{document} +% +% \fi +% +% \CheckSum{-0} +% +% \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 \~} +% +% \DoNotIndex{\tabu@AtEnd,\tabu@,\tabu@@,\tracingtabu,\LNGL@setlinegoal,\tabu@msgalign@PT} +% \DoNotIndex{\tabu@l@@d@rs,\@length,\@thick,\@skip,\@box,\@unbox,\@ss,\@therule,\tabu@color,\tabu@stack,\tabu@spaces,} +% \DoNotIndex{\tabu@fornoopORI,\tabu@m@ybesiunitx,\tabu@multic@lumn,\tabu@multicolumnORI,\tabu@s@ved,\tabu@startpboxORI,\tabucline@sc@n} +% \DoNotIndex{\o,\P,\T,\O,\0,\@cdr,\@currenvir,\active,\next,\leavevmode,\star,\space,\textasteriskcentered} +% \DoNotIndex{\escapechar,\endlinechar} +% \DoNotIndex{\cr,\crcr,\copy,\box,\hbox,\vbox,\vtop,\wd,\ht\,\dp,\hrule,\vrule,\fbox,\fboxsep,\voidb@x,\hb@xt@} +% \DoNotIndex{\hss,\vss,\hfil,\hfill,\hskip,\hspace,\vskip,\vspace,\kern,\hsize,\vsize,\par,\endgraf} +% \DoNotIndex{\nobreak,\break,\penalty,\width,\@width,\@height,\@depth} +% \DoNotIndex{\if,\fi,\ifnum,\ifodd,\ifdim,\ifcsname,\ifdefined,\ifcat,\ifcase,\iftrue,\iffalse,\ifmmode,\ifhmode,\ifvmode} +% \DoNotIndex{\global,\advance,\multiply,\divide,\dimexpr,\glueexpr} +% \DoNotIndex{\the,\toks,\number} +% \DoNotIndex{\string,\protect,\@unexpandable@protect,\@typeset@protect} +% \DoNotIndex{\begingroup,\endgroup,\bgroup,\egroup,\color@begingroup,\color@egroup} +% \DoNotIndex{\newcommand,\providecommand,\renewcommand,\renewenvironment,\newrobustcmd,\renewrobustcmd,\providerobustcmd} +% \DoNotIndex{\@namedef,\@nameuse,\@ifstar,\@ifnextchar,\kernel@ifnextchar} +% \DoNotIndex{\stepcounter,\usecounter,\count@,\toks@,\dimen@,\dimen@i,\dimen@ii} +% \DoNotIndex{\if@tempswa,\@tempswatrue,\@tempswafalse,\@tempdima,\@tempdimb,\@tempdimc,\@tempcnta,\@tempcntb,\@tempboxa} +% \DoNotIndex{\@lowpenalty,\@medpenalty,\maxdimen,\@listctr,\@mpfn} +% \DoNotIndex{\@empty,\@gobble,\@ifundefined,\g@addto@macro,\verb,} +% \DoNotIndex{\@for,\@tfor,\@nil,\@nnil,\in@@} +% \DoNotIndex{\@currentHref,\@currentlabel,\@currentlabelname,\Hy@footnote@currentHref,\Hy@raisedlink,\hyper@@anchor,\ifHy@nesting} +% \DoNotIndex{\color,\set@color,\@frameb@x,} +% \DoNotIndex{\Command,\FrameCommand,\MakeFramed,\FrameRestore,\endMakeFramed} +% \DoNotIndex{\CT@arc@,\CT@drsc@,\CT@end} +% \DoNotIndex{\col@sep,\NC@list,\NC@do,\NC@,\NC@rewrite@,\@nextchar,\@startpbox,\@endpbox,\@addtopreamble,\@lastchclass,\@chnum,\@chclass} +% \DoNotIndex{\@preamerr} +% \DoNotIndex{\adl@array,\@preamerror,\adl@xarraydashrule,\adl@ncol,\adl@box,\adl@vlineR,\adl@vlineL,\adl@leftrulefalse,\adl@dashgapcolor,^^A +% \adl@colhtdp,\adl@class@start,\adl@arrayrestore\ifadl@inactive,\ifadl@leftrule,\ifadl@zwvrule,\adl@act@@endpbox,\adl@act@endpbox,^^A +% \tabu@adl@act@endpbox,\tabu@adl@xarraydashrule,\tabu@adl@endtrial} +% \DoNotIndex{\FV@RightListNumber,\FV@RightListFrame,\FancyVerbFormatLine} +% \DoNotIndex{\tabu@FV@@@CheckEnd,\tabu@FV@@CheckEnd,\tabu@FV@DefineCheckEnd,\tabu@FV@ListProcessLine} +% \DoNotIndex{\cellspacetoplimit,\bcolumn} +% \makeatletter +% +% \colorlet {pkgcolor}{RoyalBlue!100!Indigo!170} \colorlet{csrefcolor}{pkgcolor} +% \colorlet {linkcolor}{RoyalBlue!100!Indigo!170} +% \AtBeginEnvironment {declcs}{\changefont{size+=1pt}\tabusetup* {everyrow=\rowcolor{WhiteSmoke!60},rule width=\heavyrulewidth,line style= }} +% \AtBeginEnvironment {declcs*}{\changefont{size+=1pt}\tabusetup* {everyrow=\rowcolor{WhiteSmoke!60},rule width=\heavyrulewidth , line style= }} +% \AtBeginEnvironment {declenv}{\changefont{size+=1pt}\tabusetup* {everyrow=\rowcolor{WhiteSmoke!60},rule width=\heavyrulewidth, line style= }} +% \parindent\z@\parskip.4\baselineskip \topsep\parskip \partopsep\z@skip ^^A\leftmargini =.5\dimexpr\nGm@lmargin \relax +% +% \colorlet{macrocode}{black} +% \def\macro@font{\def\Cr@scale{.85}\changefont{fam=pcrs,siz=9pt,ser=m,color=macrocode,spread=1}\let\AltMacroFont\macro@font} +% \def\meta@font@select {\ttfamily\itshape} +% \def\MacroFont{\def\Cr@scale{.85}\changefont{fam=pcrs,siz=10pt,ser=b,color=macrocode}} +% +% ^^A% \newlist{itempunct}{itemize}{1} +% ^^A% \setlist[itempunct]{nolistsep,font=\smaller,leftmargin=1.7em,label=\textbullet} +% \def\ttdefault{lmvtt} +% \providerobustcmd*\FC[1][\color{copper}]{{#1\usefont{T1}{fts}xn FC}} +% \newrobustcmd*\thisyear{\begingroup +% \def\thisyear##1/##2\@nil{\endgroup +% \oldstylenums{\ifnum##1=2011\else 2011\,\textendash\,\fi ##1}^^A +% }\expandafter\thisyear\thisdate\@nil +% } +% \newsavebox\tempbox +% +% \bookmarksetup{open=true,openlevel=2} +% \pagesetup{% +% head/rule/width=.0pt, +% left/offset=2cm,foot/left/offset+=.5cm,right/offset=1cm, +% head/font=\scriptsize, +% head/color=RoyalBlue!80!Indigo!40, +% head/left=\moveleft1cm\vbox to\z@{\vss\setbox0=\null\ht0=\z@\wd0=\paperwidth\dp0=\headheight\rlap{\colorbox{AliceBlue!55}{\box0}}}\vskip-\headheight\thispackage, +% head/right=\thisinfo, +% foot/font=\color{gray!80}\scriptsize, +% foot/left=\vbox to\baselineskip{\vss{{\rotatebox[origin=l]{90}{\thispackage\,[rev.\thisversion]\,\copyright\,\thisyear\,\lower.4ex\hbox{\pkgcolor\NibRight}\,\FC}}}}, +% foot/right=\oldstylenums{\arabic{page}} / \oldstylenums{\pageref{LastPage}}% +% } +% \pagesetup[plain]{% +% norules,font=\scriptsize, +% foot/right=\oldstylenums{\arabic{page}} / \oldstylenums{\pageref{LastPage}}, +% left/offset=3cm,foot/left/offset+=.5cm,right/offset=1cm, +% foot/left=\vbox to\baselineskip{\vss{{\rotatebox[origin=l]{90}{\thispackage\,[rev.\thisversion]\,\copyright\,\thisyear\,\lower.4ex\hbox{\pkgcolor\NibRight}\,\FC\quad \xemail{florent.chervet at free.fr}}}}}, +% } +% \pagestyle{fancy} +% \bottomtitles=.15\textheight +% \sectionformat\section { +% mark=\marksthe* {section}{#1}, +% left=\declmarginwidth, +% top=\medskipamount, +% bottom=\smallskipamount, +% font=\normalfont\LARGE\bfseries, +% bookmark={bold,color=[rgb]{0.02,0.05,.2}}, +% break=\goodbreak} +% \sectionformat\subsection{% +% top=\medskipamount, +% bottom=.5\smallskipamount, +% left=.5\declmarginwidth, +% bookmark={color=[rgb]{0.02,0.05,.1}}, +% font=\normalfont\Large\bfseries, +% break=\addpenalty{-\@highpenalty}} +% \sectionformat\subsubsection{ +% bookmark={italic=false,color=lk}, +% font=\normalfont\large\bfseries\color{lk}, +% label=, +% top=\medskipamount, +% bottom=.5\smallskipamount, +% break=\addpenalty{-\@medpenalty}} +% ^^A% \setitemize{itemsep=\parskip,topsep=0pt,labelsep=1em,parsep=0pt,beginpenalty=10000} +% \tikzset{every picture/.add style={}{/utils/exec=\changefont{spread=1}}} +% \newrobustcmd*\IMPLEMENTATION{% +% ^^A\geometry{top=0pt,includeheadfoot,headheight=.6cm,headsep=.6cm,bottom=.6cm,footskip=.5cm,left=4cm,right=1.5cm} +% \newgeometry {top=0.8cm,headheight=.5cm,headsep=.3cm,bottom=1.2cm,footskip=.5cm,left=30mm,right=3mm } +% \pagesetup*{ +% ^^Aleft/offset-=10mm, +% right/offset-=12mm, +% foot/left=\vbox to\baselineskip{\vss{{\rotatebox[origin=l]{90}{\thispackage\,[rev.\thisversion]}}}}, +% }% +% \clearpage +% \tocsetup{depth-=1} +% \addtocontents{toc}{\tocsetup{subsection/font+=\string\smaller,subsection/skip=-2pt plus2pt minus2pt}} +% \sectionformat\section{bookmark/color=black}\sectionformat\subsection{bookmark/color=black} +% \bookmarksetup{bold*,openlevel=3} \hfuzz=3mm +% \section(IMPLEMENTATION)[\scshape{Implementation}]{\textlarger{Implementation}}\label{implementation}} +% +% \new\def\paragraphcolumns{\texttbf p,\, \texttbf m,\, \texttbf b\, and\, \texttbf X\, columns} +% +% \new\def\abovebelow{\@ifstar {\@above@below{}}{\@above@below\smaller\color{black!75}}} +% \new\def\@above@below #1^#2_#3 {\textmd{\^{ }\textsuperscript{\scriptsize#1\textt{#2}}\,\myunderscore\textsubscript{\scriptsize#1\textt{#3}}}} +% \new\def\lk{\color{lk}} +% \makeatother +% +% \deffootnote{1em}{0pt}{\rlap{\textsuperscript{\thefootnotemark}}\kern1em} +% +% \newtabulinestyle{ a =.7pt on 3pt Crimson off4pt yellow, +% b =.7pt on 3pt LawnGreen off3pt, +% c =1.4pt on 3pt DarkSlateBlue off3pt, +% test =1pt blue, +% testdash =.7pt on1.2pt off 2pt blue, +% } +% \def\dash{\hbox{$\scriptscriptstyle\cdotp$}} +% +% \title{\vspace*{-36pt}The \thispackage\unskip\Footnotemark{*}\kern.5em package\vspace*{6pt}} +% \date{} +% \author{\small\thisdate~--~\hyperref[\thisversion]{version \thisversion}} +% \subtitle{\tabubox {X[c]} { \lsstyle Private additional ltxdoc support.\\ \small\FC }} +% +% \maketitle +% +% \Footnotetext{*}{This documentation is produced with the \textt{DocStrip} utility.\par +% \begin{tabu} {X[-3]X[-1]X} +% \smex To get the package, &run: &\textt{etex \thisfile.dtx} \\ +% \smex To get the documentation &run (thrice): &\textt{pdflatex \thisfile.dtx} \\ +% \leavevmode\hphantom\smex To get the index, &run: &\textt{makeindex -s gind.ist \thisfile.idx} +% \end{tabu}§ +% The \xext{dtx} file is embedded into this pdf file thank to \Xpackage{embedfile} by H. Oberdiek. +% } +% +% \deffootnote{1em}{0pt}{\rlap{\thefootnotemark.}\kern1em} +% +% \begin{Abstract}[\leftmargin=2em\rightmargin\leftmargin]\parindent0pt\lastlinefit0\noindent\parskip\medskipamount +% +% \thispackage provides some facilities to print documentation (\xext{dtx}) files. Most of them +% are further development of commands defined in the undocumented package \xpackage{holtxdoc}. +% +% The package makes a strong use of \Xpackage{hyperref} and the syntax has been thought to be easy. +% +% \thispackage is not intended for public use... {\quad\color{llk}...but it may be used -- or copied -- by the public!} +% +% It is required to compile -- with \hologo{pdfTeX} -- some of my documentation files. +% +% \end{Abstract} +% +% \tocsetup{ +% depth=3, +% dot=$\scriptscriptstyle\ldotp$, +% dotsep=1mu, +% title/top=8pt plus2pt minus4pt, +% title/bottom=4pt, +% title=Contents\quad\leaders\vrule height3.1pt depth-3pt\hfill\null, +% bookmark={text=Contents,bold}, +% after=\leavevmode\hrule height3.1pt depth-3pt, +% twocolumns=false, +% section/skip=2pt plus2pt minus2pt, +% section/leaders=\leaders\hbox{$\mathsurround=0pt\mkern1mu\hbox{$\mathbf\ldotp$}\mkern1mu$}\hfill, +% section/dotsep, +% subsection/skip=0pt plus2pt minus 2pt, +% subsection/numwidth+=5pt, +% subsubsection/font=\slshape, +% subsubsection/pagenumbers=off, +% subsubsection/skip-=1pt,subsubsection/numwidth-=4pt, +% } +% +% {% +% \hypersetup{linkcolor=black} +% \tableofcontents +% } +% +% \section(The main macros){The main macros: \cs{cs}, \cs{env}, \cs{M}, \cs{stform}, \env{declcs}, \env{declenv}} +% +% \begin{declcs}[ *4 l ]\cs\M*{Command} &\cs\cs*\M*{Command}&\cs\cs\M[font]\M*{Command}&\cs\cs*\M[font]\M*{Command} \\ +% \cs\cs\cs\Command &\cs\cs*\cs\Command &\cs\cs\M[font]\cs\Command &\cs\cs*\M[font]\cs\command \\ +% \multicolumn2c{\cs\cs\cs\Command*} & \multicolumn-c{\cs\cs\M*{Command}*} \\ +% \end{declcs} +% +% The control sequence \cs\cs prints a control sequence. +% Both syntaxes are possible, with star form for the presented command:\par +% \begin{shorttabu} { >{\columncolor{GhostWhite!200}}X[-4] !{$\longrightarrow$} X[c] } \savetabu{present} \toprule \rowfont[c]\slshape +% \multicolumn1c{Source file} & Result (typesetting) \\ +% \cs\cs\M*{Command} or \cs\cs\cs\Command &\cs\Command \\ +% \cs\cs\M*{Command}\stform* or \cs\cs\cs\Command\stform* &\cs\Command* \\ \bottomrule +% \end{shorttabu} +% +% If the control sequence has been declared with the \env{declcs}* then a hyperlink is created automatically +% (\cs\cs\M*{Command} becomes the same as \Verb+\ref{declcs.\string\Command}+ and \cs\cs* the same as +% \Verb+\ref*{\declcs.\string\Command}+: in other words, \cs*\cs* avoids the hyperlink). +% +% With the syntax \cs\cs\cs\Command, the argument (\cs\Command) is collected in a context +% where \texttbf @ is a letter. This syntax does not work in moving arguments: inside the +% title of a \cs\section for example, the only syntax \cs*\cs\M*{Command} shall be used. +% +% \cs\begin and \cs\end have a natural special behaviour: if followed by\, \{ \, the sequence:§ +% \shorttabubox { X } { +% \cs\cs\cs{begin}\M*{environment} \\ +% \noindent\llap{is replaced by: }\cs\cs\cs{begin}\cs\M*\M*{\cs\env\M*{environment}} } +% +% +% \cs\cs\M*[\cs\textbf]\cs\Command allows to print the control sequence +% in boldface: \cs[\textbf]\Command and \cs\cs\M*[\cs\color\M*{red}]\cs\Command +% prints it red: \cs[\color{red}]\Command. +% This extension and the star form should be avoided in moving arguments. In the process of \textsc{pdf} string encoding, +% \cs\cs is redefined to be equal to \cs\string with the possibility to write \cs\cs\cs\Command as well. Useful for +% \textsc{pdf} comments or bookmarks. +% To disable hyperlinks inside section titles for example, a hook must be set, for example in the \meta{font} key of +% a package that provides formatting for sectioning commands (example with \xpackage{titlesec}:§§ +% \shorttabubox {X} { +% \cs\sectionformat\cs\section\keyvalue{font$+=$\cs\def\cs\csref\M*{\cs\ref*}} \\ +% \noindent\llap{or :\quad }\cs\sectionformat\cs\section\keyvalue{before$+=$\cs\def\cs\csref\M*{\cs\ref*}} }\par +% +% or in the table of contents only with the \xpackage{tocloft}*:§§ +% \shorttabubox {X} { +% \cs\tocsetup \keyvalue{before$+=$\cs\def\cs\csref \M*{\cs\ref*}} \rlap{\quad ). }} +% +% More generally, the font in which the control sequence is displayed is stored in the macro \cs\cs@font, +% by default: \M*{\cs\hypersetup \keyvalue{linkcolor=csrefcolor}\cs\textt}. +% +% \begin{declcs}[ *4 l ]\env\M*{environment} & \cs\env*\M*{environment} & \cs\env\M[font]\M*{envir} & \cs\env*\M[font]\M*{envir} \\ +% \cs\env\M*{environment}\stform* & \cs\env*\M*{environment}\stform* &\cs\env\M[font]\M*{envir}\stform* & \cs\env*\M[font]\M*{envir}\stform* \\ +% \end{declcs} +% +% The control sequence \cs\env prints the name of an environment (in \cs\ttfamily font). When followed by a star +% the word ``\textt{environment}'' is inserted after the name:§ +% \begin{shorttabu}{ \preamble{present} } \toprule \rowfont[c]\slshape +% \multicolumn1c{Source file} & Result (typesetting) \\ +% \cs\env\M*{name} or \cs\env\M*{name}\stform* & \env{name} or \env{name}* \\ \bottomrule +% \end{shorttabu} +% +% If the environment has been declared (with the \env{declenv}*) then a hyperlink is created automatically +% (\cs\env\M*{name} becomes the same as \Verb+\ref{declcs.\string\name}+, with \cs\env* it becomes the same as +% \Verb+\ref*{declcs.\string\name}+: in other words, \cs*\env* avoids the hyperlink). +% +% Moreover, \cs\env\M*[\cs\itshape]\M*{environment} will print the name in italic: \env[\itshape]{environment}. This extension, +% as well as the star form should be avoided in moving arguments. +% +% \begin{declcs}[ *4l ]\M\M {arg} & \cs\M\M[arg] & \cs\M\M(arg) & \cs\M\M|arg| \\ +% \cs\M*\M*{arg} & \cs\M*\M*[arg] & \cs\M*\M*(arg) & \cs\M*\M*|arg| \\ +% \end{declcs} +% +% \cs\M is a general command to typeset arguments: the star form \cs\M* removes the ``angle brackets'' +% around. Braces, square brackets, parenthesis and vertical bar \stform| are supported, whatever there +% category code are and even if they change alongside the document. +% +% \cs\M is not allowed in pdf strings (an explicit \cs\texorpdfstring construction is required). +% +% \begin{declcs}[ *5 l ]\stform* & \cs\stform\stform+ & \cs\stform\stform- & \cs\stform\stform| & \etc +% \end{declcs} +% +% \cs\stform is named for ``\emph{starred form}''. The star \cs\stform* is printed with \cs\textasteriskcentered, +% and for the other symbols \cs\stform expands to \cs\string. The font is \cs\ttfamily\cs\bfseries. +% +% \cs\stform is robust (\ie can be used inside moving arguments) and can be used inside pdf strings: in this case +% it expands to \cs\string. +% +% Example: \shorttabubox {X} { a vertical bar \stform| can be printed with \cs\stform\stform|. } +% +% \begin{declenv}[ ll ]{declcs}\M*[preamble]\M[font]\M*{Command}& \cs\\ \\ +% \qquad Other \cs\cs or \cs\csanchor ... & \\ +% \cs{end}{declcs}\csanchor\declcsbookmark\cs\Command & \\ +% \multicolumn2c{\normalfont\itshape or} \\[^-1mm _1mm] +% \cs{begin}{declcs}\M*[preamble]\M[font]\cs\Command & \cs\\ \\ +% \end{declenv} +% +% The \env{declcs}* (also defined in \xpackage{holtxdoc}) presents a control sequence. +% Like for \cs\cs, both syntaxes for the argument are allowed:\par +% \begin{shorttabu} {*3{X[-1c]}} +% \cs{begin}\M*{declcs}\M*{Command} & or & \cs{begin}\M*{declcs}\cs\Command. +% \end{shorttabu} +% +% The environment is typeset inside a single-framed \env{tabu} with only one column whose preamble is \M*{ l }. +% It is possible to change the preamble, add columns \etc with the optional argument. The second optional argument +% allows to change the font of \cs\Command. Finally if the first optional argument is empty, it defaults to \M*[ l ] so that:\par +% \begin{shorttabu}{X} +% \cs{begin}\M*{declenv}\M*[]\M*[\cs\itshape]\cs\Command \\ +% \noindent\llap{is the same as: }\cs{begin}\M*{declenv}\M*[ l ]\M*[\cs\itshape]\cs\Command \\ +% \end{shorttabu} +% +% \cs\declcsbookmark can be used at the end of the \env{declcs}* to add a bookmark whose text is \cs\Command, +% whose level is \keyvalue*{rellevel=1, keeplevel}: see the \Xpackage{bookmark} package. +% +% Further formatting of the \env{tabu}* can be obtained easily with the \Xpackage{etoolbox} hook:§ +% \shorttabubox{XcX} {\cs\AtBeginEnvironment & and & \cs\tabusetup* } +% +% For example, +% in this very documentation the setting is:§ +% \tabusetup* {line style=.4pt gray!50 on2pt off1pt, linesep=1mm, frame=tabu} +% \begin{shorttabu}{ X[l] } +% \cs\AtBeginEnvironment\M*{declcs} \{ \cs\changefont\M*{size\stform+=$1pt$} \\ +% \rowfont[r]{} +% \cs\tabusetup* \keyvalue{everyrow=\cs\rowcolor\M*{WhiteSmoke!60},rule width=\cs\heavyrulewidth} +% \\ +% \end{shorttabu} \par +% +% An anchor and a label are set, for further references by the \cs\cs command. The anchor is set by the command +% \cs\csanchor, which share the same syntax as \cs\cs and can be used alone if required. +% +% \begin{declenv}[ ll ]{declcs\stform*}\M*[preamble]\M[font]\M*{Command}& \cs\\ \\ +% \qquad Other \cs\cs or \cs\csanchor ... & \\ +% \cs{end}\M*{\env{declcs\stform*}} & \\ +% \multicolumn-c{\normalfont\itshape or} \\[^-1mm _1mm] +% \cs{begin}\M*{\env{declcs\stform*}}\M*[preamble]\M[font]\cs\Command & \cs\\ \\ +% \end{declenv} +% +% \env{declcs\stform*} is a variant of \env{declcs} which is based on \env{longtabu} instead of \env{tabu}. +% +% Used to present a command with a long list of keys for example, for page breaks are allowed. +% +% \begin{declenv}{declenv}\M*[preamble]\M*{name of the environment}\cs\M*\M*[options]\cs\M*\M*{parameter} \cs\\ \\ +% \qquad content of the environment (optional) +% \end{declenv} +% +% The \env{declenv}* is designed to present an environment. Just like \env{declcs} an anchor and a label are set, +% for references by the \cs\env command. The anchor is set by the \cs\envanchor command which share the same syntax +% as \cs\env and can be used alone if required. +% +% \csname @gobble\endcsname { +% \subsection{Extra spacing} +% +% \cs\extra@sf is defined with \cs\mathchardef to be $2999$. +% +% \begin{declcs}\ensurespaceextra \\ +% \csanchor\xspaceextra +% \end{declcs} +% +% \cs\ensurespaceextra controls the extra space on the left: if there is a space on the left, then replaces +% it by a new on with \cs\spacefactor$=$ \cs\extra@sf. +% +% \cs\xspaceextra does \cs\xspace (if not in verbatim mode) with \cs\spacefactor$=$\cs\extra@sf. +% } +% +% \section{Some other macros and extensions} +% +% \begin{declcs}[ *2l ]\xext\M{file extension} &\cs\xext\M{file extension}\stform* \\ +% \csanchor\xpackage\M*{package name} &\cs\xpackage\M*{package name}\stform* \\ +% \csanchor\xclass\M*{class name} &\cs\xclass\M*{class name}\stform* \\ +% \csanchor\xfile\M*{file name} &\cs\xfile\M*{file name}\stform* \\ +% \csanchor\xmodule\M*{module name} &\cs\xmodule\M*{module name}\stform* \\ +% \end{declcs} +% +% \cs\xext is defined by \xpackage{holtxdoc} to print -- in \cs\ttfamily -- a file extension preceded by a dot:§ +% \shorttabubox { *2 X[c] }{ \cs\xext\M*{aux} & \xext{aux} } +% +% \thispackage redefines the command with the same \stform* extension the \cs\env command provides:§ +% \tabusetup* {frame=booktabs} +% \begin{shorttabu} { X[-4 _GhostWhite!200] !{$\longrightarrow$} X[c] } \savetabu{present} \rowfont[c]\slshape +% \multicolumn1c{Source file} &Result (typesetting) \\ +% \cs\xext\M*{aux} &\xext{aux} \\ +% \cs\xext\M*{aux}\stform* &\xext{aux}* \\ +% \cs\xpackage\M*{package}\stform* &\xpackage{package}* \\ +% \cs\xclass\M*{class}\stform* &\xclass{class}* \\ +% \cs\xfile\M*{filename}\stform* &\xfile{filename}* \\ +% \cs\xmodule\M*{module}\stform* &\xmodule{module}* \\ +% \end{shorttabu} +% +% \section{The package options} +% \label{The package options.sec} +% +% \subsection{The \texorpdfstring{\M*[nopackages]}{[nopackages]} option} +% \label{The nopackages option.subsec} +% +% Every command is defined with \cs\providecommand, \cs\providerobustcmd or \cs\provide (from \Xpackage{ltxnew}). +% +% The package option \M*[nopackages] avoids the loading of the packages. Nevertheless, the commands provided +% by \thispackage are provided and some of them will certainly lead to an \textt{undefined control sequence} +% if a package is missing: this option is only usefull if one loads (some of) the required packages +% at a later or previous time, or if only a ``chosen set'' of the commands provided here are used. +% +% {\makeatletter +% \newcommand*\packageInfo [1][]{\packageInfobis} +% \def\packageInfobis #1#{\getpackageinfo{#1}} +% \def\packages {etex,ltxnew,etexcmds,ltxcmds,etoolbox} +% \tabusetup* {colsep=.5pt,frame=^{\tabucline[\heavyrulewidth]-} _{\tabucline[\heavyrulewidth]-},everyrow=\tabucline[tabudotted]-} +% \begin{longtabu}{ >{\sffamily\bfseries} X[-1] >\ttfamily X } +% \rowbackground{fill=AliceBlue!500,cell fading=o}\rowfont\bfseries +% \multicolumn -{>\centering p*}{Packages loaded by \thispackage with the \M*[nopackages] option} +% \\[=1mm] \everyrow*{\hline}\endfirsthead +% \repeatcell \packages {rows=2,transpose, +% text/row1=\c, +% text/row2=\expandafter \packageInfo \c{}, +% } +% \end{longtabu} +% +% \appto\packages{,[T1]fontenc,graphicx,grffile,{[svgnames,table]xcolor},needspace,moresize,relsize,manfnt,[official]eurosym,fancyhdr,lastpage,marginnote,framed,% +% newgeometry,[explicit]titlesec,tocloft,[hyperfoonotes]hyperref,bookmark,hypbmsec,enumitem-zref,fancyvrb,listings,% +% nccfoots,nccstretch,linegoal,delarray,multirow,makecell,booktabs,embedfile,interfaces,pgf,tikz} +% +% \tabusetup* {tracing level=0, everyrow=\tabucline[tabudotted]-, frame=tabubooktabs } +% +% \begin{longtabu}{>{\sffamily\bfseries} X[-1]>\ttfamily X} \rowbackground{fill=AliceBlue!500,cell fading=o} +% \rowfont[c]\bfseries +% \multicolumn -{ p*}{Packages loaded by \thispackage without the \M*[nopackages] option} +% \\[=1mm] \hline \endfirsthead +% \repeatcell \packages +% {rows=2,transpose, +% text/row1=\c, +% text/row2=\expandafter \packageInfo \c{}, +% } +% \end{longtabu} +% } +% +% \subsection(The ... package option){The \M*[\protect\S\protect\S] package option} +% ^^A\label{The \detokenize{§§} package option.subsec} +% +% The \M*[\S\S] option makes \S an active character whose meaning is \cs\par\cs\nobreak. +% +% \S\S\, is defined as \cs\par\cs\nobreak\cs\vskip$-$\cs\parskip. +% +% { +% \setbox0=\vbox{ +% \section{Colors provided and general setup} +% +% \thispackage provides (with \cs\providecolorlet -- an addition to the \Xpackage{xcolor} package) the following \emph{named} colors:} +% +% \logbox0 +% +% +% \newtabucellcommand\MyColor {\cellcolor{#1 ^FloralWhite }#1} +% \tabusetup* {frame=tabubooktabs} +% \begin{tabu} { >{\ttfamily\MyColor} X[-1 m ] X } +% pkgcolor &color for the package name printed with \cs\thispackage \\ +% csrefcolor &color for the references to the commands defined by the package (\cs\cs) \\ +% macrocode &color for the code in the \emph{implementation} part. \\ +% linkcolor &\cs\hypersetup \keyvalue{linkcolor=linkcolor}: \cs\colorlet\M*{linkcolor}\M*{green} has generally the same effect as \cs\hypersetup \keyvalue{linkcolor=green} \\ +% urlcolor &\emph{Idem}: \cs\hypersetup\keyvalue{urlcolor=urlcolor} \\ +% filecolor &\emph{Idem}: \cs\hypersetup\keyvalue{filecolor=filecolor} \\ +% menucolor &\emph{Idem}: \cs\hypersetup\keyvalue{menucolor=menucolor} \\ +% runcolor &\emph{Idem}: \cs\hypersetup\keyvalue{runcolor=runcolor} \\ +% \end{tabu} +% +% Those colors shall be chosen after \cs\begin{document}: \cs\colorlet\M*{pkgcolor}\M*{blue} for example. +% +% +% \clearpage +% } +% +% \IMPLEMENTATION +% +% \subsection{Identification, Options and Requirements} +% \label{Identification and Requirements} +% +% \begin{macrocode} +%<*package> +\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\ProvidesPackage{fcltxdoc} + [2011/03/12 v1.0 - Private additional ltxdoc support (FC)] +\RequirePackage {etex}\def\etex@loggingall {\tracingall \tracingonline\z@ } +\reserveinserts 3 +\RequirePackage {filehook} +\RequirePackage {ltxnew,etexcmds,ltxcmds,etoolbox} % general tools (commands) +% \end{macrocode} +% +% Minimal catcode ascertaining for loading \thispackage* in good conditions: +% +% \begin{macrocode} +\AtEndOfPackage{\fcltx@AtEnd \let\fcltx@AtEnd \@undefined} +\def\fcltx@AtEnd {} +\def\TMP@EnsureCode#1={% + \edef\fcltx@AtEnd{\fcltx@AtEnd + \catcode#1 \the\catcode#1}% + \catcode#1=% +}% \TMP@EnsureCode +\TMP@EnsureCode 33 = 12 % ! +\TMP@EnsureCode 58 = 12 % : +\TMP@EnsureCode124 = 12 % | = text bar +\TMP@EnsureCode 36 = 3 % $ = math shift +\TMP@EnsureCode 38 = 4 % & = tab alignmment character +\TMP@EnsureCode 32 = 10 % space +\TMP@EnsureCode 94 = 7 % ^ +\TMP@EnsureCode 95 = 8 % _ +% \end{macrocode} +% +% \subsubsection{Options} +% +% \begin{macrocode} +\DeclareOption {amsmath}{\AtEndOfPackage{% + \RequirePackage{amsmath,amsfonts,amsopn,amssymb} + \newrobustcmd*\dpartial [2]{\displaystyle\genfrac{}{}{}{} + {\partial\mkern.2\thinmuskip#1} + {\partial\mkern.2\thinmuskip#2}} + \newrobustcmd*\dtotal [2]{\displaystyle\genfrac{}{}{}{} + {\text d\mkern.2\thinmuskip#1} + {\text d\mkern.2\thinmuskip#2}}} +}% amsmath (package option) +\def\fcltx@articleclass {article} +\DeclareOption {scrartcl}{\def\fcltx@articleclass{scrartcl}\let\loadclass \LoadClass + \def\LoadClass #1{\let\tablename \relax \let\c@table \relax \let\fnum@table \relax + \let\abovecaptionskip \relax \let\belowcaptionskip \relax \let\@makecaption \relax + \loadclass[abstracton]{scrartcl}\let\scrmaketitle =\maketitle + \AtEndOfClass{\let\maketitle =\scrmaketitle}}} +\DeclareOption {nopackages}{% + \let\fcltx@nopackages \relax} +\DeclareOption {activepar}{\AtBeginDocument{\fcltx@activepar}} +\DeclareOption {\detokenize{§§}}{\ExecuteOptions{activepar}} +{\catcode`\§=\active +\gdef\fcltx@activepar{\catcode`\§=\active + \def §{\@ifnextchar §{\par\nobreak \vskip-\parskip \ignorespaces } + {\par\nobreak \ignorespaces }}% +}% \fcltx@activepar +}% \catcode +\DeclareOption {hyperlistings}{% + \AtBeginEnvironment {lstlisting}{\let\lsthk@OutputBox \lsthk@OutputBox@fcltxH@@k }% + \AtEndOfPackageFile*{listings}{\preto\lst@InitFinalize {\let\lsthk@OutputBox \lsthk@OutputBox@fcltxH@@k }}% +}% hyperlistings +\ProcessOptions* +% \end{macrocode} +% +% \subsubsection{Packages loading} +% +% \begin{macrocode} +\PassOptionsToPackage {svgnames}{xcolor} +\RequirePackage {xspace} +%% Opacity problem with current pgf version... +\ifdefined\pdfpageattr \pdfpageattr{/Group <>}\fi +\csname \ifdefined\fcltx@nopackages iffalse\else + iftrue\fi \endcsname +\PassOptionsToPackage {T1}{fontenc} +\PassOptionsToPackage {normalem}{ulem} +\PassOptionsToPackage {pdfencoding=auto,hyperfootnotes}{hyperref} +\PassOptionsToPackage {official}{eurosym} +\PassOptionsToPackage {explicit}{titlesec} +\RequirePackage {fontenc} +\RequirePackage {hologo} % before graphicx (bug) +\RequirePackage {graphicx,grffile,needspace} % general tools +\RequirePackage {Escan} +\RequirePackage {moresize,manfnt,bbding,eurosym} % fonts +\RequirePackage {fancyhdr,lastpage,marginnote,framed} % empagement +\RequirePackage {ulem} +\RequirePackage {nccfoots,nccstretch} % \Footnote / \stretchwith +\RequirePackage {linegoal} % \linegoal +\RequirePackage {array,delarray,makecell,booktabs} % tabulars +\RequirePackage {embedfile} % .dtx enclosed in .pdf +\RequirePackage {interfaces} % interfaces +\usetikz {basic,chains,positioning,patterns,fadings} % TikZ +\AtEndOfClassFile* \fcltx@articleclass{% + \RequirePackage {relsize,titlesec,tocloft} % other general tools + \RequirePackage [numbered]{hypdoc}[2010/03/26] + \RequirePackage {hyperref}[2010/03/30] + \RequirePackage {pdftexcmds}[2010/04/01] + \RequirePackage {enumitem} + \setitemize{parsep=\parskip,topsep=0pt,partopsep=0pt,itemsep=0pt} + \RequirePackage {bookmark,hypbmsec} % bookmarks and hyper-links +%% \RequirePackage {enumitem-zref} + \RequirePackage {fancyvrb} % verbatim and listings + \catcode`\&=7 + \RequirePackage {listings} + \catcode`\&=4 + \AtBeginDocument{% +%% \let\c@lstlisting \relax +%% \newlistof {lstlisting}{lol}{List of listings} + \listofsetup {lol}{before=\def\csref {\ref*}}}% +}% \AfterClass +\lastlinefit100\widowpenalty=5000\clubpenalty=8000 +\else % <[nopackages] option> + \RequirePackage {xcolor} +\fi % <[nopackages] option> +% \end{macrocode} +% +% \begin{macrocode} +\AtEndOfPackageFile* {interfaces-tocloft}{ + \tocsetup {before+=\def\csref {\ref*}}% +}% \AfterPackage interfaces-tocloft +\AtEndOfPackageFile* {hyperref}{\pdfstringdefDisableCommands{% + \def\\{\textCR\ignorespaces}% +}% \AfterPackage +\AtEndOfPackageFile*{fancyvrb}{% +\fvset {gobble=1,framesep=6pt,fontfamily=cmtt,listparameters={\topsep=0pt}}% verbatim basic settings +} +\AtEndOfPackageFile*{listings}{% +\lstset{gobble=1, % listings basic settings + language=[LaTeX]TeX, + basicstyle=\usefont{T1}{cmtt}mn\footnotesize, + breaklines=true, + alsoletter={*}, + commentstyle=\ttfamily\color{violet}, + moretexcs=[1]{tikz}, + keywordstyle=[2]{\color{ForestGreen}\slshape}, + keywords=[2]{tabular,caption,tabu*,shorttabu*,shorttabu,table,tabu,tabularx,longtable,% + Verbatim,lstlisting,Escan-left,Escan-right,Escan-bottom,Escan-top,% + align*,align,equation*,equation,split,multline*,multline}, +%% texcsstyle=[3]{\color{ForestGreen}\slshape}, +%% moretexcs=[3]{tabubox*,tabubox,shorttabubox*,shorttabubox}, + texcsstyle=[55]{\color{DarkBlue}}, + texcs=[55]{hline,hhline,firsthline,lasthline,arrayrulewidth,arrayrulecolor}, + texcsstyle=[90]\color{Fuchsia}, + moretexcs=[90]{section*,section,subsection*, + subsection,subsubsection*, + subsubsection,paragraph*,paragraph, + subparagraph*,subparagraph}, + deletetexcs=[1]{section,subsection,subsubsection,paragraph,subparagraph}, + keywordstyle=[100]\color{red}, + texcsstyle=[100]\color{red}, + texcsstyle=[77]{\color{pkgcolor}}, + texcs=[77]{}, +} +\define@key{lst}{red}[]{\kvsetkeys{lst}{morekeywords={[100]{#1}}}} +\define@key{lst}{csred}[]{\kvsetkeys{lst}{moretexcs={[100]{#1}}}} +\define@key{lst}{font}[]{\kvsetkeys{lst}{basicstyle={#1}}} +\define@key{lst}{font+}[]{\appto\lst@basicstyle{#1}} +\define@key{lst}{color}[]{\@expandtwoargs\kvsetkeys {lst}% + {backgroundcolor=\ifcat$\detokenize{#1}$\else\noexpand\color{#1}\fi}} +\gdef\lst@DefineKeywords#1#2#3{% overwrites to the last definition + \lst@ifsensitive + \def\lst@next{\lst@for#2}% + \else + \def\lst@next{\uppercase\expandafter{\expandafter\lst@for#2}}% + \fi + \fcltx@iflstclass {#2}>{90} + {\lst@next\do {\global\expandafter\let\csname\@lst#1@##1\endcsname#3}}% + {\lst@next\do {\expandafter \ifx \csname \@lst #1@##1\endcsname\relax \global\expandafter\let\csname \@lst #1@##1\endcsname #3\fi }}% +}% After package listings +\def\fcltx@iflstclass #1\@nil {\def\fcltx@iflstclass ##1##2##3{% + \expandafter\fcltx@ifclass@filter \string##1\@nil + \ifnum \@tempcnta ##2##3 \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi }% +}\expandafter\fcltx@iflstclass \string\lst@keywords \@nil +\def\fcltx@ifclass@filter #1#2{\def\fcltx@ifclass@filter ##1\@nil + {\fcltx@ifcl@ss@filter ##1#1{}##1#2\@nil }% +}\@expandtwoargs \fcltx@ifclass@filter {\string\lst@keywords }{\string\lst@texcs } +\def\fcltx@ifcl@ss@filter #1#2{\def\fcltx@ifcl@ss@filter ##1#1##2#2##3\@nil + {\@defaultunits \@tempcnta \number0##2==\@nnil + \ifnum \@tempcnta =\z@ \@defaultunits \@tempcnta \number 0##3==\@nnil \fi }% +}\@expandtwoargs \fcltx@ifcl@ss@filter {\string\lst@keywords }{\string\lst@texcs } +\def\lstset {\begingroup \lst@setcatcodes \expandafter\endgroup \lstset@ } +\def\lstset@ #1{\kvsetkeys {lst}{#1}} +}% \AfterPackage listings +% \end{macrocode} +% +% \subsection{Generic macros} +% +% \begin{macro}{\pdfstringDisableCommands} +% +% Does it At BeginDocument ! +% +% \begin{macrocode} +\providecommand\pdfstringDisableCommands [1]{\AtBeginDocument{% + \ifdefined \pdfstringdefDisableCommands + \let\pdfstringDisableCommands =\pdfstringdefDisableCommands + \pdfstringdefDisableCommands{#1}\fi}} +% \end{macrocode} +% \end{macro} +% +% \subsubsection(TabU logo)[TabU logo]{The \TabU logo} +% +% \begin{macro}{\TabU} +% +% +% \begin{macrocode} +\providerobustcmd*\TabU [1][\TabUcolor]{\leavevmode + {#1{{\fontsize{1.618\dimexpr\f@size\p@}{1.618\dimexpr\f@size\p@}\usefont U{eur}mn\char"1C}% + $_\aleph \mkern.1666mu b\mskip3mu\mathsurround\z@$\lower.261ex\hbox{\rotatebox[origin=c]{-90}{\usefont{T1}{lmss}mn U}}}}% + \ifmmode\else\ifhmode \spacefactor3000 \xspaceverb \fi\fi } +\def\TabUcolor {\color{copper}} +\pdfstringDisableCommands{\def\TabU {TabU }} +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Control} +% +% \begin{macro}{\CheckDates} +% +% \cs\CheckDates\M*{package=date, package=date,...} +% +% \begin{macrocode} +{\endlinechar`\^^J\obeyspaces% +\gdef\ErrorUpdate#1=#2,{\@ifpackagelater{#1}{#2}\relax% + {\let\CheckDates=\errmessage% + \toks@=\expandafter{\the\toks@ + \thisfile-documentation: updates required ! + package #1 must be later than #2 + to compile this documentation.}}% +}% \ErrorUpdate +\gdef\CheckDates#1{\AtBeginDocument{{% + \toks@{}\let\CheckDates=\relax% + \@for\x:=\thisfile=\thisdate,#1\do{\expandafter\ErrorUpdate\x,}% + \CheckDates\expandafter{\the\toks@}}}% +}% \CheckDates +}% \catcode +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\showfile} +% \begin{macrocode} +\providerobustcmd*\showfile{\makeatletter \show\@currname }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\currentenvir} +% \begin{macro}{\ifcurrenvir} +% \begin{macrocode} +\providecommand*\currentenvir {\@currenvir} +\providecommand*\ifcurrenvir [1]{\expandafter + \ifx \csname #1\expandafter\endcsname \csname \@currenvir\endcsname + \expandafter\@firstoftwo + \else \expandafter\@secondoftwo + \fi +}% \ifcurrenvir +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\ifrefundefined} +% +% \cs\ifincsname (\hologo{pdfTeX}) is buggy: inside \cs\ifcsname ... \cs\endcsname +% \cs\ifincsname evaluates to \textt{false} ! +% +% \begin{macrocode} +\providerobustcmd*\ifrefundefined [1]{\begingroup \csname @safe@activestrue \endcsname % + \expandafter\endgroup \csname @\ifcsname r@#1\endcsname second\else + first\fi oftwo\endcsname +}% \ifrefundefined +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Fonts and spacing} +% +% \begin{macro}{\texorpdf} +% +% \cs\texorpdf\cs\textt\M*{some text} $\Longleftrightarrow$ \cs\texorpdfstring\M*{\cs\textt\M*{some text}}\M*{some text} +% +% \begin{macro}{\xspaceverb} +% +% Disable \cs\xspace inside \env{Verbatim}*. +% +% \begin{macrocode} +\providecommand\texorpdf[2] {\texorpdfstring{{#1{#2}}}{#2}} +\providerobustcmd*\xspaceverb {\ifnum \catcode 32=\active \else \expandafter\xspace \fi} +\provide\let\fcltx@NormalSharpChar \# +\renewrobustcmd \#{% + \ifnum \catcode 32=\active \expandafter\fcltx@NormalSharpChar + \else \expandafter\fcltx@SharpChar \fi +}% \# +\provide\def\fcltx@SharpChar #1{{\usefont{T1}{pcr}{bx}{n}\char`\##1}} +\providecommand\textt {\texttt} +\providecommand\textsfbf [1]{\textsf{\textbf{#1}}} \provide\let\textbfsf =\textsfbf +\providecommand\textttbf [1]{\texttt{\textbf{#1}}} \provide\let\textbftt =\textttbf + \provide\let\texttbf =\textttbf +\providecommand\textitbf [1]{\textit{\textbf{#1}}} \provide\let\textbfit =\textitbf +\providecommand\textslbf [1]{\textsl{\textbf{#1}}} \provide\let\textbfsl =\textslbf +\providecommand\textscbf [1]{\textsc{\textbf{#1}}} \provide\let\textbfsc =\textscbf +\providecommand\textscit [1]{\textsc{\textit{#1}}} \provide\let\textitsc =\textscit +\providecommand\textscsl [1]{\textsc{\textsl{#1}}} \provide\let\textslsc =\textscsl +\providerobustcmd*\abs[1]{\left\lvert#1\right\rvert} +\provide\protected\def\Underbrace #1_#2{$\underbrace{\vtop to2ex{}\hbox{#1}}_{\footnotesize\hbox{#2}}$} +\provide\let\cellstrut=\bottopstrut +\AtBeginDocument {% +\providerobustcmd*\ie {\ifmmode \mbox{\emph{ie.}}\else \emph{ie.}\spacefactor\@cclv \xspaceverb \fi} +\providerobustcmd*\eg {\ifmmode \mbox{\emph{e.g.}}\else \emph{e.g.}\spacefactor\@cclv \xspaceverb \fi } +\providerobustcmd*\etc {\ifmmode \mbox{\emph{etc.}}\else + \ifhmode \ifdim\lastskip>\z@ \unskip\spacefactor\@cclv\space \fi\fi + \emph{etc.}\fi \@ifnextchar .{\expandafter\xspaceverb\@gobble}\xspaceverb +}% \etc +}% \AtBeginDocument +\pdfstringDisableCommands {\let\textt \@empty + \let\textbftt \@firstofone \let\textttbf \@firstofone \let\texttbf \@firstofone + \let\textsfbf \@firstofone \let\textbfsf \@firstofone \let\textitbf \@firstofone + \let\textbfit \@firstofone \let\textslbf \@firstofone \let\textbfsl \@firstofone + \let\textscbf \@firstofone \let\textbfsc \@firstofone \let\textscit \@firstofone + \let\textitsc \@firstofone \let\textscsl \@firstofone \let\textslsc \@firstofone + \def\ie {ie.}\def\etc {etc.}\let\textcolor \@secondoftwo +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\MathVersion} +% +% A version of \LaTeX{} \cs\mathversion that also works in mathematical mode ! +% +% \begin{macrocode} +\providerobustcmd*\MathVersion [1]{\ifcsundef{mv@#1} + {\@latex@error{Math version `#1' is not defined}\@eha} + {\edef\math@version{#1}\gdef\glb@currsize{}\aftergroup\glb@settings + \ifmmode \check@mathfonts \fi}% +}% \MathVersion +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\xspaceverb} +% +% When used inside a \env{Verbatim}* with special command chars (typically \,\texttbf(\, and \,\texttbf)\, used as group delimiters) +% \cs\xspace breaks because of \cs\scantokens. +% +% \cs\xspaceverb checks whether the catcode of the space is active, and does nothing in this case. +% +% \cs\, is allowed inside pdf strings. +% +% \begin{macrocode} +%%\provide\mathchardef\extra@sf =2999 % "extra" spacefactor +%%\providecommand*\extrasf{\ifmmode\else\ifhmode \unskip \spacefactor\extra@sf \space \fi\fi } +\providecommand*\xspaceverb {\ifnum\catcode`\ =\active\else \expandafter\xspace \fi} +%%\providerobustcmd*\xspaceextra {% +%% \ifhmode\ifmmode\else \ifdim \fontdimen4\font>\z@ \spacefactor\extra@sf \fi \xspaceverb \fi\fi } +\xspacesetup {exceptions+=\xspaceverb} +\providerobustcmd*\ensurespaceextra {% + \ifhmode\ifmmode\else \ifdim\fontdimen4\font>\z@ + \ifdim \lastskip>100sp \ifdim \lastskip>\fontdimen4\font \else % \ifnum \spacefactor<\extra@sf + \unskip + \hskip \glueexpr \fontdimen4\font+.1666em\relax + \fi\fi\fi\fi\fi } +\pdfstringDisableCommands{\let\, \@empty} +% \end{macrocode} +% \end{macro} +% +% \subsection{\cs\cs, hyper links and \textt{key=value}} +% +% \subsubsection{\cs{cs}, \cs{csanchor} and \cs{env}} +% +% \begin{macro}{\cs} +% \begin{macro}{\csanchor} +% +% \cs\cs prints a control sequence: both syntaxes: \cs\M*{name} and \cs\name are allowed. +% +% \cs\csanchor puts an anchor (generally made inside the \env{declcs}*) and a label. +% +% If the label exists, then \cs\cs puts a hyperlink to this label: in this case, \cs\cs is just \cs\ref\M*{declcs.name}. +% +% Spacing around the control sequences are adjusted by \cs\spacefactor$=2999$ (for a fixed width font, +% the space is not stretchable: \cs\spacefactor$=2999$ will double the space, and this is too much). +% +% \begin{macrocode} +\AtBeginDocument{% + \ifdefined\cs \expandafter\renewrobustcmd + \else \expandafter\providerobustcmd \fi + *\cs {\ensurespaceextra \leavevmode \begin@grabcs \cs@ } + \xspacesetup {exceptions+=\cs} + \pdfstringDisableCommands {\let\cs \cs@pdf } + \providerobustcmd\meta [1]{\ensuremath\langle \hbox{#1}\/\ensuremath\rangle } +}% \AtBeginDocument +\providerobustcmd*\csbf {\cs [\textbf ]} +\providerobustcmd\cs@ [2][]{\cs@getrefname {#2}\@tempa + \edef\@tempc {\detokenize \expandafter{\@tempa }}% + \edef\@tempb {\string\begin}\ifx \@tempc\@tempb \aftergroup\@ne \else + \edef\@tempb {\string\end}\ifx \@tempc\@tempb \aftergroup\@ne \else + \aftergroup\z@ \fi\fi + \def\x ##1\@nnil {\cs@hyper {##1} {\cs@font {#1{\string ##1}}} + {\cs@font {#1{\csref {declcs.\string ##1}}}}% + }\expandafter \x \@tempa \@nnil \egroup +}% \cs@ +\def\cs@string {\string\\\string }% for \env => \cs@string becomes only \string (no addition of \ ) +\providerobustcmd*\csref {\ref} +\long\def\cs@getrefname #1#2{\begingroup \escapechar\m@ne \csname @safe@activestrue\endcsname + \let\stform \string + \let\lst@UM \string + \let\meta \@firstofone + \protected@edef #2{\endgroup \def\noexpand #2{\cs@string #1}}#2% +}% \cs@getrefname +\def\begin@grabcs #1{\hbox\bgroup\bgroup \aftergroup\cs@next + \makeatletter \@ifstar {\def\csref {\ref*}#1}{#1}} +\provide\def\cs@next #1{\egroup \ifnum #1=\z@ \expandafter\cs@nextnormal \else \expandafter\cs@nextbeginend \fi } +\provide\def\cs@nextnormal {\@ifstar {\stform*\xspaceverb}\xspaceverb } +\provide\def\cs@nextbeginend{\@ifnextchar\bgroup \cs@nextenv \xspaceverb } +\provide\def\cs@nextenv #1{\M*{\env{#1}}} +\provide\def\cs@font {\ifdefined\hypersetup \hypersetup {linkcolor=csrefcolor}\fi\textt } +\providerobustcmd*\cs@hyper [1]{\ifrefundefined {declcs.#1}} +\providerobustcmd*\csanchor [2][]{\begingroup \def\cs@next {\egroup \endgroup \bgroup \cs@next}% + \let\cs@hyper \cs@anchor \cs[{#1}]{#2}} +\providerobustcmd*\cs@anchor [3] {% + \ifodd \expandafter\ifx \csname \@gobble #1\endcsname\begin 0 \fi + \expandafter\ifx \csname \@gobble #1\endcsname\end 0 \fi + 1 \def\@currentHref {declcs.\string\string\space #1}\def\@currentlabel {\protecting{#2}}% + \settoheight \dimen@ {#2}\advance\dimen@ \dimexpr \dp\strutbox+\arrayrulewidth \relax + \raisedhyperdef [\dimen@ ]{declcs}{#1}{\ifrefundefined{declcs.#1}{#2}{#3}% + \label{declcs.\string\string\space #1}}% + \ifdefined\SpecialUsageIndex \expandafter\SpecialUsageIndex \csname \@gobble #1\endcsname \fi + \else #2\fi +}% \cs@anchor +\providecommand*\cs@pdf[1]{\string\\\if\@backslashchar\string#1 \else\string#1\fi}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\env} +% +% \cs\env displays an environment in \cs\ttfamily font. \cs\env\stform* adds the word ``\textt{environment}'' after. +% +% \begin{macrocode} +\providerobustcmd*\env {\leavevmode \begingroup \let\cs@string \string + \def\cs@next ##1{\egroup \endgroup \@ifstar{ environment\xspaceverb}\xspaceverb}\begin@grabcs \cs@ } +\providerobustcmd*\envanchor {\leavevmode \begingroup \let\cs@hyper \cs@anchor \let\cs@string \string + \def\cs@next ##1{\egroup \endgroup }\begin@grabcs \cs@ } +\pdfstringDisableCommands{\let\env \@firstofone } +% \end{macrocode} +% \end{macro} +% +% \subsection{\env {lstlisting} hyperlinks} +% +% This correspond to the \M*[hyperlistings] option of \thispackage. +% +% \begin{macro}{\lsthk@OutputBox@fcltxH@@k } +% +% The \xpackage{listings}* allow to define an arbitrary hook before the building of the box to be ouput: +% \cs\@tempboxa contains the word to print. +% +% \begin{macrocode} +\def\lsthk@OutputBox@fcltxH@@k {\begingroup \let\lst@UM \@empty + \edef \@tempc {\the\lst@token }\edef \@tempc {\@tempc }% + \expandafter \cs@getrefname \expandafter {\@tempc }\@tempa + \ifrefundefined {declcs.\@tempa} + {\let\cs@string =\string % + \expandafter \cs@getrefname \expandafter {\@tempc }\@tempa + \ifrefundefined {declcs.\@tempa }{\endgroup }\fcltx@sethyperlistings + } + \fcltx@sethyperlistings +}% \lsthk@OutputBox@fcltxH@@k +\def\fcltx@sethyperlistings {\global\let \fcltx@hyperlistinganchor =\@tempa + \endgroup \aftergroup \fcltx@dohyperlistings }% after \hbox +\def\fcltx@dohyperlistings {\def\lst@alloverstyle ##1{\fcltx@hyperlistings ##1}} +\def\fcltx@hyperlistings {\setbox\@tempboxa + \hbox \bgroup + \rlap {\hypersetup {linkcolor=.}\relax \fboxrule \z@ + \hyperref {}{declcs}\fcltx@hyperlistinganchor + {\boxframe {\wd\@tempboxa}{\ht\@tempboxa}{\dp\@tempboxa}}}% + \unhbox\@tempboxa + \egroup +}% \fcltx@hyperlistings +% \end{macrocode} +% \end{macro} +% +% +% \subsubsection{The \env{declcs} and \env{declenv} environments} +% +% \begin{environment}{declcs} +% \begin{environment}{declcs*} +% +% The \env{declcs}* is defined in \xpackage{holtxdoc} and redefined here in order to allow both syntaxes:§ +% \begin{tabu}{X[r]X[-1c]X[l]} +% \cs{begin}\M*{declcs}\M*{command} & and & \cs{begin}\M*{declcs}\cs\command +% \end{tabu} +% +% \env{declcs\stform*} is based on \env{longtabu} instead of \env{tabu}. +% +% \begin{macrocode} +\newenvironment{declcs} [1][ l ]{% + \@testopt {\declcs@twoopt{#1}}{}} + {\crcr + \end{tabu}\par \nobreak \ignorespacesafterend } +\def\declcs@twoopt #1[#2]#3{% + \if@nobreak \par\nobreak + \else \needspace{.08\textheight}\vskip2\parskip \fi + \changefont{spread=1,fam=\ttdefault }% + \tabusetup {tabu target=\dimexpr\linewidth-\declmarginwidth , frame=tabu }% + \declmargin + \ifblank {#1}{\begin{tabu} { l }}{\begin{tabu}spread0pt { #1 }} + \csanchor [{#2}]{#3}}% +\newenvironment{declcs*} [1][ l ]{% + \@testopt {\declcs@s@twoopt{#1}}{}} + {\crcr + \end{longtabu}\nobreak \ignorespacesafterend } +\def\declcs@s@twoopt #1[#2]#3{% + \if@nobreak \par\nobreak + \else \needspace{.08\textheight}\vskip2\parskip \fi + \changefont{spread=1,fam=\ttdefault }% + \tabusetup {longtabu = <\declmarginwidth , frame=tabu } + \ifblank {#1}{\begin{longtabu} { l }}{\begin{longtabu}spread0pt { #1 }} + \csanchor [{#2}]{#3}}% +\def\declmarginwidth {\dimexpr -\leftmargini +\arrayrulewidth +\tabcolsep\relax} +\def\declmargin {\hspace*\declmarginwidth } +\AtBeginDocument{\ifdefined\nGm@lmargin \leftmargini = .5\dimexpr \nGm@lmargin \relax + \else \ifdefined\Gm@lmargin \leftmargini = .5\dimexpr \Gm@lmargin \relax \fi\fi } +% \end{macrocode} +% \end{environment} +% \end{environment} +% +% \begin{macro}{\declcsbookmark} +% +% Insert a bookmark for the \env{declcs} or \env{declenv} environments. +% +% \begin{macrocode} +\providecommand*\declcsbookmark {\@ifstar \declcsbookmark@star \declcsbookmark@nost } +\providecommand*\declcsbookmark@nost [2][]{\bookmark [{dest=declcs.\string#2,rellevel=1,keeplevel,color=lk,#1}] {\cs#2}} +\providecommand*\declcsbookmark@star [2][]{\bookmark [{rellevel=1,keeplevel,color=lk,#1}] {#2}} +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{declenv} +% +% This is \env{declcs} but for an environment. +% +% \begin{macrocode} +\newenvironment{declenv} [1][ l ]% + {\@testopt {\declenv@twoopt {#1}}{}} + {\crcr \multicolumn -{p*}{\declenv@AtEnd} + \\ \end{tabu}\nobreak \par \nobreak \noindent + \ignorespacesafterend} +\def\declenv@twoopt #1[#2]#3{% + \if@nobreak \par\nobreak + \else \par\addvspace\parskip + \Needspace{.08\textheight}\fi + \changefont{spread=1,fam=\ttdefault}\hskip-\leftmargini + \def\declenv@AtEnd{\cs{end}\M*{\env [{#2}]{#3}}}% + \tabusetup* {framed=tabu}% + \ifblank {#1}{\begin{tabu}{ l }}{\begin{tabu}{ #1 }}\cs{begin}\M*{\envanchor [{#2}]{#3}}} +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\keyvalue} +% +% To typeset a \keyvalue{key=value} pair, with extra spacing around. +% \cs\keyvalue points to \cs\textt: \cs\keyvalue is not in the list of \cs\pdfstringdefDisableCommands. +% +% This is a test. +% +% \begin{macrocode} +\providerobustcmd*\keyvalue {\@ifstar {\@testopt{\fcltx@keyvalue {}{}}\textt } + {\@testopt{\fcltx@keyvalue \{\}}\textt }} +\provide\def\fcltx@keyvalue #1#2[#3]#4{#3{#1#4#2}\xspaceverb } +\pdfstringDisableCommands{\let\keyvalue \@firstofone} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\xext} +% \begin{macro}{\xpackage} +% \begin{macrocode} +\providerobustcmd*\fcltx@xfiles [4]{\@ifstar{#1{#2#4}#3}{#1{#2#4}}} +\def\fcltx@xx #1#2#3#4{\provide\def #1{\fcltx@xfiles {#2}{#3}{#4}}} +\fcltx@xx \xext \textt .{ file} +\fcltx@xx \xfile \textt {}{ file} +\fcltx@xx \xpackage \textsf {}{ package} +\fcltx@xx \xmodule \textsf {}{ module} +\fcltx@xx \xclass \textsf {}{ class} +\providecommand*\xemail[1]{\textless\textt{#1}\textgreater } +\pdfstringDisableCommands{% + \let\xext \@firstofone \let\xpackage \@firstofone + \let\xmodule \@firstofone \let\xclass \@firstofone + \let\xemail \@firstofone +}% +\xspaceaddexceptions {\Footnotemark } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\CTANhref} +% +% \cs\CTANhref\M*{package} or \cs\CTANhref\M*[package]\M{general text}. +% +% \cs\Xpackage\M{package} is \cs\CTANhref\M[package]\M*{\cs\xpackage\M{package}}% +% +% \begin{macrocode} +\providerobustcmd*\CTANhref [2][]{\ifblank{#1} + {\href {http://www.ctan.org/tex-archive/help/Catalogue/entries/#2.html} + {\nolinkurl{CTAN:help/Catalogue/entries/#2.html}}} + {\href {http://www.ctan.org/tex-archive/help/Catalogue/entries/#1.html}{#2}}% +}% \CTANhref +\pdfstringDisableCommands{\let\CTANhref \@firstofone } +\providerobustcmd*\Xpackage [1]{\@ifstar {\CTANhref [{#1}]{\xpackage {#1}} package\xspaceverb } + {\CTANhref [{#1}]{\xpackage {#1}}\xspaceverb }} +\pdfstringDisableCommands{\let\Xpackage \@firstofone } +\providerobustcmd*\thispackage {\@ifstar {\xpackage\thisfile \xspaceverb}% + {{\color {pkgcolor}\xpackage\thisfile}\xspaceverb}} +\pdfstringDisableCommands {\let\thispackage \thisfile } +% \end{macrocode} +% \end{macro} +% +% +% \begin{macro}{\M} +% +% Displays parameters with braces, bracket, parenthesis or textbar around. +% +% \begin{macrocode} +\providerobustcmd*\M {\scan@char *\M@ifstar } +\providerobustcmd*\M@ifstar [1]{\@ifnextchar #1{\@firstoftwo + {\let\M@meta \@firstofone \scan@char {|[]()}\M@i }} + {\let\M@meta \meta \scan@char {|[]()}\M@i }} +\xspacesetup {exceptions+=\M\}]} +\providerobustcmd*\scan@char [2]{\begingroup \endlinechar \m@ne + \scantokens{\def\:{#1}}\expandafter \endgroup \expandafter #2\:} +\providerobustcmd*\M@i [5]{\begingroup \@ifnextchar [% ] + {\iftrue\M@char [][]\fi } + {\ifcase \ifx #1\@let@token \z@ \else + \ifx #2\@let@token \@ne \else + \ifx #4\@let@token \tw@ \else + \m@ne \fi\fi\fi + \M@char{#1}{#1}{\stform|}{\stform|}% + \or \M@char{#2}{#3}[]% + \or \M@char{#4}{#5}()% + \else \M@char{}{}\{\}% + \fi }% +}% \M@i +\provide\def\M@square #1[#2]{\M@Bracket [{#1}{#2}]} +\provide\def\M@char #1#2#3#4#5\fi {\fi \def\M@char #1##1#2{\M@ch@r {#3}{##1}{#4}}\M@char } +\provide\def\M@ch@r #1#2#3{\endgroup {\ttfamily #1\ifblank{#2}{{\,}}{\M@meta{#2}}#3}} +% \end{macrocode} +% \end{macro} +% +% \subsection{\cs{stform} and some symbols} +% +% \begin{macro}{\CopyRight} +% \begin{macrocode} +\providerobustcmd*\CopyRight {\begingroup \@ifnextchar \bgroup + {\afterassignment\Copy@Right \count@ =\@firstofone } + {\afterassignment\Copy@Right \count@ =}% +}% \CopyRight +\provide\def\Copy@Right {% + \def\Copy@Right ##1!##2/##3\@nil {\endgroup \copyright\,% + \oldstylenums {\ifnum ##2=##1\relax \else ##1\,\textendash\,\fi ##2}% + }\expandafter\Copy@Right \the\expandafter\count@\expandafter!\thisdate \@nil +}% \Copy@Right +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\stform} +% +% \cs\stform* displays a centered star using \cs\textasteriskcentered +% from the \xpackage{textcomp} package. +% +% \begin{macrocode} +\pretocmd\textasteriskcentered {\usefont{OMS}{cmsy}mn}{}{} +\ifdefined\ifincsname + \providecommand*\stform {\ifincsname \expandafter\string \else \expandafter\@stform \fi} +\else \providerobustcmd*\stform {\@stform } +\fi +\providerobustcmd*\@stform {\ensurespaceextra \@ifnextchar* + {\@@stform[]\textasteriskcentered\@gobble } + {\ifx -\@let@token \@@stform[]\textendash\expandafter\@gobble + \else \expandafter\@@stform + \fi}} +\providecommand*\@@stform [2][\string]{\texttbf{\stform@font #1#2}\xspaceverb } +\def\stform@font{} +\pdfstringDisableCommands{\let\stform =\string } +\xspacesetup {exceptions+=\stform} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\myunderscore} +% +% Unable to find any underscore character suitable to me, I provide \cs\myunderscore +% as a simple \cs\vrule... +% +% \begin{macrocode} +\providerobustcmd*\myunderscore {\ifvmode \noindent \fi \vrule height-\p@ depth1.6\p@ width.4em} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\smex} +% +% A long right arrow inside a box of width $2em$ \smex I don't remember why i called it \cs\smex ??? +% +% \begin{macrocode} +\providerobustcmd*\smex {\leavevmode \hb@xt@2em{\hss $\longrightarrow$\hss }} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\providerobustcmd*\CheckOK {\textsmaller[2]{\textcolor{ForestGreen}\CheckmarkBold}} +\providerobustcmd*\CheckFAIL {\textsmaller[2]{\textcolor{Crimson}\XSolidBrush}} +\providerobustcmd*\CheckTODO{\textsmaller[2]{\textcolor{MediumBlue}\Peace}} +% \end{macrocode} +% +% \subsection{Some colors definitions} +% +% All those colors can be redefined later if wanted. +% +% \begin{macrocode} +\providecommand*\ifcolorundef[3]{\romannumeral0\ifcsundef{\string\color@#1}{ #2}{ #3}}% +\providerobustcmd*\providecolorlet [2]{\ifcolorundef{#1}{\colorlet{#1}{#2}}{}} +\providecolorlet {pkgcolor}{teal} +\providecolorlet {csrefcolor}{pkgcolor} +\providecolor {macrocode}{rgb}{0.07,0.03,0.10} +\providecolor {copper}{rgb}{0.67,0.33,0.00} +\providecolor {dg}{rgb}{0.02,0.29,0.00} % dg = dark green +\providecolor {db}{rgb}{0,0,0.502} % db = dark blue +\providecolor {dr}{rgb}{0.75,0.00,0.00} % dr = dark red +\providecolor {lk}{rgb}{0.25,0.25,0.25} % lk = 'light' black +\providecolor {llk}{rgb}{0.40,0.40,0.40} % llk = 'even more light' black +\provide\def\db {\color{db}} \provide\def\dg {\color{dg}} +\provide\def\red {\color{dr}} \provide\def\rred {\color{red}} +\providerobustcmd*\pkgcolor {\color {pkgcolor}} +\pdfstringDisableCommands{\let\pkgcolor \relax } +\AtEndOfPackageFile*{hyperref}{% + \providecolorlet {linkcolor}{CornflowerBlue!40!Indigo} + \providecolorlet {urlcolor}{magenta} + \providecolorlet {filecolor}{cyan} + \providecolorlet {menucolor}{red} + \providecolorlet {runcolor}{filecolor} + \hypersetup {linkcolor=linkcolor, + urlcolor=urlcolor, + filecolor=filecolor, + menucolor=menucolor, + runcolor=runcolor, + pdfpagemode=UseOutlines} +}% \AfterPackage +% \end{macrocode} +% +% \begin{environment}{Abstract} +% \begin{environment}{quotation} +% +% +% +% \begin{macrocode} +\newenvironment{Abstract} + {\small\begin{center}\bfseries \abstractname\vspace{-.5em}\vspace{\z@}\end{center}\quotation} + \endquotation +\AtEndOfClassFile*{ltxdoc}{ +\renewenvironment{quotation}[1][\leftmargin=1.5em] + {\list{}{\listparindent 1.5em + \itemindent \listparindent + \rightmargin \leftmargin + \parsep \z@ \@plus\p@ #1}% + \item\relax} + {\endlist} +}% At End Of Class +% \end{macrocode} +% \end{environment} +% \end{environment} +% +% \subsection{the \env{History} environment} +% +% \begin{macro}{History} +% +% +% \begin{macrocode} +\newenvironment{History}{% + \section {History}% + \def\Version ##1##2{\HistVersion {##1}{##2}\itemize } + \let\endVersion =\enditemize +}{} +\providecommand*\HistVersion [2]{% + \subsection* {[#1 v#2]}% hash-ok + \addcontentsline {toc}{subsection}{\protect\numberline{v#2}[#1]}% hash-ok + {\protected@edef \@currentlabel {#1}\label {#2}}% +}% \HistVersion +% \end{macrocode} +% \end{macro} +% +% \subsection{the \env{macro} environment} +% +% \begin{macro}{macro} +% +% Here we set an hanging indentation of the paragraph in front of the macro name, if the macro name +% is too wide. This is achieved by the hooks provided by \xpackage{etoolbox}: \cs\AtBeginEnvironment +% and \cs\AtEndEnvironment. +% +% \begin{macrocode} +\let\plainllap =\llap +\newdimen \maxlabelwidth +\newrobustcmd\macro@llap [1]{\begingroup \global\let\llap =\plainllap + \setbox0=\hbox{\setbox\strutbox =\hbox{\vrule height\ht\strutbox depth\z@ width\z@}% + #1}% + \toks@ ={\ifdim \maxlabelwidth>\z@ \setbox\@labels + =\llap{\hbox to\maxlabelwidth {\unhbox \@labels \hss}}\fi}% + \toks@ =\expandafter% + {\the\expandafter\toks@ \the\everypar \relax + \ifdim \dimexpr \maxlabelwidth-\Gm@lmargin+(\Gm@rmargin+5mm)>\z@ + \hangindent \dimexpr \maxlabelwidth-\Gm@lmargin+(\Gm@rmargin+5mm)\relax + \hangafter -\macro@cnt + \fi + \global\maxlabelwidth \z@ + \global\everypar \expandafter{\the\everypar \hangindent \z@ \hangafter \z@}}% + \ifdim \wd0>\maxlabelwidth \global\maxlabelwidth \wd0 \fi + \rlap{\unhbox0}\global\everypar \toks@ + \endgroup +}% \macro@llap +\AtEndOfClassFile* {ltxdoc}{\MacrocodeTopsep\z@skip \MacroTopsep\z@skip } +\AtBeginEnvironment {macro}{\if@nobreak\else \Needspace{2\baselineskip}\fi + \let\llap =\macro@llap \topsep\z@skip \itemsep\z@skip + \partopsep\z@skip \parsep\z@skip + \parskip=2pt plus2pt minus2pt\relax +} +\AtEndEnvironment{macro}{\goodbreak \vskip.3\parskip } +% \end{macrocode} +% \end{macro} +% +% \subsubsection{\cs{getpackagedate} and \cs{getpackageinfo}} +% +% \begin{macro}{\getpackagebanner} +% +% Extract the banner of a loaded package. +% +% \begin{macro}{\getpackagedate} +% +% Extract the date from the banner of a loaded package. +% +% \begin{macro}{\getpackageinfo} +% +% Extract the info from the banner of a loaded package. +% +% \begin{macrocode} +\providecommand*\getpackagebanner [1]{\ltx@ifpackageloaded{#1} + {\csname ver@#1.\ltx@pkgextension\endcsname} + {}% +}% \getpackagebanner +\providecommand*\getpackagedate [1]{\ltx@ifpackageloaded{#1} + {\expandafter \expandafter % <-note: only required if \pdfmatch undefined> + \expandafter\fcltx@ParseVersionAsDate + \csname ver@#1.\ltx@pkgextension\endcsname \@nil}% + 0% +}% \getpackagedate +\providecommand*\getpackageinfo [1]{\ltx@ifpackageloaded{#1} + {\expandafter \expandafter % <-note: only required if \pdfmatch undefined> + \expandafter\LTXcmds@@ParseInfo + \csname ver@#1.\ltx@pkgextension\endcsname \@nil}% + {}% +}% \getpackageinfo +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macrocode} +\ltx@IfUndefined{pdfmatch}{% + \provide\def\LTXcmds@ParseInfo#1{% + \LTXcmds@@ParseInfo#10000/00/00\@nil + }% + \provide\def\LTXcmds@@ParseInfo#1/#2/#3#4#5\@nil{% + \if\space#5\else #5\fi + }% + \provide\def\fcltx@ParseVersionAsDate #1\@nil {% + \fcltx@@ParseVersionAsDate #10000/00/00\@nil + }% + \provide\def\fcltx@@ParseVersionAsDate#1#2#3#4/#5#6/#7#8#9\@nil {#1#2#3#4/#5#6/#7#8}% +}{% + \provide\def\LTXcmds@ParseInfo#1{% + \ifnum\pdfmatch{% + ^% + (199[4-9]|[2-9][0-9][0-9][0-9])/% + (0[1-9]|1[0-2])/% + (0[1-9]|[1-2][0-9]|3[0-1])[[:space:]]*(.*$)% + }{#1}=1 % + \ltx@StripPrefix\pdflastmatch4 % + \fi + }% + \provide\def\LTXcmds@@ParseInfo #1\@nil {\LTXcmds@ParseInfo {#1}}% + \provide\def\fcltx@ParseVersionAsDate #1\@nil { + \ifnum\pdfmatch{% + ^% + (199[4-9]|[2-9][0-9][0-9][0-9])/% + (0[1-9]|1[0-2])/% + (0[1-9]|[1-2][0-9]|3[0-1])% + }{#1}=1 % + \ltx@StripPrefix\pdflastmatch1 % + /\ltx@StripPrefix\pdflastmatch2 % + /\ltx@StripPrefix\pdflastmatch3 % + \else + 0000/00/00% + \fi} +} +% \end{macrocode} +% +% \subsection{Verbatim support inside \cs{output} routine} +% +% \begin{macro}{\FC@DefineCommandChars} +% +% The \env{Verbatim}* provided by package \xpackage{fancyvrb} allow to define some +% special command chars for \textt{escape char character} (\cs\catcode$=0$), +% \textt{open group character} (\cs\catcode$=1$) and \textt{close group character} (\cs\catcode$=2$), +% by the mean of the key: +% +% \centerline{\keyvalue*{commandchars=\meta{escapechar}\meta{opengroup}\meta{closegroup}}.} +% +% If a page break occurs while inside the \env{Verbatim}*, the standard category codes are not +% restored, and the \cs\output routine may break (if for example, a file is read during the output routine). +% +% Here, \cs\FV@DefineCommandChars is redefined in order to ignore the special category codes of +% verbatim command chararacters category codes +% +% \begin{macrocode} +\AtEndOfPackageFile*{fancyvrb}{% +\renewcommand*\FV@DefineCommandChars [3]{% + \edef\FV@restoreCommandChars{\catcode`\noexpand#1 =\the\catcode`#1 + \catcode`\noexpand#2 =\the\catcode`#2 + \catcode`\noexpand#3 =\the\catcode`#3\relax}% + \def \FV@CommandChars {\catcode `#1 =0 \catcode `#2 =1 \catcode `#3 =2\relax }% + \output =\expandafter{\expandafter\FV@restoreCommandChars \the\output }}% +\DefineVerbatimEnvironment{Verb*}{Verbatim}{commandchars=$()} +}% \AfterPackage +% \end{macrocode} +% \end{macro} +% +% \subsection{Indexing: Do Not Index in general} +% +% \begin{macrocode} +\AtEndOfClassFile* {ltxdoc}{%\message{Now DONOTINDEX !!!^^J}% +\DoNotIndex{% + \begin,\end,\makeatletter,\makeatother,\@makeother,\filename,\fileversion,\filedate,\frenchspacing,% + \CodelineIndex,\CodelineNumbered,\OnlyDescription,\RecordChanges,% + \DisableCrossrefs,\EnableCrossrefs,\GetFileInfo,% + \def,\gdef,\xdef,\let,\csname,\endcsname,\outer,% + \newcommand,\newrobustcmd,\providecommand,\providerobustcmd,% + \newif,\@testopt,\endinput,\expandafter,\else,\relax,% + \csdef,\csgdef,\csxdef,\cslet,\csletcs,\csundef,\csuse,% + \csappto,\csgappto,\csxappto,\cseappto,\cspreto,\csxpreto,\csepreto,\csgpreto,% + \preto,\appto,\epreto,\eappto,\xappto,\xpreto,\gpreto,\xpreto,% + \~,\\,\&,\;,\,,\:,\[,\],\{,\},\^,\ ,% + \@ifpackagelater,\@ifpackagewith,\@ifpackageloaded,% + \m@ne,\z@,\z@skip,\@ne,\p@,\tw@,\thr@@,\@M,\m,\@,\@@,\@elt,\do,\@let@token,\@undefined,% + \@tempa, + \@firstofone,\@firstoftwo,\@secondoftwo,% + \@eha,\@ehd,\on@line,% + \DocInput,\documentclass,\NeedsTeXFormat,\ProvidesClass,\ProvidesPackage,\ProvidesFile,% + \RequirePackage,\usepackage,\AtEndOfPackage,\AtBeginDocument,\AtEndDocument,\ProcessOptions,% + \PackageWarningNoLine,\PackageInfoNoLine,% + \DefineShortVerb,\DeleteShortVerb,\UndefineShortVerb,\MakeShortVerb, + \title,\subtitle,\author,\date,\maketitle,\chapter,\section,\subsection,\subsubsection,% + \paragraph,\subparagraph,\parindent,\parskip,% + \TMP@EnsureCode,\nobibliography,\nocite,\bibitem,\item,% + \MessageBreak,\@spaces,% + \stform,\x,% +} +\CodelineIndex +\EnableCrossrefs +\IndexPrologue{% + \section*{Index}% + \markboth{Index}{Index}% + Numbers written in italic refer to the page % + where the corresponding entry is described; % + numbers underlined refer to the % + \ifcodeline@index + code line of the % + \fi + definition; plain numbers refer to the % + \ifcodeline@index + code lines % + \else + pages % + \fi + where the entry is used.% +} +}% \AtEndOfClassFile +% \end{macrocode} +% +% \subsection{Other miscellaneous (personal) commands} +% +% \begin{macro}{\ClearPage} +% +% \cs\ClearPage does nothing and \cs\ClearPage* does \cs\clearpage. This way it's possible to +% clear a page or not, keeping trace of what we intended to do... +% +% \begin{macrocode} +\providerobustcmd*\ClearPage {\@ifstar \clearpage \relax } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\uline} +% +% \cs\uline (from the \Xpackage{ulem}*) has an optional argument to set the color +% of the line. +% +% \begin{macrocode} +\AtEndOfPackageFile*{ulem}{% +\renewcommand*\ULset[1][]{\UL@setULdepth + \def\UL@leadtype{#1\leaders \hrule \@height\dimen@ \@depth\ULdepth }% + \ifmmode \ULdepth-4\p@ \fi + \dimen@-\ULdepth \advance\dimen@\ULthickness \ULon} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\HighLight} +% \begin{macrocode} +\providerobustcmd*\HighLight [1][]{\begingroup \bgroup \aftergroup\endgroup + \ULdepth=\dp\strutbox + \edef\ULthickness{\the\dimexpr \ht\strutbox+\dp\strutbox }% + \UL@setULdepth + \ifcat$\detokenize{#1}$\let\fcltx@HL =\@gobble + \else \let\fcltx@HL =\color \fi + \def\UL@leadtype {\dimen@ii\dimen@\fcltx@HL{#1}\dimen@\dimen@ii + \leaders \hrule \@depth\ULdepth \@height\dimen@ }% + \dimen@-\ULdepth \advance\dimen@ \ULthickness + \ULon +}% \HighLight +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textsubscript } +% \begin{macrocode} +\AtBeginDocument{% + \providerobustcmd*\textsubscript [1]{\@textsubscript {\selectfont #1}} + \providerobustcmd*\@textsubscript [1]{\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}} +} +% \end{macrocode} +% \end{macro} +% +% +% \subsection{Setup At Begin Document} +% +% \begin{macrocode} +\AtBeginDocument{\provide\let\lsstyle =\relax + \errorcontextlines=10\relax + \provide\let\thisfile =\jobname + \provide\let\thisversion =\@empty + \provide\edef\thisdate {\getpackagedate\thisfile}% + \provide\let\thisversion =\@empty + \ifdefined\hypersetup + \ifdefvoid\@pdftitle + {\hypersetup {pdftitle=The \jobname\space package}} + {}% + \fi + \ifdefined\embedfile + \IfFileExists{\jobname.dtx}{\embedfile{\jobname.dtx}}{}\fi +}% \AtBeginDocument +\AtEndOfPackageFile*{doc}{\AfterEndPreamble {\DeleteShortVerb {\|}}} +% \end{macrocode} +% +% +% \subsection{Other stuff (patches) to remove after some package updates} +% +% \begin{macro}{\marginnote} +% +% Modification to get a correct positionning of the marginnote at first compilation time: +% +% \begin{macrocode} +%\let\@mn@atthispage \@empty +%\AtEndOfPackageFile*{marginnote}{% +%\renewcommand\mn@zbox [1]{% +% \bgroup +% \ifcsname mn@note.\@mn@thispage.\@mn@atthispage\endcsname \h@false +% \else \h@true +% \fi +% \ifh@ +% \vbox to\z@{\vss \@mn@margintest}\let\@mn@margintest \relax % Just set the label (\pdfsavepos) +% \edef\marginnotevadjust {\the\dimexpr \marginnotevadjust-\baselineskip }% +% \setbox\@tempboxa \hbox +% \else +% \setbox\@tempboxa \vbox +% \fi {#1}% +% \ht\@tempboxa =\ht\strutbox \dp\@tempboxa =\dp\strutbox \wd\@tempboxa =\z@ +% \ifh@ \unhbox \else \box \fi \@tempboxa +% \egroup +%}% \mn@zbox +%}% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \restoregeometry +% \bookmarksetup{bold*} +% \pagesetup*{ +% ^^Aleft/offset+=5mm,right/offset+=12mm, +% head/color=LightSteelBlue, +% } +% +% \begin{thebibliography}{9}^^A <- maximum width of labels +% +% \makeatletter +% \bibitem{doc} +% \textitbf{The \xpackage{doc} and \xpackage{shortvbr} packages} \\ +% 2006/02/02 v2.1d -- Standard LaTeX documentation package (FMi) \\ +% Franck Mittelbach \\ +% \getpackagedate{doc} +% {\smaller\CTANhref{doc}} +% +% \bibitem{hypdoc} +% \textitbf{The \xpackage{hypdoc} package} \\ +% 2010/03/26 v1.9 Hyper extensions for doc.sty (HO) \\ +% Heiko Oberdiek \\ +% {\smaller\CTANhref{hypdoc}} +% +% \bibitem{holtxdoc} +% \textitbf{The \xpackage{holtxdoc} package} \\ +% 2010/04/24 v0.19 Private additional ltxdoc support (HO) \\ +% {\smaller\CTANhref{holtxdoc}} +% +% \end{thebibliography} +% +% \begin{History} +% +% \addtocontents{toc}{\tocsetup{subsection/font+=\string\smaller}} +% \sectionformat\subsection[hang]{ +% font=\normalsize\bfseries\pkgcolor, +% top=\smallskipamount, +% bottom=0pt, +% break=\addpenalty{-\csname @medpenalty\endcsname}, +% } +% \robustify\textbf \robustify\xfile ^^A\HistLabel does \edef on \@currentlabel (\protected@edef required !!) +% +% \begin{Version}{2011/02/27}{1.0} +% \item First version. +% \end{Version} +% +% +% \end{History} +% +% ^^A\PrintIndex +% +% \Finale \ No newline at end of file diff --git a/macros/latex/contrib/fcltxdoc/fcltxdoc.ins b/macros/latex/contrib/fcltxdoc/fcltxdoc.ins new file mode 100644 index 0000000000..f45855e140 --- /dev/null +++ b/macros/latex/contrib/fcltxdoc/fcltxdoc.ins @@ -0,0 +1,89 @@ +%% +%% This is file `fcltxdoc.ins', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% fcltxdoc.dtx (with options: `install') +%% +%% This is a generated file. +%% Copyright (FC) 2010-2011 - lppl +%% +%% 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 +%% +%% This work consists of the main source file fcltxdoc.dtx +%% and the derived files +%% fcltxdoc.sty, fcltxdoc.pdf, fcltxdoc.ins, fcltxdoc.drv. +%% +%% +%% fcltxdoc: 2011/03/12 v1.0 - Private additional ltxdoc support (FC) +%% +%% This package is not intended for public use. +%% It is required to compile some of my documentations files. +%% +%% ------------------------------------------------------------------------------ +\input docstrip.tex +\Msg{************************************************************************} +\Msg{* Installation} +\Msg{* Package fcltxdoc: 2011/03/12 v1.0 - Private additional ltxdoc support (FC)} +\Msg{************************************************************************} + +\keepsilent +\askforoverwritefalse + +\let\MetaPrefix \relax +\preamble + +This is a generated file. +Copyright (FC) 2010-2011 - lppl + +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 + +This work consists of the main source file fcltxdoc.dtx +and the derived files + fcltxdoc.sty, fcltxdoc.pdf, fcltxdoc.ins, fcltxdoc.drv. + +fcltxdoc: 2011/03/12 v1.0 - Private additional ltxdoc support (FC) + +This package is not intended for public use. +It is required to compile some of my documentations files. + +------------------------------------------------------------------------------ +\endpreamble +\let\MetaPrefix \DoubleperCent +{ +\catcode164=9 +\generate{% + \file{fcltxdoc.ins}{\from{fcltxdoc.dtx}{install}}% + \file{fcltxdoc.sty}{\from{fcltxdoc.dtx}{package}}% +} +} +\askforoverwritefalse +\generate{% + \file{fcltxdoc.drv}{\from{fcltxdoc.dtx}{driver}}% +} +\obeyspaces +\Msg{************************************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the following *} +\Msg{* file into a directory searched by TeX: *} +\Msg{* *} +\Msg{* fcltxdoc.sty *} +\Msg{* *} +\Msg{* To produce the documentation run the file `copypaste.dtx' *} +\Msg{* through pdfLaTeX. *} +\Msg{* *} +\Msg{************************************************************************} + +\endbatchfile +\endinput +%% +%% End of file `fcltxdoc.ins'. diff --git a/macros/latex/contrib/fcltxdoc/fcltxdoc.pdf b/macros/latex/contrib/fcltxdoc/fcltxdoc.pdf new file mode 100644 index 0000000000..4b1a5c8145 Binary files /dev/null and b/macros/latex/contrib/fcltxdoc/fcltxdoc.pdf differ -- cgit v1.2.3