Difference between revisions of "References"

From Wiki
Jump to navigation Jump to search
(→‎Example: Sync context code compiled and shown)
(Two short examples, how \setupreferencestructureprefix and definestructureseparatorset can be used. Unfortunately without any syntax descriptions or explanations)
Line 71: Line 71:
  
 
{{todo|complete example would be better}}
 
{{todo|complete example would be better}}
 +
 +
 +
==Adjusting the level of referenced prefixes==
 +
 +
When the default chapter and section prefixes are used, the chapters are
 +
prefixed by a number, so are the sections. When referring to a section using
 +
the command <cmd>in{section}[sec:foo]</cmd> the chapter number is prefixed
 +
following by a dot and the according section number.
 +
 +
However, some styles do not show the chapter prefix while displaying the
 +
sections. In this case the referencing commands, like <cmd>in</cmd> just output the
 +
section number, which is of course ambiguous.
 +
 +
To fix this problem, the command <cmd>setupreferencestructureprefix</cmd> can be
 +
incorporated to adjust the prefixes displayed by the referencing commands.
 +
 +
===Example===
 +
 +
Given that <cmd>start/stopchapter</cmd> output <tt>Romannumerals</tt> prefixes (<tt>I,
 +
II, III, …</tt>) and <cmd>start/stopsection</cmd> output <tt>Character</tt> prefixes (<tt>A,B, C, …</tt>), the following commands give the results provided in the comments.
 +
 +
<texcode>
 +
\setupreferencestructureprefix [default] [prefixsegments=2:2] % nothing
 +
\setupreferencestructureprefix [default] [prefixsegments=2:3] % I
 +
\setupreferencestructureprefix [default] [prefixsegments=2:4] % I.A
 +
 +
\setupreferencestructureprefix [default] [prefixsegments=3:4] % I.A
 +
\setupreferencestructureprefix [default] [prefixsegments=4:4] % A
 +
\setupreferencestructureprefix [default] [prefixsegments=5:4] % nothing
 +
</texcode>
 +
 +
 +
==Adjusting the separator in between the referenced prefixes==
 +
 +
To adjust the separator between the different structure
 +
levels in the referencing commands, like <cmd>in</cmd>, the command
 +
<cmd>definestructureseparatorset</cmd> is used.
 +
 +
===Example===
 +
 +
To change the separator between chapter and section from a dot to a hyphen use
 +
<cmd>definestructureseparatorset</cmd> as follows.
 +
 +
<texcode>
 +
\definestructureseparatorset [default] [,,-]
 +
</texcode>
 +
 +
{{todo|Describe what the arguments of the commands do and how the commands work}}

Revision as of 11:17, 14 October 2011

< Structurals | Bibliography >

If you want to refer to any text element, you must first define the target's reference label. All titling commands and a lot of others take one as optional parameter, e.g.

\chapter[preface]{Dear Reader}

Then you can refer to this spot with

As I told you in \in{chapter}[preface] on \at{page}[preface], I really like ConTeXt...

That will typeset the text in braces and add the number of the refered element, e.g. "chapter 1 on page 1".

To define a reference label anywhere you can also use \pagereference[reference] and \textreference[reference]{text}. Everwhere where you can define one label, you can also define more at once, if you separate them with commas. It's also possible to use "namespaces" like [fig:cow].

If you activated interaction, references become links automatically.

Example

\chapter[preface]{Dear Reader}

\pagereference[zapfquote]\input zapf

\dots

As I told you in \in{chapter}[preface] on \at{page}[preface], I really like \ConTeXt.
And Mr.\,Zapf (see \at{page}[zapfquote]) at least likes \TeX\ in general.

Different layouts for different kinds of references

If you want less typing to get special formatting for the references to sections, equations, ... here's Aditya's recipe to do it.

Suppose that you want to get

See equation (2.3) or section 4.2.

where the slanted content is typeset automatically. You first need to define the formatting with \definereferenceformat:

\definereferenceformat[insec][text=section]
\definereferenceformat[ineq] [left=(,right=),text=equation]

Then you can simply type

See \ineq[eq:some equation] or \insec[sec:some section].

A more automated solution uses the following macro:

\def\myin[#1:#2]{%
  \expandafter\ifx\csname in#1\endcsname\relax
    \writestatus{warning}{referenceformat in#1 not defined}%
    \in[#1:#2]%
  \else
    \csname in#1\endcsname[#1:#2]%
  \fi}

and requires you to write the following code:

See \myin[eq:some equation] or \myin[sec:some section].

TODO: complete example would be better (See: To-Do List)



Adjusting the level of referenced prefixes

When the default chapter and section prefixes are used, the chapters are prefixed by a number, so are the sections. When referring to a section using the command \in{section}[sec:foo] the chapter number is prefixed following by a dot and the according section number.

However, some styles do not show the chapter prefix while displaying the sections. In this case the referencing commands, like \in just output the section number, which is of course ambiguous.

To fix this problem, the command \setupreferencestructureprefix can be incorporated to adjust the prefixes displayed by the referencing commands.

Example

Given that \start/stopchapter output Romannumerals prefixes (I, II, III, …) and \start/stopsection output Character prefixes (A,B, C, …), the following commands give the results provided in the comments.

\setupreferencestructureprefix [default] [prefixsegments=2:2] % nothing
\setupreferencestructureprefix [default] [prefixsegments=2:3] % I
\setupreferencestructureprefix [default] [prefixsegments=2:4] % I.A

\setupreferencestructureprefix [default] [prefixsegments=3:4] % I.A
\setupreferencestructureprefix [default] [prefixsegments=4:4] % A
\setupreferencestructureprefix [default] [prefixsegments=5:4] % nothing


Adjusting the separator in between the referenced prefixes

To adjust the separator between the different structure levels in the referencing commands, like \in, the command \definestructureseparatorset is used.

Example

To change the separator between chapter and section from a dot to a hyphen use \definestructureseparatorset as follows.

\definestructureseparatorset [default] [,,-]

TODO: Describe what the arguments of the commands do and how the commands work (See: To-Do List)