hersh@bbn.com (Hershel Safer) (03/20/91)
Rather than write Theorem~\ref{foo} all the time, I use \newcommand{\thmref}[1]{Theorem~\ref{#1}} . Actually, it's fancier; since I may want the same label for a theorem, an associated figure, and the section in which they are found, I have \newcommand{\thmref}[1]{Theorem~\ref{th:#1}} , \newcommand{\secref}[1]{Section~\ref{s:#1}} , and a variety of other referencing commands with different prefixes. I also have corresponding labeling commands, such as \newcommand{\thmlabel}[1]{\label{th:#1}} and \newcommand{\seclabel}[1]{\label{s:#1}} . Here's the problem. Suppose that I change a theorem to a proposition. Changing \thmlabel to \proplabel is easy enough, but then I also have to change all references to the claim from \thmref to \propref. What I would like is a single labeling command and a single referencing command. The labeling command would take two arguments; the first would be the _kind_ of item and the second would be the label. It would store the kind of item. The referencing command would take a single argument, the label. It would use the stored item information to prepend the correct word to the reference number. Any references to existing solutions or suggestions for how to do this? Either TeX or LaTeX would be fine. Thank you. -- Hershel Safer +------------------------------------------------------------------+ | BBN Communications +1 (617) 873-2508 (voice) | | Bolt Beranek and Newman Inc. 873-8202 (fax) | | 150 Cambridge Park Drive, MS 20/6B | | Cambridge, MA 02140, USA Internet: hersh@bbn.com | +------------------------------------------------------------------+ -- Hershel
dhosek@cbrown.claremont.edu (Don Hosek) (03/21/91)
In article <63335@bbn.BBN.COM>, hersh@bbn.com (Hershel Safer) writes: > Rather than write > Theorem~\ref{foo} > all the time, I use > \newcommand{\thmref}[1]{Theorem~\ref{#1}} . > Actually, it's fancier; since I may want the same label for a theorem, > an associated figure, and the section in which they are found, I have > \newcommand{\thmref}[1]{Theorem~\ref{th:#1}} , > \newcommand{\secref}[1]{Section~\ref{s:#1}} , > and a variety of other referencing commands with different prefixes. I > also have corresponding labeling commands, such as > \newcommand{\thmlabel}[1]{\label{th:#1}} and > \newcommand{\seclabel}[1]{\label{s:#1}} . > Here's the problem. Suppose that I change a theorem to a proposition. > Changing \thmlabel to \proplabel is easy enough, but then I also have to > change all references to the claim from \thmref to \propref. > What I would like is a single labeling command and a single referencing > command. The labeling command would take two arguments; the first would > be the _kind_ of item and the second would be the label. It would store > the kind of item. > The referencing command would take a single argument, the label. It > would use the stored item information to prepend the correct word to the > reference number. > Any references to existing solutions or suggestions for how to do this? > Either TeX or LaTeX would be fine. Thank you. LaTeX has a command \p@ITEM which is normally null to refer to each counter. Defining, e.g., \p@section to be Section~ will cause those words to be prepended to any reference to a section reference. This works for nearly everything (the one exception I have envountered is eqalign does not prepend \p@equation to the equation number in labels generated there). This use of \p@WHICHEVER, however, is not recommended since it does limit the portability of your documents across styles. Its intended purpose is to allow things like sections numbered as: I A 1 a and referred to as I.A I.A I.A.1 I.A.1(a) (this is, in fact, what happens in the enumerate environment). More sophisticated things are possible as well (for example, I've written a p@section which would give "A" if the section is in the current chapter and "A in Chapter 2" if the section is in a different chapter. In general, sophisticated uses of \p@WHATEVER, however, will become rather complicated. Macro expansion timings can get really unpleasant. -dh --- Don Hosek To retrieve files from ymir via the | dhosek@ymir.claremont.edu mailserver, send a message to | Quixote TeX Consulting mailserv@ymir.claremont.edu with a | 714-625-0147 line saying send [DIRECTORY]FILENAME where DIRECTORY is the FTP directory (sans "anonymous") and FILENAME is the filename, e.g. "send [tex]00readme.txt". There is a list of files in each directory under the name 00files.txt Binary files are not available by this technique.