Notebook.sh: Difference between revisions

From XPUB & Lens-Based wiki
No edit summary
No edit summary
Line 1: Line 1:
The [https://nickm.com/ep2e/ Exploratory Programming] textbook written by Nick Monfort suggests  to get paper in the room again during prototyping b
This year, I'm curious to explore ways to generate these booklets from the wiki, and hook into one of the habits and rhythms at the course that is quite central: wiki editing. There is a lot to find on this wiki, some pages date from years back, which can easily turn a moment of wiki editing into discovery moments of "who wrote this?" and "oh, did this happen?". 
The script below uses <code>curl</code>, <code>pandoc</code>, <code>weasyprint</code>, <code>pdfbook2</code> and [[User:Manetta/Booklet-stylesheet.css|Booklet-stylesheet.css]] as a stylesheet to render a PDF from a wiki page.
The script below uses <code>curl</code>, <code>pandoc</code>, <code>weasyprint</code>, <code>pdfbook2</code> and [[User:Manetta/Booklet-stylesheet.css|Booklet-stylesheet.css]] as a stylesheet to render a PDF from a wiki page.


Line 8: Line 12:


<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
#!/bin/bash
# insert your wiki page below, between the quotes
# insert your wiki page below, between the quotes
WIKIPAGE=$1
WIKIPAGE=$1


# first download the wiki page in wikitext to a local file
# Extra feature: local CSS edits first!
curl https://pzwiki.wdka.nl/mediadesign/$WIKIPAGE?action=raw > $WIKIPAGE.mediawiki
# ---------------------------------------------------------------
# The script will only download a local "booklet-stylesheet.css"
# if you don't have this file on your computer yet;
# In other words: it never overwrites your local stylesheet!
# This allows for making custom modifications to the stylesheet
# for a specific booklet. :)
if [[ $(ls booklet-stylesheet.css) ]]; then
        echo ">>> local booklet-sylesheet.css found"
else
        echo ">>> downloading booklet-sylesheet.css"
        curl --silent  https://pzwiki.wdka.nl/mediadesign/User:Manetta/Booklet-stylesheet.css?action=raw > booklet-stylesheet.css
fi
 
curl --silent  https://pzwiki.wdka.nl/mediadesign/User:Manetta/Booklet-stylesheet.css?action=raw > booklet-stylesheet.css.tmp
 
DIFF=$(diff booklet-stylesheet.css.tmp booklet-stylesheet.css)
#if [[ $? != 0 ]]; then
#      echo ">>> error"
if [[ $DIFF ]]; then
        echo ">>> checking booklet-sylesheet.css: local edits were made"
else
        echo ">>> checking booklet-sylesheet.css: in sync with User:Manetta/Booklet-stylesheet.css"
fi


# then convert this file into a HTML page, using the stylesheet at https://pzwiki.wdka.nl/mediadesign/User:Manetta/Booklet-stylesheet.css
rm booklet-stylesheet.css.tmp
pandoc --from mediawiki --to html $WIKIPAGE.mediawiki --css https://pzwiki.wdka.nl/mediadesign/User:Manetta/Booklet-stylesheet.css?action=raw --output $WIKIPAGE.html


# then turn the HTML page into a PDF with weasyprint
# Turn the HTML page into a PDF with weasyprint
weasyprint $WIKIPAGE.html --stylesheet https://pzwiki.wdka.nl/mediadesign/User:Manetta/Booklet-stylesheet.css?action=raw $WIKIPAGE.pdf
# ---------------------------------------------------------------
echo ">>> generating $WIKIPAGE.pdf (with weasyprint)"
weasyprint https://pzwiki.wdka.nl/mediadesign/$WIKIPAGE?action=render --stylesheet booklet-stylesheet.css $WIKIPAGE.pdf


# and finally, turn the PDF into an A5 booklet PDF for printing
# And finally, turn the PDF into an A5 booklet PDF for printing
# ---------------------------------------------------------------
# pdfbook2 is part of the texlive-extra-utils package in Debian
# pdfbook2 is part of the texlive-extra-utils package in Debian
echo ">>> generating $WIKIPAGE-book.pdf (with pdfbook2)"
pdfbook2 --paper=a4paper --short-edge --no-crop $WIKIPAGE.pdf
pdfbook2 --paper=a4paper --short-edge --no-crop $WIKIPAGE.pdf
</syntaxhighlight>
</syntaxhighlight>

Revision as of 17:16, 21 November 2023

The Exploratory Programming textbook written by Nick Monfort suggests to get paper in the room again during prototyping b

This year, I'm curious to explore ways to generate these booklets from the wiki, and hook into one of the habits and rhythms at the course that is quite central: wiki editing. There is a lot to find on this wiki, some pages date from years back, which can easily turn a moment of wiki editing into discovery moments of "who wrote this?" and "oh, did this happen?".

The script below uses curl, pandoc, weasyprint, pdfbook2 and Booklet-stylesheet.css as a stylesheet to render a PDF from a wiki page.

You can copy the script and save it as a local bash file, for example: booklet.sh.

And run it with: $ bash booklet.sh WIKIPAGE, for example: $ bash booklet.sh Pen_plotters

Note that you should use underscores and not spaces in the wiki pagename!

#!/bin/bash

# insert your wiki page below, between the quotes
WIKIPAGE=$1

# Extra feature: local CSS edits first!
# ---------------------------------------------------------------
# The script will only download a local "booklet-stylesheet.css"
# if you don't have this file on your computer yet;
# In other words: it never overwrites your local stylesheet!
# This allows for making custom modifications to the stylesheet
# for a specific booklet. :)
if [[ $(ls booklet-stylesheet.css) ]]; then
        echo ">>> local booklet-sylesheet.css found"
else
        echo ">>> downloading booklet-sylesheet.css"
        curl --silent  https://pzwiki.wdka.nl/mediadesign/User:Manetta/Booklet-stylesheet.css?action=raw > booklet-stylesheet.css
fi

curl --silent  https://pzwiki.wdka.nl/mediadesign/User:Manetta/Booklet-stylesheet.css?action=raw > booklet-stylesheet.css.tmp

DIFF=$(diff booklet-stylesheet.css.tmp booklet-stylesheet.css)
#if [[ $? != 0 ]]; then
#       echo ">>> error"
if [[ $DIFF ]]; then
        echo ">>> checking booklet-sylesheet.css: local edits were made"
else
        echo ">>> checking booklet-sylesheet.css: in sync with User:Manetta/Booklet-stylesheet.css"
fi

rm booklet-stylesheet.css.tmp

# Turn the HTML page into a PDF with weasyprint
# ---------------------------------------------------------------
echo ">>> generating $WIKIPAGE.pdf (with weasyprint)"
weasyprint https://pzwiki.wdka.nl/mediadesign/$WIKIPAGE?action=render --stylesheet booklet-stylesheet.css $WIKIPAGE.pdf

# And finally, turn the PDF into an A5 booklet PDF for printing
# ---------------------------------------------------------------
# pdfbook2 is part of the texlive-extra-utils package in Debian
echo ">>> generating $WIKIPAGE-book.pdf (with pdfbook2)"
pdfbook2 --paper=a4paper --short-edge --no-crop $WIKIPAGE.pdf