summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/lexitex/lexitex.doc
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/lexitex/lexitex.doc
Initial commit
Diffstat (limited to 'macros/latex/contrib/lexitex/lexitex.doc')
-rw-r--r--macros/latex/contrib/lexitex/lexitex.doc3643
1 files changed, 3643 insertions, 0 deletions
diff --git a/macros/latex/contrib/lexitex/lexitex.doc b/macros/latex/contrib/lexitex/lexitex.doc
new file mode 100644
index 0000000000..2397b7176a
--- /dev/null
+++ b/macros/latex/contrib/lexitex/lexitex.doc
@@ -0,0 +1,3643 @@
+% \def\fileversion{ver.~2.0j}
+% \def\filedate{1994/12/12}
+% \def\docdate {1994/07/06}
+% \CheckSum{3744}
+%\iffalse
+%
+% Copyright (C) 1992-1994 by Frank Bennett. All rights reserved.
+%
+% This file contains the entire LexiTeX package. The LexiBib
+% package for BibTeX is contained in the separate file
+% lexibib.doc.
+%
+%
+% To get started with unpacking, run this file through DOCSTRIP
+% giving `driver' as the extraction option, with the extension
+% `ins'. Then run the resulting lexitex.ins file through LaTeX,
+% which will strip all of the files in the package. This
+% requires about 10-15 minutes on my 33mhz Linux box, with
+% an X server running; your mileage may vary. To print
+% the manual, edit the lexitex.man file to your taste and run
+% it through LaTeX. To make the reference cards, run lexicard.tex
+% through LaTeX.
+%
+% IMPORTANT NOTICE:
+%
+% You are not allowed to change this file. You may however copy
+% this file to a file with a different name and then change the
+% copy if (a) you do not charge for the modified code, (b) you
+% acknowledge LexiTeX and its author(s) in the new file, if it
+% is distributed to others, and (c) you attach these same
+% conditions to the new file.
+%
+% You are not allowed to distribute this file alone. You are not
+% allowed to take money for the distribution or use of this file
+% (or a changed version) except for a nominal charge for copying
+% etc.
+%
+% You are allowed to distribute this file under the condition that
+% it is distributed with all of its contents, intact.
+%
+% For error reports, or offers to help make LexiTeX a more powerful,
+% friendlier, and better package, please contact me on
+% fbennett@clus1.ulcc.ac.uk
+%\fi
+%
+%
+% \DoNotIndex{\@,\@@par,\@beginparpenalty,\@empty}
+% \DoNotIndex{\@flushglue,\@gobble,\@input}
+% \DoNotIndex{\@makefnmark,\@makeother,\@maketitle}
+% \DoNotIndex{\@namedef,\@ne,\@spaces,\@tempa}
+% \DoNotIndex{\@tempb,\@tempswafalse,\@tempswatrue}
+% \DoNotIndex{\@thanks,\@thefnmark,\@topnum}
+% \DoNotIndex{\@@,\@elt,\@forloop,\@fortmp,\@gtempa,\@totalleftmargin}
+% \DoNotIndex{\",\/,\@ifundefined,\@nil,\@verbatim,\@vobeyspaces}
+% \DoNotIndex{\|,\~,\ ,\active,\advance,\aftergroup,\begingroup,\bgroup}
+% \DoNotIndex{\cal,\csname,\def,\documentstyle,\dospecials,\edef}
+% \DoNotIndex{\egroup}
+% \DoNotIndex{\else,\endcsname,\endgroup,\endinput,\endtrivlist}
+% \DoNotIndex{\expandafter,\fi,\fnsymbol,\futurelet,\gdef,\global}
+% \DoNotIndex{\hbox,\hss,\if,\if@inlabel,\if@tempswa,\if@twocolumn}
+% \DoNotIndex{\ifcase}
+% \DoNotIndex{\ifcat,\iffalse,\ifx,\ignorespaces,\index,\input,\item}
+% \DoNotIndex{\jobname,\kern,\leavevmode,\leftskip,\let,\llap,\lower}
+% \DoNotIndex{\m@ne,\next,\newpage,\nobreak,\noexpand,\nonfrenchspacing}
+% \DoNotIndex{\obeylines,\or,\protect,\raggedleft,\rightskip,\rm,\sc}
+% \DoNotIndex{\setbox,\setcounter,\small,\space,\string,\strut}
+% \DoNotIndex{\strutbox}
+% \DoNotIndex{\thefootnote,\thispagestyle,\topmargin,\trivlist,\tt}
+% \DoNotIndex{\twocolumn,\typeout,\vss,\vtop,\xdef,\z@}
+% \DoNotIndex{\,,\@bsphack,\@esphack,\@noligs,\@vobeyspaces,\@xverbatim}
+% \DoNotIndex{\`,\catcode,\end,\escapechar,\frenchspacing,\glossary}
+% \DoNotIndex{\hangindent,\hfil,\hfill,\hskip,\hspace,\ht,\it,\langle}
+% \DoNotIndex{\leaders,\long,\makelabel,\marginpar,\markboth,\mathcode}
+% \DoNotIndex{\mathsurround,\mbox,\newcount,\newdimen,\newskip}
+% \DoNotIndex{\nopagebreak}
+% \DoNotIndex{\parfillskip,\parindent,\parskip,\penalty,\raise,\rangle}
+% \DoNotIndex{\section,\setlength,\TeX,\topsep,\underline,\unskip,\verb}
+% \DoNotIndex{\vskip,\vspace,\widetilde,\\,\%,\@date,\@defpar}
+% \DoNotIndex{\[,\{,\},\]}
+% \DoNotIndex{\count@,\ifnum,\loop,\today,\uppercase,\uccode}
+% \DoNotIndex{\baselineskip,\begin,\tw@}
+% \DoNotIndex{\a,\b,\c,\d,\e,\f,\g,\h,\i,\j,\k,\l,\m,\n,\o,\p,\q}
+% \DoNotIndex{\r,\s,\t,\u,\v,\w,\x,\y,\z,\A,\B,\C,\D,\E,\F,\G,\H}
+% \DoNotIndex{\I,\J,\K,\L,\M,\N,\O,\P,\Q,\R,\S,\T,\U,\V,\W,\X,\Y,\Z}
+% \DoNotIndex{\1,\2,\3,\4,\5,\6,\7,\8,\9,\0}
+% \DoNotIndex{\!,\#,\$,\&,\',\(,\),\+,\.,\:,\;,\<,\=,\>,\?,\_}
+% \DoNotIndex{\discretionary,\immediate,\makeatletter,\makeatother}
+% \DoNotIndex{\meaning,\newenvironment,\par,\relax,\renewenvironment}
+% \DoNotIndex{\repeat,\scriptsize,\selectfont,\the,\undefined}
+% \DoNotIndex{\arabic,\do,\makeindex,\null,\number,\show,\write,\@ehc}
+% \DoNotIndex{\@author,\@ehc,\@ifstar,\@sanitize,\@title,\everypar}
+% \DoNotIndex{\if@minipage,\if@restonecol,\ifeof,\ifmmode}
+% \DoNotIndex{\lccode,\newtoks,\onecolumn,\openin,\p@,\SelfDocumenting}
+% \DoNotIndex{\settowidth,\@resetonecoltrue,\@resetonecolfalse,\bf}
+% \DoNotIndex{\clearpage,\closein,\lowercase,\@inlabelfalse}
+% \DoNotIndex{\selectfont,\mathcode,\newmathalphabet,\rmdefault}
+% \DoNotIndex{\bfdefault}
+% \setcounter{StandardModuleDepth}{1}
+% \MakeShortVerb{\"}
+%
+% \title{User's Guide\\to\\\LexiTeX\\{\large a context-sensitive citation engine
+% for \LaTeX}\thanks{%
+% This file has version number \fileversion{} dated \filedate{}.
+% The documentation was last revised on \docdate.
+% }}
+% \author{Frank G. Bennett, Jr.\thanks{The text and source code
+% contained in this file are
+% \copyright~1992--1994 by Frank G. Bennett, Jr. This file can
+% be freely distributed; the sole condition of use is that
+% acknowledgement to the author be made in any published work
+% produced using \LexiTeX.
+% The author wishes to thank
+% Steve Bellovin, George Greenwade and Boris Pevzner for their
+% helpful comments on earlier versions on \LexiTeX. Gratitude
+% is also owed to Marcia Elliot and Yoshiko Makino, LL.B.
+% finalists in the Law Department of the School of Oriental
+% and African Studies in 1993 and 1994 respectively, who
+% prepared extended essays using the initial release of \LexiTeX.}}
+% \maketitle
+%
+% \begin{abstract}
+% \noindent This {\tt doc} file contains all of the code and
+% documentation for \LexiTeX, a set of macros
+% that enables \LaTeX\ to produce cross-referenced
+% in-footnote citations for legal and other materials
+% from a single list of citations
+% specified at the top of the document or in a separate citation
+% source file. Citations produced by \LexiTeX\ conform to
+% the style specified in the {\sl Uniform
+% System of Citation} (the `Blue Book'). This style will also
+% generate tables of authorities if required.
+% \end{abstract}
+%
+%
+% \tableofcontents
+% \newpage
+%
+%
+%
+% \bigskip
+% \begin{lexilist}
+% \newbook{bluebook}{}{A Uniform System of Citation}{19th ed.\ 1989}
+% \newbook{knuth}{D.E. Knuth}{The \TeX book}{1990}
+% \newbook{leunen}{M.-C. van Leunen}{A Handbook for Scholars}
+% {1979}
+% \end{lexilist}
+% \lexiforcefoots
+% \hfill {``Now comes the fun part.''}\par
+% \smallskip
+% {\hfill ---Donald Knuth}\lexicite{knuth}+{176}.%
+%
+% \bigskip
+% \section{Preface to release 2.0}
+%
+% This {\tt doc}-format release of \LexiTeX{} replaces the set
+% of files released in June of 1993. There is no change in
+% the syntax used to declare citations, but that for nickname
+% invocations of a cite {\em has\/} changed; some editing of
+% documents prepared for use with the initial release may be
+% required before they will run with the new version.
+% The syntax of the {\tt lexicite.tex} file
+% has also changed. Any alterations that you have made to
+% your existing file must be replicated by hand in the new
+% {\tt lexicite.tex} style definition file. The new syntax
+% in that file has changed only slightly, and the way to
+% proceed should be readily apparent. If you made any
+% changes to this file, please send me a note of them, so that
+% they can maybe be included in a future release.
+%
+% \subsection{Changes over the previous release}
+% \begin{itemize}
+% \item {\bf List input:} It is now possible to input citations from a
+% separate file, and use nickname references throughout
+% the text. This opens the prospect of linking \BibTeX\
+% databases with \LexiTeX\ documents once appropriate
+% \BibTeX\ styles are developed. It also greatly simplifies
+% document editing, since one no longer need worry about
+% assuring that the first use of a citation is in the form
+% of a declaration.
+%
+% \item {\bf List macro storage:} Citation information is now stored in
+% list macro form. This has made it possible to edit macros
+% during processing with \LaTeX, which is necessary both for
+% the list-input feature, and for several enhancements planned
+% for the future.
+%
+% \item {\bf Redundant {\tt\string\xdef} of \meta{cite type
+% name}{\tt faces}:}
+% The
+% last release redefined this macro every time a declaration was
+% made of a new citation---unnecessary, since this information
+% is common to all citations declared in a particular style.
+% This redundancy has been eliminated by moving the relevant
+% definition inside {\tt\string\newcitestyle} where it belongs.
+% It therefore executes once for each cite type, during the
+% processing of {\tt lexicite.tex} at start-up.
+%
+% \item {\bf Redundant arguments:} One of the central processing macros
+% in the old storage routines passed data to a chaining macro
+% both as arguments to that macro {\em and\/} as defined
+% temporary token registers. This bit of confusing and time-wasting
+% silliness has been eliminated.
+%
+% \item {\bf Print routine simplification:} The print routine is still an
+% uncommented mass of conditions, but the method for selecting
+% long- or short-form citations has been changed from the
+% passing of macro arguments and the use of separate print
+% macros to an {\tt\string\if} toggle. This allows a much
+% higher degree of control in further development of the style.
+% \end{itemize}
+%
+% \subsection{Desiderata and future undevelopment}
+% \begin{itemize}
+% \item The `anon' style names in {\tt lexicite.tex} are now
+% optional. Citations with an author argument, or without a
+% last citation part, automatically drop their bridging
+% punctuation, so these styles are no longer necessary.
+%
+% \item We should be able to draw upon an existing list macro in
+% \LaTeX{} in the {\tt\string\@law@clean} routine. I don't
+% know enough about \LaTeX's inner workings to do this;
+% if anyone wants to have a go or suggest how to go about
+% doing things in a less cumbersome way, please do.
+%
+% \item Parallel citations should be supported.
+%
+% \item Hereinafter references should be supported.
+%
+% \item There should be support for cross-referenced styles other
+% than the Blue Book.
+%
+% \item Cross-referencing to different chapters in the same book
+% should refer back to the first cite to the book, rather than
+% seeing each as a separate source. This is difficult, but
+% nothing is impossible.
+%
+% \item Internal sorting of the tables of references could be added.
+%
+% \item \BibTeX\ styles exporting in \LexiTeX\ format would now
+% allow full support for legal publications in \LaTeX.
+%
+% \item There should be more meaningful error messages.
+%\end{itemize}
+% \newpage
+% \pagenumbering{arabic}
+% \section{Introduction}
+%
+% This guide outlines the use of \LexiTeX, a suite of macros
+% for use with the \LaTeX\ typesetting system that automates
+% the formatting of cross-referenced citations in the style
+% specified by the so-called Blue Book.\lexicite{bluebook}{}
+% Using this package, it is possible to maintain a list
+% of cases, articles, books and statutes, and incorporate
+% these into the document in properly cross-referenced
+% footnotes using simple nickname flags. The list of
+% sources may be written into the document, or may be
+% included from a separate file of citations.
+%
+% This package is still under development. This means that
+% there are some citation forms that it cannot produce
+% automatically. It does not (or should not) mean that the
+% behaviour of the formatting engine is in any way
+% unstable or unpredictable. If you find a bug, please
+% inform me, and it will be dealt with as soon as possible.
+% The main citation forms that \LexiTeX\ cannot produce automatically
+% at present are parallel citations to court decisions,
+% and `hereinafter' short-forms. The latter is, at least
+% for U.S. materials, a minor drawback. The former is more
+% serious, and also more difficult to provide for. That
+% said, I do have strategies for providing both, and a future
+% release supporting both of these citation forms is planned.
+% I use \LexiTeX\ every
+% day in my own work; these enhancements {\em will\/}
+% be provided in due course.
+%
+% The ultimate aim in the development of this package is to allow
+% the integration of bibliographies of legal materials stored in \BibTeX\
+% format into \LaTeX\ documents, following conventions similar
+% to those used in preparing ``conventional'' documents with
+% bibliographies. When this is achieved, it
+% will be possible for users to enjoy automated cross-referencing
+% facilities without any need to prepare citations specially for digestion
+% by \LexiTeX; the syntax for declaring citations, described
+% below, will become an interface syntax for transporting citation
+% details between \BibTeX\ and \LexiTeX.
+%
+% Even at present, for the user who has access to \LaTeX\ and
+% is willing to learn a new
+% method of entering citations, this package should make it
+% possible to produce a more professional memorandum with less
+% fuss, in the long run, than required using a straight word-processor.
+%
+% This guide contains basic instructions on the use of
+% \LexiTeX. Users who wish to know more about the inner
+% working of the macros should obtain a copy of this
+% guide that contains the commented listing of the code.
+%
+% \section{Entering citations}
+%
+% \subsection{Generally}
+%
+% Within a document, there are just two forms for entering
+% citations: a declaration form, and a nickname form.
+% A cite declaration feeds \LexiTeX\ the information it needs
+% to generate references to a particular source.
+% A nickname cite tells \LexiTeX\ to expand that citation
+% in the form appropriate to a particular place in the
+% document. Declarations take the form:
+%
+% \begin{quote}
+% {\tt\string\new\meta{style name}\{\meta{nickname}\}%
+% \meta{arguments\ldots}}
+% \end{quote}
+%
+% The various style names are defined in the file
+% {\tt lexicite.tex}. The citation style in which a cite
+% is declared determines
+% the typefaces used in various parts of its printed form,
+% the punctuation that appears between
+% its elements, and whether it will be handled (in
+% making short form citations and generating tables) as
+% a cite to an article, a book, a case or a statute.
+% You can edit the {\tt lexicite.tex} file to add
+% entries or change the behaviour of existing citations,
+% but the distributed file should cover most needs.
+%
+% The style name also determines the number of arguments
+% required by the declaration macro for cites of that
+% style. The maximum possible number of arguments (apart
+% from page references, about which more later) is six.
+% For example, the cite declaration {\tt\string\newarticle}
+% requires all six arguments (nickname, author, title,
+% source, page number and year), while the {\tt\string\newbook}
+% style takes four (nickname, author, title, year).
+% Study the examples in Table 1;
+% with a little practice, the entry of citations in \LexiTeX\
+% format will become second nature, at least for common sources.
+%
+% One item worthy of special note is that citation styles which
+% make use of the second argument (that immediately following
+% the nickname) and the very last argument will automatically
+% eliminate any bridging punctuation pertaining to these arguments
+% if they are
+% missing. So you can equally well type:
+% \begin{quote}
+% \begin{verbatim}
+% \newanonbook{bloggs}{The Boop Diaries}{1994}
+%\end{verbatim}
+% \end{quote}
+% for which the author argument is unnecessary, or:
+% \begin{quote}
+% \begin{verbatim}
+% \newbook{bloggs}{}{The Boop Diaries}{1994}
+%\end{verbatim}
+% \end{quote}
+% for which the author argument is simply empty.
+%
+% Cite declarations can be included in your document in either of two
+% ways: directly in the text as above, or via list input. The only
+% difference between the two is that the latter are placed
+% within a {\tt lexilist} environment. Citations
+% declared within this environment may be entered directly in
+% the document, or may be included from another file using
+% {\tt\string\input}. All of the following entries are valid:
+%
+% \begin{quote}
+% \begin{verbatim}
+% \begin{lexilist}
+% \newbook{ramsrose}{J.M.~Ramseyer \& F.~Rosenbluth}
+% {Japan's Political Marketplace}{1993}
+% \end{lexilist}
+%
+% \begin{lexilist}
+% \input mycites.tex
+% \end{lexilist}
+%
+% \begin{lexilist}
+% \newbook{ramsrose}{J.M. Ramseyer \& F. Rosenbluth}{Japan's
+% Political Marketplace}{1993}
+% \input mycites.tex
+% \end{lexilist}
+%\end{verbatim}
+% \end{quote}
+%
+% You can use multiple input files, and you can have more than
+% one "lexilist" environment in a single document.
+%
+% Citations entered within a {\tt lexilist} environment do not
+% print themselves at that point, but their information is
+% stored for future use. You should therefore put the {\tt lexilist}
+% environment at the top of your document, to be sure \LaTeX\ knows
+% about your citations before it needs them.
+%
+% While citations can be declared in the text where they are
+% first used,
+% there are advantages to using the {\tt
+% lexilist} environment. Collecting citation details
+% in one place makes it easier to clip
+% citations from one document and include them in another.
+% It is also possible to use a common database of citations
+% for several documents.\footnote{Careful with this,
+% though; remember that each citation uses up a little
+% memory; \TeX\ will eventually run out of space.
+% On my system (NTT-J\TeX~1.52 compiled as a big \TeX)
+% the capacity appears to be about 1,000--1,500 citations.
+% Too small for a database, but large enough for most
+% individual documents.}
+% Some short forms change if two works
+% by the same author are cited in the document; list input assures
+% that these citations will be correct throughout the text. It is
+% also convenient to have all of your citations in one place; this
+% makes it easier to snip a citation out of one document and include
+% it in another. Nonetheless, there may be times when you
+% want to enter a citation declaration directly into your text.
+% You can. It will work exactly like a list input declaration,
+% but it will expand into the full form of the citation at the
+% point where it is entered.
+%
+% Nickname citations are entered in the following form:
+%
+% \begin{quote}
+% "\lexicite{"\meta{nickname}"}"
+% \end{quote}
+%
+% There may be times when you want to use a full-form
+% citation in a particular spot. This is permitted by
+% the Blue Book.%
+%\footnote{`\thinspace``{\em Supra}'' and ``hereinafter''
+% {\em may} be used \ldots' (emphasis added). \lexicite{bluebook}+{22}.}
+% If you want to force a full-form citation, you can use
+% "\lexicitefull" instead of "lexicite". Otherwise the
+% reference will automatically shift to sort-form if
+% appropriate in the context. If you set the toggle
+% "\lexiforcefoots" at the top of your
+% document, \LexiTeX\ will create a footnote when it finds
+% a "\lexicite" command in the text, and place the
+% formatted citation inside it.\footnote{Remember, however, that an
+% explicit space should be placed after
+% the {\tt\string\lexicite} command and its arguments (if any) if a space should
+% follow it.}
+%
+% \subsection{Pinpointing references}
+%
+% Citations often refer to a particular page in a work,
+% and page references work differently for long- and short-form
+% citations. These differences are handled automatically
+% by \LexiTeX, drawing upon the style information contained in the
+% citation style used to create the original cite. To append
+% an additional page reference, just type a {\tt+} after
+% the \LexiTeX\ reference, followed by the page number
+% in squiggly braces. This works for initial declarations,
+% full-form nickname citations and short-form nickname citations
+% (But for initial declarations, please note
+% that the {\tt+} goes {\em after\/} the last argument
+% of the declaration):
+%
+% \begin{quote}
+% \begin{verbatim}
+% \newbook{walk}{}{Walker's Britain}{1992}+{126}
+% \end{verbatim}
+% \end{quote}
+% \begin{quote}
+% \begin{verbatim}
+% \lexicite{walk}+{126}
+% \end{verbatim}
+% \end{quote}
+% \begin{quote}
+% \begin{verbatim}
+% \lexicitefull{walk}+{126}
+% \end{verbatim}
+% \end{quote}
+% \subsection{Multiple page references}
+%
+% To add a reference to more than one page, the following
+% syntax is used:
+%
+% \begin{quote}
+% \begin{verbatim}
+% \lexicite{walk}++{{126}\& {132}}
+%\end{verbatim}
+% \end{quote}
+% The "++" tells \LexiTeX\ that plural page or section references
+% are called for. Page references themselves should be enclosed
+% within their own braces, and an outer set of braces must
+% enclose the group. Valid separators between individual
+% page or section references are "\&", "\," and "\dash".
+% These control characters should {\em always\/} be used
+% instead of raw punctuation; they are used in the production
+% of tables.\footnote{Actually, this only applies to statute
+% references, but life is simpler if you keep things uniform.}
+%
+% \subsection{``Advanced'' features}
+%
+% \subsubsection{Producing tables}
+%
+% Most articles do not include tables of cases and statutory
+% references, and law review articles seldom include a bibliography.
+% But if you wish to typeset a book, or if you must check
+% the citations for an extensive article against the original
+% sources, tables of cases and statutes are useful.
+%
+% \LexiTeX\ can generate tables of references
+% automatically.
+% The production of tables is a three-stage process. First,
+% the raw table data must be generated using \hbox{\LaTeX}. Then this
+% raw data is sorted and formatted using the "makeindex"%
+%\footnote{The {\tt makeindex} utility is \copyright{}
+% 1989 by Chen \& Harrison International Systems, Inc.; \copyright{}
+% 1988 by Olivetti Research Center; and \copyright{}
+% 1987 by Regents of the University of California. It is currently
+% maintained by Nelson Beebe, "beebe@math.utah.edu".}
+% utility. Finally, \TeX\ is run on the document again to
+% create the full text containing the finished tables.
+%
+% When the document is run through \TeX\ the first time,
+% the appropriate declarations must appear in the preamble
+% of the document (i.e. between {\tt\string\document\-style}
+% and {\tt\string\begin\{document\}}). The commands for
+% each type of table are: {\tt\string\make\-book\-table},
+% {\tt\string\make\-article\-table}, {\tt\string\make\-case\-table},
+% and {\tt\string\make\-statute\-table}. When \TeX\ is run
+% with these commands present in the preamble, files with
+% the respective extensions {\tt.btb}, {\tt.atb}, {\tt.ctb} and
+% {\tt.stb} will be produced.
+% These must then be processed into properly formatted
+% lists using {\tt makeindex}.%
+%\footnote{The documentation for
+% {\tt makeindex} will explain how it should be set
+% up for your system. On a UNIX or DOS installation,
+% the basic requirements are that the {\tt makeindex}
+% program be in your search path, and that the appropriate
+% environment variable (usually {\tt indexstyle}) be set---%
+% this tells {\tt makeindex} where to find the style
+% files that tell it exactly how to format the finished
+% table lists.} On a UNIX or DOS system you would type the
+% following for each type of table:
+% \begin{itemize}
+% \small
+% \item
+% {\tt makeindex -s lexibook.ist -o} \meta{file name}".bok" \meta{file name}".btb"
+% \item
+% {\tt makeindex -s lexiarti.ist -o} \meta{file name}".art" \meta{file name}".atb"
+% \item
+% {\tt makeindex -s lexicase.ist -o} \meta{file name}".cas" \meta{file name}".ctb"
+% \item
+% {\tt makeindex -s lexistat.ist -o} \meta{file name}".sta" \meta{file name}".stb"
+% \end{itemize}
+% You should then check to be sure the appropriate
+% command or commands among {\tt\string\print\-case\-table},
+% {\tt\string\printstatutetable}, {\tt\string\print\-article\-table} and
+% {\tt\string\print\-book\-table}
+% are in the appropriate places in your document.%
+%\footnote{In other words, at the location where the relevant
+% table should appear.}
+% Run the document
+% through \LaTeX\ again, and the tables should appear in the printed
+% output.
+% To avoid typing the detailed commands required by {\tt makeindx},
+% you might prefer to write a script or batch file for your
+% site that does this automatically for you.
+%
+% For books, articles and cases, only the full citation of the
+% work or source is written to the table file. For statutes, however,
+% \LexiTeX\ writes both the full citation of the statute and
+% any section reference that you have specified, as a
+% sub-entry. When the statute table is sorted, these entries
+% will be arranged in a column below the statute name.
+% This formatting can of course be altered by a wizard.
+% You may find that statute sections appear out of their
+% proper numerical order. This is because {\tt makeindx}
+% performs an alphabetical sort, in which 1's come first,
+% 2's come second, etc., regardless of the number of digits
+% which follow. Can't have everything. In these cases,
+% you need to rearrange the entries by hand before printing.
+%
+% \subsubsection{Selective printing}
+%
+% The simple syntax described so far is sufficient for most situations.
+% However, for some references---particularly references to
+% statutes---greater flexibility is required. \LexiTeX\ provides
+% three special characters that can be used to suppress printing
+% within a document. The characters, and their functions, are
+% as follows:
+%
+% \begin{description}
+% \item[\tt\string^] Putting a "^" at the start and end of a
+% piece of text within the pinpointing argument to a citation
+% causes that text to be printed only in the text, and only
+% when the citation is printed in full form; it will be
+% omitted from the tables when they are printed, and from
+% short-form citations. This is useful for including
+% explanatory comments on an individual's title, for example,
+% in an initial citation. It can also be used to prevent
+% subsections of a statute from being entered on the
+% tables.
+%
+% \item[\tt\string_] Putting a "_" at the start and end
+% of a piece of text within the pinpointing argument causes
+% that text to be printed only in the tables, but to be
+% omitted from the text itself.
+%
+% \item[\tt\string|] Placing a page or section number between
+% "|" characters inside a pinpointing reference to a {\em
+% statute\/} causes that section number to be suppressed
+% when the text is printed, but causes a full entry for
+% the citation, pinpointed to that page or section number,
+% to be written on the statute table raw data file. This
+% is useful as a way of coping with section ranges; \LexiTeX\
+% does not know what the intervening section numbers are,
+% but using this feature you can tell it explicitly.
+% \end{description}
+%
+% It is also possible to suppress the printing of an entire citation
+% in the text
+% by placing a "*" character immediately after the citation.
+% This can be used to assure that a manually-typed citation
+% is correctly cross-referenced by later cites to the same
+% source.
+%\StopEventually{\printbooktable}
+%
+% \section{The Citation Engine: {\tt lexitex.sty}}
+%
+% \subsection{Initialization}
+% \subsubsection{Hello!}
+% To start things off on the right foot, we tell the world
+% who we are.
+% \begin{macrocode}
+%<*lexitex>
+%<!noshorthanding>\ProvidesPackage{lexitex}[1994/12/07]
+%<noshorthanding>\ProvidesPackage{lexitexm}[1994/12/07]
+\NeedsTeXFormat{LaTeX2e}[1993/11/11]
+% \end{macrocode}
+% \subsubsection{Customizable text elements}
+% The user may wish to tailor the text contained in the
+% following control sequence definitions to suit their own
+% language and taste.
+%
+% \begin{macro}{\casetablename}
+% \begin{macro}{\statutetablename}
+% \begin{macro}{\articletablename}
+% \begin{macro}{\booktablename}
+% The use of these four
+% definitions is obvious.
+% \begin{macrocode}
+\def\casetablename{Table of Cases}%
+\def\statutetablename{Table of Statutes}%
+\def\articletablename{Table of Articles}%
+\def\booktablename{Table of Books}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\supra}
+% The following definition specifies the string used to refer to
+% a cite that occurs in a previous footnote, or in a preceding
+% citation to the same source within the same footnote. It is
+% not used in cross-referencing cases and statutes. The extra
+% internal braces only serve to limit the scope of
+% {\tt\string\em}. An italic space ("\/") is not added, since
+% this might be followed by a period.
+% \begin{macrocode}
+\def\supra {, {\em supra}}%
+% \end{macrocode}
+% \end{macro}
+% The {\tt\string\Id} macro defined here is used in referring to
+% immediately preceding works, in the same or in a preceding
+% footnote. If the context demands that {\em Id.} be lower case
+% when it occurs, the user can switch it to lower case by entering
+% {\tt\string\lowcase} immediately before an in-text citation
+% declaration or citation nickname. The lower case macro thus
+% invoked turns itself off after {\em id.} has printed, so no
+% grouping is required.
+% \begin{macrocode}
+\def\Id{{\em\@law@lettercase Id.}}%
+% \end{macrocode}
+% These two tokens hold the text used to indicate the note or
+% page number where a previous reference occurs. These are only
+% used in short-form citations.
+% \begin{macrocode}
+\newtoks\@ltok@userconetop%
+\newtoks\@ltok@userconetopplural%
+\newtoks\@ltok@userptop%
+\newtoks\@ltok@useratbridge%
+\newtoks\@ltok@useratbridgeplural%
+\newtoks\@ltok@infoot
+\@ltok@infoot={\ note\ }
+\newtoks\@ltok@onpage
+\@ltok@onpage={\ page\ }
+% \end{macrocode}
+% The following tokens are used in making proof sheets.
+% Change the content of these to taste, {\em except
+% for\/} "\@ltok@citeforproof" and "\@ltok@otherciteforproof",
+% which mustn't be changed.
+% \begin{macrocode}
+\newtoks\@ltok@proofcitelast
+ \@ltok@proofcitelast{{Editor, publisher and stuff, 1994}}
+\newtoks\@ltok@proofpage
+ \@ltok@proofpage{{12345}}
+\newtoks\@ltok@proofciteone
+ \@ltok@proofciteone{{Source}}
+\newtoks\@ltok@prooftitle
+ \@ltok@prooftitle{{Title of work}}
+\newtoks\@ltok@proofauthor
+ \@ltok@proofauthor{{Author's name}}
+% \end{macrocode}
+% \subsubsection{User selectable switches}
+% The Blue Book\lexicite{bluebook}{} allows us to refer
+% to statutes in a long form or a short form in subsequent
+% references. The long form consists of the name of the Act (if
+% any) plus its source details and the section number. The short
+% form consists of the source details alone.\footnote{{\em See}
+% \lexicite{bluebook}+{25}.}
+% I'm all in favour
+% of saving ink; the default is for short form statute citations.
+% You can have long form subsequent cites by setting
+% "\statuteverboseon" at the top of your document. If you need
+% some other form, let me know; statutes are complex, and rather
+% than trying to do everything from the get-go, this really has
+% to be demand led.
+% \begin{macrocode}
+\newif\if@law@statuteverbose
+\def\statuteverboseon{\@law@statuteverbosetrue}
+\def\statuteverboseoff{\@law@statuteverbosefalse}
+\statuteverboseoff
+% \end{macrocode}
+% \begin{macro}{\lexiforcefoots}
+% This fun little item is used to toggle the "\lexicite"
+% macros to create a footnote if none was typed literally
+% into the text. Great finger-saver for shortie footnotes.
+% Conceived on a whim, implementing this turned out to be
+% non-trivial. I hope you find it useful!
+% \begin{macrocode}
+\newif\if@law@lexiforcefoots
+\def\lexiforcefoots{\global\@law@lexiforcefootstrue}
+% \end{macrocode}
+% \end{macro}
+% \subsubsection{Alternative shorthanding configurations}
+% The following changes make the "_", "^" and "|" characters active,
+% but set them to expand into the form which is normally expected
+% of them in English text.
+% Use of these shorthand characters is explained in the {\sl
+% User's Guide}.
+% The reason this is done globally is that these are used in shorthand
+% formatting expressions that occur mostly in footnotes. In
+% standard \LaTeX, footnote text is read in as an argument to the
+% {\tt\string\footnote} command. It is therefore impossible for a
+% \LexiTeX{} citation macro to redefine the character as active before
+% it is read by \hbox{\TeX}. So if we don't set them as active now,
+% we can't. This seems to live with {\tt index.sty}, but I'm
+% told it blows up with {\tt german.sty}. If you absolutely
+% positively have to avoid having these characters set active,%
+%\footnote{This manual and code readout cannot be printed with
+% these shorthand characters in force, for example.}
+% you can strip this file using the
+% "noshorthanding" option.
+% When \LexiTeX\ is stripped in this way, you can use
+% {\tt\string\TB} (table only) instead of
+% {\tt\string_}, {\tt\string\TX} (text only) instead of {\tt\string^}, and
+% {\tt\string\CT} (clone in table) instead of {"|"}. It's a lot
+% uglier that way, and harder to read, but it should work.
+% If anyone has suggestions
+% for how to fix this better, I'm on "fbennett@clus1.ulcc.ac.uk" .
+% \begin{macrocode}
+%<*!noshorthanding>
+ \ifcat\noexpand_\noexpand~\else
+ \global\catcode`\_=13
+ \global\let_\sb
+\fi
+\ifcat\noexpand^\noexpand~\else
+ \global\catcode`\^=13
+ \global\let^\sp
+\fi
+\ifcat\noexpand|\noexpand~
+\else
+ \global\edef\@boondoggle{|}
+ \global\catcode`\|=13
+ \global\edef|{\@boondoggle}
+\fi
+%</!noshorthanding>
+% \end{macrocode}
+% The shorthanding definitions have to behave differently
+% in different contexts. The definitions shown here are all pretty
+% nearly self-explanatory. Some redefinitions are contained
+% elsewhere in the code, and are documented where they occur.
+% \begin{macrocode}
+\gdef\@law@barkill{\def_##1_{}\def|##1|{}\def^{}}
+\gdef\@law@barnil{\def_{}\def^##1^{}\def|{}}
+\gdef\@law@barinfull{\def^{}}
+\gdef\@law@barinshort{\def^##1^{}}
+% \end{macrocode}
+% The following definitions simply replicate those used for
+% shorthanding; they will only be valid if they are asked for
+% when this file is run through {\tt docstrip}. This file must
+% be stripped for one or the other, but cannot be stripped for
+% both. Again, if anyone has any ideas \ldots
+% \begin{macrocode}
+%<*noshorthanding>
+\gdef\@law@barkill{\def\TB##1\TB{}%
+ \def\CT##1\CT{}%
+ \def\TX{}}%
+\gdef\@law@barnil{\def\TB{}%
+ \def\TX##1\TX{}%
+ \def\CT{}}%
+\gdef\@law@barinfull{\def\TX{}}%
+\gdef\@law@barinshort{\def\TX##1\TX{}}
+%</noshorthanding>
+% \end{macrocode}
+% \changes{2.0g}{94/08/12}{Added {\tt\protect\string\protect\bridges} macro to
+% allow users to specify pinpoint bridges that diverge from the
+% cite style default.}
+% \begin{macrocode}
+\def\bridges#1#2#3#4#5{%
+ \@ltok@userconetop{#1}%
+ \@ltok@userconetopplural{#2}%
+ \@ltok@userptop{#3}%
+ \@ltok@useratbridge{#4}%
+ \@ltok@useratbridgeplural{#5}%
+}
+% \end{macrocode}
+% \subsubsection{Miscellaneous other macros}
+% Sometimes it might be nice to avoid using {\tt--} for some
+% reason, so a macro is defined here. Same thing for exclamation
+% points. One possible use for the latter is to avoid errors
+% when an exported table is sorted by {\tt makeindex}.
+% \begin{macrocode}
+\def\dash{--}
+\def\exclaim{!}%
+% \end{macrocode}
+% The {\tt\string\Id} macro contains its own period. Therefore a
+% period supplied by the user becomes redundant. This macro is
+% redefined to gobble this extra period when necessary.
+% \begin{macrocode}
+\def\@law@gobble{}
+% \end{macrocode}
+% If you think \LexiTeX\ is spiffy, you might want to adorn your
+% documents with a logo, so one is defined here. It is
+% {\tt\string\protect}ed just like the \LaTeX\ logo.
+% \begin{macrocode}
+\def\p@LexiTeX{{\reset@font\rm\ \unskip\hbox{L%
+ \kern-.06em\hbox{\sc e}%
+ \kern-.05em\hbox{\sc x}%
+ \kern-.05em\lower.65ex\hbox{I}%
+ \kern-.18emT%
+ \kern-.1667em\lower.65ex\hbox{E}%
+ \kern-.125emX}}}%
+\def\LexiTeX{\protect\p@LexiTeX}%
+\def\p@LexiBib{{\reset@font\rm\ \unskip\hbox{L%
+ \kern-.06em\hbox{\sc e}%
+ \kern-.05em\hbox{\sc x}%
+ \kern-.05em\hbox{\sc i}%
+ \kern-.06em{\sc B}%
+ \kern-.05em\hbox{\sc i}%
+ \kern-.05em{\sc b}}}}%
+\def\LexiBib{\protect\p@LexiBib}%
+% \end{macrocode}
+% \subsubsection{New environment}
+% There is just one new environment in \LexiTeX, and all it does
+% is set the list-input toggle to true, so that input citations
+% will feed into memory but not print.
+% \begin{macrocode}
+\newenvironment{lexilist}%
+{\@law@listinputtingtrue}{\@law@listinputtingfalse}
+% \end{macrocode}
+% \subsubsection{Token registers}
+% The following are used as temporary token registers in various
+% places.
+% \begin{macrocode}
+\newtoks\@ltok@a
+\newtoks\@ltok@b
+\newtoks\@ltok@argtwo
+\newtoks\@ltok@pagesstring
+% \end{macrocode}
+% The following token registers are used for temporary storage of
+% typeface information.
+% \begin{macrocode}
+\newtoks\@ltok@authormainface
+\newtoks\@ltok@authoroptionface
+\newtoks\@ltok@titlemainface
+\newtoks\@ltok@titleoptionface
+\newtoks\@ltok@citefirstmainface
+\newtoks\@ltok@citefirstoptionface
+\newtoks\ltokspecialface
+% \end{macrocode}
+% One token register is needed to store the name of the current cite type
+% (as declared using {\tt\string\newcitestyle} in the {\tt
+% lexicite.tex} file). With this string in hand, all of the
+% typeface and punctuation bridge information can be recovered
+% for that type of citation.
+% \begin{macrocode}
+\newtoks\@ltok@citetype%
+% \end{macrocode}
+% Tokens to store info on whether a cite is in a footnote or in
+% the main text, and the name of the cite style, in case we
+% need it.
+% \begin{macrocode}
+\newtoks\@ltok@whereitsat
+\newtoks\@ltok@stylename
+% \end{macrocode}
+% Ho-hum. Now we're going to need a bunch of token registers to
+% stash the information for a cite. Token registers have to be
+% used in processing, in order to provide expansion control.
+% \begin{macrocode}
+\newtoks\@ltok@nickname
+\newtoks\@ltok@author
+\newtoks\@ltok@name
+\newtoks\@ltok@citefirst
+\newtoks\@ltok@citepage
+\newtoks\@ltok@citelast
+\newtoks\@ltok@pageorfootno
+\newtoks\@ltok@hereinafter
+\newtoks\@ltok@bigsourcecite
+\newtoks\@ltok@bigsourcepage
+% \end{macrocode}
+% We also need token registers for citation bridge information.
+% \begin{macrocode}
+\newtoks\@ltok@atot
+\newtoks\@ltok@ttocone
+\newtoks\@ltok@conetop
+\newtoks\@ltok@conetopplural
+\newtoks\@ltok@ptop
+\newtoks\@ltok@ptoctwo
+\newtoks\@ltok@atbridge
+\newtoks\@ltok@atbridgeplural
+% \end{macrocode}
+%
+% \begin{macrocode}
+\newtoks\@ltok@plistmacro
+% \end{macrocode}
+% A counter is required to keep track of the number of cites in a
+% footnote, and to store the number that occurred in the previous
+% footnote.
+% \begin{macrocode}
+\newcounter{citesinfoot}
+\newcounter{citeslastfoot}
+% \end{macrocode}
+% \subsubsection{If initializations}
+% We need a toggle so we can turn the print routine on and off;
+% this is necessary for list inputting, and for making phantom
+% references to sources in order to handle weird citation forms.
+% \begin{macrocode}
+\newif\if@law@printcite
+% \end{macrocode}
+% The next one is used by the list-input environment.
+% \begin{macrocode}
+\newif\if@law@listinputting
+% \end{macrocode}
+% The next if will be used to toggle the print routine between
+% long and short citation forms.
+% \begin{macrocode}
+\newif\if@law@longcite
+% \end{macrocode}
+% This will tell us whether we are in a footnote or not.
+% \begin{macrocode}
+\newif\if@law@infoot
+% \end{macrocode}
+% The next "\if" will let us know if the same work was cited
+% immediately before the current cite, and if so, whether
+% we should pay any attention to a page reference, if given.
+% These are adjusted by
+% {\tt\string\@law@justabovecheck}.
+% \begin{macrocode}
+\newif\if@justabove
+\newif\if@l@quiteexact
+% \end{macrocode}
+% The next condition will control the way print output is done
+% in short citation forms; it should set to false for articles
+% and books, and to true for cases and statutes.
+% \begin{macrocode}
+\newif\if@nosupra
+% \end{macrocode}
+% The next is used to signal the presence of {\tt ++}
+% as the argument linking a reference to a page/section number argument.
+% This toggles plural bridges on, and
+% tells the file output routine that, for statutes, each section number
+% should be attached to a complete copy of the citation
+% information. These copies are later reassembled in a set of
+% table entries by {\tt makeindex}.
+% \begin{macrocode}
+\newif\if@law@multipages
+% \end{macrocode}
+% A single "\if" controls whether a table of cases or statutes is
+% exported.
+% \begin{macrocode}
+\newif\if@writecasetable
+\newif\if@writestatutetable
+\newif\if@writearticletable
+\newif\if@writebooktable
+% \end{macrocode}
+% \subsubsection{Macro initializations}
+% The following is a grab-bag of small macros with
+% simple functions. There is more to say about what
+% other macros use them for than about they themselves,
+% so I've put them in the front matter of the code.
+%
+% First is a little something to force a lowercase {\em id.} if
+% necessary. The operation of {\tt\string\normcase} is
+% obvious enough; it defines the case-switching macro
+% to a no-op. \verb+\lowcase+ works by setting
+% the case toggle to force a lowercase letter. The
+% use of \verb+\aftergroup+ allows everything to be turned back
+% on without losing the lowercase letter. This was
+% designed by trial and error; there may be a better way.
+% \begin{macrocode}
+\def\normcase{\def\@law@lettercase{}}
+\def\lowcase{\def\@law@lettercase##1{{\aftergroup\normcase\lowercase{##1}}}}
+\normcase
+% \end{macrocode}
+% The \LexiTeX{} nickname macros are now kept out of the name
+% space by executing them via \verb+\csname\endcsname+,
+% and adding a prefix that makes the macro inaccessible
+% by direct reference within the document. This change
+% was recommended by a user---sorry out there, I can't
+% remember who! Note that any nickname can now contain
+% numbers and other stuff, which is handy for cases, which
+% should be organized according to deciding court and date.
+% If in-text references are being "forced" into footnotes,
+% the footnote toggles are set to true here; the footnote
+% itself is created later, after any optional arguments have
+% been gobbled. Note that footnote forcing will
+% only take effect for "\lexicite" citations, not for
+% in-text declarations. We need a new counter for footnotes,
+% so that we can keep track of footnote numbers while processing
+% forced footnotes outside of the footnote environment.
+% \changes{2.0e}{6 August 1994}{Added the {\tt\protect\string\protect\lexibib}
+% code and related macros, which allow selective printing of
+% coments, holdings, questions and fact patterns direct from
+% a \LexiBib database. A veritable production line for
+% casebooks now---if we can overcome the 3,000 character limit
+% of \BibTeX!}
+% \changes{2.0f}{94/08/11}{Added code for leading volume numbers.}
+% \begin{macrocode}
+\newcount\c@law@footnote%
+\newif\if@law@forcing%
+\def\volno{}%
+% \end{macrocode}
+%
+% \begin{macro}{\lexicite}
+% \begin{macro}{\@lexicite}
+% \begin{macro}{\lexicitefull}
+% \begin{macro}{\@lexicitefull}
+% These constitute the user interface for invoking citations.
+% \begin{macrocode}
+\def\lexicite{\@ifnextchar:{\@lexicite}{\@lexicite::}}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@lexicite:#1:#2{%
+ \def\volno{#1\ }%
+ \@ifundefined{@lnick@#2}{%
+ \expandafter\def\csname @lnick@#2\endcsname{{\small\bf
+ <undefined: #2>}}}%
+ {\relax}%
+ \if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+ \global\c@law@footnote\c@footnote%
+ \if@law@infoot%
+ \global\@law@forcingfalse%
+ \else%
+ \if@law@lexiforcefoots%
+ \@law@footnoteprefix%
+ \advance\c@law@footnote by 1%
+ \global\@law@forcingtrue%
+\else%
+ \fi%
+ \fi%
+\csname @lnick@#2\endcsname}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\lexicitefull{\@ifnextchar:{\@lexicitefull}{\@lexicitefull::}}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@lexicitefull:#1:#2{%
+ \def\volno{#1\ }
+ \@ifundefined{@lnick@#2}{%
+ \expandafter\def\csname @lnick@#2\endcsname{{\small\bf
+ <undefined: #2>}}}%
+ {\global\@law@longcitetrue}%
+ \if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+ \if@law@infoot%
+ \global\c@law@footnote\c@footnote%
+ \else\if@law@lexiforcefoots%
+ \@law@footnoteprefix%
+ \advance\c@law@footnote by 1%
+ \global\@law@forcingtrue%
+ \fi%
+ \fi\csname @lnick@#1\endcsname}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\lexibib}
+% This is used bye \LexiBib{} to declare citations in a {\tt lexilist}
+% environment. Use of a single macro permits
+% {\tt\string\theholding} and its friends to work more simply.
+% \begin{macrocode}
+\def\lexibib#1{\csname new#1\endcsname}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@law@showholding}
+% \begin{macro}{\@law@hideholding}
+% \begin{macro}{\holding}
+% \begin{macro}{\theholding}
+% These macros allow database storage of itemized details of a
+% case holding, and their recall using {\tt\string\theholding}.
+% \begin{macrocode}
+\def\@law@showholding#1{\def\holding{\@law@hideholding}
+ \begin{enumerate}#1\end{enumerate}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@law@hideholding#1{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\holding{\@law@hideholding}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\theholding{\def\lexibib##1##2##3##4##5##6##7{%
+ \edef\@law@temp{\the\@ltok@nickname}
+ \def\@law@temptwo{##2}
+ \ifx\@law@temp\@law@temptwo\def\holding{\@law@showholding}
+ \else\def\holding{\@law@hideholding}\fi}
+\@input {\jobname.bbl}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@law@showcomment}
+% \begin{macro}{\@law@hidecomment}
+% \begin{macro}{\comment}
+% \begin{macro}{\thecomment}
+% These macros allow database storage of
+% comments on a case,
+% and their recall using {\tt\string\thecomment}.
+% \begin{macrocode}
+\def\@law@showcomment#1{\def\comment{\@law@hidecomment}
+ #1}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@law@hidecomment#1{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\comment{\@law@hidecomment}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\thecomment{\def\lexibib##1##2##3##4##5##6##7{%
+ \edef\@law@temp{\the\@ltok@nickname}
+ \def\@law@temptwo{##2}
+ \ifx\@law@temp\@law@temptwo\def\comment{\@law@showcomment}
+ \else\def\comment{\@law@hidecomment}\fi}
+\@input {\jobname.bbl}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@law@showquestions}
+% \begin{macro}{\@law@hidequestions}
+% \begin{macro}{\questions}
+% \begin{macro}{\thequestions}
+% These macros allow database storage of itemized questions on a case,
+% and their recall using {\tt\string\thequestions}.
+% \begin{macrocode}
+% \begin{macrocode}
+\def\@law@showquestions#1{\def\questions{\@law@hidequestions}
+ \begin{enumerate}#1\end{enumerate}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@law@hidequestions#1{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\questions{\@law@hidequestions}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\thequestions{\def\lexibib##1##2##3##4##5##6##7{%
+ \edef\@law@temp{\the\@ltok@nickname}
+ \def\@law@temptwo{##2}
+ \ifx\@law@temp\@law@temptwo\def\questions{\@law@showquestions}
+ \else\def\questions{\@law@hidequestions}\fi}
+\@input {\jobname.bbl}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@law@showfacts}
+% \begin{macro}{\@law@hidefacts}
+% \begin{macro}{\facts}
+% \begin{macro}{\thefacts}
+% These macros allow database storage of the facts of a case,
+% and their recall using {\tt\string\thefacts}.
+% \begin{macrocode}
+\def\@law@showfacts#1{\def\facts{\@law@hidefacts}
+ #1}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@law@hidefacts#1{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\facts{\@law@hidefacts}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\thefacts{\def\lexibib##1##2##3##4##5##6##7{%
+ \edef\@law@temp{\the\@ltok@nickname}
+ \def\@law@temptwo{##2}
+ \ifx\@law@temp\@law@temptwo\def\facts{\@law@showfacts}
+ \else\def\facts{\@law@hidefacts}\fi}
+\@input {\jobname.bbl}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+
+% The following piece of nasty business adds a zeroed counter
+% to the front of the \LaTeX\ footnote routine, so that we can
+% keep track of how many cites there are in a footnote.
+% \begin{macrocode}
+\let\@law@foothold=\footnote
+\def\footnote#1{\@law@footnoteprefix\@law@foothold{#1}%
+ \global\@law@infootfalse}%
+\def\@law@footnoteprefix{\global\@law@infoottrue%
+ \ifnum\the\c@citesinfoot=1\relax%
+ \let\@law@lastcite\@law@currentcite%
+ \else%
+ \def\@law@lastcite{\@dummy}%
+ \fi%
+ \setcounter{citesinfoot}{0}}
+
+% \end{macrocode}
+% The {\tt *.ist} files that accompany {\tt lexitex.sty} use
+% \verb+\leaderfill+ instead
+% of \verb+\dotfill+. When I get around to changing them, this
+% can be cut.
+% \begin{macrocode}
+\let\leaderfill=\dotfill
+% \end{macrocode}
+% We need to initialize the list macro used as a workspace
+% by the list macro handlers.
+% \begin{macrocode}
+\def\@law@templistmacro{}
+\def\@law@tempplistmacro{}
+% \end{macrocode}
+% These macros are used for \verb+\if+-branching in various
+% formatting routines.
+% \begin{macrocode}
+\def\@law@case{case}
+\def\@law@statute{statute}
+\def\@law@article{article}
+\def\@law@book{book}
+% \end{macrocode}
+% \subsection{Main macros}
+% \subsubsection{Utility macros}
+% This section contains larger macros that perform major
+% tasks and smaller bits of code that are complex in their operation.
+% \begin{macro}{\@law@unstashparas}
+% When this is implemented, the above chain of "futurelet" macros
+% will be linked to this "\@law@unstashparas" routine, which fetches
+% any parallel items, and then (in "\@law@setup") performs the restash
+% of the citation if necessary.
+% \begin{macrocode}
+%<*parabeta>
+[HEREIN GOES THE PARALLEL CITATION UNPACKING STUFF]
+[NOTE THAT THIS SHOULD RECYCLE TO ARGSCHECK WHEN DONE]
+[THIS CAN USE TEMPLISTMACRO, BECAUSE EVERYTHING HAS BEEN
+TRANSFERRED TO REGISTERS BY THIS POINT]
+%</parabeta>
+% \end{macrocode}
+% \end{macro}
+% This is a rough set of routines; if anyone has a
+% suggestion on how to more elegantly clean
+% most of \LaTeX's control sequences for export,
+% I would be most grateful to hear from them.
+% The effect of these routines is to convert
+% control sequences
+% that might be sent to the output files into
+% harmless strings. This is necessary because
+% the file cannot be written at the time \verb+\@law@cleanup+
+% is called; the page references would be incorrect.
+% The definitions are local; bracketing the clean command and
+% its arguments will leave the cleaned text in the macro,
+% but restore command strings to operation when \LaTeX\
+% passes out of the current group.
+% The "\ifx" condition at the start is meant to catch empty
+% strings fed to the routine. Without it, things can blow up.
+% The use of "\@law@barnil" (somewhere in the middle) makes the vertical-bar
+% character turn wimpish and disappear, which is what we want.
+% Otherwise it prints weird stuff when it is fed back in through
+% the external table.
+% \begin{macrocode}
+\gdef\@law@clean#1#2{%
+ \def\protect##1{\string##1\space}%
+ \xdef\@law@cleantemp{\the#1}%
+ \ifx\@law@cleantemp\empty%
+ \edef#2{}%
+ \else%
+%<*!noshorthanding>
+ \def^{\string^}%
+ \def_{\string_}%
+%</!noshorthanding>
+ \@law@barnil%
+ \def\exclaim{\string\exclaim}%
+ \def\hbox{\string\hbox}%
+ \def\&{\string\&}\def\%{\string\%}%
+ \def\hskip{\string\hskip}%
+ \def\jintercharskip{\string\jintercharskip}%
+ \def\char{\string\char}%
+ \def~{\string~}\def\/{\string\/}%
+ \def\\{\string\\}\def\ {\string\ }\def\sc{\string\sc\space}%
+ \def\rm{\string\rm\space}\def\bf{\string\bf\space}%
+ \def\em{\string\em\space}%
+ \def\={\string\=}%
+ \def\`{\string\`}\def\'{\string\'}%
+ \def\^{\string\^}\def\"{\string\"}\def\~{\string\~}%
+ \def\.{\string\.}\def\u{\string\u}\def\v{\string\v}%
+ \def\H{\string\H\space}\def\t{\string\t\space}\def\c{\string\c\space}%
+ \def\d{\string\d\space}\def\b{\string\b\space}\def\oe{\string\oe\space}%
+ \def\ae{\string\ae\space}\def\aa{\string\aa\space}\def\o{\string\o\space}%
+ \def\l{\string\l\space}\def\ss{\string\ss\space}%
+ \def\OE{\string\OE\space}\def\AE{\string\AE\space}%
+ \def\AA{\string\AA\space}%
+ \def\O{\string\O\space}\def\L{\string\L\space}%
+ \def\dag{\string\dag\space}\def\ddag{\string\ddag\space}%
+ \def\S{\string\S\space}%
+ \def\P{\string\P\space}%
+ \def\TeX{\string\TeX\space}\def\LaTeX{\string\LaTeX\space}%
+ \def\LexiTeX{\string\LexiTeX\space}%
+ \def\BibTeX{\string\BibTeX\space}\def\-{\string\-}%
+\xdef\@law@temp{\the#1}%
+\xdef#2{\expandafter\expandafter\expandafter\@gobble\expandafter%
+\string\csname\@law@temp\endcsname}%
+\fi}
+% \end{macrocode}
+% This routine runs the cleaning routine on every
+% token register that we want to send to the external
+% files. The result is stored in a macro, since we
+% need the registers for the next citation, and because it
+% will be safe to fully expand the contents after cleaning.
+% \begin{macrocode}
+\def\@law@cleanup{%
+\@law@clean\@ltok@authormainface\@law@authormainfacetemp%
+\@law@clean\@ltok@authoroptionface\@law@authoroptionfacetemp%
+\@law@clean\@ltok@author\@law@authortemp%
+\@law@clean\@ltok@titlemainface\@law@titlemainfacetemp%
+\@law@clean\@ltok@titleoptionface\@law@titleoptionfacetemp%
+\@law@clean\@ltok@argtwo\@law@argtwotemp%
+\@law@clean\@ltok@name\@law@nametemp%
+\@law@clean\@ltok@citepage\@law@citepagetemp%
+\@law@clean\@ltok@citefirstmainface\@law@citefirstmainfacetemp%
+\@law@clean\@ltok@citefirstoptionface\@law@citefirstoptionfacetemp%
+\@law@clean\@ltok@citefirst\@law@citefirsttemp%
+\@law@clean\@ltok@conetop\@law@conetoptemp%
+\@law@clean\@ltok@citelast\@law@citelasttemp%
+\@law@clean\@ltok@ptop\@law@ptoptemp}
+% \end{macrocode}
+% \subsubsection{Declaration of citation types}
+% This section contains macros used in creating the citation
+% declaration macros actually entered in the document by the user.
+% \paragraph{{\tt @newcite} and its friends}
+% The following macros are used to define the macro
+% suites that relate to particular citation types.
+% These are normally invoked by entries in the {\tt lexicite.tex}
+% file, but the \verb+\newcitestyle+ macro is accessible
+% within the document as well.
+% The \verb+\newcitestyle+ macro expects the following arguments:
+% \begin{enumerate}
+% \item the nickname of the citation style to be created;
+% \item a list of typeface and cite type options, in the
+% syntax required by \verb+\@newciteoptions+;
+% \item a list of cite bridges, in the syntax required
+% by \verb+\@newcitebridges+;
+% \item an integer giving the number of arguments the
+% finished cite-generation macro will accept; and
+% \item an argument consisting of a balanced list of six arguments
+% indicating which of the six possible \LexiTeX\ arguments
+% will be used.
+% \end{enumerate}
+% The last two of these are fed to \verb+\newcommand+ as formatting
+% arguments in the creation of citation style macros.
+% In operation, the token register assignments
+% performed by \verb+\@newcitebridges+ and\verb+\@law@parsefaces+
+% are memorized by freezing them in macros whose names are
+% derived from the name of the citation style. The freezing
+% operation is carried out by a list of token assignments
+% within the storage macros. The macros are \verb+\xdef+ed,
+% but the expansion of everything
+% except the existing contents of the registers (inserted
+% at one level of expansion using \verb+\the+) is prevented
+% with \verb+\noexpand+s. The
+% macro containing the faces is created inside \verb+\newcitestyle+
+% itself to save an argument position in the definition of
+% \verb+\@law@parsefaces+; we've used up seven, and there are
+% only two to go. This could be done with list
+% macros as well, but this method probably runs a little
+% faster because it does the job directly. The trade-off
+% is that the \meta{cite type name}{\tt faces} macros
+% contain a lot of non-informative text
+% (the names of the token registers); but there are not
+% many citation types, so it is probably worth the cost.
+% in memory.
+%
+% Note that as of this release, citation declarations
+% defined with \verb+\newcitestyle+ {\em always\/} begin
+% with \verb+\new+. This will help simplify the integration
+% of \BibTeX\ and \LexiTeX.
+% \begin{macrocode}
+\def\newcitestyle#1#2#3#4#5{%
+ \@newcitebridges#1#3%
+ \expandafter\@law@parsefaces#2%
+ \expandafter\xdef\csname#1faces\endcsname{%
+ \noexpand\global\noexpand\@ltok@authormainface\noexpand{%
+ \the\@ltok@authormainface\noexpand}%
+ \noexpand\global\noexpand\@ltok@authoroptionface\noexpand{%
+ \the\@ltok@authoroptionface\noexpand}%
+ \noexpand\global\noexpand\@ltok@titlemainface\noexpand{%
+ \the\@ltok@titlemainface\noexpand}%
+ \noexpand\global\noexpand\@ltok@titleoptionface\noexpand{%
+ \the\@ltok@titleoptionface\noexpand}%
+ \noexpand\global\noexpand\@ltok@citefirstmainface\noexpand{%
+ \the\@ltok@citefirstmainface\noexpand}%
+ \noexpand\global\noexpand\@ltok@citefirstoptionface\noexpand{%
+ \the\@ltok@citefirstoptionface\noexpand}%
+ \noexpand\global\noexpand\@ltok@citetype\noexpand{%
+ \the\@ltok@citetype\noexpand}}%
+ \expandafter\newcommand\csname new#1\endcsname[#4]%
+ {\@newcite{#1}#5}}
+% \end{macrocode}
+% The following are parsing routines that are called by \verb+\newcitestyle+.
+% In \verb+\@law@parsefaces+, the seven arguments are the string of letters
+% in the second argument of \verb+\newcitestyle+.
+% This function has been drastically simplified over
+% the first release. I should have done
+% it this way in the first place and saved myself a lot of
+% aggravation. The code should run a lot faster to boot.
+% \begin{macrocode}
+\def\@law@parsefaces#1#2#3#4#5#6#7{%
+ \@law@parseoneoption\@ltok@authormainface#1%
+ \@law@parseoneoption\@ltok@authoroptionface#2%
+ \@law@parseoneoption\@ltok@titlemainface#3%
+ \@law@parseoneoption\@ltok@titleoptionface#4%
+ \@law@parseoneoption\@ltok@citefirstmainface#5%
+ \@law@parseoneoption\@ltok@citefirstoptionface#6%
+ \@law@parselastoption\@ltok@citetype#7}
+%
+\def\@law@parseoneoption#1#2{%
+ \if#2s\global#1{\sc}\fi%
+ \if#2i\global#1{\em}\fi%
+ \if#2b\global#1{\bf}\fi%
+ \if#2r\global#1{\rm}\fi%
+ \if#2S\global#1{\sc}\fi%
+ \if#2I\global#1{\em}\fi%
+ \if#2B\global#1{\bf}\fi%
+ \if#2R\global#1{\rm}\fi}
+%
+\def\@law@parselastoption#1#2{%
+ \if#2a\global#1{article}\fi%
+ \if#2b\global#1{book}\fi%
+ \if#2c\global#1{case}\fi%
+ \if#2s\global#1{statute}\fi%
+ \if#2A\global#1{article}\fi%
+ \if#2B\global#1{book}\fi%
+ \if#2C\global#1{case}\fi%
+ \if#2S\global#1{statute}\fi}
+% \end{macrocode}
+% Bridges are stored literally, without parsing, so it's
+% easy to stash them directly in a single macro that
+% is fed the arguments. The assignments here are stored
+% by the same method outlined in the description of
+% \verb+\newcitestyle+, above.
+% \changes{2.0h}{94/11/22}{Added a set of token registers (c through
+% j), used in the newcitebridges macro. Initial storage, with the
+% scope of the xdef contained in that macro, to token registers
+% prevents expansion. Corrects a bug that arose with the use of
+% makestatutetable etc with the newly reorganized storage scheme of
+% lexitex.sty.}
+% \begin{macrocode}
+\newtoks\@ltok@c%
+\newtoks\@ltok@d%
+\newtoks\@ltok@e%
+\newtoks\@ltok@f%
+\newtoks\@ltok@g%
+\newtoks\@ltok@h%
+\newtoks\@ltok@i%
+\newtoks\@ltok@j%
+\def\@newcitebridges#1[a]#2[t]#3[c]#4[p]#5(pl)#6[rp]#7[e]:[id]#8(pl)#9[xrf]{%
+\@ltok@c{#2}%
+\@ltok@d{#3}%
+\@ltok@e{#4}%
+\@ltok@f{#5}%
+\@ltok@g{#6}%
+\@ltok@h{#7}%
+\@ltok@i{#8}%
+\@ltok@j{#9}%
+ \expandafter\xdef\csname#1bridges\endcsname{%
+ \noexpand\global\noexpand\@ltok@atot\noexpand{\the\@ltok@c\noexpand}%
+ \noexpand\global\noexpand\@ltok@ttocone\noexpand{\the\@ltok@d\noexpand}%
+ \noexpand\global\noexpand\@ltok@conetop\noexpand{\the\@ltok@e\noexpand}%
+ \noexpand\global\noexpand\@ltok@conetopplural\noexpand{\the\@ltok@g\noexpand}%
+ \noexpand\global\noexpand\@ltok@ptop\noexpand{\the\@ltok@f\noexpand}%
+ \noexpand\global\noexpand\@ltok@ptoctwo\noexpand{\the\@ltok@h\noexpand}%
+ \noexpand\global\noexpand\@ltok@atbridge\noexpand{\the\@ltok@i\noexpand}%
+ \global\@ltok@atbridgeplural\noexpand{\the\@ltok@j\noexpand}}}%
+% \end{macrocode}
+% \subsubsection{Declaration of citation nicknames}
+% The following macros are called by the macros generated
+% by the \verb+\newcitestyle+ macro and its arguments.
+% Their effect is to create nickname macros which can then
+% be called by the user with the \verb+lexicite+ and
+% \verb+\lexicitefull+ commands, with the nickname as
+% a single argument in braces.
+% This macro is called by
+% \verb+\new+\meta{citation type name}. While this macro always takes
+% seven arguments, some of these may be masked off
+% from the user, if fewer than the full possible six
+% arguments were called for in the final argument fed
+% to \verb+\newcitestyle+ in creating the particular
+% \verb+\new+\meta{citation type name} macro that is
+% doing the calling. The arguments are there, the user just
+% can't put anything into them.\\
+% The \verb+\@law@authortracing+
+% macro is actually just a temporary macro; I gave it a
+% descriptive name because it was a struggle to keep my
+% head around what it does as I was programming this.
+% What happens is that a token assignment of the
+% author's name followed by a trip to the cleaning routine
+% is used to store a harmless string consisting of the
+% entire contents of the author's name field in the
+% \verb+\@law@authortracing+ macro. Then this {\em name\/}
+% is defined as a macro, expanding to {\tt 1} or {\tt 2},
+% depending on whether it has been defined once already.
+% The macro may look something
+% like \verb+\Jayeff Huggins~Jr.+. Drastic, but effective.
+% Try doing that with a WordPerfect macro \ldots
+% \changes{2.0g}{94/08/12}{Added new if statement,
+% {\tt\protect\string\protect\if@law@specialbridges}, to indicate whether
+% a special bridge had been noticed before restash by
+% {\tt\protect\string\protect\@law@unstasheverything}.}
+% \begin{macrocode}
+\newif\if@law@specialbridges%
+\def\@newcite#1#2#3#4#5#6#7{%
+{\@ltok@a={#3}\@law@clean\@ltok@a\@law@temp
+\expandafter\ifx\csname\@law@temp\endcsname\relax%
+\expandafter\expandafter\expandafter\xdef\expandafter%
+ \csname\@law@temp\endcsname{1}%
+\else%
+ \expandafter\expandafter\expandafter\xdef\expandafter%
+ \csname\@law@temp\endcsname{2}%
+\fi}%
+% \end{macrocode}
+% The \verb+\@law@stasheverything+ macro creates the
+% list macro that can be used to retrieve all citation
+% details at a later point in the document. \verb+\@law@makecitenick+
+% creates the short macro that knows how to unstash the stored
+% information. Note that this is where things end
+% if we are inside the \verb+lexilist+ environment.\footnote{%
+% The previous release used a {\tt\string\@law@stashinfo} macro
+% that
+% took nine arguments. The last two were just
+% toggles, in effect, for the creation of a long- and a
+% short-form nickname macro. Passing the information in
+% this way required the definition of two separate invocation
+% macros, one for full-form citing and one for short-form
+% citing.
+% This was messy. We now do all of this with
+% true toggles that change the behaviour of a single
+% set of routines. This means:
+% \begin{itemize}
+% \item We don't need two macros; and
+% \item The stash routines can be included in {\tt\string\@newcite}
+% itself---information needn't be passed through macro arguments
+% at all, which helps speed things up.
+% \end{itemize}
+% We have to start by emptying the contents of the temporary
+% list macro; a beta version didn't do this, and loading cites
+% took an amazingly long time. I had problems with ``{\tt TeX capacity
+% exceeded}'' messages, and {\tt\string\tracingmacros=2} showed that every
+% cite was a stack containing the desired cite---and every preceding
+% citation as well!}
+% \changes{2.0g}{94/08/12}{Added conditional code for user
+% bridges to {\tt\protect\@newcite}.}
+% \begin{macrocode}
+\def\@law@templistmacro{}%
+\def\@law@tempplistmacro{}%
+ \xdef\@law@temp{\the\@ltok@useratbridgeplural}%
+ \ifx\@law@temp\empty%
+ \@law@addargument{}\tocitelist%
+ \@law@addargument{}\tocitelist%
+ \@law@addargument{}\tocitelist%
+ \@law@addargument{}\tocitelist%
+ \@law@addargument{}\tocitelist%
+ \else%
+ \@law@addtoken\@ltok@userconetop\tocitelist%
+ \@law@addtoken\@ltok@userconetopplural\tocitelist%
+ \@law@addtoken\@ltok@userptop\tocitelist%
+ \@law@addtoken\@ltok@useratbridge\tocitelist%
+ \@law@addtoken\@ltok@useratbridgeplural\tocitelist%
+ \fi%
+\@law@addargument{#1}\tocitelist%
+\@law@addtoken\@ltok@bigsourcepage\tocitelist% (not yet implemented)
+\@law@addtoken\@ltok@bigsourcecite\tocitelist% (not yet implemented)
+\@law@addtoken\@ltok@hereinafter\tocitelist% (not yet implemented)
+% \end{macrocode}
+% Two fields are made nil during stash; they will be filled
+% when the macro is first unpacked.
+% \begin{macrocode}
+ \@law@addargument{}\tocitelist%
+ \@law@addargument{}\tocitelist%
+\@law@addtoken\@ltok@citetype\tocitelist% cite type
+\@law@addargument{#7}\tocitelist% cite last part
+\@law@addargument{#6}\tocitelist% cite page
+\@law@addargument{#5}\tocitelist% cite first part
+\@law@addargument{#4}\tocitelist% name of work
+\@law@addargument{#3}\tocitelist% author
+\@law@addargument{#2}\tocitelist% nickname
+\def\@law@tempplistmacro{}%
+\@law@paracheckone{#2}}%
+% \end{macrocode}
+%
+% \changes{2.0i}{94/11/23}{Added and tested storage routines for an
+% arbitrary number of parallel citations. Complementary table
+% output and print routines still to come.}
+% \begin{macro}{\@law@paracheckone}
+% \begin{macro}{\@law@parachecktwo}
+% \begin{macro}{\@law@getpara}
+% The following three macros look ahead (after the initial
+% arguments to a cite declaration have been digested but {\em
+% before\/} the cite information has been stored to the list
+% macro) for a {\tt =} sign, which signals parallel citation
+% details. If a {\tt =} sign is found, a further check is made
+% for a {\tt [}, which signals a set of special bridges for the
+% upcoming parallel citation. Note the use of two {\tt =} signs
+% in braces as the first argument to {\tt\string\@ifnextchar}.
+% This is required because of the internal syntax of the
+% {\tt\string\@ifnextchar} macro.
+% \changes{2.0j}{94/12/06}{Cut the second {\tt =} from the {\tt
+% @law@paracheck} and {\tt @law@getpara} macros; it looks as though this was a
+% limitation that is overcome in \LaTeX{} 2.09 compatibility
+% mode; {\tt ==} was a necessary hack in \LaTeX{} 2.09 on my old
+% system, but was producing garbage {\tt =} signs before the
+% start of the document with NTT-J\LaTeX2e{} in 2.09
+% compatibility mode.}
+% \begin{macrocode}
+\def\@law@paracheckone#1{%
+ \def\@law@temp{{#1}}%
+ \@ifnextchar{=}
+ {\expandafter\expandafter\expandafter\@law@parachecktwo
+ \expandafter\@law@temp\@gobble}%
+ {\@@newcite{#1}}}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@law@parachecktwo#1{\@ifnextchar[%
+ {\@law@getpara{#1}}%
+ {\@law@getpara{#1}[,,,,]}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The following add a single set of parallel citation details
+% into a list macro used as a holding area for this purpose.
+% \begin{macrocode}
+\def\@law@getpara#1[#2,#3,#4,#5,#6]#7#8{%
+ \def\@law@temp{{#1}}%
+ \@law@addpargument{{#2}{#3}{#4}{#5}{#6}{#7}{#8}}\tolist%
+ \@ifnextchar{=}
+ {\expandafter\expandafter\expandafter
+ \@law@paracheckone\expandafter\@law@temp\@gobble}%
+ {\@@newcite{#1}}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@@newcite#1{%
+% \end{macrocode}
+% The list macro of parallel citation details built by the
+% routines above is stored as a single item in the general list macro of
+% citation details.
+% \begin{macrocode}
+\@ltok@a\expandafter{\@law@tempplistmacro}%
+\@law@addtoken\@ltok@a\tocitelist%
+\expandafter\global\expandafter\let\csname @ldata@#1\endcsname=\@law@templistmacro%
+\@ltok@userconetop{}%
+\@ltok@userconetopplural{}%
+\@ltok@userptop{}%
+\@ltok@useratbridge{}%
+\@ltok@useratbridgeplural{}%
+% \end{macrocode}
+% Having stashed everything, we're ready to make the nickname
+% macro itself, and print the long form of the cite. We set
+% "\@law@temp" equal to the nickname macro, and expand after
+% the condition so that arguments can be examined---otherwise
+% the first thing the nickname sees will be the "\fi".
+% \begin{macrocode}
+\@law@makecitenick{#1}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \if@law@listinputting\def\@law@nick{}\else%
+ \def\@law@nick{\lexicitefull{#1}}\fi\@law@nick}%
+% \end{macrocode}
+% This macro adds one argument item "#1" to the end
+% of list macro "\@law@templistmacro". This and the
+% other list handlers are modelled on the examples in
+% Knuth's \TeX book.\lexicite{knuth}+{378}{}
+% This and the other macros in this set do their work on
+% one list macro, \verb+\@law@templistmacro+, in order
+% to avoid the need for lots of \verb+\expandafter+s.
+% \begin{macrocode}
+\def\@law@addargument#1\tocitelist{%
+\@law@leftappendargument#1\to\@law@templistmacro}
+\long\def\@law@leftappendargument#1\to#2{\@ltok@a={\\{#1}}%
+ \@ltok@b=\expandafter{#2}%
+ \xdef#2{\the\@ltok@a\the\@ltok@b}}
+% \end{macrocode}
+% This macro adds the contents of one token register to
+% the temporary list macro.
+% \begin{macrocode}
+\def\@law@addtoken#1\tocitelist{\@law@leftappendtoken#1\to\@law@templistmacro}
+\long\def\@law@leftappendtoken#1\to#2{%
+ \xdef\@law@temp{\noexpand\\\noexpand{\the#1\noexpand}}%
+ \@ltok@a=\expandafter{\@law@temp}%
+ \@ltok@b=\expandafter{#2}%
+ \xdef#2{\the\@ltok@a\the\@ltok@b}}
+% \end{macrocode}
+% This macro cuts one token-register item \verb+#1+ from the
+% end of list macro "\@law@templistmacro". The lopoff
+% portion is almost straight out of the TeXbook, except
+% that it stores the lopped element in a token register
+% instead of a macro.
+% \begin{macrocode}
+\def\@law@cut#1\fromcitelist{\@law@lop\@law@templistmacro\to#1}
+\def\@law@lop#1\to#2{\expandafter\@law@lopoff#1\@law@lopoff#1#2}%
+\long\def\@law@lopoff\\#1#2\@law@lopoff#3#4{\global#4={#1}\gdef#3{#2}}
+% \end{macrocode}
+%
+% \begin{macro}{\@law@addpargument}
+% \begin{macro}{\@law@addptoken}
+% \begin{macro}{\@law@pcut}
+% The following three macros are used to manipulate a list
+% macro containing parallel citation details.
+% \begin{macrocode}
+\def\@law@addpargument#1\tolist{%
+\@law@leftappendpargument#1\to\@law@tempplistmacro}
+\long\def\@law@leftappendpargument#1\to#2{\@ltok@a={\\{#1}}%
+ \@ltok@b=\expandafter{#2}%
+ \xdef#2{\the\@ltok@a\the\@ltok@b}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@law@addptoken#1\tolist{\@law@leftappendptoken#1\to\@law@tempplistmacro}
+\long\def\@law@leftappendptoken#1\to#2{%
+ \xdef\@law@temp{\noexpand\\\noexpand{\the#1\noexpand}}%
+ \@ltok@a=\expandafter{\@law@temp}%
+ \@ltok@b=\expandafter{#2}%
+ \xdef#2{\the\@ltok@a\the\@ltok@b}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@law@pcut#1\fromlist{\@law@lop\@law@tempplistmacro\to#1}
+\def\@law@lop#1\to#2{\expandafter\@law@lopoff#1\@law@lopoff#1#2}%
+\long\def\@law@lopoff\\#1#2\@law@lopoff#3#4{\global#4={#1}\gdef#3{#2}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% This macro turns off the gobbling feature (it may be
+% turned on during execution, if {\em Id.} is used),
+% erases any pinpoint reference information that is
+% hanging around, and if we are in a footnote, it
+% increments the counter that was set to zero at the
+% start of the footnote. It then
+% unpacks all of the info for the cite
+% whose nickname is given in \verb+#1+, and puts it into token registers for
+% further processing. After it unpacks the list macro
+% \verb+\@ldata@+\meta{nickname}, it unpacks the formatting
+% details appropriate
+% to the style in which it was declared.
+% After the list is unpacked,
+% {\em if\/} there is no record of a footnote or page number,
+% then this is the first printing of the cite. The note/page
+% and footnote/page number details need to be stored, and
+% then everything has to be {\em repacked\/}
+% for future reference under the appropriate list macro name.
+% The list macro strategy allows on-the-fly editing of
+% macros which adds greatly to the flexibility of
+% the style.\\
+% Note the "parabeta" guard below. When we turn on support for
+% parallel citations, we will need to do the restash work later,
+% after checking for any attached items.
+% \begin{macrocode}
+\def\@law@unstasheverything#1{%
+\def\@law@gobble{}%
+\global\@ltok@argtwo{}%
+\if@law@infoot%
+ \addtocounter{citesinfoot}{1}%
+\fi%
+\expandafter\let\expandafter\@law@templistmacro\csname @ldata@#1\endcsname%
+\@law@cut\@ltok@plistmacro\fromcitelist%
+\@law@cut\@ltok@nickname\fromcitelist%
+\@law@cut\@ltok@author\fromcitelist%
+\@law@cut\@ltok@name\fromcitelist%
+\@law@cut\@ltok@citefirst\fromcitelist%
+\@law@cut\@ltok@citepage\fromcitelist%
+\@law@cut\@ltok@citelast\fromcitelist%
+\@law@cut\@ltok@citetype\fromcitelist%
+\@law@cut\@ltok@whereitsat\fromcitelist%
+\@law@cut\@ltok@pageorfootno\fromcitelist%
+\@law@cut\@ltok@hereinafter\fromcitelist%
+\@law@cut\@ltok@bigsourcecite\fromcitelist%(not yet implemented)
+\@law@cut\@ltok@bigsourcepage\fromcitelist%(not yet implemented)
+\@law@cut\@ltok@stylename\fromcitelist%
+\csname \the\@ltok@stylename bridges\endcsname%
+\csname \the\@ltok@stylename faces\endcsname%
+% \end{macrocode}
+% The following lines check one of the special bridge fields
+% for content. If it is empty, we leave the bridges alone.
+% Otherwise, we replace the default bridges with those selected
+% by the user for this citation.
+% \changes{2.0g}{94/08/12}{Added conditional bridges code
+% for cutting from the citation stack to
+% {\tt\protect\@law@unstasheverything}.}
+% \begin{macrocode}
+\@law@cut\@ltok@a\fromcitelist%
+ \xdef\@law@temp{\the\@ltok@a}%
+ \ifx\@law@temp\empty%
+ \else%
+ \@ltok@atbridgeplural\@ltok@a%
+ \@law@cut\@ltok@atbridge\fromcitelist%
+ \@law@cut\@ltok@ptop\fromcitelist%
+ \@law@cut\@ltok@conetopplural\fromcitelist%
+ \@law@cut\@ltok@conetop\fromcitelist%
+ \@law@specialbridgestrue
+ \fi%
+\edef\@law@temp{\the\@ltok@whereitsat}%
+\ifx\@law@temp\empty%
+ \global\@law@longcitetrue%
+% \end{macrocode}
+% \changes{2.0d}{27 July 1994}{Added a write to the {\tt aux}
+% file for initial uses of a citation. This is the first step toward the
+% \protect\BibTeX\ linkup. (later moved to {\tt\protect\string\protect\lexicite})}
+% \begin{macrocode}
+ \if@law@infoot%
+ \global\@ltok@whereitsat\@ltok@infoot%
+ \global\@ltok@pageorfootno=\expandafter{\the\c@law@footnote}%
+ \else%
+ \global\@ltok@whereitsat\@ltok@onpage%
+ \global\@ltok@pageorfootno=\expandafter{\the\c@page}%
+ \fi%
+% \end{macrocode}
+% \changes{2.0g}{94/08/12}{Added code for re-stashing special
+% bridges to {\tt\protect\string\protect\@law@unstasheverything}.}
+% \begin{macrocode}
+ \if@law@specialbridges%
+ \@law@addtoken\@ltok@conetop\tocitelist%
+ \@law@addtoken\@ltok@conetopplural\tocitelist%
+ \@law@addtoken\@ltok@ptop\tocitelist%
+ \@law@addtoken\@ltok@atbridge\tocitelist%
+ \@law@addtoken\@ltok@atbridgeplural\tocitelist%
+ \else%
+ \@law@addargument{}\tocitelist%
+ \@law@addargument{}\tocitelist%
+ \@law@addargument{}\tocitelist%
+ \@law@addargument{}\tocitelist%
+ \@law@addargument{}\tocitelist%
+ \fi%
+\@law@addtoken\@ltok@stylename\tocitelist% style name
+\@law@addtoken\@ltok@bigsourcepage\tocitelist%(not yet implemented)
+\@law@addtoken\@ltok@bigsourcecite\tocitelist%(not yet implemented)
+\@law@addtoken\@ltok@hereinafter\tocitelist% (not yet implemented)
+\@law@addtoken\@ltok@pageorfootno\tocitelist% (1)(b) stash the footnote bridge
+\@law@addtoken\@ltok@whereitsat\tocitelist% (2)(b) footnote number
+\@law@addtoken\@ltok@citetype\tocitelist% cite type
+\@law@addtoken\@ltok@citelast\tocitelist% cite last part
+\@law@addtoken\@ltok@citepage\tocitelist% cite page
+\@law@addtoken\@ltok@citefirst\tocitelist% cite first part
+\@law@addtoken\@ltok@name\tocitelist% name of work
+\@law@addtoken\@ltok@author\tocitelist% author
+\@law@addtoken\@ltok@nickname\tocitelist% nickname
+\@law@addtoken\@ltok@plistmacro\tocitelist%
+\global\expandafter\let\csname @ldata@#1\endcsname\@law@templistmacro%
+\fi%
+}
+% \end{macrocode}
+% \subsubsection{Calling citation nicknames}
+% The nickname macro defined by this routine
+% (\verb+\@lnick@+\meta{nickname}), is immensely
+% more compact than in the
+% first release. \verb+\@law@argscheck+ eventually
+% leads to \verb+\@law@setup+ after a series of
+% checks for optional arguments. For the longest time I used
+% a "\the" statement for the contents of "\@law@argscheck"; "\noexpand" works
+% just as well and is much simpler to arrange.
+% \begin{macrocode}
+\def\@law@makecitenick#1{%
+ \expandafter\xdef\csname @lnick@#1\endcsname{%
+ \noexpand\@law@unstasheverything\noexpand{#1\noexpand}%
+ \noexpand\@law@argscheck}}
+% \end{macrocode}
+% \begin{macro}{\@law@argscheck}
+% This is a chain of macros that look forward for the
+% markers {\tt *}, {\tt +}, {\tt -}, {\tt ++} and {\tt -+},
+% gobbling the markers and setting toggles along the way.
+% The toggles control whether the cite will print,
+% and whether \LexiTeX\ will assume there is a single or a
+% multiple page/section reference (or none at all, if
+% no flag is seen).
+% \begin{macrocode}
+\long\def\@law@argscheck{%
+ \@ifnextchar+{\@law@printcitetrue\expandafter\@law@argscheckplusplus\@gobble}%
+ {\@law@multipagesfalse\@law@argschecktwo}}
+%
+\long\def\@law@argscheckplusplus{%
+ \@ifnextchar+{\@law@multipagestrue\expandafter\@law@getargs\@gobble}%
+ {\@law@argscheckplusminus}}
+%
+\long\def\@law@argscheckplusminus{%
+ \@ifnextchar-{\@law@multipagestrue\expandafter\@law@getargs\@gobble}%
+ {\@law@multipagesfalse\@law@getargs}}
+%
+\long\def\@law@argschecktwo{%
+ \@ifnextchar-{\@law@printcitefalse\expandafter\@law@getargs\@gobble}%
+ {\@law@argscheckthree}}
+%
+\long\def\@law@argscheckthree{%
+ \@ifnextchar*{\@law@printcitefalse\expandafter\@law@setup\@gobble}%
+ {\global\@law@printcitetrue\@law@setup}}
+% \end{macrocode}
+% These macros are part of the above chain; they are called
+% if a flag is found and \LexiTeX\ has finished its search for
+% more. \verb+\@law@barnil+ redefines the shorthanding
+% characters so that matter will be suppressed or interatively
+% written to the output files as appropriate.
+% \begin{macrocode}
+\def\@law@getargs{\begingroup\@law@barnil\@law@@getargs}
+%
+\def\@law@@getargs#1{\global\@ltok@argtwo{#1}%
+\endgroup\@law@setup}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@law@newcitefirst}
+% The following code will be used to kick off the existing "\@newcite"
+% routine when hereinafter-style references come to be supported.
+% \begin{macrocode}
+%<*hereinafters>
+\def\@law@newcitefirst{\@ifnextchar[]{\catcode`\[=??
+\catcode`\]=??
+\expandafter\@law@newcitesecond\@law@grabhereinafter}
+{\@law@newcite}}
+\def\@law@grabhereinafter#1{\@ltok@hereinafter={#1}
+\catcode`\[=??
+\catcode`\]=??}
+%</hereinafters>
+% \end{macrocode}
+% \end{macro}
+% \subsubsection{Table writes and preliminary formatting}
+% Once the printing information has been stashed, the
+% \verb+\@lnick@+\meta{nickname} macro can be used
+% to extract and print it. After extracting the
+% information and storing it in token registers,
+% this looks forward to gather any pinpointing argument
+% that has been appended to the macro in the text.
+% Once all the the necessary information has been
+% collected, the \verb+\@law@setup+ macro tidies up
+% the formatting of the cite and writes it to the
+% export file, if the creation of tables for that
+% type of citation has been toggled on. It then
+% invokes the print routine.
+%
+% This set of macros supports the operation of \verb+\@law@setup+
+% by redefining one control character and several command
+% strings in such a way that they will write a complete
+% entry to the output file for the citation for each pinpointing
+% reference that follows them. This relevant only for
+% statute citations, which are organized as two-level
+% indexes, with the statute section cited at the second level.
+% The special function of the vertical bar character
+% is to write an entry to the table in this way, without
+% writing anything in the document. This may be necessary
+% where a range of sections is cited; \LexiTeX\ has no way
+% of knowing whether the intervening sections are
+% continuous, so references to them cannot be done automatically.
+% \begin{macrocode}
+ \def\setcherpage#1{\@ltok@argtwo{#1}\write@one@statute@entry}%
+ \def\MiekosPatience{\def\,{\setcherpage}\def\&{\setcherpage}%
+ \def\dash{\setcherpage}\def|##1|{\setcherpage{##1}}%
+ \expandafter\setcherpage\the\@ltok@pagesstring}%
+% \end{macrocode}
+% This macro assumes that all citation information stored
+% for the cite has already been retrieved to appropriate token
+% registers. The redefinition of the backslash character
+% here allows it to be used to select the alternate
+% typeface within a citation argument. The alternate
+% typeface can be changed for all documents by editing
+% the {\tt lexicite.tex} file. Grouping braces enclosing
+% all operations within \verb+\@law@setup+ mean than
+% weird stuff turned on the sole purpose of exporting to
+% tables and printing the citation will turn itself off
+% when the print routine is finished.
+% A routine (\verb+\@law@justabovecheck+) is run to
+% figure out what the citation context is---how
+% a cross-reference should be formatted---and
+% once it's found out what it needs to know about
+% the last citation, information on the current citation
+% is tucked away for reference by this the context-checking
+% routine next time around.
+% A series of checks
+% is performed so that superfluous bridges for which there
+% is no corresponding argument can be erased.
+% Then a file
+% write is performed to the appropriate export file, if
+% creation of that table has been toggled on. And finally
+% the print routine is called. The \verb+\@law@gobble+
+% that follows the end of the group is used to eat
+% a superfluous period if necessary. It is brought to
+% life, if appropriate, by the print routine.
+% \begin{macrocode}
+\long\def\@law@setup{%
+% \end{macrocode}
+% The following operations restash the citation details if
+% necessary; by this point we will have grabbed any parallel
+% citation details that we needed.
+% The backslash character is redefined as a self-resetting
+% font-switching macro.
+% \begin{macrocode}
+{\def\@law@firstslash{\begingroup\def\\{\@law@secondslash}%
+ \the\ltokspecialface}%
+ \def\@law@secondslash{\endgroup\def\\{\@law@firstslash}}%
+ \def\\{\@law@firstslash}%
+% \end{macrocode}
+% This carries out the necessary checks on the context of the
+% current citation.
+% \begin{macrocode}
+\@law@justabovecheck%
+% \end{macrocode}
+% Now that the \verb+\@law@justabovecheck+ macro has been run,
+% it is time to set up for the next comparison.
+% Take note that this source was cited, and of any specific page
+% reference it contains, IF we are in a footnote
+% \begin{macrocode}
+\if@law@infoot%
+ \xdef\@law@currentcite{\the\@ltok@author\the\@ltok@name\the\@ltok@citefirst%
+ \the\@ltok@citepage\the\@ltok@citelast}%
+ \xdef\@law@lastpage{\the\@ltok@argtwo}%
+\fi%
+% \end{macrocode}
+% A number of further tidying-up operations are appropriate
+% regardless of the form in which the citation will
+% be printed. If certain elements are missing, their
+% related bridges must be erased if the citation is not
+% going to look awful.
+% \begin{macrocode}
+ \xdef\@law@temp{\the\@ltok@author}%
+ \ifx\@law@temp\empty%
+ \xdef\@law@temptwo{\the\@ltok@citefirst}%
+ \ifx\@law@temptwo\empty%
+ \global\@ltok@ttocone{}%
+ \fi%
+ \global\@ltok@atot{}%
+ \fi%
+ \xdef\@law@temp{\the\@ltok@citelast}%
+ \ifx\@law@temp\empty%
+ \global\@ltok@ptoctwo{}%
+ \fi%
+ \def\@law@temptwo{()}%
+ \ifx\@law@temp\@law@temptwo%
+ \global\@ltok@ptoctwo{}%
+ \global\@ltok@citelast{}%
+ \fi%
+ \xdef\@law@temp{\the\@ltok@citepage}%
+ \ifx\@law@temp\empty%
+ \global\@ltok@ptop{}%
+ \fi%
+ \xdef\@law@temp{\the\@ltok@argtwo}%
+ \ifx\@law@temp\empty%
+ \global\@ltok@ptop{}%
+ \xdef\@law@temptwo{\the\@ltok@citepage}%
+ \ifx\@law@temptwo\empty%
+ \global\@ltok@conetop{}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Now we run a series of checks to determine the class
+% of citation we are dealing with, and if tables
+% for that type of citation have been turned on, an export is performed.
+% \begin{macrocode}
+ \xdef\@law@temp{\the\@ltok@citetype}%
+ \ifx\@law@temp\@law@case%
+ \if@writecasetable\write@one@case@entry%
+ \fi%
+ \fi%
+ \ifx\@law@temp\@law@statute%
+ \if@writestatutetable%
+ \if@law@multipages%
+ {\@ltok@pagesstring\@ltok@argtwo%
+ \MiekosPatience}%
+ \else%
+ \write@one@statute@entry%
+ \fi%
+ \fi%
+ \fi%
+ \ifx\@law@temp\@law@article%
+ \if@writearticletable\write@one@article@entry%
+ \fi%
+ \fi%
+ \ifx\@law@temp\@law@book%
+ \if@writebooktable\write@one@book@entry%
+ \fi%
+ \fi%
+% \end{macrocode}
+% And here the \verb+\@law@setup+ routine comes to an end;
+% punt to the print routine, possibly followed by a gobble,
+% if {\em Id.} is printed. If footnote ``forcing''
+% is in effect, the printed text is placed in the argument
+% to a vanilla footnote command.
+% \begin{macrocode}
+\if@law@forcing{\@law@foothold%
+ {\@law@print}\global\@law@infootfalse}%
+\else\@law@print\fi}\@law@gobble}
+% \end{macrocode}
+% \subsection{Output routines}
+% Once the citation has been unpacked and the
+% basic tidying up appropriate to all appearances
+% of the citation has been carried out, it is time
+% to ship its contents to the various output routines.
+% \subsubsection{The print macro}
+% This section contains the code for the print routine and
+% its supporting macros. We begin with the supporting stuff.
+% \begin{macro}{\@law@justabovecheck}
+% Check if immediately preceding cite is the same as this one.
+% This macro is called immediately before the citation is
+% printed. There are lots of conditions, but the structure
+% is just a straightforward nesting of \verb+\if+ statements,
+% each of which sets a toggle or toggles appropriately.
+% In the end, this macro tells us:
+% \begin{itemize}
+% \item Whether the immediately-preceding citation is to
+% the same work; and if it is
+% \item Whether the preceding cite had no pinpoint
+% page reference; and if it had one
+% \item Whether the pages referred to by the two cites
+% are exactly identical.
+% \end{itemize}
+% Try {\em that\/} with
+% WordPerfect!
+% If \LexiTeX\ isn't getting the decisions right, let me know.
+% \begin{macrocode}
+\def\@law@justabovecheck{%
+ \xdef\@law@temptwo{\the\@ltok@author\the\@ltok@name%
+ \the\@ltok@citefirst\the\@ltok@citepage%
+ \the\@ltok@citelast}%
+ \ifx\@law@lastcite\@law@temptwo%
+ \ifnum\the\c@citesinfoot=1\relax%
+ \@law@justabovecheckdetails%
+ \else%
+ \ifx\@law@currentcite\@law@temptwo%
+ \@law@justabovecheckdetails%
+ \else%
+ \@justabovefalse%
+ \fi%
+ \fi%
+ \else%
+ \ifnum\the\c@citesinfoot>1\relax%
+ \ifx\@law@currentcite\@law@temptwo%
+ \@law@justabovecheckdetails%
+ \else%
+ \@justabovefalse%
+ \fi%
+ \fi%
+ \fi}
+\def\@law@justabovecheckdetails{%
+ \ifx\@law@lastpage\empty%
+ \@justabovetrue%
+ \@l@quiteexactfalse%
+ \else%
+ \xdef\@law@temp{\the\@ltok@argtwo}%
+ \ifx\@law@temp\empty%
+ \@justabovefalse%
+ \else%
+ \@justabovetrue%
+ \ifx\@law@temp\@law@lastpage%
+ \@l@quiteexacttrue%
+ \else%
+ \@l@quiteexactfalse%
+ \fi%
+ \fi%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% There is just one macro that does the printing, and it
+% is a big one---the rest of this heading is dedicated
+% to this single macro.
+% \begin{macrocode}
+\def\@law@print{%
+% \end{macrocode}
+% This toggles the printing on and off. We can't catch
+% it earlier, because the long citation form toggle can't
+% be touched until after printing.
+% \begin{macrocode}
+\if@law@printcite%
+ \begingroup
+ \def\@law@firstslash{\begingroup\def\\{\@law@secondslash}%
+ \the\ltokspecialface}%
+ \def\@law@secondslash{\endgroup\def\\{\@law@firstslash}}%
+ \def\\{\@law@firstslash}%
+% \end{macrocode}
+% There are two halves to the macro; one for long cite forms,
+% the other for short. Long cite forms are in the first
+% half.
+% \begin{macrocode}
+\if@law@longcite%
+% \end{macrocode}
+% Long citations are pretty straightforward; we've gathered all
+% the information we needed; now we just need to plunk it
+% all down in order, pretty much. The one exception is the
+% page bridges. If the location page exists, we leave the
+% singular bridge alone. If no location page exists, {\em and\/}
+% the pinpoint reference is plural, then we install a plural
+% bridge.
+% \begin{macrocode}
+ \xdef\@law@temp{\the\@ltok@citepage}%
+ \ifx\@law@temp\empty%
+ \if@law@multipages%
+ \global\@ltok@conetop\@ltok@conetopplural%
+ \fi%
+ \fi%
+% \end{macrocode}
+% First to print is the author field (the second argument to the
+% citation declaration command), followed by the
+% author-to-title punctuation bridge. The enclosing
+% braces limit the scope of the special active character
+% definitions of "^", "_" and "|".
+% \begin{macrocode}
+ \global\ltokspecialface=\@ltok@authoroptionface%
+ {\the\@ltok@authormainface%
+ \@law@barinfull\the\@ltok@author}\the\@ltok@atot%
+% \end{macrocode}
+% Next comes similar treatment for the title.
+% \begin{macrocode}
+ \global\ltokspecialface=\@ltok@titleoptionface%
+ {\the\@ltok@titlemainface%
+ \@law@barinfull\the\@ltok@name}\the\@ltok@ttocone%
+% \end{macrocode}
+% And for the first citation part. Ho-hum \ldots
+% \begin{macrocode}
+ \global\ltokspecialface=\@ltok@citefirstoptionface%
+ {\the\@ltok@citefirstmainface%
+ \@law@barinfull\the\@ltok@citefirst}\the\@ltok@conetop%
+% \end{macrocode}
+% Next comes the location page and its following
+% bridge. Both of these may be blank. No funny
+% business with the shorthand active characters is
+% required, since we assume this will not contain
+% any special text for which they will be required.
+% \begin{macrocode}
+ \the\@ltok@citepage\the\@ltok@ptop%
+% \end{macrocode}
+% A special use of "\," is defined before we expand
+% the optional argument stuff.
+% \begin{macrocode}
+{\def\,{,}\@law@barkill\the\@ltok@argtwo}%
+\the\@ltok@ptoctwo%
+% \end{macrocode}
+% And finally, we print the final portion of the citation.
+% \begin{macrocode}
+{\@law@barinfull\the\@ltok@citelast}%
+% \end{macrocode}
+% This else marks the boundary between long-form citations
+% (which we have seen are relatively simple to print)
+% and short-form citations (which are rather complex).
+% This "\else" matches the "\if@law@longcite" conditional.
+% \begin{macrocode}
+\else%
+% \end{macrocode}
+% The footnote number and the accompanying bridge
+% should not appear in a short-form citation if
+% the citation being printed first occurred in the
+% current footnote. Rather than suppressing printing,
+% we just set the relevant tokens to nil.
+% \begin{macrocode}
+ \ifnum\the\@ltok@pageorfootno=\the\c@law@footnote\relax%
+ \if\@ltok@whereitsat\@ltok@infoot%
+ \global\@ltok@whereitsat{}%
+ \global\@ltok@pageorfootno{}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% If \LexiTeX\ found a \verb!++! or a \verb!+-! marker
+% linking a pinpointing argument, the bridges preceding
+% the page references must be set to their plural form.
+% This change applies to both long and short form citations.
+% \begin{macrocode}
+ \if@law@multipages%
+ \@ltok@conetop\@ltok@conetopplural%
+ \@ltok@atbridge\@ltok@atbridgeplural%
+ \fi%
+% \end{macrocode}
+% If for some reason either the pinpoint argument is nil,
+% or it {\em and\/} the location page token register is nil,
+% we set the accompanying bridges to nil.
+% \begin{macrocode}
+ \xdef\@law@temp{\the\@ltok@argtwo}%
+ \ifx\@law@temp\empty%
+ \global\@ltok@ptop{}%
+ \global\@ltok@atbridge{}%
+ \xdef\@law@temptwo{\the\@ltok@citepage}%
+ \ifx\@law@temptwo\empty%
+\global\@ltok@conetop{}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Special forms of tidying-up may be appropriate to
+% each of the four classes of citation. An appropriate
+% cleaning macro is called here.
+% \begin{macrocode}
+\csname @law@\the\@ltok@citetype preformat\endcsname%
+% \end{macrocode}
+% If it has been found that the same citation has been
+% used immediately previous to this instance,
+% we use {\em Id.} If the "\@justabove" test showed
+% that {\em Id.} by itself is appropriate, we prepare
+% to eat any period immediately following the citation
+% macro. Otherwise, we tack on the pinpoint reference
+% and its accompanying bridge. A fail-safe conditional
+% reverts to the original plan if the pinpoint reference
+% is empty.
+% \begin{macrocode}
+ \if@justabove%
+ {\def\,{,}%
+ \Id%
+ \if@l@quiteexact%
+ \gdef\@law@gobble{\@ifnextchar.{\@gobble}{}}%
+ \else%
+ \the\@ltok@atbridge{\@law@barkill\the\@ltok@argtwo}%
+ \xdef\@law@temptwo{\the\@ltok@argtwo}%
+ \ifx\@law@temptwo\empty%
+ \gdef\@law@gobble{\@ifnextchar.{\@gobble}{}}%
+ \fi%
+ \fi}%
+% \end{macrocode}
+% If {\em Id.} was not called for, we have to create
+% a proper short-form reference. This "\else" corresponds
+% with the "\@justabove" toggle, above.
+% \begin{macrocode}
+ \else%
+% \end{macrocode}
+% The author will be used in any case. Note that the author
+% and its following bridge may have been set to nil, above.
+% \begin{macrocode}
+ \global\ltokspecialface=\@ltok@authoroptionface%
+ {\the\@ltok@authormainface%
+% print whatever there if for the author
+ \@law@barinshort\the\@ltok@author}\the\@ltok@atot%
+% \end{macrocode}
+% The title information is also used, if it is present.
+% \begin{macrocode}
+ \global\ltokspecialface=\@ltok@titleoptionface%
+ {\the\@ltok@titlemainface%
+% \end{macrocode}
+% If we have specified a nickname for this cite for
+% `hereinafter' references, we use it instead of the
+% title of the work.
+%<*parabeta>
+[DWEEZLE: a test and a token register replacement goes here.]
+%</parabeta>
+% \begin{macrocode}
+ \@law@barinshort\the\@ltok@name}%
+% \end{macrocode}
+% At this point, we must make decisions concerning whether
+% to use the {\em supra\/} cross-referencing form. This
+% depends on the type of citation we are working on.
+% The "\@nosupra" condition is set to true if we are working
+% on a case or a statute, otherwise it is set to false.
+% \begin{macrocode}
+ \xdef\@law@temp{\the\@ltok@citetype}%
+ \ifx\@law@temp\@law@case%
+ \@nosupratrue%
+ \else%
+ \ifx\@law@temp\@law@statute%
+ \@nosupratrue%
+ \else%
+ \@nosuprafalse%
+ \fi%
+ \fi%
+% \end{macrocode}
+% Now we put the result of the above test to work.
+% First, the citation form for cases or statutes, which
+% do not permit the {\em supra\/} form.
+% \begin{macrocode}
+ \if@nosupra%
+% \end{macrocode}
+% We will always use the first part of the citation
+% (usually the source of the work).
+% \begin{macrocode}
+ \the\@ltok@ttocone%
+ \global\ltokspecialface=\@ltok@citefirstoptionface%
+ {\the\@ltok@citefirstmainface%
+ \@law@barinshort\the\@ltok@citefirst}%
+% \end{macrocode}
+% If the pinpoint reference is empty, we tack on the
+% location page after the appropriate bridge. Otherwise,
+% we do nothing for the present; any pinpoint reference
+% will be produced later on.
+% Note that the bridge
+% used here will only be in plural form if something was
+% given for use as a pinpoint reference.
+% \begin{macrocode}
+ \the\@ltok@conetop%
+ \xdef\@law@temp{\the\@ltok@argtwo}%
+ \ifx\@law@temp\empty%
+ \the\@ltok@citepage%
+ \fi%
+% \end{macrocode}
+% Now we deal with resources other than cases and statutes.
+% This needs just the {\em supra\/} bridge, plus the
+% footnote or page number information pointing to the earlier
+% citation.
+% \begin{macrocode}
+ \else%
+ \supra\the\@ltok@whereitsat\the\@ltok@pageorfootno%
+ \the\@ltok@atbridge%
+ \fi%
+% \end{macrocode}
+% The pinpoint reference, if present, is used for all
+% forms of citation.
+% \begin{macrocode}
+ {\def\,{,}%
+ {\@law@barkill\the\@ltok@argtwo}}%
+% \end{macrocode}
+% The following routine prints the second citation part
+% if the citation is to a statute, and the first citation
+% part was empty. I can't think of a situation where this
+% is necessary, offhand, but it was included in the original
+% coding, so I must have had a stylistic reason for putting
+% it there \ldots
+% \begin{macrocode}
+ \xdef\@law@temp{\the\@ltok@citetype}%
+ \ifx\@law@temp\@law@statute%
+ \xdef\@law@temptwo{\the\@ltok@citefirst}%
+ \ifx\@law@temp\empty%
+ \the\@ltok@ptoctwo{\@law@barinshort\the\@ltok@citelast}%
+ \fi%
+ \fi%
+% \end{macrocode}
+% In order, these close "\if@justabove", "\if@law@longcite"
+% and "\if@law@printcite".
+% \begin{macrocode}
+ \fi%
+ \fi%
+\endgroup%
+\fi% <- end of if@law@printcite
+% \end{macrocode}
+% The "\@law@gobble" here will consume a period inserted
+% automatically after a forced footnote, if the printed
+% form turned out to be an {\em Id.}. See the concluding
+% code of "\@law@setup".
+% \changes{2.0c}{26 July 1994}{Moved {\tt\protect\string%
+% \protect\@law@forcingfalse} outside of a conditional
+% expression at the end of the print routine, to correct
+% the failure of the forcing mechanism to work more than once.}
+% \begin{macrocode}
+\global\@law@longcitefalse\global\def\volno{}%
+\if@law@forcing.\gdef\@law@gobble{\@ifnextchar.{\@gobble}{}}%
+\fi\global\@law@forcingfalse%
+\@law@gobble}%
+% \end{macrocode}
+% \paragraph{Print format subroutines}
+% \begin{macro}{\@law@casepreformat}
+% This is empty; no special preparations are necessary
+% for the printing of a case citation.
+% \begin{macrocode}
+\def\@law@casepreformat{}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@law@statutepreformat}
+% If short statutory references are in force,
+% the title and the following bridge are set to nil,
+% if some reference is provided in the first citation
+% part.
+% \begin{macrocode}
+\def\@law@statutepreformat{%
+\if@law@statuteverbose%
+\else%
+ \xdef\@law@temp{\the\@ltok@citefirst}%
+ \ifx\@law@temp\empty%
+ \else%
+ \global\@ltok@name{}%
+ \global\@ltok@ttocone{}%
+ \fi%
+\fi%
+}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@law@articlepreformat}
+% If a work by the identical author has been cited more than once, we leave
+% everything intact (the print routine does the necessary culling);
+% otherwise, we cut the title here. The use of "\@law@authortracing"
+% is explained above.
+% \begin{macrocode}
+\def\@law@articlepreformat{%
+\xdef\@law@temp{\the\@ltok@author}%
+\ifx\@law@temp\empty%
+\else%
+{\@law@clean\@ltok@author\@law@authortracing%
+\expandafter\expandafter\expandafter\if\expandafter%
+\csname\@law@authortracing\endcsname2%
+ \else%
+ \global\@ltok@atot{}\global\@ltok@name{}%
+\fi}\fi}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@law@bookpreformat}
+% This provides the same treatment given to articles.
+% \begin{macrocode}
+\def\@law@bookpreformat{%
+\xdef\@law@temp{\the\@ltok@author}%
+\ifx\@law@temp\empty%
+\else%
+{\@law@clean\@ltok@author\@law@authortracing%
+\expandafter\expandafter\expandafter\if\expandafter%
+\csname\@law@authortracing\endcsname2%
+ \else%
+ \global\@ltok@atot{}\global\@ltok@name{}%
+ \fi}\fi}%
+% \end{macrocode}
+% \end{macro}
+% \subsection{Proof sheets}
+% The following macros produce a proof sheet that shows all
+% of the permutations of a citation that I can think of.
+% This is useful for those who have to design new citation styles.
+% This is a pretty straightforward exercise, except for the
+% task of feeding a cite declaration exactly the right
+% arguments; this requires re-definition of "\newcitestyle"
+% and the re-parsing of the "lexicite.tex" file.
+%
+% If you find permutations that are not represented here,
+% let me know and I'll add them.
+% \changes{2.0b}{22/vii/94}{Complete re-write of the parsing
+% routines for proof pages, to eliminate much unnecessary
+% complexity.}
+%
+% \begin{macrocode}
+\def\lexihashcheck#1#2{\def\@law@temp{#2}\ifx\@law@temp\empty%
+ #1={}\fi}
+\def\scancitestyle#1#2#3#4#5#6#7{%
+ \begingroup
+ \lexihashcheck\@ltok@proofcitelast{#7}
+ \lexihashcheck\@ltok@proofpage{#6}
+ \lexihashcheck\@ltok@proofciteone{#5}
+ \lexihashcheck\@ltok@prooftitle{#4}
+ \lexihashcheck\@ltok@proofauthor{#3}
+ \expandafter\xdef\csname @law@#1proofdata\endcsname{%
+ \noexpand{proofcite\noexpand}%
+ \the\@ltok@proofauthor
+ \the\@ltok@prooftitle
+ \the\@ltok@proofciteone
+ \the\@ltok@proofpage
+ \the\@ltok@proofcitelast}
+ \expandafter\xdef\csname @law@#1otherproofdata\endcsname{%
+ \noexpand{othercite\noexpand}%
+ \the\@ltok@proofauthor
+ \the\@ltok@prooftitle
+ \the\@ltok@proofciteone
+ \the\@ltok@proofpage
+ \the\@ltok@proofcitelast}
+ \endgroup}
+\def\lexiproofs{\begingroup\def\newcitestyle##1##2##3##4##5{%
+ \scancitestyle{##1}##5}\catcode`\#=12%
+ \input lexicite.tex\endgroup}
+\def\proofpagefor#1{\centerline{\Large \LexiTeX\ Proof Page}
+\medskip
+\centerline{\large for}
+\medskip
+\centerline{\Large\tt\string\new#1}
+\bigskip
+ \def\citestyledeclaration{\csname new#1\endcsname}
+ \expandafter\let\expandafter\proofciteargs
+ \csname @law@#1proofdata\endcsname
+ \expandafter\let\expandafter\otherciteargs
+ \csname @law@#1otherproofdata\endcsname
+\c@footnote=0
+\thispagestyle{empty}
+The footnotes to this text give many of the permutations
+of the \LexiTeX\ citation style named {\tt\string\new#1}.
+Unfortunately, I cannot guarantee that it covers them all.
+This page is produced by the command sequence
+{\tt\string\proofpagefor\string{<blah>\string}},
+where {\tt <blah>} is the name of a citation style (without
+a leading {\tt\string\new}). Used to proofread citation styles
+before they are put to use in typesetting your documents,
+it can help you avoid unexpected results.\\
+\begin{enumerate}
+\item We begin with a full-form citation in the {\tt #1} style,
+with no pinpoint page reference appended.\footnote{%
+\expandafter\citestyledeclaration\proofciteargs.}
+\item Next, we have the full form of the citation, {\em with\/}
+a pinpoint page reference.\footnote{\lexicitefull{proofcite}+{7890}.}
+\item Finishing with full-form references, we then have a full
+citation with a plural pinpoint reference. In this instance
+we use {\tt\string\dash} between the plural
+elements.\footnote{\lexicitefull{proofcite}++{{78}\dash{90}}.}
+\item In the next instance, we have several short-form references to the
+same work. No pinpoint references are given in this series of
+examples.\footnote{\lexicite{proofcite}.
+\lexicite{proofcite}. \lexicite{proofcite}.}
+\item We do the same again, but this time
+the three references have singular
+pinpoint references, each of which is different. As above, the second
+will be in {\em Id.} form, following Blue Book
+convention.\footnote{\lexicite{proofcite}+{67}.
+\lexicite{proofcite}+{78}. \lexicite{proofcite}+{89}.}
+\item Then we do the same again, but with plural pinpoint
+references. This time, we link the page references with
+{\tt\string\&}.\footnote{\lexicite{proofcite}++{{67} \& {89}}.
+\lexicite{proofcite}+{{78} \& {90}}. \lexicite{proofcite}+{{67}
+\& {89}}.}
+\item Now we insert cite to a work by the same
+author.\footnote{\expandafter\citestyledeclaration\otherciteargs.}
+\item A cite to the same work as that in the previous footnote
+is given here. It should reduce to {\em Id.}\footnote{\lexicite{othercite}.}
+\item Styles of articles and books will give differing results
+when two works by the same author exist. We therefore repeat
+the citations of item 4, above.\footnote{\lexicite{proofcite}.
+\lexicite{proofcite}. \lexicite{proofcite}.}
+\item Then we repeat the references from 5, above.\footnote{\lexicite{proofcite}+{67}.
+\lexicite{proofcite}+{78}. \lexicite{proofcite}+{89}.}
+\item And from item 6, above.\footnote{\lexicite{proofcite}++{{67} \& {89}}.
+\lexicite{proofcite}+{{78} \& {90}}. \lexicite{proofcite}+{{67}
+\& {89}}.}
+\end{enumerate}
+\newpage}
+% \end{macrocode}
+% Finally, we input the user-editable supporting files.
+% \begin{macrocode}
+\input lexicite.tex
+\input lexitabl.tex
+%</lexitex>
+% \end{macrocode}
+% \subsubsection{Proof sheet master document}
+% The following short document will generate proof sheets
+% for all of the primary styles on the system. With the standard
+% distribution, this produces twelve pages of output.
+% \begin{macrocode}
+%<*proofsheets>
+\documentclass{article}
+\usepackage{lexitex}[1994/12/07]
+\begin{document}
+\lexiproofs
+\def\newcitestyle#1#2#3#4#5{\proofpagefor{#1}}
+\input lexicite.tex
+\end{document}
+%</proofsheets>
+% \end{macrocode}
+%
+% \subsection{Macros for data export}
+%
+% It may be possible to merge at least three of these
+% export routines together. The current configuration
+% works, however, so that task will have to wait for
+% another day. These macros are based on \LaTeX\ indexing
+% routines---to such an extent that I don't fully understand
+% myself exactly what some of the code actually does.
+% Works though, and many thanks to Leslie Lamport.
+%
+% \paragraph{Cases} The items under each of these sections
+% are the same, although the content of the macros varies slightly.
+% We first address cases.
+%
+% \begin{macro}{\thecasetable}
+% This sets up the page for a case table---places the section
+% header and the running header, and defines the appropriate
+% macro to use for "\item".
+% \begin{macrocode}
+%<*lexitabl>
+\ProvidesFile{lexitabl.tex}[1994/12/07]
+\def\thecasetable{\section*{\casetablename}%
+ \@mkboth{\uppercase{\casetablename}}{\uppercase{\casetablename}}%
+ \thispagestyle{plain}\parindent\z@%
+ \parskip\z@ plus.3\p@\relax\let\item\@ctbitem}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\endthecasetable}
+% This was just borrowed. It restores the text to one-column
+% mode if the case table started that way---probably either
+% redundant or incorrect, since the two-column code has been
+% cut from the original \LaTeX\ model in the "\thecasetable" macro.
+% \begin{macrocode}
+\def\endthecasetable{%
+ \if@restonecol\onecolumn%
+ \else\clearpage%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\casetablespace}
+% This sets up the correct vertical spacing inside the case table.
+% Season to taste.
+% \begin{macrocode}
+\def\casetablespace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\printcasetable}
+% This simply jumps down the page an appropriate amount,
+% defines a double-backslash appropriately, and imports the
+% sorted data file of case citations and page numbers.
+% I wonder, however, whether this can be correctly set up;
+% using this strategy, the special typeface will simply be
+% that which happens to be defined when the table is printed;
+% we haven't yet pulled the {\em cases\/} off the shelf.
+% Further, I believe that the double-backslashes that are
+% exported to the raw data file end up half-expanded there;
+% no double-backslashes should be left when the file is
+% re-input here. If there {\em is\/} a problem here, it is
+% not surprising that it hasn't cropped up in documents
+% yet, since "\\" is most often used to restore to roman
+% from a funny typeface. If trouble {\em does\/} emerge,
+% it will be dead easy to fix.
+% \begin{macrocode}
+\def\printcasetable{%
+{ \raggedright%
+ \def\@ctbitem##1{\par\smallskip\rule{8pt}{0cm}}%
+ \def\@law@firstslash{\begingroup\def\\{\@law@secondslash}%
+ \the\ltokspecialface}%
+ \def\@law@secondslash{\endgroup\def\\{\@law@firstslash}}%
+ \def\\{\@law@firstslash}%
+ \@input{\jobname.cas}}}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\makecasetable}
+% Tricky, or at least sensitive, operations happen here.
+% This defines the declaration that is put in the preamble
+% to trigger the creation of a raw data table for cases.
+% It performs two functions: opening the output file,
+% and defining the macro that is used to write and entry
+% on the file.
+% \begin{macrocode}
+\def\makecasetable{%
+% \end{macrocode}
+% We open the output file immediately. The "\if@filesw"
+% condition brackets the entire macro; I don't know what
+% it's for.
+% \begin{macrocode}
+ \if@filesw \newwrite\@casetablefile%
+ \immediate\openout\@casetablefile=\jobname.ctb%
+% \end{macrocode}
+% Then the write macro is defined. "\@bsphack" is a mystery
+% to me, and so is "\@sanitize". The definition of
+% "\protect" here just makes a string of anything preceded
+% by "\protect"; character codes don't matter, since this
+% exported data will be re-read afresh later.
+% \begin{macrocode}
+ \def\write@one@case@entry{\@bsphack\begingroup%
+ \def\protect####1{\string####1\space}\@sanitize%
+% \end{macrocode}
+% "\thepage" is set to nil now; it is redefined (I think)
+% during the actual file write, so that it accords with the
+% actual page on which the entry is printed.
+% \begin{macrocode}
+ \let\thepage\relax%
+% \end{macrocode}
+% The "\@law@cleanup" macro here effectively "\protect"s
+% things that could expand into unprintable commands during
+% export.
+% \begin{macrocode}
+ \@law@cleanup%
+% \end{macrocode}
+% This is straight \LaTeX\ strategy still. I'm not sure why
+% I'm not quite sure why "\@tempa" is "\edef"ed and then
+% expanded outside the group. It may simply be that this
+% assures that "\@tempa" does not consume memory unnecessarily.
+% Alternatively, it may assure that the conditions inside the
+% group govern one level of expansion, and those outside the
+% group govern another. If anyone can clarify this,
+% I would appreciate it.
+%
+% The literal write of "\casetableentry" is the macro that
+% will formats and prints an entry in the finished table.
+% \begin{macrocode}
+ \edef\@tempa{\write\@casetablefile{\string\casetableentry%
+% \end{macrocode}
+% Here, it's just a matter of putting down the citation details.
+% The "\@ltok@nickname" register has its own set of brackets;
+% "\casetableentry" will see it as its first argument, and
+% it will throw it away. It is used only to establish the
+% order of the sort for "makeindex".
+% \begin{macrocode}
+ {{\the\@ltok@nickname}%
+ {{\@law@titlemainfacetemp%
+ \ltokspecialface=\noexpand{\@law@titleoptionfacetemp\noexpand}%
+ \@law@nametemp}%
+ \the\@ltok@ttocone%
+ {\@law@citefirstmainfacetemp%
+ \ltokspecialface=\noexpand{\@law@citefirstoptionfacetemp\noexpand}%
+ \@law@citefirsttemp}%
+ \@law@conetoptemp%
+ \@law@citepagetemp%
+ \the\@ltok@ptoctwo\@law@citelasttemp}}{\thepage}}}%
+ \expandafter\endgroup\@tempa%
+% \end{macrocode}
+% I haven't a clue what the concluding code to this internally defined
+% portion of the macro is for. Sorry.
+% \begin{macrocode}
+ \if@nobreak%
+ \ifvmode%
+ \nobreak%
+ \fi%
+ \fi%
+ \@esphack}%
+% \end{macrocode}
+% We finish by telling the rest of the style to pay attention
+% to case table options, and by reminding the user of what
+% is going on with his file.
+% \begin{macrocode}
+ \@writecasetabletrue
+ \typeout{Writing case table file \jobname.ctb;}\fi}
+% \end{macrocode}
+% \end{macro}
+% \paragraph{Statutes} Herein the stuff for exporting
+% statute data.
+%
+% \begin{macro}{\thestatutetable}
+% This corresponds to "\thecasetable", above. It's the same
+% darn thing, except that it turns on columns.
+% \begin{macrocode}
+\def\thestatutetable{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi%
+\twocolumn\section*{\statutetablename}%
+ \@mkboth{\uppercase{\statutetablename}}%
+{\uppercase{\statutetablename}}%
+ \thispagestyle{plain}\parindent\z@%
+ \parskip\z@ plus.3\p@\relax\let\item\@stbitem}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\endthestatutetable}
+% This corresponds to "\endthecasetable", above.
+% \begin{macrocode}
+\def\endthestatutetable{%
+ \if@restonecol\onecolumn%
+ \else\clearpage%
+ \fi}%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\statutetablespace}
+% \begin{macrocode}
+\def\statutetablespace{\par \vskip 10\p@ plus5%
+ \p@ minus3\p@\relax}%
+\def\printstatutetable{%
+{ \def\@law@firstslash{\begingroup\def\\{\@law@secondslash}%
+ \the\ltokspecialface}%
+ \def\@law@secondslash{\endgroup\def\\{\@law@firstslash}}%
+ \def\\{\@law@firstslash}%
+\def\@stbitem##1{\par\hangindent 20\p@}%
+\@input{\jobname.sta}}}%
+% \end{macrocode}
+% \end{macro}
+% Define declaration that makes a statute table.
+% \begin{macrocode}
+\def\makestatutetable{%
+ \if@filesw \newwrite\@statutetablefile%
+ \immediate\openout\@statutetablefile=\jobname.stb%
+ \def\write@one@statute@entry{\@bsphack\begingroup%
+ \def\protect####1{\string####1\space}\@sanitize%
+ \let\thepage\relax%
+\@law@cleanup%
+ \edef\@tempa{\write\@statutetablefile{\string%
+ \statutetableentry%
+ {{\the\@ltok@nickname}%
+ {{\@law@titlemainfacetemp%
+ \ltokspecialface=\noexpand{\@law@titleoptionfacetemp\noexpand}%
+ \@law@nametemp}%
+ \the\@ltok@ttocone%
+ {\@law@citefirstmainfacetemp%
+ \ltokspecialface=\noexpand{\@law@citefirstoptionfacetemp\noexpand}%
+ \@law@citefirsttemp}}%
+ \ifx\@law@argtwotemp\empty\else!%
+ {\@law@conetoptemp\@law@argtwotemp}\fi}{\thepage}}}%
+ \expandafter\endgroup\@tempa%
+ \if@nobreak%
+ \ifvmode%
+ \nobreak%
+ \fi%
+ \fi%
+ \@esphack}%
+ \@writestatutetabletrue
+ \typeout{Writing statute table file \jobname.stb;}\fi}
+% \end{macrocode}
+% \paragraph{Articles}
+% \begin{macrocode}
+\def\thearticletable{\section*{\articletablename}%
+ \@mkboth{\uppercase{\articletablename}}%
+ {\uppercase{\articletablename}}%
+ \thispagestyle{plain}\parindent\z@%
+ \parskip\z@ plus.3\p@\relax\let\item\@ctbitem}%
+\def\endthearticletable{%
+ \if@restonecol\onecolumn%
+ \else\clearpage%
+ \fi}%
+% \end{macrocode}
+% \begin{macrocode}
+\def\articletablespace{\par \vskip 10\p@ plus5%
+ \p@ minus3\p@\relax}%
+% \end{macrocode}
+% \begin{macrocode}
+\def\printarticletable{%
+{ \raggedright%
+ \def\@law@firstslash{\begingroup\def\\{\@law@secondslash}%
+ \the\ltokspecialface}%
+ \def\@law@secondslash{\endgroup\def\\{\@law@firstslash}}%
+ \def\\{\@law@firstslash}%
+ \def\@ctbitem##1{\par\smallskip\rule{15pt}{0cm}}%
+ \@input{\jobname.art}}}%
+% \end{macrocode}
+% This sets up for the creation of an external table
+% of articles file.
+% \begin{macrocode}
+\def\makearticletable{%
+ \if@filesw \newwrite\@articletablefile%
+ \immediate\openout\@articletablefile=\jobname.atb%
+ \def\write@one@article@entry{\@bsphack\begingroup%
+ \def\protect####1{\string####1\space}\@sanitize%
+ \let\thepage\relax
+\@law@cleanup%
+ \edef\@tempa{%
+\write\@articletablefile{%
+ \string\articletableentry%
+ {{\the\@ltok@nickname}%
+ {{\@law@authormainfacetemp%
+ \ltokspecialface=\noexpand{\@law@authoroptionfacetemp\noexpand}%
+ \@law@authortemp}%
+ \the\@ltok@atot%
+ {\@law@titlemainfacetemp%
+ \ltokspecialface=\noexpand{\@law@titleoptionfacetemp\noexpand}%
+ \@law@nametemp}%
+ \the\@ltok@ttocone%
+ {\@law@citefirstmainfacetemp%
+ \ltokspecialface=\noexpand{\@law@citefirstoptionfacetemp\noexpand}%
+ \@law@citefirsttemp}%
+ \@law@conetoptemp%
+ \@law@citepagetemp%
+ \the\@ltok@ptoctwo\@law@citelasttemp}}{\thepage}}}%
+ \expandafter\endgroup\@tempa%
+ \if@nobreak%
+ \ifvmode%
+ \nobreak%
+ \fi%
+ \fi%
+ \@esphack}%
+ \@writearticletabletrue
+ \typeout{Writing article table file \jobname.atb;}\fi}
+% \end{macrocode}
+% \paragraph{Books}
+% \begin{macrocode}
+\def\thebooktable{\section*{\booktablename}%
+ \@mkboth{\uppercase{\booktablename}}{\uppercase{\booktablename}}%
+ \thispagestyle{plain}\parindent\z@%
+ \parskip\z@ plus.3\p@\relax\let\item\@ctbitem}%
+% \end{macrocode}
+% \begin{macrocode}
+\def\endthebooktable{%
+ \if@restonecol\onecolumn%
+ \else\clearpage%
+ \fi}%
+% \end{macrocode}
+% \begin{macrocode}
+\def\booktablespace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax}%
+% \end{macrocode}
+% \begin{macrocode}
+\def\printbooktable{%
+{ \raggedright%
+ \def\@law@firstslash{\begingroup\def\\{\@law@secondslash}%
+ \the\ltokspecialface}%
+ \def\@law@secondslash{\endgroup\def\\{\@law@firstslash}}%
+ \def\\{\@law@firstslash}%
+ \def\@ctbitem##1{\par\smallskip\rule{15pt}{0cm}}%
+ \@input{\jobname.bok}}}%
+% \end{macrocode}
+% This sets up for the creation of an external table
+% of books file.
+% \begin{macrocode}
+\def\makebooktable{%
+ \if@filesw \newwrite\@booktablefile%
+ \immediate\openout\@booktablefile=\jobname.btb%
+ \def\write@one@book@entry{\@bsphack\begingroup%
+ \def\protect####1{\string####1\space}\@sanitize%
+ \let\thepage\relax
+ \@law@cleanup%
+ \edef\@tempa{\write\@booktablefile{\string%
+ \booktableentry{{\the\@ltok@nickname}%
+ {{\@law@authormainfacetemp%
+ \ltokspecialface=\noexpand{\@law@authoroptionfacetemp\noexpand}%
+ \@law@authortemp}%
+ \the\@ltok@atot%
+ {\@law@titlemainfacetemp%
+ \ltokspecialface=\noexpand{\@law@titleoptionfacetemp\noexpand}%
+ \@law@nametemp}%
+ \the\@ltok@ttocone%
+ {\@law@citefirstmainfacetemp%
+ \ltokspecialface=\noexpand{\@law@citefirstoptionfacetemp\noexpand}%
+ \@law@citefirsttemp}%
+ \the\@ltok@ptoctwo\@law@citelasttemp}}%
+ {\thepage}}}%
+ \expandafter\endgroup\@tempa%
+ \if@nobreak%
+ \ifvmode%
+ \nobreak%
+ \fi%
+ \fi%
+ \@esphack}%
+ \@writebooktabletrue
+ \typeout{Writing book table file \jobname.btb;}\fi}
+%</lexitabl>
+% \end{macrocode}
+% \subsubsection{Citation style definitions}
+% The style definitions are also stored in a separate file,
+% to make it easier and less risky for users to play with
+% the styles to produce desired output. Table 3
+% provides a guide to the macro arguments and their functions.
+% \paragraph{Books} The styles used for citing books and
+% book-like things follow.
+% \begin{macrocode}
+%<*lexicite>
+\ProvidesFile{lexicite.tex}[1994/12/07]
+\newcitestyle{book}%
+ {srsrrrB}
+ {[a],\ [t][c]\ [p](pl)\ [rp]\ [e]:[id]\ at~(pl)\ at~[xrf]}
+ {4}%
+ {{#1}{#2}{#3}{}{}{(#4)}}%
+%
+\def\newanonbook#1#2#3{\newbook{#1}{}{#2}{#3}}
+%
+\newcitestyle{news}%
+ {rrirrrA}
+ {[a],\ [t],\ [c], p.~[p],\ at~(pl),\ at~[rp]\ [e]:[id]\ at~(pl)\ at~[xrf]}
+ {6}%
+ {{#1}{#2}{#3}{#4}{#5}{(#6)}}%
+%
+\newcitestyle{man}%
+ {riririB}
+ {[a],\ [t][c],\ [p](pl),\ [rp]\ [e]:[id]\ at~(pl)\ at~[xrf]}
+ {4}%
+ {{#1}{#2}{#3}{}{}{(#4)}}%
+%
+\def\newanonman#1#2#3{\newman{#1}{}{#2}{#3}}
+% \end{macrocode}
+% \paragraph{Articles} Styles used for articles follow.
+% There is currently just one, because the Blue Book is
+% pretty consistent on this type of work. Note
+% that this may be used to cite chapters in books and stuff
+% as well.
+% \begin{macrocode}
+\newcitestyle{article}%
+ {rsirsrA}
+ {[a],\ [t],\ [c]\ [p],\ (pl),\ [rp]\ [e]:[id]\ at~(pl)\ at~[xrf]}
+ {6}%
+ {{#1}{#2}{#3}{#4}{#5}{(#6)}}%
+%
+\def\newanonarticle#1#2#3#4#5{\newarticle{#1}{}{#2}{#3}{#4}{#5}}
+% \end{macrocode}
+% \paragraph{Cases} There are several styles for cases; we pretty
+% much need a separate style for each jurisdiction.
+% \begin{macrocode}
+\newcitestyle{case}%
+ {rrirrsC}
+ {[a][t],\ [c]\ [p],\ (pl),\ [rp]\ [e]:[id]\ at~(pl)\ at~[xrf]}
+ {5}%
+ {{#1}{}{#2}{#3}{#4}{(#5)}}%
+%
+\newcitestyle{ecase}%
+ {rrirriC}
+ {[a][t],\ [c]\ [p],\ (pl),\ [rp][e]:[id]\ at~(pl)\ at~[xrf]}
+ {4}%
+ {{#1}{}{#2}{#3}{#4}{}}%
+%
+\newcitestyle{jcase}%
+ {rrririC}
+ {[a][t],\ [c]\ p.~[p],\ (pl),\ [rp][e]:[id]\ at~(pl)\ at~[xrf]}
+ {4}%
+ {{#1}{}{#2}{#3}{#4}{}}%
+% \end{macrocode}
+% \paragraph{Statutes} There are several of these. More may
+% need to be added on an {\em ad hoc\/} basis.
+% \begin{macrocode}
+\newcitestyle{statute}%
+ {rrrsrsS}
+ {[a][t],\ [c]\ \S~[p](pl)\ \S\S~[rp]\ [e]:[id]\ \S~(pl)\ \S\S~[xrf]}
+ {4}%
+ {{#1}{}{#2}{#3}{}{(#4)}}%
+%
+\newcitestyle{shortstatute}%
+ {rrrsrsS}
+ {[a][t][c]\ \S~[p](pl)\ \S\S~[rp]\ [e]:[id]\ \S~(pl)\ \S\S~[xrf]}
+ {3}%
+ {{#1}{}{#2}{}{}{(#3)}}%
+%
+\newcitestyle{jstatute}%
+ {rrrsrsS}
+ {[a][t][c]\ \S~[p](pl)\ \S\S~[rp]\ [e]:[id]\ \S~(pl)\ \S\S~[xrf]}
+ {3}%
+ {{#1}{}{}{#2}{}{(#3)}}%
+% \end{macrocode}
+% \paragraph{Temporary hacks} These citation forms have special
+% bridges hard-wired into them. The plan for the future is to
+% use a prefix macro to alter the behaviour of "\newstatute" and
+% its friends, instead of proliferating custom macros like this.
+% \begin{macrocode}
+\newcitestyle{shortstatuteart}%
+ {rrrsrsS}
+ {[a][t][c]\ art.~[p](pl)\ arts.~[rp]\ [e]:[id]\ art.~(pl)\ arts.~[xrf]}
+ {3}%
+ {{#1}{}{#2}{}{}{(#3)}}%
+%
+\newcitestyle{constitutionart}%
+ {rrrsrsS}
+ {[a][t][c]\ art.~[p](pl)\ arts.~[rp]\ [e]:[id]\ art.~(pl)\ arts.~[xrf]}
+ {3}%
+ {{#1}{}{#2}{}{}{(#3)}}%
+%
+\newcitestyle{constitutionsch}%
+ {rrrsrsS}
+ {[a][t][c]\ sch.~[p](pl)\ schs.~[rp]\ [e]:[id]\ sch.~(pl)\ schs.~[xrf]}
+ {3}%
+ {{#1}{}{#2}{}{}{(#3)}}%
+%</lexicite>
+% \end{macrocode}
+% \subsection{Article table style}
+% articletable.ist: index style for tables of articles
+%
+% \begin{macrocode}
+%<*lexiarti>
+keyword "\\articletableentry"
+actual '*'
+delim_n ",~"
+delim_0 "\~\\leaderfill"
+preamble "\\begin{thearticletable}\n"
+postamble "\n\n\\end{thearticletable}\n"
+group_skip "\n\n \\articletablespace\n"
+%</lexiarti>
+% \end{macrocode}
+% \paragraph{Book table style}
+% \begin{macrocode}
+%<*lexibook>
+keyword "\\booktableentry"
+delim_n ",~"
+delim_0 "\~\\leaderfill"
+preamble "\\begin{thebooktable}\n"
+postamble "\n\n\\end{thebooktable}\n"
+group_skip "\n\n \\booktablespace\n"
+%</lexibook>
+% \end{macrocode}
+% \paragraph{Case table style}
+% \begin{macrocode}
+%<*lexicase>
+keyword "\\casetableentry"
+delim_n ",~"
+delim_0 "\~\\leaderfill"
+preamble "\\begin{thecasetable}\n"
+postamble "\n\n\\end{thecasetable}\n"
+group_skip "\n\n \\casetablespace\n"
+%</lexicase>
+% \end{macrocode}
+% \paragraph{Statute table style}
+% \begin{macrocode}
+%<*lexistat>
+keyword "\\statutetableentry"
+delim_n "\$\\rightarrow\$"
+delim_0 "\~\\leaderfill"
+preamble "\\begin{thestatutetable}\n"
+postamble "\n\n\\end{thestatutetable}\n"
+group_skip "\n\n \\statutetablespace\n"
+%</lexistat>
+% \end{macrocode}
+% \section{The Driver File}
+% \begin{macrocode}
+%<*driver>
+\def\batchfile{lexitex.ins}
+\input docstrip
+\preamble
+IMPORTANT NOTICE:^^M
+You are not allowed to change this file. You may however copy
+this file to a file with a different name and then change the
+copy if you obey the restrictions on file changes described
+at the end of lexitex.doc under RESTRICTIONS.^^M
+You are NOT ALLOWED to distribute this file alone. You are NOT
+ALLOWED to take money for the distribution or use of this file
+(or a changed version) except for a nominal charge for copying
+etc.^^M
+You are allowed to distribute this file under the condition that
+it is distributed with all of its contents, intact.^^M
+If you receive only some of these files from someone, complain!^^M
+However, if these files are distributed by established suppliers
+as part of a complete TeX distribution, and the structure of the
+distribution would make it difficult to distribute the whole set
+of files, *those parties* are allowed to distribute only some of
+the files provided that it is made clear that the user will get
+a complete distribution-set upon request to that supplier (not
+me). Notice that this permission is not granted to the end
+user.^^M
+For error reports in case of UNCHANGED versions contact me on
+fbennett@clus1.ulcc.ac.uk
+\endpreamble
+\generateFile{lexitex.sty}{t}{\from{lexitex.doc}{lexitex}}
+\generateFile{lexitexm.sty}{t}{\from{lexitex.doc}{lexitex,noshorthanding}}
+\generateFile{lexicite.tex}{t}{\from{lexitex.doc}{lexicite}}
+\generateFile{lexitabl.tex}{t}{\from{lexitex.doc}{lexitabl}}
+\generateFile{lexiarti.ist}{t}{\from{lexitex.doc}{lexiarti}}
+\generateFile{lexibook.ist}{t}{\from{lexitex.doc}{lexibook}}
+\generateFile{lexicase.ist}{t}{\from{lexitex.doc}{lexicase}}
+\generateFile{lexistat.ist}{t}{\from{lexitex.doc}{lexistat}}
+\generateFile{lexitex.man}{t}{\from{lexitex.doc}{manual}}
+\generateFile{lexicard.tex}{t}{\from{lexitex.doc}{refcards}}
+\generateFile{lexiproo.tex}{t}{\from{lexitex.doc}{proofsheets}}
+%</driver>
+%<*manual>
+% dimensions from ltugboat.sty:
+\documentclass{ltxdoc}
+\usepackage{lexitexm}
+\pagenumbering{roman}
+
+\EnableCrossrefs
+%\DisableCrossrefs % Say \DisableCrossrefs if index is ready
+\RecordChanges % Gather update information
+\CodelineIndex % Index code by line number
+\OnlyDescription % comment out for implementation details
+%\OldMakeindex % use if your MakeIndex is pre-v2.9
+\begin{document}
+ \DocInput{lexitex.doc}
+\end{document}
+%</manual>
+% \end{macrocode}
+% \begin{macrocode}
+%<*refcards>
+\catcode`\@=11
+\catcode`\"=\active
+\def"{\verb"}
+\documentclass{article}
+\usepackage{lexitex}
+\pagestyle{empty}
+\oddsidemargin -10pt
+\evensidemargin -10pt
+\topmargin -47pt
+\headheight 12pt
+\headsep 25pt
+\footskip 75pt
+\textheight 9in
+\textwidth 6.75in
+\columnsep .375in
+\columnseprule 0pt
+\begin{document}
+\newlength{\cardwidth}
+\setlength{\cardwidth}{\textwidth}
+\newlength{\cardsep}
+\setlength{\cardsep}{\fboxsep}
+\addtolength{\cardwidth}{-4\cardsep}
+\addtolength{\cardwidth}{-15pt}
+\newlength{\subcardwidth}
+\setlength{\subcardwidth}{0.5\cardwidth}
+\addtolength{\subcardwidth}{-6\cardsep}
+\hyphenation{con-sti-tu-tion}
+\small
+\begin{tabular}{|c|c|c|} \cline{1-1}\cline{3-3}
+\begin{minipage}[t]{\subcardwidth}
+\flushbottom\rule{0cm}{12pt}
+\centerline{\bf\large\LexiTeX\footnote[1]{%
+\raggedright\LexiTeX\ is by Frank G. Bennett, Jr., Lecturer in Law at the~School
+ of Oriental and African Studies, University of London.\\
+(Internet) {\tt fbennett@clus1.ulcc.ac.uk}} Reference Card}
+
+\bigskip
+
+\fbox{\sc Style Template} $+$ \fbox{\sc
+Blueprint}$\longrightarrow$\\
+\rule{0cm}{12pt}$\hookrightarrow$\fbox{\sc Citation Template} $+$ \fbox{\sc Text}$\longrightarrow$\\
+\rule{0cm}{12pt}$\hookrightarrow$\fbox{\sc Nickname} $+$ Maybe a \fbox{\sc
+Page Reference}\\[\medskipamount]
+\noindent After a~citation template declaration for a~particular
+work, use the~nickname to refer to that source thereafter.\\[\medskipamount]
+\noindent The~style template is called once, by {\tt lexi\-tex.sty} at startup.
+Blueprints for use by the style template are contained in {\tt lexi\-cite.tex}.
+The~dis\-tribution contains blueprints for the style template which will
+suit most purposes.\\[\medskipamount]
+\noindent {\bf Options and Special Commands}\\
+\begin{description}
+\item[{\tt\string\lowcase}] before any \LexiTeX\ citation, forces {\em Id.}\ to
+ lowercase, should it occur.
+\item[{\tt \string\lexicite\{blah\}}] is used to cite the source
+ with the nickname {\tt blah}.
+\item[{\tt\string\\...\string\\}]marks special
+ typeface (usually roman) with\-in an argument of a~citation template
+ declaration.
+\end{description}
+\begin{itemize}
+\item[{\tt *}] used immediately after a \LexiTeX\ citation, suppresses
+ output of a~bare citation template declaration or nickname.
+ \item[{\tt -}] used between a \LexiTeX\ citation and an optional page
+ or section reference, suppresses output of the~citation template declaration or
+ nickname, and of the page reference.
+\end{itemize}
+\rule{0cm}{.5pc}
+\end{minipage}
+& &
+\begin{minipage}[t]{\subcardwidth}
+\rule{0cm}{.5pc}
+\begin{itemize}
+\item[{\tt+}] appends a~page or section number when typed after a
+ citation template declaration or a~nickname. Always enclose in braces:
+ \verb=+{123}=.
+\item[{\tt++}] appends a~plural page or section argument to any
+ \LexiTeX\ citation. Enclose page numbers in braces, and separate
+ items with \verb+\,+, \verb+\&+ or \verb+\dash+ (ranges not
+ supported, but do no harm when used with non-statute citation
+ templates and nicknames).
+\item[{\tt+-}] appends a~singular page or section argument, but
+ writes multiple references to the table file. Most often used in
+ combination with \verb+^...^+ and \verb+_..._+ to cope with references
+ to multiple subsections of a single statutory provision.
+\item[{\tt\string^}] used within appended page or section references to
+ enclose material that will appear only in the text, not in the table
+ file. Used in all other arguments to enclose material that will
+ appear only in initial or full-form citations.
+\item[{\tt\string_}] used within appended page or section references to
+ enclose material that will appear only in the table file, not in the
+ text.
+\end{itemize}
+\medskip
+\noindent {\bf Tables}\\[\smallskipamount]
+\noindent To write external table files, use:
+\begin{quote}
+\verb+\makebooktable+ (makes \verb+*.btb)+\\
+\verb+\makearticletable+ (makes \verb+*.atb)+\\
+\verb+\makecasetable+ (makes \verb+*.ctb)+\\
+\verb+\makestatutetable+ (makes \verb+*.stb)+
+\end{quote}
+\noindent Process the~external table file using
+\verb+makeindx+ with the~appropriate style file and output
+file name:
+\begin{quote}
+\verb+lexibook.ist+ $\rightarrow$\ \verb+*.bok+\\
+\verb+lexiarti.ist+ $\rightarrow$\ \verb+*.art+\\
+\verb+lexicase.ist+ $\rightarrow$\ \verb+*.cas+\\
+\verb+lexistat.ist+ $\rightarrow$\ \verb+*.sta+
+\end{quote}
+\noindent Place finished tables in the~document using:
+\begin{quote}
+\verb+\printbooktable+\\
+\verb+\printarticletable+\\
+\verb+\printcasetable+\\
+\verb+\printstatutetable+
+\end{quote}
+\vspace{3pt}
+\end{minipage}\\ \cline{1-1}\cline{3-3}
+\end{tabular}\\
+{\small
+\begin{tabular}{|c|} \hline
+\begin{minipage}{\cardwidth}
+ \renewcommand{\thefootnote}{\alph{footnote}}
+\centerline{\rule{0cm}{12pt}\large\bf Sample {\tt lexicite.tex} blueprint entry for
+\LexiTeX}
+\bigskip
+"\newcitestyle{article"\footnotemark[1]"}%"\\
+" {rsirsr"\footnotemark[2]"A"\footnotemark[3]"}%"\\
+" {[a],\ "\footnotemark[4]"[t],\ "\footnotemark[4]
+"[c]\ "\footnotemark[4]
+"[p],\ "\footnotemark[4]
+"(pl),\ "\footnotemark[4]
+"[rp]\ "\footnotemark[4]
+"[e]:[id]\ at~"\footnotemark[4]
+"(pl)\ at~"\footnotemark[4]
+"[xrf]}%"\\
+" {6}"\footnotemark[5]"%"\\
+"
+{{\#1}"\footnotemark[6]"{\#2}"\footnotemark[6]"{#3}"\footnotemark[6]"{\#4}"\footnotemark[6]"{#5}"\footnotemark[6]"{(\#6)}"\fo
+otnotemark[6]"}%"\\
+\footnotetext[1]{This gives the name of the citation template to be generated.}
+\footnotetext[2]{The first part of this list of arguments consists always of exactly six
+letters: the first three pairs set the main and alternative typefaces for
+the author, title
+ and first-cite-part portions of the citation. {\tt r}, {\tt s}, {\tt b} and
+ {\tt i} select roman, small caps, boldface and italic type as the main
+ typeface. These letter flags are not case sensitive.
+ The alternative typefaces may the be specially selected in the text
+ arguments to a citation using
+ {\tt\string\\...\string\\}.}
+\footnotetext[3]{The last letter in this list sets the classification
+ of citations declared with the resulting style macro. {\tt a}, {\tt b}, {\tt
+ c} and {\tt s} will classify all citations generated by this
+ citation template as being to articles, books, cases or statutes,
+ respectively. This letter flag is not case sensitive.}
+\footnotetext[4]{These are the citation bridges that
+ will be placed between the portions of the citation indicated. Two
+ bridges, singular and plural, are given between {\tt [p]}
+(page) and
+ {\tt [rp]} (reference page), and between {\tt [id]} ({\em id.}
+or {\em supra\/}) and {\tt [xrf]} (cross-reference).}
+\footnotetext[5]{This argument states how many arguments the finished citation
+ template will accept. It must be a number between {\tt 1} and {\tt
+ 6}.}
+\footnotetext[6]{Six pairs of matched braces must appear inside this
+ argument. Any other than the first (which represents the citation
+ nickname) may be left empty, but the bridges must of course take this
+ into account. The number of arguments inserted here must correspond
+ with the number stated on the line above.}
+\vspace{3pt}
+\end{minipage}\\ \hline
+\end{tabular}}\\
+{\small
+\begin{tabular}{|c|}\hline
+\begin{minipage}{\cardwidth}
+\centerline{\large\bf\rule{0cm}{12pt}Standard \LexiTeX\ ver.~2.0i Citation Templates}
+\bigskip
+\def\ts{\vspace{6pt}}
+\small
+\begin{verbatim}
+\newbook{blah1}{B. Cardozo}{The Growth of The Law}{1924}+{15}.
+\end{verbatim}
+$\hookrightarrow$\newbook{blah1}{B. Cardozo}{The Growth of the Law}{1924}+{15}.
+\ts
+\begin{verbatim}
+\newbook{blah2}{}{Eastern Air Lines, Inc., 1978 Annual Report}{1979}+{15}.
+\end{verbatim}
+$\hookrightarrow$\newbook{blah2}{}{Eastern Air Lines, Inc., 1978 Annual Report}{1979}+{15}.
+\ts
+\begin{verbatim}
+\newman{blah3}{Comics Magazine Ass'n of America}{Press Release No.~51}{Sept.~16, 1954}+{15}.
+\end{verbatim}
+$\hookrightarrow$\newman{blah3}{Comics Magazine Ass'n of America}{Press Release
+ No.~51}{Sept.~16, 1954}+{15}.
+\ts
+\begin{verbatim}
+\newman{blah4}{}{Telephone conversation with Douglas Borisky, Senior Revising Editor of
+the \\Columbia Law Review\\}{Apr. 10, 1986}.
+\end{verbatim}
+$\hookrightarrow$\newman{blah4}{}{Telephone conversation with Douglas
+Borisky, Senior Revising Editor of the \\Columbia Law Review\\}{Apr.
+10,\newline 1986}.
+\ts
+\begin{verbatim}
+\newarticle{blah5}{Cox}{Federalism and Individual Rights}{73~Nw.~U.L. Rev.}{1}{1978}+{15}.
+\end{verbatim}
+$\hookrightarrow$\newarticle{blah5}{Cox}{Federalism and Individual
+ Rights}{73~Nw.~U.L. Rev.}{1}
+ {1978}+{15}.
+\ts
+\begin{verbatim}
+\newarticle{blah6}{\\O.W. Holmes\\}{Law in Science and Science in Law}{\\in\\ Collected Legal
+Papers}{210}{1920}.
+\end{verbatim}
+$\hookrightarrow$\newarticle{blah6}{\\O.W.
+Holmes\\}{Law in Science and
+ Science in Law}{\\in\\ Collected Legal Papers}{210}{1920}.
+\ts
+\begin{verbatim}
+\newarticle{blah7}{Maitland}{The Mystery of Seisin}{\\in\\ 3 Select Essays in Anglo-American
+Legal History}{591}{1909}.
+\end{verbatim}
+$\hookrightarrow$\newarticle{blah7}{Maitland}{The Mystery of
+ Seisin}{\\in\\ 3 Select Essays in Anglo-American Legal
+ History}{591}{1909}.
+\ts
+\begin{verbatim}
+\newnews{blah8}{}{Abscam Jury Sees Videotape of Deal}{San Francisco Chron., Aug.~14, 1980}
+{14, col.~1}{}.
+\end{verbatim}
+$\hookrightarrow$\newnews{blah8}{}{Abscam Jury Sees Videotape of Deal}{San Francisco Chron., Aug.~14, 1980}{14, col.~1}{}.
+\ts
+\begin{verbatim}
+\newcase{blah9}{Baker v.\ Fortney}{299~S.W.2d}{563}{Mo.\ Ct.\ App.\ 1957}+{564}.
+\end{verbatim}
+$\hookrightarrow$\newcase{blah9}{Baker v.\ Fortney}{299~S.W.2d}{563}{Mo.\ Ct.\ App.\ 1957}+{564}.
+\ts
+\begin{verbatim}
+\newecase{blah10}{Clough Mill Ltd v Martin}{[1984] 3~All ER}{982}+{986}.
+\end{verbatim}
+$\hookrightarrow$\newecase{blah10}{Clough Mill Ltd v Martin}{[1984] 3~All
+ ER}{982}+{986}.
+\ts
+\begin{verbatim}
+\newjcase{blah11}{Decision of the Tokyo District Court, February 18,
+ 1988}{Hanrei jih\=o, n.~1295}
+{132}+{133}.
+\end{verbatim}
+$\hookrightarrow$\newjcase{blah11}{Decision of the Tokyo District Court, February 18,
+ 1988}{Hanrei jih\=o, n.~1295}{132}+{133}.
+\ts
+\begin{verbatim}
+\newstatute{blah12}{Robinson-Patman Act}{15~U.S.C.}{1982}+{{13^--13b^}\,
+ {21^a^}}.
+\end{verbatim}
+$\hookrightarrow$\newstatute{blah12}{Robinson-Patman Act}{15~U.S.C.}{1982}++{{13--13b}\, {21a}}.
+\ts
+\begin{verbatim}
+\newconstitutionart{blah13}{Federal Constitution}{1957}+{1}.
+\end{verbatim}
+$\hookrightarrow$\newconstitutionart{blah13}{Federal Constitution}{1957}+{1}.
+\ts
+\begin{verbatim}
+\newconstitutionsch{blah14}{Federal Constitution}{1957}+{1}.
+\end{verbatim}
+$\hookrightarrow$\newconstitutionsch{blah14}{Federal Constitution}{1957}+{1}.
+\vspace{3pt}
+\end{minipage}\\ \hline
+\end{tabular}
+ }
+\end{document}
+%</refcards>
+% \end{macrocode}
+% \changes{beta}{15 May 1993}{Put all typeface selectors in the
+% print routine in braces, so that punctuation does not get caught up in
+% the game. Things are a bit messy; the
+% problem has been solved by rearranging the bridges so that they conform
+% to their
+% preceding text, but the full wax will be to set them all in roman.}
+% \changes{beta}{19 May 1993}{Cite to previous work in the same footnote,
+% where there is an intervening source, should produce {\protect\em supra},
+% without a footnote number reference. Fixed.}
+% \changes{beta}{25 May 1993}{Fixed failure to suppress section
+% markers in statute
+% tables for cites with no section specified.}
+% \changes{beta}{25 May 1993}{Fixed failure to properly
+% truncate short book citations
+% where the author has not been previously cited.}
+% \changes{beta}{26 May 1993}{Fixed problem with use of {\tt\protect\string\protect\ldots}
+% (was appending a comma
+% to the three dots).}
+% \changes{beta}{8 June 1993}{Completed addition of
+% {\tt\protect\string\protect^...\protect\string\protect^},
+% {\tt\protect\string\protect_...\protect\string\protect_} and
+% {\tt\protect\string\protect|...\protect\string\protect|}.}
+% \changes{beta}{9 June 1993}{fixed
+% {\tt\protect\string\protect\gdef}
+% bug in definitions
+% of {\tt\protect\string\protect^}, {\tt\protect\string\protect|}
+% and {\tt\protect\string\protect_} as active
+% characters, so that these defs are
+% {\tt\protect\string\protect\def},
+% and turn off
+% under grouping.}
+% \changes{beta}{11 June 1993}{localized use of
+% {\tt\protect\string\protect\@law@barkill}
+% in full and short
+% print routines, to prevent chaos.}
+% \changes{prerelease}{5 June 1994}{General proofreading and tidying-up.
+% Discovered
+% that placement of {\tt\protect\string\protect\newcite}
+% macro was initiating a complete
+% parsing of the string produced by
+% {\tt\protect\string\protect\@newciteoptions} every time
+% a new citation was declared. Moved higher so it only happens
+% once. \LexiTeX\ will not be any faster to load, and there are
+% no memory savings from this particular change, but running
+% should be a little quicker.
+% Also cut out a couple of declarations that
+% went unused.}
+% \changes{prerelease}{5 June 1994}{
+% Found that the old {\tt\protect\string\protect\@law@stashinfo}
+% macro was being
+% passed at least six arguments that were duplicated in
+% token registers! This was fixed in the course of the
+% (start of) complete re-drafting of the citation-defining
+% routines. The time saved should make the finished macros
+% faster, although some speed will be lost on list-macro
+% parsing.}
+% \changes{prerelease}{5 June 1994}{Completed all list-macro routines, with the exception of
+% the cutting and adding macros themselves.}
+% \changes{prerelease}{5 June 1994}{{\em Drastically\/}
+% simplified
+% parsing of typeface choices by
+% cutting out all of the {\tt\protect\string\protect\@ifnextchar}
+% rubbish, and getting
+% all typeface options at one go, parsing them with a
+% generic macro. The trade-off is that there have to be
+% exactly seven arguments passed to
+% {\tt\protect\string\protect\@law@parseoptions}.
+% And so eliminated all the prone-to-error syntax surrounding
+% these typeface selectors. Not much of a loss. Should load and
+% be a lot faster to load now.}
+% \changes{prerelease}{5 June 1994}{Changed the syntax for specifying bridges in the
+% {\tt lexicite.tex} file. May not be all that much more readable,
+% but at least now it fits on one line most of the time.}
+% \changes{prerelease}{6 June 1994}{First trial of revised code---it
+% works! Minor debugging not worthy of note.}
+% \changes{prerelease}{11 June 1994}{Set to work on adding comments in DOCSTRIP
+% format. Realized that this is going to be a very big file
+% by the time it's done, and can't wait to get finished and be shut
+% of it for the time being. Also began investigating \BibTeX\
+% and its style language. Correspondence with Nelson Beebe and
+% George Greenwade concerning a \BibTeX/\LexiTeX\ link-up.}
+% \changes{prerelease}{24 June 1994}{Concluded that using
+% a separate ``{\tt\protect\string\protect\@law@stasheverything}'' macro
+% was unnecessary; merged with {\tt\protect\string\protect\@newcite}. From
+% six arguments and six token registers to no data shunting
+% at all in this routine. Again, a little speed gained.}
+% \changes{2.0}{6 July 1994}{Release to known users
+% of first running DOCSTRIP version of code}
+% \changes{2.0a}{7 July 1994}{Minor fix to {\tt lexicite.tex}
+% file.}
+% \changes{2.0b}{23 July 1994}{Major redrafting of code for
+% proof pages completed. File to generate proof pages for
+% all styles on system incorporated in {\tt lexitex.doc} for
+% distribution.}
+% \changes{2.0b}{23 July 1994}{Redrafting of {\tt
+% \protect\string\protect\@justabovecheck} routine, after
+% numerous glitches showed up
+% on the proof pages.}
+% \changes{2.0b}{23 July 1994}{Version 2.0b released on the world.}
+% \changes{2.0j}{94/12/06}{Numerous bug fixes and some tidying
+% up.}
+% \begin{macrocode}
+\endinput
+% \end{macrocode}
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%%
+% \Finale \PrintIndex \PrintChanges