summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/mciteplus/mciteplus_doc.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/mciteplus/mciteplus_doc.tex')
-rw-r--r--macros/latex/contrib/mciteplus/mciteplus_doc.tex2319
1 files changed, 2319 insertions, 0 deletions
diff --git a/macros/latex/contrib/mciteplus/mciteplus_doc.tex b/macros/latex/contrib/mciteplus/mciteplus_doc.tex
new file mode 100644
index 0000000000..eca5be36c8
--- /dev/null
+++ b/macros/latex/contrib/mciteplus/mciteplus_doc.tex
@@ -0,0 +1,2319 @@
+%% mciteplus_doc.tex
+%% V1.2
+%% 2013/09/13
+%% Copyright (c) 2008 by Michael Shell
+%% See:
+%% http://www.michaelshell.org/
+%% for current contact information.
+%%
+%% This is the documentation for the mciteplus.sty package.
+%%
+%% Support sites:
+%% http://www.michaelshell.org/tex/mciteplus/
+%% http://www.ctan.org/tex-archive/macros/latex/contrib/mciteplus/
+%%
+%%*************************************************************************
+%% Legal Notice:
+%% This code is offered as-is without any warranty either expressed or
+%% implied; without even the implied warranty of MERCHANTABILITY or
+%% FITNESS FOR A PARTICULAR PURPOSE!
+%% User assumes all risk.
+%% In no event shall IEEE or any contributor to this code be liable for
+%% any damages or losses, including, but not limited to, incidental,
+%% consequential, or any other damages, resulting from the use or misuse
+%% of any information contained here.
+%%
+%% All comments are the opinions of their respective authors and are not
+%% necessarily endorsed by the IEEE.
+%%
+%% This work is distributed under the LaTeX Project Public License (LPPL)
+%% ( http://www.latex-project.org/ ) version 1.3, and may be freely used,
+%% distributed and modified. A copy of the LPPL, version 1.3, is included
+%% in the base LaTeX documentation of all distributions of LaTeX released
+%% 2003/12/01 or later.
+%% Retain all contribution notices and credits.
+%% ** Modified files should be clearly indicated as such, including **
+%% ** renaming them and changing author support contact information. **
+%%
+%% File list of work: mciteplus.sty, mciteplus_doc.pdf, mciteplus_doc.tex,
+%% mciteplus_code.txt, apsrevM.bst, apsrmpM.bst,
+%% IEEEtranM.bst, IEEEtranMN.bst
+%%*************************************************************************
+
+\documentclass[10pt,letterpaper]{article}
+
+
+% tweak article.cls
+\makeatletter
+
+\newcommand\tableofcontentssectiononly{%
+ \section*{\contentsname
+ \@mkboth{%
+ \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}}
+\newcommand\tableofcontentsstarttoc{\@starttoc{toc}}
+
+
+\def\@maketitle{%
+ \newpage
+ \null
+ \vspace{-3em}%
+ \begin{center}%
+ \let \footnote \thanks
+ {\LARGE \@title \par}%
+ \vskip 1em%
+ {\large
+ \lineskip .5em%
+ \begin{tabular}[t]{c}%
+ \@author
+ \end{tabular}\par}%
+ \vskip 1em%
+ {\large \@date}%
+ \end{center}
+ \par
+ \vskip 1em}
+
+\makeatother
+
+
+
+\usepackage{multicol}
+
+
+
+\parskip 1ex plus 1ex minus 0.75ex
+
+\parindent 1.0em
+
+\topmargin -49.0pt
+\headheight 12pt
+\headsep 0.25in
+\footskip 0.4in
+
+% want 1in margins
+\setlength{\topmargin}{-\headsep}%
+\addtolength{\topmargin}{-\headheight}%
+% we want 1in side margins regardless of paper type
+\oddsidemargin 0in
+\evensidemargin 0in
+% set the text width
+\setlength{\textwidth}{\paperwidth}%
+\addtolength{\textwidth}{-2.0in}%
+\setlength{\textheight}{\paperheight}%
+\addtolength{\textheight}{-2.0in}%
+% digitize textheight to be an integer number of lines.
+% this may cause the bottom margin to be off a tad
+\addtolength{\textheight}{-1\topskip}%
+\divide\textheight by \baselineskip%
+\multiply\textheight by \baselineskip%
+\addtolength{\textheight}{\topskip}%
+
+
+\newcommand{\MYdocversion}{1.1}
+
+\usepackage{type1ec}
+%\usepackage{type1cm}
+\usepackage[T1]{fontenc}
+
+\usepackage{ifpdf}
+\usepackage{notoccite}
+
+%\usepackage[retainorgcmds]{IEEEtrantools}
+% use roman url style
+\usepackage{url}
+
+\csname url@rmstyle\endcsname
+\ifpdf
+ \usepackage[pdftex]{graphicx}
+ \graphicspath{{.}}
+ \DeclareGraphicsExtensions{.pdf}
+\else
+ \usepackage[dvips]{graphicx}
+ \graphicspath{{.}}
+ \DeclareGraphicsExtensions{.eps}
+\fi
+
+\ifpdf
+ \usepackage[pdftex]{thumbpdf}
+\else
+ \usepackage[dvips]{thumbpdf}
+\fi
+
+\newcommand\MYhyperrefoptions{hypertexnames=false,bookmarks=true,
+bookmarksnumbered=true, pdfpagemode={UseOutlines},plainpages=false,
+pdfpagelabels=true,colorlinks=true,linkcolor={darkred},
+citecolor={darkgreen},urlcolor={darkblue},
+pdftitle={Mciteplus: Enhanced Multicitations},
+pdfsubject={Typesetting},
+pdfauthor={Michael D. Shell},
+pdfkeywords={bibliography, BibTeX, collapsed entries, LaTeX, mcite,
+mciteplus, multicitations, physics journals, references, typesetting}}
+\ifpdf
+ \usepackage[\MYhyperrefoptions,pdftex]{hyperref}
+\else
+ \usepackage[\MYhyperrefoptions,dvips]{hyperref}
+ \usepackage{breakurl}
+\fi
+
+\usepackage{color}
+\definecolor{darkred}{rgb}{0.8,0.0,0.0}
+\definecolor{darkgreen}{rgb}{0.0,0.5,0.0}
+\definecolor{darkblue}{rgb}{0.0,0.0,0.7}
+
+
+\providecommand{\texorpdfstring}[2]{#1}
+
+
+% Improved \textunderscore to provide a much better fake _ when used with
+% OT1 encoding. Under OT1, detect use of pcr or cmtt \ttfamily and use
+% available true _ glyph for those two typewriter fonts.
+\makeatletter
+\def\@MYstringptm{ptm} % Times Roman family
+\def\@MYstringppl{ppl} % Palatino Roman family
+\def\@MYstringphv{phv} % Helvetica Sans Serif family
+\def\@MYstringpcr{pcr} % Courier typewriter family
+\def\@MYstringcmtt{cmtt} % Computer Modern typewriter family
+\DeclareTextCommandDefault{\textunderscore}{\leavevmode
+\ifx\f@family\@MYstringpcr\string_\else
+\ifx\f@family\@MYstringcmtt\string_\else
+\ifx\f@family\@MYstringptm\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else
+\ifx\f@family\@MYstringppl\kern 0em\vbox{\hrule\@width 0.5em\@height 0.5pt\kern -0.3ex}\else
+\ifx\f@family\@MYstringphv\kern -0.03em\vbox{\hrule\@width 0.62em\@height 0.52pt\kern -0.33ex}\kern -0.03em\else
+\kern 0.09em\vbox{\hrule\@width 0.6em\@height 0.44pt\kern -0.63pt\kern -0.42ex}\kern 0.09em\fi\fi\fi\fi\fi\relax}
+\makeatother
+
+\makeatletter
+\def\bstctlcite{\@ifnextchar[{\@bstctlcite}{\@bstctlcite[@auxout]}}
+\def\@bstctlcite[#1]#2{\@bsphack
+ \@for\@citeb:=#2\do{%
+ \edef\@citeb{\expandafter\@firstofone\@citeb}%
+ \if@filesw\immediate\write\csname #1\endcsname{\string\citation{\@citeb}}\fi}%
+ \@esphack}
+\makeatother
+
+\makeatletter
+%% ***** Start ZAX defs *****
+%% based on unreleased zax.sty, not ready yet for formal use
+%% V0.9
+%% 2005/05/02
+%% Copyright (c) 2005 by Michael Shell
+%% see http://www.michaelshell.org/contact.html
+%% for current contact information.
+%
+%
+% Showing LaTeX source code poses some difficulties. I probably could have
+% done things with \verbatim. But, I don't like it for a number of reasons.
+% For me, the main drawbacks are:
+%
+% 1. hyphenates words
+% 2. does not perfectly left and right justify the \ttfamily text
+% 3. does not allow the use of active LaTeX commands within the displayed
+% code
+%
+% Basically, I wanted a little more control.
+%
+% So, I developed a set of commands that will display LaTeX code.
+% The \ZAXlong and \ZAXshort commands allow the direct
+% display of LaTeX commands. The difference between the two is that
+% \ZAXlong will retain spaces and allows the inter-letter spacing
+% to expand slightly so that the text will always be justified while
+% \ZAXshort ignores spaces and uses no inter-letter space.
+% Variations of these two can be created by the user to provide
+% fo different font sizes and styles.
+%
+% When one of these commands is issued:
+%
+% | becomes the control character: |relax
+% ( use |ZAXbar to get a | character)
+%
+% { } becomes like punctuation
+% (use |bgroup and |egroup instead)
+%
+% + prevents a break between the characters it appears between
+% (use |ZAXplus to get a + character)
+%
+% ~ nonbreaking spaces become visible tildes
+%
+% breaks are not allowed right after a "\" or a space
+%
+% For the long form, since normal spaces are not ignored:
+% & becomes an (ignored) space character for use after commands.
+% e.g., " |mbox|bgroup&Unbro|egroup&ken and "
+%
+% to stop the action of a \ZAX command, issue an |end.
+%
+% The trick is to read all the input characters and to insert a "sliver"
+% of hspace glue between them! TeX will be happy to make a break at any
+% glue, and it will never hyphenate at the break. With the long form,
+% this interletter glue is also allowed to stretch a very small amount -
+% because a long sequence could stretch across the entire column without
+% any spaces to break on.
+% When real spaces are encountered, we replace them with \hspace* commands
+% of the same nominal length, but that can stretch and shrink a fair
+% amount. The \hspace* form ensures that the space will not be lost
+% at the start/end of the lines. By using \penalty10000 at the end of
+% the artificial spaces, we ensure that TeX will not break right after a
+% space - the user will be able to explicitly see the space at the
+% beginning of the next line.
+%
+% This command family can be thought of as implementing a type of "backward"
+% line breaking world in which breaks are assumed to possible everywhere except
+% were indicated as prohibited. Furthermore, hyphenation is not used as spaces
+% are not implicit with line breaks, but must be carried to the start of the
+% next line. In other words, commands are not thought of as words, but rather
+% as sequences of letters.
+%
+%
+% Note: TeX parser tokenizes commands and special characters when acquiring
+% an argument for a command. Thus, when used within an argument to a command,
+% the code in the \ZAX never gets a chance to alter "\", "|", "{", "}",
+% etc., before TeX acquires the argument. For such use, the syntax is reversed,
+% i.e., call the commands using the "\" as one normally would. The "+", "~" will
+% still operate as described above:
+% \footnote{\ZAXlong this\ZAXplus is+a\ZAXbar big\_\ZAXbsl mbox%
+% \ZAXobrace~\ZAXcbrace\ test\end.}
+% Future versions of this code may use this latter approach exclusively so
+% as to unify the syntax (although entering LaTeX code will then take longer
+% command sequences in the main text).
+
+
+\def\ZAXplus{\mbox{+}} % a plus sign
+\def\ZAXbar{\mbox{|}} % a vert bar
+\def\ZAXvtilde{\~{}} % a visible tilde
+%\def\ZAXvtilde{\textasciitilde} % another form of a visible tilde
+
+% define \ZAXbsl which is a "\" character
+\catcode`\|=0 \catcode`\\=12
+|edef|ZAXbsl{|mbox{\}}
+|catcode`|\=0 |catcode`||=12
+
+% define \ZAXbslnobrk macro that gives an unbreakable backslash character
+% this is used only in \ZAXrun to prevent breaks around \
+\catcode`\|=0\catcode`\\=12 |def|ZAXbslnobrk{\} |catcode`|\=0 |catcode`||=12
+
+% define \ZAXobrace which is a "{" character
+\catcode`\$=1 \catcode`\{=12
+\edef\ZAXobrace$\mbox${}}
+\catcode`\$=3 \catcode`\{=1
+
+% define \ZAXcbrace which is a "}" character
+\catcode`\$=2 \catcode`\}=12
+\edef\ZAXcbrace{\mbox{}$$
+\catcode`\$=3 \catcode`\}=2
+
+% define \ZAXmath which is the "$" math shift character
+\edef\ZAXmath{$}
+
+% makes spaces visible
+\def\ZAXvspon{\catcode`\ =12}
+% makes spaces invisible
+\def\ZAXvspoff{\catcode`\ =10}
+
+% \ZAXvsp is a macro that produces a visible space
+% can be used to show spaces within the short or long cmdword forms
+\ZAXvspon\def\ZAXvsp{ }\ZAXvspoff
+
+% \\ does not work in ZAX environments do to the change in
+% cat codes. We provide it here as \ZAXnl - this definition
+% is updated as ZAX starts.
+\let\ZAXnl=\\
+
+% fat space nominal factor (multiplied by width of \ )
+\def\ZAXfatspacenorm{1}
+% fat space stretch factor
+\def\ZAXfatspacestretch{0.43}
+% fat space shrink factor
+\def\ZAXfatspaceshrink{0.24}
+% slim space
+\def\ZAXslimspacelen{0pt plus 0.15pt minus 0pt}
+
+
+
+% these are determined in the start code, but provide dummys here so they are defined
+\def\ZAXfatspace{\hspace*{10pt}\penalty10000}
+\def\ZAXslimspace{\penalty0\hspace{0pt plus 0pt minus 0pt}}
+
+
+% flag to indicate if font was saved
+\newif\if@ZAXsavedfont \@ZAXsavedfontfalse
+
+% saves all the properties of the given font
+% use global in case font save is set within a group
+\def\ZAXsavefont{\global\let\@ZAXfontENCODINGsave\f@encoding%
+\global\let\@ZAXfontFAMILYsave\f@family\global\let\@ZAXfontSERIESsave\f@series%
+\global\let\@ZAXfontSHAPEsave\f@shape\global\let\@ZAXfontSIZEsave\f@size%
+\global\let\@ZAXfontBASELINESKIPsave\f@baselineskip\global\@ZAXsavedfonttrue}
+% restores font back to saved value
+\def\ZAXrestorefont{\fontencoding{\@ZAXfontENCODINGsave}\fontfamily{\@ZAXfontFAMILYsave}%
+\fontseries{\@ZAXfontSERIESsave}\fontshape{\@ZAXfontSHAPEsave}%
+\fontsize{\@ZAXfontSIZEsave}{\@ZAXfontBASELINESKIPsave}\selectfont}
+
+
+% lengths
+\newskip\@ZAXtemplen
+\newskip\@ZAXfatspacelen
+
+
+% Setup for the longcmdword form
+% make a stretchable fat spacer equal in length to the nominal space length
+% use penalty's to ensure easy breaks before and impossible breaks after spaces
+% allow the inter-letter slim "sliver" space to stretch a tad
+% make | the control character, & a space, and \{}, $ and blank characters
+% equal to punctuation
+\def\ZAXstartLong{\let\@ZAXnextbrk=0% no sliver before start
+\settowidth{\@ZAXfatspacelen}{\ }%
+\setlength{\@ZAXfatspacelen}{\ZAXfatspacenorm\@ZAXfatspacelen}%
+\setlength{\@ZAXtemplen}{\ZAXfatspacestretch\@ZAXfatspacelen}%
+\addtolength{\@ZAXfatspacelen}{0pt plus \the\@ZAXtemplen}%
+\setlength{\@ZAXtemplen}{\ZAXfatspaceshrink\@ZAXfatspacelen}%
+\addtolength{\@ZAXfatspacelen}{0pt minus \the\@ZAXtemplen}%
+\def\ZAXfatspace{\penalty0\hspace*{\@ZAXfatspacelen}\penalty10000}%
+\def\ZAXslimspace{\hspace{\ZAXslimspacelen}}%
+\let\ZAXnl=\\%
+\catcode`\|=0 \catcode`\\=12 \catcode`\{=12 \catcode`\}=12 \catcode`\ =12 \catcode`\&=10%
+\catcode`\^=12 \catcode`\$=12 \catcode`\#=12%
+\ZAXrun}
+
+
+% Setup for the shortcmdword form
+% make a stretchable fat spacer equal in length to the nominal space length
+% use penalty's to ensure impossible breaks after spaces
+% the inter-letter slim "sliver" space is rigid at 0pt
+% make | the control character and \{}, $, # and characters equal to punctuation
+\def\ZAXstartShort{\let\@ZAXnextbrk=0%% no sliver before start
+\settowidth{\@ZAXfatspacelen}{\ }%
+\setlength{\@ZAXtemplen}{\ZAXfatspacestretch\@ZAXfatspacelen}%
+\addtolength{\@ZAXfatspacelen}{0pt plus \the\@ZAXtemplen}%
+\setlength{\@ZAXtemplen}{\ZAXfatspaceshrink\@ZAXfatspacelen}%
+\addtolength{\@ZAXfatspacelen}{0pt minus \the\@ZAXtemplen}%
+\def\ZAXfatspace{\hspace*{\@ZAXfatspacelen}\penalty10000}%
+\def\ZAXslimspace{\hspace{0pt plus 0pt minus 0pt}}%
+\let\ZAXnl=\\%
+\catcode`\|=0 \catcode`\\=12 \catcode`\{=12 \catcode`\}=12 \catcode`\$=12 \catcode`\#=12%
+\ZAXrun}
+
+
+\def\ZAXrun#1{\ifx#1\end\catcode`\{=1 \catcode`\}=2 \catcode`\\=0% stop if we hit an |end
+\catcode`\|=12 \catcode`\ =10 \catcode`\&=4 \catcode`\^=7 \catcode`\$=3 \catcode`\#=6%
+\if@ZAXsavedfont\ZAXrestorefont\fi\global\@ZAXsavedfontfalse\let\@ZAXnext=\relax%
+\else%
+\def\@ZAXtokenout{#1}% save the token as a macro
+\let\@ZAXout=1\relax% assume we wish to output this character
+\let\@ZAXbrk=1\relax% assume this is a breakable point
+\ifx\@ZAXnextbrk0\let\@ZAXbrk=0\fi% unless prev char wants no break here
+\let\@ZAXnextbrk=1\relax% we assume this char will allow the next char to break
+\let\@ZAXoutspace=\ZAXslimspace% assume the output spacer is a sliver
+\ifx\@ZAXtokenout\ZAXvsp\let\@ZAXout=0\let\@ZAXoutspace=\ZAXfatspace\let\@ZAXnextbrk=0\fi% visible space, output the space instead
+\ifx#1\ \let\@ZAXout=0\let\@ZAXoutspace=\ZAXfatspace\let\@ZAXnextbrk=0\fi% control space, output the spacer instead
+\ifx#1+\let\@ZAXout=0\let\@ZAXbrk=0\let\@ZAXnextbrk=0\fi% a + means not to break here or at the next, discard token and no spacer
+\ifx\@ZAXtokenout\ZAXbslnobrk\let\@ZAXnextbrk=0\fi% we don't want breaks right after \
+\ifx#1~\def\@ZAXtokenout{\ZAXvtilde}\fi% make nonbreaking spaces visible
+%\ifx#1\ZAXobrace\def\@ZAXtokenout{{\catcode`\{=1\{}}\typeout{obrace}\fi%
+%\ifx#1\ZAXcbrace\def\@ZAXtokenout{\}}\fi%
+\ifx\@ZAXbrk1\@ZAXoutspace\else\penalty10000\relax\@ZAXoutspace\fi% output spacer, stop breaks if needed
+\ifx\@ZAXout1\ifx\@ZAXbrk1\relax\@ZAXtokenout\relax\else\penalty10000\relax\@ZAXtokenout\relax\fi\fi% output the token if desired
+\let\@ZAXnext=\ZAXrun% ready to get next token
+\fi% now get the next token
+\@ZAXnext}
+
+
+\def\ZAXlong#1{\ZAXsavefont#1\ZAXstartLong}
+\def\ZAXshort#1{\ZAXsavefont#1\ZAXstartShort}
+
+
+% to define custom commands, do like:
+% \def\ZAXlongSTT{\ZAXsavefont\small\ttfamily\ZAXstartLong}
+
+
+%% ***** End ZAX defs *****
+\makeatother
+
+
+% Bogus thebibliography for apsrev.bst extracts
+\makeatletter
+\newenvironment{MYapsrevthebibliography}[1]{\relax
+\list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy
+ \clubpenalty4000
+ \@clubpenalty \clubpenalty
+ \widowpenalty4000%
+ \sfcode`\.\@m\relax
+\expandafter\ifx\csname bibnamefont\endcsname\relax
+ \def\bibnamefont##1{##1}\fi
+\expandafter\ifx\csname bibfnamefont\endcsname\relax
+ \def\bibfnamefont##1{##1}\fi
+\expandafter\ifx\csname citenamefont\endcsname\relax
+ \def\citenamefont##1{##1}\fi
+\expandafter\ifx\csname url\endcsname\relax
+ \def\url##1{\texttt{##1}}\fi
+\expandafter\ifx\csname urlprefix\endcsname\relax\def\urlprefix{URL }\fi
+\providecommand{\bibinfo}[2]{##2}\relax
+\providecommand{\eprint}[2][]{\url{##2}}\relax
+\def\@MYapsrevbogusbibitem{\@ifnextchar[{\@@MYapsrevbogusbibitem}{\@@MYapsrevbogusbibitem[\relax]}}\relax
+\def\@@MYapsrevbogusbibitem[##1]##2{\item}\relax
+\let\bibitem\@MYapsrevbogusbibitem}{\endlist}
+\makeatother
+
+
+\def\BibTeX{{\rmfamily B\kern-.05em{\scshape i\kern-.025em b}\kern-.08em
+ T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
+
+% needed only when not using the CM super fonts as they do not
+% have bold small caps needed for a bold \BibTeX
+%\newcommand{\MYfontfix}[1]{\textmd{#1}}
+%
+\newcommand{\MYfontfix}[1]{\relax #1}
+
+\newenvironment{MYlistblk}{\parindent=0pt\trivlist\item\relax\small}{\endtrivlist}
+
+\newcommand{\MYemdash}{\,---\,}
+
+\newcommand{\MYshortcmd}{\ZAXshort{\ttfamily\small}}
+\newcommand{\MYlongcmd}{\ZAXlong{\ttfamily\small}}
+
+\newcommand{\MYsmalltt}[1]{\texttt{\small #1}}
+
+\newcommand{\MYsecref}[1]{section~\ref{#1}}
+\newcommand{\MYSecref}[1]{Section~\ref{#1}}
+
+
+\pagestyle{headings}
+
+%\vskip -20em
+
+
+\title{Mciteplus: Enhanced Multicitations}
+\author{Michael Shell\thanks{See \url{http://www.michaelshell.org/} for
+current contact information.\hfil\break
+\indent\ Manuscript originally created on January 15, 2008; revised September 13, 2013.
+The latest version of this package can be obtained at \mbox{CTAN} \cite{ctan:mciteplus}.
+This work is distributed under the \LaTeX\ Project Public License (LPPL)
+ ( \url{http://www.latex-project.org/} )
+version 1.3. A copy of the LPPL, version 1.3, is included in the base \LaTeX\
+documentation of all distributions of \LaTeX\ released 2003/12/01 or later.
+The opinions expressed here are entirely that of the author. No warranty is expressed
+or implied. User assumes all risk.}\\
+{\small\hfill\textit{with special thanks to Joseph Wright}\hfill\mbox{}}}
+
+\date{Version 1.2, September 13, 2013\\[0.5\baselineskip]
+{\normalfont\normalsize\url{http://www.michaelshell.org/tex/mciteplus/}}}
+
+
+\flushbottom
+
+\begin{document}
+
+\bstctlcite{BSTcontrol}
+
+\thispagestyle{empty}
+
+\maketitle
+\begin{abstract}
+This \LaTeXe{} package is an enhanced reimplementation of Thorsten Ohl's mcite package
+which provides support for the grouping of multiple citations together as is
+often done in physics journals. An extensive set of features provide for
+other applications such as reference sublisting.
+\end{abstract}
+
+\tableofcontentssectiononly
+\begin{multicols}{2}
+\tableofcontentsstarttoc
+\end{multicols}
+
+
+
+\section{Introduction}
+Mciteplus is a reimplementation of Thorsten Ohl's
+(\url{http://theorie.physik.uni-wuerzburg.de/~ohl/}) mcite \LaTeX\ package
+\cite{ctan:mcite}, which
+provides for ``collapsed'' citations (i.e., a grouping of multiple references
+under a single collective reference) as is often done in physics journals.
+Using Thorsten Ohl's example in the documentation for mcite:
+\begin{MYapsrevthebibliography}{3}
+\bibitem[{\citenamefont{Glashow}(1961)}]{Glashow}
+\bibinfo{author}{\bibfnamefont{S.~L.} \bibnamefont{Glashow}},
+ \bibinfo{journal}{Nucl. Phys.} \textbf{\bibinfo{volume}{22}},
+ \bibinfo{pages}{579} (\bibinfo{year}{1961}).
+
+\bibitem[{\citenamefont{Salam}(1968)}]{Salam}
+\bibinfo{author}{\bibfnamefont{A.}~\bibnamefont{Salam}}, in
+ \emph{\bibinfo{booktitle}{Elementary Particle Theory}}, edited by
+ \bibinfo{editor}{\bibfnamefont{N.}~\bibnamefont{Svartholm}}
+ (\bibinfo{publisher}{Almquist and Wiksell}, \bibinfo{address}{Stockholm},
+ \bibinfo{year}{1968}), pp. \bibinfo{pages}{367--377}.
+
+\bibitem[{\citenamefont{Weinberg}(1967)}]{Weinberg}
+\bibinfo{author}{\bibfnamefont{S.}~\bibnamefont{Weinberg}},
+ \bibinfo{journal}{Phys. Rev. Lett.} \textbf{\bibinfo{volume}{19}},
+ \bibinfo{pages}{1264} (\bibinfo{year}{1967}).
+\end{MYapsrevthebibliography}
+becomes:\footnote{Formatting produced by the apsrevM.bst bibstyle.}\relax
+\begin{MYapsrevthebibliography}{1}
+\bibitem[{\citenamefont{Glashow}(1961)}]{Glashow}
+\bibinfo{author}{\bibfnamefont{S.~L.} \bibnamefont{Glashow}},
+ \bibinfo{journal}{Nucl. Phys.} \textbf{\bibinfo{volume}{22}},
+ \bibinfo{pages}{579} (\bibinfo{year}{1961});
+\bibinfo{author}{\bibfnamefont{A.}~\bibnamefont{Salam}}, in
+ \emph{\bibinfo{booktitle}{Elementary Particle Theory}}, edited by
+ \bibinfo{editor}{\bibfnamefont{N.}~\bibnamefont{Svartholm}}
+ (\bibinfo{publisher}{Almquist and Wiksell}, \bibinfo{address}{Stockholm},
+ \bibinfo{year}{1968}), pp. \bibinfo{pages}{367--377};
+\bibinfo{author}{\bibfnamefont{S.}~\bibnamefont{Weinberg}},
+ \bibinfo{journal}{Phys. Rev. Lett.} \textbf{\bibinfo{volume}{19}},
+ \bibinfo{pages}{1264} (\bibinfo{year}{1967}).
+\end{MYapsrevthebibliography}
+
+
+\subsection{Features}
+Mciteplus offers the following features many of which are not available with the
+original mcite:
+\begin{itemize}
+\item Entry punctuation can be controlled by the bibstyle (.bst) as well as the user.
+\item No ``double periods'' when an entry already ends with a period (e.g., an
+abbreviated journal name).
+\item Support for sublists.
+\item Support for multiple bibliographies and/or auxiliary files.
+\item The bibliography sample label width is automatically updated to account for the changes
+ in the numbering due to the grouped entries. Maximum label width information is
+ available to user.
+\item Compatible with the natbib package. (The bibstyle must support both
+mciteplus as well as natbib.)
+\item Compatible with the REV\TeX4 class. (The bibstyle must support both
+mciteplus as well as natbib.)
+\item Support for the optional argument of \MYshortcmd\cite[]{}|end.
+\item Provides a means to allow users to use almost any cite command via custom command
+wrappers and the ability to manually disable all automatic internal hooks.
+\item Mciteplus compatible sorting bibstyles are possible via the use of a ``mcitetail''
+field in the \BibTeX\ database entries. See \MYsecref{sec:sortingbibstyles} for details.
+\end{itemize}
+
+
+\subsection{File List}
+The files in this package are as follows:
+\begin{description}
+\item[\ttfamily mciteplus.sty] The mciteplus \LaTeX\ package.
+\item[\ttfamily mciteplus\_doc.pdf] The user manual (this document).
+\item[\ttfamily mciteplus\_doc.tex] The \LaTeX\ source of the user manual.
+\item[\ttfamily mciteplus\_code.txt] Selected .bst modification and other code listings.
+\item[\ttfamily apsrevM.bst] An mciteplus compatible version of REV\TeX4's apsrev.bst \cite{ctan:revtex}.
+\item[\ttfamily apsrmpM.bst] An mciteplus compatible version of REV\TeX4's apsrmp.bst \cite{ctan:revtex}.
+\textbf{Note: This is a sorting style. For it to work properly, you must set the
+``mcitetail'' \BibTeX\ database field for every tail entry as mentioned in
+\MYsecref{sec:sortingbibstyles}.}
+\item[\ttfamily IEEEtranM.bst] An mciteplus compatible version of IEEEtran.bst \cite{ctan:ieeetranbst}.
+\item[\ttfamily IEEEtranMN.bst] An mciteplus compatible version of IEEEtranN.bst (natbib compatible) \cite{ctan:ieeetranbst}.
+
+\end{description}
+
+
+
+\section{Basic Usage}
+
+
+\subsection{Bibstyle (.bst) Requirements}
+Mciteplus does require an mciteplus compatible bibstyle (.bst file).
+\textbf{Unfortunately, bibstyles designed for use with mcite will not
+work with mciteplus.} See \MYsecref{sec:bibstylemods} for
+information on how to convert existing bibstyles for use with mciteplus.
+
+
+\subsection{Package Loading and Options}
+Mciteplus is invoked in the standard \LaTeX\ way:
+\begin{MYlistblk}
+\MYlongcmd
+\usepackage[|itshape+options|upshape]{mciteplus}|end
+\end{MYlistblk}
+{\bfseries As mciteplus installs command wrappers over existing \MYshortcmd\cite|end\ commands,
+it should be loaded last, even after other packages that normally are loaded last such
+as hyperref \cite{ctan:hyperref}.}
+
+Be aware that LaTeX may have to be run twice in order for the correct label
+width to be calculated and used after entries are collapsed. When this happens,
+mciteplus will issue the warning
+``Rerun to ensure correct mciteplus label max width/count''.
+
+\subsubsection{Package Options}
+\label{sec:packageoptions}
+Valid options are:
+
+\indent\textbf{chapterbibrootbib}\MYemdash
+This option must be specified when using the rootbib option/mode of the chapterbib package
+\cite{ctan:chapterbib}. Mciteplus is not able to auto-detect the rootbib mode
+of chapterbib directly because when invoking that mode, the user must run \LaTeX\ a second time
+without the rootbib option. For all of these \LaTeX\ runs, keep this mciteplus option
+enabled (i.e., as long as there is, or is going to be, a jobname.bbl file under
+chapterbib). Beware of the possibility of an mciteplus status (i.e., head or tail)
+conflict in an overall bibliography if the same entry is cited differently in
+different parts of the document. See \MYsecref{sec:chapterbib} for more details on
+the use of chapterbib.
+
+\indent\textbf{debug}\MYemdash
+Invoking this option will cause mciteplus to issue debugging information
+to the console whenever it processes: (1) a citation list; (2) an mciteplus aware
+bibliography; and (3) entries within the mciteplus bibliography. This may be helpful to
+diagnose problems or to learn what tracking IDs, etc., mciteplus is using.
+
+\indent\textbf{nohooks}\MYemdash
+This option will prevent mciteplus from automatically hooking into \LaTeX's
+\MYshortcmd\cite|end\ internals and/or autodetecting and interfacing with
+external packages. The intended use is for advanced users who want to create
+their own mciteplus' \MYshortcmd\cite|end\ wrappers. When using this option,
+users will then have to manually define their own cite wrappers using the internal
+mciteplus engine (which is always available to users regardless of whether this
+option is selected or not). See \MYsecref{sec:customwrappers} for how to do this.
+Beware that this option can cause some packages to issue errors when used with
+mciteplus, especially those that alter the bibliography environments (e.g.,
+citeref.sty, pageref.sty, etc.)
+
+
+\subsection{Cite Format}
+In the example given at the start of the introduction, the Glashow entry is
+known as the ``head'' entry and those of Salam and
+Weinberg are known as ``tails''. As with mcite, tails are declared within
+the \MYshortcmd\cite|end\ command immediately after their head entry by prefixing them with a *:
+\begin{MYlistblk}
+\MYlongcmd
+\cite{Glashow,*Salam,*Weinberg}|end
+\end{MYlistblk}
+Head entries may or may not have tails. However, every tail must have a head entry.
+The tail entries for a group must all be declared (without duplication) when their
+head entry is first cited. After that, the head entry may be recited as often as desired.
+It is possible, though bad practice, to redeclare the tails (or a subset thereof) when
+reciting the head. This allows for the case of overall bibliographies in which the
+same citation group is defined in multiple local bibliographies, all the entries
+of which are later combined into a single overall bibliography.
+However, new tails cannot be later added to an existing citation group.
+
+Thus, each of the following lines will generate an error as they are \textbf{invalid}:
+\begin{MYlistblk}
+\MYlongcmd
+\cite{*Salam} |% missing head declaration |\
+| |\
+\cite{Glashow,*Salam} \cite{Glashow,*Salam,*Weinberg} |% tails added after initial definition|\
+| |\
+\cite{Glashow,*Salam,*Salam} |% duplicate tails in initial definition|end
+\end{MYlistblk}
+Each of the following lines is \textbf{valid}:
+\begin{MYlistblk}
+\MYlongcmd
+\cite{Glashow,*Salam,*Weinberg,Smith,*Jones} |% multiple groups OK |\
+| |\
+\cite{Glashow,*Salam,*Weinberg} \cite{Glashow} |% head can be recited anytime |\
+| |\
+\cite{Glashow,*Salam,*Weinberg} \cite{Glashow,*Salam,*Weinberg} |% restate previous definition |\
+| |\
+\cite{Glashow,*Salam,*Weinberg} \cite{Glashow,*Weinberg} |% restate part of previous definition |\
+| |\
+\cite[page 580 of Glashow]{Glashow,*Salam} |% optional argument is supported |\
+| |\
+\nocite{*} |% BibTeX wildcard OK, but use with caution |end
+\end{MYlistblk}
+The \BibTeX\ ``wildcard'' entry ``*'' for \MYshortcmd\nocite|end\ is allowed. However,
+it is important to ensure that the entries \BibTeX\ will automatically add to the
+bibliography from its databases will not get ``in between'' any head/tail groupings. This
+will not be a problem with unsorted bibstyles as long as the head/tail groups are
+cited prior to the invocation of the wildcard entry or as long as the head/tail group
+entries are listed together and in the correct order in the \BibTeX\ databases. However, with
+sorting bibstyles extra care must be taken to keep the head/tail groups together in
+spite of the reordering process. See \MYsecref{sec:sortingbibstyles} for more information.
+
+By default, mciteplus will issue an error message if it encounters
+bibliography\footnote{Well, only those in a \texttt{mcitethebibliography} environment.}
+entries that it has no record of. This will almost certainly be the case if the
+\BibTeX\ wildcard entry is used. To disable the error messages and allow
+mciteplus to automatically assume that all unknown entries are heads, just issue
+the \TeX\ conditional:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteErrorOnUnknownfalse|end
+\end{MYlistblk}
+before the bibliography it is to affect. Mciteplus will issue a warning message
+to the console as a reminder if it detects the use of the \BibTeX\ wildcard entry.
+
+
+\subsection{Punctuation Controls}
+There are three kinds of punctuation/spacing mciteplus uses in the formatting of entries
+in the bibliography: (1) Middle punctuation which is used between entries within a
+collapsed group (typically ``; ''); (2) End punctuation which is used at the end
+of each entry group (typically ``.''); and (3) separation punctuation/spacing
+which is inserted before each head entry after the very first. Separation
+punctuation/spacing is usually not used (it is typically ``\MYshortcmd\relax|end''),
+but it is provided for because some bibliography styles may require unusual spacing
+or a \MYshortcmd\par|end\ between the entries, but under mciteplus, bibstyles cannot
+directly insert such things as \BibTeX\ does not know at run time which
+entries are heads and which are tails.
+
+Mciteplus defines the package defaults of each as:\footnote{{\ttfamily\ZAXbsl providecommand} is
+used so that class files can declare their own mciteplus defaults.}
+\begin{MYlistblk}
+\MYlongcmd
+\providecommand{\mcitedefaultmidpunct}{;\space}|\
+\providecommand{\mcitedefaultendpunct}{.}|\
+\providecommand{\mcitedefaultseppunct}{\relax}|end
+\end{MYlistblk}
+However, both the bibstyle and the user can override the defaults with the user having
+the final say in the matter.
+
+Bibstyles can override the package defaults via issuing the command:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetBstMidEndSepPunct{|bgroup|itshape+middle punctuation|egroup}{|bgroup|itshape+end punctuation|egroup}{|bgroup|itshape+separation punctuation|egroup}|end
+\end{MYlistblk}
+\MYshortcmd\mciteSetBstMidEndSepPunct|end\ must be issued at the end of the entry it is to
+affect (prior to the next \MYshortcmd\bibitem|end) and the values given will remain in effect
+until specified again.
+
+The user can override the bibstyle by issuing the command:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetMidEndSepPunct{|bgroup|itshape+middle punctuation|egroup}{|bgroup|itshape+end punctuation|egroup}{|bgroup|itshape+separation punctuation|egroup}|end
+\end{MYlistblk}
+before the bibliography it is to affect. However, this poses a problem because
+the bibstyle may or may not specify end punctuation for each entry (e.g., such
+as when an entry ends with a URL or an abbreviated journal name). To provide for
+this, mciteplus provides a \TeX\ conditional \MYshortcmd\ifmciteBstWouldAddEndPunct|end,
+that a bibstyle can set to true if and only if \BibTeX\ would add end punctuation
+to the given entry. (See \MYsecref{sec:bibstylemods} for how bibstyle designers
+should implement this feature.) If the bibstyle provides this feature, and it is
+recommended that they do, then users can take advantage of this conditional in their use
+of \MYshortcmd\mciteSetMidEndSepPunct|end:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetMidEndSepPunct{;\space}{\ifmciteBstWouldAddEndPunct.\else\fi}{\relax}|end
+\end{MYlistblk}
+and thus still avoid the ``double period'' problem under their
+own custom punctuation.
+
+After issuing a user defined \MYshortcmd\mciteSetMidEndSepPunct|end\ for a bibliography,
+a user can restore control back to the bibstyle for later bibliographies by issuing:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetMidEndSepPunct{\mcitebstmidpunct}{\mcitebstendpunct}{\mcitebstseppunct}|end
+\end{MYlistblk}
+before the bibliography(ies) to be affected.
+
+
+
+\subsection{Counters}
+\label{sec:counters}
+Mciteplus provides two \LaTeX\ counters, \MYshortcmd+mcitebibitemcount|end\ and
+\MYshortcmd+mcitesubitemcount|end, which track the number of head, and tail entries
+for each head, respectively. At each head entry, \MYshortcmd+mcitebibitemcount|end\ is
+incremented and \MYshortcmd+mcitesubitemcount|end\ is reset, by/to one.
+At each tail entry (or sublisted head entry under sublist modes ``b'', ``f'' and ``h''
+as described in \MYsecref{sec:sublistlabelbeginend}), \MYshortcmd+mcitesubitemcount|end\
+is incremented by one after each subitem label is rendered.
+Be aware that \MYshortcmd+mcitebibitemcount|end\ is \emph{not} what is used to
+actually generate the entry labels in the bibliography as \LaTeX\ handles this
+the same way it normally does (typically using it's own counter,
+\MYsmalltt{enumiv}).
+
+These counters can be referenced by the user to generate sublist labels
+(\MYsecref{sec:sublistlabelbeginend}), to determine maximum label
+widths (\MYsecref{sec:maxwidths}) as well as to control
+other counters (e.g., \MYsecref{sec:mcitethebibliographyhooks}).
+
+
+\subsubsection{Bibitem Counter Reset}
+\label{sec:bibitemcounterreset}
+By default, mciteplus resets \MYshortcmd+mcitebibitemcount|end\ at the
+start of each bibliography. However, in some documents with multiple bibliographies,
+the entries are to be numbered consecutively throughout the document and, thus,
+the entry count should not reset at the start of each bibliography. For
+such cases, you can issue a:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteResetBibitemCountfalse|end
+\end{MYlistblk}
+before a bibliography to disable the counter reset (so that the maximum
+label widths and counts will be correct, see \MYsecref{sec:labelwidths}).
+There is also a \MYshortcmd\mciteResetBibitemCounttrue|end\ which reenables the
+resetting of the counter.
+
+
+
+
+\subsection{Sublists}
+\label{sec:sublists}
+Sublisting within entry groups is supported by mciteplus. For example:
+\begin{MYapsrevthebibliography}{1}
+\bibitem[{\citenamefont{Glashow}(1961)}]{Glashow}
+\bibinfo{author}{\bibfnamefont{S.~L.} \bibnamefont{Glashow}},
+ \bibinfo{journal}{Nucl. Phys.} \textbf{\bibinfo{volume}{22}},
+ \bibinfo{pages}{579} (\bibinfo{year}{1961});
+a) \bibinfo{author}{\bibfnamefont{A.}~\bibnamefont{Salam}}, in
+ \emph{\bibinfo{booktitle}{Elementary Particle Theory}}, edited by
+ \bibinfo{editor}{\bibfnamefont{N.}~\bibnamefont{Svartholm}}
+ (\bibinfo{publisher}{Almquist and Wiksell}, \bibinfo{address}{Stockholm},
+ \bibinfo{year}{1968}), pp. \bibinfo{pages}{367--377};
+b) \bibinfo{author}{\bibfnamefont{S.}~\bibnamefont{Weinberg}},
+ \bibinfo{journal}{Phys. Rev. Lett.} \textbf{\bibinfo{volume}{19}},
+ \bibinfo{pages}{1264} (\bibinfo{year}{1967}).
+\end{MYapsrevthebibliography}
+The sublist labels (e.g., ``a)'', ``b)'', etc.) are based on the mciteplus
+provided \LaTeX\ counter,
+\MYshortcmd+mcitesubitemcount|end, which is reset at the start
+of each head.
+
+\subsubsection{Sublist Modes}
+\label{sec:sublistmodes}
+The standard sublist mode ``s'' (as show above) is to
+begin numbering with the first tail.
+
+Mciteplus can begin numbering with the head entries, but
+omit the sublabel for the heads via sublist mode ``b'':
+\begin{MYapsrevthebibliography}{1}
+\bibitem[{\citenamefont{Glashow}(1961)}]{Glashow}
+\bibinfo{author}{\bibfnamefont{S.~L.} \bibnamefont{Glashow}},
+ \bibinfo{journal}{Nucl. Phys.} \textbf{\bibinfo{volume}{22}},
+ \bibinfo{pages}{579} (\bibinfo{year}{1961});
+b) \bibinfo{author}{\bibfnamefont{A.}~\bibnamefont{Salam}}, in
+ \emph{\bibinfo{booktitle}{Elementary Particle Theory}}, edited by
+ \bibinfo{editor}{\bibfnamefont{N.}~\bibnamefont{Svartholm}}
+ (\bibinfo{publisher}{Almquist and Wiksell}, \bibinfo{address}{Stockholm},
+ \bibinfo{year}{1968}), pp. \bibinfo{pages}{367--377};
+c) \bibinfo{author}{\bibfnamefont{S.}~\bibnamefont{Weinberg}},
+ \bibinfo{journal}{Phys. Rev. Lett.} \textbf{\bibinfo{volume}{19}},
+ \bibinfo{pages}{1264} (\bibinfo{year}{1967}).
+\end{MYapsrevthebibliography}
+
+To sublabel the first entries of each group (heads) use
+the sublist mode ``f'':
+\begin{MYapsrevthebibliography}{1}
+\bibitem[{\citenamefont{Glashow}(1961)}]{Glashow}
+a) \bibinfo{author}{\bibfnamefont{S.~L.} \bibnamefont{Glashow}},
+ \bibinfo{journal}{Nucl. Phys.} \textbf{\bibinfo{volume}{22}},
+ \bibinfo{pages}{579} (\bibinfo{year}{1961});
+b) \bibinfo{author}{\bibfnamefont{A.}~\bibnamefont{Salam}}, in
+ \emph{\bibinfo{booktitle}{Elementary Particle Theory}}, edited by
+ \bibinfo{editor}{\bibfnamefont{N.}~\bibnamefont{Svartholm}}
+ (\bibinfo{publisher}{Almquist and Wiksell}, \bibinfo{address}{Stockholm},
+ \bibinfo{year}{1968}), pp. \bibinfo{pages}{367--377};
+c) \bibinfo{author}{\bibfnamefont{S.}~\bibnamefont{Weinberg}},
+ \bibinfo{journal}{Phys. Rev. Lett.} \textbf{\bibinfo{volume}{19}},
+ \bibinfo{pages}{1264} (\bibinfo{year}{1967}).
+\end{MYapsrevthebibliography}
+Entries without tails (single heads) are not sublisted under sublist
+mode ``f''. To enable that, use sublist mode ``h''.
+
+As with punctuation, the sublist mode can be specified by both the bibstyle
+as well as the user with the latter overriding the former:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetBstSublistMode{|itshape+mode|upshape} |% for use by bibstyles|\
+| |\
+\mciteSetSublistMode{|itshape+mode|upshape} |% for use by the user in the document|end
+\end{MYlistblk}
+where \textit{mode} is one of:
+\begin{enumerate}
+\item[\textbf{d}] \MYemdash ``Default'', do not alter whatever mode is currently in effect.
+For bibstyles, this is essentially a NOOP, but when invoked by the user, the bibstyle is
+allowed to alter the sublist mode.
+\item[\textbf{n}] \MYemdash No sublist, do not sublist the entries.
+\item[\textbf{s}] \MYemdash Sublist mode ``s'', sublist the tail entries.
+\item[\textbf{b}] \MYemdash Sublist mode ``b'', sublist the tail entries, start the count with their
+head, but omit labeling the head.
+\item[\textbf{f}] \MYemdash Sublist mode ``f'', sublist the tail entries including their head.
+\item[\textbf{h}] \MYemdash Sublist mode ``h'', implies sublist mode ``f'', but sublist all entries,
+even heads without tails.
+\end{enumerate}
+Unless specified otherwise, sublisting will not be done.
+
+\subsubsection{Sublist Label, Begin and End}
+\label{sec:sublistlabelbeginend}
+Mciteplus allows bibstyles and users to specify the sublist label form used,
+the code that gets executed at the start of the sublist and the code
+that ends a sublist. Mciteplus defines the package defaults of each as:
+\begin{MYlistblk}
+\MYlongcmd
+\providecommand{\mcitedefaultsublistlabel}{\alph{mcitesubitemcount})\space}|\
+\providecommand{\mcitedefaultsublistbegin}{\relax}|\
+\providecommand{\mcitedefaultsublistend}{\relax}|end
+\end{MYlistblk}
+The result of which is as shown in the previous examples.
+However, both the bibstyle and the user can override the defaults with the user having
+the final say in the matter. The sublist label/begin/end code can be specified by both
+the bibstyle as well as the user with the latter overriding the former:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetBstSublistLabelBeginEnd{|itshape+label|upshape}{|itshape+begin|upshape}{|itshape+end|upshape} |% for use by bibstyles|\
+| |\
+\mciteSetSublistLabelBeginEnd{|itshape+label|upshape}{|itshape+begin|upshape}{|itshape+end|upshape} |% for use by the user in the document|end
+\end{MYlistblk}
+This flexibility provides a way to use customized environments for the sublists:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetSublistMode{s}|\
+\mciteSetSublistLabelBeginEnd{\item[\arabic{mcitebibitemcount}.\alph{mcitesubitemcount})]}{\begin{enumerate}}{\end{enumerate}}|end
+\end{MYlistblk}
+which yields:
+\begin{MYapsrevthebibliography}{1}
+\bibitem[{\citenamefont{Glashow}(1961)}]{Glashow}
+\bibinfo{author}{\bibfnamefont{S.~L.} \bibnamefont{Glashow}},
+ \bibinfo{journal}{Nucl. Phys.} \textbf{\bibinfo{volume}{22}},
+ \bibinfo{pages}{579} (\bibinfo{year}{1961});
+\begin{enumerate}
+\item[1.a)] \bibinfo{author}{\bibfnamefont{A.}~\bibnamefont{Salam}}, in
+ \emph{\bibinfo{booktitle}{Elementary Particle Theory}}, edited by
+ \bibinfo{editor}{\bibfnamefont{N.}~\bibnamefont{Svartholm}}
+ (\bibinfo{publisher}{Almquist and Wiksell}, \bibinfo{address}{Stockholm},
+ \bibinfo{year}{1968}), pp. \bibinfo{pages}{367--377};
+\item[1.b)] \bibinfo{author}{\bibfnamefont{S.}~\bibnamefont{Weinberg}},
+ \bibinfo{journal}{Phys. Rev. Lett.} \textbf{\bibinfo{volume}{19}},
+ \bibinfo{pages}{1264} (\bibinfo{year}{1967}).
+\end{enumerate}
+\end{MYapsrevthebibliography}
+
+After issuing a user defined \MYshortcmd\mciteSetSublistLabelBeginEnd|end\ for a bibliography,
+a user can restore control back to the bibstyle for later bibliographies by issuing:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetSublistLabelBeginEnd{\mcitebstsublistlabel}{\mcitebstsublistbegin}{\mcitebstsublistend}|end
+\end{MYlistblk}
+before the bibliography(ies) to be affected.
+
+
+
+\subsubsection{Referencing Sublist Labels}
+\label{sec:refsublistlabel}
+It is not possible to reference the tails using \MYshortcmd\cite|end:
+\begin{MYlistblk}
+\MYlongcmd
+\cite{Salam} |% invalid, tail redeclared as a head|\
+\cite{*Salam} |% invalid, tail cannot be referenced|end
+\end{MYlistblk}
+and even if it were allowed, it would likely cause problems with packages
+that compress and sort citation numbers.
+
+However, mciteplus does provide two commands that work much like \MYshortcmd\ref|end\
+and \MYshortcmd\pageref|end\ that can be used to reference the sublabeled entries
+and the page numbers they appear on:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSubRef[|itshape+track ID|upshape]{|itshape+cite key|upshape}|\
+\mciteSubPageRef[|itshape+track ID|upshape]{|itshape+cite key|upshape}|end
+\end{MYlistblk}
+where \textit{cite key} is a (single) citation key and \textit{track ID} is
+the tracking ID (\MYsecref{sec:trackingandaux}) string which mciteplus uses
+to uniquely identify bibliographies. Please note that these commands will not work
+for entries that are not sublabeled (e.g., heads with tails if the sublist
+mode is not ``f'' or ``h''). The tracking IDs used by each bibliography can be
+displayed by loading mciteplus with the ``debug'' package option (\MYsecref{sec:packageoptions}).
+For virtually all single bibliography documents, the default tracking ID should work
+fine. However, when multiple bibliographies are in use, the tracking ID may
+have to be specified so that mciteplus will know which bibliography entry to
+reference. Some packages such as chapterbib, may even put the same citation
+in multiple bibliographies.
+
+For the part/chapter bibliographies of chapterbib.sty, there is no need to specify a
+tracking ID as mciteplus will automatically use the correct one within each part.
+The tracking ID of the duplicate bibliographies of chapterbib (produced by
+chapterbib's ``duplicate'' package option) is given by ``chapterbib\textit{inputfile}.bbl'',
+where ``\textit{inputfile}'' is the include file the given citation occurred in.
+For the rootbib bibliography (produced by chapterbib's ``rootbib'' package option),
+the tracking ID is of the form ``chapterbib\textit{jobname}'', where
+``\textit{jobname}'' is the name of the main .tex document file (without the .tex
+suffix).
+
+For multibib.sty, the tracking ID is given by ``multibib\textit{secname}'', where
+``\textit{secname}'' is the multibib bibliography section name (as declared
+via \MYshortcmd\newcites|end).
+
+For multibbl.sty, the tracking ID is given by ``multibbl\textit{secname}'', where
+``\textit{secname}'' is the multibbl bibliography section name.
+
+For bibunits.sty, mciteplus will automatically use the correct tracking ID within
+each bibunit, but to reference an entry outside of a bibunit, the tracking ID of
+each bibunit is given by ``bibunits\textit{unitname}'', where ``\textit{unitname}''
+is the name of the auxiliary file of the desired bibunit without the .aux suffix
+(e.g., ``bu1'', ``bu2'', etc.).
+
+The form of the replacement text of \MYshortcmd\mciteSubRef|end\ is defined by
+mciteplus as:
+\begin{MYlistblk}
+\MYlongcmd
+\providecommand{\mcitesubrefform}{\arabic{mcitebibitemcount}.\alph{mcitesubitemcount}}|end
+\end{MYlistblk}
+which can be redefined (via \MYshortcmd\renewcommand|end) by the user as desired.
+
+
+\subsubsection{Bibitem Argument Macros}
+\label{sec:bibitemarguments}
+When creating sublist labels (or the maximum width forms discussed in
+\MYsecref{sec:maxwidths}), the user may wish to have access to the
+argument(s) of the \MYshortcmd\bibitem|end\ of the entries. Mciteplus
+provides these as macros. The required argument of the current
+\MYshortcmd\bibitem|end, which is usually the citation key, is provided
+as \MYshortcmd\mciteBibitemArgI|end. The optional argument of the current
+\MYshortcmd\bibitem|end, which, if present, is provided as
+\MYshortcmd\mciteBibitemOptArgI|end. There is also the \TeX\ conditional
+\MYshortcmd\ifmciteBibitemOptArgI|end, which will evaluate true if the
+optional argument to \MYshortcmd\bibitem|end\ is present.
+
+Lastly, there are \MYshortcmd\mciteCurheadBibitemArgI|end,
+\MYshortcmd\mciteCurheadBibitemOptArgI|end\ and
+\MYshortcmd\ifmciteCurheadBibitemOptArgI|end\ which contain the
+same argument information, but for the head of the current entry
+group.
+
+
+
+\subsection{Label Widths}
+\label{sec:labelwidths}
+
+\textbf{Note: Problems with incorrect label widths will usually manifest themselves
+as incorrect label spacing and/or bibliography entry text that is not properly
+aligned, but often will not otherwise generate warning messages or errors.}
+
+
+\subsubsection{The Bibliography Sample Label}
+\label{sec:bibsamplelabel}
+With most bibstyles, \BibTeX\ produces what is known as a ``sample label,''
+which is the widest label used by the bibliography entries. This sample label is
+recorded as the argument to \MYshortcmd\thebibliography|end\ when \BibTeX\ creates
+the .bbl bibliography file so as to provide a way for the \MYshortcmd\thebibliography|end\
+environment to know in advance how much space to reserve for the labels.
+
+For example, \BibTeX\ may produce something like this in the .bbl file for a
+bibliography with ten entries:\footnote{Some bibstyles use a number equal to the
+number of entries, others use a form such as ``1X'', where ``X'' is a number of zeros
+such that the sample label length matches that of the number of entries (e.g.,
+``10'' if there are 10--99 entries). With most fonts, the numerical digits
+all have the same width so ``10'' has the same width as ``99''.}
+\begin{MYlistblk}
+\MYlongcmd
+\begin{thebibliography}{10}|end
+\end{MYlistblk}
+Mciteplus provides users access to the original \BibTeX-produced sample label
+as the macro \MYshortcmd\mciteorgbibsamplelabel|end.
+
+A problem arises with the sample label system when mciteplus combines multiple entries in
+that the \BibTeX\ generated sample label in the .bbl file will not be
+correct after the tail entries are no longer counted as actual entries. With the
+original mcite package, this would often result in incorrect label spacing. Mciteplus
+addresses this problem by actively tracking the maximum width label used in each bibliography.
+
+The sample label form that mciteplus forwards to \MYshortcmd+thebibliography|end\
+is defined as:
+\begin{MYlistblk}
+\MYlongcmd
+\def\mcitebibsamplelabel{\rule{\mcitemaxwidthbibitem sp}{0.2pt}}|end
+\end{MYlistblk}
+which is simply a rule with a width equal to the widest label as determined
+by the maximum width system discussed in \MYsecref{sec:maxwidths}.
+If necessary, this can be redefined by the user via \MYshortcmd\renewcommand|end.
+
+Most class files will not be bothered by the fact that a rule rather than
+actual digits is being used for the sample label. However, if this becomes
+a problem, something like:
+\begin{MYlistblk}
+\MYlongcmd
+\renewcommand{\mcitebibsamplelabel}{\mcitemaxcountbibitem}|end
+\end{MYlistblk}
+can be tried where \MYshortcmd\mcitemaxcountbibitem|end\ will contain
+the number of the last entry in the current bibliography as discussed
+in \MYsecref{sec:maxcounts}.
+
+The \MYshortcmd+thebibliography|end\ environments of some \LaTeX\ classes
+(e.g., REV\TeX) perform their own label width calculations and ignore the sample
+label entirely making the issue a moot point. However, the most common \LaTeX\
+classes do depend on the sample label being accurate.
+
+
+\subsubsection{Maximum Widths}
+\label{sec:maxwidths}
+The problem of knowing the widest of a group of labels in advance of their
+actual rendering\footnote{Obviously, solving this problem requires more than one
+\LaTeX\ pass as well as the use of the auxiliary file to store information about the
+widest label which will be read during the second pass.} is commonly encountered
+in \LaTeX\ (e.g., lists, section numbering within the table of contents, etc.) and
+is an issue that, in this author's opinion, has not been dealt with adequately by
+the base \LaTeX\ system.\footnote{Packages such as Scott Pakin's eqparbox.sty
+\cite{ctan:eqparbox} are most welcome solutions to this type of problem.} With
+regard to mciteplus bibliographies, not only is the width of the head entries (i.e.,
+the sample label) an issue, but potentially so are the sublist (tail) labels if
+they are rendered in enumerated list form rather than inline.
+
+To assist the user in determining the required width of labels, mciteplus provides
+its own maximum width and count tracking facilities. Both the bibitem (main entry) and
+subitem (sublist entry) label widths can tracked independently of each other.
+
+In order to measure widths, mciteplus must know what exactly it is to measure.
+This is specified by macros that contain the ``width forms'' which are simply
+``text'' whose width will be measured for each bibitem or subitem. The package
+defaults of each are defined as:
+\begin{MYlistblk}
+\MYlongcmd
+\providecommand{\mcitedefaultmaxwidthbibitemform}{\arabic{mcitebibitemcount}}|\
+\providecommand{\mcitedefaultmaxwidthsubitemform}{\alph{mcitesubitemcount})}|end
+\end{MYlistblk}
+There are also the initial width forms that will be used only during the very first
+\LaTeX\ run before the maximum label widths are actually known (i.e., when the
+auxiliary file is absent):
+\begin{MYlistblk}
+\MYlongcmd
+\providecommand{\mcitedefaultmaxwidthbibitemforminit}{\mciteorgbibsamplelabel}|\
+\providecommand{\mcitedefaultmaxwidthsubitemforminit}{a)}|end
+\end{MYlistblk}
+The initial width forms will be evaluated with the bibitem and subitem counters both set to one.
+The purpose of the initial width forms is just to provide a rough guess as to the
+label widths to try to avoid large formatting changes or errors within label
+formatting code that cannot deal with unknown, or zero, widths.
+
+As with the punctuation and sublist controls, both the bibstyle and the user can
+specify the width forms with the latter overriding the former:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetBstMaxWidthForm[|itshape+init|upshape]{|itshape+type|upshape}{|itshape+form|upshape} |% for use by bibstyles|\
+| |\
+\mciteSetMaxWidthForm[|itshape+init|upshape]{|itshape+type|upshape}{|itshape+form|upshape} |% for use by the user in the document|end
+\end{MYlistblk}
+where \textit{type} is ``\texttt{bibitem}'' or ``\texttt{subitem}''. The optional argument
+\textit{init} is used to specify the initial width form that will be used. If it is not specified,
+the current initial width form in use will not be altered. The code specified in the forms
+should be self contained (i.e., not have commands which require an external environment
+such as \MYshortcmd+\item|end) as well as allow reevaluation at any time (e.g., should
+not do things such as alter counters). Note that these restrictions
+do not apply to the actual sublist code (\MYsecref{sec:sublistlabelbeginend}) and is
+one reason why mciteplus distinguishes between that which measures the width of the
+a label (discussed in this section) and that which actually forms the label
+(\MYsecref{sec:sublistlabelbeginend}). If desired, the current width forms (see below)
+can be used within the actual sublist code.
+
+After issuing a user defined \MYshortcmd\mciteSetMaxWidthForm|end\ for a bibliography,
+a user can restore control back to the bibstyle for later bibliographies by issuing:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetMaxWidthForm[\mcitebstmaxwidthbibitemforminit]{bibitem}{\mcitebstmaxwidthbibitemform}|\
+\mciteSetMaxWidthForm[\mcitebstmaxwidthsubitemforminit]{subitem}{\mcitebstmaxwidthsubitemform}|end
+\end{MYlistblk}
+before the bibliography(ies) to be affected.
+
+Please note that for bibstyles, there
+is no use in specifying an initial width form via \MYshortcmd+\mciteSetBstMaxWidthForm[]|end\
+after the bibliography begins because, by that point, it is too late as the sample label
+has already been forwarded. However, this is not a problem because by default, the initial
+width form is the original sample label as given by the bibstyle.\footnote{Another
+possible approach would be to specify the bibitem width form before the bibliography begins,
+possibly surrounding the entire environment in a group to keep the changes local.}
+This is not an issue for the normal bibitem width form or the subitem width forms as
+they are not evaluated until the first \MYshortcmd\bibitem|end.
+
+The user has access to the currently used bibitem and subitem width forms and
+their maximum widths as the macros:
+\begin{MYlistblk}
+\MYlongcmd
+\mcitemaxwidthbibitemform |% current bibitem width form |\
+\mcitemaxwidthsubitemform |% current subitem width form |\
+\mcitemaxwidthbibitem |% the maximum width of the bibitem form|\
+\mcitemaxwidthsubitem |% the maximum width of the subitem form|end
+\end{MYlistblk}
+The maximum widths are macros containing an integer which is the width
+in \TeX\ scaled points (sp).\footnote{In \TeX, a scaled point is the smallest
+dimensional unit available and is equal to $\frac{1}{65536}$ of a point.} The
+widths are not length commands (e.g., a dimension or skip register), but their
+values can be assigned to a length command by appending a ``sp'' to the
+length specification:
+\begin{MYlistblk}
+\MYlongcmd
+\newlength{\MYlength}|\
+\setlength{\MYlength}{\mcitemaxwidthsubitem sp}|end
+\end{MYlistblk}
+
+
+\subsubsection{Maximum Counts}
+\label{sec:maxcounts}
+Also available are the macros:
+\begin{MYlistblk}
+\MYlongcmd
+\mcitemaxcountbibitem|\
+\mcitemaxcountsubitem|end
+\end{MYlistblk}
+which contain the value of the highest count of the bibitem or subitem\footnote{For
+subitems, it is the highest count that occurred \textit{during} the generation of the
+sublist labels. Because the subitem counter is advanced by one \textit{after} each
+sublist label is rendered, the actual counter itself does reach one count higher than
+its maxcount, but that value was not actually used.}
+counters, respectively, in the current bibliography. The maxcount
+macros are not counters, but they can be used to set them, among other things.
+There are no ``forms'' associated with the maxcounts and their initial values
+(during the very first \LaTeX\ run in the absence of an auxiliary file) will be zero.
+So, any code that references them should be able to handle (without error) the case
+of zero.
+
+If, at the end of the bibliography, the correct maximum widths and counts
+do not match what mciteplus used at the start of the run, mciteplus will issue
+a package warning to request that \LaTeX\ be rerun.
+
+
+\subsubsection{Non-Numerical Labels}
+\label{sec:nonnumericallabels}
+The maxwidth forms may have to be changed for some non-numerical bibstyles.
+For example, under alpha.bst \cite{ctan:alphabst}, the entry labels are
+carried within the optional arguments of the \MYshortcmd+bibitem|end, in
+which case
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetMaxWidthForm{bibitem}{\mciteBibitemOptArgI}|end
+\end{MYlistblk}
+would be appropriate when using such a bibstyle under mciteplus. Actually,
+it is better to do such setup within the bibliography code of the
+bibstyle (.bst) so that the maxwidth form will be correct by default
+without any effort on the part of the user:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetBstMaxWidthForm{bibitem}{\mciteBibitemOptArgI}|end
+\end{MYlistblk}
+This should not be an issue with natbib compatible bibstyles, even
+under the author-date mode, as natbib automatically does its own label
+generation and management.
+
+
+
+\subsection{Example of Use}
+\label{sec:exampleofuse}
+Perhaps the maxwidth system is easiest to understand from an example:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetSublistMode{f}|% start numbering with the first item|\
+\mciteSetMaxWidthForm{subitem}{\scriptsize\textbf{\roman{mcitesubitemcount})}}|% small, bold, roman|\
+| |\
+\newcommand{\MYlistsetup}{\relax|\
+\setlength{\labelwidth}{\mcitemaxwidthsubitem sp}|% reserve room for widest label|\
+\setlength{\labelsep}{5pt}|% 5pt label/text separation|\
+\setlength{\itemindent}{0pt}% no indent|\
+\setlength{\leftmargin}{\labelwidth}|% text to left of label|\
+\addtolength{\leftmargin}{\labelsep}}|% and separation space|\
+| |\
+\mciteSetSublistLabelBeginEnd{\item}{\begin{list}{\hfill\mcitemaxwidthsubitemform}{\MYlistsetup}}{\end{list}}|end
+\end{MYlistblk}
+which produces a sublist via a customized list with small, bold and right aligned
+roman numerals as labels and with block indented text. Note that in the list setup
+code, we need to know the amount of room to reserve for the labels. Mciteplus provides this as
+\MYshortcmd\mcitemaxwidthsubitem|end\ (to which the units ``sp'' must be appended when
+assigning it to a length command). The maxwidth form itself,
+\MYshortcmd\mcitemaxwidthsubitemform|end\ was used in the specification of the
+labels within the list setup, but its definition (as used within
+\MYshortcmd\mciteSetMaxWidthForm|end) could have been respecified in the list
+setup code if desired. Once the list is setup, each sublabel is generated by a
+simple call to \MYshortcmd\item|end. So, this example shows a case in which the code
+actually used to produced the sublabels at run time (\MYshortcmd\item|end)
+is not (directly) the same as that code which is used to measure the sublabel
+widths. Indeed, as it is not self contained, \MYshortcmd\item|end\ cannot
+even be used in the definition of a maxwidth form.
+
+
+
+
+\section{Bibstyle (.bst) Modification}
+\label{sec:bibstylemods}
+Original mcite bibstyles cannot be used with mciteplus. They will have to be remodified
+as described below.
+
+To modify a standard bibstyle (.bst) for use with mciteplus (unsrt.bst
+is used as an example here), find the instances of \MYshortcmd\begin{thebibliography}|end\
+and \MYshortcmd\end{thebibliography}|end\ in the \MYshortcmd+begin.bib|end\
+and \MYshortcmd+end.bib|end\ functions and change them to use
+\MYshortcmd+mcitethebibliography|end. It may also be a good idea to test for
+the existence of \MYshortcmd+mcitethebibliography|end\ in case the user ever
+forgets to load mciteplus.sty.
+
+{\bfseries Note: Many of the functions,
+or parts of functions, shown below are listed in the included file \MYsmalltt{mciteplus\_code.txt},
+which can be used to cut and paste from. Beware of slight code differences between the different bibstyles.
+For example, some use \MYshortcmd+longest.label|end\ like this example, but others may
+use something else like \MYshortcmd+number.label| int.to.str$|end\ and/or may have extra code
+after the \MYshortcmd\begin{mcitethebibliography}|end\ line. Leave these other things as they are.}
+
+Thus,
+\begin{MYlistblk}
+\MYlongcmd
+FUNCTION {begin.bib}|\
+{ preamble$ empty$|\
+ 'skip$|\
+ { preamble$ write$ newline$ }|\
+ if$|\
+ "\begin{thebibliography}{" longest.label * "}" * write$ newline$|\
+}|\
+| |\
+.|\
+.|\
+| |\
+FUNCTION {end.bib}|\
+{ newline$|\
+ "\end{thebibliography}" write$ newline$|\
+}|end
+\end{MYlistblk}
+becomes (change the string "unsrtM.bst" to the name of your new .bst file):
+\begin{MYlistblk}
+\MYlongcmd
+FUNCTION {begin.bib}|\
+{ preamble$ empty$|\
+ 'skip$|\
+ { preamble$ write$ newline$ }|\
+ if$|\
+ "\ifx\mcitethebibliography\mciteundefinedmacro"|\
+ write$ newline$|\
+ "\PackageError{unsrtM.bst}{mciteplus.sty has not been loaded}"|\
+ write$ newline$|\
+ "{This bibstyle requires the use of the mciteplus package.}\fi"|\
+ write$ newline$
+ "\begin{mcitethebibliography}{" longest.label * "}" * write$ newline$|\
+}|\
+| |\
+.|\
+.|\
+| |\
+FUNCTION {end.bib}|\
+{ newline$|\
+ "\end{mcitethebibliography}" write$ newline$|\
+}|end
+\end{MYlistblk}
+
+You may also want to declare the sublist mode via a
+\MYshortcmd\mciteSetBstSublistMode|end, as mentioned in \MYsecref{sec:sublists},
+just after the \MYshortcmd+mcitethebibliography|end\ environment
+begins, that will be used if the user does not otherwise specify a sublist mode,
+as well as other bibliography setup commands.
+
+For example:
+\begin{MYlistblk}
+\MYlongcmd
+FUNCTION {begin.bib}|\
+{ preamble$ empty$|\
+ 'skip$|\
+ { preamble$ write$ newline$ }|\
+ if$|\
+ "\ifx\mcitethebibliography\mciteundefinedmacro"|\
+ write$ newline$|\
+ "\PackageError{unsrtM.bst}{mciteplus.sty has not been loaded}"|\
+ write$ newline$|\
+ "{This bibstyle requires the use of the mciteplus package.}\fi"|\
+ write$ newline$|\
+ "\begin{mcitethebibliography}{" longest.label * "}" * write$ newline$|\
+ "\mciteSetBstSublistMode{b}"|\
+ write$ newline$|\
+ "\mciteSetBstMaxWidthForm{subitem}{\alph{mcitesubitemcount})}"|\
+ write$ newline$|\
+ "\mciteSetBstSublistLabelBeginEnd{\mcitemaxwidthsubitemform\space}"|\
+ write$ newline$|\
+ "{\relax}{\relax}"|\
+ write$ newline$|\
+}|end
+\end{MYlistblk}
+will specify a \MYshortcmd+mcitethebibliography|end\ that defaults to using the sublist
+``b'' mode and enumerates the subentries using letters. The middle and end punctuation
+was not be specified via \MYshortcmd\mciteSetBstMidEndSepPunct|end\ and so the package
+defaults will be used. In this example, the subitem maxwidth form is not so
+important as the labels are rendered inline, but other types of lists may require it.
+
+Next, find the \MYshortcmd+fin.entry|end\ function:
+\begin{MYlistblk}
+\MYlongcmd
+FUNCTION {fin.entry}|\
+{ add.period$|\
+ write$|\
+ newline$|\
+}|end
+\end{MYlistblk}
+and change it to (which you can cut and paste from \MYsmalltt{mciteplus\_code.txt}):
+\begin{MYlistblk}
+\MYlongcmd
+|% mciteplus fin.entry|\
+|%|\
+|% pushes true (1), if add.period$ would add a period to the string on the stack|\
+|% pushes false (0), otherwise|\
+|% Uses text.length$ to avoid full string comparison and two copies of string.|\
+|% Requires one copy of string on stack.|\
+INTEGERS {would.add.period.textlen}|\
+FUNCTION {would.add.period}|\
+{ duplicate$|\
+ add.period$|\
+ text.length$|\
+ 'would.add.period.textlen :=|\
+ duplicate$|\
+ text.length$|\
+ would.add.period.textlen =|\
+ { #0 }|\
+ { #1 }|\
+ if$|\
+}|\
+| |\
+FUNCTION {fin.entry}|\
+{ would.add.period|\
+ { "\relax" * write$ newline$|\
+ "\mciteBstWouldAddEndPuncttrue" write$ newline$|\
+ "\mciteSetBstMidEndSepPunct{\mcitedefaultmidpunct}"|\
+ write$ newline$|\
+ "{\mcitedefaultendpunct}{\mcitedefaultseppunct}\relax"|\
+ }|\
+ { "\relax" * write$ newline$|\
+ "\mciteBstWouldAddEndPunctfalse" write$ newline$|\
+ "\mciteSetBstMidEndSepPunct{\mcitedefaultmidpunct}"|\
+ write$ newline$|\
+ "{}{\mcitedefaultseppunct}\relax"|\
+ }|\
+ if$|\
+ write$|\
+ newline$|\
+ "\EndOfBibitem" write$|\
+}|\
+|% end mciteplus fin.entry|end
+\end{MYlistblk}
+
+The \MYshortcmd\mciteSetBstMidEndSepPunct|end\ line is broken into two lines (after the first argument)
+to prevent \BibTeX\ from breaking what would be a long single line (over 80
+columns) at an unacceptable place.
+
+By providing a way for the .bst to tell mciteplus not to use an end period
+if \BibTeX's \MYshortcmd+add.period$|end\ command would not, we avoid the double end period
+problem. The \MYshortcmd\mciteBstWouldAddEndPuncttrue/false|end\ flag does not in itself
+do anything. However, if set appropriately by the .bst, it can be employed
+by the user in the definition custom punctuation via \MYshortcmd\mciteSetMidEndSepPunct|end.
+
+Other .bst files may hardcode values other than the defaults and/or use
+more complex conditions as is needed for that particular bibstyle.
+
+The \MYshortcmd\EndOfBibitem|end\ is defined by mciteplus.sty as a macro containing
+\MYshortcmd\relax|end. Although it does nothing at present, it's purpose is to make it
+easier to identify the end of each bibliography entry for the purposes of inspection
+or parsing.
+
+
+\subsection{Sorting Bibstyles}
+\label{sec:sortingbibstyles}
+Perhaps surprisingly, it is possible to use mciteplus with sorting bibstyles.
+The difficulty is that \BibTeX\ must keep an entry group together, in citation
+order with the tails immediately following their respective head, despite
+sorting the entries. This is possible with the use of special bibstyle code
+if the user is willing and able to declare all the tails via a special entry
+field ``mcitetail'', which should be set to ``yes'' for each tail, in the
+\BibTeX\ database.\footnote{Thus, we have to specify the tails
+twice\MYemdash once for \LaTeX\ and once for \BibTeX\ because there is no
+other way to get the information to \BibTeX. This limitation
+helped to inspire \LaTeX-based bibliography processing as is done with the
+amsrefs \cite{ctan:amsrefs} and biblatex \cite{ctan:biblatex} packages.} Entries without this
+field, or that have it set to ``no'', will be sorted normally (as head entries).
+Of course, bibstyles that do not recognize the ``mcitetail'' field will silently ignore it.
+
+Thus, for the example used in the introduction, the database entries might look like:
+\begin{MYlistblk}
+\MYlongcmd
+@article{Glashow,|\
+ author = "Sheldon Lee Glashow",|\
+ title = "Partial-symmetries of Weak Interactions",|\
+ journal = "Nucl. Phys.",|\
+ volume = "22",|\
+ number = "4",|\
+ month = feb,|\
+ year = "1961",|\
+ pages = "579-588"|\
+}|\
+| |\
+@incollection{Salam,|\
+ author = "Abdus Salam",|\
+ editor = "Nils Svartholm",|\
+ title = "Weak and Electromagnetic Interactions",|\
+ booktitle = "Elementary Particle Theory",|\
+ publisher = "Almquist and Wiksell",|\
+ address = "Stockholm",|\
+ year = "1968",|\
+ pages = "367-377",|\
+ mcitetail = "yes"|\
+}|\
+| |\
+@article{Weinberg,|\
+ author = "Steven Weinberg",|\
+ title = "A Model of Leptons",|\
+ journal = "Phys. Rev. Lett.",|\
+ volume = "19",|\
+ number = "21",|\
+ month = nov,|\
+ year = "1967",|\
+ pages = "1264-1266",|\
+ mcitetail = "yes"|\
+}|end
+\end{MYlistblk}
+The basic idea is for \BibTeX\ to use the sorting key of the head,
+but with an appended tail count, as the sorting key for all the tails
+of that head. If the bibstyle properly generates unique sorting keys, then the
+entries in each group will be kept together and in order despite
+the sorting process. For example, apsrmpM.bst uses the following
+sort keys for the above three entries:
+\begin{MYlistblk}
+\MYlongcmd
+glashow s l 1961 partial symmetries of weak interactions|\
+glashow s l 1961 partial symmetries of weak interactions|_|_0000000001|\
+glashow s l 1961 partial symmetries of weak interactions|_|_0000000002|end
+\end{MYlistblk}
+The sorting modification to the bibstyle consists of three parts which must be
+done in addition to the mciteplus compatibility modifications previously
+described.
+
+First of all, add an ``mcitetail'' field to the list of entry fields (usually
+located near the beginning of the bibstyle):
+\begin{MYlistblk}
+\MYlongcmd
+ENTRY|\
+ { address|\
+ archive|\
+ author|\
+ booktitle|\
+ .|\
+ .|\
+ key|\
+ mcitetail|\
+ month|\
+ .|\
+ .|end
+\end{MYlistblk}
+
+Then, add the following code (which you can cut and paste from \MYsmalltt{mciteplus\_code.txt})
+somewhere near the start of the bibstyle code (after the first ``STRINGS''
+definition(s) is fine):
+\begin{MYlistblk}
+\MYlongcmd
+|% mciteplus mcitetail field and sort key adjust support|\
+INTEGERS {mcitetailcnt is.mcitetail}|\
+STRINGS {mciteheadsortkey}|\
+|% convert the strings "yes" or "no" to |#1 or |#0 respectively|\
+FUNCTION {mciteplus.yes.no.to.int}|\
+{ "l" change.case$ duplicate$|\
+ "yes" =|\
+ { pop$ |#1 }|\
+ { duplicate$ "no" =|\
+ { pop$ |#0 }|\
+ { "unknown boolean " quote$ * swap$ * quote$ *|\
+ " in " * cite$ * warning$|\
+ |#0|\
+ }|\
+ if$|\
+ }|\
+ if$|\
+}|\
+FUNCTION {mciteplustail.adj.sort.key}|\
+{ mcitetail|\
+ empty$|\
+ { |#0 'is.mcitetail := }|\
+ { mcitetail|\
+ mciteplus.yes.no.to.int|\
+ 'is.mcitetail :=|\
+ }|\
+ if$|\
+ is.mcitetail|\
+ { |#1 mcitetailcnt +|\
+ 'mcitetailcnt :=|\
+ mciteheadsortkey|\
+ "|_|_" *|\
+ "000000000"|\
+ mcitetailcnt|\
+ int.to.str$|\
+ *|\
+ |#-1 |#10 substring$|\
+ *|\
+ 'sort.key$ :=|\
+ }|\
+ { |#0 'mcitetailcnt :=|\
+ sort.key$ 'mciteheadsortkey :=|\
+ }|\
+ if$|\
+}|\
+|% END mciteplus mcitetail field support|end
+\end{MYlistblk}
+
+Lastly, you have to locate the place(s) where the
+bibstyle makes the (final) assignment to \MYshortcmd+sort.key$|end\
+(typically of the form \MYshortcmd+'sort.key$| :=|end\ ) before
+sorting is performed and add a call to \MYshortcmd+mciteplustail.adj.sort.key|end\
+(which will modify the sort keys of the tails as needed to keep the groups
+together) just after it. With apsrmpM.bst, this is at the end of the
+\MYshortcmd+FUNCTION {presort}|end:
+\begin{MYlistblk}
+\MYlongcmd
+.|\
+.|\
+ 'sort.key$ :=|\
+ mciteplustail.adj.sort.key|\
+}|end
+\end{MYlistblk}
+as well as at the end of \MYshortcmd+FUNCTION {bib.sort.order}|end.
+
+
+
+
+\section{Advanced Usage}
+The vast majority of users will not need to know the details of the internal
+operation of mciteplus. However, the following information may be of use to
+those who are interested in it or who need to interface other packages to mciteplus.
+
+Mciteplus consists of two main parts: (1) a part that intercepts and records the
+status of entries the user has cited; and (2) a part that acts on this
+information when formatting the entries in the bibliography.
+
+Upon the start of the \MYshortcmd\begin{document}|end, mciteplus stores the original
+\MYshortcmd\cite|end\ and \MYshortcmd\nocite|end\ as \MYshortcmd\mciteOrgcite|end\
+and \MYshortcmd\mciteOrgnocite|end, respectively, and replaces the originals with
+its own versions. The mciteplus versions of the citation commands: (1) process the citation
+list, recording which entries are heads and which are tails; (2) writes out the
+citation list to the auxiliary file, much like \MYshortcmd\nocite|end\ does, to ensure
+that all the given entries will appear in the bibliography as well as being in the correct
+order; and (3) forwards the list of heads in the citation list to the original cite
+command. Thus, \LaTeX\ remains unaware that the tail entries were ever cited.
+
+The second part of mciteplus operates inside the
+\MYshortcmd+mcitethebibliography|end\ environment where mciteplus: (1) intercepts
+and adjusts the bibliography sample label as needed; (2) forwards to
+the original \MYshortcmd+thebibliography|end; and (3) places a wrapper
+around \MYshortcmd\bibitem|end, storing the original \MYshortcmd\bibitem|end\ as
+\MYshortcmd\mciteOrgbibitem|end. For head entries, the mciteplus
+\MYshortcmd\bibitem|end\ behaves in fairly normal fashion and forwards
+to the original \MYshortcmd\bibitem|end. However, for tail entries, the
+mciteplus \MYshortcmd\bibitem|end, does not forward them to the original
+\MYshortcmd\bibitem|end. Thus, the tail entries become part of the
+previous entry. To \LaTeX, it is as if the \MYshortcmd\bibitem|end\ of the
+tails never happened.
+
+
+\subsection{Tracking ID and Aux. Files}
+\label{sec:trackingandaux}
+Things get more complicated when a document has more than one bibliography.
+To support multiple bibliographies, mciteplus uses a ``tracking ID'' which
+is simply an identification string which is unique to each bibliography.
+Thus, the same citation key can be used in different ways in different
+bibliographies (e.g., serving as a head in one and a tail in another)
+without conflict because each instance will be considered different
+as their tracking IDs are different.\footnote{Of course, a ``status conflict''
+is still possible for ``overall'' bibliographies.}
+
+The standard tracking ID is simply the string ``main'' which is carried as:
+\begin{MYlistblk}
+\MYlongcmd
+\def\mcitetrackID{main}|\
+\def\mcitebibtrackID{main}|end
+\end{MYlistblk}
+the former of which is used by the mciteplus citation commands and the
+latter of which is used by the \MYshortcmd+mcitethebibliography|end\ environment.
+However, these definitions may be automatically altered depending on the specific
+needs of other \LaTeX\ packages that have been loaded
+(\MYsecref{sec:externalpackages}). Some packages that provide support for
+multiple bibliographies require that the tracking ID be closely coupled
+with the individual citation commands. In such cases, mciteplus may not
+even refer to \MYshortcmd\mcitetrackID|end\ or \MYshortcmd\mcitebibtrackID|end.
+
+For the normal part/chapter bibliographies of chapterbib.sty, the tracking ID form
+``chapterbib\textit{inputfile}'' is used, where ``\textit{inputfile}'' is
+the include file (without the .tex suffix) the given citation occurred in.
+The tracking ID of the duplicate bibliographies of chapterbib (produced by
+chapterbib's ``duplicate'' package option) is given by ``chapterbib\textit{inputfile}.bbl''.
+For the rootbib bibliography (produced by chapterbib's ``rootbib'' package option),
+the tracking ID is of the form ``chapterbib\textit{jobname}'', where
+``\textit{jobname}'' is the name of the main .tex document file (without the
+.tex suffix).
+
+For multibib.sty, the tracking ID is given by ``multibib\textit{secname}'', where
+``\textit{secname}'' is the multibib bibliography section name (as declared
+via \MYshortcmd\newcites|end).
+
+For multibbl.sty, the tracking ID is given by ``multibbl\textit{secname}'', where
+``\textit{secname}'' is the multibbl bibliography section name.
+
+For bibunits.sty, the tracking ID of each bibunit is given by
+``bibunits\textit{unitname}'', where ``\textit{unitname}'' is the name of the
+auxiliary file of the desired bibunit without the .aux suffix
+(e.g., ``bu1'', ``bu2'', etc.). Outside of the bibunits, where the global
+bibliography is in effect, the tracking ID of ``main'' is used.
+
+Likewise, mciteplus must know which auxiliary file(s) to write its citation lists
+and bibliography maximum widths and counts to. The standard auxiliary file handles, which
+are simply integers that represent files \TeX\ has opened, are defined as:
+\begin{MYlistblk}
+\MYlongcmd
+\def\mciteauxout{\@auxout}|\
+\def\mcitebibauxout{\@mainaux}|end
+\end{MYlistblk}
+the former of which is used by the mciteplus citation commands and the
+latter of which is used by the \MYshortcmd+mcitethebibliography|end\ environment.
+As with the tracking ID, these may be altered to support other packages
+that have been loaded. Under some packages, such as chapterbib, \LaTeX\ may
+reuse the same file handle number during the course of processing the document.
+Thus, a given file handle number may not refer to the same file in
+different parts of the document.
+
+Note that mciteplus writes all of its maximum width and count
+information to the main auxiliary file even though multiple
+auxiliary files may be in use because it is not certain
+that the other auxiliary files will be read in during \LaTeX\ runs.
+As the tracking ID is written along with the maximum width and count information,
+there will be no confusion as to which bibliography the information pertains to.
+
+
+\subsection{Custom Command Wrappers}
+\label{sec:customwrappers}
+Mciteplus provides two rather complex commands that allow users to define their
+own mciteplus citation command wrappers:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteCiteA*{|itshape+aux out|upshape}{|itshape+track ID|upshape}{|itshape+prehandler|upshape}{|itshape+posthandler|upshape}{|itshape+fwd|upshape}*[|itshape+opt1|upshape][|itshape+opt2|upshape]{|itshape+cite list|upshape}|\
+\mciteCiteB*{|itshape+aux out|upshape}{|itshape+track ID|upshape}{|itshape+prehandler|upshape}{|itshape+posthandler|upshape}{|itshape+fwd|upshape}*[|itshape+opt1|upshape][|itshape+opt2|upshape]{|itshape+sec ID|upshape}{|itshape+cite list|upshape}|end
+\end{MYlistblk}
+Both of these are ``robust'' and can safely be called within footnotes,
+etc. The difference between the two is that the ``B'' form supports citation commands
+that use two arguments, as is the case with the \MYshortcmd\cite|end\ of
+multibbl.sty. \MYshortcmd\mciteCiteA/B|end\ acquires all of the arguments
+listed above (the ``*'' and ``[]'' are optional arguments), but those that appear
+after the \textit{fwd} argument are forwarded (possibly with modification)
+to the command named in the \textit{fwd} argument. The arguments before
+\textit{fwd} are only seen and used by \MYshortcmd\mciteCiteA/B|end.
+
+The meaning of each of the options from left to right is as follows:
+\begin{description}
+\item[*] The star forms (e.g., \MYshortcmd\mciteCiteA/B*|end) disable automatic
+internal processing (via \MYshortcmd\mciteDoList|end\ as discussed below).
+The presence of the star form is indicated by the \TeX\ conditional
+\MYshortcmd\ifmciteMacroStarForm|end.
+\item[\textit{aux out}] The auxiliary file handle number to be used when
+writing out the citation list. Use of the special string ``noauxwrite'' will
+disable auxiliary writes.\footnote{As will the traditional \TeX\ conditional,
+which is defined and used by \LaTeX, \texttt{\mbox{\ZAXbsl if@filesw}}, if it is false.}
+This argument is stored in the macro \MYshortcmd\mciteCiteAuxArg|end.
+\item[\textit{track ID}] The tracking ID to be used. This argument is
+stored in the macro \MYshortcmd\mciteCiteTrackArg|end.
+\item[\textit{prehandler}] The user's prehandler code which will be
+executed before internal \MYshortcmd\mciteDoList|end\ processing. This
+argument is stored in the macro \MYshortcmd\mciteCitePrehandlerArg|end.
+The purpose of the prehandler code is to provide the user a way to alter
+the arguments as needed before further processing.
+\item[\textit{posthandler}] The user's posthandler code which will be
+executed after internal \MYshortcmd\mciteDoList|end\ processing. This
+argument is stored in the macro \MYshortcmd\mciteCitePosthandlerArg|end.
+\item[\textit{fwd}] The citation command the later arguments will be forwarded
+to. This argument is stored in the macro \MYshortcmd\mciteCiteFwdArg|end.
+\item[*] The star for the star form of the forward command.
+The presence of the star form is indicated by the \TeX\ conditional
+\MYshortcmd\ifmciteCiteStarFwdArg|end.
+\item[\textit{opt1}] The first optional argument of the forwarded citation
+command. The presence of this optional argument is
+indicated by the \TeX\ conditional \MYshortcmd\ifmciteMacroOptArgI|end.
+This argument, if present, is stored in the macro \MYshortcmd\mciteCiteOptArgI|end.
+\item[\textit{opt2}] The second optional argument of the forwarded citation
+command. The presence of this optional argument is
+indicated by the \TeX\ conditional \MYshortcmd\ifmciteMacroOptArgII|end.
+This argument, if present, is stored in the macro \MYshortcmd\mciteCiteOptArgII|end.
+\item[\textit{sec ID}] Only used for \MYshortcmd\mciteCiteB|end, this
+is the first argument of two used by the forwarded citation command.
+Under multibbl.sty, this contains the bibliography section name.
+This argument is stored in the macro \MYshortcmd\mciteCiteSecIDArg|end.
+\item[\textit{cite list}] This is the citation list and is
+stored in the macro \MYshortcmd\mciteCiteListArg|end. It is important
+to know that \MYshortcmd\mciteCiteListArg|end\ is \emph{not} forwarded
+as-is, but rather only after the tails are removed. The forwarded
+citation list is the macro \MYshortcmd\mciteFwdCiteListArg|end.
+\end{description}
+\subsubsection{The MciteDoList Engine}
+\label{sec:mcitedolistengine}
+After acquiring its arguments, \MYshortcmd\mciteCiteA/B|end\ executes
+the prehandler code. This is to allow the prehandler code to alter the
+arguments as needed, specifically if the contents of one argument need
+to be based on another. For example, under multibbl.sty, the tracking
+ID has to be based in part on \MYshortcmd\mciteCiteSecIDArg|end.
+
+After the prehandler, the \MYshortcmd\mciteDoList|end\
+command, which forms the core engine of mciteplus, is executed:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteDoList{|itshape+aux out|upshape}{|itshape+track ID|upshape}{|itshape+cite list|upshape}|end
+\end{MYlistblk}
+as:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteDoList{\mciteCiteAuxArg}{\mciteCiteTrackArg}{\mciteCiteListArg}|end
+\end{MYlistblk}
+\MYshortcmd\mciteDoList|end\ records the status of each of the entries, writes the
+citations to the auxiliary file, and then creates \MYshortcmd\mciteheadlist|end\
+which contains only the head entries. A copy of \MYshortcmd\mciteheadlist|end\
+called \MYshortcmd\mciteFwdCiteListArg|end\ is made. This will be
+the actual citation list that is forwarded to the \textit{fwd} command.
+
+Next, \MYshortcmd\mciteExtraDoLists|end\ is
+called. This command is normally, just \MYshortcmd\relax|end, but it can be
+used to create additional sets of entry status, such as when duplicate/global
+bibliographies are being used.
+
+Then, the user's posthandler code is executed.
+
+Finally, the forward command is executed with the (rightmost)
+\MYshortcmd\mciteCiteA/B|end\ arguments forwarded to it, but
+using \MYshortcmd\mciteFwdCiteListArg|end\ for the citation list.
+
+As a practical example, a standard \MYshortcmd\cite|end\ wrapper can be
+created via:
+\begin{MYlistblk}
+\MYlongcmd
+\newcommand{\MYcite}{\mciteCiteA{\mciteauxout}{\mcitetrackID}{\relax}{\relax}{\mciteOrgcite}}|end
+\end{MYlistblk}
+If \MYshortcmd\MYcite|end\ is invoked as:
+\begin{MYlistblk}
+\MYlongcmd
+\MYcite{Glashow,*Salam,*Weinberg}|end
+\end{MYlistblk}
+mciteplus will do a:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteCiteA{\mciteCiteAuxArg}{\mciteCiteTrackArg}{\relax}{\relax}{\mciteOrgcite}{\mciteCiteListArg}|end
+\end{MYlistblk}
+which is the same as:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteCiteA{\mciteauxout}{\mcitetrackID}{\relax}{\relax}{\mciteOrgcite}{Glashow,*Salam,*Weinberg}|end
+\end{MYlistblk}
+which in turn would call:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteDoList{\mciteauxout}{\mcitetrackID}{Glashow,*Salam,*Weinberg}|end
+\end{MYlistblk}
+which will create a \MYshortcmd\mciteheadlist|end\ and
+\MYshortcmd\mciteFwdCiteListArg|end\ containing ``Glashow'', which
+will then be forwarded to the original \LaTeX\ \MYshortcmd\cite|end:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteOrgcite{\mciteFwdCiteListArg}|end
+\end{MYlistblk}
+which is effectively the same as:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteOrgcite{Glashow}|end
+\end{MYlistblk}
+Mciteplus carefully builds up the forwarded arguments using token lists
+so that the forward cite command isn't even aware that it has been
+wrapped within an earlier command. Thus, even cite.sty's automatic
+punctuation and spacing adjustments will work as normal.
+
+Note that command structures that result in ``double calls'' to the miteplus
+engine (i.e., a cite command goes through mciteplus and then forwards to
+another cite command that also goes through mciteplus) although undesirable,
+will still work as intended without error.
+
+\subsection{Mcitethebibliography Hooks}
+\label{sec:mcitethebibliographyhooks}
+Mciteplus supplies the macros \MYshortcmd\mciteBIBdecl|end\ and
+\MYshortcmd\mciteBIBenddecl|end\
+which are executed at the beginning and ending of the
+\MYshortcmd+mcitethebibliography|end\ environment, respectively, before the the normal
+\MYshortcmd+thebibliography|end\ environment is begun or ended. By default they are
+both defined as macros containing only \MYshortcmd\relax|end, but a
+user may redefine them as needed to alter the
+\MYshortcmd+mcitethebibliography|end\ environment setup.
+
+There is also a \MYshortcmd\mcitefwdBIBdecl|end\ which is executed
+just after the original \MYshortcmd+thebibliography|end\ has been
+started (i.e., forwarded) by \MYshortcmd+mcitethebibliography|end.
+This can be used to adjust the setup of \MYshortcmd+thebibliography|end\
+before the first bibliography entry. One potential application is
+to sync the \MYshortcmd+thebibliography|end\ counter to
+\MYshortcmd+mcitebibitemcount|end. This trick can be used to obtain
+continuous numbering of the references under multibbl.sty even though
+that package does not normally provide this feature:
+\begin{MYlistblk}
+\MYlongcmd
+\documentclass{article}|\
+\usepackage{multibbl}|\
+\usepackage{mciteplus}|\
+\mciteResetBibitemCountfalse|\
+\renewcommand{\mcitefwdBIBdecl}{\setcounter{enumiv}{\value{mcitebibitemcount}}}|\
+\begin{document}|\
+.|\
+.|end
+\end{MYlistblk}
+
+
+
+
+\section{Use With External Packages}
+\label{sec:externalpackages}
+Unless the ``nohooks'' option is invoked, mciteplus will automatically
+reconfigure itself and hook into the compatible packages it detects.
+Mciteplus should be loaded after other packages so that it can detect
+the other packages and to ensure that the definitions of the system
+cite commands have been finalized before mciteplus installs its
+wrappers at the beginning of the document.
+
+It is not possible to test or list all of the possible interactions
+among all the various packages. Remember, just because the packages
+below are compatible with mciteplus, does not mean they all are
+compatible with each other, even in the absence of mciteplus. Here
+are some notes regarding the compatibility
+and use of mciteplus with some of the more common \LaTeX\
+bibliography related packages.
+
+
+
+\subsection{Bibunits}
+\label{sec:bibunits}
+Mciteplus is fully compatible with Thorsten Hansen's bibunits
+package \cite{ctan:bibunits}. When using the global bibliography via
+the ``globalcitecopy'' and/or the star form of \MYshortcmd\cite|end,
+beware of the possibility of an mciteplus status (i.e., head or tail)
+conflict if the same entry is cited differently in different parts of
+the document.
+
+
+\subsection{Chapterbib}
+\label{sec:chapterbib}
+Mciteplus is fully compatible with Donald Arseneau's chapterbib
+package \cite{ctan:chapterbib} including the use of the chapterbib
+``duplicate'' and ``rootbib'' package options. \textbf{When using the
+``rootbib'' option, be sure and enable mciteplus'
+``chapterbibrootbib'' option.} Mciteplus is not able to auto-detect
+the rootbib mode of chapterbib directly because when invoking that mode,
+the user must run \LaTeX\ a second time without the rootbib option.
+For all of these \LaTeX\ runs, keep this mciteplus option enabled (i.e.,
+as long as there is, or is going to be, a jobname.bbl file under chapterbib).
+When using the rootbib option, beware of the possibility of an mciteplus
+status (i.e., head or tail) conflict if the same entry is cited differently
+in different parts of the document.
+
+
+\subsection{Cite}
+\label{sec:cite}
+Mciteplus is fully compatible with Donald Arseneau's cite
+package \cite{ctan:citesty}, including cite's \MYshortcmd\citen|end,
+\MYshortcmd\citenum|end\ and \MYshortcmd\citeonline|end\
+variants.
+
+
+\subsection{Citeref}
+\label{sec:citeref}
+Mciteplus will work with Bj\"{o}rn Briel and Uni Oldenburg's citeref
+package \cite{ctan:citeref}.
+
+
+\subsection{Drftcite}
+\label{sec:drftcite}
+Mciteplus is fully compatible with Donald Arseneau's
+drftcite package \cite{ctan:drftcite}, including drftcite's
+\MYshortcmd\citen|end\ variant. To get block aligned entry text
+in the bibliography, set the bibitem maximum width form
+to use the citation keys drftcite uses for the bibliography labels:
+\begin{MYlistblk}
+\MYlongcmd
+\mciteSetMaxWidthForm{bibitem}{\mciteBibitemArgI}|end
+\end{MYlistblk}
+which, in turn, will revise the bibliography sample label
+accordingly. This is not done automatically by mciteplus because
+drftcite does not update the bibliography sample label (even
+in the absence of mciteplus).
+
+
+\subsection{Hyperref/Backref}
+\label{sec:hyperrefbackref}
+Mciteplus should work fine with Sebastian Rahtz and Heiko Oberdiek's
+hyperref package \cite{ctan:hyperref} including it's backref option.
+
+\subsection{Multibbl}
+\label{sec:multibbl}
+Mciteplus is fully compatible with Apostolos Syropoulos's
+multibbl package \cite{ctan:multibbl}.
+
+
+\subsection{Multibib}
+\label{sec:multibib}
+Mciteplus is fully compatible with Thorsten Hansen's multibib
+package \cite{ctan:multibib}. Under mciteplus with natbib,
+multibib is patched to support all of natbib's \MYshortcmd\cite|end\
+variants even though the original multibib only supported
+\MYshortcmd\citep|end, \MYshortcmd\citet|end, \MYshortcmd\citealp|end\ and
+\MYshortcmd\citealt|end. Multibib's internal command name list hook
+\MYshortcmd\@mb@citenamelist|end\ is ignored.
+
+
+\subsection{Natbib}
+\label{sec:natbib}
+Mciteplus is fully compatible with Patrick W. Daly's natbib package
+\cite{ctan:natbib} as long as the bibstyle supports both.
+All of natbib's \MYshortcmd\cite|end\ variants are supported
+including:
+\MYshortcmd\citenum|end,
+\MYshortcmd\citep|end, \MYshortcmd\Citep|end, \MYshortcmd\citet|end,
+\MYshortcmd\Citet|end, \MYshortcmd\citealp|end, \MYshortcmd\Citealp|end,
+\MYshortcmd\citealt|end, \MYshortcmd\Citealt|end, \MYshortcmd\citeauthor|end,
+\MYshortcmd\Citeauthor|end, \MYshortcmd\citeyear|end, \MYshortcmd\citeyearpar|end,
+\MYshortcmd\citepalias|end\ and \MYshortcmd\citetalias|end.
+
+
+\subsection{Notes2bib}
+\label{sec:notes2bib}
+Mciteplus is fully compatible with Joseph Wright's notes2bib package \cite{ctan:notes2bib}.
+However, version 1.3 (January 2008) or later must be used for the notes2bib
+ ``tail'' or ``head'' options to work with mciteplus.
+
+
+\subsection{REV\TeX}
+\label{sec:revtex}
+Mciteplus is fully compatible with Arthur Ogawa and David Carlisle's REV\TeX\ (Version 4)
+class \cite{ctan:revtex}, including support for end notes in the bibliography.
+Note that to support this feature, REV\TeX\ uses its own internal bibliography sample
+label and ignores the ones provided by \BibTeX\ and mciteplus. One annoyance is
+that REV\TeX\ writes the footnote ``citations'' to the auxiliary file which causes
+\BibTeX\ to complain that it can't find these ``entries'' in its database (e.g.,
+``\texttt{Warning--I didn't find a database entry for "endnote7"}''. To stop this
+problem, add the following patch code (which you can cut and paste from \MYsmalltt{mciteplus\_code.txt})
+right after REV\TeX\ is loaded:
+\begin{MYlistblk}
+\MYlongcmd
+|% Patch REVTeX to prevent BibTeX from seeing endnotes as citations|\
+|% Insert just after REVTeX is loaded|\
+\makeatletter|\
+\let\@ORGREVTEXendnotemark\@endnotemark|\
+\let\@ORGREVTEX@makefnmark@cite\@makefnmark@cite|\
+\def\@endnotemark{\bgroup\@fileswfalse\@ORGREVTEXendnotemark\egroup}|\
+\def\@makefnmark@cite{\bgroup\@fileswfalse\@ORGREVTEX@makefnmark@cite\egroup}|\
+\makeatother|end
+\end{MYlistblk}
+
+
+\subsection{Partially Supported Packages}
+\label{sec:partiallysupportedpackages}
+
+\noindent\textbf{Footbib:} Eric Domenjoud's footbib package \cite{ctan:footbib}
+``peacefully coexists'' with mciteplus in the sense that they do not interact.
+At present, an mciteplus compatible bibstyle cannot be used for the footbibliography.
+
+
+\subsection{Incompatible Packages}
+\label{sec:incompatiblepackages}
+Unfortunately, the following packages are currently known not to work with mciteplus.
+Many of them clash with mciteplus on a fundamental level. However, others may be
+supported in the future.
+
+\noindent\textbf{Amsrefs:} David Jones' amsrefs package \cite{ctan:amsrefs}.
+
+\noindent\textbf{Apacite:} Erik Meijer's apacite package \cite{ctan:apacite}.
+
+\noindent\textbf{Biblatex:} Philipp Lehman's biblatex package \cite{ctan:biblatex}.
+Future versions of biblatex may well offer features like those of mciteplus.
+
+\noindent\textbf{Bibtopic:} Stefan Ulrich and Pierre Basso's bibtopic package \cite{ctan:bibtopic}.
+
+\noindent\textbf{Inlinebib:} Ren{\'e} Seindal's inlinebib package \cite{ctan:inlinebib}.
+
+\noindent\textbf{Jurabib:} Jens Berger's jurabib package \cite{ctan:jurabib}.
+
+\noindent\textbf{Opcit:} Federico Garcia's opcit package \cite{ctan:opcit}.
+
+\noindent\textbf{Splitbib:} Nicolas Markey's splitbib package \cite{ctan:splitbib}.
+
+
+\section*{Acknowledgments}
+\addcontentsline{toc}{section}{Acknowledgments}
+First and foremost, the author would like to thank Joseph Wright.
+Joseph beta tested prototype versions as well as provided many
+ideas that improved the final architecture of mciteplus.
+
+Thorsten Ohl's mcite package identified the need for a \LaTeX\
+package that provides this type of bibliography handling and set
+the standard for so doing. Although coded differently, mciteplus
+uses the same basic approach to the problem (i.e., wrap the
+citation command, drop the tails, forward the head list to the
+original cite command, and selectively drop items in the
+bibliography) as originally implemented in mcite.sty.
+
+
+\newcommand{\BIBdecl}{\addcontentsline{toc}{section}{\refname}}
+
+
+
+%\bibliographystyle{IEEEtran}
+%\bibliography{mciteplus_doc}
+
+
+% Generated by IEEEtran.bst, version: 1.13 (2008/09/30)
+\begin{thebibliography}{10}
+\providecommand{\url}[1]{#1}
+\csname url@samestyle\endcsname
+\providecommand{\newblock}{\relax}
+\providecommand{\bibinfo}[2]{#2}
+\providecommand{\BIBentrySTDinterwordspacing}{\spaceskip=0pt\relax}
+\providecommand{\BIBentryALTinterwordstretchfactor}{4}
+\providecommand{\BIBentryALTinterwordspacing}{\spaceskip=\fontdimen2\font plus
+\BIBentryALTinterwordstretchfactor\fontdimen3\font minus
+ \fontdimen4\font\relax}
+\providecommand{\BIBforeignlanguage}[2]{{%
+\expandafter\ifx\csname l@#1\endcsname\relax
+\typeout{** WARNING: IEEEtran.bst: No hyphenation pattern has been}%
+\typeout{** loaded for the language `#1'. Using the pattern for}%
+\typeout{** the default language instead.}%
+\else
+\language=\csname l@#1\endcsname
+\fi
+#2}}
+\providecommand{\BIBdecl}{\relax}
+\BIBdecl
+\renewcommand{\BIBentryALTinterwordstretchfactor}{4}
+
+\bibitem{ctan:mciteplus}
+\BIBentryALTinterwordspacing
+M.~Shell. (2013, Sep.) The mciteplus.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/mciteplus/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:mcite}
+\BIBentryALTinterwordspacing
+T.~Ohl. (1996, Jan.) The mcite.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/mcite/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:revtex}
+\BIBentryALTinterwordspacing
+A.~Ogawa and D.~Carlisle. (2010, Aug.) The {REV\TeX} package. [Online].
+ Available: \url{http://www.ctan.org/tex-archive/macros/latex/contrib/revtex/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:ieeetranbst}
+\BIBentryALTinterwordspacing
+M.~Shell. (2008, Sep.) The {IEEE}tran {{\BibTeX}} style. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/IEEEtran/bibtex/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:hyperref}
+\BIBentryALTinterwordspacing
+S.~Rahtz and H.~Oberdiek. (2012, Nov.) The hyperref.sty package. [Online].
+ Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/hyperref/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:chapterbib}
+\BIBentryALTinterwordspacing
+D.~Arseneau. (2010, Sep.) The chapterbib.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/cite/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:eqparbox}
+\BIBentryALTinterwordspacing
+S.~Pakin. (2013, Mar.) The eqparbox.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/eqparbox/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:alphabst}
+\BIBentryALTinterwordspacing
+O.~Patashnik. (2010, Dec.) The alpha.bst bibstyle. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/biblio/bibtex/base/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:amsrefs}
+\BIBentryALTinterwordspacing
+M.~Downes and D.~M. Jones. (2013, Mar.) The amsrefs package. [Online].
+ Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/amsrefs/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:biblatex}
+\BIBentryALTinterwordspacing
+P.~Lehman and P.~Kime. (2013, Jul.) The biblatex package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/biblatex}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:bibunits}
+\BIBentryALTinterwordspacing
+T.~Hansen. (2004, May) The bibunits.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/bibunits/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:citesty}
+\BIBentryALTinterwordspacing
+D.~Arseneau. (2010, Sep.) The cite.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/cite/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:citeref}
+\BIBentryALTinterwordspacing
+B.~Briel and U.~Oldenburg. (1999, May) The citeref.sty package. [Online].
+ Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/citeref/citeref.sty}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:drftcite}
+\BIBentryALTinterwordspacing
+D.~Arseneau. (2010, Sep.) The drftcite.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/cite/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:multibbl}
+\BIBentryALTinterwordspacing
+A.~Syropoulos. (2004, Jul.) The multibbl.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/multibbl/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:multibib}
+\BIBentryALTinterwordspacing
+T.~Hansen. (2008, Dec.) The multibib.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/multibib/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:natbib}
+\BIBentryALTinterwordspacing
+P.~W. Daly. (2010, Sep.) The natbib.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/natbib/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:notes2bib}
+\BIBentryALTinterwordspacing
+J.~Wright. (2013, Jul.) The notes2bib.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/notes2bib/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:footbib}
+\BIBentryALTinterwordspacing
+E.~Domenjoud. (2010, Feb.) The footbib.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/footbib/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:apacite}
+\BIBentryALTinterwordspacing
+E.~Meijer. (2013, Jul.) The apacite package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/biblio/bibtex/contrib/apacite/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:bibtopic}
+\BIBentryALTinterwordspacing
+S.~Ulrich and P.~Basso. (2006, Sep.) The bibtopic.sty package. [Online].
+ Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/bibtopic/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:inlinebib}
+\BIBentryALTinterwordspacing
+R.~Seindal. (1999, Jul.) The inlinebib.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/biblio/bibtex/contrib/inlinebib/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:jurabib}
+\BIBentryALTinterwordspacing
+J.~Berger. (2004, Jan.) The jurabib.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/jurabib/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:opcit}
+\BIBentryALTinterwordspacing
+F.~Garcia. (2007, Jun.) The opcit.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/opcit/}
+\BIBentrySTDinterwordspacing
+
+\bibitem{ctan:splitbib}
+\BIBentryALTinterwordspacing
+N.~Markey. (2005, Dec.) The splitbib.sty package. [Online]. Available:
+ \url{http://www.ctan.org/tex-archive/macros/latex/contrib/splitbib/}
+\BIBentrySTDinterwordspacing
+
+\end{thebibliography}
+
+
+
+
+
+\end{document}