From 4cc7922324b7a08ba0418e8f245cf1dcfa1891ac Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 21 Dec 2020 03:01:35 +0000 Subject: CTAN sync 202012210301 --- .../easyfloats/doc/preamble/description-links.tex | 224 +++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 macros/latex/contrib/easyfloats/doc/preamble/description-links.tex (limited to 'macros/latex/contrib/easyfloats/doc/preamble/description-links.tex') diff --git a/macros/latex/contrib/easyfloats/doc/preamble/description-links.tex b/macros/latex/contrib/easyfloats/doc/preamble/description-links.tex new file mode 100644 index 0000000000..6eac79bc1c --- /dev/null +++ b/macros/latex/contrib/easyfloats/doc/preamble/description-links.tex @@ -0,0 +1,224 @@ +% !TeX root = ../easyfloats.tex + +% Copyright © 2020 E. Zöllner +% Alternatively to the terms of the LPPL, at your choice, +% you can redistribute and/or modify this file under the +% terms of the Do What The Fuck You Want To Public License, Version 2, +% as published by Sam Hocevar. See http://www.wtfpl.net/about/. + +% Links all \cmd, \env and \handler to the corresponding \Describe*. +% Links all \pkg to a reference defined with \newurllink (see link.tex) +% Defines \pkgoptndoc to document package otions and links all \pkgoptn to it. +% +% \pkgoptndoc{} +% \pkgoptndoc*{} +% The starred version is for default package options. +% The non-starred version is for options disabled by default. +% Empty lines before a \pkgoptndoc are relevant: +% Without an empty line they are considered to belong together. +% With an empty line they do not and \pkgoptndoc@afterpar is inserted as separator. +% A list of \pkgoptndoc must be closed with \endpkgoptndoc. +% +% Defines +% \NoDescribeMacro{} +% \NoDescribeEnv{} +% to declare undescribed control sequences or environments +% which shall not produce a warning when being referenced. +% +% Warning: \cmd and \DescribeMacro are not intended for use with control characters. +% +% depends on +% \NewKeyword[\unexpanded]{}{}{}{}{} +% \NoKeyword{}{}{}{} +% \LinkKeyword{}{}{} +% from preamble/keydoc.tex + +\makeatletter + +% --------- \cmd & \(No)DescribeMacro ---------- + +\newcommand{\DlCmdLabelName}[1]{\detokenize{#1}} +\newcommand{\Cmd}[1]{\expandafter{\detokenize{#1}\unskip}} +\newcommand{\CmdBg}{\formatcode} +\let\DlOriginalDescribeMacro=\DescribeMacro +\renewcommand{\DescribeMacro}[1]{% + \begingroup + \def\cmd##1{\formatcodeinmarginpar{\Cmd{##1}}}% + \DlOriginalDescribeMacro{#1}% + \endgroup + \NewKeyword[\unexpanded]{cs}{\DlCmdLabelName{#1}}{\CmdBg}{\Cmd}{}% + \AbbrevKeyword[\unexpanded]{}{\DlCmdLabelName{#1}} {cs}{\DlCmdLabelName{#1}}% + \ignorespaces +} +\newcommand{\NoDescribeMacro}[1]{% + \NoKeyword[\unexpanded]{cs}{\DlCmdLabelName{#1}}{\CmdBg}{\Cmd}% + \AbbrevKeyword[\unexpanded]{}{\DlCmdLabelName{#1}} {cs}{\DlCmdLabelName{#1}}% + \ignorespaces +} +\renewrobustcmd{\cmd}[1]{% + \LinkKeyword{cs}{\detokenize{#1}}\CmdBg\Cmd{#1}% +} + + +% --------- \env & \(No)DescribeEnv ---------- + +\let\DlOriginalDescribeEnv=\DescribeEnv +\renewcommand{\DescribeEnv}[1]{% + \DlOriginalDescribeEnv{#1}% + \NewKeyword{env}{#1}{\DlEnvBg}{\DlOriginalEnv}{}% + \AbbrevKeyword{}{#1} {env}{#1}% + \ignorespaces +} +\newcommand{\NoDescribeEnv}[1]{% + \NoKeyword{env}{#1}{\DlEnvBg}{\DlOriginalEnv}% + \AbbrevKeyword{}{#1} {env}{#1}% + \ignorespaces +} +\let\DlOriginalEnv=\env +\renewcommand{\env}[1]{\LinkKeyword{env}{#1}\DlEnvBg\DlOriginalEnv{#1}} +\newcommand{\DlEnvBg}{\formatcode} + + +% --------- \handler & \DescribeHandler ---------- + +\let\DlOriginalDescribeHandler=\DescribeHandler +\renewcommand{\DescribeHandler}[1]{% + \DlOriginalDescribeHandler{#1}% + \NewKeyword{handler}{#1}{\DlHandlerBg}{\DlOriginalHandler}{}% + \AbbrevKeyword{}{#1} {handler}{#1}% + \ignorespaces +} +\let\DlOriginalHandler=\handler +\renewcommand{\handler}[1]{\LinkKeyword{handler}{#1}\DlHandlerBg\DlOriginalHandler{#1}} +\newcommand{\DlHandlerBg}{\formatcode} + +\newcommand{\NoDescribeHandler}[1]{% + \NoKeyword{handler}{#1}{\DlHandlerBg}{\DlOriginalHandler}% + \AbbrevKeyword{}{#1} {handler}{#1}% + \ignorespaces +} + + +% --------- \NoDescribeKey, \NoDescribeVal ---------- + +\newcommand{\NoDescribeKey}[1]{% + \NoKeyword{key}{#1}{\keydoc@key@bg}{\keydoc@original@key}% + \AbbrevKeyword{}{#1} {key}{#1}% + \ignorespaces +} +\newcommand{\NoDescribeVal}[1]{% + \NoKeyword{}{#1}{\formatcode}{\val}% + \ignorespaces +} + + +% --------- \DescribeMeta ---------- + +\newcommand{\DescribeMeta}[1]{% + \NewKeyword{meta}{#1}{\formatcode}{\val}{}% + \ignorespaces +} + +\let\meta@nolink=\meta +\renewcommand{\meta}[1]{% + \IfKeywordUndefined{meta}{#1}% + {\@firstofone}% + {\LinkUnformattedKeyword{meta}{#1}}% + {\meta@nolink{#1}}% +} + + +% --------- \pkgoptn & \pkgoptndoc ---------- + +\let\DlOriginalPkgoptn=\pkgoptn +\renewcommand{\pkgoptn}[1]{\LinkKeyword{pkgoptn}{#1}\DlPkgoptnBg\DlOriginalPkgoptn{#1}} +\newcommand{\DlPkgoptnBg}{\formatcode} + +\newcommand{\begin@pkgoptndoc}{\begin{itemize}} +\def \endpkgoptndoc {\end{itemize}} +\newcommand{\pkgoptndoc@beforepkg@normal}{\item[\radiooff]} +\newcommand{\pkgoptndoc@beforepkg@default}{\item[\radioon]} +% inserted before \pkgoptndoc if it was preceded by an empty line +\newcommand{\pkgoptndoc@afterpar}{\bigpar} + +\newif\if@inpkgoptndoc + +\newcommand{\pkgoptndoc}{% + \unless\if@inpkgoptndoc + \begin@pkgoptndoc + \@inpkgoptndoctrue + \else + \ifvmode + \pkgoptndoc@afterpar + \fi + \fi + \@ifstar + {\pkgoptndoc@beforepkg@default\@pkgoptndoc@do}% + {\pkgoptndoc@beforepkg@normal\@pkgoptndoc@do}% +} +\newcommand{\@pkgoptndoc@do}[1]{% + \NewKeyword{pkgoptn}{#1}{\DlPkgoptnBg}{\DlOriginalPkgoptn}{#1}% + \AbbrevKeyword{}{#1} {pkgoptn}{#1}% +} + +\newcommand{\NoDescribePkgoptn}[1]{% + \NoKeyword{pkgoptn}{#1}{\DlPkgoptnBg}{\DlOriginalPkgoptn}% + \AbbrevKeyword{}{#1} {pkgoptn}{#1}% + \ignorespaces +} + + +% --------- \pkg & \pkgdoc, \NoDescribePkg ---------- + +\let\DlOriginalPkg=\pkg +\newcommand{\DlPkgBg}[1]{#1} +\renewcommand{\pkg}[1]{\LinkKeyword{pkg}{#1}\DlPkgBg\DlOriginalPkg{#1}} +\newcommand{\pkgdoc}[1]{% + \unless\if@inpkgdoc + \begin@pkgdoc + \@inpkgdoctrue + \fi + \pkgdoc@beforepkg + \NewKeyword{pkg}{#1}{\DlPkgBg}{\DlOriginalPkg}{\link[#1]{#1}}% + %\AbbrevKeyword{}{#1} {pkg}{#1}% + \let\pkgdoc@beforepkg=\pkgdoc@beforepkg@bak + \pkgdoc@lookahead +} +\newcommand{\pkgdoc@lookahead}{% + \futurelet \pkgdoc@nexttoken \pkgdoc@lookahead@check +} +\newcommand{\pkgdoc@lookahead@check}{% + \ifcat \noexpand\pkgdoc@nexttoken \space + \let\pkgdoc@lookahead@do=\pkgdoc@lookahead + \let\pkgdoc@lookahead@gobble=\@firstofone + \else\ifx \pkgdoc@nexttoken /% + \pkgdoc@pkgsep + \let\pkgdoc@beforepkg=\relax + \let\pkgdoc@lookahead@do=\pkgdoc@lookahead + \let\pkgdoc@lookahead@gobble=\@gobble + \else\ifx \pkgdoc@nexttoken \pkgdoc + \let\pkgdoc@lookahead@do=\relax + \let\pkgdoc@lookahead@gobble=\@empty + \else + \pkgdoc@descriptionsep + \let\pkgdoc@lookahead@do=\relax + \let\pkgdoc@lookahead@gobble=\@empty + \fi \fi \fi + \expandafter \pkgdoc@lookahead@do \pkgdoc@lookahead@gobble +} + +\newcommand{\begin@pkgdoc}{\begin{itemize}} +\def \endpkgdoc {\end{itemize}} +\newif\if@inpkgdoc +\newcommand{\pkgdoc@beforepkg}{\item} +\newcommand{\pkgdoc@pkgsep}{/} +\newcommand{\pkgdoc@descriptionsep}{ } +\let\pkgdoc@beforepkg@bak=\pkgdoc@beforepkg + +\newcommand{\NoDescribePkg}[1]{% + \NoKeyword{pkg}{#1}{\DlPkgBg}{\DlOriginalPkg}% + %\AbbrevKeyword{}{#1} {pkg}{#1}% + \ignorespaces +} + +\makeatother -- cgit v1.2.3