> ### Please, before reading this page, be sure to know what [StrapDown.js][] is
> Check out [index.html][] if you don't know yet how cool [StrapDown.js][] is !
---
[StrapDown.js]: //lbesson.bitbucket.io/md/ "Homepage of StrapDown.js !"
[index.html]: //lbesson.bitbucket.io/md/index.html "Explanations on StrapDown.js !"
[StrapDown2PDF]: //lbesson.bitbucket.io/md/strapdown2pdf "A super cool Bash script !"
# StrapDown2PDF
[StrapDown2PDF][] is a **super cool** Bash script designed to print a *StrapDown*-powered web-page to a PDF document.
## More details
To be more precise, [StrapDown.js][] allows you to write pretty HTML pages with the Markdown syntax (more details here [index.html][]).
And [StrapDown2PDF][] can be used (on your laptop, from the command line) to transform the document from HTML (writen with Markdown) to PDF (with one intermediate phasis as a LaTeX file).
---
## Example and how-to
[This page as a PDF](strapdown2pdf.pdf) is a pretty good example of an automatically compiled PDF file.
**Warning:** this script is *still experimental*: the compilation is never perfect.
It is advisable to use the `-keep` option, change a little bit the LaTeX file and then compile again.
### How-to ?
You just have to use this command, in a terminal:
> ```bash
> $ strapdown2pdf MyWebPage.html # This will produce "MyWebPage.pdf"
> ```
### More than one file at a time ?
**strapdown2pdf** even supports multi arguments.
For instance, the following command will print to PDF every [StrapDown.js][]-flavored HTML file in the current directory:
> ```bash
> $ echo "Calling 'strapdown2pdf *.html' will produce a PDF for every .html document in the current directory."
> $ strapdown2pdf *.html
> ```
---
### Even more details?
**strapdown2pdf** comes with a basic help included ! Just ask with option `-h` (as always):
> ```bash
> $ strapdown2pdf -h
> strapdown2pdf -help | [options]
>
> Print a StrapDown-powered web-page to a PDF document, using lunamark and autotex.
>
> Help:
> -h to print this help message (and quit).
> -v to print just the version of strapdown2pdf (and quit).
>
> Options:
> -i|-interactive run PDFLaTeX with the interactive (errorstopmode) mode (default is batchmode).
> -q|-quiet run strapdown2pdf in quiet mode (no output at all, everything is redirected to /tmp/strapdown2pdf.log).
> -m|-htm run strapdown2pdf to produce a simple HTML file (which do not use StrapDown.js), written to a .htm file.
> For important document, producing a .htm autonomous file is a good idea.
> -d|-discrete run strapdown2pdf is discrete mode, without adding any creditentials in the produced document.
> -s[0-9][0-9]*% change the default scale used by autotex (default is 85%, '-70%', '-75%' or '-80%' are good also) New!
> -[0-9][0-9]*pt change the default police size used by autotex (default is 11pt, '-10pt' or '-12pt' are good also) New!
> -k|-keep keep the intermediate .tex file. New!
> -s|-sign sign the produce PDF document with GnuPG (thanks to PDFCompress).
>
> strapdown2pdf v0.8 : Copyrights: (c) Lilian Besson 2011-2014.
> Released under the term of the GPL v3 Licence (more details on http://perso.crans.org/besson/LICENSE.html).
> In particular, strapdown2pdf is provided WITHOUT ANY WARANTY.
> ```
### Options
**strapdown2pdf** now comes with these options:
+ `-interactive` (shortcut is `-i`) to run [PDFLaTeX](http://perso.crans.org/besson/bin/pdflatex) with the interactive (errorstopmode) mode (default is batchmode),
+ `-quiet` (shortcut is `-q`) to run [strapdown2pdf](//lbesson.bitbucket.io/md/strapdown2pdf.html) in quiet mode (no output at all, everything is redirected to `/tmp/strapdown2pdf.log`),
+ `-htm` (shortcut is `-m`) to produce a simple HTML file (which do not use StrapDown.js, see [this example strapdown2pdf.htm](./strapdown2pdf.htm)), written to a .htm file. For important document, producing a .htm autonomous file is a good idea,
+ `-discrete` (shortcut is `-d`) to run strapdown2pdf is discrete mode, without adding any creditentials in the produced document,
+ `-s[0-9][0-9]*%` (e.g. `-79%`) to change the default scale used by autotex (default is 85%, '-70%', '-75%' or '-80%' are good also),
+ `-[0-9][0-9]*pt` (e.g. `-10pt`) to change the default police size used by autotex (default is 11pt, '-10pt' or '-12pt' are good also),
+ `-keep` (shortcut is `-k`) to keep the intermediate `.tex` file,
+ `-sign` (shortcut is `-s`) to sign the produce PDF document with GnuPG (thanks to [PDFCompress](http://perso.crans.org/besson/bin/PDFCompress) option `--sign`).
---
## Mandatory requirements
+ [lunamark](http://jgm.github.io/lunamark/lunamark.1.html) (an awesome *lua*-powered Markdown to LaTeX processor),
+ [autotex](http://perso.crans.org/besson/bin/autotex) (from my web page, or from [bin/autotex](https://bitbucket.org/lbesson/bin/src/master/autotex)).
## Optionnal requirements
These external scripts are not really mandatory, you could do without it by modifying a couple of lines of the script's code:
+ [PDFCompress](http://perso.crans.org/besson/bin/PDFCompress) (from my web page, or from [bin/PDFCompress](https://bitbucket.org/lbesson/bin/src/master/PDFCompress)),
+ [pdflatex](http://perso.crans.org/besson/bin/pdflatex) (from my web page, or from [bin/pdflatex](https://bitbucket.org/lbesson/bin/src/master/pdflatex)).
---
# Future features ?
### A 100% perfect support for embeded LaTeX code
These two examples ([3](example3.html) and [4](example4.html)) show how to include [MathJax](http://www.mathjax.org/)
in a *StrapDown*-flavored HTML page to simply embed some *LaTeX* equations.
> Apparently, now *strapdown2pdf* have a better support for any (not too complicated) $\LaTeX{}$ code embedded in the *Markdown* source.
> Any feedback is welcome, and I will continue to improve this feature.
### Some examples of a good PDF printed version of a StrapDown.js powered page
> These are from September, October and November 2014.
- [This (English) translation of a French press article](http://perso.crans.org/besson/publis/10_10_2014__Liberation.en.html) about [Mahindra École Centrale](http://www.mahindraecolecentrale.edu.in/discover.html), nicely printed to [this PDF](http://perso.crans.org/besson/publis/10_10_2014__Liberation.en.pdf),
- [This (English) translation of another French press article](http://perso.crans.org/besson/publis/29_10_2014__LeMonde.en.html) about the future [École Centrale Casablanca](http://www.centrale-casablanca.ma/site/home.html), nicely printed to [a PDF, quickly modified by hand to include an image](http://perso.crans.org/besson/publis/29_10_2014__LeMonde.en.pdf),
- [This small (French) research report](http://perso.crans.org/besson/publis/PDE_09_2014/index.html) on a [non-linear Partial Differential Equation](https://en.wikipedia.org/wiki/Partial_differential_equations), nicely printed to [a PDF, with very good support of LaTeX](http://perso.crans.org/besson/publis/PDE_09_2014/index.pdf) ([since this modification](https://bitbucket.org/lbesson/bin/diff/strapdown2pdf?diff2=20fd4babc524&at=master)),
- [This (French) homepage of a programming project](http://perso.crans.org/besson/agreg/m/2/) on [Euler theorems on Eulerian path](https://en.wikipedia.org/wiki/Eulerian_path#Properties). I did this as an assignement for [my M.Sc. of Computer Science in 2014](http://perso.crans.org/besson/cv.en.pdf), and it was also a good training for one oral exam of the [French national competitive examination to become a prep' school professor](https://en.wikipedia.org/wiki/Agr%C3%A9gation) in Mathematics and Computer Science (for [which I have been ranked 23rd among 795](http://web.archive.org/web/20140709144720/agreg.org/ResultatsMerite2014.html) in 2014!).
---
### Autocompile on the fly ?
Make a version "on the browser" ?
Something like, if [index.html][] uses [StrapDown.js][], then [index.html?pdf](index.html?pdf) can be the same HTML page,
but using javascript (like [texlive.js](https://github.com/manuels/texlive.js/))
to autoproduce a PDF version of the page in the background, asking to download it when it is done.
[An example is there](http://manuels.github.io/texlive.js). It is so cool I want to use it :)
### Add a "Compile to PDF with TeXLive" button in StrapDown theme
I added a [Squirt](//lbesson.bitbucket.io/squirt/) button
to the two [StrapDown.js][] theme, and therefore I guess
it could be possible to do the same for a "Compile to PDF with TeXLive" button !
---
# About
### Hacked by [Lilian Besson](https://bitbucket.org/lbesson)
### Languages
+ GNU Bash v4+ for the script,
+ Markdown and [StrapDown.js][] for this page.
### License
This project is released under the **GPLv3 license**, for more details,
take a look at the [LICENSE](http://perso.crans.org/besson/LICENSE.html) file in the source.
*Basically, that allow you to use all or part of the project for you own business.*