* 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.
This commit is contained in:
parent
d06e09b951
commit
9828bf9800
7 changed files with 185 additions and 279 deletions
|
|
@ -1,5 +1,12 @@
|
||||||
2003-10-02 Alexandre Duret-Lutz <adl@src.lip6.fr>
|
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.
|
* src/ltlparse/ltlscan.ll: Allow doubly quoted atomic propositions.
|
||||||
|
|
||||||
2003-10-01 Alexandre Duret-Lutz <aduret@src.lip6.fr>
|
2003-10-01 Alexandre Duret-Lutz <aduret@src.lip6.fr>
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ check_PROGRAMS = \
|
||||||
ltlgspn-rg \
|
ltlgspn-rg \
|
||||||
ltlgspn-srg \
|
ltlgspn-srg \
|
||||||
eltlgspn-srg \
|
eltlgspn-srg \
|
||||||
|
efmgspn-srg \
|
||||||
fmgspn-rg \
|
fmgspn-rg \
|
||||||
fmgspn-srg
|
fmgspn-srg
|
||||||
|
|
||||||
|
|
@ -36,6 +37,10 @@ eltlgspn_srg_SOURCES = ltlgspn.cc
|
||||||
eltlgspn_srg_LDADD = libspotgspn.la $(LIBGSPNSRG_LDFLAGS)
|
eltlgspn_srg_LDADD = libspotgspn.la $(LIBGSPNSRG_LDFLAGS)
|
||||||
eltlgspn_srg_CPPFLAGS = -DCEC $(AM_CPPFLAGS)
|
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_SOURCES = ltlgspn.cc
|
||||||
fmgspn_rg_CPPFLAGS = -DFM $(AM_CPPFLAGS)
|
fmgspn_rg_CPPFLAGS = -DFM $(AM_CPPFLAGS)
|
||||||
fmgspn_rg_LDADD = libspotgspn.la $(LIBGSPNRG_LDFLAGS)
|
fmgspn_rg_LDADD = libspotgspn.la $(LIBGSPNRG_LDFLAGS)
|
||||||
|
|
@ -63,8 +68,10 @@ TESTS = \
|
||||||
dcswavefm.test \
|
dcswavefm.test \
|
||||||
dcswaveeltl.test \
|
dcswaveeltl.test \
|
||||||
udcsltl.test \
|
udcsltl.test \
|
||||||
udcseltl.test
|
udcseltl.test \
|
||||||
XFAIL_TESTS = udcseltl.test
|
udcsfm.test \
|
||||||
|
udcsefm.test
|
||||||
|
XFAIL_TESTS = udcseltl.test udcsefm.test
|
||||||
|
|
||||||
# Each test case depends on defs.
|
# Each test case depends on defs.
|
||||||
check_SCRIPTS = defs
|
check_SCRIPTS = defs
|
||||||
|
|
|
||||||
17
iface/gspn/udcsefm.test
Executable file
17
iface/gspn/udcsefm.test
Executable file
|
|
@ -0,0 +1,17 @@
|
||||||
|
#! /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
|
# F(ReP1 => F(gsP1)) is false
|
||||||
../eltlgspn-srg udcs/udcs 'F(ReP1 => F(gsP1))' ReP1 gsP1 > output
|
../eltlgspn-srg udcs/udcs 'F(ReP1 => F(gsP1))' ReP1 gsP1 > output
|
||||||
test $? = 1 || exit 1
|
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
|
||||||
|
|
|
||||||
17
iface/gspn/udcsfm.test
Executable file
17
iface/gspn/udcsfm.test
Executable file
|
|
@ -0,0 +1,17 @@
|
||||||
|
#! /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
|
# F(ReP1 => F(gsP1)) is false
|
||||||
../ltlgspn-srg udcs/udcs 'F(ReP1 => F(gsP1))' ReP1 gsP1 > output
|
../ltlgspn-srg udcs/udcs 'F(ReP1 => F(gsP1))' ReP1 gsP1 > output
|
||||||
test $? = 1 || exit 1
|
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.
|
% Load plain if necessary, i.e., if running under initex.
|
||||||
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
|
\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,
|
% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
|
||||||
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
% 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
|
\normalturnoffactive % \ in index entries must not stay \, e.g., if
|
||||||
% the page break happens to be in the middle of an example.
|
% the page break happens to be in the middle of an example.
|
||||||
\shipout\vbox{%
|
\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
|
\ifcropmarks \vbox to \outervsize\bgroup
|
||||||
\hsize = \outerhsize
|
\hsize = \outerhsize
|
||||||
\vskip-\topandbottommargin
|
\vskip-\topandbottommargin
|
||||||
|
|
@ -279,6 +276,9 @@
|
||||||
\vbox\bgroup
|
\vbox\bgroup
|
||||||
\fi
|
\fi
|
||||||
%
|
%
|
||||||
|
% Do this early so pdf references go to the beginning of the page.
|
||||||
|
\ifpdfmakepagedest \pdfmkdest{\the\pageno}\fi
|
||||||
|
%
|
||||||
\unvbox\headlinebox
|
\unvbox\headlinebox
|
||||||
\pagebody{#1}%
|
\pagebody{#1}%
|
||||||
\ifdim\ht\footlinebox > 0pt
|
\ifdim\ht\footlinebox > 0pt
|
||||||
|
|
@ -887,13 +887,13 @@ where each line of input produces a line of output.}
|
||||||
|
|
||||||
% @firstparagraphindent WORD
|
% @firstparagraphindent WORD
|
||||||
% If WORD is `none', then suppress indentation of the first paragraph
|
% 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.
|
% paragraphs.
|
||||||
%
|
%
|
||||||
% The paragraph indentation is suppressed or not by calling
|
% The paragraph indentation is suppressed or not by calling
|
||||||
% \suppressfirstparagraphindent, which the sectioning commands do. We
|
% \suppressfirstparagraphindent, which the sectioning commands do.
|
||||||
% switch the definition of this back and forth according to WORD. By
|
% We switch the definition of this back and forth according to WORD.
|
||||||
% default, we suppress indentation.
|
% By default, we suppress indentation.
|
||||||
%
|
%
|
||||||
\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
|
\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent}
|
||||||
\newdimen\currentparindent
|
\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\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
|
||||||
\edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
|
\edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
|
||||||
%
|
%
|
||||||
\def\chapentry ##1##2##3{}
|
% Read toc first time in order to get the counts of subentries for
|
||||||
\def\secentry ##1##2##3##4{\advancenumber{chap##2}}
|
% \pdfoutline.
|
||||||
\def\subsecentry ##1##2##3##4##5{\advancenumber{sec##2.##3}}
|
\def\chapentry##1##2##3{}
|
||||||
\def\subsubsecentry ##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
|
\def\secentry##1##2##3##4{\advancenumber{chap##2}}
|
||||||
\let\appendixentry = \chapentry
|
\def\subsecentry##1##2##3##4##5{\advancenumber{sec##2.##3}}
|
||||||
\let\unnumbchapentry = \chapentry
|
\def\subsubsecentry##1##2##3##4##5##6{\advancenumber{subsec##2.##3.##4}}
|
||||||
\let\unnumbsecentry = \secentry
|
% use \def rather than \let here because we redefine \chapentry et
|
||||||
\let\unnumbsubsecentry = \subsecentry
|
% al. a second time, below.
|
||||||
\let\unnumbsubsubsecentry = \subsubsecentry
|
\def\appendixentry{\chapentry}
|
||||||
|
\def\unnumbchapentry{\chapentry}
|
||||||
|
\def\unnumbsecentry{\secentry}
|
||||||
|
\def\unnumbsubsecentry{\subsecentry}
|
||||||
|
\def\unnumbsubsubsecentry{\subsubsecentry}
|
||||||
\input \jobname.toc
|
\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}}
|
\pdfoutline goto name{\pdfmkpgn{##3}}count-\expnumber{chap##2}{##1}}
|
||||||
\def\secentry ##1##2##3##4{%
|
\def\secentry##1##2##3##4{%
|
||||||
\pdfoutline goto name{\pdfmkpgn{##4}}count-\expnumber{sec##2.##3}{##1}}
|
\pdfoutline goto name{\pdfmkpgn{##1}}count-\expnumber{sec##2.##3}{##1}}
|
||||||
\def\subsecentry ##1##2##3##4##5{%
|
\def\subsecentry##1##2##3##4##5{%
|
||||||
\pdfoutline goto name{\pdfmkpgn{##5}}count-\expnumber{subsec##2.##3.##4}{##1}}
|
\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}}
|
\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.
|
% Make special characters normal for writing to the pdf file.
|
||||||
%
|
|
||||||
\indexnofonts
|
\indexnofonts
|
||||||
\let\tt=\relax
|
\let\tt=\relax
|
||||||
\turnoffactive
|
\turnoffactive
|
||||||
|
|
@ -2524,20 +2526,6 @@ width0pt\relax} \fi
|
||||||
% Prevent errors for section commands.
|
% Prevent errors for section commands.
|
||||||
% Used in @ignore and in failing conditionals.
|
% Used in @ignore and in failing conditionals.
|
||||||
\def\ignoresections{%
|
\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\appendix=\relax
|
||||||
\let\appendixsec=\relax
|
\let\appendixsec=\relax
|
||||||
\let\appendixsection=\relax
|
\let\appendixsection=\relax
|
||||||
|
|
@ -2545,110 +2533,26 @@ width0pt\relax} \fi
|
||||||
\let\appendixsubsection=\relax
|
\let\appendixsubsection=\relax
|
||||||
\let\appendixsubsubsec=\relax
|
\let\appendixsubsubsec=\relax
|
||||||
\let\appendixsubsubsection=\relax
|
\let\appendixsubsubsection=\relax
|
||||||
|
%\let\begin=\relax
|
||||||
|
%\let\bye=\relax
|
||||||
|
\let\centerchap=\relax
|
||||||
|
\let\chapter=\relax
|
||||||
\let\contents=\relax
|
\let\contents=\relax
|
||||||
|
\let\section=\relax
|
||||||
\let\smallbook=\relax
|
\let\smallbook=\relax
|
||||||
|
\let\subsec=\relax
|
||||||
|
\let\subsection=\relax
|
||||||
|
\let\subsubsec=\relax
|
||||||
|
\let\subsubsection=\relax
|
||||||
\let\titlepage=\relax
|
\let\titlepage=\relax
|
||||||
}
|
\let\top=\relax
|
||||||
|
\let\unnumbered=\relax
|
||||||
% Used in nested conditionals, where we have to parse the Texinfo source
|
\let\unnumberedsec=\relax
|
||||||
% and so want to turn off most commands, in case they are used
|
\let\unnumberedsection=\relax
|
||||||
% incorrectly.
|
\let\unnumberedsubsec=\relax
|
||||||
%
|
\let\unnumberedsubsection=\relax
|
||||||
% We use \empty instead of \relax for the @def... commands, so that \end
|
\let\unnumberedsubsubsec=\relax
|
||||||
% doesn't throw an error. For instance:
|
\let\unnumberedsubsubsection=\relax
|
||||||
% @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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
% Ignore @ignore, @ifhtml, @ifinfo, and the like.
|
% Ignore @ignore, @ifhtml, @ifinfo, and the like.
|
||||||
|
|
@ -2670,140 +2574,77 @@ width0pt\relax} \fi
|
||||||
% which this file should belong to. Ignore this in TeX.
|
% which this file should belong to. Ignore this in TeX.
|
||||||
\let\dircategory = \comment
|
\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
|
\def\doignore#1{\begingroup
|
||||||
% Don't complain about control sequences we have declared \outer.
|
% Don't complain about control sequences we have declared \outer.
|
||||||
\ignoresections
|
\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.
|
% Make sure that spaces turn into tokens that match what \doignoretext wants.
|
||||||
\catcode\spaceChar = 10
|
\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
|
||||||
\catcode`\} = 9
|
\catcode`\} = 9
|
||||||
%
|
%
|
||||||
% We must not have @c interpreted as a control sequence.
|
% Count number of #1's that we've seen.
|
||||||
\catcode`\@ = 12
|
\doignorecount = 0
|
||||||
%
|
%
|
||||||
\def\ignoreword{#1}%
|
% Swallow text until we reach the matching `@end #1'.
|
||||||
\ifx\ignoreword\documentdescriptionword
|
\expandafter \dodoignore \csname#1\endcsname {#1}%
|
||||||
% The c kludge breaks documentdescription, since
|
}
|
||||||
% `documentdescription' contains a `c'. Means not everything will
|
|
||||||
% be ignored inside @documentdescription, but oh well...
|
{ \catcode`@=11 % We want to use \ST@P which cannot appear in texinfo source.
|
||||||
\else
|
\obeylines %
|
||||||
% 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)
|
\gdef\dodoignore#1#2{%
|
||||||
% @c @end ifinfo
|
% #1 contains, e.g., \ifinfo, a.k.a. @ifinfo.
|
||||||
% and the @end ifinfo will be properly ignored.
|
% #2 contains the string `ifinfo'.
|
||||||
% (We've just changed @ to catcode 12.)
|
%
|
||||||
\catcode`\c = 14
|
% 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}%
|
||||||
|
%
|
||||||
|
% 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
|
\fi
|
||||||
%
|
\next #1% the token \ST@P is present just after this macro.
|
||||||
% And now expand the command defined above.
|
|
||||||
\doignoretext
|
|
||||||
}
|
}
|
||||||
|
|
||||||
% What we do to finish off ignored text.
|
% We have to swallow the remaining "\ST@P".
|
||||||
%
|
%
|
||||||
\def\enddoignore{\endgroup\ignorespaces}%
|
\def\doignoretextzzz#1{%
|
||||||
|
\ifnum\doignorecount = 0 % We have just found the outermost @end.
|
||||||
\newif\ifwarnedobs\warnedobsfalse
|
\let\next\enddoignore
|
||||||
\def\obstexwarn{%
|
\else % Still inside a nested condition.
|
||||||
\ifwarnedobs\relax\else
|
\advance\doignorecount by -1
|
||||||
% We need to warn folks that they may have trouble with TeX 3.0.
|
\let\next\doignoretext % Look for the next @end.
|
||||||
% This uses \immediate\write16 rather than \message to get newlines.
|
\fi
|
||||||
\immediate\write16{}
|
\next
|
||||||
\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
|
|
||||||
}
|
}
|
||||||
|
|
||||||
% **In TeX 3.0, setting text in \nullfont hangs tex. For a
|
% Finish off ignored text.
|
||||||
% workaround (which requires the file ``dummy.tfm'' to be installed),
|
\def\enddoignore{\endgroup\ignorespaces}
|
||||||
% 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.
|
|
||||||
%
|
|
||||||
\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.
|
|
||||||
%
|
|
||||||
% We can't do anything about stray @-signs, unfortunately;
|
|
||||||
% they'll produce `undefined control sequence' errors.
|
|
||||||
\ignoremorecommands
|
|
||||||
%
|
|
||||||
% 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}}%
|
|
||||||
}
|
|
||||||
|
|
||||||
% @set VAR sets the variable VAR to an empty value.
|
% @set VAR sets the variable VAR to an empty value.
|
||||||
% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
|
% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE.
|
||||||
|
|
@ -2881,7 +2722,7 @@ width0pt\relax} \fi
|
||||||
\next
|
\next
|
||||||
}
|
}
|
||||||
\def\ifsetsucceed{\conditionalsucceed{ifset}}
|
\def\ifsetsucceed{\conditionalsucceed{ifset}}
|
||||||
\def\ifsetfail{\nestedignore{ifset}}
|
\def\ifsetfail{\doignore{ifset}}
|
||||||
\defineunmatchedend{ifset}
|
\defineunmatchedend{ifset}
|
||||||
|
|
||||||
% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
|
% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been
|
||||||
|
|
@ -2897,7 +2738,7 @@ width0pt\relax} \fi
|
||||||
\next
|
\next
|
||||||
}
|
}
|
||||||
\def\ifclearsucceed{\conditionalsucceed{ifclear}}
|
\def\ifclearsucceed{\conditionalsucceed{ifclear}}
|
||||||
\def\ifclearfail{\nestedignore{ifclear}}
|
\def\ifclearfail{\doignore{ifclear}}
|
||||||
\defineunmatchedend{ifclear}
|
\defineunmatchedend{ifclear}
|
||||||
|
|
||||||
% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
|
% @iftex, @ifnothtml, @ifnotinfo, @ifnotplaintext always succeed; we
|
||||||
|
|
@ -4023,23 +3864,27 @@ width0pt\relax} \fi
|
||||||
% if justification is not attempted. Hence \raggedright.
|
% if justification is not attempted. Hence \raggedright.
|
||||||
|
|
||||||
|
|
||||||
\def\majorheading{\parsearg\majorheadingzzz}
|
\def\majorheading{%
|
||||||
\def\majorheadingzzz #1{%
|
|
||||||
{\advance\chapheadingskip by 10pt \chapbreak }%
|
{\advance\chapheadingskip by 10pt \chapbreak }%
|
||||||
{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
|
\parsearg\chapheadingzzz
|
||||||
\parindent=0pt\raggedright
|
}
|
||||||
\rm #1\hfill}}\bigskip \par\penalty 200}
|
|
||||||
|
|
||||||
\def\chapheading{\parsearg\chapheadingzzz}
|
\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
|
||||||
\def\chapheadingzzz #1{\chapbreak %
|
\def\chapheadingzzz #1{%
|
||||||
{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
|
{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
|
||||||
\parindent=0pt\raggedright
|
\parindent=0pt\raggedright
|
||||||
\rm #1\hfill}}\bigskip \par\penalty 200}
|
\rm #1\hfill}}%
|
||||||
|
\bigskip \par\penalty 200\relax
|
||||||
|
\suppressfirstparagraphindent
|
||||||
|
}
|
||||||
|
|
||||||
% @heading, @subheading, @subsubheading.
|
% @heading, @subheading, @subsubheading.
|
||||||
\def\heading{\parsearg\plainsecheading}
|
\def\heading{\parsearg\doheading}
|
||||||
\def\subheading{\parsearg\plainsubsecheading}
|
\def\subheading{\parsearg\dosubheading}
|
||||||
\def\subsubheading{\parsearg\plainsubsubsecheading}
|
\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
|
% These macros generate a chapter, section, etc. heading only
|
||||||
% (including whitespace, linebreaking, etc. around it),
|
% (including whitespace, linebreaking, etc. around it),
|
||||||
|
|
@ -4072,7 +3917,7 @@ width0pt\relax} \fi
|
||||||
\global\let\pagealignmacro=\chappager
|
\global\let\pagealignmacro=\chappager
|
||||||
\global\def\HEADINGSon{\HEADINGSsingle}}
|
\global\def\HEADINGSon{\HEADINGSsingle}}
|
||||||
|
|
||||||
\def\CHAPPAGodd{
|
\def\CHAPPAGodd{%
|
||||||
\global\let\contentsalignmacro = \chapoddpage
|
\global\let\contentsalignmacro = \chapoddpage
|
||||||
\global\let\pchapsepmacro=\chapoddpage
|
\global\let\pchapsepmacro=\chapoddpage
|
||||||
\global\let\pagealignmacro=\chapoddpage
|
\global\let\pagealignmacro=\chapoddpage
|
||||||
|
|
@ -4080,7 +3925,7 @@ width0pt\relax} \fi
|
||||||
|
|
||||||
\CHAPPAGon
|
\CHAPPAGon
|
||||||
|
|
||||||
\def\CHAPFplain{
|
\def\CHAPFplain{%
|
||||||
\global\let\chapmacro=\chfplain
|
\global\let\chapmacro=\chfplain
|
||||||
\global\let\unnumbchapmacro=\unnchfplain
|
\global\let\unnumbchapmacro=\unnchfplain
|
||||||
\global\let\centerchapmacro=\centerchfplain}
|
\global\let\centerchapmacro=\centerchfplain}
|
||||||
|
|
@ -4134,7 +3979,7 @@ width0pt\relax} \fi
|
||||||
\hfill {\rm #1}\hfill}}\bigskip \par\nobreak
|
\hfill {\rm #1}\hfill}}\bigskip \par\nobreak
|
||||||
}
|
}
|
||||||
|
|
||||||
\def\CHAPFopen{
|
\def\CHAPFopen{%
|
||||||
\global\let\chapmacro=\chfopen
|
\global\let\chapmacro=\chfopen
|
||||||
\global\let\unnumbchapmacro=\unnchfopen
|
\global\let\unnumbchapmacro=\unnchfopen
|
||||||
\global\let\centerchapmacro=\centerchfopen}
|
\global\let\centerchapmacro=\centerchfopen}
|
||||||
|
|
@ -5966,7 +5811,7 @@ width0pt\relax} \fi
|
||||||
goto file{\the\filename.pdf} name{#1}%
|
goto file{\the\filename.pdf} name{#1}%
|
||||||
\else
|
\else
|
||||||
\startlink attr{/Border [0 0 0]}%
|
\startlink attr{/Border [0 0 0]}%
|
||||||
goto name{#1}%
|
goto name{\pdfmkpgn{#1}}%
|
||||||
\fi
|
\fi
|
||||||
}%
|
}%
|
||||||
\linkcolor
|
\linkcolor
|
||||||
|
|
@ -6177,7 +6022,6 @@ width0pt\relax} \fi
|
||||||
\closein 1
|
\closein 1
|
||||||
\input \jobname.aux
|
\input \jobname.aux
|
||||||
\global\havexrefstrue
|
\global\havexrefstrue
|
||||||
\global\warnedobstrue
|
|
||||||
\fi
|
\fi
|
||||||
% Open the new aux file. TeX will close it automatically at exit.
|
% Open the new aux file. TeX will close it automatically at exit.
|
||||||
\openout\auxfile=\jobname.aux
|
\openout\auxfile=\jobname.aux
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue