diff --git a/.gitignore b/.gitignore index 3c58b1275..0d262fc41 100644 --- a/.gitignore +++ b/.gitignore @@ -24,8 +24,10 @@ /xc-*/ /em-*/ *.*run +*.katex-css-link /csug/math/ /csug/gifs/ +/csug/katex/ /csug/Makefile /csug/*.aux /csug/*.html @@ -50,6 +52,7 @@ /csug/primdata.ss /release_notes/math/ /release_notes/gifs/ +/release_notes/katex/ /release_notes/Makefile /release_notes/*.tex /release_notes/*.aux diff --git a/BUILDING b/BUILDING index 7b3dc9c88..fe1adc2bc 100644 --- a/BUILDING +++ b/BUILDING @@ -307,7 +307,7 @@ The makefile supports several targets: * `make docs` Runs the build plus generates HTML and PDF versions of the Chez - Scheme Users Guide and the release notes. Unlike the other build + Scheme User's Guide and the release notes. Unlike the other build targets, the documentation is not built in the workarea, but rather in the "csug" and "release_notes" directories (where "configure" is run). @@ -320,6 +320,14 @@ The makefile supports several targets: * ppmtogif and pnmcrop (from Netpbm) + * Optionally, KaTeX (for better math in HTML) + + To use KaTeX but not copy the supporting CSS and font files + (e.g. because you wish to link to a copy already installed on your + system), use `make docs KATEX_CSS=no`. See also the documentation + in the "stex/doc" directory for further details and additional + configuration options. + An X11 installation is not required, but ppmtogif does require an "rgb.txt" file, which it will automatically locate in the common X11 installation locations. If ppmtogif fails because it cannot @@ -330,6 +338,16 @@ The makefile supports several targets: installation, then it might contain an "rgb.txt" in the directory identified by the `VIMRUNTIME` environment variable. + * `make csug` or `make release_notes` + + Like `make docs`, but builds only the Chez Scheme User's Guide or + the release notes, respectively. + + * `sudo make install-docs` (or `install-csug` or `install-release_notes`) + + Like `make docs` (or `make csug` or `make release_notes`, respectively), + but also installs the built documentation. + * `make clean` Removes all built elements from the workarea, and then removes diff --git a/build.zuo b/build.zuo index c21d2caa9..d3784f0aa 100644 --- a/build.zuo +++ b/build.zuo @@ -245,14 +245,26 @@ (define name-sym (string->symbol name)) (define (run-make target) (check-not-kernel-only) + ;; Note: build.bat on Windows does not currently configure these + ;; settings, so only evaluate (hash-ref config ...) when trying to + ;; build a target, not while merely generating the list of targets. + (define install-dir + (hash-ref config install-dir-key)) + (define other-install-dir-key + (car (remove install-dir-key doc-install-dir-keys))) + (define other-install-dir + (hash-ref config other-install-dir-key)) (define (->rel-shell pth) (string->shell (find-relative-path doc-dir pth))) (shell/wait "make" (~a "m=" m) (~a "srcdir=" (->rel-shell (at-source name))) - (~a "installdir=" - (->rel-shell (hash-ref config install-dir-key))) + (~a "installdir=" (->rel-shell install-dir)) (~a "STEXLIB=" (->rel-shell stexlib)) + (~a other-install-dir-key "=" (->rel-shell other-install-dir)) + (~a "rel" other-install-dir-key "=" + (string->shell (find-relative-path install-dir + other-install-dir))) target (hash 'dir doc-dir))) `([:target ,mf-out (,mf-in) diff --git a/csug/csug.css b/csug/csug.css index 083ce260b..b0bca9e86 100644 --- a/csug/csug.css +++ b/csug/csug.css @@ -33,3 +33,5 @@ h1, h2, h3, h4 {font-weight: bold} table.indent {margin-left: 20px} +.schemedisplay { line-height: 1.0625; } +.schemedisplay .katex { font-size: 1em; } diff --git a/csug/csug.stex b/csug/csug.stex index 080101b54..a67f97152 100644 --- a/csug/csug.stex +++ b/csug/csug.stex @@ -17,6 +17,9 @@ % \let\cleardoublepage=\relax\includeonly{threads} \usepackage{scheme} +\iflatex +\usepackage{csug} +\fi \schemeinit (case-sensitive #t) diff --git a/csug/csug.sty b/csug/csug.sty new file mode 100644 index 000000000..9af28a4eb --- /dev/null +++ b/csug/csug.sty @@ -0,0 +1,4 @@ +% restore \schemenormal settings from original scheme.sty +\font\ninefivett=cmtt9 at 9.5pt +\def\tt{\fontsize{10pt}{11pt}\ttfamily\ninefivett} +\def\scheme#1{\mbox{\tt\frenchspacing\spaceskip=\ttglue#1}} diff --git a/csug/csug8.cls b/csug/csug8.cls index 0fdd1aaea..37ea2823a 100644 --- a/csug/csug8.cls +++ b/csug/csug8.cls @@ -376,7 +376,11 @@ %%% index \newenvironment{theindex} {\if@openright\cleardoublepage\else\clearpage\fi - \begingroup\raggedright\schemeindexsize\footnotesize + \begingroup\raggedright\footnotesize + % tighten spacing for entries: + % may need to adjust this for future changes in stex + \def\scheme##1{\mbox{\fontsize{7}{8}\ttfamily\frenchspacing\spaceskip=0.5\fontdimen2\font plus \fontdimen3\font minus 0.5\fontdimen4\font##1}} + \def\var##1{{\footnotesize\textit{##1}}} \columnseprule \z@ \columnsep 35\p@ \twocolumn[\plainchapterhead{\indexname}]% @@ -457,6 +461,8 @@ \def\categorymodule{module} \def\categoryftype{ftype} +%%% summary of forms +% see also summary.stex and summary.ss \newwrite\forms \openout\forms=\jobname.rfm % \formsummary{sort key}{type}{form}{label} @@ -471,7 +477,11 @@ \hbox to 5pc{#2\ \hfil}% \hfil #3}} \newenvironment{thesummary} - {\begingroup\schemesummarysize\small\bigskip + {\begingroup\small\bigskip% + % tighten spacing to fit entries on one line: + % may need to adjust this for future changes in stex + \def\scheme##1{\mbox{\fontsize{8}{9}\ttfamily\frenchspacing\spaceskip=0.5\fontdimen2\font plus \fontdimen3\font minus 0.5\fontdimen4\font##1}}% + \def\var##1{{\footnotesize\textit{##1}}}% \sfentry{{\slshape Form}}{{\slshape Category}}{{\slshape Page}} \kern3pt\hrule\kern3pt} {\endgroup} diff --git a/csug/scheme.hsty b/csug/scheme.hsty deleted file mode 100644 index c8281c851..000000000 --- a/csug/scheme.hsty +++ /dev/null @@ -1,33 +0,0 @@ -\def\transerr#1{\raw{}} -\def\transin#1{\raw{}} -\def\transout#1{\raw{}} -\def\endtranserr#1{\raw{}} -\def\endtransin#1{\raw{}} -\def\endtransout#1{\raw{}} - -\def\schemeblankline{{\\\\}} -\def\schemelinestart{} -%%% handle numbered lines in scheme.sty and scheme.hsty -%%% ---have scheme-prep produce only \schemelinestart -% following is probably broken until we have tables, I suspect. -% Actually, the right way to fix this may be to use CSS -\def\schemelinestartnumbered#1{\raw{
| }#1\raw{ |
}}
-\def\var#1{\emph{#1}}
diff --git a/csug/scheme.sty b/csug/scheme.sty
deleted file mode 100644
index db437b665..000000000
--- a/csug/scheme.sty
+++ /dev/null
@@ -1,89 +0,0 @@
-\usepackage{color}
-\def\transerr#1{\begingroup\slshape}
-\def\transin#1{\begingroup\color{red}}
-\def\transout#1{\begingroup\color{blue}}
-\def\traceout#1{\begingroup\color{blue}}
-\def\endtranserr#1{\endgroup}
-\def\endtransin#1{\endgroup}
-\def\endtransout#1{\endgroup}
-\def\endtraceout#1{\endgroup}
-
-% this didn't work --- screwed up indentation:
-\long\def\showinteraction#1#2{\begin{minipage}[t]{4.375in}#1\end{minipage}\hfill\fbox{\begin{minipage}[t]{2in}#2\end{minipage}}}
-% so I resorted to this:
-\def\startrepl{\begin{minipage}[t]{4.3in}} % was 4.375 and 2 when interactionwindow = 28
-\def\endrepl{\end{minipage}}
-\def\startinteraction{\begin{minipage}[t]{2.2in}\vrule\begin{minipage}[t]{2.2in}\hrule\schemeindent=2pt}
-\def\endinteraction{\hrule\end{minipage}\vrule\end{minipage}}
-
-\font\ninefivett=cmtt9 at 9.5pt
-\newskip\ttglue
-\ttglue=.5em plus .25em minus .15em
-\font\tinyvar=cmti7
-\font\smallvar=cmti9
-\font\summarysizevar=cmti9
-\font\indexsizevar=cmti8
-\font\normalvar=cmti10 at 11pt
-\def\schemelarge{%
- \def\schemelarger{\fontsize{14}{16}}%
- \def\schemesmaller{\fontsize{10}{12}}%
- \def\tt{\fontsize{12}{14}\ttfamily}%
- \def\var##1{{\normalvar##1\/}}}
-\def\schemenormal{%
- \def\schemelarger{\fontsize{12}{14}}%
- \def\schemesmaller{\fontsize{8}{9}}%
- \def\tt{\fontsize{10pt}{11pt}\ttfamily\ninefivett}%
- \def\var##1{{\smallvar##1\/}}}
-\def\schemesmall{%
- \def\schemelarger{\fontsize{10}{12}}%
- \def\schemesmaller{\fontsize{6}{7}}%
- \def\tt{\fontsize{8}{9}\ttfamily}%
- \def\var##1{{\smallvar##1\/}}}
-\def\schemesummarysize{%
- \def\schemelarger{\fontsize{10}{12}}%
- \def\schemesmaller{\fontsize{6}{7}}%
- \def\tt{\fontsize{8}{9}\ttfamily}%
- \def\var##1{{\summarysizevar##1\/}}}
-\def\schemeindexsize{%
- \def\schemelarger{\fontsize{10}{12}}%
- \def\schemesmaller{\fontsize{6}{7}}%
- \def\tt{\fontsize{7}{8}\ttfamily}%
- \def\var##1{{\indexsizevar##1\/}}}
-\schemenormal
-
-\newskip\schemeindent
-\schemeindent=0pt
-{\obeyspaces\global\let =\ }
-\def\schtilde{\raisebox{-.5ex}{\hbox{\char`\~}}}
-\def\schdot{.}
-\def\schcarat{\char`\^}
-\def\schbackslash{\char`\\}
-\def\schatsign{\char`\@}
-\def\schunderscore{\char`\_}
-\def\schlbrace{\char`\{}
-\def\schrbrace{\char`\}}
-\def\scheme#1{\mbox{\tt\frenchspacing\spaceskip=\ttglue#1}}
-
-\def\schemeblankline{\par\penalty-100\vskip .7\baselineskip}
-\def\schemelinestart{{\leavevmode\hbox{\hskip \schemeindent\relax}}}
-%%% handle numbered lines in scheme.sty and scheme.hsty
-%%% ---have scheme-prep produce only \schemelinestart
-\def\schemelinestartnumbered#1{{\leavevmode\hbox{\hbox to 1em {\hfil{\rm #1}} \hskip .5\schemeindent\relax}}}
-
-\def\noskip\schemedisplay{\begingroup%
- \parindent=0pt%
- \parskip=0pt%
- \def\becomes{\hbox to 2em{\hfil$\rightarrow$\hfil}}%
- \def\is{\hbox to 2em{\hfil$\Rightarrow$\hfil}}%
- \def\si{\hbox to 2em{\hfil}}%
- \interlinepenalty=2000%
- \tt\obeyspaces\frenchspacing}
-\def\schemedisplay{\beforeschemedisplay\noskip\schemedisplay}
-\def\longcode\schemedisplay{\penalty-200\vskip 8pt plus 4pt%
- \kern3pt\hrule\kern5pt\nobreak\noskip\schemedisplay}
-\def\endschemedisplay{\par\endgroup\afterschemedisplay}
-\def\var#1{{\normalsize\textrm{\textit{#1}}}}
-\def\raw#1{#1}
-\def\beforeschemedisplay{\penalty-100\vskip\parskip\vskip5pt}
-\def\afterschemedisplay{\penalty-200\vskip5pt}
-
diff --git a/makefiles/Makefile-csug.in b/makefiles/Makefile-csug.in
index ebaf7176f..e1041d613 100644
--- a/makefiles/Makefile-csug.in
+++ b/makefiles/Makefile-csug.in
@@ -1,5 +1,7 @@
srcdir=oops-missing-srcdir
installdir=oops-missing-installdir
+InstallReleaseNotes=oops-missing-InstallReleaseNotes
+relInstallReleaseNotes=oops-missing-relInstallReleaseNotes
m=oops-missing-m
STEXLIB=oops-missing-stexlib
# Zuo overrides the above variables when running `make`
@@ -17,18 +19,6 @@ DIR=$(shell basename `pwd`)
target: canned logcheck1 logcheck2 checklibs $(x).html $(x).pdf
-install: target
- $(INSTALL) -m 2755 -d $(installdir)
- $(INSTALL) -m 0644 --ifdiff *.html *.css $(installdir)
- $(INSTALL) -m 0644 --ifdiff csug.pdf $(installdir)/csug10_0.pdf
- $(INSTALL) -m 2755 -d $(installdir)/canned
- $(INSTALL) -m 0644 --ifdiff canned/* $(installdir)/canned
- $(INSTALL) -m 2755 -d $(installdir)/gifs
- $(INSTALL) -m 0644 --ifdiff gifs/*.gif $(installdir)/gifs
- $(INSTALL) -m 2755 -d $(installdir)/$(mathdir)
- $(INSTALL) -m 0644 --ifdiff $(mathdir)/*.gif $(installdir)/$(mathdir)
- (cd $(installdir); ln -s -f $(x).html index.html)
-
# thrice is not enough when starting from scratch
logcheck1: $(x).thirdrun
@if [ -n "`grep 'Warning: Label(s) may have changed' $(x).log`" ] ; then\
@@ -50,6 +40,35 @@ logcheck2: $(x).thirdrun
include $(STEXLIB)/Mf-stex
+install: target
+ $(INSTALL) -m 2755 -d $(installdir)
+ $(INSTALL) -m 0644 --ifdiff *.html *.css $(installdir)
+ $(INSTALL) -m 0644 --ifdiff csug.pdf $(installdir)/csug10_0.pdf
+ $(INSTALL) -m 2755 -d $(installdir)/canned
+ $(INSTALL) -m 0644 --ifdiff canned/* $(installdir)/canned
+ $(INSTALL) -m 2755 -d $(installdir)/gifs
+ $(INSTALL) -m 0644 --ifdiff gifs/*.gif $(installdir)/gifs
+ifeq ($(strip $(KATEX)),)
+ $(INSTALL) -m 2755 -d $(installdir)/$(mathdir)
+ $(INSTALL) -m 0644 --ifdiff $(mathdir)/*.gif $(installdir)/$(mathdir)
+else ifneq ($(strip $(KATEX_CSS)),no)
+# if already installed release_notes, share katex.css and fonts
+ (if $(if $(findstring Windows,$(OS)),[ ! "windows" ],[ -e $(InstallReleaseNotes)/katex/katex.css ] && [ ! -L $(InstallReleaseNotes)/katex ]) ; \
+ then \
+ (cd $(installdir); ln -s -f $(relInstallReleaseNotes)/katex katex) ; \
+ else \
+ $(INSTALL) -m 2755 -d $(installdir)/katex/fonts ; \
+ $(INSTALL) -m 0644 --ifdiff katex/katex.css $(installdir)/katex/katex.css ; \
+ $(INSTALL) -m 0644 --ifdiff katex/fonts/* $(installdir)/katex/fonts ; \
+ fi)
+endif
+ifeq ($(OS),Windows_NT)
+ cp $(installdir)/$(x).html $(installdir)/index.html
+else
+ (cd $(installdir); ln -s -f $(x).html index.html)
+endif
+
+
stexsrc = csug.stex title.stex copyright.stex contents.stex\
preface.stex intro.stex use.stex expeditor.stex debug.stex foreign.stex\
binding.stex control.stex objects.stex numeric.stex io.stex\
@@ -57,7 +76,7 @@ stexsrc = csug.stex title.stex copyright.stex contents.stex\
compat.stex bibliography.stex summary.stex
texsrc = ${stexsrc:%.stex=%.tex}
-moresrc = tspl4-prep.stex priminfo.ss docond.ss csug8.cls csug8.hcls csug810.clo scheme.sty csug.bib \
+moresrc = tspl4-prep.stex priminfo.ss docond.ss csug8.cls csug8.hcls csug810.clo csug.bib \
setup.ss summary.ss tspl.bst
$(stexsrc) $(moresrc):
@@ -136,9 +155,14 @@ $(x).hprethirdrun: $(x).hsecondrun
cat tspl.haux >> $x.haux
touch $(x).hprethirdrun
+$(x).hfourthrun: $(x).hprefourthrun
+$(x).hprefourthrun: $(x).hthirdrun
+ cat tspl.haux >> $x.haux
+ touch $(x).hprefourthrun
+
$(x).prefirstrun: $(texsrc) csug8.cls csug810.clo
-$(x).firstrun: scheme.sty
+$(x).firstrun:
tspl.aux: ${TSPLdir}/tspl.aux
cat ${TSPLdir}/*.aux | grep '\\newlabel' | \
diff --git a/makefiles/Makefile-release_notes.in b/makefiles/Makefile-release_notes.in
index 4abe8eb8d..59c0c9ef6 100644
--- a/makefiles/Makefile-release_notes.in
+++ b/makefiles/Makefile-release_notes.in
@@ -1,5 +1,7 @@
srcdir=oops-missing-srcdir
installdir=oops-missing-installdir
+InstallCSUG=oops-missing-InstallCSUG
+relInstallCSUG=oops-missing-relInstallCSUG
m=oops-missing-m
STEXLIB=oops-missing-stexlib
# Zuo overrides the above variables when running `make`
@@ -25,7 +27,7 @@ bib =
include $(STEXLIB)/Mf-stex
srcs = $(x).stex releasenotes.cls releasenotes.hcls \
- macros.stex releasenotes.css scheme.sty
+ macros.stex releasenotes.css
# define or override suffixes here
@@ -42,10 +44,22 @@ install: $x.pdf $x.html
fi)
$(INSTALL) -m 2755 -d $(installdir)/gifs
$(INSTALL) -m 0644 --ifdiff gifs/*.gif $(installdir)/gifs
- $(INSTALL) -m 2755 -d $(installdir)/math
-rm -rf $(installdir)/$(mathdir)
+ifeq ($(strip $(KATEX)),)
+ $(INSTALL) -m 2755 -d $(installdir)/math
$(INSTALL) -m 2755 -d $(installdir)/$(mathdir)
if [ -e $(mathdir)/0.gif ] ; then $(INSTALL) -m 0644 $(mathdir)/*.gif $(installdir)/$(mathdir) ; fi
+else ifneq ($(strip $(KATEX_CSS)),no)
+# if already installed csug, share katex.css and fonts
+ (if $(if $(findstring Windows,$(OS)),[ ! "windows" ],[ -e $(InstallCSUG)/katex/katex.css ] && [ ! -L $(InstallCSUG)/katex ]) ; \
+ then \
+ (cd $(installdir); ln -s -f $(relInstallCSUG)/katex katex) ; \
+ else \
+ $(INSTALL) -m 2755 -d $(installdir)/katex/fonts ; \
+ $(INSTALL) -m 0644 --ifdiff katex/katex.css $(installdir)/katex/katex.css ; \
+ $(INSTALL) -m 0644 --ifdiff katex/fonts/* $(installdir)/katex/fonts ; \
+ fi)
+endif
# define any dependencies here
diff --git a/release_notes/releasenotes.css b/release_notes/releasenotes.css
index ef7507d2c..a3958eeb8 100644
--- a/release_notes/releasenotes.css
+++ b/release_notes/releasenotes.css
@@ -55,3 +55,5 @@ table.indent {margin-left: 20px}
.tag{ color: navy; font-weight: bold; }
.entity{ color: purple; font-weight: bold; }
.errflag{ color: red; font-weight: bold; }
+.schemedisplay { line-height: 1.0625; }
+.schemedisplay .katex { font-size: 1em; }
diff --git a/release_notes/scheme.sty b/release_notes/scheme.sty
deleted file mode 100644
index 72e85ee84..000000000
--- a/release_notes/scheme.sty
+++ /dev/null
@@ -1,47 +0,0 @@
-\usepackage{color}
-\def\transerr#1{\begingroup\slshape}
-\def\transin#1{\begingroup\color{red}}
-\def\transout#1{\begingroup\color{blue}}
-\def\endtranserr#1{\endgroup}
-\def\endtransin#1{\endgroup}
-\def\endtransout#1{\endgroup}
-
-\newskip\ttglue
-\let\ninefivett=\tt % \font\ninefivett=cmtt9 at 9.5pt
-\ttglue=.5em plus .25em minus .15em
-\newskip\schemeindent
-\schemeindent=0pt
-{\obeyspaces\global\let =\ }
-\def\schtilde{\raisebox{-.5ex}{\hbox{\char`\~}}}
-\def\schdot{.}
-\def\schcarat{\char`\^}
-\def\schbackslash{\char`\\}
-\def\schatsign{\char`\@}
-\def\schunderscore{\char`\_}
-\def\schlbrace{\char`\{}
-\def\schrbrace{\char`\}}
-\def\scheme#1{\mbox{\ttfamily\ninefivett\frenchspacing\spaceskip=\ttglue#1}}
-
-\def\schemeblankline{\par\beforeschemedisplay}
-\def\schemelinestart{{\leavevmode\hbox{\hskip \schemeindent\relax}}}
-%%% handle numbered lines in scheme.sty and scheme.hsty
-%%% ---have scheme-prep produce only \schemelinestart
-\def\schemelinestartnumbered#1{{\leavevmode\hbox{\hbox to 1em {\hfil{\rm #1}} \hskip .5\schemeindent\relax}}}
-
-\def\noskip\schemedisplay{\begingroup%
- \parindent=0pt%
- \parskip=0pt%
- \def\becomes{\hbox to 2em{\hfil$\rightarrow$\hfil}}%
- \def\is{\hbox to 2em{\hfil$\Rightarrow$\hfil}}%
- \def\si{\hbox to 2em{\hfil}}%
- \interlinepenalty=2000%
- \baselineskip=11pt plus 1pt\ninefivett\obeyspaces\frenchspacing}
-\def\schemedisplay{\beforeschemedisplay\noskip\schemedisplay}
-\def\longcode\schemedisplay{\penalty-200\vskip 8pt plus 4pt%
- \kern3pt\hrule\kern5pt\nobreak\noskip\schemedisplay}
-\def\endschemedisplay{\par\endgroup\afterschemedisplay}
-\def\var#1{{\normalsize\textrm{\textit{#1}}}}
-\def\raw#1{#1}
-\def\beforeschemedisplay{\penalty-100\vskip\parskip\vskip5pt}
-\def\afterschemedisplay{\penalty-200\vskip5pt}
-
diff --git a/stex b/stex
index 5e4f0ca67..27cddfbf5 160000
--- a/stex
+++ b/stex
@@ -1 +1 @@
-Subproject commit 5e4f0ca67bac448e19a24c09f12fc16d24cd6b6d
+Subproject commit 27cddfbf59a48f3f10092e4dd0e450726b6b2e7c