diff options
author | Karl Berry <karl@freefriends.org> | 2017-01-28 22:59:01 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2017-01-28 22:59:01 +0000 |
commit | 9c982d89c5b240ffd6176bf0b997a80462ad0b58 (patch) | |
tree | 7e7812eeaf1373656cc21c1ac9847c972283d1a9 /Master/texmf-dist/source/latex/breqn/breqn.dtx | |
parent | f00b1aae5e501fea4099673dfcdfc20c60ec983d (diff) |
breqn (28jan17)
git-svn-id: svn://tug.org/texlive/trunk@43071 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/breqn/breqn.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/breqn/breqn.dtx | 2198 |
1 files changed, 1100 insertions, 1098 deletions
diff --git a/Master/texmf-dist/source/latex/breqn/breqn.dtx b/Master/texmf-dist/source/latex/breqn/breqn.dtx index d9a5c3f220f..8f23f28cf76 100644 --- a/Master/texmf-dist/source/latex/breqn/breqn.dtx +++ b/Master/texmf-dist/source/latex/breqn/breqn.dtx @@ -4,6 +4,7 @@ % Copyright (C) 2007-2008 by Morten Hoegholm % Copyright (C) 2007-2014 by Lars Madsen % Copyright (C) 2007-2014 by Will Robertson +% Copyright (C) 2010-2017 by Joseph Wright % % This work may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either @@ -77,7 +78,8 @@ This is a generated file. Copyright (C) 1997-2003 by Michael J. Downes Copyright (C) 2007-2008 by Morten Hoegholm Copyright (C) 2007-2014 by Lars Madsen -Copyright (C) 2007-2014 by Will Robertson +Copyright (C) 2007-2017 by Will Robertson +Copyright (C) 2010-2017 by Joseph Wright This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either @@ -122,7 +124,7 @@ and the derived files %</ignore> %<*driver> \NeedsTeXFormat{LaTeX2e} -\ProvidesFile{breqn.drv}[2015/08/11 v0.98d breqn] +\ProvidesFile{breqn.drv}[2017/01/27 0.98e breqn] \documentclass{ltxdoc} \CodelineIndex \EnableCrossrefs @@ -147,7 +149,7 @@ and the derived files \makeatletter {\catcode`\%=12 - \long\gdef\@gobble@percent@space#1{\ifx + \long\gdef\@gobble@percent@space#1{\ifx #1%\expandafter\@gobble\else\expandafter#1\fi}} @@ -157,7 +159,7 @@ and the derived files \newcounter{xio} \newenvironment{xio}{% example input and output \par\addvspace\bigskipamount - \hbox{\itshape + \hbox{\itshape \refstepcounter{xio}\kern-\p@ Example \thexio}\@nobreaktrue \immediate\openout\tmp@out\jobname.tmp \relax \begingroup @@ -240,12 +242,12 @@ and the derived files % \maketitle % \begin{abstract} % The \pkg{breqn} package facilitates automatic line-breaking of -% displayed math expressions. +% displayed math expressions. % \end{abstract} % -% +% % \tableofcontents -% +% % % \part{User's guide} % @@ -275,8 +277,8 @@ and the derived files % The recommended way of loading the \pkg{breqn} package is to load it % \emph{after} other packages dealing with math, \ie, after % \pkg{amsmath}, \pkg{amssymb}, or packages such as \pkg{mathpazo} or -% \pkg{mathptmx}. -% +% \pkg{mathptmx}. +% % The \pkg{flexisym} package (described in section \vref{flexisym}) is % required by \pkg{breqn} and ensures the math symbols are set up % correctly. By default \pkg{breqn} loads it with support for Computer @@ -424,7 +426,7 @@ and the derived files % % Not that this doesn't introduce new and interesting problems of its % own---for example, you don't want to put usepackage statements -% after flexisym for any package that refers to, e.g., \verb'^^J' or +% after flexisym for any package that refers to, e.g., \verb'^^J' or % \verb'^^M' % internally (too bad that the \LaTeX\ package loading code does not % include automatic defenses to ensure normal catcodes in the interior of @@ -445,7 +447,7 @@ and the derived files % illustrations, and I have undoubtedly overlooked more than a few errors. % % \item[group alignment] The algorithm for doing alignment -% of mathrel symbols across equations in a \env{dgroup} environment +% of mathrel symbols across equations in a \env{dgroup} environment % needs work. Currently the standard and \opt{noalign} alternatives % produce the same output. % @@ -495,7 +497,7 @@ and the derived files % \begin{verbatim} % \generate{\file{breqn.sty}{\from{breqn.dtx}{package,trace}}} % \end{verbatim} -% +% % % \section{Environments and commands} % \subsection{Environments} @@ -564,7 +566,7 @@ and the derived files % % \item[\env{dsuspend}] Suspend the current display in order to print % some text, without loss of the alignment. There is also a command -% form of the same thing, \cs{intertext}. +% form of the same thing, \cs{intertext}. % \end{description} % % \subsection{Commands} @@ -658,8 +660,8 @@ and the derived files % \end{verbatim} % % Use of the normal \cs{label} command instead of the \opt{label} option -% works, I think, most of the time (untested). \opt{labelprefix} prepends -% its argument to the label (only useful as a global option, really), +% works, I think, most of the time (untested). \opt{labelprefix} prepends +% its argument to the label (only useful as a global option, really), % and must be called before \opt{label}. % % \changes{v0.98b}{2010/08/27}{replaced relindent with indentstep} @@ -901,39 +903,39 @@ and the derived files %when the height fluctuates due to stretching or shrinking of the page. % % -%Consider the following equation: +%Consider the following equation: %\begin{dmath}[number={3.15}] -% N_{0} \simeq \left( \frac{\nu}{\lVert u\rVert_{H^{i}}} \right) +% N_{0} \simeq \left( \frac{\nu}{\lVert u\rVert_{H^{i}}} \right) % \lvert I\rvert^{-1/2} %\end{dmath} -%It will have only one line, if the column width is not too narrow. +%It will have only one line, if the column width is not too narrow. % -%Scrutinizing the vertical list will shed light on some of the basic properties -%shared by all breqn equations. After that we will look at what would happen if -%two or more lines were needed. The numbers added on the left in the following -%\cs{showlists} output mark the points of interest. +%Scrutinizing the vertical list will shed light on some of the basic properties +%shared by all breqn equations. After that we will look at what would happen if +%two or more lines were needed. The numbers added on the left in the following +%\cs{showlists} output mark the points of interest. %\begin{verbatim} -%[1] \penalty 10000 -% \glue(\abovedisplayskip) 0.0 -% \penalty 10000 -% \glue(\belowdisplayskip) 0.0 -%[2] \glue 4.0 plus 4.0 -% \glue(\lineskip) 1.0 -%[3] \vbox(16.53902+0.0)x0.0, glue set 16.53902fil -% .\glue 0.0 plus 1.0fil minus 1.0fil -% \penalty 10000 -%[4] \glue -8.51945 -%[5] \hbox(7.5+2.5)x25.55563 -% .\OT1/cmr/m/n/10 ( -% .\OT1/cmr/m/n/10 3 -% .\OT1/cmr/m/n/10 . -% .\OT1/cmr/m/n/10 1 -% .\OT1/cmr/m/n/10 5 -% .\kern 0.0 -% .\OT1/cmr/m/n/10 ) -% \penalty 10000 -%[6] \glue(\parskip) -18.01956 -%[7] \hbox(16.53902+9.50012)x360.0, glue set 1.78647 +%[1] \penalty 10000 +% \glue(\abovedisplayskip) 0.0 +% \penalty 10000 +% \glue(\belowdisplayskip) 0.0 +%[2] \glue 4.0 plus 4.0 +% \glue(\lineskip) 1.0 +%[3] \vbox(16.53902+0.0)x0.0, glue set 16.53902fil +% .\glue 0.0 plus 1.0fil minus 1.0fil +% \penalty 10000 +%[4] \glue -8.51945 +%[5] \hbox(7.5+2.5)x25.55563 +% .\OT1/cmr/m/n/10 ( +% .\OT1/cmr/m/n/10 3 +% .\OT1/cmr/m/n/10 . +% .\OT1/cmr/m/n/10 1 +% .\OT1/cmr/m/n/10 5 +% .\kern 0.0 +% .\OT1/cmr/m/n/10 ) +% \penalty 10000 +%[6] \glue(\parskip) -18.01956 +%[7] \hbox(16.53902+9.50012)x360.0, glue set 1.78647 %\end{verbatim} %\begin{enumerate} %\item These four lines are a hidden display structure from \TeX's @@ -969,7 +971,7 @@ and the derived files % %\item The hbox containing the equation number. % -%\item Backspace to bring the equation body to the right starting point. We use +%\item Backspace to bring the equation body to the right starting point. We use % \cs{parskip} to put this glue in place because we're going to get a % parskip node here in any case when we add the equation body with (in % essence). If we didn't do this we'd get two glue nodes instead of @@ -986,34 +988,34 @@ and the derived files %standard \LaTeX\ would look like this, if the same values of %columnwidth and abovedisplayskip are used: %\begin{verbatim} -%[1] \penalty 10000 -%[2] \glue(\abovedisplayskip) 4.0 plus 4.0 -% \glue(\lineskip) 1.0 -% \hbox(16.53902+9.50012)x232.94844 -%[3] .\hbox(7.5+2.5)x25.55563 -% ..\hbox(7.5+2.5)x25.55563 -% ...\OT1/cmr/m/n/10 ( -% ...\OT1/cmr/m/n/10 3 -% ...\OT1/cmr/m/n/10 . -% ...\OT1/cmr/m/n/10 1 -% ...\OT1/cmr/m/n/10 5 -% ...\kern 0.0 -% ...\OT1/cmr/m/n/10 ) -% .\kern101.49591 -%[4] .\hbox(16.53902+9.50012)x105.8969 -% ... -%[5] \penalty 0 -%[6] \glue(\belowdisplayskip) 4.0 plus 4.0 -% \glue(\lineskip) 1.0 +%[1] \penalty 10000 +%[2] \glue(\abovedisplayskip) 4.0 plus 4.0 +% \glue(\lineskip) 1.0 +% \hbox(16.53902+9.50012)x232.94844 +%[3] .\hbox(7.5+2.5)x25.55563 +% ..\hbox(7.5+2.5)x25.55563 +% ...\OT1/cmr/m/n/10 ( +% ...\OT1/cmr/m/n/10 3 +% ...\OT1/cmr/m/n/10 . +% ...\OT1/cmr/m/n/10 1 +% ...\OT1/cmr/m/n/10 5 +% ...\kern 0.0 +% ...\OT1/cmr/m/n/10 ) +% .\kern101.49591 +%[4] .\hbox(16.53902+9.50012)x105.8969 +% ... +%[5] \penalty 0 +%[6] \glue(\belowdisplayskip) 4.0 plus 4.0 +% \glue(\lineskip) 1.0 % \hbox(6.94444+1.94444)x345.0, glue set 62.1106fil %\end{verbatim} % %\begin{enumerate} % \item \cs{predisplaypenalty} -% \item \cs{abovedisplayskip} +% \item \cs{abovedisplayskip} % \item equation number box -% \item equation body -% \item \cs{postdisplaypenaltly} +% \item equation body +% \item \cs{postdisplaypenaltly} % \item \cs{belowdisplayskip} %\end{enumerate} % @@ -1024,17 +1026,17 @@ and the derived files % \providecommand{\qq}[1]{\textquotedblleft#1\textquotedblright} % \providecommand{\mdash}{\textemdash} % \providecommand{\ndash}{\textendash} -% +% % \newcommand{\ititle}[1]{\textit{#1}} -% +% % \newcommand{\LR}[2][.4]{% % \framebox[#1\displaywidth]{$\displaystyle{}#2$}% % } -% +% % \newcommand{\LHS}[1]{\LR[\relifactor]{#1}} -% +% % \newdimen\relindent \newdimen\rhswd -% +% % \newcommand{\dwline}{% % \hbox to\curdw{\vrule height1ex % \leaders\hrule height.55ex depth-.45ex\hfil @@ -1042,7 +1044,7 @@ and the derived files % \leaders\hrule height.55ex depth-.45ex\hfil % \vrule height1ex}% % } -% +% % \newenvironment{layout}[1][.15]{% % \noindent % $$\edef\curdw{\the\displaywidth}% @@ -1064,26 +1066,26 @@ and the derived files % $$\relax % \ignorespacesafterend % } -% +% % \newcommand{\stagger}{\omit\span\gdef\layoutcr{\cr\omit\span}} -% +% % \newcount\row -% +% % \newcommand{\rhsskew}{} % \newcommand{\skewleft}[1]{\gdef\rhsskew{\kern-#1\relax}} -% -% +% +% % \subsection{Misc examples} -% +% % Let us consider which of these have 50\% or more of wasted whitespace % \emph{within the bounding box of the visible material}. % \begin{layout}[.4] % \LHS{L}&=\LR[.35]{R_{1}}\\ % &=\LR[.25]{R_{1}} % \end{layout} -% +% % \subsection{Ladder and step layouts} -% +% % \subsubsection{Straight ladder layout} % This is distinguished by a relatively short LHS and one or more RHS's of % any length. @@ -1111,7 +1113,7 @@ and the derived files % &\quad +\LR[.54]{R_{3c}}\\ % &\qquad\ldots % \end{layout} -% +% % \subsubsection{Skew ladder layout} % \begin{layout}[.5] % \skewleft{.35\displaywidth} @@ -1127,7 +1129,7 @@ and the derived files % \mbox{width}_{\mathrm{max}}(R_{i})>\mbox{width}_{\mathrm{avail}}$. In % that case we next try aligning all but the first relation symbol, % allowing all the $R_{i}$ after $R_1$ to shift leftward. -% +% % \subsubsection{Drop ladder layout} % \begin{layout}[.6] % \makebox[.15\displaywidth][l]{\LHS{L}}\\ @@ -1141,7 +1143,7 @@ and the derived files % we move $R_1$ down to a separate line and try again to align all the % relation symbols. Note that this layout consumes more vertical space % than the skew ladder layout. -% +% % \subsubsection{Step layout} % \begin{layout}[.6] % \stagger @@ -1162,7 +1164,7 @@ and the derived files % $w_T=\max(w_1+I,w_l+I)$. If there are more than two lines ($l>2$) then % use $w_T = \max(w_1 + (l-1)I, w_l+I, w_{\mathrm{avail}}$ and reset $I$ % to $w_T/(l-1)$ if $w_T = w_{\mathrm{avail}}$. -% +% % Furthermore, we would like the material to be distributed as evenly as % possible over all the lines rather than leave the last line exceedingly % short. If the total width is $1.1(\mbox{width}_{\mathrm{avail}})$, we @@ -1202,9 +1204,9 @@ and the derived files % \quad + \LR[.87]{L_{d}}\\ % \qquad\ldots % \end{layout} -% +% % \subsection{Strategy} -% +% % Here is the basic procedure for deciding which equation layout to use, % before complications like equation numbers and delimiter clearance come % into the picture. Let $A$ be the available width, $w_{\mathrm{total}}$ @@ -1214,40 +1216,40 @@ and the derived files % binary operators if a break occurs in the middle of an RHS. Also let % $t_L$ and $t_R$ represent certain thresholds for the width of the LHS or % the RHS at which a layout decision may change, as explained below. -% +% % \begin{small} % \begin{enumerate} % \renewcommand{\labelenumi}{(\theenumi)} % \item \ititle{Does everything fit on one line?}\label{i:LR} % $w_{\mathrm{total}}\leq A$? -% +% % Yes: print the equation on a single line (done). -% +% % No: Check whether the equation has both LHS and RHS (\ref{i:lhs-check}). -% +% % \item \ititle{Is there a left-hand side?}\label{i:lhs-check} % Are there any relation symbols in the equation? -% +% % Yes: Try a ladder layout (\ref{i:ladder}). -% +% % No: Try a step layout (\ref{i:step}). -% +% % \item\ititle{Does the LHS leave room to fit the widest RHS?}\label{i:ladder} % $w(L)+w_{\max}(R)<A$? -% +% % Yes: Use a straight ladder layout (\ref{i:straight-ladder}). -% +% % No: Check the width of the LHS (\ref{i:check-lhs}). -% +% % \item\ititle{Is the LHS relatively short?}\label{i:check-lhs} % $w(L)\leq t_L$? (where $t_L$ is typically $0.4A$). -% +% % Yes: Subdividing one or more of the RHS's may permit us to use a % straight ladder layout (\ref{i:straight-ladder}). -% +% % No: The straight ladder layout is unlikely to work. % Try a skew or drop ladder layout (\ref{i:skew-drop}). -% +% % \item\ititle{Straight ladder layout}\label{i:straight-ladder} % Set up a straight ladder parshape [0pt $A$ $w(L)$ $A-w(L)$] and run % a trial break. If the combined width of the LHS plus the longest RHS is @@ -1255,45 +1257,45 @@ and the derived files % line breaks occurring at major division points (relation symbols). % Otherwise, we hope, some additional line breaks at minor division points % will allow everything to fit within the text column. -% +% % \ititle{Line breaks OK?} -% +% % \begingroup \hbadness=9999 % Yes: The straight ladder layout succeeded % (done).\par\endgroup -% +% % No: Try a skew or drop ladder layout (\ref{i:skew-drop}). -% +% % \item\ititle{Do the LHS and the first RHS fit on one % line?}\label{i:skew-drop} $w(L)+w(R_1) \leq A$? -% +% % Yes: Try a skew ladder layout (\ref{i:skew}). -% +% % No: Try a drop ladder layout (\ref{i:drop}). -% +% % \item\ititle{Skew ladder layout}\label{i:skew} % Set up a parshape [0pt $A$ $I$ $A-I$] and run a trial break. -% +% % \ititle{Line breaks OK?} -% +% % Yes: Skew ladder layout succeeded (done). -% +% % No: One of the unbreakable fragments of the $R_i$ ($i>1$) is wider than % $A-I$; try an almost-columnar layout (\ref{i:almost-columnar}). -% +% % \item\ititle{Drop ladder layout}\label{i:drop} % Set up a parshape [0pt $w(L)$ $I$ $A-I$] and run a trial break. % This is the same parshape as for a skew ladder layout except that the % width of the first line is limited to the LHS width, so that the RHS is % forced to drop down to the next line. -% +% % \ititle{Line breaks OK?} -% +% % Yes: Drop ladder layout succeeded (done). -% +% % No: One of the unbreakable fragments of the $R_i$ ($i>1$) is wider than % $A-I$; try an almost-columnar layout (\ref{i:almost-columnar}). -% +% % \item\ititle{Almost-columnar layout}\label{i:almost-columnar} % This presupposes a trial break that yielded a series of expressions or % fragments, one per line. Let $w(F)$ denote the width of the first @@ -1306,32 +1308,32 @@ and the derived files % [0pt $w(F)$ 0pt $A$]\mdash for that is the net effect of substituting % $\min(A,w_{\max})$ in stead of $w_{\max}$. % (Done.) -% +% % \item\ititle{Step layout}\label{i:step} Set target width $w_T$ to $A - -% 2I$. Set parshape to [0pt $w_T$ $I$ $w_T -I$ $2I$ $w_T -2I$ \ldots\ +% 2I$. Set parshape to [0pt $w_T$ $I$ $w_T -I$ $2I$ $w_T -2I$ \ldots\ % $(l-1)I$ $w_T - (l-1)I$], where $l=\lceil w_{\mathrm{total}}/A\rceil$ % is the expected number of lines that will be required. Trial break % with that parshape in order to find out the width of the last line. -% +% % \ititle{Indents OK?} -% +% % Yes: Step layout succeeded (done). -% +% % No: One of the fragments is too wide to fit in % the allotted line width, after subtracting the indent specified by the % parshape. Try a dropped step layout (\ref{i:drop-step}) -% +% % \item\ititle{Dropped step layout}\label{i:drop-step} Set up a parshape % [0pt $A$ $I$ $A-I$] and run a trial break. Note that this is actually % the same parshape as for a skew ladder layout. -% +% % \ititle{Line breaks OK?} -% +% % Yes: Dropped step layout succeeded (done). -% +% % No: One of the unbreakable fragments of the $R_i$ ($i>1$) is wider than % $A-I$; as a last resort try an almost-columnar layout (\ref{i:almost-columnar}). -% +% % \end{enumerate} % \par\end{small} % @@ -1367,7 +1369,7 @@ and the derived files % \newgeometry{left=4cm} % \part{Implementation} % -% +% % The package version here is Michael's v0.90 updated by Bruce % Miller. Michael's changes between v0.90 and his last v0.94 will be % incorporated where applicable. @@ -1394,15 +1396,15 @@ and the derived files % \env{darray} environment similar to the \env{array} % environment but using \cs{displaystyle} for all the array cells and % providing better interline spacing (because the vertical ruling -% feature of \env{array} is dropped). +% feature of \env{array} is dropped). % These are all autonumbered environments like \env{equation} % and have starred forms that don't add a number. For a more % comprehensive and detailed description of the features and intended -% usage of the \pkg{breqn} package see \fn{breqndoc.tex}. -% -% -% -% +% usage of the \pkg{breqn} package see \fn{breqndoc.tex}. +% +% +% +% % \section{Strategy} % Features of particular note are the ability to have % linebreaks even within a \cs{left} \ndash \cs{right} pair of @@ -1412,20 +1414,20 @@ and the derived files % paragraph form with strategic line breaks whose purpose is not to % produce line breaks in the final printed output but rather to mark % significant points in the equation and give us entry points for -% unpacking \cn{left} \ndash \cn{right} boxes. +% unpacking \cn{left} \ndash \cn{right} boxes. % After the initial typesetting, we take the resulting stack of line % fragments and, working backward, splice them into a new, single-line % paragraph; this will eventually be poured into a custom parshape, after -% we do some measuring to calculate what that parshape should be. +% we do some measuring to calculate what that parshape should be. % This streamlined horizontal list may contain embedded material % from user commands intended to alter line breaks, horizontal alignment, -% and interline spacing; such material requires special handling. -% +% and interline spacing; such material requires special handling. +% % To make the `shortskip' possibility work even for % multiline equations, we must plug in a dummy \tex display to give us % the value of \cs{predisplaysize}, and calculate for ourselves when -% to apply the short skips. -% +% to apply the short skips. +% % In order to measure the equation body and do various % enervating calculations on whether the equation number will fit and so % on, we have to set it in a box. Among other things, this means @@ -1437,35 +1439,35 @@ and the derived files % fit in the available width. So even for simple one-line equations % we are forced to fake a whole display without going through \tex 's % primitive display mechanism (except for using it to get -% \cs{predisplaysize} as mentioned above). -% -% +% \cs{predisplaysize} as mentioned above). +% +% % In the case of a framed equation body, the current implementation is % to set the frame in a separate box, of width zero and height zero, % pinned to the upper left corner of the equation body, and then print the -% equation body on top of it. +% equation body on top of it. % For attaching an equation number it would be much simpler to wrap % the equation body in the frame and from then on treat the body as a -% single box instead of multiple line boxes. +% single box instead of multiple line boxes. % But I had a notion that it might be possible some day to support -% vertical stretching of the frame. -% -% -% -% +% vertical stretching of the frame. +% +% +% +% % \section{Prelim} % % This package doesn't work with \latex 2.09, nor with other -% versions of \latex earlier than 1994/12/01. +% versions of \latex earlier than 1994/12/01. % \begin{macrocode} %<*package> \NeedsTeXFormat{LaTeX2e} % \end{macrocode} -% -% Declare package name and date. +% +% Declare package name and date. % \begin{macrocode} \RequirePackage{expl3}[2009/08/05] -\ProvidesExplPackage{breqn}{2015/08/11}{0.98d}{Breaking equations} +\ProvidesExplPackage{breqn}{2017/01/27}{0.98e}{Breaking equations} % \end{macrocode} % Regrettably, \pkg{breqn} is internally a mess, so we have to take % some odd steps. @@ -1475,11 +1477,11 @@ and the derived files % % % \section{Package options} -% +% % Most options are set with the \cs{options} command (which % calls \cs{setkeys}) because the standard package option -% mechanism doesn't provide support for key-value syntax. -% +% mechanism doesn't provide support for key-value syntax. +% % First we need to get the catcodes sorted out. % \begin{macrocode} \edef\breqnpopcats{% @@ -1491,24 +1493,24 @@ and the derived files \PassOptionsToPackage{mathstyleoff}{flexisym}% } % \end{macrocode} -% Process options. +% Process options. % \begin{macrocode} \ProcessOptions\relax % \end{macrocode} -% -% -% -% +% +% +% +% % \section{Required packages} % The \pkg{flexisym} package makes it possible to attach % extra actions to math symbols, in particular mathbin, mathrel, mathopen, -% and mathclose symbols. +% and mathclose symbols. % Normally it would suffice to call \cs{RequirePackage} without % any extra testing, but the nature of the package is such that it is -% likely to be called earlier with different (no) options. +% likely to be called earlier with different (no) options. % Then is it really helpful to be always warning the user about -% \quoted{Incompatible Package Options!}? -% I don't think so. +% \quoted{Incompatible Package Options!}? +% I don't think so. % \begin{macrocode} \@ifpackageloaded{flexisym}{}{% \RequirePackage{flexisym}[2009/08/07] @@ -1524,18 +1526,18 @@ and the derived files % \begin{macrocode} \RequirePackage{keyval,calc}\relax % \end{macrocode} -% -% +% +% % And add an \cs{options} cmd for processing package % options that require an argument. Maybe this will get added to -% the \pkg{keyval} package eventually. +% the \pkg{keyval} package eventually. % \begin{macrocode} \@ifundefined{options}{% % \end{macrocode} -% -% +% +% % \begin{macro}{\options} -% Get the package options and run setkeys on them. +% Get the package options and run setkeys on them. % \begin{macrocode} \newcommand{\options}[2]{% \expandafter\options@a\csname opt@#1.sty\endcsname{#2}% @@ -1543,14 +1545,14 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\options@a} % \begin{macro}{\options@b} % \begin{macro}{\options@c} % \begin{macro}{\options@d} % Redefine \cs{opt@pkgname.sty} as we go along to take out -% the options that are handled and leave the ones that are not. +% the options that are handled and leave the ones that are not. % \begin{macrocode} \def\options@a#1#2{% \edef\@tempa{\options@b#2,\@empty\@nil}% @@ -1559,19 +1561,19 @@ and the derived files } % \end{macrocode} % Add the next option, and recurse if there remain more -% options. +% options. % \begin{macrocode} \def\options@b#1,#2#3\@nil{% \options@c#1 \@nil \ifx#2\@empty \else\options@b#2#3\@nil\fi } % \end{macrocode} -% Discard everything after the first space. +% Discard everything after the first space. % \begin{macrocode} \def\options@c#1 #2\@nil{\options@d#1=\@nil} % \end{macrocode} % Discard everything after the first = sign; add a comma only if the -% remainder is not empty. +% remainder is not empty. % \begin{macrocode} \def\options@d#1=#2\@nil{\ifx\@empty #1\@empty\else,\fi#1} % \end{macrocode} @@ -1579,71 +1581,71 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% -% -% The tail of the \cs{@ifundefined} test. +% +% +% +% The tail of the \cs{@ifundefined} test. % \begin{macrocode} }{}% end @ifundefined test % \end{macrocode} -% -% -% -% +% +% +% +% % \section{Some useful tools} -% +% % \begin{macro}{\@nx} % \begin{macro}{\@xp} % The comparative brevity of \cs{@nx} and \cs{@xp} is % valuable not so much for typing convenience as for reducing visual -% clutter in code sections that require a lot of expansion control. +% clutter in code sections that require a lot of expansion control. % \begin{macrocode} \let\@nx\noexpand \let\@xp\expandafter % \end{macrocode} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\@emptytoks} -% Constant empty token register, analogous to \cs{@empty}. +% Constant empty token register, analogous to \cs{@empty}. % \begin{macrocode} \@ifundefined{@emptytoks}{\newtoks\@emptytoks}{} % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\f@ur} -% Constants 0\ndash 3 are provided in plain \tex , but not 4. +% Constants 0\ndash 3 are provided in plain \tex , but not 4. % \begin{macrocode} \chardef\f@ur=4 % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\inf@bad} -% \cs{inf@bad} is for testing box badness. +% \cs{inf@bad} is for testing box badness. % \begin{macrocode} \newcount\inf@bad \inf@bad=1000000 % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\maxint} -% +% % We want to use \cs{maxint} rather than coerced -% \cs{maxdimen} for \cs{linepenalty} in one place. +% \cs{maxdimen} for \cs{linepenalty} in one place. % \begin{macrocode} \newcount\maxint \maxint=2147483647 % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\int@a} % \begin{macro}{\int@b} % \begin{macro}{\int@b} -% -% Provide some shorter aliases for various scratch registers. +% +% Provide some shorter aliases for various scratch registers. % \begin{macrocode} \let\int@a=\@tempcnta \let\int@b=\@tempcntb @@ -1652,16 +1654,16 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\dim@a} % \begin{macro}{\dim@b} % \begin{macro}{\dim@c} % \begin{macro}{\dim@d} % \begin{macro}{\dim@e} % \begin{macro}{\dim@A} -% -% Same for dimen registers. +% +% Same for dimen registers. % \begin{macrocode} \let\dim@a\@tempdima \let\dim@b\@tempdimb @@ -1676,13 +1678,13 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\skip@a} % \begin{macro}{\skip@b} % \begin{macro}{\skip@c} -% -% Same for skip registers. +% +% Same for skip registers. % \begin{macrocode} \let\skip@a\@tempskipa \let\skip@b\@tempskipb @@ -1691,16 +1693,16 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\toks@a} % \begin{macro}{\toks@b} % \begin{macro}{\toks@c} % \begin{macro}{\toks@d} % \begin{macro}{\toks@e} % \begin{macro}{\toks@f} -% -% Same for token registers. +% +% Same for token registers. % \begin{macrocode} \let\toks@a\@temptokena \let\toks@b\toks@ @@ -1715,21 +1717,21 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\abs@num} % We need an absolute value function for comparing -% penalties. +% penalties. % \begin{macrocode} \def\abs@num#1{\ifnum#1<\z@-\fi#1} % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\@ifnext} % \begin{macro}{\@ifnexta} % The \cs{@ifnext} function is a variation of -% \cs{@ifnextchar} that doesn't skip over intervening whitespace. +% \cs{@ifnextchar} that doesn't skip over intervening whitespace. % We use it for the optional arg of \dbslash inside % \env{dmath} \etc because we don't want % unwary users to be tripped up by an unexpected attempt on \latex 's part @@ -1740,21 +1742,21 @@ and the derived files % [z,w]... % \end{equation} % \end{literalcode} -% . +% . % \begin{macrocode} \def\@ifnext#1#2#3{% \let\@tempd= #1\def\@tempa{#2}\def\@tempb{#3}% \futurelet\@tempc\@ifnexta } % \end{macrocode} -% Switch to \cs{@tempa} iff the next token matches. +% Switch to \cs{@tempa} iff the next token matches. % \begin{macrocode} \def\@ifnexta{\ifx\@tempc\@tempd \let\@tempb\@tempa \fi \@tempb} % \end{macrocode} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\@ifstar} % Similarly let's remove space-skipping from \cs{@ifstar} % because in some rare case of \dbslash inside an equation, followed by @@ -1766,7 +1768,7 @@ and the derived files % any case because of \tex 's tokenization rules; or it is a control % symbol such as \dbslash \verb"*" which is exceedingly unlikely to be % written as \dbslash \verb"*" by any one who really wants the -% \verb"*" to act as a modifier for the \dbslash command. +% \verb"*" to act as a modifier for the \dbslash command. % \begin{macrocode} \def\@ifstar#1#2{% \let\@tempd*\def\@tempa*{#1}\def\@tempb{#2}% @@ -1774,17 +1776,17 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\@optarg} % Utility function for reading an optional arg -% \emph{without} skipping over any intervening spaces. +% \emph{without} skipping over any intervening spaces. % \begin{macrocode} \def\@optarg#1#2{\@ifnext[{#1}{#1[#2]}} % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\@True} % \begin{macro}{\@False} % \begin{macro}{\@Not} @@ -1794,7 +1796,7 @@ and the derived files % \if\foo % \end{literalcode} % evaluates to true. Would rather avoid \cs{newif} because it -% uses three csnames per Boolean variable; this uses only one. +% uses three csnames per Boolean variable; this uses only one. % \begin{macrocode} \def\@True{00} \def\@False{01} @@ -1806,15 +1808,15 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% -% +% +% +% % \begin{macrocode} \def\theb@@le#1{\if#1 True\else False\fi} % \end{macrocode} % \begin{macro}{\freeze@glue} -% -% Remove the stretch and shrink from a glue register. +% +% Remove the stretch and shrink from a glue register. % \begin{macrocode} \def\freeze@glue#1{#11#1\relax} % \end{macrocode} @@ -1823,7 +1825,7 @@ and the derived files % \begin{macro}{\keep@glue} % Note well % the intentional absence of \cs{relax} at the end of the replacement -% text of \cs{z@rule}; use it with care. +% text of \cs{z@rule}; use it with care. % \begin{macrocode} \def\z@rule{\vrule\@width\z@}% no \relax ! use with care % \end{macrocode} @@ -1839,29 +1841,29 @@ and the derived files % unary minus sign. (the vrule \emph{is} transparent to % the math spacing). The vadjust is the cheapest in terms of box % memory\mdash it vanishes after the pass through \tex 's -% paragrapher. +% paragrapher. % It is what I would have used, except that the equation contents get % run through two paragraphing passes, once for breaking up LR boxes and -% once for the real typesetting. +% once for the real typesetting. % If \cs{keep@glue} were done with an empty vadjust, it would % disappear after the first pass and\mdash in particular\mdash the -% pre-bin-op adjustment for relation symbols would disappear at a line break. +% pre-bin-op adjustment for relation symbols would disappear at a line break. % \begin{macrocode} \def\keep@glue{\z@rule\relax} % \end{macrocode} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\replicate} -% +% % This is a fully expandable way of making N copies of a token -% list. +% list. % Based on a post of David Kastrup to comp.text.tex circa January -% 1999. +% 1999. % The extra application of \cs{number} is needed for maximal % robustness in case the repeat count N is given in some weird \tex form -% such as \verb|"E9| or \verb|\count9|. +% such as \verb|"E9| or \verb|\count9|. % \begin{macrocode} % usage: \message{H\replicate{5}{i h}ow de doo dee!} \begingroup \catcode`\&=11 @@ -1871,15 +1873,15 @@ and the derived files \endgroup % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\replicate@a} % \begin{macrocode} \long\def\replicate@a#1#2\endcsname#3{#1\endcsname{#3}#2} % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\8m}% fix % \begin{macrocode} \begingroup \catcode`\&=11 @@ -1887,18 +1889,18 @@ and the derived files \endgroup % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\8q}% fix % \begin{macrocode} \@xp\let\csname\string &q\endcsname\@gobble % \end{macrocode} % \end{macro} -% +% % \begin{macro}{\mathchars@reset} -% +% % Need to patch up this function from flexisym a little, to better -% handle certain constructed symbols like \cs{neq}. +% handle certain constructed symbols like \cs{neq}. % \begin{macrocode} \ExplSyntaxOn \g@addto@macro\mathchars@reset{% @@ -1914,12 +1916,12 @@ and the derived files \ExplSyntaxOff % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@cons} -% +% % \latex 's \cs{@cons} appends to the end of a list, but we need -% a function that adds material at the beginning. +% a function that adds material at the beginning. % \begin{macrocode} \def\eq@cons#1#2{% \begingroup \let\@elt\relax \xdef#1{\@elt{#2}#1}\endgroup @@ -1930,14 +1932,14 @@ and the derived files % \begin{macro}{\@saveprimitive} % If some preceding package redefined one of the % primitives that we must change, we had better do some checking to make -% sure that we are able to save the primitive meaning for internal use. +% sure that we are able to save the primitive meaning for internal use. % This is handled by the \cs{@saveprimitive} function. We % follow the example of \cs{@@input} where the primitive meaning is -% stored in an internal control sequence with a \verb"@@" prefix. +% stored in an internal control sequence with a \verb"@@" prefix. % Primitive control sequences can be distinguished by the fact that -% \cs{string} and \cs{meaning} return the same information. +% \cs{string} and \cs{meaning} return the same information. % Well, not quite all: \cs{nullfont} and \cs{topmark} -% and the other \cs{...mark} primitives being the exceptions. +% and the other \cs{...mark} primitives being the exceptions. % \begin{macrocode} \providecommand{\@saveprimitive}[2]{% \begingroup @@ -1947,7 +1949,7 @@ and the derived files % \end{macrocode}% % If [arg1] is no longer primitive, then we are in trouble unless % [arg2] was already given the desired primitive meaning somewhere -% else. +% else. % \begin{macrocode} \edef\@tempb{\meaning#2}% \ifx\@tempa\@tempb @@ -1957,9 +1959,9 @@ and the derived files \endgroup } % \end{macrocode} -% Aux function, check for the special cases. +% Aux function, check for the special cases. % Most of the time this branch will be skipped so we can -% stuff a lot of work into it without worrying about speed costs. +% stuff a lot of work into it without worrying about speed costs. % \begin{macrocode} \providecommand\@saveprimitive@a[2]{% \begingroup @@ -1985,8 +1987,8 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\@@math} % \begin{macro}{\@@endmath} % \begin{macro}{\@@display} @@ -1995,10 +1997,10 @@ and the derived files % sequences. If I were redesigning \tex I guess I'd put these % functions into primitive control words instead of linking them to a % catcode. That way \tex would not have to do the special -% lookahead at a \verb"$" to see if there's another one coming up. +% lookahead at a \verb"$" to see if there's another one coming up. % Of course that's related to the question of how to provide user % shorthand for common constructions: \tex , or an editing interface of -% some sort. +% some sort. % \begin{macrocode} \begingroup \catcode`\$=\thr@@ % just to make sure \global\let\@@math=$ \gdef\@@display{$$}% $$$ @@ -2010,8 +2012,8 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\@@insert} % \begin{macro}{\@@mark} % \begin{macro}{\@@vadjust} @@ -2021,7 +2023,7 @@ and the derived files % decomposition procedures. We follow the example of % \cs{@@input}, \cs{@@end}, \cs{@@par} where the primitive % meaning is stored in an internal control sequence with a \verb"@@" -% prefix. +% prefix. % \begin{macrocode} \@saveprimitive\vadjust\@@vadjust \@saveprimitive\insert\@@insert @@ -2030,35 +2032,35 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% -% -% +% +% +% +% % \section{Debugging} -% Debugging help. +% Debugging help. % \begin{macrocode} %<*trace> \errorcontextlines=2000\relax % \end{macrocode} -% +% % \begin{macro}{\breqn@debugmsg} -% Print a debugging message. +% Print a debugging message. % \begin{macrocode} \long\def\breqn@debugmsg#1{\GenericInfo{||}{||=\space#1}} % \end{macrocode} % \end{macro} -% +% % \begin{macro}{\debugwr} % Sometimes the newline behavior of \cs{message} is -% unsatisfactory; this provides an alternative. +% unsatisfactory; this provides an alternative. % \begin{macrocode} \def\debugwr#1{\immediate\write\sixt@@n{||= #1}} % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\debug@box} -% Record the contents of a box in the log file, without stopping. +% Record the contents of a box in the log file, without stopping. % \begin{macrocode} \def\debug@box#1{% \batchmode{\showboxbreadth\maxdimen\showboxdepth99\showbox#1}% @@ -2066,11 +2068,11 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eqinfo} % Show lots of info about the material before launching into the -% trials. +% trials. % \begin{macrocode} \def\eqinfo{% \debug@box\EQ@copy @@ -2080,10 +2082,10 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\debug@para} -% Check params that affect line breaking. +% Check params that affect line breaking. % \begin{macrocode} \def\debug@para{% \debugwr{\hsize\the\hsize, \parfillskip\the\parfillskip}% @@ -2094,33 +2096,33 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macrocode} %</trace> % \end{macrocode} -% -% -% -% +% +% +% +% % \section{The \cs{listwidth} variable} % The dimen variable \cs{listwidth} is \cs{linewidth} % plus \cs{leftmargin} plus \cs{rightmargin}, which is typically -% less than \cs{hsize} if the list depth is greater than one. +% less than \cs{hsize} if the list depth is greater than one. % In case a future package will provide this variable, define it only -% if not yet defined. +% if not yet defined. % \begin{macrocode} \@ifundefined{listwidth}{\newdimen\listwidth}{} \listwidth=\z@ % \end{macrocode} -% -% -% -% +% +% +% +% % \section{Parameters} -% +% % Here follows a list of parameters needed. -% +% % \begin{macro}{\eqfontsize} % \begin{macro}{\eqcolor} % \begin{macro}{\eqmargin} @@ -2140,12 +2142,12 @@ and the derived files % \begin{macro}{\eqinterlinepenalty} % \begin{macro}{\intereqpenalty} % \begin{macro}{\intereqskip} -% +% % Note: avoid M, m, P, p because they look like they might be the % start of a keyword \quoted{minus} or \quoted{plus}. Then % \tex looks further to see if the next letter is i or l. And if % the next thing is an undefined macro, the attempt to expand the macro -% results in an error message. +% results in an error message. % \begin{macrocode} \def\eqfontsize{} % Inherit from context [NOT USED?] \def\eqcolor{black} % Default to black [NOT USED?] @@ -2154,7 +2156,7 @@ and the derived files % \end{macrocode} % The \cs{eqindent} and \cs{eqnumside} variables need to % have their values initialized from context, actually. But -% that takes a bit of work, which is postponed till later. +% that takes a bit of work, which is postponed till later. % \begin{macrocode} \def\eqindent{C}% % C or I, centered or indented \def\eqnumside{R}% % R or L, right or left @@ -2164,7 +2166,7 @@ and the derived files % \begin{literalcode} % {\eqnumcolor \eqnumsize \eqnumfont{\eqnumform{\eq@number}}} % \end{literalcode} -% . +% . % \begin{macrocode} %d\eqnumfont{\upshape}% % Upright even when surrounding text is slanted \def\eqnumfont{}% % Null for easier debugging [mjd,1997/09/26] @@ -2177,9 +2179,9 @@ and the derived files % number. Or should the default be empty? Then in large % sections of smaller text, like the dangerous bend stuff in % \emph{\TeX book}, the equation number size will keep in synch -% with the context. +% with the context. % Maybe need an \cs{eqbodysize} param as well to allow separating -% the two cases. +% the two cases. % \begin{macrocode} \def\eqnumcolor{} % ... or color than eq body e.g. \color{blue} \newlength\eqlinespacing \eqlinespacing=14pt plus2pt % Base-to-base space between lines @@ -2189,7 +2191,7 @@ and the derived files % The value of \cs{eqbinoffset} should include a negative shrink % component that cancels the shrink component of medmuskip, otherwise % there can be a noticeable variation in the indent of adjacent lines if -% one is shrunken a lot and the other isn't. +% one is shrunken a lot and the other isn't. % \begin{macrocode} \newmuskip \eqbinoffset \eqbinoffset=15mu minus-3mu % Offset from mathrel alignment pt for mathbins \newmuskip\eqdelimoffset \eqdelimoffset=2mu % Additional offset for break inside delims @@ -2209,7 +2211,7 @@ and the derived files % unfrozen ones. Nonetheless I think this way is the best % compromise short of a new \tex that can make those built-up objects % shrink horizontally in proportion; the alternative is to pretty much -% eliminate the shrink possibility completely in displays. +% eliminate the shrink possibility completely in displays. % \begin{macrocode} \newmuskip \Dmedmuskip \Dmedmuskip=4mu minus 3mu % medmuskip in displays \newmuskip \Dthickmuskip \Dthickmuskip=5mu minus 2mu % thickmuskip in displays @@ -2233,9 +2235,9 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% +% % And now some internal variables. 1997/10/22: some of -% these are dead branches that need to be pruned. +% these are dead branches that need to be pruned. % % MH: Started cleaning up a bit. No more funny loops. % \begin{macrocode} @@ -2266,7 +2268,7 @@ and the derived files % dimen registers are needed in the measuring phase, which is a tightly % contained step that happens after the contents of the equation have been % typeset into a box and before any external functions have a chance to -% regain control\mdash \eg , the output routine. +% regain control\mdash \eg , the output routine. % Therefore it is possible to make use of the the dimen registers 0--9, % reserved by convention for scratch use, without fear of conflict with % other macros. But I don't want to use them directly with the @@ -2275,13 +2277,13 @@ and the derived files % \dimen@ \dimen@i \dimen@ii \dimen3 \dimen4 ... \dimen9 % \end{literalcode} % . It would be much more useful to have names for these registers -% indicative of way they are used. -% +% indicative of way they are used. +% % Another source whence dimen registers could be borrowed is the % \pkg{amsmath} package, which allocates six registers for % equation-measuring purposes. We can reuse them under different % names since the \pkg{amsmath} functions and our functions will -% never be used simultaneously. +% never be used simultaneously. % \begin{literalcode} % \eqnshift@ \alignsep@ \tagshift@ \tagwidth@ \totwidth@ \lineht@ % \end{literalcode} @@ -2291,9 +2293,9 @@ and the derived files \newdimen\eq@wdT % Total width for framing \newdimen\eq@wdMin % Width of narrowest line in equation \newdimen\grp@wdL % Max width of LHS's in a group -\newdimen\grp@wdR % Max RHS of all equations in a group +\newdimen\grp@wdR % Max RHS of all equations in a group \newdimen\grp@wdT -\newdimen\eq@wdRmax +\newdimen\eq@wdRmax \newdimen\eq@firstht % Height of first line % \end{macrocode} % BRM: measure the condition too. @@ -2304,30 +2306,30 @@ and the derived files \newdimen\grp@linewidth % Max eq@linewidth over a group % \end{macrocode} % Maybe \cs{eq@hshift} could share the same register as -% \cs{mathindent} [mjd,1997/10/22]. +% \cs{mathindent} [mjd,1997/10/22]. % \begin{macrocode} \newdimen\eq@hshift \let\eq@isIntertext\@False % \end{macrocode} % Init \cs{eq@indentstep} to a nonzero value so that we can -% detect and refrain from clobbering a user setting of zero. +% detect and refrain from clobbering a user setting of zero. % And \cs{eq@sidespace} to \cs{maxdimen} because -% that is the right init before computing a min. +% that is the right init before computing a min. % \begin{macrocode} \eq@indentstep=\maxdimen \newdimen\eq@given@sidespace % \end{macrocode} -% +% % \begin{macro}{\eq@overrun} % MH: Appears to be unused. % -% Not a dimen register; don't need to advance it. +% Not a dimen register; don't need to advance it. % \begin{macrocode} \def\eq@overrun{0pt} % \end{macrocode} % \end{macro} -% -% +% +% % To initialize \cs{eqnumside} and \cs{eqindent} properly, % we may need to grub around a bit in \cs{@filelist}. However, % if the \pkg{amsmath} package was used, we can use its option @@ -2335,7 +2337,7 @@ and the derived files % \opt{leqno} to \pkg{amsmath} by default, and it gets % overridden by the user with a \opt{reqno} documentclass option, % then \pkg{amsmath} believes itself to have received -% \emph{both} options. +% \emph{both} options. % \begin{macrocode} \@ifpackagewith{amsmath}{leqno}{% \@ifpackagewith{amsmath}{reqno}{}{\def\eqnumside{L}}% @@ -2343,7 +2345,7 @@ and the derived files % \end{macrocode} % If the \pkg{amsmath} package was not used, the next % method for testing the \opt{leqno} option is to see if -% \fn{leqno.clo} is present in \cs{@filelist}. +% \fn{leqno.clo} is present in \cs{@filelist}. % \begin{macrocode} \def\@tempa#1,leqno.clo,#2#3\@nil{% \ifx @#2\relax\else \def\eqnumside{L}\fi @@ -2352,9 +2354,9 @@ and the derived files % \end{macrocode} % Even that test may fail in the case of \cls{amsart} if it does % not load \pkg{amsmath}. Then we have to look whether -% \cs{iftagsleft@} is defined, and if so whether it is true. +% \cs{iftagsleft@} is defined, and if so whether it is true. % This is tricky if you want to be careful about conditional nesting -% and don't want to put anything in the hash table unnecessarily. +% and don't want to put anything in the hash table unnecessarily. % \begin{macrocode} \if L\eqnumside \else @@ -2369,7 +2371,7 @@ and the derived files % \end{macrocode} % A similar sequence of tests handles the \quoted{fleqn or not fleqn} % question for the \cls{article} and \cls{amsart} -% documentclasses. +% documentclasses. % \begin{macrocode} \@ifpackagewith{amsmath}{fleqn}{% \def\eqindent{I}% @@ -2401,43 +2403,43 @@ and the derived files } %\fi % \end{macrocode} -% -% -% -% +% +% +% +% % \section{Measuring equation components} % Measure the left-hand side of an equation. This % function is called by mathrel symbols. For the first mathrel we % want to discourage a line break more than for following mathrels; so % \cs{mark@lhs} gobbles the following \cs{rel@break} and -% substitutes a higher penalty. +% substitutes a higher penalty. % \begin{aside} -% Maybe the LHS should be kept in a separate box. +% Maybe the LHS should be kept in a separate box. % \end{aside} -% -% -% +% +% +% % \begin{macro}{\EQ@hasLHS} -% -% Boolean: does this equation have a \dquoted{left-hand side}? +% +% Boolean: does this equation have a \dquoted{left-hand side}? % \begin{macrocode} \let\EQ@hasLHS=\@False % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\EQ@QED} -% +% % If nonempty: the qed material that should be incorporated into this -% equation after the final punctuation. +% equation after the final punctuation. % \begin{macrocode} \let\EQ@QED=\@empty % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\mark@lhs} -% +% % \begin{macrocode} \def\mark@lhs#1{% \ifnum\lr@level<\@ne @@ -2448,15 +2450,15 @@ and the derived files % \end{macrocode} % But the penalty for the first mathrel should still be lower than a % binoppenalty. If not, when the LHS contains a binop, the split -% will occur inside the LHS rather than at the mathrel. +% will occur inside the LHS rather than at the mathrel. % On the other hand if we end up with a multline sort of equation % layout where the RHS is very short, the break before the relation symbol % should be made \emph{less} desirable than the breakpoints inside -% the LHS. +% the LHS. % Since a lower penalty takes precedence over a higher one, we start % by putting in the highest relpenalty; during subsequent measuring if we % find that that RHS is not excessively short then we put in an extra -% \dquoted{normal} relpenalty when rejoining the LHS and RHS. +% \dquoted{normal} relpenalty when rejoining the LHS and RHS. % \begin{macrocode} \penalty9999 % instead of normal \rel@break % else no penalty = forbid break @@ -2464,10 +2466,10 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\mark@lhs@a} -% +% % Temporarily add an extra thickmuskip to the LHS; it will be removed % later. This is necessary to compensate for the disappearance of % the thickmuskip glue preceding a mathrel if a line break is taken at @@ -2477,7 +2479,7 @@ and the derived files % \cs{eq@repack} to suggest that the box containing this line should % be measured to find the value of \cs{eq@wdL}. The % second vadjust ensures that the normal prerelpenalty and thickmuskip -% will not get lost at the line break during this preliminary pass. +% will not get lost at the line break during this preliminary pass. % % BRM: I originally thought the \verb"\mskip\thickmuskip" was messing % up summation limits in LHS. But I may have fixed that problem by @@ -2488,29 +2490,29 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\hiderel} % If you want the LHS to extend past the first mathrel symbol to a % following one, mark the first one with \cs{hiderel}: % \begin{literalcode} % a \hiderel{=} b = c... % \end{literalcode} -% . +% . % \begin{aside} % I'm not sure now why I didn't use \cs{begingroup} % \cs{endgroup} here \begin{dn} % mjd,1999/01/21 % \end{dn} -% . +% . % \end{aside} -% +% % \begin{macrocode} \newcommand\hiderel[1]{\mathrel{\advance\lr@level\@ne#1}} % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\m@@Bin} % \begin{macro}{\m@@Rel} % \begin{macro}{\bin@break} @@ -2519,10 +2521,10 @@ and the derived files % \begin{macro}{\rel@mark} % \begin{macro}{\d@@Bin} % \begin{macro}{\d@@Rel} -% +% % \cf \pkg{flexisym} handling of mathbins and mathrels. These % are alternate definitions of \cs{m@Bin} and \cs{m@Rel}, -% activated by \cs{display@setup}. +% activated by \cs{display@setup}. % \begin{macrocode} %%%%\let\m@@Bin\m@Bin %%%%%\let\m@@Rel\m@Rel @@ -2545,8 +2547,8 @@ and the derived files % The difficulty of dealing properly with the subscripts and % superscripts sometimes appended to mathbins and mathrels is one of the % reasons that we do not attempt to handle the mathrels as a separate -% \quoted{column} a la \env{eqnarray}. -% +% \quoted{column} a la \env{eqnarray}. +% % \end{macro} % \end{macro} % \end{macro} @@ -2555,8 +2557,8 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\m@@symRel} % \begin{macro}{\d@@symRel} % \begin{macro}{\m@@symBin} @@ -2569,11 +2571,11 @@ and the derived files % \begin{macro}{\d@@symDeB} % \begin{macro}{\m@@symDeA} % \begin{macro}{\d@@symDeA} -% -% More of the same. +% +% More of the same. % \begin{macrocode} \ExplSyntaxOn -%%\let\m@@symRel\@symRel +%%\let\m@@symRel\@symRel %%%\def\d@@symRel{\mark@lhs \rel@break \m@@symRel} \cs_set_protected:Npn \math_dcsym_Bin:Nn {\bin@break \math_bcsym_Bin:Nn} @@ -2599,17 +2601,17 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\display@setup} % \begin{macro}{\everydisplay} % Setup. Note that \latex reserves the primitive -% \cs{everydisplay} under the name \cs{frozen@everydisplay}. +% \cs{everydisplay} under the name \cs{frozen@everydisplay}. % BRM: Disable this! It also affects non-breqn math!!!! % \begin{macrocode} %\global\everydisplay\expandafter{\the\everydisplay \display@setup} % \end{macrocode} -% Change some math symbol function calls. +% Change some math symbol function calls. % \begin{macrocode} \def\display@setup{% \medmuskip\Dmedmuskip \thickmuskip\Dthickmuskip @@ -2625,9 +2627,9 @@ and the derived files % \end{macrocode} % If we have an embedded array environment (for example), we % don't want to have each math cell within the array resetting -% \cs{lr@level} globally to 0\mdash not good! +% \cs{lr@level} globally to 0\mdash not good! % And in general I think it is safe to say that whenever we have a -% subordinate level of boxing we want to revert to a normal math setup. +% subordinate level of boxing we want to revert to a normal math setup. % \begin{macrocode} \everyhbox{\everyhbox\@emptytoks \let\display@setup\relax \textmath@setup \let\textmath@setup\relax @@ -2638,7 +2640,7 @@ and the derived files } % \end{macrocode} % The \cs{textmath@setup} function is needed for embedded inline -% math inside text inside a display. +% math inside text inside a display. % % BRM: DS Experiment: Variant of \cs{display@setup} for use within % dseries environmnents @@ -2646,7 +2648,7 @@ and the derived files \def\dseries@display@setup{% \medmuskip\Dmedmuskip \thickmuskip\Dthickmuskip \math_setup_display_symbols: -%%%% \let\m@Bin\d@@Bin +%%%% \let\m@Bin\d@@Bin %%%\let\m@Rel\d@@Rel %%% \let\@symRel\d@@symRel %%% \let\@symBin\d@@symBin @@ -2681,7 +2683,7 @@ and the derived files % \end{macrocode} % \end{macro} % \end{macro} -% +% % \begin{macro}{\if@display} % \begin{macro}{\everydisplay} % The test \cs{ifinner} is unreliable for distinguishing @@ -2690,31 +2692,31 @@ and the derived files % of \verb"$" \cs{displaystyle} \dots \verb"$" instead of % \dbldollars \dots \dbldollars . So we provide a more reliable % test. But it might have been provided already by the -% \pkg{amsmath} package. +% \pkg{amsmath} package. % \begin{macrocode} \@ifundefined{@displaytrue}{% \@xp\newif\csname if@display\endcsname \everydisplay\@xp{\the\everydisplay \@displaytrue}% }{} % \end{macrocode} -% +% % \begin{aside} % Is there any reason to maintain separate -% \cs{everydisplay} and \cn{eqstyle}? -% +% \cs{everydisplay} and \cn{eqstyle}? +% % \end{aside} -% -% +% +% % \end{macro} % \end{macro} -% -% -% -% +% +% +% +% % \section{The \env{dmath} and \env{dmath*} environments} % % Options for the \env{dmath} and \env{dmath*} -% environments. +% environments. % \begin{literalcode} % \begin{dmath}[label={eq:xyz}] % \begin{dmath}[labelprefix={eq:},label={xyz}] @@ -2722,7 +2724,7 @@ and the derived files % WSPR: added the option for a label prefix, designed to be used in the preamble like so: % \begin{literalcode} % \setkeys{breqn}{labelprefix={eq:}} -% \end{literalcode} +% \end{literalcode} % \begin{macrocode} \define@key{breqn}{label}{% \edef\next@label{\noexpand\label{\next@label@pre#1}}% @@ -2731,7 +2733,7 @@ and the derived files \global\let\next@label\@empty \global\let\next@label@pre\@empty % \end{macrocode} -% Allow a variant number. +% Allow a variant number. % \begin{literalcode} % \begin{dmath}[number={\nref{foo}\textprime}] % \end{literalcode} @@ -2744,7 +2746,7 @@ and the derived files % \begin{dmath}[shiftnumber] % \begin{dmath}[holdnumber] % \end{literalcode} -% Holding or shifting the number. +% Holding or shifting the number. % \begin{macrocode} \define@key{breqn}{shiftnumber}{\let\eq@shiftnumber\@True} \define@key{breqn}{holdnumber}{\let\eq@holdnumber\@True} @@ -2762,7 +2764,7 @@ and the derived files % for lines that begin with a mathbin symbol there is a fixed amount of % indent already built in (\cs{eqbinoffset}) and it cannot be % reduced through this option. The indentstep amount is the indent -% used for lines that begin with a mathrel symbol. +% used for lines that begin with a mathrel symbol. % \begin{macrocode} \define@key{breqn}{indentstep}{\eqindentstep#1\relax} % \end{macrocode} @@ -2771,20 +2773,20 @@ and the derived files % \begin{dmath}[compact=-2000] % \end{literalcode} % To make mathrels stay inline to the extent possible, use the compact -% option. +% option. % Can give a numeric value in the range $-10000 \dots 10000$ -% to adjust the behavior. +% to adjust the behavior. % $-10000$: always break at a rel symbol; $10000$: never -% break at a rel symbol. +% break at a rel symbol. % \begin{macrocode} \define@key{breqn}{compact}[-99]{\prerelpenalty=#1\relax} % \end{macrocode} % \begin{literalcode} % \begin{dmath}[layout={S}]% % \end{literalcode} -% Specify a particular layout. +% Specify a particular layout. % We take care to ensure that \cs{eq@layout} ends up containing -% one and only one letter. +% one and only one letter. % \begin{macrocode} \define@key{breqn}{layout}[?]{% \edef\eq@layout{\@car#1?\@nil}% @@ -2793,7 +2795,7 @@ and the derived files % \begin{literalcode} % \begin{dmath}[spread={1pt}] % \end{literalcode} -% To change the interline spacing in a particular equation. +% To change the interline spacing in a particular equation. % \begin{macrocode} \define@key{breqn}{spread}{% \addtolength\eqlinespacing{#1}% @@ -2801,7 +2803,7 @@ and the derived files \eqlineskiplimit\eqlineskip } % \end{macrocode} -% To change the amount of space on the side for \dquoted{multline} layout. +% To change the amount of space on the side for \dquoted{multline} layout. % \begin{macrocode} \define@key{breqn}{sidespace}{% \setlength\eq@given@sidespace{#1}% @@ -2815,7 +2817,7 @@ and the derived files % \latex code here \mdash thus the option name is \quoted{style} rather % than just \quoted{typesize}. In order for this option to work when % setting options globally, we need to put the code in -% \cs{eqstyle} rather than execute it directly. +% \cs{eqstyle} rather than execute it directly. % \begin{macrocode} \define@key{breqn}{style}{\eqstyle\@xp{\the\eqstyle #1}} % \end{macrocode} @@ -2843,14 +2845,14 @@ and the derived files % \cs{eqframe}. It must be a command taking two arguments, the % width and height of the equation body. The top left corner of the % box produced by \cs{eqframe} will be pinned to the top-left corner -% of the equation body. +% of the equation body. % \begin{macrocode} \define@key{breqn}{frame}[\fboxrule]{\def\eq@frame{T}% \dim@a#1\relax\edef\eq@framewd{\the\dim@a}% % \end{macrocode} % Until such time as we provide a frame implementation that allows the % frame to stretch and shrink, we'd better remove any stretch/shrink from -% the interline glue in this case. +% the interline glue in this case. % \begin{macrocode} \freeze@glue\eqlinespacing \freeze@glue\eqlineskip } @@ -2860,12 +2862,12 @@ and the derived files \def\eq@frame{F} % no frame \def\eq@framewd{\fboxrule} % \end{macrocode} -% Wishful thinking? +% Wishful thinking? % \begin{literalcode} % \begin{dmath}[frame={width={2pt},color={blue},sep={2pt}}] % \end{literalcode} % To change the space between the frame and the equation there is a -% framesep option. +% framesep option. % \begin{macrocode} \define@key{breqn}{framesep}[\fboxsep]{% \if\eq@frame F\def\eq@frame{T}\fi @@ -2881,7 +2883,7 @@ and the derived files % the background area that is colored is the size of the equation, plus % fboxsep. If you need anything fancier for the background, you'd % better do it by defining \cs{eqframe} in terms of -% \cs{colorbox} or \cs{fcolorbox}. +% \cs{colorbox} or \cs{fcolorbox}. % \begin{macrocode} \define@key{breqn}{background}{\def\eq@background{#1}% \freeze@glue\eqlinespacing \freeze@glue\eqlineskip @@ -2899,7 +2901,7 @@ and the derived files % \end{literalcode} % The \opt{center} option means add leftskip stretch to make the % individual lines be centered; this is the default for -% \env{dseries}. +% \env{dseries}. % \begin{macrocode} \define@key{breqn}{center}[]{\let\eq@centerlines\@True} \define@key{breqn}{nocenter}[]{\let\eq@centerlines\@False} @@ -2910,7 +2912,7 @@ and the derived files % \end{literalcode} % Equation groups normally have alignment of the primary relation % symbols across the whole group. The \opt{noalign} option -% switches that behavior. +% switches that behavior. % \begin{macrocode} \define@key{breqn}{noalign}[]{\let\grp@aligned\@False} \let\grp@aligned\@True % default @@ -2919,7 +2921,7 @@ and the derived files % \begin{dgroup}[breakdepth={2}] % \end{literalcode} % Break depth of 2 means that breaks are allowed at mathbin symbols -% inside two pairs of delimiters, but not three. +% inside two pairs of delimiters, but not three. % \begin{macrocode} \define@key{breqn}{breakdepth}{\eqbreakdepth#1\relax} % \end{macrocode} @@ -2929,7 +2931,7 @@ and the derived files % The \opt{cols} option only makes sense for the % \env{darray} environment but we liberally allow all the options to % be used with all the environments and just ignore any unsensible ones -% that happen to come along. +% that happen to come along. % \begin{macrocode} \define@key{breqn}{cols}{\global\let\@preamble\@empty \darray@mkpream#1\@percentchar @@ -2966,13 +2968,13 @@ and the derived files %BRM: The following incorporates several changes: % 1) modifications supplied by MJD to fix the eaten \cs{paragraph} problem. % 2) Added \cs{display@setup} here, rather than globally. -% +% % \begin{macro}{\dmath} % \begin{macro}{\enddmath} % For the \env{dmath} environment we don't want the standard % optional arg processing because of the way it skips over whitespace, % including newline, while looking for the \verb"[" char; which is not good -% for math material. So we call \cs{@optarg} instead. +% for math material. So we call \cs{@optarg} instead. % \begin{macrocode} \newenvironment{dmath}{% \let\eq@hasNumber\@True \@optarg\@dmath{}}{} @@ -2985,14 +2987,14 @@ and the derived files \setkeys{breqn}{#1}% \the\eqstyle % \end{macrocode} -% The equation number might have been overridden in \verb|#1|. +% The equation number might have been overridden in \verb|#1|. % \begin{macrocode} \eq@setnumber % \end{macrocode} % Start up the displayed equation by reading the contents into a % box register. Enclose this phase in an extra group so that % modified \cs{hsize} and other params will be auto-restored -% afterwards. +% afterwards. % \begin{macrocode} \begingroup \eq@setup@a @@ -3001,7 +3003,7 @@ and the derived files % \end{macrocode} % Before it finishes off the box holding the equation body, % \cs{enddmath} needs to look ahead for punctuation (and -% \cs{qed}?). +% \cs{qed}?). % \begin{macrocode} \def\enddmath#1{\check@punct@or@qed} \def\end@dmath{% @@ -3014,23 +3016,23 @@ and the derived files % required to get acceptable line breaks, how many lines will be required % at that width, and whether the equation number needs to be shifted to % avoid overlapping. This information will then be used by -% \cs{eq@finish} to do the typesetting of the real equation body. +% \cs{eq@finish} to do the typesetting of the real equation body. % \begin{macrocode} \eq@measure % \end{macrocode} % Piece together the equation from its constituents, recognizing % current constraints. If we are in an equation group, this might -% just save the material on a stack for later processing. +% just save the material on a stack for later processing. % \begin{macrocode} \if\eq@group \grp@push \else \eq@finish\fi } % \end{macrocode} % \end{macro} % \end{macro} -% +% % \begin{macro}{\dmath*} % \begin{macro}{\enddmath*} -% Ah yes, now the lovely \env{dmath*} environment. +% Ah yes, now the lovely \env{dmath*} environment. % \begin{macrocode} \newenvironment{dmath*}{% \let\eq@hasNumber\@False \@optarg\@dmath{}% @@ -3040,17 +3042,17 @@ and the derived files % \end{macrocode} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\eq@prelim} % If \cs{everypar} has a non-null value, it's probably % some code from \cs{@afterheading} that sets \cs{clubpenalty} % and\slash or removes the parindent box. Both of those actions % are irrelevant and interfering for our purposes and need to be deflected -% for the time being. +% for the time being. % If an equation appears at the very beginning of a list item % (possibly from a trivlist such as \env{proof}), we need to -% trigger the item label. +% trigger the item label. % \begin{macrocode} \def\eq@prelim{% \if@inlabel \indent \par \fi @@ -3061,7 +3063,7 @@ and the derived files % \cn{noindent} is better than \cn{leavevmode}, which would produce % an indent box and an empty line to hold it. If we are in a list % environment, \cn{par} is defined as \verb"{\@@par}" to preserve -% \cs{parshape}. +% \cs{parshape}. % \begin{macrocode} \noindent \eq@nulldisplay @@ -3072,7 +3074,7 @@ and the derived files % \end{macro} % \begin{macro}{\breqn@parshape@warning} % Warning message extracted to a separate function to streamline the -% calling function. +% calling function. % \begin{macrocode} \def\breqn@parshape@warning{% \PackageWarning{breqn}{% @@ -3080,19 +3082,19 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@prevshape} -% Storage; see \cs{eq@saveparinfo}. +% Storage; see \cs{eq@saveparinfo}. % \begin{macrocode} \let\eq@prevshape\@empty % \end{macrocode} % \end{macro} -% -% -% \begin{macro}{\eq@saveparinfo} +% +% +% \begin{macro}{\eq@saveparinfo} % Save the number of lines and parshape info for the text preceding -% the equation. +% the equation. % \begin{macrocode} \def\eq@saveparinfo{% \count@\prevgraf \advance\count@-\thr@@ % for the null display @@ -3104,7 +3106,7 @@ and the derived files }% % \end{macrocode} % Maybe best to set \cs{eq@prevshape} the same in the else case -% also. Better than nothing. +% also. Better than nothing. % \begin{macrocode} \else \breqn@parshape@warning @@ -3112,15 +3114,15 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@setnumber} % If the current equation number is not explicitly given, then % use an auto-generated number, unless the no-number switch has been -% thrown (\env{dmath*}). +% thrown (\env{dmath*}). % \cs{theequation} is the number form to be used for all equations, % \cs{eq@number} is the actual value for the current equation -% (might be an exception to the usual sequence). +% (might be an exception to the usual sequence). % \begin{macrocode} \def\eq@setnumber{% \eq@wdNum\z@ @@ -3139,7 +3141,7 @@ and the derived files % number-placement calculations. The extra braces around % \cs{eqnumform} make it possible for \cs{eqnumfont} to have % either an \cs{itshape} (recommended) or a \cs{textit} -% value. +% value. % \begin{macrocode} %<trace> \breqn@debugmsg{Number \eq@number}% \set@label{equation}\eq@number @@ -3160,7 +3162,7 @@ and the derived files % measuring includes the number of lines required, the width of the % equation number, the total height of the equation body, and (most % important) the parshape spec that was used in determining height and -% number of lines. +% number of lines. % % Invoke the equation formatter for the requested centering/indentation % having worked out the best parshape. @@ -3233,10 +3235,10 @@ and the derived files \endgroup \eq@botspace } -% \end{macrocode} +% \end{macrocode} % \end{macro} -% -% +% +% % These are temporary until the tag position algorithm gets % rewritten. At least the tag is positioned correctly for single-line % displays. The horizontal frame position is not correct but the @@ -3245,7 +3247,7 @@ and the derived files \def\eq@typeset@L@single{% \nobreak \eq@params\eq@parshape - \nointerlineskip\noindent + \nointerlineskip\noindent \add@grp@label \rlap{\kern-\leftskip\box\EQ@numbox}% \if F\eq@frame @@ -3257,30 +3259,30 @@ and the derived files \def\eq@typeset@R@single{% \nobreak \eq@params\eq@parshape - \nointerlineskip\noindent + \nointerlineskip\noindent \add@grp@label \if F\eq@frame \else \rlap{\raise\eq@firstht\hbox to\z@{\eq@addframe\hss}}% \fi \rlap{\kern-\leftskip\kern\linewidth\kern-\wd\EQ@numbox\copy\EQ@numbox}% - \eq@dump@box\unhbox\EQ@box + \eq@dump@box\unhbox\EQ@box \@@par } % \end{macrocode} % -% -% +% +% % \section{Special processing for end-of-equation} -% +% % At the end of a displayed equation environment we need to peek ahead % for two things: following punction such as period or command that % should be pulled in for inclusion at the end of the equation; and % possibly also an \verb"\end{proof}" with an implied \dquoted{qed} % symbol that is traditionally included at the end of the display rather -% than typeset on a separate line. +% than typeset on a separate line. % We could require that the users type \cs{qed} explicitly at the -% end of the display when they want to have the display take notice of it. +% end of the display when they want to have the display take notice of it. % But the reason for doing that would only be to save work for the % programmer; the most natural document markup would allow an inline % equation and a displayed equation at the end of a proof to differ only @@ -3297,12 +3299,12 @@ and the derived files % \end{dmath}. % \end{proof} % \end{literalcode} -% . +% . % The technical difficulties involved in supporting this markup within -% \latex2e are, admittedly, nontrivial. -% Nonetheless, let's see how far we can go. -% -% +% \latex2e are, admittedly, nontrivial. +% Nonetheless, let's see how far we can go. +% +% % The variations that we will support are only the most % straightforward ones: % \begin{literalcode} @@ -3315,10 +3317,10 @@ and the derived files % Perhaps a comment % \end{proof} % \end{literalcode} -% . +% . % If there is anything more complicated than a space after the % period we will not attempt to scan any further for a possible -% \verb"\end{proof}". +% \verb"\end{proof}". % This includes material such as: % \begin{literalcode} % \begin{figure}...\end{figure}% @@ -3333,10 +3335,10 @@ and the derived files % and the preceding paragraph has to be fully finished off before % proceeding further, even inside an element like \dquoted{proof} whose % end-element formatting requires integration with the end of the -% paragraph text. +% paragraph text. % And \tex nically speaking, a \cs{par} token that comes from a % blank line and one that comes from the sequence of characters -% \verb"\" \verb"p" \verb"a" \verb"r" are equally explicit. +% \verb"\" \verb"p" \verb"a" \verb"r" are equally explicit. % I hope to add support for \cs{footnote} in the future, as it % seems to be a legitimate markup possibility in that context from a % purely logical point of view, but there are additional technical @@ -3344,12 +3346,12 @@ and the derived files % \begin{dn} % mjd,1999/02/08 % \end{dn} -% . -% -% +% . +% +% % \begin{macro}{\peek@branch} % This is a generalized \dquoted{look at next token and choose some action -% based on it} function. +% based on it} function. % \begin{macrocode} \def\peek@branch#1#2{% \let\peek@b#1\let\peek@space#2\futurelet\@let@token\peek@a @@ -3362,21 +3364,21 @@ and the derived files \lowercase{\def\peek@skip@space} {\futurelet\@let@token\peek@a}% % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\check@punct} % \changes{v0.96a}{2007/12/17}{Insert \cs{finish@end} if no special % case is found.} % For this one we need to recognize and grab for inclusion any of the -% following tokens: \verb",;.!?", both catcode 12 (standard \latex +% following tokens: \verb",;.!?", both catcode 12 (standard \latex % value) and catcode 13 (as might hold when the Babel package is -% being used). +% being used). % We do not support a space preceding the punctuation since that would % be considered simply invalid markup if a display-math environment were % demoted to in-line math; and we want to keep their markup as parallel as -% possible. +% possible. % If punctuation does not follow, then the \cs{check@qed} branch -% is not applicable. +% is not applicable. % \begin{macrocode} \def\check@punct{\futurelet\@let@token\check@punct@a} \def\check@punct@a{% @@ -3412,7 +3414,7 @@ and the derived files } \endgroup % \end{macrocode} -% +% % \begin{macrocode} \let\found@punct\@empty \def\check@qed#1{% @@ -3427,7 +3429,7 @@ and the derived files % \end{macrocode} % For each environment ENV that takes an implied qed at the end, the % control sequence ENVqed must be defined; and it must include suitable -% code to yield the desired results in a displayed equation. +% code to yield the desired results in a displayed equation. % \begin{macrocode} \def\check@qed@b#1#2{% \@ifundefined{#2qed}{}{% @@ -3439,8 +3441,8 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\latex@end} % \begin{macro}{\finish@end} % The lookahead for punctuation following a display requires @@ -3449,7 +3451,7 @@ and the derived files % whole package is so over-the-top anyway, what's a little more % going to hurt? And rationalizing this aspect of % equation markup is a worthy cause. Here is the usual -% definition of \cs{end}. +% definition of \cs{end}. % \begin{literalcode} % \def\end#1{ % \csname end#1\endcsname \@checkend{#1}% @@ -3459,7 +3461,7 @@ and the derived files % \end{literalcode} % We can improve the chances of this code surviving through future % minor changes in the fundamental definition of \cs{end} by taking a -% little care in saving the original meaning. +% little care in saving the original meaning. % \begin{macrocode} \def\@tempa#1\endcsname#2\@nil{\def\latex@end##1{#2}} \expandafter\@tempa\end{#1}\@nil @@ -3467,12 +3469,12 @@ and the derived files % \end{macrocode} % Why don't we call \cs{CheckCommand} here? Because that % doesn't help end users much; it works better to use it during package -% testing by the maintainer. -% -% +% testing by the maintainer. +% +% % If a particular environment needs to call a different end action, the % end command of the environment should be defined to gobble two args and -% then call a function like \cs{check@punct@or@qed}. +% then call a function like \cs{check@punct@or@qed}. % \begin{macrocode} \def\check@punct@or@qed#1{% \xdef\found@punct{\@empty}% BRM: punctuation was being remembered past this eqn. @@ -3483,26 +3485,26 @@ and the derived files % \end{macrocode} % \end{macro} % \end{macro} -% +% % \begin{macro}{\eqpunct} % User-settable function for handling % the punctuation at the end of an equation. You could, for example, -% define it to just discard the punctuation. +% define it to just discard the punctuation. % \begin{macrocode} \newcommand\eqpunct[1]{\thinspace#1} % \end{macrocode} % \end{macro} -% +% % \begin{macro}{\set@label} % \cs{set@label} just sets \cs{@currentlabel} but it % takes the counter as an argument, in the hope that \latex will some % day provide an improved labeling system that includes type info on the -% labels. +% labels. % \begin{macrocode} \providecommand\set@label[2]{\protected@edef\@currentlabel{#2}} % \end{macrocode} % \end{macro} -% +% % \begin{macro}{\eq@topspace} % \begin{macro}{\eq@botspace} % The action of \cs{eq@topspace} is complicated by the @@ -3513,7 +3515,7 @@ and the derived files % \cs{eq@botspace}. This also allows us to optimize % slightly by setting the above-skip with \cs{parskip} instead of % \cs{vskip}. \verb|#1| is either \cs{noindent} or -% \verb"\vskip\parskip". +% \verb"\vskip\parskip". % % BRM: Hmm; we need to do *@setspace BEFORE this for small skips to work! % \begin{macrocode} @@ -3547,7 +3549,7 @@ and the derived files \addtolength\parskip{\eq@framesep+\eq@framewd}% \fi %<*trace> - \breqn@debugmsg{Topspace: \theb@@le\EQ@shortskips, \parskip=\the\parskip, + \breqn@debugmsg{Topspace: \theb@@le\EQ@shortskips, \parskip=\the\parskip, \predisplaysize=\the\predisplaysize}% %</trace> #1% @@ -3599,18 +3601,18 @@ and the derived files } % \end{macrocode} % \end{macro} -% +% % At the end of an equation, need to put in a pagebreak penalty % and some vertical space. Also set some flags to remove parindent % and extra word space if the current paragraph text continues without an -% intervening \cs{par}. +% intervening \cs{par}. % \begin{macrocode} \def\eq@botspace{% \penalty\postdisplaypenalty % \end{macrocode} % Earlier calculations will have set \cs{belowdisplayskip} locally % to \cs{belowdisplayshortskip} if applicable. So we can just use -% it here. +% it here. % \begin{macrocode} \if F\eq@frame \else @@ -3624,23 +3626,23 @@ and the derived files % \end{macrocode} % \end{macro} % \end{macro} -% +% % \begin{macro}{\eq@resume@parshape} % This should calculate the total height of the equation, % including space above and below, and set prevgraf to the number it would % be if that height were taken up by normally-spaced normal-height % lines. We also need to restore parshape if it had a non-null -% value before the equation. Not implemented yet. +% value before the equation. Not implemented yet. % \begin{macrocode} \def\eq@resume@parshape{} % \end{macrocode} % \end{macro} -% +% % \section{Preprocessing the equation body} % \begin{macro}{\eq@startup} % Here is the function that initially collects the equation -% material in a box. -% +% material in a box. +% % \begin{macrocode} \def\eq@startup{% \global\let\EQ@hasLHS\@False @@ -3649,9 +3651,9 @@ and the derived files \penalty-\@Mi } % \end{macrocode} -% +% % This setup defines the environment for the first typesetting -% pass, note the \cs{hsize} value for example. +% pass, note the \cs{hsize} value for example. % \begin{macrocode} \def\eq@setup@a{% \everymath\everydisplay @@ -3671,15 +3673,15 @@ and the derived files % \cs{hsize}, but more than half of \cs{hsize} so that if a line % is nearly empty, the glue stretch factor will always be less than 2.0 % and so the badness will be less than 100 and so \tex will not issue -% badness warnings. +% badness warnings. % \begin{macrocode} \linepenalty\@m \rightskip\z@\@plus\@M\p@ \leftskip\z@skip \parfillskip\z@skip \clubpenalty\@ne \widowpenalty\z@ \interlinepenalty\z@ % \end{macrocode} % After a relation symbol is discovered, binop symbols should start -% including a special offset space. -% But until then \cs{EQ@prebin@space} is a no-op. +% including a special offset space. +% But until then \cs{EQ@prebin@space} is a no-op. % \begin{macrocode} \global\let\EQ@prebin@space\relax % \end{macrocode} @@ -3687,7 +3689,7 @@ and the derived files % after mathbins and mathrels. As a matter of fact, the penalties are % then omitted by \tex , since bare glue without a penalty is % \emph{not} a valid breakpoint if it occurs within -% mathon\ndash mathoff items. +% mathon\ndash mathoff items. % \begin{macrocode} \binoppenalty\@M \relpenalty\@M } @@ -3705,7 +3707,7 @@ and the derived files % \end{literalcode} % . The contents are shown in four parts in this figure and the next % three. The first part contains two line boxes, one for the mathon -% node and one for the LHS. +% node and one for the LHS. % \begin{literalcode} % \hbox(0.0+0.0)x16383.99998, glue set 1.6384 % .\mathon @@ -3727,7 +3729,7 @@ and the derived files % \begin{figure}\centering % This is the first part of the RHS, up to the % \cs{right}, where a line break has been forced so that we can break -% open the left-right box. +% open the left-right box. % \begin{literalcode} % ... % \penalty 2 @@ -3775,7 +3777,7 @@ and the derived files % \begin{figure} % \centering % This is the remainder of the RHS after the post-\cs{right} -% split. +% split. % \begin{literalcode} % ... % \penalty 3 @@ -3816,13 +3818,13 @@ and the derived files % .\glue(\rightskip) 0.0 plus 10000.0 % \glue(\baselineskip) 9.5 % ... -% \end{literalcode} +% \end{literalcode} % \caption{Preliminary equation contents, part 3} % \end{figure} % % \begin{figure} % \centering -% This is the mathoff fragment. +% This is the mathoff fragment. % \begin{literalcode} % ... % \glue(\baselineskip) 9.5 @@ -3834,7 +3836,7 @@ and the derived files % \end{literalcode} % \caption{Preliminary equation contents, part 4} % \end{figure} -% +% % \begin{macro}{\eq@capture} % \begin{macro}{\eq@punct} % If an equation ends with a \cs{right} delim, the last thing @@ -3845,7 +3847,7 @@ and the derived files % any, goes into the last box with the mathoff kern. If the math list % ends with a slanted letter, then there will be an italic correction % added after it by \tex . Should we remove it? I guess -% so. +% so. % % % \subsection{Capturing the equation} @@ -3866,7 +3868,7 @@ and the derived files \ifnum\lastpenalty>-\@M \penalty-\@Mi \fi % \end{macrocode} % We want to keep the mathoff kern from vanishing at the line break, -% so that we can reuse it later. +% so that we can reuse it later. % \begin{macrocode} \keep@glue\@@endmath \eq@addpunct @@ -3875,7 +3877,7 @@ and the derived files % \end{macrocode} % First snip the last box, which contains the mathoff node, and put it % into \cs{EQ@box}. Then when we call \cs{eq@repack} it -% will recurse properly. +% will recurse properly. % \begin{macrocode} \setbox\tw@\lastbox \global\setbox\EQ@box\hbox{\unhbox\tw@\unskip\unskip\unpenalty}% @@ -3887,7 +3889,7 @@ and the derived files \eq@wdR\z@%BRM: eq@wdL patch \eq@repack % recursive % \end{macrocode} -% Finally, add the mathon item to \cs{EQ@box} and \cs{EQ@copy}. +% Finally, add the mathon item to \cs{EQ@box} and \cs{EQ@copy}. % \begin{macrocode} \setbox\tw@\lastbox \global\setbox\EQ@box\hbox{\unhcopy\tw@\unskip\unpenalty \unhbox\EQ@box}% @@ -3899,7 +3901,7 @@ and the derived files + 0.2777777777777em}% FUDGE??!?!?! \ifdim\dim@a>\eq@wdL %<*trace> - \breqn@debugmsg{Correcting LHS from \the\eq@wdL\space to + \breqn@debugmsg{Correcting LHS from \the\eq@wdL\space to \the\dim@a = \the\wd\EQ@box - \the\eq@wdR}% %</trace> \eq@wdL\dim@a @@ -3921,10 +3923,10 @@ and the derived files % \end{macrocode} % Now we have two copies of the equation, one in \cs{EQ@box}, % and one in \cs{EQ@copy} with inconvenient stuff like inserts and -% marks omitted. -% +% marks omitted. +% % \cs{eq@addpunct} is for tacking on text punctuation at the end -% of a display, if any was captured by the \quoted{gp} lookahead. +% of a display, if any was captured by the \quoted{gp} lookahead. % \begin{macrocode} \def\eq@addpunct{% \ifx\found@punct\@empty @@ -3935,22 +3937,22 @@ and the derived files \EQ@afterspace } % \end{macrocode} -% Needed for the \env{dseries} environment, among other things. +% Needed for the \env{dseries} environment, among other things. % \begin{macrocode} \global\let\EQ@afterspace\@empty % \end{macrocode} % \end{macro} % \end{macro} -% +% % \begin{macro}{\eq@repack} % The \cs{eq@repack} function looks at the information at hand -% and proceeds accordingly. +% and proceeds accordingly. % % TeX Note: this scans BACKWARDS from the end of the math. % \begin{macrocode} \def\eq@repack{% % A previous penalty of 3 on the vertical list means that we need -% to break open a left-right box. +% to break open a left-right box. % \begin{macrocode} \ifcase\lastpenalty % case 0: normal case @@ -3960,7 +3962,7 @@ and the derived files \or % case 1: finished recursing % \end{macrocode} % Grab the mathon object since we need it to inhibit line breaking at -% bare glue nodes later. +% bare glue nodes later. % \begin{macrocode} \unpenalty \setbox\tw@\lastbox @@ -3969,7 +3971,7 @@ and the derived files \or % case 2: save box width = LHS width % \end{macrocode} % Don't need to set \cs{EQ@hasLHS} here because it was set earlier -% if applicable. +% if applicable. % \begin{macrocode} \unpenalty \setbox\tw@\lastbox @@ -3985,11 +3987,11 @@ and the derived files % .\penalty -10001 % .\glue(\rightskip) 0.0 plus 10000.0 % \end{literalcode} -% and we want to ensure that the thickmuskip glue gets removed. +% and we want to ensure that the thickmuskip glue gets removed. % And we now arrange for \cs{EQ@copy} and \cs{EQ@box} to % keep the LHS in a separate subbox; this is so that we can introduce a % different penalty before the first relation symbol if necessary, -% depending on the layout decisions that are made later. +% depending on the layout decisions that are made later. % \begin{macrocode} \global\setbox\EQ@copy\hbox{% \hbox{\unhcopy\tw@\unskip\unpenalty\unskip}% @@ -4009,19 +4011,19 @@ and the derived files \eq@repack % RECURSE } % \end{macrocode} -% Error message extracted to streamline calling function. +% Error message extracted to streamline calling function. % \begin{macrocode} \def\breqn@repack@err{% \PackageError{breqn}{eq@repack penalty neq 0,1,2,3}\relax } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@repacka} % We need to transfer each line into two separate boxes, one % containing everything and one that omits stuff like \cs{insert}s -% that would interfere with measuring. +% that would interfere with measuring. % \begin{macrocode} \def\eq@repacka#1{% \global\setbox#1\hbox{\unhcopy\tw@ \unskip @@ -4030,7 +4032,7 @@ and the derived files \unpenalty % \end{macrocode} % If creating the measure copy, ignore all cases above case 3 by -% folding them into case 1. +% folding them into case 1. % \begin{macrocode} \ifx\EQ@copy#1\ifnum\count@>\thr@@ \count@\@ne\fi\fi \ifcase\count@ @@ -4054,10 +4056,10 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@nulldisplay} -% Throw in a null display in order to get predisplaysize \etc . +% Throw in a null display in order to get predisplaysize \etc . % My original approach here was to start the null display, then measure % the equation, and set a phantom of the equation's first line before % ending the null display. That would allow finding out if \tex used @@ -4070,7 +4072,7 @@ and the derived files % control, \eg , the threshold amount of horizontal space between % predisplaysize and the equation's left edge that determines when the % short skips kick in becomes a designer-settable parameter rather than -% hardwired into \TeX . +% hardwired into \TeX . % \begin{macrocode} \def\eq@nulldisplay{% \begingroup \frozen@everydisplay\@emptytoks @@ -4084,7 +4086,7 @@ and the derived files \listwidth\the\linewidth % \end{macrocode} % Not sure how best to test whether leftmargin should be -% added. Let's do this for now [mjd,1997/10/08]. +% added. Let's do this for now [mjd,1997/10/08]. % \begin{macrocode} \ifdim\displayindent>\z@ \advance\listwidth\the\leftmargin @@ -4097,7 +4099,7 @@ and the derived files % \cs{baselineskip} will be added (so we didn't need to set it to % zero) and the previous value of prevdepth carries through. Those % properties do not hold for an empty simple equation without -% \cs{halign}. +% \cs{halign}. % \begin{macrocode} \halign{##\cr}% \@@enddisplay @@ -4107,8 +4109,8 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@newline} % \begin{macro}{\eq@newlinea} % \begin{macro}{\eq@newlineb} @@ -4123,7 +4125,7 @@ and the derived files % \cs{keep@glue} object which is not such a good idea if a mathbin % symbol follows \mdash the indent of the mathbin will be wrong because % the leading negative glue will not disappear as it should at the line -% break. +% break. % \begin{macrocode} \def\eq@newline{% \@ifstar{\eq@newlinea\@M}{\eq@newlinea\eqinterlinepenalty}} @@ -4134,15 +4136,15 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\eq@revspace} % \begin{macro}{\eq@revspaceb} % When \cs{eq@revspace} (re-vspace) is called, we are the % end of an equation line; we need to remove the existing penalty of % $-10002$ in order to put a vadjust object in front of it, then put % back the penalty so that the line break will still take place in the -% final result. +% final result. % \begin{macrocode} \def\eq@revspace{% \global\setbox\EQ@vimbox\vbox{\unvbox\EQ@vimbox @@ -4152,7 +4154,7 @@ and the derived files \penalty-\@M } % \end{macrocode} -% The b version is used for the \cs{EQ@copy} box. +% The b version is used for the \cs{EQ@copy} box. % \begin{macrocode} \def\eq@revspaceb{% \global\setbox\EQ@vimcopy\vbox{\unvbox\EQ@vimcopy @@ -4164,19 +4166,19 @@ and the derived files % \end{macrocode} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\eq@break} % The function \cs{eq@break} does a preliminary linebreak with -% a flag penalty. +% a flag penalty. % \begin{macrocode} \def\eq@break#1{\penalty-1000#1 \keep@glue} % \end{macrocode} % \end{macro} -% -% -% -% +% +% +% +% % \section{Choosing optimal line breaks} % The question of what line width to use when breaking an % equation into several lines is best examined in the light of an extreme @@ -4184,39 +4186,39 @@ and the derived files % equation falls inside a second-level list with nonzero leftmargin and % rightmargin. Then we want to try in succession a number of % different possibilities. In each case if the next possibility is -% no wider than the previous one, skip ahead to the one after. +% no wider than the previous one, skip ahead to the one after. % \begin{enumerate} % \item First try linewidth(2), the linewidth for the current -% level-2 list. -% -% +% level-2 list. +% +% % \item If we cannot find adequate linebreaks at that width, next try % listwidth(2), the sum of leftmargin, linewidth, and rightmargin for -% the current list. -% -% +% the current list. +% +% % \item If we cannot find linebreaks at that width, next try linewidth % (1) (skipping this step if it is no larger then -% listwidth(2)). -% -% +% listwidth(2)). +% +% % \item If we cannot find linebreaks at that width, next try -% listwidth(1). -% -% +% listwidth(1). +% +% % \item If we cannot find linebreaks at that width, next try column -% width. -% -% +% width. +% +% % \item If we cannot find linebreaks at that width, next try text -% width. -% -% +% width. +% +% % \item If we cannot find linebreaks at that width, next try equation % width, if it exceeds text width (\ie , if the style allows equations -% to extend into the margins). -% -% +% to extend into the margins). +% +% % \end{enumerate} % % @@ -4228,32 +4230,32 @@ and the derived files % % At any given line width, we run through a series of parshape % trials and, essentially, use the first one that gives decent line -% breaks. -% But the process is a bit more complicated in fact. +% breaks. +% But the process is a bit more complicated in fact. % In order to do a really good job of setting up the parshapes, we -% need to know how many lines the equation will require. -% And of course the number of lines needed depends on the parshape! +% need to know how many lines the equation will require. +% And of course the number of lines needed depends on the parshape! % So as our very first trial we run a simple first-approximation % parshape (Figure~\vref{f:parshape-1}) whose % main purpose is to get an estimate on the number of lines that will be % needed; it chooses a uniform indent for all lines after the first one -% and does not take any account of the equation number. +% and does not take any account of the equation number. % A substantial majority of equations only require one line anyway, -% and for them this first trial will succeed. +% and for them this first trial will succeed. % In the one-line case if there is an equation number and it doesn't % fit on the same line as the equation body, we don't go on to other % trials because breaking up the equation body will not gain us % anything\mdash we know that we'll have to use two lines in any case % \mdash so we might as well keep the equation body together on one line -% and shift the number to a separate line. -% +% and shift the number to a separate line. +% % If we learn from the first trial that the equation body % requires more than one line, the next parshape trial involves adjusting % the previous parshape to leave room for the equation number, if % present. If no number is present, again no further trials are -% needed. -% -% Some remarks about parshape handling. The \tex +% needed. +% +% Some remarks about parshape handling. The \tex % primitive doesn't store the line specs anywhere, \verb"\the\parshape" % only returns the number of line specs. This makes it well nigh % impossible for different packages that use \cs{parshape} to work @@ -4264,15 +4266,15 @@ and the derived files % obviously, is provide a parshape interface that includes a record of all % the line specs. For that we designate a macro \cs{@parshape} % which includes not only the line specs, but also the line count and even -% the leading \cs{parshape} token. +% the leading \cs{parshape} token. % This allows it to be directly executed without an auxiliary if-empty % test. It should include a trailing \cs{relax} when it has a -% nonempty value. +% nonempty value. % \begin{macrocode} \let\@parshape\@empty % \end{macrocode} -% -% +% +% % The function \cs{eq@measure} runs line-breaking trials % on the copy of the equation body that is stored in the box register % \cs{EQ@copy}, trying various possible layouts in order of @@ -4283,27 +4285,27 @@ and the derived files % depends on the line breaks such as the depth of the last line, the % height of the first line, and positioning information for the equation % number. The two main variables in the equation layout are the line -% width and the placement of the equation number, if one is present. -% -% +% width and the placement of the equation number, if one is present. +% +% % \begin{macro}{\eq@measure} % Run linebreak trials on the equation contents and measure the -% results. +% results. % \begin{macrocode} \def\eq@measure{% % \end{macrocode} % If an override value is given for indentstep in the env options, use -% it. +% it. % \begin{macrocode} \ifdim\eq@indentstep=\maxdimen \eq@indentstep\eqindentstep \fi % \end{macrocode} % If \cs{eq@linewidth} is nonzero at this point, it means that -% the user specified a particular target width for this equation. -% In that case we override the normal list of trial widths. +% the user specified a particular target width for this equation. +% In that case we override the normal list of trial widths. % \begin{macrocode} \ifdim\eq@linewidth=\z@ \else \edef\eq@linewidths{{\the\eq@linewidth}}\fi \begingroup \eq@params - \leftskip\z@skip + \leftskip\z@skip % \end{macrocode} % Even if \cs{hfuzz} is greater than zero a box whose contents % exceed the target width by less then hfuzz still has a reported badness @@ -4312,7 +4314,7 @@ and the derived files % such boxes return a smaller badness. To this end we include an % \cs{hfuzz} allowance in \cs{rightskip}. In fact, % \cs{eq@params} ensures that \cs{hfuzz} for equations is at -% least 1pt. +% least 1pt. % \begin{macrocode} \rightskip\z@\@plus\columnwidth\@minus\hfuzz % \eqinfo @@ -4322,7 +4324,7 @@ and the derived files \endgroup % \end{macrocode} % \quoted{local} parameter settings are passed outside the endgroup through -% \cs{EQ@trial}. +% \cs{EQ@trial}. % \begin{macrocode} \EQ@trial } @@ -4358,30 +4360,30 @@ and the derived files % Layout Trials Driver % Basically, trying different sequences of parshapes. % -% +% % \begin{macro}{\EQ@trial} -% Init. +% Init. % \begin{macrocode} \let\EQ@trial\@empty % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\EQ@continue} % This is a token register used to carry trial info past a -% group boundary with only one global assignment. +% group boundary with only one global assignment. % \begin{macrocode} \newtoks\EQ@continue % \end{macrocode} % \end{macro} -% -% -% \begin{macro}{\EQ@widths} +% +% +% \begin{macro}{\EQ@widths} % This is used for storing the actual line-width info of the equation -% contents after breaking. +% contents after breaking. % \begin{macrocode} \let\EQ@widths\@empty -% \end{macrocode} +% \end{macrocode} % \end{macro} % \begin{macro}{\EQ@fallback} % \begin{macrocode} @@ -4389,7 +4391,7 @@ and the derived files % \end{macrocode} % \end{macro} % \begin{macro}{\eq@linewidths} -% This is the list of target widths for line breaking. +% This is the list of target widths for line breaking. % %======================================== % BRM: Odd; I don't think I've seen this use anything but \cs{displaywidth}... @@ -4397,12 +4399,12 @@ and the derived files \def\eq@linewidths{\displaywidth\linewidth\columnwidth} % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@trial} % The \cs{eq@trial} function tries each candidate % line width in \cs{eq@linewidths} until an equation layout is found -% that yields satisfactory line breaks. +% that yields satisfactory line breaks. % \begin{macrocode} \def\eq@trial{% \ifx\@empty\eq@linewidths @@ -4414,32 +4416,32 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@trial@a} % The \cs{eq@trial@a} function reads the leading line % width from \cs{eq@linewidths}; if the new line width is greater % than the previous one, start running trials with it; otherwise do -% nothing with it. +% nothing with it. % Finally, run a peculiar \cs{edef} that leaves -% \cs{eq@linewidths} redefined to be the tail of the list. +% \cs{eq@linewidths} redefined to be the tail of the list. % If we succeed in finding satisfactory line breaks % for the equation, we will reset \cs{EQ@continue} in such a -% way that it will terminate the current trials. +% way that it will terminate the current trials. % An obvious branch here would be to check whether the width of % \cs{EQ@copy} is less than \cs{eq@linewidth} and go immediately -% to the one-line case if so. +% to the one-line case if so. % However, if the equation contains more than one RHS, by % default each additional RHS starts on a new line\mdash \ie , we want -% the ladder layout anyway. +% the ladder layout anyway. % So we choose the initial trial on an assumption of multiple lines -% and leave the one-line case to fall out naturally at a later point. +% and leave the one-line case to fall out naturally at a later point. % \begin{macrocode} \def\eq@trial@a#1{% \dim@c#1\relax \if T\eq@frame \eq@frame@adjust\dim@c \fi \ifdim\dim@c>\eq@linewidth - \eq@linewidth\dim@c + \eq@linewidth\dim@c %<trace> \breqn@debugmsg{Choose Shape for width(#1)=\the\eq@linewidth}% \let\eq@trial@b\eq@trial@d \csname eq@try@layout@\eq@layout\endcsname @@ -4466,7 +4468,7 @@ and the derived files } % \end{macrocode} % \begin{macro}{\eq@trial@done} -% Success. +% Success. % \begin{macrocode} \def\eq@trial@done{% %<trace> \breqn@debugmsg{End trial: Success!}% @@ -4474,22 +4476,22 @@ and the derived files } % \end{macrocode} % \end{macro} -% +% % \begin{macro}{\eq@trial@init} % This is called from \cs{eq@trial@b} to initialize or % re-initialize certain variables as needed when running one or more -% trials at a given line width. -% By default assume success, skip the fallback code. +% trials at a given line width. +% By default assume success, skip the fallback code. % \begin{macrocode} \def\eq@trial@init{\global\let\EQ@fallback\eq@nextlayout} % \end{macrocode} % \end{macro} % \begin{macro}{\eq@nextlayout} -% +% % In the fallback case cancel the current group to avoid unnecessary -% group nesting (with associated save-stack cost, \etc ). +% group nesting (with associated save-stack cost, \etc ). % \begin{macrocode} -\def\eq@nextlayout#1{% +\def\eq@nextlayout#1{% \endgroup %<trace> \breqn@debugmsg{Nope ... that ain't gonna work.}% \begingroup #1% @@ -4497,8 +4499,8 @@ and the derived files % \end{macrocode} % \end{macro} % \begin{macro}{\eq@failout} -% -% . +% +% . % \begin{macrocode} \def\eq@failout{% %<trace>\breqn@debugmsg{End trial: failout}% @@ -4507,8 +4509,8 @@ and the derived files % \end{macrocode} % \end{macro} % \begin{macro}{\eq@trial@save} -% -% Save the parameters of the current trial. +% +% Save the parameters of the current trial. % \begin{macrocode} \def\eq@trial@save#1{% %<*trace> @@ -4540,18 +4542,18 @@ and the derived files % \end{macrocode} % \end{macro} % \begin{macro}{\eq@trial@b} -% -% By default this just runs \cs{eq@trial@c}; \cf -% \cs{eq@trial@d}. +% +% By default this just runs \cs{eq@trial@c}; \cf +% \cs{eq@trial@d}. % \begin{macrocode} \def\eq@trial@b{\eq@trial@c} % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@trial@c} -% -% Run the equation contents through the current parshape. +% +% Run the equation contents through the current parshape. % \begin{macrocode} \def\eq@trial@c#1#2{% %<trace> \breqn@debugmsg{Trying layout "#1" with\MessageBreak==== parshape\space\@xp\@gobble\@parshape}% @@ -4565,7 +4567,7 @@ and the derived files \eq@trial@save\EQ@trial % \end{macrocode} % If there is a number, try the same parshape again with adjustments -% to make room for the number. +% to make room for the number. % % This is an awkward place for this: % It only allows trying to fit the number w/the SAME layout shape! @@ -4591,7 +4593,7 @@ and the derived files \def\eq@trial@d#1#2{\eq@trial@c{#1}{}} % \end{macrocode} % \end{macro} -% +% % \begin{macro}{\eq@check@density} % \begin{macrocode} \def\eq@check@density{% @@ -4607,7 +4609,7 @@ and the derived files % \end{macro} % % \begin{macro}{\eq@shortLHS} -% Test to see if we need to apply the \cs{eq@dense@enough} test. +% Test to see if we need to apply the \cs{eq@dense@enough} test. % \begin{macrocode} \def\eq@shortLHS{\ifdim\eq@wdL>.44\eq@wdT 1\else 0\fi 0} % \end{macrocode} @@ -4635,24 +4637,24 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\adjust@rel@penalty} -% Normally this is a no-op. +% Normally this is a no-op. % \begin{macrocode} \let\adjust@rel@penalty\@empty % \end{macrocode} % \end{macro} % % \begin{macro}{\eq@fix@lastline} -% Remove parfillskip from the last line box. +% Remove parfillskip from the last line box. % \begin{macrocode} \def\eq@fix@lastline{% \setbox\tw@\lastbox \dim@b\wd\tw@ \eq@dp\dp\tw@ % \end{macrocode} -% Remove \cs{parfillskip} but retain \cs{rightskip}. -% Need to keep the original line width for later shrink testing. +% Remove \cs{parfillskip} but retain \cs{rightskip}. +% Need to keep the original line width for later shrink testing. % \begin{macrocode} \nointerlineskip\hbox to\dim@b{\unhbox\tw@ \skip@c\lastskip \unskip\unskip\hskip\skip@c @@ -4661,8 +4663,8 @@ and the derived files % \end{macrocode} % \end{macro} % -% \begin{macro}{\eq@recalc} -% Calculate \cs{eq@wdT} et cetera. +% \begin{macro}{\eq@recalc} +% Calculate \cs{eq@wdT} et cetera. % \begin{macrocode} \def\eq@recalc{% \eq@wdT\z@ \eq@wdMin\maxdimen \eq@vspan\z@skip \eq@badness\z@ @@ -4670,8 +4672,8 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@recalc@a} % \begin{macrocode} \def\eq@recalc@a#1x#2+#3\@endelt{% @@ -4681,8 +4683,8 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@recalc@b} % \begin{macrocode} \def\eq@recalc@b#1X#2,#3x#4+#5@#6\@endelt{% @@ -4692,18 +4694,18 @@ and the derived files \eq@dp#5\relax \addtolength\eq@vspan{#1+#4+\eq@dp}% % \end{macrocode} -% Record the max badness of all the lines in \cs{eq@badness}. +% Record the max badness of all the lines in \cs{eq@badness}. % \begin{macrocode} \ifnum#6>\eq@badness \eq@badness#6\relax\fi } % \end{macrocode} % \end{macro} % -% \begin{macro}{\eq@layout} +% \begin{macro}{\eq@layout} % A value of \verb"?" for \cs{eq@layout} means that we should -% deduce which layout to use by looking at the size of the components. +% deduce which layout to use by looking at the size of the components. % Any other value means we have a user-specified override on the -% layout. +% layout. % % Layout Definitions. % Based on initial equation measurements, we can choose a sequence of @@ -4715,11 +4717,11 @@ and the derived files \def\eq@layout{?} % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@try@layout@?} % This is a branching function used to choose a suitable layout if -% the user didn't specify one in particular. +% the user didn't specify one in particular. % % Default layout: % Try Single line layout first, else try Multiline layouts @@ -4744,7 +4746,7 @@ and the derived files \rightskip\z@\@plus\dim@b\@minus\hfuzz \eq@trial@b{i}{\eq@try@layout@multi}% \else -%<*trace> +%<*trace> \breqn@debugmsg{Choose Shape: Too long (\the\wd\EQ@copy) for one line (free width=\the\dim@b)}% %</trace> @@ -4761,8 +4763,8 @@ and the derived files \ifdim\eq@wdL>\eq@linewidth %<trace> \breqn@debugmsg{Choose Shape: LHS \the\eq@wdL > linewidth}% % \end{macrocode} -% Find the total width of the RHS. -% If it is relatively short, a step layout is the thing to try. +% Find the total width of the RHS. +% If it is relatively short, a step layout is the thing to try. % \begin{macrocode} \setlength\dim@a{\wd\EQ@copy-\eq@wdL}% \ifdim\dim@a<.25\eq@linewidth \eq@try@layout@S @@ -4781,7 +4783,7 @@ and the derived files \else %<trace> \breqn@debugmsg{Choose Shape: No LHS here}% % \end{macrocode} -% Try one-line layout first, then step layout. +% Try one-line layout first, then step layout. % \begin{macrocode} \eq@try@layout@S % (already checked case i) \fi @@ -4791,13 +4793,13 @@ and the derived files % % \begin{macro}{\eq@try@layout@D} % Change the penalty before the first mathrel symbol to encourage a -% break there. +% break there. % % Layout D=Drop-Ladder Layout, for wide LHS. % \begin{literalcode} % LOOOOOOOONG LHS % = RHS -% = ... +% = ... % \end{literalcode} % If fails, try Almost-Columnar layout % \begin{macrocode} @@ -4812,9 +4814,9 @@ and the derived files % \end{macrocode} % \end{macro} % \begin{macro}{\eq@try@layout@L} -% Try a straight ladder layout. +% Try a straight ladder layout. % Preliminary filtering ensures that \cs{eq@wdL} is less than 70% -% of the current line width. +% of the current line width. % \begin{literalcode} % Layout L=Ladder layout % LHS = RHS @@ -4837,38 +4839,38 @@ and the derived files % % \begin{macro}{\eq@try@layout@S} % In the \dquoted{stepped} layout there is no LHS, or LHS -% is greater than the line width and RHS is small. +% is greater than the line width and RHS is small. % Then we want to split up the equation into lines of roughly equal % width and stagger them downwards to the right, leaving a small amount of -% whitespace on both sides. +% whitespace on both sides. % But also, if there is an equation number, we want to try first a -% layout that leaves room for the number. +% layout that leaves room for the number. % Otherwise it would nearly always be the case that the number would -% get thrown on a separate line. +% get thrown on a separate line. % % Layout S=Stepped layout, typically no LHS or very long, variations on % \begin{literalcode} % STUFF .... % + MORE STUFF ... -% + MORE STUFF ... +% + MORE STUFF ... % \end{literalcode} % If fails, try Almost-Columnar layout % \begin{macrocode} \def\eq@try@layout@S{% \setlength\dim@b{\eq@linewidth-2\eqmargin}% \advance\dim@b-1em% % \end{macrocode} -% About how many lines will we need if dim@b is the line width? +% About how many lines will we need if dim@b is the line width? % \begin{macrocode} \int@a\wd\EQ@copy \divide\int@a\dim@b % \end{macrocode} -% Adjust the target width by number of lines times indentstep. -% We don't need to decrement \cs{int@a} because \tex -% division is integer division with truncation. +% Adjust the target width by number of lines times indentstep. +% We don't need to decrement \cs{int@a} because \tex +% division is integer division with truncation. % \begin{macrocode} \addtolength\dim@b{-\int@a\eq@indentstep}% % \end{macrocode} -% Adjust for equation number. -% But try not to leave too little room for the equation body. +% Adjust for equation number. +% But try not to leave too little room for the equation body. % \begin{macrocode} \if\eq@hasNumber \ifdim\dim@b>15em% @@ -4877,7 +4879,7 @@ and the derived files \fi \fi % \end{macrocode} -% Now some hand-waving to set up the parshape. +% Now some hand-waving to set up the parshape. % \begin{macrocode} \int@b\z@ \def\@tempa{\dim}% @@ -4890,7 +4892,7 @@ and the derived files % % \begin{macro}{\eq@try@layout@l} % This is the \dquoted{step-ladder} layout: similar to the drop-ladder -% layout but the LHS is too wide and needs to be broken up. +% layout but the LHS is too wide and needs to be broken up. % % Layout l = Stepladder % Similar to Drop-Ladder, but LHS is long and needs to be broken up. @@ -4914,11 +4916,11 @@ and the derived files } % \end{macrocode} % \end{macro} -% +% % \begin{macro}{\eq@try@layout@A} % In the \dquoted{almost-columnar} layout, which is the layout of last % resort, we let all lines run to the full width and leave the adjusting -% of the indents to later. +% of the indents to later. % % Layout A = Almost-Columnar layout. % Pretty much straight full width, more of a last-resort. @@ -4929,7 +4931,7 @@ and the derived files \if\EQ@hasLHS \def\adjust@rel@penalty{\penalty-99 }\fi \eq@trial@b{A}{}% } -% \end{macrocode} +% \end{macrocode} % \end{macro} % % \begin{macro}{\eq@shiftnumber} @@ -4964,7 +4966,7 @@ and the derived files \addtolength\dim@b{\@totalleftmargin}% \fi \setlength\dim@a{\eq@linewidth-\dim@b}%\advance\dim@a1em\relax% Allowance for shrink? -% \end{macrocode} +% \end{macrocode} % Set up test against 1-line case only if not in a group % \begin{macrocode} \int@a\@ne\if\eq@group\int@a\maxint\fi @@ -5022,7 +5024,7 @@ and the derived files \fi\fi%\fi \fi\fi\fi % \end{macrocode} -% If we got shifted, restore parshape, etc, +% If we got shifted, restore parshape, etc, % \begin{macrocode} \if\eq@shiftnumber \EQ@trial% Restore parshape & other params, @@ -5036,12 +5038,12 @@ and the derived files % \end{macro} % % \begin{macro}{\adjust@parshape} -% Varies depending on the layout. +% Varies depending on the layout. % % Adjust a parshape variable for a given set of left\textbar right skips. % Note that the fixed part of the left\textbar right skips effectively % comes out of the parshape widths (NOT in addition to it). -% We also must trim the widths so that the sum of skips, indents +% We also must trim the widths so that the sum of skips, indents % and widths add up to no more than the \cs{eq@linewidth}. % \begin{macrocode} \def\adjust@parshape#1{% @@ -5050,8 +5052,8 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\adjust@parshape@a} % \begin{macro}{\adjust@parshape@b} % \begin{macrocode} @@ -5077,9 +5079,9 @@ and the derived files % \end{macro} % \end{macro} % -% \begin{macro}{\eq@ml@record@indents} +% \begin{macro}{\eq@ml@record@indents} % Plunk the parshape's indent values into an array for easy access -% when constructing \cs{eq@measurements}. +% when constructing \cs{eq@measurements}. % \begin{macrocode} \def\eq@ml@record@indents{% \int@a\z@ @@ -5095,20 +5097,20 @@ and the derived files } % \end{macrocode} % \end{macro} -% +% % \begin{macro}{\@endelt} -% This is a scan marker. -% It should get a non-expandable definition. -% It could be \cs{relax}, but let's try a chardef instead. +% This is a scan marker. +% It should get a non-expandable definition. +% It could be \cs{relax}, but let's try a chardef instead. % \begin{macrocode} \chardef\@endelt=`\? % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@measurements} % This is similar to a parshape spec but for each line we record more -% info: space above, indent, width x height + dp, and badness. +% info: space above, indent, width x height + dp, and badness. % \begin{macrocode} \def\eq@measurements{% \@elt 4.5pt/5.0pt,66.0ptx6.8pt+2.4pt@27\@endelt @@ -5116,16 +5118,16 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@measure@lines} % Loop through the list of boxes to measure things like total % height (including interline stretch), \etc . We check the -% actual width of the current line against the natural width \mdash +% actual width of the current line against the natural width \mdash % after removing rightskip \mdash in case the former is % \emph{less} than the latter because of shrinkage. In that % case we do not want to use the natural width for RHS-max-width because -% it might unnecessarily exceed the right margin. +% it might unnecessarily exceed the right margin. % \begin{macrocode} \def\eq@measure@lines{% \let\eq@ml@continue\eq@measure@lines @@ -5137,10 +5139,10 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@ml@a} -% +% % \begin{macrocode} \def\eq@ml@a{% \setbox\tw@\hbox{\unhbox\z@ \unskip}% find natural width @@ -5148,7 +5150,7 @@ and the derived files \ifnum\eq@badness<\inf@bad\else\breqn@debugmsg{!?! Overfull: \the\wd\tw@ >\the\dim@b}\fi %</trace> % \end{macrocode} -% Is actual width less than natural width? +% Is actual width less than natural width? % \begin{macrocode} \ifdim\dim@b<\wd\tw@ \setlength\dim@a{\dim@b}% shrunken line \else \setlength\dim@a{\wd\tw@}% OK to use natural width @@ -5156,7 +5158,7 @@ and the derived files \addtolength\dim@a{-\leftskip}% BRM: Deduct the skip if we're retrying w/number % \end{macrocode} % If there's no aboveskip, assume we've reached the top of the -% equation. +% equation. % \begin{macrocode} \skip@a\lastskip \unskip \unpenalty \ifdim\skip@a=\z@ @@ -5184,11 +5186,11 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@ml@vspace} -% -% Handle an embedded vspace. +% +% Handle an embedded vspace. % \begin{macrocode} \def\eq@ml@vspace{% \global\advance\eq@vspan\lastskip \unskip\unpenalty @@ -5196,17 +5198,17 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@dense@enough} -% +% % \begin{macrocode} \def\eq@dense@enough{% - \ifnum\eq@lines<\thr@@ + \ifnum\eq@lines<\thr@@ %<trace> \breqn@debugmsg{Density check: less than 3 lines; OK}% \@True \else - \ifdim\eq@wdL >.7\eq@wdT + \ifdim\eq@wdL >.7\eq@wdT %<trace> \breqn@debugmsg{Density check: LHS too long; NOT OK}% \@False \else \@xp\@xp\@xp\eq@dense@enough@a @@ -5215,8 +5217,8 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\true@true@true} % \begin{macro}{\true@false@true} % \begin{macro}{\false@true@false} @@ -5231,34 +5233,34 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\eq@density@factor} -% +% % This number specifies, for the ladder layout, how much of the % equation's bounding box should contain visible material rather than -% whitespace. +% whitespace. % If the amount of visible material drops below this value, then we -% switch to the drop-ladder layout. +% switch to the drop-ladder layout. % The optimality of this factor is highly dependent on the equation % contents; .475 was chosen as the default just because it worked well % with the sample equation, designed to be as average as possible, that I -% used for testing. +% used for testing. % \begin{macrocode} \def\eq@density@factor{.475} % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@dense@enough@a} -% +% % Calculate whether there is more -% visible material than whitespace within the equation's bounding box. +% visible material than whitespace within the equation's bounding box. % Sum up the actual line widths and compare to the total -% \dquoted{area} of the bounding box. +% \dquoted{area} of the bounding box. % But if we have an extremely large number of lines, fall back to an % approximate calculation that is more conservative about the danger of -% exceeding \cs{maxdimen}. +% exceeding \cs{maxdimen}. % \begin{macrocode} \def\eq@dense@enough@a{% \@True \fi @@ -5273,20 +5275,20 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@delt} -% Args are space-above, indent, width, height, depth, badness. +% Args are space-above, indent, width, height, depth, badness. % \begin{macrocode} \def\eq@delt#1X#2,#3x#4+#5@#6\@endelt{\addtolength\dim@b{#3}}% % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@dense@enough@b} % This is an approximate calculation used to keep from going over % \cs{maxdimen} if the number of lines in our trial break is large -% enough to make that a threat. +% enough to make that a threat. % If l, t, n represent left-side-width, total-width, and number of % lines, the formula is % \begin{literalcode} @@ -5297,7 +5299,7 @@ and the derived files % \begin{literalcode} % l/t < 4n/(9n-10) % \end{literalcode} -% . +% . % \begin{macrocode} \def\eq@dense@enough@b{% \int@b\eq@wdT \divide\int@b\p@ @@ -5310,17 +5312,17 @@ and the derived files } % \end{macrocode} % \end{macro} -% +% % \begin{macro}{\eq@parshape} % \begin{macrocode} \let\eq@parshape\@empty % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\eq@params} % The interline spacing and penalties in \cs{eq@params} -% are used during both preliminary line breaking and final typesetting. +% are used during both preliminary line breaking and final typesetting. % \begin{macrocode} \def\eq@params{% \baselineskip\eqlinespacing @@ -5332,19 +5334,19 @@ and the derived files % of a page; instead it will be moved whole to the top of the next % page. If you really really need a page break that splits the % first or last line from the rest of the equation, you can always fall -% back to\cs{pagebreak}, I suppose. -% +% back to\cs{pagebreak}, I suppose. +% % \begin{macrocode} \clubpenalty\@M \widowpenalty\@M \interlinepenalty\eqinterlinepenalty \linepenalty199 \exhyphenpenalty5000 % was 9999: make breaks at, eg. \* a bit easier. % \end{macrocode} -% For equations, hfuzz should be at least 1pt. +% For equations, hfuzz should be at least 1pt. % But we have to fake it a little because we are running the equation -% through \tex 's paragrapher. +% through \tex 's paragrapher. % In our trials we use minus 1pt in the rightskip rather than hfuzz; % and we must do the same during final breaking of the equation, otherwise % in borderline cases \tex will use two lines instead of one when our -% trial indicated that one line would be enough. +% trial indicated that one line would be enough. % \begin{macrocode} \ifdim\hfuzz<\p@ \hfuzz\p@ \fi %\hfuzz=2pt @@ -5353,16 +5355,16 @@ and the derived files % \hfuzz\z@ % \end{macrocode} % Make sure we skip \tex 's preliminary line-breaking pass to save -% processing time. +% processing time. % \begin{macrocode} \tolerance9999 \pretolerance\m@ne } % \end{macrocode} % \end{macro} -% -% -% -% +% +% +% +% % \section{Equation layout options} % Using the notation C centered, I indented (applied to % the equation body), T top, B bottom, M @@ -5370,14 +5372,14 @@ and the derived files % the commonly used equation types are C, CRM, CRB, CLM, CLT, % I, IRM, IRB, ILM, ILT. In other words, CLM stands for Centered equation % body with Left-hand Middle-placed equation number, and IRB stands for -% Indented equation with Right-hand Bottom-placed equation number. +% Indented equation with Right-hand Bottom-placed equation number. % % Here are some general thoughts on how to place an equation % tag. Currently it does not work as desired: the L option positions % the tag app. 10 lines below the math expression, the RM doesn't % position the tag on the baseline for single-line math % expressions. Therefore I am going to first write what I think is -% supposed to happen and then implement it. +% supposed to happen and then implement it. % % Below is a small list where especially the two three specifications % should be quite obvious, I just don't want to forget anything and it @@ -5402,7 +5404,7 @@ and the derived files % positioned exactly halfway between the baseline of the top line of % the display and the baseline of the bottom line of the display. % \end{description} -% +% % Definitions 1--3 are almost axiomatic in their % simplicity. Definition~4 is different because I saw at least two % possibilities for which area to span: @@ -5410,7 +5412,7 @@ and the derived files % \item Calculate distance from top of top line to the bottom of the % bottom line, position the vertical center of the tag exactly % halfway between those two extremes. -% +% % \item Calculate the distance from the baseline of the top line to % the baseline of the bottom line, position the baseline of the tag % exactly halfway between these two extremes. @@ -5433,22 +5435,22 @@ and the derived files % than the tag. % % \section{Centered Right-Number Equations} -% +% % \begin{macro}{\eq@dump@box} % \arg1 might be \cs{unhbox} or \cs{unhcopy}; \arg2 is -% the box name. +% the box name. % \begin{macrocode} \def\eq@dump@box#1#2{% %\debug@box#1% \noindent #1#2\setbox\f@ur\lastbox \setbox\tw@\lastbox % \end{macrocode} % If the LHS contains shrinkable glue, in an L layout the alignment -% could be thrown off if the first line is shrunk noticeably. -% For the time being, disable shrinking on the left-hand side. +% could be thrown off if the first line is shrunk noticeably. +% For the time being, disable shrinking on the left-hand side. % The proper solution requires more work \begin{dn} % mjd,1999/03/17 % \end{dn} -% . +% . % \begin{macrocode} \if L\eq@layout \box\tw@ \else\unhbox\tw@\fi \adjust@rel@penalty \unhbox\f@ur @@ -5464,7 +5466,7 @@ and the derived files % Given that left and right skips have been set, % typeset the frame, number and equation with the % given number side and placement -% +% % \begin{macrocode} \def\eq@typeset@Unnumbered{% \eq@typeset@frame @@ -5540,11 +5542,11 @@ and the derived files %<*trace> \def\debug@showformat{% \breqn@debugmsg{Formatting Layout:\eq@layout\space Center/indent: \eqindent\space - Number placement \eqnumside\eqnumplace: + Number placement \eqnumside\eqnumplace: \MessageBreak==== \eq@linewidth=\the\eq@linewidth, \@totalleftmargin=\the\@totalleftmargin, \MessageBreak==== Centered Lines=\theb@@le\eq@centerlines, Shift Number=\theb@@le\eq@shiftnumber, \MessageBreak==== \eq@wdT=\the\eq@wdT, \eq@wdMin=\the\eq@wdMin, - \MessageBreak==== LHS=\theb@@le\EQ@hasLHS: \eq@wdL=\the\eq@wdL, + \MessageBreak==== LHS=\theb@@le\EQ@hasLHS: \eq@wdL=\the\eq@wdL, \MessageBreak==== \eq@firstht=\the\eq@firstht, \eq@vspan=\the\eq@vspan \MessageBreak==== \eq@wdNum=\the\eq@wdNum \MessageBreak==== \eq@wdCond=\the\eq@wdCond, \conditionsep=\the\conditionsep, @@ -5556,7 +5558,7 @@ and the derived files %</trace> % \end{macrocode} % -% Set left \& right skips for centered equations, +% Set left \& right skips for centered equations, % making allowances for numbers (if any, right, left) and constraint. % % Amazingly, I've managed to collect all the positioning logic for @@ -5656,7 +5658,7 @@ and the derived files % Some things handled by eq@C@setsides that probably apply here???? % \begin{itemize} % \item centerlines -% \item \cs{@totalleftmargin}: SHOULD we move farther right? +% \item \cs{@totalleftmargin}: SHOULD we move farther right? % \end{itemize} % Leftskip is normally just the requested indentation % \begin{macrocode} @@ -5728,7 +5730,7 @@ and the derived files % The \cs{eqframe} function is called in vertical mode % with the reference point at the top left corner of the equation, including % any allowance for \cs{fboxsep}. Its arguments are the width -% and height of the equation body, plus fboxsep. +% and height of the equation body, plus fboxsep. % \changes{v0.95}{2007/12/03}{Made \cs{eqframe} obey the key settings % for frame and framesep.} % \begin{macrocode} @@ -5763,7 +5765,7 @@ and the derived files \fi } % \end{macrocode} -% +% % \section{Delimiter handling} % The special handling of delimiters is rather complex, but % everything is driven by two motives: to mark line breaks inside @@ -5772,21 +5774,21 @@ and the derived files % \cs{left} and \cs{right} delimiters are not absolutely % prohibited. To control the extent to which line breaks will be % allowed inside delimiters, set \cs{eqbreakdepth} to the maximum -% nesting depth. Depth 0 means never break inside delimiters. -% -% Note: \cs{eqbreakdepth} is not implemented as a \latex +% nesting depth. Depth 0 means never break inside delimiters. +% +% Note: \cs{eqbreakdepth} is not implemented as a \latex % counter because changes done by \cs{setcounter} \etc are always -% global. -% +% global. +% % It would be natural to use grouping in the implementation % \mdash at an open delimiter, start a group and increase mathbin % penalties; at a close delimiter, close the group. But this gives us % trouble in situations like the \env{array} environment, where a % close delimiter might fall in a different cell of the \cs{halign} -% than the open delimiter. +% than the open delimiter. % Ok then, here's what we want the various possibilities to % expand to. Note that \cs{right} and \cs{biggr} are -% being unnaturally applied to a naturally open-type delimiter. +% being unnaturally applied to a naturally open-type delimiter. % \begin{literalcode} % ( -> \delimiter"4... \after@open % \left( -> @@ -5804,23 +5806,23 @@ and the derived files % \biggm\vert -> % \mathrel{\@@left \delimiter... \vrule...\@@right.} % \end{literalcode} -% +% % First save the primitive meanings of \cs{left} and -% \cs{right}. +% \cs{right}. % \begin{macrocode} \@saveprimitive\left\@@left \@saveprimitive\right\@@right % \end{macrocode} -% +% % The variable \cs{lr@level} is used by the first mathrel in % an equation to tell whether it is at top level: yes? break and measure -% the LHS, no? keep going. +% the LHS, no? keep going. % \begin{macrocode} \newcount\lr@level % \end{macrocode} -% +% % It would be nice to have better error checking here if the -% argument is not a delimiter symbol at all. +% argument is not a delimiter symbol at all. % % Ah, a small problem when renaming commands. In the original version, % |\delimiter| is hijacked in order to remove the |\after@bidir| (or @@ -5834,7 +5836,7 @@ and the derived files \@ifnext .{\eq@nullright}{\begingroup \let \math_delimiter:NNnNn \eq@right@a}% } % \end{macrocode} -% The arguments are: \arg1 delim symbol, \arg2 . +% The arguments are: \arg1 delim symbol, \arg2 . % \begin{macrocode} %\def\eq@left@a#1 #2{\endgroup\@@left\delimiter#1\space \after@open} \def\eq@left@a#1#2#3#4#5#6{\endgroup @@ -5844,26 +5846,26 @@ and the derived files } \ExplSyntaxOff % \end{macrocode} -% The null versions. +% The null versions. % \begin{macrocode} \def\eq@nullleft#1{\@@left#1\after@open} \def\eq@nullright#1{\@@right#1\after@close} % \end{macrocode} -% -% Here is the normal operation of \cs{biggl}, for example. +% +% Here is the normal operation of \cs{biggl}, for example. % \begin{literalcode} % \biggl ->\mathopen \bigg % {\mathopen} -% +% % \bigg #1->{\hbox {$\left #1\vbox to14.5\p@ {}\right .\n@space $}} % #1<-( % \end{literalcode} % ^^AFor paren matching: ) % Like \cs{left}, \cs{biggl} coerces its delimiter to be of -% mathopen type even if its natural inclination is towards closing. -% +% mathopen type even if its natural inclination is towards closing. +% % The function \cs{delim@reset} makes delimiter characters -% work just about the same as they would in normal \latex . +% work just about the same as they would in normal \latex . % \begin{macrocode} \def\delim@reset{% \let\after@open\relax \let\after@close\relax @@ -5875,7 +5877,7 @@ and the derived files % variants will have hard-coded point sizes as inherited through the ages % from \fn{plain.tex}. In this case we can kluge a little by % setting \cs{big@size} to \cs{p@}, so that our definition of -% \cs{bBigg@} will work equally well with the different multipliers. +% \cs{bBigg@} will work equally well with the different multipliers. % \begin{macrocode} \@ifundefined{bBigg@}{% not defined \let\big@size\p@ @@ -5891,7 +5893,7 @@ and the derived files }% } % \end{macrocode} -% . +% . % \begin{macrocode} \def\bigl#1{\mathopen\big{#1}\after@open} \def\Bigl#1{\mathopen\Big{#1}\after@open} @@ -5915,20 +5917,20 @@ and the derived files %%\def\bigggm{\mathrel\biggg} %%\def\Bigggm{\mathrel\Biggg} % \end{macrocode} -% -% +% +% % \begin{macro}{\m@@DeL} \begin{macro}{\d@@DeL} % \begin{macro}{\m@@DeR} \begin{macro}{\d@@DeR} % \begin{macro}{\m@@DeB} \begin{macro}{\d@@DeB} % Original definition of \cs{m@DeL} from % \pkg{flexisym} is as follows. \cs{m@DeR} and -% \cs{m@DeB} are the same except for the math class number. +% \cs{m@DeB} are the same except for the math class number. % \begin{literalcode} % \def\m@DeL#1#2#3{% % \delimiter"4\@xp\delim@a\csname sd@#1#2#3\endcsname #1#2#3 } % \end{literalcode} -% -% Save the existing meanings of \cs{m@De[LRB]}. +% +% Save the existing meanings of \cs{m@De[LRB]}. % % Define display variants of DeL, DeR, DeB % \begin{macrocode} @@ -5960,18 +5962,18 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% +% % \begin{macro}{\after@open} % \begin{macro}{\after@close} % \begin{macro}{\after@bidir} % \begin{macro}{\zero@bop} % \begin{macro}{\bop@incr} % \cs{after@open} and \cs{after@close} are carefully -% written to avoid the use of grouping and to run as fast as possible. +% written to avoid the use of grouping and to run as fast as possible. % \cs{zero@bop} is the value used for \cs{prebinoppenalty} at % delimiter level 0, while \cs{bop@incr} is added for each level of % nesting. The standard values provide that breaks will be prohibited -% within delimiters below nesting level 2. +% within delimiters below nesting level 2. % \begin{macrocode} \let\after@bidir\@empty \mathchardef\zero@bop=888 \relax @@ -5985,7 +5987,7 @@ and the derived files % \end{macrocode} % Inside delimiters, add some fillglue before binops so that a broken off % portion will get thrown flush right. Also shift it slightly -% further to the right to ensure that it clears the opening delimiter. +% further to the right to ensure that it clears the opening delimiter. % \begin{macrocode} \else \eq@binoffset=\eqbinoffset @@ -6003,7 +6005,7 @@ and the derived files \fi % \end{macrocode} % When we get back to level 0, no delimiters, remove the stretch -% component of \cs{eqbinoffset}. +% component of \cs{eqbinoffset}. % \begin{macrocode} \ifnum\lr@level<\@ne \eq@binoffset=\eqbinoffset\relax \fi } @@ -6016,16 +6018,16 @@ and the derived files % \end{macro} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\subsup@flag} % \begin{macro}{\ss@scan} % \cs{ss@scan} is called after a \cs{right} delimiter and -% looks ahead for sub and superscript tokens. +% looks ahead for sub and superscript tokens. % If sub and/or superscripts are present, we adjust the line-ending -% penalty to distinguish the various cases (sub, sup, or both). +% penalty to distinguish the various cases (sub, sup, or both). % This facilitates the later work of excising the sub/sup box and -% reattaching it with proper shifting. +% reattaching it with proper shifting. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Sub/Superscript measurement @@ -6033,22 +6035,22 @@ and the derived files % BRM: There's possibly a problem here. % When \cs{ss@scan} gets invoked after a \cs{left}...\cs{right} pair in the LHS % during \cs{eq@measure}, it produces an extra box (marked with \cs{penalty} 3); -% Apparently \cs{eq@repack} expects only one for the LHS. +% Apparently \cs{eq@repack} expects only one for the LHS. % The end result is \cs{eq@wdL} => 0.0pt !!! (or at least very small) % \begin{macrocode} \let\subsup@flag=\count@ \def\ss@delim@a@new#1#2#3#4#5{\xdef\right@delim@code{\number"#4#5}} % \end{macrocode} % The argument of \cs{ss@scan} is an expanded form of a -% right-delimiter macro. +% right-delimiter macro. % We want to use the last three digits in the expansion -% to define \cs{right@delim@code}. +% to define \cs{right@delim@code}. % The assignment to a temp register is just a way to scan away the -% leading digits that we don't care about. +% leading digits that we don't care about. % \begin{macrocode} \def\ss@scan#1{% % \end{macrocode} -% This part of the code. +% This part of the code. % \begin{macrocode} \begingroup \ss@delim@a@new #1% @@ -6068,7 +6070,7 @@ and the derived files \breqn@next\@let@token } % \end{macrocode} -% +% % \begin{macrocode} \ExplSyntaxOn \def\ss@scan@b#1#2{#1{% @@ -6083,7 +6085,7 @@ and the derived files % \end{macrocode} % We need to keep following glue from disappearing % \mdash \eg , a thickmuskip or medmuskip from a following mathrel or -% mathbin symbol. +% mathbin symbol. % \begin{macrocode} \def\ss@finish{% \@@vadjust{\penalty\thr@@}% @@ -6092,13 +6094,13 @@ and the derived files % \end{macrocode} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\eq@lrunpack} % For \cs{eq@lrunpack} we need to break open a left-right box and % reset it just in case it contains any more special breaks. After % it is unpacked the recursion of \cs{eq@repack} will continue, -% acting on the newly created lines. +% acting on the newly created lines. % \begin{macrocode} \def\eq@lrunpack{\setbox\z@\lastbox % \end{macrocode} @@ -6106,14 +6108,14 @@ and the derived files % baselineskip for the next line, otherwise we would end up with % three items of glue (counting parskip) at this point instead of % the single one expected by our recursive repacking -% procedure. +% procedure. % \begin{macrocode} \unskip \nointerlineskip % \end{macrocode} % Then we open box 0, take the left-right box at the right end of % it, and break that open. If the line-ending penalty is greater than % 10000, it means a sub and/or superscript is present on the right -% delimiter and the box containing them must be taken off first. +% delimiter and the box containing them must be taken off first. % \begin{macrocode} \noindent\unhbox\z@ \unskip \subsup@flag-\lastpenalty \unpenalty @@ -6135,7 +6137,7 @@ and the derived files % ($1\leq N\leq 9$), which would interfere with the usual % processing. Setting a null last line and discarding it dodges % this complication. The penalty value $-10001$ is a no-op case -% in the case statement of \cs{eq@repacka}. +% in the case statement of \cs{eq@repacka}. % \begin{macrocode} \penalty-\@Mi\z@rule\@@par \setbox\z@\lastbox \unskip\unpenalty @@ -6143,15 +6145,15 @@ and the derived files } % \end{macrocode} % \end{macro} -% -% +% +% % \begin{macro}{\lrss@reattach} -% +% % Well, for a small self-contained computation, carefully % hand-allocated dimens should be safe enough. But let the % maintainer beware! This code cannot be arbitrarily transplanted % or shaken up without regard to grouping and interaction with other -% hand-allocated dimens. +% hand-allocated dimens. % \begin{macrocode} \dimendef\sub@depth=8 \dimendef\sup@base=6 \dimendef\prelim@sub@depth=4 \dimendef\prelim@sup@base=2 @@ -6161,22 +6163,22 @@ and the derived files \def\sub@base@two{\fontdimen17\textfont\tw@} % \end{macrocode} % Note that only \cs{sup@drop} and \cs{sub@drop} come from -% the next smaller math style. +% the next smaller math style. % \begin{macrocode} \def\sup@drop{\fontdimen18\scriptfont\tw@} \def\sub@drop{\fontdimen19\scriptfont\tw@} % \end{macrocode} % Provide a mnemonic name for the math axis fontdimen, if it's not -% already defined. +% already defined. % \begin{macrocode} \providecommand{\mathaxis}{\fontdimen22\textfont\tw@} % \end{macrocode} -% +% % Assumes box 2 contains the sub/sup and box 0 contains the left-right % box. This is just a repeat of the algorithm in \fn{tex.web}, % with some modest simplifications from knowing that this is only going to % be called at top level in a displayed equation, thus always mathstyle = -% uncramped displaystyle. +% uncramped displaystyle. % \begin{macrocode} \def\lrss@reattach{% \begingroup @@ -6202,7 +6204,7 @@ and the derived files \lower\sub@depth\box\tw@ } % \end{macrocode} -% +% % \begin{macrocode} \def\lr@superscript{% \sup@base\sup@base@one @@ -6213,7 +6215,7 @@ and the derived files \raise\sup@base\box\tw@ } % \end{macrocode} -% +% % \begin{macrocode} \def\lr@subsup{% \sub@depth\sub@base@two @@ -6222,14 +6224,14 @@ and the derived files \lower\sub@depth\box\tw@ } % \end{macrocode} -% +% % For delimiters that curve top and bottom, the twang factor allows % horizontal shifting of the sub and superscripts so they don't % fall too far away (or too close for that matter). This is % accomplished by arranging for (\eg ) \verb"\right\rangle" to leave % a penalty $N$ in the math list before the subsup penalty that triggers % \cs{lrss@reattach}, where $N$ is the mathcode of -% \cs{rangle} (ignoring \dquoted{small} variant). +% \cs{rangle} (ignoring \dquoted{small} variant). % \begin{macrocode} \def\twang@adjust#1{% \begingroup @@ -6243,37 +6245,37 @@ and the derived files } % \end{macrocode} % The method used to apply a \dquoted{twang} adjustment is just an -% approximate solution to a complicated problem. +% approximate solution to a complicated problem. % We make the following assumptions that hold true, approximately, % for the most common kinds of delimiters: % \begin{enumerate} -% \item -% The right delimiter is symmetrical top to bottom. -% -% -% \item There is an upper limit on the size of the adjustment. -% -% +% \item +% The right delimiter is symmetrical top to bottom. +% +% +% \item There is an upper limit on the size of the adjustment. +% +% % \item When we have a superscript, the amount of left-skew that we % want to apply is linearly proportional to the distance of the bottom % left corner of the superscript from the math axis, with the ratio -% depending on the shape of the delimiter symbol. -% -% +% depending on the shape of the delimiter symbol. +% +% % \end{enumerate} -% . +% . % By symmetry, Assumption 3 is true also for subscripts (upper left -% corner). +% corner). % Assumption 2 is more obviously true for parens and braces, where the % largest super-extended versions consist of truly vertical parts with -% slight bending on the ends, than it is for a \cs{rangle}. +% slight bending on the ends, than it is for a \cs{rangle}. % But suppose for the sake of expediency that it is -% approximately true for rangle symbols also. -% -% +% approximately true for rangle symbols also. +% +% % Here are some passable twang factors for the most common types of % delimiters in \fn{cmex10}, as determined by rough measurements from -% magnified printouts. +% magnified printouts. % \begin{literalcode} % vert bar, double vert: 0 % square bracket: -.1 @@ -6282,7 +6284,7 @@ and the derived files % rangle: -.4 % \end{literalcode} % Let's provide a non-private command for changing the twang factor of -% a given symbol. +% a given symbol. % \begin{macrocode} \newcommand{\DeclareTwang}[2]{% \ifcat.\@nx#1\begingroup @@ -6293,7 +6295,7 @@ and the derived files } % \end{macrocode} % Note that this is dependent on a fixed interpretation of the -% mathgroup number \arg4 . +% mathgroup number \arg4 . % \begin{macrocode} \def\decl@twang#1#2#3#4#5#6#7\@nil#8{% \@namedef{twang@\number"#4#5#6}{#8}% @@ -6303,22 +6305,22 @@ and the derived files \DeclareTwang{\rbrace}{-.25} % \end{macrocode} % \end{macro} -% -% -% +% +% +% % \section{Series of expressions} % The \env{dseries} environment is for a display % containing a series of expressions of the form \quoted{A, B} or \quoted{A and % B} or \quoted{A, B, and C} and so on. Typically the expressions % are separated by a double quad of space. If the expressions in a % series don't all fit in a single line, they are continued onto extra -% lines in a ragged-center format. +% lines in a ragged-center format. % \begin{macrocode} \newenvironment{dseries}{\let\eq@hasNumber\@True \@optarg\@dseries{}}{}% \def\enddseries#1{\check@punct@or@qed}% % \end{macrocode} -% -% And the unnumbered version of same. +% +% And the unnumbered version of same. % \begin{macrocode} \newenvironment{dseries*}{\let\eq@hasNumber\@False \@optarg\@dseries{}}{}% \@namedef{enddseries*}#1{\check@punct@or@qed}% @@ -6326,7 +6328,7 @@ and the derived files \def\@dseries[#1]{% % \end{macrocode} % Turn off the special breaking behavior of mathrels \etc for math -% formulas embedded in a \env{dseries} environment. +% formulas embedded in a \env{dseries} environment. % %BRM: DS Expermient: Use alternative display setup. % \begin{macrocode} @@ -6368,7 +6370,7 @@ and the derived files \eq@trial@b{M}{}% } % \end{macrocode} -% BRM: Tricky to get right value here. +% BRM: Tricky to get right value here. % Prefer breaks between formula if we've got to break at all. % \begin{macrocode} %\def\intermath@penalty{-201}% @@ -6380,10 +6382,10 @@ and the derived files \newcommand\dquad{\hskip0.6em minus.3em} \newcommand\premath{}\newcommand\postmath{} % \end{macrocode} -% +% % Change the \env{math} environment to add % \cs{premath} and \cs{postmath}. They are no-ops except -% inside a \env{dseries} environment. +% inside a \env{dseries} environment. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Redefinition of math environment to take advantage of dseries env. @@ -6400,10 +6402,10 @@ and the derived files \postmath } % \end{macrocode} -% -% -% -% +% +% +% +% % \section{Equation groups} % For many equation groups the strategy is easy: just center each % equation individually following the normal rules for a single @@ -6411,8 +6413,8 @@ and the derived files % others, a single number applies to the whole group (and may need to be % vertically centered on the height of the group). In still other % groups, the equations share a parent number but get individual equation -% numbers consisting of parent number plus a letter. -% +% numbers consisting of parent number plus a letter. +% % If the main relation symbols in a group of equations are to be % aligned, then the final alignment computations cannot be done until the % end of the group \mdash \ie , the horizontal positioning of the first @@ -6424,11 +6426,11 @@ and the derived files % they may affect the line breaks. If the second trial for an % equation fails (one of its lines exceeds the available width), but % the first one succeeded, fall back to the first trial, \ie let that -% equation fall out of alignment with the rest of the group. -% -% +% equation fall out of alignment with the rest of the group. +% +% % All right then, here is the general idea of the whole algorithm for -% group alignment. +% group alignment. % To start with, ignore the possibility of equation numbers so that % our equation group has the form: % \begin{literalcode} @@ -6438,29 +6440,29 @@ and the derived files % LHS[3] RHS[3,1] RHS[3,2] ... RHS[3,n[3]] % \end{literalcode} % The number of RHS's might not be the same for all of the -% equations. +% equations. % First, accumulate all of the equation contents in a queue, checking % along the way to find the maximum width of all the LHS's and the maximum -% width of all the RHS's. -% Call these widths maxwd\_L and maxwd\_R. +% width of all the RHS's. +% Call these widths maxwd\_L and maxwd\_R. % Clearly if maxwd\_L + maxwd\_R is less than or equal to the available -% equation width then aligning all of the equations is going to be simple. -% -% +% equation width then aligning all of the equations is going to be simple. +% +% % Otherwise we are going to have to break at least one of the RHS's -% and/or at least one of the LHS's. +% and/or at least one of the LHS's. % The first thing to try is using maxwd\_L for the LHS's and breaking -% all the RHS's as needed to fit in the remaining space. +% all the RHS's as needed to fit in the remaining space. % However, this might be a really dumb strategy if one or more of the -% LHS's is extraordinarily wide. +% LHS's is extraordinarily wide. % So before trying that we check whether maxwd\_L exceeds some -% threshold width beyond which it would be unsensible not to break the LHS. +% threshold width beyond which it would be unsensible not to break the LHS. % Such as, max(one-third of the available width; six ems), or -% something like that. -% Or how about this? +% something like that. +% Or how about this? % Compare the average LHS width and RHS width and divide up the available -% width in the same ratio for line breaking purposes. -% +% width in the same ratio for line breaking purposes. +% % % BRM: Fairly broad changes; it mostly didn't work before (for me). % @@ -6469,7 +6471,7 @@ and the derived files % The number is the next equation number. % There are 2 cases: % \begin{itemize} -% \item If ANY contained equations are numbered (|\begin{dmath}|), +% \item If ANY contained equations are numbered (|\begin{dmath}|), % then they will be subnumbered: eg 1.1a % and the group number is not otherwise displayed. % \item If ALL contained equations are unnumbered (|\begin{dmath*}|) @@ -6488,7 +6490,7 @@ and the derived files % NOTE: Does \cs{label} attach to the expected thing? % % \item[For number placement] We use shiftnumber placement on ALL equations -% if ANY equations need it, or if an unnumbered equation is too +% if ANY equations need it, or if an unnumbered equation is too % wide to be aligned, given that the group or other eqns are numbered. % [does this latter case interract with the chosen alignment?] % @@ -6503,7 +6505,7 @@ and the derived files % % \begin{macro}{\eq@group} % \begin{macro}{\GRP@top} -% +% % \begin{macrocode} \let\eq@group\@False \let\grp@shiftnumber\@False @@ -6513,9 +6515,9 @@ and the derived files % \end{macrocode} % \end{macro} % \end{macro} -% -% -% Definition of the \env{dgroup} environment. +% +% +% Definition of the \env{dgroup} environment. % \begin{macrocode} \newenvironment{dgroup}{% \let\grp@hasNumber\@True\@optarg\@dgroup{}% @@ -6523,7 +6525,7 @@ and the derived files \end@dgroup } % \end{macrocode} -% And the. +% And the. % \begin{macrocode} \newtoks\GRP@queue \newenvironment{dgroup*}{% @@ -6551,11 +6553,11 @@ and the derived files } % \end{macrocode} % If the \pkg{amsmath} package is not loaded the parentequation -% counter will not be defined. +% counter will not be defined. % \begin{macrocode} \@ifundefined{c@parentequation}{\newcounter{parentequation}}{} % \end{macrocode} -% Init. +% Init. % \begin{macrocode} \global\let\GRP@label\@empty \def\add@grp@label{% @@ -6568,7 +6570,7 @@ and the derived files % set the current number in \cs{EQ@numbox}. The % \cs{eq@setnumber} function does everything we need here. If % the child equations are unnumbered, \cs{EQ@numbox} will retain the -% group number at the end of the group. +% group number at the end of the group. % \begin{macrocode} \def\grp@setnumber{% \global\let\GRP@label\next@label \global\let\next@label\@empty @@ -6580,7 +6582,7 @@ and the derived files % \cn{theequation}. \cn{edef} is necessary to expand the % current value of the equation counter. This might in rare cases % cause something to blow up, in which case the user needs to add -% \cn{protect}. +% \cn{protect}. % \begin{macrocode} \global\sbox\GRP@numbox{\unhbox\EQ@numbox}% \grp@wdNum\eq@wdNum @@ -6593,14 +6595,14 @@ and the derived files % \end{macrocode} % And set the equation counter to 0, so that the normal incrementing % processes will produce the desired results if the child equations are -% numbered. +% numbered. % \begin{macrocode} \setcounter{equation}{0}% \def\theequation{\theparentequation\alph{equation}}% %<trace> \breqn@debugmsg{Group Number \theequation}% } % \end{macrocode} -% At the end of a group, need to reset the equation counter. +% At the end of a group, need to reset the equation counter. % \begin{macrocode} \def\grp@resetnumber{% \setcounter{equation}{\value{parentequation}}% @@ -6615,8 +6617,8 @@ and the derived files % \cs{EQ@box}, \cs{EQ@copy}, \cs{penalty} 1 and \cs{EQ@numbox}. % \end{itemize} % \begin{macro}{\grp@push} -% -% For putting the equation on a queue. +% +% For putting the equation on a queue. % \begin{macrocode} \def\grp@push{% \global\GRP@queue\@xp\@xp\@xp{\@xp\the\@xp\GRP@queue @@ -6645,8 +6647,8 @@ and the derived files % \end{macrocode} % \end{macro} % \begin{macro}{\grp@finish} -% -% Set accumulated equations from a \env{dgroup} environment. +% +% Set accumulated equations from a \env{dgroup} environment. % % BRM: Questionable patch!! % When processing the \cs{GRP@queue}, put it into a \cs{vbox}, then \cs{unvbox} it. @@ -6665,7 +6667,7 @@ and the derived files \setlength\dim@a{\grp@wdL+\grp@wdR-4em}% Allowance for shrink? \if\grp@aligned \ifdim\dim@a>\grp@linewidth - \global\let\grp@aligned\@False + \global\let\grp@aligned\@False \fi \fi % \end{macrocode} @@ -6751,8 +6753,8 @@ and the derived files % \end{macro} % % \begin{macro}{\eqgrp@elt} -% -% Mission is to typeset the next equation from the group queue. +% +% Mission is to typeset the next equation from the group queue. % % The arg is an \cs{EQ@trial} % \begin{macrocode} @@ -6824,9 +6826,9 @@ and the derived files % \begin{macrocode} } % \end{macrocode} -% -% -% +% +% +% % \section{The \env{darray} environment} % There are two potential applications for darray. One % is like eqnarray where the natural structure of the material crosses the @@ -6842,15 +6844,15 @@ and the derived files % cross purposes with the feature of allowing interline stretch and page % breaks within a multiline array of equations, the \env{darray} % environment is targeted primarily as an alternative to -% \env{eqnarray}, and does not support vertical ruling. -% +% \env{eqnarray}, and does not support vertical ruling. +% % Overall strategy for \env{darray} is to use % \cs{halign} for the body. In the case of a group, use a -% single halign for the whole group! +% single halign for the whole group! % \begin{aside} -% What about intertext? +% What about intertext? % \end{aside} -% +% % That's the most reliable way % to get accurate column widths. Don't spread the halign to the % column width, just use the natural width. Then, if we repack the @@ -6858,17 +6860,17 @@ and the derived files % done for dmath, and twiddle a bit with the widths of the first and last % cell in each row, we can use the same algorithms for centering and % equation number placement as dmath! As well as handling footnotes -% and vadjust objects the same way. -% +% and vadjust objects the same way. +% % We can't just use \cs{arraycolsep} for \env{darray}, if -% we want to be able to change it without screwing up interior arrays. +% we want to be able to change it without screwing up interior arrays. % So let's make a new colsep variable. The initial value is -% \quoted{2em, but let it shrink if necessary}. +% \quoted{2em, but let it shrink if necessary}. % \begin{macrocode} \newskip\darraycolsep \darraycolsep 20pt plus1fil minus12pt % \end{macrocode} % Let's make a nice big default setup with eighteen columns, split up -% into six sets of lcr like \env{eqnarray}. +% into six sets of lcr like \env{eqnarray}. % \begin{macrocode} \newcount\cur@row \newcount\cur@col \def\@tempa#1#2#3{% @@ -6901,7 +6903,7 @@ and the derived files % \end{macrocode} % Init the halign preamble to empty, then unless the \quoted{cols} key is % used to provide a non-null preamble just use the -% default darray preamble which is a multiple lcr. +% default darray preamble which is a multiple lcr. % \begin{macrocode} \global\let\@preamble\@empty \setkeys{breqn}{#1}% @@ -6918,7 +6920,7 @@ and the derived files \halign\@xp\bgroup\@preamble } % \end{macrocode} -% Assimilate following punctuation. +% Assimilate following punctuation. % \begin{macrocode} \def\enddarray#1{\check@punct@or@qed} \def\end@darray{% @@ -6927,9 +6929,9 @@ and the derived files \egroup } % \end{macrocode} -% +% % The \cs{dar@capture} function steps back through the -% list of row boxes and grinds them up in the best possible way. +% list of row boxes and grinds them up in the best possible way. % \begin{macrocode} \def\dar@capture{% %% \showboxbreadth\maxdimen\showboxdepth99\showlists @@ -6937,9 +6939,9 @@ and the derived files \dar@repack } % \end{macrocode} -% +% % The \cs{dar@repack} function is a variation of -% \cs{eq@repack}. +% \cs{eq@repack}. % \begin{macrocode} \def\dar@repack{% \unpenalty @@ -6954,15 +6956,15 @@ and the derived files \dar@repack } % \end{macrocode} -% -% -% -% +% +% +% +% % \section{Miscellaneous} % The \cs{condition} command. With -% the star form, set the argument in math mode instead of text mode. +% the star form, set the argument in math mode instead of text mode. % In a series of conditions, use less space between members of the -% series than between the conditions and the main equation body. +% series than between the conditions and the main equation body. % % WSPR: tidied/fixed things up as it made sense to me but might have % broken something else! @@ -6993,7 +6995,7 @@ and the derived files \endgroup} % \end{macrocode} % \end{macro} -% +% % The \env{dsuspend} environment. First the old one that didn't work. % \begin{macrocode} \newenvironment{XXXXdsuspend}{% @@ -7001,7 +7003,7 @@ and the derived files % \end{macrocode} % If we are inside a list environment, \cs{displayindent} and % \cs{displaywidth} give us \cs{@totalleftmargin} and -% \cs{linewidth}. +% \cs{linewidth}. % \begin{macrocode} \parshape 1 \displayindent \displaywidth\relax \hsize=\columnwidth \noindent\ignorespaces @@ -7009,14 +7011,14 @@ and the derived files \par\egroup % \end{macrocode} % Let's try giving \cs{EQ@box} the correct height for the first -% line and \cs{EQ@copy} the depth of the last line. +% line and \cs{EQ@copy} the depth of the last line. % \begin{macrocode} \global\setbox\GRP@box\vbox{% \vbox{\copy\EQ@box\vtop{\unvbox\EQ@box}}% \unvbox\GRP@box }% % \end{macrocode} -% Need to add a dummy element to \cs{GRP@queue}. +% Need to add a dummy element to \cs{GRP@queue}. % \begin{macrocode} \global\GRP@queue\@xp{\the\GRP@queue \@elt{\gdef\EQ@trial{}}% @@ -7043,26 +7045,26 @@ and the derived files % \end{macrocode} % Allow \cn{intertext} as a short form of the \env{dsuspend} % environment; it's more convenient to write, but it doesn't support -% embedded verbatim because it reads the material as a macro argument. +% embedded verbatim because it reads the material as a macro argument. % To support simultaneous use of \pkg{amsmath} and % \pkg{breqn}, the user command \cs{intertext} is left alone -% until we enter a \pkg{breqn} environment. +% until we enter a \pkg{breqn} environment. % \begin{macrocode} \newcommand\breqn@intertext[1]{\dsuspend#1\enddsuspend} % \end{macrocode} -% -% +% +% % \begin{macro}{\*} % \begin{macro}{\discretionarytimes} % Discretionary times sign. Standard \latex definition % serves only for inline math. Should the thin space be -% included? Not sure. +% included? Not sure. % \begin{macrocode} \renewcommand{\*}{% \if@display % \end{macrocode} % Since \cs{eq@binoffset} is mu-glue, we can't use it directly -% with \cs{kern} but have to measure it separately in a box. +% with \cs{kern} but have to measure it separately in a box. % \begin{macrocode} \setbox\z@\hbox{\mathsurround\z@$\mkern\eq@binoffset$}% \discretionary{}{% @@ -7075,254 +7077,254 @@ and the derived files } % \end{macrocode} % This is only the symbol; it can be changed to some other symbol if -% desired. +% desired. % \begin{macrocode} \newcommand{\discretionarytimes}{\times} % \end{macrocode} % \end{macro} % \end{macro} -% -% +% +% % \begin{macro}{\nref} -% +% % This is like \cs{ref} but doesn't apply font changes or other -% guff if the reference is undefined. -% And it is fully expandable for use as a label value. +% guff if the reference is undefined. +% And it is fully expandable for use as a label value. % \begin{aside} -% +% % Can break with Babel if author uses active characters in label key; % need to address that \begin{dn} % mjd,1999/01/21 % \end{dn} -% . +% . % \end{aside} -% +% % \begin{macrocode} \def\nref#1{\@xp\@nref\csname r@#1\endcsname} \def\@nref#1#2{\ifx\relax#1??\else \@xp\@firstoftwo#1\fi} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \end{macrocode} % \end{macro} -% -% -% -% -% +% +% +% +% +% % \section{Wrap-up} -% The usual endinput. +% The usual endinput. % \begin{macrocode} %</package> % \end{macrocode} -% -% -% -% +% +% +% +% % \section{To do} % \begin{enumerate} -% \item Alignment for equation groups. -% -% -% \item -% Use dpc's code for package options in keyval form. -% -% \item +% \item Alignment for equation groups. +% +% +% \item +% Use dpc's code for package options in keyval form. +% +% \item % Encapsulate \dquoted{break math} into a subroutine taking suitable -% arguments. -% -% \item -% Need a density check for layout S when linewidth is very small. -% -% \item +% arguments. +% +% \item +% Need a density check for layout S when linewidth is very small. +% +% \item % Make \verb":=" trigger a warning about using \cs{coloneq} -% instead. -% +% instead. +% % \item Ill-centered multiline equation (three-line case) in -% test008. -% -% \item Attaching a single group number. -% -% -% \item -% Make sure to dump out box registers after done using them. -% -% \item Do the implementation for \cs{eq@resume@parshape}. -% -% -% \item Check on stackrel and buildrel and relbar and ???. -% -% -% \item Test math symbols at the beginning of array cells. -% -% \item Test \dbslash cmd in and out of delims. -% +% test008. +% +% \item Attaching a single group number. +% +% +% \item +% Make sure to dump out box registers after done using them. +% +% \item Do the implementation for \cs{eq@resume@parshape}. +% +% +% \item Check on stackrel and buildrel and relbar and ???. +% +% +% \item Test math symbols at the beginning of array cells. +% +% \item Test \dbslash cmd in and out of delims. +% % \item Framing the equation body: the parshape and number placement -% need adjusting when a frame is present. -% -% -% \item Cascading line widths in list env. -% -% -% \item Noalign option for dmath = multline arrangement? -% -% +% need adjusting when a frame is present. +% +% +% \item Cascading line widths in list env. +% +% +% \item Noalign option for dmath = multline arrangement? +% +% % \item Nocompact option, suggested 1998/05/19 by Andrew -% Swann. -% -% +% Swann. +% +% % \item \cs{delbreak} cmd to add discretionary space at a break -% within delimiters. -% -% -% \item Reduce above/below skip when the number is shifted. -% -% +% within delimiters. +% +% +% \item Reduce above/below skip when the number is shifted. +% +% % \item Need a \cs{middelim} command for marking a delimiter symbol -% as nondirectional if it has an innate directionality \verb"()[]" \etc . -% -% -% \item +% as nondirectional if it has an innate directionality \verb"()[]" \etc . +% +% +% \item % \cs{xrightarrow} from amsmath won't participate in line -% breaking unless something extra is done. -% Make \cs{BreakingRel} and \cs{BreakingBin} functions? -% +% breaking unless something extra is done. +% Make \cs{BreakingRel} and \cs{BreakingBin} functions? +% % \item Placement of number in an indented quotation or -% abstract. -% +% abstract. +% % \item If $LHSwd > 2em$, it might be a good idea to try with % eq@indentstep = 2em before shifting the number. Currently this % doesn't happen if the first trial pass (without the number) -% succeeds with $indentstep = LHSwd > 2em$. -% -% +% succeeds with $indentstep = LHSwd > 2em$. +% +% % \item Read past \verb"\end{enumerate}" when checking -% for \verb"\end{proof}"? -% -% \item +% for \verb"\end{proof}"? +% +% \item % Look into using a \dquoted{qed-list} of environment names instead of -% checking the existence of \cs{proofqed}. -% -% \item Pick up the vadjust\slash footnote\slash mark handling. -% -% +% checking the existence of \cs{proofqed}. +% +% \item Pick up the vadjust\slash footnote\slash mark handling. +% +% % \item Forcing\slash prohibiting page breaks after\slash before -% an equation. -% -% +% an equation. +% +% % \item Adding a spanner brace on the left and individual numbers on -% the right (indy-numbered cases). -% -% +% the right (indy-numbered cases). +% +% % \item Provide \cs{shiftnumber}, \cs{holdnumber} to -% override the decision. -% +% override the decision. +% % \item Provide a mechanism for adjusting the vertical position of % the number. Here a version-specific selection macro would be -% useful. +% useful. % \begin{literalcode} % \begin{dmath}[ % style={\foredition{1}{\raisenumber{13pt}}} % ] % \end{literalcode} -% -% -% \item +% +% +% \item % Add an alignleft option for an equation group to mean, break and % align to a ladder layout as usual within the equations, but for the % group alignment used the leftmost point (for equations that don't -% have an LHS, this makes no difference). -% -% \item +% have an LHS, this makes no difference). +% +% \item % Test with Arseneau's wrapfig for parshape\slash everypar -% interaction. -% -% -% \item Fix up the macro/def elements. -% +% interaction. +% +% +% \item Fix up the macro/def elements. +% % \item Convert the literal examples in section \quoted{Equation types and -% forms} to typeset form. -% -% +% forms} to typeset form. +% +% % \item Compile comparison-examples: \eg , a standard equation % env with big left-right objects that don't shrink, versus how shrinking -% can allow it to fit. -% -% +% can allow it to fit. +% +% % \item Frame the \dquoted{figures} since they are mostly -% text. -% +% text. +% % \end{enumerate} -% -% -% +% +% +% % Possible enhancements: % \begin{enumerate} % \item Provide a \opt{pull} option meaning to pull the first % and last lines out to the margin, like the \env{multline} % environment of the \pkg{amsmath} package. Maybe this should % get an optional argument, actually, to specify the amount of space left -% at the margin. -% +% at the margin. +% % \item With the draft option, one would like to see the equation % labels in the left margin. Need to check with the -% \pkg{showkeys} package. -% -% +% \pkg{showkeys} package. +% +% % \item Options for break preferences: if there's not enough room, do % we first shift the number, or first try to break up the equation % body?. In an aligned group, does sticking to the group alignment % take precedence over minimizing the number of line breaks needed for % individual equations?. And the general preferences probably need -% to be overridable for individual instances. -% +% to be overridable for individual instances. +% % \item Extend suppress-breaks-inside-delimiters support to inline -% math (suggestion of Michael Doob). -% +% math (suggestion of Michael Doob). +% % \item Use belowdisplayshortskip above a dsuspend fragment if the % fragment is only one line and short enough compared to the equation line -% above it. -% -% -% \item Add \cs{eqfuzz} distinct from \cs{hfuzz}. -% Make use of it in the measuring phase. -% -% -% \item Provision for putting in a \quoted{continued} note. -% +% above it. +% +% +% \item Add \cs{eqfuzz} distinct from \cs{hfuzz}. +% Make use of it in the measuring phase. +% +% +% \item Provision for putting in a \quoted{continued} note. +% % \item Conserve box mem: modify frac, sub, sup, overline, underline, % sqrt, to turn off \cs{bin@break} and (less urgently) -% \cs{rel@break}. -% -% +% \cs{rel@break}. +% +% % \item More explicit support for Russian typesetting conventions (cf -% Grinchuk article). -% -% +% Grinchuk article). +% +% % \item With package option \opt{refnumbers}, % leave unnumbered all uncited equations, even if they are not done with -% the star form (Bertolazzi's easyeqn idea). -% +% the star form (Bertolazzi's easyeqn idea). +% % \item In an equation group, use a vertical bracket with the -% equation number to mark the lines contained in that equation. -% -% +% equation number to mark the lines contained in that equation. +% +% % \item For a two-line multline thingamabob, try to % make sure that the lines overlap in the middle by 2 em or whatever -% (settable design variable). -% +% (settable design variable). +% % \item Provide a separate vertical column for the principal mathrel % symbols and center them within the column if they aren't all the same % width. Maybe an option for \env{dmath}: relwidth=x, so that two -% passes are not required to get the max width of all the mathrels. +% passes are not required to get the max width of all the mathrels. % Or, no, just require it to be an halign or provide a macro to be % applied to all the shorter rels: % \begin{literalcode} % lhs \widerel{19pt}{=} ... % \xrightarrow{foo} ... % \end{literalcode} -% -% +% +% % \item try to use vadjust for keepglue -% +% % \end{enumerate} % % \PrintIndex |