aboutsummaryrefslogtreecommitdiffstats
path: root/doc/expert/pre_link
blob: 17a80595f43a95af17264f6a100a8b1525a2d43f (plain) (blame)
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
@Section
   @Title { "@LinkSource", "@LinkDest", and "@URLLink" }
   @Tag { link_source }
@Begin
@PP
The two symbols @@LinkSource and @@LinkDest
link.source.sym @Index { @@LinkSource symbol }
link.dest.sym @Index { @@LinkDest symbol }
work together to create @I { cross links } in a document, that is, points
where a user viewing the document on screen can click and be transported to
another point in the document.  We call the point where the user
clicks the @I source of the link, and the point where the user
arrives the @I destination of the link.
@PP
To create a source point, place
@ID { @I tag @Code "@LinkSource" @I object }
at some point in the document, where the value of @I tag is a legal
cross reference tag, and @I object is an arbitrary Lout object.  The
result of this is just {@I object}, but if the user of a screen
viewer clicks on any point within the rectangular bounding box
of that object, a link will be entered.
@PP
To create a destination point, place
@ID { @I tag @Code "@LinkDest" @I object }
at some point in the document.  Again, @I tag must evaluate to a
legal cross reference tag, and @I object may be any Lout
object.  All @Code "@LinkSource" symbols whose
tag is equal to this one are linked to this destination point.
@PP
For every source point there must be exactly one destination point with
the same tag, otherwise it will not be clear where the link is
supposed to take the user.  Lout will print a warning if this
condition is violated anywhere; it will refuse to insert a
destination point with the same name as a previous one, but it is not
able to refrain from inserting a source point with no corresponding
destination point, and such points must cause errors of some kind when
viewed (exactly what error will depend on the viewer).
@PP
The @@URLLink symbol is similar to @@LinkSource in being the
source point of a link, but instead of a tag you supply a URL
to some other document altogether:
@ID @Code {
"\"http://snark.ptc.spbu.ru/~uwe/lout/lout.html\" @URLLink { Lout Home Page }"
}
The URL will need to be enclosed in quotes, because of the "/"
characters which are otherwise taken to be concatenation operations.  As
for @@LinkSource, the result is just the object to the right, like this:
@ID { "http://snark.ptc.spbu.ru/~uwe/lout/lout.html" @URLLink { Lout Home Page } }
but if the user clicks on this object on the screen they enter a
link that takes them to the given URL location, assuming that
the software which they are using to display the document is
clever enough to do this.
@PP
At present, @I object above is treated as though it were enclosed
in @@OneCol, which means that a long link source or destination point
will not break over two lines as part of an enclosing paragraph.  This
deficiency might be corrected in the future.
@End @Section