summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/springer/svjour/stropt
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/springer/svjour/stropt
Initial commit
Diffstat (limited to 'macros/latex/contrib/springer/svjour/stropt')
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/example/example.dvibin0 -> 64928 bytes
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/example/example.pdfbin0 -> 72853 bytes
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/example/example.tex1210
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/natbib.dtx3221
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/natbib.ins57
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/readme.txt38
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/stroptgd.dvibin0 -> 7696 bytes
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/stroptgd.tex199
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/svjour.cls1236
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/svstropt.clo250
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/template.tex144
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/usrguide.dvibin0 -> 28500 bytes
-rw-r--r--macros/latex/contrib/springer/svjour/stropt/usrguide.pdfbin0 -> 197756 bytes
13 files changed, 6355 insertions, 0 deletions
diff --git a/macros/latex/contrib/springer/svjour/stropt/example/example.dvi b/macros/latex/contrib/springer/svjour/stropt/example/example.dvi
new file mode 100644
index 0000000000..cc21e57fe6
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/example/example.dvi
Binary files differ
diff --git a/macros/latex/contrib/springer/svjour/stropt/example/example.pdf b/macros/latex/contrib/springer/svjour/stropt/example/example.pdf
new file mode 100644
index 0000000000..0919551e0f
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/example/example.pdf
Binary files differ
diff --git a/macros/latex/contrib/springer/svjour/stropt/example/example.tex b/macros/latex/contrib/springer/svjour/stropt/example/example.tex
new file mode 100644
index 0000000000..e5e2cb300e
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/example/example.tex
@@ -0,0 +1,1210 @@
+\documentclass[stropt]{svjour}
+%\usepackage{times}
+\usepackage{graphicx}
+%
+%Definitions
+%
+\def\be{\begin{equation}}%
+\def\ee{\end{equation}}%
+\def\m{\mathbf{M}}%
+\def\b{\mathbf{B}}%
+\def\y{\mathbf{Y}}%
+\def\x{\mathbf{X}}%
+\def\p{\mathbf{P}}%
+\def\xx{\mathbf{x}}%
+\def\zz{\mathbf{z}}%
+\def\bb{\mathbf{\beta}}%
+\def\kb{\mathbf{b}}%
+%
+\begin{document}
+%
+\title{Using response surface approximations\\ in fuzzy set based
+design optimization\thanks{Presented as paper 98--1776 at the
+39th AIAA\-/ASME/\-ASCE/\-AHS/\-ASC Structures, Structural Dynamics, and Materials
+Conference, Long Beach, California, April 20-23, 1998}}
+\author{G. Venter and R.T. Haftka}
+%
+\institute{Department of Aerospace Engineering, Mechanics and Engineering
+Science, University of Florida, Gainesville, Florida 32611--6250, USA\\
+\email{gventer@ufl.edu} and \email{haftka@ufl.edu}}
+%
+\date{Received: August 24, 1998}
+% The correct dates will be entered by Springer
+%
+\maketitle
+%
+\begin{abstract}
+The paper focuses on modelling uncertainty typical of the aircraft industry.
+The design problem involves maximizing a safety measure of an isotropic
+plate for a given weight.
+Additionally, the dependence of the weight on the level of uncertainty,
+for a specified allowable possibility of failure, is also studied.
+It is assumed that the plate will be built from future materials, with
+little information available on the uncertainty.
+Fuzzy set theory is used to model the uncertainty.
+Response surface approximations that are accurate over the entire design
+space are used throughout the design process, mainly to reduce the
+computational cost associated with designing for uncertainty.
+All of the problem parameters are assumed to be uncertain, and both a
+yield stress and a buckling load constraint are considered.
+The fuzzy set based design is compared to a traditional deterministic
+design that uses a factor of safety to account for the uncertainty.
+It is shown that, for the example problem considered, the fuzzy
+set based design is superior.
+Additionally, the use of response surface approximations results in
+substantial reductions in computational cost, allowing the final results to
+be presented in the form of design charts.
+\end{abstract}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Introduction}
+\label{sec01}
+
+In the aircraft industry, structures are often designed that will be built
+well into the future from materials available then, leading to uncertainty
+in material properties.
+Apart from the uncertain material properties, the manufacturing cost is also
+uncertain.
+However, unlike the uncertainty in the material properties, the designer has
+some control over the manufacturing cost, which is closely linked to the
+required tolerances in geometry.
+For such design problems, little information regarding the uncertainty is
+known, and the uncertainty is typically modeled based on expert opinion and
+assumptions made by the designer.
+Fuzzy set theory can use limited available data and caters for worst case
+scenarios.
+Fuzzy set theory is thus capable of by compensating for the fact that the
+uncertainty is modeled based on subjective opinions and assumptions
+\citep{Maglaras97}.
+In contrast, probabilistic methods require large amount of data and the
+results obtained are, in some cases, very sensitive to both the accuracy of
+this data as well as to the assumptions made during the modeling process
+\citep[e.g.][pp.~11--32]{BenHaim90}.
+
+Fuzzy set theory was introduced by \citet{Zadeh65}
+as a mathematical
+tool for the quantitative modeling of uncertainty, and makes use of fuzzy
+numbers to represent uncertain problem parameters.
+The designer only needs to specify the range of uncertainty and a membership
+function that denotes the possibility of occurrence of an element in the
+specified range to represent an uncertain parameter as a fuzzy number.
+Membership functions are generally constructed subjectively, based on
+expert opinion.
+In recent years, fuzzy set theory has been applied to a wide range of
+structural optimization problems.
+For example, \cite{Liu92}
+performed a fatigue reliability
+analysis of a portal frame, \cite{Jung96}
+considered the
+optimal plastic design of a fixed-fixed beam and a portal frame, and
+\cite{Jensen97}
+minimized the weight of a 25-bar transmission tower.
+Fuzzy set theory has also been used in multidisciplinary optimization by
+\cite{Rao93}
+to design the main rotor of a helicopter as well as by
+\cite{Wu96}
+to optimize the machine room layout of a ship.
+Additionally, \cite{Shih95}
+applied multicriteria
+optimization to various truss examples, considering both weight and
+displacement as objectives.
+
+Unfortunately, designing for uncertainty is computationally intensive and
+typically requires at least an order of magnitude more computational cost as
+compared to a corresponding deterministic design.
+In the present paper, response surface approximations are used to reduce the
+high computational cost associated with designing for uncertainty by using
+approximations that are accurate over the entire design space to replace
+costly finite element analyses.
+Response surface approximations have attracted a lot of interest from the
+structural optimization community in recent years, since they filter out
+numerical noise inherent to most numerical analysis procedures
+\citep[e.g.][]{Giunta94},
+they provide the designer with a global
+perspective of the response over the entire design space
+\citep[e.g.][]{Mistree94},
+and they enable easy integration of
+various software codes \citep[e.g.][]{Kaufman96}.
+
+An isotropic plate with a change in thickness across its width is considered
+as a design problem.
+All of the problem parameters are considered to be uncertain and the
+objective is to maximize a safety measure of the plate for a given weight.
+Both deterministic and fuzzy set based designs are considered and the results
+are compared.
+The safety measure is maximized by maximizing the factor of safety in the
+deterministic design and by minimizing the possibility of failure in the
+fuzzy set based design.
+Finally, the dependence of the weight on the level of uncertainty
+associated with the key geometric parameters is presented in the form of a
+design chart, based on results obtained from a number of optimizations.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Fuzzy set theory}
+\label{sec02}
+
+Fuzzy set theory presents a methodology for the mathematical modeling of
+uncertainty.
+In contrast to classical set theory where a sharp transition exists between
+membership and non-membership, fuzzy set theory makes use of membership
+functions to denote the degree to which an element belongs to a fuzzy set.
+A membership function assigns a grade of membership, ranging between 0 and 1,
+to each element of the universal set as follows
+\begin{equation}
+\m (x):~X\rightarrow [0,1]\, . \label{eq01}
+\end{equation}
+In (\ref{eq01}) $\m$ denotes a membership function that maps the elements of
+the universal set $X$ to the real interval $[0,1]$.
+The same symbol, a bold face capital letter, is used to denote both the fuzzy
+set and its membership function.
+Since each fuzzy set is completely and uniquely defined by only one particular
+membership function, no ambiguity results from the double use of the symbol.
+
+Fuzzy sets are represented numerically by making use of $\alpha$ level cuts.
+An $\alpha$ level cut is defined as the real interval where the membership
+function is larger than a given value, $\alpha$ \citep[p.~19]{Klir95}
+and may be written mathematically for a generic
+fuzzy set $\b$ as follows:
+\begin{equation}
+^{\alpha}B=\left\{ x | \b (x)\geq\alpha\right\}\, . \label{eq02}
+\end{equation}
+Figure~\ref{fig:1} provides a graphical representation of (\ref{eq02}), where
+it is assumed that $\b$ has a triangular and symmetric membership function,
+and shows the end points $^{\alpha}b_1$ and $^{\alpha}b_2$ of the $\alpha$
+level cut.
+
+\begin{figure}
+\vspace{5cm}
+\caption{An $\alpha$ level cut of a triangular and symmetric membership
+function, having support in $(x_L, x_R)$}
+\label{fig:1}
+\end{figure}
+
+A fuzzy number is defined as a fuzzy set that is both normal and convex
+\citep[pp.~97]{Klir95}.
+A normal fuzzy set has a maximum membership function equal to 1, while all
+possible $\alpha$ level cuts are convex for a convex fuzzy set.
+The fuzzy set $\b$
+shown in Fig.~\ref{fig:1} is thus a fuzzy number.
+In fact the triangular and symmetric membership function is most often used to
+represent fuzzy numbers, mainly due to its simplicity, and was used throughout
+the present paper to represent all of the uncertain problem parameters.
+
+A fuzzy function $\y$ is a function of fuzzy variables $\x_i$ and may be
+written as
+\begin{equation}
+\y=\y (\x_1,\x_2,\ldots,\x_n) \label{eq03}
+\end{equation}
+for the case where $n$ fuzzy variables are considered.
+%Klir and Yuan 1995,
+%(pp.~105--109)
+\citet[pp.~105--109]{Klir95} summarized and proved the
+following properties of a fuzzy function.
+
+\begin{enumerate}
+\item When all of the fuzzy variables of a fuzzy function are continuous
+fuzzy numbers, the fuzzy function itself is also a continuous fuzzy number.
+\item When all of the fuzzy variables of a fuzzy function are fuzzy numbers,
+the $\alpha$ level cut of a fuzzy function $^{\alpha}Y$ may be written in
+terms of the $\alpha$ level cuts of its fuzzy variables $^{\alpha}X_i$ as
+follows:
+
+\begin{gather}
+^{\alpha}Y=^{\alpha}Y(^{\alpha}X_1,%^{\alpha}X_2,
+\ldots,^{\alpha}X_n)=\label{eq04}\\
+\left[
+\min_{^{\alpha}R}
+\left[
+Y(^{\alpha}X_1,%^{\alpha}X_2,
+\ldots,^{\alpha}X_n)
+\right],
+\max_{^{\alpha}R}
+\left[
+Y(^{\alpha}X_1,%^{\alpha}X_2,
+\ldots,^{\alpha}X_n)
+\right]
+\right]\, ,\notag
+\end{gather}
+where $^{\alpha}R$ denotes the $n$-dimensional box, formed by the $\alpha$
+level cuts of the $n$ fuzzy numbers.
+\end{enumerate}
+Based on these properties of a fuzzy function,
+\cite{Dong87}
+introduced the vertex method for evaluating the upper and lower bounds of
+$^{\alpha}Y$ when all of the fuzzy variables of $\y$ are fuzzy numbers.
+This method requires the evaluation of the fuzzy function at the $2^n$
+vertices of the $n$-dimensional rectangle, formed by the $\alpha$ level cuts
+of the $n$ fuzzy variables.
+In addition, interior global extreme points need to be checked.
+This method requires a large number of function evaluations and is
+computationally intensive.
+
+For calculating the possibility of failure it is required to compare a crisp
+number with a fuzzy number.
+Note that a fuzzy number may also be considered as the trace of a possibility
+measure $\Pi$ on the singletons (single elements) $x$ of the universal set $X$
+%(Dubois and Prade 1988,
+%pp.~13--17).
+\citep[p.~13--17]{Dubois88}.
+When a possibility measure defined on the unit interval is considered, its
+possibility distribution $\pi$ is then interpreted as the membership function
+of a fuzzy number $\b$ describing the event that $\Pi$ focuses on, as follows:
+\begin{equation}
+\Pi\left( \{ x\}\right)=\pi(x)=\b (x)\, ,\quad \forall x\in X\, . \label{eq05}
+\end{equation}
+The possibility measure of a crisp number being smaller or equal to a fuzzy
+number $\b$ is then defined \cite[pp.~99--101]{Dubois88} as follows:
+%
+\begin{equation}
+\Pi_{\b}\left( [x,+\infty) \right)=\sup_{y\geq x}\b (y)\, ,\quad \forall
+x\, . \label{eq06}
+\end{equation}
+The possibility distribution function $\pi_{\b}$ corresponding to
+the possibility measure of (\ref{eq06}) is shown graphically in
+Fig.~\ref{fig:2} for the general case where $\b$ has a nonlinear membership
+function.
+
+\begin{figure}
+\vspace{5cm}
+\caption{Possibility distribution of $\b \geq x$ for nonlinear $\b(x)$,
+having support in $(x_L, x_R)$}
+\label{fig:2}
+\end{figure}
+
+Based on (\ref{eq05}) and (\ref{eq06}), the possibility distribution of
+failure $\pi_{(\p-\p_f)}$ is obtained from the fuzzy function
+$(\p-\p_f)$ that contains the fuzzy numbers $\p$ (the applied load) and $\p_f$
+(the failure load) as variables.
+The possibility of failure $(\p-\p_f\geq 0)$ is then defined as
+\begin{equation}
+\Pi_{(\p-\p_f)}\left( [0,+\infty)\right)=\sup_{y\geq 0}(\p-\p_f)(y)\, .
+\label{eq07}
+\end{equation}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Overview of response surface approximations}
+\label{sec03}
+
+A response surface approximation is an approximate relationship between a
+dependent variable $\eta$ (the response) and a vector $\xx$ of $k$
+independent variables (the predictor variables).
+The response is generally obtained from experiments (which may be numerical
+in nature), where $\eta$ denotes the mean or expected response value.
+It is assumed that the true model of the response may be written as a linear
+combination of given functions $\tilde{\zz}$ with some unknown coefficients
+$\tilde{\bb}$.
+The experimentally obtained response $y$ differs from the expected value
+$\eta$ due to random experimental error $\delta$ as follows:
+\begin{equation}
+y(\xx)=\eta(\xx)+\delta=\tilde{\zz}(\xx)^T \tilde{\bb}+\delta\, .
+\label{eq08}
+\end{equation}
+
+Since the exact dependence of $\eta$ is generally unknown, a response surface
+approximation is used to approximate $\eta(\xx)$ as follows:
+\begin{equation}
+y(\xx)=\zz(\xx)^T\bb+\varepsilon\, ,
+\label{eq09}
+\end{equation}
+where $\zz(\xx)$ contains the assumed functions in the response surface
+approximation and $\bb$ the associated coefficients.
+Furthermore, $\varepsilon$ denotes the total error, which is the
+difference between the predicted and measured response values and includes
+both random (variance) and modeling (bias) error.
+Typically low order polynomials are used as a response surface approximation,
+in which case $\zz(\xx)$ consists of monomials.
+
+The coefficients $\bb$ of the response surface approximation are estimated
+from the experimentally obtained response values to minimize the sum of the
+squares of the error terms, a process known as regression.
+The estimated values of $\bb$ is denoted by $\kb$, resulting in the
+following response surface approximation:
+\begin{equation}
+\hat{y}(\xx)=\zz(\xx)^T\kb\, ,
+\label{eq10}
+\end{equation}
+where the caret symbol implies predicted values.
+
+The assumed form of the response surface approximation, (\ref{eq10}),
+usually includes redundant parameters and parameters that are poorly
+characterized by the experiments.
+These parameters may increase the prediction error of the approximation and
+thus decrease its predictive capabilities.
+In the present paper, redundant parameters are eliminated by using mixed,
+backwards, stepwise regression (e.g.
+\citealt{Ott93}, pp.~648--659; \citealt{Myers95}, pp.~642--655).
+Mallow's $Cp$ statistic is used to identify the best reduced response
+surface approximation from the subset of reduced response surface
+approximations provided by the stepwise regression procedure and is
+defined as
+\begin{equation}
+Cp=\frac{SSE_p}{s_{\varepsilon}^2}-(n-2p)\, ,
+\label{eq11}
+\end{equation}
+where $SSE_p$ is the sum of the squares of the $n$ error terms (one for each
+data point used to estimate $\kb$) for an approximation with $p$ parameters
+and $s_{\varepsilon}^2$ is the mean sum of squares of the error terms obtained
+from the response surface approximation with all of the parameters included.
+
+Optimization has the general tendency of exploiting weaknesses in the
+formulation of the response function, and highly accurate response surface
+approximations are thus a requirement in structural optimization applications.
+To ensure highly accurate approximations, it is important to evaluate the
+predictive capabilities of the approximations.
+In the present paper, the coefficient of determination $(R^2)$ statistic,
+the adjusted $R^2$ (Adj-$R^2$) statistic, the percent root mean square
+error (\%RMSE) as well as the percent root mean square error based on the
+predicted sum of squares (PRESS) statistic (\%RMSE$_{{\rm PRESS}}$) are
+calculated \citep[pp.~28--47]{Myers95}.
+
+The $R^2$ statistic denotes the proportion of the variability in the response
+that is accounted for by the response surface approximation and has a value
+between 0 and 1.
+The Adj-$R^2$ statistic is an alternative measure of the explained variability
+that, unlike $R^2$, has the desirable property that its value does not
+necessarily increase when adding (possibly redundant) parameters to a
+response surface approximation.
+The \%RMSE is an estimate of the root mean square error of the approximation
+that is obtained from the data points used to construct the approximation,
+using the following unbiased estimator:
+%
+\[
+{\rm \%RMSE}=\frac{100}{\overline{y}}=\sqrt{\frac{1}{(n-p)}
+\sum\limits_{i=1}^{n}(y_i-\hat{y}_i)^2}\, ,
+\]
+where
+%
+\begin{equation}
+\overline{y}=\frac1n\sum\limits_{i=1}^{n}| y_i |\, .
+\label{eq12}
+\end{equation}
+
+The \%RMSE$_{{\rm PRESS}}$ is an additional measure of the error, based on
+the PRESS statistic.
+The PRESS statistic is calculated by selecting a data point, say data point
+$i$.
+The response surface approximation obtained from the remaining $(n - 1)$ data
+points is used to predict the response at the withheld data point, denoted by
+$\hat{y}_{(i)}$.
+The prediction error at the withheld data point $e_{(i)}$ is then defined as
+\begin{equation}
+e_{(i)}=y_i-\hat{y}_{(i)}\, , \label{eq13}
+\end{equation}
+and is referred to as the $i$-th PRESS residual.
+This procedure is repeated for all of the data points and the resulting PRESS
+residuals are summed to form the PRESS statistic as follows:
+\begin{equation}
+{\rm PRESS}=\sum\limits_{i=1}^{n}e^2_{(i)}
+=\sum\limits_{i=1}^{n}\left\lbrack y_i-\hat{y}_{(i)}\right\rbrack ^2\, .
+\label{eq14}
+\end{equation}
+The %RMSE$_{{\rm PRESS}}$ is then defined as:
+\begin{equation}
+{\rm \%RMSE}_{{\rm PRESS}}=\frac{100}{\overline{y}}
+\sqrt{\frac1n{\rm PRESS}}\, .
+\label{eq15}
+\end{equation}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Plate example}
+\label{sec04}
+
+An isotropic plate with a change in thickness in the form of a linear ramp
+(see Fig.~\ref{fig:3}) is the design problem considered in the present paper.
+
+\begin{figure}
+\vspace{5cm}
+\caption{Three-dimensional view of the plate with a thickness change.}
+\label{fig:3}
+\end{figure}
+
+Three nondimensional parameters, $\lambda$, $\beta$ and $\gamma$, are used to
+specify the geometry and location of the change in thickness
+(see Fig.~\ref{fig:4}).
+The plate is simply supported on two edges, free on the other two edges, and
+subjected to an uniformly distributed load applied on the two simply supported
+edges.
+
+\begin{figure}
+\vspace{5cm}
+\caption{Cross-section of plate with response variables shown.}
+\label{fig:4}
+\end{figure}
+
+Both a yield stress failure (according to the Von Mises criterion) and a
+buckling load constraint are considered in the design, and the failure load
+$P_f$ of the plate is calculated from
+\begin{equation}
+P_f=\min\left\{
+\begin{array}{l}
+\frac{\strut\displaystyle\sigma_Y\lambda b t_0}{\strut\displaystyle\tilde{\sigma}_x} \\
+\frac{\strut\displaystyle\tilde{N}_{{\rm crit}} \pi^2 Eb(\lambda t_0)^3}{\strut\displaystyle12(1-\nu^2)a^2}
+\end{array}
+\right.\, , \label{eq16}
+\end{equation}
+and failure is defined to occur when:
+\begin{equation}
+P-P_f\geq 0\, . \label{eq17}
+\end{equation}
+In (\ref{eq16}) and (\ref{eq17}), $\sigma_y$ denotes the yield stress, $E$ the
+Young's modulus and $\nu$ the Poisson's ratio of the material considered,
+while $\lambda$, $a$, $b$, $t_0$ and $r$ describe the geometry of the plate as
+shown in Figs.~\ref{fig:3} and \ref{fig:4} and $P$ denotes the applied load.
+Additionally, $\tilde{\sigma}_x$ denotes the nondimensional, $x$-directional
+stress component on the top surface of the thin section of the plate,
+calculated a distance $r$ from the re-entrant corner, and is defined as
+\begin{equation}
+\tilde{\sigma}_x=\frac{\lambda b t_0\sigma_x}{P}\, ,
+\label{eq18}
+\end{equation}
+while $\tilde{N}_{{\rm crit}}$ denotes the nondimensional buckling load of
+the plate, defined as
+\begin{equation}
+\tilde{N}_{{\rm crit}}=\frac{12(1-\nu^2)a^2 N_{{\rm crit}}}{\pi^2 E b
+(\lambda t_0)^3}\, .
+\label{eq19}
+\end{equation}
+
+\leavevmode\citet{Venter97}
+used a large number of numerical experiments to
+study this problem in detail, and showed that the maximum von Mises stress
+always occurs on the top surface of the thin section of the plate, in which
+case $\sigma_x$ is the only nonzero stress component.
+According to the von Mises criterion, failure then occurs when
+\begin{equation}
+\tilde{\sigma}_x\geq \tilde{\sigma}_Y=\frac{\lambda b t_0\sigma_Y}{P}\, .
+\label{eq20}
+\end{equation}
+\cite{Venter97}
+also determined that the problem has both a local
+and a global buckling mode, and defined a simple geometric criterion to
+distinguish between the two buckling modes as follows:
+\begin{equation}
+\mbox{buckling mode}=\left\{
+\begin{array}{ll}
+\mbox{local if} & \frac{(0.5-\beta-\gamma)}{\lambda}\geq 0.6 \\[4pt]
+\mbox{global if} & \frac{(0.5-\beta-\gamma)}{\lambda}\leq 0.6
+\end{array}\, .
+\right. \label{eq21}
+\end{equation}
+
+\leavevmode\cite{Venter97}
+constructed highly accurate response surface
+approximations for both the $x$-directional stress distribution on the top
+surface of the thin section of the plate and for the buckling load of the
+plate, using a total of 752 finite element analyses.
+Numerical experiments in the form of finite element analyses were conducted
+using MSC$\backslash$NASTRAN Version 68.
+A cross-section of the plate was used to model the stress distribution near
+the re-entrant corner, using four-node, isoparametric, plane strain elements.
+All of these models had a uniform mesh, with roughly 1,800 elements in the
+$x$-direction and 9 elements in the $z$-direction, but the number of elements
+varied slightly from model to model.
+A schematic representation of the finite element model used is shown in
+Fig.~\ref{fig:5}.
+
+\begin{figure}
+\vspace{5cm}
+\caption{Finite element model used for stress distribution about the
+re-entrant corner}
+\label{fig:5}
+\end{figure}
+
+For the buckling load response surface approximations, four-node,
+isoparametric, plate bending elements were used to construct a two-dimensional
+finite element model similar to a plan view of Fig.~\ref{fig:3}.
+Twenty elements were used in each of the $x$- and $y$-directions respectively.
+The eccentricity of the mid-plane was found to have an insignificant impact on
+the buckling load value (note that the sides of the plate are free) and was
+ignored in the analysis.
+
+The stress distribution response surface approximation
+\citep[see][]{Venter97}
+%(see
+%\cite{Venter97})
+may be written in functional form as
+\begin{equation}
+\tilde{\sigma}_x=\tilde{\sigma}_x\left(\lambda,\beta,\gamma,
+\tilde{r}^{\zeta-1}\right)\, ,
+\label{eq22}
+\end{equation}
+where $\zeta$ is a constant that describes the radial stress distribution near
+the re-entrant corner and depends on $\lambda$, $\gamma$ and $a/t_0$ through
+the angle $\Theta$.
+Additionally, $\tilde{r}$ is the nondimensional distance measured from the
+re-entrant corner, defined as:
+\begin{equation}
+\tilde{r}=r/t_0\, .
+\label{eq23}
+\end{equation}
+Additionally, two response surface approximations, corresponding to the local
+and global buckling modes were constructed, which may be written in functional
+form as:
+\begin{equation}
+\tilde{N}_{{\rm loc}}=\tilde{N}_{{\rm loc}}(\lambda,\beta,\gamma)\, ,
+\quad
+\tilde{N}_{{\rm glob}}=\tilde{N}_{{\rm glob}}(\lambda,\beta,\gamma)\, .
+\label{eq24}
+\end{equation}
+
+The design space used for constructing the stress distribution and buckling
+load response surface approximations is summarized in Table~\ref{tab:1}.
+The upper limit on $\tilde{r}$ limits the radius of the yield zone about the
+re-entrant corner to be no greater than 80\% of the thickness of the thin
+section of the plate, while the upper bound on $\gamma$ is dictated by the
+geometry of the transition region.
+
+\begin{table}[htbp]
+\caption{Design space for constructing the response surface approximation
+approximations\hsize=164pt}
+\label{tab:1}
+\tabcolsep=10pt
+\begin{tabular}{@{}ll@{}}
+\hline\noalign{\smallskip}
+Response variable & Range \\
+\noalign{\smallskip}\hline\hline\noalign{\smallskip}
+$\lambda$ & $0.2\leq \alpha\leq 1.0$ \\
+$\beta$ & $-0.475\leq \beta\leq 0.475$ \\
+$\gamma$ & $0\leq \gamma\leq 0.475-\beta$ \\
+$\tilde{r}^{\zeta-1}$ & $0\leq \tilde{r}\leq 0.8\alpha$ \\
+\noalign{\smallskip}\hline
+\end{tabular}
+\end{table}
+
+The stress distribution response surface approximation was constructed from
+288 plate configurations (corresponding to 288 finite element analyses).
+Each plate configuration included a number of data points with different
+$\tilde{r}^{\zeta-1}$ values (corresponding to different finite elements),
+yielding a total of 2,124 data points.
+The buckling load response surface approximations were constructed from an
+additional 288 finite element analyses.
+Using the geometric criterion of (\ref{eq21}), these 288 finite element
+analyses were divided into two groups corresponding to the two buckling modes.
+This process identified 126 data points for constructing the local buckling
+load approximation and 162 data points for constructing the global buckling
+load approximation.
+A quartic polynomial was used as initial response surface approximation for
+both the stress distribution and the global buckling load response surface
+approximations, while a cubic polynomial was used for the local buckling load
+response surface approximation.
+These initial response surface approximations were reduced, using the mixed
+stepwise regression procedure and the $Cp$ statistic.
+The process of constructing the response surface approximations is discussed
+in more detail by \cite{Venter97}.
+The predictive capabilities of the reduced response surface approximations are
+summarized in Table~\ref{tab:2}.
+
+\begin{table}[htbp]
+\caption{Predictive capabilities of stress distribution and buckling load
+response surface approximations\hsize=178pt}
+\label{tab:2}
+\tabcolsep5pt
+\begin{tabular}{@{}lcccc@{}}
+\hline\noalign{\smallskip}
+{Model} & ${\mathbf{R^2}}$ & {Adj-}$\mathbf{R^2}$ &{RMSE}&{PRESS}\\
+&&&{[\%]}&{[\%]} \\
+\noalign{\smallskip}\hline\noalign{\smallskip}
+{Stress} & \multicolumn{4}{c}{{4-th order model (2,124 data
+ points)}} \\
+\noalign{\smallskip}\hline\noalign{\smallskip}
+Reduced\\
+43 terms& 0.9983 & 0.9982 & 3.2964 & 3.3886 \\
+{Local}\\
+{buckling}&\multicolumn{4}{c}{{3-rd order model (126 data points)}} \\
+\noalign{\smallskip}\hline\noalign{\smallskip}
+Reduced\\
+19 terms& 0.9999 & 0.9998 & 0.5550 & 0.6920 \\
+{Global}\\
+ {buckling}& \multicolumn{4}{c}{{4-th order model (162 data points)}} \\
+\noalign{\smallskip}\hline\noalign{\smallskip}
+Reduced\\
+ 25 terms& 0.9910 & 0.9895 & 2.4888
+ & 3.0202 \\
+\noalign{\smallskip}\hline
+\end{tabular}
+\end{table}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Design problem formulation}
+\label{sec05}
+
+The design problem has two objectives.
+The first objective is to maximize a safety measure of the plate for a given
+weight.
+The results obtained from a traditional deterministic approach, using a factor
+of safety to account for the uncertainty, were compared to those obtained from
+a fuzzy set based approach.
+The safety measure of the plate was maximized, by maximizing the factor of
+safety for the deterministic approach and by minimizing the possibility of
+failure for the fuzzy set based approach.
+Note that there exist fundamental differences between the deterministic and
+fuzzy set based approaches for maximizing the safety measure of the plate for
+a given weight.
+The deterministic approach tends to equalize the failure load of each failure
+criterion, while the fuzzy set based design tends to equalize the possibility
+of failure of each failure criterion.
+
+The second objective is to study the dependence of the weight of the final
+design on the level of uncertainty associated with the design variables
+$\lambda$, $\beta$ and $\gamma$.
+In this case, the weight was minimized for a specified allowable possibility
+of failure and different levels of uncertainty associated with the design
+variables.
+The results are presented in the form of a design chart.
+Different levels of uncertainty for the design variables were considered,
+since these geometric variables have the largest influence on the
+manufacturing cost of the plate.
+If the tolerances of these variables can be relaxed without a large penalty
+in terms of weight, substantial cost savings can be achieved in manufacturing
+the plate.
+The problem parameters and associated levels of uncertainty used are
+summarized in Table~\ref{tab:3}.
+Although Table~\ref{tab:3} has a total of 11 uncertain problem parameters,
+only 8 uncertain parameters are associated with each of the two failure
+criteria [see (\ref{eq16}), (\ref{eq22}) and (\ref{eq24})].
+
+\begin{table}[htbp]
+{\hsize=156pt
+\caption{Problem parameters and associated uncertainty}}
+\label{tab:3}
+\tabcolsep5pt
+\begin{tabular}{@{}lcc@{}}
+\hline\noalign{\smallskip}
+Variable & \begin{tabular}{c}Nominal \\ values \end{tabular} &
+ \begin{tabular}{c}Level of \\ uncertainty, $\mathbf{u}$ \end{tabular} \\
+\noalign{\smallskip}\hline\hline\noalign{\smallskip}
+$\lambda^{\dagger}$ & [0.2 -- 1.0] & [$\pm$ 2 -- $\pm$ 20]\% \\
+$\beta^{\dagger}$ & [-0.4 -- 0.4] & [$\pm$ 2 -- $\pm$ 20]\% \\
+$\gamma^{\dagger}$ & [0 -- 0.8] & [$\pm$ 2 -- $\pm$ 20]\% \\
+$a$ & 228.6~cm & $\pm$5\% \\
+$b$ & 127.0~cm & $\pm$5\% \\
+$t_0$ & 7.620~cm & $\pm$5\% \\
+$E$ & 206.84~GPa & $\pm$5\% \\
+$\nu$ & 0.29 & $\pm$5\% \\
+$\sigma_y$ & 197.26~MPa & $\pm$10\% \\
+$r$ & $5\alpha t_0$ & $\pm$10\% \\
+$P$ & 3,224.96~kN & $\pm$10\% \\
+\noalign{\smallskip}\hline
+\end{tabular}
+
+\noindent
+{\footnotesize $^{\dagger}$ Design variables}
+\end{table}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsection{Deterministic design}
+\label{sec05.01}
+
+The objective of the deterministic design is to maximize the factor of safety
+for a given weight.
+However, since it is difficult to specify a meaningful weight, it was decided
+to minimize the weight for a given factor of safety.
+The resulting minimum weight was then used as the given weight for the fuzzy
+set based design.
+A factor of safety of 1.5 was assumed and the level of uncertainty associated
+with the design variables was considered to be constant, equal to $\pm$5\%.
+The nondimensional cross-sectional area of the plate $\tilde{A}$ was used as
+a representative value of the weight and the resulting optimization problem
+may be written as\\[6pt]
+minimize:
+\[
+\tilde{A}=\frac{A}{\lambda t_0}=\frac12 (1+2\beta+\gamma)+\frac{\lambda}{2}
+(1-2\beta-\gamma)\, ,
+\]
+subject to
+\begin{gather}
+\frac{\beta}{0.4}+1\geq 0\, ,\quad
+1-\frac{\beta}{0.4}\geq 0\, ,\quad
+\gamma\geq 0\, ,\notag\\
+1-\frac{\gamma+\beta}{0.4}\geq 0\, ,\quad
+\frac{P_f}{P}-1.5\geq0\, .
+\label{eq25}
+\end{gather}
+The constraints involving $\beta$ and $\gamma$ are geometric constraints and
+$P_f$ is calculated from (\ref{eq16}), using the nominal values of the design
+variables.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsection{Fuzzy set based design}
+\label{sec05.02}
+
+The fuzzy set based design problem minimizes the possibility of failure, using
+the optimum nondimensional cross-sectional area obtained from (\ref{eq25}) as
+an upper limit of the weight.
+The resulting optimization problem may be written as\\[6pt]
+Minimize:
+\[
+\Pi_{(\p-\p_f)}=\Pi_{(\p-\p_f)}({\vec{\lambda}}, {\vec{\beta}}, {\vec{\gamma}} )\, ,
+\]
+subject to
+\begin{gather}
+\frac{\beta}{0.4}+1\geq 0\, ,\quad
+1-\frac{\beta}{0.4}\geq 0\, ,\quad
+\gamma\geq 0\, ,\notag\\
+1-\frac{\gamma+\beta}{0.4}\geq 0\, ,\quad
+\frac{\tilde{A}(\lambda,\beta,\gamma)}{\tilde{A}^*}-1=0\, .
+\label{eq26}
+\end{gather}
+where bold face Greek symbols denote fuzzy numbers while regular font symbols
+denote nominal values.
+Additionally,\linebreak[4]$\Pi_{(\p-\p_f)}$ denotes the possibility of
+failure and
+$\tilde{A}^*$ denotes the optimum nondimensional cross-sectional area
+obtained from the deterministic design of (\ref{eq25}).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsection{Implementation of the fuzzy set based design}
+\label{sec05.03}
+
+In the present work response approximations form an integral part of the fuzzy
+set based design and two levels of response surface approximations are
+employed during the different stages of the design process.
+On the first level, the stress distribution and buckling load response
+surface approximations (Section~\ref{sec04}) are used to replace
+computationally expensive finite element analysis in evaluating the
+possibility of failure.
+The possibility of failure is calculated from (\ref{eq16}), using the vertex
+method.
+When considering all of the problem parameters as uncertain, the evaluation of
+the possibility of failure for a single $\alpha$ level cut value requires
+$2\times 2^8=512$ (recall that each failure criterion has a total of 8
+uncertain problem parameters) finite element analyses when no response surface
+approximations are used.
+In terms of a single optimization, an estimate of the required number of
+finite element analyses required when not using response surface
+approximations, is obtained from the product of four numbers as follows:
+
+\bigskip\noindent
+\begin{tabular}{@{}lc@{}}
+\tabcolsep5pt
+Average number of design & \\
+optimization iterations: & 5 \\
+\\
+Average number of $\Pi_{(\p-\p_f)}$ & \\
+evaluations per iteration: & 6 \\
+\\
+Average number of $\alpha$ level cut & \\
+evaluations per $\Pi_{(\p-\p_f)}$ evaluation: & 5 \\
+\\
+Number of finite element analyses & \\
+per $\alpha$ level cut evaluation of $\Pi_{(\p-\p_f)}$: & 512 \\
+\cline{2-2}
+\\
+Total number of finite element analyses & \\
+required per optimization: & 76,800
+\end{tabular}
+
+\bigskip
+In contrast, the stress distribution and buckling load response surface
+approximations were constructed from a total of only 752 finite element
+analyses.
+Additionally, these response surface approximations can be used in multiple
+optimizations without the need of performing additional finite element
+analyses.
+
+On the second level, a response surface approximation of the possibility of
+failure as a function of the nominal values of the design variables and the
+level of uncertainty associated with these variables was constructed.
+This second level approximation was constructed to simplify the integration of
+the analysis code with the optimization algorithm as well as to eliminate
+noise in the response function, thus allowing the use of a derivative based
+optimization algorithm.
+In the present paper, the generalized reduced gradient algorithm provided
+with Microsoft Excel Version 7.0 was used.
+
+The $\lambda$, $\beta$ and $\gamma$ design space of Table~\ref{tab:1} was used
+to construct the possibility of failure response surface approximation, with
+numerical experiments conducted at an evenly spaced grid consisting of 11 data
+points in each of the $\lambda$, $\beta$ and $\gamma$ directions.
+Additionally, seven levels of uncertainty evenly spaced between $\pm$2\% and
+$\pm$20\% were considered, yielding a total of 2,629 data points in the design
+space.
+At each data point the possibility of failure according to each of the two
+failure criteria was evaluated.
+Two response surface approximations (one for each failure mode) were
+constructed using all of the data points with possibility of failure not
+equal to either 0 or 1.
+This process resulted in 499 data points for constructing the yield stress
+failure criterion response surface approximation and 573 data points for the
+buckling load constraint failure criterion response surface approximation.
+The resulting predicted possibility of failure is then obtained from
+\begin{equation}
+\hat{\Pi}_{(\p_-\p_f)}=\min\left(\hat{\Pi}_{{\rm Yield Stress}},
+\hat{\Pi}_{{\rm Buckling}} \right)\, .\label{eq27}
+\end{equation}
+
+It was found that a general fourth-order polynomial (70 parameters) gave
+accurate approximations for both failure modes.
+These general response surface approximations were reduced using the mixed
+stepwise regression procedure and the $Cp$ statistic, with the predictive
+capabilities of the response surface approximations summarized in
+Table~\ref{tab:4}.
+
+\begin{table}[htbp]
+\caption{Predictive capabilities of the possibility of failure
+response surface approximations\hsize=197pt}
+\label{tab:4}
+\tabcolsep5pt
+\begin{tabular}{@{}lcccc@{}}
+\hline\noalign{\smallskip}
+{Model} & $\mathbf{R^2}$ &{Adj-}$\mathbf{R^2}$ &
+ \begin{tabular}{c} {RMSE} \\ {[\%]} \end{tabular} &
+ \begin{tabular}{c} {PRESS} \\ {[\%]} \end{tabular} \\
+\noalign{\smallskip}\hline\noalign{\smallskip}
+{Stress} & \multicolumn{4}{c}{{4-th order model (499 data
+ points)}} \\
+\noalign{\smallskip}\hline\noalign{\smallskip}
+Full\\
+ 70 terms& 0.9988 & 0.9986 & 2.2525
+ & 2.6205 \\
+Reduced\\
+ 59 terms& 0.9988 & 0.9986 & 2.2371
+ & 2.5205 \\
+{Buckling} & \multicolumn{4}{c}{{4-th order model
+ (573 data points)}} \\
+\noalign{\smallskip}\hline\noalign{\smallskip}
+Full\\
+70 terms& 0.9982 & 0.9980 & 2.7342
+ & 3.0991 \\
+Reduced\\
+57 terms& 0.9982 & 0.9980 & 2.7118
+ & 3.0211 \\
+\noalign{\smallskip}\hline
+\end{tabular}
+\end{table}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Dependence of the weight on the level of uncertainty}
+\label{sec05.04}
+
+In order to study the dependence of the weight of the plate on the level of
+uncertainty associated with the design variables, different levels of
+uncertainty between $\pm$2\% and $\pm$20\% were considered.
+For each of these levels, the nondimensional cross-sectional area of the
+plate was minimized for an allowable possibility of failure.
+The allowable possibility of failure (allowable was assumed to be equal to the
+optimum value obtained from the fuzzy set based design problem of
+(\ref{eq26}).
+The resulting optimization problem may be written as\\[6pt]
+minimize:
+\[
+\tilde{A}=\frac{A}{\lambda t_0}=\frac12 (1+2\beta+\gamma)+\frac{\lambda}{2}
+(1-2\beta-\gamma)\, ,
+\]
+subject to
+\begin{gather}
+\frac{\beta}{0.4}+1\geq 0\, ,\quad
+1-\frac{\beta}{0.4}\geq 0\, ,\quad
+\gamma\geq 0\, ,\notag\\
+1-\frac{\gamma+\beta}{0.4}\geq 0\, ,\quad
+\frac{\hat{\Pi}_{(\p-\p_f)}(\lambda,\beta,\gamma,u)}{\Pi_{{\rm allowable}}}
+-1\geq0\, , \label{eq28}
+\end{gather}
+where $u$ denotes the level of uncertainty associated with the design
+variables and $\hat{\Pi}_{(\p-\p_f)}$ denotes the predicted possibility of
+failure, obtained from (\ref{eq27}).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Results}
+\label{sec06}
+
+In order to obtain an upper limit of the weight for the fuzzy set based
+design, the deterministic design was evaluated first.
+The nondimensional cross-sectional area of the plate was minimized for a
+factor of safety equal to 1.5, making use of the formulation of (\ref{eq25}).
+The corresponding optimum design is summarized in Table~\ref{tab:5},
+where the values in parentheses are the possibility of failure values obtained
+from the reduced possibility of failure response surface approximations.
+
+\begin{table}[htbp]
+\caption{Deterministic optimum (uncertainty of the design variables equal
+to $\pm$5\%)\hsize=109pt}
+\tabcolsep5pt
+\label{tab:5}
+\begin{tabular}{@{}lc@{}}
+\hline\noalign{\smallskip}
+Variable & Value \\
+\noalign{\smallskip}\hline\hline\noalign{\smallskip}
+$\lambda$ & 0.6287 \\
+$\beta$ & -0.4000 \\
+$\gamma$ & 0.0447 \\
+$\tilde{A}^*$ & 0.6741 \\
+Factor of safety & 1.5 \\
+$\Pi_{{\rm Yield stress}}$ & \begin{tabular}{c} 0.0977 \\ (0.1181)\end{tabular}\\
+$\Pi_{{\rm Buckling}}$ & \begin{tabular}{c} 0.3411 \\ (0.3331)\end{tabular}\\
+\noalign{\smallskip}\hline
+\end{tabular}
+\end{table}
+
+For the deterministic optimum design, both failure criteria are active.
+The optimum design corresponds to a plate with a change in thickness that
+starts at the minimum allowable distance from the left endpoint of the plate
+(see Fig.~\ref{fig:4}) with a very short transition zone (small $\gamma$
+value).
+Even though both failure criteria are active for the optimum design, a large
+difference exists between the possibility of failure for the two failure
+criteria, with the buckling load constraint being critical.
+Both the possibility of failure values obtained from the vertex method and
+the values obtained from the reduced possibility of failure response surface
+approximation are shown.
+The accuracy of the reduced possibility of failure response surface
+approximation is demonstrated since the difference between the critical
+predicted and calculated possibility of failure values at the optimum design
+is only 2.3\%.
+
+The equivalent fuzzy set based design, using the $\tilde{A}^*$ value
+of Table~\ref{tab:5} as an upper limit of the weight are summarized in
+Table~\ref{tab:6}.
+Again, the values in parentheses are the possibility of failure values
+obtained from the reduced possibility of failure response surface
+approximations.
+The fuzzy set based optimum design corresponds to a plate where the change in
+thickness starts at the minimum allowable distance from the left endpoint of
+the plate with no transition zone ($\gamma$ value equal to 0).
+The fuzzy set based design eliminates the weight of the ramp and uses it to
+thicken the thin section of the plate.
+The result is an increase in the stress concentration and an improvement in
+the buckling load of the plate.
+The fuzzy set based design thus attempts to equalize the possibility of
+failure of the two failure criteria by making the yield stress failure
+criterion more critical and the buckling load constraint less critical.
+However, for the present example problem, the design variable limits kept
+the possibility of failure values from becoming equal at the optimum design.
+
+\begin{table}[htbp]
+\caption{Fuzzy optimum (uncertainty of the design variables equal
+to $\pm$5\%)\hsize=109pt}
+\label{tab:6}
+\tabcolsep5pt
+\begin{tabular}{@{}lc@{}}
+\hline\noalign{\smallskip}
+Variable & Value \\
+\noalign{\smallskip}\hline\hline\noalign{\smallskip}
+$\lambda$ & 0.6379 \\
+$\beta$ & -0.4000 \\
+$\gamma$ & 0.0000 \\
+$\tilde{A}^*$ & 0.6741 \\
+Factor of safety & 1.4898 \\
+$\Pi_{{\rm Yield stress}}$ & \begin{tabular}{c} 0.1319 \\ (0.1262)\end{tabular}\\
+$\Pi_{{\rm Buckling}}$ & \begin{tabular}{c} 0.2788 \\ (0.2721)\end{tabular}\\
+\noalign{\smallskip}\hline
+\end{tabular}
+\end{table}
+
+For the fuzzy set based design, the factor of safety is not much different
+from that of the deterministic design (only 0.7\% lower), however, there is a
+large difference in the possibility of failure between the two designs.
+The possibility of failure for the fuzzy set based design is 22.3\% lower than
+that of the deterministic design.
+As before, both the predicted and calculated possibility of failure values
+are shown in Table~\ref{tab:6}, with the difference between the critical
+values equal to only 2.4\%.
+
+The possibility distributions of failure for each failure mode of the optimum
+designs obtained from the two methods are shown graphically in
+Fig.~\ref{fig:6}.
+The possibility distributions of Fig.~\ref{fig:6} clearly illustrate the
+differences in the way each method maximizes the safety measure for a given
+weight as discussed in Section~\ref{sec05}.
+
+\begin{figure}
+\vspace{5cm}
+\caption{Possibility distributions of failure for the deterministic and fuzzy
+set based optimum designs}
+\label{fig:6}
+\end{figure}
+
+An important tool for determining the tolerances to which a structure will be
+manufactured, is to know the dependence of the weight on the uncertainty
+associated with the geometry of the structure.
+The dependence of the weight of the structure on the level of uncertainty
+associated with the design variables was thus also studied.
+For this study, the possibility of failure was kept constant at the optimum
+value obtained from the fuzzy set based design (i.e., 0.2788 as summarized in
+Table~\ref{tab:6}), while the level of uncertainty associated with the design
+variables $\lambda$, $\beta$ and $\gamma$ was varied between $\pm$2\% and
+$\pm$20\%.
+Seven levels of uncertainty, evenly distributed between $\pm$2\% and
+$\pm$20\%, were considered.
+For each of these levels, the reduced possibility of failure response surface
+approximations and the Microsoft Excel solver was used to minimize the
+nondimensional cross-sectional area for the specified possibility of failure.
+As expected, the nondimensional cross-sectional area of the plate increased
+with an increase in the level of uncertainty and the results are shown
+graphically in Fig.~\ref{fig:7}.
+
+\begin{figure}
+\vspace{5cm}
+\caption{Nondimensional cross-sectional area associated with different level
+of uncertainty in the design variables}
+\label{fig:7}
+\end{figure}
+
+Figure~\ref{fig:7} indicates that the increase in weight is almost linearly
+proportional to the increase in the uncertainty associated with the design
+variables.
+The nondimensional cross-sectional area increased by 10.7\% with an 18\%
+increase in the uncertainty associated with the design variables.
+Using Fig.~\ref{fig:7} and the dependence of the manufacturing cost on the
+tolerance of $\lambda$, $\beta$ and $\gamma$, the designer may determine what
+tolerance to use in manufacturing the plate.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Concluding remarks}
+\label{sec07}
+
+It is shown that response surface approximations provide an effective
+approach for reducing the computational cost associated with performing a
+fuzzy set based design for uncertainty.
+The large number of computationally expensive finite element analyses required
+to perform the fuzzy set based design is replaced by response surface
+approximations that are inexpensive to evaluate.
+By using response surface approximations, the computational burden shifts
+from the optimization problem to the problem of constructing the response
+surface approximations.
+Due to the iterative nature of the design process, the fact that response
+surface approximations allow multiple optimizations at minimal cost should be
+an attractive feature to any designer.
+The present paper also made use of response surface approximations to simplify
+the integration of the analysis code and the optimization algorithm.
+
+It was shown that for the same upper limit of the weight, the fuzzy set based
+design resulted in an optimum design with a possibility of failure 22.3\%
+lower than the corresponding deterministic design.
+Additionally, the factor of safety of the fuzzy set based design is only 0.7\%
+smaller than that of the deterministic design and for this example problem the
+fuzzy set based design is thus clearly superior.
+Finally, the dependence of the structural weight on the uncertainty of some
+key geometric parameters is presented in the form of a design chart and may be
+used, together with the manufacturing cost, to determine the tolerances that
+when manufacturing the plate.
+This design chart would have been very time consuming to construct if response
+surface approximations were not used to reduce the computational cost.
+
+\begin{acknowledgement}
+This work was supported by NASA grants NAG1-1669 and NAG1-2000.
+\end{acknowledgement}
+
+\begin{thebibliography}{}
+
+\bibitem[Ben-Haim and Elishakoff(1990)]{BenHaim90}
+Ben-Haim, Y.; Elishakoff, E. 1990:
+\textit{Convex models of uncertainty in applied mechanics}.
+Amsterdam: Elsevier
+
+\bibitem[Dong and Shah(1987)]{Dong87}
+Dong, W.; Shah, H.C. 1987:
+Vertex Method for Computing Functions of Fuzzy Variables.
+\textit{Fuzzy Sets and Systems} \textbf{24}, 65--78
+
+\bibitem[Dubois and Prade(1988)]{Dubois88}
+Dubois, D.; Prade, H. 1988:
+\textit{Possibility theory: An approach to computerized processing of
+uncertainty}
+New York: Plenum Press
+
+\bibitem[Giunta \etal(1994)]{Giunta94}
+Giunta, A.A.; Dudley, J.M.; Narducci, R.; Grossman, B.;
+Haftka, R.T.; Mason, W.H.; Watson, L.T. 1994:
+Noisy aerodynamic response and smooth approximations in HSCT design.
+\textit{Proc.\ 5-th AIAA/USAF/NASA/ISSMO Symp. on Multidisciplinary and
+Structural Optimization}
+(held in Panama City, FL) pp.~1117--1128
+%(AIAA Paper 94-4376).
+
+\bibitem[Jensen and Sepulveda(1997)]{Jensen97}
+Jensen, H.A.; Sepulveda, A.E. 1997:
+Fuzzy optimization of complex systems using approximation concepts.
+in: \textit{Proc.\ 5-th PACAM}
+(held in San Juan, Puerto Rico) Vol.\ 5, pp.~345--348
+
+\bibitem[Jung and Pulmano(1996)]{Jung96}
+Jung, C.Y.; Pulmano, V.A. 1996:
+Improved fuzzy linear programming model for structure designs.
+\textit{Comp.\ Struct.} \textbf{58}, 471--477
+
+\bibitem[Kaufman \etal(1996)]{Kaufman96}
+Kaufman, M.; Balabanov, V.; Grossman, B.; Mason, W.H.;
+Watson, L.T.; Haftka, R.T. 1996:
+Multidisciplinary optimization via response surface techniques.
+\textit{Proc.\ 36-th Israel Conf.\ on Aerospace Sciences}, pp.~A57--A67
+
+\bibitem[Klir and Yuan(1995)]{Klir95}
+Klir, G.; Yuan, B. 1995:
+\textit{Fuzzy sets and fuzzy logic: Theory and applications}
+USA: Prentice-Hall
+
+\bibitem[Liu and Huang(1992)]{Liu92}
+Liu, T.S.; Huang, G.R. 1992:
+Fatigue reliability of structures based on probability and possibility
+measures.
+\textit{Comp.\ Struct.} \textbf{45}, 361--368
+
+\bibitem[Maglaras \etal(1997)]{Maglaras97}
+Maglaras, G.; Nikolaidis, E.; Haftka, R.T.; Cudney, H.H. 1997:
+Analytical-experimental comparison of probabilistic methods and fuzzy
+set based methods for designing under uncertainty.
+\textit{Struct.\ Optim.} \textbf{13}, 69--80
+
+\bibitem[Mistree \etal(1994)]{Mistree94}
+Mistree, F.; Patel, B.; Vadde, S. 1994:
+On modeling objectives and multilevel decisions in concurrent design.
+in: \textit{Proc.\ 20-th ASME Design Automation Conf.}
+(held in Minneapolis, MN), pp.~151--161
+
+\bibitem[Myers and Montgomery(1995)]{Myers95}
+Myers, R.H.; Montgomery, D.C. 1995:
+\textit{Response surface methodology: Process and product optimization using
+designed experiments}
+New York: John Wiley \& Sons
+
+\bibitem[Ott(1993)]{Ott93}
+Ott, R.L. 1993:
+\textit{An introduction to statistical methods and data analysis}
+USA: Wadsworth Inc.
+
+\bibitem[Rao(1993)]{Rao93}
+Rao, S.S. 1993:
+Optimization using fuzzy set theory.
+In: Kamat, M.P. (ed.)
+\textit{Structural optimization: Status and promise},
+pp.~637--661. AIAA
+
+\bibitem[Shih and Chang(1995)]{Shih95}
+Shih, C.J.; Chang, C.J. 1995:
+Pareto optimization of alternative global criterion
+method for fuzzy structural design.
+\textit{Comp.\ Struct.} \textbf{54}, 455--460
+
+\bibitem[Venter \etal(1997)]{Venter97}
+Venter, G.; Haftka, R.T.; Starnes, J.H., Jr. 1996:
+Construction of response surfaces for design optimization applications.
+\textit{Proc.\ 6-th AIAA/NASA/ISSMO Symp.\ on Multidisciplinary and
+Structural Optimization}
+(held in Bellevue, WA) Part~1, pp.~548--564
+%(AIAA Paper 96-4040)
+
+\bibitem[Wu and Young(1996)]{Wu96}
+Wu, B.; Young, G. 1996:
+Modeling descriptive assertions using fuzzy functions in design optimization.
+\textit{Proc.\ 6-th AIAA/NASA/ISSMO Symp.\ on Multidisciplinary and
+Structural Optimization}
+(held in Bellevue, WA) Part~2, pp.~1752--1762
+%(AIAA Paper 96-4183)
+
+\bibitem[Zadeh(1965)]{Zadeh65}
+Zadeh, L.A. 1965: Fuzzy sets.
+\textit{Information and Control} \textbf{8}, 29--44
+
+\end{thebibliography}
+
+\end{document}
diff --git a/macros/latex/contrib/springer/svjour/stropt/natbib.dtx b/macros/latex/contrib/springer/svjour/stropt/natbib.dtx
new file mode 100644
index 0000000000..33bdffdaca
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/natbib.dtx
@@ -0,0 +1,3221 @@
+% \iffalse THIS IS A META-COMMENT
+%<*dtx>
+\ProvidesFile
+%========================================================================
+ {NATBIB.DTX}
+%========================================================================
+%</dtx>
+% This is a LaTeX package to modify \cite and \thebibliography for author-year
+% systems of bibliographic citation; will also work with
+% numerical systems, allowing simplified style changes for them too.
+% Installation:
+% LaTeX this file: creates docstrip installation file natbib.ins
+% AND the (LaTeX2e) documentation
+% (La)TeX natbib.ins: creates package file natbib.sty
+% and optionally the LaTeX 2.09 style natbib209.sty
+% and doc driver natbib.drv
+% (natbib.ins may be edited as needed)
+% Docstrip options available:
+% package - to produce a (LaTeX2e) package .sty file
+% driver - to produce a driver file to print the documentation
+% 209 - (with package) for style file that runs under LaTeX 2.09
+% subpack - (with package) for coding included in other packages
+% all - (with package) to include all author-year systems
+% else individually with:
+% apalike, newapa, chicago, harvard, authordate, astron
+% agu - (with package,subpack) for inclusion in aguplus package
+% egs- (with package,subpack) for inclusion in egs package
+% nopreonly - allows \citestyle and \bibpunct to be used anywhere
+%--------------------------------------------------------------------------
+%<*!subpack>
+%<package&209>\def\ProvidesPackage#1#2]
+%<package&209> {\typeout{Style option `#1'#2]}}
+%
+% *** Identify the package file:-
+%<package&!209>\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+%<package>\ProvidesPackage{natbib}
+%</!subpack>
+%
+% *** Provide command to dislay module version
+%<package&subpack>\def\ModuleVersion#1[#2]{}
+%<package&subpack> \ModuleVersion{natbib}
+%
+% *** Identify the driver file:-
+%<driver>\NeedsTeXFormat{LaTeX2e}
+%<driver>\ProvidesFile{natbib.drv}
+%
+% *** The DATE, VERSION, and other INFO
+%\fi
+%\ProvidesFile{natbib}
+ [1997/02/05 6.5 (PWD)]
+%\iffalse
+%<*package>
+%<*!subpack>
+%%-------------------------------------------------------------------
+%% NOTICE:
+%% This file may be used for non-profit purposes.
+%% It may not be distributed in exchange for money,
+%% other than distribution costs.
+%%
+%% The author provides it `as is' and does not guarantee it in any way.
+%%
+%</!subpack>
+%</package>
+%% Natbib coding copyright (C) 1994--1997 Patrick W. Daly
+%<*package>
+%<*!subpack>
+%% Max-Planck-Institut f\"ur Aeronomie
+%% Postfach 20
+%% D-37189 Katlenburg-Lindau
+%% Germany
+%%
+%% E-mail:
+%% Internet-- daly@linmpi.dnet.gwdg.de
+%%-----------------------------------------------------------
+%</!subpack>
+%</package>
+% END META-COMMENT \fi
+% \changes{4.0}{1993 Aug 19}{First documented release}
+% \changes{4.1}{1993 Oct 4}{Simplification of \cs{@citeapalk}}
+% \changes{4.1a}{1993 Oct 14}{Add \texttt{rev} option for reversed comments
+% in \cs{cite}}
+% \changes{4.1b}{1993 Oct 18}{Add \cs{bibfont} to list definition =\cs{relax}}
+% \changes{4.2}{1993 Oct 22}{Add coding for AGU, NLINPROC}
+% \changes{4.2}{1993 Nov 20}{Add more coding for AGU}
+% \changes{4.3a}{1994 Feb 24}{First additions for \LaTeXe}
+% \changes{5.0}{1994 May 18}{Revised for \LaTeXe{} and 2.09}
+% \changes{5.0}{1994 May 18}{Remove obsolete JGR, GRL coding}
+% \changes{5.0}{1994 May 18}{Add \cs{citeauthor}, \cs{citeyear}}
+% \changes{5.0}{1994 May 18}{Two optional texts for \cs{cite} so \texttt{rev}
+% option obsolete}
+% \changes{5.0}{1994 May 18}{\LaTeXe\ options to select punctuation}
+% \changes{5.1}{1994 Jun 22}{Conform to first official release of \LaTeXe}
+% \changes{5.1}{1994 Jun 22}{Separate \LaTeX\ and 2.09 files}
+% \changes{5.1}{1994 Jun 22}{Put doc driver first}
+% \changes{5.2}{1994 Aug 25}{Fix up 2.09 style to run in compatibility mode}
+% \changes{5.2}{1994 Aug 25}{\cs{citeauthor}, \cs{citeyear} make BibTeX
+% entry in aux file}
+% \changes{5.2}{1994 Aug 25}{\cs{@citex} defined as in \LaTeXe}
+% \changes{5.2}{1994 Aug 25}{Local config file \texttt{natbib.cfg} read in}
+% \changes{5.3}{1994 Sep 13}{Add \cs{citefullauthor}, options \texttt{angle},
+% \texttt{curly}}
+% \changes{5.3}{1994 Sep 19}{Add star version of \cs{cite} for full authors}
+% \changes{5.3}{1994 Sep 26}{Fix accents in citations with proper definition
+% of \cs{protect}}
+% \changes{5.4}{1994 Nov 24}{Add space in \cs{@citex} for text cites}
+% \changes{5.4}{1994 Nov 24}{Replace \cs{if@tempswa} by \cs{ifNAT@swa}}
+% \changes{5.4}{1994 Nov 24}{Add superscript citation type to \cs{bibpunct}}
+% \changes{5.4}{1994 Nov 24}{Add \cs{@citesuper}, fix up bugs in superscripts}
+% \changes{5.4}{1994 Nov 24}{Define \cs{@citexnum} as in \LaTeXe}
+% \changes{5.4}{1995 Feb 03}{Add \cs{citestyle} same as \cs{bibstyle}}
+% \changes{5.4}{1995 Feb 08}{For repeated years and authors, print just letter}
+% \changes{5.5}{1995 Mar 13}{Add \cs{bibhang} and command space in
+% \cs{@cite}}
+% \changes{5.5}{1995 Mar 16}{Add \cs{citealt} for citation with no
+% parentheses}
+% \changes{5.5}{1995 Mar 24}{Reorganize internal commands, using \cs{NAT@}
+% prefixes}
+% \changes{5.5}{1995 Mar 24}{Punctuation selection commands \cs{bibpunct},
+% \cs{citestyle} are now preamble only, whereas previously they had to
+% come after the preamble}
+% \changes{5.5}{1995 May 14}{Change names of punctuation commands to
+% \cs{NAT@...}}
+% \changes{6.0}{1995 Sep 4}{Allow numerical styles with author-year
+% \texttt{bst} files}
+% \changes{6.0}{1995 Sep 21}{Add automatic indexing of citations}
+% \changes{6.0}{1995 Sep 29}{Accommodate \texttt{index} package}
+% \changes{6.1}{1995 Nov 22}{Fixed for \LaTeXe\ \texttt{1995/12/01}}
+% \changes{6.1}{1995 Dec 4}{Make more robust against changes to internals}
+% \changes{6.1a}{1995 Dec 19}{Fix test for changed citations}
+% \changes{6.2}{1996 Jan 10}{Replace all \cs{uppercase}}
+% \changes{6.2}{1996 Jan 11}{Add \cs{citet}}
+% \changes{6.2}{1996 Feb 2}{Fix superscript size}
+% \changes{6.2}{1996 Mar 05}{Add length \cs{bibsep} for linespacing between
+% references}
+% \changes{6.2}{1996 Apr 15}{Fix clash with \texttt{amsart} and
+% \texttt{amsbook}}
+% \changes{6.3}{1996 Jun 10}{Allow \texttt{showkeys} to be loaded first}
+% \changes{6.3}{1996 Jun 17}{Fix punctuation for \texttt{plainnat}}
+% \changes{6.3}{1996 Jun 17}{Suppress extra labels with numericals}
+% \changes{6.4}{1996 Jun 18}{Provide \cs{bibname} and \cs{refname}}
+% \changes{6.4}{1996 Jun 27}{Change \texttt{nlinproc} option to \texttt{egs}}
+% \changes{6.4}{1996 Sep 1}{Make compatible with \texttt{chapterbib.sty}}
+% \changes{6.4}{1996 Sep 12}{Fix spacing for superscripts}
+% \changes{6.4}{1996 Sep 12}{Extra letter printed with \cs{citeyear}}
+% \changes{6.4}{1996 Sep 13}{Add compression and sorting of numerical citations}
+% \changes{6.4}{1996 Oct 2}{Make compatible with \texttt{hyperref.sty}}
+% \changes{6.5}{1996 Dec 11}{KOMA script compatibility}
+% \changes{6.5}{1997 Jan 10}{For EGS, no blank line between references}
+% \changes{6.5}{1997 Jan 30}{Recode notes so they work with \cs{citet} and
+% \cs{citep}; change documentation to stress these commands over \cs{cite}}
+% \changes{6.5}{1997 Feb 5}{Fix KOMA script properly}
+%
+% \CheckSum{1706}
+% \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 \~}
+%
+% \iffalse
+%<*install>
+%^^A =============================================
+%^^A Here is the docstrip installation file
+%^^A It is written on first LaTeX run
+%^^A =============================================
+\begin{filecontents}{natbib.ins}
+% Simply TeX or LaTeX this file to extract various files from
+% the source file `natbib.dtx'
+% Comment out the \generateFile lines for any files you do not want.
+
+\def\batchfile{natbib.ins}
+\input docstrip
+
+\preamble
+
+Only a few abbreviated comments remain here to describe the usage.
+
+\endpreamble
+\postamble
+<<<<< End of decommented file <<<<<<
+\endpostamble
+\keepsilent
+
+\generateFile{natbib.sty}{f}{\from{natbib.dtx}{package,all}}
+
+\preamble
+
+This is the LaTeX 2.09 version of the package.
+It will not be maintained forever.
+Please upgrade to LaTeX2e so that you may use the proper package.
+
+Only a few abbreviated comments remain here to describe the usage.
+
+\endpreamble
+
+% Activate the next line to get a version for running under LaTeX 2.09
+%\generateFile{natbib209.sty}{f}{\from{natbib.dtx}{package,all,209}}
+
+\preamble
+
+This is the driver file to produce the LaTeX documentation from the
+source file \inFileName.
+Make changes to it as needed. (Never change the \inFileName file!)
+\endpreamble
+\postamble
+
+End of documentation driver file.
+\endpostamble
+
+% Activate the next line for a documentation driver
+% that you can configure yourself.
+%\generateFile{natbib.drv}{f}{\from{natbib.dtx}{driver}}
+
+\obeyspaces
+\Msg{*******************************************}%
+\Msg{* For documentation, process natbib.dtx *}%
+\Msg{* or the driver file natbib.drv *}%
+\Msg{* (LaTeX2e only!) *}%
+\Msg{*******************************************}
+\end{filecontents}
+%</install>
+%<*driver>
+\documentclass{ltxdoc}
+%<driver>%\documentclass[twoside]{ltxdoc}
+%<driver>%\documentclass[a4paper]{ltxdoc}
+%<driver>%\documentclass[twoside,a4paper]{ltxdoc}
+\raggedbottom
+
+ %** To include the detailed explanation of the coding, comment out
+ %** the next line
+\OnlyDescription
+
+ %** To produce a command index: add the following line for one run,
+ %** then run makeindex -s gind.ist natbib
+ %** and reprocess, with or without this line (much faster without)
+%<driver>% \EnableCrossrefs\CodelineIndex
+
+ %** To produce a change history: add the following line for one run,
+ %** then run makeindex -s gglo.ist -o natbib.gls natbib.glo
+ %** and reprocess, with or without this line (faster without)
+%<driver>% \RecordChanges
+
+\DisableCrossrefs %May stay; zapped by \EnableCrossrefs
+\CodelineNumbered %May stay
+
+\begin{document}
+ \DocInput{natbib.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+% \DoNotIndex{\begin,\CodelineIndex,\CodelineNumbered,\def,\DisableCrossrefs}
+% \DoNotIndex{\DocInput,\documentclass,\EnableCrossrefs,\end,\GetFileInfo}
+% \DoNotIndex{\NeedsTeXFormat,\OnlyDescription,\RecordChanges,\usepackage}
+% \DoNotIndex{\ProvidesClass,\ProvidesPackage,\ProvidesFile,\RequirePackage}
+% \DoNotIndex{\LoadClass,\PassOptionsToClass,\PassOptionsToPackage}
+% \DoNotIndex{\DeclareOption,\CurrentOption,\ProcessOptions,\ExecuteOptions}
+% \DoNotIndex{\AtEndOfClass,\AtEndOfPackage,\AtBeginDocument,\AtEndDocument}
+% \DoNotIndex{\InputIfFileExists,\IfFileExists,\ClassError,\PackageError}
+% \DoNotIndex{\ClassWarning,\PackageWarning,\ClassWarningNoLine}
+% \DoNotIndex{\PackageWarningNoLine,\ClassInfo,\PackageInfo,\MessageBreak}
+% \DoNotIndex{\space,\protect,\DeclareRobustCommand,\CheckCommand}
+% \DoNotIndex{\newcommand,\renewcommand,\providecommand,\newenvironment}
+% \DoNotIndex{\renewenvironment,\newif,\newlength,\newcounter,\setlength}
+% \DoNotIndex{\setcounter,\if,\ifx,\ifcase,\ifnum,\ifdim,\else,\fi}
+% \DoNotIndex{\texttt,\textbf,\textrm,\textsl,\textsc,\reset@font}
+% \DoNotIndex{\textup,\textit,\textmd,\textsf,\emph,\futurelet}
+% \DoNotIndex{\ttfamily,\rmfamily,\sffamily,\mdseries,\bfseries,\upshape}
+% \DoNotIndex{\slshape,\scshape,\itshape,\em,\LaTeX,\LaTeXe}
+% \DoNotIndex{\filename,\fileversion,\filedate,\let,\makeindex}
+% \DoNotIndex{\@auxout,\@for,\@gobble,\@ifnextchar,\@m,\@mkboth,\@nil}
+% \DoNotIndex{\@noitemerr,\@tempa,\@tempswafalse,\@tempswatrue,\@warning}
+% \DoNotIndex{\advance,\arabic,\AtBeginDocument,\bf,\bibname,\chapter}
+% \DoNotIndex{\citation,\clubpenalty,\CodelineNumbered,\csname}
+% \DoNotIndex{\DisableCrossrefs,\do,\edef,\else,\endcsname,\endlist}
+% \DoNotIndex{\expandafter,\fi,\gdef,\global,\hbox,\hfill,\hskip,\hspace}
+% \DoNotIndex{\if,\if@filesw,\if@tempswa,\ifx,\immediate,\itemindent,\labelsep}
+% \DoNotIndex{\labelwidth,\lastskip,\leftmargin,\list,\mbox,\newblock}
+% \DoNotIndex{\newpage,\p@enumiv,\parindent,\penalty,\refname}
+% \DoNotIndex{\relax,\section,\settowidth,\sfcode,\sloppy,\small,\string}
+% \DoNotIndex{\theenumiv,\thepage,\unskip,\uppercase,\usecounter,\vskip}
+% \DoNotIndex{\widowpenalty,\write,\xdef,\z@,\catcode,\ifnum,\the}
+% \DoNotIndex{\.,\@empty,\@ifundefined,\@latex@warning,\@minus,\@plus,\ }
+% \DoNotIndex{\document,\@namedef,\@listi}
+% \DoNotIndex{\listparindent,\noexpand,\par,\parsep,\pb,\pbf,\pbfseries}
+% \DoNotIndex{\pc,\pd,\pem,\pit,\pitshape,\pmdseries,\prm,\prmfamily,\psc}
+% \DoNotIndex{\pscshape,\psf,\psffamily,\psl,\pslshape,\ptt,\pttfamily}
+% \DoNotIndex{\pupshape,\@iden,\@firstofone,\@unexpandable@protect}
+% \DoNotIndex{\&,\{,\},\bibitem,\bibindent,\if@draft,\typeout}
+% \DoNotIndex{\@ifclassloaded,\@ifstar,\@onlypreamble,\@preamblecmds}
+% \DoNotIndex{\addtolength,\endinput,\@bsphack,\begingroup,\@wrindex}
+% \DoNotIndex{\@listctr,\bibname,\enddocument,\hfil,\ignorespaces,\item}
+% \DoNotIndex{\NAT@temp,\refname,\stepcounter,\@ifpackageloaded}
+% \DoNotIndex{\@gobbletwo,\index,\itemsep,\markright,\scriptsize}
+% \DoNotIndex{\textsuperscript}
+%
+% \setcounter{IndexColumns}{2}
+% \setlength{\IndexMin}{10cm}
+% \setcounter{StandardModuleDepth}{1}
+%
+% \hyphenation{par-en-the-ti-cal}
+%
+% \GetFileInfo{natbib}
+%
+% \title{{\bfseries Natural Sciences Citations and References}\\
+% (Author--Year and Numerical Schemes)}
+%
+% \author{Patrick W. Daly}
+%
+% \date{This paper describes package \texttt{\filename}\\
+% version \fileversion{} from \filedate\\[1ex]
+%^^A \textsl{It is part of the \texttt{preprint} collection of packages}\\
+% \textbf{It is intended for \LaTeXe}
+% \\ (but does include a variant for \LaTeX~2.09)
+% }
+%
+% \maketitle
+%
+% \pagestyle{myheadings}
+% \markboth{P. W. Daly}{NATURAL SCIENCES CITATIONS AND REFERENCES}
+%
+% \newcommand{\btx}{\textsc{Bib}\TeX}
+% \newcommand{\thestyle}{\texttt{\filename}}
+%
+%^^A In order to keep all marginal notes on the one (left) side:
+%^^A (otherwise they switch sides disasterously with twoside option)
+% \makeatletter \@mparswitchfalse \makeatother
+%
+% \begin{abstract}
+% Journals in the natural sciences tend to use the author--year style of
+% literature citations, in contrast to the numerical style supported by
+% \LaTeX{} and \btx. A number of contributed packages exist to accommodate this
+% citation mode, but each one is tailored to a limited number of \btx\ style
+% (\texttt{.bst} files. The reason is that each one reads in the author--year
+% information in different formats for the |\bibitem| commands.
+% In contrast,
+% the \thestyle{} package supports not only the various author--year
+% bibliography styles, but also those for standard numerical citations. In
+% fact, it can also produce numerical citations even with an author--year
+% bibliographic style, something that permits easy switching between the
+% two citation modes. To this end, replacements for the standard
+% \LaTeX\ \texttt{.bst} files are also provided.
+%
+% It is possible to define the citation \emph{style} (type of brackets and
+% punctuation between citations) and even to associate it with the name of the
+% bibliographic style so that it is automatically activated. Citation styles
+% can be defined for local \texttt{.bst} files by means of a configuration file
+% \thestyle\texttt{.cfg}.
+%
+% It is compatible with the packages: \texttt{index}, \texttt{showkeys},
+% \texttt{chapterbib}, \texttt{hyperref},
+% and with the classes \texttt{amsbook} and
+% \texttt{amsart}. It can also emulate the sorting and compressing
+% functions of the \texttt{cite} package (with which it is otherwise
+% incompatible).
+%
+% The \thestyle\ package therefore acts as a single, flexible interface for
+% most of the available bibliographic styles.
+%
+% \end{abstract}
+%
+% \section{Introduction}
+% The first problem of using author--year literature citations with standard
+% \LaTeX{} is that the two forms of citations are not supported. These are:
+% \begin{quote}
+% textual: \dots\ as shown by Jones et al. (1990) \dots\\
+% parenthetical: It has been shown (Jones et al., 1990) that \dots
+% \end{quote}
+% There is only one |\cite| command to do both jobs.
+%
+% A second problem is that the \texttt{thebibliography} environment for
+% listing the references insists on including the {\em labels\/} in the
+% list. These labels are normally the numbers, needed for referencing. In
+% the author--year system, they are superfluous and should be left off.
+% Thus, if one were to make up a bibliography with the author--year as
+% label, as
+% \begin{quote}
+% \begin{verbatim}
+% \begin{thebibliography}{...}
+% \bibitem[Jones et al., 1990]{jon90}
+% Jones, P. K., . . .
+% \end{thebibliography}
+% \end{verbatim}
+% \end{quote}
+% then |\cite{jon90}| produces the parenthetical citation [Jones et al.,
+% 1990], but there is no way to get the textual citation. Furthermore,
+% the citation text will also be included in the list of references.
+%
+% The final problem is to find a \btx{} bibliography style that will be
+% suitable.
+%
+% \section{Previous Solutions}
+% \begin{quote}\slshape
+% This section may not be of interest to all users. To find out how to use
+% \thestyle\ without reading about the historical background, go to
+% Section~\ref{sec:usage}.
+% \end{quote}
+%
+% Although the author--year citation mode is not supported by
+% \emph{standard} \LaTeX, there are a number of contributed packages that
+% try to solve this problem. The various bibliographic styles
+% (\texttt{.bst} files) that exist are usually tailored to be used with a
+% particular \LaTeX{} package.
+%
+% I have found a large number of \texttt{.bst} files on file servers that may
+% act as indicators of the various systems available.
+%
+% \subsection{The \texttt{natsci.bst} Style}
+% What gave me my first inspiration was Stephen Gildea's \texttt{natsci.bst}
+% for use with his \texttt{agujgr.sty} file. This showed me that the problem
+% was solvable. However, Gildea's style formats |\bibitem| just as I
+% illustrated above: with an optional label consisting of abbreviated
+% authors and year. Thus only parenthetical citations can be accommodated.
+% The list of references, however, is fixed up in his style files.
+%
+% \subsection{The \texttt{apalike.bst} Style}
+% Oren Patashnik, the originator of \btx{} and the standard \texttt{.bst}
+% files, has also worked on an author--year style, called \texttt{apalike.bst}
+% with a corresponding \texttt{apalike.sty} to support it. Again, only the
+% parenthetical citation is provided. Except for the fact that his style
+% works with version~0.99 of \btx, its functionality is identical to that
+% of the \texttt{natsci} files.
+%
+% Patashnik does not like author--year citations. He makes this very clear
+% in his \btx{} manuals and in the header to \texttt{apalike.bst}.
+% Nevertheless, one should respect his work in this area, simply because he
+% should be the best expert on matters of \btx. Thus \texttt{apalike.bst}
+% could be the basis for other styles.
+%
+% The form of the \texttt{thebibliography} entries in this system is
+% \begin{quote}
+% |\bibitem[Jones et al., 1990]{jon90}...|
+% \end{quote}
+% the same as I illustrated earlier. This is the most minimal form that can
+% be given. I name it the \texttt{apalike} variant, after Patashnik's
+% \texttt{apalike.bst} and \texttt{apalike.sty}. However, there could be many
+% independent \texttt{.bst} files that follow this line.
+%
+% The bibliography style files belonging to this group include:
+% \begin{quote}
+% \texttt{apalike}, \texttt{apalike2}, \texttt{cea}, \texttt{cell},
+% \texttt{jmb}, \texttt{phapalik}, \texttt{phppcf}, \texttt{phrmp}
+% \end{quote}
+%
+% \subsection{The \texttt{newapa} Style}
+% A major improvement has been achieved with \texttt{newapa.bst} and the
+% accompanying \texttt{newapa.sty} files by Stephen N. Spencer and Young U.
+% Ryu. Under their system, three separate items of information are included
+% in the |\bibitem| label, to be used as required. These are: the full
+% author list, the abbreviated list, and the year. This is accomplished by
+% means of a |\citeauthoryear| command included in the label, as
+% \begin{quote}
+% |\bibitem[\protect\citeauthoryear{Jones, Barker,|\\
+% | and Williams}{Jones et al.}{1990}]{jon90}...|
+% \end{quote}
+% Actually, this only illustrates the basic structure of |\citeauthoryear|;
+% the \texttt{newapa} files go even further to replace some words and
+% punctuation
+% with commands. For example, the word `and' above is really
+% |\betweenauthors|, something that must be defined in the \texttt{.sty} file.
+% Of course, |\citeauthoryear| is also defined in that file. A
+% number of different |\cite| commands are available to print out the
+% citation with complete author list, with the short list, with or without
+% the date, the textual or parenthetical form.
+%
+% Thus the |\citeauthoryear| entry in |\bibitem| is very flexible,
+% permitting the style file to generate every citation form that one might
+% want. It is used by a number of other styles, with corresponding
+% \texttt{.sty} files. They all appear to have been inspired by
+% \texttt{newapa.bst}, although they lack the extra punctuation commands.
+%
+% Bibliographic style files belonging to the \texttt{newapa} group include
+% \begin{quote}
+% \texttt{newapa}, \texttt{chicago}, \texttt{chicagoa}, \texttt{jas99},
+% \texttt{named}
+% \end{quote}
+% Note: the last of these, \texttt{named.bst}, uses |\citeauthoryear| in a
+% slightly different manner, with only two arguments: the short list and
+% year.
+%
+% \subsection{The Harvard Family}
+% The same effect is achieved by a different approach in the Harvard family
+% of bibliographic styles. Here a substitute for |\bibitem| is used, as
+% \begin{quote}
+% |\harvarditem[Jones et al.]{Jones, Baker, and|\\
+% | Williams}{1990}{jon90}...|
+% \end{quote}
+% The accompanying interface package file is called \texttt{harvard.sty}
+% and is written by Peter Williams and Thorsten Schnier. It
+% defines |\harvarditem| as well as the citation commands |\cite|, for
+% parenthentical, and |\citeasnoun|, for textual citations. The first
+% citation uses the long author list, following ones the shorter list, if
+% it has been given in the optional argument to |\harvarditem|.
+%
+% Bibliography styles belonging to the Harvard family are
+% \begin{quote}
+% \texttt{agsm}, \texttt{dcu}, \texttt{kluwer}
+% \end{quote}
+%
+% This package has been updated for \LaTeXe, with many additions to
+% add flexibility. The result is a powerful interface that should meet most
+% citation needs. (It does not suppress repeated authors, though,
+% as \thestyle{} does.)
+%
+% \subsection{The Astronomy Style}
+% Apparently realizing the limitations of his \texttt{apalike} system, Oren
+% Patashnik went on to develop a `true' \texttt{apa} bibliographic style,
+% making use of the method already employed by an astronomy journal. This
+% is actually very similar to the \texttt{newapa} label but with only the
+% short list of authors:
+% \begin{quote}
+% |\bibitem[\protect\astroncite{Jones et al.}{1990}]{jon90}|\\
+% | ...|
+% \end{quote}
+% It requires the package file \texttt{astron.sty}
+% or any other style that defines |\astroncite| appropriately.
+%
+% Bibliographic styles belonging to the astronomy group are
+% \begin{quote}
+% \texttt{apa}, \texttt{astron}, \texttt{bbs}, \texttt{cbe},
+% \texttt{humanbio}, \texttt{humannat}, \texttt{jtb}
+% \end{quote}
+%
+% This is as good as the |\citeauthoryear| command, although not as
+% flexible since the full list of authors is missing.
+%
+% \subsection{The \texttt{authordate} Style}
+% Finally, I have also found some packages making use of a label command
+% called |\citename| in the form
+% \begin{quote}
+% |\bibitem[\protect\citename{Jones et al., }1990]{jon90}|\\
+% | ...|
+% \end{quote}
+%
+% This is not a good system since the author list and date are not cleanly
+% separated as individual arguments, and since the punctuation is included
+% in the label text. It is better to keep the punctuation fully removed, as
+% part of the definitions in the \texttt{.sty} file, for complete flexibility.
+%
+% Bibliographic styles belonging to this group are
+% \begin{quote}
+% \texttt{authordate1}, \texttt{authordate2}, \texttt{authordate3},
+% \texttt{authordate4}, \texttt{aaai-named}
+% \end{quote}
+% with accompanying style file \texttt{authordate1-4.sty}.
+%
+% \section{The \thestyle{} System}
+% The form of the |\bibitem| entry that I have used for all my
+% bibliographic styles is only slightly more complicated than the minimal
+% one, but allows a clean separation between authors and date:
+% \begin{quote}
+% |\bibitem[Jones et al.(1990)]{jon90}...|\\[1ex]
+% or alternatively\\[1ex]
+% |\bibitem[Jones et al.(1990)Jones, Baker, |\\
+% \hspace*{2em}|and Williams]{jon90}...|
+% \end{quote}
+%
+% (One weakness of the \thestyle{} format is that it fails if the author
+% list itself contains parentheses! This may be fixed up if the author list
+% is grouped in curly braces.)
+%
+% I wanted to name the system something like `natural sciences bibliography',
+% intending it to be a variant of \texttt{natsci.sty}. Since that name
+% was already taken, I resorted to the rather cryptic, and definitely ugly,
+% \thestyle.
+%
+% The \thestyle\texttt{.sty} package\footnote{Formerly called a \emph{style
+% file} in the older \LaTeX~2.09 terminology.}
+% supports not only my own |\bibitem| format, but
+% also all the others described here, plus numerical citation modes.
+% The additional questions of citation style (type of brackets, commas or
+% semi-colons between citations) can be defined once and for all for each
+% \texttt{.bst} file and need never be specified explicitly in the source text.
+% The use of |\cite| is the same for all citation styles, meaning that the
+% additional features that might be available in the `proper' \texttt{.sty}
+% file will be missing. (This could be changed later.) The result is a
+% single \LaTeX{} package to handle {\em all\/} the bibliographic
+% styles in a uniform manner.
+%
+% As of version 5.1 (1994 June 22), the source file contains coding for a
+% \LaTeXe{} package file (the new standard) as well as that for an older
+% \LaTeX~2.09 style option file. The latter is extracted with the
+% \texttt{docstrip} option \texttt{209}.
+%
+% \begin{quote}\slshape
+% \textbf{New to version 6.0}: (1995 Sep 29) \\
+% In previous versions, each \texttt{.bst} file was either numerical or
+% author--year only. Applying the wrong mode led to grotesque results, and
+% the mode could not always be selected automatically. With version~6.0,
+% all the author--year bibliographic style files can also be used for
+% \emph{numerical} citations, by simply selecting the mode in one of the
+% ways described in Sections~\ref{sec:bibpunct} and \ref{sec:opts}. It is
+% not possible to employ author-year citations with pure numerical
+% \texttt{.bst} files, and never will be.
+%
+% See Section~\ref{sec:6.0} for more information.
+% \end{quote}
+%
+% \section{Using this Package}\label{sec:usage}
+%
+% In this paper, I distinguish between the citation \emph{mode} (author--year
+% or numerical) and citation \emph{style} (the type of punctuation used for
+% citations). The citation style is something that is independent of the
+% bibliography style and is not programmed in the \texttt{.bst} files.
+%
+% \subsection{Basic Citation Commands}
+%
+% \DescribeMacro{\citet}
+% \DescribeMacro{\citep}
+% The \thestyle{} package has two basic citation commands, |\citet| and
+% |\citep| for \emph{textual} and \emph{parenthetical} citations, respectively.
+% There also exist the starred versions |\citet*| and |\citep*| that print
+% the full author list, and not just the abbreviated one.
+% All of these may take one or two optional arguments to add some text before
+% and after the citation.
+% \begin{quote}
+% \begin{tabular}{l@{\quad$\Rightarrow$\quad}l}
+% |\citet{jon90}| & Jones et al. (1990)\\
+% |\citet[chap.~2]{jon90}| & Jones et al. (1990, chap.~2)\\[0.5ex]
+% |\citep{jon90}| & (Jones et al., 1990)\\
+% |\citep[chap.~2]{jon90}| & (Jones et al., 1990, chap.~2)\\
+% |\citep[see][]{jon90}| & (see Jones et al., 1990)\\
+% |\citep[see][chap.~2]{jon90}| & (see Jones et al., 1990, chap.~2)\\[0.5ex]
+% |\citet*{jon90}| & Jones, Baker, and Williams (1990)\\
+% |\citep*{jon90}| & (Jones, Baker, and Williams, 1990)
+% \end{tabular}
+% \end{quote}
+% The starred versions can only list the full authors if the \texttt{.bst}
+% file supports this feature; otherwise, the abbreviated list is printed.
+%
+% In standard \LaTeX, the |\cite| command can only take a single optional
+% text for a note after the citation; here, a single optional text is a
+% post-note, while two are the pre- and post-note. To have only a pre-note, it
+% is necessary to provide an empty post-note text, as shown above.
+%
+% Multiple citations may be made as usual, by including more than one
+% citation key in the |\cite| command argument. \textsl{If adjacent citations
+% have the same author designation but different years, then the author
+% names are not reprinted.}
+% \begin{quote}
+% \begin{tabular}{l@{\quad$\Rightarrow$\quad}l}
+% |\citet{jon90,jam91}| & Jones et al. (1990); James et al. (1991)\\
+% |\citep{jon90,jam91}| & (Jones et al., 1990; James et al. 1991)\\
+% |\citep{jon90,jon91}| & (Jones et al., 1990, 1991)\\
+% |\citep{jon90a,jon90b}| & (Jones et al., 1990a,b)
+% \end{tabular}
+% \end{quote}
+%
+% These examples are for author--year citation mode. In numerical mode, the
+% results are different.
+% \begin{quote}
+% \begin{tabular}{l@{\quad$\Rightarrow$\quad}l}
+% |\citet{jon90}| & Jones et al. [21]\\
+% |\citet[chap.~2]{jon90}| & Jones et al. [21, chap.~2]\\[0.5ex]
+% |\citep{jon90}| & [21]\\
+% |\citep[chap.~2]{jon90}| & [21, chap.~2]\\
+% |\citep[see][]{jon90}| & [see 21, 1990]\\
+% |\citep[see][chap.~2]{jon90}| & [see 21, chap.~2]\\[0.5ex]
+% |\citep{jon90a,jon90b}| & [21, 32]
+% \end{tabular}
+% \end{quote}
+% The authors can only be listed if the \texttt{.bst} file supports
+% author--year citations. The standard \texttt{.bst} files, such as
+% \texttt{plain.bst} are numerical only and transfer no author--year
+% information to \LaTeX. In this case, |\citet| prints ``\textbf{(author?)}
+% [21].''
+%
+% {\slshape Do not use multiple citations with the |\citet| command in
+% numerical mode!}
+%
+% \DescribeMacro{\cite}
+% In the original versions of \thestyle, the traditional |\cite| command was
+% used for both textual and parenthetical citations. The presence of an empty
+% optional text in square brackets signaled parenthetical. This syntax has been
+% retained for compatibility, but is no longer encouraged.
+%
+% This means that |\cite| (without notes) is the same as |\citet| in
+% author--year mode, whereas in numerical mode, it is the same as |\citep|.
+% The starred version, as well as the one or two optional notes, may also be
+% used.
+%
+% \subsection{Extended Citation Commands}
+%
+% \DescribeMacro{\citealt}
+% As an alternative form of citation, |\citealt| is the same as |\citet|
+% but \emph{without any parentheses}. Multiple references and the
+% starred variant also exist.
+% \begin{quote}
+% \begin{tabular}{l@{\quad$\Rightarrow$\quad}l}
+% |\citealt{jon90}| & Jones et al. 1990\\
+% |\citealt*{jon90}| & Jones, Baker, and Williams 1990\\
+% |\citealt{jon90,jam91}| & Jones et al. 1990; James et al. 1991
+% \end{tabular}
+% \end{quote}
+%
+% \DescribeMacro{\citeauthor}
+% \DescribeMacro{\citeyear}
+% \DescribeMacro{\citefullauthor}
+% In author--year schemes, it is sometimes desirable to be able to refer to
+% the authors without the year, or vice versa. This is provided with three
+% extra commands
+% \begin{quote}
+% \begin{tabular}{l@{\quad$\Rightarrow$\quad}l}
+% |\citeauthor{jon90}| & Jones et al.\\
+% |\citefullauthor{jon90}| & Jones, Baker, and Williams\\
+% |\citeyear{jon90}| & 1990
+% \end{tabular}
+% \end{quote}
+% If the full author information is missing, then |\citefullauthor| is
+% the same as |\citeauthor|, printing only the abbreviated list.
+% This also applies to the starred versions of |\citet| and |\citep|.
+%
+% If the author or year information is missing (as is the case with the
+% standard \LaTeX{} \texttt{.bst} files), these commands issue a warning.
+%
+% As of version~6.0, these commands may also be used with numerical
+% citations, provided an author--year \texttt{.bst} file is being employed.
+%
+% The native \thestyle{} form of the |\bibitem| entry now
+% also supports the full author list.
+%
+% \textsl{Multiple citations are \emph{not} allowed with these commands.}
+%
+% \subsection{Selecting Citation Punctuation}\label{sec:bibpunct}
+%
+% \DescribeMacro{\bibpunct}
+% The above examples have been printed with the default citation style.
+% It is possible to change this, as well as to select numerical or
+% author--year mode, by means of the |\bibpunct| command, which takes
+% one optional and 6 mandatory arguments. The mandatory ones are:
+% \begin{enumerate}
+% \item the opening bracket symbol, default = (
+% \item the closing bracket symbol, default = )
+% \item the punctuation between multiple citations, default = ;
+% \item the letter `n' for numerical style, or `s' for numerical superscript
+% style, any other letter for
+% author--year, default = author--year; note, it is not necessary to
+% specify which author--year interface is being used, for all will be
+% recognized;
+% \item the punctuation that comes between the author names and the year
+% (parenthetical case only), default = ,
+% \item the punctuation that comes between years when common author lists
+% are suppressed (default = ,); if both authors and years are common,
+% the citation is printed as `1994a,b', but if a space is wanted between
+% the extra letters, then include the space in the argument, as |{,~}|.
+% \end{enumerate}
+%
+% The optional argument is the character preceding a post-note, default is a
+% comma.
+%
+% The |\bibpunct| command must be issued in the preamble, that is,
+% before |\begin{document}|. (\textbf{Note:} in versions 5.4 or earlier, this
+% declaration had to be given after the preamble!)
+%
+% Example~1, |\bibpunct{[}{]}{,}{a}{}{;}| changes the output of
+% \begin{quote}
+% |\citep{jon90,jon91,jam92}|
+% \end{quote}
+% into [Jones et al. 1990; 1991, James et al. 1992].
+%
+% Example~2, |\bibpunct[;]{(}{)}{,}{a}{}{;}| changes the output of
+% \begin{quote}
+% |\citep[and references therein]{jon90}|
+% \end{quote}
+% into (Jones et al. 1990; and references therein).
+%
+% \DescribeMacro{\bibstyle@xxx}
+% Usually the citation style is determined by the journal
+% for which one is writing, and is as much a part of the bibliography style
+% as everything else. The \thestyle{} package allows
+% punctuation definitions to be directly coupled to the
+% |\bibliographystyle| command that must always be present when \btx{} is
+% used. It is this command that selects the \texttt{.bst} file; by adding such
+% a coupling to \thestyle{} for every \texttt{.bst} file that one might
+% want to use, it is not necessary to add |\bibpunct| explicitly in the
+% document itself, unless of course one wishes to override the preset
+% values.
+%
+% Such a coupling is achieved by defining a command |\bibstyle@|{\em bst},
+% where {\em bst\/} stands for the name of the \texttt{.bst} file. For example,
+% the American Geophysical Union (AGU) demands in its publications that
+% citations be made with square brackets and separated by semi-colons. I
+% have an \texttt{agu.bst} file to accomplish most of the formatting, but such
+% punctuations are not included in it. Instead, \thestyle{} has the
+% definition
+% \begin{quote}
+% |\newcommand{\bibstyle@agu}{\bibpunct{[}{]}{;}{a}{,}{,~}}|
+% \end{quote}
+%
+% These style defining commands may contain more than just |\bibpunct|.
+% Some numerical citation scheme require even more changes. For example,
+% the journal \textsl{Nature} not only uses superscripted numbers for
+% citations, it also prints the numbers in the list of references without
+% the normal square brackets. To
+% accommodate this, \thestyle{} contains the style definition
+% \begin{quote}\begin{verbatim}
+% \newcommand{\bibstyle@nature}{\bibpunct{}{}{,}{s}{}{}%
+% \gdef\NAT@biblabelnum##1{##1.}}
+% \end{verbatim}
+% \end{quote}
+% The redefined |\NAT@biblabelnum| command specifies how the reference numbers
+% are to be formatted in the list of references itself.
+% The redefinition must be made with |\gdef|, not |\def| or
+% |\renewcommand|.
+%
+% The selected punctuation style and other redefinitions will not be in
+% effect on the first \LaTeX{} run, for they are stored to the auxiliary
+% file for the subsequent run.
+%
+% The user may add more such definitions of his own, to accommodate those
+% journals and \texttt{.bst} files that he has. He may either add them to
+% his local copy of \thestyle\texttt{.sty}, or better put them into a file
+% named \thestyle\texttt{.cfg}. This file will be read in if it exists,
+% adding any local configurations. Thus such configurations can survive
+% future updates of the package. (This is for \LaTeXe{} only.)
+%
+% \medskip
+% \noindent\textbf{Note:}
+% with version~6.0, any explicit call to |\bibpunct| has priority over the
+% predefined citation styles.
+%
+% \DescribeMacro{\citestyle}
+% A preprogrammed citation style is normally invoked by the command
+% |\bibliographystyle|, as described above. However, it may be that
+% one wants to apply a certain citation style to another bibliography
+% style. This may be done with |\citestyle|, given \emph{before}
+% |\begin{document}|. For example, to use the
+% \texttt{plain} bibliography style (for the list of references) with the
+% \textsl{Nature} style of citations (superscripts),
+% \begin{quote}
+% |\documentclass{article}|\\
+% |\usepackage{|\thestyle|}|\\
+% |. . . . .|\\
+% |\citestyle{nature}|\\
+% |\begin{document}|\\
+% |\bibliographystyle{plain}|\\
+% |. . . . .|
+% \end{quote}
+%
+% \noindent
+% \textbf{Note:} for versions 5.5 and later, all changes to the citation
+% style, including punctuation, must be made before |\begin{document}|,
+% which freezes the citation style.
+%
+% \subsection{Priority of Style Commands}\label{sec:priority}
+% The citation style (punctuation and mode) can be selected by means of the
+% |\bibpunct|, |\citestyle|, and predefined |\bibstyle@|\textit{bst}
+% commands. They can also be selected by \LaTeXe{} options
+% (Section~\ref{sec:opts}). What happens if there are several conflicting
+% selections?
+%
+% The lowest priority is assigned to the predefined |\bibstyle@|\textit{bst}
+% commands, since they are implicit and not obvious to the user. The
+% \LaTeXe{} options have the next priority. Finally, any selection by
+% |\bibpunct| and/or |\citestyle| overrides those of the other methods.
+%
+% \subsection{Other Formatting Options}
+%
+% \DescribeMacro{\bibsection}
+% The list of references normally appears as a |\section*| or |\chapter*|,
+% depending on the main class. If one wants to redesign one's own heading,
+% say as a numbered section with |\section|, then |\bibsection| may be
+% redefined by the user accordingly.
+%
+% \DescribeMacro{\bibfont}
+% The list of references is normally printed in the same font size and
+% style as the main body. However, it is possible to define |\bibfont|
+% to be font commands that are in effect within the \texttt{thebibliography}
+% environment.
+%
+% \DescribeMacro{\bibhang}
+% The list of references for author--year styles uses a hanging indentation
+% format: the first line of each reference is flush left, the following lines
+% are set with an indentation from the left margin. This indentation is 1~em
+% by default but may be changed by redefining (with |\setlength|) the
+% length parameter |\bibhang|.
+%
+% \DescribeMacro{\bibsep}
+% The vertical spacing between references in the list, whether author--year
+% or numerical, is controlled by the length |\bibsep|. If this is set to
+% 0~pt, there is no extra line spacing between references. The default
+% spacing depends on the font size selected in |\documentclass|, and is
+% almost a full blank line. Change this by redefining |\bibsep| with
+% |\setlength| command.
+%
+% \subsection{Automatic Indexing of Citations}
+%
+% (New to version 6.0; applies to \LaTeXe\ only)\\[1ex]
+% \DescribeMacro{\citeindextrue}
+% \DescribeMacro{\citeindexfalse}
+% If one wishes to have the citations entered in the \texttt{.idx} indexing
+% file, it is only necessary to issue |\citeindextrue| at any point in the
+% document. All following |\cite| commands, of all variations, then insert
+% the corresponding entry to that file. With |\citeindexfalse|, these
+% entries will no longer be made.
+%
+% The |\bibitem| commands in the \texttt{thebibliography} environment will
+% also make index entries. If this is not desired, then issue
+% |\citeindexfalse| before |\bibliography| or |\begin{thebibliography}|.
+%
+% Of course, |\makeindex| must also be issued in the preamble to activate
+% indexing, as usual. Otherwise, no indexing is done at all.
+%
+% Make sure that the document has been processed at least twice after the
+% last \btx\ run before running the \texttt{makeindex} program.
+%
+% \DescribeMacro{\NAT@idxtxt}
+% The form of the index entries is set by the internal |\NAT@idxtxt|, which
+% can be redefined by hackers if wanted (in the \thestyle\texttt{.cfg} file
+% please). By default, it prints the short author list plus date in the
+% current parenthesis style.
+%
+% The \thestyle\ package can also be used with the \texttt{index} package of
+% David~M. Jones. The order in which the packages are loaded is not
+% important.
+%
+% \DescribeMacro{\citeindextype}
+% In that package, multiple index lists may be made by means of a |\newindex|
+% command. For example, it may be desirable to put all the citation indexing
+% into a separate list. First that list must be initiated with, e.g.,
+% \begin{quote}
+% |\newindex{cite}{ctx}{cnd}{List of Citations}|
+% \end{quote}
+% and then the automatic citation indexing associated with this list with the
+% \thestyle\ command
+% \begin{quote}
+% |\renewcommand{\citeindextype}{cite}|
+% \end{quote}
+% See the documentation for \texttt{index.sty} for details.
+%
+% \subsection{Hyper\TeX\ Compatibility}
+% As of version~6.4, \thestyle\ is compatible with the \texttt{hyperref}
+% package of Sebastian Rahtz and Yannis Haralambous, for use with
+% Hyper\TeX. The compatibility is of a mutual nature: both packages contain
+% coding that interact with that of the other. Thus the version of
+% \texttt{hyperref} must be more recent than 1996 Oct~8.
+% ^^A Update the date when it is better known, after checking with Rahtz.
+%
+% \subsection{Multiple Bibliographies in One Document}\label{sec:chapbib}
+%
+% As of version 6.4, \thestyle\ is compatible with the \texttt{chapterbib}
+% package of Donald Arseneau and Niel Kempson,\relax
+% \footnote{I have used version 1.5 from 1995/10/09; cannot guarantee
+% earlier versions.}
+% which makes it possible to have several
+% bibliographies in one document. The usual application is to have
+% bibliographies in each chapter of a book, especially if they have been
+% written by different authors.
+%
+% The \texttt{chapterbib} package works in a very natural way for the
+% author; only the editor who puts all the chapters together into one book
+% has to do some extra work.
+%
+% The package makes use of the |\include| command, and it is in fact every
+% |\include|d file that has its own bibliography. For large books, it makes
+% very good sense to take advantage of this feature in any case.
+%
+% To review the use of |\include|, recall that the main file
+% \begin{verbatim}
+% \documentclass{...}
+% \includeonly{ch2}
+% \begin{document}
+% \include{ch1}
+% \include{ch2}
+% \include{ch3}
+% \end{document}
+% \end{verbatim}
+% will process only the file \texttt{ch2.tex} as though the files
+% \texttt{ch1.tex} and \texttt{ch3.tex} were also present. That is, all
+% counters, especially the page and section numbers, as well as
+% cross-referencing definitions, will function as if the whole document
+% were processed. The trick is that each |\include|d file has it own
+% \texttt{.aux} file containing these definitions, and they are all read
+% in every time, even if the corresponding \texttt{.tex} file is not. The
+% \texttt{.aux} files also contain the citation information for \btx,
+% something that the \texttt{chapterbib} package exploits.
+%
+% If |\usepackage{chapterbib}| has been given, the keys in each |\cite|
+% and |\bibitem| command are associated with the current |\include|d file
+% and are distinguished from the identical key in a different file. Each of
+% these files must contain its own |\bibliography| and |\bibliographystyle|
+% commands. One processes \btx\ on each file separately before processing
+% it under \LaTeX\ (at least twice).
+%
+% \subsubsection{Special Considerations for \thestyle\ and
+% \texttt{chapterbib}}
+%
+% The order in which the \texttt{chapterbib} and \thestyle\ packages are loaded
+% is unimportant.
+%
+% The \texttt{chapterbib} package provides an option \texttt{sectionbib}
+% that puts the bibliography in a |\section*| instead of |\chapter*|,
+% something that makes sense if there is a bibliography in each chapter.
+% This option will not work when \thestyle\ is also loaded; instead, add
+% the option to \thestyle. (The \texttt{sectionbib} option can always be
+% given, but it only has meaning for the \texttt{book} and \texttt{report}
+% classes, or for classes derived from them.)
+%
+% Every |\include|d file (with citations) must contain its own
+% |\bibliography| command where the bibliography is to appear. The database
+% files listed as arguments to this command can be different in each file,
+% of course. However, what is not so obvious, is that each file must also
+% contain a |\bibliographystyle| command, \emph{preferably with the same
+% style argument}. If different bibliography styles are specified for
+% different files, then the preprogrammed citation style (punctuation and
+% citation mode) will be that of the first bibliography style given. The
+% preprogrammed citation styles can only be changed in the preamble (see
+% Section~\ref{sec:priority}), something that guarantees a uniform style
+% for the entire document.\relax
+% \footnote{It would be relatively easy to allow changes in style anywhere
+% in the document, but this strikes me as bad policy. However, it is
+% provided for with the \texttt{docstrip} option \texttt{nopreonly}.}
+%
+% \subsection{Sorting and Compressing Numerical Citations}
+%
+% Another package by Donald Arseneau, \texttt{cite.sty}, reimplements the
+% entire (numerical) citation system such that one can control the
+% punctuation and citation format, all of which is done by \thestyle\ as
+% well. However, it also can sort and compress numerical citations,
+% something that is required by some journals.
+%
+% What this means is that when multiple citations are given with a single
+% |\cite| command, the normal order of the numbers is in the sequence
+% given. This is usually a wild list of numbers, such as [4,2,8,3]. With
+% the \texttt{cite} package, this list becomes [2--4,8].
+%
+% It is impossible to make the \texttt{cite} and \thestyle\ packages
+% compatible, since both reimplement |\cite| from scratch. Instead, I have
+% taken the necessary coding from \texttt{cite.sty} and modified it for
+% \thestyle{}. This coding becomes activated
+% by including the option \texttt{sort} in the |\usepackage| command.
+% It only affects numerical
+% citations, and has no influence on the author--year ones.
+%
+% \section{Numerical Citations with Author--Year Styles}\label{sec:6.0}
+%
+% (New to version 6.0)\\[1ex]
+% In earlier versions, each \texttt{.bst} file could be used either for
+% numerical or author--year citation mode, without any possibility of
+% switching. Obviously numerical \texttt{.bst} files can never be used for
+% author--year citations (the information is missing in the auxiliary file)
+% but there is no reason why the converse should not work.
+%
+% I have been frequently asked if I could implement this feature, and I at
+% first replied that it would be quite easy. That was a mistake. The
+% numerical information was missing in the auxiliary files, so the
+% |\cite| commands could never access it.
+%
+% \subsection{New Coding}
+% I have now recoded \thestyle{} so that the separation of author and year
+% information comes before the information is written to the auxiliary
+% file, and furthermore, a sequential number is also written. This permits
+% numerical citations with \emph{any} of the author--year bibliographic style
+% files.
+%
+% The recoding has made fewer internal changes than I expected. Any users
+% who have local redefinitions of my internals should be aware that of the
+% citation commands, only |\NAT@citexnum| has been altered. Otherwise the
+% changes are in the parsing commands |\NAT@parse| and |\NAT@parse@date|.
+% Of the external commands, |\bibitem| is completely redefined, and
+% |\citeauthor|, |\citeyear|, and |\citefullauthor| are different.
+%
+% Version~5.5 actually made far more internal changes: all internal
+% commands were renamed to conform to recommended \LaTeX{} coding
+% practices.
+%
+% \subsection{Selecting Numerical Mode}
+% By default, \thestyle{} is in author--year mode. This can be changed by
+% \begin{enumerate}
+% \item selecting a numerical bibliography style with predefined
+% citation style, defined either in the package or in the local
+% configuration file;
+%
+% \item giving options \texttt{numbers} or \texttt{super} to the
+% |\usepackage| command;
+%
+% \item issuing |\bibpunct| with the 4th mandatory argument set to \texttt{n}
+% or \texttt{s};
+%
+% \item issuing |\citestyle| with the name of a predefined numerical
+% bibliography style.
+% \end{enumerate}
+% The methods are listed in order of increasing priority.
+%
+% The \thestyle{} package will automatically switch to numerical mode if
+% any one of the |\bibitem| entries fails to conform to the possible
+% author--year formats. There is no way to override this, since such an
+% entry would cause trouble in the author--year mode.
+%
+% There are certain special `numerical' styles, like that of the standard
+% \texttt{alpha.bst}, which include a non-numerical label in place of the
+% number, in the form
+% \begin{quote} |\bibitem[ABC95]{able95}| \end{quote}
+% As far as \thestyle\ is concerned, this label does not conform to the
+% author--year possibilities and is therefore considered to be numerical.
+% The citation mode switches to numerical, and |\cite{able95}| prints
+% [ABC95].
+%
+% \subsection{New Bibliography Styles}
+% I provided three new \texttt{.bst} files to replace the standard \LaTeX\
+% numerical ones:
+% \begin{quote}\ttfamily
+% plainnat.bst \qquad abbrvnat.bst \qquad unsrtnat.bst
+% \end{quote}
+% These produce reference lists in the same style as the corresponding
+% standard \texttt{.bst} file, but can only be used with \thestyle{}. The
+% advantage is that they can be used in both numerical and author--year
+% mode.
+%
+% In fact, \texttt{unsrtnat.bst} is rather silly for author--year
+% citations: the references are listed in the order they were cited, which
+% makes it difficult to find them. It is only included in case an author
+% wishes to switch from \texttt{plainnat} (author--year) to the unsorted
+% numerical mode, retaining the |\citeauthor| and |\citeyear| commands in
+% his paper.
+%
+% It is not possible to produce a modified version of \texttt{alpha.bst}
+% since it would conflict with the |\bibitem| format of \thestyle.
+%
+% The sample bibliography style file \texttt{natbib.bst} will no longer be
+% distributed. It merely represented a demonstration of the |\bibitem|
+% syntax for \thestyle, a function that is now taken over by
+% \texttt{plainnat.bst} and friends.
+%
+% \section{Local Configuration}
+% For \LaTeXe, it is possible to add a local configuration file
+% \thestyle\texttt{.cfg}, which is read in, if it exists, at
+% the end of the package. It may thus contain coding to supecede that in
+% the package, although its main purpose is to allow the user to add his
+% own |\bibstyle@|\textit{bst} definitions to couple citation punctuation
+% with local bibliography styles.
+%
+% \section{Options with \LaTeXe}\label{sec:opts}
+% One of the new features of \LaTeXe{} is \emph{options} for the packages,
+% in the same way as main styles (now called \emph{classes}) can take
+% options. This package is now installed with
+% \begin{quote}
+% |\documentclass[..]{...}|\\
+% |\usepackage[|\emph{options}|]{|\thestyle|}|
+% \end{quote}
+% The options available provide another means of specifying the
+% punctuation for citations:
+% \begin{description}
+% \item[\ttfamily round] (default) for round parentheses;
+% \item[\ttfamily square] for square brackets;
+% \item[\ttfamily curly] for curly braces;
+% \item[\ttfamily angle] for angle brackets;
+% \item[\ttfamily colon] (default) to separate multiple citations with
+% colons;
+% \item[\ttfamily comma] to use commas as separaters;
+% \item[\ttfamily authoryear] (default) for author--year citations;
+% \item[\ttfamily numbers] for numerical citations;
+% \item[\ttfamily super] for superscripted numerical citations, as in
+% \textsl{Nature};
+% \item[\ttfamily sort] puts multiple numerical citations in order and
+% compresses them if possible (as 3--6, 15);
+% \item[\ttfamily sectionbib] redefines |\thebibliography| to issue
+% |\section*| instead of |\chapter*|; valid only for classes with a
+% |\chapter| command; to be used with the \texttt{chapterbib} package.
+% \end{description}
+%
+% If any of these options are selected, the predefined citation styles in
+% the commands |\bibstyle@|\textit{bst} will be no longer be effective.
+% If either |\bibpunct| or |\citestyle| is given in the preamble, the above
+% punctuation options will no longer hold.
+%
+% \section{As Module to Journal-Specific Styles}
+% Although \thestyle{} is meant to be an all-purpose bibliographic style
+% \emph{package}, it may also be incorporated as a module to other
+% packages for specific journals. In this case, many of the general features may
+% be left off. This is allowed for with \texttt{docstrip} options that not
+% only leave off certain codelines, but also include extra ones. So far,
+% options exist for
+% \begin{description}
+% \item[\ttfamily subpack] produces a basic version with author--year only,
+% fixed citation punctuation, no |\bibpunct| nor |\citestyle| nor
+% predefined styles;
+% \item[\ttfamily subpack,egs] for journals of the \textsl{European Geophysical
+% Society}, in particular \textsl{Nonlinear Processes in Geophysics};
+% \item[\ttfamily subpack,agu] for \textsl{American Geophysical Union} journals.
+% \end{description}
+% The \texttt{subpack} option must always be used with \texttt{package}.
+%
+% Previous options \texttt{jgr} and \texttt{grl} have become obsolete due
+% to revisions in these journals; they have been replaced by the more
+% general \texttt{agu} option.
+%
+% \section{Summary}
+%
+% The following summary is included as comments at the beginning of the
+% \thestyle\texttt{.sty} file, for quick reference. Certain lines are
+% dependent on the \texttt{docstrip} options.
+%
+% \iffalse
+%<*package&!subpack>
+% \fi
+% \begin{verbatim}
+ % This package reimplements the LaTeX \cite command to be used for various
+ % citation styles, both author-year and numerical. It accepts BibTeX
+ % output intended for many other packages, and therefore acts as a
+ % general, all-purpose citation-style interface.
+ %
+ % With standard numerical .bst files, only numerical citations are
+ % possible. With an author-year .bst file, both numerical and
+ % author-year citations are possible.
+ %
+ % If author-year citations are selected, \bibitem must have one of the
+ % following forms:
+ % \bibitem[Jones et al.(1990)]{key}...
+ % \bibitem[Jones et al.(1990)Jones, Baker, and Williams]{key}...
+%<*apalike|all>
+ % \bibitem[Jones et al., 1990]{key}...
+%</apalike|all>
+%<*newapa|chicago|all>
+ % \bibitem[\protect\citeauthoryear{Jones, Baker, and Williams}{Jones
+ % et al.}{1990}]{key}...
+ % \bibitem[\protect\citeauthoryear{Jones et al.}{1990}]{key}...
+%</newapa|chicago|all>
+%<*astron|all>
+ % \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}...
+%</astron|all>
+%<*authordate|all>
+ % \bibitem[\protect\citename{Jones et al., }1990]{key}...
+%</authordate|all>
+%<*harvard|all>
+ % \harvarditem[Jones et al.]{Jones, Baker, and Williams}{1990}{key}...
+%</harvard|all>
+ %
+ % This is either to be made up manually, or to be generated by an
+ % appropriate .bst file with BibTeX.
+ % Author-year mode || Numerical mode
+ % Then, \citet{key} ==>> Jones et al. (1990) || Jones et al. [21]
+ % \citep{key} ==>> (Jones et al., 1990) || [21]
+ % Multiple citations as normal:
+ % \citep{key1,key2} ==>> (Jones et al., 1990; Smith, 1989) || [21,24]
+ % or (Jones et al., 1990, 1991) || [21,24]
+ % or (Jones et al., 1990a,b) || [21,24]
+ % \cite{key} is the equivalent of \citet{key} in author-year mode
+ % and of \citep{key} in numerical mode
+ % Full author lists may be forced with \citet* or \citep*, e.g.
+ % \citep*{key} ==>> (Jones, Baker, and Williams, 1990)
+ % Optional notes as:
+ % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
+ % \citep[e.g.,][]{key} ==>> (e.g., Jones et al., 1990)
+ % \citep[see][pg. 34]{key}==>> (see Jones et al., 1990, pg. 34)
+ % (Note: in standard LaTeX, only one note is allowed, after the ref.
+ % Here, one note is like the standard, two make pre- and post-notes.)
+ % \citealt{key} ==>> Jones et al. 1990
+ % \citealt*{key} ==>> Jones, Baker, and Williams 1990
+ % \citealt{key1,key2} ==>> Jones et al. 1990; Smith 1989
+ % Additional citation possibilities (both author-year and numerical modes)
+ % \citeauthor{key} ==>> Jones et al.
+ % \citeyear{key} ==>> 1990
+ % \citefullauthor{key} ==>> Jones, Baker, and Williams
+ % (Multiple keys NOT allowed!)
+ % Note: full author lists depends on whether the bib style supports them;
+ % if not, the abbreviated list is printed even when full requested.
+ %
+ % Defining the citation style of a given bib style:
+%<!nopreonly> % Use \bibpunct (in the preamble only) with 6 mandatory arguments:
+%<nopreonly> % Use \bibpunct (anywhere in the text) with 6 mandatory arguments:
+ % 1. opening bracket for citation
+ % 2. closing bracket
+ % 3. citation separator (for multiple citations in one \cite)
+ % 4. the letter n for numerical styles, s for superscripts
+ % else anything for author-year
+ % 5. punctuation between authors and date
+ % 6. punctuation between years when common authors missing
+ % One optional argument is the character coming before post-notes. It
+ % appears in square braces before all other arguments. May be left off.
+ % Example (and default) \bibpunct[,]{(}{)}{;}{a}{,}{,}
+ %
+ % To make this automatic for a given bib style, named newbib, say, make
+ % a local configuration file, natbib.cfg, with the definition
+ % \newcommand{\bibstyle@newbib}{\bibpunct...}
+ % Then the \bibliographystyle{newbib} will cause \bibstyle@newbib to
+ % be called on THE NEXT LATEX RUN (via the aux file).
+ %
+%<!nopreonly> % Such preprogrammed definitions may be invoked in the text (preamble only)
+%<nopreonly> % Such preprogrammed definitions may be invoked anywhere in the text
+ % by calling \citestyle{newbib}. This is only useful if the style specified
+ % differs from that in \bibliographystyle.
+ %
+%<*!209>
+ % With \citeindextrue and \citeindexfalse, one can control whether the
+ % \cite commands make an automatic entry of the citation in the .idx
+ % indexing file. For this, \makeindex must also be given in the preamble.
+ %
+ % LaTeX2e Options: (for selecting punctuation)
+ % round - round parentheses are used (default)
+ % square - square brackets are used [option]
+ % curly - curly braces are used {option}
+ % angle - angle brackets are used <option>
+ % colon - multiple citations separated by colon (default)
+ % comma - separated by comma
+ % authoryear - selects author-year citations (default)
+ % numbers- selects numerical citations
+ % super - numerical citations as superscripts
+ % sort - sorts and compresses numerical citations
+ % sectionbib - puts bibliography in a \section* instead of \chapter*
+ % Punctuation so selected dominates over any predefined ones.
+ % LaTeX2e options are called as, e.g.
+ % \usepackage[square,comma]{natbib}
+%</!209>
+% \end{verbatim}
+% \iffalse
+ % LaTeX the source file natbib.dtx to obtain more details.
+ %-----------------------------------------------------------
+%</package&!subpack>
+% \fi
+%
+% \section{Options with \texttt{docstrip}}
+% The source \texttt{.dtx} file is meant to be processed with
+% \texttt{docstrip}, for which a number of options are available:
+% \begin{description}
+% \item[\ttfamily all] includes all of the other interfaces;
+%
+% \item[\ttfamily apalike] allows interpretation of minimal \texttt{apalike}
+% form of |\bibitem|;
+%
+% \item[\ttfamily newapa] allows |\citeauthoryear| to be in the optional
+% argument of |\bibitem| along with the punctuation commands of
+% \texttt{newapa.sty};
+%
+% \item[\ttfamily chicago] is the same as \texttt{newapa};
+%
+% \item[\ttfamily harvard] includes interpretation of |\harvarditem|;
+%
+% \item[\ttfamily astron] allows |\astroncite| to appear in the optional
+% argument of |\bibitem|;
+%
+% \item[\ttfamily authordate] adds the syntax of the |\citename| command.
+%
+% \end{description}
+%
+% This package file is intended to act as a module for other class files
+% written for specific journals, in which case the flexible
+% |\bibstyle@|{\em bst\/} commands are not wanted. Punctuation and
+% other style features are to be rigidly fixed. These journal options are
+% \begin{description}
+% \item[\ttfamily agu] for journals of the \textsl{American Geophysical
+% Union};
+%
+% \item[\ttfamily egs] for journals of the \textsl{European Geophysical
+% Society}, in particular \textsl{Nonlinear Processes in Geophysics}.
+%
+% \end{description}
+%
+% The remaining options are:
+% \begin{description}
+% \item[\ttfamily package] to produce a \texttt{.sty} package file with most
+% comments removed;
+%
+% \item[\ttfamily 209] (together with \texttt{package}) for a style option
+% file that will run under the older \LaTeX~2.09;
+%
+% \item[\ttfamily subpack] (together with \texttt{package}) for coding that
+% is to be included inside a larger package; even more comments are
+% removed, as well as \LaTeXe{} option handling and identification;
+% produces a basic \thestyle\ package for author--year only, fixed
+% citation style (punctuation);
+%
+% \item[\ttfamily nopreonly] allows |\citestyle| and |\bibpunct| to be
+% called anywhere in the text; this is considered possibly useful
+% with the \texttt{chapterbib} package where different chapters might
+% have different bibliography and citation styles; is only provided
+% in case I change my mind about this feature, but for now I
+% refuse to implement it;
+%
+% \item[\ttfamily driver] to produce a driver \texttt{.drv} file that will
+% print out the documentation under \LaTeXe. The documentation cannot
+% be printed under \LaTeX~2.09.
+%
+% \end{description}
+% The source file \texttt{\filename.dtx} is itself a driver file and can
+% be processed directly by \LaTeXe.
+%
+% \StopEventually{\PrintIndex\PrintChanges}
+%
+% \section{The Coding}
+% This section presents and explains the actual coding of the macros.
+% It is nested between |%<*package>| and |%</package>|, which
+% are indicators to \texttt{docstrip} that this coding belongs to the package
+% file.
+%
+% The \texttt{docstrip} option |<subpack>| should only be called if the
+% coding is to be included as part of another package, in which case the
+% announcement text and \LaTeXe{} options are suppressed.
+%
+% An alternative version of this coding is provided for running as a
+% style file under \LaTeX~2.09. Code lines belonging to this are
+% indicated with guard |<209>|; those for LaTeXe{} only with |<!209>|.
+%
+% With \LaTeX\ release from \texttt{1995/12/01}, |\cite| is made robust,
+% something that I have adopted as well.
+%
+% Another change in the above release is that
+% |\G@refundefinedtrue|\footnote{In fact, it was only proposed to be
+% removed, but because several packages, including this one, were
+% adversely affected, the name was retained for the new coding.}
+% and the |\if@openbib| flag have been removed.
+% New, more effective, and compact, coding has replaced them. Rather than
+% relying on the kernel coding, I make \thestyle\ more
+% self-reliant.
+%
+% \subsection{Test for Specific Journals}
+% This package should not be loaded with the specific journal packages that
+% already include it; it is superfluous and can lead to contradictions.
+% \begin{macrocode}
+%<*package>
+%<*!209&!subpack>
+\@ifclassloaded{aguplus}{\PackageError{natbib}
+ {The aguplus class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+\@ifclassloaded{nlinproc}{\PackageError{natbib}
+ {The nlinproc class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+\@ifclassloaded{egs}{\PackageError{natbib}
+ {The egs class already includes natbib coding,\MessageBreak
+ so you should not add it explicitly}
+ {Type <Return> for now, but then later remove\MessageBreak
+ the command \protect\usepackage{natbib} from the document}
+ \endinput}{}
+%</!209&!subpack>
+% \end{macrocode}
+%
+% \subsection{Selecting Citation Punctuation and Other Modifications}
+% \begin{macro}{\bibstyle@xxx}
+% \changes{5.3}{1994 Sep 13}{Add \texttt{agsm} and \texttt{dcu} punctuation
+% styles from \texttt{harvard} series}
+% We begin by defining a number of punctuation styles for specific
+% author--year \texttt{.bst} files that I use.
+% They are placed here, near the beginning, so that another
+% user can easily find them to add his own. Some comments remain in the
+% stripped version too.
+% \begin{macrocode}
+%<*!subpack>
+ % Define citation punctuation for some author-year styles
+ % One may add and delete at this point
+%<!209> % Or put additions into local configuration file natbib.cfg
+\newcommand\bibstyle@chicago{\bibpunct{(}{)}{;}{a}{,}{,}}
+\newcommand\bibstyle@named{\bibpunct{[}{]}{;}{a}{,}{,}}
+\newcommand\bibstyle@agu{\bibpunct{[}{]}{;}{a}{,}{,~}}%Amer. Geophys. Union
+\newcommand\bibstyle@egs{\bibpunct{(}{)}{;}{a}{,}{,}}%Eur. Geophys. Soc.
+%<*all|harvard>
+\newcommand\bibstyle@agsm{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
+\newcommand\bibstyle@kluwer{\bibpunct{(}{)}{,}{a}{}{,}\gdef\harvardand{\&}}
+\newcommand\bibstyle@dcu{\bibpunct{(}{)}{;}{a}{;}{,}\gdef\harvardand{and}}
+%</all|harvard>
+% \end{macrocode}
+%
+% Here give the explicit punctuation for the specific journals; their
+% coding need not contain the punctuation macros |\bibpunct| and
+% |\bibstyle@xxx| since the punctuation is fixed for them.
+% \begin{macrocode}
+\newcommand\bibstyle@aa{\bibpunct{(}{)}{;}{a}{}{,}} %Astronomy & Astrophysics
+\newcommand\bibstyle@pass{\bibpunct{(}{)}{;}{a}{,}{,}}%Planet. & Space Sci
+\newcommand\bibstyle@anngeo{\bibpunct{(}{)}{;}{a}{,}{,}}%Annales Geophysicae
+\newcommand\bibstyle@nlinproc{\bibpunct{(}{)}{;}{a}{,}{,}}%Nonlin.Proc.Geophys.
+%</!subpack>
+%<agu>\newcommand\NAT@open{[} \newcommand\NAT@close{]}
+%<agu>\newcommand\NAT@sep{;} \newcommand\NAT@cmt{,}
+%<agu>\newcommand\NAT@aysep{,} \newcommand\NAT@yrsep{,~}
+%<egs>\newcommand\NAT@open{(} \newcommand\NAT@close{)}
+%<egs>\newcommand\NAT@sep{;} \newcommand\NAT@cmt{,}
+%<egs>\newcommand\NAT@aysep{,} \newcommand\NAT@yrsep{,}
+% \end{macrocode}
+%
+% \changes{6.5}{1997 Jan 30}{Fix \texttt{esa} style for new note system}
+% Next, the same thing is done for some numerical styles. A major
+% difference here is that the |\@biblabel| and |\@cite| commands must also
+% be redefined in many cases. These redefinitions must be made with the
+% |\gdef| (global definition) command.
+% \begin{macrocode}
+%<*!subpack>
+ % Define citation punctuation for some numerical styles
+\newcommand\bibstyle@cospar{\bibpunct{/}{/}{,}{n}{}{}%
+ \gdef\NAT@biblabelnum##1{##1.}}
+\newcommand\bibstyle@esa{\bibpunct{(}{)}{,}{n}{}{}%
+ \gdef\NAT@biblabelnum##1{##1.\hspace{1em}}%
+ \gdef\NAT@citenum##1##2##3{\NAT@open \if\relax##2\relax\else
+ ##2\ \fi Ref.~##1\if\relax##3\relax\else\NAT@cmt\ ##3\fi\NAT@close}}
+\newcommand\bibstyle@nature{\bibpunct{}{}{,}{s}{}{}%
+ \gdef\NAT@biblabelnum##1{##1.}}
+% \end{macrocode}
+%
+% Finally, the standard \LaTeX{} (numerical) citation styles are included
+% along with their \thestyle\ modifications (author--year).
+% \begin{macrocode}
+ % The standard LaTeX styles
+\newcommand\bibstyle@plain{\bibpunct{[}{]}{,}{n}{}{}}
+\let\bibstyle@alpha=\bibstyle@plain
+\let\bibstyle@abbrv=\bibstyle@plain
+\let\bibstyle@unsrt=\bibstyle@plain
+ % The author-year modifications of the standard styles
+\newcommand\bibstyle@plainnat{\bibpunct{[}{]}{,}{a}{,}{,}}
+\let\bibstyle@abbrvnat=\bibstyle@plainnat
+\let\bibstyle@unsrtnat=\bibstyle@plainnat
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{\LaTeXe{} Options}
+% \begin{macro}{\ifNAT@numbers}
+% \changes{5.5}{1995 Mar 21}{Add flag for switching between cite styles}
+% \begin{macro}{\ifNAT@super}
+% \changes{5.5}{1995 Mar 21}{Add flag for switching between cite styles}
+% Two flags are used to keep track of the citation style. The flag
+% |\ifNAT@numbers| is \meta{false} by default (author--year) and switches
+% to \meta{true} for numerical citations. The flag |\ifNAT@super| indicates
+% if the numerical citation is to be done with superscripts.
+% \begin{macrocode}
+\newif\ifNAT@numbers \NAT@numbersfalse
+\newif\ifNAT@super \NAT@superfalse
+%</!subpack>
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\DeclareOption}
+% \changes{5.0}{1994 May 18}{Add \LaTeXe{} options.}
+% \changes{5.3}{1994 Sep 13}{Add options \texttt{angle} and \texttt{curly}}
+% \changes{6.0}{1995 Sep 6}{Add option \texttt{bibstyle}}
+% \changes{6.0}{1995 Sep 6}{Execute \texttt{nobibstyle} with all options}
+% \changes{6.1}{1995 Nov 27}{Add option \texttt{openbib}}
+% \changes{6.4}{1996 Sep 1}{Add option \texttt{sectionbib}}
+% \changes{6.4}{1996 Sep 13}{Add option \texttt{sort}}
+% For \LaTeXe, we can define some options to be used with the |\usepackage|
+% command that loads the \thestyle{} package. These are an additional means
+% of specifying the citation punctuation and scheme.
+%
+% The standard option \texttt{openbib} is also defined here so that its
+% behaviour is entirely under my control. Relying on the standard classes
+% can lead to trouble.
+% \begin{macrocode}
+%<*!subpack&!209>
+\DeclareOption{numbers}{\NAT@numberstrue
+ \ExecuteOptions{square,comma,nobibstyle}}
+\DeclareOption{super}{\NAT@supertrue\NAT@numberstrue
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{authoryear}{\NAT@numbersfalse
+ \ExecuteOptions{round,colon,bibstyle}}
+\DeclareOption{round}{%
+ \renewcommand\NAT@open{(} \renewcommand\NAT@close{)}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{square}{%
+ \renewcommand\NAT@open{[} \renewcommand\NAT@close{]}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{angle}{%
+ \renewcommand\NAT@open{$<$} \renewcommand\NAT@close{$>$}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{curly}{%
+ \renewcommand\NAT@open{\{} \renewcommand\NAT@close{\}}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{comma}{\renewcommand\NAT@sep{,}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{colon}{\renewcommand\NAT@sep{;}
+ \ExecuteOptions{nobibstyle}}
+\DeclareOption{nobibstyle}{\let\bibstyle=\@gobble}
+\DeclareOption{bibstyle}{\let\bibstyle=\@citestyle}
+\newif\ifNAT@openbib \NAT@openbibfalse
+\DeclareOption{openbib}{\NAT@openbibtrue}
+\DeclareOption{sectionbib}{\def\NAT@sectionbib{on}}
+\def\NAT@sort{0}
+\DeclareOption{sort}{\def\NAT@sort{1}}
+\@ifpackageloaded{cite}{\PackageWarningNoLine{natbib}
+ {The `cite' package should not be used\MessageBreak
+ with natbib. Use option `sort' instead}\ExecuteOptions{sort}}{}
+%</!subpack&!209>
+% \end{macrocode}
+% Before version~6.0, the punctuation options had the lowest priority,
+% being overridden by any |\bibstyle@|\textit{bst} command. It was necessary
+% to add the option \texttt{nobibstyle} to make them effective. Now this
+% option is automatically executed whenever a punctuation option is chosen.
+% The reason is that \texttt{nobibstyle} is either superfluous (no
+% predefined citation style is present) or always necessary to make the
+% other options meaningful.
+%
+% It seems to be better practice to make any explicit choices to have
+% higher priority over implicit ones.
+%
+% The option \texttt{bibstyle} reactivates the predefined commands, just in
+% case this is needed, as it is for the option \texttt{authoryear}. This
+% leaves the predefined styles functioning, since it does not really
+% determine the citation style, but rather establishes a default which may
+% be overwritten by a prestored one. For this reason, this option must be
+% defined very early so that any explicit punctuation options overwrite the
+% defaults. (Options are executed in the order defined.)
+%
+% \end{macro}
+%
+% \subsection{Selecting Citation Punctuation and Other Modifications}
+% \begin{macro}{\bibstyle}
+% \changes{5.4}{1994 Nov 24}{Move \cs{ProcessOptions} to after definition
+% of \cs{bibstyle}}
+% The pre-defined punctuation styles are associated with particular
+% \texttt{.bst} files. This is implemented by means of the standard
+% |\bibliographystyle| command that specifies the name of the \texttt{.bst}
+% file that is to be used by \btx. Some \LaTeX{} manuals erroneously state
+% that this command must be issued prior to any |\cite| commands. If that
+% were the case, the task of invoking the style definitions would be much
+% easier, for they certainly must be issued before the first |\cite|.
+% However, I have always called |\bibliographystyle| together with
+% |\bibliography|, well after all |\cite| commands.
+%
+% In fact, all that |\bibliographystyle|\marg{bst} does is to write
+% |\bibstyle|\marg{bst} to the auxiliary file. This file, and all its
+% contents, will be read in at the beginning of the next \LaTeX{} run; to
+% be precise, it is read in by |\begin{document}|. The command |\bibstyle| is
+% then executed at that point on the next run. However, it is
+% defined to do nothing more than to swallow up its argument! In other
+% words, the combination |\bibliographystyle| and |\bibstyle| do absolutely
+% nothing to the \LaTeX{} runs. In fact, |\bibstyle| is a command for
+% \btx{} alone.
+%
+% I have taken advantage of this to redefine |\bibstyle| to execute the
+% \texttt{bst}-specific definitions. This definition is made here before
+% |\ExecuteOptions| so that options may make use of it; the option
+% \texttt{nobibstyle} turns it off, for example.
+% \begin{macrocode}
+%<*!subpack>
+\renewcommand\bibstyle[1]{\@ifundefined{bibstyle@#1}{\relax}
+ {\csname bibstyle@#1\endcsname}}
+% \end{macrocode}
+% This is executed only when the auxiliary file is read in, and that is
+% when |\begin{document}| is issued. Thus this is well before any |\cite|
+% commands. It is for this reason that any definitions in the
+% |\bibstyle@xxx| commands must be global.
+%
+% A minor problem arises in that the auxiliary file is read in a second
+% time, at the end of the run, to check whether any labels have changed.
+% Sometimes, re-executing the |\bibstyle@xxx| command at this point
+% produces error messages. To avoid this, |\bibstyle| is reset to its
+% normal, do-nothing, definition after |\begin{document}|.
+%
+% \LaTeXe{} provides a better way of adding commands to |\document|,
+% which is then exploited here. Paradoxically, the problem with re-reading
+% the auxiliary file does not seem to arise for this version.
+%
+% (|\NAT@set@cites| must also be executed at the start of the document; for
+% \LaTeXe, this is added later when the macro is defined.)
+% \begin{macrocode}
+%<*209>
+\let\ori@document=\document
+\renewcommand\document{\ori@document\global\let\bibstyle=\@gobble
+ \NAT@set@cites}
+%</209>
+%<!209>\AtBeginDocument{\global\let\bibstyle=\@gobble}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\citestyle}
+% \changes{5.4}{1995 Feb 03}{Add macro}
+% \changes{5.5}{1995 Mar 24}{Make preamble only}
+% To allow one to invoke preprogrammed punctuation styles that are
+% different from the name of the bibliography style specified by
+% |\bibliographystyle|, call |\citestyle| in the preamble. This then
+% deactivates |\bibstyle| so that any preprogrammed punctuations become
+% ineffective.
+%
+% This, and all other punctuation (citation style) declarations, may only
+% be used in the preamble, as of version 5.5. (Previously they could only
+% be used after the preamble, but the preamble is more logical.)
+% \begin{macrocode}
+\let\@citestyle\bibstyle
+\newcommand\citestyle[1]{\@citestyle{#1}\let\bibstyle\@gobble}
+%<!209&!nopreonly>\@onlypreamble{\citestyle}\@onlypreamble{\@citestyle}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bibpunct}
+% \changes{5.4}{1994 Nov 24}{Add superscript style of citations}
+% \changes{5.5}{1995 Mar 21}{Use flags to select citation style}
+% \changes{5.5}{1995 Mar 24}{Make preamble only}
+% \changes{6.0}{1995 Sep 6}{Sets \cs{bibstyle} to \cs{@gobble}}
+% \changes{6.0}{1995 Sep 6}{Declare \cs{NAT@numbersfalse} before testing 4th
+% argument}
+% \changes{6.0}{1995 Sep 19}{Add optional argument for \cs{NAT@cmt}}
+% Now |\bibpunct| is defined. It sets various punctuation commands equal to
+% its arguments. It also switches to numerical style if that is specified
+% by the fourth argument. This is done by setting the citation style
+% flag |NAT@numbers| accordingly. The internal cite macros are later
+% set to the style-dependent definitions by calling |\NAT@set@cites|.
+%
+% The fourth argument can also be \texttt{s} for superscript, which
+% sets both the numerical and the |\NAT@super| flags.
+%
+% An optional argument has been added to determine the punctuation that
+% precedes a trailing note. This makes the counting of mandatory arguments
+% somewhat confused, since the fourth argument is now |#5|.
+%
+% \begin{macrocode}
+%<!209>\newcommand\bibpunct[7][,]%
+%<209>\newcommand\bibpunct{\@ifnextchar[{\@bibpunct}{\@bibpunct[,]}}
+%<209>\def\@bibpunct[#1]#2#3#4#5#6#7%
+ {\gdef\NAT@open{#2}\gdef\NAT@close{#3}\gdef
+ \NAT@sep{#4}\global\NAT@numbersfalse\ifx #5n\global\NAT@numberstrue
+ \else
+ \ifx #5s\global\NAT@numberstrue\global\NAT@supertrue
+ \fi\fi
+ \gdef\NAT@aysep{#6}\gdef\NAT@yrsep{#7}%
+ \gdef\NAT@cmt{#1}%
+ \global\let\bibstyle\@gobble
+%<nopreonly> \NAT@set@cites
+ }
+%<*!nopreonly>
+%<!209>\@onlypreamble{\bibpunct}
+%<209>\def\do{\noexpand\do\noexpand}
+%<209>\edef\@preamblecmds{\@preamblecmds \do\bibpunct \do\citestyle}
+%</!nopreonly>
+%</!subpack>
+% \end{macrocode}
+% The command turns off |\bibstyle| so that the predefined
+% |\bibstyle@|\textit{bst} commands no longer work. Thus |\bibpunct| has
+% priority over the predefined styles.
+% \end{macro}
+%
+% \subsection{Setting the Defaults}
+% For \LaTeXe, the defaults (punctuation and scheme type) are set with the
+% |\ExecuteOptions| command. For \LaTeX~2.09, the default scheme is
+% author--year, and punctuation can only be set with |\bibpunct|.
+%
+% \begin{macro}{\NAT@open}
+% \changes{5.5}{1995 May 14}{Renamed from \cs{@citebegin}}
+% \begin{macro}{\NAT@close}
+% \changes{5.5}{1995 May 14}{Renamed from \cs{@citeend}}
+% \begin{macro}{\NAT@sep}
+% \changes{5.5}{1995 May 14}{Renamed from \cs{@citesep}}
+% \begin{macro}{\NAT@aysep}
+% \changes{5.5}{1995 May 14}{Renamed from \cs{@auyrsep}}
+% \begin{macro}{\NAT@yrsep}
+% \changes{5.5}{1995 May 14}{Renamed from \cs{@yrsep}}
+% \begin{macro}{\NAT@cmt}
+% \changes{6.0}{1995 Sep 19}{Add macro}
+% The five punctuation characters for citations are the start and stop
+% brackets, the character between multiple citations, the character between
+% the authors and year (parenthetical only), and the character between
+% adjacent years when the common author list is omitted.
+% A sixth one has been added: the character preceding post-notes.
+% Define their default values.
+% \begin{macrocode}
+%<!agu&!egs>\newcommand\NAT@open{(} \newcommand\NAT@close{)}
+%<!agu&!egs>\newcommand\NAT@sep{;}
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
+% \changes{6.0}{1995 Sep 19}{Remove \cs{ExecuteOptions} since default
+% style determined by definitions}
+% The option \texttt{authoryear} was originally provided to serve as the
+% default; hence its definition includes \texttt{bibstyle}. However, this
+% is not necessary since all the appropriate parameters are set to these
+% values anyway. (One could consider removing \texttt{bibstyle}.)
+% \begin{macrocode}
+%<*!subpack&!209>
+%\ExecuteOptions{authoryear}
+\ProcessOptions
+%</!subpack&!209>
+%<!agu&!egs>\newcommand\NAT@aysep{,} \newcommand\NAT@yrsep{,}
+%<!agu&!egs>\newcommand\NAT@cmt{,}
+% \end{macrocode}
+%
+% \subsection{Internal Citing Macros}
+% A number of internal macros (|\@citex|, |\@cite|, |\@biblabel|, and
+% |\@bibsetup|) need to have different definitions for author--year and
+% numerical schemes. They are defined here for the two different styles,
+% with different names, and which ones become active depend on the citation
+% style flags |\ifNAT@numbers| and |\ifNAT@super|.
+%
+% The coding for the journals always defines the internal macros directly
+% as the author--year version, since they can never do any switching.
+%
+% \begin{macro}{\@cite}
+% \changes{5.5}{1995 Mar 21}{Is \cs{let} equal to the numerical or
+% author--year definition}
+% \begin{macro}{\NAT@cite}
+% \changes{4.2}{1993 Dec 2}{Reversed optional text no longer needs to include
+% a trailing blank}
+% \changes{5.0}{1994 May 18}{Add optional notes after as well as before
+% citation.}
+% \changes{5.5}{1995 Mar 13}{Add command space in place of space}
+% \changes{5.5}{1995 Mar 13}{Use \cs{if}\cs{relax}\texttt{\#2}\cs{relax}
+% in place of \cs{if}\texttt{\#2}\cs{@empty}}
+% \changes{5.5}{1995 Mar 21}{Renamed from \cs{@cite}}
+% \begin{macro}{\NAT@citenum}
+% \changes{5.0}{1994 May 18}{Add optional notes after as well as before
+% citation.}
+% \changes{5.5}{1995 Mar 13}{Add command space in place of space}
+% \changes{5.5}{1995 Mar 13}{Use \cs{if}\cs{relax}\texttt{\#2}\cs{relax}
+% in place of \cs{if}\texttt{\#2}\cs{@empty}}
+% \changes{5.5}{1995 Mar 21}{Renamed from \cs{@citenum}}
+% \begin{macro}{\NAT@citesuper}
+% \changes{5.4}{1994 Nov 24}{Add macro for superscripts}
+% \changes{5.5}{1995 Mar 21}{Renamed from \cs{@citesuper}}
+% \changes{5.5}{1995 Mar 27}{Prints post-note only if present}
+% \changes{6.2}{1995 Feb 2}{Get superscript font size right; use
+% \cs{textsuperscript}}
+% \changes{6.5}{1997 Jan 30}{Numericals always print notes if present, do not
+% test for any flag first}
+% Define the internal |\@cite| commands that prints the assembled string
+% of citation label texts, plus possible optional notes, before and after.
+% The numerical version is almost the same, except that the brackets
+% |\NAT@open| and |\NAT@close| are always present and the optional notes are
+% included if they are present. For author-year, the notes are included (if
+% present) here only for parenthetical citations (|\ifNAT@swa| if \meta{true})
+% and for textual citations, they are printed by the |\NAT@citex|.
+%
+% The superscript citation prints only the following, not the preceding,
+% note, and then only if it is present.
+% \begin{macrocode}
+%<subpack>\renewcommand\@cite%
+%<!subpack>\newcommand\NAT@cite%
+ [3]{\ifNAT@swa\NAT@open\if\relax#2\relax\else#2\ \fi
+ #1\if\relax#3\relax\else\NAT@cmt\ #3\fi\NAT@close\else#1\fi}
+%<*!subpack>
+\newcommand\NAT@citenum[3]{\NAT@open\if\relax#2\relax\else
+ #2\ \fi #1\if\relax#3\relax\else\NAT@cmt\ #3\fi\NAT@close}
+\newcommand\NAT@citesuper[3]{\unskip\hspace{1pt}\textsuperscript{#1}%
+ \if\relax#3\relax\else\ (#3)\fi}
+%<!209>\providecommand
+%<209>\newcommand
+ \textsuperscript[1]{\mbox{$^{\mbox{\scriptsize#1}}$}}
+%</!subpack>
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{\@citex}
+% \changes{5.5}{1995 Mar 21}{Is \cs{let} equal to the numerical or
+% author--year definition}
+% \changes{6.1}{1995 Nov 22}{Use \cs{NAT@citeundefined}}
+% \begin{macro}{\NAT@citexnum}
+% \changes{5.4}{1994 Nov 24}{Make like \LaTeXe{} definition instead of 2.09}
+% \changes{5.5}{1995 Mar 21}{Renamed from \cs{@citexnum}}
+% \changes{6.0}{1995 Sep 4}{Prints \cs{NAT@num} instead of \cs{b@citeb}}
+% \changes{6.4}{1996 Sep 12}{Add \cs{NAT@space} for variable spacing between
+% numericals and superscripts}
+% \changes{6.4}{1996 Oct 2}{Add dummy macros for \texttt{hyperref.sty}}
+% The original definition of |\@citex| is now used to define |\NAT@citexnum|,
+% the version for numerical citations. What it does is to write a
+% |\citation| command to the auxiliary file (for \btx), and then parses the
+% second argument, the list of citation keys. These keys have to be decoded
+% into the actual label text contained in |\b@|\emph{key} (a number or
+% author--year), and put together as the argument of |\@cite|.
+%
+% The temporary command |\@citeb| takes on the value of each of the keys in
+% turn; |\@citea| is the separator between multiple citations, initially
+% set to nothing, becoming |\NAT@sep| plus line-break suppression
+% afterwards. The |\@firstofone| macro removes any leading blanks in
+% |\@citeb|, making |\cite{key1, key2}| possible. If |\b@|\emph{key} is
+% not defined (as on the first run, for example), a warning is printed, and
+% a question mark inserted. Finally, the decoded label text is placed into
+% an |\hbox| to prevent it from being split.
+%
+% As of version 6.0, the numerical label text is to be found in |\NAT@num|,
+% whereas previously it was the entire label, |\b@|\emph{key}.
+%
+% Note that here, and in later coding, internal names beginning with
+% |\@cite..| are employed; these names are used in the original \LaTeX{}
+% coding for the same functions. Therefore, if there are other packages
+% that have name conflicts with \thestyle, they will also have conflicts with
+% standard \LaTeX\ too.
+%
+% For compatibility with the \texttt{chapterbib} package of Donald Arseneau,
+% add |\@extra@b@citeb| to the cite key; this contains the number of the
+% included file in order to distinguish the same citation in separate files
+% which then belong to different bibliography listings.
+% \begin{macrocode}
+%<209>\let\@firstofone\@iden
+%<!209>\providecommand\@firstofone[1]{#1}
+%<*!subpack>
+\newcommand\NAT@citexnum{}
+\def\NAT@citexnum[#1][#2]#3{\let\@citea\@empty
+ \@cite{\@for\@citeb:=#3\do
+ {\@citea\def\@citea{\NAT@sep\penalty\@m\NAT@space}%
+ \edef\@citeb{\expandafter\@firstofone\@citeb}%
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{%
+%<209> {\reset@font\bf ?}\@warning
+%<!209>{\reset@font\bfseries?}
+%<!209> \NAT@citeundefined\PackageWarning{natbib}%
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\NAT@parse{\@citeb}\hbox{\hyper@natlinkstart{\@citeb}%
+ \NAT@num\hyper@natlinkend}}}}{#1}{#2}}
+%</!subpack>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\NAT@citex}
+% \changes{5.2}{1994 Aug 25}{Make like \LaTeXe{} definition instead of 2.09}
+% \changes{5.4}{1994 Nov 24}{Change space to command space for text cites}
+% \changes{5.4}{1995 Feb 6}{Add test for adjacent citations having equal
+% authors and years}
+% \changes{5.5}{1995 Mar 21}{Renamed from \cs{@citex}}
+% \changes{6.0}{1995 Sep 21}{Move \cs{ifNAT@full} test from
+% \cs{NAT@parse} to here}
+% \changes{6.4}{1996 Oct 2}{Add dummy macros for \texttt{hyperref.sty}}
+% The author--year version of |\@citex| is now defined.
+% It starts off much the same as the numerical version. However, it wants
+% the authors and year for each decoded label text to be separated into
+% |\NAT@nm| and |\NAT@date|. This is done by the routine |\NAT@parse|.
+% The names of the authors in the previous key are stored in
+% |\NAT@last@nm|,
+% and if that is the same as the current names, it is not printed again.
+% The output citation text is not put into an |\hbox| since line division
+% may occur within the author--year citation. The output is formatted
+% differently for parenthetical (|\NAT@swa| \meta{true}) and textual
+% (|\NAT@swa| \meta{false}) cases.
+%
+% |\NAT@nm| will contain either |\NAT@name| or |\NAT@all@names| depending
+% on the state of |\ifNAT@full|.
+% \begin{macrocode}
+%<subpack>\def\@citex%
+%<!subpack>\newcommand\NAT@citex{}
+%<!subpack>\def\NAT@citex%
+ [#1][#2]#3{\let\@citea\@empty
+ \@cite{\let\NAT@nm\@empty\let\NAT@year\@empty
+ \@for\@citeb:=#3\do
+ {\edef\@citeb{\expandafter\@firstofone\@citeb}%
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{\@citea%
+%<209> {\reset@font\bf ?}\@warning
+%<!209> {\reset@font\bfseries ?}\NAT@citeundefined
+%<!209> \PackageWarning{natbib}%
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\hyper@natlinkstart{\@citeb}%
+ \let\NAT@last@nm=\NAT@nm\let\NAT@last@yr=\NAT@year
+ \NAT@parse{\@citeb}\ifNAT@full\let\NAT@nm\NAT@all@names\else
+ \let\NAT@nm\NAT@name\fi
+% \end{macrocode}
+% Begin parenthetical citation. Check if author names the same as in the
+% previous citation, and if so, also check if the years are the same.
+% \changes{5.4}{1995 Feb 8}{Add \cs{unskip} to avoid double spacing
+% between years}
+% \changes{6.5}{1997 Jan 30}{Add optional notes for textual citations}
+% If so, citations are printed `1994a,b'; if a space is wanted between
+% the letters, as `1994a,~b', then give |\NAT@yrsep| as |{,~}|. For this
+% reason, the |\unskip| is needed when the space between years is printed
+% to avoid two spaces.
+% \begin{macrocode}
+ \ifNAT@swa
+ \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
+ \ifx\NAT@last@yr\NAT@year \NAT@exlab\else\unskip\ \NAT@date\fi
+ \else\@citea{\NAT@nm}\NAT@aysep
+ \ \NAT@date \fi \def\@citea{\NAT@sep\ }%
+% \end{macrocode}
+% Begin textual citation. Do same checks for repeated names and years.
+% Optional notes are added here, not in |\NAT@cite|, which means for
+% multiple citations, each one will receive the notes in the year part.
+% (Pre-notes are questionable for this, but include them anyway.)
+% \begin{macrocode}
+ \else
+ \ifx\NAT@last@nm\NAT@nm\NAT@yrsep\ifx\NAT@last@yr\NAT@year
+ \NAT@exlab\else \unskip\ \NAT@date\fi
+ \else\@citea{\NAT@nm}\ \NAT@open\if\relax#1\relax\else#1\ \fi
+ \NAT@date\fi
+ \def\@citea{\NAT@close\NAT@sep\ }%
+ \fi \hyper@natlinkend
+ }}\ifNAT@swa\else\if\relax#2\relax\else\NAT@cmt\ #2\fi
+ \NAT@close\fi}{#1}{#2}}
+% \end{macrocode}
+%
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\@biblabel}
+% \changes{5.5}{1995 Mar 21}{Is \cs{let} equal to the numerical or
+% author--year definition}
+% \begin{macro}{\NAT@biblabel}
+% \changes{5.5}{1995 Mar 21}{Renamed from \cs{@biblabel}}
+% \begin{macro}{\NAT@biblabelnum}
+% \changes{5.5}{1995 Mar 21}{Renamed from \cs{@biblabelnum}}
+% Similarly for the |\@biblabel| command, that is used to format the
+% citation label in the list of references, define the author--year
+% and the numerical versions. For the former, no labels are
+% printed in the list of references.
+% \begin{macrocode}
+%<subpack>\renewcommand\@biblabel[1]{\hfill}
+%<*!subpack>
+\newcommand\NAT@biblabel[1]{\hfill}
+\newcommand\NAT@biblabelnum[1]{[#1]}
+%</!subpack>
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{\@bibsetup}
+% \changes{5.5}{1995 Mar 21}{Is \cs{let} equal to the numerical or
+% author--year definition}
+% \begin{macro}{\NAT@bibsetup}
+% \changes{5.5}{1995 Mar 13}{Add \cs{bibhang} for variable hanging
+% indentation}
+% \changes{5.5}{1995 Mar 21}{Renamed from \cs{@bibsetup}}
+% \begin{macro}{\NAT@bibsetnum}
+% \changes{5.1}{1994 Jun 22}{Add \cmd{\if@openbib} as in \LaTeXe}
+% \changes{5.5}{1995 Mar 21}{Renamed from \cs{@bibsetnum}}
+% \changes{6.1}{1995 Nov 22}{Use \cs{ifNAT@openbib}}
+% \changes{6.2}{1996 Mar 05}{Add \cs{bibsep} for linespacing between
+% references}
+% \changes{6.5}{1997 Jan 10}{Set \cs{bibsep} to 0 for EGS}
+% The macro |\@bibsetup| is called by |\thebibliography| and contains any
+% coding for formatting the list of references that may be different for
+% numerical and author--year schemes. For numerical citations, the
+% |\labelwidth| must be set to the size of the longest label (the argument
+% of |\thebibliography|), and the |\leftmargin| adjusted accordingly. For
+% author--year, there are no labels, so |\labelwidth| is zero, all lines
+% after the first are indented by 1~em.
+%
+% Since |\thebibliography| is not included in the \textsl{AGU} package,
+% this macro is left off here too.
+% \begin{macrocode}
+%<*!agu>
+%<*!egs>
+%<*!subpack>
+\newcommand\NAT@bibsetnum[1]{\settowidth\labelwidth{\@biblabel{#1}}%
+ \setlength{\leftmargin}{\labelwidth}\addtolength{\leftmargin}{\labelsep}%
+ \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}%
+%<*!209>
+ \ifNAT@openbib
+ \addtolength{\leftmargin}{\bibindent}%
+ \setlength{\itemindent}{-\bibindent}%
+ \setlength{\listparindent}{\itemindent}%
+ \setlength{\parsep}{0pt}%
+ \fi
+%</!209>
+}
+%</!subpack>
+%</!egs>
+\newlength{\bibhang}
+\setlength{\bibhang}{1em}
+% \end{macrocode}
+%
+% The length |\bibsep| is to be the spacing between listed references.
+% This is normally the regular line spacing between |\item|s in a
+% \texttt{list} environment, which is |\itemsep| + |\parsep|. These are set
+% by |\@listi|. Therefore, in order to set |\bibsep| to the default value,
+% call |\@listi| locally and globally set it.
+%
+% \begin{macrocode}
+\newlength{\bibsep}
+%<!egs>{\@listi \global\bibsep\itemsep \global\advance\bibsep by\parsep}
+%<egs>\setlength{\bibsep}{\z@}
+
+%<subpack>\newcommand\@bibsetup%
+%<!subpack>\newcommand\NAT@bibsetup%
+ [1]{\setlength{\leftmargin}{\bibhang}\setlength{\itemindent}{-\leftmargin}%
+ \setlength{\itemsep}{\bibsep}\setlength{\parsep}{\z@}}
+%</!agu>
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{\NAT@set@cites}
+% \changes{5.5}{1995 Mar 21}{New macro to set the internal macros to
+% numerical or author--year}
+% \changes{6.3}{1996 Jun 17}{Add \cs{natexlab}}
+% \changes{6.4}{1996 Sep 12}{Remove \cs{global} from definitions and \cs{let}}
+% \changes{6.4}{1996 Sep 12}{Define \cs{NAT@space} differently for
+% numericals and superscripts}
+% The four internal macros that have different definitions depending on the
+% citation style have been defined with different names; now set the macros
+% to be executed to that set that is actually wanted. This is determined by
+% the flags |\ifNAT@numbers| and |\ifNAT@super|. The setting command
+% |\NAT@set@cites| is executed by |\begin{document}|, after which point,
+% the citation style should be frozen.
+%
+% The command |\natexlab| is used in the \texttt{.bst} files to enclose the
+% extra labels (the letters added to the dates); these are to be suppressed
+% for numerical citations.
+% \begin{macrocode}
+%<*!subpack>
+\newcommand\NAT@set@cites{\ifNAT@numbers
+ \ifNAT@super \let\@cite\NAT@citesuper
+ \let\NAT@space\relax\else
+ \let\@cite\NAT@citenum \def\NAT@space{ }\fi
+ \let\@citex\NAT@citexnum
+ \let\@biblabel\NAT@biblabelnum
+ \let\@bibsetup\NAT@bibsetnum
+ \def\natexlab##1{}%
+ \else
+ \let\@cite\NAT@cite
+ \let\@citex\NAT@citex
+ \let\@biblabel\NAT@biblabel
+ \let\@bibsetup\NAT@bibsetup
+ \def\natexlab##1{##1}%
+ \fi}
+%<!209>\AtBeginDocument{\NAT@set@cites}
+%</!subpack>
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{6.5}{1997 Jan 30}{Add \texttt{showkeys} coding for \cs{@citex}}
+% Since |\citep|, |\citet|, and |\citealt| are all ultimately defined in
+% terms of the |\@citex| command, the best way to get the \texttt{showkeys}
+% package to handle these is to let it accommodate only |\@citex|. David
+% Carlisle has allowed for \thestyle, but only for |\cite| with variable number
+% of arguments, |\citeauthor|, |\citefullauthor|, and |\citeyear|. Add the
+% necessary coding at the beginning, after we know if \texttt{showkeys}
+% has been loaded or not, and |\@citex| has its final definition.
+% \begin{macrocode}
+%<*!209>
+\AtBeginDocument{\@ifpackageloaded{showkeys}{%
+\let\SK@citex\@citex
+ \def\@citex[#1][#2]#3{\SK@\SK@@ref{#3}\SK@citex[#1][#2]{#3}}
+}{}}
+%</!209>
+% \end{macrocode}
+%
+% \subsection{The Citations}
+%
+% \begin{macro}{\citet}
+% \changes{6.2}{1996 Jan 11}{Add macro for textual cite in numerical mode}
+% \changes{6.5}{1997 Jan 30}{Make this standard textual citation, with notes}
+% Textual citations are made with the |\citet| command, which has a starred
+% form for full authors, and may have one or two optional arguments for notes.
+%
+% This command is equivalent to the older syntex |\cite|\marg{key} without
+% optional arguments, at least in author--year mode. In numerical mode,
+% it prints the authors and then the numerical reference, whereas |\cite|
+% will only print the number. This simplifies the switching between the two
+% modes with minimal changes in text. One wants to replace ``as shown by Jones
+% et~al.\ (1990)'' with ``as shown by Jones et~al.\ [21]''; with |\cite|,
+% one would get ``as shown by [21]''.
+%
+% This is such a practical idea, that I have decided to make it the standard
+% means of textual citing. It now even allows optional notes in textual cites,
+% something that I have been asked to provide, and which is impossible under
+% the old syntex with |\cite|.
+%
+% Note that the flag |\ifNAT@swa| determines if the citation is textual or
+% parenthetical, and |\ifNAT@full| whether abbreviated or full author names
+% are to be printed.
+% \begin{macrocode}
+\newif\ifNAT@full\NAT@fullfalse
+\newif\ifNAT@swa
+%<209>\renewcommand\citet
+%<!209>\DeclareRobustCommand\citet
+ {\NAT@swafalse
+ \@ifstar{\NAT@fulltrue\NAT@citet}{\NAT@fullfalse\NAT@citet}}
+\newcommand\NAT@citet{\@ifnextchar[{\NAT@@citet}{\NAT@@citet[]}}
+\newcommand\NAT@@citet{}
+\def\NAT@@citet[#1]{\@ifnextchar[{\NAT@@@citet[#1]}{\NAT@@@citet[][#1]}}
+\newcommand\NAT@@@citet{}
+\def\NAT@@@citet[#1][#2]#3{%
+%<!subpack> \ifNAT@numbers\ifNAT@full\citefullauthor{#3}\else
+%<!subpack> \citeauthor{#3}\fi\ \fi
+ \@citex[#1][#2]{#3}}
+% \end{macrocode}
+% This command can only handle single keys (in numerical mode).
+% \end{macro}
+%
+% \begin{macro}{\citep}
+% \changes{5.5}{1995 Mar 27}{Add macro as shorthand for \cs{cite[]}}
+% \changes{6.5}{1997 Jan 30}{Make this standard parenthetical citation,
+% with notes}
+% Parenthetical citations are made with the |\citep| command, which has a
+% starred
+% form for full authors, and may have one or two optional arguments for notes.
+%
+% This command was originally added by special request to be a simplification
+% for |\cite[]|\marg{key}, and I added it grudgingly. After I reprogrammed
+% \thestyle\ to handle author--year and numerical citations with the same
+% \texttt{.bst} file, I needed to add the |\citet| command, and this one
+% became an obvious companion for parenthetical citations. I have now altered
+% its coding to be the standard, being fully equivalent in functionality
+% to the older syntax |\cite|\oarg{pre}\oarg{post}\marg{key}.
+% \begin{macrocode}
+%<209>\renewcommand\citep
+%<!209>\DeclareRobustCommand\citep
+ {\NAT@swatrue
+ \@ifstar{\NAT@fulltrue\NAT@citep}{\NAT@fullfalse\NAT@citep}}
+\newcommand\NAT@citep{\@ifnextchar[{\NAT@@citep}{\NAT@@citep[]}}
+\newcommand\NAT@@citep{}
+\def\NAT@@citep[#1]{\@ifnextchar [{\@citex[#1]}{\@citex[][#1]}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cite}
+% \changes{5.0}{1994 May 18}{Add a second optional argument.}
+% \changes{5.3}{1994 Sep 19}{Add starred version to print full author list.}
+% \changes{5.4}{1994 Nov 24}{Replace \cmd{\if@tempswa} with \cmd{\ifNAT@swa}.}
+% \changes{6.5}{1997 Jan 30}{Declare obsolete, retained for compatibility}
+% The |\cite| command was originally used to produce both textual and
+% parenthetical citations; with an option argument, even an empty one,
+% the citation was parenthical. I now recommend the use of |\citet| and
+% |\citep| instead, retaining |\cite| only for compatibility.
+%
+% It is equivalent to |\citep| in numerical mode, so it can in fact be
+% used as standard \LaTeX\ syntax with numerical citations.
+% \begin{macrocode}
+%<209>\renewcommand\cite
+%<!209>\DeclareRobustCommand\cite
+ {\@ifstar{\NAT@fulltrue\NAT@cites}{\NAT@fullfalse\NAT@cites}}
+\newcommand\NAT@cites{\@ifnextchar [{\NAT@swatrue\NAT@@citep}{\NAT@swafalse
+ \NAT@@citep[]}}
+% \end{macro}
+%
+% \begin{macro}{\citealt}
+% \changes{5.5}{1995 Mar 16}{Add macro}
+% \changes{6.5}{1997 Jan 30}{Uses \cs{citet} instead of \cs{cite}}
+% An alternative form of citation is one in which the parentheses are not
+% printed. Since the effect of this command is exactly the same as the
+% regular |\citet| but with |\NAT@open| and |\NAT@close| set to blank,
+% define it just in that way. The starred version for full authors can be
+% retained. Notes are not possible, and would be unnecessary without braces.
+%
+% This form has been added at the request of Alexander Holt, who wishes to
+% be able to print all three flavours: parenthetical, textual with
+% parentheses, and textual without. The |\citealt| command must be able to
+% handle multiple references and use the same punctuation scheme as
+% |\citet|.
+%
+% By defining |\citealt| in terms of |\citet|, not only do I save
+% considerable programming effort, but David Carlisle's \texttt{showkeys}
+% package will work with this command too.
+% \begin{macrocode}
+%<*!subpack>
+%<209>\renewcommand\citealt
+%<!209>\DeclareRobustCommand\citealt
+ {\@ifstar{\NAT@alts}{\NAT@alt}}
+\newcommand\NAT@alt[1]{{\ifNAT@numbers\else
+ \renewcommand\NAT@open{}\renewcommand\NAT@close{}\fi\cite{#1}}}
+\newcommand\NAT@alts[1]{{\ifNAT@numbers\else
+ \renewcommand\NAT@open{}\renewcommand\NAT@close{}\fi\cite*{#1}}}
+%</!subpack>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\citeauthor}
+% \changes{5.0}{1994 May 18}{Add means to cite authors only.}
+% \changes{5.2}{1994 Aug 25}{Enclose \cs{@citenm} in braces.}
+% \changes{5.2}{1994 Aug 25}{Add auxiliary file entry.}
+% \changes{6.0}{1995 Sep 4}{Check for empty author}
+% \changes{6.4}{1996 Oct 2}{Add dummy macros for \texttt{hyperref.sty}}
+% \begin{macro}{\citeyear}
+% \changes{5.0}{1994 May 18}{Add means to cite year only.}
+% \changes{5.2}{1994 Aug 25}{Add auxiliary file entry.}
+% \changes{6.0}{1995 Sep 4}{Check for empty year}
+% \changes{6.4}{1996 Sep 12}{Extra letter also printed with year number}
+% \changes{6.4}{1996 Oct 2}{Add dummy macros for \texttt{hyperref.sty}}
+% In an author--year scheme, it is sometimes necessary to refer to the
+% authors of a work without the year. It might even be necessary to refer
+% to the year alone, but I can hardly imagine that. Both possibilities are
+% allowed for here.
+% \begin{macrocode}
+\newcommand\citeauthor[1]{\if@filesw\immediate\write
+ \@auxout{\string\citation{#1}}\fi
+ \@ifundefined{b@#1\@extra@b@citeb}{%
+%<209> {\reset@font\bf ?}\@warning
+%<!209> {\reset@font\bfseries ?}\NAT@citeundefined
+%<!209> \PackageWarning{natbib}%
+ {Citation `#1' on page \thepage \space undefined}}%
+ {\NAT@parse{#1}\ifx\NAT@noname\NAT@name
+%<209> {\reset@font\bf(author?)}\@warning
+%<!209> {\reset@font\bfseries(author?)}\PackageWarning{natbib}
+ {Author undefined for citation `#1'
+%<209> ^^J
+%<!209> \MessageBreak
+ on page \thepage}\else
+ {\hyper@natlinkstart{#1}\NAT@name\hyper@natlinkend}\fi}%
+}
+\newcommand\citeyear[1]{\if@filesw\immediate\write
+ \@auxout{\string\citation{#1}}\fi
+ \@ifundefined{b@#1\@extra@b@citeb}{%
+%<209> {\reset@font\bf ?}\@warning
+%<!209> {\reset@font\bfseries ?}\NAT@citeundefined
+%<!209> \PackageWarning{natbib}%
+ {Citation `#1' on page \thepage \space undefined}}%
+ {\NAT@parse{#1}\if\relax\NAT@date\relax
+%<209> {\reset@font\bf(year?)}\@warning
+%<!209> {\reset@font\bfseries(year?)}\PackageWarning{natbib}
+ {Year undefined for citation `#1'
+%<209> ^^J
+%<!209> \MessageBreak
+ on page \thepage}\else
+ {\hyper@natlinkstart{#1}\NAT@date\hyper@natlinkend}\fi}%
+}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\citefullauthor}
+% \changes{5.3}{1994 Sep 13}{Add macro for those bib styles with full author
+% list available}
+% \changes{6.0}{1995 Sep 4}{Check for empty author}
+% \changes{6.4}{1996 Oct 2}{Add dummy macros for \texttt{hyperref.sty}}
+% Some of the author--year bibliography styles supported here (\texttt{harvard}
+% and \texttt{newapa}) allow a citation with the full author list, because
+% they have the necessary information in the |\bibitem| entry. With
+% version~5.3, I change the native form of this entry to allow
+% full authors too.
+%
+% Since I now have a starred form of |\cite| for the full author list, it
+% might be reasonable to use a starred |\citeauthor| instead of
+% |\citefullauthor|. However, that will conflict with the provisions for
+% \thestyle{} to be found in Carlisle's \texttt{showkeys} package. That's life.
+% \begin{macrocode}
+\newcommand\citefullauthor[1]{\if@filesw\immediate\write
+ \@auxout{\string\citation{#1}}\fi
+ \@ifundefined{b@#1\@extra@b@citeb}{%
+%<209> {\reset@font\bf ?}\@warning
+%<!209> {\reset@font\bfseries ?}\NAT@citeundefined
+%<!209> \PackageWarning{natbib}%
+ {Citation `#1' on page \thepage \space undefined}}%
+ {\NAT@parse{#1}\ifx\NAT@noname\NAT@all@names
+%<209> {\reset@font\bf(author?)}\@warning
+%<!209> {\reset@font\bfseries(author?)}\PackageWarning{natbib}
+ {Author undefined for citation `#1'
+%<209> ^^J
+%<!209> \MessageBreak
+ on page \thepage}\else
+ {\hyper@natlinkstart{#1}\NAT@all@names\hyper@natlinkend}\fi}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Parsing the Author--Year Entries}
+% \begin{macro}{\NAT@parse}
+% \changes{5.0}{1994 May 18}{Add parsing command, with additional
+% font and sub-accent commands relaxed}
+% \changes{5.1}{1994 Jun 22}{For \LaTeXe{} of \texttt{1994/06/01},
+% can protect font and sub-accents much better}
+% \changes{5.2}{1994 Aug 24}{2.09 version to run in compatibility mode}
+% \changes{5.3}{1994 Sep 13}{Add full author list}
+% \changes{5.3}{1994 Sep 19}{Support starred version of \cs{cite} for full
+% author list}
+% \changes{5.3}{1994 Sep 26}{Use \cs{@unexpandable@protect} in place of
+% \cs{noexpand}}
+% \changes{5.4}{1995 Feb 6}{Call \cs{@parse@date} to split date into year and
+% extra label}
+% \changes{5.5}{1995 May 18}{Rename from \cs{@cite@parse}}
+% \changes{6.0}{1995 Sep 4}{Remove \cs{relax} from expanded \cs{@tempa}
+% definition; no longer needed under new system}
+% \changes{6.0}{1995 Sep 21}{Prevent expansion of forced space (tilde)}
+% The |\bibcite| commands in the auxiliary file associate the numerical and
+% author--year information with the |\bibitem| key, which is the argument to
+% |\NAT@parse|. As of version~6.0, the information is stored in
+% |\b@|\emph{key} for each citation, as four separate items.
+% \begin{quote}\begin{tabular}{lll}
+% 1. & |\NAT@num| & sequence number or non-author--year label \\
+% 2. & |\NAT@date| & year, with possible extra label \\
+% 3. & |\NAT@name| & short author list \\
+% 4. & |\NAT@all@names| & long author list (optional)
+% \end{tabular}\end{quote}
+% In order to define each of the above commands as the appropriate item, it
+% is first necessary to expand |\b@|\emph{key} into a temporary command
+% |\NAT@temp|, which is then used as the argument of |\NAT@split|, which
+% makes the individual assignments.
+%
+% \begin{macrocode}
+\newcommand\NAT@parse[1]{{%
+%<*209>
+ \@ifundefined{documentclass}
+ {\let\prm=\relax\let\psf=\relax\let\ptt=\relax\let\pbf=\relax
+ \let\psl=\relax\let\psc=\relax\let\pit=\relax\let\pem=\relax
+ \let\prmfamily=\relax\let\psffamily=\relax\let\pttfamily=\relax
+ \let\pbfseries=\relax\let\pslshape=\relax\let\pscshape=\relax
+ \let\pitshape=\relax\let\pmdseries=\relax\let\pupshape=\relax
+ \let\pc=\relax \let\pd=\relax \let\pb=\relax}
+ {\let\protect=\@unexpandable@protect\let~\relax}%
+%</209>
+%<!209> \let\protect=\@unexpandable@protect\let~\relax
+ \xdef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname}}%
+ \expandafter\NAT@split\NAT@temp
+ \expandafter\NAT@parse@date\NAT@date??????@@%
+%<!subpack&!209> \ifciteindex\NAT@index\fi
+}
+% \end{macrocode}
+% Some further notes on the above: for 2.09 it is necessary to turn off all the
+% protected font commands |\prm| etc.\ when the label text is expanded into
+% |\NAT@temp|, for otherwise there will be problems with the New Font
+% Selection Scheme (NFSS); the protected sub-accent commands (protected
+% versions of |\c|, |\d|, and |\b|) also cause troubles on expansion.
+% Admittedly, this is not a good solution, for the list of problem commands
+% might be much longer, but for the meantime, this will have to do.
+%
+% For \LaTeXe, at least after the official release of
+% \texttt{1994/06/01}, commands are made robust in a totally different
+% manner, no longer by adding a \texttt{p} in front, but by adding a space
+% afterwards. This means the commands in the auxiliary files look like the
+% protected version once again, and not raw commands. They are infinitely
+% protected. The above problem is easily overcome by making |\protect|
+% equal to |\@unexpandable@protect|. A definitive list of commands to
+% protect is no longer necessary. (Initially I used |\noexpand|, but
+% that only worked for font commands, not accents. Reading the documentation
+% in \texttt{ltdefns.dtx} indicated that this is the better redefinition
+% of |\protect|.)
+%
+% This trick is also applied to the 2.09 version for when it is running
+% in the compatibility mode of \LaTeXe. This is needed for the
+% journal-specific coding, more than for the normal package.
+%
+% The automatic indexing of citations (|\NAT@index|) is described in
+% Section~\ref{sec:idx}.
+%
+% \end{macro}
+%
+% \begin{macro}{\NAT@split}
+% \changes{5.3}{1994 Sep 13}{Changed to support full author list}
+% \changes{5.5}{1995 May 14}{Fix coding slightly}
+% \changes{5.5}{1995 May 18}{Renamed from \cs{@citez}}
+% \changes{6.0}{1995 Sep 4}{Recode for new \cs{bibcite} structure}
+% The actual assignments of the author--year and numerical label texts to
+% the corresponding commands is carried out by |\NAT@split|. If the long
+% author list is missing (argument |#4|), it is set equal to the short
+% list.
+% \begin{macrocode}
+\newcommand\NAT@split[4]{%
+ \gdef\NAT@num{#1}\gdef\NAT@name{#3}\gdef\NAT@date{#2}%
+ \gdef\NAT@all@names{#4}%
+ \ifx\NAT@noname\NAT@all@names \gdef\NAT@all@names{#3}\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\NAT@parse@date}
+% \changes{5.4}{1995 Feb 6}{Add macro to split date into year and extra label}
+% \changes{5.5}{1995 Mar 24}{Put extra label in braces to localize any font
+% changes}
+% \changes{5.5}{1995 May 18}{Rename from \cs{@parse@date}}
+% With version 5.4, add the macro |\NAT@parse@date| that splits the date up
+% into year and extra label, putting them into |\NAT@year| and |\NAT@exlab|.
+% This is used to test if authors and years are equal for two adjacent
+% citations, in which case, only the extra label is printed. The
+% macro searches the first 4 characters of the date for a letter
+% (|\catcode|=11) which then becomes the extra label. If there are only
+% numerals in the first 4 positions (more precisely, non-letters), the 5th
+% character is taken as extra label. If there is none, this will be a
+% question mark.
+% \begin{macrocode}
+\newcommand\NAT@parse@date{}
+\def\NAT@parse@date#1#2#3#4#5#6@@{%
+ \ifnum\the\catcode`#1=11\def\NAT@year{}\def\NAT@exlab{#1}\else
+ \ifnum\the\catcode`#2=11\def\NAT@year{#1}\def\NAT@exlab{#2}\else
+ \ifnum\the\catcode`#3=11\def\NAT@year{#1#2}\def\NAT@exlab{#3}\else
+ \ifnum\the\catcode`#4=11\def\NAT@year{#1#2#3}\def\NAT@exlab{#4}\else
+ \def\NAT@year{#1#2#3#4}\def\NAT@exlab{{#5}}\fi\fi\fi\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Automatic Index Entries for Citations}\label{sec:idx}
+%
+% \begin{macro}{\NAT@idxtxt}
+% \changes{6.0}{1995 Sep 21}{Add macro}
+% \begin{macro}{\NAT@index}
+% \changes{6.0}{1995 Sep 21}{Add macro}
+% To make an entry in the index for every citation, I have added
+% |\NAT@index| to the |\NAT@parse| command. This will do nothing unless
+% |\makeindex| has been issued in the preamble, in which case it writes the
+% citation information to the \texttt{.idx} file by means of the standard
+% \LaTeX\ internal |\@wrindex|. The actual format of the citation
+% information is contained in |\NAT@idxtxt| which a user may redefine if
+% needed.
+% \begin{macrocode}
+%<*!subpack&!209>
+\newcommand\NAT@index{}
+\let\NAT@makeindex=\makeindex
+\renewcommand\makeindex{\NAT@makeindex
+ \renewcommand\NAT@index{\@bsphack\begingroup
+ \def~{\string~}\@wrindex{\NAT@idxtxt}}}
+\newcommand\NAT@idxtxt{\NAT@name\ \NAT@open\NAT@date\NAT@close}
+% \end{macrocode}
+% \end{macro}\end{macro}
+% \begin{macro}{\ifciteindex}
+% \changes{6.0}{1995 Sep 21}{Add flag}
+% The switch for activating automatic citation indexing is defined here.
+% \begin{macrocode}
+\newif\ifciteindex \citeindexfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\citeindextype}
+% \changes{6.0}{1995 Sep 29}{Add macro}
+% \begin{macro}{\NAT@index@alt}
+% \changes{6.0}{1995 Sep 29}{Add macro}
+% The above coding will not work with the package \texttt{index.sty} by
+% David~M. Jones. For that package, an alternative definition of |\NAT@index|
+% is needed which is activated at the beginning of the document if
+% \texttt{index} has been loaded. It thus does not matter in which order
+% \thestyle\ or \texttt{index} are loaded.
+%
+% With the \texttt{index} package, it is possible to have several index
+% files, defined by a |\newindex| command that associates a name with two
+% file extensions. By default, the name \texttt{default} is associated with
+% \texttt{.idx} and \texttt{.ind}. To make the automatic index entries go to
+% a different set, redefine |\citeindextype|.
+%
+% \begin{macrocode}
+\newcommand\citeindextype{default}
+\newcommand\NAT@index@alt{{\let\protect=\noexpand\let~\relax
+ \xdef\NAT@temp{\NAT@idxtxt}}\expandafter\NAT@exp\NAT@temp\@nil}
+\newcommand\NAT@exp{}
+\def\NAT@exp#1\@nil{\index[\citeindextype]{#1}}
+
+\AtBeginDocument{%
+\@ifpackageloaded{index}{\let\NAT@index=\NAT@index@alt}{}}
+%</!subpack&!209>
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \subsection{Writing the Entries to the Auxiliary File}
+%
+% \noindent(New to version 6.0.)
+%
+% The author--year information is transferred from the \btx{} database to
+% the document via |\bibitem| commands in the |thebibliography|
+% environment. Standard \LaTeX\ simply assigns a running number to these
+% entries, and writes that number with the citation key to the auxiliary
+% file. For author--year citations, the author list and year must be written
+% somehow to the auxiliary file. The form for this is to be
+% \begin{quote}
+% |\bibcite|\marg{key}|{|\marg{num}\marg{year}\marg{short}\marg{long}|}|
+% \end{quote}
+% This is the same form as in standard \LaTeX, except that the second
+% argument becomes a set of 4 items. Here \emph{num} is the sequential
+% number that is to be used if a numerical style is selected, \emph{short}
+% is the abbreviate author list (Jones et al.), \emph{long} the full author
+% list.
+%
+% The author--year information is contained in the optional argument to
+% |\bibitem|, but just how it is formatted depends on the system used. The
+% native \thestyle\ syntax is
+% \begin{quote}
+% |\bibitem[|\emph{short}|(|\emph{year}|)|\emph{long}|]|\marg{key}
+% \end{quote}
+% while the \texttt{chicago} system is
+% \begin{quote}
+% |\bibitem[\protect\citeauthoryear|\marg{long}\marg{short}\marg{year}|]|%
+% \marg{key}
+% \end{quote}
+%
+% \begin{macro}{\NAT@ifcmd}
+% \changes{6.0}{1995 Sep 4}{Add macro}
+% \begin{macro}{\NAT@ifxcmd}
+% \changes{6.0}{1995 Sep 4}{Add macro}
+% It is necessary to process the optional argument by first testing if it
+% contains a command, and if so, to execute that command. Otherwise, insert
+% our own command to process the following text.
+% \begin{macrocode}
+\newcommand\NAT@ifcmd{\futurelet\NAT@temp\NAT@ifxcmd}
+\newcommand\NAT@ifxcmd{\ifx\NAT@temp\relax\else\expandafter\NAT@bare\fi}
+% \end{macrocode}
+% This actually only tests if the next token expands to |\relax|, which is
+% what |\protect| will be at this point. If so, just procede: the command
+% itself follows. Otherwise, insert |\NAT@bare|. (Note, we must also define
+% the possible commands like |\citeauthoryear| to do what we want.)
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\NAT@bare}
+% \changes{6.0}{1995 Sep 4}{Add macro}
+% The command that is inserted if none is present must parse the native
+% syntax for the author--year information. The template is somewhat complex
+% because it must be able to test if there are no parentheses at all, in
+% which case it activates the alternative, |\NAT@apalk| for the
+% \texttt{apalike} syntax. When |\NAT@ifcmd| is invoked, it adds
+% |()()\@nil| in order to provide the full template of |\NAT@bare|; if the
+% argument itself contains no text in parentheses (not \thestyle{}
+% syntax) then |#2| will be empty; otherwise, |#4| catches the extra
+% parentheses.
+% \begin{macrocode}
+\def\NAT@bare#1(#2)#3()#4\@nil#5{%
+%<*all|apalike|authordate>
+ \if\relax#2\relax
+ \expandafter\NAT@apalk#1, , \@nil{#5}\else
+ \stepcounter{NAT@ctr}%
+%</all|apalike|authordate>
+ \NAT@wrout{\arabic {NAT@ctr}}{#2}{#1}{#3}{#5}
+%<all|apalike|authordate>\fi
+}
+% \end{macrocode}
+% The |NAT@ctr| above contains the designation of whatever counter is
+% selected in the list environment for the \texttt{thebibliography}; it is
+% the sequential counter for the entries.
+% \end{macro}
+%
+% \begin{macro}{\NAT@wrout}
+% \changes{6.0}{1995 Sep 4}{Add macro}
+% \begin{macro}{\NAT@noname}
+% \changes{6.0}{1995 Sep 6}{Add macro}
+% \changes{6.0}{1995 Sep 21}{Prevent expansion of forced space (tilde)}
+% Write the information to the auxiliary file as two arguments to |\bibcite|.
+%
+% Note: the 5 arguments are: counter, year, short list, long list, key.
+% The two author lists are written enclosed in braces to make sure any
+% font commands are kept local. Otherwise, one level of braces disappears for
+% authors like |{\em Jones}|.
+%
+% To test later for the absence of names, define |\NAT@noname| here.
+% Define it with |\def|, otherwise it will be `long' and will not test
+% correctly with |\NAT@all@names| which is defined with |\gdef|.
+% \begin{macrocode}
+\newcommand\NAT@wrout[5]{%
+\if@filesw
+ {\let\protect\noexpand\let~\relax
+ \immediate
+ \write\@auxout{\string\bibcite{#5}{{#1}{#2}{{#3}}{{#4}}}}}\fi
+\ignorespaces}
+\def\NAT@noname{{}}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\bibitem}
+% \changes{6.0}{1995 Sep 4}{Recode from standard}
+% \begin{macro}{\@lbibitem}
+% \changes{6.0}{1995 Sep 4}{Recode from standard}
+% \changes{6.4}{1996 Oct 2}{Add dummy macros for \texttt{hyperref.sty}}
+% The above commands are initiated with |\NAT@ifcmd| which decides whether
+% |\NAT@bare| or one of the other commands is to be executed on the
+% following arguments. It is actually |\@lbibitem| that calls |\NAT@ifcmd|,
+% which in turn is invoked by the user command |\bibitem|.
+%
+% If |\bibitem| has no optional argument, then we have a numerical citation
+% style, which is to be forced by setting |\NAT@stdbst|. Put the sequential
+% counter value in as the argument to |\@lbibitem| which is then treated as
+% a non-author--year label.
+% \begin{macrocode}
+\renewcommand\bibitem{%
+ \@ifnextchar[{\@lbibitem}{%
+%<!subpack> \global\NAT@stdbsttrue
+ \stepcounter{NAT@ctr}\@lbibitem[\arabic{NAT@ctr}]}}
+% \end{macrocode}
+% Write the label with |\item| in the bibliography listing with the current
+% value of |\NAT@num|, if it exists. This will either be the sequential
+% number or whatever non-author--year text that was given as a special
+% `numerical'. Since |\@biblabel| outputs only in numerical mode, this
+% label vanishes for author--year mode.
+%
+% Finally invoke |\NAT@ifcmd| with the funny template to activate
+% |\NAT@bare| or some alternative.
+% \begin{macrocode}
+\def\@lbibitem[#1]#2{%
+ \@ifundefined{b@#2\@extra@b@citeb}{\def\NAT@num{}}{\NAT@parse{#2}}%
+ \item[\hfil\hyper@natanchorstart{#2}\@biblabel{\NAT@num}%
+ \hyper@natanchorend]%
+ \NAT@ifcmd#1()()\@nil{#2}}
+% \end{macrocode}
+% Note: in standard \LaTeX, the sequential list counter is printed directly
+% with |\item|, and then written to the auxiliary file so that |\cite| can
+% refer to it on the next run. Here, |\item| prints exactly the same thing
+% as |\cite| on the current run, if we are in numerical mode, otherwise
+% nothing.
+%
+% \changes{6.3}{1996 Jun 10}{Include \texttt{showkeys} coding if already
+% loaded}
+% \changes{6.4}{1996 Jun 27}{Remove from 2.09 coding}
+% If the \texttt{showkeys} package has already been loaded, the revised
+% version of |\@lbibitem| will not have been saved. In this case, rerun some
+% of the coding from that package. (If \texttt{showkeys} is loaded after
+% \thestyle, there is no problem.)
+% \begin{macrocode}
+%<*!209>
+\@ifpackageloaded{showkeys}{%
+ \let\SK@lbibitem\@lbibitem
+ \def\@lbibitem[#1]#2{%
+ \SK@lbibitem[#1]{#2}\SK@\SK@@label{#2}\ignorespaces}}{}
+%</!209>
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\ifNAT@stdbst}
+% \changes{6.0}{1995 Sep 4}{Add flag}
+% If any non-author--year |\bibitem|s have been issued, then force
+% numerical mode, since the author--year |\bibitem|s can handle this, but
+% the numerical ones cannot work in author--year mode. Do this by inserting
+% |\NAT@numberstrue| in the auxiliary file.
+% \begin{macrocode}
+%<*!subpack>
+\newif\ifNAT@stdbst \NAT@stdbstfalse
+
+%<209>\let\NAT@enddoc=\enddocument
+%<209>\def\enddocument
+%<!209>\AtEndDocument
+ {\ifNAT@stdbst\if@filesw\immediate\write\@auxout{\string
+ \global\string\NAT@numberstrue}\fi\fi
+%<209>\NAT@enddoc
+ }
+%</!subpack>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\bibcite}
+% \changes{6.1}{1995 Dec 5}{Add own coding for this macro}
+% \changes{6.1a}{1995 Dec 19}{Add own test for changed citations}
+% Not wanting to rely on the coding for |\bibcite| in the kernel, I define
+% it myself. It is not enough just to `provide' it, for it must do the
+% right thing: write a label named |\b@|\emph{key}. The \LaTeX3 boys
+% might decide to keep the command, but have it store the citations with
+% a different prefix.
+%
+% (I outsmarted myself here again. The test for changed citations and
+% references involves reading in the auxiliary file with revised
+% definitions for |\label| and |\bibcite|. The December~1995 release does
+% this via a generalized labelling command |\@newl@bel|. As a result, I
+% must add this test myself. Not so bad, because the warning comes from
+% \thestyle\ and explicitly refers to citations instead of just
+% `references'.)
+% \begin{macrocode}
+%<*!209>
+\providecommand\bibcite{}
+\renewcommand\bibcite[2]{\@ifundefined{b@#1\@extra@binfo}\relax
+ {\NAT@citemultiple
+ \PackageWarningNoLine{natbib}{Citation `#1' multiply defined}}%
+ \global\@namedef{b@#1\@extra@binfo}{#2}}
+\AtEndDocument{\NAT@swatrue\renewcommand\bibcite[2]%
+ {\NAT@testdef{#1}{#2}}}
+\newcommand\NAT@testdef[2]{%
+ \def\NAT@temp{#2}\expandafter \ifx \csname b@#1\@extra@binfo\endcsname
+ \NAT@temp \else \ifNAT@swa \NAT@swafalse
+ \PackageWarningNoLine{natbib}{Citation(s) may have
+ changed.\MessageBreak
+ Rerun to get citations correct}\fi\fi}
+%</!209>
+%<209>\renewcommand\bibcite[2]{\global\@namedef{b@#1\@extra@binfo}{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Other Author--Year Schemes}
+% \begin{macro}{\NAT@apalk}
+% \changes{4.1}{1993 Oct 4}{Simplify by using comma-space as separator}
+% \changes{5.3}{1994 Sep 13}{Full author list equals short list}
+% \changes{5.5}{1995 May 18}{Renamed from \cs{@citeapalk}}
+% \changes{6.0}{1995 Sep 4}{Recoded for version~6.0}
+% If the argument of |\bibitem| contains no command, and if it does not
+% conform to the \thestyle{} syntax, then try the \texttt{apalike}
+% syntax (\emph{short}\texttt{, }\emph{year}). This has a funny template
+% too in order to test for different syntax, which is indicated when |#2|
+% is empty. In this case, give up trying to fit it to author--year formats,
+% and go over to `numerical' with a special label. Set the flag
+% |\NAT@stdbst| to mark this. This forces a numerical citation style.
+% \begin{macrocode}
+%<*all|apalike|authordate>
+\newcommand\NAT@apalk{}
+\def\NAT@apalk#1, #2, #3\@nil#4{\if\relax#2\relax
+%<!subpack> \global\NAT@stdbsttrue
+ \NAT@wrout{#1}{}{}{}{#4}\else
+ \stepcounter{NAT@ctr}%
+ \NAT@wrout{\arabic {NAT@ctr}}{#2}{#1}{}{#4}\fi}
+%</all|apalike|authordate>
+% \end{macrocode}
+% Note: the |NAT@ctr| is stepped here and everywhere else it is used,
+% except when a special `numerical' label is being used. This conforms to
+% standard \LaTeX\ which only increments the counter for pure numerical
+% labels, without an optional argument to |\bibitem|.
+% \end{macro}
+%
+% The other schemes of citation labelling may also be accommodated, more
+% easily than \texttt{apalike}. It is just necessary to define the particular
+% commands, like |\citeauthoryear| to write the arguments to the
+% auxiliary file in the required. These commands are detected by
+% |\NAT@ifcmd| and simply left to be executed.
+%
+% The only complication is that |\citeauthoryear| may be given with two or
+% three arguments. This is accommodated by testing the |#3| and changing
+% the form of the write command accordingly.
+%
+% The form of the template is the same as for |\NAT@bare|, since this
+% command is inserted in its place and must therefore conform to its
+% syntax.
+%
+% \begin{macro}{\citeauthoryear}
+% \changes{5.3}{1994 Sep 13}{Allow full authors in citation}
+% \changes{6.0}{1995 Sep 4}{Recode for version 6.0}
+% For \texttt{newapa.bst} itself, the commands |\citestarts|, |\citeends|,
+% as well as |\betweenauthors| must be defined; for others in this group,
+% these commands are not needed.
+% \begin{macrocode}
+%<*newapa|chicago|all>
+\newcommand\citeauthoryear{}
+\def\citeauthoryear#1#2#3()()\@nil#4{\stepcounter{NAT@ctr}\if\relax#3\relax
+ \NAT@wrout{\arabic {NAT@ctr}}{#2}{#1}{}{#4}\else
+ \NAT@wrout{\arabic {NAT@ctr}}{#3}{#2}{#1}{#4}\fi}
+\newcommand\citestarts{\NAT@open}
+\newcommand\citeends{\NAT@close}
+\newcommand\betweenauthors{and}
+%</newapa|chicago|all>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\astroncite}
+% \changes{6.0}{1995 Sep 4}{Recode for version 6.0}
+% The |\astroncite| command must similarly conform to |\NAT@bare| syntax
+% and put its arguments into the auxiliary file in the correct order.
+% \begin{macrocode}
+%<*astron|all>
+\newcommand\astroncite{}
+\def\astroncite#1#2()()\@nil#3{\stepcounter{NAT@ctr}\NAT@wrout{\arabic
+{NAT@ctr}}{#2}{#1}{}{#3}}
+%</astron|all>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\citename}
+% \changes{6.0}{1995 Sep 4}{Recode for version 6.0}
+% The |\citename| command just converts its arguments to the |\NAT@apalk|
+% syntax, since its first argument should end in \verb*!, ! as for
+% \texttt{apalike}. By making use of |\NAT@apalk| here, it is also possible
+% to check for non-conformity of the syntax.
+% \begin{macrocode}
+%<*authordate|all>
+\newcommand\citename{}
+\def\citename#1#2()()\@nil#3{\expandafter\NAT@apalk#1#2, \@nil{#3}}
+%</authordate|all>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\harvarditem}
+% \changes{5.3}{1994 Sep 13}{Allow full authors in citation}
+% \changes{5.5}{1995 May 18}{Defined in \LaTeXe\ terms}
+% The Harvard family is allowed for simply by defining |\harvarditem| in
+% terms of |\bibitem| with the \thestyle{} form.
+%
+% The |\harvarditem| must allow for the optional argument, which is
+% the short author list. Use the short list in |\bibitem| if it is there,
+% otherwise the long list must be taken.
+%
+% \begin{macrocode}
+%<*harvard|all>
+%<!209>\newcommand\harvarditem[4][]%
+%<209>\def\harvarditem{\@ifnextchar[{\@harvarditem}{\@harvarditem[]}}
+%<209>\def\@harvarditem[#1]#2#3#4%
+ {\if\relax#1\relax\bibitem[#2(#3)]{#4}\else
+ \bibitem[#1(#3)#2]{#4}\fi }
+% \end{macrocode}
+% The command |\citeasnoun| must be defined since \texttt{harvard.bst}
+% can add it for cross-referencing.
+% \end{macro}
+%
+% \begin{macro}{\harvardleft}
+% \changes{5.3}{1994 Sep 13}{Add macro}
+% \begin{macro}{\harvardright}
+% \changes{5.3}{1994 Sep 13}{Add macro}
+% \begin{macro}{\harvardyearleft}
+% \changes{5.3}{1994 Sep 13}{Add macro}
+% \begin{macro}{\harvardyearright}
+% \changes{5.3}{1994 Sep 13}{Add macro}
+% \begin{macro}{\harvardand}
+% \changes{5.3}{1994 Sep 13}{Add macro}
+% \begin{macro}{\harvardurl}
+% \changes{5.3}{1994 Sep 13}{Add macro}
+% The \texttt{harvard} package has been updated for \LaTeXe, and includes
+% some new punctuation commands in the accompanying \texttt{bst} files.
+% (Maybe they were always there and I overlooked them.) In order for
+% \thestyle{} to work with these, it needs to define them. The |left| and
+% |right| commands have equivalents already; |\harvardurl| is defined
+% as in \texttt{harvard.sty}. It is necessary to define |\harvardand|
+% conditionally, and only later, in case it has already been set to
+% something else by a |\bibstyle@xxx| (e.g., \texttt{agsm} sets it
+% to |\&|.)
+% \begin{macrocode}
+\newcommand\harvardleft{\NAT@open}
+\newcommand\harvardright{\NAT@close}
+\newcommand\harvardyearleft{\NAT@open}
+\newcommand\harvardyearright{\NAT@close}
+%<!209>\AtBeginDocument{\providecommand{\harvardand}{and}}
+%<209>\def\harvardand{and}
+\newcommand\harvardurl[1]{\textbf{URL:} \textit{##1}}
+%</harvard|all>
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro}
+%
+% \subsection{The Bibliography Listing}
+% Changes must be made to the \texttt{thebibliography} environment for
+% author--year citations. This is done be defining the environment with the
+% features common to both schemes, and then by invoking |\@bibsetup|, which
+% is either the author--year or numerical version.
+%
+% \begin{macro}{\bibsection}
+% \changes{4.2}{1993 Oct 22}{Make specific for JGR, GRL, NLINPROC}
+% \changes{5.5}{1995 May 18}{Use \cs{renewcommand}}
+% \changes{6.2}{1996 Apr 15}{Modified for \texttt{amsart} and \texttt{amsbook}}
+% \changes{6.4}{1996 Sep 1}{Modified for \texttt{sectionbib} option}
+% \changes{6.5}{1997 Feb 5}{Allow for \cs{bib@headings} in KOMA scripts}
+% First, |\bibsection| is defined according to the main style: if chapters
+% exist, then the bibliography is a numberless chapter, otherwise a
+% numberless section. For the specific journals, |\bibsection| takes on
+% special definitions.
+%
+% Since the AMS classes \texttt{amsart} and \texttt{amsbook} redefine
+% |\section*| in a way that is incompatible with the way it is used in
+% the \texttt{bibliographystyle} environment, it is necessary to remove the
+% |\@mkboth| from the section title. Since these classes do not use this
+% command at this point, there is no loss of functionality.
+%
+% The packages of the KOMA scripts make use of |\bib@heading| which functions
+% much like |\bibsection|. If it is defined, let |\bibsection| be equal to it.
+% \begin{macrocode}
+%<*!agu&!egs>
+%<!209>\providecommand\bibsection{}
+%<209>\def\bibsection{}
+\@ifundefined{chapter}%
+ {\renewcommand\bibsection{\section*{\refname
+ \@mkboth{\MakeUppercase{\refname}}{\MakeUppercase{\refname}}}}}
+ {\@ifundefined{NAT@sectionbib}%
+ {\renewcommand\bibsection{\chapter*{\bibname
+ \@mkboth{\MakeUppercase{\bibname}}{\MakeUppercase{\bibname}}}}}
+ {\renewcommand\bibsection{\section*{\bibname
+ \ifx\@mkboth\@gobbletwo\else\markright{\MakeUppercase{\bibname}}\fi}}}}
+%<*!subpack>
+%<*!209>
+\@ifclassloaded{amsart}%
+ {\renewcommand\bibsection{\section*{\refname}}{}}{}
+\@ifclassloaded{amsbook}%
+ {\renewcommand\bibsection{\section*{\bibname}}{}}{}
+%</!209>
+\@ifundefined{bib@heading}{}{\let\bibsection\bib@heading}
+%</!subpack>
+%</!agu&!egs>
+%<egs>\def\bibsection{\if@draft\newpage\fi
+%<egs> \noappendix\section*{\refname}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{thebibliography}
+% \changes{4.1b}{1993 Oct 18}{Add \cmd{\bibfont}, defaulted
+% to \cmd{\relax}}
+% \changes{4.2}{1993 Oct 22}{Add coding for JGR, GRL, NLINPROC}
+% \changes{4.2}{1993 Nov 20}{Remove coding for AGU, since AGU-supplied
+% coding is adequate but different}
+% \changes{5.1}{1994 Jun 22}{Put \cmd{\bibfont} at start so \cmd{\list}
+% uses list parameters appropriate for the font size}
+% \changes{5.1}{1994 Jun 22}{Add \cmd{\if@openbib} as in \LaTeXe}
+% \changes{5.5}{1995 Mar 27}{Add special cross-ref citations for compatibility
+% with \texttt{harvard}, \texttt{chicago}, and \texttt{named}}
+% \changes{6.1}{1995 Nov 22}{Replace \cs{if@openbib} with \cs{ifNAT@openbib}}
+% \changes{6.1}{1995 Dec 4}{Replace counter \texttt{enumiv} with
+% \texttt{NAT@ctr} and refer to it explicitly, not with \cs{@listctr}}
+% \changes{6.1}{1995 Dec 4}{Use \cs{PackageWarning} for empty
+% bibliography}
+%
+% The \texttt{thebibliography} environment is defined much as normal, except
+% that |\bibsetup| contains the special features for numerical or
+% author--year styles. The command |\bibfont| permits permits different
+% font sizes or styles to be used in the list. For example, for
+% \textsl{Nonlinear Processes} it is |\small|. This means |\bibfont| must
+% be issued before the |\list| command, since the list parameters depend
+% on the current font size. For \textsl{AGU}, the whole
+% |\thebibliography| is left off, since the AGU-supplied coding will
+% do. It is only necessary to add |\noappendix| to the AGU coding.
+%
+% I have replaced |\if@openbib| with |\ifNAT@openbib| in order to be
+% independent of the standard classes; this flag disappeared with the
+% December~1995 release of \LaTeX, so I do it myself just to be sure.
+%
+% At the same time,
+% I have also decided to use my own counter |NAT@ctr| for the numericals;
+% previously I used |enumiv| as in the standard, and refered to it
+% elsewhere with |\@listctr|, but now I refer to it explicitly. This is to
+% avoid trouble if |\@listctr| should ever disappear. (The value of
+% |\@listctr| is set by |\usecounter|.)
+% \begin{macrocode}
+\newcounter{NAT@ctr}
+%<*!agu>
+\renewenvironment{thebibliography}[1]{%
+ \bibfont\bibsection\parindent \z@\list
+ {\@biblabel{\arabic{NAT@ctr}}}{\@bibsetup{#1}%
+ \setcounter{NAT@ctr}{0}}%
+%<*!209&!subpack>
+ \ifNAT@openbib
+ \renewcommand\newblock{\par}
+ \else
+ \renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
+ \fi
+%</!209&!subpack>
+%<209|subpack> \def\newblock{\hskip .11em plus.33em minus.07em}%
+ \sloppy\clubpenalty4000\widowpenalty4000
+ \sfcode`\.=1000\relax
+% \end{macrocode}
+% The files \texttt{chicago.bst} and \texttt{named.bst} can add the
+% commands |\citeN| and |\shortcite| respectively to the \texttt{.bbl}
+% files, for cross-referencing. Similarly, \texttt{harvard.bst} can add
+% |\citeasnoun|. These commands must therefore be accommodated,
+% as least within the |thebibliography| environment.
+% \begin{macrocode}
+%<newapa|chicago|all> \let\citeN\cite \let\shortcite\cite
+%<harvard|all> \let\citeasnoun\cite
+ }{\def\@noitemerr{%
+%<209> \@warning
+%<!209> \PackageWarning{natbib}
+ {Empty `thebibliography' environment}}%
+ \endlist\vskip-\lastskip}
+%<!egs>\let\bibfont=\relax
+%<egs>\let\bibfont=\small
+%</!agu>
+%<*agu>
+\let\aguthebib=\thebibliography
+\def\thebibliography#1{\noappendix\aguthebib{#1}}
+%</agu>
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Compatibility Commands}
+% \begin{macro}{\reset@font}
+% \begin{macro}{\refname}
+% \changes{6.4}{1996 Jun 18}{Provide name with \LaTeXe\ too}
+% \begin{macro}{\bibname}
+% \changes{6.4}{1996 Jun 18}{Provide name with \LaTeXe\ too}
+% For older implementations of \LaTeX~2.09 (before December, 1991) the
+% |\reset@font| command does not exist. It is defined to be |\relax| under
+% normal \LaTeX{}, but does more under NFSS. In case it is not defined, add
+% it here. The naming commands |\bibname| and |\refname| are similarly
+% unknown for this old \LaTeX. They are sometimes even unknown in non-standard
+% classes that are used in place of \texttt{article}, \texttt{report}, and
+% \texttt{book}.
+% \begin{macrocode}
+%<*!209>
+\providecommand\reset@font{\relax}
+\providecommand\bibname{Bibliography}
+\providecommand\refname{References}
+%</!209>
+%<*209>
+\@ifundefined{reset@font}{\let\reset@font=\relax}{}
+%<!agu&!egs>\@ifundefined{bibname}{\newcommand\bibname{Bibliography}}{}
+\@ifundefined{refname}{\newcommand\refname{References}}{}
+%</209>
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{\NAT@citeundefined}
+% \changes{6.1}{1995 Nov 22}{Add macro}
+% The December~1995 release of \LaTeX\ considered renaming the command
+% |\G@refundefinedtrue| for flagging undefined references. However, since a
+% number of packages, including \thestyle, were affected, it was decided to
+% retain the old name for the new coding. I had already decided to go for
+% an independent coding, which does exactly the same thing.
+% \begin{macrocode}
+%<*!209>
+\newcommand\NAT@citeundefined{\gdef \NAT@undefined {%
+ \PackageWarningNoLine{natbib}{There were undefined citations}}}
+\let \NAT@undefined \relax
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\NAT@citemultiple}
+% \changes{6.1}{1995 Dec 6}{Add macro}
+% Add the warning about multiply-defined citations, as part of the
+% do-it-yourself |\bibcite| definition.
+% \begin{macrocode}
+\newcommand\NAT@citemultiple{\gdef \NAT@multiple {%
+ \PackageWarningNoLine{natbib}{There were multiply defined citations}}}
+\let \NAT@multiple \relax
+\AtEndDocument{\NAT@undefined\NAT@multiple}
+%</!209>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@mkboth}
+% \changes{6.1}{1995 Dec 4}{Provide macro in case it is removed from
+% kernel}
+% Having been burned by the December~1995 update on several internal
+% commands, I have decided to make \thestyle\ as independent as
+% possible, or at least to avoid it crashing when internals are changed or
+% disappear in future. The |\@mkboth| is used in the bibliography listing,
+% and is the same as |\makeboth| with \texttt{headings} pagestyle. Provide
+% a dummy in case it disappears. If the kernel should use a different
+% command in future, the headings will not function, but at least there
+% will be no crash. (Also needed for very old versions of \LaTeX~2.09.)
+% \begin{macrocode}
+%<209>\@ifundefined{@mkboth}{\newcommand\@markboth[2]{}}{}
+%<!209>\providecommand\@mkboth[2]{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\MakeUppercase}
+% \changes{6.1}{1995 Dec 4}{Provide compatibility for older versions}
+% The |\MakeUppercase| command replaces |\uppercase| in \LaTeXe\ of
+% June~1995. Provide it for earlier versions.
+% \begin{macrocode}
+%<209>\let\MakeUppercase\uppercase
+%<!209>\providecommand\MakeUppercase{\uppercase}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@extra@b@citeb}
+% \changes{6.4}{1996 Sep 1}{Add macro for \texttt{chapterbib.sty}}
+% \begin{macro}{\@extra@binfo}
+% \changes{6.4}{1996 Sep 1}{Add macro for \texttt{chapterbib.sty}}
+% Two commands used by the \texttt{chapterbib} package, but which must
+% be defined to be nothing for use without that package. Do not |\let| them
+% be |\relax|, for that package checks if they exist (i.e., not |\relax|)
+% and redefines things like |\@citex|, which we do not want to have happen.
+% The necessary redefinitions are already included in \thestyle.
+% \begin{macrocode}
+%<209>\@ifundefined{@extra@b@citeb}{\def\@extra@b@citeb{}}{}
+%<!209>\providecommand{\@extra@b@citeb}{}
+\gdef\@extra@binfo{}
+% \end{macrocode}
+% \end{macro}\end{macro}
+%
+% \begin{macro}{\hyper@natanchorstart}
+% \changes{6.4}{1996 Oct 2}{Provide macro for \texttt{hyperref} package}
+% \begin{macro}{\hyper@natanchorend}
+% \changes{6.4}{1996 Oct 2}{Provide macro for \texttt{hyperref} package}
+% \begin{macro}{\hyper@natlinkstart}
+% \changes{6.4}{1996 Oct 2}{Provide macro for \texttt{hyperref} package}
+% \begin{macro}{\hyper@natlinkend}
+% \changes{6.4}{1996 Oct 2}{Provide macro for \texttt{hyperref} package}
+% The \texttt{hyperref} package of Sebastian Rahtz and Yannis Haralambous
+% defines these macros to
+% make hypertext links and references. Without that package, these macros
+% must be turned off. The order of loading \thestyle\ and \texttt{hyperref}
+% should not be important.
+% \begin{macrocode}
+%<*!209>
+\providecommand\hyper@natanchorstart[1]{}
+\providecommand\hyper@natanchorend{}
+\providecommand\hyper@natlinkstart[1]{}
+\providecommand\hyper@natlinkend{}
+%</!209>
+%<*209>
+\@ifundefined{hyper@natanchorstart}{\def\hyper@natanchorstart#1{}}{}
+\@ifundefined{hyper@natanchorend}{\def\hyper@natanchorend{}}{}
+\@ifundefined{hyper@natlinkstart}{\def\hyper@natlinkstart#1{}}{}
+\@ifundefined{hyper@natlinkend}{\def\hyper@natlinkend{}}{}
+%</209>
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}
+%
+% \subsection{Sorting and Compression of Numbers}
+% The \texttt{cite} and (obsolete) \texttt{citesort} packages by Donald
+% Arseneau provide the coding for printing multiple citation numbers in
+% ascending order, and with a range where applicable. That is, if the
+% normal result of |\cite{..}| with several keys were [5, 3, 8, 4], the new
+% result would be [3--5, 8].
+%
+% Since \texttt{cite.sty} totally reimplements the citation commands (as
+% does \thestyle) it is not possible to make the two compatible. Instead, I
+% have removed the necessary coding from \texttt{cite.sty}, converted it to
+% \thestyle\ format, and added it here.
+%
+% To activate the sorting and compression of numerical citations, load
+% \thestyle\ with the options \texttt{numbers,sort}.
+% This coding has no effect on author--year citations.
+%
+% \begin{macro}{\NAT@citen}
+% \changes{6.4}{1996 Oct 11}{Add coding from \texttt{cite.sty}}
+% It is not included in the \LaTeX~2.09 version, nor in the journal packages
+% since it is turned on by a package option, something missing in both of
+% them. Besides, the journals are author--year mode.
+% \begin{macrocode}
+%<*!subpack&!209>
+\ifnum\NAT@sort=1
+\newcommand\NAT@citen[1]{%
+\nocite{#1}%
+\@tempcntb\m@ne
+\let\@h@ld\relax
+\let\@citea\@empty
+\let\@celt\delimiter
+\def\@cite@list{}%
+\@for \@citeb:=#1\do{\@make@cite@list}%
+\@tempcnta\m@ne
+\let\@celt\@compress@cite \@cite@list
+\@h@ld}
+
+\begingroup \catcode`\_=8
+\gdef\@make@cite@list{%
+ \edef\@citeb{\expandafter\@firstofone\@citeb}%
+ \@ifundefined{b@\@citeb\@extra@b@citeb}{%
+ \@citea{\reset@font\bfseries?}\def\@citea{\NAT@sep\penalty\@m\NAT@space}%
+ \NAT@citeundefined\PackageWarning{natcite}%
+ {Citation `\@citeb' on page \thepage\space undefined}}%
+ {\NAT@parse{\@citeb}%
+ \ifcat _\ifnum\z@<0\NAT@num _\else A\fi % a positive number, put in list
+ \@tempcnta\NAT@num \relax
+ \ifnum \@tempcnta>\@tempcntb % new highest, add to end (efficiently)
+ \edef\@cite@list{\@cite@list \@celt{\NAT@num}}%
+ \@tempcntb\@tempcnta
+ \else % arbitrary number: insert appropriately
+ \edef\@cite@list{\expandafter\@sort@celt \@cite@list \@gobble @}%
+ \fi
+ \else % citation is not a number, output immediately
+ \@citea \NAT@num \def\@citea{\NAT@sep\penalty\@m\NAT@space}%
+ \fi}}
+\endgroup
+
+\def\@compress@cite#1{%
+ \advance\@tempcnta\@ne
+ \ifnum #1=\@tempcnta
+ \ifx\@h@ld\relax
+ \edef\@h@ld{\@citea #1}%
+ \else
+ \def\@h@ld{\hbox{--}\penalty\@m #1}%
+ \fi
+ \else
+ \@h@ld \@citea #1\let\@h@ld\relax
+ \fi \@tempcnta#1\def\@citea{\NAT@sep\penalty\@m\NAT@space}%
+}
+
+\def\@sort@celt#1#2{\ifx \@celt #1%
+ \ifnum #2<\@tempcnta
+ \@celt{#2}%
+ \expandafter\expandafter\expandafter\@sort@celt
+ \else
+ \@celt{\number\@tempcnta}\@celt{#2}%
+ \fi\fi}
+\def\NAT@citexnum[#1][#2]#3{\let\@citea\@empty
+ \@cite{\NAT@citen{#3}}{#1}{#2}}
+\fi
+%</!subpack&!209>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Local Configuration}
+% \changes{5.2}{1994 Aug 25}{Add reading in of \texttt{natbib.cfg}}
+% \changes{5.5}{1995 Mar 21}{Local configuration read in at end}
+% To accommodate local additional |\bibstyle@| definitions,
+% or any other modifications to the coding, read in
+% configuration file \texttt{natbib.cfg} if it exists.
+% \begin{macrocode}
+%<*!subpack&!209>
+\InputIfFileExists{natbib.cfg}
+ {\typeout{Local config file natbib.cfg used}}{}
+%</!subpack&!209>
+%</package>
+% \end{macrocode}
+%
+% \Finale
diff --git a/macros/latex/contrib/springer/svjour/stropt/natbib.ins b/macros/latex/contrib/springer/svjour/stropt/natbib.ins
new file mode 100644
index 0000000000..a55f912909
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/natbib.ins
@@ -0,0 +1,57 @@
+%% LaTeX2e file `natbib.ins'
+%% generated by the `filecontents' environment
+%% from source `natbib' on 1996/10/11.
+%%
+% Simply TeX or LaTeX this file to extract various files from
+% the source file `natbib.dtx'
+% Comment out the \generateFile lines for any files you do not want.
+
+\def\batchfile{natbib.ins}
+\input docstrip
+
+\preamble
+
+Only a few abbreviated comments remain here to describe the usage.
+
+\endpreamble
+\postamble
+<<<<< End of decommented file <<<<<<
+\endpostamble
+\keepsilent
+
+\generateFile{natbib.sty}{f}{\from{natbib.dtx}{package,all}}
+
+\preamble
+
+This is the LaTeX 2.09 version of the package.
+It will not be maintained forever.
+Please upgrade to LaTeX2e so that you may use the proper package.
+
+Only a few abbreviated comments remain here to describe the usage.
+
+\endpreamble
+
+% Activate the next line to get a version for running under LaTeX 2.09
+%\generateFile{natbib209.sty}{f}{\from{natbib.dtx}{package,all,209}}
+
+\preamble
+
+This is the driver file to produce the LaTeX documentation from the
+source file \inFileName.
+Make changes to it as needed. (Never change the \inFileName file!)
+\endpreamble
+\postamble
+
+End of documentation driver file.
+\endpostamble
+
+% Activate the next line for a documentation driver
+% that you can configure yourself.
+%\generateFile{natbib.drv}{f}{\from{natbib.dtx}{driver}}
+
+\obeyspaces
+\Msg{*******************************************}%
+\Msg{* For documentation, process natbib.dtx *}%
+\Msg{* or the driver file natbib.drv *}%
+\Msg{* (LaTeX2e only!) *}%
+\Msg{*******************************************}
diff --git a/macros/latex/contrib/springer/svjour/stropt/readme.txt b/macros/latex/contrib/springer/svjour/stropt/readme.txt
new file mode 100644
index 0000000000..07683ba503
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/readme.txt
@@ -0,0 +1,38 @@
+% readme.txt
+% LaTeX class for Structural Optimization
+% read-me file
+% (c) Springer-Verlag HD
+%-----------------------------------------------------------------------
+%
+
+This directory contains the LaTeX2e support for Structural Optimization
+
+For a quick entry to the Structural Optimization-formatting and if you
+are already familiar with the SVJour class you need only the three files:
+svjour.cls, svstropt.clo, and template.tex - natbib.sty should be
+available in TeXs search path.
+
+The following files are part of the macro package
+
+ readme.txt This file
+ svjour.cls The document class file for Springer journals
+ usrguide.* User's Guide (dvi, pdf)
+ svstropt.clo The class option file for Structural Optimization
+ natbib.dtx The natbib package of Patrick W. Daly.
+ Typeset this file for complete documentation of natbib.
+ natbib.ins Run the file natbib.ins with LaTeX to produce natbib.sty
+ stroptgd.* User's Guide (tex, dvi, ps [to be found in psoutput.zip])
+ template.tex A fill-in-form for a standard article with usage comments
+ psoutput.zip PS files of the above mentioned DVIs,
+ compressed due to their size. The file example.ps
+ contains a ready to print version that can be produced
+ at the publisher only, when page numbers are fixed
+
+
+ subdirectory: example (contains all data of a sample article)
+
+ example.* Example of an article (tex, dvi, ps [in psoutput.zip],
+ and pdf). example.pdf contains a ready to print version
+ that can be produced at the publisher only, when page
+ numbers are fixed. Like example.ps it also uses the
+ final fonts namely PostScript Times.
diff --git a/macros/latex/contrib/springer/svjour/stropt/stroptgd.dvi b/macros/latex/contrib/springer/svjour/stropt/stroptgd.dvi
new file mode 100644
index 0000000000..044b3fbf17
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/stroptgd.dvi
Binary files differ
diff --git a/macros/latex/contrib/springer/svjour/stropt/stroptgd.tex b/macros/latex/contrib/springer/svjour/stropt/stroptgd.tex
new file mode 100644
index 0000000000..fba4ee93d1
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/stroptgd.tex
@@ -0,0 +1,199 @@
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+
+\documentclass[draft]{ltxguide}[1995/11/28]
+%\usepackage{draftcopy}
+
+\makeatletter
+\def\setitemindent#1{\settowidth{\labelwidth}{#1}%
+ \leftmargini\labelwidth
+ \advance\leftmargini\labelsep
+ \def\@listi{\leftmargin\leftmargini
+ \labelwidth\leftmargini\advance\labelwidth by -\labelsep}}
+\def\setitemitemindent#1{\settowidth{\labelwidth}{#1}%
+ \leftmarginii\labelwidth
+ \advance\leftmarginii\labelsep
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth by -\labelsep
+ \parsep=\parskip
+ \topsep=\z@
+ \itemsep=\parskip \advance\itemsep by -\parsep}}
+%
+% adjusted environment "description"
+% if an optional parameter (at the first two levels of lists)
+% is present, its width is considered to be the widest mark
+% throughout the current list.
+\def\description{\@ifnextchar[{\@describe}{\list{}{\labelwidth\z@
+ \itemindent-\leftmargin \let\makelabel\descriptionlabel}}}
+%
+\def\describelabel#1{#1\hfil}
+\def\@describe[#1]{\relax\ifnum\@listdepth=0
+\setitemindent{#1}\else\ifnum\@listdepth=1
+\setitemitemindent{#1}\fi\fi
+\list{--}{\let\makelabel\describelabel}}
+\DeleteShortVerb{\|}
+\renewenvironment{decl}[1][]%
+ {\par\small\addvspace{2.3ex}%
+ \vskip -\parskip
+ \ifx\relax#1\relax
+ \def\@decl@date{}%
+ \else
+ \def\@decl@date{\NEWfeature{#1}}%
+ \fi
+ \noindent\hspace{-\leftmargini}%
+ \begin{tabular}{|l|}\hline\ignorespaces}%
+ {\\\hline\end{tabular}\nobreak\@decl@date\par\nobreak
+ \vspace{2.3ex plus 1ex}\vskip -\parskip}
+\MakeShortVerb{\|}
+%
+\def\@listI{\leftmargin\leftmargini
+ \parskip 0\p@ \@plus 1\p@
+ \parsep 0\p@ \@plus\p@
+ \topsep 2\p@ \@plus\p@
+ \itemsep0\p@\relax}
+\@listI
+\setlength{\parskip}{\medskipamount}
+\makeatother
+\newcommand{\SJour}{\textsc{SVJour}}
+
+\title{The \SJour\ document class user's guide\\supplement for\\
+\textit{Structural Optimization}}
+
+\author{\copyright~1999, Springer Verlag Heidelberg\\
+ All rights reserved.}
+
+\date{3 March 2000}
+
+\begin{document}
+
+\maketitle
+
+\section{Introduction}
+\label{sec:intro}
+This document describes the \textit{stropt} option for the \SJour\
+\LaTeXe\ document class. For details on manuscript handling and the
+reviewing process we refer to the \emph{Instructions for authors} which
+can be found at the Internet address
+ \texttt{http://link.springer.de/link/service/journals/00158/index.htm}
+via the link ``About this Journal" and in the printed journal. For style
+matters please consult previous issues of the journal.
+
+\section{Initializing the class}
+\label{sec:opt}
+
+As explained in the main \emph{User's guide} you can
+begin a document for \emph{Structural Optimization} by including
+\begin{verbatim}
+ \documentclass[stropt]{svjour}
+\end{verbatim}
+as the first line in your text. All other options are also described in
+the main \emph{User's guide}.
+
+\section{Changes to the \SJour\ class standard}
+
+As the address of the author appears as a footnote on the first page
+of your article and the author name is also repeated there the
+construction with \verb|\and| does not work. Hence do not use the
+\verb|\and| command in the \verb|\author{...}| as well as in the
+\verb|\institute{...}| field. The \verb|\inst| command has
+propagated from the author field to the institute field.
+
+If there are authors with different addresses the affiliations
+can be indicated with the command \verb|\inst{<number>}| after an
+authors name in the \verb|\author{...}| field as well as a leading
+\verb|\inst{<number>}| before a particular address in the
+\verb|\institute{...}| field.
+
+\section{Changed bibliographic environment\\
+for {\tt natbib} usage}
+
+\subsection*{Overview}
+
+The {\tt natbib}\footnote{Natbib coding copyright (C) 1994--1998 Patrick
+W. Daly. This file may be used for non-profit purposes. It may not be
+distributed in exchange for money, other than distribution costs.}
+package is a reimplementation of the \LaTeX\ \verb|\cite|\
+command, to work with author-year citations. It is compatible with the
+standard bibliographic style files, such as {\tt plain.bst}, as well as
+ith those of {\tt harvard, apalike, chicago, astron, authordate}, and of
+course {\tt natbib}.
+
+\subsection*{Loading}
+
+A loading with \verb|\usepackage[|{\it options}\verb|]{natbib}| is not
+needed. All {\tt natbib} options and citations styles are implemented
+for usage with the {\tt agp}-option.
+
+\subsection*{Basic commands}
+
+The {\tt natbib} package has two basic citation commands, \verb|\citet|
+and \verb|\citep| for {\it textual} and {\it parenthetical} citations,
+respectively. All of these may take one or two optional arguments to add
+some text before and after the citation.
+
+\begin{tabular}{l@{\hspace{10pt}$\Rightarrow$\hspace{10pt}}l}
+\verb|\citet{jon90}| &Jones et al. (1990)\\
+\verb|\citet[chap.~2]{jon90}| &Jones et al. (1990, chap. 2)\\
+\noalign{\smallskip}
+\verb|\citep{jon90}| &(Jones et al., 1990)\\
+\verb|\citep[chap.~2]{jon90}| &(Jones et al., 1990, chap. 2)\\
+\verb|\citep[see][]{jon90}| &(see Jones et al., 1990)\\
+\verb|\citep[see][chap.~2]{jon90}| &(see Jones et al., 1990, chap. 2)\\
+\end{tabular}
+
+\subsection*{Multiple citations}
+
+Multiple citations may be made as usual, by including more than one citation
+key in the \verb|\cite| command argument.
+
+\begin{tabular}{l@{\hspace{10pt}$\Rightarrow$\hspace{10pt}}l}
+\verb|\citet{jon90,jon91}| &Jones et al. (1990); James et al. (1991)\\
+\verb|\citep{jon90,jam91}| &(Jones et al., 1990; James et al. 1991)\\
+\verb|\citep{jon90,jon91}| &(Jones et al., 1990, 1991)\\
+\verb|\citep{jon90a,jon90b}| &(Jones et al., 1990a,b)\\
+\multicolumn{2}{c}{}\\
+\multicolumn{2}{c}{}\\
+\multicolumn{2}{c}{}\\
+\end{tabular}
+
+\subsection*{Bibliography}
+
+Use the \verb|\bibitem| macro in the following way:
+
+\begin{tabular}{l}
+\verb|\bibitem[Jones \etal (1990)]{jon90} {\bf Jones ...|\\
+\verb|\bibitem[Jones \etal (1991)]{jon91} {\bf Jones ...|\\
+\verb|\bibitem[James \etal (1991)]{jam91} {\bf James ...|\\
+\end{tabular}
+
+\section{Changes using PostScript fonts}
+
+The journal `Structural Optimization' is typeset using the
+PostScript\footnote{PostScript is a trademark of Adobe.} Times fonts for the
+main text and math. As the use of PostScript fonts results in different line and page
+breaks than when using Computer Modern fonts, we encourage you to use our
+document class together with the psnfss package times and if available the
+mathtime package. This packages does all necessary font replacements to show
+you the page make-up as it will be printed. Ask your local \TeX pert for
+details. PostScript previewing is possible on most systems. On some
+installations, however, on-screen previewing may be possible only with
+CM fonts.
+
+If, for technical reasons, you are not able to use the PS fonts, it is also
+possible to use our document class together with the ordinary Computer Modern
+fonts. Note, however, that in this case line and page breaks will change when
+we re\TeX\ your file with PS fonts, making it necessary for you to check them
+again once you receive the proofs from the printer.
+
+
+\section{Notes}
+
+Again we strongly suggest to use the \verb|\bibitem - \cite| as well as
+the \verb|\label -| \verb|\ref| mechanism of \LaTeX\ for your cross
+references throughout your document.
+
+\section{Installation}
+
+Following packages should be installed: \verb|times|, \verb|natbib|,
+\verb|amsmath|.
+
+\end{document}
diff --git a/macros/latex/contrib/springer/svjour/stropt/svjour.cls b/macros/latex/contrib/springer/svjour/stropt/svjour.cls
new file mode 100644
index 0000000000..79d1402952
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/svjour.cls
@@ -0,0 +1,1236 @@
+% SVJour DOCUMENT CLASS -- version 1.8 for LaTeX2e
+%
+% LaTeX document class for Springer journals
+%
+%%
+%%
+%% \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 \~}
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{svjour}[1999/09/14
+^^JLaTeX document class for Springer journals - version 1.8]
+\newcommand\@ptsize{}
+\newif\if@restonecol
+\newif\if@titlepage
+\@titlepagefalse
+\DeclareOption{a4paper}
+ {\setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}}
+\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
+\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+\DeclareOption{twocolumn}{\@twocolumntrue}
+\DeclareOption{fleqn}{\input{fleqn.clo}\AtEndOfClass{\mathindent\z@}}
+\let\if@mathematic\iftrue
+\let\if@numbook\iffalse
+\DeclareOption{numbook}{\let\if@envcntsect\iftrue
+ \AtEndOfPackage{%
+ \renewcommand\thefigure{\thesection.\@arabic\c@figure}%
+ \renewcommand\thetable{\thesection.\@arabic\c@table}%
+ \renewcommand\theequation{\thesection.\@arabic\c@equation}%
+ \@addtoreset{figure}{section}%
+ \@addtoreset{table}{section}%
+ \@addtoreset{equation}{section}%
+ }%
+}
+\DeclareOption{openbib}{%
+ \AtEndOfPackage{%
+ \renewcommand\@openbib@code{%
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \parsep \z@
+ }%
+ \renewcommand\newblock{\par}}%
+}
+%
+\let\if@runhead\iffalse
+\DeclareOption{runningheads}{\let\if@runhead\iftrue}
+\let\if@smartrunh\iffalse
+\DeclareOption{smartrunhead}{\let\if@smartrunh\iftrue}
+\DeclareOption{nosmartrunhead}{\let\if@smartrunh\iffalse}
+\let\if@envcntreset\iffalse
+\DeclareOption{envcountreset}{\let\if@envcntreset\iftrue}
+\let\if@envcntsame\iffalse
+\DeclareOption{envcountsame}{\let\if@envcntsame\iftrue}
+\let\if@envcntsect\iffalse
+\DeclareOption{envcountsect}{\let\if@envcntsect\iftrue}
+\let\if@referee\iffalse
+\DeclareOption{referee}{\let\if@referee\iftrue}
+\def\makereferee{\def\baselinestretch{2}}
+\let\if@instindent\iffalse
+\DeclareOption{instindent}{\let\if@instindent\iftrue}
+\let\if@smartand\iffalse
+\DeclareOption{smartand}{\let\if@smartand\iftrue}
+\let\if@spthms\iftrue
+\DeclareOption{nospthms}{\let\if@spthms\iffalse}
+\let\switch@texts\relax
+\DeclareOption{deutsch}{\def\switch@texts{\ds@deutsch}}
+\DeclareOption{francais}{\def\switch@texts{\ds@francais}}
+%
+\let\journalopt\@empty
+\DeclareOption*{\InputIfFileExists{sv\CurrentOption.clo}{%
+\let\journalopt\CurrentOption}{%
+\ClassWarning{Springer-SVJour}{Specified option or subpackage
+"\CurrentOption" not found -}\OptionNotUsed}}
+\ExecuteOptions{a4paper,twoside,10pt,instindent}
+\ProcessOptions
+\ifx\journalopt\@empty
+\ClassError{Springer-SVJour}{No valid journal specified in option list}{}
+\expandafter\stop
+\fi
+%
+\if@smartrunh\AtEndDocument{\islastpageeven\getlastpagenumber}\fi
+%
+\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00}
+\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01}
+\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02}
+\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03}
+\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04}
+\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05}
+\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06}
+\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07}
+\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08}
+\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09}
+\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A}
+%
+\setlength\parindent{15\p@}
+\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@}
+\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@}
+\setlength\headheight{12\p@}
+\setlength\headsep {16.74dd}
+\setlength\topskip {10\p@}
+\setlength\footskip{30\p@}
+\setlength\maxdepth{.5\topskip}
+%
+\@settopoint\textwidth
+\setlength\marginparsep {10\p@}
+\setlength\marginparpush{5\p@}
+\setlength\topmargin{-10pt}
+\if@twocolumn
+ \setlength\oddsidemargin {-30\p@}
+ \setlength\evensidemargin{-30\p@}
+\else
+ \setlength\oddsidemargin {\z@}
+ \setlength\evensidemargin{\z@}
+\fi
+\setlength\marginparwidth {48\p@}
+\setlength\footnotesep{8\p@}
+\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
+\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\intextsep {20\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
+\setlength\@fptop{0\p@}
+\setlength\@fpsep{12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\@fpbot{0\p@ \@plus 1fil}
+\setlength\@dblfptop{0\p@}
+\setlength\@dblfpsep{12\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\@dblfpbot{0\p@ \@plus 1fil}
+\setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
+\def\@listi{\leftmargin\leftmargini
+ \parsep \z@
+ \topsep 6\p@ \@plus2\p@ \@minus4\p@
+ \itemsep\parsep}
+\let\@listI\@listi
+\@listi
+\def\@listii {\leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep \z@
+ \parsep \topsep
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ \topsep \z@
+ \parsep \topsep
+ \itemsep \parsep}
+\def\@listiv {\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv
+ \advance\labelwidth-\labelsep}
+\def\@listv {\leftmargin\leftmarginv
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep}
+\def\@listvi {\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi
+ \advance\labelwidth-\labelsep}
+%
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+\renewcommand\baselinestretch{}
+\setlength\parskip{0\p@ \@plus \p@}
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+\setcounter{topnumber}{4}
+\renewcommand\topfraction{.9}
+\setcounter{bottomnumber}{2}
+\renewcommand\bottomfraction{.7}
+\setcounter{totalnumber}{6}
+\renewcommand\textfraction{.1}
+\renewcommand\floatpagefraction{.85}
+\setcounter{dbltopnumber}{3}
+\renewcommand\dbltopfraction{.85}
+\renewcommand\dblfloatpagefraction{.85}
+\def\ps@headings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+ \def\@evenhead{\small\rlap{\thepage}\hfil\leftmark\unskip}%
+ \def\@oddhead{\small\rightmark\hfil\llap{\thepage}}%
+ \let\@mkboth\@gobbletwo
+ \let\sectionmark\@gobble
+ \let\subsectionmark\@gobble
+ }
+% make indentations changeable
+\def\setitemindent#1{\settowidth{\labelwidth}{#1}%
+ \leftmargini\labelwidth
+ \advance\leftmargini\labelsep
+ \def\@listi{\leftmargin\leftmargini
+ \labelwidth\leftmargini\advance\labelwidth by -\labelsep
+ \parsep=\parskip
+ \topsep=\medskipamount
+ \itemsep=\parskip \advance\itemsep by -\parsep}}
+\def\setitemitemindent#1{\settowidth{\labelwidth}{#1}%
+ \leftmarginii\labelwidth
+ \advance\leftmarginii\labelsep
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth by -\labelsep
+ \parsep=\parskip
+ \topsep=\z@
+ \itemsep=\parskip \advance\itemsep by -\parsep}}
+% labels of description
+\def\descriptionlabel#1{\hspace\labelsep #1\hfil}
+% adjusted environment "description"
+% if an optional parameter (at the first two levels of lists)
+% is present, its width is considered to be the widest mark
+% throughout the current list.
+\def\description{\@ifnextchar[{\@describe}{\list{}{\labelwidth\z@
+ \itemindent-\leftmargin \let\makelabel\descriptionlabel}}}
+\let\enddescription\endlist
+%
+\def\describelabel#1{#1\hfil}
+\def\@describe[#1]{\relax\ifnum\@listdepth=0
+\setitemindent{#1}\else\ifnum\@listdepth=1
+\setitemitemindent{#1}\fi\fi
+\list{--}{\let\makelabel\describelabel}}
+%
+\newdimen\logodepth
+\logodepth=2.2cm
+\newdimen\headerboxheight
+\headerboxheight=180pt % 18 10.5dd-lines - 2\baselineskip
+\newdimen\betweenumberspace % dimension for space between
+\betweenumberspace=3.33pt % number and text of titles.
+\newdimen\aftertext % dimension for space after
+\aftertext=5pt % text of title.
+\newdimen\headlineindent % dimension for space between
+\headlineindent=1.166cm % number and text of headings.
+\def\andname{and}
+\if@mathematic
+ \def\runinend{\enspace}
+ \def\floatcounterend{\enspace}
+ \def\sectcounterend{}
+\else
+ \def\runinend{.}
+ \def\floatcounterend{.\ }
+ \def\sectcounterend{.}
+\fi
+\def\keywordname{{\bfseries Key words\runinend}}
+\def\lastandname{, and}
+\def\mailname{{\itshape Correspondence to\/}:}
+\def\email#1{{e-mail: \tt#1}}
+\def\keywords#1{\par\addvspace\baselineskip\noindent\keywordname\enspace
+\ignorespaces#1}
+%
+\newcounter{inst}
+\newcounter{auth}
+\def\authdepth{2}
+\newdimen\instindent
+\newbox\authrun
+\newtoks\authorrunning
+\newbox\titrun
+\newtoks\titlerunning
+\def\authorfont{\bfseries}
+
+\def\combirunning#1{\gdef\@combi{#1}}
+\def\@combi{}
+\newbox\combirun
+%
+\def\ps@last{\def\@evenhead{\small\rlap{\thepage}\hfil
+\lastevenhead}}
+\newcounter{lastpage}
+\def\islastpageeven{\@ifundefined{lastpagenumber}
+{\setcounter{lastpage}{0}}{\setcounter{lastpage}{\lastpagenumber}}
+\ifnum\value{lastpage}>0
+ \ifodd\value{lastpage}%
+ \else
+ \if@smartrunh
+ \thispagestyle{last}%
+ \fi
+ \fi
+\fi}
+\def\getlastpagenumber{\clearpage
+\addtocounter{page}{-1}%
+ \immediate\write\@auxout{\string\gdef\string\lastpagenumber{\thepage}}%
+ \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}}}%
+ \addtocounter{page}{1}}
+
+\def\journalname#1{\gdef\@journalname{#1}}
+
+\def\dedication#1{\gdef\@dedic{#1}}
+\def\@dedic{}
+
+\let\@date\undefined
+
+\def\institute#1{\gdef\@institute{#1}}
+
+\def\institutename{\par
+ \begingroup
+ \parindent=0pt
+ \parskip=0pt
+ \setcounter{inst}{1}%
+ \def\and{\par\stepcounter{inst}%
+ \if@instindent\hangindent\instindent\fi
+ \noindent
+ \hbox to\instindent{\hss\smash{$^{\theinst}$}\enspace}\ignorespaces}%
+ \setbox0=\vbox{\def\thanks##1{}\@institute}
+ \ifnum\value{inst}>9\relax\setbox0=\hbox{$^{88}$\enspace}%
+ \else\setbox0=\hbox{$^{8}$\enspace}\fi
+ \instindent=\wd0\relax
+ \ifnum\value{inst}=1\relax
+ \else
+ \setcounter{inst}{1}%
+ \if@instindent\hangindent\instindent\fi
+ \noindent
+ \hbox to\instindent{\hss\smash{$^{\theinst}$}\enspace}\ignorespaces
+ \fi
+ \small
+ \ignorespaces
+ \@institute\par
+ \endgroup}
+
+\def\offprints#1{\begingroup
+\def\protect{\noexpand\protect\noexpand}\xdef\@thanks{\@thanks
+\protect\footnotetext[0]{\unskip\hskip-15pt{\itshape Send offprint requests
+to\/}: \ignorespaces#1}}\endgroup\ignorespaces}
+
+\def\mail#1{\gdef\@mail{#1}}
+\def\@mail{}
+
+\def\@thanks{}
+
+\def\@fnsymbol#1{\ifcase#1\or\star\or{\star\star}\or{\star\star\star}%
+ \or \dagger\or \ddagger\or
+ \mathchar "278\or \mathchar "27B\or \|\or **\or \dagger\dagger
+ \or \ddagger\ddagger \else\@ctrerr\fi\relax}
+
+\def\inst#1{\unskip$^{#1}$}
+\def\fnmsep{\unskip$^,$}
+
+\def\subtitle#1{\gdef\@subtitle{#1}}
+\def\@subtitle{}
+
+\def\headnote#1{\gdef\@headnote{#1}}
+\def\@headnote{}
+
+\def\ch@ckobl#1#2{\@ifundefined{@#1}
+ {\typeout{SVJour warning: Missing
+\expandafter\string\csname#1\endcsname}%
+ \csname #1\endcsname{#2}}
+ {}}
+%
+\def\ProcessRunnHead{%
+ \def\\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}%
+ \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}%
+ \instindent=\textwidth
+ \advance\instindent by-\headlineindent
+ \if!\the\titlerunning!\else
+ \edef\@title{\the\titlerunning}%
+ \fi
+ \global\setbox\titrun=\hbox{\small\rmfamily\unboldmath\ignorespaces\@title
+ \unskip}%
+ \ifdim\wd\titrun>\instindent
+ \typeout{^^JSVJour Warning: Title too long for running head.}%
+ \typeout{Please supply a shorter form with \string\titlerunning
+ \space prior to \string\maketitle}%
+ \global\setbox\titrun=\hbox{\small\rmfamily
+ Title Suppressed Due to Excessive Length}%
+ \fi
+ \xdef\@title{\copy\titrun}%
+%
+ \if!\the\authorrunning!
+ \else
+ \setcounter{auth}{1}%
+ \edef\@author{\the\authorrunning}%
+ \fi
+ \ifnum\value{auth}>\authdepth
+ \def\stripauthor##1\and##2\endauthor{%
+ \protected@xdef\@author{##1\unskip\unskip\if!##2!\else\ et al.\fi}}%
+ \expandafter\stripauthor\@author\and\endauthor
+ \else
+ \gdef\and{\unskip, \ignorespaces}%
+ {\def\and{\noexpand\protect\noexpand\and}%
+ \protected@xdef\@author{\@author}}
+ \fi
+ \global\setbox\authrun=\hbox{\small\rmfamily\unboldmath\ignorespaces
+ \@author\unskip}%
+ \ifdim\wd\authrun>\instindent
+ \typeout{^^JSVJour Warning: Author name(s) too long for running head.
+ ^^JPlease supply a shorter form with \string\authorrunning
+ \space prior to \string\maketitle}%
+ \global\setbox\authrun=\hbox{\small\rmfamily Please give a shorter version
+ with: {\tt\string\authorrunning\space and
+ \string\titlerunning\space prior to \string\maketitle}}%
+ \fi
+ \xdef\@author{\copy\authrun}%
+ \markboth{\@author}{\@title}%
+}
+%
+\def\maketitle{\par
+\ch@ckobl{journalname}{Noname}
+\ch@ckobl{date}{The date of receipt and acceptance will be inserted by
+the editor}
+\ch@ckobl{title}{A title should be given}
+\ch@ckobl{author}{Name(s) and initial(s) of author(s) should be given}
+\ch@ckobl{institute}{Address(es) of author(s) should be given}
+\begingroup
+%
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \def\@makefnmark{$^{\@thefnmark}$}%
+%
+ \def\lastand{\ifnum\value{inst}=2\relax
+ \unskip{} \andname\
+ \else
+ \unskip, \andname\
+ \fi}%
+ \def\and{\stepcounter{auth}\relax
+ \if@smartand
+ \ifnum\value{auth}=\value{inst}%
+ \lastand
+ \else
+ \unskip,
+ \fi
+ \else
+ \unskip,
+ \fi}%
+ \ifnum \col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \thispagestyle{empty}
+ \global\@topnum\z@
+ \@thanks
+ \if!\@mail!\else
+ \footnotetext[0]{\kern-\bibindent\mailname\
+ \ignorespaces\@mail}%
+ \fi
+%
+ \if@runhead
+ \ProcessRunnHead
+ \if@smartrunh
+ \instindent=\textwidth
+ \advance\instindent by-\headlineindent
+ \if!\@combi!%
+ \global\setbox\combirun=\hbox{\small\rmfamily\unboldmath\ignorespaces
+ \@author\unskip: \@title\unskip}%
+ \def\@tempa{Automatically generated running head}%
+ \else
+ \global\setbox\combirun=\hbox{\small\rmfamily\unboldmath\ignorespaces
+ \@combi\unskip}%
+ \def\@tempa{With \string\combirunning\space supplied running head}%
+ \fi
+ \ifdim\wd\combirun>\instindent
+ \typeout{^^JSVJour Warning: \@tempa}%
+ \typeout{for a possible last even numbered page is too long.}%
+ \typeout{Please supply a shorter form with \string\combirunning
+ \space prior to \string\maketitle.}%
+ \global\setbox\combirun=\hbox{\small\rmfamily
+ Title Suppressed Due to Excessive Length --
+ supply \ttfamily\char92combirunning}%
+ \fi
+ \xdef\lastevenhead{\copy\combirun}%
+ \fi
+ \fi
+%
+ \endgroup
+ \setcounter{footnote}{0}
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\@subtitle\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax}
+
+\def\makeheadbox{{%
+\hbox to0pt{\vbox{\baselineskip=10dd\hrule\hbox
+to\hsize{\vrule\kern3pt\vbox{\kern3pt
+\hbox{\bfseries\@journalname\ manuscript No.}
+\hbox{(will be inserted by the editor)}
+\kern3pt}\hfil\kern3pt\vrule}\hrule}%
+\hss}}}
+
+\def\@maketitle{\newpage
+ \normalfont
+ \vbox to0pt{\vskip-40pt
+ \nointerlineskip
+ \makeheadbox\vss}\nointerlineskip
+ \setbox\authrun=\vbox\bgroup
+ {\Large \bfseries\boldmath
+ \hrule\@height\logodepth\@width\z@
+ \pretolerance=10000
+ \rightskip=0pt plus 4cm
+ \if!\@headnote!\else
+ \noindent
+ {\normalfont\em\ignorespaces\@headnote\par}\vskip 3.5mm
+ \fi
+ \noindent\ignorespaces
+ \@title \par}\vskip 11.24pt\relax
+ \if!\@subtitle!\else
+ {\large\bfseries\boldmath
+ \pretolerance=10000
+ \rightskip=0pt plus 3cm
+ \noindent\ignorespaces\@subtitle \par}\vskip 11.24pt
+ \fi
+ \normalfont\authorfont
+ \lineskip .5em
+ \setbox0=\vbox{\setcounter{auth}{1}\def\and{\stepcounter{auth} }%
+ \hfuzz=2\textwidth\def\thanks##1{}\@author}%
+ \value{inst}=\value{auth}%
+ \setcounter{auth}{1}%
+ \rightskip=0pt plus 2cm
+ \noindent\ignorespaces\@author\vskip7.23pt
+ \rightskip=0pt\relax
+ \normalfont\small\rmfamily
+ \institutename
+ \vskip 12.85pt \noindent\@date
+ \if!\@dedic!\else
+ \par
+ \small\itshape
+ \addvspace\baselineskip
+ \noindent\@dedic
+ \fi
+ \egroup % end of header box
+ \@tempdima=\headerboxheight
+ \advance\@tempdima by-\ht\authrun
+ \ifdim\@tempdima>0pt
+ \vrule width0pt height\@tempdima
+ \fi
+ \unvbox\authrun
+ \global\@minipagetrue
+ \global\everypar{\global\@minipagefalse\global\everypar{}}
+ \vskip22.47pt
+}
+%
+\if@mathematic
+ \def\vec#1{\ensuremath{\mathchoice
+ {\mbox{\boldmath$\displaystyle\mathbf{#1}$}}
+ {\mbox{\boldmath$\textstyle\mathbf{#1}$}}
+ {\mbox{\boldmath$\scriptstyle\mathbf{#1}$}}
+ {\mbox{\boldmath$\scriptscriptstyle\mathbf{#1}$}}}}
+\else
+ \def\vec#1{\ensuremath{\mathchoice
+ {\mbox{\boldmath$\displaystyle#1$}}
+ {\mbox{\boldmath$\textstyle#1$}}
+ {\mbox{\boldmath$\scriptstyle#1$}}
+ {\mbox{\boldmath$\scriptscriptstyle#1$}}}}
+\fi
+%
+\def\tens#1{\ensuremath{\mathsf{#1}}}
+%
+\setcounter{secnumdepth}{3}
+\newcounter {section}
+\newcounter {subsection}[section]
+\newcounter {subsubsection}[subsection]
+\newcounter {paragraph}[subsubsection]
+\newcounter {subparagraph}[paragraph]
+\renewcommand\thesection {\@arabic\c@section}
+\renewcommand\thesubsection {\thesection.\@arabic\c@subsection}
+\renewcommand\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}
+\renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph}
+\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}
+%
+\def\@hangfrom#1{\setbox\@tempboxa\hbox{#1}%
+ \hangindent \z@\noindent\box\@tempboxa}
+
+\def\@seccntformat#1{\csname the#1\endcsname\sectcounterend
+\hskip\betweenumberspace}
+
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #6{%
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ \raggedright
+ \hyphenpenalty \@M%
+ \interlinepenalty \@M #8\@@par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname\sectcounterend}%
+ \fi
+ #7}%
+ \else
+ \def\@svsechd{%
+ #6{\hskip #3\relax
+ \@svsec #8\hskip\aftertext}%
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}}%
+ \fi
+ \@xsect{#5}}
+
+%
+% measures and setting of sections
+%
+\def\section{\@startsection{section}{1}{\z@}%
+ {-21dd plus-4pt minus-4pt}{10.5dd plus 4pt
+ minus4pt}{\normalsize\bfseries\boldmath}}
+\def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-21dd plus-4pt minus-4pt}{10.5dd plus 4pt
+ minus4pt}{\normalsize\itshape}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-13dd plus-4pt minus-4pt}{-5.5pt}{\normalsize\itshape}}
+\def\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {-13pt plus-4pt minus-4pt}{-5.5pt}{\normalsize\itshape}}
+
+\setlength\leftmargini {\parindent}
+\leftmargin \leftmargini
+\setlength\leftmarginii {\parindent}
+\setlength\leftmarginiii {1.87em}
+\setlength\leftmarginiv {1.7em}
+\setlength\leftmarginv {.5em}
+\setlength\leftmarginvi {.5em}
+\setlength \labelsep {.5em}
+\setlength \labelwidth{\leftmargini}
+\addtolength\labelwidth{-\labelsep}
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+\renewcommand\theenumi{\@arabic\c@enumi}
+\renewcommand\theenumii{\@alph\c@enumii}
+\renewcommand\theenumiii{\@roman\c@enumiii}
+\renewcommand\theenumiv{\@Alph\c@enumiv}
+\newcommand\labelenumi{\theenumi.}
+\newcommand\labelenumii{(\theenumii)}
+\newcommand\labelenumiii{\theenumiii.}
+\newcommand\labelenumiv{\theenumiv.}
+\renewcommand\p@enumii{\theenumi}
+\renewcommand\p@enumiii{\theenumi(\theenumii)}
+\renewcommand\p@enumiv{\p@enumiii\theenumiii}
+\newcommand\labelitemi{\normalfont\bfseries --}
+\newcommand\labelitemii{\normalfont\bfseries --}
+\newcommand\labelitemiii{$\m@th\bullet$}
+\newcommand\labelitemiv{$\m@th\cdot$}
+
+\if@spthms
+% definition of the "\spnewtheorem" command.
+%
+% Usage:
+%
+% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font}
+% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font}
+% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font}
+%
+% New is "cap_font" and "body_font". It stands for
+% fontdefinition of the caption and the text itself.
+%
+% "\spnewtheorem*" gives a theorem without number.
+%
+% A defined spnewthoerem environment is used as described
+% by Lamport.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\@thmcountersep{}
+\def\@thmcounterend{}
+\newdimen\spthmsep \spthmsep=3pt
+
+\def\spnewtheorem{\@ifstar{\@sthm}{\@Sthm}}
+
+% definition of \spnewtheorem with number
+
+\def\@spnthm#1#2{%
+ \@ifnextchar[{\@spxnthm{#1}{#2}}{\@spynthm{#1}{#2}}}
+\def\@Sthm#1{\@ifnextchar[{\@spothm{#1}}{\@spnthm{#1}}}
+
+\def\@spxnthm#1#2[#3]#4#5{\expandafter\@ifdefinable\csname #1\endcsname
+ {\@definecounter{#1}\@addtoreset{#1}{#3}%
+ \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand
+ \csname the#3\endcsname \noexpand\@thmcountersep \@thmcounter{#1}}%
+ \expandafter\xdef\csname #1name\endcsname{#2}%
+ \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}%
+ \global\@namedef{end#1}{\@endtheorem}}}
+
+\def\@spynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname
+ {\@definecounter{#1}%
+ \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
+ \expandafter\xdef\csname #1name\endcsname{#2}%
+ \global\@namedef{#1}{\@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}%
+ \global\@namedef{end#1}{\@endtheorem}}}
+
+\def\@spothm#1[#2]#3#4#5{%
+ \@ifundefined{c@#2}{\@latexerr{No theorem environment `#2' defined}\@eha}%
+ {\expandafter\@ifdefinable\csname #1\endcsname
+ {\global\@namedef{the#1}{\@nameuse{the#2}}%
+ \expandafter\xdef\csname #1name\endcsname{#3}%
+ \global\@namedef{#1}{\@spthm{#2}{\csname #1name\endcsname}{#4}{#5}}%
+ \global\@namedef{end#1}{\@endtheorem}}}}
+
+\def\@spthm#1#2#3#4{\topsep 7\p@ \@plus2\p@ \@minus4\p@
+\labelsep=\spthmsep\refstepcounter{#1}%
+\@ifnextchar[{\@spythm{#1}{#2}{#3}{#4}}{\@spxthm{#1}{#2}{#3}{#4}}}
+
+\def\@spxthm#1#2#3#4{\@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}%
+ \ignorespaces}
+
+\def\@spythm#1#2#3#4[#5]{\@spopargbegintheorem{#2}{\csname
+ the#1\endcsname}{#5}{#3}{#4}\ignorespaces}
+
+\def\@spbegintheorem#1#2#3#4{\trivlist
+ \item[\hskip\labelsep{#3#1\ #2\@thmcounterend}]#4}
+
+\def\@spopargbegintheorem#1#2#3#4#5{\trivlist
+ \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)\@thmcounterend\ }#5}
+
+% definition of \spnewtheorem* without number
+
+\def\@sthm#1#2{\@Ynthm{#1}{#2}}
+
+\def\@Ynthm#1#2#3#4{\expandafter\@ifdefinable\csname #1\endcsname
+ {\global\@namedef{#1}{\@Thm{\csname #1name\endcsname}{#3}{#4}}%
+ \expandafter\xdef\csname #1name\endcsname{#2}%
+ \global\@namedef{end#1}{\@endtheorem}}}
+
+\def\@Thm#1#2#3{\topsep 7\p@ \@plus2\p@ \@minus4\p@
+\@ifnextchar[{\@Ythm{#1}{#2}{#3}}{\@Xthm{#1}{#2}{#3}}}
+
+\def\@Xthm#1#2#3{\@Begintheorem{#1}{#2}{#3}\ignorespaces}
+
+\def\@Ythm#1#2#3[#4]{\@Opargbegintheorem{#1}
+ {#4}{#2}{#3}\ignorespaces}
+
+\def\@Begintheorem#1#2#3{#3\trivlist
+ \item[\hskip\labelsep{#2#1\@thmcounterend}]}
+
+\def\@Opargbegintheorem#1#2#3#4{#4\trivlist
+ \item[\hskip\labelsep{#3#1}]{#3(#2)\@thmcounterend\ }}
+
+\if@envcntsect
+ \def\@thmcountersep{.}
+ \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape}
+\else
+ \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape}
+ \if@envcntreset
+ \@addtoreset{theorem}{section}
+ \else
+ \@addtoreset{theorem}{chapter}
+ \fi
+\fi
+
+%definition of divers theorem environments
+\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily}
+\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily}
+\if@envcntsame % alle Umgebungen wie Theorem.
+ \def\spn@wtheorem#1#2#3#4{\@spothm{#1}[theorem]{#2}{#3}{#4}}
+\else % alle Umgebungen mit eigenem Zaehler
+ \if@envcntsect % mit section numeriert
+ \def\spn@wtheorem#1#2#3#4{\@spxnthm{#1}{#2}[section]{#3}{#4}}
+ \else % nicht mit section numeriert
+ \if@envcntreset
+ \def\spn@wtheorem#1#2#3#4{\@spynthm{#1}{#2}{#3}{#4}
+ \@addtoreset{#1}{section}}
+ \else
+ \let\spn@wtheorem=\@spynthm
+ \fi
+ \fi
+\fi
+\spn@wtheorem{case}{Case}{\itshape}{\rmfamily}
+\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily}
+\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape}
+\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape}
+\spn@wtheorem{example}{Example}{\itshape}{\rmfamily}
+\spn@wtheorem{exercise}{Exercise}{\bfseries}{\rmfamily}
+\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape}
+\spn@wtheorem{note}{Note}{\itshape}{\rmfamily}
+\spn@wtheorem{problem}{Problem}{\bfseries}{\rmfamily}
+\spn@wtheorem{property}{Property}{\itshape}{\rmfamily}
+\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape}
+\spn@wtheorem{question}{Question}{\itshape}{\rmfamily}
+\spn@wtheorem{solution}{Solution}{\bfseries}{\rmfamily}
+\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily}
+%
+\newenvironment{theopargself}
+ {\def\@spopargbegintheorem##1##2##3##4##5{\trivlist
+ \item[\hskip\labelsep{##4##1\ ##2}]{##4##3\@thmcounterend\ }##5}
+ \def\@Opargbegintheorem##1##2##3##4{##4\trivlist
+ \item[\hskip\labelsep{##3##1}]{##3##2\@thmcounterend\ }}}{}
+\newenvironment{theopargself*}
+ {\def\@spopargbegintheorem##1##2##3##4##5{\trivlist
+ \item[\hskip\labelsep{##4##1\ ##2}]{\hspace*{-\labelsep}##4##3\@thmcounterend}##5}
+ \def\@Opargbegintheorem##1##2##3##4{##4\trivlist
+ \item[\hskip\labelsep{##3##1}]{\hspace*{-\labelsep}##3##2\@thmcounterend}}}{}
+\fi
+
+\def\@takefromreset#1#2{%
+ \def\@tempa{#1}%
+ \let\@tempd\@elt
+ \def\@elt##1{%
+ \def\@tempb{##1}%
+ \ifx\@tempa\@tempb\else
+ \@addtoreset{##1}{#2}%
+ \fi}%
+ \expandafter\expandafter\let\expandafter\@tempc\csname cl@#2\endcsname
+ \expandafter\def\csname cl@#2\endcsname{}%
+ \@tempc
+ \let\@elt\@tempd}
+
+\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}}
+\def\qed{\ifmmode\else\unskip\quad\fi\squareforqed}
+\def\smartqed{\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil
+\penalty50\hskip1em\null\nobreak\hfil\squareforqed
+\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi}}
+
+% Define `abstract' environment
+\def\abstract{\topsep=0pt\partopsep=0pt\parsep=0pt\itemsep=0pt\relax
+\trivlist\item[\hskip\labelsep
+{\bfseries\abstractname}]\if!\abstractname!\hskip-\labelsep\fi}
+\if@twocolumn
+ \def\endabstract{\endtrivlist\addvspace{5mm}\strich}
+ \def\strich{\hrule\vskip3ptplus12pt\null}
+\else
+ \def\endabstract{\endtrivlist\addvspace{3mm}}
+\fi
+%
+\newenvironment{verse}
+ {\let\\\@centercr
+ \list{}{\itemsep \z@
+ \itemindent -1.5em%
+ \listparindent\itemindent
+ \rightmargin \leftmargin
+ \advance\leftmargin 1.5em}%
+ \item\relax}
+ {\endlist}
+\newenvironment{quotation}
+ {\list{}{\listparindent 1.5em%
+ \itemindent \listparindent
+ \rightmargin \leftmargin
+ \parsep \z@ \@plus\p@}%
+ \item\relax}
+ {\endlist}
+\newenvironment{quote}
+ {\list{}{\rightmargin\leftmargin}%
+ \item\relax}
+ {\endlist}
+\newcommand\appendix{\par
+ \setcounter{section}{0}%
+ \setcounter{subsection}{0}%
+ \renewcommand\thesection{\@Alph\c@section}}
+\setlength\arraycolsep{1.5\p@}
+\setlength\tabcolsep{6\p@}
+\setlength\arrayrulewidth{.4\p@}
+\setlength\doublerulesep{2\p@}
+\setlength\tabbingsep{\labelsep}
+\skip\@mpfootins = \skip\footins
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+\renewcommand\theequation{\@arabic\c@equation}
+\newcounter{figure}
+\renewcommand\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{\figurename~\thefigure}
+\newenvironment{figure}
+ {\@float{figure}}
+ {\end@float}
+\newenvironment{figure*}
+ {\@dblfloat{figure}}
+ {\end@dblfloat}
+\newcounter{table}
+\renewcommand\thetable{\@arabic\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{\tablename~\thetable}
+\newenvironment{table}
+ {\@float{table}}
+ {\end@float}
+\newenvironment{table*}
+ {\@dblfloat{table}}
+ {\end@dblfloat}
+
+\def \@floatboxreset {%
+ \reset@font
+ \small
+ \@setnobreak
+ \@setminipage
+}
+
+\newlength\abovecaptionskip
+\newlength\belowcaptionskip
+\setlength\abovecaptionskip{10\p@}
+\setlength\belowcaptionskip{0\p@}
+\newcommand\leftlegendglue{}
+
+\def\fig@type{figure}
+
+\newdimen\figcapgap\figcapgap=3pt
+\newdimen\tabcapgap\tabcapgap=5.5pt
+
+\@ifundefined{floatlegendstyle}{\def\floatlegendstyle{\bfseries}}{}
+
+\long\def\@caption#1[#2]#3{\par\addcontentsline{\csname
+ ext@#1\endcsname}{#1}{\protect\numberline{\csname
+ the#1\endcsname}{\ignorespaces #2}}\begingroup
+ \@parboxrestore
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup}
+
+\def\capstrut{\vrule\@width\z@\@height\topskip}
+
+\@ifundefined{captionstyle}{\def\captionstyle{\normalfont\small}}{}
+
+\long\def\@makecaption#1#2{%
+ \captionstyle
+ \ifx\@captype\fig@type
+ \vskip\figcapgap
+ \fi
+ \setbox\@tempboxa\hbox{{\floatlegendstyle #1\floatcounterend}%
+ \capstrut #2}%
+ \ifdim \wd\@tempboxa >\hsize
+ {\floatlegendstyle #1\floatcounterend}\capstrut #2\par
+ \else
+ \hbox to\hsize{\leftlegendglue\unhbox\@tempboxa\hfil}%
+ \fi
+ \ifx\@captype\fig@type\else
+ \vskip\tabcapgap
+ \fi}
+
+\newdimen\figgap\figgap=1cc
+\long\def\@makesidecaption#1#2{%
+ \parbox[b]{\@tempdima}{\captionstyle{\floatlegendstyle
+ #1\floatcounterend}#2}}
+\def\sidecaption#1\caption{%
+\setbox\@tempboxa=\hbox{#1\unskip}%
+\if@twocolumn
+ \ifdim\hsize<\textwidth\else
+ \ifdim\wd\@tempboxa<\columnwidth
+ \typeout{Double column float fits into single column -
+ ^^Jyou'd better switch the environment. }%
+ \fi
+ \fi
+\fi
+\@tempdima=\hsize
+\advance\@tempdima by-\figgap
+\advance\@tempdima by-\wd\@tempboxa
+\ifdim\@tempdima<3cm
+ \typeout{\string\sidecaption: No sufficient room for the legend;
+ using normal \string\caption. }%
+ \unhbox\@tempboxa
+ \let\@capcommand=\@caption
+\else
+ \let\@capcommand=\@sidecaption
+ \leavevmode
+ \unhbox\@tempboxa
+ \hfill
+\fi
+\refstepcounter\@captype
+\@dblarg{\@capcommand\@captype}}
+
+\long\def\@sidecaption#1[#2]#3{\addcontentsline{\csname
+ ext@#1\endcsname}{#1}{\protect\numberline{\csname
+ the#1\endcsname}{\ignorespaces #2}}\begingroup
+ \@parboxrestore
+ \@makesidecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup}
+
+% Define `acknowledgement' environment
+\def\acknowledgement{\par\addvspace{17pt}\small\rmfamily
+\trivlist\if!\ackname!\item[]\else
+\item[\hskip\labelsep
+{\it\ackname}]\fi}
+\def\endacknowledgement{\endtrivlist\addvspace{6pt}}
+% Define `noteadd' environment
+\def\noteadd{\par\addvspace{17pt}\small\rmfamily
+\trivlist\item[\hskip\labelsep
+{\itshape\noteaddname}]}
+\def\endnoteadd{\endtrivlist\addvspace{6pt}}
+
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
+\newcommand\@pnumwidth{1.55em}
+\newcommand\@tocrmarg{2.55em}
+\newcommand\@dotsep{4.5}
+\setcounter{tocdepth}{1}
+\newcommand\tableofcontents{%
+ \section*{\contentsname}%
+ \@starttoc{toc}%
+ \addtocontents{toc}{\begingroup\protect\small}%
+ \AtEndDocument{\addtocontents{toc}{\endgroup}}%
+ }
+\newcommand*\l@part[2]{%
+ \ifnum \c@tocdepth >-2\relax
+ \addpenalty\@secpenalty
+ \addvspace{2.25em \@plus\p@}%
+ \begingroup
+ \setlength\@tempdima{3em}%
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ {\leavevmode
+ \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
+ \nobreak
+ \if@compatibility
+ \global\@nobreaktrue
+ \everypar{\global\@nobreakfalse\everypar{}}%
+ \fi
+ \endgroup
+ \fi}
+\newcommand*\l@section{\@dottedtocline{1}{0pt}{1.5em}}
+\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
+\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
+\newcommand\listoffigures{%
+ \section*{\listfigurename
+ \@mkboth{\listfigurename}%
+ {\listfigurename}}%
+ \@starttoc{lof}%
+ }
+\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\newcommand\listoftables{%
+ \section*{\listtablename
+ \@mkboth{\listtablename}{\listtablename}}%
+ \@starttoc{lot}%
+ }
+\let\l@table\l@figure
+\newdimen\bibindent
+\setlength\bibindent{\parindent}
+\def\@biblabel#1{#1.}
+\def\@lbibitem[#1]#2{\item[{[#1]}\hfill]\if@filesw
+ {\let\protect\noexpand
+ \immediate
+ \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}
+\newenvironment{thebibliography}[1]
+ {\section*{\refname
+ \@mkboth{\refname}{\refname}}\small
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+ {\settowidth\labelwidth{\@biblabel{#1}}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy\clubpenalty4000\widowpenalty4000%
+ \sfcode`\.\@m}
+ {\def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}
+%
+\newcount\@tempcntc
+\def\@citex[#1]#2{\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi
+ \@tempcnta\z@\@tempcntb\m@ne\def\@citea{}\@cite{\@for\@citeb:=#2\do
+ {\@ifundefined
+ {b@\@citeb}{\@citeo\@tempcntb\m@ne\@citea\def\@citea{,}{\bfseries
+ ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+ {\setbox\z@\hbox{\global\@tempcntc0\csname b@\@citeb\endcsname\relax}%
+ \ifnum\@tempcntc=\z@ \@citeo\@tempcntb\m@ne
+ \@citea\def\@citea{,\hskip0.1em\ignorespaces}\hbox{\csname b@\@citeb\endcsname}%
+ \else
+ \advance\@tempcntb\@ne
+ \ifnum\@tempcntb=\@tempcntc
+ \else\advance\@tempcntb\m@ne\@citeo
+ \@tempcnta\@tempcntc\@tempcntb\@tempcntc\fi\fi}}\@citeo}{#1}}
+\def\@citeo{\ifnum\@tempcnta>\@tempcntb\else
+ \@citea\def\@citea{,\hskip0.1em\ignorespaces}%
+ \ifnum\@tempcnta=\@tempcntb\the\@tempcnta\else
+ {\advance\@tempcnta\@ne\ifnum\@tempcnta=\@tempcntb \else \def\@citea{--}\fi
+ \advance\@tempcnta\m@ne\the\@tempcnta\@citea\the\@tempcntb}\fi\fi}
+%
+\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
+\let\@openbib@code\@empty
+\newenvironment{theindex}
+ {\if@twocolumn
+ \@restonecolfalse
+ \else
+ \@restonecoltrue
+ \fi
+ \columnseprule \z@
+ \columnsep 35\p@
+ \twocolumn[\section*{\indexname}]%
+ \@mkboth{\indexname}{\indexname}%
+ \thispagestyle{plain}\parindent\z@
+ \parskip\z@ \@plus .3\p@\relax
+ \let\item\@idxitem}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+\newcommand\@idxitem{\par\hangindent 40\p@}
+\newcommand\subitem{\@idxitem \hspace*{20\p@}}
+\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
+\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
+\renewcommand\footnoterule{%
+ \kern-3\p@
+ \hrule\@width.4\columnwidth
+ \kern2.6\p@}
+\newcommand\@makefntext[1]{%
+ \noindent
+ \hb@xt@\bibindent{\hss\@makefnmark\enspace}#1}
+%
+\newcommand\contentsname{Contents}
+\newcommand\listfigurename{List of Figures}
+\newcommand\listtablename{List of Tables}
+\newcommand\refname{References}
+\newcommand\indexname{Index}
+\newcommand\figurename{Fig.}
+\newcommand\tablename{Table}
+\newcommand\partname{Part}
+\newcommand\appendixname{Appendix}
+\newcommand\abstractname{Abstract\runinend}
+\newcommand\ackname{Acknowledgements\runinend}
+\newcommand\noteaddname{Note added in proof}
+% French section
+\def\ds@francais{%
+ \typeout{On parle francais.}%
+ \def\abstractname{R\'esum\'e\runinend}%
+ \def\ackname{Remerciements\runinend}%
+ \def\andname{et}%
+ \def\lastandname{ et}%
+ \def\appendixname{Appendice}
+ \def\chaptername{Chapitre}%
+ \def\claimname{Pr\'etention}%
+ \def\conjecturename{Hypoth\`ese}%
+ \def\contentsname{Table des mati\`eres}%
+ \def\corollaryname{Corollaire}%
+ \def\definitionname{D\'efinition}%
+ \def\examplename{Exemple}%
+ \def\exercisename{Exercice}%
+ \def\figurename{Fig.}%
+ \def\keywordname{{\bfseries Mots-cl\'e\runinend}}
+ \def\indexname{Index}
+ \def\lemmaname{Lemme}%
+ \def\contriblistname{Liste des contributeurs}
+ \def\listfigurename{Liste des figures}%
+ \def\listtablename{Liste des tables}%
+ \def\mailname{{\itshape Correspondence to\/}:}
+ \def\noteaddname{Note ajout\'ee \`a l'\'epreuve}%
+ \def\notename{Remarque}%
+ \def\partname{Partie}%
+ \def\problemname{Probl\`eme}%
+ \def\proofname{\'Epreuve}%
+ \def\propertyname{Caract\'eristique}%
+%\def\propositionname{Proposition}%
+ \def\questionname{Question}%
+%\def\refname{References}%
+ \def\remarkname{Remarque}%
+ \def\seename{voyez}
+ \def\solutionname{Solution}%
+%\def\subclassname{{\it Subject Classifications\/}:}
+ \def\tablename{Tableau}%
+ \def\theoremname{Th\'eor\`eme}%
+}
+%
+% German section
+\def\ds@deutsch{\typeout{Man spricht deutsch.}%
+ \def\abstractname{Zusammenfassung\runinend}%
+ \def\ackname{Danksagung\runinend}%
+ \def\andname{und}%
+ \def\lastandname{ und}%
+ \def\appendixname{Anhang}%
+ \def\chaptername{Kapitel}%
+ \def\claimname{Behauptung}%
+ \def\conjecturename{Hypothese}%
+ \def\contentsname{Inhaltsverzeichnis}%
+ \def\corollaryname{Korollar}%
+%\def\definitionname{Definition}%
+ \def\examplename{Beispiel}%
+ \def\exercisename{\"Ubung}%
+ \def\figurename{Abb.}%
+ \def\keywordname{{\bfseries Schl\"usselw\"orter\runinend}}
+ \def\indexname{Index}
+%\def\lemmaname{Lemma}%
+ \def\contriblistname{Mitarbeiter}
+ \def\listfigurename{Abbildungsverzeichnis}%
+ \def\listtablename{Tabellenverzeichnis}%
+ \def\mailname{{\itshape Correspondence to\/}:}
+ \def\noteaddname{Nachtrag}%
+ \def\notename{Anmerkung}%
+ \def\partname{Teil}%
+%\def\problemname{Problem}%
+ \def\proofname{Beweis}%
+ \def\propertyname{Eigenschaft}%
+%\def\propositionname{Proposition}%
+ \def\questionname{Frage}%
+ \def\refname{Literatur}%
+ \def\remarkname{Anmerkung}%
+ \def\seename{siehe}
+ \def\solutionname{L\"osung}%
+%\def\subclassname{{\it Subject Classifications\/}:}
+ \def\tablename{Tabelle}%
+%\def\theoremname{Theorem}%
+}
+\AtBeginDocument{\switch@texts}
+\newcommand\today{}
+\edef\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+\setlength\columnsep{1.5cc}
+\setlength\columnseprule{0\p@}
+%
+\frenchspacing
+\clubpenalty=10000
+\widowpenalty=10000
+\def\thisbottomragged{\def\@textbottom{\vskip\z@ plus.0001fil
+\global\let\@textbottom\relax}}
+\pagestyle{headings}
+\pagenumbering{arabic}
+\if@twocolumn
+ \twocolumn
+\fi
+\if@referee
+ \makereferee
+\fi
+\flushbottom
+\endinput
+%%
+%% End of file `svjour.cls'.
diff --git a/macros/latex/contrib/springer/svjour/stropt/svstropt.clo b/macros/latex/contrib/springer/svjour/stropt/svstropt.clo
new file mode 100644
index 0000000000..c4706b5bc4
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/svstropt.clo
@@ -0,0 +1,250 @@
+% SVJour DOCUMENT CLASS OPTION STROPT -- Structural Optimization
+%
+% This is an enhancement for the
+% LaTeX document class for Springer journals (two column version)
+%
+%%
+%%
+%% \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 \~}
+\ProvidesFile{svstropt.clo}
+ [2000/03/03 v1.2
+ style option for Structural Optimization]
+\typeout{SVJour Class option: svstropt.clo for Structural Optimization}
+\ExecuteOptions{final,fleqn,twocolumn,10pt}
+% No size changing allowed, hence a copy of size10.clo is included
+\renewcommand\normalsize{%
+ \@setfontsize\normalsize\@xpt\@xiipt
+ \abovedisplayskip 12\p@ \@plus2\p@ \@minus5\p@
+ \abovedisplayshortskip 3\p@ \@plus3\p@
+ \belowdisplayshortskip 10\p@ \@plus3\p@ \@minus3\p@
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}
+\normalsize
+\newcommand\small{%
+ \@setfontsize\small\@ixpt{10dd}%
+ \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
+ \abovedisplayshortskip \z@ \@plus2\p@
+ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \parsep 0\p@ \@plus1\p@ \@minus\p@
+ \topsep 8\p@ \@plus2\p@ \@minus4\p@
+ \itemsep0\p@}%
+ \belowdisplayskip \abovedisplayskip
+}
+\let\footnotesize\small
+\newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+\newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\newcommand\large{\@setfontsize\large\@xiipt{13dd}}
+\newcommand\Large{\@setfontsize\Large\@xivpt{15dd}}
+\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{17dd}}
+\newcommand\huge{\@setfontsize\huge\@xxpt{25}}
+\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
+%
+\setlength{\textwidth}{180mm}
+\setlength{\textheight}{244mm}
+%
+\def\stropt@maketitle{\par
+\ch@ckobl{journalname}{Noname}
+\ch@ckobl{date}{the date of receipt and acceptance should be inserted
+later}
+\ch@ckobl{title}{A title should be given}
+\ch@ckobl{author}{Name(s) and initial(s) of author(s) should be given}
+\ch@ckobl{institute}{Address(es) of author(s) should be given}
+\begingroup
+%
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \def\@makefnmark{$^{\@thefnmark}$}%
+ \renewcommand\@makefntext[1]{%
+ \noindent
+ \hb@xt@\bibindent{\hss\@makefnmark\enspace}##1\vrule height0pt
+ width0pt depth8pt}
+%
+ \def\lastand{\ifnum\value{inst}=2\relax
+ \unskip{} \andname\
+ \else
+ \unskip, \andname\
+ \fi}%
+ \def\and{\stepcounter{auth}\relax
+ \if@smartand
+ \ifnum\value{auth}=\value{inst}%
+ \lastand
+ \else
+ \unskip,
+ \fi
+ \else
+ \unskip,
+ \fi}%
+ \thispagestyle{empty}
+ \ifnum \col@number=\@ne
+ \@maketitle
+ \else
+ \twocolumn[\@maketitle]%
+ \fi
+ \global\@topnum\z@
+ \if!\@date!\else
+ \footnotetext[0]{\kern-\bibindent{\itshape
+ \ignorespaces\@date}}%
+ \fi
+ {\def\thanks##1{\unskip{}}\def\fnmsep{\unskip}%
+ \def\and{\unskip}%
+ \footnotetext[0]{\kern-\bibindent
+ \ignorespaces\@author}\vspace{5dd}%
+ \def\inst##1{\hb@xt@\bibindent{\hfil$^##1$\hskip\labelsep}\ignorespaces}%
+ \footnotetext[0]{\kern-\bibindent
+ \ignorespaces\@institute}\vspace{5dd}}%
+ \@thanks
+ \if!\@mail!\else
+ \footnotetext[0]{\kern-\bibindent\mailname\
+ \ignorespaces\@mail}%
+ \fi
+
+%
+ \if@runhead
+ \ProcessRunnHead
+ \fi
+%
+ \endgroup
+ \setcounter{footnote}{0}
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@maketitle\relax
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\@subtitle\@empty
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax}
+%
+\def\stropt@@maketitle{\newpage
+ \normalfont
+ \vbox to0pt{\vskip-40pt
+ \nointerlineskip
+ \makeheadbox\vss}\nointerlineskip
+ \setbox\authrun=\vbox\bgroup
+ {\LARGE \sffamily\bfseries
+ \hrule\@height 14mm\@width0\p@
+ \pretolerance=10000
+ \rightskip=0pt plus 4cm
+ \if!\@headnote!\else
+ \noindent
+ {\LARGE\normalfont\itshape\ignorespaces\@headnote\par}\vskip 3.5mm
+ \fi
+ \noindent\ignorespaces
+ \@title \par}\vskip 11.24pt\relax
+ \authorfont
+ \if!\@subtitle!\else
+ {\large\sffamily\bfseries
+ \pretolerance=10000
+ \rightskip=0pt plus 3cm
+ \noindent\ignorespaces\@subtitle \par}\vskip 11.24pt
+ \fi
+ \lineskip .5em
+ \def\inst##1{\unskip}%
+ \setbox0=\vbox{\setcounter{auth}{1}\def\and{\stepcounter{auth} }%
+ \hfuzz=2\textwidth\def\thanks##1{}\@author}%
+ \setcounter{footnote}{0}%
+ \value{inst}=\value{auth}%
+ \setcounter{auth}{1}%
+ \rightskip=0pt plus 2cm
+ \noindent\ignorespaces\@author\vskip7.23pt
+ \rightskip=0pt\relax
+ \if!\@dedic!\else
+ \par
+ \normalsize\it
+ \addvspace\baselineskip
+ \noindent\@dedic
+ \fi
+ \egroup % end of header box
+ \@tempdima=\headerboxheight
+ \advance\@tempdima by-\ht\authrun
+ \unvbox\authrun
+ \ifdim\@tempdima>0pt
+ \vrule width0pt height\@tempdima
+ \fi
+ \global\@minipagetrue
+ \global\everypar{\global\@minipagefalse\global\everypar{}}
+ \vskip22.47pt
+}
+%
+\AtEndOfClass{%
+\let\if@runhead\iffalse
+\let\@maketitle=\stropt@@maketitle
+\let\maketitle=\stropt@maketitle
+\def\@evenhead{\small\rlap{\thepage}\hfil\leftmark\hfil}%
+\def\@oddhead{\small\hfil\rightmark\hfil\llap{\thepage}}%
+\setlength\columnsep{8mm}
+\setlength\headerboxheight{145pt}
+%
+\figcapgap=11pt
+\tabcapgap=6pt
+%
+\renewcommand\footnoterule{%
+ \kern-3\p@
+ \hrule\@width\columnwidth
+ \kern2.6\p@}
+%
+\def\@hangfrom#1{\setbox0=\hbox{#1}\ifdim\wd0=\z@\else
+\noindent#1\par\penalty\@M\fi\noindent}
+\def\section{\@startsection{section}{1}{\z@}%
+ {-21dd plus-4pt minus-4pt}{14\p@ plus 2pt
+ minus2pt}{\normalsize\sffamily\bfseries}}
+\def\subsection{\@startsection{subsection}{2}{\z@}%
+ {-21dd plus-4pt minus-4pt}{14\p@ plus 2pt
+ minus2pt}{\normalsize\sffamily\bfseries}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-21dd plus-4pt minus-4pt}{14\p@ plus 2pt
+ minus2pt}{\normalsize\sffamily\bfseries}}
+\def\paragraph{\@startsection{subsubsection}{4}{\z@}%
+ {-21dd plus-4pt minus-4pt}{-1pt}{\normalsize\rmfamily\bfseries}}
+\def\authorfont{\bfseries}
+\renewcommand\abstractname{Abstract}
+%\def\endabstract{\endtrivlist}
+%
+\setlength\floatsep{18\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\dblfloatsep{18\p@ \@plus 2\p@ \@minus 2\p@}
+\setlength\@fpsep{18\p@ \@plus 2\p@ \@minus 2\p@}
+%
+\def\@listi{\leftmargin\leftmargini
+ \parsep \z@
+ \topsep 4mm \@plus2\p@ \@minus4\p@
+ \itemsep\parsep}
+\let\@listI\@listi\@listI
+% Bibliography
+% Loading package 'NATBIB'
+\usepackage[round]{natbib}
+% Changing some parameters of NATBIB
+\setlength{\bibhang}{0mm}
+\setlength{\bibsep}{\medskipamount}
+\let\bibfont=\small
+\def\@biblabel#1{}
+\newcommand{\etal}{\textit{et al}.}
+\bibpunct[,]{(}{)}{;}{a}{}{,}
+%
+% Loading package 'AMSMATH'
+\IfFileExists{amsmath.sty}
+ {\usepackage[fleqn]{amsmath}
+ \setlength{\@mathmargin}{0\p@}}
+ {\errmessage{amsmath.sty doesn't exist!}}
+%
+%
+\journalname{StrucOpt}}
+%%
+%% End of copy of file `svstropt.clo'.
+\endinput
diff --git a/macros/latex/contrib/springer/svjour/stropt/template.tex b/macros/latex/contrib/springer/svjour/stropt/template.tex
new file mode 100644
index 0000000000..e6e6f9da8c
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/template.tex
@@ -0,0 +1,144 @@
+%%%%%%%%%%%%%%%%%%%%%%% file template.tex %%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% This is a template file for Structural Optimization
+%
+% Copy it to a new file with a new name and use it as the basis
+% for your article
+%
+%%%%%%%%%%%%%%%%%%%%%%%% Springer-Verlag %%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\begin{filecontents}{leer.eps}
+%!PS-Adobe-2.0 EPSF-2.0
+%%CreationDate: Mon Jul 13 16:51:17 1992
+%%DocumentFonts: (atend)
+%%Pages: 0 1
+%%BoundingBox: 72 31 601 342
+%%EndComments
+
+gsave
+72 31 moveto
+72 342 lineto
+601 342 lineto
+601 31 lineto
+72 31 lineto
+showpage
+grestore
+%%Trailer
+%%DocumentFonts: Helvetica
+\end{filecontents}
+%
+\documentclass[stropt,referee]{svjour}
+% Remove option referee for final version
+%
+% Remove any % below to load the required packages
+%\usepackage{latexsym}
+%\usepackage{times}
+%\usepackage{mathtimes}
+\usepackage{graphics}
+% etc
+%
+\begin{document}
+%
+\title{Insert your title here}
+\subtitle{Do you have a subtitle?} % Insert a subtitle or remove this line
+\author{First author and Second author% etc
+% if you wish to indicate different affiliations
+% use First Author\inst{1} and Second Author\inst{2}
+%
+% The present address - made with \thanks - is optional,
+% remove next line if not needed
+\thanks{\emph{Present address:} Insert the address here if needed}%
+} % Do not remove
+%
+\offprints{} % Insert a name or remove this line
+%
+\institute{Insert the first address here and the second here}
+% if you wish to indicate different affiliations use
+% \inst{1} first address\\
+% \inst{2} second address
+%
+\date{Received: date / Revised version: date}
+% The correct dates will be entered by Springer
+%
+\maketitle
+%
+\begin{abstract}
+Insert your abstract here.%
+\keywords{Finite elements, Detonation, Safety}%
+\end{abstract}
+%
+\section{Introduction}
+\label{intro}
+Your text comes here. Separate text sections with
+\section{Section title}
+\label{sec:1}
+and \citet{RefJ}
+\subsection{Subsection title}
+\label{sec:2}
+as required. Don't forget to give each section
+and subsection a unique label (see Sect.~\ref{sec:1}).
+%
+% For one-column wide figures use
+\begin{figure}
+% Use the relevant command for your figure-insertion program
+% to insert the figure file.
+% For example, with the option graphics use
+\resizebox{0.75\columnwidth}{!}{%
+ \includegraphics{leer.eps}
+}
+% If not, use
+%\vspace{5cm} % Give the correct figure height in cm
+\caption{Please write your figure caption here}
+\label{fig:1} % Give a unique label
+\end{figure}
+%
+% For two-column wide figures use
+\begin{figure*}
+% Use the relevant command for your figure-insertion program
+% to insert the figure file. See example above.
+% If not, use
+\vspace*{5cm} % Give the correct figure height in cm
+\caption{Please write your figure caption here}
+\label{fig:2} % Give a unique label
+\end{figure*}
+%
+% For tables use
+\begin{table}
+\caption{Please write your table caption here}
+\label{tab:1} % Give a unique label
+% For LaTeX tables use
+\begin{tabular}{lll}
+\hline\noalign{\smallskip}
+first & second & third \\
+\noalign{\smallskip}\hline\noalign{\smallskip}
+number & number & number \\
+number & number & number \\
+\noalign{\smallskip}\hline
+\end{tabular}
+% Or use
+\vspace*{5cm} % with the correct table height
+\end{table}
+%
+% BibTeX users please use
+% \bibliographystyle{}
+% \bibliography{}
+%
+% Non-BibTeX users please use
+\begin{thebibliography}{}
+%
+% and use \bibitem to create references.
+%
+\bibitem[Author(year)]{RefJ}
+% Format for Journal Reference
+\textbf{Author}, Journal \textbf{Volume}, (year) page numbers.
+% Format for books
+\bibitem[Author(year)]{RefB}
+\textbf{Author}, \textit{Book title} (Publisher, place year) page numbers
+% etc
+\end{thebibliography}
+
+
+\end{document}
+
+% end of file template.tex
+
diff --git a/macros/latex/contrib/springer/svjour/stropt/usrguide.dvi b/macros/latex/contrib/springer/svjour/stropt/usrguide.dvi
new file mode 100644
index 0000000000..ae17a15a32
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/usrguide.dvi
Binary files differ
diff --git a/macros/latex/contrib/springer/svjour/stropt/usrguide.pdf b/macros/latex/contrib/springer/svjour/stropt/usrguide.pdf
new file mode 100644
index 0000000000..8bc08921cc
--- /dev/null
+++ b/macros/latex/contrib/springer/svjour/stropt/usrguide.pdf
Binary files differ