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/gmiflink/README | 72 +++++++++ macros/latex/contrib/gmiflink/gmiflink.pdf | Bin 0 -> 57792 bytes macros/latex/contrib/gmiflink/gmiflink.sty | 214 ++++++++++++++++++++++++++ macros/latex/contrib/gmiflink/gmiflinkDoc.pdf | Bin 0 -> 58373 bytes macros/latex/contrib/gmiflink/gmiflinkDoc.tex | 15 ++ 5 files changed, 301 insertions(+) create mode 100644 macros/latex/contrib/gmiflink/README create mode 100644 macros/latex/contrib/gmiflink/gmiflink.pdf create mode 100644 macros/latex/contrib/gmiflink/gmiflink.sty create mode 100644 macros/latex/contrib/gmiflink/gmiflinkDoc.pdf create mode 100644 macros/latex/contrib/gmiflink/gmiflinkDoc.tex (limited to 'macros/latex/contrib/gmiflink') diff --git a/macros/latex/contrib/gmiflink/README b/macros/latex/contrib/gmiflink/README new file mode 100644 index 0000000000..515d63aa3f --- /dev/null +++ b/macros/latex/contrib/gmiflink/README @@ -0,0 +1,72 @@ +The gmiflink.sty LaTeX package +is a work of Grzegorz `Natror' Murzynowski, + + + +1. Copyright 2005, 2006 by Grzegorz `Natror' Murzynowski + +This program is subject to the LaTeX Project Public License. +See http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html +for the details of that license. + + +2. Introduction + +The gmiflink.sty package protects you against an error when a link is +dangling and typesets some plain text instead of a hyperlink then. It +is intended for use with the hyperref.sty package. + +I used it for typesetting the names of the objects in a documentation +of a computer program. If the object had been defined a \hyperlink to its +definition was made, otherwise a plain object's name was typeset. +I also use this package in automatic making of hyperlinking indexes. + +It provides the macros \gmiflink, \gmifref and +\gmhypertarget for conditional making of hyperlinks in your document. + +\gmhypertarget makes a \hypertarget and a \label of the given name. + +\gmiflink makes a \hyperlink to the given \hypertarget if the +correspondent label exists, otherwise typesets an ordinary text. + +\gmifref makes a (hyper-)\ref to the given label if the label exists, +otherwise it typesets an ordinary text. + + +3. Installation + +Just put the gmiflink.sty somewhere in the texmf/tex/latex +branch. Creating a /texmf/tex/latex/gm directory may be advisable if +you consider using other packages written by me. + +Then you should refresh your TeX distribution's files' +database most probably. + + +4. Contents + +The distribution of this package consists of the following three files. + +gmiflink.sty +README +gmiflink.pdf + + +5. Documentation + +The last of the above files (the .pdf) is a documentation compiled +from the .sty file by running LaTeX (twice) on the gmiflink.sty +file: +xelatex gmiflink.sty + in the directory you wish the documentation to be in, +you don't have copy the .sty file there---TeX will find it. +Compiling of the documentation requires the packages: gmdoc +(gmdoc.sty and gmdocc.cls), gmverb.sty, gmutils.sty and also some +standard packages: hyperref.sty, xcolor.sty, geometry.sty, +multicol.sty, lmodern.sty, fontenc.sty that should be installed +on your computer by default. + +If you have not installed the mwart.cls class (available on CTAN in +mwcls package), the result of your compilation may differ a bit from +the .pdf provided in this .zip archive in formattings: If you have not +installed mwart.cls, the standard article.cls will be used. diff --git a/macros/latex/contrib/gmiflink/gmiflink.pdf b/macros/latex/contrib/gmiflink/gmiflink.pdf new file mode 100644 index 0000000000..9d6e49d183 Binary files /dev/null and b/macros/latex/contrib/gmiflink/gmiflink.pdf differ diff --git a/macros/latex/contrib/gmiflink/gmiflink.sty b/macros/latex/contrib/gmiflink/gmiflink.sty new file mode 100644 index 0000000000..d383622f58 --- /dev/null +++ b/macros/latex/contrib/gmiflink/gmiflink.sty @@ -0,0 +1,214 @@ +% +% \GetFileInfo{gmiflink.sty} +% \title{The \pk{gmiflink} Package\thfileinfo} +% \author{Grzegorz `Natror' Murzynowski} +% \maketitle +% +% +% \begin{copyrnote} +% +%% Written by Grzegorz `Natror' Murzynowski, +%% natror at o2 dot pl +%% +%% \copyright\,2005, 2006 by Grzegorz `Natror' Murzynowski. +%% +%% This program is subject to the \LaTeX\ Project Public License. +%% See ^^A +%% \url{http://www.ctan.org/tex-archive/help/Catalogue/licenses.lppl.html} ^^A +%% for the details of that license. +%% +%% LPPL status: "author-maintained".\par +% +%\end{copyrnote} +% +% \CheckSum{61} +%% + +% \skiplines +% This is a~driver. To learn how to use it, read the README +% or the documentation in .pdf + +\ifnum\catcode`\@=12 +\documentclass[codespacesgrey, noindex, nochanges, pagella]{gmdocc}% ^^A +% the package is to small to make an index of its macros and it's too +% old to have the |\changes| ^^A( +% history ;-)\,. +\begin{document} +\DocInput{gmiflink.sty} +\afterfi{\end{document}} +\fi + +% \endskiplines + + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{gmiflink} + [2006/08/16 v0.97 Conditionally hyperlinking package (GM)] + +%% +%% \division{Introduction, usage} +%% +%% This package protects you against an error when a link is +%% dangling and typesets some plain text instead of a hyperlink then. It +%% is intended for use with the \pk{hyperref} package. Needs +%% \emph{two} \LaTeX\ runs. +% +% I used it for typesetting the names of the objects in +% a~documentation of a~computer program. If the object had been +% defined a \cs{hyperlink} to its definition was made, otherwise a +% plain object's name was typeset. I also use this package in +% authomatic making of hyperlinking indexes. +% \dekmedskip +% +% The package provides the macros \cs{gmiflink}, \cs{gmifref} and +% \cs{gmhypertarget} for conditional making of hyperlinks in your +% document. +% +% \newcommand*\aName{\gmiflink[@name]{\hskip-1.5pt @name}} +% \TextUsage\gmhypertarget\oarg{name}\marg{\gmiflink{text}} makes +% a~\cs{hypertarget\marg{\aName}\marg{text}} and \possfil +% a~\cs{label\marg{\aName}}. +% +% \TextUsage\gmiflink\oarg{name}\marg{text} makes +% a~\cs{hyperlink\marg{\aName}\marg{text}} to a~proper hypertarget if +% the corresponding \emph{label} exists, otherwise it typesets +% \. +% +% \TextUsage\gmifref\oarg{name}\marg{text} makes a~(hyper-) +% \cs{ref\marg{\aName}} to the given label if the label exists, +% otherwise it typesets \. +% +% The \raisebox{1em}[0pt]{\gmhypertarget[@name]{}}\<\hskip-1.5pt @name> +% ^^A~raisebox 'cause Acrobat sets the hypertarget at the baseline +% argument is just \ if the \ +% is given, otherwise it's \ in all three macros. +% +% For the example(s) of use, examine the \pk{gmiflink.sty} file, lines +% 45--58. +% +% \begin{gmlonely} +% \subdivision{Installation} +% +% Unpack the \file{gmiflink-tds.zip} (this is an archive conforming +% the \acro{TDS} standard, see \file{CTAN/tds/tds.pdf}) in +% a~\file{texmf} directory or put the \pk{gmiflink.sty} somewhere in +% the \file{texmf/\:tex/\:latex} branch on your own. (Creating +% a~\file{texmf/\:tex/\:latex/\:gm} directory may be advisable if +% you consider using other packages written by me.) +% +% Then you should refresh your \TeX\ distribution's files' database +% most probably. +% \end{gmlonely} +% +% +% \subdivision{Contents of the \pk{gmiflink.zip} archive} +% +% The distribution of the \pk{gmiflink} package consists of the +% following three files and a~\acro{TDS}-compliant archive. +% \begin{verse} +% \pk{gmiflink.sty}\\ +% \pk{README}\\ +% \pk{gmiflink.pdf}\\ +% \pk{gmiflink.tds.zip} +% \end{verse} +% +% +% \begin{gmlonely} +% \subdivision{Compiling the Documentation} +% +% The last of the above files (the \pk{.pdf}, i.e., \emph{this +% file}) is a~documentation compiled from the \pk{.sty} file by +% running \LaTeX\ on the \pk{gmiflink.sty} file +% (|xelatex gmiflink.sty| in the directory you wish the +% documentation to be in, you don't have copy the \file{.sty} file +% there, \TeX\ will find it). Compiling the documentation requires the +% packages: \pk{gmdoc} (\pk{gmdoc.sty} and \pk{gmdocc.cls}), +% \pk{gmverb.sty}, \pk{gmutils.sty}, \pk{gmiflink.sty} and also some +% standard packages: \pk{hyperref.sty}, \pk{xcolor.sty}, +% \pk{geometry.sty}, \pk{multicol.sty}, \pk{lmodern.sty}, +% \pk{fontenc.sty} that should be installed on your computer by +% default. +% +% If you had not installed the \pk{mwcls} classes (available on +% CTAN and present in \TeX\ Live e.g.), the result of your +% compilation might differ a~bit from the \pk{.pdf} provided in this +% \pk{.zip} archive in formatting: If you had not installed +% \pk{mwcls}, the standard \pk{article.cls} class would be used. +% \end{gmlonely} +% +% \StopEventually{\NoEOF} +% +% +% \division{The Code} + +\@ifpackageloaded{hyperref}{}{\message {^^J^^J gmiflink package: + There's no use of me without hyperref package, I end my input.^^J}\endinput} + +\providecommand\empty{} +% A~new counter, just in case +\newcounter{GMhlabel} +\setcounter{GMhlabel}{0} + +% The macro given below creates both hypertarget and hyperlabel, +% so that you may reference both ways: via |\hyperlink| and via |\ref|. +% It's pattern is the |\label| macro, see \LaTeX\ Source2e, file x, line 32. +% +% But we don't want to gobble spaces before and after. +% First argument will be a~name of the hypertarget, +% by default the same as typeset text, i.e., argument |#2|. +% \Define\gmhypertarget +\DeclareRobustCommand*\gmhypertarget{% + \@ifnextchar{[}{\gm@hypertarget}{\@dblarg{\gm@hypertarget}}} +%^^A] + +\def\gm@hypertarget[#1]#2{% ^^A + % If argument |#1|\equals|\empty|, then we'll use |#2|, i.e., the same as + % name of hypertarget. + \refstepcounter{GMhlabel}% ^^A + % we |\label{\gmht@firstpar}| + \hypertarget{#1}{#2}% + \protected@write\@auxout{}{% + \string\newlabel{#1}{{#2}{\thepage}{\relax}{GMhlabel.\arabic{GMhlabel}}{}}}% +}% end of |\gm@hypertartget|. + +% We define a~macro such that if the target exists, it makes +% |\ref|, else it typesets ordinary text. +% \Define\gmifref +\DeclareRobustCommand*\gmifref{\@ifnextchar{[}{\gm@ifref}{%] + \@dblarg{\gm@ifref}}} + +\def\gm@ifref[#1]#2{% + \expandafter\ifx\csname r@#1\endcsname\relax\relax% + #2\else\ref{#1}\fi% +}% end of |\gm@ifref| + +% \Define\gmiflink +\DeclareRobustCommand*\gmiflink{\@ifnextchar{[}{\gm@iflink}{%^^A] + \@dblarg{\gm@iflink}}} + +\def\gm@iflink[#1]#2{% + \expandafter\ifx\csname r@#1\endcsname\relax\relax% + #2\else\hyperlink{#1}{#2}\fi% +}% end of |\gm@iflink| +% +% It's robust because when just |\newcommand*|ed, use of |\gmiflink| in an +% indexing macro resulted in errors: |\@ifnextchar| has to be +% |\noexpand|ed in |\edef|s. + +\endinput + +% The old version --- all three were this way primarily. +%\begin{verbatim} +\newcommand*\gmiflink[2][\empty]{{% + \def\gmht@test{\empty}\def\gmht@firstpar{#1}% + \ifx\gmht@test\gmht@firstpar\def\gmht@firstpar{#2}\fi% + \expandafter\ifx\csname r@\gmht@firstpar\endcsname\relax\relax% + #2\else\hyperlink{\gmht@firstpar}{#2}\fi% +}} +% \end{verbatim} +% \Finale + +% (For my GNU Emacs:) +%%% Local Variables: +%%% mode: doctex +%%% End: diff --git a/macros/latex/contrib/gmiflink/gmiflinkDoc.pdf b/macros/latex/contrib/gmiflink/gmiflinkDoc.pdf new file mode 100644 index 0000000000..1da4d31904 Binary files /dev/null and b/macros/latex/contrib/gmiflink/gmiflinkDoc.pdf differ diff --git a/macros/latex/contrib/gmiflink/gmiflinkDoc.tex b/macros/latex/contrib/gmiflink/gmiflinkDoc.tex new file mode 100644 index 0000000000..2e49b4e965 --- /dev/null +++ b/macros/latex/contrib/gmiflink/gmiflinkDoc.tex @@ -0,0 +1,15 @@ +% This file is just a~driver. To learn how to use it, read the README +% or the documentation in .pdf +\documentclass[noindex,nochanges, pagella]{gmdocc}% the package is to small to +% make an index of its macros and it's too old to have the |\changes| ^^A( +% history ;-)\,. +\begin{document} +\DocInput{gmiflink.sty} +\end{document} + +% The following is just my GNU Emacs stuff. +% +%%% Local Variables: +%%% mode: latex +%%% TeX-master: t +%%% End: \ No newline at end of file -- cgit v1.2.3