summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/titleref/titleref.tex
blob: 6d184ed2c9f7a544ca18e1d5db1e4c909185b768 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
\documentclass[a4paper]{article}
\usepackage[a4paper]{geometry}
\usepackage{miscdoc}
\usepackage[scaled=0.85]{luximono}
\begin{document}
\title{The \Package{titleref} package}
\author{Donald Arseneau\thanks{Documentation file assembled by Robin
    Fairbairns}}
\date{5th April 2005, version 3.1}
\maketitle

The package provides a command \cs{titleref} to cross-reference the
titles of sections (etc.).  The \cs{label} command is changed to
remember the title for such a reference.  You can use \cs{titleref}
just as you use \cs{ref} and \cs{pageref}.

Titles for numbered sectioning units and for floats with captions are
the same as the respective \textsc{toc}, \textsc{lof}, or \textsc{lot}
entry (even when no \textsc{toc}, or whatever, is printed).  When a
short title is provided (\cmdinvoke{section}[short]{long}, etc.\@) it
will be used for the \cs{titleref}.  This is especially useful for
figure captions.  Unnumbered sections take their title reference from
the printed title.  Beware!~--- This turns the title into a moving
argument when it normally is not, and will cause weird errors if there
are `fragile' commands present.

Enumerated lists do not have titles and simply inherit the title of
their section.

The format of the title reference is controlled by the command
\cs{theTitleReference}, which can be redefined with \cs{renewcommand}.
It takes two parameters: the number and the title. The number is
just the regular \cs{ref} and it is WRONG in unnumbered sections.
Beware!  The default definition is the unadorned title.  You could
do, for example,
\cmdinvoke{renewcommand}{\cs{theTitleReference}}[2]{\#1\cs{\ }\cs{emph}{\#2}}

The title of the current section is also available without \cs{label}:
use the command \cs{currenttitle} to generate a \cs{titleref} to the
current section.  If you have redefined \cs{theTitleReference} to
print the number with the title, be aware that the two may not
correspond: in a numbered list the number will show the current item
but the title will show the current section, while in an unnumbered
section the number will show some previous section number.

\section*{Options:  \option[usetoc]  and  \option[nostar]}

In the default operation, the titles are recorded by a command
inserted into the various sectioning commands (\cs{@sect},
\cs{@ssect}, \cs{@chapter}, \cs{@schapter}, \cs{@part}, \cs{@spart},
and \cs{@caption}).  If this creates conflicts with some other
package, you can use an entirely different method by specifying
\cmdinvoke{usepackage}[usetoc]{titleref}.  As the name implies, this
option records the titles from the table-of-contents entry without
redefining the sectioning commands.  (This method was used in older
versions of the package.)

Since there are no \textsc{toc} entries for the `star' versions of
sectioning commands, they are still redefined.  The additional option
\option[nostar] (\cmdinvoke{usepackage}[usetoc,nostar]{titleref})
prevents the redefinitions, but then "\cs{section*}" will not generate
a title reference.  If you try to refer to the title of an unnumbered
section while \option[nostar] is in effect, you will get the title of
the previous section.

Under the \option[usetoc] option, the current title will always be
overridden by an \cs{addcontentsline} command before the \cs{label},
even for starred section commands under the \option[nostar] option.

The big problem with the \option[usetoc] method is that \cs{titleref}
will not refer to a \cs{label} which was given in the title or caption
itself; the label must be placed after the sectioning command or the
caption.  If you make a title-reference to a label given in a title,
you will get a warning message.

\section*{Compatibility}

The package was early in the field with this functionality, but it now
has competitors.  The package \emph{will not} work with other packages
that manipulate the labelling mechanism, such as \Package{hyperref};
for that title references with \Package{hyperref} you must use the
\Package{nameref} package in place of \Package{titleref}.

The \Package{zref} package also diddles with the \cs{label}--\cs{ref}
mechanism, and will equally not work with \Package{titleref}.
\Package{zref} itself doesn't provide a title reference facility: you
need to use \Package{hyperref} and \Package{nameref} for that.

\end{document}