|
commit b713b919756fd420063e7defc30bfc21996de636
Author: Albrecht Schlosser <albrechts.fltk@online.de>
AuthorDate: Sun Sep 20 14:44:14 2020 +0200
Commit: Albrecht Schlosser <albrechts.fltk@online.de>
CommitDate: Mon Sep 21 14:32:46 2020 +0200
PDF docs: generate LaTeX header file from source
The LaTeX header file used when creating PDF documentation depends on
the doxygen and latex versions, respectively.
The old header file 'documentation/src/fltk-book.tex.in' had been
generated manually and needed to be updated for new doxygen versions
which made the PDF documentation generation dependent on the
doxygen/latex versions on the build system.
The new LaTeX header file 'fltk-book.tex' is generated by doxygen,
i.e. taking into account the doxygen and latex versions on the build
system and "edited" to include the page title defined in the new
file 'documentation/src/fltk-title.tex.in'.
This makes the PDF documentation independent of the doxygen and
latex versions of the build system.
documentation/CMakeLists.txt | 34 ++++----
documentation/Makefile | 9 +-
documentation/make_header | 58 +++++++++++++
documentation/src/fltk-book.tex.in | 161 ------------------------------------
documentation/src/fltk-title.tex.in | 33 ++++++++
5 files changed, 115 insertions(+), 180 deletions(-)
diff --git documentation/CMakeLists.txt documentation/CMakeLists.txt
index c240531..acbdc6a 100644
--- documentation/CMakeLists.txt
+++ documentation/CMakeLists.txt
@@ -36,13 +36,13 @@ if (OPTION_BUILD_HTML_DOCUMENTATION)
set (GENERATE_LATEX NO)
set (LATEX_HEADER "")
- configure_file(
+ configure_file (
${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
@ONLY
)
- configure_file(
+ configure_file (
${CMAKE_CURRENT_SOURCE_DIR}/src/tiny.png
${CMAKE_CURRENT_BINARY_DIR}/html/tiny.png
COPYONLY
@@ -51,7 +51,6 @@ if (OPTION_BUILD_HTML_DOCUMENTATION)
# generate html docs
add_custom_target (html
- # ALL
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating HTML documentation" VERBATIM
@@ -73,28 +72,31 @@ if (OPTION_BUILD_PDF_DOCUMENTATION)
set (GENERATE_LATEX YES)
set (LATEX_HEADER "${CMAKE_CURRENT_BINARY_DIR}/fltk-book.tex")
- configure_file(
+ # strip potential " (Git-hash)" from the original version
+ string (REGEX REPLACE " .*$" "" DOXY_VERSION ${DOXYGEN_VERSION})
+ execute_process (COMMAND date +%Y
+ OUTPUT_VARIABLE YEAR
+ )
+
+ configure_file (
${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
${CMAKE_CURRENT_BINARY_DIR}/Doxybook
@ONLY
)
- # generate LaTeX header fltk-book.tex
-
- set (DOXY_VERSION ${DOXYGEN_VERSION})
- execute_process (COMMAND date +%Y
- OUTPUT_VARIABLE YEAR
- )
-
- configure_file (${CMAKE_CURRENT_SOURCE_DIR}/src/fltk-book.tex.in
- ${CMAKE_CURRENT_BINARY_DIR}/fltk-book.tex
+ configure_file (
+ ${CMAKE_CURRENT_SOURCE_DIR}/src/fltk-title.tex.in
+ ${CMAKE_CURRENT_BINARY_DIR}/fltk-title.tex
@ONLY
)
# generate fltk.pdf
- add_custom_command(
+ add_custom_command (
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/fltk.pdf
+ COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/make_header
+ ${CMAKE_CURRENT_BINARY_DIR}/fltk-title.tex
+ ${CMAKE_CURRENT_BINARY_DIR}/fltk-book.tex
COMMAND ${DOXYGEN_EXECUTABLE} Doxybook
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/make_pdf
COMMAND cp -f latex/refman.pdf fltk.pdf
@@ -105,7 +107,6 @@ if (OPTION_BUILD_PDF_DOCUMENTATION)
# add target 'pdf'
add_custom_target (pdf
- # ALL
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/fltk.pdf
)
@@ -117,8 +118,7 @@ endif (OPTION_BUILD_PDF_DOCUMENTATION)
if (DOCS)
- add_custom_target(docs
- # ALL
+ add_custom_target (docs
DEPENDS ${DOCS}
)
diff --git documentation/Makefile documentation/Makefile
index 5e95ad5..43be79f 100644
--- documentation/Makefile
+++ documentation/Makefile
@@ -66,7 +66,7 @@ dist: docs
clean:
$(RM) Doxyfile Doxybook
- $(RM) fltk.pdf refman.pdf src/fltk-book.tex
+ $(RM) fltk.pdf refman.pdf src/fltk-book.tex src/fltk-book.tex.in
$(RMDIR) html latex
$(RM) *~ *.bck *.bak *.log
$(RM) $(MANPAGES) $(SRC_DOCDIR)/*.0
@@ -180,9 +180,14 @@ refman.pdf: $(HTMLFILES) Doxybook src/fltk-book.tex
./make_pdf
src/fltk-book.tex: src/fltk-book.tex.in
- DOXY_VERSION=`$(DOXYDOC) --version`; \
+ echo "Generating $@ ..."
+ DOXY_VERSION=`$(DOXYDOC) --version|cut -f1 -d' '`; \
YEAR=`date +%Y`; \
sed -e"s/@YEAR@/$$YEAR/g" \
-e"s/@FLTK_VERSION@/$(FLTK_VERSION)/g" \
-e"s/@DOXY_VERSION@/$$DOXY_VERSION/g" \
< $< > $@
+
+src/fltk-book.tex.in: src/fltk-title.tex.in
+ echo "Generating $@ ..."
+ ./make_header src/fltk-title.tex.in src/fltk-book.tex.in
diff --git documentation/make_header documentation/make_header
new file mode 100755
index 0000000..44af365
--- /dev/null
+++ documentation/make_header
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+# Create a new LaTeX header file for doxygen PDF docs
+#
+# Note: this LaTeX file depends on Doxygen and LaTeX versions, resp.
+# and needs therefore to be created with current Doxygen and LaTeX
+# versions on the build system.
+#
+# Usage:
+#
+# $ sh make_header input-file output-file
+#
+# where 'input-file' is the pure (LaTeX) title page (template)
+# and 'output-file' is the generated (LaTeX) title page (template)
+# to be used by `make' or `cmake` to generate the final LaTeX page
+# header (combined doxygen template + FLTK title page).
+#
+#=======================================================================
+# This script requires a posix shell and uses the following commands:
+# cat, rm and sed and (obviously) doxygen
+#=======================================================================
+
+# input and output file names
+FLTK_HEAD="$1"
+DOXY_HEAD="$2"
+# temp file
+DOXY_TEMP="doxy-header.tex.$$"
+
+if test x$FLTK_HEAD = x; then
+ echo "usage: $0 fltk-header-file output-file"
+ exit 1
+fi
+
+if test x$DOXY_HEAD = x; then
+ echo "usage: $0 fltk-header-file output-file"
+ exit 1
+fi
+
+# Create the doxygen LaTeX header template and replace the LaTeX
+# code between (and including) the lines containing
+# - 'begin{titlepage}' and
+# - 'end{titlepage}'
+# with our PDF document title page (LaTeX code) and write the
+# result to $DOXY_HEAD.
+
+doxygen -w latex $DOXY_TEMP /dev/null /dev/null
+
+# combine three parts of these files to the output file
+# using '( ... ) > $DOXY_HEAD' to write (concatenate)
+# all three parts to one file
+
+( sed -e'/begin{titlepage}/,$d' < $DOXY_TEMP
+ cat $FLTK_HEAD
+ sed -e'1,/end{titlepage}/d' < $DOXY_TEMP
+) > $DOXY_HEAD
+
+# cleanup
+rm -f $DOXY_TEMP
diff --git documentation/src/fltk-book.tex.in documentation/src/fltk-book.tex.in
deleted file mode 100644
index 880d06e..0000000
--- documentation/src/fltk-book.tex.in
+++ /dev/null
@@ -1,161 +0,0 @@
-% Latex header for FLTK generated by doxygen 1.8.13
-\batchmode
-\documentclass[twoside]{book}
-
-% Packages required by doxygen
-\usepackage{fixltx2e}
-\usepackage{calc}
-\usepackage{doxygen}
-\usepackage[export]{adjustbox} % also loads graphicx
-\usepackage{graphicx}
-\usepackage[utf8]{inputenc}
-\usepackage{makeidx}
-\usepackage{multicol}
-\usepackage{multirow}
-\PassOptionsToPackage{warn}{textcomp}
-\usepackage{textcomp}
-\usepackage[nointegrals]{wasysym}
-\usepackage[table]{xcolor}
-
-% Font selection
-\usepackage[T1]{fontenc}
-\usepackage[scaled=.90]{helvet}
-\usepackage{courier}
-\usepackage{amssymb}
-\usepackage{sectsty}
-\renewcommand{\familydefault}{\sfdefault}
-\allsectionsfont{%
- \fontseries{bc}\selectfont%
- \color{darkgray}%
-}
-\renewcommand{\DoxyLabelFont}{%
- \fontseries{bc}\selectfont%
- \color{darkgray}%
-}
-\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
-
-% Page & text layout
-\usepackage{geometry}
-\geometry{%
- a4paper,%
- top=2.5cm,%
- bottom=2.5cm,%
- left=2.5cm,%
- right=2.5cm%
-}
-\tolerance=750
-\hfuzz=15pt
-\hbadness=750
-\setlength{\emergencystretch}{15pt}
-\setlength{\parindent}{0cm}
-\setlength{\parskip}{3ex plus 2ex minus 2ex}
-\makeatletter
-\renewcommand{\paragraph}{%
- \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
- \normalfont\normalsize\bfseries\SS@parafont%
- }%
-}
-\renewcommand{\subparagraph}{%
- \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
- \normalfont\normalsize\bfseries\SS@subparafont%
- }%
-}
-\makeatother
-
-% Headers & footers
-\usepackage{fancyhdr}
-\pagestyle{fancyplain}
-\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}}
-\fancyhead[CE]{\fancyplain{}{}}
-\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}}
-\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}}
-\fancyhead[CO]{\fancyplain{}{}}
-\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}}
-\fancyfoot[LE]{\fancyplain{}{}}
-\fancyfoot[CE]{\fancyplain{}{}}
-\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }}
-\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }}
-\fancyfoot[CO]{\fancyplain{}{}}
-\fancyfoot[RO]{\fancyplain{}{}}
-\renewcommand{\footrulewidth}{0.4pt}
-\renewcommand{\chaptermark}[1]{%
- \markboth{#1}{}%
-}
-\renewcommand{\sectionmark}[1]{%
- \markright{\thesection\ #1}%
-}
-
-% Indices & bibliography
-\usepackage{natbib}
-\usepackage[titles]{tocloft}
-\setcounter{tocdepth}{3}
-\setcounter{secnumdepth}{5}
-\makeindex
-
-% Hyperlinks (required, but should be loaded last)
-\usepackage{ifpdf}
-\ifpdf
- \usepackage[pdftex,pagebackref=true]{hyperref}
-\else
- \usepackage[ps2pdf,pagebackref=true]{hyperref}
-\fi
-\hypersetup{%
- colorlinks=true,%
- linkcolor=blue,%
- citecolor=blue,%
- unicode%
-}
-
-% Custom commands
-\newcommand{\clearemptydoublepage}{%
- \newpage{\pagestyle{empty}\cleardoublepage}%
-}
-
-\usepackage{caption}
-\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}
-
-%===== C O N T E N T S =====
-
-\begin{document}
-
-% Titlepage & ToC
-\hypersetup{pageanchor=false,
- bookmarksnumbered=true,
- pdfencoding=unicode
- }
-\pagenumbering{alph}
-\begin{titlepage}
-\vspace*{5cm}
-\begin{center}%
-{\Huge FLTK @FLTK_VERSION@ Programming Manual}\\
-\vspace*{2cm}
-\begin{DoxyImageNoCaption}
- \mbox{\includegraphics[width=6cm]{FL200.png}}
-\end{DoxyImageNoCaption}\\
-\vspace*{2cm}
-{\Large
-Revision 11 by F. Costantini, D. Gibson, M. Melcher, \\
-A. Schlosser, B. Spitzak, and M. Sweet.}\\
-\vspace*{1.5cm}
-{\large Copyright 1998-@YEAR@ by Bill Spitzak and others.}\\
-\vspace*{0.75cm}
-{\small
-This software and manual are provided under the terms of the GNU Library General Public License.}\\
-{\small
-Permission is granted to reproduce this manual or any portion for any purpose,}\\
-{\small
-provided this copyright and permission notice are preserved.}\\
-\vspace*{2.5cm}
-{\large Generated by Doxygen @DOXY_VERSION@}\\
-\vspace*{0.5cm}
-\today{}\\
-\end{center}
-\end{titlepage}
-\clearemptydoublepage
-\pagenumbering{roman}
-\tableofcontents
-\clearemptydoublepage
-\pagenumbering{arabic}
-\hypersetup{pageanchor=true}
-
-%--- Begin generated contents ---
diff --git documentation/src/fltk-title.tex.in documentation/src/fltk-title.tex.in
new file mode 100644
index 0000000..8a10747
--- /dev/null
+++ documentation/src/fltk-title.tex.in
@@ -0,0 +1,33 @@
+%
+% FLTK PDF documentation title page (LaTeX)
+%
+\begin{titlepage}
+\vspace*{5cm}
+\begin{center}%
+{\Huge FLTK @FLTK_VERSION@ Programming Manual}\\
+\vspace*{2cm}
+\begin{DoxyImageNoCaption}
+ \mbox{\includegraphics[width=6cm]{FL200.png}}
+\end{DoxyImageNoCaption}\\
+\vspace*{2cm}
+{\Large
+Revision 11 by F. Costantini, D. Gibson, M. Melcher, \\
+A. Schlosser, B. Spitzak, and M. Sweet.}\\
+\vspace*{1.5cm}
+{\large Copyright 1998-@YEAR@ by Bill Spitzak and others.}\\
+\vspace*{0.75cm}
+{\small
+This software and manual are provided under the terms of the GNU Library General Public License.}\\
+{\small
+Permission is granted to reproduce this manual or any portion for any purpose,}\\
+{\small
+provided this copyright and permission notice are preserved.}\\
+\vspace*{2.5cm}
+{\large Generated by Doxygen @DOXY_VERSION@}\\
+\vspace*{0.5cm}
+\today{}\\
+\end{center}
+\end{titlepage}
+%
+% end of FLTK PDF documentation title page (LaTeX)
+%
[ Direct Link to Message ] | |