wkhtmltopdf isn't using a fixed-width font for CSS font-family:monospace. Nor is it using one for <PRE> <CODE> or <TT> elements. Add in some Courier fonts for it to use - note that Courier 10 Pitch is installed on Ubuntu by default. Note these fonts need to be installed on the system that generates the pdf documentation. Previously the htmldoc stylesheet was kept in place and the SWIG stylesheet was prepended to it inline in SWIGDocumentation.html. Now the SWIG stylesheet has been amended with most of the htmldoc stylesheet changes and completely replaced after htmldoc is run.
88 lines
4.9 KiB
Makefile
88 lines
4.9 KiB
Makefile
# Makefile for generating the SWIG documentation
|
|
#
|
|
# Note that the htmldoc package needs to be installed, but requires patching (using the
|
|
# margin-left.patch file from this directory) in order to correctly generate the pdf docs.
|
|
# The .html files are first processed and updated with chapter numbering and anchor names
|
|
# are added to the HTML headings using the python scripts. The htmldoc program is then
|
|
# used to generate the PDF document and single page HTML version of the documentation.
|
|
# HTML TIDY (package also known as tidy) is also required and is used as an aid to HTML
|
|
# validation.
|
|
#
|
|
# Additional html validation can be done using the validate target.
|
|
# Additional link checking can be done using the linkchecker1 and linkchecker2 target.
|
|
#
|
|
|
|
# Note the # and " are escaped
|
|
HTMLDOC_OPTIONS = "--book --toclevels 4 --no-numbered --toctitle \"Table of Contents\" --title --titleimage swig16.png --linkcolor \#0000ff --linkstyle underline --size Universal --left 0.50in --right 0.50in --top 0.50in --bottom 0.50in --header .t. --footer h.1 --nup 1 --tocheader .t. --tocfooter ..i --portrait --color --no-pscommands --no-xrxcomments --compression=1 --jpeg=0 --fontsize 10.0 --fontspacing 1.2 --headingfont Helvetica --bodyfont Times --headfootsize 10.0 --headfootfont Helvetica --charset iso-8859-1 --links --no-embedfonts --pagemode outline --pagelayout single --firstpage c1 --pageeffect none --pageduration 10 --effectduration 1.0 --no-encryption --permissions all --owner-password \"\" --user-password \"\" --browserwidth 680"
|
|
|
|
.PHONY: maketoc check generate all maintainer-clean validate test
|
|
|
|
all: maketoc check generate
|
|
|
|
maketoc:
|
|
python maketoc.py
|
|
|
|
# Use this to regenerate CCache.html should this ever be needed
|
|
CCache.html: ../../CCache/ccache.yo
|
|
yodl2html -o CCache.html ../../CCache/ccache.yo
|
|
|
|
# Tabs in the html files will stop the build as wkhtmltopdf does not expand them correctly - replace them with the appropriate number of tabs
|
|
# Use htmltidy to warn about some HTML errors. Note that it is not used to clean/tidy the HTML,
|
|
# it is just used as a primitive HTML checker.
|
|
# CCache.html is generated by yodl2html and has a few insignificant problems, so we don't put it through tidy
|
|
check:
|
|
all="index.html Sections.html `sed '/^#/d' chapters | grep -v CCache.html`" && for a in $$all; do echo "Check for tabs $$a" && if grep -P '\t' $$a; then echo "Please delete the tabs from the lines above" && exit 1; fi; done && for a in $$all; do echo "HTML tidy check $$a" && tidy -errors --gnu-emacs yes -quiet $$a; done;
|
|
|
|
# Note wkhtmltopdf limitations for generating pdf docs:
|
|
# 1) <H1><a name="X"></a>Text</H1> style links don't work and need changing to
|
|
# <H1><a name="X">Text</a></H1>
|
|
# 2) Tabs in <pre> elements should be expanded to 8 spaces by default, but
|
|
# are expanded to just one space and css tab-size is not working.
|
|
# 3) <pre> <tt> <code> elements do not always select a fixed-width font - try installing the
|
|
# Courier font to fix - these have been added to style.css.
|
|
generate: SWIGDocumentation.html
|
|
wkhtmltopdf --margin-top 20mm --margin-bottom 20mm --margin-left 10mm --margin-right 10mm --header-font-size 6 --footer-font-size 6 --header-spacing 6 --footer-spacing 6 --header-center '[doctitle]' --footer-left '[subsection]' --footer-right '[page]' SWIGDocumentation.html SWIGDocumentation.pdf
|
|
|
|
SWIGDocumentation.html: swightml.book
|
|
htmldoc --batch swightml.book || true
|
|
python fixstyle.py SWIGDocumentation.html
|
|
|
|
swightml.book: chapters Sections.html
|
|
echo "#HTMLDOC 1.8.24" > swightml.book
|
|
echo -t html -f SWIGDocumentation.html $(HTMLDOC_OPTIONS) >> swightml.book
|
|
echo "Sections.html" >> swightml.book
|
|
cat chapters >> swightml.book
|
|
|
|
maintainer-clean: clean-baks
|
|
rm -f swightml.book
|
|
rm -f SWIGDocumentation.html
|
|
rm -f SWIGDocumentation.pdf
|
|
rm -rf linkchecker-tmp
|
|
|
|
clean-baks:
|
|
rm -f *.bak
|
|
|
|
test:
|
|
grep "href=\".*\.html\"" index.html
|
|
grep "href=\".*\.html\"" Sections.html
|
|
all=`sed '/^#/d' chapters`; for a in $$all; do grep -l "href=\".*\.html\"" $$a; done;
|
|
|
|
# Validating using the WDG offline validator - http://www.htmlhelp.com/tools/validator/offline/
|
|
validate:
|
|
all=`sed '/^#/d' chapters`; for a in $$all; do validate --emacs $$a; done;
|
|
|
|
# Link checking using linkchecker of the index.html only file (including anchors)
|
|
linkchecker1:
|
|
@echo -----------------------------------------------------------------------
|
|
@echo Note linkchecker versions prior to 6.1 do not work properly wrt anchors
|
|
@echo -----------------------------------------------------------------------
|
|
linkchecker --config=./linkchecker.config --anchors index.html
|
|
|
|
# Check for links which don't work including those generated from the individual .html files into SWIGDocumentation.html
|
|
linkchecker2:
|
|
rm -rf linkchecker-tmp
|
|
mkdir linkchecker-tmp
|
|
cp SWIGDocumentation.html linkchecker-tmp
|
|
cp *.png linkchecker-tmp
|
|
(cd linkchecker-tmp && linkchecker --config=../linkchecker.config -F text --no-warnings SWIGDocumentation.html)
|
|
|