diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/prettyref/prettyref.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/prettyref/prettyref.dtx | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/prettyref/prettyref.dtx b/Master/texmf-dist/source/latex/prettyref/prettyref.dtx new file mode 100644 index 00000000000..13f2648b17e --- /dev/null +++ b/Master/texmf-dist/source/latex/prettyref/prettyref.dtx @@ -0,0 +1,134 @@ +% \iffalse meta-comment +%% +%% prettyref v3.0 +%% +%% Copyright 1995,1998. by Kevin Ruland kevin@rodin.wustl.edu +%% +% \begin{macrocode} +%<*driver> +\documentclass{ltxdoc} +\usepackage{doc} +\CodelineNumbered +\begin{document} + \DocInput{prettyref.dtx} +\end{document} +%</driver> +% \end{macrocode} +% +% \fi +% +% \iffalse +%<*style> +% \fi +% +% \title{Improved reference formatting for \LaTeX2e} +% +% \author{Kevin S. Ruland} +% +% \maketitle +% +% There is a significant change to the newrefformat command in +% version~3.0. Please see the new discussion of that command below. +% +% This package has been completely reimplemented (in version 2.0). +% Please note the user level commands have changed syntax. This was done +% because most of the packages providing hypertext/www functionality +% (such as, |hyper|, |hyperref| and |latex2html|) +% also modify the |\newlabel| structure. In order to make this package +% compatable with those, I have decided not to change the |\newlabel| +% structure, but have the refence type stored in the label name. +% +% This package provides additional functionality to \LaTeX2e label--reference +% mechanism. It allows the author to ``preformat'' all types of labels. +% +% A long standing problem with \LaTeX\ |\ref| command is that it only +% provides a raw number. The author is responsible for properly formatting +% the number correctly. For example, in order to correctly format a reference +% to an equation, the author must use |\textup{(\ref{eq:1})}|. Or similarly +% for a figure, |Figure~(\ref{fig:2})|. This way the ``format'' of the +% reference is hard coded into the paper. If the author decides to change +% figure references to |Figure~\ref{fig:2}|, she must search and replace all +% the strings in the tex source. +% +% AMS\LaTeX\ has partially addressed this problem by providing the package +% |upref| and command |\eqref| in |amsmath|. This is a partial solution +% for equation numbers and forces equation numbers in upright style. +% +% This package provides a more comprehensive solution by allowing the author +% to define various formats for the labels. For example, to label a +% table the author would use |\label{tab:1}|. To access the formatted +% reference the author uses |\prettyref{tab:1}|. |\pageref{tab:1}| +% and |\ref{tab:1}| work as usual. +% +% |\prettyref| is robust enough to be used within |\caption| and in +% |theorem| optional arguements. +% +% Labels in the document must be of the form |format:name| where the +% string |format| is used to determine the format. Do not use the character +% |:| anywhere within the label except to seperate |format| from +% |name|. |format:name| must be unique for it is used as the label. +% +% \begin{macrocode} +\ProvidesPackage{prettyref}[1998/07/09 v3.0] +% \end{macrocode} +% +% \DescribeMacro{\newrefformat} +% The command |\newrefformat| defines formats for pretty references. +% +% Usage: |\newrefformat{NAME}{FORMAT}| +% +% The |NAME| arguement is the name of the refernece type. +% +% The |FORMAT| argument is interpreted as the replacement text for +% an internal one-argument function. +% The |#1| will be replaced with the label name. +% \begin{macrocode} +\def\newrefformat#1#2{% + \@namedef{pr@#1}##1{#2}} +% \end{macrocode} +% +% These define the default formats for table, eq, lemma, thm, section, and +% figure. They also demonstrate the useage of |\newrefformat|. +% \begin{macrocode} +\newrefformat{eq}{\textup{(\ref{#1})}} +\newrefformat{lem}{Lemma \ref{#1}} +\newrefformat{thm}{Theorem \ref{#1}} +\newrefformat{cha}{Chapter \ref{#1}} +\newrefformat{sec}{Section \ref{#1}} +\newrefformat{tab}{Table \ref{#1} on page \pageref{#1}} +\newrefformat{fig}{Figure \ref{#1} on page \pageref{#1}} +% \end{macrocode} +% +% \DescribeMacro{\prettyref} +% The character |:| is used as a seperator. It must be appended to +% the label string to terminate the |name| portion. +% +% \begin{macrocode} +\def\prettyref#1{\@prettyref#1:} +% \end{macrocode} +% +% \DescribeMacro{\@prettyref} +% The internal macro |\@prettyref| does all the work. It takes two +% arguements delimited by |:|. The first arguement is the format name. +% If the format has not been defined, a warning is issued and |\ref| +% is used. Otherwise, the reference is formatted. |\@prettyref| +% uses the \LaTeX\ macros |\ref| and |\pageref| to access the +% |\newlabel| data structure. Hopefully this makes the package +% robust enough to use with various other pacakges. +% +% \begin{macrocode} +\def\@prettyref#1:#2:{% + \expandafter\ifx\csname pr@#1\endcsname\relax% + \PackageWarning{prettyref}{Reference format #1\space undefined}% + \ref{#1:#2}% + \else% + \csname pr@#1\endcsname{#1:#2}% + \fi% +} +% \end{macrocode} +% +% \endinput +% +\endinput +%</style> +% |