#LyX 2.3 created this file. For more info see http://www.lyx.org/
\lyxformat 544
\begin_document
\begin_header
\save_transient_properties true
\origin unavailable
\textclass article
\begin_preamble
\usepackage{doc}
\usepackage{upquote}

\AtBeginDocument{%
	% LyX should add automatically `\usepackage{listings}` to the preamble...
	\lstset{%
		language=TeX,
		basicstyle=\footnotesize,
		numbers=left,
		stepnumber=1,
		showstringspaces=false,
		tabsize=1,
		breaklines=true,
		breakatwhitespace=false,
	}%
}
\end_preamble
\use_default_options false
\maintain_unincluded_children false
\language english
\language_package default
\inputencoding ascii
\fontencoding global
\font_roman "default" "default"
\font_sans "default" "default"
\font_typewriter "default" "default"
\font_math "auto" "auto"
\font_default_family default
\use_non_tex_fonts false
\font_sc false
\font_osf false
\font_sf_scale 100 100
\font_tt_scale 100 100
\use_microtype true
\use_dash_ligatures true
\graphics default
\default_output_format default
\output_sync 0
\bibtex_command default
\index_command default
\paperfontsize default
\spacing onehalf
\use_hyperref true
\pdf_title "The \\textquotedblleft{}Here Applies\\textquotedblright{} LaTeX Package"
\pdf_author "madmurphy"
\pdf_subject "Package documentation"
\pdf_keywords "Glossary, Index, LaTeX, LaTeX hyperref, LaTeX labels, LaTeX package, LyX, LyX module, TOC"
\pdf_bookmarks true
\pdf_bookmarksnumbered false
\pdf_bookmarksopen false
\pdf_bookmarksopenlevel 1
\pdf_breaklinks false
\pdf_pdfborder false
\pdf_colorlinks false
\pdf_backref false
\pdf_pdfusetitle false
\papersize a4paper
\use_geometry true
\use_package amsmath 1
\use_package amssymb 0
\use_package cancel 0
\use_package esint 1
\use_package mathdots 0
\use_package mathtools 0
\use_package mhchem 0
\use_package stackrel 0
\use_package stmaryrd 0
\use_package undertilde 0
\cite_engine basic
\cite_engine_type default
\biblio_style plain
\use_bibtopic false
\use_indices false
\paperorientation portrait
\suppress_date false
\justification true
\use_refstyle 0
\use_minted 0
\index Index
\shortcut idx
\color #008000
\end_index
\leftmargin 3.25cm
\topmargin 3.25cm
\rightmargin 3.25cm
\bottommargin 3.25cm
\secnumdepth 3
\tocdepth 3
\paragraph_separation indent
\paragraph_indentation default
\is_math_indent 0
\math_numbering_side default
\quotes_style english
\dynamic_quotes 0
\papercolumns 1
\papersides 1
\paperpagestyle default
\tracking_changes false
\output_changes false
\html_math_output 0
\html_css_as_file 0
\html_be_strict false
\end_header

\begin_body

\begin_layout Title
The 
\series bold
Here Applies
\series default
 \SpecialChar LaTeX
 Package
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Abstract
A \SpecialChar LaTeX
 package for referencing groups of pages that share something in common.
 
\end_layout

\begin_layout Standard
\begin_inset VSpace 2cm
\end_inset


\end_layout

\begin_layout Section
Overview
\end_layout

\begin_layout Standard

\series bold
Here Applies
\series default
 is a \SpecialChar LaTeX
 package that allows to collect groups of labels and reference them
 altogether.
 It can be used for creating informal glossaries that cross-link concepts
 to their applications, or simply mentioning multiple pages that share something
 in common.
\end_layout

\begin_layout Standard
The package offers two commands: 
\family typewriter

\backslash
hereapplies
\family default
 and 
\family typewriter

\backslash
whereapplies
\family default
 (plus their 
\begin_inset Quotes eld
\end_inset

starred
\begin_inset Quotes erd
\end_inset

 versions 
\family typewriter

\backslash
hereapplies*
\family default
 and 
\family typewriter

\backslash
whereapplies*
\family default
).
 In both cases an identifier is passed as argument, and this can be any
 string invented in the moment (
\family typewriter

\backslash
hereapplies
\family default
 additionally supports more than one identifier in the form of a comma-separated
 list).
\end_layout

\begin_layout Standard
Every time 
\family typewriter

\backslash
hereapplies
\family default
 is invoked with known identifiers, the document is made aware that the
 place shares some kind of connection with other places in which the same
 identifiers were used.
 And so, every time the 
\family typewriter

\backslash
whereapplies
\family default
 command is invoked with a known identifier, all occurrences of the latter
 within the entire document will be printed in the form of a linkable page
 list (e.g.
 
\begin_inset Quotes eld
\end_inset

pp.
\begin_inset space \space{}
\end_inset

1, 5, 8–9, 14–20…
\begin_inset Quotes erd
\end_inset

).
\end_layout

\begin_layout Standard
As 
\family typewriter

\backslash
hereapplies
\family default
 is designed to be invoked in the middle of a chapter or a section and that
 location must be made linkable, the 
\family typewriter

\backslash
phantomsection
\family default
 directive is invoked by default before a label is added.
 To avoid calling 
\family typewriter

\backslash
phantomsection
\family default
, the 
\begin_inset Quotes eld
\end_inset

starred
\begin_inset Quotes erd
\end_inset

 command 
\family typewriter

\backslash
hereapplies*
\family default
 is available.
\end_layout

\begin_layout Standard
Finally, like 
\family typewriter

\backslash
whereapplies
\family default
 resembles a pluralizable version of 
\family typewriter

\backslash
pageref
\family default
, its 
\begin_inset Quotes eld
\end_inset

starred
\begin_inset Quotes erd
\end_inset

 version 
\family typewriter

\backslash
whereapplies*
\family default
 will resemble a pluralizable version of 
\family typewriter

\backslash
pageref*
\family default
.
\end_layout

\begin_layout Standard
If you use LyX, the package ships a LyX module as well (please check the
 
\family typewriter
lyx-module
\family default
 subdirectory).
\end_layout

\begin_layout Standard
\begin_inset Newpage pagebreak
\end_inset


\end_layout

\begin_layout Section
Example usage
\end_layout

\begin_layout Standard
The following \SpecialChar LaTeX
 manuscript
\end_layout

\begin_layout Standard
\begin_inset VSpace 3ex
\end_inset


\end_layout

\begin_layout Standard
\begin_inset CommandInset include
LatexCommand lstinputlisting
filename "hereapplies-example.tex"
lstparams "language=TeX"

\end_inset


\end_layout

\begin_layout Standard
\begin_inset VSpace 3ex
\end_inset


\end_layout

\begin_layout Standard
\noindent
will generate the 
\begin_inset Flex URL
status collapsed

\begin_layout Plain Layout

hereapplies-example.pdf
\end_layout

\end_inset

 document attached.
\end_layout

\begin_layout Section
A minimal tutorial
\end_layout

\begin_layout Standard
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
begin{macro}{
\backslash
hereapplies}
\end_layout

\end_inset


\end_layout

\begin_layout Standard
Syntax:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard

\family typewriter

\backslash
hereapplies
\begin_inset space \enskip{}
\end_inset

[
\begin_inset Formula $\langle$
\end_inset


\shape italic
label
\shape default

\begin_inset Formula $\rangle$
\end_inset

]
\begin_inset space \enskip{}
\end_inset

{
\begin_inset Formula $\langle$
\end_inset


\shape italic
identifiers
\shape default

\begin_inset Formula $\rangle$
\end_inset

}
\end_layout

\begin_layout Standard

\family typewriter

\backslash
hereapplies*
\begin_inset space \enskip{}
\end_inset

[
\begin_inset Formula $\langle$
\end_inset


\shape italic
label
\shape default

\begin_inset Formula $\rangle$
\end_inset

]
\begin_inset space \enskip{}
\end_inset

{
\begin_inset Formula $\langle$
\end_inset


\shape italic
identifiers
\shape default

\begin_inset Formula $\rangle$
\end_inset

}
\end_layout

\begin_layout Standard
\noindent
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\noindent
The 
\family typewriter

\backslash
hereapplies
\family default
 command notifies the document that one or more identifiers apply to a particula
r point and adds a label to it.
\end_layout

\begin_layout Standard
If the optional argument is passed the label created will be named accordingly,
 otherwise an opaque name will be chosen for it.
 This argument may contain only what is legal for 
\family typewriter

\backslash
pageref
\family default
.
\end_layout

\begin_layout Standard
The 
\family typewriter
\shape italic
identifiers
\family default
\shape default
 argument must be a comma-separated list of identifiers (leading and trailing
 spaces around each member will be ignored).
 Each of these strings will remain confined within the internal scope of
 the package and will not create conflicts with possible macros or labels
 of the same names.
\end_layout

\begin_layout Standard
After storing some internal values, 
\family typewriter

\backslash
hereapplies
\family default
 will expand exactly to
\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "language=TeX,numbers=none"
inline false
status open

\begin_layout Plain Layout


\backslash
phantomsection
\backslash
label{...}
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
Its 
\begin_inset Quotes eld
\end_inset

starred
\begin_inset Quotes erd
\end_inset

 version (
\family typewriter

\backslash
hereapplies*
\family default
) will not invoke the 
\family typewriter

\backslash
phantomsection
\family default
 directive.
\end_layout

\begin_layout Standard
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
end{macro}
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
begin{macro}{
\backslash
whereapplies}
\end_layout

\end_inset


\end_layout

\begin_layout Standard
Syntax:
\end_layout

\begin_layout Standard
\begin_inset VSpace bigskip
\end_inset


\end_layout

\begin_layout Standard

\family typewriter

\backslash
whereapplies
\begin_inset space \enskip{}
\end_inset

{
\begin_inset Formula $\langle$
\end_inset


\shape italic
identifier
\shape default

\begin_inset Formula $\rangle$
\end_inset

}
\end_layout

\begin_layout Standard

\family typewriter

\backslash
whereapplies*
\begin_inset space \enskip{}
\end_inset

{
\begin_inset Formula $\langle$
\end_inset


\shape italic
identifier
\shape default

\begin_inset Formula $\rangle$
\end_inset

}
\end_layout

\begin_layout Standard
\noindent
\begin_inset VSpace smallskip
\end_inset


\end_layout

\begin_layout Standard
\noindent
The 
\family typewriter

\backslash
whereapplies
\family default
 command prints all the occurrences of an identifier, in the form 
\begin_inset Quotes eld
\end_inset

p.
\begin_inset space \space{}
\end_inset

…
\begin_inset Quotes erd
\end_inset

 or 
\begin_inset Quotes eld
\end_inset

pp.
\begin_inset space \space{}
\end_inset

…
\begin_inset Quotes erd
\end_inset

 (with page range support).
\end_layout

\begin_layout Standard
The 
\family typewriter
\shape italic
identifier
\family default
\shape default
 argument will remain confined within the internal scope of the package
 and will not create conflicts with possible commands or labels of the same
 name.
 Leading and trailing spaces around this string will be ignored.
\end_layout

\begin_layout Standard
If the same 
\family typewriter
\shape italic
identifier
\family default
\shape default
 is not passed to 
\family typewriter

\backslash
hereapplies
\family default
 at least once throughout the document, 
\family typewriter

\backslash
whereapplies
\family default
 will print 
\begin_inset Quotes eld
\end_inset


\series bold
??
\series default

\begin_inset Quotes erd
\end_inset

.
\end_layout

\begin_layout Standard
The 
\begin_inset Quotes eld
\end_inset

starred
\begin_inset Quotes erd
\end_inset

 version of this command (
\family typewriter

\backslash
whereapplies*
\family default
) will use 
\family typewriter

\backslash
pageref*
\family default
 instead of 
\family typewriter

\backslash
pageref
\family default
 for generating the page list.
\end_layout

\begin_layout Standard
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
end{macro}
\end_layout

\end_inset


\end_layout

\begin_layout Section
Internationalization
\end_layout

\begin_layout Standard
Currently the localization of 
\series bold
Here Applies
\series default
 is not automatic.
 It is possible however to control the strings generated by overwriting
 the four macros 
\family typewriter

\backslash
hapage
\family default
, 
\family typewriter

\backslash
hapages
\family default
, 
\family typewriter

\backslash
hadelimiter
\family default
 and 
\family typewriter

\backslash
halastdelimiter
\family default
.
 For example, writing at the beginning of a document
\end_layout

\begin_layout Standard
\begin_inset VSpace 3ex
\end_inset


\end_layout

\begin_layout Standard
\begin_inset listings
lstparams "language=TeX"
inline false
status open

\begin_layout Plain Layout

% German translation of **Here Applies**
\end_layout

\begin_layout Plain Layout

% English: "p.
\backslash
 "
\end_layout

\begin_layout Plain Layout


\backslash
gdef
\backslash
hapage{S.
\backslash
 }
\end_layout

\begin_layout Plain Layout

% English: "pp.
\backslash
 "
\end_layout

\begin_layout Plain Layout


\backslash
gdef
\backslash
hapages{S.
\backslash
 }
\end_layout

\begin_layout Plain Layout

% English: "
\backslash
 and
\backslash
 "
\end_layout

\begin_layout Plain Layout


\backslash
gdef
\backslash
halastdelimiter{
\backslash
 und
\backslash
 }
\end_layout

\begin_layout Plain Layout

% English: ",
\backslash
 " (exactly like in German -- leave it)
\end_layout

\begin_layout Plain Layout

%
\backslash
gdef
\backslash
hadelimiter{,
\backslash
 }
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset VSpace 3ex
\end_inset


\end_layout

\begin_layout Standard
\noindent
will translate 
\begin_inset Quotes eld
\end_inset

pp.
\begin_inset space \space{}
\end_inset

2, 4 and 6
\begin_inset Quotes erd
\end_inset

 into 
\begin_inset Quotes eld
\end_inset

S.
\begin_inset space \space{}
\end_inset

2, 4 und 6
\begin_inset Quotes erd
\end_inset

.
\end_layout

\begin_layout Section
Get involved
\end_layout

\begin_layout Standard
If you wish to get involved, please do not hesitate to send 
\begin_inset CommandInset href
LatexCommand href
name "merge requests"
target "https://github.com/madmurphy/hereapplies.sty/pulls"
literal "false"

\end_inset

 or participate in the discussion.
 The package is also 
\begin_inset CommandInset href
LatexCommand href
name "available on \\textbf{CTAN}"
target "https://www.ctan.org/pkg/hereapplies"
literal "true"

\end_inset

 under 
\begin_inset CommandInset href
LatexCommand href
name "\\texttt{macros/latex/contrib/hereapplies/}"
target "https://www.ctan.org/tex-archive/macros/latex/contrib/hereapplies/"
literal "true"

\end_inset

.
 For any issue, please 
\begin_inset CommandInset href
LatexCommand href
name "drop a message"
target "https://github.com/madmurphy/hereapplies.sty/issues"
literal "false"

\end_inset

.
\end_layout

\begin_layout Section
Free software
\end_layout

\begin_layout Standard

\series bold
Here Applies
\series default
 is free software.
 You can redistribute it and/or modify it under the terms of the 
\series bold
AGPL
\series default
 license version 3 or any later version.
 See 
\begin_inset Flex URL
status collapsed

\begin_layout Plain Layout

COPYING
\end_layout

\end_inset

 for details.
\end_layout

\begin_layout Standard
\begin_inset Newpage newpage
\end_inset


\end_layout

\begin_layout Section*
Code appendix
\end_layout

\begin_layout Standard
\begin_inset ERT
status collapsed

\begin_layout Plain Layout


\backslash
addcontentsline{toc}{section}{Code appendix}
\end_layout

\end_inset


\end_layout

\begin_layout Standard
\begin_inset CommandInset include
LatexCommand lstinputlisting
filename "hereapplies.sty"
lstparams "language=TeX"

\end_inset


\end_layout

\end_body
\end_document
