summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Krupcale <mkrupcale@matthewkrupcale.com>2019-03-13 13:15:16 -0400
committerMatthew Krupcale <mkrupcale@matthewkrupcale.com>2019-03-14 16:44:39 -0400
commita75d18cc0e58ba911c2e8402b12a6fbddd7116fe (patch)
tree0e9c11dac0f668c6b0327c2889c6c6902e0d26a1
parent8fe1a966e42d122b8d86c19917215a1c8c290a6c (diff)
downloadbpkg-generate-latex.tar.gz
bpkg-generate-latex.tar.xz
bpkg-generate-latex.zip
Add support for LaTeX documentation.generate-latex
* doc/.gitignore: Ignore .tex output * doc/cli.sh: Generate LaTeX man pages and documentation and run through pdflatex * doc/{doc,man}-{prologue,epilogue}.tex: Symlink to prologues and epilogues
-rw-r--r--doc/.gitignore5
-rwxr-xr-xdoc/cli.sh115
l---------doc/doc-epilogue.tex1
l---------doc/doc-prologue.tex1
l---------doc/man-epilogue.tex1
l---------doc/man-prologue.tex1
6 files changed, 114 insertions, 10 deletions
diff --git a/doc/.gitignore b/doc/.gitignore
index 7b6d42a..da1819d 100644
--- a/doc/.gitignore
+++ b/doc/.gitignore
@@ -1,5 +1,10 @@
bpkg*.xhtml
+bpkg*.tex
bpkg*.1
build2-package-manager-manual*.ps
build2-package-manager-manual*.pdf
build2-package-manager-manual.xhtml
+build2-package-manager-manual*.tex
+*.ps
+*.pdf
+
diff --git a/doc/cli.sh b/doc/cli.sh
index 013f0fa..87925b5 100755
--- a/doc/cli.sh
+++ b/doc/cli.sh
@@ -12,10 +12,11 @@ function error () { info "$*"; exit 1; }
while [ $# -gt 0 ]; do
case $1 in
--clean)
- rm -f bpkg*.xhtml bpkg*.1
+ rm -f bpkg*.xhtml bpkg*.tex bpkg*.1
rm -f build2-package-manager-manual*.ps \
- build2-package-manager-manual*.pdf \
- build2-package-manager-manual.xhtml
+ build2-package-manager-manual*.pdf \
+ build2-package-manager-manual.xhtml \
+ build2-package-manager-manual.tex
exit 0
;;
*)
@@ -36,14 +37,28 @@ function compile ()
shift
done
+ for i in "${!o[@]}"; do
+ case "${o[$i]}" in
+ --output-prefix)
+ local prefix="${o[$((i+1))]}"
+ ;;
+ --output-suffix)
+ local suffix="${o[$((i+1))]}"
+ ;;
+ esac
+ done
+
cli -I .. -v project="bpkg" -v version="$version" -v date="$date" \
--include-base-last "${o[@]}" --generate-html --html-prologue-file \
- man-prologue.xhtml --html-epilogue-file man-epilogue.xhtml --html-suffix .xhtml \
+man-prologue.xhtml --html-epilogue-file man-epilogue.xhtml --html-suffix .xhtml \
--link-regex '%b([-.].+)%../../build2/doc/b$1%' \
--link-regex '%b(#.+)?%../../build2/doc/build2-build-system-manual.xhtml$1%' \
--link-regex '%bpkg(#.+)?%build2-package-manager-manual.xhtml$1%' \
../bpkg/$n.cli
+ compile_latex "$n" "$prefix" "$suffix" "a4" "${o[@]}"
+ compile_latex "$n" "$prefix" "$suffix" "letter" "${o[@]}"
+
cli -I .. -v project="bpkg" -v version="$version" -v date="$date" \
--include-base-last "${o[@]}" --generate-man --man-prologue-file \
man-prologue.1 --man-epilogue-file man-epilogue.1 --man-suffix .1 \
@@ -52,6 +67,44 @@ man-prologue.1 --man-epilogue-file man-epilogue.1 --man-suffix .1 \
../bpkg/$n.cli
}
+function compile_latex () # <name> <prefix> <suffix> <paper> <o>
+{
+ local n=$1; shift
+ local prefix=$1; shift
+ local suffix=$1; shift
+ local paper=$1; shift
+ local o=("$@")
+
+ cli -I .. -v project="bpkg" -v version="$version" -v date="$date" \
+--include-base-last "${o[@]}" --generate-latex --latex-prologue-file \
+man-prologue.tex --latex-epilogue-file man-epilogue.tex \
+--latex-section-map "0=chapter*" --latex-section-map "1=chapter*" \
+--latex-section-map "H=part*" --latex-section-map "h=section*" \
+--latex-section-map "2=subsection*" \
+--link-regex '%bpkg(#.+)?%build2-package-manager-manual-'"$paper"'.pdf$1%' \
+--link-regex '%bpkg([-.].+)?\.pdf%bpkg$1-'"$paper"'.pdf%' \
+--link-regex '%b([-.].+)%../../build2/doc/b-'"$paper"'$1%' \
+--link-regex '%b(#.+)?%../../build2/doc/build2-build-system-manual-'"$paper"'.pdf$1%' \
+../bpkg/$n.cli
+
+ run_pdflatex "$prefix$n$suffix" "$paper"
+}
+
+function run_pdflatex () # <name> <paper>
+{
+ local n="$1"
+ local paper="$2"
+
+ if [ "$paper" == "letter" ]; then
+ sed -i 's/a4paper/letterpaper/' "$n.tex"
+ fi
+
+ pdflatex -output-format dvi -jobname="$n-$paper" "$n"
+ dvips "$n-$paper.dvi"
+ pdflatex -output-format pdf -jobname="$n-$paper" "$n"
+ rm -f "$n-$paper".{aux,dvi,log,out,toc}
+}
+
o="--output-prefix bpkg- --class-doc bpkg::common_options=short"
# A few special cases.
@@ -73,7 +126,25 @@ done
# Manual.
#
-cli -I .. \
+
+function compile_doc () # <file> <prefix> <suffix>
+{
+ local f="$1"
+ local prefix="$2"
+ local suffix="$3"
+
+ compile_html_doc "$f" "$prefix" "$suffix"
+ compile_latex_doc "$f" "$prefix" "$suffix" "a4"
+ compile_latex_doc "$f" "$prefix" "$suffix" "letter"
+}
+
+function compile_html_doc () # <file> <prefix> <suffix>
+{
+ local f="$1"
+ local prefix="$2"
+ local suffix="$3"
+
+ cli -I .. \
-v version="$(echo "$version" | sed -e 's/^\([^.]*\.[^.]*\).*/\1/')" \
-v date="$date" \
--generate-html --html-suffix .xhtml \
@@ -81,10 +152,34 @@ cli -I .. \
--html-epilogue-file doc-epilogue.xhtml \
--link-regex '%b([-.].+)%../../build2/doc/b$1%' \
--link-regex '%b(#.+)?%../../build2/doc/build2-build-system-manual.xhtml$1%' \
---output-prefix build2-package-manager- manual.cli
+--output-prefix "$prefix" \
+--output-suffix "$suffix" \
+"$f"
+}
+
+function compile_latex_doc () # <file> <prefix> <suffix> <paper>
+{
+ local f="$1"
+ local prefix="$2"
+ local suffix="$3"
+ local paper="$4"
-html2ps -f doc.html2ps:a4.html2ps -o build2-package-manager-manual-a4.ps build2-package-manager-manual.xhtml
-ps2pdf14 -sPAPERSIZE=a4 -dOptimize=true -dEmbedAllFonts=true build2-package-manager-manual-a4.ps build2-package-manager-manual-a4.pdf
+ cli -I .. \
+-v version="$(echo "$version" | sed -e 's/^\([^.]*\.[^.]*\).*/\1/')" \
+-v date="$date" \
+--generate-latex \
+--latex-prologue-file doc-prologue.tex \
+--latex-epilogue-file doc-epilogue.tex \
+--link-regex '%bpkg([-.].+)?\.pdf%bpkg$1-'"$paper"'.pdf%' \
+--link-regex '%b([-.].+)%../../build2/doc/b-'"$paper"'$1%' \
+--link-regex '%b(#.+)?%../../build2/doc/build2-build-system-manual-'"$paper"'.pdf$1%' \
+--output-prefix "$prefix" \
+--output-suffix "$suffix" \
+"$f"
+
+ local n="$2$(basename -s .cli $1)$3"
+
+ run_pdflatex "$n" "$paper"
+}
-html2ps -f doc.html2ps:letter.html2ps -o build2-package-manager-manual-letter.ps build2-package-manager-manual.xhtml
-ps2pdf14 -sPAPERSIZE=letter -dOptimize=true -dEmbedAllFonts=true build2-package-manager-manual-letter.ps build2-package-manager-manual-letter.pdf
+compile_doc manual.cli 'build2-package-manager-'
diff --git a/doc/doc-epilogue.tex b/doc/doc-epilogue.tex
new file mode 120000
index 0000000..b17b5d1
--- /dev/null
+++ b/doc/doc-epilogue.tex
@@ -0,0 +1 @@
+style/doc-epilogue.tex \ No newline at end of file
diff --git a/doc/doc-prologue.tex b/doc/doc-prologue.tex
new file mode 120000
index 0000000..b5d4e00
--- /dev/null
+++ b/doc/doc-prologue.tex
@@ -0,0 +1 @@
+style/doc-prologue.tex \ No newline at end of file
diff --git a/doc/man-epilogue.tex b/doc/man-epilogue.tex
new file mode 120000
index 0000000..4793611
--- /dev/null
+++ b/doc/man-epilogue.tex
@@ -0,0 +1 @@
+style/man-epilogue.tex \ No newline at end of file
diff --git a/doc/man-prologue.tex b/doc/man-prologue.tex
new file mode 120000
index 0000000..258684a
--- /dev/null
+++ b/doc/man-prologue.tex
@@ -0,0 +1 @@
+style/man-prologue.tex \ No newline at end of file