Menu
CTAN
Comprehensive TeX Archive Network
Cover Upload Browse Search

Direc­tory tex-archive/macros/latex/contrib/refenums

# refenums - ReferenceableEnumElements

Define named items and provide back-references with that name

This package provides commands to define enumerable items with a number and a long name, which can be referenced referenced later with the name or just the short form.
For instance, "Milestone M1: Specification created" can be defined and later on be referenced with `M1` or `M1 ("Specification created")`.
The text in the references is derived from the definition and also rendered as hyperlink to the definition.
Thus, a change of the definition also leads to a change of all references to the text.
This ensures consistency in the text.

## Usage

```
\usepackage{refenums}
```

Load the package after all packages (hyperref, cleveref, ...).
For best results, use the `nameinlink` option at cleveref.
The option `capitalise` is also useful if you use cleveref's `\cref` command, therefore we recommend loading `cleveref` before `refenums` with follwing line:
`\usepackage[capitalise,nameinlink]{cleveref}`


### Define the "Referenceable Enum Environment"

Decide for `<EnumId>`.
E.g., `req`.

#### Initialize
`\setupRefEnums{<EnumId>}{<PrintName>}`

In case `<PrintName>` is set to `ONLYSHORT`, only the short name is used.

Optional parameter: Separator between `<EnumId>` and number.

#### (Optional) Define shorthand macro to define the macros for referencing

`\newcommand{\def<EnumId>}[2]{\defRefEnum{<EnumId>}{#1}{#2}}`


### Usage in the text

#### Define a single enum
* `\defRefEnum{<EnumId>}{<FullName>}{<LabelId>}` (always supported)
* `\def<EnumId>{<FullName>}{<LabelId>}` (when the shorthand command is defined)

#### Define a single enum using the inline format
`\defineReferenceableEnumElementInline{<EnumId>}{<FullName>}{<LabelId>}`.
Using this, a enumeration similar to the ones of the `inparaenum` environment is possible.
`inparaenum` is offered by the [paralist package].

#### Referencing
 
* `\refEnumFull{<EnumId>}{<LabelId>}` = `<EnumId>-<Counter> ("<FullName>")`, e.g. `R-1 ("Quality")`
* `\refEnumFullP{<EnumId>}{<LabelId>}` is the long form for `\refEnumFull'.
* `\refEnumFullT{<EnumId>}{<LabelId>}` = `<EnumId>-<Counter>: "<FullName>"`, e.g. `R-1: "Quality"`
* `\refEnum{<EnumId>}{<LabelId>}` = `<EnumId>-<Counter>`, e.g. `R-1`
* References to the label
  * `\nameref{enum:<EnumId>:<LabelId>}` = `<FullName>`
  * `\ref{enum:<EnumId>:<LabelId>}` = `<Counter>`, e.g. `1`

 
## Example

**Initialize**: `\setupRefEnums{R}{Requirement}`

**Define a single enum**: `\defRefEnum{R}{Quality}{qual}`.
When you want to put the element in a section, use the optional parameter:
`\defRefEnum[section]{R}{Quality}{qual}`

**Referencing**:

* Reference only Name + Number: `\refEnum{R}{qual}`
* Full reference with the print name in brackets: `\refEnumFull{R}{qual}`
* Full reference with the print name appended after ":": `\refEnumFullT{R}{qual}`

**See also** [demo.tex](demo.tex).


## Tuning

When defining a referenceable element, this element is enclosed using `\refenumenclosing` for normal enums and `\refenumenclosinginline` for inline enums.
These commands can be redefined after package usage.

## TODO

* The decision to put the enum in a section should be taken at `\setupRefEnums` not at `\defRefEnum`.
* Enable automatically generating `\def<EnumId>` at `\setupRefEnums` via a package parameter.


## Source code

The latest source code is available at https://github.com/koppor/refenums

## Files

* [refenums.sty](refenums.sty): the package
* [demo.tex](demo.tex): small demonstration

  [paralist]: www.ctan.org/pkg/paralist

Direc­to­ries

Name Notes
test

Files

Name Size Date Notes
LICENSE 713 2014-01-03 05:55
3566 2014-01-03 05:55 ==> /macros/la­tex/con­trib/refenums/README.md
README.md 3566 2014-01-03 05:55
demo.pdf 82477 2014-01-03 05:57
demo.tex 3165 2014-01-03 05:55
refenums.sty 4798 2014-01-03 05:55

Down­load the con­tents of this pack­age in one zip archive (75.0k).

refenums – De­fine ref­er­ence la­bels items with names of their own

The pack­age pro­vides com­mands to de­fine enu­mer­able items with a num­ber and a long name, which can be ref­er­enced ref­er­enced later with the name or just the short form. For in­stance, “Mile­stone M1: Spec­i­fi­ca­tion cre­ated” can be de­fined and later on be ref­er­enced with ‘M1’ or ‘M1 (“Spec­i­fi­ca­tion cre­ated”)’. The text in the ref­er­ences is de­rived from the def­i­ni­tion and also ren­dered as hy­per­link to the def­i­ni­tion.

Pack­age De­tailsrefenums
Home pagehttps://github.com/kop­por/refenums
Ver­sion1.1.1 2014-01-03
Li­censeThe LaTeX Project Public Li­cense 1.3
Copy­right2013 Oliver Kopp, To­bias Binz
Main­tainerOliver Kopp
Con­tained inTeXlive as refenums
MikTeX as refenums
Topics la­bel and ref­er­ence sys­tems
Guest Book Sitemap Contact