Skip to content

Instantly share code, notes, and snippets.

@michaelt
Created June 9, 2011 21:23
Show Gist options
  • Save michaelt/1017790 to your computer and use it in GitHub Desktop.
Save michaelt/1017790 to your computer and use it in GitHub Desktop.

Revisions

  1. michaelt revised this gist Jun 10, 2011. 1 changed file with 30 additions and 26 deletions.
    56 changes: 30 additions & 26 deletions latex.template
    Original file line number Diff line number Diff line change
    @@ -16,7 +16,7 @@
    % begin with % and end with a linebreak.)

    % Note that there we have nothing in the nature of a template;
    % it's just a standard bit of LaTeX pandoc will copy into the
    % it's just a standard bit of LaTeX pandoc will copy unaltered into the
    % LaTeX file it is writing. But suppose you wrote something
    % more akin to the corresponding line in Pandoc's default
    % latex.template file, say:
    @@ -27,13 +27,14 @@
    % and could write things like

    % `markdown2pdf my.txt --xetex --variable=fontsize:12pt -o my.pdf` or
    % `pandoc -r markdown -w html my.txt --xetex --variable=fontsize:24pt -o my.tex`.
    % `pandoc -r markdown -w html my.txt -s --xetex --variable=fontsize:24pt -o my.tex`.

    % If we specified --variable-fontsize:12, then template substitution
    % would yield a LaTeX document beginning
    % \documentclass[12pt]{scrarcl}
    % which is just what we said anyway.
    % But we could also specify a different fontsize.

    % I don't use this `--variable=....`functionality myself;
    % I have a couple of basic templates I call with
    % `--template=whatever.template` which I can also
    @@ -45,23 +46,19 @@
    % you will have two narrow newspaperlike
    % columns; scientists like that, because irrationality must
    % show itself somewhere):

    %\documentclass[12pt,twocolumn,landscape]{scrartcl}
    % Columns are too close together in LaTeX so we add this
    % `columnsep` command:
    %\setlength{\columnsep}{.5in}

    % ^^^ columns are too close together in LaTeX so we add this
    % `columnsep` command.


    % I use the special 'komascript' article class "scrartcl"
    % reasons I can't entirely remember; I'm not sure it's that great.
    % One reason is the unimportant one that, like many classes,
    % it allows very big fonts which are convenient for booklet printing
    % in the idiotic American way by shrinking letterpaper pages,
    % which is what I usually do.
    % 12pt, specified above is a rational font size of course.
    % in the idiotic American way by shrinking letterpaper pages.

    % the standard LaTeX 'article' class declaration would be something like:
    % the standard minimal LaTeX 'article' class declaration would be something like:

    % \documentclass[12pt]{article}

    @@ -70,7 +67,7 @@
    % \documentclass[24pt]{extarticle}

    % but these restrict you to old-fashioned LaTeX materials.
    % note that Kieran Healy uses the swank 'Memoir' class,
    % Note that Kieran Healy uses the swank 'Memoir' class,
    % \documentclass[11pt,article,oneside]{memoir}
    % which might be worth a look.

    @@ -79,24 +76,26 @@
    % -- We are in swanky unicode, XeTeX land, and must now import these packages:
    \usepackage{fontspec,xltxtra,xunicode}
    % fontspec means we can specify pretty much any font.
    % Because it is using XeTeX material,
    % his template needs to be called with the `--xetex` flag.
    % Because we are using XeTeX material,
    % this template needs to be called with the `--xetex` flag.


    % Symbols:
    % pandoc imports the extensive `amsmath` collection of symbols
    % Pandoc imports the extensive `amsmath` collection of symbols
    % for typesetting ordinary math.
    \usepackage{amsmath}
    % if you use exotic symbols you need to import specific packages, eg. for
    % electrical engineering diagrams, musical notation, the unspeakable rites
    % of freemasonry etc.
    % electrical engineering diagrams, musical notation, exotic currency symbols,
    % the unspeakable rites of freemasonry etc.


    % `babel`:
    % The `babel` package, among other things, lets you determine what
    % language you are using in a given stretch of text, so that typesetting
    % will go well. Here we specify that mostly, we are speaking English:
    \usepackage[english]{babel}


    % Margins, etc:
    % the `geometry` package makes for convenient adjusting of margins, which is what
    % you asked about. Of course it can do much more, even make coffee for you:
    @@ -106,6 +105,7 @@
    % can adjust the margins by going into this file and messing with the margins.
    % the syntax is very unforgiving, but permits 3cm and 2.5in and some other things.


    % Font:
    % Here I set my main font, which is an Apple Corporation Exclusive, golly.

    @@ -129,6 +129,7 @@
    % But I hate sanserif fonts, and anyway there are defaults.



    % Heading styles:
    % These commands keep the koma system from making stupid sans serif section headings
    \setkomafont{title}{\rmfamily\mdseries\upshape\normalsize}
    @@ -144,9 +145,12 @@
    % \usepackage[hang,flushmargin]{footmisc}


    % So much for my personal template.


    % Everything that follows is copied from the pandoc default template:
    % I will interpolate a few comments.
    % I will interpolate a few comments, the comments that are in
    % the default template will be marked % --

    % Paragraph format:
    % Pandoc prefers unindented paragraphs in the European style:
    @@ -179,8 +183,8 @@ $endif$
    % note sure what 'fancy enums' are; something to do with lists,
    % as the further comment suggests:
    $if(fancy-enums)$
    % Redefine labelwidth for lists; otherwise, the enumerate package will cause
    % markers to extend beyond the left margin.
    % -- Redefine labelwidth for lists; otherwise, the enumerate package will cause
    % -- markers to extend beyond the left margin.
    \makeatletter\AtBeginDocument{%
    \renewcommand{\@listi}
    {\setlength{\labelwidth}{4em}}
    @@ -203,7 +207,7 @@ $if(tables)$
    % The commented out line below is in the default pandoc latex.template.
    % Some unpleasantness with table formatting must be corrected.

    % This is needed because raggedright in table elements redefines \\:
    % -- This is needed because raggedright in table elements redefines \\:
    \newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp}
    \let\PBS=\PreserveBackslash

    @@ -252,10 +256,9 @@ $endif$

    $if(graphics)$
    \usepackage{graphicx}
    % Comment from the pandoc default template:
    % We will generate all images so they have a width \maxwidth. This means
    % that they will get their normal width if they fit onto the page, but
    % are scaled down if they would overflow the margins.
    % -- We will generate all images so they have a width \maxwidth. This means
    % -- that they will get their normal width if they fit onto the page, but
    % -- are scaled down if they would overflow the margins.
    \makeatletter
    \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth
    \else\Gin@nat@width\fi}
    @@ -282,7 +285,7 @@ $endif$
    % very often the order does matter as the insane system of macro expansion
    % must take place by stages.)
    $if(verbatim-in-note)$
    \VerbatimFootnotes % allows verbatim text in footnotes
    \VerbatimFootnotes % -- allows verbatim text in footnotes
    $endif$

    % Other stuff you specify on the command line:
    @@ -305,7 +308,8 @@ $if(date)$
    \date{$date$}
    $endif$

    % The document itself:
    % At last:
    % The document itself!:

    % After filling in all these blanks above, or erasing them
    % where they are not needed, Pandoc has finished writing the
  2. michaelt revised this gist Jun 10, 2011. 1 changed file with 101 additions and 49 deletions.
    150 changes: 101 additions & 49 deletions latex.template
    Original file line number Diff line number Diff line change
    @@ -1,23 +1,48 @@
    %!TEX TS-program = xelatex
    \documentclass[12pt]{scrartcl}

    % This ^^^ is a standard LaTeX document class declaration
    % (the previous line is a pseudo-comment, declaring that we will
    % The declaration of the document class:

    % The second line here, i.e.
    % \documentclass[12pt]{scrartcl}
    % is a standard LaTeX document class declaration:
    % we say what kind of document we are making in curly brackets,
    % and specify any options in square brackets.

    % (The previous line is a pseudo-comment, declaring that we will
    % use the special XeTeX machinery for its more extensive font list
    % and its use of unicode.)
    % If you made this line more akin to the one in the default
    % and its use of unicode;
    % in general, LaTeX 'comments' like this one
    % begin with % and end with a linebreak.)

    % Note that there we have nothing in the nature of a template;
    % it's just a standard bit of LaTeX pandoc will copy into the
    % LaTeX file it is writing. But suppose you wrote something
    % more akin to the corresponding line in Pandoc's default
    % latex.template file, say:

    % \documentclass$if(fontsize)$[$fontsize$]$endif${scrartcl}
    % then you would have a 'variable', fontsize, and could write things
    % like `markdown2pdf my.txt --xetex --variable=fontsize:12pt -o my.pdf` or
    % `markdown2pdf my.txt --xetex --variable=fontsize:24pt`. I have a couple
    % of basic templates I call with `--template=whatever.template` and
    % adjust things like font size as I please.

    % Here's an alternative command for two column landscape
    % uncomment this and comment the above and you will have ...
    % 2 columns landscape, not bad for some purposes. (If you strike
    % the word 'landscape' you will have two narrow newspaperlike

    % then you would have invented a 'variable', fontsize,
    % and could write things like

    % `markdown2pdf my.txt --xetex --variable=fontsize:12pt -o my.pdf` or
    % `pandoc -r markdown -w html my.txt --xetex --variable=fontsize:24pt -o my.tex`.

    % If we specified --variable-fontsize:12, then template substitution
    % would yield a LaTeX document beginning
    % \documentclass[12pt]{scrarcl}
    % which is just what we said anyway.
    % But we could also specify a different fontsize.
    % I don't use this `--variable=....`functionality myself;
    % I have a couple of basic templates I call with
    % `--template=whatever.template` which I can also
    % easily inspect to adjust things like font size as I please.

    % While we are discussing the declaration of the document class...
    % here's an alternative command for two column landscape,
    % not bad for some purposes. (If you strike the word 'landscape'
    % you will have two narrow newspaperlike
    % columns; scientists like that, because irrationality must
    % show itself somewhere):

    @@ -37,58 +62,74 @@
    % 12pt, specified above is a rational font size of course.

    % the standard LaTeX 'article' class declaration would be something like:

    % \documentclass[12pt]{article}

    % or for big type:

    % \documentclass[24pt]{extarticle}

    % but these restrict you to old-fashioned LaTeX materials.
    % note that Kieran Healy uses the swank 'memoir' class, which might be
    % worth a look.
    % note that Kieran Healy uses the swank 'Memoir' class,
    % \documentclass[11pt,article,oneside]{memoir}
    % which might be worth a look.

    % Enough about the document class.

    % This template needs to be called with the `--xetex` flag.
    % -- We are in swanky unicode, XeTeX land, and must now import these packages:
    \usepackage{fontspec,xltxtra,xunicode}
    % fontspec means we can specify pretty much any font.
    % Because it is using XeTeX material,
    % his template needs to be called with the `--xetex` flag.



    % Symbols:
    % pandoc imports the extensive `amsmath` collection of symbols
    % for typesetting ordinary math.
    \usepackage{amsmath}
    % if you use exotic symbols you need to import specific packages, eg. for
    % electrical engineering diagrams, musical notation, the unspeakable rites
    % of freemasonry etc.


    % `babel`:
    % The `babel` package, among other things, lets you determine what
    % language you are using in a given stretch of text, so that typesetting
    % will go well. Here we specify that mostly, we are speaking English:
    \usepackage[english]{babel}


    % Margins, etc:
    % the `geometry` package makes for convenient adjusting of margins, which is what
    % you asked about. Of course it can do much more, even make coffee for you.

    % you asked about. Of course it can do much more, even make coffee for you:
    \usepackage{geometry}
    \geometry{verbose,letterpaper,tmargin=3cm,bmargin=3cm,lmargin=3cm,rmargin=3cm}
    % so if you just keep a copy of this template in the directory you are working in, you
    % can adjust the margins by going into this file and messing with the margins.
    % the syntax is very unforgiving, but permits 3cm and 2.5in and some other things.


    % Font:
    % Here I set my main font, which is an Apple Corporation Exclusive, golly.
    % it's okay, but note the long discussion of 'contextuals' which is necessary to cools off
    % some of its show-offy properties. You can make your essay look like the
    % Declaration of Independence by specifying e.g. Ligatures={Rare}
    % If you have a copy you might try it; as it is
    % I will comment it out and supply something more certain to be around.

    % \setmainfont{Hoefler Text}
    % \setromanfont[Mapping=tex-text,Contextuals={NoWordInitial,NoWordFinal,NoLineInitial,NoLineFinal},Ligatures={NoCommon}]{Hoefler Text}

    % Hoefler Text is okay, but note the long discussion of 'contextuals' which is necessary to cools off
    % some of its show-offy properties. (You can make your essay look like the
    % Declaration of Independence by specifying e.g. Ligatures={Rare} )
    % If you have a copy you might try it; as it is
    % I will comment it out and supply something more certain to be around:

    \setmainfont{Times Roman}
    % properly one should specify a sanserif font and a monospace font
    % see e.g. the example of Kieran Healy. But I hate sanserif fonts,
    % and anyway there are defaults.

    % Properly one should specify a sanserif font and a monospace font
    % see e.g. the example of Kieran Healy:
    % \setromanfont[Mapping=tex-text,Numbers=OldStyle]{Minion Pro}
    % \setsansfont[Mapping=tex-text]{Minion Pro}
    % \setmonofont[Mapping=tex-text,Scale=0.8]{Pragmata}

    % But I hate sanserif fonts, and anyway there are defaults.


    % Heading styles:
    % These commands keep the koma system from making stupid sans serif section headings
    \setkomafont{title}{\rmfamily\mdseries\upshape\normalsize}
    \setkomafont{sectioning}{\rmfamily\mdseries\upshape\normalsize}
    @@ -104,24 +145,27 @@



    % everything that follows is copied from the pandoc default template:
    % Everything that follows is copied from the pandoc default template:
    % I will interpolate a few comments.


    % pandoc prefers unindented paragraphs in the European style:
    % Paragraph format:
    % Pandoc prefers unindented paragraphs in the European style:
    \setlength{\parindent}{0pt}
    % ... with paragraph breaks marked by a slight lengthening of
    % the space between paragraphs:
    \setlength{\parskip}{6pt plus 2pt minus 1pt}

    % Page format:
    \pagestyle{plain}
    % this just numbers the pages.
    % The default `plain` pagestyle just numbers the pages,
    % whereas
    % \pagestyle{empty}
    % would give you no numbering
    % after one-million man-years of macro-composition,
    % would give you no numbering.
    % After one-million man-years of macro-composition,
    % there are also fancy pagestyles with much wilder options
    % for headers and footers, of course.

    % Footnotes
    % if you have code in your footnotes, the million macro march
    % kind of bumps into itself.
    % Pandoc, having just rendered your text into LaTeX,
    @@ -131,6 +175,7 @@ $if(verbatim-in-note)$
    \usepackage{fancyvrb}
    $endif$

    % Lists formatting:
    % note sure what 'fancy enums' are; something to do with lists,
    % as the further comment suggests:
    $if(fancy-enums)$
    @@ -144,7 +189,8 @@ $if(fancy-enums)$
    $endif$


    % What if you make a table? -- pandoc knows, of course, and
    % Table formatting:
    % What if you make a table? -- Pandoc knows, of course, and
    % then declares that its variable `table` is True and
    % imports a table package suitable to its pleasantly simple tables.
    % Needless to say infinitely complicated tables are possible in
    @@ -164,14 +210,16 @@ $if(tables)$
    $endif$


    % New topic: What if you use subscripts?
    % Pandoc remembers whether you did, assigning True to $subscript$
    % Subscripts:
    % Pandoc remembers whether you used subscripts, assigning True to
    % its `subscript` variable
    % It then needs to adopt a default with an incantation like this:
    $if(subscript)$
    \newcommand{\textsubscr}[1]{\ensuremath{_{\scriptsize\textrm{#1}}}}
    $endif$


    % Web-style links:

    % markdown inclines us to use links, since our texts can be made into html.
    % Why not have clickable blue links even in
    @@ -196,7 +244,8 @@ $endif$



    % Images. In ye olde LaTeX one could only import a limited range of image
    % Images.
    % In ye olde LaTeX one could only import a limited range of image
    % types, e.g. the forgotten .eps files. Or else one simply drew the image with suitable
    % commands and drawing packages. Today we want to import .jpg files we make with
    % our smart phones or whatever:
    @@ -217,14 +266,15 @@ $endif$



    % Section numbering. Here again is a variable you can specify on the commandline
    % Section numbering.
    % Here again is a variable you can specify on the commandline
    % `markdown2pdf my.txt --number-sections --xetex --template=/wherever/this/is -o my.pdf`
    $if(numbersections)$
    $else$
    \setcounter{secnumdepth}{0}
    $endif$


    % Footnotes:
    % Wait, didn't we already discuss the crisis of code in footnotes?
    % Evidently the order of unfolding of macros required that
    % we import a package to deal with them earlier
    @@ -235,14 +285,14 @@ $if(verbatim-in-note)$
    \VerbatimFootnotes % allows verbatim text in footnotes
    $endif$


    % you can include stuff for the header from a file specified on the command line;
    % Other stuff you specify on the command line:
    % You can include stuff for the header from a file specified on the command line;
    % I've never done this, but that stuff will go here:
    $for(header-includes)$
    $header-includes$
    $endfor$


    % Title, authors, date.
    % If you specified title authors and date at the start of
    % your pandoc-markdown file, pandoc knows the 'values' of the
    % variables: title authors date and fills them in.
    @@ -255,11 +305,13 @@ $if(date)$
    \date{$date$}
    $endif$

    % The document itself:

    % After filling in all these blanks above, or erasing them
    % where they are not needed pandoc has finished writing the
    % where they are not needed, Pandoc has finished writing the
    % famous LaTeX *preamble* for your document.
    % Now comes the all important command \begin{document}
    % which will be paired with an \end{document} at the end.
    % Now comes the all-important command \begin{document}
    % which as you can see, will be paired with an \end{document} at the end.
    % Pandoc knows whether you have a title, and has already
    % specified what it is; if so, it demands that the title be rendered.
    % Pandoc knows whether you want a table of contents, you
  3. michaelt created this gist Jun 9, 2011.
    296 changes: 296 additions & 0 deletions latex.template
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,296 @@
    %!TEX TS-program = xelatex
    \documentclass[12pt]{scrartcl}

    % This ^^^ is a standard LaTeX document class declaration
    % (the previous line is a pseudo-comment, declaring that we will
    % use the special XeTeX machinery for its more extensive font list
    % and its use of unicode.)
    % If you made this line more akin to the one in the default
    % latex.template file, say:
    % \documentclass$if(fontsize)$[$fontsize$]$endif${scrartcl}
    % then you would have a 'variable', fontsize, and could write things
    % like `markdown2pdf my.txt --xetex --variable=fontsize:12pt -o my.pdf` or
    % `markdown2pdf my.txt --xetex --variable=fontsize:24pt`. I have a couple
    % of basic templates I call with `--template=whatever.template` and
    % adjust things like font size as I please.

    % Here's an alternative command for two column landscape
    % uncomment this and comment the above and you will have ...
    % 2 columns landscape, not bad for some purposes. (If you strike
    % the word 'landscape' you will have two narrow newspaperlike
    % columns; scientists like that, because irrationality must
    % show itself somewhere):

    %\documentclass[12pt,twocolumn,landscape]{scrartcl}
    %\setlength{\columnsep}{.5in}

    % ^^^ columns are too close together in LaTeX so we add this
    % `columnsep` command.


    % I use the special 'komascript' article class "scrartcl"
    % reasons I can't entirely remember; I'm not sure it's that great.
    % One reason is the unimportant one that, like many classes,
    % it allows very big fonts which are convenient for booklet printing
    % in the idiotic American way by shrinking letterpaper pages,
    % which is what I usually do.
    % 12pt, specified above is a rational font size of course.

    % the standard LaTeX 'article' class declaration would be something like:
    % \documentclass[12pt]{article}
    % or for big type:
    % \documentclass[24pt]{extarticle}
    % but these restrict you to old-fashioned LaTeX materials.
    % note that Kieran Healy uses the swank 'memoir' class, which might be
    % worth a look.


    % This template needs to be called with the `--xetex` flag.
    % -- We are in swanky unicode, XeTeX land, and must now import these packages:
    \usepackage{fontspec,xltxtra,xunicode}



    % pandoc imports the extensive `amsmath` collection of symbols
    % for typesetting ordinary math.
    \usepackage{amsmath}
    % if you use exotic symbols you need to import specific packages, eg. for
    % electrical engineering diagrams, musical notation, the unspeakable rites
    % of freemasonry etc.


    % The `babel` package, among other things, lets you determine what
    % language you are using in a given stretch of text, so that typesetting
    % will go well. Here we specify that mostly, we are speaking English:
    \usepackage[english]{babel}


    % the `geometry` package makes for convenient adjusting of margins, which is what
    % you asked about. Of course it can do much more, even make coffee for you.

    \usepackage{geometry}
    \geometry{verbose,letterpaper,tmargin=3cm,bmargin=3cm,lmargin=3cm,rmargin=3cm}
    % so if you just keep a copy of this template in the directory you are working in, you
    % can adjust the margins by going into this file and messing with the margins.
    % the syntax is very unforgiving, but permits 3cm and 2.5in and some other things.


    % Here I set my main font, which is an Apple Corporation Exclusive, golly.
    % it's okay, but note the long discussion of 'contextuals' which is necessary to cools off
    % some of its show-offy properties. You can make your essay look like the
    % Declaration of Independence by specifying e.g. Ligatures={Rare}
    % If you have a copy you might try it; as it is
    % I will comment it out and supply something more certain to be around.
    % \setmainfont{Hoefler Text}
    % \setromanfont[Mapping=tex-text,Contextuals={NoWordInitial,NoWordFinal,NoLineInitial,NoLineFinal},Ligatures={NoCommon}]{Hoefler Text}

    \setmainfont{Times Roman}
    % properly one should specify a sanserif font and a monospace font
    % see e.g. the example of Kieran Healy. But I hate sanserif fonts,
    % and anyway there are defaults.

    % These commands keep the koma system from making stupid sans serif section headings
    \setkomafont{title}{\rmfamily\mdseries\upshape\normalsize}
    \setkomafont{sectioning}{\rmfamily\mdseries\upshape\normalsize}
    \setkomafont{descriptionlabel}{\rmfamily\mdseries\upshape\normalsize}



    % I'm puzzled why I have this foonote speciality,
    % I wonder if it's part of my problem I've been having, but wont look
    % into it now.
    \usepackage[flushmargin]{footmisc}
    % \usepackage[hang,flushmargin]{footmisc}



    % everything that follows is copied from the pandoc default template:
    % I will interpolate a few comments.


    % pandoc prefers unindented paragraphs in the European style:
    \setlength{\parindent}{0pt}
    % ... with paragraph breaks marked by a slight lengthening of
    % the space between paragraphs:
    \setlength{\parskip}{6pt plus 2pt minus 1pt}

    \pagestyle{plain}
    % this just numbers the pages.
    % \pagestyle{empty}
    % would give you no numbering
    % after one-million man-years of macro-composition,
    % there are also fancy pagestyles with much wilder options
    % for headers and footers, of course.

    % if you have code in your footnotes, the million macro march
    % kind of bumps into itself.
    % Pandoc, having just rendered your text into LaTeX,
    % knows whether the 'variable' `verbatim-in-note` is True, and
    % If it is, it asks for a LaTeX package that solves the dilemma:
    $if(verbatim-in-note)$
    \usepackage{fancyvrb}
    $endif$

    % note sure what 'fancy enums' are; something to do with lists,
    % as the further comment suggests:
    $if(fancy-enums)$
    % Redefine labelwidth for lists; otherwise, the enumerate package will cause
    % markers to extend beyond the left margin.
    \makeatletter\AtBeginDocument{%
    \renewcommand{\@listi}
    {\setlength{\labelwidth}{4em}}
    }\makeatother
    \usepackage{enumerate}
    $endif$


    % What if you make a table? -- pandoc knows, of course, and
    % then declares that its variable `table` is True and
    % imports a table package suitable to its pleasantly simple tables.
    % Needless to say infinitely complicated tables are possible in
    % LaTeX with suitable packages. We are spared the temptation:

    $if(tables)$
    \usepackage{array}

    % Continuing on the topic of tables ... (we havent reached `endif`).
    % The commented out line below is in the default pandoc latex.template.
    % Some unpleasantness with table formatting must be corrected.

    % This is needed because raggedright in table elements redefines \\:
    \newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp}
    \let\PBS=\PreserveBackslash

    $endif$


    % New topic: What if you use subscripts?
    % Pandoc remembers whether you did, assigning True to $subscript$
    % It then needs to adopt a default with an incantation like this:
    $if(subscript)$
    \newcommand{\textsubscr}[1]{\ensuremath{_{\scriptsize\textrm{#1}}}}
    $endif$



    % markdown inclines us to use links, since our texts can be made into html.
    % Why not have clickable blue links even in
    % learned, scientific, religious, juridical, poetical and other suchlike texts?
    % Never mind that they have been proven to destroy the nervous system!

    % First, what about the fact that links like http://example.com are
    % technically code and thus must not be broken across lines?
    % [breaklinks=true] to the rescue!

    % Nowadays LaTeX can handle all of this with another half million macros:

    \usepackage[breaklinks=true]{hyperref}
    \hypersetup{colorlinks,%
    citecolor=blue,%
    filecolor=blue,%
    linkcolor=blue,%
    urlcolor=blue}
    $if(url)$
    \usepackage{url}
    $endif$



    % Images. In ye olde LaTeX one could only import a limited range of image
    % types, e.g. the forgotten .eps files. Or else one simply drew the image with suitable
    % commands and drawing packages. Today we want to import .jpg files we make with
    % our smart phones or whatever:

    $if(graphics)$
    \usepackage{graphicx}
    % Comment from the pandoc default template:
    % We will generate all images so they have a width \maxwidth. This means
    % that they will get their normal width if they fit onto the page, but
    % are scaled down if they would overflow the margins.
    \makeatletter
    \def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth
    \else\Gin@nat@width\fi}
    \makeatother
    \let\Oldincludegraphics\includegraphics
    \renewcommand{\includegraphics}[1]{\Oldincludegraphics[width=\maxwidth]{#1}}
    $endif$



    % Section numbering. Here again is a variable you can specify on the commandline
    % `markdown2pdf my.txt --number-sections --xetex --template=/wherever/this/is -o my.pdf`
    $if(numbersections)$
    $else$
    \setcounter{secnumdepth}{0}
    $endif$


    % Wait, didn't we already discuss the crisis of code in footnotes?
    % Evidently the order of unfolding of macros required that
    % we import a package to deal with them earlier
    % and issue a command it defines now. (Or maybe that's not the reason;
    % very often the order does matter as the insane system of macro expansion
    % must take place by stages.)
    $if(verbatim-in-note)$
    \VerbatimFootnotes % allows verbatim text in footnotes
    $endif$


    % you can include stuff for the header from a file specified on the command line;
    % I've never done this, but that stuff will go here:
    $for(header-includes)$
    $header-includes$
    $endfor$


    % If you specified title authors and date at the start of
    % your pandoc-markdown file, pandoc knows the 'values' of the
    % variables: title authors date and fills them in.

    $if(title)$
    \title{$title$}
    $endif$
    \author{$for(author)$$author$$sep$\\$endfor$}
    $if(date)$
    \date{$date$}
    $endif$

    % After filling in all these blanks above, or erasing them
    % where they are not needed pandoc has finished writing the
    % famous LaTeX *preamble* for your document.
    % Now comes the all important command \begin{document}
    % which will be paired with an \end{document} at the end.
    % Pandoc knows whether you have a title, and has already
    % specified what it is; if so, it demands that the title be rendered.
    % Pandoc knows whether you want a table of contents, you
    % specify this on the command line.
    % Then, after fiddling with alignments, there comes the real
    % business: pandoc slaps its rendering of your text in the place of
    % the variable `body`
    % It then concludes the document it has been writing.

    \begin{document}


    $if(title)$
    \maketitle
    $endif$

    $if(toc)$
    \tableofcontents

    $endif$


    $if(alignment)$
    \begin{$alignment$}
    $endif$

    $body$

    %$if(alignment)$
    \end{$alignment$}
    $endif$


    \end{document}