Index of /archives/text/CTAN/macros/latex/contrib/refenums
Name Last modified Size Description
Parent Directory -
LICENSE 2014-01-04 01:55 713
README 2014-01-04 01:55 3.5K
README.md 2014-01-04 01:55 3.5K
demo.tex 2014-01-04 01:55 3.1K
refenums.sty 2014-01-04 01:55 4.7K
README.pdf 2016-10-08 03:28 123K
demo.pdf 2016-10-08 03:28 81K
test/ 2016-10-08 03:54 -
# 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