Commit 9828bf98 authored by Alexandre Duret-Lutz's avatar Alexandre Duret-Lutz
Browse files

* iface/gspn/udcsfm.test, iface/gspn/udcsefm.test: New files.

* iface/gspn/Makefile.am (TESTS) Add them.
(check_PROGRAMS): Add emgspn-srg.
(efmgspn_srg_SOURCES, efmgspn_srg_LDADD, efmgspn_srg_CPPFLAGS): New
variables.
* iface/gspn/udcsltl.test, iface/gspn/udcseltl.test: Complete.
parent d06e09b9
2003-10-02 Alexandre Duret-Lutz <adl@src.lip6.fr>
* iface/gspn/udcsfm.test, iface/gspn/udcsefm.test: New files.
* iface/gspn/Makefile.am (TESTS) Add them.
(check_PROGRAMS): Add emgspn-srg.
(efmgspn_srg_SOURCES, efmgspn_srg_LDADD, efmgspn_srg_CPPFLAGS): New
variables.
* iface/gspn/udcsltl.test, iface/gspn/udcseltl.test: Complete.
* src/ltlparse/ltlscan.ll: Allow doubly quoted atomic propositions.
2003-10-01 Alexandre Duret-Lutz <aduret@src.lip6.fr>
......
......@@ -17,6 +17,7 @@ check_PROGRAMS = \
ltlgspn-rg \
ltlgspn-srg \
eltlgspn-srg \
efmgspn-srg \
fmgspn-rg \
fmgspn-srg
......@@ -36,6 +37,10 @@ eltlgspn_srg_SOURCES = ltlgspn.cc
eltlgspn_srg_LDADD = libspotgspn.la $(LIBGSPNSRG_LDFLAGS)
eltlgspn_srg_CPPFLAGS = -DCEC $(AM_CPPFLAGS)
efmgspn_srg_SOURCES = ltlgspn.cc
efmgspn_srg_LDADD = libspotgspn.la $(LIBGSPNSRG_LDFLAGS)
efmgspn_srg_CPPFLAGS = -DCEC -DFM $(AM_CPPFLAGS)
fmgspn_rg_SOURCES = ltlgspn.cc
fmgspn_rg_CPPFLAGS = -DFM $(AM_CPPFLAGS)
fmgspn_rg_LDADD = libspotgspn.la $(LIBGSPNRG_LDFLAGS)
......@@ -63,8 +68,10 @@ TESTS = \
dcswavefm.test \
dcswaveeltl.test \
udcsltl.test \
udcseltl.test
XFAIL_TESTS = udcseltl.test
udcseltl.test \
udcsfm.test \
udcsefm.test
XFAIL_TESTS = udcseltl.test udcsefm.test
# Each test case depends on defs.
check_SCRIPTS = defs
......
#! /bin/sh
. ./defs || exit 1
cp -R $srcdir/examples/udcs .
chmod +w udcs
# F(ReP1 => F(gsP1)) is false
../efmgspn-srg udcs/udcs 'F(ReP1 => F(gsP1))' ReP1 gsP1 > output
test $? = 1 || exit 1
# !F(ReP1 => F(gsP1)) is true
../efmgspn-srg udcs/udcs '!F(ReP1 => F(gsP1))' ReP1 gsP1 > output || exit 1
# !G(ReP1 => F(gsP1)) is false
../efmgspn-srg udcs/udcs '!G(ReP1 => F(gsP1))' ReP1 gsP1 > output
test $? = 1 || exit 1
......@@ -8,3 +8,10 @@ chmod +w udcs
# F(ReP1 => F(gsP1)) is false
../eltlgspn-srg udcs/udcs 'F(ReP1 => F(gsP1))' ReP1 gsP1 > output
test $? = 1 || exit 1
# !F(ReP1 => F(gsP1)) is true
../eltlgspn-srg udcs/udcs '!F(ReP1 => F(gsP1))' ReP1 gsP1 > output || exit 1
# !G(ReP1 => F(gsP1)) is false
../eltlgspn-srg udcs/udcs '!G(ReP1 => F(gsP1))' ReP1 gsP1 > output
test $? = 1 || exit 1
#! /bin/sh
. ./defs || exit 1
cp -R $srcdir/examples/udcs .
chmod +w udcs
# F(ReP1 => F(gsP1)) is false
../fmgspn-srg udcs/udcs 'F(ReP1 => F(gsP1))' ReP1 gsP1 > output
test $? = 1 || exit 1
# !F(ReP1 => F(gsP1)) is true
../fmgspn-srg udcs/udcs '!F(ReP1 => F(gsP1))' ReP1 gsP1 > output || exit 1
# !G(ReP1 => F(gsP1)) is false
../fmgspn-srg udcs/udcs '!G(ReP1 => F(gsP1))' ReP1 gsP1 > output
test $? = 1 || exit 1
......@@ -8,3 +8,10 @@ chmod +w udcs
# F(ReP1 => F(gsP1)) is false
../ltlgspn-srg udcs/udcs 'F(ReP1 => F(gsP1))' ReP1 gsP1 > output
test $? = 1 || exit 1
# !F(ReP1 => F(gsP1)) is true
../ltlgspn-srg udcs/udcs '!F(ReP1 => F(gsP1))' ReP1 gsP1 > output || exit 1
# !G(ReP1 => F(gsP1)) is false
../ltlgspn-srg udcs/udcs '!G(ReP1 => F(gsP1))' ReP1 gsP1 > output
test $? = 1 || exit 1
......@@ -3,7 +3,7 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
\def\texinfoversion{2003-05-04.08}
\def\texinfoversion{2003-08-11.14}
%
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
......@@ -257,9 +257,6 @@
\normalturnoffactive % \ in index entries must not stay \, e.g., if
% the page break happens to be in the middle of an example.
\shipout\vbox{%
% Do this early so pdf references go to the beginning of the page.
\ifpdfmakepagedest \pdfmkdest{\the\pageno} \fi
%
\ifcropmarks \vbox to \outervsize\bgroup
\hsize = \outerhsize
\vskip-\topandbottommargin
......@@ -279,6 +276,9 @@
\vbox\bgroup
\fi
%
% Do this early so pdf references go to the beginning of the page.
\ifpdfmakepagedest \pdfmkdest{\the\pageno}\fi
%
\unvbox\headlinebox
\pagebody{#1}%
\ifdim\ht\footlinebox > 0pt
......@@ -887,13 +887,13 @@ where each line of input produces a line of output.}
% @firstparagraphindent WORD
% If WORD is `none', then suppress indentation of the first paragraph
% after a section heading. If WORD is `insert', then do indentat such
% after a section heading. If WORD is `insert', then do indent at such
% paragraphs.
%
% The paragraph indentation is suppressed or not by calling
% \suppressfirstparagraphindent, which the sectioning commands do. We
% switch the definition of this back and forth according to WORD. By
% default, we suppress indentation.
% \suppressfirstparagraphindent, which the sectioning commands do.
% We switch the definition of this back and forth according to WORD.
% By default, we suppress indentation.
%
\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
\newdimen\currentparindent
......@@ -1104,32 +1104,34 @@ where each line of input produces a line of output.}
\edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
\edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
%
\def\chapentry ##1##2##3{}
\def\secentry ##1##2##3##4{\advancenumber{chap##2}}
\def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
\def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
\let\appendixentry = \chapentry
\let\unnumbchapentry = \chapentry
\let\unnumbsecentry = \secentry
\let\unnumbsubsecentry = \subsecentry
\let\unnumbsubsubsecentry = \subsubsecentry
% Read toc first time in order to get the counts of subentries for
% \pdfoutline.
\def\chapentry##1##2##3{}
\def\secentry##1##2##3##4{\advancenumber{chap##2}}
\def\subsecentry##1##2##3##4##5{\advancenumber{sec##2.##3}}
\def\subsubsecentry##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
% use \def rather than \let here because we redefine \chapentry et
% al. a second time, below.
\def\appendixentry{\chapentry}
\def\unnumbchapentry{\chapentry}
\def\unnumbsecentry{\secentry}
\def\unnumbsubsecentry{\subsecentry}
\def\unnumbsubsubsecentry{\subsubsecentry}
\input \jobname.toc
\def\chapentry ##1##2##3{%
%
% Read toc second time, this time actually producing the outlines.
% The `-' means take the \expnumber as the absolute number of
% subentries, which we calculated on our first read of the .toc above.
\def\chapentry##1##2##3{%
\pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
\def\secentry ##1##2##3##4{%
\pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
\def\subsecentry ##1##2##3##4##5{%
\def\secentry##1##2##3##4{%
\pdfoutline goto name{\pdfmkpgn{##1}}count-\expnumber{sec##2.##3}{##1}}
\def\subsecentry##1##2##3##4##5{%
\pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
\def\subsubsecentry ##1##2##3##4##5##6{%
\def\subsubsecentry##1##2##3##4##5##6{%
\pdfoutline goto name{\pdfmkpgn{##6}}{##1}}
\let\appendixentry = \chapentry
\let\unnumbchapentry = \chapentry
\let\unnumbsecentry = \secentry
\let\unnumbsubsecentry = \subsecentry
\let\unnumbsubsubsecentry = \subsubsecentry
%
% Make special characters normal for writing to the pdf file.
%
\indexnofonts
\let\tt=\relax
\turnoffactive
......@@ -2524,20 +2526,6 @@ width0pt\relax} \fi
% Prevent errors for section commands.
% Used in @ignore and in failing conditionals.
\def\ignoresections{%
\let\chapter=\relax
\let\unnumbered=\relax
\let\top=\relax
\let\unnumberedsec=\relax
\let\unnumberedsection=\relax
\let\unnumberedsubsec=\relax
\let\unnumberedsubsection=\relax
\let\unnumberedsubsubsec=\relax
\let\unnumberedsubsubsection=\relax
\let\section=\relax
\let\subsec=\relax
\let\subsubsec=\relax
\let\subsection=\relax
\let\subsubsection=\relax
\let\appendix=\relax
\let\appendixsec=\relax
\let\appendixsection=\relax
......@@ -2545,110 +2533,26 @@ width0pt\relax} \fi
\let\appendixsubsection=\relax
\let\appendixsubsubsec=\relax
\let\appendixsubsubsection=\relax
%\let\begin=\relax
%\let\bye=\relax
\let\centerchap=\relax
\let\chapter=\relax
\let\contents=\relax
\let\section=\relax
\let\smallbook=\relax
\let\subsec=\relax
\let\subsection=\relax
\let\subsubsec=\relax
\let\subsubsection=\relax
\let\titlepage=\relax
}
% Used in nested conditionals, where we have to parse the Texinfo source
% and so want to turn off most commands, in case they are used
% incorrectly.
%
% We use \empty instead of \relax for the @def... commands, so that \end
% doesn't throw an error. For instance:
% @ignore
% @deffn ...
% @end deffn
% @end ignore
%
% The @end deffn is going to get expanded, because we're trying to allow
% nested conditionals. But we don't want to expand the actual @deffn,
% since it might be syntactically correct and intended to be ignored.
% Since \end checks for \relax, using \empty does not cause an error.
%
\def\ignoremorecommands{%
\let\defcodeindex = \relax
\let\defcv = \empty
\let\defcvx = \empty
\let\Edefcv = \empty
\let\deffn = \empty
\let\deffnx = \empty
\let\Edeffn = \empty
\let\defindex = \relax
\let\defivar = \empty
\let\defivarx = \empty
\let\Edefivar = \empty
\let\defmac = \empty
\let\defmacx = \empty
\let\Edefmac = \empty
\let\defmethod = \empty
\let\defmethodx = \empty
\let\Edefmethod = \empty
\let\defop = \empty
\let\defopx = \empty
\let\Edefop = \empty
\let\defopt = \empty
\let\defoptx = \empty
\let\Edefopt = \empty
\let\defspec = \empty
\let\defspecx = \empty
\let\Edefspec = \empty
\let\deftp = \empty
\let\deftpx = \empty
\let\Edeftp = \empty
\let\deftypefn = \empty
\let\deftypefnx = \empty
\let\Edeftypefn = \empty
\let\deftypefun = \empty
\let\deftypefunx = \empty
\let\Edeftypefun = \empty
\let\deftypeivar = \empty
\let\deftypeivarx = \empty
\let\Edeftypeivar = \empty
\let\deftypemethod = \empty
\let\deftypemethodx = \empty
\let\Edeftypemethod = \empty
\let\deftypeop = \empty
\let\deftypeopx = \empty
\let\Edeftypeop = \empty
\let\deftypevar = \empty
\let\deftypevarx = \empty
\let\Edeftypevar = \empty
\let\deftypevr = \empty
\let\deftypevrx = \empty
\let\Edeftypevr = \empty
\let\defun = \empty
\let\defunx = \empty
\let\Edefun = \empty
\let\defvar = \empty
\let\defvarx = \empty
\let\Edefvar = \empty
\let\defvr = \empty
\let\defvrx = \empty
\let\Edefvr = \empty
\let\clear = \relax
\let\down = \relax
\let\evenfooting = \relax
\let\evenheading = \relax
\let\everyfooting = \relax
\let\everyheading = \relax
\let\headings = \relax
\let\include = \relax
\let\item = \relax
\let\lowersections = \relax
\let\oddfooting = \relax
\let\oddheading = \relax
\let\printindex = \relax
\let\pxref = \relax
\let\raisesections = \relax
\let\ref = \relax
\let\set = \relax
\let\setchapternewpage = \relax
\let\setchapterstyle = \relax
\let\settitle = \relax
\let\up = \relax
\let\verbatiminclude = \relax
\let\xref = \relax
\let\top=\relax
\let\unnumbered=\relax
\let\unnumberedsec=\relax
\let\unnumberedsection=\relax
\let\unnumberedsubsec=\relax
\let\unnumberedsubsection=\relax
\let\unnumberedsubsubsec=\relax
\let\unnumberedsubsubsection=\relax
}
% Ignore @ignore, @ifhtml, @ifinfo, and the like.
......@@ -2670,141 +2574,78 @@ width0pt\relax} \fi
% which this file should belong to. Ignore this in TeX.
\let\dircategory = \comment
% Ignore text until a line `@end #1'.
% Ignore text until a line `@end #1', keeping track of nested conditionals.
%
% A count to remember the depth of nesting.
\newcount\doignorecount
\def\doignore#1{\begingroup
% Don't complain about control sequences we have declared \outer.
\ignoresections
%
% Define a command to swallow text until we reach `@end #1'.
% This @ is a catcode 12 token (that is the normal catcode of @ in
% this texinfo.tex file). We change the catcode of @ below to match.
\long\def\doignoretext##1@end #1{\enddoignore}%
%
% Make sure that spaces turn into tokens that match what \doignoretext wants.
\catcode\spaceChar = 10
%
% Ignore braces, too, so mismatched braces don't cause trouble.
% Ignore braces, so mismatched braces don't cause trouble.
\catcode`\{ = 9
\catcode`\} = 9
%
% We must not have @c interpreted as a control sequence.
\catcode`\@ = 12
% Count number of #1's that we've seen.
\doignorecount = 0
%
\def\ignoreword{#1}%
\ifx\ignoreword\documentdescriptionword
% The c kludge breaks documentdescription, since
% `documentdescription' contains a `c'. Means not everything will
% be ignored inside @documentdescription, but oh well...
\else
% Make the letter c a comment character so that the rest of the line
% will be ignored. This way, the document can have (for example)
% @c @end ifinfo
% and the @end ifinfo will be properly ignored.
% (We've just changed @ to catcode 12.)
\catcode`\c = 14
\fi
%
% And now expand the command defined above.
\doignoretext
}
% What we do to finish off ignored text.
%
\def\enddoignore{\endgroup\ignorespaces}%
\newif\ifwarnedobs\warnedobsfalse
\def\obstexwarn{%
\ifwarnedobs\relax\else
% We need to warn folks that they may have trouble with TeX 3.0.
% This uses \immediate\write16 rather than \message to get newlines.
\immediate\write16{}
\immediate\write16{WARNING: for users of Unix TeX 3.0!}
\immediate\write16{This manual trips a bug in TeX version 3.0 (tex hangs).}
\immediate\write16{If you are running another version of TeX, relax.}
\immediate\write16{If you are running Unix TeX 3.0, kill this TeX process.}
\immediate\write16{ Then upgrade your TeX installation if you can.}
\immediate\write16{ (See ftp://ftp.gnu.org/non-gnu/TeX.README.)}
\immediate\write16{If you are stuck with version 3.0, run the}
\immediate\write16{ script ``tex3patch'' from the Texinfo distribution}
\immediate\write16{ to use a workaround.}
\immediate\write16{}
\global\warnedobstrue
\fi
% Swallow text until we reach the matching `@end #1'.
\expandafter \dodoignore \csname#1\endcsname {#1}%
}
% **In TeX 3.0, setting text in \nullfont hangs tex. For a
% workaround (which requires the file ``dummy.tfm'' to be installed),
% uncomment the following line:
%%%%%\font\nullfont=dummy\let\obstexwarn=\relax
% Ignore text, except that we keep track of conditional commands for
% purposes of nesting, up to an `@end #1' command.
%
\def\nestedignore#1{%
\obstexwarn
% We must actually expand the ignored text to look for the @end
% command, so that nested ignore constructs work. Thus, we put the
% text into a \vbox and then do nothing with the result. To minimize
% the chance of memory overflow, we follow the approach outlined on
% page 401 of the TeXbook.
{ \catcode`@=11 % We want to use \ST@P which cannot appear in texinfo source.
\obeylines %
%
\setbox0 = \vbox\bgroup
% Don't complain about control sequences we have declared \outer.
\ignoresections
%
% Define `@end #1' to end the box, which will in turn undefine the
% @end command again.
\expandafter\def\csname E#1\endcsname{\egroup\ignorespaces}%
%
% We are going to be parsing Texinfo commands. Most cause no
% trouble when they are used incorrectly, but some commands do
% complicated argument parsing or otherwise get confused, so we
% undefine them.
\gdef\dodoignore#1#2{%
% #1 contains, e.g., \ifinfo, a.k.a. @ifinfo.
% #2 contains the string `ifinfo'.
%
% We can't do anything about stray @-signs, unfortunately;
% they'll produce `undefined control sequence' errors.
\ignoremorecommands
% Define a command to find the next `@end #2', which must be on a line
% by itself.
\long\def\doignoretext##1^^M\end #2{\doignoretextyyy##1^^M#1\ST@P}%
% And this command to find another #1 command, at the beginning of a
% line. (Otherwise, we would consider a line `@c @ifset', for
% example, to count as an @ifset for nesting.)
\long\def\doignoretextyyy##1^^M#1##2\ST@P{\doignoreyyy{##2}\ST@P}%
%
% Set the current font to be \nullfont, a TeX primitive, and define
% all the font commands to also use \nullfont. We don't use
% dummy.tfm, as suggested in the TeXbook, because some sites
% might not have that installed. Therefore, math mode will still
% produce output, but that should be an extremely small amount of
% stuff compared to the main input.
%
\nullfont
\let\tenrm=\nullfont \let\tenit=\nullfont \let\tensl=\nullfont
\let\tenbf=\nullfont \let\tentt=\nullfont \let\smallcaps=\nullfont
\let\tensf=\nullfont
% Similarly for index fonts.
\let\smallrm=\nullfont \let\smallit=\nullfont \let\smallsl=\nullfont
\let\smallbf=\nullfont \let\smalltt=\nullfont \let\smallsc=\nullfont
\let\smallsf=\nullfont
% Similarly for smallexample fonts.
\let\smallerrm=\nullfont \let\smallerit=\nullfont \let\smallersl=\nullfont
\let\smallerbf=\nullfont \let\smallertt=\nullfont \let\smallersc=\nullfont
\let\smallersf=\nullfont
%
% Don't complain when characters are missing from the fonts.
\tracinglostchars = 0
%
% Don't bother to do space factor calculations.
\frenchspacing
%
% Don't report underfull hboxes.
\hbadness = 10000
%
% Do minimal line-breaking.
\pretolerance = 10000
%
% Do not execute instructions in @tex.
\def\tex{\doignore{tex}}%
% Do not execute macro definitions.
% `c' is a comment character, so the word `macro' will get cut off.
\def\macro{\doignore{ma}}%
% And now expand that command.
\obeylines %
\doignoretext ^^M%
}%
}
\def\doignoreyyy#1{%
\def\temp{#1}%
\ifx\temp\empty % Nothing found.
\let\next\doignoretextzzz
\else % Found a nested condition, ...
\advance\doignorecount by 1
\let\next\doignoretextyyy % ..., look for another.
% If we're here, #1 ends with ^^M\ifinfo (for example).
\fi
\next #1% the token \ST@P is present just after this macro.
}
% We have to swallow the remaining "\ST@P".
%
\def\doignoretextzzz#1{%
\ifnum\doignorecount = 0 % We have just found the outermost @end.
\let\next\enddoignore
\else % Still inside a nested condition.
\advance\doignorecount by -1
\let\next\doignoretext % Look for the next @end.
\fi
\next
}
% Finish off ignored text.
\def\enddoignore{\endgroup\ignorespaces}
% @set VAR sets the variable VAR to an empty value.
% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
%
......@@ -2881,7 +2722,7 @@ width0pt\relax} \fi
\next
}
\def\ifsetsucceed{\conditionalsucceed{ifset}}
\def\ifsetfail{\nestedignore{ifset}}
\def\ifsetfail{\doignore{ifset}}
\defineunmatchedend{ifset}
% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
......@@ -2897,7 +2738,7 @@ width0pt\relax} \fi
\next
}
\def\ifclearsucceed{\conditionalsucceed{ifclear}}
\def\ifclearfail{\nestedignore{ifclear}}
\def\ifclearfail{\doignore{ifclear}}
\defineunmatchedend{ifclear}
% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
......@@ -4023,23 +3864,27 @@ width0pt\relax} \fi
% if justification is not attempted. Hence \raggedright.
\def\majorheading{\parsearg\majorheadingzzz}
\def\majorheadingzzz #1{%
\def\majorheading{%
{\advance\chapheadingskip by 10pt \chapbreak }%
{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
\parindent=0pt\raggedright
\rm #1\hfill}}\bigskip \par\penalty 200}
\parsearg\chapheadingzzz
}
\def\chapheading{\parsearg\chapheadingzzz}
\def\chapheadingzzz #1{\chapbreak %
\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
\def\chapheadingzzz #1{%
{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
\parindent=0pt\raggedright
\rm #1\hfill}}\bigskip \par\penalty 200}
\rm #1\hfill}}%
\bigskip \par\penalty 200\relax
\suppressfirstparagraphindent
}
% @heading, @subheading, @subsubheading.
\def\heading{\parsearg\plainsecheading}
\def\subheading{\parsearg\plainsubsecheading}
\def\subsubheading{\parsearg\plainsubsubsecheading}
\def\heading{\parsearg\doheading}
\def\subheading{\parsearg\dosubheading}
\def\subsubheading{\parsearg\dosubsubheading}
\def\doheading#1{\plainsecheading{#1}\suppressfirstparagraphindent}
\def\dosubheading#1{\plainsubsecheading{#1}\suppressfirstparagraphindent}
\def\dosubsubheading#1{\plainsubsubsecheading{#1}\suppressfirstparagraphindent}
% These macros generate a chapter, section, etc. heading only
% (including whitespace, linebreaking, etc. around it),
......@@ -4072,7 +3917,7 @@ width0pt\relax} \fi
\global\let\pagealignmacro=\chappager
\global\def\HEADINGSon{\HEADINGSsingle}}
\def\CHAPPAGodd{
\def\CHAPPAGodd{%
\global\let\contentsalignmacro = \chapoddpage
\global\let\pchapsepmacro=\chapoddpage
\global\let\pagealignmacro=\chapoddpage
......@@ -4080,7 +3925,7 @@ width0pt\relax} \fi
\CHAPPAGon
\def\CHAPFplain{
\def\CHAPFplain{%
\global\let\chapmacro=\chfplain