% % cite.ltx Manual for cite.sty % % % Copyright (c) 1989-2010 by Donald Arseneau % % Version date (Sep 2010) % \documentclass[12pt,a4paper]{ltxdoc} %\overfullrule=1pt \addtolength{\textwidth}{1cm} \MakeShortVerb{\"} \hyphenpenalty=600 \newcommand\snugger{\vspace{-7pt}} \sloppy \setlength\parskip{2pt} \title{The cite package:\\ well formed numeric citations} \author{Donald Arseneau\\ asnd@triumf.ca} \date{2010/09/10} \begin{document} \maketitle \begin{abstract} The cite package modifies \LaTeX's normal citation mechanism for improved handling of numeric citations. It provides compressed, sorted lists of numerical or partly-numerical citations, as regular text or superscripts. Generally, no changes to the usage of \cs{cite} commands is required. \end{abstract} \begin{footnotesize} \noindent The cite package is Copyright \copyright\ 1989--2010 by Donald Arseneau (Vancouver, Canada).\\ The package (cite.sty) and this documentation (cite.ltx,cite.pdf) may be freely transmitted, reproduced, or modified for any purpose provided that the copyright notice is left intact. (Small excerpts may of course be taken and used without any restriction.) \par \end{footnotesize} \section*{Normal Use} Insert "\usepackage{cite}" in the document's preamble for improved handling of numeric citations, behaving as follows: \snugger\paragraph*{Spacing} Put a comma and a small space between each citation number. The option [nospace] removes that space, and the option [space] replaces it with an ordinary inter-word space. \snugger\paragraph*{Compress groups} Compress lists of three or more consecutive numbers to one number range which can be split, with difficulty, after the dash. All numbers should be greater than zero. E.g., if you used to get the (nonsense) list [7,5,6,?,4,9,8,Einstein,6], then this style will give [?,Einstein,4--6,6--9]. Compression of ranges is disabled by the [nocompress] package option. \snugger\paragraph*{Sorting} Sort citations into ascending order (this is the default, but may also be declared with the package option [sort]). The [nosort] package option turns off sorting. Sortable citations must fit one of these forms: \begin{enumerate}\itemsep=-\parsep \item \meta{number} \item \meta{optional-char}\meta{number}\meta{optional-char} \item \meta{number}\meta{separator-char}\meta{number} \end{enumerate} Forms 1 and 2 are really the same, and they mix well, but form 3 is different, so it can't be mixed with the other forms (not that you would want to). Non-sortable forms (those not listed) are printed before all sortable forms. Here \meta{number} means a positive integer (natural number) less than some limit (different for each form), \meta{optional-char} is a single printable character (or nothing), and \meta{separator-char} is also a single printable character. \snugger\paragraph*{Prefix/suffix letters} Sort citations with prefix and/or suffix characters (form~2) such that different prefixes are grouped separately, and suffixes form sub-lists for the same number. Compression knows about suffixes, so you can get lists like [18a--18c,19] or [A2,Q1,Q3--Q5]. \snugger\paragraph*{Numbers alone} The command "\citen" is provided to give just the citation numbers without the brackets or superscript and other formatting. Aliases are "\citenum" and "\citeonline" for easy conversion to other citation packages. \snugger\paragraph*{Breaks} Allow, but discourage, line breaks within the group of citations (after dashes, and after punctuation). Penalties are "\citepunctpenalty" and "\citemidpenalty". \snugger\paragraph*{Breaks and spaces before} Allow but strongly discourage line-breaks before the entire citation, provided it is a regular text cite (not superscript) and no different penalty was specified there (thus, "~\cite{X}" will not permit a line break). Also, adjust the spacing: if there is no space or if there is extra space due to some punctuation, then change to one inter-word space; e.g., "A space will be inserted here\cite{Larry,Curly,Moe}". \snugger\paragraph*{Prohibiting breaks} All breaks can be forbidden with the [nobreak] package option. Allowance of any type of line break can be adjusted independently by setting the parameters "\citeprepenalty", "\citemidpenalty", and "\citepunctpenalty" (see Customization below). \snugger\paragraph*{Superscript} With package option [superscript] (or [super] for short), display citation numbers as superscripts. But if the citation has an optional note, it is printed on-line with brackets. Superscripted citations follow these additional rules: \begin{itemize} \setlength\itemsep{0pt} \item Superscript citations use \emph{the same input format} as ordinary citations to produce different output. Blank space before the |\cite| command is discarded, and trailing punctuation is moved to come before the superscript citation. For example, `"information \cite{source};"' ignores the space before "\cite" and puts the semicolon before the number to give `information;$^{12}$\,', just as if you typed `"information;$^{12}$"'. You may disable movement with the [nomove] package option. \item The punctuation characters that will migrate before the superscript are listed in the macro "\CiteMoveChars", which you can redefine (using "\renewcommand"). The default set of characters is ".,;:"; Perhaps "!"~and~"?" should be included too, but they weren't listed in the APS style manual I looked at, and I agree with that design choice because they put too much visual separation between the cite and what it applies to. Feel free to redefine "\CiteMoveChars". Quotes were listed as coming before the cite notation, but they should be typed before the "\cite" command in any case because both on-line and superscript cites come after what is quoted (when citing a quotation). This gives one difficulty~-- punctuation following quotes won't migrate inside the quotation: e.g., "``Transition State Theory''\cite{Eyring}." gives out ``Transition State Theory''.$^8$, but you may want the period inside the quotes, thus: ``Transition State Theory.''$^8$. \item Doubling of periods (.., ?., !.) is checked for and suppressed. The spacing after the citation is set according to the final punctuation mark moved. There is a problem with double periods after a capitalized abbreviation or directly after "\@" : Both of `"N.S.A. \cite{space}."' and `"et al.\@ \cite{many}."' will give doubled periods. Type `"\ "' (backslash space) after abbreviations like `et al.' ("et al.\ \cite{many}.") to get the right spacing within a sentence whether or not a citation follows, and prevent double periods with the superscript cite. You could use "\@" to fix the N.S.A. example ("N.S.A\@. \cite{space}.") but that gives the wrong spacing when there is no citation, so it should be inserted only where a cite follows. \item Remember, these rules regarding punctuation only apply when the [super] or [superscript] option was given (or overcite.sty used) and the [nomove] option was \emph{not} given. \end{itemize} \section*{Customization} There are several options for "\usepackage{cite}", some already mentioned. \begin{center} \begin{tabular}{lp{0.75\linewidth}} [superscript]& use superscripts for cites without optional notes\\\relax [super] & alias for [superscript] (like natbib)\\\relax [ref] & uses the format "[Ref.~12, given note]" (useful with the superscript option)\\\relax [nospace] & eliminates the spaces after commas in the number list\\\relax [space] & uses a full inter-word space after the commas\\\relax [nobreak] & eliminate all line-breaks\\\relax [nosort] & prevents sorting of the numbers (default is to sort, and the\dots\\\relax [sort] & option is provided for completeness).\\\relax [nomove] & prevents moving the superscript cite after punctuation\\\relax [move] & is the default\\\relax [noadjust] & disables `smart' handling of space before a cite\\\relax [adjust] & is the default\\\relax [nocompress] & inhibit compression of consecutive numbers into ranges\\\relax [compress] & is the default\\\relax [biblabel] & define the bibliography label as a superscript \end{tabular} \end{center} If your citations are not numeric, and not of any near-numeric sortable form, then you should probably not use cite.sty; but if you must, then at least use the [nosort,nocompress] options. There are several commands that you may redefine to change the formatting of citation lists: \begin{center} \begin{tabular}{@{}lll@{}} command & function & default\\ \hline \cs{citeform} & reformats each number & nothing\\ \cs{citepunct} & printed between numbers & comma, penalty, thin space\\ \cs{citeleft} & left delimiter of list & [\\ \cs{citeright} & right delimeter of list & ]\\ \cs{citemid} & printed before note & comma, penalty, space\\ \cs{citedash} & used in compressed range & endash, penalty\\ \cs{CiteMoveChars} & characters that move & \texttt{.,:;}\\ \cs{OverciteFont} & font sel. for superscripts & \relax"\fontsize{\sf@size}"\dots\\ \end{tabular} \end{center} The left/mid/right commands don't affect the formatting of superscript citations. You may use "\renewcommand" to change any of these. Remember, these commands are extensions made by this package; they are not regular LaTeX. Some examples of changes: \begin{flushleft} "\renewcommand\citeform[1]{\romannumeral 0#1}}" $\to$ roman i,vi\\ "\renewcommand\citeform[1]{(#1)}" $\to$ parentheses (1)--(5),(9)\\ "\renewcommand\citeform{\thechapter.}" $\to$ by chapter: \textsuperscript{2.18--2.21}\\ "\renewcommand\citepunct{,}" $\to$ no space and no breaks at commas\\ "\renewcommand\citemid{; }" $\to$ semicolon before optional note\\ "\renewcommand\citeleft{(}" $\to$ parentheses around whole\\ "\renewcommand\citeright{)}" $\to$ parentheses around whole list\\ \end{flushleft} The appearance of the whole citation list is governed by "\@cite", (for full-sized cites) and "\@citess" (for superscripts). For more extensive changes to the formatting, redefine these. For example, to get brackets around the list of superscript numbers you can do:\\[2pt] \indent "\renewcommand\@citess[1]{\textsuperscript{[#1]}}"\\[2pt] (after "\makeatletter"). Related Note: The superscript option does not affect the numbering format of the bibliography; the "[12]" style is still the default. To get superscripts in the bibliography (at any time) you can define\\[2pt] \indent "\renewcommand\@biblabel[1]{\textsuperscript{#1}}"\\[2pt] Aw, OK, for your convenience, there is the [biblabel] package option that just performs this definition (sort of). Line breaking can be turned off using the [nobreak] option. It can be controlled more precisely by changing three numeric values for the line-break penalties: \begin{center} \begin{tabular}{lll} Command & Location & Default \\ \hline \cs{citeprepenalty} & before entire cite & "\@highpenalty"\\ \cs{citemidpenalty} & used in "\citemid" & "\@medpenalty"\\ \cs{citepunctpenalty}& used in "\citepunct" & 1000 \end{tabular} \end{center} Use "\mathchardef" to change these penalty values! E.g., \\ \indent "\mathchardef\citeprepenalty=9999"\\ (Yes, that is obscure but I don't want to use up counters or to pretend they are counters.) Alternatively, the commands "\citemid", "\citedash", and "\citepunct" can be redefined to use different penalty parameters, or none at all. \end{document}